classiq 0.50.0__py3-none-any.whl → 0.51.1__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.
- classiq/__init__.py +4 -0
- classiq/interface/_version.py +1 -1
- classiq/interface/backend/backend_preferences.py +26 -0
- classiq/interface/backend/quantum_backend_providers.py +2 -0
- classiq/interface/generator/arith/arithmetic_expression_validator.py +9 -1
- classiq/interface/generator/arith/binary_ops.py +8 -6
- classiq/interface/generator/expressions/qmod_qscalar_proxy.py +3 -3
- classiq/interface/generator/quantum_function_call.py +3 -0
- classiq/interface/hardware.py +1 -0
- classiq/interface/ide/visual_model.py +1 -1
- classiq/interface/model/quantum_function_call.py +0 -4
- classiq/interface/model/quantum_statement.py +4 -0
- classiq/model_expansions/quantum_operations/emitter.py +1 -1
- classiq/model_expansions/quantum_operations/inplace_binary_operation.py +27 -5
- classiq/model_expansions/quantum_operations/quantum_assignment_operation.py +29 -3
- classiq/qmod/create_model_function.py +10 -4
- classiq/synthesis.py +21 -0
- {classiq-0.50.0.dist-info → classiq-0.51.1.dist-info}/METADATA +1 -1
- {classiq-0.50.0.dist-info → classiq-0.51.1.dist-info}/RECORD +20 -20
- {classiq-0.50.0.dist-info → classiq-0.51.1.dist-info}/WHEEL +0 -0
classiq/__init__.py
CHANGED
@@ -49,6 +49,8 @@ from classiq.executor import (
|
|
49
49
|
from classiq.qmod import * # noqa: F403
|
50
50
|
from classiq.qmod import __all__ as _qmod_all
|
51
51
|
from classiq.synthesis import (
|
52
|
+
quantum_program_from_qasm,
|
53
|
+
quantum_program_from_qasm_async,
|
52
54
|
set_constraints,
|
53
55
|
set_execution_preferences,
|
54
56
|
set_preferences,
|
@@ -105,6 +107,8 @@ __all__ = (
|
|
105
107
|
"show",
|
106
108
|
"hamiltonian_to_matrix",
|
107
109
|
"matrix_to_hamiltonian",
|
110
|
+
"quantum_program_from_qasm",
|
111
|
+
"quantum_program_from_qasm_async",
|
108
112
|
]
|
109
113
|
+ _md_all
|
110
114
|
+ _sub_modules
|
classiq/interface/_version.py
CHANGED
@@ -447,6 +447,30 @@ class IntelBackendPreferences(BackendPreferences):
|
|
447
447
|
)
|
448
448
|
|
449
449
|
|
450
|
+
class AQTBackendPreferences(BackendPreferences):
|
451
|
+
"""
|
452
|
+
NOTE: This is a work in progress and is subject to change.
|
453
|
+
|
454
|
+
Represents the backend preferences specific to AQT (Alpine Quantum Technologies).
|
455
|
+
|
456
|
+
Attributes:
|
457
|
+
api_key: The API key required to access AQT's quantum computing services.
|
458
|
+
workspace: The AQT workspace where the simulator/hardware is located.
|
459
|
+
"""
|
460
|
+
|
461
|
+
# TODO[pydantic]: Add a default value
|
462
|
+
backend_service_provider: ProviderTypeVendor.AQT
|
463
|
+
api_key: str = pydantic.Field(description="AQT API key")
|
464
|
+
workspace: str = pydantic.Field(description="AQT workspace")
|
465
|
+
|
466
|
+
# TODO[pydantic]: Remove this validator
|
467
|
+
@pydantic.root_validator(pre=True)
|
468
|
+
def _set_backend_service_provider(cls, values: Dict[str, Any]) -> Dict[str, Any]:
|
469
|
+
return values_with_discriminator(
|
470
|
+
values, "backend_service_provider", ProviderVendor.AQT
|
471
|
+
)
|
472
|
+
|
473
|
+
|
450
474
|
def is_exact_simulator(backend_preferences: BackendPreferences) -> bool:
|
451
475
|
return backend_preferences.backend_name in EXACT_SIMULATORS
|
452
476
|
|
@@ -477,6 +501,7 @@ BackendPreferencesTypes = Union[
|
|
477
501
|
AliceBobBackendPreferences,
|
478
502
|
OQCBackendPreferences,
|
479
503
|
IntelBackendPreferences,
|
504
|
+
AQTBackendPreferences,
|
480
505
|
]
|
481
506
|
|
482
507
|
__all__ = [
|
@@ -499,6 +524,7 @@ __all__ = [
|
|
499
524
|
"OQCBackendPreferences",
|
500
525
|
"OQCBackendNames",
|
501
526
|
"IntelBackendPreferences",
|
527
|
+
"AQTBackendPreferences",
|
502
528
|
]
|
503
529
|
|
504
530
|
|
@@ -19,6 +19,7 @@ class ProviderVendor(StrEnum):
|
|
19
19
|
ALICE_AND_BOB = "Alice & Bob"
|
20
20
|
OQC = "OQC"
|
21
21
|
INTEL = "Intel"
|
22
|
+
AQT = "AQT"
|
22
23
|
|
23
24
|
|
24
25
|
class ProviderTypeVendor:
|
@@ -31,6 +32,7 @@ class ProviderTypeVendor:
|
|
31
32
|
ALICE_BOB = Literal[ProviderVendor.ALICE_AND_BOB]
|
32
33
|
OQC = Literal[ProviderVendor.OQC]
|
33
34
|
INTEL = Literal[ProviderVendor.INTEL]
|
35
|
+
AQT = Literal[ProviderVendor.AQT]
|
34
36
|
|
35
37
|
|
36
38
|
class ClassiqSimulatorBackendNames(StrEnum):
|
@@ -57,6 +57,14 @@ SupportedNodesTypes = Union[
|
|
57
57
|
DEFAULT_SUPPORTED_NODE_TYPES = get_args(SupportedNodesTypes)
|
58
58
|
|
59
59
|
|
60
|
+
def _is_constant(expr: str) -> bool:
|
61
|
+
try:
|
62
|
+
float(expr)
|
63
|
+
return True
|
64
|
+
except ValueError:
|
65
|
+
return False
|
66
|
+
|
67
|
+
|
60
68
|
class ExpressionValidator(ast.NodeVisitor):
|
61
69
|
def __init__(
|
62
70
|
self,
|
@@ -89,7 +97,7 @@ class ExpressionValidator(ast.NodeVisitor):
|
|
89
97
|
@staticmethod
|
90
98
|
def _get_adjusted_expression(expression: str) -> str:
|
91
99
|
# This works around the simplification of the trivial expressions such as a + 0, 1 * a, etc.
|
92
|
-
if IDENITIFIER_REGEX.fullmatch(expression):
|
100
|
+
if IDENITIFIER_REGEX.fullmatch(expression) or _is_constant(expression):
|
93
101
|
return f"0 + {expression}"
|
94
102
|
return expression
|
95
103
|
|
@@ -19,7 +19,10 @@ from pydantic.generics import GenericModel
|
|
19
19
|
from classiq.interface.enum_utils import StrEnum
|
20
20
|
from classiq.interface.exceptions import ClassiqValueError
|
21
21
|
from classiq.interface.generator.arith import argument_utils, number_utils
|
22
|
-
from classiq.interface.generator.arith.argument_utils import
|
22
|
+
from classiq.interface.generator.arith.argument_utils import (
|
23
|
+
RegisterOrConst,
|
24
|
+
as_arithmetic_info,
|
25
|
+
)
|
23
26
|
from classiq.interface.generator.arith.arithmetic_operations import (
|
24
27
|
MODULO_WITH_FRACTION_PLACES_ERROR_MSG,
|
25
28
|
ArithmeticOperationParams,
|
@@ -59,11 +62,9 @@ class BinaryOpParams(
|
|
59
62
|
right_arg_name: ClassVar[str] = DEFAULT_RIGHT_ARG_NAME
|
60
63
|
|
61
64
|
@pydantic.root_validator(pre=True)
|
62
|
-
def
|
65
|
+
def _clone_repeated_arg(cls, values: Dict[str, Any]) -> Dict[str, Any]:
|
63
66
|
left_arg = values.get("left_arg")
|
64
67
|
right_arg = values.get("right_arg")
|
65
|
-
if isinstance(left_arg, Numeric) and isinstance(right_arg, Numeric):
|
66
|
-
raise ClassiqValueError("One argument must be a register")
|
67
68
|
if left_arg is right_arg and isinstance(left_arg, pydantic.BaseModel):
|
68
69
|
# In case both arguments refer to the same object, copy it.
|
69
70
|
# This prevents changes performed on one argument to affect the other.
|
@@ -288,8 +289,9 @@ class Adder(InplacableBinaryOpParams[RegisterOrConst, RegisterOrConst]):
|
|
288
289
|
|
289
290
|
def _get_output_size(self, ub: float, lb: float, fraction_places: int) -> int:
|
290
291
|
if isinstance(self.left_arg, float) and self.left_arg == 0.0:
|
291
|
-
|
292
|
-
|
292
|
+
if isinstance(self.right_arg, RegisterArithmeticInfo):
|
293
|
+
return self.right_arg.size
|
294
|
+
return as_arithmetic_info(self.right_arg).size
|
293
295
|
elif isinstance(self.right_arg, float) and self.right_arg == 0.0:
|
294
296
|
assert isinstance(self.left_arg, RegisterArithmeticInfo)
|
295
297
|
return self.left_arg.size
|
@@ -29,10 +29,10 @@ class QmodQNumProxy(QmodQScalarProxy):
|
|
29
29
|
self, handle: HandleBinding, size: int, fraction_digits: int, is_signed: bool
|
30
30
|
) -> None:
|
31
31
|
super().__init__(handle, size)
|
32
|
-
if fraction_digits
|
32
|
+
if fraction_digits > size:
|
33
33
|
raise ClassiqValueError(
|
34
|
-
f"
|
35
|
-
f"
|
34
|
+
f"Quantum numeric of size {size} cannot have {fraction_digits} "
|
35
|
+
f"fraction digits"
|
36
36
|
)
|
37
37
|
self._fraction_digits = fraction_digits
|
38
38
|
self._is_signed = is_signed
|
@@ -149,6 +149,9 @@ class SynthesisQuantumFunctionCall(BaseModel):
|
|
149
149
|
description="The name of the function instance. "
|
150
150
|
"If not set, determined automatically.",
|
151
151
|
)
|
152
|
+
model_source_id: Optional[UUID] = pydantic.Field(default=None)
|
153
|
+
arithmetic_id: Optional[str] = pydantic.Field(default=None)
|
154
|
+
inverse_op_id: Optional[UUID] = pydantic.Field(default=None)
|
152
155
|
|
153
156
|
uuid: UUID = pydantic.Field(default_factory=uuid4)
|
154
157
|
|
classiq/interface/hardware.py
CHANGED
@@ -11,7 +11,6 @@ class OperationLevel(StrEnum):
|
|
11
11
|
QMOD_FUNCTION_CALL = "QMOD_CALL"
|
12
12
|
QMOD_STATEMENT = "QMOD_STATEMENT"
|
13
13
|
ENGINE_FUNCTION_CALL = "ENGINE_CALL"
|
14
|
-
ATOMIC = "ATOMIC"
|
15
14
|
UNKNOWN = "UNKNOWN"
|
16
15
|
|
17
16
|
|
@@ -20,6 +19,7 @@ class OperationType(StrEnum):
|
|
20
19
|
ALLOCATE = "ALLOCATE"
|
21
20
|
FREE = "FREE"
|
22
21
|
BIND = "BIND"
|
22
|
+
ATOMIC = "ATOMIC"
|
23
23
|
|
24
24
|
|
25
25
|
class OperationData(pydantic.BaseModel):
|
@@ -9,7 +9,6 @@ from typing import (
|
|
9
9
|
Tuple,
|
10
10
|
Union,
|
11
11
|
)
|
12
|
-
from uuid import UUID, uuid4
|
13
12
|
|
14
13
|
import pydantic
|
15
14
|
|
@@ -49,9 +48,6 @@ class QuantumFunctionCall(QuantumOperation):
|
|
49
48
|
description="The function that is called"
|
50
49
|
)
|
51
50
|
positional_args: List[ArgValue] = pydantic.Field(default_factory=list)
|
52
|
-
uuid: UUID = pydantic.Field(
|
53
|
-
description="A unique identifier for this call", default_factory=uuid4
|
54
|
-
)
|
55
51
|
|
56
52
|
_func_decl: Optional[QuantumFunctionDeclaration] = pydantic.PrivateAttr(
|
57
53
|
default=None
|
@@ -1,5 +1,6 @@
|
|
1
1
|
from dataclasses import dataclass
|
2
2
|
from typing import Any, Callable, Dict, Mapping, Optional, Sequence
|
3
|
+
from uuid import UUID, uuid4
|
3
4
|
|
4
5
|
import pydantic
|
5
6
|
from pydantic import Extra, root_validator
|
@@ -30,6 +31,9 @@ class HandleMetadata:
|
|
30
31
|
|
31
32
|
|
32
33
|
class QuantumOperation(QuantumStatement):
|
34
|
+
uuid: UUID = pydantic.Field(
|
35
|
+
description="A unique identifier for this operation", default_factory=uuid4
|
36
|
+
)
|
33
37
|
_generative_blocks: Dict[str, Callable] = pydantic.PrivateAttr(default_factory=dict)
|
34
38
|
|
35
39
|
@property
|
@@ -161,7 +161,7 @@ class Emitter(Generic[QuantumStatementT]):
|
|
161
161
|
}
|
162
162
|
|
163
163
|
port_to_passed_variable_map = {
|
164
|
-
arg_decl.name: evaluated_arg.value.handle
|
164
|
+
arg_decl.name: str(evaluated_arg.value.handle)
|
165
165
|
for arg_decl, evaluated_arg in zip(new_positional_arg_decls, evaluated_args)
|
166
166
|
if isinstance(arg_decl, PortDeclaration)
|
167
167
|
}
|
@@ -230,10 +230,7 @@ def _pad_with_sign_bit(kind: str, var: QuantumSymbol, size_diff: int) -> Tuple[
|
|
230
230
|
if not quantum_type.sign_value or size_diff >= 0:
|
231
231
|
return var, [], [], [], []
|
232
232
|
|
233
|
-
significand_var, sign_var, sign_split_bind = _split_sign(kind, var)
|
234
233
|
padding_var, padding_allocation = _allocate_padding(kind, size_diff)
|
235
|
-
padding_init_ops = _init_padding(sign_var, padding_var, size_diff)
|
236
|
-
|
237
234
|
padded_var = QuantumSymbol(
|
238
235
|
handle=HandleBinding(name=f"padded_{kind}"),
|
239
236
|
quantum_type=QuantumNumeric(
|
@@ -242,17 +239,42 @@ def _pad_with_sign_bit(kind: str, var: QuantumSymbol, size_diff: int) -> Tuple[
|
|
242
239
|
fraction_digits=Expression(expr="0"),
|
243
240
|
),
|
244
241
|
)
|
242
|
+
var_decls = [
|
243
|
+
VariableDeclarationStatement(
|
244
|
+
name=var.handle.name,
|
245
|
+
quantum_type=var.quantum_type,
|
246
|
+
)
|
247
|
+
for var in (padding_var, padded_var)
|
248
|
+
]
|
249
|
+
|
250
|
+
if quantum_type.size_in_bits == 1: # qnum<1, SIGNED, ?>
|
251
|
+
padding_init_ops = _init_padding(var, padding_var, size_diff)
|
252
|
+
padding_rebind = BindOperation(
|
253
|
+
in_handles=[var.handle, padding_var.handle],
|
254
|
+
out_handles=[padded_var.handle],
|
255
|
+
)
|
256
|
+
return (
|
257
|
+
padded_var,
|
258
|
+
var_decls,
|
259
|
+
[padding_allocation],
|
260
|
+
padding_init_ops,
|
261
|
+
[padding_rebind],
|
262
|
+
)
|
263
|
+
|
264
|
+
significand_var, sign_var, sign_split_bind = _split_sign(kind, var)
|
265
|
+
padding_init_ops = _init_padding(sign_var, padding_var, size_diff)
|
266
|
+
|
245
267
|
padding_rebind = BindOperation(
|
246
268
|
in_handles=[significand_var.handle, sign_var.handle, padding_var.handle],
|
247
269
|
out_handles=[padded_var.handle],
|
248
270
|
)
|
249
271
|
|
250
|
-
var_decls
|
272
|
+
var_decls += [
|
251
273
|
VariableDeclarationStatement(
|
252
274
|
name=var.handle.name,
|
253
275
|
quantum_type=var.quantum_type,
|
254
276
|
)
|
255
|
-
for var in (significand_var, sign_var
|
277
|
+
for var in (significand_var, sign_var)
|
256
278
|
]
|
257
279
|
|
258
280
|
return (
|
@@ -35,7 +35,14 @@ from classiq.model_expansions.visitors.boolean_expression_transformers import (
|
|
35
35
|
BooleanExpressionOptimizer,
|
36
36
|
)
|
37
37
|
from classiq.qmod import builtins
|
38
|
-
from classiq.qmod.builtins.functions import X
|
38
|
+
from classiq.qmod.builtins.functions import X, allocate
|
39
|
+
|
40
|
+
|
41
|
+
def _is_zero(expr: str) -> bool:
|
42
|
+
try:
|
43
|
+
return float(expr) == 0.0
|
44
|
+
except ValueError:
|
45
|
+
return False
|
39
46
|
|
40
47
|
|
41
48
|
class QuantumAssignmentOperationEmitter(
|
@@ -43,6 +50,8 @@ class QuantumAssignmentOperationEmitter(
|
|
43
50
|
):
|
44
51
|
def emit(self, op: QuantumAssignmentOperation, /) -> None:
|
45
52
|
new_expression = self._evaluate_op_expression(op)
|
53
|
+
if self._skip_assignment(op, new_expression.expr):
|
54
|
+
return
|
46
55
|
arrays_with_subscript = self._get_symbols_to_split(new_expression)
|
47
56
|
if len(arrays_with_subscript) > 0:
|
48
57
|
self._emit_with_split(op, new_expression, arrays_with_subscript)
|
@@ -71,8 +80,12 @@ class QuantumAssignmentOperationEmitter(
|
|
71
80
|
def _emit_inplace_arithmetic_op(
|
72
81
|
self, op: ArithmeticOperation, expression: Expression, is_bool_opt: bool
|
73
82
|
) -> None:
|
74
|
-
|
75
|
-
|
83
|
+
target = self._interpreter.evaluate(op.result_var).as_type(QuantumSymbol)
|
84
|
+
if (
|
85
|
+
op.operation_kind != ArithmeticOperationKind.InplaceXor
|
86
|
+
or op.result_type.size_in_bits > 1
|
87
|
+
or not _is_res_boolean(op)
|
88
|
+
or target.quantum_type.size_in_bits > 1
|
76
89
|
):
|
77
90
|
_validate_naive_inplace_handles(op)
|
78
91
|
self._build_naive_inplace(op, expression)
|
@@ -156,6 +169,19 @@ class QuantumAssignmentOperationEmitter(
|
|
156
169
|
WithinApply(compute=[arith_expression], action=[inplace_store])
|
157
170
|
)
|
158
171
|
|
172
|
+
def _skip_assignment(self, op: QuantumAssignmentOperation, expr: str) -> bool:
|
173
|
+
if not isinstance(op, ArithmeticOperation) or not _is_zero(expr):
|
174
|
+
return False
|
175
|
+
if op.operation_kind != ArithmeticOperationKind.Assignment:
|
176
|
+
return True
|
177
|
+
allocate_call = QuantumFunctionCall(
|
178
|
+
function=allocate.func_decl.name,
|
179
|
+
positional_args=[Expression(expr="1"), op.result_var],
|
180
|
+
)
|
181
|
+
allocate_call.set_func_decl(allocate.func_decl)
|
182
|
+
self._interpreter.emit_statement(allocate_call)
|
183
|
+
return True
|
184
|
+
|
159
185
|
|
160
186
|
def _validate_naive_inplace_handles(qe: ArithmeticOperation) -> None:
|
161
187
|
if qe.result_var in qe.var_handles:
|
@@ -106,7 +106,7 @@ def _expand_generative_model(
|
|
106
106
|
preferences,
|
107
107
|
classical_execution_function,
|
108
108
|
)
|
109
|
-
generative_functions = _get_generative_functions(gen_main)
|
109
|
+
generative_functions = _get_generative_functions(gen_main, preferences)
|
110
110
|
model.functions = generative_functions
|
111
111
|
model.types = list(QMODULE.type_decls.values())
|
112
112
|
model.enums = list(QMODULE.enum_decls.values())
|
@@ -114,20 +114,25 @@ def _expand_generative_model(
|
|
114
114
|
return model
|
115
115
|
|
116
116
|
|
117
|
-
def _get_generative_functions(
|
117
|
+
def _get_generative_functions(
|
118
|
+
gen_main: QFunc, preferences: Optional[Preferences]
|
119
|
+
) -> List[NativeFunctionDefinition]:
|
118
120
|
# The Interpreter accepts a model and a list of generative functions.
|
119
121
|
# Since the main function is generative, it can only be expanded using the
|
120
122
|
# Interpreter.
|
121
123
|
# To solve this deadlock, we create a wrapper model
|
122
124
|
# `qfunc main(...) { _gen_main(...); }` and rename `main` to `_gen_main` before
|
123
125
|
# passing them to the Interpreter.
|
124
|
-
gen_model = _get_wrapper_main(gen_main)
|
126
|
+
gen_model = _get_wrapper_main(gen_main, preferences)
|
125
127
|
gen_functions = _get_all_model_functions_as_generative_functions()
|
126
128
|
functions_dict = _interpret_generative_model(gen_model, gen_functions)
|
127
129
|
return list(functions_dict.values())
|
128
130
|
|
129
131
|
|
130
|
-
def _get_wrapper_main(gen_main: QFunc) -> Model:
|
132
|
+
def _get_wrapper_main(gen_main: QFunc, preferences: Optional[Preferences]) -> Model:
|
133
|
+
extra_args = {}
|
134
|
+
if preferences is not None:
|
135
|
+
extra_args["preferences"] = preferences
|
131
136
|
return Model(
|
132
137
|
functions=[
|
133
138
|
NativeFunctionDefinition(
|
@@ -145,6 +150,7 @@ def _get_wrapper_main(gen_main: QFunc) -> Model:
|
|
145
150
|
],
|
146
151
|
),
|
147
152
|
],
|
153
|
+
**extra_args,
|
148
154
|
)
|
149
155
|
|
150
156
|
|
classiq/synthesis.py
CHANGED
@@ -2,6 +2,7 @@ from typing import Any, NewType, Optional
|
|
2
2
|
|
3
3
|
import pydantic
|
4
4
|
|
5
|
+
from classiq.interface.analyzer.result import QasmCode
|
5
6
|
from classiq.interface.exceptions import ClassiqValueError
|
6
7
|
from classiq.interface.executor.execution_preferences import ExecutionPreferences
|
7
8
|
from classiq.interface.generator.model.constraints import Constraints
|
@@ -37,6 +38,26 @@ def show(quantum_program: SerializedQuantumProgram) -> None:
|
|
37
38
|
circuit.show() # type: ignore[attr-defined]
|
38
39
|
|
39
40
|
|
41
|
+
async def quantum_program_from_qasm_async(qasm: str) -> SerializedQuantumProgram:
|
42
|
+
quantum_program = await ApiWrapper.get_generated_circuit_from_qasm(
|
43
|
+
QasmCode(code=qasm)
|
44
|
+
)
|
45
|
+
return SerializedQuantumProgram(quantum_program.json())
|
46
|
+
|
47
|
+
|
48
|
+
def quantum_program_from_qasm(qasm: str) -> SerializedQuantumProgram:
|
49
|
+
"""
|
50
|
+
generate a quantum program from a QASM file.
|
51
|
+
|
52
|
+
Args:
|
53
|
+
qasm: A QASM2/3 string.
|
54
|
+
|
55
|
+
Returns:
|
56
|
+
SerializedQuantumProgram: Quantum program serialized as a string. (See: QuantumProgram)
|
57
|
+
"""
|
58
|
+
return async_utils.run(quantum_program_from_qasm_async(qasm))
|
59
|
+
|
60
|
+
|
40
61
|
async def synthesize_async(
|
41
62
|
serialized_model: SerializedModel,
|
42
63
|
) -> SerializedQuantumProgram:
|
@@ -1,4 +1,4 @@
|
|
1
|
-
classiq/__init__.py,sha256=
|
1
|
+
classiq/__init__.py,sha256=J4FvaP0HW4-Q3B4ojhK-KHE3alSN3Qwu7EzXYm8Q2_Y,3438
|
2
2
|
classiq/_analyzer_extras/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
3
3
|
classiq/_analyzer_extras/_ipywidgets_async_extension.py,sha256=DF-G1Dhp51P6qlxTJT-kxPMJiYy9tyNoCvqbPQOeJd0,2163
|
4
4
|
classiq/_analyzer_extras/interactive_hardware.py,sha256=f7ad2HeFq1f-2dJtPpgOE_w2IFzm49W6P_c-MzqJ5qE,3257
|
@@ -93,7 +93,7 @@ classiq/execution/jobs.py,sha256=t7Wdegpi6lylthg23a98rSmoZ8xXNGfz--efHYw39JY,956
|
|
93
93
|
classiq/execution/qnn.py,sha256=qsOA2mD8Ne_4VwvyGPfuHVDTzyxVnDHwE2gfoaOMsf8,2339
|
94
94
|
classiq/executor.py,sha256=jKD5O_tJpL2NMTC_N0NEuPJEmKZIaqsTpQrgZ88sleg,2594
|
95
95
|
classiq/interface/__init__.py,sha256=cg7hD_XVu1_jJ1fgwmT0rMIoZHopNVeB8xtlmMx-E_A,83
|
96
|
-
classiq/interface/_version.py,sha256=
|
96
|
+
classiq/interface/_version.py,sha256=gsOl-z2ZImE1-e-rSOkR9cpHmHsBf2DNIZ0T3Wtznh8,197
|
97
97
|
classiq/interface/analyzer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
98
98
|
classiq/interface/analyzer/analysis_params.py,sha256=043hfS-I3Ec6tkcniKMQQUiRyEC7zlNhntTBpZQB8hw,3725
|
99
99
|
classiq/interface/analyzer/cytoscape_graph.py,sha256=_2GviubgrDMAbF57PTDMhS9W0mTCLYWdyu0HndDPh54,2116
|
@@ -102,11 +102,11 @@ classiq/interface/applications/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5
|
|
102
102
|
classiq/interface/applications/qsvm.py,sha256=7LElAz4QwTeia7MeAOy8WUHvuFUOUojs8j2wDOwPMao,3363
|
103
103
|
classiq/interface/ast_node.py,sha256=EE06R8KwRA-QkK44Ou9TmMxiaa8J60G9Z9qf9T76k_k,398
|
104
104
|
classiq/interface/backend/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
105
|
-
classiq/interface/backend/backend_preferences.py,sha256=
|
105
|
+
classiq/interface/backend/backend_preferences.py,sha256=bg_BKeu9jBN_zwMGtgLpmX486RnN57xG_hTE_VSkgKI,21610
|
106
106
|
classiq/interface/backend/ionq/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
107
107
|
classiq/interface/backend/ionq/ionq_quantum_program.py,sha256=2DRnrzeSDC34mIdpsafWFSm7ZnHhKYspJYGULHv0XgI,1584
|
108
108
|
classiq/interface/backend/pydantic_backend.py,sha256=aRf8kljUMiLBH2odswSCJ3hbex_1nOGTK3YmBC6EfmQ,1462
|
109
|
-
classiq/interface/backend/quantum_backend_providers.py,sha256=
|
109
|
+
classiq/interface/backend/quantum_backend_providers.py,sha256=E4Kf3F_4b-5KtLPZFqDSSI94aPL_vNMX3SfvecMBH3s,6517
|
110
110
|
classiq/interface/chemistry/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
111
111
|
classiq/interface/chemistry/ansatz_library.py,sha256=3ki3uaV77cUxUxUzDbn3mVhjvMoKejJ5bIR1kXpBT1k,360
|
112
112
|
classiq/interface/chemistry/elements.py,sha256=Yy8L80SBVgmuKQyW-GlZKzwTqnP1O9po-FGFmKMJLRA,1181
|
@@ -185,12 +185,12 @@ classiq/interface/generator/arith/arithmetic.py,sha256=DrlA41wZxJwur8Va7-MVHEpVI
|
|
185
185
|
classiq/interface/generator/arith/arithmetic_arg_type_validator.py,sha256=ut0iSKnrZK01pf59KjqQo5bJqygW8cnkl86zU9FdgZI,1189
|
186
186
|
classiq/interface/generator/arith/arithmetic_expression_abc.py,sha256=FjibKgQcIpj6Yw9BJm7ixzKQXCmFpTTPeNg4e6CJ2ig,6445
|
187
187
|
classiq/interface/generator/arith/arithmetic_expression_parser.py,sha256=8_aCF2XmZBDxlGVy26Y_6p1-PE8Bx2hjTXZk8YG2k8A,5368
|
188
|
-
classiq/interface/generator/arith/arithmetic_expression_validator.py,sha256=
|
188
|
+
classiq/interface/generator/arith/arithmetic_expression_validator.py,sha256=r6lKdppBdjhYS4YLGYOw9J9x_022hzYf0N_gAA4-qZg,6655
|
189
189
|
classiq/interface/generator/arith/arithmetic_operations.py,sha256=a5eEbnOT9-7HNioNhoeqre5p-3s17epartLQkcAu0WM,1717
|
190
190
|
classiq/interface/generator/arith/arithmetic_param_getters.py,sha256=W-QaPNSmFrtfZF6KSPsJfcQ8cXsdHxz3_r42cQd0Lso,13390
|
191
191
|
classiq/interface/generator/arith/arithmetic_result_builder.py,sha256=c7Oiy6Bp43jbbfHwo5i0S5c_Zuc6oNxRgdNx5lQ0c-c,4255
|
192
192
|
classiq/interface/generator/arith/ast_node_rewrite.py,sha256=GxWvW6HWHS-bQshPr-xgnOlkqRQ6PA1ea0fzMxDNZQY,2769
|
193
|
-
classiq/interface/generator/arith/binary_ops.py,sha256=
|
193
|
+
classiq/interface/generator/arith/binary_ops.py,sha256=RxpXoEDdkEsBnTUx2AgJvljitnC5xwE8tpL16lSneoU,30755
|
194
194
|
classiq/interface/generator/arith/endianness.py,sha256=buplQY6swjKczmnGbyNxu9JqvzZcNPyjQdOePd9pPCA,116
|
195
195
|
classiq/interface/generator/arith/extremum_operations.py,sha256=eBcFJf3RE8NdqfFDJoCoy5zdGVNMhr6lRwdozQQc5xo,5966
|
196
196
|
classiq/interface/generator/arith/logical_ops.py,sha256=9VGq4hlZ_N85LsTnfJaoB4DAFkcnxpafqXhzUzGbWQM,2579
|
@@ -226,7 +226,7 @@ classiq/interface/generator/expressions/expression_types.py,sha256=BcqLJ_v0Rwm7g
|
|
226
226
|
classiq/interface/generator/expressions/handle_identifier.py,sha256=Vf1EsfzkW3tBk9S6QOLPn5yuLW1EChQ4Ja6OpLWPLFw,93
|
227
227
|
classiq/interface/generator/expressions/non_symbolic_expr.py,sha256=9JzU1y6oYmDjZyZLjDQNA81X3p1Z7CGzweN6WeFAcY8,4036
|
228
228
|
classiq/interface/generator/expressions/qmod_qarray_proxy.py,sha256=0PBTDnTl_3YqKOKnzHcj5MRp6wDCPI4ZgWw0rrnGgtM,3542
|
229
|
-
classiq/interface/generator/expressions/qmod_qscalar_proxy.py,sha256=
|
229
|
+
classiq/interface/generator/expressions/qmod_qscalar_proxy.py,sha256=XL3tJZkqO2YuRm9Hyo-ehFqIe9cd2AM-Lx_X__NXasQ,1726
|
230
230
|
classiq/interface/generator/expressions/qmod_qstruct_proxy.py,sha256=7mUER-9XBlu2Zu8MsfTFzVWh-ieBc3_D-MY0L6OZ2bk,1114
|
231
231
|
classiq/interface/generator/expressions/qmod_sized_proxy.py,sha256=mYqQfqvqB9vthhhWfbT3R-vp26xwJEDR28x1MfRSx2A,740
|
232
232
|
classiq/interface/generator/expressions/qmod_struct_instance.py,sha256=oMXVjU6243RmykMD0EU4Jnjup4pXveeuXv2UFchZTpM,1067
|
@@ -287,7 +287,7 @@ classiq/interface/generator/preferences/optimization.py,sha256=7iEWWNFSxqi4XMb4J
|
|
287
287
|
classiq/interface/generator/qft.py,sha256=SDLcPWYxshDfPl-tAfhpRFb30NpPRRFpje5Jrrkb9Gs,1184
|
288
288
|
classiq/interface/generator/qpe.py,sha256=qc7k1C1joRSH-DL3ULIbHr7xRjQWOwszhyplSFWfcW4,6010
|
289
289
|
classiq/interface/generator/qsvm.py,sha256=iwLn-ACt1dilP60ddXBzLEKA0toJuHJCeAZ0-7VNnCQ,3000
|
290
|
-
classiq/interface/generator/quantum_function_call.py,sha256=
|
290
|
+
classiq/interface/generator/quantum_function_call.py,sha256=fFfQMNlrAbqYuhkOzDNVlBDxWqzrntL8EEesaq3gAVg,23480
|
291
291
|
classiq/interface/generator/quantum_program.py,sha256=ahtP8DqNe0Fe0KN5r7kfuQNamanFuufSv8GuzHiQsOk,6811
|
292
292
|
classiq/interface/generator/randomized_benchmarking.py,sha256=D6KI_1fMF5oBydaal2WLmTSit6xSMtz0yDAIZMMO89Q,635
|
293
293
|
classiq/interface/generator/range_types.py,sha256=5TWlKLQSEdhvfRkJEa6WyLWZJDICTW6fWUfi7V_h_jg,2061
|
@@ -330,7 +330,7 @@ classiq/interface/generator/validations/validator_functions.py,sha256=n-K4R903O2
|
|
330
330
|
classiq/interface/generator/visitor.py,sha256=4stDieh3p7JYuSL9bH_FqKrn0k0Nl8bMO72RQocZ8M8,2864
|
331
331
|
classiq/interface/grover/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
332
332
|
classiq/interface/grover/grover_modelling_params.py,sha256=eMXdjfuGlVq5qD3QyG-C8mAyIBAoxzkjF052M4b1i-k,390
|
333
|
-
classiq/interface/hardware.py,sha256=
|
333
|
+
classiq/interface/hardware.py,sha256=9qxWDoVE-234RXe2eROVZo4NOS5DgjDq5EB7byP94DU,2023
|
334
334
|
classiq/interface/helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
335
335
|
classiq/interface/helpers/classproperty.py,sha256=pt9A39GgEMzj2nbY5gjFp_CId_wom6lOQt_PADidT4Y,279
|
336
336
|
classiq/interface/helpers/custom_encoders.py,sha256=0-9DTHwQr-I_vP1Ie4Z9N4qfzDhFvGT4qsXP-EdDegs,107
|
@@ -342,7 +342,7 @@ classiq/interface/helpers/validation_helpers.py,sha256=oUD1jMdTSoAkV-HjbkvMovb8Z
|
|
342
342
|
classiq/interface/helpers/versioned_model.py,sha256=iHB0oO7pWKaE0l62SdfBbY3QwHSiSA0h9oUQQwRrvKI,295
|
343
343
|
classiq/interface/ide/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
344
344
|
classiq/interface/ide/ide_data.py,sha256=Z3keVfjxK8dpC64ZJ0PEoLWgtmOaxiv2CgBzkxbFVmY,2508
|
345
|
-
classiq/interface/ide/visual_model.py,sha256
|
345
|
+
classiq/interface/ide/visual_model.py,sha256=tXwkxyEmBDwiyw6uM6ecMDV0nVO2-3u83ABeRWBZN-g,2727
|
346
346
|
classiq/interface/interface_version.py,sha256=Q1aeahrMg6ePaFeDei3GEHzHA2_cJnGoJK3KQ3Av55k,24
|
347
347
|
classiq/interface/jobs.py,sha256=QFGSbXpFK589jW4DzGGrNhkwm3ZhTehDt8P3lENXTsc,2749
|
348
348
|
classiq/interface/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -363,10 +363,10 @@ classiq/interface/model/quantum_expressions/__init__.py,sha256=47DEQpj8HBSa-_TIm
|
|
363
363
|
classiq/interface/model/quantum_expressions/amplitude_loading_operation.py,sha256=v45Eb44VxyBTMH-E1NTb5-YdKCj5EY_rb-BClHI0A48,2428
|
364
364
|
classiq/interface/model/quantum_expressions/arithmetic_operation.py,sha256=HKFZci4z4QSmE8Bpwu6_6sCU1Wb-jzovrmsU1lmxjmw,3428
|
365
365
|
classiq/interface/model/quantum_expressions/quantum_expression.py,sha256=yw-sYXbaaKoUSL8oujDFBjyShxCfAQnPPX64h-Yh-_8,2118
|
366
|
-
classiq/interface/model/quantum_function_call.py,sha256=
|
366
|
+
classiq/interface/model/quantum_function_call.py,sha256=CCLORUqsVDORLJcR-uLzl0egUw4jxIVqQIANPny9T50,7166
|
367
367
|
classiq/interface/model/quantum_function_declaration.py,sha256=N1iccemg-xC4Cc1pPLWT3cBGYO3RIEBPVz_zlWWkLpQ,7704
|
368
368
|
classiq/interface/model/quantum_lambda_function.py,sha256=gNrzQuQ_UKdoZXPtGjhb-L1n67gBbJmuc7A6cKUhu68,2114
|
369
|
-
classiq/interface/model/quantum_statement.py,sha256=
|
369
|
+
classiq/interface/model/quantum_statement.py,sha256=V-Kv7InndkM9q6RPhO6Kxi0T_-tmsiHWCbGUFJL-FM4,2628
|
370
370
|
classiq/interface/model/quantum_type.py,sha256=19JjWMEU44l7C9VtsFakOZ3c3-ugQzC3_vdygrhieck,8199
|
371
371
|
classiq/interface/model/quantum_variable_declaration.py,sha256=Vmx-aHnss8E_ghqX_wi4Njp-dEtYK-WwYHtHAwmGZxk,229
|
372
372
|
classiq/interface/model/repeat.py,sha256=pSq0rzSDUVQqyzlv-mV1k-Jx57KyjqjZ1KgScGFOQgE,408
|
@@ -409,13 +409,13 @@ classiq/model_expansions/quantum_operations/__init__.py,sha256=BMruLYFsir2nU9Du9
|
|
409
409
|
classiq/model_expansions/quantum_operations/bind.py,sha256=yRHOyMw3Kdkr1tJaRfPkbS6amCKl504weaWYqbVvZ0A,2631
|
410
410
|
classiq/model_expansions/quantum_operations/classicalif.py,sha256=6SFumWVIWCTNQsng1GCkZ2zysT8aVrtwPqpwlJ6M_dQ,2151
|
411
411
|
classiq/model_expansions/quantum_operations/control.py,sha256=SibNNK8gwzBMojwmXDg--SXbqhn3PJmIB2y0sK-7rJA,10151
|
412
|
-
classiq/model_expansions/quantum_operations/emitter.py,sha256=
|
412
|
+
classiq/model_expansions/quantum_operations/emitter.py,sha256=z3axE2OfTjIxp6sevyo2VGsN1d5Elx5a8721YgGCpOM,10899
|
413
413
|
classiq/model_expansions/quantum_operations/expression_operation.py,sha256=q2EaNec3kvTw2xDVGrd36p_rHiNMaWzkR0qFC55sJDY,8182
|
414
|
-
classiq/model_expansions/quantum_operations/inplace_binary_operation.py,sha256=
|
414
|
+
classiq/model_expansions/quantum_operations/inplace_binary_operation.py,sha256=6crgrrrUW_dwnNZsiMpHap9V-0FZiHw6vHNrscMja94,11765
|
415
415
|
classiq/model_expansions/quantum_operations/invert.py,sha256=iR6ZpTyntchWb5kJFFMCC6rkBURbueJO42H7-8ljbKw,1661
|
416
416
|
classiq/model_expansions/quantum_operations/phase.py,sha256=W3qHfxs9S25yE2Ofgy9NwO5t9og6DxhqSQW8w1ptm1w,7337
|
417
417
|
classiq/model_expansions/quantum_operations/power.py,sha256=89FEo5xJkOxCP7L7Jy9MJatRbbzjVVR0oc8Q7aBzF8Q,2661
|
418
|
-
classiq/model_expansions/quantum_operations/quantum_assignment_operation.py,sha256
|
418
|
+
classiq/model_expansions/quantum_operations/quantum_assignment_operation.py,sha256=Kk_7cYqJbwi3Nhh48yu51jIyaDo_dRB4nQnMOkGQKZE,8428
|
419
419
|
classiq/model_expansions/quantum_operations/quantum_function_call.py,sha256=hQcOwaZV0qe7SmlqV3hdlKIcX_EKmxGOysH0lOVh9F0,729
|
420
420
|
classiq/model_expansions/quantum_operations/repeat.py,sha256=zxxKxbMqa_4zkA5x10NrDpgUqEHKId4WxLXmD4aboJk,2060
|
421
421
|
classiq/model_expansions/quantum_operations/variable_decleration.py,sha256=fRMRxctSxQFhPIhTMMVGC0F9p4iBLIMCD59G_j4Rk2Y,1196
|
@@ -464,7 +464,7 @@ classiq/qmod/builtins/structs.py,sha256=pdjNKFAhxLNzVdz4bhONO4PwvfI_W7Z7Skjgqt47
|
|
464
464
|
classiq/qmod/cfunc.py,sha256=quwJdgYRgqI2C13SRrRunLi-Kuf7nCAk2-O2B46QtoY,1093
|
465
465
|
classiq/qmod/classical_function.py,sha256=DuPzfK--_6pR6JcuvkWoNx3jRHkRVskqyTOi4qbejr8,1221
|
466
466
|
classiq/qmod/cparam.py,sha256=wai8PyfS6QCJ8_WLck2nRZrtuEXYg1cogj4CQ_EZKP4,1182
|
467
|
-
classiq/qmod/create_model_function.py,sha256=
|
467
|
+
classiq/qmod/create_model_function.py,sha256=A3IhmgCv4pFhn2tiaQ2HmFMl3zzeZQKOR2Qy5wnSQHs,7501
|
468
468
|
classiq/qmod/declaration_inferrer.py,sha256=4GEh_qzwqR2Rj_B-oBAtENCPDSq92PKcahc7I4vghG0,7003
|
469
469
|
classiq/qmod/expression_query.py,sha256=EkZPG-iJGcar2zqAwji0QtPKjapO6RL3nz8YEuhxyGg,1642
|
470
470
|
classiq/qmod/generative.py,sha256=--557jt22gVKJROwcSA7AzQBdgNl9zMXGEfRJVI6W1k,1561
|
@@ -498,7 +498,7 @@ classiq/qmod/symbolic_type.py,sha256=whMy3Uw4iE2SOVfHeyfTpDJ3BH6Rxlhk492ij-4QRU4
|
|
498
498
|
classiq/qmod/type_attribute_remover.py,sha256=dN9dcsmFQI1UXz_DllGKl2BP4XkyvGdNk8diPan-9RE,1236
|
499
499
|
classiq/qmod/utilities.py,sha256=z_VnIRmOYTWjJp2UlOcWK0rQRtMqysmP_Gr6WYY_nak,2734
|
500
500
|
classiq/qmod/write_qmod.py,sha256=SO7hdBdO31lTzyeaJ-Htyma-aJmrbBNtABNEB2llI4Q,1818
|
501
|
-
classiq/synthesis.py,sha256=
|
502
|
-
classiq-0.
|
503
|
-
classiq-0.
|
504
|
-
classiq-0.
|
501
|
+
classiq/synthesis.py,sha256=egu5iUXeED5Lt0sDDQZvybUNVSYckNia5HbqRtoS11A,8035
|
502
|
+
classiq-0.51.1.dist-info/METADATA,sha256=cirVNZ9qM7PL8ljeUkomYY6xR6Q5OF6EODmpDZUVxic,3458
|
503
|
+
classiq-0.51.1.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
504
|
+
classiq-0.51.1.dist-info/RECORD,,
|
File without changes
|