classiq 0.37.1__py3-none-any.whl → 0.39.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.
- classiq/__init__.py +23 -24
- classiq/_analyzer_extras/_ipywidgets_async_extension.py +1 -1
- classiq/_analyzer_extras/interactive_hardware.py +3 -3
- classiq/_internals/api_wrapper.py +37 -17
- classiq/_internals/async_utils.py +1 -74
- classiq/_internals/authentication/device.py +9 -4
- classiq/_internals/authentication/password_manager.py +25 -10
- classiq/_internals/authentication/token_manager.py +2 -2
- classiq/_internals/client.py +24 -6
- classiq/_internals/jobs.py +10 -7
- classiq/analyzer/analyzer.py +29 -29
- classiq/analyzer/analyzer_utilities.py +5 -5
- classiq/analyzer/rb.py +4 -5
- classiq/analyzer/show_interactive_hack.py +6 -6
- classiq/applications/__init__.py +1 -8
- classiq/applications/chemistry/__init__.py +6 -0
- classiq/{applications_model_constructors → applications/chemistry}/chemistry_model_constructor.py +9 -16
- classiq/applications/combinatorial_helpers/allowed_constraints.py +20 -0
- classiq/applications/combinatorial_helpers/arithmetic/arithmetic_expression.py +35 -0
- classiq/applications/combinatorial_helpers/arithmetic/isolation.py +42 -0
- classiq/applications/combinatorial_helpers/combinatorial_problem_utils.py +150 -0
- classiq/applications/combinatorial_helpers/encoding_mapping.py +107 -0
- classiq/applications/combinatorial_helpers/encoding_utils.py +122 -0
- classiq/applications/combinatorial_helpers/memory.py +77 -0
- classiq/applications/combinatorial_helpers/optimization_model.py +162 -0
- classiq/applications/combinatorial_helpers/pauli_helpers/pauli_sparsing.py +31 -0
- classiq/applications/combinatorial_helpers/pauli_helpers/pauli_utils.py +75 -0
- classiq/applications/combinatorial_helpers/py.typed +0 -0
- classiq/applications/combinatorial_helpers/pyomo_utils.py +245 -0
- classiq/applications/combinatorial_helpers/solvers/__init__.py +0 -0
- classiq/applications/combinatorial_helpers/sympy_utils.py +22 -0
- classiq/applications/combinatorial_helpers/transformations/__init__.py +0 -0
- classiq/applications/combinatorial_helpers/transformations/encoding.py +187 -0
- classiq/applications/combinatorial_helpers/transformations/fixed_variables.py +142 -0
- classiq/applications/combinatorial_helpers/transformations/ising_converter.py +122 -0
- classiq/applications/combinatorial_helpers/transformations/penalty.py +32 -0
- classiq/applications/combinatorial_helpers/transformations/penalty_support.py +37 -0
- classiq/applications/combinatorial_helpers/transformations/sign_seperation.py +75 -0
- classiq/applications/combinatorial_helpers/transformations/slack_variables.py +88 -0
- classiq/applications/combinatorial_optimization/__init__.py +13 -2
- classiq/applications/combinatorial_optimization/combinatorial_optimization_model_constructor.py +134 -0
- classiq/applications/finance/__init__.py +3 -2
- classiq/{applications_model_constructors → applications/finance}/finance_model_constructor.py +27 -30
- classiq/applications/grover/__init__.py +11 -0
- classiq/{applications_model_constructors → applications/grover}/grover_model_constructor.py +20 -91
- classiq/applications/libraries/__init__.py +0 -0
- classiq/applications/libraries/qmci_library.py +35 -0
- classiq/applications/qnn/circuit_utils.py +2 -2
- classiq/applications/qnn/gradients/quantum_gradient.py +2 -2
- classiq/applications/qnn/types.py +2 -2
- classiq/applications/qsvm/__init__.py +5 -1
- classiq/applications/qsvm/qsvm.py +4 -7
- classiq/applications/qsvm/qsvm_data_generation.py +2 -5
- classiq/exceptions.py +43 -1
- classiq/execution/all_hardware_devices.py +13 -0
- classiq/executor.py +12 -10
- classiq/interface/_version.py +1 -1
- classiq/interface/analyzer/analysis_params.py +6 -3
- classiq/interface/analyzer/result.py +12 -8
- classiq/interface/applications/qsvm.py +17 -3
- classiq/interface/ast_node.py +23 -0
- classiq/interface/backend/backend_preferences.py +4 -2
- classiq/interface/backend/pydantic_backend.py +3 -1
- classiq/interface/backend/quantum_backend_providers.py +1 -0
- classiq/interface/chemistry/fermionic_operator.py +15 -13
- classiq/interface/chemistry/ground_state_problem.py +18 -3
- classiq/interface/chemistry/molecule.py +8 -6
- classiq/interface/chemistry/operator.py +20 -14
- classiq/interface/combinatorial_optimization/examples/ascending_sequence.py +1 -1
- classiq/interface/combinatorial_optimization/examples/greater_than_ilp.py +1 -1
- classiq/interface/combinatorial_optimization/examples/ilp.py +2 -1
- classiq/interface/combinatorial_optimization/examples/integer_portfolio_optimization.py +2 -2
- classiq/interface/combinatorial_optimization/examples/mds.py +2 -1
- classiq/interface/combinatorial_optimization/examples/mht.py +8 -3
- classiq/interface/combinatorial_optimization/examples/mis.py +4 -1
- classiq/interface/combinatorial_optimization/examples/mvc.py +2 -1
- classiq/interface/combinatorial_optimization/examples/set_cover.py +2 -1
- classiq/interface/combinatorial_optimization/examples/tsp.py +4 -3
- classiq/interface/combinatorial_optimization/examples/tsp_digraph.py +6 -2
- classiq/interface/combinatorial_optimization/mht_qaoa_input.py +9 -3
- classiq/interface/executor/aws_execution_cost.py +4 -3
- classiq/interface/executor/estimation.py +2 -2
- classiq/interface/executor/execution_preferences.py +5 -34
- classiq/interface/executor/execution_request.py +15 -48
- classiq/interface/executor/optimizer_preferences.py +22 -13
- classiq/interface/executor/{quantum_program.py → quantum_code.py} +21 -15
- classiq/interface/executor/quantum_instruction_set.py +2 -1
- classiq/interface/executor/register_initialization.py +1 -3
- classiq/interface/executor/result.py +41 -10
- classiq/interface/executor/vqe_result.py +2 -2
- classiq/interface/finance/function_input.py +17 -4
- classiq/interface/finance/gaussian_model_input.py +3 -1
- classiq/interface/finance/log_normal_model_input.py +3 -1
- classiq/interface/finance/model_input.py +2 -0
- classiq/interface/generator/amplitude_loading.py +6 -3
- classiq/interface/generator/application_apis/__init__.py +1 -0
- classiq/interface/generator/application_apis/arithmetic_declarations.py +14 -0
- classiq/interface/generator/arith/argument_utils.py +14 -4
- classiq/interface/generator/arith/arithmetic.py +3 -1
- classiq/interface/generator/arith/arithmetic_arg_type_validator.py +12 -13
- classiq/interface/generator/arith/arithmetic_expression_abc.py +4 -1
- classiq/interface/generator/arith/arithmetic_expression_parser.py +8 -2
- classiq/interface/generator/arith/arithmetic_expression_validator.py +16 -2
- classiq/interface/generator/arith/arithmetic_operations.py +5 -10
- classiq/interface/generator/arith/ast_node_rewrite.py +1 -1
- classiq/interface/generator/arith/binary_ops.py +202 -54
- classiq/interface/generator/arith/extremum_operations.py +5 -3
- classiq/interface/generator/arith/logical_ops.py +4 -2
- classiq/interface/generator/arith/machine_precision.py +3 -0
- classiq/interface/generator/arith/number_utils.py +34 -44
- classiq/interface/generator/arith/register_user_input.py +21 -1
- classiq/interface/generator/arith/unary_ops.py +16 -25
- classiq/interface/generator/builtin_api_builder.py +0 -5
- classiq/interface/generator/chemistry_function_params.py +4 -4
- classiq/interface/generator/commuting_pauli_exponentiation.py +3 -1
- classiq/interface/generator/compiler_keywords.py +4 -0
- classiq/interface/generator/complex_type.py +3 -10
- classiq/interface/generator/constant.py +2 -3
- classiq/interface/generator/control_state.py +5 -3
- classiq/interface/generator/credit_risk_example/linear_gci.py +10 -3
- classiq/interface/generator/credit_risk_example/weighted_adder.py +14 -4
- classiq/interface/generator/expressions/atomic_expression_functions.py +5 -3
- classiq/interface/generator/expressions/evaluated_expression.py +18 -4
- classiq/interface/generator/expressions/expression.py +3 -5
- classiq/interface/generator/expressions/qmod_qscalar_proxy.py +33 -0
- classiq/interface/generator/expressions/sympy_supported_expressions.py +2 -1
- classiq/interface/generator/finance.py +1 -1
- classiq/interface/generator/function_params.py +7 -6
- classiq/interface/generator/functions/__init__.py +2 -2
- classiq/interface/generator/functions/builtins/__init__.py +15 -0
- classiq/interface/generator/functions/builtins/core_library/__init__.py +14 -0
- classiq/interface/generator/functions/builtins/core_library/chemistry_functions.py +0 -0
- classiq/interface/generator/functions/builtins/internal_operators.py +62 -0
- classiq/interface/generator/functions/{core_lib_declarations/quantum_functions/std_lib_functions.py → builtins/open_lib_functions.py} +612 -219
- classiq/interface/generator/functions/builtins/quantum_operators.py +37 -0
- classiq/interface/generator/functions/classical_type.py +2 -4
- classiq/interface/generator/functions/foreign_function_definition.py +12 -4
- classiq/interface/generator/functions/function_declaration.py +2 -2
- classiq/interface/generator/functions/function_implementation.py +8 -4
- classiq/interface/generator/functions/native_function_definition.py +4 -2
- classiq/interface/generator/functions/register.py +4 -2
- classiq/interface/generator/functions/register_mapping_data.py +14 -10
- classiq/interface/generator/generated_circuit_data.py +2 -2
- classiq/interface/generator/grover_operator.py +5 -3
- classiq/interface/generator/hamiltonian_evolution/suzuki_trotter.py +5 -1
- classiq/interface/generator/hardware/hardware_data.py +6 -4
- classiq/interface/generator/hardware_efficient_ansatz.py +25 -8
- classiq/interface/generator/hartree_fock.py +13 -3
- classiq/interface/generator/linear_pauli_rotations.py +3 -1
- classiq/interface/generator/mcu.py +5 -3
- classiq/interface/generator/mcx.py +7 -5
- classiq/interface/generator/model/classical_main_validator.py +1 -1
- classiq/interface/generator/model/constraints.py +2 -1
- classiq/interface/generator/model/model.py +12 -20
- classiq/interface/generator/model/preferences/preferences.py +4 -3
- classiq/interface/generator/oracles/custom_oracle.py +4 -2
- classiq/interface/generator/oracles/oracle_abc.py +2 -2
- classiq/interface/generator/qpe.py +6 -4
- classiq/interface/generator/qsvm.py +5 -8
- classiq/interface/generator/quantum_function_call.py +21 -16
- classiq/interface/generator/{generated_circuit.py → quantum_program.py} +10 -14
- classiq/interface/generator/range_types.py +3 -1
- classiq/interface/generator/slice_parsing_utils.py +8 -3
- classiq/interface/generator/standard_gates/controlled_standard_gates.py +4 -2
- classiq/interface/generator/state_preparation/metrics.py +2 -1
- classiq/interface/generator/state_preparation/state_preparation.py +7 -5
- classiq/interface/generator/state_propagator.py +16 -5
- classiq/interface/generator/types/builtin_struct_declarations/__init__.py +0 -1
- classiq/interface/generator/types/struct_declaration.py +10 -7
- classiq/interface/generator/ucc.py +6 -4
- classiq/interface/generator/unitary_gate.py +7 -3
- classiq/interface/generator/validations/flow_graph.py +6 -4
- classiq/interface/generator/validations/validator_functions.py +6 -4
- classiq/interface/hardware.py +2 -2
- classiq/interface/helpers/custom_encoders.py +3 -0
- classiq/interface/helpers/pydantic_model_helpers.py +0 -6
- classiq/interface/helpers/validation_helpers.py +1 -1
- classiq/interface/helpers/versioned_model.py +4 -1
- classiq/interface/ide/show.py +2 -2
- classiq/interface/jobs.py +72 -3
- classiq/interface/model/bind_operation.py +18 -11
- classiq/interface/model/call_synthesis_data.py +68 -0
- classiq/interface/model/classical_if.py +13 -0
- classiq/interface/model/classical_parameter_declaration.py +2 -3
- classiq/interface/model/control.py +16 -0
- classiq/interface/model/handle_binding.py +3 -2
- classiq/interface/model/inplace_binary_operation.py +2 -2
- classiq/interface/model/invert.py +10 -0
- classiq/interface/model/model.py +29 -22
- classiq/interface/model/native_function_definition.py +3 -5
- classiq/interface/model/power.py +12 -0
- classiq/interface/model/quantum_expressions/amplitude_loading_operation.py +9 -4
- classiq/interface/model/quantum_expressions/control_state.py +2 -2
- classiq/interface/model/quantum_function_call.py +33 -142
- classiq/interface/model/quantum_function_declaration.py +8 -0
- classiq/interface/model/quantum_if_operation.py +4 -5
- classiq/interface/model/quantum_lambda_function.py +58 -0
- classiq/{quantum_register.py → interface/model/quantum_register.py} +17 -9
- classiq/interface/model/quantum_statement.py +3 -2
- classiq/interface/model/quantum_type.py +58 -59
- classiq/interface/model/quantum_variable_declaration.py +3 -3
- classiq/interface/model/repeat.py +13 -0
- classiq/interface/model/resolvers/function_call_resolver.py +26 -0
- classiq/interface/model/statement_block.py +49 -0
- classiq/interface/model/validations/handles_validator.py +16 -18
- classiq/interface/model/within_apply_operation.py +11 -0
- classiq/interface/pyomo_extension/pyomo_sympy_bimap.py +4 -1
- classiq/interface/server/routes.py +5 -4
- classiq/qmod/__init__.py +13 -6
- classiq/qmod/builtins/classical_execution_primitives.py +27 -36
- classiq/qmod/builtins/classical_functions.py +22 -12
- classiq/qmod/builtins/functions.py +272 -328
- classiq/qmod/builtins/operations.py +171 -35
- classiq/qmod/builtins/structs.py +15 -15
- classiq/qmod/cfunc.py +42 -0
- classiq/qmod/classical_function.py +6 -14
- classiq/qmod/declaration_inferrer.py +12 -21
- classiq/qmod/expression_query.py +23 -0
- classiq/qmod/model_state_container.py +2 -0
- classiq/qmod/native/__init__.py +0 -0
- classiq/qmod/native/expression_to_qmod.py +189 -0
- classiq/qmod/native/pretty_printer.py +340 -0
- classiq/qmod/qfunc.py +27 -0
- classiq/qmod/qmod_constant.py +100 -0
- classiq/qmod/qmod_parameter.py +36 -13
- classiq/qmod/qmod_struct.py +3 -3
- classiq/qmod/qmod_variable.py +148 -31
- classiq/qmod/quantum_callable.py +1 -0
- classiq/qmod/quantum_expandable.py +18 -19
- classiq/qmod/quantum_function.py +41 -8
- classiq/qmod/symbolic.py +48 -5
- classiq/qmod/symbolic_expr.py +9 -0
- classiq/qmod/utilities.py +13 -0
- classiq/qmod/write_qmod.py +39 -0
- {classiq-0.37.1.dist-info → classiq-0.39.0.dist-info}/METADATA +2 -1
- {classiq-0.37.1.dist-info → classiq-0.39.0.dist-info}/RECORD +244 -225
- {classiq-0.37.1.dist-info → classiq-0.39.0.dist-info}/WHEEL +1 -1
- classiq/applications/benchmarking/__init__.py +0 -9
- classiq/applications/benchmarking/mirror_benchmarking.py +0 -67
- classiq/applications/numpy_utils.py +0 -37
- classiq/applications_model_constructors/__init__.py +0 -17
- classiq/applications_model_constructors/combinatorial_optimization_model_constructor.py +0 -178
- classiq/applications_model_constructors/libraries/qmci_library.py +0 -109
- classiq/builtin_functions/__init__.py +0 -43
- classiq/builtin_functions/amplitude_loading.py +0 -3
- classiq/builtin_functions/binary_ops.py +0 -1
- classiq/builtin_functions/exponentiation.py +0 -5
- classiq/builtin_functions/qpe.py +0 -4
- classiq/builtin_functions/qsvm.py +0 -7
- classiq/builtin_functions/range_types.py +0 -5
- classiq/builtin_functions/standard_gates.py +0 -1
- classiq/builtin_functions/state_preparation.py +0 -6
- classiq/builtin_functions/suzuki_trotter.py +0 -3
- classiq/interface/generator/expressions/qmod_qnum_proxy.py +0 -22
- classiq/interface/generator/functions/core_lib_declarations/quantum_functions/__init__.py +0 -18
- classiq/interface/generator/functions/core_lib_declarations/quantum_operators.py +0 -169
- classiq/interface/generator/types/builtin_struct_declarations/qaoa_declarations.py +0 -23
- classiq/interface/generator/types/combinatorial_problem.py +0 -26
- classiq/interface/model/numeric_reinterpretation.py +0 -25
- classiq/interface/model/operator_synthesis_data.py +0 -48
- classiq/model/__init__.py +0 -14
- classiq/model/composite_function_generator.py +0 -33
- classiq/model/function_handler.py +0 -466
- classiq/model/function_handler.pyi +0 -152
- classiq/model/logic_flow.py +0 -149
- classiq/model/logic_flow_change_handler.py +0 -71
- classiq/model/model.py +0 -246
- classiq/quantum_functions/__init__.py +0 -17
- classiq/quantum_functions/annotation_parser.py +0 -207
- classiq/quantum_functions/decorators.py +0 -22
- classiq/quantum_functions/function_library.py +0 -181
- classiq/quantum_functions/function_parser.py +0 -74
- classiq/quantum_functions/quantum_function.py +0 -236
- /classiq/{applications_model_constructors/libraries → applications/combinatorial_helpers}/__init__.py +0 -0
- /classiq/{interface/generator/functions/core_lib_declarations → applications/combinatorial_helpers/arithmetic}/__init__.py +0 -0
- /classiq/{interface/generator/functions/core_lib_declarations/quantum_functions/chemistry_functions.py → applications/combinatorial_helpers/pauli_helpers/__init__.py} +0 -0
- /classiq/{applications_model_constructors → applications}/libraries/ampltitude_estimation_library.py +0 -0
- /classiq/{applications_model_constructors → applications/qsvm}/qsvm_model_constructor.py +0 -0
- /classiq/interface/generator/functions/{core_lib_declarations/quantum_functions → builtins/core_library}/atomic_quantum_functions.py +0 -0
- /classiq/interface/generator/functions/{core_lib_declarations/quantum_functions → builtins/core_library}/exponentiation_functions.py +0 -0
@@ -1,169 +0,0 @@
|
|
1
|
-
from classiq.interface.generator.expressions.expression import Expression
|
2
|
-
from classiq.interface.generator.functions.classical_type import Bool, Integer
|
3
|
-
from classiq.interface.generator.functions.port_declaration import (
|
4
|
-
PortDeclarationDirection,
|
5
|
-
)
|
6
|
-
from classiq.interface.helpers.pydantic_model_helpers import nameables_to_dict
|
7
|
-
from classiq.interface.model.port_declaration import PortDeclaration
|
8
|
-
from classiq.interface.model.quantum_function_declaration import (
|
9
|
-
QuantumFunctionDeclaration,
|
10
|
-
QuantumOperandDeclaration,
|
11
|
-
)
|
12
|
-
|
13
|
-
REPEAT_OPERATOR = QuantumFunctionDeclaration(
|
14
|
-
name="repeat",
|
15
|
-
param_decls={"count": Integer()},
|
16
|
-
operand_declarations={
|
17
|
-
"iteration": QuantumOperandDeclaration(
|
18
|
-
name="iteration", param_decls={"index": Integer()}
|
19
|
-
)
|
20
|
-
},
|
21
|
-
)
|
22
|
-
|
23
|
-
OPERAND_FIELD_NAME = "operand"
|
24
|
-
CTRL_FIELD_NAME = "ctrl"
|
25
|
-
|
26
|
-
|
27
|
-
INVERT_OPERATOR = QuantumFunctionDeclaration(
|
28
|
-
name="invert",
|
29
|
-
operand_declarations={
|
30
|
-
OPERAND_FIELD_NAME: QuantumOperandDeclaration(name=OPERAND_FIELD_NAME)
|
31
|
-
},
|
32
|
-
)
|
33
|
-
|
34
|
-
|
35
|
-
CONTROL_OPERATOR = QuantumFunctionDeclaration(
|
36
|
-
name="control",
|
37
|
-
port_declarations={
|
38
|
-
CTRL_FIELD_NAME: PortDeclaration(
|
39
|
-
name=CTRL_FIELD_NAME,
|
40
|
-
direction=PortDeclarationDirection.Inout,
|
41
|
-
)
|
42
|
-
},
|
43
|
-
operand_declarations={
|
44
|
-
OPERAND_FIELD_NAME: QuantumOperandDeclaration(name=OPERAND_FIELD_NAME)
|
45
|
-
},
|
46
|
-
)
|
47
|
-
|
48
|
-
IF_OPERATOR = QuantumFunctionDeclaration(
|
49
|
-
name="if",
|
50
|
-
param_decls={"condition": Bool()},
|
51
|
-
operand_declarations={
|
52
|
-
"then": QuantumOperandDeclaration(name="then"),
|
53
|
-
"else": QuantumOperandDeclaration(name="else"),
|
54
|
-
},
|
55
|
-
)
|
56
|
-
|
57
|
-
SWITCH_OPERATOR = QuantumFunctionDeclaration(
|
58
|
-
name="switch",
|
59
|
-
param_decls={"selector": Integer()},
|
60
|
-
operand_declarations={
|
61
|
-
"cases": QuantumOperandDeclaration(
|
62
|
-
name="cases",
|
63
|
-
is_list=True,
|
64
|
-
)
|
65
|
-
},
|
66
|
-
)
|
67
|
-
|
68
|
-
|
69
|
-
JOIN_OPERATOR = QuantumFunctionDeclaration(
|
70
|
-
name="join",
|
71
|
-
port_declarations={
|
72
|
-
"in1": PortDeclaration(name="in1", direction="input"),
|
73
|
-
"in2": PortDeclaration(name="in2", direction="input"),
|
74
|
-
"out": PortDeclaration(
|
75
|
-
name="out",
|
76
|
-
direction="output",
|
77
|
-
size=Expression(expr="len(in1)+len(in2)"),
|
78
|
-
),
|
79
|
-
},
|
80
|
-
)
|
81
|
-
|
82
|
-
|
83
|
-
SPLIT_OPERATOR = QuantumFunctionDeclaration(
|
84
|
-
name="split",
|
85
|
-
param_decls={"out1_size": Integer(), "out2_size": Integer()},
|
86
|
-
port_declarations={
|
87
|
-
"in": PortDeclaration(
|
88
|
-
name="in",
|
89
|
-
direction="input",
|
90
|
-
size=Expression(expr="out1_size+out2_size"),
|
91
|
-
),
|
92
|
-
"out1": PortDeclaration(
|
93
|
-
name="out1", direction="output", size=Expression(expr="out1_size")
|
94
|
-
),
|
95
|
-
"out2": PortDeclaration(
|
96
|
-
name="out2", direction="output", size=Expression(expr="out2_size")
|
97
|
-
),
|
98
|
-
},
|
99
|
-
)
|
100
|
-
|
101
|
-
|
102
|
-
PERMUTE_OPERATOR = QuantumFunctionDeclaration(
|
103
|
-
name="permute",
|
104
|
-
operand_declarations={
|
105
|
-
"functions": QuantumOperandDeclaration(
|
106
|
-
name="functions",
|
107
|
-
is_list=True,
|
108
|
-
)
|
109
|
-
},
|
110
|
-
)
|
111
|
-
|
112
|
-
|
113
|
-
POWER_OPERATOR = QuantumFunctionDeclaration(
|
114
|
-
name="power",
|
115
|
-
param_decls={"power": Integer()},
|
116
|
-
operand_declarations={
|
117
|
-
OPERAND_FIELD_NAME: QuantumOperandDeclaration(name=OPERAND_FIELD_NAME)
|
118
|
-
},
|
119
|
-
)
|
120
|
-
|
121
|
-
APPLY = QuantumFunctionDeclaration(
|
122
|
-
name="apply",
|
123
|
-
operand_declarations={
|
124
|
-
OPERAND_FIELD_NAME: QuantumOperandDeclaration(
|
125
|
-
name=OPERAND_FIELD_NAME,
|
126
|
-
)
|
127
|
-
},
|
128
|
-
)
|
129
|
-
|
130
|
-
|
131
|
-
COMPUTE = QuantumFunctionDeclaration(
|
132
|
-
name="compute",
|
133
|
-
operand_declarations={
|
134
|
-
OPERAND_FIELD_NAME: QuantumOperandDeclaration(
|
135
|
-
name=OPERAND_FIELD_NAME,
|
136
|
-
)
|
137
|
-
},
|
138
|
-
)
|
139
|
-
|
140
|
-
|
141
|
-
UNCOMPUTE = QuantumFunctionDeclaration(
|
142
|
-
name="uncompute",
|
143
|
-
operand_declarations={
|
144
|
-
OPERAND_FIELD_NAME: QuantumOperandDeclaration(
|
145
|
-
name=OPERAND_FIELD_NAME,
|
146
|
-
)
|
147
|
-
},
|
148
|
-
)
|
149
|
-
|
150
|
-
|
151
|
-
BUILTIN_QUANTUM_OPERATOR_LIST = [
|
152
|
-
REPEAT_OPERATOR,
|
153
|
-
INVERT_OPERATOR,
|
154
|
-
CONTROL_OPERATOR,
|
155
|
-
IF_OPERATOR,
|
156
|
-
SWITCH_OPERATOR,
|
157
|
-
JOIN_OPERATOR,
|
158
|
-
SPLIT_OPERATOR,
|
159
|
-
PERMUTE_OPERATOR,
|
160
|
-
POWER_OPERATOR,
|
161
|
-
APPLY,
|
162
|
-
COMPUTE,
|
163
|
-
UNCOMPUTE,
|
164
|
-
]
|
165
|
-
|
166
|
-
|
167
|
-
QuantumFunctionDeclaration.BUILTIN_FUNCTION_DECLARATIONS.update(
|
168
|
-
nameables_to_dict(BUILTIN_QUANTUM_OPERATOR_LIST)
|
169
|
-
)
|
@@ -1,23 +0,0 @@
|
|
1
|
-
from classiq.interface.generator.functions.classical_function_declaration import (
|
2
|
-
ClassicalFunctionDeclaration,
|
3
|
-
)
|
4
|
-
from classiq.interface.generator.functions.classical_type import (
|
5
|
-
ClassicalList,
|
6
|
-
Integer,
|
7
|
-
Real,
|
8
|
-
Struct,
|
9
|
-
)
|
10
|
-
from classiq.interface.helpers.pydantic_model_helpers import nameables_to_dict
|
11
|
-
|
12
|
-
COMPUTE_QAOA_INITIAL_POINT = ClassicalFunctionDeclaration(
|
13
|
-
name="compute_qaoa_initial_point",
|
14
|
-
param_decls={
|
15
|
-
"hamiltonian": ClassicalList(element_type=Struct(name="PauliTerm")),
|
16
|
-
"repetitions": Integer(),
|
17
|
-
},
|
18
|
-
return_type=ClassicalList(element_type=Real()),
|
19
|
-
)
|
20
|
-
|
21
|
-
ClassicalFunctionDeclaration.FOREIGN_FUNCTION_DECLARATIONS.update(
|
22
|
-
nameables_to_dict([COMPUTE_QAOA_INITIAL_POINT])
|
23
|
-
)
|
@@ -1,26 +0,0 @@
|
|
1
|
-
from enum import Enum
|
2
|
-
from typing import List
|
3
|
-
|
4
|
-
import pydantic
|
5
|
-
|
6
|
-
from classiq.interface.generator.expressions.expression import Expression
|
7
|
-
from classiq.interface.generator.types.struct_declaration import StructDeclaration
|
8
|
-
|
9
|
-
|
10
|
-
class ObjectiveType(Enum):
|
11
|
-
Min = "Min"
|
12
|
-
Max = "Max"
|
13
|
-
|
14
|
-
|
15
|
-
class CombinatorialOptimizationStructDeclaration(StructDeclaration):
|
16
|
-
variable_lower_bound: int = pydantic.Field(default=0)
|
17
|
-
variable_upper_bound: int = pydantic.Field(default=1)
|
18
|
-
constraints: List[Expression] = pydantic.Field(
|
19
|
-
default_factory=list, description="List of constraint expressions"
|
20
|
-
)
|
21
|
-
objective_type: ObjectiveType = pydantic.Field(
|
22
|
-
description="Specify whether the optimization problem is Min or Max"
|
23
|
-
)
|
24
|
-
objective_function: Expression = pydantic.Field(
|
25
|
-
description="The expression to optimize, according to the objective type"
|
26
|
-
)
|
@@ -1,25 +0,0 @@
|
|
1
|
-
from typing import Mapping
|
2
|
-
|
3
|
-
import pydantic
|
4
|
-
|
5
|
-
from classiq.interface.generator.expressions.expression import Expression
|
6
|
-
from classiq.interface.model.handle_binding import HandleBinding
|
7
|
-
from classiq.interface.model.quantum_statement import QuantumOperation
|
8
|
-
|
9
|
-
from classiq.exceptions import ClassiqValueError
|
10
|
-
|
11
|
-
|
12
|
-
class NumericReinterpretationOperation(QuantumOperation):
|
13
|
-
target: HandleBinding
|
14
|
-
fraction_digits: Expression
|
15
|
-
is_signed: Expression
|
16
|
-
|
17
|
-
@property
|
18
|
-
def wiring_inouts(self) -> Mapping[str, HandleBinding]:
|
19
|
-
return {"target": self.target}
|
20
|
-
|
21
|
-
@pydantic.validator("target")
|
22
|
-
def validate_handle(cls, handle: HandleBinding) -> HandleBinding:
|
23
|
-
if not handle.is_bindable():
|
24
|
-
raise ClassiqValueError(f"Cannot bind '{handle}'") # noqa: B907
|
25
|
-
return handle
|
@@ -1,48 +0,0 @@
|
|
1
|
-
from typing import Any, Dict, Optional
|
2
|
-
|
3
|
-
from classiq.interface.generator.control_state import ControlState
|
4
|
-
|
5
|
-
|
6
|
-
class OperatorSynthesisData:
|
7
|
-
@property
|
8
|
-
def call_kwargs(self) -> Dict[str, Any]:
|
9
|
-
return dict()
|
10
|
-
|
11
|
-
|
12
|
-
class PowerOperatorSynthesisData(OperatorSynthesisData):
|
13
|
-
def __init__(self, power: int) -> None:
|
14
|
-
self._power = power
|
15
|
-
|
16
|
-
@property
|
17
|
-
def call_kwargs(self) -> Dict[str, Any]:
|
18
|
-
return {"power": self._power}
|
19
|
-
|
20
|
-
|
21
|
-
class InvertOperatorSynthesisData(OperatorSynthesisData):
|
22
|
-
@property
|
23
|
-
def call_kwargs(self) -> Dict[str, Any]:
|
24
|
-
return {"is_inverse": True}
|
25
|
-
|
26
|
-
|
27
|
-
class ControlOperatorSynthesisData(OperatorSynthesisData):
|
28
|
-
_CTRL_VAR_NAME = "ctrl"
|
29
|
-
|
30
|
-
def __init__(self, ctrl_size: int, ctrl_state: Optional[str] = None) -> None:
|
31
|
-
ctrl_state_kwargs = dict()
|
32
|
-
if ctrl_state is not None:
|
33
|
-
ctrl_state_kwargs["ctrl_state"] = ctrl_state
|
34
|
-
self._ctrl_state = ControlState(
|
35
|
-
name=self._CTRL_VAR_NAME, num_ctrl_qubits=ctrl_size, **ctrl_state_kwargs
|
36
|
-
)
|
37
|
-
|
38
|
-
@property
|
39
|
-
def call_kwargs(self) -> Dict[str, Any]:
|
40
|
-
return {
|
41
|
-
"control_states": [self._ctrl_state],
|
42
|
-
}
|
43
|
-
|
44
|
-
|
45
|
-
class ComputeOperatorSynthesisData(OperatorSynthesisData):
|
46
|
-
@property
|
47
|
-
def call_kwargs(self) -> Dict[str, Any]:
|
48
|
-
return {"should_control": False}
|
classiq/model/__init__.py
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
from typing import List
|
2
|
-
|
3
|
-
from classiq.interface.generator.model import * # noqa: F403
|
4
|
-
from classiq.interface.generator.model import __all__ as _model_all
|
5
|
-
|
6
|
-
from classiq.model.composite_function_generator import FunctionGenerator
|
7
|
-
from classiq.model.model import Model
|
8
|
-
|
9
|
-
__all__ = ["FunctionGenerator", "Model"]
|
10
|
-
__all__.extend(_model_all)
|
11
|
-
|
12
|
-
|
13
|
-
def __dir__() -> List[str]:
|
14
|
-
return __all__
|
@@ -1,33 +0,0 @@
|
|
1
|
-
from typing import List
|
2
|
-
|
3
|
-
from classiq.interface.generator.function_params import PortDirection
|
4
|
-
from classiq.interface.generator.functions import SynthesisNativeFunctionDefinition
|
5
|
-
from classiq.interface.generator.quantum_function_call import (
|
6
|
-
SynthesisQuantumFunctionCall,
|
7
|
-
)
|
8
|
-
|
9
|
-
from classiq.model import function_handler
|
10
|
-
from classiq.quantum_functions.function_library import FunctionLibrary
|
11
|
-
|
12
|
-
|
13
|
-
class FunctionGenerator(function_handler.FunctionHandler):
|
14
|
-
def __init__(self, function_name: str) -> None:
|
15
|
-
super().__init__()
|
16
|
-
self._name = function_name
|
17
|
-
self._logic_flow_list: List[SynthesisQuantumFunctionCall] = list()
|
18
|
-
|
19
|
-
@property
|
20
|
-
def _body(self) -> List[SynthesisQuantumFunctionCall]:
|
21
|
-
return self._logic_flow_list
|
22
|
-
|
23
|
-
def to_function_definition(self) -> SynthesisNativeFunctionDefinition:
|
24
|
-
return SynthesisNativeFunctionDefinition(
|
25
|
-
name=self._name,
|
26
|
-
body=self._body,
|
27
|
-
port_declarations=self._port_declarations,
|
28
|
-
input_ports_wiring=self._external_port_wiring[PortDirection.Input],
|
29
|
-
output_ports_wiring=self._external_port_wiring[PortDirection.Output],
|
30
|
-
)
|
31
|
-
|
32
|
-
def create_library(self) -> None:
|
33
|
-
self.include_library(FunctionLibrary())
|