classiq 0.41.2__py3-none-any.whl → 0.42.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/applications/chemistry/chemistry_model_constructor.py +31 -31
- classiq/execution/execution_session.py +42 -3
- classiq/interface/_version.py +1 -1
- classiq/interface/analyzer/analysis_params.py +16 -6
- classiq/interface/analyzer/result.py +2 -1
- classiq/interface/ast_node.py +2 -2
- classiq/interface/backend/pydantic_backend.py +1 -3
- classiq/interface/chemistry/fermionic_operator.py +17 -7
- classiq/interface/generator/amplitude_loading.py +12 -3
- classiq/interface/generator/application_apis/finance_declarations.py +22 -1
- classiq/interface/generator/expressions/atomic_expression_functions.py +2 -1
- classiq/interface/generator/expressions/enums/classical_enum.py +11 -0
- classiq/interface/generator/expressions/enums/ladder_operator.py +0 -10
- classiq/interface/generator/expressions/expression_constants.py +1 -0
- classiq/interface/generator/expressions/qmod_qarray_proxy.py +14 -1
- classiq/interface/generator/expressions/qmod_qscalar_proxy.py +7 -2
- classiq/interface/generator/expressions/qmod_sized_proxy.py +8 -3
- classiq/interface/generator/expressions/qmod_struct_instance.py +12 -1
- classiq/interface/generator/functions/builtins/core_library/atomic_quantum_functions.py +262 -195
- classiq/interface/generator/functions/builtins/internal_operators.py +1 -0
- classiq/interface/generator/functions/builtins/open_lib_functions.py +1645 -44
- classiq/interface/generator/functions/classical_type.py +21 -3
- classiq/interface/generator/generated_circuit_data.py +2 -0
- classiq/interface/generator/model/model.py +1 -1
- classiq/interface/{model → generator/model}/quantum_register.py +3 -0
- classiq/interface/helpers/classproperty.py +8 -0
- classiq/interface/ide/visual_model.py +68 -0
- classiq/interface/model/control.py +11 -1
- classiq/interface/model/quantum_expressions/amplitude_loading_operation.py +3 -8
- classiq/interface/model/quantum_expressions/quantum_expression.py +1 -30
- classiq/interface/model/quantum_function_call.py +0 -12
- classiq/interface/model/validations/handles_validator.py +2 -7
- classiq/interface/server/routes.py +1 -0
- classiq/qmod/builtins/classical_execution_primitives.py +1 -1
- classiq/qmod/builtins/functions.py +83 -31
- classiq/qmod/builtins/operations.py +16 -1
- classiq/qmod/declaration_inferrer.py +28 -4
- classiq/qmod/pretty_print/pretty_printer.py +22 -2
- classiq/qmod/qmod_constant.py +2 -1
- classiq/qmod/qmod_parameter.py +9 -2
- classiq/qmod/quantum_expandable.py +35 -11
- classiq/qmod/quantum_function.py +6 -5
- classiq/qmod/symbolic.py +22 -1
- classiq/qmod/utilities.py +5 -5
- {classiq-0.41.2.dist-info → classiq-0.42.1.dist-info}/METADATA +2 -2
- {classiq-0.41.2.dist-info → classiq-0.42.1.dist-info}/RECORD +47 -46
- classiq/interface/model/call_synthesis_data.py +0 -57
- {classiq-0.41.2.dist-info → classiq-0.42.1.dist-info}/WHEEL +0 -0
@@ -1,57 +0,0 @@
|
|
1
|
-
import dataclasses
|
2
|
-
from typing import Any, Iterator, List, Mapping
|
3
|
-
|
4
|
-
from sympy import sympify
|
5
|
-
|
6
|
-
from classiq.interface.generator.control_state import ControlState
|
7
|
-
from classiq.interface.generator.synthesis_execution_parameter import PydanticPowerType
|
8
|
-
|
9
|
-
from classiq.exceptions import ClassiqValueError
|
10
|
-
|
11
|
-
ILLEGAL_NESTED_POWER_ERROR = "Nested power calls with a parametric power and an integer power are unsupported: {a}, {b}"
|
12
|
-
|
13
|
-
|
14
|
-
def _merge_power(a: PydanticPowerType, b: PydanticPowerType) -> PydanticPowerType:
|
15
|
-
symbolic_res = sympify(a) * sympify(b)
|
16
|
-
if symbolic_res.is_Integer:
|
17
|
-
return int(symbolic_res)
|
18
|
-
elif symbolic_res.is_symbol:
|
19
|
-
return str(symbolic_res)
|
20
|
-
else:
|
21
|
-
raise ClassiqValueError(ILLEGAL_NESTED_POWER_ERROR.format(a=a, b=b))
|
22
|
-
|
23
|
-
|
24
|
-
@dataclasses.dataclass
|
25
|
-
class CallSynthesisData(Mapping):
|
26
|
-
power: PydanticPowerType = 1
|
27
|
-
is_inverse: bool = False
|
28
|
-
control_states: List[ControlState] = dataclasses.field(default_factory=list)
|
29
|
-
should_control: bool = True
|
30
|
-
|
31
|
-
def merge(self, other: "CallSynthesisData") -> "CallSynthesisData":
|
32
|
-
return CallSynthesisData(
|
33
|
-
power=_merge_power(self.power, other.power),
|
34
|
-
is_inverse=self.is_inverse != other.is_inverse,
|
35
|
-
control_states=self.control_states + other.control_states,
|
36
|
-
should_control=self.should_control and other.should_control,
|
37
|
-
)
|
38
|
-
|
39
|
-
def set_control(self, ctrl_name: str, ctrl_size: int, ctrl_state: str) -> None:
|
40
|
-
self.control_states = [
|
41
|
-
ControlState(
|
42
|
-
name=ctrl_name, num_ctrl_qubits=ctrl_size, ctrl_state=ctrl_state
|
43
|
-
)
|
44
|
-
]
|
45
|
-
|
46
|
-
@property
|
47
|
-
def has_control(self) -> bool:
|
48
|
-
return bool(self.control_states)
|
49
|
-
|
50
|
-
def __getitem__(self, key: str) -> Any:
|
51
|
-
return dataclasses.asdict(self)[key]
|
52
|
-
|
53
|
-
def __iter__(self) -> Iterator[str]:
|
54
|
-
return iter(dataclasses.asdict(self))
|
55
|
-
|
56
|
-
def __len__(self) -> int:
|
57
|
-
return len(dataclasses.asdict(self))
|
File without changes
|