classiq 0.73.0__py3-none-any.whl → 0.74.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.
@@ -75,25 +75,23 @@ def _get_user_agent_header() -> Headers:
75
75
  python_version = (
76
76
  f"python({_get_python_execution_environment()})/{platform.python_version()}"
77
77
  )
78
-
79
- sdk_env_value = os.getenv("SDK_ENV", "Default")
80
78
  os_platform = f"{os.name}/{platform.platform()}"
81
79
  frontend_version = f"{_FRONTEND_VARIANT}/{_VERSION}"
82
80
  interface_version = f"{_INTERFACE_VARIANT}/{_VERSION}"
83
- sdk_env = f"{_SDK_ENV}/{sdk_env_value}"
81
+
84
82
  return {
85
83
  "User-Agent": _USERAGENT_SEPARATOR.join(
86
- (
87
- python_version,
88
- os_platform,
89
- frontend_version,
90
- interface_version,
91
- sdk_env,
92
- )
84
+ (python_version, os_platform, frontend_version, interface_version)
93
85
  )
94
86
  }
95
87
 
96
88
 
89
+ @functools.lru_cache
90
+ def _get_sdk_env_header() -> Headers:
91
+ sdk_env_value = os.getenv("SDK_ENV", "Default")
92
+ return {_SDK_ENV: sdk_env_value}
93
+
94
+
97
95
  Ret = TypeVar("Ret")
98
96
  P = ParamSpec("P")
99
97
 
@@ -327,6 +325,7 @@ class Client:
327
325
  if self._session_id is not None:
328
326
  headers[self._SESSION_HEADER] = self._session_id
329
327
  headers.update(_get_user_agent_header())
328
+ headers.update(_get_sdk_env_header())
330
329
  return headers
331
330
 
332
331
  async def update_expired_access_token(self) -> None:
@@ -3,5 +3,5 @@ from packaging.version import Version
3
3
  # This file was generated automatically
4
4
  # Please don't track in version control (DONTTRACK)
5
5
 
6
- SEMVER_VERSION = '0.73.0'
6
+ SEMVER_VERSION = '0.74.0'
7
7
  VERSION = str(Version(SEMVER_VERSION))
@@ -1,4 +1,4 @@
1
- from typing import Optional, TypeVar
1
+ from typing import Any, Optional, TypeVar
2
2
  from uuid import UUID
3
3
 
4
4
  import pydantic
@@ -23,7 +23,10 @@ class ASTNode(HashablePydanticBaseModel):
23
23
  def reset_lists(
24
24
  ast_node: ASTNodeType, statement_block_fields: list[str]
25
25
  ) -> ASTNodeType:
26
- return ast_node.model_copy(update={field: [] for field in statement_block_fields})
26
+ update: dict[str, Any] = {field: [] for field in statement_block_fields}
27
+ if hasattr(ast_node, "uuid"):
28
+ update["uuid"] = ast_node.uuid
29
+ return ast_node.model_copy(update=update)
27
30
 
28
31
 
29
32
  class HashableASTNode(ASTNode, HashablePydanticBaseModel):
@@ -0,0 +1,31 @@
1
+ import base64
2
+ from collections.abc import Sequence
3
+ from typing import Union
4
+
5
+ import zstandard as zstd
6
+ from pydantic import BaseModel
7
+ from pydantic_core import from_json, to_json
8
+
9
+
10
+ def compress_pydantic(obj: Union[BaseModel, Sequence[BaseModel]]) -> bytes:
11
+ json_data = to_json(obj)
12
+ compressed_data = _compress(json_data, level=22) # max compression level
13
+ return compressed_data
14
+
15
+
16
+ def decompress(compressed_data: bytes) -> Union[dict, list[dict]]:
17
+ decompressed_data = _decompress(compressed_data)
18
+ return from_json(decompressed_data)
19
+
20
+
21
+ def _compress(data: bytes, level: int) -> bytes:
22
+ compressor = zstd.ZstdCompressor(level=level)
23
+ compressed_data = compressor.compress(data)
24
+ b64_compressed_data = base64.b64encode(compressed_data)
25
+ return b64_compressed_data
26
+
27
+
28
+ def _decompress(data: bytes) -> bytes:
29
+ compressed_data = base64.b64decode(data)
30
+ decompressor = zstd.ZstdDecompressor()
31
+ return decompressor.decompress(compressed_data)
@@ -8,6 +8,7 @@ from pydantic import model_validator
8
8
  from pydantic_core.core_schema import ValidationInfo
9
9
  from typing_extensions import TypeAlias
10
10
 
11
+ from classiq.interface.compression_utils import decompress
11
12
  from classiq.interface.exceptions import (
12
13
  ClassiqMissingOutputFormatError,
13
14
  ClassiqStateInitializationError,
@@ -72,6 +73,7 @@ class QuantumProgram(VersionedModel, CircuitCodeInterface):
72
73
  debug_info: Optional[list[FunctionDebugInfoInterface]] = pydantic.Field(
73
74
  default=None
74
75
  )
76
+ compressed_debug_info: Optional[bytes] = pydantic.Field(default=None)
75
77
  program_id: str = pydantic.Field(default_factory=get_uuid_as_str)
76
78
  execution_primitives_input: Optional[PrimitivesInput] = pydantic.Field(default=None)
77
79
 
@@ -198,3 +200,15 @@ class QuantumProgram(VersionedModel, CircuitCodeInterface):
198
200
  if self.transpiled_circuit and self._can_use_transpiled_code
199
201
  else self
200
202
  )
203
+
204
+ def get_debug_info(self) -> Optional[list[FunctionDebugInfoInterface]]:
205
+ # Support legacy uncompressed debug info
206
+ if self.debug_info is not None:
207
+ return self.debug_info
208
+ if self.compressed_debug_info is None:
209
+ return None
210
+ decompressed_debug_info_dict_list = decompress(self.compressed_debug_info)
211
+ return [
212
+ FunctionDebugInfoInterface.model_validate(debug_info_dict)
213
+ for debug_info_dict in decompressed_debug_info_dict_list
214
+ ]
@@ -1,4 +1,5 @@
1
1
  from collections import Counter
2
+ from functools import cached_property
2
3
  from typing import Any, Optional
3
4
 
4
5
  import pydantic
@@ -58,11 +59,11 @@ class OperationLinks(pydantic.BaseModel):
58
59
  inputs: list[OperationLink]
59
60
  outputs: list[OperationLink]
60
61
 
61
- @property
62
+ @cached_property
62
63
  def input_width(self) -> int:
63
64
  return sum(len(link.qubits) for link in self.inputs)
64
65
 
65
- @property
66
+ @cached_property
66
67
  def output_width(self) -> int:
67
68
  return sum(len(link.qubits) for link in self.outputs)
68
69
 
@@ -122,6 +123,7 @@ class Operation(pydantic.BaseModel):
122
123
  default=AtomicGate.UNKNOWN, description="Gate type"
123
124
  )
124
125
  is_daggered: bool = pydantic.Field(default=False)
126
+ expanded: bool = pydantic.Field(default=False)
125
127
 
126
128
 
127
129
  class ProgramVisualModel(VersionedModel):
@@ -52,6 +52,20 @@ class QuantumLambdaFunction(ASTNode):
52
52
  def set_op_decl(self, fd: AnonQuantumOperandDeclaration) -> None:
53
53
  self._func_decl = fd
54
54
 
55
+ @property
56
+ def named_func_decl(self) -> AnonQuantumOperandDeclaration:
57
+ named_params = [
58
+ param.rename(rename)
59
+ for param, rename in zip(
60
+ self.func_decl.positional_arg_declarations,
61
+ self.pos_rename_params,
62
+ strict=False, # strict=False enables lambda keyword args
63
+ )
64
+ ]
65
+ return self.func_decl.model_copy(
66
+ update={"positional_arg_declarations": named_params}
67
+ )
68
+
55
69
 
56
70
  class OperandIdentifier(ASTNode):
57
71
  name: str
@@ -116,6 +116,16 @@ class _CapturedHandle(_Captured):
116
116
  self.defining_function.depth,
117
117
  )
118
118
 
119
+ @property
120
+ def mangled_handle(self) -> HandleBinding:
121
+ return self.handle.rename(
122
+ mangle_captured_var_name(
123
+ self.handle.name,
124
+ self.defining_function.name,
125
+ self.defining_function.depth,
126
+ )
127
+ )
128
+
119
129
  @property
120
130
  def port(self) -> PortDeclaration:
121
131
  return PortDeclaration(
@@ -485,15 +495,14 @@ class CapturedVars:
485
495
  (
486
496
  captured_handle.handle
487
497
  if _same_closure(current_function, captured_handle.defining_function)
488
- else HandleBinding(name=captured_handle.mangled_name)
498
+ else captured_handle.mangled_handle
489
499
  )
490
500
  for captured_handle in self._captured_handles
491
501
  ]
492
502
  return args
493
503
 
494
- def get_captured_mapping(self) -> SymbolRenaming:
495
- mapping: SymbolRenaming
496
- mapping = {
504
+ def get_immediate_captured_mapping(self) -> SymbolRenaming:
505
+ return {
497
506
  captured_handle.handle: [
498
507
  SymbolPart(
499
508
  source_handle=captured_handle.handle,
@@ -504,7 +513,21 @@ class CapturedVars:
504
513
  for captured_handle in self._captured_handles
505
514
  if not captured_handle.is_propagated
506
515
  }
507
- mapping |= {
516
+
517
+ def get_propagated_captured_mapping(self) -> SymbolRenaming:
518
+ return {
519
+ captured_handle.mangled_handle: [
520
+ SymbolPart(
521
+ source_handle=captured_handle.mangled_handle,
522
+ target_var_name=captured_handle.mangled_name,
523
+ target_var_type=captured_handle.quantum_type,
524
+ )
525
+ ]
526
+ for captured_handle in self._captured_handles
527
+ }
528
+
529
+ def get_classical_captured_mapping(self) -> SymbolRenaming:
530
+ return {
508
531
  (handle := HandleBinding(name=captured_classical_var.name)): [
509
532
  HandleRenaming(
510
533
  source_handle=handle,
@@ -514,7 +537,6 @@ class CapturedVars:
514
537
  for captured_classical_var in self._captured_classical_vars
515
538
  if not captured_classical_var.is_propagated
516
539
  }
517
- return mapping
518
540
 
519
541
  def init_var(self, var_name: str, defining_function: "FunctionClosure") -> None:
520
542
  self._handle_states.append((var_name, defining_function, False))
@@ -85,6 +85,7 @@ def _check_classical_type_match(
85
85
  ) -> None:
86
86
  if (
87
87
  not isinstance(op_param, AnonClassicalParameterDeclaration)
88
- or decl_param.classical_type != op_param.classical_type
88
+ or decl_param.classical_type.set_generative()
89
+ != op_param.classical_type.set_generative()
89
90
  ):
90
91
  raise ClassiqExpansionError(error_message)
@@ -95,15 +95,11 @@ class GenerativeInterpreter(BaseInterpreter):
95
95
  )
96
96
 
97
97
  def evaluate_lambda(self, function: QuantumLambdaFunction) -> Evaluated:
98
- renamed_params = [
99
- param.rename(function.pos_rename_params[idx])
100
- for idx, param in enumerate(function.func_decl.positional_arg_declarations)
101
- ]
102
98
  func_decl = NamedParamsQuantumFunctionDeclaration(
103
99
  name=self._counted_name_allocator.allocate(
104
100
  function.func_decl.name or "<lambda>"
105
101
  ),
106
- positional_arg_declarations=renamed_params,
102
+ positional_arg_declarations=function.named_func_decl.positional_arg_declarations,
107
103
  )
108
104
 
109
105
  closure_class: type[FunctionClosure]
@@ -263,11 +263,11 @@ class CallEmitter(Generic[QuantumStatementT], Emitter[QuantumStatementT], VarSpl
263
263
  chain.from_iterable((func_def.positional_arg_declarations, captured_ports))
264
264
  )
265
265
 
266
- if not function_context.is_lambda:
267
- return func_def
268
- func_def.body = self.rewrite(
269
- func_def.body, captured_vars.get_captured_mapping()
270
- )
266
+ rewrite_mapping = dict(captured_vars.get_propagated_captured_mapping())
267
+ if function_context.is_lambda:
268
+ rewrite_mapping |= captured_vars.get_immediate_captured_mapping()
269
+ rewrite_mapping |= captured_vars.get_classical_captured_mapping()
270
+ func_def.body = self.rewrite(func_def.body, rewrite_mapping)
271
271
 
272
272
  return func_def
273
273
 
@@ -98,6 +98,7 @@ __all__ = [
98
98
  "grover_search",
99
99
  "hadamard_transform",
100
100
  "inplace_c_modular_multiply",
101
+ "inplace_prepare_complex_amplitudes",
101
102
  "inplace_prepare_int",
102
103
  "linear_pauli_rotations",
103
104
  "modular_exp",
@@ -105,6 +106,7 @@ __all__ = [
105
106
  "multiswap",
106
107
  "phase_oracle",
107
108
  "prepare_bell_state",
109
+ "prepare_complex_amplitudes",
108
110
  "prepare_exponential_state",
109
111
  "prepare_ghz_state",
110
112
  "prepare_int",
@@ -1,3 +1,5 @@
1
+ import numpy as np
2
+
1
3
  from classiq.open_library.functions.grover import grover_operator
2
4
  from classiq.qmod.builtins.functions.standard_gates import RY
3
5
  from classiq.qmod.builtins.operations import (
@@ -11,7 +13,7 @@ from classiq.qmod.cparam import CInt, CReal
11
13
  from classiq.qmod.qfunc import qfunc
12
14
  from classiq.qmod.qmod_variable import QArray, QBit
13
15
  from classiq.qmod.quantum_callable import QCallable
14
- from classiq.qmod.symbolic import acos, asin, ceiling, pi, sin
16
+ from classiq.qmod.symbolic import acos, asin, ceiling, sin
15
17
 
16
18
 
17
19
  @qfunc
@@ -67,8 +69,8 @@ def exact_amplitude_amplification(
67
69
  packed_vars: The variable that holds the state to be amplified. Assumed to be in the zero state at the beginning of the algorithm.
68
70
  """
69
71
  aux = QBit()
70
- k = ceiling((pi / (4 * asin(amplitude))) - 0.5)
71
- theta = pi / (4 * k + 2)
72
+ k = ceiling((np.pi / (4 * asin(amplitude))) - 0.5)
73
+ theta = np.pi / (4 * k + 2)
72
74
  rot_phase = 2 * acos(sin(theta) / amplitude)
73
75
 
74
76
  extended_qvars: QArray = QArray()
@@ -1,12 +1,23 @@
1
1
  import warnings
2
2
  from typing import Literal
3
3
 
4
+ import numpy as np
5
+ import sympy
6
+
4
7
  from classiq.interface.exceptions import ClassiqDeprecationWarning
5
8
 
6
9
  from classiq.open_library.functions.utility_functions import hadamard_transform
7
- from classiq.qmod.builtins.functions.standard_gates import CX, IDENTITY, RY, H, X
10
+ from classiq.qmod.builtins.functions import (
11
+ CX,
12
+ IDENTITY,
13
+ RY,
14
+ RZ,
15
+ H,
16
+ X,
17
+ inplace_prepare_amplitudes,
18
+ )
8
19
  from classiq.qmod.builtins.operations import allocate, control, if_, inplace_add, repeat
9
- from classiq.qmod.cparam import CBool, CInt
20
+ from classiq.qmod.cparam import CArray, CBool, CInt, CReal
10
21
  from classiq.qmod.qfunc import qfunc
11
22
  from classiq.qmod.qmod_variable import Output, QArray, QBit, QNum
12
23
  from classiq.qmod.symbolic import (
@@ -298,3 +309,85 @@ def prepare_int(
298
309
  stacklevel=1,
299
310
  )
300
311
  out |= value
312
+
313
+
314
+ def _control_qubit(i: int) -> int:
315
+ if _msb(_graycode(i)) < _msb(_graycode(i + 1)):
316
+ return (_graycode(i) & _graycode(i + 1)).bit_length() - 1
317
+ return (_graycode(i) ^ _graycode(i + 1)).bit_length() - 1
318
+
319
+
320
+ def _graycode(i: int) -> int:
321
+ return i ^ (i >> 1)
322
+
323
+
324
+ def _msb(x: int) -> int:
325
+ """
326
+ largest non zero bit
327
+ """
328
+ if x == 0:
329
+ return 0
330
+ return x.bit_length() - 1
331
+
332
+
333
+ def _classical_hadamard_transform(arr: list[float]) -> np.ndarray:
334
+ return 1 / np.sqrt(len(arr)) * np.array(sympy.fwht(np.array(arr)))
335
+
336
+
337
+ @qfunc(generative=True)
338
+ def _load_phases(
339
+ phases: list[float],
340
+ target: QArray[QBit, Literal["log(get_field(phases, 'len'), 2)"]],
341
+ ) -> None:
342
+ alphas = -2 * _classical_hadamard_transform(phases) / np.sqrt(len(phases))
343
+
344
+ for i in range(1, len(alphas) - 1):
345
+ gray = _graycode(i)
346
+ next_gray = _graycode(i + 1)
347
+ RZ(alphas[gray], target[_msb(gray)])
348
+ CX(target[_control_qubit(i)], target[_msb(next_gray)])
349
+
350
+ RZ(alphas[_graycode(len(phases) - 1)], target[target.len - 1])
351
+
352
+
353
+ @qfunc
354
+ def inplace_prepare_complex_amplitudes(
355
+ magnitudes: CArray[CReal],
356
+ phases: CArray[CReal],
357
+ target: QArray[QBit, Literal["log(get_field(magnitudes, 'len'), 2)"]],
358
+ ) -> None:
359
+ """
360
+
361
+ [Qmod Classiq-library function]
362
+
363
+ Prepares a quantum state with amplitudes and phases for each state according to the given parameters, in polar representation.
364
+ Expects to act on an initialized zero state $|0\\rangle$.
365
+
366
+ Args:
367
+ magnitudes: Absolute values of the state amplitudes.
368
+ phases: phases of the state amplitudes. should be of the same size as `amplitudes`.
369
+ target: The quantum variable to act upon.
370
+ """
371
+ inplace_prepare_amplitudes(magnitudes, 0, target)
372
+ _load_phases(phases, target)
373
+
374
+
375
+ @qfunc
376
+ def prepare_complex_amplitudes(
377
+ magnitudes: CArray[CReal],
378
+ phases: CArray[CReal],
379
+ out: Output[QArray[QBit, Literal["log(get_field(magnitudes, 'len'), 2)"]]],
380
+ ) -> None:
381
+ """
382
+
383
+ [Qmod Classiq-library function]
384
+
385
+ Initializes and prepares a quantum state with amplitudes and phases for each state according to the given parameters, in polar representation.
386
+
387
+ Args:
388
+ magnitudes: Absolute values of the state amplitudes.
389
+ phases: phases of the state amplitudes. should be of the same size as `amplitudes`.
390
+ out: The allocated quantum variable. Must be uninitialized.
391
+ """
392
+ allocate(out)
393
+ inplace_prepare_complex_amplitudes(magnitudes, phases, out)
@@ -24,13 +24,16 @@ class ModelStateContainer:
24
24
  generative_functions: dict[str, "GenerativeQFunc"]
25
25
  function_dependencies: dict[str, list[str]]
26
26
 
27
+ def reset(self) -> None:
28
+ self.enum_decls = {}
29
+ self.type_decls = {}
30
+ self.qstruct_decls = {}
31
+ self.native_defs = {}
32
+ self.constants = {}
33
+ self.functions_compilation_metadata = {}
34
+ self.generative_functions = {}
35
+ self.function_dependencies = defaultdict(list)
36
+
27
37
 
28
38
  QMODULE = ModelStateContainer()
29
- QMODULE.enum_decls = {}
30
- QMODULE.type_decls = {}
31
- QMODULE.qstruct_decls = {}
32
- QMODULE.native_defs = {}
33
- QMODULE.constants = {}
34
- QMODULE.functions_compilation_metadata = {}
35
- QMODULE.generative_functions = {}
36
- QMODULE.function_dependencies = defaultdict(list)
39
+ QMODULE.reset()
@@ -1,7 +1,6 @@
1
1
  import ast
2
2
  import functools
3
3
  from abc import abstractmethod
4
- from collections import defaultdict
5
4
  from dataclasses import is_dataclass
6
5
  from enum import EnumMeta
7
6
  from inspect import isclass
@@ -120,14 +119,7 @@ class QFunc(BaseQFunc):
120
119
  preferences: Optional[Preferences] = None,
121
120
  classical_execution_function: Optional[CFunc] = None,
122
121
  ) -> Model:
123
- self._qmodule.enum_decls = dict()
124
- self._qmodule.type_decls = dict()
125
- self._qmodule.qstruct_decls = dict()
126
- self._qmodule.native_defs = dict()
127
- self._qmodule.constants = dict()
128
- self._qmodule.functions_compilation_metadata = dict()
129
- self._qmodule.generative_functions = dict()
130
- self._qmodule.function_dependencies = defaultdict(list)
122
+ self._qmodule.reset()
131
123
  QConstant.set_current_model(self._qmodule)
132
124
  self.expand()
133
125
  model_extra_settings: list[tuple[str, Any]] = [
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: classiq
3
- Version: 0.73.0
3
+ Version: 0.74.0
4
4
  Summary: Classiq's Python SDK for quantum computing
5
5
  License: Proprietary
6
6
  Keywords: quantum computing,quantum circuits,quantum algorithms,QAD,QDL
@@ -53,6 +53,7 @@ Requires-Dist: tabulate (>=0.8.9,<1)
53
53
  Requires-Dist: torch ; extra == "qml"
54
54
  Requires-Dist: torchvision ; extra == "qml"
55
55
  Requires-Dist: tqdm (>=4.67.1,<5.0.0)
56
+ Requires-Dist: zstandard (>=0.23.0,<0.24.0)
56
57
  Description-Content-Type: text/markdown
57
58
 
58
59
  <p align="center">
@@ -11,7 +11,7 @@ classiq/_internals/authentication/authentication.py,sha256=58Xv1QtynXwEfBqIV5E3L
11
11
  classiq/_internals/authentication/device.py,sha256=dUii1-Z26j0NY4R6J4p0gjYSq5Goj-gwMxXPSnVANuE,4024
12
12
  classiq/_internals/authentication/password_manager.py,sha256=nhJyr8IGrsq3oaGtD0UXZ_rCN4GPI-4LrTYHc1R--sQ,4464
13
13
  classiq/_internals/authentication/token_manager.py,sha256=XStkqCPUQEqc3uj6tt_XzfUIcUlyT-94tBZ8tpQIy_s,5280
14
- classiq/_internals/client.py,sha256=m6ZHmpEJdGhKQRqDdxjjW4qzwvdf86_7lSHrjpiG9O8,12638
14
+ classiq/_internals/client.py,sha256=gHnkpKedytRAXaRasU2CkICttbQd2IsT1tAPPGd8oTU,12634
15
15
  classiq/_internals/config.py,sha256=-UKKvPp_61sxXY-URqU1feLqlfh9ww4wCDH4yl14EiA,3534
16
16
  classiq/_internals/help.py,sha256=9gl64Y8nKW-f-8pYt7lMozOP6uERcIIf8dotgn_WKA0,460
17
17
  classiq/_internals/host_checker.py,sha256=D0rgnoZrHo62rYS32yCuYZSyMrMChZG5ITsJxwj0R5g,3969
@@ -89,14 +89,14 @@ classiq/execution/jobs.py,sha256=h_aki-Q7RDbG7fyMYdc-kTRNgtq1gX9W5LDub_7J2UM,108
89
89
  classiq/execution/qnn.py,sha256=WGPvncz5uS2WxSY3-yBWt2LFiCk6Ug8WKWF-Kp-f7TM,2403
90
90
  classiq/executor.py,sha256=9mae_QMGZYT8CJ5QlS4XH7063OYrrDUnt8gAFV-OhRc,2773
91
91
  classiq/interface/__init__.py,sha256=cg7hD_XVu1_jJ1fgwmT0rMIoZHopNVeB8xtlmMx-E_A,83
92
- classiq/interface/_version.py,sha256=Lc9aqZPOiBQdlmuqFuanaz8FdcjwfMpBSvc-WsDGjkM,197
92
+ classiq/interface/_version.py,sha256=BI-nVueUF-_bvqJGZ-QZZhNBUCxdF-1lsoJ82-C2X4M,197
93
93
  classiq/interface/analyzer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
94
94
  classiq/interface/analyzer/analysis_params.py,sha256=dM5rwSks798cxk4FWe4_X5ToRYtgZQh34F1u0XrFkK8,3881
95
95
  classiq/interface/analyzer/cytoscape_graph.py,sha256=MpeRBIYS1TfwYwiFpgTO51IE0KoxhY510pmEM3S0rbw,2361
96
96
  classiq/interface/analyzer/result.py,sha256=CJhZ7Q_VUCyKS1ivtyD9l9534efjEUY6C6Wwrb3kXak,5872
97
97
  classiq/interface/applications/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
98
98
  classiq/interface/applications/qsvm.py,sha256=4dHVSZH--sv58SvxmpDHPh9JDr4qQUZbbGCeaEv6b1I,3408
99
- classiq/interface/ast_node.py,sha256=tHMBLw-iTAZq724XTDkqg9hxh_8zKC73oKXmawP8Wd0,827
99
+ classiq/interface/ast_node.py,sha256=-X3lke3c2Wm0fGDupj0g4cGfuRmLv4hA4EjLsJ1dHqE,941
100
100
  classiq/interface/backend/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
101
101
  classiq/interface/backend/backend_preferences.py,sha256=apW0rA9nQSrU8NUa9piFPfoKiMQWQJnUILewn73DVqc,21539
102
102
  classiq/interface/backend/ionq/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -134,6 +134,7 @@ classiq/interface/combinatorial_optimization/optimization_problem.py,sha256=iiC1
134
134
  classiq/interface/combinatorial_optimization/result.py,sha256=kDGShpwzhp8KOibngo3SFnfZGBjT0ClmS86a3Yrlgj8,198
135
135
  classiq/interface/combinatorial_optimization/sense.py,sha256=P8_kJRf3aUKbCkIqOP3tOc81Vpz9yW4Z74RGaYbd9TA,262
136
136
  classiq/interface/combinatorial_optimization/solver_types.py,sha256=kcLt80fQucq_DWmJXmmVljwCGV4gtDnqOMlJdemhPQc,135
137
+ classiq/interface/compression_utils.py,sha256=rX4sD4_8C-liWqBICuE6VaT38yjUK_FneSA5GUmPF2A,973
137
138
  classiq/interface/debug_info/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
138
139
  classiq/interface/debug_info/back_ref_util.py,sha256=plWBiBMfFIY6aYAR3NVYComsY394ysLVdk_yFy1qcC4,791
139
140
  classiq/interface/debug_info/debug_info.py,sha256=XZ3zNzJb1whiHKLpKZpDITXEeV3tbhwEAhHa5cSzABE,4263
@@ -295,7 +296,7 @@ classiq/interface/generator/qft.py,sha256=SDLcPWYxshDfPl-tAfhpRFb30NpPRRFpje5Jrr
295
296
  classiq/interface/generator/qpe.py,sha256=C6CddpuD196TUVpUEvvlA9uaRLmFlTkwrHheaWbGojY,6526
296
297
  classiq/interface/generator/qsvm.py,sha256=Ry2iTC2NIoh0u9BsuwVaO-ICUBbRIF7Of9scJG4sGFs,3056
297
298
  classiq/interface/generator/quantum_function_call.py,sha256=BlqclMwh_Qj6_yXUTIBM23eLdQ_X3x_KTQ4WWwBN4JY,24123
298
- classiq/interface/generator/quantum_program.py,sha256=gozSsrXYGWu3JOG97hKlyK0f-vIAr3ZPxpRfubOX1zc,7476
299
+ classiq/interface/generator/quantum_program.py,sha256=k4NU1up8UCofrPNZMTYurCAJfiVwBJ1oH0-e3ER8vGA,8131
299
300
  classiq/interface/generator/randomized_benchmarking.py,sha256=D6KI_1fMF5oBydaal2WLmTSit6xSMtz0yDAIZMMO89Q,635
300
301
  classiq/interface/generator/range_types.py,sha256=X6CtSyimlpISz9QNbCdqqQkRg1pOGHEQCXy4aEeSwA4,2044
301
302
  classiq/interface/generator/register_role.py,sha256=moerPIO9gQUuG5pe43TemmScSVjTK7_gi-qbrhIgLOA,1147
@@ -352,7 +353,7 @@ classiq/interface/helpers/validation_helpers.py,sha256=Jt0xs5EZeEQZOBEZPRmKctHmA
352
353
  classiq/interface/helpers/versioned_model.py,sha256=kBgEghNdSidohb0-p_EjRFZLs7LAmLZ_uKIHZFSZ8cQ,159
353
354
  classiq/interface/ide/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
354
355
  classiq/interface/ide/ide_data.py,sha256=TtFsBttR7L34DeRx4NaswpdyMqEyAuguEWSvGXfZtZs,2504
355
- classiq/interface/ide/visual_model.py,sha256=0eqoW44c4cROZnehQ_5Euh_BFvzzWBCUSDbFjYaCYJE,3171
356
+ classiq/interface/ide/visual_model.py,sha256=nnauOxOCJrWmc_W0Qtn7RoXlXYY3dPxr_ZPNCtHDaaE,3274
356
357
  classiq/interface/interface_version.py,sha256=w1gZSbPPwcEizEoNhHnkmxXxmkHXCNsHFARLKnhrUbk,24
357
358
  classiq/interface/jobs.py,sha256=i8hrBR2qtptCbxNI-PVYZedH_EDehOe2i09JbJUlD1g,2339
358
359
  classiq/interface/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -378,7 +379,7 @@ classiq/interface/model/quantum_expressions/arithmetic_operation.py,sha256=kqABv
378
379
  classiq/interface/model/quantum_expressions/quantum_expression.py,sha256=hSWdSJmsEYaZZ62dWI8ueIl_-lqn7FBnwadsqozzZOI,2228
379
380
  classiq/interface/model/quantum_function_call.py,sha256=fKDQwYBg8v_WvDsl9QDAA-RBVsW4GOn-zOnpqlhamPg,7384
380
381
  classiq/interface/model/quantum_function_declaration.py,sha256=Er0RfxfpcVO5-ufMkBqSFxKz0BHtu7zCMKnTWOwU_ZM,8675
381
- classiq/interface/model/quantum_lambda_function.py,sha256=cATqykbArV6c9qmSNtqRgDQjjvCfRvYeC3-S5gJW-wg,1930
382
+ classiq/interface/model/quantum_lambda_function.py,sha256=Jvw8N_GYSwqlAg5RchBSJ3LwYO2U5ImmELaHpvRTWOg,2420
382
383
  classiq/interface/model/quantum_statement.py,sha256=XthtcTISbdRIv4NW-fckV4jB-dkvYotAZnphMIiK-Ww,3359
383
384
  classiq/interface/model/quantum_type.py,sha256=KcwykkbjctiQsMc7XaM3EugKYNE2wVmyPYcclH8K3Lc,10311
384
385
  classiq/interface/model/quantum_variable_declaration.py,sha256=Vmx-aHnss8E_ghqX_wi4Njp-dEtYK-WwYHtHAwmGZxk,229
@@ -399,7 +400,7 @@ classiq/interface/source_reference.py,sha256=a-4Vdc511ux-0lDPDTRGAzouRWWtu4A3MPA
399
400
  classiq/model_expansions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
400
401
  classiq/model_expansions/atomic_expression_functions_defs.py,sha256=68iOZfdN_WHPbrdChoMgdElokBqp97mLscMNwmUE82U,9841
401
402
  classiq/model_expansions/capturing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
402
- classiq/model_expansions/capturing/captured_vars.py,sha256=KWgLGqt3aE_8Z7EjWsT1huNzSDYW3sBPt0Un902iiZM,26268
403
+ classiq/model_expansions/capturing/captured_vars.py,sha256=l1niB6GGOayu6PkfY4ImyjkQbRnORp93S60wHRBOpjs,27002
403
404
  classiq/model_expansions/capturing/mangling_utils.py,sha256=wfCsjP0pScZv9YP6JXq3oVhkS-lCFyUoZ9IROBHS3Ek,1858
404
405
  classiq/model_expansions/closure.py,sha256=vCNdYyn_pzoyNGIs4w-ZEm_Vj9925mfu64TDnTdHkys,4975
405
406
  classiq/model_expansions/debug_flag.py,sha256=JWzl9FFq2CLcvTg_sh-K8Dp_xXvewsTuFKhPjTCrsrs,107
@@ -411,14 +412,14 @@ classiq/model_expansions/evaluators/classical_type_inference.py,sha256=Ex2A8uhiU
411
412
  classiq/model_expansions/evaluators/control.py,sha256=rFSP5kuQZfh0OPMuf0OmiDVlX_c0stl2mKX4tnIhAHA,4110
412
413
  classiq/model_expansions/evaluators/parameter_types.py,sha256=OjGQspqVkHJfSft7InuwH6SCvB9Pfc6ktNjDCL8pBDY,9261
413
414
  classiq/model_expansions/evaluators/quantum_type_utils.py,sha256=s2kqPenO3qaJsiVa1bo5t4cpJ-MZeRqlVvM9TXPtyBI,7729
414
- classiq/model_expansions/evaluators/type_type_match.py,sha256=3akZR86TAFKUyM5c5knCPSlraI3LQeWZXxXMTtmu0BI,3220
415
+ classiq/model_expansions/evaluators/type_type_match.py,sha256=iNDLigrBiSuAQE0zReJFuvtlYyWjk86Gv7ytz3h0LHI,3262
415
416
  classiq/model_expansions/expression_evaluator.py,sha256=Yn_bzK-qtO99XPC3GgbRyn3bMGHy1WoqxYovVjUEOgk,4780
416
417
  classiq/model_expansions/function_builder.py,sha256=oVmXhyEu6wr8Ru8LSxIqxwn9gdDoQ26SAPlNnYWCGMI,8697
417
418
  classiq/model_expansions/generative_functions.py,sha256=pBOE9gBXDK8CDRwJdTHFOJo0nvBiCMYqUmWyrvYebJY,6714
418
419
  classiq/model_expansions/interpreters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
419
420
  classiq/model_expansions/interpreters/base_interpreter.py,sha256=tvs7Q0LEfzZEUOhcn0gcYXf8obeGbFgyDO7BeN-OxUs,11411
420
421
  classiq/model_expansions/interpreters/frontend_generative_interpreter.py,sha256=db1BKh-MDWqLTK8WCXpbNYxxQM4mjqWIhwFtDil7Vd0,3768
421
- classiq/model_expansions/interpreters/generative_interpreter.py,sha256=0cY4wHaOhJIdFrXWWajR1VxdBSCIjaOejmnX2WZ3jf0,12112
422
+ classiq/model_expansions/interpreters/generative_interpreter.py,sha256=HYh782nXN9_0xFTF6PwQsU8m79wbmiwP1aHIWqFvZF8,11967
422
423
  classiq/model_expansions/model_tables.py,sha256=dlrOGRS2x4Fd_dzClIcV7V8edmbbQzePv9eqxtJQrpo,620
423
424
  classiq/model_expansions/quantum_operations/__init__.py,sha256=iLROXHuWaYKWPYJHUM_6uRNKa9-I7oDPYn1yqYFpYgM,309
424
425
  classiq/model_expansions/quantum_operations/allocate.py,sha256=Y00O9rVbXHt_yShLv63UJHO4gju0L-ft4I-xIvSNlFE,3037
@@ -427,7 +428,7 @@ classiq/model_expansions/quantum_operations/arithmetic/explicit_boolean_expressi
427
428
  classiq/model_expansions/quantum_operations/assignment_result_processor.py,sha256=OtiqKU6-KxrMBNigSyX4jqohUPzg9qOFa2I-d0DZDK0,2671
428
429
  classiq/model_expansions/quantum_operations/bind.py,sha256=KCX_J94-m3taogRGQN7d9sphJyM0XTYaGW_ssBlwIe4,4557
429
430
  classiq/model_expansions/quantum_operations/block_evaluator.py,sha256=bESmqOLibwosu4KUh7UdAluwX3ICwO2hbLB7l4x2GYo,3083
430
- classiq/model_expansions/quantum_operations/call_emitter.py,sha256=ZCWbQ8mRyzazzv2orCdX0DwuLX9jtQHM4GiEUMWw93A,14842
431
+ classiq/model_expansions/quantum_operations/call_emitter.py,sha256=Bt8nVgJxQWZHMFIirHc0V0eZ_7nfmIAyKlUKlGZga-4,15003
431
432
  classiq/model_expansions/quantum_operations/composite_emitter.py,sha256=B09YGldhWcqdNiyhNzQQU-85mJ_9cRrtNgruDvuyEUE,824
432
433
  classiq/model_expansions/quantum_operations/declarative_call_emitter.py,sha256=BlcjV0AG05qpKyWFD2-GJQKqTDWcFfRl7y1z3yIpllc,3209
433
434
  classiq/model_expansions/quantum_operations/emitter.py,sha256=jArt-eMikrGbR9fOzY9mP1Vc11Zmkn1UkGcHQWy5sIQ,9700
@@ -455,8 +456,8 @@ classiq/model_expansions/visitors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeR
455
456
  classiq/model_expansions/visitors/boolean_expression_transformers.py,sha256=a8ITXY48uROZFd9MF8tXdXs14Uxh8XbBpuvRXvRehjY,8067
456
457
  classiq/model_expansions/visitors/variable_references.py,sha256=HBgzONJujH8hbtRoqBkT8kBGgE2wDErtfAF_BJXcZC8,5299
457
458
  classiq/open_library/__init__.py,sha256=bmg_qqXCXo85hcU7_QCce-qYGrpAVSFNwTKCClsclrg,114
458
- classiq/open_library/functions/__init__.py,sha256=8JIijCqjmfFNvGm5PrCD-5MRI7iF78cgRku-GvIoPow,3282
459
- classiq/open_library/functions/amplitude_amplification.py,sha256=O21jANyhXGQuvmByDdOaFkaReL5BkCUkGMLM0tEFBZ0,4176
459
+ classiq/open_library/functions/__init__.py,sha256=Xf4XbgHLZphUO5Qw6v5kIi3_fW77jidivjmoHDa3qe8,3358
460
+ classiq/open_library/functions/amplitude_amplification.py,sha256=4lmK7-26VhZmWhBmhYCNrA44A8uo2Njycg8lFcVLc_U,4198
460
461
  classiq/open_library/functions/amplitude_estimation.py,sha256=iCkca5SQN_HQoJWk1_tLT56fHT72hu5QIt2pxSZQRko,1766
461
462
  classiq/open_library/functions/discrete_sine_cosine_transform.py,sha256=mutvfffkrEEFrFJp1bUliJBnOEnkv4rUQ7q1Pka9V8E,4439
462
463
  classiq/open_library/functions/grover.py,sha256=yoMnx4jAF0b2hQqwaKMpPgdbqe9ZCsx2u95Yr029q_I,4367
@@ -468,7 +469,7 @@ classiq/open_library/functions/qaoa_penalty.py,sha256=Uz_ZSn7fRwynP5w2eSOEcft2z4
468
469
  classiq/open_library/functions/qft_functions.py,sha256=7pdPBq48QvyQkxHrF3rEKTf0J50qUu_2bN17lfSc7I0,1382
469
470
  classiq/open_library/functions/qpe.py,sha256=e7MBpOthBn73BdqhWpNGT0lkd6Jw3ZG7tE6n--IM0jc,2140
470
471
  classiq/open_library/functions/qsvt.py,sha256=wpLq0P-pmhdTaRQJJWRHwbTZqRnE1M58MfQ2y1C0YUI,14271
471
- classiq/open_library/functions/state_preparation.py,sha256=mx8EgXGoNsaWgsU56FfTNy_JOq2cVBoH0p8Un8cROXk,10603
472
+ classiq/open_library/functions/state_preparation.py,sha256=g5UHPYNpP8mvRFM61jk_6c1KhWmmzqi9k0AR_GKnNLg,13202
472
473
  classiq/open_library/functions/swap_test.py,sha256=hAjiJjZGeJP2qzEkVYmBVlEK44VcNibWZ-KqJwPEcFY,1048
473
474
  classiq/open_library/functions/utility_functions.py,sha256=MFxuk49vdjNIqLPxdloigACfXmuxmqrP_oSJbO49Rbc,2541
474
475
  classiq/open_library/functions/variational.py,sha256=KYoqPKYRjgUXk_10RvogV0YiCG5kl7GZBHBJeeX82II,1715
@@ -499,7 +500,7 @@ classiq/qmod/create_model_function.py,sha256=JhPFmI-_K4Yv-RFcKwWLLhFMpcs35K651It
499
500
  classiq/qmod/declaration_inferrer.py,sha256=mcqUrrMfolphtNeCn7B0uT4TVAYdx481v6jebmmiRcc,7749
500
501
  classiq/qmod/expression_query.py,sha256=24gsE5hJ1o9ZuqPILH7aaoOzKRQY2RZtvIK35xuubGA,1629
501
502
  classiq/qmod/generative.py,sha256=MSy-LUsmxteVm3sQSTSWPiYgAskBfYcRHm5EJCYBVZo,1255
502
- classiq/qmod/model_state_container.py,sha256=yTaowwd468oEntRQAOAhFFgM3cznR9c6ijqrm6U1SBg,1349
503
+ classiq/qmod/model_state_container.py,sha256=eeE5sCo7dbMI6A_opNo0rGEtB7uSIQfv6szBcbamANI,1435
503
504
  classiq/qmod/native/__init__.py,sha256=gm0L3ew0KAy0eSqaMQrvpnKWx85HoA1p9ADaAlyejdA,126
504
505
  classiq/qmod/native/expression_to_qmod.py,sha256=a33dDr7BGWl7YhsFjpfAuI9Ys7amJjMo4DImSrD4NZg,7143
505
506
  classiq/qmod/native/pretty_printer.py,sha256=hcvv2PJLeZbJfh7jsWA_ZhpA3kpo9E_cWkW6iVJ7jwE,17421
@@ -513,7 +514,7 @@ classiq/qmod/qmod_parameter.py,sha256=3WYO11-F8dmbZKqTokmKxzehLdb-aEPYwyiDcAFbbQ
513
514
  classiq/qmod/qmod_variable.py,sha256=_Wbg7FyrpBYSLnySJhHt96hWkH0EOwDaHoQJhq1x2ow,24806
514
515
  classiq/qmod/quantum_callable.py,sha256=RifbkZEmZ4COOHfluPD2jfd-qYSda2ytW173diR3tI4,2501
515
516
  classiq/qmod/quantum_expandable.py,sha256=3GjFdIP7rDv5SMG9scE3_niu04tWELS6u7it2zpRZUg,17640
516
- classiq/qmod/quantum_function.py,sha256=a43xlDi3Lb1qVl4xTVXcJfVgPuwDIzAcN-UwpmxzI_c,12819
517
+ classiq/qmod/quantum_function.py,sha256=vXytpoxeeOao08AkLc_yZ1em4xujqFf4dMeASUJBPi0,12422
517
518
  classiq/qmod/semantics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
518
519
  classiq/qmod/semantics/annotation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
519
520
  classiq/qmod/semantics/annotation/call_annotation.py,sha256=I94YDffDP-PDx3-r8XRFtg7D8B07OyuwnWOGwJVOOOA,3804
@@ -537,6 +538,6 @@ classiq/qmod/type_attribute_remover.py,sha256=NZmTXAsngWqthXjE8n-n6yE72fiWTFM12-
537
538
  classiq/qmod/utilities.py,sha256=XoB9JU6Vn4p8ZirrUUaP-UpOInm3jwuuYjB6R_V3XLo,5467
538
539
  classiq/qmod/write_qmod.py,sha256=Q3TWQU9p_Uy42STmX5GA_4Ts2TTOgYjt7I8LTRxTbb0,2047
539
540
  classiq/synthesis.py,sha256=_1W-_shxXEmlhNFKuYz3npiv6P3pWonVn55B0qKRYSo,9052
540
- classiq-0.73.0.dist-info/METADATA,sha256=3oGZ8EY-94dU4TXW1ZYTssEdTew52vp91GEB1YMLoTo,3338
541
- classiq-0.73.0.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
542
- classiq-0.73.0.dist-info/RECORD,,
541
+ classiq-0.74.0.dist-info/METADATA,sha256=M6xZoSaXkyGLUXsariLsJ16P9l858Zo5ELuwYcYcOnI,3382
542
+ classiq-0.74.0.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
543
+ classiq-0.74.0.dist-info/RECORD,,