qiskit 1.2.0rc1__cp38-abi3-win32.whl → 1.2.2__cp38-abi3-win32.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 (67) hide show
  1. qiskit/VERSION.txt +1 -1
  2. qiskit/_accelerate.pyd +0 -0
  3. qiskit/circuit/__init__.py +15 -2
  4. qiskit/circuit/library/basis_change/qft.py +3 -1
  5. qiskit/circuit/library/data_preparation/initializer.py +5 -2
  6. qiskit/circuit/library/data_preparation/state_preparation.py +2 -2
  7. qiskit/circuit/library/pauli_evolution.py +1 -0
  8. qiskit/circuit/library/standard_gates/__init__.py +32 -25
  9. qiskit/circuit/quantumcircuit.py +43 -18
  10. qiskit/compiler/transpiler.py +1 -1
  11. qiskit/dagcircuit/dagcircuit.py +1 -1
  12. qiskit/primitives/base/base_estimator.py +2 -2
  13. qiskit/primitives/containers/data_bin.py +9 -1
  14. qiskit/providers/basic_provider/basic_simulator.py +1 -1
  15. qiskit/providers/fake_provider/fake_openpulse_2q.py +3 -3
  16. qiskit/providers/fake_provider/fake_openpulse_3q.py +2 -3
  17. qiskit/providers/fake_provider/fake_pulse_backend.py +2 -1
  18. qiskit/providers/fake_provider/fake_qasm_backend.py +2 -1
  19. qiskit/providers/fake_provider/generic_backend_v2.py +434 -18
  20. qiskit/providers/models/__init__.py +47 -21
  21. qiskit/pulse/builder.py +16 -7
  22. qiskit/pulse/instructions/directives.py +5 -0
  23. qiskit/pulse/library/symbolic_pulses.py +4 -3
  24. qiskit/pulse/schedule.py +5 -9
  25. qiskit/pulse/transforms/alignments.py +3 -1
  26. qiskit/pulse/transforms/dag.py +7 -0
  27. qiskit/qasm2/parse.py +29 -0
  28. qiskit/qasm3/exporter.py +20 -7
  29. qiskit/qpy/__init__.py +1 -1
  30. qiskit/quantum_info/operators/operator.py +24 -0
  31. qiskit/quantum_info/operators/symplectic/pauli.py +2 -0
  32. qiskit/quantum_info/operators/symplectic/sparse_pauli_op.py +6 -1
  33. qiskit/synthesis/clifford/clifford_decompose_bm.py +1 -1
  34. qiskit/synthesis/clifford/clifford_decompose_greedy.py +1 -1
  35. qiskit/synthesis/linear/cnot_synth.py +1 -1
  36. qiskit/synthesis/one_qubit/one_qubit_decompose.py +2 -1
  37. qiskit/synthesis/permutation/permutation_full.py +2 -2
  38. qiskit/synthesis/permutation/permutation_lnn.py +3 -1
  39. qiskit/synthesis/two_qubit/two_qubit_decompose.py +2 -2
  40. qiskit/transpiler/__init__.py +6 -1
  41. qiskit/transpiler/instruction_durations.py +4 -0
  42. qiskit/transpiler/passes/__init__.py +2 -0
  43. qiskit/transpiler/passes/basis/basis_translator.py +2 -1
  44. qiskit/transpiler/passes/calibration/rx_builder.py +1 -1
  45. qiskit/transpiler/passes/optimization/__init__.py +1 -0
  46. qiskit/transpiler/passes/optimization/consolidate_blocks.py +7 -1
  47. qiskit/transpiler/passes/optimization/elide_permutations.py +2 -2
  48. qiskit/transpiler/passes/optimization/hoare_opt.py +12 -8
  49. qiskit/transpiler/passes/optimization/split_2q_unitaries.py +16 -20
  50. qiskit/transpiler/passes/scheduling/alignments/pulse_gate_validation.py +1 -1
  51. qiskit/transpiler/passes/scheduling/padding/dynamical_decoupling.py +9 -3
  52. qiskit/transpiler/passes/scheduling/padding/pad_delay.py +3 -0
  53. qiskit/transpiler/passes/synthesis/high_level_synthesis.py +16 -6
  54. qiskit/transpiler/passes/synthesis/unitary_synthesis.py +1 -1
  55. qiskit/transpiler/preset_passmanagers/builtin_plugins.py +12 -55
  56. qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py +9 -0
  57. qiskit/utils/optionals.py +173 -150
  58. qiskit/visualization/bloch.py +44 -1
  59. qiskit/visualization/dag_visualization.py +10 -3
  60. qiskit/visualization/gate_map.py +28 -6
  61. qiskit/visualization/pass_manager_visualization.py +3 -14
  62. {qiskit-1.2.0rc1.dist-info → qiskit-1.2.2.dist-info}/METADATA +20 -20
  63. {qiskit-1.2.0rc1.dist-info → qiskit-1.2.2.dist-info}/RECORD +67 -67
  64. {qiskit-1.2.0rc1.dist-info → qiskit-1.2.2.dist-info}/WHEEL +1 -1
  65. {qiskit-1.2.0rc1.dist-info → qiskit-1.2.2.dist-info}/LICENSE.txt +0 -0
  66. {qiskit-1.2.0rc1.dist-info → qiskit-1.2.2.dist-info}/entry_points.txt +0 -0
  67. {qiskit-1.2.0rc1.dist-info → qiskit-1.2.2.dist-info}/top_level.txt +0 -0
qiskit/VERSION.txt CHANGED
@@ -1 +1 @@
1
- 1.2.0rc1
1
+ 1.2.2
qiskit/_accelerate.pyd CHANGED
Binary file
@@ -301,9 +301,10 @@ assist compilation workflows. These include:
301
301
  * :data:`SessionEquivalenceLibrary`, a mutable instance of :class:`EquivalenceLibrary` which is used
302
302
  by default by the compiler's :class:`.BasisTranslator`.
303
303
 
304
- There is also a utility for generating random circuits:
304
+ There are also utilities for generating random circuits:
305
305
 
306
- * :func:`random.random_circuit`
306
+ * :func:`.random_circuit`
307
+ * :func:`.random_clifford_circuit`
307
308
 
308
309
  Finally, the circuit module has its own exception class, to indicate when things went wrong in
309
310
  circuit-specific manners:
@@ -579,6 +580,16 @@ The :class:`Store` instruction is particularly special, in that it allows writin
579
580
  :class:`Qubit` nor :class:`Clbit` operands, but has an explicit :attr:`~Store.lvalue` and
580
581
  :attr:`~Store.rvalue`.
581
582
 
583
+ For example, to determine the parity of a bitstring ``cr`` and store it in another register ``creg``,
584
+ the :class:`Store` instruction can be used in the following way::
585
+
586
+ parity = expr.lift(cr[0])
587
+ for i in range(1,n):
588
+ parity = expr.bit_xor(cr[i], parity)
589
+ qc.store(creg[0], parity)
590
+
591
+
592
+
582
593
  .. autoclass:: Store
583
594
  :show-inheritance:
584
595
  :members:
@@ -1004,6 +1015,7 @@ Generating random circuits
1004
1015
 
1005
1016
  .. currentmodule:: qiskit.circuit.random
1006
1017
  .. autofunction:: random_circuit
1018
+ .. autofunction:: random_clifford_circuit
1007
1019
  .. currentmodule:: qiskit.circuit
1008
1020
 
1009
1021
 
@@ -1250,3 +1262,4 @@ from .controlflow import (
1250
1262
  )
1251
1263
 
1252
1264
  from .annotated_operation import AnnotatedOperation, InverseModifier, ControlModifier, PowerModifier
1265
+ from .random import random_circuit, random_clifford_circuit
@@ -315,8 +315,10 @@ class QFTGate(Gate):
315
315
  """
316
316
  super().__init__(name="qft", num_qubits=num_qubits, params=[])
317
317
 
318
- def __array__(self, dtype=complex):
318
+ def __array__(self, dtype=complex, copy=None):
319
319
  """Return a numpy array for the QFTGate."""
320
+ if copy is False:
321
+ raise ValueError("unable to avoid copy while creating an array as requested")
320
322
  n = self.num_qubits
321
323
  nums = np.arange(2**n)
322
324
  outer = np.outer(nums, nums)
@@ -21,6 +21,7 @@ import typing
21
21
  from qiskit.circuit.quantumcircuit import QuantumCircuit
22
22
  from qiskit.circuit.quantumregister import QuantumRegister
23
23
  from qiskit.circuit.instruction import Instruction
24
+ from qiskit.circuit.library.generalized_gates import Isometry
24
25
  from .state_preparation import StatePreparation
25
26
 
26
27
  if typing.TYPE_CHECKING:
@@ -86,9 +87,11 @@ class Initialize(Instruction):
86
87
  """Call to create a circuit with gates that take the desired vector to zero.
87
88
 
88
89
  Returns:
89
- Circuit to take ``self.params`` vector to :math:`|{00\\ldots0}\\rangle`
90
+ QuantumCircuit: circuit to take ``self.params`` vector to :math:`|{00\\ldots0}\\rangle`
90
91
  """
91
- return self._stateprep._gates_to_uncompute()
92
+
93
+ isom = Isometry(self.params, 0, 0)
94
+ return isom._gates_to_uncompute()
92
95
 
93
96
  @property
94
97
  def params(self):
@@ -173,8 +173,8 @@ class StatePreparation(Gate):
173
173
  q = QuantumRegister(self.num_qubits, "q")
174
174
  initialize_circuit = QuantumCircuit(q, name="init_def")
175
175
 
176
- isom = Isometry(self._params_arg, 0, 0)
177
- initialize_circuit.append(isom, q[:])
176
+ isom = Isometry(self.params, 0, 0)
177
+ initialize_circuit.compose(isom.definition, copy=False, inplace=True)
178
178
 
179
179
  # invert the circuit to create the desired vector from zero (assuming
180
180
  # the qubits are in the zero state)
@@ -56,6 +56,7 @@ class PauliEvolutionGate(Gate):
56
56
 
57
57
  X = SparsePauliOp("X")
58
58
  Z = SparsePauliOp("Z")
59
+ I = SparsePauliOp("I")
59
60
 
60
61
  # build the evolution gate
61
62
  operator = (Z ^ Z) - 0.1 * (X ^ I)
@@ -54,6 +54,13 @@ def get_standard_gate_name_mapping():
54
54
  from qiskit.circuit.delay import Delay
55
55
  from qiskit.circuit.reset import Reset
56
56
 
57
+ lambda_ = Parameter("λ")
58
+ theta = Parameter("ϴ")
59
+ phi = Parameter("φ")
60
+ gamma = Parameter("γ")
61
+ beta = Parameter("β")
62
+ time = Parameter("t")
63
+
57
64
  # Standard gates library mapping, multicontrolled gates not included since they're
58
65
  # variable width
59
66
  gates = [
@@ -61,38 +68,37 @@ def get_standard_gate_name_mapping():
61
68
  SXGate(),
62
69
  XGate(),
63
70
  CXGate(),
64
- RZGate(Parameter("λ")),
65
- RGate(Parameter("ϴ"), Parameter("φ")),
66
- Reset(),
71
+ RZGate(lambda_),
72
+ RGate(theta, phi),
67
73
  C3SXGate(),
68
74
  CCXGate(),
69
75
  DCXGate(),
70
76
  CHGate(),
71
- CPhaseGate(Parameter("ϴ")),
72
- CRXGate(Parameter("ϴ")),
73
- CRYGate(Parameter("ϴ")),
74
- CRZGate(Parameter("ϴ")),
77
+ CPhaseGate(theta),
78
+ CRXGate(theta),
79
+ CRYGate(theta),
80
+ CRZGate(theta),
75
81
  CSwapGate(),
76
82
  CSXGate(),
77
- CUGate(Parameter("ϴ"), Parameter("φ"), Parameter("λ"), Parameter("γ")),
78
- CU1Gate(Parameter("λ")),
79
- CU3Gate(Parameter("ϴ"), Parameter("φ"), Parameter("λ")),
83
+ CUGate(theta, phi, lambda_, gamma),
84
+ CU1Gate(lambda_),
85
+ CU3Gate(theta, phi, lambda_),
80
86
  CYGate(),
81
87
  CZGate(),
82
88
  CCZGate(),
83
- GlobalPhaseGate(Parameter("ϴ")),
89
+ GlobalPhaseGate(theta),
84
90
  HGate(),
85
- PhaseGate(Parameter("ϴ")),
91
+ PhaseGate(theta),
86
92
  RCCXGate(),
87
93
  RC3XGate(),
88
- RXGate(Parameter("ϴ")),
89
- RXXGate(Parameter("ϴ")),
90
- RYGate(Parameter("ϴ")),
91
- RYYGate(Parameter("ϴ")),
92
- RZZGate(Parameter("ϴ")),
93
- RZXGate(Parameter("ϴ")),
94
- XXMinusYYGate(Parameter("ϴ"), Parameter("β")),
95
- XXPlusYYGate(Parameter("ϴ"), Parameter("β")),
94
+ RXGate(theta),
95
+ RXXGate(theta),
96
+ RYGate(theta),
97
+ RYYGate(theta),
98
+ RZZGate(theta),
99
+ RZXGate(theta),
100
+ XXMinusYYGate(theta, beta),
101
+ XXPlusYYGate(theta, beta),
96
102
  ECRGate(),
97
103
  SGate(),
98
104
  SdgGate(),
@@ -103,13 +109,14 @@ def get_standard_gate_name_mapping():
103
109
  SXdgGate(),
104
110
  TGate(),
105
111
  TdgGate(),
106
- UGate(Parameter("ϴ"), Parameter("φ"), Parameter("λ")),
107
- U1Gate(Parameter("λ")),
108
- U2Gate(Parameter("φ"), Parameter("λ")),
109
- U3Gate(Parameter("ϴ"), Parameter("φ"), Parameter("λ")),
112
+ UGate(theta, phi, lambda_),
113
+ U1Gate(lambda_),
114
+ U2Gate(phi, lambda_),
115
+ U3Gate(theta, phi, lambda_),
110
116
  YGate(),
111
117
  ZGate(),
112
- Delay(Parameter("t")),
118
+ Delay(time),
119
+ Reset(),
113
120
  Measure(),
114
121
  ]
115
122
  name_mapping = {gate.name: gate for gate in gates}
@@ -1152,17 +1152,41 @@ class QuantumCircuit:
1152
1152
  """The unit that :attr:`duration` is specified in."""
1153
1153
  self.metadata = {} if metadata is None else metadata
1154
1154
  """Arbitrary user-defined metadata for the circuit.
1155
-
1155
+
1156
1156
  Qiskit will not examine the content of this mapping, but it will pass it through the
1157
1157
  transpiler and reattach it to the output, so you can track your own metadata."""
1158
1158
 
1159
1159
  @classmethod
1160
- def _from_circuit_data(cls, data: CircuitData) -> typing.Self:
1160
+ def _from_circuit_data(cls, data: CircuitData, add_regs: bool = False) -> typing.Self:
1161
1161
  """A private constructor from rust space circuit data."""
1162
1162
  out = QuantumCircuit()
1163
+
1164
+ if data.num_qubits > 0:
1165
+ if add_regs:
1166
+ qr = QuantumRegister(name="q", bits=data.qubits)
1167
+ out.qregs = [qr]
1168
+ out._qubit_indices = {
1169
+ bit: BitLocations(index, [(qr, index)]) for index, bit in enumerate(data.qubits)
1170
+ }
1171
+ else:
1172
+ out._qubit_indices = {
1173
+ bit: BitLocations(index, []) for index, bit in enumerate(data.qubits)
1174
+ }
1175
+
1176
+ if data.num_clbits > 0:
1177
+ if add_regs:
1178
+ cr = ClassicalRegister(name="c", bits=data.clbits)
1179
+ out.cregs = [cr]
1180
+ out._clbit_indices = {
1181
+ bit: BitLocations(index, [(cr, index)]) for index, bit in enumerate(data.clbits)
1182
+ }
1183
+ else:
1184
+ out._clbit_indices = {
1185
+ bit: BitLocations(index, []) for index, bit in enumerate(data.clbits)
1186
+ }
1187
+
1163
1188
  out._data = data
1164
- out._qubit_indices = {bit: BitLocations(index, []) for index, bit in enumerate(data.qubits)}
1165
- out._clbit_indices = {bit: BitLocations(index, []) for index, bit in enumerate(data.clbits)}
1189
+
1166
1190
  return out
1167
1191
 
1168
1192
  @staticmethod
@@ -3013,16 +3037,7 @@ class QuantumCircuit:
3013
3037
  self._ancillas.append(bit)
3014
3038
 
3015
3039
  if isinstance(register, QuantumRegister):
3016
- self.qregs.append(register)
3017
-
3018
- for idx, bit in enumerate(register):
3019
- if bit in self._qubit_indices:
3020
- self._qubit_indices[bit].registers.append((register, idx))
3021
- else:
3022
- self._data.add_qubit(bit)
3023
- self._qubit_indices[bit] = BitLocations(
3024
- self._data.num_qubits - 1, [(register, idx)]
3025
- )
3040
+ self._add_qreg(register)
3026
3041
 
3027
3042
  elif isinstance(register, ClassicalRegister):
3028
3043
  self.cregs.append(register)
@@ -3041,6 +3056,16 @@ class QuantumCircuit:
3041
3056
  else:
3042
3057
  raise CircuitError("expected a register")
3043
3058
 
3059
+ def _add_qreg(self, qreg: QuantumRegister) -> None:
3060
+ self.qregs.append(qreg)
3061
+
3062
+ for idx, bit in enumerate(qreg):
3063
+ if bit in self._qubit_indices:
3064
+ self._qubit_indices[bit].registers.append((qreg, idx))
3065
+ else:
3066
+ self._data.add_qubit(bit)
3067
+ self._qubit_indices[bit] = BitLocations(self._data.num_qubits - 1, [(qreg, idx)])
3068
+
3044
3069
  def add_bits(self, bits: Iterable[Bit]) -> None:
3045
3070
  """Add Bits to the circuit."""
3046
3071
  duplicate_bits = {
@@ -4188,7 +4213,7 @@ class QuantumCircuit:
4188
4213
  @overload
4189
4214
  def assign_parameters(
4190
4215
  self,
4191
- parameters: Union[Mapping[Parameter, ParameterValueType], Sequence[ParameterValueType]],
4216
+ parameters: Union[Mapping[Parameter, ParameterValueType], Iterable[ParameterValueType]],
4192
4217
  inplace: Literal[False] = ...,
4193
4218
  *,
4194
4219
  flat_input: bool = ...,
@@ -4198,7 +4223,7 @@ class QuantumCircuit:
4198
4223
  @overload
4199
4224
  def assign_parameters(
4200
4225
  self,
4201
- parameters: Union[Mapping[Parameter, ParameterValueType], Sequence[ParameterValueType]],
4226
+ parameters: Union[Mapping[Parameter, ParameterValueType], Iterable[ParameterValueType]],
4202
4227
  inplace: Literal[True] = ...,
4203
4228
  *,
4204
4229
  flat_input: bool = ...,
@@ -4207,7 +4232,7 @@ class QuantumCircuit:
4207
4232
 
4208
4233
  def assign_parameters( # pylint: disable=missing-raises-doc
4209
4234
  self,
4210
- parameters: Union[Mapping[Parameter, ParameterValueType], Sequence[ParameterValueType]],
4235
+ parameters: Union[Mapping[Parameter, ParameterValueType], Iterable[ParameterValueType]],
4211
4236
  inplace: bool = False,
4212
4237
  *,
4213
4238
  flat_input: bool = False,
@@ -4317,7 +4342,7 @@ class QuantumCircuit:
4317
4342
  target._data.assign_parameters_mapping(parameter_binds)
4318
4343
  else:
4319
4344
  parameter_binds = _ParameterBindsSequence(target._data.parameters, parameters)
4320
- target._data.assign_parameters_sequence(parameters)
4345
+ target._data.assign_parameters_iterable(parameters)
4321
4346
 
4322
4347
  # Finally, assign the parameters inside any of the calibrations. We don't track these in
4323
4348
  # the `ParameterTable`, so we manually reconstruct things.
@@ -23,7 +23,7 @@ from qiskit.circuit.quantumcircuit import QuantumCircuit
23
23
  from qiskit.dagcircuit import DAGCircuit
24
24
  from qiskit.providers.backend import Backend
25
25
  from qiskit.providers.backend_compat import BackendV2Converter
26
- from qiskit.providers.models import BackendProperties
26
+ from qiskit.providers.models.backendproperties import BackendProperties
27
27
  from qiskit.pulse import Schedule, InstructionScheduleMap
28
28
  from qiskit.transpiler import Layout, CouplingMap, PropertySet
29
29
  from qiskit.transpiler.basepasses import BasePass
@@ -2090,7 +2090,7 @@ class DAGCircuit:
2090
2090
  new_layer = self.copy_empty_like(vars_mode=vars_mode)
2091
2091
 
2092
2092
  for node in op_nodes:
2093
- new_layer._apply_op_node_back(node, check=False)
2093
+ new_layer._apply_op_node_back(copy.copy(node), check=False)
2094
2094
 
2095
2095
  # The quantum registers that have an operation in this layer.
2096
2096
  support_list = [
@@ -92,7 +92,7 @@ class BaseEstimatorV1(BasePrimitive, Generic[T]):
92
92
  # calculate [ <psi1(theta1)|H1|psi1(theta1)> ]
93
93
  job = estimator.run([psi1], [H1], [theta1])
94
94
  job_result = job.result() # It will block until the job finishes.
95
- print(f"The primitive-job finished with result {job_result}"))
95
+ print(f"The primitive-job finished with result {job_result}")
96
96
 
97
97
  # calculate [ <psi1(theta1)|H1|psi1(theta1)>,
98
98
  # <psi2(theta2)|H2|psi2(theta2)>,
@@ -144,7 +144,7 @@ class BaseEstimatorV1(BasePrimitive, Generic[T]):
144
144
 
145
145
  .. code-block:: python
146
146
 
147
- values = parameter_values[i].
147
+ values = parameter_values[i]
148
148
 
149
149
  Args:
150
150
  circuits: one or more circuit objects.
@@ -34,14 +34,22 @@ class DataBin(ShapedMixin):
34
34
 
35
35
  .. code-block:: python
36
36
 
37
+ import numpy as np
38
+ from qiskit.primitives import DataBin, BitArray
39
+
37
40
  data = DataBin(
38
- alpha=BitArray.from_bitstrings(["0010"]),
41
+ alpha=BitArray.from_samples(["0010"]),
39
42
  beta=np.array([1.2])
40
43
  )
41
44
 
42
45
  print("alpha data:", data.alpha)
43
46
  print("beta data:", data.beta)
44
47
 
48
+ .. code-block::
49
+
50
+ alpha data: BitArray(<shape=(), num_shots=1, num_bits=2>)
51
+ beta data: [1.2]
52
+
45
53
  """
46
54
 
47
55
  __slots__ = ("_data", "_shape")
@@ -43,7 +43,7 @@ from qiskit.circuit.library import UnitaryGate
43
43
  from qiskit.circuit.library.standard_gates import get_standard_gate_name_mapping, GlobalPhaseGate
44
44
  from qiskit.providers import Provider
45
45
  from qiskit.providers.backend import BackendV2
46
- from qiskit.providers.models import BackendConfiguration
46
+ from qiskit.providers.models.backendconfiguration import BackendConfiguration
47
47
  from qiskit.providers.options import Options
48
48
  from qiskit.qobj import QasmQobj, QasmQobjConfig, QasmQobjExperiment
49
49
  from qiskit.result import Result
@@ -16,14 +16,14 @@ Fake backend supporting OpenPulse.
16
16
  import datetime
17
17
  import warnings
18
18
 
19
- from qiskit.providers.models import (
19
+ from qiskit.providers.models.backendconfiguration import (
20
20
  GateConfig,
21
21
  PulseBackendConfiguration,
22
- PulseDefaults,
23
- Command,
24
22
  UchannelLO,
25
23
  )
24
+
26
25
  from qiskit.providers.models.backendproperties import Nduv, Gate, BackendProperties
26
+ from qiskit.providers.models.pulsedefaults import PulseDefaults, Command
27
27
  from qiskit.qobj import PulseQobjInstruction
28
28
 
29
29
  from .fake_backend import FakeBackend
@@ -15,13 +15,12 @@ Fake backend supporting OpenPulse.
15
15
  """
16
16
  import warnings
17
17
 
18
- from qiskit.providers.models import (
18
+ from qiskit.providers.models.backendconfiguration import (
19
19
  GateConfig,
20
20
  PulseBackendConfiguration,
21
- PulseDefaults,
22
- Command,
23
21
  UchannelLO,
24
22
  )
23
+ from qiskit.providers.models.pulsedefaults import PulseDefaults, Command
25
24
  from qiskit.qobj import PulseQobjInstruction
26
25
 
27
26
  from .fake_backend import FakeBackend
@@ -15,7 +15,8 @@ Fake backend abstract class for mock backends supporting OpenPulse.
15
15
  """
16
16
 
17
17
  from qiskit.exceptions import QiskitError
18
- from qiskit.providers.models import PulseBackendConfiguration, PulseDefaults
18
+ from qiskit.providers.models.backendconfiguration import PulseBackendConfiguration
19
+ from qiskit.providers.models.pulsedefaults import PulseDefaults
19
20
 
20
21
  from .fake_qasm_backend import FakeQasmBackend
21
22
  from .utils.json_decoder import decode_pulse_defaults
@@ -19,7 +19,8 @@ import os
19
19
  import warnings
20
20
 
21
21
  from qiskit.exceptions import QiskitError
22
- from qiskit.providers.models import BackendProperties, QasmBackendConfiguration
22
+ from qiskit.providers.models.backendproperties import BackendProperties
23
+ from qiskit.providers.models.backendconfiguration import QasmBackendConfiguration
23
24
 
24
25
  from .utils.json_decoder import (
25
26
  decode_backend_configuration,