Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
115e151
initial todo changes
nicolaassolini-qntm Apr 10, 2026
6ffafa6
bugg found (maybe?)
nicolaassolini-qntm Apr 13, 2026
021b6c5
added test_notebook, potential bug fix
nicolaassolini-qntm Apr 16, 2026
f05df04
Merge remote-tracking branch 'origin/main' into na/fix-modifier
nicolaassolini-qntm Apr 16, 2026
49c2cd9
Enhance modifier examples and update test notebook with clearer TODOs
nicolaassolini-qntm Apr 17, 2026
6c73931
Enhance rendering of control gate examples by adding cleanup option t…
nicolaassolini-qntm Apr 17, 2026
d7d0d0d
added full testing pipeline
nicolaassolini-qntm Apr 17, 2026
6bf7d2f
improved dir
nicolaassolini-qntm Apr 17, 2026
97a87bb
Refactor modifier example scripts to improve import structure and enh…
nicolaassolini-qntm Apr 17, 2026
9a03d6d
Add modifier compilation and testing scripts; update hugr processing
nicolaassolini-qntm Apr 17, 2026
40d1f3a
Refactor modifier example scripts to streamline hugr processing and e…
nicolaassolini-qntm Apr 20, 2026
741ca1c
Update .gitignore to include hugr results and add double_call.py exam…
nicolaassolini-qntm Apr 20, 2026
e4f8b59
Remove obsolete hugr files and update .gitignore for modifier testing
nicolaassolini-qntm Apr 20, 2026
1bed229
Uncomment hugr result paths in .gitignore for modifier testing
nicolaassolini-qntm Apr 20, 2026
e876ce2
LAST COMMIT PRE BRANCHING: Enhance modifier examples and testing: add…
nicolaassolini-qntm Apr 21, 2026
521ddc8
Merge remote-tracking branch 'origin/main' into na/fix-modifier
nicolaassolini-qntm Apr 21, 2026
8325e07
feat: Add processing output for modifier examples in apply_passes.py …
nicolaassolini-qntm Apr 21, 2026
eb1c93d
test: Pin guppy version in example files, fix test
aborgna-q Apr 21, 2026
0a770df
Merge remote-tracking branch 'origin/ab/pin-guppy-in-test-files' into…
nicolaassolini-qntm Apr 21, 2026
319ffad
solved nested modifier big (WIP), added new tests, new bug found
nicolaassolini-qntm Apr 23, 2026
6f34df9
clean up modifier example scripts by removing unused imports and comm…
nicolaassolini-qntm Apr 24, 2026
5bbb444
update modifier example scripts by cleaning up code and adjusting de…
nicolaassolini-qntm Apr 24, 2026
b6bed01
fixed nested modifier bug
nicolaassolini-qntm Apr 24, 2026
154fc22
add classical_function3 example and update tests for modifier resolver
nicolaassolini-qntm Apr 24, 2026
31c81ca
restored wrap_fn call
nicolaassolini-qntm Apr 27, 2026
6e0093f
clean warning and unsed imports
nicolaassolini-qntm Apr 27, 2026
4e6dc89
fix modifier nubers and clean up commented code
nicolaassolini-qntm Apr 27, 2026
b5dc13f
cleaned code
nicolaassolini-qntm Apr 27, 2026
699a7a5
Merge remote-tracking branch 'origin/main' into na/fix-nested-modifier
nicolaassolini-qntm Apr 27, 2026
08d61c4
post merge fixes
nicolaassolini-qntm Apr 27, 2026
04e6e9d
remove utility.py
nicolaassolini-qntm Apr 27, 2026
1c8bc20
remove run_modifier_examples.sh script
nicolaassolini-qntm Apr 27, 2026
ea2bd76
Remove unused old_signature variable and update test case to ctrl_arr…
nicolaassolini-qntm Apr 27, 2026
8a9b2e2
Refactor resolve_modifier_with_entrypoints function and simplify test…
nicolaassolini-qntm Apr 27, 2026
4b5b41b
updated gitignore
nicolaassolini-qntm Apr 27, 2026
8aed7d9
Remove playground notebook due to missing guppylang module
nicolaassolini-qntm Apr 27, 2026
ae1d01d
Remove unused imports from classical_function3.py
nicolaassolini-qntm Apr 27, 2026
0b727b7
Update modifiers and clean up test cases; remove unused solved hugr f…
nicolaassolini-qntm Apr 27, 2026
52d10e1
Refactor apply_passes function and update run_hugrs.py to utilize it …
nicolaassolini-qntm Apr 27, 2026
5a1ea79
Add parameter documentation for test_modifier_resolver function
nicolaassolini-qntm Apr 27, 2026
497a0b2
Update dependencies in run_hugrs.py to include selene-sim
nicolaassolini-qntm Apr 28, 2026
8fadf52
Remove unused check_hugr call from apply_passes and add it in run_hug…
nicolaassolini-qntm Apr 28, 2026
a8ab08e
Refactor visibility of constructor and signature methods in modifier …
nicolaassolini-qntm Apr 28, 2026
480a909
Update documentation for connect_all and change visibility of resolve…
nicolaassolini-qntm Apr 28, 2026
c118aed
Added deletion of unconnected nodes after modifiers solving
nicolaassolini-qntm Apr 29, 2026
59f5f40
Remove redundant check for linked inputs before removing target node …
nicolaassolini-qntm Apr 29, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified test_files/guppy_examples/modifiers.hugr
Binary file not shown.
2 changes: 1 addition & 1 deletion test_files/guppy_examples/modifiers.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# /// script
# requires-python = ">=3.13"
# dependencies = [
# "guppylang ==0.21.13",
# "guppylang @ git+https://github.com/Quantinuum/guppylang.git@main#subdirectory=guppylang",
# ]
# ///
"""A simple controlled gate using modifiers"""
Expand Down
Binary file not shown.
Binary file removed test_files/modified_hugrs/ctrl_on_call_solved.hugr
Binary file not shown.
Binary file removed test_files/modified_hugrs/ctrl_on_x_solved.hugr
Binary file not shown.
Binary file not shown.
Binary file not shown.
42 changes: 42 additions & 0 deletions test_files/modifier_examples/classical_function1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# /// script
# requires-python = ">=3.13"
# dependencies = [
# "guppylang ==0.21.13",
# ]
# ///
"""A simple controlled gate using modifiers"""

from pathlib import Path
from sys import argv
import sys

from guppylang import guppy
from guppylang.std.builtins import dagger
from guppylang.std.debug import state_result
from guppylang.std.quantum import discard, qubit, angle
from guppylang.std.quantum import rx

sys.path.append(str(Path(__file__).resolve().parents[1]))

from guppylang.experimental import enable_experimental_features

enable_experimental_features()


@guppy
def fuu(i: int) -> int:
return i + 1


@guppy
def main() -> None:
q = qubit()
with dagger:
rx(q, angle(1 / fuu(2)))

state_result("r", q)
discard(q)


program = main.compile()
Path(argv[0]).with_suffix(".hugr").write_bytes(program.to_bytes())
Binary file not shown.
51 changes: 51 additions & 0 deletions test_files/modifier_examples/classical_function2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# /// script
# requires-python = ">=3.13"
# dependencies = [
# "guppylang @ git+https://github.com/Quantinuum/guppylang.git@main#subdirectory=guppylang",
# ]
# ///
"""A simple controlled gate using modifiers"""

from pathlib import Path
from sys import argv
import sys

from guppylang import guppy
from guppylang.std.builtins import control, dagger
from guppylang.std.debug import state_result
from guppylang.std.quantum import discard, qubit, angle, measure
from guppylang.std.quantum import h, rx, x

sys.path.append(str(Path(__file__).resolve().parents[1]))

from guppylang.experimental import enable_experimental_features

enable_experimental_features()


@guppy
def fuu(i: int) -> int:
q = qubit()
x(q)
if measure(q):
i = i + 1
return i


@guppy
def main() -> None:
t = qubit()
c1 = qubit()
h(c1)
with control(c1):
d = fuu(2)
with dagger:
rx(t, angle(1 / d))

state_result("r", c1, t)
discard(c1)
discard(t)


program = main.compile()
Path(argv[0]).with_suffix(".hugr").write_bytes(program.to_bytes())
Binary file not shown.
55 changes: 55 additions & 0 deletions test_files/modifier_examples/classical_function3.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# /// script
# requires-python = ">=3.13"
# dependencies = [
# "guppylang @ git+https://github.com/Quantinuum/guppylang.git@main#subdirectory=guppylang",
# ]
# ///
"""A simple controlled gate using modifiers"""

from pathlib import Path
from sys import argv
import sys

from guppylang import guppy
from guppylang.std.builtins import control, dagger
from guppylang.std.debug import state_result
from guppylang.std.quantum import discard, qubit, angle, measure
from guppylang.std.quantum import h, rx, x

sys.path.append(str(Path(__file__).resolve().parents[1]))

from guppylang.experimental import enable_experimental_features

enable_experimental_features()


@guppy
def fuu(i: int) -> int:
q = qubit()
x(q)
if measure(q):
i = i + 1
return i


@guppy
def main() -> None:
t = qubit()
c1 = qubit()
c2 = qubit()
h(c1)
h(c2)
with control(c1):
d = fuu(2)
with control(c2):
with dagger:
rx(t, angle(1 / d))

state_result("r", c1, c2, t)
discard(c1)
discard(c2)
discard(t)


program = main.compile()
Path(argv[0]).with_suffix(".hugr").write_bytes(program.to_bytes())
Binary file not shown.
50 changes: 50 additions & 0 deletions test_files/modifier_examples/ctrl_array_controller.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# /// script
# requires-python = ">=3.13"
# dependencies = [
# "guppylang ==0.21.13",
# ]
# ///
"""A controlled gate where the controller is an array of qubits"""

from pathlib import Path
from sys import argv
import sys

from guppylang import guppy
from guppylang.std.builtins import array, control
from guppylang.std.debug import state_result
from guppylang.std.quantum import discard, discard_array, qubit
from guppylang.std.quantum import h, x

sys.path.append(str(Path(__file__).resolve().parents[1]))

from guppylang.experimental import enable_experimental_features

enable_experimental_features()


@guppy(unitary=True)
def bar(q: qubit) -> None:
x(q)


@guppy
def main() -> None:
controllers: array[qubit, 3] = array(qubit(), qubit(), qubit())
t = qubit()

h(controllers[0])
h(controllers[1])
h(controllers[2])

with control(controllers):
bar(t)

state_result("r", controllers[0], controllers[1], controllers[2], t)

discard_array(controllers)
discard(t)


program = main.compile()
Path(argv[0]).with_suffix(".hugr").write_bytes(program.to_bytes())
Binary file not shown.
45 changes: 45 additions & 0 deletions test_files/modifier_examples/ctrl_on_call1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# /// script
# requires-python = ">=3.13"
# dependencies = [
# "guppylang ==0.21.13",
# ]
# ///
"""A simple controlled gate using modifiers"""

from pathlib import Path
from sys import argv
import sys

from guppylang import guppy
from guppylang.std.builtins import control
from guppylang.std.debug import state_result
from guppylang.std.quantum import discard, qubit
from guppylang.std.quantum import h, x

sys.path.append(str(Path(__file__).resolve().parents[1]))

from guppylang.experimental import enable_experimental_features

enable_experimental_features()


@guppy(unitary=True)
def bar(q: qubit) -> None:
x(q)


@guppy
def main() -> None:
q1 = qubit()
q2 = qubit()
h(q1)
with control(q1):
bar(q2)

state_result("r", q1, q2)
discard(q1)
discard(q2)


program = main.compile()
Path(argv[0]).with_suffix(".hugr").write_bytes(program.to_bytes())
Binary file not shown.
41 changes: 41 additions & 0 deletions test_files/modifier_examples/double_modifier.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# /// script
# requires-python = ">=3.13"
# dependencies = [
# "guppylang @ git+https://github.com/Quantinuum/guppylang.git@main#subdirectory=guppylang",
# ]
# ///
"""A simple controlled gate using modifiers"""

from pathlib import Path
from sys import argv
import sys

from guppylang import guppy
from guppylang.std.builtins import control, dagger
from guppylang.std.debug import state_result
from guppylang.std.quantum import discard, qubit, angle
from guppylang.std.quantum import h, rx

sys.path.append(str(Path(__file__).resolve().parents[1]))

from guppylang.experimental import enable_experimental_features

enable_experimental_features()


@guppy
def main() -> None:
c1 = qubit()
t = qubit()
h(c1)
with control(c1):
with dagger:
rx(t, angle(1 / 3))

state_result("r", c1, t)
discard(c1)
discard(t)


program = main.compile()
Path(argv[0]).with_suffix(".hugr").write_bytes(program.to_bytes())
Binary file not shown.
47 changes: 47 additions & 0 deletions test_files/modifier_examples/multiple_dagger.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# /// script
# requires-python = ">=3.13"
# dependencies = [
# "guppylang ==0.21.13",
# ]
# ///
"""An example with an even number of daggers, which should cancel out"""

from pathlib import Path
from sys import argv
import sys

from guppylang import guppy
from guppylang.std.builtins import dagger
from guppylang.std.debug import state_result
from guppylang.std.quantum import discard, qubit, angle
from guppylang.std.quantum import rx

sys.path.append(str(Path(__file__).resolve().parents[1]))

from guppylang.experimental import enable_experimental_features

enable_experimental_features()


@guppy(unitary=True)
def rotation(q: qubit) -> None:
rx(q, angle(1 / 4))


@guppy
def main() -> None:
t = qubit()

with dagger:
with dagger:
rotation(t)

with dagger, dagger, dagger:
rotation(t)

state_result("r", t)
discard(t)


program = main.compile()
Path(argv[0]).with_suffix(".hugr").write_bytes(program.to_bytes())
Binary file not shown.
Loading
Loading