qilisdk 0.1.5__py3-none-any.whl → 0.1.6__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. qilisdk/analog/hamiltonian.py +3 -3
  2. qilisdk/analog/linear_schedule.py +5 -2
  3. qilisdk/analog/schedule.py +8 -5
  4. qilisdk/backends/cuda_backend.py +1 -1
  5. qilisdk/backends/qutip_backend.py +2 -21
  6. qilisdk/{common → core}/model.py +7 -7
  7. qilisdk/{common → core}/qtensor.py +1 -1
  8. qilisdk/{common → core}/variables.py +42 -4
  9. qilisdk/cost_functions/cost_function.py +1 -1
  10. qilisdk/cost_functions/model_cost_function.py +5 -5
  11. qilisdk/cost_functions/observable_cost_function.py +2 -2
  12. qilisdk/digital/ansatz.py +0 -3
  13. qilisdk/digital/circuit.py +2 -2
  14. qilisdk/digital/gates.py +3 -3
  15. qilisdk/functionals/functional.py +2 -2
  16. qilisdk/functionals/functional_result.py +1 -1
  17. qilisdk/functionals/sampling.py +1 -1
  18. qilisdk/functionals/time_evolution.py +3 -3
  19. qilisdk/functionals/time_evolution_result.py +2 -2
  20. qilisdk/optimizers/optimizer_result.py +1 -1
  21. qilisdk/speqtrum/__init__.py +2 -0
  22. qilisdk/speqtrum/speqtrum.py +216 -61
  23. qilisdk/speqtrum/speqtrum_models.py +167 -0
  24. qilisdk/utils/visualization/schedule_renderers.py +6 -1
  25. {qilisdk-0.1.5.dist-info → qilisdk-0.1.6.dist-info}/METADATA +17 -17
  26. {qilisdk-0.1.5.dist-info → qilisdk-0.1.6.dist-info}/RECORD +33 -33
  27. /qilisdk/{common → core}/__init__.py +0 -0
  28. /qilisdk/{common → core}/algorithm.py +0 -0
  29. /qilisdk/{common → core}/exceptions.py +0 -0
  30. /qilisdk/{common → core}/parameterizable.py +0 -0
  31. /qilisdk/{common → core}/result.py +0 -0
  32. {qilisdk-0.1.5.dist-info → qilisdk-0.1.6.dist-info}/WHEEL +0 -0
  33. {qilisdk-0.1.5.dist-info → qilisdk-0.1.6.dist-info}/licenses/LICENCE +0 -0
@@ -24,9 +24,9 @@ from typing import TYPE_CHECKING, Callable, ClassVar
24
24
  import numpy as np
25
25
  from scipy.sparse import csr_matrix, identity, kron, spmatrix
26
26
 
27
- from qilisdk.common.parameterizable import Parameterizable
28
- from qilisdk.common.qtensor import QTensor
29
- from qilisdk.common.variables import BaseVariable, Parameter, Term
27
+ from qilisdk.core.parameterizable import Parameterizable
28
+ from qilisdk.core.qtensor import QTensor
29
+ from qilisdk.core.variables import BaseVariable, Parameter, Term
30
30
  from qilisdk.yaml import yaml
31
31
 
32
32
  from .exceptions import InvalidHamiltonianOperation
@@ -15,7 +15,7 @@ from __future__ import annotations
15
15
 
16
16
  from qilisdk.analog.hamiltonian import Hamiltonian
17
17
  from qilisdk.analog.schedule import Schedule
18
- from qilisdk.common.variables import Number, Parameter, Term
18
+ from qilisdk.core.variables import Number, Parameter, Term
19
19
  from qilisdk.yaml import yaml
20
20
 
21
21
 
@@ -85,7 +85,9 @@ class LinearSchedule(Schedule):
85
85
  if next_idx is None or prev_idx is None or prev_expr is None or next_expr is None:
86
86
  raise ValueError("Something unexpected happened while retrieving the coefficient.")
87
87
  alpha: float = (t - prev_idx) / (next_idx - prev_idx)
88
- return (1 - alpha) * prev_expr + alpha * next_expr
88
+ e1 = next_expr * alpha
89
+ e2 = prev_expr * (1 - alpha)
90
+ return e1 + e2
89
91
 
90
92
  def get_coefficient(self, time_step: float, hamiltonian_key: str) -> Number:
91
93
  """
@@ -98,6 +100,7 @@ class LinearSchedule(Schedule):
98
100
  Returns:
99
101
  Number: Evaluated coefficient value.
100
102
  """
103
+ time_step = float(time_step)
101
104
  val = self.get_coefficient_expression(time_step=time_step, hamiltonian_key=hamiltonian_key)
102
105
  return val.evaluate({}) if isinstance(val, Term) else (val.evaluate() if isinstance(val, Parameter) else val)
103
106
 
@@ -18,8 +18,8 @@ from typing import Callable
18
18
  from loguru import logger
19
19
 
20
20
  from qilisdk.analog.hamiltonian import Hamiltonian
21
- from qilisdk.common.parameterizable import Parameterizable
22
- from qilisdk.common.variables import BaseVariable, Number, Parameter, Term
21
+ from qilisdk.core.parameterizable import Parameterizable
22
+ from qilisdk.core.variables import BaseVariable, Number, Parameter, Term
23
23
  from qilisdk.utils.visualization import ScheduleStyle
24
24
  from qilisdk.yaml import yaml
25
25
 
@@ -110,7 +110,7 @@ class Schedule(Parameterizable):
110
110
  f"The schedule can only contain Parameters, but a generic variable was provided ({time_step})"
111
111
  )
112
112
  self._parameters[v.label] = v
113
- if isinstance(coeff, BaseVariable):
113
+ elif isinstance(coeff, BaseVariable):
114
114
  if not isinstance(coeff, Parameter):
115
115
  raise ValueError(
116
116
  f"The schedule can only contain Parameters, but a generic variable was provided ({time_step})"
@@ -256,12 +256,12 @@ class Schedule(Parameterizable):
256
256
  self._hamiltonians[label] = hamiltonian
257
257
  self._schedule[0][label] = 0
258
258
  self._nqubits = max(self._nqubits, hamiltonian.nqubits)
259
- for l, param in hamiltonian.parameters.items():
259
+ for _, param in hamiltonian.parameters.items():
260
260
  self._parameters[param.label] = param
261
261
 
262
262
  if schedule is not None:
263
263
  for t in range(int(self.T / self.dt)):
264
- time_step = schedule(t, **kwargs)
264
+ time_step = schedule(float(t), **kwargs)
265
265
  if isinstance(time_step, Term):
266
266
  for v in time_step.variables():
267
267
  if not isinstance(v, Parameter):
@@ -422,6 +422,7 @@ class Schedule(Parameterizable):
422
422
  Returns:
423
423
  Number: The coefficient of the Hamiltonian at the specified time, or 0 if not defined.
424
424
  """
425
+ time_step = float(time_step)
425
426
  val = self.get_coefficient_expression(time_step=time_step, hamiltonian_key=hamiltonian_key)
426
427
  return val.evaluate({}) if isinstance(val, Term) else (val.evaluate() if isinstance(val, Parameter) else val)
427
428
 
@@ -502,3 +503,5 @@ class Schedule(Parameterizable):
502
503
  renderer.plot()
503
504
  if filepath:
504
505
  renderer.save(filepath)
506
+ else:
507
+ renderer.show()
@@ -24,7 +24,7 @@ from loguru import logger
24
24
 
25
25
  from qilisdk.analog.hamiltonian import Hamiltonian, PauliI, PauliOperator, PauliX, PauliY, PauliZ
26
26
  from qilisdk.backends.backend import Backend
27
- from qilisdk.common.qtensor import QTensor
27
+ from qilisdk.core.qtensor import QTensor
28
28
  from qilisdk.digital.exceptions import UnsupportedGateError
29
29
  from qilisdk.digital.gates import RX, RY, RZ, SWAP, U1, U2, U3, Adjoint, BasicGate, Controlled, H, I, M, S, T, X, Y, Z
30
30
  from qilisdk.functionals.sampling_result import SamplingResult
@@ -25,7 +25,7 @@ from qutip_qip.operations.gateclass import SingleQubitGate, is_qutip5
25
25
 
26
26
  from qilisdk.analog.hamiltonian import Hamiltonian, PauliI, PauliOperator
27
27
  from qilisdk.backends.backend import Backend
28
- from qilisdk.common.qtensor import QTensor, tensor_prod
28
+ from qilisdk.core.qtensor import QTensor, tensor_prod
29
29
  from qilisdk.digital import RX, RY, RZ, SWAP, U1, U2, U3, Circuit, H, I, M, S, T, X, Y, Z
30
30
  from qilisdk.digital.exceptions import UnsupportedGateError
31
31
  from qilisdk.digital.gates import Adjoint, BasicGate, Controlled
@@ -33,7 +33,6 @@ from qilisdk.functionals.sampling_result import SamplingResult
33
33
  from qilisdk.functionals.time_evolution_result import TimeEvolutionResult
34
34
 
35
35
  if TYPE_CHECKING:
36
- from qilisdk.common.variables import Number
37
36
  from qilisdk.functionals.sampling import Sampling
38
37
  from qilisdk.functionals.time_evolution import TimeEvolution
39
38
 
@@ -183,28 +182,10 @@ class QutipBackend(Backend):
183
182
  )
184
183
  )
185
184
 
186
- def get_hamiltonian_schedule(
187
- hamiltonian: str, dt: float, schedule: dict[int, dict[str, Number]], T: float
188
- ) -> Callable:
189
- def get_coeff(t: float) -> Number:
190
- if int(t / dt) in schedule:
191
- return schedule[int(t / dt)][hamiltonian]
192
- time_step = int(t / dt)
193
- while time_step > 0:
194
- time_step -= 1
195
- if time_step in schedule:
196
- return schedule[time_step][hamiltonian]
197
- return 0
198
-
199
- return get_coeff
200
- # return lambda t: schedule[int(t / dt)][ham] if int(t / dt) < int(T / dt) else schedule[int(T / dt)][ham]
201
-
202
185
  H_t = [
203
186
  [
204
187
  qutip_hamiltonians[i],
205
- get_hamiltonian_schedule(
206
- h, functional.schedule.dt, functional.schedule.schedule, functional.schedule.T
207
- ),
188
+ np.array([functional.schedule.get_coefficient(t, h) for t in tlist]),
208
189
  ]
209
190
  for i, h in enumerate(functional.schedule.hamiltonians)
210
191
  ]
@@ -103,8 +103,8 @@ class Constraint:
103
103
  Example:
104
104
  .. code-block:: python
105
105
 
106
- from qilisdk.common.model import Constraint
107
- from qilisdk.common.variables import BinaryVariable, LEQ
106
+ from qilisdk.core.model import Constraint
107
+ from qilisdk.core.variables import BinaryVariable, LEQ
108
108
 
109
109
  x = BinaryVariable("x")
110
110
  constraint = Constraint("limit", LEQ(x, 1))
@@ -195,8 +195,8 @@ class Objective:
195
195
  Example:
196
196
  .. code-block:: python
197
197
 
198
- from qilisdk.common.model import Objective, ObjectiveSense
199
- from qilisdk.common.variables import BinaryVariable
198
+ from qilisdk.core.model import Objective, ObjectiveSense
199
+ from qilisdk.core.variables import BinaryVariable
200
200
 
201
201
  x = BinaryVariable("x")
202
202
  obj = Objective("profit", 3 * x, sense=ObjectiveSense.MAXIMIZE)
@@ -275,7 +275,7 @@ class Model:
275
275
  Example:
276
276
  .. code-block:: python
277
277
 
278
- from qilisdk.common import BinaryVariable, LEQ, Model
278
+ from qilisdk.core import BinaryVariable, LEQ, Model
279
279
 
280
280
  num_items = 4
281
281
  values = [1, 3, 5, 2]
@@ -517,8 +517,8 @@ class QUBO(Model):
517
517
  Example:
518
518
  .. code-block:: python
519
519
 
520
- from qilisdk.common.model import QUBO
521
- from qilisdk.common.variables import BinaryVariable
520
+ from qilisdk.core.model import QUBO
521
+ from qilisdk.core.variables import BinaryVariable
522
522
 
523
523
  x0, x1 = BinaryVariable("x0"), BinaryVariable("x1")
524
524
  qubo = QUBO("Example")
@@ -66,7 +66,7 @@ class QTensor:
66
66
  .. code-block:: python
67
67
 
68
68
  import numpy as np
69
- from qilisdk.common import QTensor
69
+ from qilisdk.core import QTensor
70
70
 
71
71
  ket = QTensor(np.array([[1.0], [0.0]]))
72
72
  density = ket * ket.adjoint()
@@ -23,7 +23,7 @@ from typing import TYPE_CHECKING, Iterator, Mapping, Sequence, TypeVar
23
23
  import numpy as np
24
24
  from loguru import logger
25
25
 
26
- from qilisdk.common.exceptions import EvaluationError, InvalidBoundsError, NotSupportedOperation, OutOfBoundsException
26
+ from qilisdk.core.exceptions import EvaluationError, InvalidBoundsError, NotSupportedOperation, OutOfBoundsException
27
27
  from qilisdk.yaml import yaml
28
28
 
29
29
  if TYPE_CHECKING:
@@ -890,6 +890,9 @@ class BaseVariable(ABC):
890
890
  if isinstance(other, Term):
891
891
  return other + self
892
892
 
893
+ if isinstance(other, np.generic):
894
+ other = other.item()
895
+
893
896
  return Term(elements=[self, other], operation=Operation.ADD)
894
897
 
895
898
  __radd__ = __add__
@@ -901,6 +904,9 @@ class BaseVariable(ABC):
901
904
  if isinstance(other, Term):
902
905
  return other * self
903
906
 
907
+ if isinstance(other, np.generic):
908
+ other = other.item()
909
+
904
910
  return Term(elements=[self, other], operation=Operation.MUL)
905
911
 
906
912
  def __rmul__(self, other: Number | BaseVariable | Term) -> Term:
@@ -909,6 +915,9 @@ class BaseVariable(ABC):
909
915
  if isinstance(other, Term):
910
916
  return other * self
911
917
 
918
+ if isinstance(other, np.generic):
919
+ other = other.item()
920
+
912
921
  return Term(elements=[other, self], operation=Operation.MUL)
913
922
 
914
923
  __imul__ = __mul__
@@ -916,11 +925,19 @@ class BaseVariable(ABC):
916
925
  def __sub__(self, other: Number | BaseVariable | Term) -> Term:
917
926
  if not isinstance(other, (Number, BaseVariable, Term)):
918
927
  return NotImplemented
928
+
929
+ if isinstance(other, np.generic):
930
+ other = other.item()
931
+
919
932
  return self + -1 * other
920
933
 
921
934
  def __rsub__(self, other: Number | BaseVariable | Term) -> Term:
922
935
  if not isinstance(other, (Number, BaseVariable, Term)):
923
936
  return NotImplemented
937
+
938
+ if isinstance(other, np.generic):
939
+ other = other.item()
940
+
924
941
  return -1 * self + other
925
942
 
926
943
  __isub__ = __sub__
@@ -935,6 +952,8 @@ class BaseVariable(ABC):
935
952
  if other == 0:
936
953
  raise ValueError("Division by zero is not allowed")
937
954
 
955
+ if isinstance(other, np.generic):
956
+ other = other.item()
938
957
  other = 1 / other
939
958
  return self * other
940
959
 
@@ -979,7 +998,7 @@ class BinaryVariable(BaseVariable):
979
998
  Example:
980
999
  .. code-block:: python
981
1000
 
982
- from qilisdk.common.variables import BinaryVariable
1001
+ from qilisdk.core.variables import BinaryVariable
983
1002
 
984
1003
  x = BinaryVariable("x")
985
1004
  """
@@ -1048,7 +1067,7 @@ class Variable(BaseVariable):
1048
1067
  Example:
1049
1068
  .. code-block:: python
1050
1069
 
1051
- from qilisdk.common.variables import Domain, Variable
1070
+ from qilisdk.core.variables import Domain, Variable
1052
1071
 
1053
1072
  price = Variable("price", domain=Domain.REAL, bounds=(0, 10))
1054
1073
  binary_term = price.to_binary()
@@ -1183,7 +1202,7 @@ class Parameter(BaseVariable):
1183
1202
  Example:
1184
1203
  .. code-block:: python
1185
1204
 
1186
- from qilisdk.common.variables import Parameter
1205
+ from qilisdk.core.variables import Parameter
1187
1206
 
1188
1207
  theta = Parameter("theta", value=0.5)
1189
1208
  theta.set_value(0.75)
@@ -1665,6 +1684,10 @@ class Term:
1665
1684
  if not isinstance(other, (Number, BaseVariable, Term)):
1666
1685
  return NotImplemented
1667
1686
  out = self.to_list() if self.operation == Operation.ADD else [copy.copy(self)]
1687
+
1688
+ if isinstance(other, np.generic):
1689
+ other = other.item()
1690
+
1668
1691
  out.append(other)
1669
1692
  return Term(out, Operation.ADD)
1670
1693
 
@@ -1674,6 +1697,9 @@ class Term:
1674
1697
  if not isinstance(other, (Number, BaseVariable, Term)):
1675
1698
  return NotImplemented
1676
1699
  out = self.to_list() if self.operation == Operation.ADD else [copy.copy(self)]
1700
+
1701
+ if isinstance(other, np.generic):
1702
+ other = other.item()
1677
1703
  out.insert(0, other)
1678
1704
  return Term(out, Operation.ADD)
1679
1705
 
@@ -1683,6 +1709,10 @@ class Term:
1683
1709
  out = self.to_list() if self.operation == Operation.MUL else [copy.copy(self)]
1684
1710
  if len(out) == 0:
1685
1711
  out = [0]
1712
+
1713
+ if isinstance(other, np.generic):
1714
+ other = other.item()
1715
+
1686
1716
  out.append(other)
1687
1717
  return Term(out, Operation.MUL)._unfold_parentheses()
1688
1718
 
@@ -1694,6 +1724,10 @@ class Term:
1694
1724
  out = self.to_list() if self.operation == Operation.MUL else [copy.copy(self)]
1695
1725
  if len(out) == 0:
1696
1726
  out = [0]
1727
+
1728
+ if isinstance(other, np.generic):
1729
+ other = other.item()
1730
+
1697
1731
  out.insert(0, other)
1698
1732
  return Term(out, Operation.MUL)._unfold_parentheses()
1699
1733
 
@@ -1703,6 +1737,10 @@ class Term:
1703
1737
  def __sub__(self, other: Number | BaseVariable | Term) -> Term:
1704
1738
  if not isinstance(other, (Number, BaseVariable, Term)):
1705
1739
  return NotImplemented
1740
+
1741
+ if isinstance(other, np.generic):
1742
+ other = other.item()
1743
+
1706
1744
  return self + -1 * other
1707
1745
 
1708
1746
  def __rsub__(self, other: Number | BaseVariable | Term) -> Term:
@@ -21,7 +21,7 @@ from qilisdk.functionals.sampling_result import SamplingResult
21
21
  from qilisdk.functionals.time_evolution_result import TimeEvolutionResult
22
22
 
23
23
  if TYPE_CHECKING:
24
- from qilisdk.common.variables import Number
24
+ from qilisdk.core.variables import Number
25
25
 
26
26
  TResult = TypeVar("TResult", bound=FunctionalResult)
27
27
 
@@ -17,24 +17,24 @@ from typing import TYPE_CHECKING
17
17
 
18
18
  import numpy as np
19
19
 
20
- from qilisdk.common.model import QUBO, Model
21
- from qilisdk.common.qtensor import QTensor, expect_val, ket
20
+ from qilisdk.core.model import QUBO, Model
21
+ from qilisdk.core.qtensor import QTensor, expect_val, ket
22
22
  from qilisdk.cost_functions.cost_function import CostFunction
23
23
 
24
24
  if TYPE_CHECKING:
25
- from qilisdk.common.variables import Number
25
+ from qilisdk.core.variables import Number
26
26
  from qilisdk.functionals.sampling_result import SamplingResult
27
27
  from qilisdk.functionals.time_evolution_result import TimeEvolutionResult
28
28
 
29
29
 
30
30
  class ModelCostFunction(CostFunction):
31
31
  """
32
- Evaluate the cost of functional results with respect to a :class:`~qilisdk.common.model.Model`.
32
+ Evaluate the cost of functional results with respect to a :class:`~qilisdk.core.model.Model`.
33
33
 
34
34
  Example:
35
35
  .. code-block:: python
36
36
 
37
- from qilisdk.common import BinaryVariable, Model, LEQ
37
+ from qilisdk.core import BinaryVariable, Model, LEQ
38
38
  from qilisdk.cost_functions import ModelCostFunction
39
39
 
40
40
  model = Model("demo")
@@ -18,11 +18,11 @@ from typing import TYPE_CHECKING
18
18
  import numpy as np
19
19
 
20
20
  from qilisdk.analog.hamiltonian import Hamiltonian, PauliOperator
21
- from qilisdk.common.qtensor import QTensor, expect_val, ket, tensor_prod
21
+ from qilisdk.core.qtensor import QTensor, expect_val, ket, tensor_prod
22
22
  from qilisdk.cost_functions.cost_function import CostFunction
23
23
 
24
24
  if TYPE_CHECKING:
25
- from qilisdk.common.variables import Number
25
+ from qilisdk.core.variables import Number
26
26
  from qilisdk.functionals.sampling_result import SamplingResult
27
27
  from qilisdk.functionals.time_evolution_result import TimeEvolutionResult
28
28
 
qilisdk/digital/ansatz.py CHANGED
@@ -188,9 +188,6 @@ class HardwareEfficientAnsatz(Ansatz):
188
188
  # Parameter iterator covering all single-qubit blocks, in order
189
189
  parameter_iterator = iter(self._parameter_blocks())
190
190
 
191
- # U(0)
192
- self._apply_single_qubit_block(parameter_iterator)
193
-
194
191
  # For each remaining layer: U -> E
195
192
  if self.structure == "grouped":
196
193
  for _ in range(self.layers):
@@ -14,8 +14,8 @@
14
14
 
15
15
  import numpy as np
16
16
 
17
- from qilisdk.common.parameterizable import Parameterizable
18
- from qilisdk.common.variables import Parameter, RealNumber
17
+ from qilisdk.core.parameterizable import Parameterizable
18
+ from qilisdk.core.variables import Parameter, RealNumber
19
19
  from qilisdk.utils.visualization import CircuitStyle
20
20
  from qilisdk.yaml import yaml
21
21
 
qilisdk/digital/gates.py CHANGED
@@ -20,8 +20,8 @@ import numpy as np
20
20
  from scipy.linalg import expm
21
21
  from typing_extensions import Self
22
22
 
23
- from qilisdk.common.parameterizable import Parameterizable
24
- from qilisdk.common.variables import Parameter
23
+ from qilisdk.core.parameterizable import Parameterizable
24
+ from qilisdk.core.variables import Parameter
25
25
  from qilisdk.yaml import yaml
26
26
 
27
27
  from .exceptions import (
@@ -924,7 +924,7 @@ class U2(BasicGate):
924
924
  ``U2(phi, gamma) = U2_qiskit/pennylane(phi, gamma) = exp(i*(phi+gamma)/2) U2_qibo(phi, gamma)``
925
925
 
926
926
  Other unitaries you can get from this one are:
927
- - ``U2(phi=0, gamma=np.pi) = H``
927
+ - ``U2(phi=0, gamma=pi) = H``
928
928
  - ``U2(phi=0, gamma=0) = RY(theta=pi/2)``
929
929
  - ``U2(phi=-pi/2, gamma=pi/2) = RX(theta=pi/2)``
930
930
  """
@@ -16,7 +16,7 @@ from __future__ import annotations
16
16
  from abc import ABC
17
17
  from typing import ClassVar, Generic, TypeVar
18
18
 
19
- from qilisdk.common.parameterizable import Parameterizable
19
+ from qilisdk.core.parameterizable import Parameterizable
20
20
  from qilisdk.functionals.functional_result import FunctionalResult
21
21
 
22
22
  TResult_co = TypeVar("TResult_co", bound=FunctionalResult, covariant=True)
@@ -35,5 +35,5 @@ class Functional(ABC):
35
35
 
36
36
  class PrimitiveFunctional(Parameterizable, Functional, ABC, Generic[TResult_co]):
37
37
  """
38
- Base class for functionals backed by a :class:`~qilisdk.common.parameterizable.Parameterizable` object.
38
+ Base class for functionals backed by a :class:`~qilisdk.core.parameterizable.Parameterizable` object.
39
39
  """
@@ -11,7 +11,7 @@
11
11
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
- from qilisdk.common.result import Result
14
+ from qilisdk.core.result import Result
15
15
 
16
16
 
17
17
  class FunctionalResult(Result):
@@ -13,7 +13,7 @@
13
13
  # limitations under the License.
14
14
  from typing import ClassVar
15
15
 
16
- from qilisdk.common.variables import RealNumber
16
+ from qilisdk.core.variables import RealNumber
17
17
  from qilisdk.digital.circuit import Circuit
18
18
  from qilisdk.functionals.functional import PrimitiveFunctional
19
19
  from qilisdk.functionals.sampling_result import SamplingResult
@@ -15,8 +15,8 @@ from typing import ClassVar
15
15
 
16
16
  from qilisdk.analog.hamiltonian import Hamiltonian, PauliOperator
17
17
  from qilisdk.analog.schedule import Schedule
18
- from qilisdk.common.qtensor import QTensor
19
- from qilisdk.common.variables import RealNumber
18
+ from qilisdk.core.qtensor import QTensor
19
+ from qilisdk.core.variables import RealNumber
20
20
  from qilisdk.functionals.functional import PrimitiveFunctional
21
21
  from qilisdk.functionals.time_evolution_result import TimeEvolutionResult
22
22
  from qilisdk.yaml import yaml
@@ -31,7 +31,7 @@ class TimeEvolution(PrimitiveFunctional[TimeEvolutionResult]):
31
31
  .. code-block:: python
32
32
 
33
33
  from qilisdk.analog import Schedule, Hamiltonian, Z
34
- from qilisdk.common import ket
34
+ from qilisdk.core import ket
35
35
  from qilisdk.functionals.time_evolution import TimeEvolution
36
36
 
37
37
  h0 = Z(0)
@@ -15,8 +15,8 @@ from pprint import pformat
15
15
 
16
16
  import numpy as np
17
17
 
18
- from qilisdk.common.model import Model
19
- from qilisdk.common.qtensor import QTensor
18
+ from qilisdk.core.model import Model
19
+ from qilisdk.core.qtensor import QTensor
20
20
  from qilisdk.functionals.functional_result import FunctionalResult
21
21
  from qilisdk.yaml import yaml
22
22
 
@@ -13,7 +13,7 @@
13
13
  # limitations under the License.
14
14
  from __future__ import annotations
15
15
 
16
- from qilisdk.common.result import Result
16
+ from qilisdk.core.result import Result
17
17
  from qilisdk.yaml import yaml
18
18
 
19
19
 
@@ -25,6 +25,8 @@ OPTIONAL_FEATURES: list[OptionalFeature] = [
25
25
  Symbol(path="qilisdk.speqtrum.speqtrum", name="SpeQtrum"),
26
26
  Symbol(path="qilisdk.speqtrum.speqtrum_models", name="DeviceStatus"),
27
27
  Symbol(path="qilisdk.speqtrum.speqtrum_models", name="DeviceType"),
28
+ Symbol(path="qilisdk.speqtrum.speqtrum_models", name="JobHandle"),
29
+ Symbol(path="qilisdk.speqtrum.speqtrum_models", name="TypedJobDetail"),
28
30
  ],
29
31
  ),
30
32
  ]