classiq 0.102.0__py3-none-any.whl → 1.0.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 +2 -0
- classiq/_internals/authentication/auth0.py +29 -0
- classiq/_internals/authentication/auth_flow_factory.py +43 -0
- classiq/_internals/authentication/machine_credentials_flow.py +26 -0
- classiq/_internals/authentication/password_manager.py +84 -0
- classiq/_internals/authentication/token_manager.py +24 -8
- classiq/analyzer/show_interactive_hack.py +0 -8
- classiq/applications/chemistry/op_utils.py +32 -0
- classiq/applications/combinatorial_optimization/combinatorial_problem.py +1 -1
- classiq/evaluators/qmod_annotated_expression.py +1 -1
- classiq/evaluators/qmod_expression_visitors/qmod_expression_evaluator.py +1 -8
- classiq/evaluators/qmod_expression_visitors/qmod_expression_simplifier.py +1 -1
- classiq/evaluators/qmod_node_evaluators/attribute_evaluation.py +2 -2
- classiq/evaluators/qmod_node_evaluators/binary_op_evaluation.py +18 -29
- classiq/evaluators/qmod_node_evaluators/min_max_evaluation.py +1 -6
- classiq/evaluators/qmod_node_evaluators/numeric_attrs_utils.py +1 -7
- classiq/evaluators/qmod_type_inference/quantum_type_comparison.py +52 -0
- classiq/execution/all_hardware_devices.py +59 -1
- classiq/execution/execution_session.py +1 -1
- classiq/execution/functions/__init__.py +13 -0
- classiq/execution/functions/expectation_value.py +106 -0
- classiq/execution/functions/minimize.py +90 -0
- classiq/execution/functions/sample.py +76 -0
- classiq/execution/functions/state_vector.py +113 -0
- classiq/execution/functions/util/__init__.py +0 -0
- classiq/execution/functions/util/_logging.py +19 -0
- classiq/execution/functions/util/backend_preferences.py +188 -0
- classiq/execution/functions/util/constants.py +9 -0
- classiq/execution/functions/util/parse_provider_backend.py +90 -0
- classiq/interface/_version.py +1 -1
- classiq/interface/backend/backend_preferences.py +81 -0
- classiq/interface/backend/provider_config/providers/aqt.py +1 -1
- classiq/interface/backend/provider_config/providers/azure.py +1 -2
- classiq/interface/backend/provider_config/providers/ibm.py +1 -1
- classiq/interface/backend/quantum_backend_providers.py +14 -0
- classiq/interface/exceptions.py +0 -4
- classiq/interface/executor/result.py +9 -5
- classiq/interface/generator/arith/binary_ops.py +62 -2
- classiq/interface/generator/arith/number_utils.py +15 -6
- classiq/interface/generator/compiler_keywords.py +1 -0
- classiq/interface/generator/function_param_list.py +8 -2
- classiq/interface/generator/function_params.py +1 -1
- classiq/interface/generator/functions/builtins/internal_operators.py +5 -9
- classiq/interface/generator/functions/classical_type.py +60 -0
- classiq/interface/generator/functions/type_name.py +36 -0
- classiq/interface/generator/generated_circuit_data.py +0 -2
- classiq/interface/generator/transpiler_basis_gates.py +1 -0
- classiq/interface/generator/types/compilation_metadata.py +18 -0
- classiq/interface/hardware.py +2 -0
- classiq/interface/helpers/model_normalizer.py +42 -6
- classiq/interface/interface_version.py +1 -1
- classiq/interface/model/invert.py +8 -0
- classiq/interface/model/model.py +19 -0
- classiq/interface/model/model_visitor.py +4 -2
- classiq/interface/model/quantum_type.py +36 -0
- classiq/interface/model/statement_block.py +0 -4
- classiq/interface/qubits_mapping/__init__.py +4 -0
- classiq/interface/qubits_mapping/path_expr_range.py +69 -0
- classiq/interface/qubits_mapping/qubits_mapping.py +231 -0
- classiq/interface/qubits_mapping/slices.py +112 -0
- classiq/model_expansions/arithmetic.py +6 -0
- classiq/model_expansions/capturing/captured_vars.py +16 -12
- classiq/model_expansions/function_builder.py +9 -1
- classiq/model_expansions/interpreters/base_interpreter.py +9 -8
- classiq/model_expansions/interpreters/generative_interpreter.py +9 -24
- classiq/model_expansions/quantum_operations/arithmetic/explicit_boolean_expressions.py +1 -0
- classiq/model_expansions/quantum_operations/assignment_result_processor.py +132 -28
- classiq/model_expansions/quantum_operations/bind.py +4 -0
- classiq/model_expansions/quantum_operations/call_emitter.py +5 -35
- classiq/model_expansions/quantum_operations/emitter.py +1 -4
- classiq/model_expansions/quantum_operations/expression_evaluator.py +0 -3
- classiq/model_expansions/visitors/uncomputation_signature_inference.py +0 -9
- classiq/qmod/builtins/functions/__init__.py +21 -9
- classiq/qmod/builtins/functions/allocation.py +0 -36
- classiq/qmod/builtins/functions/arithmetic.py +183 -0
- classiq/qmod/builtins/functions/exponentiation.py +32 -2
- classiq/qmod/builtins/functions/gray_code.py +23 -0
- classiq/qmod/builtins/functions/mcx_func.py +10 -0
- classiq/qmod/builtins/operations.py +2 -38
- classiq/qmod/builtins/structs.py +22 -3
- classiq/qmod/native/pretty_printer.py +1 -12
- classiq/qmod/pretty_print/pretty_printer.py +1 -17
- classiq/qmod/qmod_parameter.py +4 -0
- classiq/qmod/qmod_variable.py +38 -63
- classiq/qmod/quantum_function.py +43 -7
- classiq/qmod/semantics/validation/function_name_collisions_validation.py +7 -4
- classiq/qmod/semantics/validation/model_validation.py +7 -2
- classiq/qmod/symbolic_type.py +4 -2
- classiq/qprog_to_cudaq.py +347 -0
- {classiq-0.102.0.dist-info → classiq-1.0.0.dist-info}/METADATA +4 -1
- {classiq-0.102.0.dist-info → classiq-1.0.0.dist-info}/RECORD +93 -76
- classiq/interface/generator/amplitude_loading.py +0 -103
- classiq/interface/model/quantum_expressions/amplitude_loading_operation.py +0 -77
- {classiq-0.102.0.dist-info → classiq-1.0.0.dist-info}/WHEEL +0 -0
- {classiq-0.102.0.dist-info → classiq-1.0.0.dist-info}/licenses/LICENSE.txt +0 -0
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
from collections.abc import Mapping, Sequence
|
|
2
|
-
from typing import Literal
|
|
3
|
-
|
|
4
|
-
import pydantic
|
|
5
|
-
|
|
6
|
-
from classiq.interface.exceptions import ClassiqValueError
|
|
7
|
-
from classiq.interface.generator.amplitude_loading import (
|
|
8
|
-
AMPLITUDE_IO_NAME,
|
|
9
|
-
TARGET_OUTPUT_NAME,
|
|
10
|
-
)
|
|
11
|
-
from classiq.interface.model.handle_binding import (
|
|
12
|
-
ConcreteHandleBinding,
|
|
13
|
-
HandleBinding,
|
|
14
|
-
)
|
|
15
|
-
from classiq.interface.model.quantum_expressions.quantum_expression import (
|
|
16
|
-
QuantumAssignmentOperation,
|
|
17
|
-
)
|
|
18
|
-
from classiq.interface.model.quantum_statement import HandleMetadata
|
|
19
|
-
from classiq.interface.model.quantum_type import QuantumBit, QuantumNumeric, QuantumType
|
|
20
|
-
|
|
21
|
-
MULTI_VARS_UNSUPPORTED_ERROR = (
|
|
22
|
-
"Amplitude Loading with more than one input variable is unsupported."
|
|
23
|
-
)
|
|
24
|
-
|
|
25
|
-
VAR_TYPE_ILLEGAL = "Amplitude Loading input variable should be a quantum numeric"
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
class AmplitudeLoadingOperation(QuantumAssignmentOperation):
|
|
29
|
-
kind: Literal["AmplitudeLoadingOperation"]
|
|
30
|
-
|
|
31
|
-
_result_type: QuantumType = pydantic.PrivateAttr(default_factory=QuantumBit)
|
|
32
|
-
|
|
33
|
-
@property
|
|
34
|
-
def wiring_inouts(
|
|
35
|
-
self,
|
|
36
|
-
) -> Mapping[str, ConcreteHandleBinding]:
|
|
37
|
-
inouts = {self.result_name(): self.result_var}
|
|
38
|
-
if len(self.var_handles) == 1:
|
|
39
|
-
inouts[AMPLITUDE_IO_NAME] = self.var_handles[0]
|
|
40
|
-
return inouts
|
|
41
|
-
|
|
42
|
-
@property
|
|
43
|
-
def readable_inouts(self) -> Sequence[HandleMetadata]:
|
|
44
|
-
inouts = [
|
|
45
|
-
HandleMetadata(
|
|
46
|
-
handle=self.result_var,
|
|
47
|
-
readable_location="on the left-hand side of an in-place assignment",
|
|
48
|
-
)
|
|
49
|
-
]
|
|
50
|
-
if len(self.var_handles) == 1:
|
|
51
|
-
inouts.append(
|
|
52
|
-
HandleMetadata(
|
|
53
|
-
handle=self.var_handles[0],
|
|
54
|
-
readable_location="in an expression",
|
|
55
|
-
)
|
|
56
|
-
)
|
|
57
|
-
return inouts
|
|
58
|
-
|
|
59
|
-
@property
|
|
60
|
-
def wiring_outputs(self) -> Mapping[str, HandleBinding]:
|
|
61
|
-
return {}
|
|
62
|
-
|
|
63
|
-
def initialize_var_types(
|
|
64
|
-
self,
|
|
65
|
-
var_types: dict[str, QuantumType],
|
|
66
|
-
machine_precision: int,
|
|
67
|
-
) -> None:
|
|
68
|
-
if len(var_types) != 1:
|
|
69
|
-
raise ClassiqValueError(MULTI_VARS_UNSUPPORTED_ERROR)
|
|
70
|
-
var_type = list(var_types.values())[0]
|
|
71
|
-
if not isinstance(var_type, QuantumNumeric):
|
|
72
|
-
raise ClassiqValueError(VAR_TYPE_ILLEGAL)
|
|
73
|
-
super().initialize_var_types(var_types, machine_precision)
|
|
74
|
-
|
|
75
|
-
@classmethod
|
|
76
|
-
def result_name(cls) -> str:
|
|
77
|
-
return TARGET_OUTPUT_NAME
|
|
File without changes
|
|
File without changes
|