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.
Files changed (48) hide show
  1. classiq/applications/chemistry/chemistry_model_constructor.py +31 -31
  2. classiq/execution/execution_session.py +42 -3
  3. classiq/interface/_version.py +1 -1
  4. classiq/interface/analyzer/analysis_params.py +16 -6
  5. classiq/interface/analyzer/result.py +2 -1
  6. classiq/interface/ast_node.py +2 -2
  7. classiq/interface/backend/pydantic_backend.py +1 -3
  8. classiq/interface/chemistry/fermionic_operator.py +17 -7
  9. classiq/interface/generator/amplitude_loading.py +12 -3
  10. classiq/interface/generator/application_apis/finance_declarations.py +22 -1
  11. classiq/interface/generator/expressions/atomic_expression_functions.py +2 -1
  12. classiq/interface/generator/expressions/enums/classical_enum.py +11 -0
  13. classiq/interface/generator/expressions/enums/ladder_operator.py +0 -10
  14. classiq/interface/generator/expressions/expression_constants.py +1 -0
  15. classiq/interface/generator/expressions/qmod_qarray_proxy.py +14 -1
  16. classiq/interface/generator/expressions/qmod_qscalar_proxy.py +7 -2
  17. classiq/interface/generator/expressions/qmod_sized_proxy.py +8 -3
  18. classiq/interface/generator/expressions/qmod_struct_instance.py +12 -1
  19. classiq/interface/generator/functions/builtins/core_library/atomic_quantum_functions.py +262 -195
  20. classiq/interface/generator/functions/builtins/internal_operators.py +1 -0
  21. classiq/interface/generator/functions/builtins/open_lib_functions.py +1645 -44
  22. classiq/interface/generator/functions/classical_type.py +21 -3
  23. classiq/interface/generator/generated_circuit_data.py +2 -0
  24. classiq/interface/generator/model/model.py +1 -1
  25. classiq/interface/{model → generator/model}/quantum_register.py +3 -0
  26. classiq/interface/helpers/classproperty.py +8 -0
  27. classiq/interface/ide/visual_model.py +68 -0
  28. classiq/interface/model/control.py +11 -1
  29. classiq/interface/model/quantum_expressions/amplitude_loading_operation.py +3 -8
  30. classiq/interface/model/quantum_expressions/quantum_expression.py +1 -30
  31. classiq/interface/model/quantum_function_call.py +0 -12
  32. classiq/interface/model/validations/handles_validator.py +2 -7
  33. classiq/interface/server/routes.py +1 -0
  34. classiq/qmod/builtins/classical_execution_primitives.py +1 -1
  35. classiq/qmod/builtins/functions.py +83 -31
  36. classiq/qmod/builtins/operations.py +16 -1
  37. classiq/qmod/declaration_inferrer.py +28 -4
  38. classiq/qmod/pretty_print/pretty_printer.py +22 -2
  39. classiq/qmod/qmod_constant.py +2 -1
  40. classiq/qmod/qmod_parameter.py +9 -2
  41. classiq/qmod/quantum_expandable.py +35 -11
  42. classiq/qmod/quantum_function.py +6 -5
  43. classiq/qmod/symbolic.py +22 -1
  44. classiq/qmod/utilities.py +5 -5
  45. {classiq-0.41.2.dist-info → classiq-0.42.1.dist-info}/METADATA +2 -2
  46. {classiq-0.41.2.dist-info → classiq-0.42.1.dist-info}/RECORD +47 -46
  47. classiq/interface/model/call_synthesis_data.py +0 -57
  48. {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))