classiq 0.92.0__py3-none-any.whl → 0.93.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.
@@ -42,7 +42,7 @@ def _pyqsp_get_phases(
42
42
 
43
43
  parity = (len(poly_coeffs) + 1) % 2
44
44
  reduced_coefs = poly_coeffs[parity::2]
45
- phases, err, tot_iter, opt = newton_solver(reduced_coefs, parity, crit=tol)
45
+ _phases, err, _tot_iter, opt = newton_solver(reduced_coefs, parity, crit=tol)
46
46
  return opt.full_phases, err
47
47
 
48
48
 
@@ -1,4 +1,4 @@
1
- from typing import TYPE_CHECKING, Any, NoReturn, TypeVar, Union
1
+ from typing import TYPE_CHECKING, Any, NoReturn, Optional, TypeVar, Union
2
2
 
3
3
  import sympy
4
4
 
@@ -377,15 +377,21 @@ def _eval_expr(
377
377
  val = get_sympy_val(val)
378
378
  if expected_type is int and isinstance(val, float) and int(val) == val:
379
379
  val = int(val)
380
- if not isinstance(val, expected_type) and (
381
- not isinstance(val, QmodAnnotatedExpression)
382
- or not isinstance(val.get_type(val.root), expected_qmod_type)
383
- ):
380
+
381
+ failing_type: Optional[str] = None
382
+ if isinstance(val, QmodAnnotatedExpression):
383
+ val_type = val.get_type(val.root)
384
+ if not isinstance(val_type, expected_qmod_type):
385
+ failing_type = val_type.raw_qmod_type_name
386
+ elif not isinstance(val, expected_type):
387
+ failing_type = type(val).__name__
388
+ if failing_type is not None:
384
389
  raise ClassiqExpansionError(
385
390
  f"When inferring the type of parameter {param_name!r}: "
386
- f"{type_name} {attr_name} must be {expected_qmod_type.__name__}, got "
387
- f"{str(val)!r}"
391
+ f"{type_name} {attr_name} must be {expected_qmod_type().qmod_type_name}, "
392
+ f"got {str(val)!r} of type {failing_type}"
388
393
  )
394
+
389
395
  expr = Expression(expr=str(val))
390
396
  expr._evaluated_expr = EvaluatedExpression(value=val)
391
397
  return expr
@@ -3,5 +3,5 @@ from packaging.version import Version
3
3
  # This file was generated automatically
4
4
  # Please don't track in version control (DONTTRACK)
5
5
 
6
- SEMVER_VERSION = '0.92.0'
6
+ SEMVER_VERSION = '0.93.0'
7
7
  VERSION = str(Version(SEMVER_VERSION))
@@ -66,6 +66,10 @@ class ClassiqValueError(ClassiqError, ValueError):
66
66
  pass
67
67
 
68
68
 
69
+ class ClassiqTypeError(ClassiqError, TypeError):
70
+ pass
71
+
72
+
69
73
  class ClassiqArithmeticError(ClassiqValueError):
70
74
  pass
71
75
 
@@ -245,7 +245,9 @@ class GenerativeInterpreter(BaseInterpreter):
245
245
  def emit_variable_declaration(
246
246
  self, variable_declaration: VariableDeclarationStatement
247
247
  ) -> None:
248
- VariableDeclarationStatementEmitter(self).emit(variable_declaration)
248
+ VariableDeclarationStatementEmitter(
249
+ self, allow_symbolic_vars=self._symbolic_parameters_switch
250
+ ).emit(variable_declaration)
249
251
 
250
252
  @emit.register
251
253
  def emit_classical_if(self, classical_if: ClassicalIf) -> None:
@@ -62,6 +62,12 @@ class AssignmentResultProcessor(Emitter[QuantumAssignmentOperation]):
62
62
  if isinstance(result_symbol, ClassicalSymbol):
63
63
  return False
64
64
  result_type = result_symbol.quantum_type
65
+ if not isinstance(result_type, QuantumScalar):
66
+ raise ClassiqExpansionError(
67
+ f"Cannot assign into a non-scalar quantum variable "
68
+ f"{str(result_symbol.handle)!r} of type "
69
+ f"{result_type.raw_qmod_type_name}"
70
+ )
65
71
 
66
72
  if not (
67
73
  isinstance(op, ArithmeticOperation)
@@ -3,6 +3,7 @@ from typing import TYPE_CHECKING, Union, cast
3
3
  from classiq.interface.exceptions import ClassiqExpansionError
4
4
  from classiq.interface.generator.functions.classical_type import ClassicalType
5
5
  from classiq.interface.generator.functions.concrete_types import ConcreteType
6
+ from classiq.interface.helpers.text_utils import readable_list, s
6
7
  from classiq.interface.model.handle_binding import HandleBinding
7
8
  from classiq.interface.model.quantum_type import QuantumType
8
9
  from classiq.interface.model.variable_declaration_statement import (
@@ -13,11 +14,21 @@ from classiq.evaluators.parameter_types import (
13
14
  evaluate_type_in_classical_symbol,
14
15
  evaluate_type_in_quantum_symbol,
15
16
  )
17
+ from classiq.evaluators.qmod_annotated_expression import QmodAnnotatedExpression
16
18
  from classiq.model_expansions.quantum_operations.emitter import Emitter
17
19
  from classiq.model_expansions.scope import ClassicalSymbol, Evaluated, QuantumSymbol
18
20
 
21
+ if TYPE_CHECKING:
22
+ from classiq.model_expansions.interpreters.base_interpreter import BaseInterpreter
23
+
19
24
 
20
25
  class VariableDeclarationStatementEmitter(Emitter[VariableDeclarationStatement]):
26
+ def __init__(
27
+ self, interpreter: "BaseInterpreter", allow_symbolic_vars: bool = False
28
+ ) -> None:
29
+ super().__init__(interpreter)
30
+ self._allow_symbolic_vars = allow_symbolic_vars
31
+
21
32
  def emit(self, variable_declaration: VariableDeclarationStatement, /) -> bool:
22
33
  var_decl = variable_declaration.model_copy(
23
34
  update=dict(back_ref=variable_declaration.uuid)
@@ -29,36 +40,57 @@ class VariableDeclarationStatementEmitter(Emitter[VariableDeclarationStatement])
29
40
  )
30
41
  var_value: Union[QuantumSymbol, ClassicalSymbol]
31
42
  if variable_declaration.is_quantum:
32
- if TYPE_CHECKING:
33
- assert isinstance(var_decl.qmod_type, QuantumType)
34
- updated_quantum_type = evaluate_type_in_quantum_symbol(
35
- var_decl.qmod_type,
36
- self._current_scope,
37
- var_decl.name,
38
- )
39
- var_decl.qmod_type = updated_quantum_type
40
- var_value = QuantumSymbol(
41
- handle=HandleBinding(name=var_decl.name),
42
- quantum_type=updated_quantum_type,
43
- )
44
- self._builder.current_block.captured_vars.init_var(
45
- var_decl.name, self._builder.current_function
46
- )
43
+ var_value = self._get_quantum_var(var_decl)
47
44
  else:
48
- if TYPE_CHECKING:
49
- assert isinstance(var_decl.qmod_type, ClassicalType)
50
- updated_classical_type = evaluate_type_in_classical_symbol(
51
- var_decl.qmod_type,
52
- self._current_scope,
53
- var_decl.name,
54
- )
55
- var_decl.qmod_type = cast(ConcreteType, updated_classical_type)
56
- var_value = ClassicalSymbol(
57
- handle=HandleBinding(name=var_decl.name),
58
- classical_type=updated_classical_type,
59
- )
45
+ var_value = self._get_classical_var(var_decl)
60
46
  self._current_scope[variable_declaration.name] = Evaluated(
61
47
  value=var_value, defining_function=self._builder.current_function
62
48
  )
63
49
  self.emit_statement(var_decl)
64
50
  return True
51
+
52
+ def _get_quantum_var(self, var_decl: VariableDeclarationStatement) -> QuantumSymbol:
53
+ updated_quantum_type = evaluate_type_in_quantum_symbol(
54
+ cast(QuantumType, var_decl.qmod_type),
55
+ self._current_scope,
56
+ var_decl.name,
57
+ )
58
+ if not self._allow_symbolic_vars:
59
+ symbolic_variables = list(
60
+ dict.fromkeys(
61
+ classical_var.name
62
+ for expr in updated_quantum_type.expressions
63
+ if isinstance(expr_val := expr.value.value, QmodAnnotatedExpression)
64
+ for classical_var in expr_val.get_classical_vars().values()
65
+ )
66
+ )
67
+ if len(symbolic_variables) > 0:
68
+ raise ClassiqExpansionError(
69
+ f"Variable type is instantiated with non-compile-time "
70
+ f"variable{s(symbolic_variables)} "
71
+ f"{readable_list(symbolic_variables, quote=True)}"
72
+ )
73
+ var_decl.qmod_type = updated_quantum_type
74
+ var_value = QuantumSymbol(
75
+ handle=HandleBinding(name=var_decl.name),
76
+ quantum_type=updated_quantum_type,
77
+ )
78
+ self._builder.current_block.captured_vars.init_var(
79
+ var_decl.name, self._builder.current_function
80
+ )
81
+ return var_value
82
+
83
+ def _get_classical_var(
84
+ self, var_decl: VariableDeclarationStatement
85
+ ) -> ClassicalSymbol:
86
+ updated_classical_type = evaluate_type_in_classical_symbol(
87
+ cast(ClassicalType, var_decl.qmod_type),
88
+ self._current_scope,
89
+ var_decl.name,
90
+ )
91
+ var_decl.qmod_type = cast(ConcreteType, updated_classical_type)
92
+ var_value = ClassicalSymbol(
93
+ handle=HandleBinding(name=var_decl.name),
94
+ classical_type=updated_classical_type,
95
+ )
96
+ return var_value
@@ -13,6 +13,7 @@ from classiq.qmod.builtins.operations import (
13
13
  from classiq.qmod.qfunc import qfunc
14
14
  from classiq.qmod.qmod_variable import Const, Permutable, QArray, QBit, QNum
15
15
  from classiq.qmod.symbolic import pi
16
+ from classiq.qmod.utilities import suppress_return_value
16
17
 
17
18
 
18
19
  def _b_operator(q: QBit) -> None:
@@ -27,7 +28,7 @@ def _qct_d_operator(x: Const[QNum], q: QBit) -> None:
27
28
 
28
29
 
29
30
  @qfunc
30
- def _qct_pi_operator(x: Permutable[QArray[QBit]], q: Const[QBit]) -> None:
31
+ def _qct_pi_operator(x: Permutable[QNum], q: Const[QBit]) -> None:
31
32
  control(
32
33
  q == 1,
33
34
  lambda: [
@@ -65,8 +66,8 @@ def _d1_operator(x: QArray[QBit], q: QBit) -> None:
65
66
  PHASE(-omega_exp, q)
66
67
 
67
68
 
68
- def _pi2_operator(x: QArray[QBit], q: QBit) -> None:
69
- control(q == 1, lambda: inplace_add(1, x)) # type:ignore[arg-type]
69
+ def _pi2_operator(x: QNum, q: QBit) -> None:
70
+ control(q == 1, lambda: inplace_add(1, x)), # type:ignore[arg-type]
70
71
 
71
72
 
72
73
  def _j_operator(q: QBit) -> None:
@@ -78,19 +79,23 @@ def _b_t_operator(q: QBit) -> None:
78
79
  S(q)
79
80
 
80
81
 
81
- def _d0dt_operator(x: QArray, q: QBit) -> None:
82
- x_num: QNum = QNum(size=x.len)
83
- bind(x, x_num)
82
+ @suppress_return_value
83
+ def _d0dt_operator(x: QNum, q: QBit) -> None:
84
84
  _b_t_operator(q)
85
- control(x_num == 0, lambda: _j_operator(q))
86
- bind(x_num, x)
85
+ control(x == 0, lambda: _j_operator(q))
87
86
 
88
87
 
89
88
  def _un_dag_operator(x: QArray[QBit], q: QBit) -> None:
90
89
  _d1_operator(x, q)
91
90
  invert(lambda: _qct_pi_operator(x, q))
92
- _d0dt_operator(x, q)
93
- invert(lambda: _pi2_operator(x, q))
91
+ x_num: QNum = QNum(size=x.len)
92
+ within_apply(
93
+ lambda: bind(x, x_num),
94
+ lambda: [
95
+ _d0dt_operator(x_num, q),
96
+ invert(lambda: _pi2_operator(x_num, q)),
97
+ ],
98
+ )
94
99
 
95
100
 
96
101
  @qfunc
@@ -660,6 +660,14 @@ def _validate_operand(stmt_block: Any, num_params: int = 0) -> None:
660
660
  )
661
661
  if isinstance(stmt_block, QCallable):
662
662
  return
663
+ if not callable(stmt_block):
664
+ _raise_operand_error(
665
+ lambda operation_name, operand_arg_name: (
666
+ f"Argument {operand_arg_name!r} to {operation_name!r} must be a "
667
+ f"callable object"
668
+ ),
669
+ num_params,
670
+ )
663
671
  op_spec = inspect.getfullargspec(stmt_block)
664
672
  params = op_spec.args[: len(op_spec.args) - len(op_spec.defaults or ())]
665
673
  if len(params) > num_params or (
@@ -1,7 +1,7 @@
1
1
  import sys
2
2
  from typing import TYPE_CHECKING, Any
3
3
 
4
- from classiq.interface.exceptions import ClassiqInternalError
4
+ from classiq.interface.exceptions import ClassiqInternalError, ClassiqTypeError
5
5
  from classiq.interface.generator.expressions.expression import Expression
6
6
  from classiq.interface.generator.functions.classical_type import Bool, ClassicalType
7
7
  from classiq.interface.model.handle_binding import HandleBinding
@@ -37,7 +37,9 @@ def declare_classical_variable(
37
37
 
38
38
  def assign_classical_variable(target: CParam, value: Any, frame_depth: int) -> None:
39
39
  if not isinstance(value, SYMBOLIC_TYPES):
40
- raise TypeError(f"Invalid argument {value!r} for classical variable assignment")
40
+ raise ClassiqTypeError(
41
+ f"Invalid argument {value!r} for classical variable assignment"
42
+ )
41
43
 
42
44
  if TYPE_CHECKING:
43
45
  assert QCallable.CURRENT_EXPANDABLE is not None
@@ -15,6 +15,7 @@ from typing import (
15
15
  overload,
16
16
  )
17
17
 
18
+ import numpy as np
18
19
  import pydantic
19
20
  from sympy import Basic
20
21
  from typing_extensions import Self
@@ -400,6 +401,7 @@ def _validate_classical_arg(
400
401
  and not _is_legal_iterable(arg)
401
402
  and not is_dataclass(arg) # type: ignore[unreachable]
402
403
  and not isinstance(arg, QmodStructInstance)
404
+ and not np.isscalar(arg)
403
405
  )
404
406
  try:
405
407
  is_pydantic_classical_type = isinstance(
@@ -6,6 +6,8 @@ from typing import Any
6
6
 
7
7
  import sympy
8
8
 
9
+ from classiq.interface.exceptions import ClassiqTypeError
10
+
9
11
  from classiq.qmod.utilities import qmod_val_to_expr_str
10
12
 
11
13
 
@@ -24,7 +26,7 @@ class Symbolic:
24
26
  try:
25
27
  return bool(ast.literal_eval(self._expr))
26
28
  except ValueError:
27
- raise TypeError(
29
+ raise ClassiqTypeError(
28
30
  f"Symbolic expression {self._expr!r} cannot be converted to bool"
29
31
  ) from None
30
32
 
@@ -38,12 +40,16 @@ class SymbolicExpr(Symbolic):
38
40
  if not isinstance(
39
41
  lhs, (SymbolicExpr, int, float, bool, PythonEnum, sympy.Basic)
40
42
  ):
41
- raise TypeError(f"Invalid lhs argument {lhs!r} for binary operation {op!r}")
43
+ raise ClassiqTypeError(
44
+ f"Invalid lhs argument {lhs!r} for binary operation {op!r}"
45
+ )
42
46
 
43
47
  if not isinstance(
44
48
  rhs, (SymbolicExpr, int, float, bool, PythonEnum, sympy.Basic)
45
49
  ):
46
- raise TypeError(f"Invalid lhs argument {rhs!r} for binary operation {op!r}")
50
+ raise ClassiqTypeError(
51
+ f"Invalid lhs argument {rhs!r} for binary operation {op!r}"
52
+ )
47
53
 
48
54
  lhs_str = qmod_val_to_expr_str(lhs)
49
55
  if not isinstance(lhs, (int, float, bool, PythonEnum)):
@@ -62,7 +68,9 @@ class SymbolicExpr(Symbolic):
62
68
  @staticmethod
63
69
  def _unary_op(arg: Any, op: str) -> SymbolicExpr:
64
70
  if not isinstance(arg, (SymbolicExpr, int, float, bool)):
65
- raise TypeError(f"Invalid argument {arg!r} for unary operation {op!r}")
71
+ raise ClassiqTypeError(
72
+ f"Invalid argument {arg!r} for unary operation {op!r}"
73
+ )
66
74
 
67
75
  arg_is_quantum = isinstance(arg, SymbolicExpr) and arg.is_quantum
68
76
 
@@ -1,12 +1,11 @@
1
- Metadata-Version: 2.3
1
+ Metadata-Version: 2.4
2
2
  Name: classiq
3
- Version: 0.92.0
3
+ Version: 0.93.0
4
4
  Summary: Classiq's Python SDK for quantum computing
5
- License: Proprietary
6
5
  Keywords: quantum computing,quantum circuits,quantum algorithms,QAD,QDL
7
6
  Author: Classiq Technologies
8
- Author-email: support@classiq.io
9
- Requires-Python: >=3.9, <3.13
7
+ Author-email: Classiq Technologies <support@classiq.io>
8
+ License-File: LICENSE.txt
10
9
  Classifier: Development Status :: 4 - Beta
11
10
  Classifier: License :: Other/Proprietary License
12
11
  Classifier: Intended Audience :: Developers
@@ -26,40 +25,44 @@ Classifier: Topic :: Software Development :: Code Generators
26
25
  Classifier: Topic :: Software Development :: Compilers
27
26
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
28
27
  Classifier: Typing :: Typed
28
+ Requires-Dist: configargparse>=1.5.3,<2
29
+ Requires-Dist: pydantic>=2.10.4,<3
30
+ Requires-Dist: keyring>=23.5.0,<24
31
+ Requires-Dist: pyomo>=6.9,<6.10
32
+ Requires-Dist: httpx>=0.23.0,<1
33
+ Requires-Dist: packaging~=23.2
34
+ Requires-Dist: numpy>=1.26.4,<2 ; python_full_version < '3.10'
35
+ Requires-Dist: numpy<3.0.0 ; python_full_version >= '3.10'
36
+ Requires-Dist: networkx>=3.2.0,<4.0.0
37
+ Requires-Dist: matplotlib>=3.4.3,<4
38
+ Requires-Dist: tabulate>=0.8.9,<1
39
+ Requires-Dist: pandas>=2.0.0,<3
40
+ Requires-Dist: sympy>=1.13.0,<2
41
+ Requires-Dist: plotly>=5.7.0,<6
42
+ Requires-Dist: numexpr>=2.7.3,<3
43
+ Requires-Dist: scipy>=1.11.0,<2
44
+ Requires-Dist: black~=24.0
45
+ Requires-Dist: pydantic-settings>=2.4.0,<3
46
+ Requires-Dist: tqdm>=4.67.1,<5
47
+ Requires-Dist: zstandard>=0.23.0,<0.24
48
+ Requires-Dist: ipywidgets>=7.7.1,<8.0.0 ; extra == 'analyzer-sdk'
49
+ Requires-Dist: jupyterlab>=4.2.5,<5 ; extra == 'analyzer-sdk'
50
+ Requires-Dist: notebook>=7.2.2,<8 ; extra == 'analyzer-sdk'
51
+ Requires-Dist: openfermion==1.6.1 ; python_full_version < '3.10' and extra == 'chemistry'
52
+ Requires-Dist: openfermion==1.7.1 ; python_full_version >= '3.10' and extra == 'chemistry'
53
+ Requires-Dist: openfermionpyscf>=0.5 ; extra == 'chemistry'
54
+ Requires-Dist: torch~=2.3 ; extra == 'qml'
55
+ Requires-Dist: torchvision>=0.18,<1.0 ; extra == 'qml'
56
+ Requires-Dist: cvxpy>=1.7.1,<2 ; extra == 'qsp'
57
+ Requires-Dist: pyqsp>=0.2.0,<0.3 ; extra == 'qsp'
58
+ Requires-Python: >=3.9, <3.13
59
+ Project-URL: documentation, https://docs.classiq.io/
60
+ Project-URL: examples, https://github.com/Classiq/classiq-library
61
+ Project-URL: homepage, https://classiq.io
29
62
  Provides-Extra: analyzer-sdk
30
63
  Provides-Extra: chemistry
31
64
  Provides-Extra: qml
32
65
  Provides-Extra: qsp
33
- Requires-Dist: ConfigArgParse (>=1.5.3,<2.0.0)
34
- Requires-Dist: Pyomo (>=6.9,<6.10)
35
- Requires-Dist: black (>=24.0,<25.0)
36
- Requires-Dist: cvxpy ; extra == "qsp"
37
- Requires-Dist: httpx (>=0.23.0,<1)
38
- Requires-Dist: ipywidgets ; extra == "analyzer-sdk"
39
- Requires-Dist: jupyterlab ; extra == "analyzer-sdk"
40
- Requires-Dist: keyring (>=23.5.0,<24.0.0)
41
- Requires-Dist: matplotlib (>=3.4.3,<4.0.0)
42
- Requires-Dist: networkx (>=3.2.0,<4.0.0)
43
- Requires-Dist: notebook ; extra == "analyzer-sdk"
44
- Requires-Dist: numexpr (>=2.7.3,<3.0.0)
45
- Requires-Dist: numpy (<3.0.0) ; python_version >= "3.10"
46
- Requires-Dist: numpy (>=1.26.4,<2.0.0) ; python_version < "3.10"
47
- Requires-Dist: openfermion ; extra == "chemistry"
48
- Requires-Dist: openfermionpyscf ; extra == "chemistry"
49
- Requires-Dist: packaging (>=23.2,<24.0)
50
- Requires-Dist: pandas (>=1.4.0,<3.0.0)
51
- Requires-Dist: plotly (>=5.7.0,<6.0.0)
52
- Requires-Dist: pydantic (>=2.10.4,<3.0.0)
53
- Requires-Dist: pydantic-settings (>=2.4.0,<3.0.0)
54
- Requires-Dist: pyqsp ; extra == "qsp"
55
- Requires-Dist: scipy (>=1.10.0,<2.0.0) ; python_version < "3.12"
56
- Requires-Dist: scipy (>=1.11.0,<2.0.0) ; python_version >= "3.12"
57
- Requires-Dist: sympy (>=1.13.0,<2.0.0)
58
- Requires-Dist: tabulate (>=0.8.9,<1)
59
- Requires-Dist: torch ; extra == "qml"
60
- Requires-Dist: torchvision ; extra == "qml"
61
- Requires-Dist: tqdm (>=4.67.1,<5.0.0)
62
- Requires-Dist: zstandard (>=0.23.0,<0.24.0)
63
66
  Description-Content-Type: text/markdown
64
67
 
65
68
  <p align="center">
@@ -82,4 +85,3 @@ For information about Classiq's SDK, see the
82
85
  ## License
83
86
 
84
87
  See [license](https://classiq.io/license).
85
-
@@ -86,7 +86,7 @@ classiq/applications/qnn/qlayer.py,sha256=AfLgvNfWQpF-srLbGC4DIZYCm7PLPQ7sHI0B_J
86
86
  classiq/applications/qnn/torch_utils.py,sha256=vCUsTyvDCSwY9Z9rcK9QslEzAVag3caTHFXXH8iblUg,4430
87
87
  classiq/applications/qnn/types.py,sha256=mDElTam102OolLt1KWrVHZPW_9jNTUyhohJLEN-SOs0,835
88
88
  classiq/applications/qsp/__init__.py,sha256=8Zr-aJ3SQMD7f4YaUikbKB6gDD0gOhPD_ZO9poaEtqY,169
89
- classiq/applications/qsp/qsp.py,sha256=7OwHZRF53gjk3OkyVTOMcF1G-JsafDYC4356H3L0yW8,13533
89
+ classiq/applications/qsp/qsp.py,sha256=U3XDc6jryWFeYPT8kZ8GJAp5cEv8r32LGooahto28W4,13535
90
90
  classiq/applications/qsvm/__init__.py,sha256=ctM9hllKY9zuc3Ps8YgLBrDXgPInJNwJ3nVpTurs8MY,191
91
91
  classiq/applications/qsvm/qsvm.py,sha256=vuc7TDHcxN9VvPRDufRmXcIVHkCpzjz2QuY48WJN6Is,177
92
92
  classiq/applications/qsvm/qsvm_data_generation.py,sha256=BIXBAxYNAvwZi1pVQJeSPTa5b5CTRaejuAlBgyy3d9E,1604
@@ -95,7 +95,7 @@ classiq/evaluators/argument_types.py,sha256=ecSLiaXuI9iEGIePNSM-MrTxulOb5pMPfcoK
95
95
  classiq/evaluators/classical_expression.py,sha256=5xtDBn-hAguMuoQ9VCVLMd8jVIY2aD_uBpOgoWO0c3Q,2626
96
96
  classiq/evaluators/control.py,sha256=aJvAFwWEV__hbjD97z4dcjCYf8O0Pcbg6WNjP5ymqHM,3472
97
97
  classiq/evaluators/expression_evaluator.py,sha256=eMuGRocdNj3uQbcMGWBamVyFQKlh1H3MXnNzzENSYNY,1668
98
- classiq/evaluators/parameter_types.py,sha256=AJ_6T-U-5PqgQK9Hm9bjQRjzWl55liIzrqIg2K2sKGM,16450
98
+ classiq/evaluators/parameter_types.py,sha256=oAyzhzrHUOn5wSYhBeoo43KihvKzG72hPVyxU6jrGHo,16677
99
99
  classiq/evaluators/qmod_annotated_expression.py,sha256=zJvgU88tX4ak--_nb0IyhWWndLhCqR0Mh3ZoibDtKnk,11227
100
100
  classiq/evaluators/qmod_expression_visitors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
101
101
  classiq/evaluators/qmod_expression_visitors/out_of_place_node_transformer.py,sha256=V77ZsxPvr52zSpUF3XuuP9_7khZRMIxon02I9gaayUo,682
@@ -135,7 +135,7 @@ classiq/execution/qnn.py,sha256=S7I7OK59RF9jUcfhN4zso4bF-0HnqYnZID11iquA-lM,2467
135
135
  classiq/execution/user_budgets.py,sha256=aQ92T6fWMpnWUXe6WvOHHu1BdFGKjpbdPa8avoS5PaQ,2573
136
136
  classiq/executor.py,sha256=uLr1640-DZtdPP0T6fCsmUf1Jj7QPumyoE09mJ8lVo0,2308
137
137
  classiq/interface/__init__.py,sha256=cg7hD_XVu1_jJ1fgwmT0rMIoZHopNVeB8xtlmMx-E_A,83
138
- classiq/interface/_version.py,sha256=w9vYtT-dxIXj_X_ms7M1MPpVGQS9-c-lQJYZywYoKuM,197
138
+ classiq/interface/_version.py,sha256=0WIJMEoCzLhDjeLCYC93_TntjGj5QL6x43PPgzVPFKM,197
139
139
  classiq/interface/analyzer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
140
140
  classiq/interface/analyzer/analysis_params.py,sha256=lhytuFXEU7sYXo2vtvoGpuwWsB-RglOAjtQ9jT0vpn8,3010
141
141
  classiq/interface/analyzer/cytoscape_graph.py,sha256=MpeRBIYS1TfwYwiFpgTO51IE0KoxhY510pmEM3S0rbw,2361
@@ -187,7 +187,7 @@ classiq/interface/debug_info/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NM
187
187
  classiq/interface/debug_info/back_ref_util.py,sha256=plWBiBMfFIY6aYAR3NVYComsY394ysLVdk_yFy1qcC4,791
188
188
  classiq/interface/debug_info/debug_info.py,sha256=edYYZyJpAbACibNcyqVyiyhBaZMSOzo8yt0qDoCAPzo,4437
189
189
  classiq/interface/enum_utils.py,sha256=QxkxLGgON8vdSzLZzHFlPEBJoGOqoIwpESEfLfRqN0w,312
190
- classiq/interface/exceptions.py,sha256=fXl3esnLP03zds09BLxIJSN4aIwx2PVPX0Do8awfLjg,4418
190
+ classiq/interface/exceptions.py,sha256=TZWXvuQSYqE-Yy5uF95DF22L-wKLmr1fbeXOmfW2p3k,4478
191
191
  classiq/interface/execution/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
192
192
  classiq/interface/execution/iqcc.py,sha256=pS4c4y37i8NtKRcXDtamdir7021A82w0gSw5Ar368kQ,838
193
193
  classiq/interface/execution/primitives.py,sha256=ET5rK8WAISdhekLJA-nUk3uPHkf3u6XqX2b1lr8aI-k,1501
@@ -434,12 +434,12 @@ classiq/model_expansions/generative_functions.py,sha256=RVE6bpuY1LxH95x3ZWNKb5Lv
434
434
  classiq/model_expansions/interpreters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
435
435
  classiq/model_expansions/interpreters/base_interpreter.py,sha256=tS6NzNgo7Q4T5aD2cWJRvVnY2KNfjE3CuJfRxZ8n7FA,14767
436
436
  classiq/model_expansions/interpreters/frontend_generative_interpreter.py,sha256=1cLioVejTqjOiINvaXmVgg0aVbyTaGobGLJHnQCxqpA,3784
437
- classiq/model_expansions/interpreters/generative_interpreter.py,sha256=tcZEY7PS7W4fEFxtD50dnLjMeg-xc5YsgkcmZO-0zrA,16163
437
+ classiq/model_expansions/interpreters/generative_interpreter.py,sha256=vtgKqzEq6j6TioaZfZjiCzah-pYe716zrlBp1MP8COc,16239
438
438
  classiq/model_expansions/quantum_operations/__init__.py,sha256=unuHvw4nfyOwE_UyOcyLNHJfr_ZutX7msHNZ8yrToDM,398
439
439
  classiq/model_expansions/quantum_operations/allocate.py,sha256=BbdvJmlUK-UBFL7g3SDiBqbhODAO6vOfx1ZTHZts5r8,10584
440
440
  classiq/model_expansions/quantum_operations/arithmetic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
441
441
  classiq/model_expansions/quantum_operations/arithmetic/explicit_boolean_expressions.py,sha256=M61ftzpwB5MMqVFvyRucqBr2l6AofSaTLLc5ccATklA,2180
442
- classiq/model_expansions/quantum_operations/assignment_result_processor.py,sha256=cyTwU5ZCb5950etoXGOKklhvQv7MVi9XnlV5wuv3Kgg,11803
442
+ classiq/model_expansions/quantum_operations/assignment_result_processor.py,sha256=aj8_CRddYYNksVY8sKj6GgkXYW7WbBJ0LEIx0GoU9Q4,12092
443
443
  classiq/model_expansions/quantum_operations/bind.py,sha256=6-jIhZEAXi5cb7xuOB4YN1KiDTK_DuXUNnkTqfD2jc4,6760
444
444
  classiq/model_expansions/quantum_operations/block_evaluator.py,sha256=06EYOb5CVDUvqYXKk-s-rcoY3rQ2Dr2XWUkqNzT0N0w,4734
445
445
  classiq/model_expansions/quantum_operations/bounds.py,sha256=p2qb5MybXCTEQ2zeJRN3P3CDtSyhLSjJ_QZ_-xEWjBM,1394
@@ -454,7 +454,7 @@ classiq/model_expansions/quantum_operations/handle_evaluator.py,sha256=VGh8W_pRh
454
454
  classiq/model_expansions/quantum_operations/quantum_function_call.py,sha256=epgknrzzwDV1zN9PDLEMelu2wFzaM8UMWBbaD28CzBc,3448
455
455
  classiq/model_expansions/quantum_operations/repeat_block_evaluator.py,sha256=kV6quFtPq8YFrYqM5JrERxDRYJrjJOBueTvNOu-qAgc,1412
456
456
  classiq/model_expansions/quantum_operations/skip_control_verifier.py,sha256=HQWGRhZeJKM6BOBkXNbfhihvgkj_uuZ6tHSzEQd7yIc,866
457
- classiq/model_expansions/quantum_operations/variable_decleration.py,sha256=rfYQ5CQFn6W2S3e6pj8nXxjf-h35cbpNKchkmLBDZBQ,2839
457
+ classiq/model_expansions/quantum_operations/variable_decleration.py,sha256=hDslofkCvWaTILcgDN4Oh8JDCediClqjf_PwFQCaav8,4141
458
458
  classiq/model_expansions/scope.py,sha256=k_m-eM67E9TXyT5zujP1whsPdwwVg5TIvckzIZJPM0U,11061
459
459
  classiq/model_expansions/scope_initialization.py,sha256=MvQ2RE0Ie8xRHgK2Fo2ZQHzYG2SIkdKDlZMXZXtv4BA,5407
460
460
  classiq/model_expansions/transformers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -471,7 +471,7 @@ classiq/open_library/__init__.py,sha256=bmg_qqXCXo85hcU7_QCce-qYGrpAVSFNwTKCClsc
471
471
  classiq/open_library/functions/__init__.py,sha256=mO2-E_Ui5g-aeQi0nNFt6L09q4w6APxvnD-AYY_gOko,3648
472
472
  classiq/open_library/functions/amplitude_amplification.py,sha256=WH2dqYbmmWHZX7beu7-EipnC6Gzn4En4D2gmB2sXvZI,3997
473
473
  classiq/open_library/functions/amplitude_estimation.py,sha256=iCkca5SQN_HQoJWk1_tLT56fHT72hu5QIt2pxSZQRko,1766
474
- classiq/open_library/functions/discrete_sine_cosine_transform.py,sha256=mWlRIl_xHIvVclNxnIbGirPwbqTj6gE1ScjQEqnwb-M,4508
474
+ classiq/open_library/functions/discrete_sine_cosine_transform.py,sha256=G80JWzjJPnW-inncR7DiuDbvg9_4dOFiL5FLy1ZdRMc,4640
475
475
  classiq/open_library/functions/grover.py,sha256=RbsTMZdF860Pco-l6_6QkfSSwQ1SN10R4nYwXaIIaQ4,4652
476
476
  classiq/open_library/functions/hea.py,sha256=Nc9pj-4mGLZVQQKCaVRgrcPd4eViuz3Ji5ZeYzaCozg,4889
477
477
  classiq/open_library/functions/lcu.py,sha256=wzkavQZfIl1IsKPUou-sN6flb23YjT_4uR_khqG25Vk,4105
@@ -503,11 +503,11 @@ classiq/qmod/builtins/functions/mid_circuit_measurement.py,sha256=UYtVbsl1vZSBU7
503
503
  classiq/qmod/builtins/functions/operators.py,sha256=3IWFjUFhljY5CEe2ZU9Z8m33FzwM9E80IADcDcxVuNI,270
504
504
  classiq/qmod/builtins/functions/qsvm.py,sha256=Db7mW8Do2OuM7MjoMAtBgIFgKrcp49J34EetI2Pu5d8,572
505
505
  classiq/qmod/builtins/functions/standard_gates.py,sha256=mhIA7z8YTX-IY4hkwIklAEMmXB9oZ2YH7GSh2saGdqY,15936
506
- classiq/qmod/builtins/operations.py,sha256=z7ScKYnqzaa_Nz7UmjkEwzrMysa-VC9viT--KqV39BY,28033
506
+ classiq/qmod/builtins/operations.py,sha256=97Rckf_OcmT9JtUJs3wgK1p4lx6P8hT9FL0bxKfZwyE,28317
507
507
  classiq/qmod/builtins/structs.py,sha256=LkHvDjyNt-33QLmKyzslI6ZMqICI7vHrIYXFK8V1j6U,6646
508
508
  classiq/qmod/cfunc.py,sha256=e3zWNEloBBPy-wJaGI1K5cdNFbd3oq0o4TUY2YDr6ks,1087
509
509
  classiq/qmod/classical_function.py,sha256=iHm6T719PUZQPwuNSkouaMA8J9yHrrHUpP-2AQjsA5g,1088
510
- classiq/qmod/classical_variable.py,sha256=J3xonT7sOHLA-BHPxAoiSHEn_tkf-1cLevo3iv8g0Jw,2616
510
+ classiq/qmod/classical_variable.py,sha256=OTZr316ChpZwmSyMtYgB7US9jYeljkKwkt9aq4dpWUM,2663
511
511
  classiq/qmod/cparam.py,sha256=WqWG_XLYU4SVYDHHXsZNFu0QcE4dfaEM-0C_Q1OOFs0,2007
512
512
  classiq/qmod/create_model_function.py,sha256=vZowFbyQLSXo42Tmlogc9MDQTRgc_IkZVWaidP_ehV4,2858
513
513
  classiq/qmod/declaration_inferrer.py,sha256=vKXLLhaDQz89cHIBFC-BQvka__FgA0EP-SdlJSurPxs,8639
@@ -526,7 +526,7 @@ classiq/qmod/qmod_constant.py,sha256=GgwSFWiXnOH8HKQGgA_AWR3TcP9CS-v7jt6qAO5fraA
526
526
  classiq/qmod/qmod_parameter.py,sha256=200NaEWife2_IzJUAwHMwuBJTKM0qpXm8nz6vvtNchI,6461
527
527
  classiq/qmod/qmod_variable.py,sha256=jHHbhX3HUVNdZlEzteks0u_wnUru0vo7lPbI4RSqWgU,32595
528
528
  classiq/qmod/quantum_callable.py,sha256=RifbkZEmZ4COOHfluPD2jfd-qYSda2ytW173diR3tI4,2501
529
- classiq/qmod/quantum_expandable.py,sha256=Wp8BRTl2bAr-Qd-a02XaguYH-DbXHI5rHm2FHEfKZW0,19313
529
+ classiq/qmod/quantum_expandable.py,sha256=iPo-IkLMDWsf_50SznxuAy93OWxHU3P4mWWxOpbacJI,19365
530
530
  classiq/qmod/quantum_function.py,sha256=wFMti9chpV2wdA9Xrc92zqKsKSmkhfZO4LTwaBWorbU,15383
531
531
  classiq/qmod/semantics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
532
532
  classiq/qmod/semantics/annotation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -545,7 +545,7 @@ classiq/qmod/semantics/validation/signature_validation.py,sha256=WZerCfEwgbCPmXD
545
545
  classiq/qmod/semantics/validation/type_hints.py,sha256=OsArqgU7I_W4nbGEQ7OGODkrxi57CnZGhwy5hyJr_Ow,1340
546
546
  classiq/qmod/semantics/validation/types_validation.py,sha256=uVyW1WlDvUQU7emzHT75QTS0huIlFZr9DgUXLQ7s7vQ,4856
547
547
  classiq/qmod/symbolic.py,sha256=B_54ogYIjzFltD_r75-Z4-AdlJD0HkQHpqMbZSBGIoE,8211
548
- classiq/qmod/symbolic_expr.py,sha256=RZkqJqaydahlOW4Qcf5Zvj9FrxPpwxT-YCZUonYA-mI,7424
548
+ classiq/qmod/symbolic_expr.py,sha256=z49EyU_bzqc8qOlaOWcWH8A87ACS6aIkYzsLC0DmUBU,7601
549
549
  classiq/qmod/symbolic_type.py,sha256=27tY6pJMFt3EmXIKDJPrNFIUuanIlEu4OueseARbk10,260
550
550
  classiq/qmod/type_attribute_remover.py,sha256=NZmTXAsngWqthXjE8n-n6yE72fiWTFM12-TXXJ1kJ-Q,1242
551
551
  classiq/qmod/utilities.py,sha256=QAhvaBzNfbCdqmBgxTnPaP6m5PO264N_7I5ygsUjebY,5611
@@ -553,6 +553,7 @@ classiq/qmod/write_qmod.py,sha256=rG0EFDpq13wjIuBVLocPQWyZMx8aM64eOn2k3D7Jq0g,35
553
553
  classiq/quantum_program.py,sha256=q4vTnRqNr4VWjrZPJVreX3L_C3s60Nnb1GOp3Wv3SJ0,2088
554
554
  classiq/synthesis.py,sha256=_BvUamS310QBN89W8mxyA1Kx_9vr_p6K5kwlf0MGTXw,9686
555
555
  classiq/visualization.py,sha256=SvLkPNN-RFd74wnH83eBNANjX11phBTo0wedTazr7VQ,975
556
- classiq-0.92.0.dist-info/METADATA,sha256=Zt7KuMIb93pfAONRvb2RX5ffPu7CEJc9QmOHwiONJOE,3601
557
- classiq-0.92.0.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
558
- classiq-0.92.0.dist-info/RECORD,,
556
+ classiq-0.93.0.dist-info/licenses/LICENSE.txt,sha256=pIUwTWPybNElw1us8qbLyUuGDCH1_YioM4ol5tg0Zzw,13367
557
+ classiq-0.93.0.dist-info/WHEEL,sha256=Jb20R3Ili4n9P1fcwuLup21eQ5r9WXhs4_qy7VTrgPI,79
558
+ classiq-0.93.0.dist-info/METADATA,sha256=YWMFSOvPVCFqE0VqE00VP9hvonVrCAcvzKehGdKaYoM,3793
559
+ classiq-0.93.0.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: uv 0.8.15
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,27 @@
1
+ LICENSE AGREEMENT
2
+
3
+ By clicking the "accept" or "ok" button and/or by using the Software (as defined below) you expressly acknowledge and agree that you, on behalf of yourself or your organization ("Licensee", "you"), are entering into a legal agreement with Classiq Technologies Ltd., a company incorporated under the laws of the State of Israel having its principal place of business at 3 Daniel Frisch Street, Tel Aviv-Yafo, Israel ("Classiq") (each, a "Party" and collectively, the "Parties"), and have understood and agree to comply with, and be legally bound by, the terms and conditions of this Evaluation Agreement ("Agreement"). You hereby waive any applicable rights to require an original (non-electronic) signature or delivery or retention of non-electronic records, to the extent not prohibited under applicable law. If you do not agree to be bound by this Agreement, please do not use the Software.
4
+
5
+ 1. License.
6
+
7
+ 1.1. Subject to the terms of this Agreement, Classiq grants Licensee a limited, nonexclusive, non-assignable and nontransferable, fully revocable license to install, access and use Classiq's quantum algorithm design platform ("Software"), during the Evaluation Period (as defined below), solely for internal evaluation purposes ("Evaluation License"). Notwithstanding anything to the contrary, Classiq may, at its sole discretion, deny access to the Software or part thereof at any time.
8
+
9
+ 1.2. During the Evaluation Period, Licensee may allow its employees who are explicitly authorized by Licensee to use the Software, solely for the Licensee's evaluation of the Software (each, a "Permitted User"). Each Permitted User shall be bound by the terms and conditions in writing at least as restrictive as those contained in this Agreement and Licensee shall be liable for any breach of the terms of this Agreement by a Permitted User. Licensee shall immediately report any unauthorized access or use of the Software to Classiq. During the Evaluation Period, Classiq may collect, record and save information about Permitted Users' use and interaction with the Software, for the purposes of improving Classiq's services to you in relation to your use of the Software ("Interaction Information"). Subject to the terms of this Section 1.2, Classiq shall destroy all Interaction Information at the expiry or termination of this Agreement. Notwithstanding anything to the contrary, Classiq may save, store and retain Interaction Information for internal purposes such as (but not limited to) improving or developing products, provision of services to all clients and collaborating with partners, provided that such Interaction Information is aggregated and anonymized ("Anonymized Aggregated Information"). Classiq shall not be required to destroy any Anonymized Aggregated Information at the expiry or termination of this Agreement. Licensee represents and warrants that it has obtained the necessary consents from each Permitted User to allow Classiq to collect record and save the Interaction Information and to retain the Anonymized Aggregated Information in accordance with this Section 1.2.
10
+
11
+ 2. Title and Ownership. Other than the Evaluation License granted under this Agreement to Licensee during the Evaluation Period, all intellectual property rights, ownership rights, and proprietary rights in and to: (a) the Software, including any and all derivatives, updates, upgrades, changes and improvements thereof; and (b) Feedback (as defined below), lie and remain exclusively with Classiq and/or its licensors. Nothing herein constitutes a waiver of Classiq's intellectual property rights under any law. All rights not expressly granted hereunder are reserved by Classiq.
12
+
13
+ 3. Feedback. As a condition of the Evaluation License, Licensee shall provide Classiq with detailed Feedback (defined below), which may be used by Classiq at its sole discretion. "Feedback" means ideas, suggestions, or similar feedback about performance of the Software and/or for improving the Software, as well as the results of the evaluation. All Feedback shall be provided 'as is' with no warranty on behalf of Licensee and shall be deemed the exclusive property of Classiq, and Licensee hereby irrevocably transfers and assigns to Classiq all intellectual property rights to the Feedback and waives any and all moral rights or economic rights that Licensee may have with respect thereto.
14
+
15
+ 4. Restricted Use. Unless otherwise explicitly specified and permitted under this Agreement, without the prior written consent of Classiq, Licensee may not, directly or indirectly (i) copy, modify, create derivative works of or distribute any part of the Software (including by incorporation into its products); (ii) sell, license (or sub-license), lease, assign, transfer, pledge, or share Licensee's rights under this Agreement with any third party; (iii) use any "open source" or "copyleft software" in a manner that would require Classiq to disclose the source code of the Software to any third party; (iv) disclose the results of any testing or benchmarking of the Software to any third party; (v) disassemble, decompile, reverse engineer or attempt to discover the Software's source code or underlying algorithms; (vi) use the Software in a manner that violates or infringes any rights of any third party, including but not limited to, privacy rights, publicity rights or intellectual property rights; (vii) remove or alter any trademarks or other proprietary notices related to the Software; (viii) circumvent, disable or otherwise interfere with security-related features of the Software or features that enforce use limitations; (ix) export, make available or use the Software in any manner prohibited by applicable laws (including without limitation export control laws); and/or (x) transmit any malicious code (i.e., software viruses, Trojan horses, worms, malware or other computer instructions, devices, or techniques that erase data or programming, infect, disrupt, damage, disable, or shut down a computer system or any component of such computer system) or other unlawful material in connection with the Software.
16
+
17
+ 5. Open Source Components. The Software may use or include third party open source software, files, libraries or components that may be distributed to Licensee and are subject to third party open source license terms. If there is a conflict between any open source license and the terms of this Agreement, then the open source license terms shall prevail but solely in connection with the related third party open source software. Classiq makes no warranty or indemnity hereunder with respect to any third party open source software.
18
+
19
+ 6. Disclaimer of Warranties. EXCEPT AS EXPLICITLY SET FORTH IN THIS AGREEMENT THE SOFTWARE AND ANY OUTPUT WHICH MAY BE PROVIDED TO LICENSEE HEREUNDER ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND FOR INTERNAL EVALUATION PURPOSES ONLY. CLASSIQ DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO IMPLIED WARRANTIES OF MERCHANTABILITY FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON INFRINGEMENT, WITH RESPECT TO THE SOFTWARE AND ANY OTHER OUTPUT WHICH MAY BE PROVIDED TO LICENSEE HEREUNDER.
20
+
21
+ 7. Limitation of Liability. GIVEN THE NATURE OF THIS PILOT AGREEMENT AND THE FACT THAT THIS AGREEMENT IS FOR EVALUATION PURPOSES, TO THE MAXIMUM EXTENT PERMITTED BY LAW: (I) CLASSIQ SHALL NOT BE LIABLE FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING WITHOUT LIMITATION, ANY LOST PROFITS OR GOODWILL, LOST OR DAMAGED DATA OR DOCUMENTATION, LOST SAVINGS OR OTHER INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING IN ANY WAY OUT OF THIS AGREEMENT, THE SOFTWARE, OR LICENSEE'S USE OF THE SOFTWARE; AND (II) IN NO EVENT SHALL CLASSIQ'S AGGREGATE LIABILITY FOR ANY DAMAGES ARISING OUT OF OR RELATED TO THIS AGREEMENT, WHETHER IN CONTRACT OR TORT, OR OTHERWISE EXCEED $100.
22
+
23
+ 8. Confidentiality. Each Party may have access to certain non-public information of the other Party, in any form or media, including without limitation trade secrets and other information related to the products, software, technology, data, know-how, or business of the other Party, and any other information that a reasonable person should have reason to believe is proprietary, confidential, or competitively sensitive (the "Confidential Information"). Each Party shall take reasonable measures, at least as protective as those taken to protect its own confidential information, but in no event less than reasonable care, to protect the other Party's Confidential Information from disclosure to a third party. The receiving party's obligations under this Section, with respect to any Confidential Information of the disclosing party, shall not apply to and/or shall terminate if such information: (a) was already lawfully known to the receiving party at the time of disclosure by the disclosing party; (b) was disclosed to the receiving party by a third party who had the right to make such disclosure without any confidentiality restrictions; (c) is, or through no fault of the receiving party has become, generally available to the public; or (d) was independently developed by the receiving party without access to, or use of, the disclosing party's Confidential Information. Neither Party shall use or disclose the Confidential Information of the other Party except for performance of its obligations under this Agreement. The receiving party shall only permit access to the disclosing party's Confidential Information to its respective employees, consultants, affiliates, agents and subcontractors having a need to know such information in connection with the abovementioned purpose, who either (i) have signed a non-disclosure agreement with the receiving party containing terms at least as restrictive as those contained herein or (ii) are otherwise bound by a duty of confidentiality to the receiving party at least as restrictive as the terms set forth herein. The receiving party will be allowed to disclose Confidential Information to the extent that such disclosure is required by law or by the order or a court of similar judicial or administrative body, provided that it notifies the disclosing Party of such required disclosure to enable disclosing party to seek a protective order or otherwise prevent or restrict such disclosure. All right, title and interest in and to Confidential Information are and shall remain the sole and exclusive property of the disclosing Party.
24
+
25
+ 9. Term and Termination. This Agreement shall commence on the date you accept the terms of this Agreement and shall expire ninety (90) days later ("Evaluation Period"), unless earlier terminated by either Party in writing on three (3) days' prior written notice to the other Party. Licensee's unauthorized use of the Software or otherwise failure to comply with the terms of this Agreement shall result in automatic immediate termination of this Agreement, upon notice by Classiq. Upon expiration or termination, (a) each Party shall promptly return or destroy all Confidential Information received from the other Party, and all copes thereof, (b) Licensee shall: (i) immediately cease access to and use of the Software; (ii) return the Software and all copies thereof, as well as it related documentation in Licensee or any of its Permitted Users' possession or control to Classiq; (iii) erase or otherwise destroy all copies of the Software in its possession, which are fixed or resident in the memory or hard disks of its devices; and (iv) return to Classiq any and all of Classiq's Confidential Information then in its possession. The following provisions shall survive the expiration or termination of this Agreement: 2 (Title and Ownership), 6 (Disclaimer of Warranties), 7 (Limitation of Liability), 8 (Confidentiality), 9 (Term and Termination) and 10 (Miscellaneous).
26
+
27
+ 10. Miscellaneous. This Agreement shall be governed by and construed under the laws of the State of Israel. The competent courts of Tel Aviv-Yafo, Israel shall have the exclusive jurisdiction with respect to any dispute and action arising under or in relation to this Agreement. Licensee shall not assign this Agreement without the prior written consent of Classiq. Any prohibited assignment shall be null and void. No waiver of rights arising under this Agreement shall be effective unless in writing and signed by the Party against whom such waiver is sought to be enforced. No failure or delay by either Party in exercising any right, power or remedy under this Agreement shall operate as a waiver of any such right, power or remedy and/or prejudice any rights of such Party. This Agreement does not, and shall not be construed to create any relationship, partnership, joint venture, employer-employee, agency, or franchisor-franchisee relationship between the Parties. Nothing in this Agreement shall be construed to limit or delay either Classiq's or Licensee's ability to seek immediate relief at law or in equity for any breach by the other. This Agreement constitutes the complete and entire agreement of the Parties and supersedes all previous communications between them, oral or written, relating to the subject matter hereof. This Agreement may be executed in two or more counterparts, each of which shall be deemed an original and all of which shall together be deemed to constitute one and the same agreement.
@@ -1,4 +0,0 @@
1
- Wheel-Version: 1.0
2
- Generator: poetry-core 2.1.3
3
- Root-Is-Purelib: true
4
- Tag: py3-none-any