classiq 0.86.1__py3-none-any.whl → 0.88.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.
Potentially problematic release.
This version of classiq might be problematic. Click here for more details.
- classiq/__init__.py +2 -0
- classiq/applications/__init__.py +1 -2
- classiq/applications/chemistry/hartree_fock.py +5 -1
- classiq/applications/chemistry/op_utils.py +2 -2
- classiq/applications/combinatorial_helpers/combinatorial_problem_utils.py +1 -1
- classiq/applications/combinatorial_helpers/encoding_mapping.py +11 -15
- classiq/applications/combinatorial_helpers/encoding_utils.py +6 -6
- classiq/applications/combinatorial_helpers/memory.py +4 -4
- classiq/applications/combinatorial_helpers/optimization_model.py +5 -5
- classiq/applications/combinatorial_helpers/pauli_helpers/pauli_utils.py +6 -10
- classiq/applications/combinatorial_helpers/pyomo_utils.py +27 -26
- classiq/applications/combinatorial_helpers/sympy_utils.py +2 -2
- classiq/applications/combinatorial_helpers/transformations/encoding.py +4 -6
- classiq/applications/combinatorial_helpers/transformations/fixed_variables.py +4 -4
- classiq/applications/combinatorial_helpers/transformations/ising_converter.py +2 -2
- classiq/applications/combinatorial_helpers/transformations/penalty_support.py +3 -3
- classiq/applications/combinatorial_optimization/combinatorial_problem.py +4 -0
- classiq/applications/hamiltonian/pauli_decomposition.py +34 -2
- classiq/evaluators/argument_types.py +15 -6
- classiq/evaluators/parameter_types.py +43 -39
- classiq/evaluators/qmod_annotated_expression.py +117 -17
- classiq/evaluators/qmod_expression_visitors/out_of_place_node_transformer.py +19 -0
- classiq/evaluators/qmod_expression_visitors/qmod_expression_bwc.py +0 -5
- classiq/evaluators/qmod_expression_visitors/qmod_expression_evaluator.py +66 -16
- classiq/evaluators/qmod_expression_visitors/qmod_expression_renamer.py +48 -26
- classiq/evaluators/qmod_expression_visitors/qmod_expression_simplifier.py +65 -72
- classiq/evaluators/qmod_node_evaluators/attribute_evaluation.py +13 -6
- classiq/evaluators/qmod_node_evaluators/binary_op_evaluation.py +175 -28
- classiq/evaluators/qmod_node_evaluators/classical_function_evaluation.py +36 -19
- classiq/evaluators/qmod_node_evaluators/compare_evaluation.py +17 -5
- classiq/evaluators/qmod_node_evaluators/constant_evaluation.py +24 -2
- classiq/evaluators/qmod_node_evaluators/min_max_evaluation.py +97 -0
- classiq/evaluators/qmod_node_evaluators/name_evaluation.py +11 -26
- classiq/evaluators/qmod_node_evaluators/numeric_attrs_utils.py +56 -0
- classiq/evaluators/qmod_node_evaluators/piecewise_evaluation.py +40 -0
- classiq/evaluators/qmod_node_evaluators/struct_instantiation_evaluation.py +3 -4
- classiq/evaluators/qmod_node_evaluators/subscript_evaluation.py +51 -24
- classiq/evaluators/qmod_node_evaluators/unary_op_evaluation.py +53 -9
- classiq/evaluators/qmod_node_evaluators/utils.py +28 -6
- classiq/evaluators/qmod_type_inference/classical_type_inference.py +188 -0
- classiq/evaluators/qmod_type_inference/quantum_type_inference.py +330 -0
- classiq/evaluators/quantum_type_utils.py +0 -131
- classiq/evaluators/type_type_match.py +1 -1
- classiq/execution/execution_session.py +18 -3
- classiq/execution/qnn.py +4 -1
- classiq/execution/user_budgets.py +1 -1
- classiq/interface/_version.py +1 -1
- classiq/interface/backend/backend_preferences.py +10 -30
- classiq/interface/backend/quantum_backend_providers.py +63 -52
- classiq/interface/execution/primitives.py +1 -0
- classiq/interface/generator/application_apis/__init__.py +0 -1
- classiq/interface/generator/arith/binary_ops.py +107 -115
- classiq/interface/generator/arith/extremum_operations.py +33 -45
- classiq/interface/generator/arith/number_utils.py +4 -1
- classiq/interface/generator/circuit_code/types_and_constants.py +0 -9
- classiq/interface/generator/compiler_keywords.py +2 -0
- classiq/interface/generator/expressions/atomic_expression_functions.py +0 -2
- classiq/interface/generator/function_param_list.py +129 -5
- classiq/interface/generator/functions/classical_type.py +67 -2
- classiq/interface/generator/functions/qmod_python_interface.py +15 -0
- classiq/interface/generator/functions/type_name.py +12 -0
- classiq/interface/generator/model/preferences/preferences.py +1 -17
- classiq/interface/generator/quantum_program.py +1 -13
- classiq/interface/generator/transpiler_basis_gates.py +5 -1
- classiq/interface/generator/types/builtin_enum_declarations.py +0 -8
- classiq/interface/helpers/model_normalizer.py +2 -2
- classiq/interface/helpers/text_utils.py +7 -2
- classiq/interface/interface_version.py +1 -1
- classiq/interface/model/classical_if.py +48 -0
- classiq/interface/model/classical_parameter_declaration.py +4 -0
- classiq/interface/model/handle_binding.py +28 -16
- classiq/interface/model/port_declaration.py +12 -0
- classiq/interface/model/quantum_function_declaration.py +12 -0
- classiq/interface/model/quantum_type.py +117 -2
- classiq/interface/pretty_print/expression_to_qmod.py +7 -8
- classiq/interface/pyomo_extension/__init__.py +0 -4
- classiq/interface/pyomo_extension/pyomo_sympy_bimap.py +2 -2
- classiq/model_expansions/arithmetic.py +43 -1
- classiq/model_expansions/arithmetic_compute_result_attrs.py +255 -0
- classiq/model_expansions/capturing/captured_vars.py +2 -5
- classiq/model_expansions/quantum_operations/allocate.py +23 -16
- classiq/model_expansions/quantum_operations/arithmetic/explicit_boolean_expressions.py +1 -3
- classiq/model_expansions/quantum_operations/assignment_result_processor.py +52 -71
- classiq/model_expansions/quantum_operations/bind.py +15 -7
- classiq/model_expansions/quantum_operations/call_emitter.py +2 -10
- classiq/model_expansions/quantum_operations/classical_var_emitter.py +6 -0
- classiq/model_expansions/quantum_operations/handle_evaluator.py +2 -8
- classiq/open_library/functions/__init__.py +4 -0
- classiq/open_library/functions/lcu.py +117 -0
- classiq/open_library/functions/state_preparation.py +47 -5
- classiq/qmod/builtins/__init__.py +0 -3
- classiq/qmod/builtins/classical_functions.py +0 -28
- classiq/qmod/builtins/enums.py +26 -20
- classiq/qmod/builtins/functions/__init__.py +0 -5
- classiq/qmod/builtins/operations.py +142 -0
- classiq/qmod/builtins/structs.py +33 -29
- classiq/qmod/native/pretty_printer.py +1 -1
- classiq/qmod/pretty_print/expression_to_python.py +1 -6
- classiq/qmod/pretty_print/pretty_printer.py +4 -1
- classiq/qmod/qmod_variable.py +94 -2
- classiq/qmod/semantics/annotation/call_annotation.py +4 -2
- classiq/qmod/semantics/annotation/qstruct_annotator.py +20 -5
- {classiq-0.86.1.dist-info → classiq-0.88.0.dist-info}/METADATA +5 -5
- {classiq-0.86.1.dist-info → classiq-0.88.0.dist-info}/RECORD +106 -124
- classiq/applications/finance/__init__.py +0 -15
- classiq/interface/finance/finance_modelling_params.py +0 -11
- classiq/interface/finance/function_input.py +0 -102
- classiq/interface/finance/gaussian_model_input.py +0 -50
- classiq/interface/finance/log_normal_model_input.py +0 -40
- classiq/interface/finance/model_input.py +0 -22
- classiq/interface/generator/amplitude_estimation.py +0 -34
- classiq/interface/generator/application_apis/finance_declarations.py +0 -108
- classiq/interface/generator/expressions/enums/__init__.py +0 -0
- classiq/interface/generator/expressions/enums/finance_functions.py +0 -12
- classiq/interface/generator/finance.py +0 -107
- classiq/interface/generator/function_param_list_without_self_reference.py +0 -160
- classiq/interface/generator/grover_diffuser.py +0 -93
- classiq/interface/generator/grover_operator.py +0 -106
- classiq/interface/generator/oracles/__init__.py +0 -3
- classiq/interface/generator/oracles/arithmetic_oracle.py +0 -82
- classiq/interface/generator/oracles/custom_oracle.py +0 -65
- classiq/interface/generator/oracles/oracle_abc.py +0 -76
- classiq/interface/generator/oracles/oracle_function_param_list.py +0 -6
- classiq/interface/generator/piecewise_linear_amplitude_loading.py +0 -165
- classiq/interface/generator/qpe.py +0 -169
- classiq/interface/grover/__init__.py +0 -0
- classiq/interface/grover/grover_modelling_params.py +0 -13
- classiq/model_expansions/transformers/var_splitter.py +0 -224
- classiq/qmod/builtins/functions/finance.py +0 -34
- /classiq/{interface/finance → evaluators/qmod_type_inference}/__init__.py +0 -0
- {classiq-0.86.1.dist-info → classiq-0.88.0.dist-info}/WHEEL +0 -0
|
@@ -1,15 +1,30 @@
|
|
|
1
|
+
from classiq.interface.exceptions import ClassiqExpansionError
|
|
1
2
|
from classiq.interface.generator.functions.type_name import TypeName
|
|
2
3
|
from classiq.interface.generator.types.struct_declaration import StructDeclaration
|
|
3
4
|
from classiq.interface.model.model_visitor import ModelVisitor
|
|
4
5
|
|
|
6
|
+
from classiq.qmod.builtins.enums import BUILTIN_ENUM_DECLARATIONS
|
|
7
|
+
from classiq.qmod.builtins.structs import BUILTIN_STRUCT_DECLARATIONS
|
|
5
8
|
from classiq.qmod.model_state_container import QMODULE
|
|
6
9
|
|
|
10
|
+
IGNORED_MISSING_TYPES = {"MoleculeResult"}
|
|
11
|
+
|
|
7
12
|
|
|
8
13
|
class QStructAnnotator(ModelVisitor):
|
|
9
14
|
def __init__(self) -> None:
|
|
10
|
-
self._visited: set[
|
|
15
|
+
self._visited: set[int] = set()
|
|
16
|
+
self._defined_type_names = (
|
|
17
|
+
set(QMODULE.enum_decls)
|
|
18
|
+
| set(QMODULE.type_decls)
|
|
19
|
+
| set(QMODULE.qstruct_decls)
|
|
20
|
+
| set(BUILTIN_STRUCT_DECLARATIONS)
|
|
21
|
+
| set(BUILTIN_ENUM_DECLARATIONS)
|
|
22
|
+
| IGNORED_MISSING_TYPES
|
|
23
|
+
)
|
|
11
24
|
|
|
12
25
|
def visit_TypeName(self, type_name: TypeName) -> None:
|
|
26
|
+
if type_name.name not in self._defined_type_names:
|
|
27
|
+
raise ClassiqExpansionError(f"Undefined type {type_name.name}")
|
|
13
28
|
self._annotate_quantum_struct(type_name)
|
|
14
29
|
self._annotate_classical_struct(type_name)
|
|
15
30
|
|
|
@@ -17,13 +32,13 @@ class QStructAnnotator(ModelVisitor):
|
|
|
17
32
|
if (
|
|
18
33
|
type_name.has_classical_struct_decl
|
|
19
34
|
or type_name.has_fields
|
|
20
|
-
or type_name in self._visited
|
|
35
|
+
or id(type_name) in self._visited
|
|
21
36
|
):
|
|
22
37
|
return
|
|
23
38
|
decl = QMODULE.qstruct_decls.get(type_name.name)
|
|
24
39
|
if decl is None:
|
|
25
40
|
return
|
|
26
|
-
self._visited.add(type_name)
|
|
41
|
+
self._visited.add(id(type_name))
|
|
27
42
|
new_fields = {
|
|
28
43
|
field_name: field_type.model_copy()
|
|
29
44
|
for field_name, field_type in decl.fields.items()
|
|
@@ -37,13 +52,13 @@ class QStructAnnotator(ModelVisitor):
|
|
|
37
52
|
if (
|
|
38
53
|
type_name.has_classical_struct_decl
|
|
39
54
|
or type_name.has_fields
|
|
40
|
-
or type_name in self._visited
|
|
55
|
+
or id(type_name) in self._visited
|
|
41
56
|
):
|
|
42
57
|
return
|
|
43
58
|
decl = QMODULE.type_decls.get(type_name.name)
|
|
44
59
|
if decl is None:
|
|
45
60
|
return
|
|
46
|
-
self._visited.add(type_name)
|
|
61
|
+
self._visited.add(id(type_name))
|
|
47
62
|
new_fields = {
|
|
48
63
|
field_name: field_type.model_copy(deep=True)
|
|
49
64
|
for field_name, field_type in decl.variables.items()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: classiq
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.88.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
|
|
@@ -30,18 +30,18 @@ Provides-Extra: analyzer-sdk
|
|
|
30
30
|
Provides-Extra: chemistry
|
|
31
31
|
Provides-Extra: qml
|
|
32
32
|
Requires-Dist: ConfigArgParse (>=1.5.3,<2.0.0)
|
|
33
|
-
Requires-Dist: Pyomo (>=6.
|
|
33
|
+
Requires-Dist: Pyomo (>=6.9,<6.10)
|
|
34
34
|
Requires-Dist: black (>=24.0,<25.0)
|
|
35
35
|
Requires-Dist: httpx (>=0.23.0,<1)
|
|
36
36
|
Requires-Dist: ipywidgets ; extra == "analyzer-sdk"
|
|
37
37
|
Requires-Dist: jupyterlab ; extra == "analyzer-sdk"
|
|
38
38
|
Requires-Dist: keyring (>=23.5.0,<24.0.0)
|
|
39
39
|
Requires-Dist: matplotlib (>=3.4.3,<4.0.0)
|
|
40
|
-
Requires-Dist: networkx (>=2.
|
|
40
|
+
Requires-Dist: networkx (>=3.2.0,<4.0.0)
|
|
41
41
|
Requires-Dist: notebook ; extra == "analyzer-sdk"
|
|
42
42
|
Requires-Dist: numexpr (>=2.7.3,<3.0.0)
|
|
43
|
-
Requires-Dist: numpy (
|
|
44
|
-
Requires-Dist: numpy (>=1.26.
|
|
43
|
+
Requires-Dist: numpy (<3.0.0) ; python_version >= "3.10"
|
|
44
|
+
Requires-Dist: numpy (>=1.26.4,<2.0.0) ; python_version < "3.10"
|
|
45
45
|
Requires-Dist: openfermion ; extra == "chemistry"
|
|
46
46
|
Requires-Dist: openfermionpyscf ; extra == "chemistry"
|
|
47
47
|
Requires-Dist: packaging (>=23.2,<24.0)
|