guppylang-internals 0.26.0__py3-none-any.whl → 0.28.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. guppylang_internals/__init__.py +1 -1
  2. guppylang_internals/ast_util.py +37 -18
  3. guppylang_internals/cfg/analysis.py +6 -6
  4. guppylang_internals/cfg/builder.py +44 -12
  5. guppylang_internals/cfg/cfg.py +1 -1
  6. guppylang_internals/checker/core.py +1 -1
  7. guppylang_internals/checker/errors/comptime_errors.py +0 -12
  8. guppylang_internals/checker/errors/linearity.py +6 -2
  9. guppylang_internals/checker/expr_checker.py +53 -28
  10. guppylang_internals/checker/func_checker.py +4 -3
  11. guppylang_internals/checker/stmt_checker.py +1 -1
  12. guppylang_internals/compiler/cfg_compiler.py +1 -1
  13. guppylang_internals/compiler/core.py +17 -4
  14. guppylang_internals/compiler/expr_compiler.py +36 -14
  15. guppylang_internals/compiler/modifier_compiler.py +5 -2
  16. guppylang_internals/decorator.py +5 -3
  17. guppylang_internals/definition/common.py +1 -0
  18. guppylang_internals/definition/custom.py +2 -2
  19. guppylang_internals/definition/declaration.py +3 -3
  20. guppylang_internals/definition/function.py +28 -8
  21. guppylang_internals/definition/metadata.py +87 -0
  22. guppylang_internals/definition/overloaded.py +11 -2
  23. guppylang_internals/definition/pytket_circuits.py +50 -67
  24. guppylang_internals/definition/value.py +1 -1
  25. guppylang_internals/definition/wasm.py +3 -3
  26. guppylang_internals/diagnostic.py +89 -16
  27. guppylang_internals/engine.py +84 -40
  28. guppylang_internals/error.py +1 -1
  29. guppylang_internals/nodes.py +301 -3
  30. guppylang_internals/span.py +7 -3
  31. guppylang_internals/std/_internal/checker.py +104 -2
  32. guppylang_internals/std/_internal/compiler/array.py +36 -1
  33. guppylang_internals/std/_internal/compiler/either.py +14 -2
  34. guppylang_internals/std/_internal/compiler/tket_bool.py +1 -6
  35. guppylang_internals/std/_internal/compiler/tket_exts.py +1 -1
  36. guppylang_internals/std/_internal/debug.py +5 -3
  37. guppylang_internals/tracing/builtins_mock.py +2 -2
  38. guppylang_internals/tracing/object.py +6 -2
  39. guppylang_internals/tys/parsing.py +4 -1
  40. guppylang_internals/tys/qubit.py +6 -4
  41. guppylang_internals/tys/subst.py +2 -2
  42. guppylang_internals/tys/ty.py +2 -2
  43. guppylang_internals/wasm_util.py +2 -3
  44. {guppylang_internals-0.26.0.dist-info → guppylang_internals-0.28.0.dist-info}/METADATA +5 -4
  45. {guppylang_internals-0.26.0.dist-info → guppylang_internals-0.28.0.dist-info}/RECORD +47 -46
  46. {guppylang_internals-0.26.0.dist-info → guppylang_internals-0.28.0.dist-info}/WHEEL +0 -0
  47. {guppylang_internals-0.26.0.dist-info → guppylang_internals-0.28.0.dist-info}/licenses/LICENCE +0 -0
@@ -16,6 +16,7 @@ from guppylang_internals.std._internal.compiler.arithmetic import convert_itousi
16
16
  from guppylang_internals.std._internal.compiler.prelude import (
17
17
  build_unwrap_right,
18
18
  )
19
+ from guppylang_internals.std._internal.compiler.tket_bool import make_opaque
19
20
  from guppylang_internals.tys.arg import ConstArg, TypeArg
20
21
 
21
22
  if TYPE_CHECKING:
@@ -206,6 +207,14 @@ def barray_new_all_borrowed(elem_ty: ht.Type, length: ht.TypeArg) -> ops.ExtOp:
206
207
  return _instantiate_array_op("new_all_borrowed", elem_ty, length, [], [arr_ty])
207
208
 
208
209
 
210
+ def barray_is_borrowed(elem_ty: ht.Type, length: ht.TypeArg) -> ops.ExtOp:
211
+ """Returns an array `is_borrowed` operation."""
212
+ arr_ty = array_type(elem_ty, length)
213
+ return _instantiate_array_op(
214
+ "is_borrowed", elem_ty, length, [arr_ty, ht.USize()], [arr_ty, ht.Bool]
215
+ )
216
+
217
+
209
218
  def array_clone(elem_ty: ht.Type, length: ht.TypeArg) -> ops.ExtOp:
210
219
  """Returns an array `clone` operation for arrays none of whose elements are
211
220
  borrowed."""
@@ -320,7 +329,15 @@ class ArrayGetitemCompiler(ArrayCompiler):
320
329
 
321
330
 
322
331
  class ArraySetitemCompiler(ArrayCompiler):
323
- """Compiler for the `array.__setitem__` function."""
332
+ """Compiler for the `array.__setitem__` function.
333
+
334
+ Arguments:
335
+ elem_first: If `True`, then compiler will assume that the element wire comes
336
+ before the index wire. Defaults to `False`.
337
+ """
338
+
339
+ def __init__(self, elem_first: bool = False):
340
+ self.elem_first = elem_first
324
341
 
325
342
  def _build_classical_setitem(
326
343
  self, array: Wire, idx: Wire, elem: Wire
@@ -359,6 +376,8 @@ class ArraySetitemCompiler(ArrayCompiler):
359
376
 
360
377
  def compile_with_inouts(self, args: list[Wire]) -> CallReturnWires:
361
378
  [array, idx, elem] = args
379
+ if self.elem_first:
380
+ elem, idx = idx, elem
362
381
  if self.elem_ty.type_bound() == ht.TypeBound.Linear:
363
382
  return self._build_linear_setitem(array, idx, elem)
364
383
  else:
@@ -379,3 +398,19 @@ class ArrayDiscardAllUsedCompiler(ArrayCompiler):
379
398
  arr,
380
399
  )
381
400
  return []
401
+
402
+
403
+ class ArrayIsBorrowedCompiler(ArrayCompiler):
404
+ """Compiler for the `array.is_borrowed` method."""
405
+
406
+ def compile_with_inouts(self, args: list[Wire]) -> CallReturnWires:
407
+ [array, idx] = args
408
+ idx = self.builder.add_op(convert_itousize(), idx)
409
+ array, b = self.builder.add_op(
410
+ barray_is_borrowed(self.elem_ty, self.length), array, idx
411
+ )
412
+ b = self.builder.add_op(make_opaque(), b)
413
+ return CallReturnWires(regular_returns=[b], inout_returns=[array])
414
+
415
+ def compile(self, args: list[Wire]) -> list[Wire]:
416
+ raise InternalGuppyError("Call compile_with_inouts instead")
@@ -4,6 +4,8 @@ from collections.abc import Sequence
4
4
  from hugr import Wire, ops
5
5
  from hugr import tys as ht
6
6
 
7
+ from guppylang_internals.ast_util import get_type
8
+ from guppylang_internals.compiler.expr_compiler import pack_returns, unpack_wire
7
9
  from guppylang_internals.definition.custom import (
8
10
  CustomCallCompiler,
9
11
  CustomInoutCallCompiler,
@@ -69,7 +71,14 @@ class EitherConstructor(EitherCompiler, CustomCallCompiler):
69
71
  # In the `right` case, the type args are swapped around since `R` occurs
70
72
  # first in the signature :(
71
73
  ty.variant_rows = [ty.variant_rows[1], ty.variant_rows[0]]
72
- return [self.builder.add_op(ops.Tag(self.tag, ty), *args)]
74
+ # For the same reason, the type of the input corresponds to the first type
75
+ # variable
76
+ inp_arg = self.type_args[0]
77
+ assert isinstance(inp_arg, TypeArg)
78
+ [inp] = args
79
+ # Unpack the single input into a row
80
+ inp_row = unpack_wire(inp, inp_arg.ty, self.builder, self.ctx)
81
+ return [self.builder.add_op(ops.Tag(self.tag, ty), *inp_row)]
73
82
 
74
83
 
75
84
  class EitherTestCompiler(EitherCompiler):
@@ -128,4 +137,7 @@ class EitherUnwrapCompiler(EitherCompiler, CustomCallCompiler):
128
137
  out = build_unwrap_right(
129
138
  self.builder, either, "Either.unwrap_right: value is `left`"
130
139
  )
131
- return list(out)
140
+ # Pack outputs into a single wire. We're not allowed to return a row since the
141
+ # signature has a generic return type (also see `TupleType.preserve`)
142
+ return_ty = get_type(self.node)
143
+ return [pack_returns(list(out), return_ty, self.builder, self.ctx)]
@@ -40,12 +40,7 @@ class OpaqueBoolVal(hv.ExtensionValue):
40
40
  def to_value(self) -> hv.Extension:
41
41
  name = "ConstBool"
42
42
  payload = self.v
43
- return hv.Extension(
44
- name,
45
- typ=OpaqueBool,
46
- val=payload,
47
- extensions=[BOOL_EXTENSION.name],
48
- )
43
+ return hv.Extension(name, typ=OpaqueBool, val=payload)
49
44
 
50
45
  def __str__(self) -> str:
51
46
  return f"{self.v}"
@@ -59,7 +59,7 @@ class ConstWasmModule(val.ExtensionValue):
59
59
 
60
60
  name = "ConstWasmModule"
61
61
  payload = {"module_filename": self.wasm_file}
62
- return val.Extension(name, typ=ty, val=payload, extensions=["tket.wasm"])
62
+ return val.Extension(name, typ=ty, val=payload)
63
63
 
64
64
  def __str__(self) -> str:
65
65
  return f"tket.wasm.module(module_filename={self.wasm_file})"
@@ -1,6 +1,6 @@
1
1
  import ast
2
2
  from dataclasses import dataclass
3
- from typing import ClassVar, cast
3
+ from typing import TYPE_CHECKING, ClassVar, cast
4
4
 
5
5
  from guppylang_internals.ast_util import with_loc
6
6
  from guppylang_internals.checker.core import ComptimeVariable
@@ -12,7 +12,6 @@ from guppylang_internals.checker.expr_checker import (
12
12
  synthesize_call,
13
13
  )
14
14
  from guppylang_internals.definition.custom import CustomCallChecker
15
- from guppylang_internals.definition.ty import TypeDef
16
15
  from guppylang_internals.diagnostic import Error
17
16
  from guppylang_internals.error import GuppyTypeError
18
17
  from guppylang_internals.nodes import GenericParamValue, PlaceNode, StateResultExpr
@@ -31,6 +30,9 @@ from guppylang_internals.tys.ty import (
31
30
  Type,
32
31
  )
33
32
 
33
+ if TYPE_CHECKING:
34
+ from guppylang_internals.definition.ty import TypeDef
35
+
34
36
 
35
37
  class StateResultChecker(CustomCallChecker):
36
38
  """Call checker for the `state_result` function."""
@@ -63,7 +65,7 @@ class StateResultChecker(CustomCallChecker):
63
65
  from guppylang.std.quantum import qubit
64
66
 
65
67
  assert isinstance(qubit, GuppyDefinition)
66
- qubit_ty = cast(TypeDef, qubit.wrapped).check_instantiate([])
68
+ qubit_ty = cast("TypeDef", qubit.wrapped).check_instantiate([])
67
69
 
68
70
  array_len = None
69
71
  arg, ty = ExprSynthesizer(self.ctx).synthesize(args[1])
@@ -39,14 +39,14 @@ def _mock_meta(cls: type) -> type:
39
39
  return MockMeta
40
40
 
41
41
 
42
- class float(builtins.float, metaclass=_mock_meta(builtins.float)): # type: ignore[misc]
42
+ class float(builtins.float, metaclass=_mock_meta(builtins.float)): # type: ignore[metaclass]
43
43
  def __new__(cls, x: Any = 0.0, /) -> Any:
44
44
  if isinstance(x, GuppyObject):
45
45
  return x.__float__()
46
46
  return builtins.float(x)
47
47
 
48
48
 
49
- class int(builtins.int, metaclass=_mock_meta(builtins.int)): # type: ignore[misc]
49
+ class int(builtins.int, metaclass=_mock_meta(builtins.int)): # type: ignore[metaclass]
50
50
  def __new__(cls, x: Any = 0, /, *args: Any, **kwargs: Any) -> Any:
51
51
  if isinstance(x, GuppyObject):
52
52
  return x.__int__(*args, **kwargs)
@@ -342,8 +342,12 @@ class GuppyObject(DunderMixin):
342
342
  if not ty.droppable and not self._used:
343
343
  state.unused_undroppable_objs[self._id] = self
344
344
 
345
+ def __deepcopy__(self, memo: dict[int, Any]) -> "GuppyObject":
346
+ # Dummy deepcopy implementation, we do not want to actually deepcopy
347
+ return self
348
+
345
349
  @hide_trace
346
- def __getattr__(self, key: str) -> Any: # type: ignore[misc]
350
+ def __getattr__(self, key: str) -> Any:
347
351
  # Guppy objects don't have fields (structs are treated separately below), so the
348
352
  # only attributes we have to worry about are methods.
349
353
  func = get_tracing_state().globals.get_instance_func(self._ty, key)
@@ -450,7 +454,7 @@ class GuppyStructObject(DunderMixin):
450
454
  object.__setattr__(self, "_frozen", frozen)
451
455
 
452
456
  @hide_trace
453
- def __getattr__(self, key: str) -> Any: # type: ignore[misc]
457
+ def __getattr__(self, key: str) -> Any:
454
458
  # It could be an attribute
455
459
  if key in self._field_values:
456
460
  return self._field_values[key]
@@ -143,6 +143,7 @@ def arg_from_ast(node: AstNode, ctx: TypeParsingCtx) -> Argument:
143
143
  def _try_parse_defn(node: AstNode, globals: Globals) -> Definition | None:
144
144
  """Tries to parse a (possibly qualified) name into a global definition."""
145
145
  from guppylang.defs import GuppyDefinition
146
+
146
147
  from guppylang_internals.checker.cfg_checker import VarNotDefinedError
147
148
 
148
149
  match node:
@@ -378,7 +379,9 @@ def type_from_ast(node: AstNode, ctx: TypeParsingCtx) -> Type:
378
379
  """Turns an AST expression into a Guppy type."""
379
380
  ty, flags = type_with_flags_from_ast(node, ctx)
380
381
  if flags != InputFlags.NoFlags:
381
- assert InputFlags.Inout not in flags # Users shouldn't be able to set this
382
+ # Users shouldn't be able to set this
383
+ # Ignore needed for Python 3.10 mypy compatibility with Flag enums
384
+ assert InputFlags.Inout not in flags # type: ignore[operator, unused-ignore]
382
385
  raise GuppyError(FlagNotAllowedError(node))
383
386
  return ty
384
387
 
@@ -1,11 +1,13 @@
1
1
  import functools
2
- from typing import Any, cast
2
+ from typing import TYPE_CHECKING, Any, cast
3
3
 
4
- from guppylang_internals.definition.ty import TypeDef
5
4
  from guppylang_internals.tys.arg import TypeArg
6
5
  from guppylang_internals.tys.common import Visitor
7
6
  from guppylang_internals.tys.ty import OpaqueType, Type
8
7
 
8
+ if TYPE_CHECKING:
9
+ from guppylang_internals.definition.ty import TypeDef
10
+
9
11
 
10
12
  @functools.cache
11
13
  def qubit_ty() -> Type:
@@ -17,7 +19,7 @@ def qubit_ty() -> Type:
17
19
  from guppylang.std.quantum import qubit
18
20
 
19
21
  assert isinstance(qubit, GuppyDefinition)
20
- qubit_ty = cast(TypeDef, qubit.wrapped).check_instantiate([])
22
+ qubit_ty = cast("TypeDef", qubit.wrapped).check_instantiate([])
21
23
  return qubit_ty
22
24
 
23
25
 
@@ -36,7 +38,7 @@ class QubitFinder(Visitor):
36
38
  pass
37
39
 
38
40
  @functools.singledispatchmethod
39
- def visit(self, ty: Any) -> bool: # type: ignore[override]
41
+ def visit(self, ty: Any) -> bool:
40
42
  return False
41
43
 
42
44
  @visit.register
@@ -32,7 +32,7 @@ class Substituter(Transformer):
32
32
  self.subst = subst
33
33
 
34
34
  @functools.singledispatchmethod
35
- def transform(self, ty: Any) -> Any | None: # type: ignore[override]
35
+ def transform(self, ty: Any) -> Any | None:
36
36
  return None
37
37
 
38
38
  @transform.register
@@ -56,7 +56,7 @@ class Instantiator(Transformer):
56
56
  self.inst = inst
57
57
 
58
58
  @functools.singledispatchmethod
59
- def transform(self, ty: Any) -> Any | None: # type: ignore[override]
59
+ def transform(self, ty: Any) -> Any | None:
60
60
  return None
61
61
 
62
62
  @transform.register
@@ -97,7 +97,7 @@ class TypeBase(ToHugr[ht.Type], Transformable["Type"], ABC):
97
97
 
98
98
  # We use a custom printer that takes care of inserting parentheses and choosing
99
99
  # unique names
100
- return TypePrinter().visit(cast(Type, self))
100
+ return TypePrinter().visit(cast("Type", self))
101
101
 
102
102
 
103
103
  @dataclass(frozen=True)
@@ -567,7 +567,7 @@ class FunctionType(ParametrizedTypeBase):
567
567
  remaining_params,
568
568
  # Comptime type arguments also need to be instantiated
569
569
  comptime_args=[
570
- cast(ConstArg, arg.transform(inst)) for arg in self.comptime_args
570
+ cast("ConstArg", arg.transform(inst)) for arg in self.comptime_args
571
571
  ],
572
572
  )
573
573
 
@@ -26,8 +26,7 @@ class ConcreteWasmModule:
26
26
  @dataclass(frozen=True)
27
27
  class WasmSignatureError(Error):
28
28
  title: ClassVar[str] = (
29
- "Invalid signature for @wasm function `{fn_name}`\n"
30
- "in wasm file: `{filename}`"
29
+ "Invalid signature for @wasm function `{fn_name}`\nin wasm file:\n`{filename}`"
31
30
  )
32
31
  fn_name: str
33
32
  filename: str
@@ -53,7 +52,7 @@ class WasmFunctionNotInFile(Error):
53
52
 
54
53
  @dataclass(frozen=True)
55
54
  class WasmFileNote(Note):
56
- message: ClassVar[str] = "Wasm file: {filename}"
55
+ message: ClassVar[str] = "Wasm file:\n`{filename}`"
57
56
  filename: str
58
57
 
59
58
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: guppylang-internals
3
- Version: 0.26.0
3
+ Version: 0.28.0
4
4
  Summary: Compiler internals for `guppylang` package.
5
5
  Author-email: Mark Koch <mark.koch@quantinuum.com>, TKET development team <tket-support@quantinuum.com>
6
6
  Maintainer-email: Mark Koch <mark.koch@quantinuum.com>, TKET development team <tket-support@quantinuum.com>
@@ -219,12 +219,13 @@ Classifier: Programming Language :: Python :: 3.13
219
219
  Classifier: Programming Language :: Python :: 3.14
220
220
  Classifier: Topic :: Software Development :: Compilers
221
221
  Requires-Python: <4,>=3.10
222
- Requires-Dist: hugr~=0.14.1
222
+ Requires-Dist: hugr~=0.15.1
223
+ Requires-Dist: pytket>=1.34
223
224
  Requires-Dist: tket-exts~=0.12.0
225
+ Requires-Dist: tket>=0.12.7
224
226
  Requires-Dist: typing-extensions<5,>=4.9.0
225
- Requires-Dist: wasmtime~=v38.0.0
227
+ Requires-Dist: wasmtime<41.1,>=38.0
226
228
  Provides-Extra: pytket
227
- Requires-Dist: pytket>=1.34; extra == 'pytket'
228
229
  Description-Content-Type: text/markdown
229
230
 
230
231
  # guppylang-internals
@@ -1,70 +1,71 @@
1
- guppylang_internals/__init__.py,sha256=eRNAncl2ENPaWe98y6nNX-U9UtENwgo-yfbWQkZy8Cs,130
2
- guppylang_internals/ast_util.py,sha256=WHa7axpGrdsjzQk3iw3reDzYlcmsx0HsNH4Qbqwjjig,12531
3
- guppylang_internals/decorator.py,sha256=i0PV3XzWBFjBUBSGfq7d4KmQuEwvM3bAsatcTXVZq98,14112
4
- guppylang_internals/diagnostic.py,sha256=VCpIhyVD8KPtk0GDYMa8XH0lKVsRbsWNu_ucE2jQT2I,18395
1
+ guppylang_internals/__init__.py,sha256=KM7L1NJ-D2NCLrdyfv3tq7XPLy4kTzjJx6tjX8hL8AM,130
2
+ guppylang_internals/ast_util.py,sha256=UX_KTTnI743zRWaSfp6WV_4QHIrAV7OnsiX38f0tmns,13092
3
+ guppylang_internals/decorator.py,sha256=v3nkIA3yhC5PojpqJ-AOiuXnG7wTqOQZlBlb2RyOYL8,14191
4
+ guppylang_internals/diagnostic.py,sha256=lyJvN3duViAIfQVY4tgt2c-4aQfR08RIAe-JWkhgjuI,21635
5
5
  guppylang_internals/dummy_decorator.py,sha256=LXTXrdcrr55YzerX3qrHS23q6S9pVdpUAvhprWzKH6E,2330
6
- guppylang_internals/engine.py,sha256=Npp02xXTb6bFYmHw52LVsVCAUi6dT3qaItEmpCB_2uA,10889
7
- guppylang_internals/error.py,sha256=fjHsbglnH9GtcsLF4sSry7FTjrLoiyQ-L1JS3uGirx0,3393
6
+ guppylang_internals/engine.py,sha256=JPSTs75erAZquNxo5POT0v3D_d0Qci00exSVf4mft4I,12733
7
+ guppylang_internals/error.py,sha256=CiOQALJbJ8PXA0N-O4lQ11wgQ6yCjqk-_4Mg6be8ts4,3395
8
8
  guppylang_internals/experimental.py,sha256=yERQgpT7P-x0-nr4gU4PdUCntByQwF2I9rfjpWtgqn4,3115
9
9
  guppylang_internals/ipython_inspect.py,sha256=rY2DpSpSBrRk0IZmuoz7jh35kGZHQnHLAQQFdb_-WnI,931
10
- guppylang_internals/nodes.py,sha256=wnnAI3sHZ-OwolcZMKYA_dkmz4IE5Y4CFqXDJ0LXAJM,12824
10
+ guppylang_internals/nodes.py,sha256=_HnEP2p1YDiM6J-k_UVO3oG9-vUnShpDkTqJ3ItHRyk,21423
11
11
  guppylang_internals/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
- guppylang_internals/span.py,sha256=8rWzAAipWunhhyCp44qdUAPmOfAXkEMvicK0PYc3tTg,4986
13
- guppylang_internals/wasm_util.py,sha256=TyTS9pbFlqpcjCnRwCdCQliGhUWVHkUcZswAytI8oNc,3590
12
+ guppylang_internals/span.py,sha256=55c1G7QacrYI52VJlq0tw9nz4UoMZfqZ3ViqyrKzBY4,5137
13
+ guppylang_internals/wasm_util.py,sha256=ajhY1lymbb3ZXxW63BoUK1BPQpSrjT4I2xaCUcaUP5w,3583
14
14
  guppylang_internals/cfg/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
- guppylang_internals/cfg/analysis.py,sha256=fD3cY0bZ85iNWcmLAXFaXwcdCfB7gzssKjYfsm1J-wQ,8365
15
+ guppylang_internals/cfg/analysis.py,sha256=41FT4ts38GPYawNNBD1WQLSPp7t6oRuu9-Kv6HDyMDY,8367
16
16
  guppylang_internals/cfg/bb.py,sha256=TxV5yHRqiH86lvLR0g4EZ4fs7S6Axoof1l0TIAZArJM,8591
17
- guppylang_internals/cfg/builder.py,sha256=QqzleSd5-3h77Uy-ng_lNJz73C6-eGwgG_6my8Dh2pQ,28252
18
- guppylang_internals/cfg/cfg.py,sha256=qQuWGK1rgPIkMyJFsX3LrqnXp3ptDDOuXwTbgf_NUSE,4489
17
+ guppylang_internals/cfg/builder.py,sha256=6HVuVjtgPaFjzuMHtbBz6OX7fS5JhJVI9GYXZv6JkmQ,29650
18
+ guppylang_internals/cfg/cfg.py,sha256=EmKvILolYoTMSO2wrYRfPWaM-qfMCvdumvcWVJRxUm4,4491
19
19
  guppylang_internals/checker/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
20
  guppylang_internals/checker/cfg_checker.py,sha256=0hDxw2CTbTbjewtDjaoBehgon17tJaQG9YPO_qR6P0Q,13667
21
- guppylang_internals/checker/core.py,sha256=IPgnaRih5flDevzJsu6o_ycG3vk2X9Mt4A-MZ7gufNU,18163
22
- guppylang_internals/checker/expr_checker.py,sha256=cQVigPN-BE-0nfo_8EUSxCgzSFFfRTxA3dvEMZzzGA8,60121
23
- guppylang_internals/checker/func_checker.py,sha256=WxQtwQdYOfvPVHRem__LoBMax5eUzvmqEJXbxmHzG5M,16118
21
+ guppylang_internals/checker/core.py,sha256=IH3-9kuagCh6BtX7_hcjeNmfT8VUUCSzYoFUUan2n8A,18165
22
+ guppylang_internals/checker/expr_checker.py,sha256=LBCL98bEHUkfRLcLN0zulu_jN-cPX6l4lDJvE0VMTt4,61211
23
+ guppylang_internals/checker/func_checker.py,sha256=BuMdrs6PkrzUoSOD8BrCf0ZxC8ixf12xPMJVwZ2i7Ig,16125
24
24
  guppylang_internals/checker/linearity_checker.py,sha256=cVgoUshu6YPEJ2mgk3RUWx38qt52WNMxjyLVV5eqgD4,37160
25
25
  guppylang_internals/checker/modifier_checker.py,sha256=ruhEkbT4g9YIJXOGRsfpdzUsbXxEbS95PC1LG-EAl3o,4175
26
- guppylang_internals/checker/stmt_checker.py,sha256=paUBaAwx3QRpJAonND8wBpO4FxcNb4iPXMzImB11T9A,20785
26
+ guppylang_internals/checker/stmt_checker.py,sha256=Fp7KoSiKWdIHOM-iplRf5wpTJeu5XQ9LaRzq71fEZzM,20787
27
27
  guppylang_internals/checker/unitary_checker.py,sha256=TVUT4JskaOzNVLcMrQwOd5t5MBLdHC2jFEtFHzlOW8I,4512
28
28
  guppylang_internals/checker/errors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
29
- guppylang_internals/checker/errors/comptime_errors.py,sha256=ee42lnVjXbjqirjp6vYaRvbKKexeNV08px1Kqu9eXn8,3436
29
+ guppylang_internals/checker/errors/comptime_errors.py,sha256=SOISi-3ljagJa5fiWsPNk6rLIgh0-iq9RltdnRLwItk,3082
30
30
  guppylang_internals/checker/errors/generic.py,sha256=r-BiSrmJh9jfXlxE029GMQ8yj30_qOTW2RAQsd3HYzs,2050
31
- guppylang_internals/checker/errors/linearity.py,sha256=VLGvwzfW6uljNjYUEIxNkgt6s3q9-yo1O22BoTiS4Xs,8922
31
+ guppylang_internals/checker/errors/linearity.py,sha256=jKp_IExMySGYjxEw-VbvVNgUewW6jRieseMLB4-twPA,8978
32
32
  guppylang_internals/checker/errors/type_errors.py,sha256=KUmcpN3tGLI_8BogcGKfV_N5BO7yqEBPgyHmf8hk-3M,10619
33
33
  guppylang_internals/checker/errors/wasm.py,sha256=TlwQRtlA0zpu8xwkBHWPYc25OIb6NrMHRxuYUfyD0Rg,956
34
34
  guppylang_internals/compiler/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
35
- guppylang_internals/compiler/cfg_compiler.py,sha256=dKAh2dWMUCXHpb5GjRzgT6Npnv74Vx5WqMaaa_X1koI,9004
36
- guppylang_internals/compiler/core.py,sha256=iWD2K4Ztu1nvK6o5ZIyR_c3UBc4cjBxfgzrZEJuOdfY,31548
37
- guppylang_internals/compiler/expr_compiler.py,sha256=ZlOP4JnvggjXC3uf0km-nRzk04IbblEdEJLeZpIWFDI,37198
35
+ guppylang_internals/compiler/cfg_compiler.py,sha256=K-hf2wi3VSQI1TW6h3cUGY8_gMmQvVo152Gjqeyt3yA,9006
36
+ guppylang_internals/compiler/core.py,sha256=fMmbxo6Z210cFyGSWDuyQyNSbpNUNhe_7m95IbufjI8,31998
37
+ guppylang_internals/compiler/expr_compiler.py,sha256=rM4VuG9s974MQSBlmjPVXIpY_LSoMFZ9qnUZOpj6qf0,37934
38
38
  guppylang_internals/compiler/func_compiler.py,sha256=0bo28RNsFZDYmllle-yFUXKC0UJsLl2TVjr3gvDMJVA,3377
39
39
  guppylang_internals/compiler/hugr_extension.py,sha256=eFUcxzBZoVzXV-AqEOJlh_rJkyuS3vFv1WKGOHjloJs,7966
40
- guppylang_internals/compiler/modifier_compiler.py,sha256=Ni0ANon4kI8Ro3YIh_jt1-7Ucs12KmWmE7QDq_MDMgw,6464
40
+ guppylang_internals/compiler/modifier_compiler.py,sha256=LrPLldlcFSjhKdHmx8034SLwKLRI-SE8LhEXcOLDNnQ,6506
41
41
  guppylang_internals/compiler/qtm_platform_extension.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
42
42
  guppylang_internals/compiler/stmt_compiler.py,sha256=cdOgqzRVP1hYeGbGftgY8LlFRHLWdgFPjlhK-khoMvw,9340
43
43
  guppylang_internals/definition/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
44
- guppylang_internals/definition/common.py,sha256=Me7gpCTzOqDv7eRv6Wo5ynsMYy6MEDpeX9uY2acYRDI,6927
44
+ guppylang_internals/definition/common.py,sha256=AmNoht3dFs7s0UzKZXsnipZe90hz7nLNm3jqObQieLE,6970
45
45
  guppylang_internals/definition/const.py,sha256=71QVX3xqSaC0u4bsYHPbR_0Csz1Es-P7HHGxbTZXfNI,2283
46
- guppylang_internals/definition/custom.py,sha256=sPYY8o1_WuSNHQazV4KCvUcLer8mvepTYb285XMGkEM,19683
47
- guppylang_internals/definition/declaration.py,sha256=vwo7P6D3TJU_6wfTWmx6KnmjOCCGLiGjJQ-Zf_02rYM,6038
46
+ guppylang_internals/definition/custom.py,sha256=xjVsqiav6BZGouyNYjAZiCnAKsx_Rwkxl-GIJT0ZOyE,19710
47
+ guppylang_internals/definition/declaration.py,sha256=uJqM8qD75koWu-jd7lyRe5bVrswtubtzb9wbouGk6is,6040
48
48
  guppylang_internals/definition/extern.py,sha256=hEajRYaapKIfX9J7scnusQHc1e_bCxB4oUVWZ-D4c8o,2878
49
- guppylang_internals/definition/function.py,sha256=LPWvQrlzTnY_18n_myD063p7KdXM51CJIIjmpdBTStY,11395
50
- guppylang_internals/definition/overloaded.py,sha256=UQ64waMp48gEVDCqEzuJFrRoNJ9saUIRUAynF3T-Gz8,5132
49
+ guppylang_internals/definition/function.py,sha256=rkfrWRNUiqJbAe_6W6a1mz1JZpNqaJvmClbmZtdvDqo,11887
50
+ guppylang_internals/definition/metadata.py,sha256=10tEBVNj5ONCsfdv4-hGBp0wzYN2gxYM-EXtMqO9bL4,3041
51
+ guppylang_internals/definition/overloaded.py,sha256=jwrzaL_P1fYW9TTL-gnPAe0gHLN2kDPbG1-muKT0u1Q,5613
51
52
  guppylang_internals/definition/parameter.py,sha256=l60l-yO34gpeuKZ5D3ru8CS8wnQGuoAgqIUP1CrfOF8,2789
52
- guppylang_internals/definition/pytket_circuits.py,sha256=SkOUg3EwBjpeb3_2PzvkH9xzAvI_OIt-wILY37wv2zI,17010
53
+ guppylang_internals/definition/pytket_circuits.py,sha256=YfQDdZrUPluO0zg_12Egb4KpzC3QBcKCIcVZGJEQj94,16198
53
54
  guppylang_internals/definition/struct.py,sha256=Jed5kcoc57toQr4f7zeB7mr6fSDP1Q2KRnmGJvbVXF4,15572
54
55
  guppylang_internals/definition/traced.py,sha256=hMHnrLKdbMvmmzmcJRvOCR-WiPHJ3x5ji0am436HNTQ,5592
55
56
  guppylang_internals/definition/ty.py,sha256=5Jt7twY8v1cE7noZ_RYfo0X55KYV6JI0itdHW9vvZs0,2085
56
- guppylang_internals/definition/value.py,sha256=tgkp-brIAauGXMqe68Fnwvz_bfdThdwJ_rzsGMbw95w,3452
57
- guppylang_internals/definition/wasm.py,sha256=iGxVdKIXYdfODLEvPg7fefE5lLWbQ3bWPIc6dAxnqWw,3389
57
+ guppylang_internals/definition/value.py,sha256=F8XNB9qsKoHAwh0VhESRnL2z4WCWg-aiub8ldQKti8E,3489
58
+ guppylang_internals/definition/wasm.py,sha256=3e1rDFjdf9AkYUrMukfRqn2V4S6yMw86Us_VBxFRdTs,3391
58
59
  guppylang_internals/std/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
59
60
  guppylang_internals/std/_internal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
60
- guppylang_internals/std/_internal/checker.py,sha256=aFtfGxeJd2UypQs1otbK93Wq_rIEOiimSP4JqgB559I,18037
61
+ guppylang_internals/std/_internal/checker.py,sha256=eWg2bOpD3A1cpQIo2XQShioah8pSZS2vaK1fY1VhLEU,21892
61
62
  guppylang_internals/std/_internal/compiler.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
62
- guppylang_internals/std/_internal/debug.py,sha256=j6bGg9TFn4fR8-H8Hk10BfY9EkanfiJn5ArLeBMISZo,3894
63
+ guppylang_internals/std/_internal/debug.py,sha256=xdFC2kjI-GY5SNzsWdwH7a5MsaUWLutQ8P6odlxLNkE,3934
63
64
  guppylang_internals/std/_internal/util.py,sha256=e_sawDuuk1YFpbEQXbpAvWMNeTlkGb4P0t6Ed0JpP9M,8305
64
65
  guppylang_internals/std/_internal/compiler/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
65
66
  guppylang_internals/std/_internal/compiler/arithmetic.py,sha256=_Nf-P3GwTp-ZVLz62Hz9ModD74R41hKqutNGmp5Mn6g,4287
66
- guppylang_internals/std/_internal/compiler/array.py,sha256=YTFzInN7DkU4M_AASHR__D_9bouvaNrYNRKxsO3-Fek,13491
67
- guppylang_internals/std/_internal/compiler/either.py,sha256=LzLSfsafwVAgaeX8d91IRmrxK6kx0YC_MtGSBEgBsbs,4716
67
+ guppylang_internals/std/_internal/compiler/array.py,sha256=l3FqmqRr-95a0lkTW1-MCd2VzFDBYHZR2-Aw38gW0bY,14803
68
+ guppylang_internals/std/_internal/compiler/either.py,sha256=LEVPfkINfYr5qENkszzgYYI5zrjaYPHlPnk0nNBrBaA,5425
68
69
  guppylang_internals/std/_internal/compiler/frozenarray.py,sha256=BZMSSYTieqcFaAXGTR0nw2b7eN5LK2Et4vNZSBFRcyI,2361
69
70
  guppylang_internals/std/_internal/compiler/futures.py,sha256=nIaxXCGj4BPI_to_Q87gQEqN94Q8hb09ICkODZVOJrQ,1095
70
71
  guppylang_internals/std/_internal/compiler/list.py,sha256=Tqvs-J7iL5TxG5qgk-dboXU3-y7uZq-tQ9r9xFhmw4c,12574
@@ -74,14 +75,14 @@ guppylang_internals/std/_internal/compiler/platform.py,sha256=3TMYdRO--Sabapo4K0
74
75
  guppylang_internals/std/_internal/compiler/prelude.py,sha256=2pOmi1JNBHsETkC4EGskbFBAZAlAJ4IvWZLe5v4DIFM,9635
75
76
  guppylang_internals/std/_internal/compiler/qsystem.py,sha256=dKSpvpxF7WRfWuDj0u7zShEhTL6mkAr9pQNyYVoa8vM,1940
76
77
  guppylang_internals/std/_internal/compiler/quantum.py,sha256=gXuB1vpRl8ipgwwEYPCgoMPiqPUJ908Msl09jJFdWxg,3930
77
- guppylang_internals/std/_internal/compiler/tket_bool.py,sha256=ceO9BBF3HhjNAkc4dObJBH13Kpn08-pSaksjl3yoOa4,1207
78
- guppylang_internals/std/_internal/compiler/tket_exts.py,sha256=E7Ywu6xiMepkFoNYZ90rBMPLi3l1MlZSTJE0YmO6TAo,1540
78
+ guppylang_internals/std/_internal/compiler/tket_bool.py,sha256=yvZRArJIVnCysdfvg6TSz61wwt9ikZh5N5EX4DF2UfE,1114
79
+ guppylang_internals/std/_internal/compiler/tket_exts.py,sha256=UP43DbvDoXetM0qIYGEbTx4h0lINf3n5GZ67VphMUp8,1514
79
80
  guppylang_internals/std/_internal/compiler/wasm.py,sha256=1G8EzrnN3Yv12hIdv2XOg4Hq-QlvRYl7-4QbZYLYyM4,5727
80
81
  guppylang_internals/tracing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
81
- guppylang_internals/tracing/builtins_mock.py,sha256=iKgrs626DVhdN7nJroKBLstWGwkr7PzJI4CrgqkMyTA,2963
82
+ guppylang_internals/tracing/builtins_mock.py,sha256=Z_aXgUpTXIyLelfEFKVjpMLWDM-am_GtAD7KMceGFhQ,2973
82
83
  guppylang_internals/tracing/frozenlist.py,sha256=sINk-PZTw4dNThF5GK9AZxAeX5ap-g_hbqxZ79GtLAc,1823
83
84
  guppylang_internals/tracing/function.py,sha256=K2rEey0awOxwfljGk4uezRmXode7rgOKQY1VN94wOIo,7901
84
- guppylang_internals/tracing/object.py,sha256=UMysud9Cc4pHqIDF2qn0zwo97q5d1IqMn1CHxvcitBs,20393
85
+ guppylang_internals/tracing/object.py,sha256=iW8oQsbO_KgNpvcaDrVA6H52tULQpmWk5De8OILSurU,20514
85
86
  guppylang_internals/tracing/state.py,sha256=J-fG0dZh9IeB6hpLfyp5IwqS2TW0Zr8XloMmuIHWS6Q,2083
86
87
  guppylang_internals/tracing/unpacking.py,sha256=6Df9h4pFS6mebyU3VR5DfO87Rs_QbTdSkLMNjpaM0Xc,8728
87
88
  guppylang_internals/tracing/util.py,sha256=zzVUeY7Ax4v_ZQh7QmckYaOWsg7BRZg6-oX4VWmytDU,3054
@@ -92,13 +93,13 @@ guppylang_internals/tys/common.py,sha256=kCJDzSquUdztV5zEINE0Lxigawux9te0lmzd0Oa
92
93
  guppylang_internals/tys/const.py,sha256=kl15uOriJFLUpoodb75f4dl3HYYa6OuKWA2B0vheVPY,4876
93
94
  guppylang_internals/tys/errors.py,sha256=zg3R-R-W5D-5kAm_xEemvfs4GJ7NHLgAL_N2WToquZA,6158
94
95
  guppylang_internals/tys/param.py,sha256=NXNDp8yrxbCkCo6oWCnjGg1ZoJ-F0leR5aUIj2eZQrc,10165
95
- guppylang_internals/tys/parsing.py,sha256=w2uHVcGXU6ekMQZSPX0je9gSavigh3GIyIr8jvq2oSg,15974
96
+ guppylang_internals/tys/parsing.py,sha256=5PCfIXp6MTIbdLq6t7AzR8u6gpW6KE0dOyAMkAJyZjI,16098
96
97
  guppylang_internals/tys/printing.py,sha256=4DewINiHYMI_l_hmhDhfUYiWmfdj2s2NkKZcMC4Qu7U,5723
97
- guppylang_internals/tys/qubit.py,sha256=Y7RRc3_bP9LIoAMqjDsVNVzaplgF7h26L2OJB5XpDVc,1732
98
- guppylang_internals/tys/subst.py,sha256=fMIh7jNMMNiKjlr3WMxAwY_ovX1qTaz_c5foruYkLPs,3049
99
- guppylang_internals/tys/ty.py,sha256=kRkI_QfPbITKuHre29Ejha55Y68j-aiLAWSBdvO1Ma8,31115
98
+ guppylang_internals/tys/qubit.py,sha256=dAceI0tFPNlCrV85gDq0y1p0f2fTPRhsxi-El-IZtzc,1746
99
+ guppylang_internals/tys/subst.py,sha256=klk9eX71soQ2OOAsZ_RxdMRbOOQ77O0QRtPSg2xEsVA,2997
100
+ guppylang_internals/tys/ty.py,sha256=2Ojf8yxYypXCQSrq5cVCt7EMVCfjkFIIJBEZpcqxwzU,31119
100
101
  guppylang_internals/tys/var.py,sha256=zACXv2IvGrqjDryC6lMyZpNnDb3SBRM2SlTOyq6WJdo,1173
101
- guppylang_internals-0.26.0.dist-info/METADATA,sha256=yTv-p1nskM4Z4zIz0laFimpTCmF5bYPq6NxG_t_h8PY,14853
102
- guppylang_internals-0.26.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
103
- guppylang_internals-0.26.0.dist-info/licenses/LICENCE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
104
- guppylang_internals-0.26.0.dist-info/RECORD,,
102
+ guppylang_internals-0.28.0.dist-info/METADATA,sha256=si1cmOM9yJtW5iOZuQrzsi7SOuK7dLf9jYEsNxh5_No,14865
103
+ guppylang_internals-0.28.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
104
+ guppylang_internals-0.28.0.dist-info/licenses/LICENCE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
105
+ guppylang_internals-0.28.0.dist-info/RECORD,,