From 431502e58779b801c93576adb9faf9d40520ba67 Mon Sep 17 00:00:00 2001 From: CalMacCQ <93673602+CalMacCQ@users.noreply.github.com> Date: Mon, 3 Nov 2025 17:49:07 +0000 Subject: [PATCH 1/9] add some test case for 1q squashing --- .../1q_squash/qsystem_chain.opt.py | 10 ++++++ .../1q_squash/qsystem_chain.py | 33 +++++++++++++++++++ .../1q_squash/rz_chain.opt.py | 8 +++++ .../guppy_optimization/1q_squash/rz_chain.py | 10 ++++++ 4 files changed, 61 insertions(+) create mode 100644 test_files/guppy_optimization/1q_squash/qsystem_chain.opt.py create mode 100644 test_files/guppy_optimization/1q_squash/qsystem_chain.py create mode 100644 test_files/guppy_optimization/1q_squash/rz_chain.opt.py create mode 100644 test_files/guppy_optimization/1q_squash/rz_chain.py diff --git a/test_files/guppy_optimization/1q_squash/qsystem_chain.opt.py b/test_files/guppy_optimization/1q_squash/qsystem_chain.opt.py new file mode 100644 index 000000000..2a8335ae2 --- /dev/null +++ b/test_files/guppy_optimization/1q_squash/qsystem_chain.opt.py @@ -0,0 +1,10 @@ +from guppylang import guppy +from guppy.std.quantum import qubit +from guppylang.std.qsystem import rz, phased_x +from guppylang.std.builtins import angle + + +@guppy +def qsystem_chain(q: qubit) -> None: + phased_x(q, angle(0.368713), angle(1.66415)) + rz(q, angle(0.870616)) diff --git a/test_files/guppy_optimization/1q_squash/qsystem_chain.py b/test_files/guppy_optimization/1q_squash/qsystem_chain.py new file mode 100644 index 000000000..3f71c482f --- /dev/null +++ b/test_files/guppy_optimization/1q_squash/qsystem_chain.py @@ -0,0 +1,33 @@ +from guppylang import guppy +from guppy.std.quantum import qubit +from guppylang.std.qsystem import rz, phased_x +from guppylang.std.builtins import angle + + +@guppy +def qsystem_chain(q: qubit) -> None: + phased_x(q, angle(0.91), angle(0.5)) + phased_x(q, angle(0.53), angle(0)) + phased_x(q, angle(3.29), angle(0.5)) + phased_x(q, angle(0.81), angle(0)) + rz(q, angle(0.62)) + + +# pytket code to generate this example. For optimised version replace the call to AutoRebase with AutoSquash. + +# from pytket import Circuit, OpType +# from pytket.passes import AutoSquash, AutoRebase +# +# circ = Circuit(1) +# +# circ.Ry(0.91, 0) +# circ.Rx(0.53, 0) +# circ.Ry(-0.71, 0) +# circ.Rx(0.81, 0) +# circ.Rz(0.62, 0) +# +# +# +# AutoRebase({OpType.Rz, OpType.PhasedX, OpType.ZZPhase}).apply(circ) +# +# print(circ.get_commands()) diff --git a/test_files/guppy_optimization/1q_squash/rz_chain.opt.py b/test_files/guppy_optimization/1q_squash/rz_chain.opt.py new file mode 100644 index 000000000..e4eabdd11 --- /dev/null +++ b/test_files/guppy_optimization/1q_squash/rz_chain.opt.py @@ -0,0 +1,8 @@ +from guppylang import guppy +from guppylang.std.quantum import rz, qubit +from guppylang.std.builtins import angle + + +@guppy +def rz_chain(q: qubit) -> None: + rz(q, angle(3 / 2)) diff --git a/test_files/guppy_optimization/1q_squash/rz_chain.py b/test_files/guppy_optimization/1q_squash/rz_chain.py new file mode 100644 index 000000000..42355fef4 --- /dev/null +++ b/test_files/guppy_optimization/1q_squash/rz_chain.py @@ -0,0 +1,10 @@ +from guppylang import guppy +from guppylang.std.quantum import rz, qubit +from guppylang.std.builtins import angle + + +@guppy +def rz_chain(q: qubit) -> None: + rz(q, angle(1 / 2)) + rz(q, angle(1 / 2)) + rz(q, angle(1 / 2)) From ffe898c33eeae585b90967e33a5e794aed839ad5 Mon Sep 17 00:00:00 2001 From: CalMacCQ <93673602+CalMacCQ@users.noreply.github.com> Date: Mon, 3 Nov 2025 17:56:51 +0000 Subject: [PATCH 2/9] update comment --- test_files/guppy_optimization/1q_squash/qsystem_chain.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test_files/guppy_optimization/1q_squash/qsystem_chain.py b/test_files/guppy_optimization/1q_squash/qsystem_chain.py index 3f71c482f..389afa316 100644 --- a/test_files/guppy_optimization/1q_squash/qsystem_chain.py +++ b/test_files/guppy_optimization/1q_squash/qsystem_chain.py @@ -13,7 +13,8 @@ def qsystem_chain(q: qubit) -> None: rz(q, angle(0.62)) -# pytket code to generate this example. For optimised version replace the call to AutoRebase with AutoSquash. +# pytket code to generate this example. +# For the optimised version replace the call to AutoRebase with AutoSquash. # from pytket import Circuit, OpType # from pytket.passes import AutoSquash, AutoRebase @@ -26,8 +27,7 @@ def qsystem_chain(q: qubit) -> None: # circ.Rx(0.81, 0) # circ.Rz(0.62, 0) # -# -# +# When you switch to AutoSquash, remove ZZPhase from the set # AutoRebase({OpType.Rz, OpType.PhasedX, OpType.ZZPhase}).apply(circ) # # print(circ.get_commands()) From 3e41e536b715bc773e2800ecc6392f4dc5be65ad Mon Sep 17 00:00:00 2001 From: CalMacCQ <93673602+CalMacCQ@users.noreply.github.com> Date: Wed, 5 Nov 2025 13:29:39 +0000 Subject: [PATCH 3/9] add missing file export --- .../guppy_optimization/1q_squash/qsystem_chain.opt.py | 7 +++++++ test_files/guppy_optimization/1q_squash/qsystem_chain.py | 6 ++++++ test_files/guppy_optimization/1q_squash/rz_chain.opt.py | 7 +++++++ test_files/guppy_optimization/1q_squash/rz_chain.py | 7 +++++++ 4 files changed, 27 insertions(+) diff --git a/test_files/guppy_optimization/1q_squash/qsystem_chain.opt.py b/test_files/guppy_optimization/1q_squash/qsystem_chain.opt.py index 2a8335ae2..f81293ee8 100644 --- a/test_files/guppy_optimization/1q_squash/qsystem_chain.opt.py +++ b/test_files/guppy_optimization/1q_squash/qsystem_chain.opt.py @@ -1,3 +1,6 @@ +from pathlib import Path +from sys import argv + from guppylang import guppy from guppy.std.quantum import qubit from guppylang.std.qsystem import rz, phased_x @@ -8,3 +11,7 @@ def qsystem_chain(q: qubit) -> None: phased_x(q, angle(0.368713), angle(1.66415)) rz(q, angle(0.870616)) + + +program = qsystem_chain.compile() +Path(argv[0]).with_suffix(".hugr").write_bytes(program.to_bytes()) diff --git a/test_files/guppy_optimization/1q_squash/qsystem_chain.py b/test_files/guppy_optimization/1q_squash/qsystem_chain.py index 389afa316..1ef046a69 100644 --- a/test_files/guppy_optimization/1q_squash/qsystem_chain.py +++ b/test_files/guppy_optimization/1q_squash/qsystem_chain.py @@ -1,3 +1,6 @@ +from pathlib import Path +from sys import argv + from guppylang import guppy from guppy.std.quantum import qubit from guppylang.std.qsystem import rz, phased_x @@ -13,6 +16,9 @@ def qsystem_chain(q: qubit) -> None: rz(q, angle(0.62)) +program = qsystem_chain.compile() +Path(argv[0]).with_suffix(".hugr").write_bytes(program.to_bytes()) + # pytket code to generate this example. # For the optimised version replace the call to AutoRebase with AutoSquash. diff --git a/test_files/guppy_optimization/1q_squash/rz_chain.opt.py b/test_files/guppy_optimization/1q_squash/rz_chain.opt.py index e4eabdd11..a211fadd5 100644 --- a/test_files/guppy_optimization/1q_squash/rz_chain.opt.py +++ b/test_files/guppy_optimization/1q_squash/rz_chain.opt.py @@ -1,3 +1,6 @@ +from pathlib import Path +from sys import argv + from guppylang import guppy from guppylang.std.quantum import rz, qubit from guppylang.std.builtins import angle @@ -6,3 +9,7 @@ @guppy def rz_chain(q: qubit) -> None: rz(q, angle(3 / 2)) + + +program = rz_chain.compile() +Path(argv[0]).with_suffix(".hugr").write_bytes(program.to_bytes()) diff --git a/test_files/guppy_optimization/1q_squash/rz_chain.py b/test_files/guppy_optimization/1q_squash/rz_chain.py index 42355fef4..435f270cf 100644 --- a/test_files/guppy_optimization/1q_squash/rz_chain.py +++ b/test_files/guppy_optimization/1q_squash/rz_chain.py @@ -1,3 +1,6 @@ +from pathlib import Path +from sys import argv + from guppylang import guppy from guppylang.std.quantum import rz, qubit from guppylang.std.builtins import angle @@ -8,3 +11,7 @@ def rz_chain(q: qubit) -> None: rz(q, angle(1 / 2)) rz(q, angle(1 / 2)) rz(q, angle(1 / 2)) + + +program = rz_chain.compile() +Path(argv[0]).with_suffix(".hugr").write_bytes(program.to_bytes()) From fb6efb205d72545937af2c4a016a09c153a04190 Mon Sep 17 00:00:00 2001 From: CalMacCQ <93673602+CalMacCQ@users.noreply.github.com> Date: Wed, 5 Nov 2025 13:46:26 +0000 Subject: [PATCH 4/9] generate hugrs for simple test cases --- .../1q_squash/qsystem_chain.hugr | Bin 0 -> 7718 bytes .../1q_squash/qsystem_chain.opt.hugr | Bin 0 -> 7005 bytes .../1q_squash/qsystem_chain.opt.py | 13 ++++++++++--- .../1q_squash/qsystem_chain.py | 13 ++++++++++--- .../guppy_optimization/1q_squash/rz_chain.hugr | Bin 0 -> 6609 bytes .../1q_squash/rz_chain.opt.hugr | Bin 0 -> 6189 bytes .../guppy_optimization/1q_squash/rz_chain.opt.py | 11 +++++++++-- .../guppy_optimization/1q_squash/rz_chain.py | 11 +++++++++-- 8 files changed, 38 insertions(+), 10 deletions(-) create mode 100644 test_files/guppy_optimization/1q_squash/qsystem_chain.hugr create mode 100644 test_files/guppy_optimization/1q_squash/qsystem_chain.opt.hugr create mode 100644 test_files/guppy_optimization/1q_squash/rz_chain.hugr create mode 100644 test_files/guppy_optimization/1q_squash/rz_chain.opt.hugr diff --git a/test_files/guppy_optimization/1q_squash/qsystem_chain.hugr b/test_files/guppy_optimization/1q_squash/qsystem_chain.hugr new file mode 100644 index 0000000000000000000000000000000000000000..ad965603c54e4dd79d0dea765c9351394a8aad8c GIT binary patch literal 7718 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 literal 0 HcmV?d00001 diff --git a/test_files/guppy_optimization/1q_squash/qsystem_chain.opt.hugr b/test_files/guppy_optimization/1q_squash/qsystem_chain.opt.hugr new file mode 100644 index 0000000000000000000000000000000000000000..c52fd647e047e529ea451496b71f833047eea90b GIT binary patch literal 7005 zcmV-j8=~Y$RYy{3NJ@4BK`6B^{b1*%P1*p825mKAfR0&B2l=a4WPnlwKnc#P@?>Sk zceSek1qleBj#s5Zfk*dieRZ18(V5CZUq-yd=J;@{0U3P#q#HEa(N{OUu5=oU( zhUzXqz*6B-(om%)YnY)1P1;c1B?wqEm(m7J-ca482v|BUB@R`}9BK(zF-oaJm2!uw z$sMYcNl?H;m9mGb$sVedK2&$v0#=Mm`9qb{t2Vu!rdM|<16JtT^eX3xHfMF8D;<~f zq)Kh3n9wRGiAuu6(s5}*!>&ydRhuZPHciyiG;u;vH%L)cR#Z7#sy17yoGvX?RZf|z zO_?g^2QjP|mozF%jcRH@A# zH#=2o)5nLca^9-ra$arXj+Mi;d8;;KRhzh~%=-gZIb-!FsLB~u*{p7&D(8@D0+A}` z300dXR5>H?09K64Ie{uC3RRmZR5??qKnhh(7OFN?sHdqyb)Obsf#7noP^C6oSiyxV z=L=PvFH|{;XaI⪻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 literal 0 HcmV?d00001 diff --git a/test_files/guppy_optimization/1q_squash/qsystem_chain.opt.py b/test_files/guppy_optimization/1q_squash/qsystem_chain.opt.py index f81293ee8..a1096d0b5 100644 --- a/test_files/guppy_optimization/1q_squash/qsystem_chain.opt.py +++ b/test_files/guppy_optimization/1q_squash/qsystem_chain.opt.py @@ -1,10 +1,17 @@ +# /// script +# requires-python = ">=3.13" +# dependencies = [ +# "guppylang >=0.21.3", +# ] +# /// + from pathlib import Path from sys import argv from guppylang import guppy -from guppy.std.quantum import qubit +from guppylang.std.quantum import qubit from guppylang.std.qsystem import rz, phased_x -from guppylang.std.builtins import angle +from guppylang.std.angles import angle @guppy @@ -13,5 +20,5 @@ def qsystem_chain(q: qubit) -> None: rz(q, angle(0.870616)) -program = qsystem_chain.compile() +program = qsystem_chain.compile_function() Path(argv[0]).with_suffix(".hugr").write_bytes(program.to_bytes()) diff --git a/test_files/guppy_optimization/1q_squash/qsystem_chain.py b/test_files/guppy_optimization/1q_squash/qsystem_chain.py index 1ef046a69..66cccdd25 100644 --- a/test_files/guppy_optimization/1q_squash/qsystem_chain.py +++ b/test_files/guppy_optimization/1q_squash/qsystem_chain.py @@ -1,10 +1,17 @@ +# /// script +# requires-python = ">=3.13" +# dependencies = [ +# "guppylang >=0.21.3", +# ] +# /// + from pathlib import Path from sys import argv from guppylang import guppy -from guppy.std.quantum import qubit +from guppylang.std.quantum import qubit from guppylang.std.qsystem import rz, phased_x -from guppylang.std.builtins import angle +from guppylang.std.angles import angle @guppy @@ -16,7 +23,7 @@ def qsystem_chain(q: qubit) -> None: rz(q, angle(0.62)) -program = qsystem_chain.compile() +program = qsystem_chain.compile_function() Path(argv[0]).with_suffix(".hugr").write_bytes(program.to_bytes()) # pytket code to generate this example. diff --git a/test_files/guppy_optimization/1q_squash/rz_chain.hugr b/test_files/guppy_optimization/1q_squash/rz_chain.hugr new file mode 100644 index 0000000000000000000000000000000000000000..e9751bbcf35375ec81ccf51aa2d30e87a90781dc GIT binary patch literal 6609 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 P7C^W;g9PLM=NP<;Ap_2* literal 0 HcmV?d00001 diff --git a/test_files/guppy_optimization/1q_squash/rz_chain.opt.hugr b/test_files/guppy_optimization/1q_squash/rz_chain.opt.hugr new file mode 100644 index 0000000000000000000000000000000000000000..2dec1d42e306b4f3546204962975911558be6a9e GIT binary patch literal 6189 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.21.3", +# ] +# /// + from pathlib import Path from sys import argv from guppylang import guppy from guppylang.std.quantum import rz, qubit -from guppylang.std.builtins import angle +from guppylang.std.angles import angle @guppy @@ -11,5 +18,5 @@ def rz_chain(q: qubit) -> None: rz(q, angle(3 / 2)) -program = rz_chain.compile() +program = rz_chain.compile_function() Path(argv[0]).with_suffix(".hugr").write_bytes(program.to_bytes()) diff --git a/test_files/guppy_optimization/1q_squash/rz_chain.py b/test_files/guppy_optimization/1q_squash/rz_chain.py index 435f270cf..b1fce8e33 100644 --- a/test_files/guppy_optimization/1q_squash/rz_chain.py +++ b/test_files/guppy_optimization/1q_squash/rz_chain.py @@ -1,9 +1,16 @@ +# /// script +# requires-python = ">=3.13" +# dependencies = [ +# "guppylang >=0.21.3", +# ] +# /// + from pathlib import Path from sys import argv from guppylang import guppy from guppylang.std.quantum import rz, qubit -from guppylang.std.builtins import angle +from guppylang.std.angles import angle @guppy @@ -13,5 +20,5 @@ def rz_chain(q: qubit) -> None: rz(q, angle(1 / 2)) -program = rz_chain.compile() +program = rz_chain.compile_function() Path(argv[0]).with_suffix(".hugr").write_bytes(program.to_bytes()) From bb99d964e6228d92e7b494f33548d6bfe48190de Mon Sep 17 00:00:00 2001 From: CalMacCQ <93673602+CalMacCQ@users.noreply.github.com> Date: Wed, 5 Nov 2025 13:51:22 +0000 Subject: [PATCH 5/9] regenerate everything with the latest guppy version --- .../1q_squash/qsystem_chain.opt.py | 2 +- .../1q_squash/qsystem_chain.py | 2 +- .../1q_squash/rz_chain.opt.py | 2 +- .../guppy_optimization/1q_squash/rz_chain.py | 2 +- .../angles/angles.flat.hugr | Bin 9154 -> 10130 bytes .../guppy_optimization/angles/angles.flat.py | 4 ++-- .../guppy_optimization/angles/angles.hugr | Bin 10904 -> 11992 bytes .../guppy_optimization/angles/angles.opt.hugr | Bin 4775 -> 5384 bytes .../guppy_optimization/angles/angles.opt.py | 4 ++-- .../guppy_optimization/angles/angles.py | 4 ++-- .../false_branch/false_branch.hugr | Bin 5151 -> 6023 bytes .../false_branch/false_branch.opt.hugr | Bin 4775 -> 5384 bytes .../false_branch/false_branch.opt.py | 4 ++-- .../false_branch/false_branch.py | 4 ++-- .../nested/nested.flat.hugr | Bin 7865 -> 8017 bytes .../guppy_optimization/nested/nested.flat.py | 4 ++-- .../guppy_optimization/nested/nested.hugr | Bin 15325 -> 15644 bytes .../guppy_optimization/nested/nested.opt.hugr | Bin 5097 -> 6029 bytes .../guppy_optimization/nested/nested.opt.py | 4 ++-- .../guppy_optimization/nested/nested.py | 4 ++-- .../ranges/ranges.flat.hugr | Bin 8609 -> 8565 bytes .../guppy_optimization/ranges/ranges.flat.py | 4 ++-- .../guppy_optimization/ranges/ranges.hugr | Bin 16397 -> 16747 bytes .../guppy_optimization/ranges/ranges.opt.hugr | Bin 5159 -> 6172 bytes .../guppy_optimization/ranges/ranges.opt.py | 4 ++-- .../guppy_optimization/ranges/ranges.py | 4 ++-- .../simple_cx/simple_cx.hugr | Bin 5167 -> 6007 bytes .../simple_cx/simple_cx.opt.hugr | Bin 4465 -> 5478 bytes .../simple_cx/simple_cx.opt.py | 4 ++-- .../guppy_optimization/simple_cx/simple_cx.py | 4 ++-- 30 files changed, 30 insertions(+), 30 deletions(-) diff --git a/test_files/guppy_optimization/1q_squash/qsystem_chain.opt.py b/test_files/guppy_optimization/1q_squash/qsystem_chain.opt.py index a1096d0b5..dd0985859 100644 --- a/test_files/guppy_optimization/1q_squash/qsystem_chain.opt.py +++ b/test_files/guppy_optimization/1q_squash/qsystem_chain.opt.py @@ -1,7 +1,7 @@ # /// script # requires-python = ">=3.13" # dependencies = [ -# "guppylang >=0.21.3", +# "guppylang >=0.21.6", # ] # /// diff --git a/test_files/guppy_optimization/1q_squash/qsystem_chain.py b/test_files/guppy_optimization/1q_squash/qsystem_chain.py index 66cccdd25..8bc3590d4 100644 --- a/test_files/guppy_optimization/1q_squash/qsystem_chain.py +++ b/test_files/guppy_optimization/1q_squash/qsystem_chain.py @@ -1,7 +1,7 @@ # /// script # requires-python = ">=3.13" # dependencies = [ -# "guppylang >=0.21.3", +# "guppylang >=0.21.6", # ] # /// diff --git a/test_files/guppy_optimization/1q_squash/rz_chain.opt.py b/test_files/guppy_optimization/1q_squash/rz_chain.opt.py index f102dc63d..0135f8049 100644 --- a/test_files/guppy_optimization/1q_squash/rz_chain.opt.py +++ b/test_files/guppy_optimization/1q_squash/rz_chain.opt.py @@ -1,7 +1,7 @@ # /// script # requires-python = ">=3.13" # dependencies = [ -# "guppylang >=0.21.3", +# "guppylang >=0.21.6", # ] # /// diff --git a/test_files/guppy_optimization/1q_squash/rz_chain.py b/test_files/guppy_optimization/1q_squash/rz_chain.py index b1fce8e33..ba6c7e8fa 100644 --- a/test_files/guppy_optimization/1q_squash/rz_chain.py +++ b/test_files/guppy_optimization/1q_squash/rz_chain.py @@ -1,7 +1,7 @@ # /// script # requires-python = ">=3.13" # dependencies = [ -# "guppylang >=0.21.3", +# "guppylang >=0.21.6", # ] # /// diff --git a/test_files/guppy_optimization/angles/angles.flat.hugr b/test_files/guppy_optimization/angles/angles.flat.hugr index e7207da5ed65603f29aad7cae4aefface758bd6c..ce74274a84e313b6412b09de98d61b9de66d0bd5 100644 GIT binary patch literal 10130 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 literal 9154 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 M7MqP1$Uwun2!Ox6NB{r; diff --git a/test_files/guppy_optimization/angles/angles.flat.py b/test_files/guppy_optimization/angles/angles.flat.py index 33c0daf66..70a618a1c 100644 --- a/test_files/guppy_optimization/angles/angles.flat.py +++ b/test_files/guppy_optimization/angles/angles.flat.py @@ -1,7 +1,7 @@ # /// script # requires-python = ">=3.13" # dependencies = [ -# "guppylang >=0.21.3", +# "guppylang >=0.21.6", # ] # /// @@ -40,5 +40,5 @@ def f(q: qubit @ owned) -> qubit: return q -program = main.compile() +program = main.compile_function() Path(argv[0]).with_suffix(".hugr").write_bytes(program.to_bytes()) diff --git a/test_files/guppy_optimization/angles/angles.hugr b/test_files/guppy_optimization/angles/angles.hugr index dde9b46528900a7bf3d97c7cd93818bd85e4a00b..2a143ab611b39f459fcc46d1797c099e144c6d5c 100644 GIT binary patch literal 11992 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.21.3", +# "guppylang >=0.21.6", # ] # /// @@ -17,5 +17,5 @@ def main() -> None: result("b", 0) -program = main.compile() +program = main.compile_function() Path(argv[0]).with_suffix(".hugr").write_bytes(program.to_bytes()) diff --git a/test_files/guppy_optimization/angles/angles.py b/test_files/guppy_optimization/angles/angles.py index d7e5540f2..bf6fe251d 100644 --- a/test_files/guppy_optimization/angles/angles.py +++ b/test_files/guppy_optimization/angles/angles.py @@ -1,7 +1,7 @@ # /// script # requires-python = ">=3.13" # dependencies = [ -# "guppylang >=0.21.3", +# "guppylang >=0.21.6", # ] # /// @@ -46,5 +46,5 @@ def f(q: qubit @ owned) -> qubit: return q -program = main.compile() +program = main.compile_function() Path(argv[0]).with_suffix(".hugr").write_bytes(program.to_bytes()) diff --git a/test_files/guppy_optimization/false_branch/false_branch.hugr b/test_files/guppy_optimization/false_branch/false_branch.hugr index fe5287546b19df1e534e04381746e607cec61148..36c5d0e706994f71606376127cb23a2f4b942b54 100644 GIT binary patch literal 6023 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 NQ3#B)9?oM8YTeSx2Jrv@ diff --git a/test_files/guppy_optimization/false_branch/false_branch.opt.hugr b/test_files/guppy_optimization/false_branch/false_branch.opt.hugr index 7b6a1f1447031eb9060d4bb29db7f60dc2c506bc..cd925f38df41fdc1fc0c14b4ce556d0a9479e96b 100644 GIT binary patch literal 5384 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.21.3", +# "guppylang >=0.21.6", # ] # /// @@ -17,5 +17,5 @@ def main() -> None: result("b", 0) -program = main.compile() +program = main.compile_function() Path(argv[0]).with_suffix(".hugr").write_bytes(program.to_bytes()) diff --git a/test_files/guppy_optimization/false_branch/false_branch.py b/test_files/guppy_optimization/false_branch/false_branch.py index 4479dae8b..6fe35eb4d 100644 --- a/test_files/guppy_optimization/false_branch/false_branch.py +++ b/test_files/guppy_optimization/false_branch/false_branch.py @@ -1,7 +1,7 @@ # /// script # requires-python = ">=3.13" # dependencies = [ -# "guppylang >=0.21.3", +# "guppylang >=0.21.6", # ] # /// @@ -26,5 +26,5 @@ def main() -> None: result("b", b) -program = main.compile() +program = main.compile_function() Path(argv[0]).with_suffix(".hugr").write_bytes(program.to_bytes()) diff --git a/test_files/guppy_optimization/nested/nested.flat.hugr b/test_files/guppy_optimization/nested/nested.flat.hugr index 5c8eb3a8e76cc65e739ae50d41d28a818b1b66a9..b5356bd1d07a28b4a8c39de77eae62b2d3b32d61 100644 GIT binary patch literal 8017 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 Tm7o=->LX8<8QkpLY_~)g`YkSC literal 7865 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 XnPR@2QKfh0>PbkhQRTM9JkxOzmM{5J diff --git a/test_files/guppy_optimization/nested/nested.flat.py b/test_files/guppy_optimization/nested/nested.flat.py index d2f602cde..d8b337333 100644 --- a/test_files/guppy_optimization/nested/nested.flat.py +++ b/test_files/guppy_optimization/nested/nested.flat.py @@ -1,7 +1,7 @@ # /// script # requires-python = ">=3.13" # dependencies = [ -# "guppylang >=0.21.3", +# "guppylang >=0.21.6", # ] # /// @@ -38,5 +38,5 @@ def f(qs: array[qubit, 3] @ owned) -> array[qubit, 3]: return qs -program = main.compile() +program = main.compile_function() Path(argv[0]).with_suffix(".hugr").write_bytes(program.to_bytes()) diff --git a/test_files/guppy_optimization/nested/nested.hugr b/test_files/guppy_optimization/nested/nested.hugr index 09784e2ae29f6ff033f41178764ba24e5be6cf47..f5ec927c20f026ce4410c19b88e7cc399f597489 100644 GIT binary patch literal 15644 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 CS4g`6 literal 15325 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 diff --git a/test_files/guppy_optimization/nested/nested.opt.hugr b/test_files/guppy_optimization/nested/nested.opt.hugr index c951fcaf6126aa921453368f381133f81f211404..2407e5276060f07d5437afc122d10e952bda5c4f 100644 GIT binary patch literal 6029 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 H85 literal 5097 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.21.3", +# "guppylang >=0.21.6", # ] # /// @@ -25,5 +25,5 @@ def main() -> None: result("b3", b3) -program = main.compile() +program = main.compile_function() Path(argv[0]).with_suffix(".hugr").write_bytes(program.to_bytes()) diff --git a/test_files/guppy_optimization/nested/nested.py b/test_files/guppy_optimization/nested/nested.py index 7cbb2d509..a59deddbc 100644 --- a/test_files/guppy_optimization/nested/nested.py +++ b/test_files/guppy_optimization/nested/nested.py @@ -1,7 +1,7 @@ # /// script # requires-python = ">=3.13" # dependencies = [ -# "guppylang >=0.21.3", +# "guppylang >=0.21.6", # ] # /// @@ -38,5 +38,5 @@ def f(qs: array[qubit, 3] @ owned) -> array[qubit, 3]: return qs -program = main.compile() +program = main.compile_function() Path(argv[0]).with_suffix(".hugr").write_bytes(program.to_bytes()) diff --git a/test_files/guppy_optimization/ranges/ranges.flat.hugr b/test_files/guppy_optimization/ranges/ranges.flat.hugr index a9692f206267db28d1691bd1a34e1db28aeaf3ca..d1926fe03bffdfbc146ec0a808062beff5ea4e7d 100644 GIT binary patch literal 8565 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 literal 8609 zcmV;SAzt1{RYy{3NJ@4BK`6B^{a`SlZ43drh4oHhP|h7~I%rB2r@m#E0K8JxJ)O2h zi1G!#n$$uA4K%Y}k6c#6Y^wE3IK0qon$j;-pkJcWFO@blo2v9nLCvNs z{gRO#noT_POEvuxOuwX}PjEH~(QF!`U)q{YM)bKQOj(*uO7uAz^tmAVoDL=^nosX@ zR+>+!K1XFm^XWyOGwO3r`rJ-T^QqP6gfyRg^f?%u=2MYA2cyq*eQu&(=hIK~DeQ9+ z%_p(XL3EDuiPn6o^;rdd#-YzM^y}xc&o1;isLwlnu3;E`hUs(HCq2<8CGmnjiHJT) zhd#+lpG2i$Kgmg-WYj11^hrkgq?v}DPfRqQwDd_Z`lPPEHPJYnQCu?$)r@j!M%Dfn zgp6hsjb@aMX4Ff6n_)*Y%11NmM>EQ%zwI=oj5^Yc(&=wP`rAx@gK?WtVt?zJQBeAC z;;0$bLjOthPelJJ=m(rpG&G}X=pTn>RF(c`z|xG$p???pFZ=K5pfl=+W)u+p8)-%j z(f>^QoKZ(Kqmbwy>|aIyiHd+T%86#wmi`izyZ4E3Y3^$O1@$`ASD*%+I~&d2OP@;R zuGKGpGm8+|kevsG+&Dp(#+Mxx1lN-3|S9H)z21bMCG*cUb!C zurzl$_&fwIO1bml135HzJ2ZDZGf=&ysK z|BeSP7tY?BJ+1&B?4S2mas7E*|K5&y_E629i|m8_^H8nwYO6e#{ydldy^{;*?A7Ma zThYIla=HF_E1EqSpZB7FPvru@*^|-i(df^k(KS37{d+E4M9va zf<(#Z@icos{d-JYGXK1v&kLKq+rQVuC3E(~W>3~c?9n;~<@0F$do!2m?A4m39QEh5 z(Cod?>`m$4Q-EtbdoeV7GIRrI_`L|YC}q!vX0J-Kcf;>#z(wijRq5|avxlXB?*T4K zRh|s})zIwO(7%TO7p2^f1J_vu^<7}PMGI7mQqo!HG&_BRs~ZZX7>Q3Ks;$-E)@t5% zw2V#jx8d|lr&XIyf16J8rle(3-p zp_)l9tt3UM0=6x^gUyHjHXoX|A38^hQvS9f+VuKO2F;rh{cT1xZ$~t5Nc5Kac7u+w zA<;P4t~760nztN!JNHwED|(C4ku;qEh3CDD3X>ZbR0u*t8kGL`s`}SNg(XF*NeYYi zHTkfZPEAf&{v)9U*`D~nR}*Tgj}mGPAtvak;o;-otIUrQW`6YGkz ztbaL>029J02h0r`FF0=4s4;?#8dde`0<5YMh@b%X(L#s+NLZ9|_>Uw82qaL!!FVx(57{zgHBR zpitwZs$NZSfC)7JUUf9l!HTJ>R}u_B!i|5gIGW%9X;jrK`5%c0|6VC&@*fEZ|6XI9 z(k74b631{hgO=k-(+SXNj^tmgGn~oDS4o!THAnIV1baxvSgfcmPN~mZoKhyI^c1== zpcy&q-tuB$Ei6soTVAU6qC2u`VOfSimlg}7u*{JpiRbIaV&p4|t9Z*xov;w-&Y(|1 zSs9y|Xi1*D!r7?gJ~pEzxlh6)pW)R@onjCT$_&c7Fk0-Evna|}FIBrwOjcgK)QgOn zVm3M~8SNY&(x9-;`{azm3I=Y&aSr4HAMzOs{N^J};6e`LluF{qN5Uy)CC$v!%s_P-}&%?zcPY0X^ge?+{{ z%u|{G(t{Z5A_a^_-a=49x1R{Grx z{m$ryX6{PAbJFj6`kjy-nmHf(-Aum&`(0N=GiO8}^+X@FL?1;&+nhNjnmH|f)C-!q zEdeZZBwJ$`GsB{h6wmM^WzHDQyk(1ajv);SO-wv#GbC&bOV$qAJi zPMXjVE$G7R>Ijr!&9G!ZTLX@yXqGn$Xjfniv^67mW#I_2;1h*8l41&Tyr+~41p75< zC^$g{fk+f+6hj#h5E#Xkg<}d6n4q32r5!j2Zsj3RQbC}kQhIa*!mdfPk+I8@skPBVREind4RY4Ne7OQ#-(c$^k3YN|l;{3;l(2AK^6)z6MsMz|Yk_ z0$;#GI1E%O3@}s}cq$Aj7*a7#MFDjR0}jIiUZ_z{s4!k+REvsg5l<~j6{TFDB2nu3&--FV-c_hyhEXBUKzM* z)qt^Z91=~Cg&HslxB^SEEOAbA?8qCi27G}mM3Iw9T?eNk`MCz*IY$oUKUE+rR3J7L z2d92;BFDk0I5&03&lQMG1@fmV5Sto=Re}6mP523CnNV4$^ruSGqtd(wP37@(-Eo?q zD^1Lws^7bx&Pv7nTupyT;rO|7AE8FA0anmf8$t~sMvVcZ!f;Vtu&69lRi&b;NY&H_ z^@Fc|UF}ZwWU3rjDLq%xM=_M8p!6vfSKEwmKSo^0i6A6F+JOcK(hfZ|rAF@|`2a%# zLPZ*)1!)M<5lw0BA1Moyv^1qs{*ksERrv*}BWd|aTaIc<$*Z`^z&2oDA4ldn^)ZhM z4rB2BSjIFy;um-d)6kTv@Q-caD@`ept2hVV;o}~f(iHyj4=e;1!AEcwW`dnyD2_s* z>M5sEa5P?8K5UBU@Pwj_Mx!02;98jSaWZfVG*QOcq!G4Yk0Xi8UCm7q8(MULMvxvY@!nQW*`F)cRzXi8!JnQ)rYm$ONy zDaCP>i6@2W$8?)g)Kww&B0 z;H?#3@uDcTUtdon6R1z$l5Dj!v=JzDieN=*T#o=BA>q4HQ&6?W7OM~yM6 zM08XcR?ShWN22+AmTPI%we)u_&3EF>-^SHeZMDCxHg79vG=H0oeziJ3M@O?6jfkxU zS=c>KQFd(*?KJIpmgHX*kPw+9Ns=TM zo}Qi_9v+?>(5`-dKqjDFwS4UA2kZguO2+2~w5uDMOh&%Io0}GEhDVT$HrkUUGVRNr zM6PqZWl6g^FAMSUSWCSxMd1DIy!g^SthV+hD1nKI^!J@uLUAg0NX>J z_7v@T&0Ajc?%eROHQ+dNhr%b}joI^c&kM69XDN@2)?gXGDOER=Vq#e3B zCpn(vIAd$TYb2VZ642IwrfUo>d5)rek*NlZiwg#+~;V1_EoHP=&tDhTis0?AEU4a4c zu{GdHn~fr9S0EA4)_`XXc1zl6S4S+^8t`R`GSIF-mTAeN(~kERoj1r1$+5Aq@FfnB zE5ODuG|M|9LAyFSIs$J%@g>G)QgA?90|voH8W{xI)sK&@0Zmz0hO=4iv@wzlvX=%W zoRN040d37pEMMk@fh^b>kOf;~S1kDaPxZipO6d_u!)ndE$gpT;STa#!Ofd$BJw;KH zXIS1Kbi6|<;GzB;fu@%@M8-yO6kD^}$!djUOo;Uo&nqK3#WHLKh5V>vhkG8wlp@F& zV~m^4Z9fi3lQ-09oS9*gdqOE)Xdj730ygMQ^qva_EtJkGylLU}vr z*47N!L5d|pS0GkNrhwsdll>2AanPS4!&nCTGQ{|o27b9T^Tyv4PS~;U&g3%CCyfEE zy|sTyqj<0m(}h~8X2M1enMJ-j_L5JIZW7& zxM5r9JgNV1g4GKsT*0MUAJ;%{wuDToBtmKt`x85~U2I2?8O_0*?k(&jD7?k=lSk>oc2DcTJjjCq>kYcsb-TJ{vJ8#pVSXqzMx* znYxBbyoA8O`Gck)u-w%&=pYOrA{JOK_HCVq{myb3z1U3B;kVdim4_2uAqqzM(<#odUPS)zZ4O7c zP+{IjJ;c^IvS|!Ib+V?uCm0PZ*g;ts%O}BNqv#W3YIOQ5t2VvJr-tu8aOoz znys2G@1oXj!3hTbs)_Y0uZtfkUSN%AT_wB7Gji@>B9p&v6LAy zYBw02L;RmB5a%eT9?kGew$XyC|91ZYv=Xb)$|2NHb!OlcYtCsH^W zqWKBGP)4{7=U`aia$0qOwn#ABTN2|E9^njTUri4lp)U%$Jp_Y{qeplEMfu>GuD$M_ z(%GAmH89x_2!vu?L?JDnv>&BJS|}#ut{3#xV+argB0$?di5eCI1E$F12V{T~WjHg! zXm0BZ4CXF$t_bsDzB=~;b?$`QMfBcq@SEb4EzUYQ!sk!*liV~qaZINSYp^&xTZ-_x zk0-&?bAI>7h~R|WdET==eq~2e9cA82+He^z8#GOcojmDQTW(Aj_@c-7i={9=DDR)$^4jlB72s z0u-gz$_c!+ZEPQ*>l4+1?9_Uh$jmz<4Y4~YapF&DZBPP@ddwTUbcq$>xA)eQ;VP7sfc}4R{ zzQ#y^iiS)a2z!BmegxJUy62y#1#J85Edt~rjmuT&(X`BOSe{*JcUyAtqU%nqb5Q5S zuOatTSg{M{&_?Q#vhmJji-wkDLdDW}k)1H0&{E6vG>wj2X&+FDz{3F4xOCnG2Iy)) z42ik;?Xfsj9J&(+a|c&39!nzuO`IikI2_R1nh0;Lxx4 zUE7YvD#Af)t0Sj{PhEzpYz8s|`)%*nY!Jj@8fTH_k1qM{unE9Vv56GlGh?hcf z3Y;Fmq81{75^^-X3mx-VwTTCkqNjt^8dr<7bK9tk94NYlc08+kB7_=hi_^u-PO>v1 z^@N`lf5~8nSX=2~lMHkZac$!Jduyrumblkr_4Y+C9&?Olsu~Zd(!_W&_`h=TD9Y=&%c~L`6a4;h@(Sj`u z&qM{|MudWIrOvrmMzO}7v;6GgmB)tQOldbCDXB#=h|MC+(V~n`uIox`A1bISSaAVQ z)hqv8pSqWS!Vb7;c2}$@JwN;YXYdvPSti?7FG8u@$Ff1nSBtSgk^cJ?sn3|bn|-Eu zAPi}7as87WEsYkApIs1vue7CEy^?ynr1e?zyOHMOhkm=hqj&JuqXdtaQpX0YVU5+- zUC+_lZRcKDL5*QyUYSOJCtm3fImcEt_ejj}xeKr?`y1dSdYJAO(yaYn3hJ#Dm@e9+^G25K( zaLZ6Jeb4#~@JCSsbWAK>n|9ipL$>>~ucgN539H6=Y<&qbsn7-ASyiyGo+Nhh*g|zm z69n+$eqsu?ocGE|#V6(FPwAodBjM`f51C~(QSd30~q{QR<0E;ano*}CE$np-mAb1b= zH~8()9LM~hAzMh%O7gH|lN(soM^gvBrAH$|JVa*{@%H?JJ1!;?_{3+l@^=(H;zfzN zj0N;DzJUx$e0Ewt+7DwS(X`G;LeR9~)%225JOlE!r^ZCTYx_ZR)z)&EBHWcNMhk4D ze%P1ea@vP_*rz&0V+m9W;NJ%MuJpMur}mFmyWFQNU{=7dpUbj$>UX|Yw2+cDN(1xb z4mGUTf&EWsX4V*zrruF+N)@?h#j8%zIuMT}4f`VF9QYHCfe`hxVwmU3kJX((pMYuE z9RJDxbMqz;PP_SU$eHR4fEcFZ?FPr>{PQ$(Pi_Ht#2zoM+t^A<_&9)8lia#<2mn6@ zIQqk{Xb~_rFhFn5pMyD>M|`Q>Tcon$-Jmkx-TLr&>uTKs`!|Hw_G>y(;t8&g!0pDq z*j?X*8qb-2!dS=-tptE=0*r@D-vSu2hwcloYr5aeXk97eno(oV-FJNt+#{KfY_&r3O9W^8OoY<#lW79!A?p2wzc;UgpRX_!7r-<(1w(^VROO`ua>!g z8LdMRtB9Ulfd_(4DF+(+2ZX|#A`l93ia;pDDLxQe0C3OaI5UhO7d&#=+ge9kJ%u2l zUAX^=0.21.3", +# "guppylang >=0.21.6", # ] # /// @@ -41,5 +41,5 @@ def f(qs: array[qubit, 4] @ owned) -> array[qubit, 4]: return qs -program = main.compile() +program = main.compile_function() Path(argv[0]).with_suffix(".hugr").write_bytes(program.to_bytes()) diff --git a/test_files/guppy_optimization/ranges/ranges.hugr b/test_files/guppy_optimization/ranges/ranges.hugr index 58030688fa23c204c4c5281acabe0132fa649967..1108b73c8a8ef4ff459ce1ba6a8989cab80e90dd 100644 GIT binary patch literal 16747 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 z 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 EAGUf$dH?_b diff --git a/test_files/guppy_optimization/ranges/ranges.opt.hugr b/test_files/guppy_optimization/ranges/ranges.opt.hugr index 1a1eb62a132ebdd9769dc341ccd45cfd031cab14..3e6feab4f06105f33224d48998805845fa8c80ca 100644 GIT binary patch literal 6172 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 literal 5159 zcmV+?6xi!XRYy{3NJ@4BK`6B^{a~$#ouB}!wJao4z!q^jII7!EZ11lqgk^ZE|C4Q4 zvvVzOXXjOX17|hh+p*ypS8Q}E#f`Blp(ci^1x|2lBqD0U3OyCDm!O?f zV5=0Wg?{AUNG2IW0zm=`0u5wdKRrLMIxla^Pk%FpH%XA0SC4toOxYv-k%`e>&;u0B z-ySH_&%4_Y6gY}{1fmV~x_eWg&VqPvN+ptc^1;vHivTFw%0l694&NSnntVjMyQ9db>xlD4>S^+k9i#kwClYhbrk*CBm~FjZ z3wO3ZWQ3k3AFBdAz8eS_^fdW&UvhTy5TQh_l1WlB3n-c0Q>1xZpG&^LPz=B>DFcf! z1G^**?2;?kB}EFXU@0O@tASlI0_>6$V3%}pfC3Bx7i@wIuuJB^JTeD%$sJg?)S&dD zJ#q(j$sQglqeBL}B#lS*;L!uSe10<}ldV3(vGdHPWT^(85G$;T9s6!S>h zL5W6RRRQ@}w**pJpgr_w3JOR6;3YZC(bOB3&1&?$A>y|5&Ncxg6VAl&VU>+$0cF7vBOWuHWOBzbDFR24| zNgl8qe!wmX1lBEmD8+cmAh1ggfnAb_ZYe}5Mie;&<}m`hBobJ++@TcXNN1T58%Anq zDdJiJ8^I|N#VFF3Oq&3~78sfG0?9-ury3t+phq$NzE<|`-jsiML%-|RCG*i&@diGZ z3Gq=T#7C|Psp%d?Fk{@wT0kNe8X-^%3n&z11?;HBpKV=9aTP=G%@n@{(f;ZI8}qc2 zk!*E!J6mlPeXR@<(c7s&Tg~sWa>Z0cF{U8U-kP`Xy1R)i?LdlSZ_PB{Q0_wTu_(-z zhBqx;%^}O>EXAN2-e<4{-n70iT!D|n9I94f>N(eTvJi*`6v}***;_&UK{D5}F7uJi z-lH}XQZod!x1NCZbIzlPWo9Umh_aP>C{#A&J!(%xJ<=%cqCc(0m<)7Zvqj68 zF=g}&8B>AoYbMY#y00k%M)zlWdPS?~7#|qj*CgoyJ_2-KbEHvROc$T|X)#-Prf0=m zp<=2anIj`J#=fRV+e*EY82f`FlaL$8A9N%TatIhsG>euPMLsw*3zQB3i!nx<`o%}3 zWyI(iSd1{bO@5(bZy0gF+jRpbp=j3S>){(!|O8$||z#n??EiNIo%pO#U` z1kl)=CoHB($;8^loS&1~g2nWh%oQb5HUQlnV~o$dIz|Z^f*Mmq#SB1zNg^i!Jy8mn zFkZ|U1I&?6j1$n=!H((KF)x|<;uGWLIZcwD0U)sEP|k)I(@WCPA!V+GLfO6-t}u0b zJ>}S`gVe#ixqQW#V(?zgHq6yk*KIb6bIM~JGBOU>Sosg`LCWHx$=F}j_X1n{G8+KG(?WChdgD++tAmc$vk*F=PY&Vp0~QHLv^%t zsE!(~&Rz%KR+Wmn-|XL|J{Jc)t~mZ(eB)wnbIrS0MV+HhB9U_Sm8~3o>^Z!wTyfl~ zzdU}7BXcd}qs#~Q7Kiz>cH^Y zi&>j(fz-Lr;pg4W!Rnc^vVYjoAnp?4$Xv3WolGXrblY<%?pYh%GS@^t%5u2crD(;} zN9Lo9wsIz<>q1LoxaVwmF<9A(b1Cyt_T@~7tq!{VAa&)c>z`=`{aM*FzTcBbpJ^`b z{K(0nk4YThi!XK6_0`AZYxA`%KFVIFg0@HIqYNxr>Nnf!G`tY>Ty5wy#WM=8LJgdH z#vjDq7u4HOua#>@!je3Wfq^)lBo5a<^tyZy(>pYj_qF5c0t zuC5NwQVQb#Zsyv~&QA7{)vb14P6nBevJ_{-o61}Zr=6Ye3t_yKa_)1k-g_#{pxcb^ z_l2MhGuK2gAr?^xNQzgm;+u+VG*T*F!HQEA*EW?DApTz~QwOts@bUN9wbQ0jqn%PJ zHQI@))Hn#^ARDTvy9=!u(@(@Avbnd*k$;7H@P1(BGS^Nbmlu-g6#DKvx`o{JGS|SW z!-lHN#RDl$%gW7ub4Rm%uj2o5KIK<8JIJ|k6x^z%Jho?THbhlhRV(&d2dk^9zr8UI zk{m<>w6t;*yRDvshpVoG-+eWAq354+t_v?tim!OyLYzT+UsN4sp}dP#FQCO?c2!4N zuDUMrl`wpO<$+pPR1VlsxuvhV?v|oZA?H5Ru%kiV-U@<`znu5h=e0nm{`lq+YOCE% zc`eXnGMQ*-XlQ=;@ZsZ!4<9~icU7u8Gcz+YV_I=5u4F2eN;*0^tyU|Clta=q&_Dx| z$z-CTp?S$%JDsv0nQNjN*G`!!b1hW!lDYO0dfwf#mlqL;#YV~tt>?=Eee=vJW&0S1 zFZp3wfBl7x2^k2gH7!K17tT$d@Vo0CA`x`C} z6GL)L-`38bHIwt%-YsM4R+hS@ZZernr_)X*qn&DMe3XGW7gPN9VYb_KE;21VL$?aH zSfA$`;{k+YsH2%m6jMqOLx^NVNZKSF0}@~`XiOH7&Z*PM_Y;7D$-^;W92AH`fnXpQ z3SkTeF$h9248kx7f`FVv%sE%*W5am%tb|8igqf`bHI*BY`0ALhSmxYJbCZWEqr#x& zokcGLb(+4*c8%95n>)$#FCw`6h}p5-e?&W%EOd;_L4w&?{#vhc_{CIJnt|%iovZZi zsoW@-T`Ir*_STuw7>b|Shq3gJSClUnS>d?+%^Ye|bN2CtysqNtL0~PvkX?7)sAS1` z!UT8->&|+@vO0BlQJaa-^;DB`$&^#WoWKoP82iiP!IrWeH)Xbiv*^anX)`$Ep|Ek| zP~H5q<1~iHmzPYex1MZu2YDijMTsl0q|6oIV5Zdn$D+e$MRKtWtYwJr#2KV>9r;Gr z2`5D0yW?2~{U7B(+l%~{`^3BRr7P65Hxt$kv$+CW0-m%zk&VqzVn}e!f+3M-Zj24t zro!fM!6Mqu#l_Q2`n6PPmyJ-3U_%em2Ix)((TAve3 zu{6Y5Uj<=Wj#JCZl!tLTHRV-#s5(;m3?hHsl;UI3lyy=^FGA#yN%(m&_-qq^h7hrA z$wn|#nF#^9^M70rg7s>ebO_%!;sUw2L!JHTW^!56*aYtIoj2LFaM}Y=5n(CcC3{^L z_||G^?2}l(9YhfKgosFETx4(WNGRWn&Lwr|6doIBnghk4e<*c>lnZgF6lu|sr7(du z*nXxVFZJ2w2aAq>V<-~Ia0WclCqrU{?Ox)t6?6uQDh<17>@+iBS3C_YBD1+-o6yd~ z1yc;ibAoixZKe=})#R&qDo>>pLYH8_6Z$XEgw|rc1at?)+4e=`=i3~CaW#0}*CYfy zZu%4(Y1`3J15KePf!KINZZ`ZxjDhh!L2h90cd}gRZv?x<)0W_~pD~yo=RkE}LF>R_ zb2IX(^xbf}Bnr$J6iyc~uo-IeuOp!z5{N2;iJhrL=nG&9^Qeg9!b7zIqN*pNE|^#} zFv+A?K0y}*_5$UPoTJ@G$@In&zzm5Q>czj9W(l^~L3t$ox4`Dv()8>7u?(-bM%l_? zMe~W5qBT7BNAAjfWaVOy760QL@7GU(`*B!^pg~WBz9FoI!nqy-NI>Vww(O`SPi&%0p_tQ`VnP{d0V9(FQ? zD7DxENkY0W0PqU30}3F5iGWz?8x{(H{p%o823#wHf)z&dwlAt63D9Xn7_3Qk&I0O5 z!Wk1CkIa6vOT~#ZEkgL>DI+<3zqw2&0&B44vnBdF_hb@`SuQ|-kfBXvW&H8H?-uXv z{>3Mb79g*w`$%G?0Ht@Bk zb(gTEW!rgcuoGf8dQSarBrV;{J*YrJoWOaIUpKD-9dWNT4H%|$n@~xz5!Xx=kJ}&> z=GKLTl-d3>U`A^Y+>f;&Rjp%5Js%bkZC(%xc&{~8RK2w#YALbqDxYQPx22&A5?TQ@xXh5qaPt|r4#hL;-@ugw%%+iP zl(rS82uv%Vw&%S54dgK(=EU3qd(e)TJW;l?x13bKu{hYYMB!?sfqp2$b9Y$wfJaeu zLJrmpG$C%_7JKxtc7iNPfusQ8q!5}8C>3cc`ooxP((yAz%_K}<(mn`4*4r|nRzT%1 z?|=K%>V+`dOpuOxl&v2?T5J+1ZD7iBlj0C}Uu2I@l>dIAO~711xH0z~4$Rn&zE=du zE^$G4w+4r@HeZ`hLAAs2+3G%9_=Y~zF)}U&I&m*lHbkv3O)S!!GN$s)n~&@IJYZjj z4Ih&O7|rFd6*f8)#138mW@FE^7G2WOr1Dh7;V^naOVz7+td3Gb|HKm^vK%@%>&?LB8`5PTJg5y9Z!FG2l;*)035;|myS zs`>Tn7v7w~5Qo>HH2Vxv)0b3zHS&z4kDsbtU*CW5Tug%ZKcztqIH+Y*m%H9!(=Gga z<*OR0T7EB$2_HW1!`O#uqvro}vZDUwnE_2zT7&QY0KL#>$_BmJlF{<2iZ_^3fzUTA zFjSKnjls$@33%;dP!XwgJgNmoseS+sJ{rw(V>d7jktSzZHmTMHbGiG}5yn0oi!44< zO=`->mu2+bbMW(ZAT3lbYF&9jhwACguDTf^wJyQsWC(l4vzfJb}@ zI^(=}ZJo4L7`Ca)+W>q(>+ah17i_tHB+MJo2<50;yYGCx-pT6}wJJ1-eC zv_E3=ug$3A-!B>!2vA9jdj?2Vb1_(yBj4-t?XVJ*LxLxz+@$4 zRM1O{ipqf;qm6CkU4+*FC>@DS&uc0E-g}@fpQJZJ`&3_ai^jP?s&pz-6es0XXhPQ8 z_KgU$8`q&kXnhVio|~@#W}lM^&AO*pN+Yx2(3-UzpUSF9Wl*b!RZLp+r7e#*7uzA0kDA6`AI!)Ngx|yWMMUHNK zKePJgu5Avb8$!l5;{H?1+!0n^%3PU{x`Dst#Z+D9xW!E+>b?>6OwxkmxZL35;uCX; VcQ4`_Mf0NsiYPcc)gS)qy$HQW*>(T` diff --git a/test_files/guppy_optimization/ranges/ranges.opt.py b/test_files/guppy_optimization/ranges/ranges.opt.py index a0b00774c..1e5010418 100644 --- a/test_files/guppy_optimization/ranges/ranges.opt.py +++ b/test_files/guppy_optimization/ranges/ranges.opt.py @@ -1,7 +1,7 @@ # /// script # requires-python = ">=3.13" # dependencies = [ -# "guppylang >=0.21.3", +# "guppylang >=0.21.6", # ] # /// @@ -27,5 +27,5 @@ def main() -> None: result("b4", b4) -program = main.compile() +program = main.compile_function() Path(argv[0]).with_suffix(".hugr").write_bytes(program.to_bytes()) diff --git a/test_files/guppy_optimization/ranges/ranges.py b/test_files/guppy_optimization/ranges/ranges.py index e7e9b6a58..09dfbbf83 100644 --- a/test_files/guppy_optimization/ranges/ranges.py +++ b/test_files/guppy_optimization/ranges/ranges.py @@ -1,7 +1,7 @@ # /// script # requires-python = ">=3.13" # dependencies = [ -# "guppylang >=0.21.3", +# "guppylang >=0.21.6", # ] # /// @@ -41,5 +41,5 @@ def f(qs: array[qubit, 4] @ owned) -> array[qubit, 4]: return qs -program = main.compile() +program = main.compile_function() Path(argv[0]).with_suffix(".hugr").write_bytes(program.to_bytes()) diff --git a/test_files/guppy_optimization/simple_cx/simple_cx.hugr b/test_files/guppy_optimization/simple_cx/simple_cx.hugr index 5acd2626e6387acfea1e7b679226ddfe34e31d1c..71cadce8f817ac80e27e62ed82a6a144285f339f 100644 GIT binary patch literal 6007 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 diff --git a/test_files/guppy_optimization/simple_cx/simple_cx.opt.hugr b/test_files/guppy_optimization/simple_cx/simple_cx.opt.hugr index 39984359d545e62b9a43ffce2318da767d7c851b..1793f408111439a2271ab4ef0ce6234f5efdd702 100644 GIT binary patch literal 5478 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 literal 4465 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.21.3", +# "guppylang >=0.21.6", # ] # /// @@ -18,5 +18,5 @@ def main() -> None: result("b2", 0) -program = main.compile() +program = main.compile_function() Path(argv[0]).with_suffix(".hugr").write_bytes(program.to_bytes()) diff --git a/test_files/guppy_optimization/simple_cx/simple_cx.py b/test_files/guppy_optimization/simple_cx/simple_cx.py index 0cfd75940..f00458919 100644 --- a/test_files/guppy_optimization/simple_cx/simple_cx.py +++ b/test_files/guppy_optimization/simple_cx/simple_cx.py @@ -1,7 +1,7 @@ # /// script # requires-python = ">=3.13" # dependencies = [ -# "guppylang >=0.21.3", +# "guppylang >=0.21.6", # ] # /// @@ -25,5 +25,5 @@ def main() -> None: result("b2", b2) -program = main.compile() +program = main.compile_function() Path(argv[0]).with_suffix(".hugr").write_bytes(program.to_bytes()) From 468d11e19fb4717267f9771856d0301f931c4379 Mon Sep 17 00:00:00 2001 From: Callum Macpherson Date: Fri, 28 Nov 2025 17:17:40 +0000 Subject: [PATCH 6/9] try calling squash in tests --- tket-qsystem/tests/guppy_opt.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tket-qsystem/tests/guppy_opt.rs b/tket-qsystem/tests/guppy_opt.rs index 65957e1a0..a82834452 100644 --- a/tket-qsystem/tests/guppy_opt.rs +++ b/tket-qsystem/tests/guppy_opt.rs @@ -22,6 +22,7 @@ const GUPPY_EXAMPLES_DIR: &str = "../test_files/guppy_optimization"; /// JSON encoding of the clifford simp pytket pass. const CLIFFORD_SIMP_STR: &str = r#"{"StandardPass": {"allow_swaps": true, "name": "CliffordSimp", "target_2qb_gate": "CX"}, "pass_class": "StandardPass"}"#; +const SQUASH_STR: &str = {'StandardPass': {'name': 'SquashRzPhasedX'}, 'pass_class': 'StandardPass'} enum HugrFileType { Original, @@ -54,7 +55,7 @@ fn run_pytket(h: &mut Hugr) { .par_iter_mut() .for_each(|(_region, serial_circuit)| { let mut circuit_ptr = Tket1Circuit::from_serial_circuit(serial_circuit).unwrap(); - Tket1Pass::run_from_json(CLIFFORD_SIMP_STR, &mut circuit_ptr).unwrap(); + Tket1Pass::run_from_json(SQUASH_STR_STR, &mut circuit_ptr).unwrap(); *serial_circuit = circuit_ptr.to_serial_circuit().unwrap(); }); From 02831b9523f7cc14841c5122b0038031a000e4ea Mon Sep 17 00:00:00 2001 From: Callum Macpherson Date: Fri, 28 Nov 2025 17:19:21 +0000 Subject: [PATCH 7/9] fix string --- tket-qsystem/tests/guppy_opt.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tket-qsystem/tests/guppy_opt.rs b/tket-qsystem/tests/guppy_opt.rs index a82834452..3f3618a1c 100644 --- a/tket-qsystem/tests/guppy_opt.rs +++ b/tket-qsystem/tests/guppy_opt.rs @@ -22,7 +22,7 @@ const GUPPY_EXAMPLES_DIR: &str = "../test_files/guppy_optimization"; /// JSON encoding of the clifford simp pytket pass. const CLIFFORD_SIMP_STR: &str = r#"{"StandardPass": {"allow_swaps": true, "name": "CliffordSimp", "target_2qb_gate": "CX"}, "pass_class": "StandardPass"}"#; -const SQUASH_STR: &str = {'StandardPass': {'name': 'SquashRzPhasedX'}, 'pass_class': 'StandardPass'} +const SQUASH_STR: &str = r#"{"StandardPass": {'name': "SquashRzPhasedX"}, "pass_class": "StandardPass"}"#; enum HugrFileType { Original, From ab7359a92476fc69215924d70872a3330ddd9b63 Mon Sep 17 00:00:00 2001 From: Callum Macpherson Date: Sat, 29 Nov 2025 20:34:41 +0000 Subject: [PATCH 8/9] fix name --- tket-qsystem/tests/guppy_opt.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tket-qsystem/tests/guppy_opt.rs b/tket-qsystem/tests/guppy_opt.rs index 3f3618a1c..7ad7d02a0 100644 --- a/tket-qsystem/tests/guppy_opt.rs +++ b/tket-qsystem/tests/guppy_opt.rs @@ -21,7 +21,7 @@ use tket_qsystem::QSystemPass; const GUPPY_EXAMPLES_DIR: &str = "../test_files/guppy_optimization"; /// JSON encoding of the clifford simp pytket pass. -const CLIFFORD_SIMP_STR: &str = r#"{"StandardPass": {"allow_swaps": true, "name": "CliffordSimp", "target_2qb_gate": "CX"}, "pass_class": "StandardPass"}"#; +// const CLIFFORD_SIMP_STR: &str = r#"{"StandardPass": {"allow_swaps": true, "name": "CliffordSimp", "target_2qb_gate": "CX"}, "pass_class": "StandardPass"}"#; const SQUASH_STR: &str = r#"{"StandardPass": {'name': "SquashRzPhasedX"}, "pass_class": "StandardPass"}"#; enum HugrFileType { @@ -55,7 +55,7 @@ fn run_pytket(h: &mut Hugr) { .par_iter_mut() .for_each(|(_region, serial_circuit)| { let mut circuit_ptr = Tket1Circuit::from_serial_circuit(serial_circuit).unwrap(); - Tket1Pass::run_from_json(SQUASH_STR_STR, &mut circuit_ptr).unwrap(); + Tket1Pass::run_from_json(SQUASH_STR, &mut circuit_ptr).unwrap(); *serial_circuit = circuit_ptr.to_serial_circuit().unwrap(); }); From 627bdef3766df311e3b17ac057bc4d46b8dabe28 Mon Sep 17 00:00:00 2001 From: Callum Macpherson <93673602+CalMacCQ@users.noreply.github.com> Date: Mon, 1 Dec 2025 13:26:36 +0000 Subject: [PATCH 9/9] fix quotes --- tket-qsystem/tests/guppy_opt.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tket-qsystem/tests/guppy_opt.rs b/tket-qsystem/tests/guppy_opt.rs index 7ad7d02a0..42b8676d6 100644 --- a/tket-qsystem/tests/guppy_opt.rs +++ b/tket-qsystem/tests/guppy_opt.rs @@ -22,7 +22,7 @@ const GUPPY_EXAMPLES_DIR: &str = "../test_files/guppy_optimization"; /// JSON encoding of the clifford simp pytket pass. // const CLIFFORD_SIMP_STR: &str = r#"{"StandardPass": {"allow_swaps": true, "name": "CliffordSimp", "target_2qb_gate": "CX"}, "pass_class": "StandardPass"}"#; -const SQUASH_STR: &str = r#"{"StandardPass": {'name': "SquashRzPhasedX"}, "pass_class": "StandardPass"}"#; +const SQUASH_STR: &str = r#"{"StandardPass": {"name": "SquashRzPhasedX"}, "pass_class": "StandardPass"}"#; enum HugrFileType { Original,