qiskit 1.3.2__cp39-abi3-win32.whl → 1.4.0__cp39-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 (65) hide show
  1. qiskit/VERSION.txt +1 -1
  2. qiskit/__init__.py +1 -0
  3. qiskit/_accelerate.pyd +0 -0
  4. qiskit/circuit/__init__.py +5 -2
  5. qiskit/circuit/bit.py +12 -0
  6. qiskit/circuit/classicalfunction/__init__.py +13 -1
  7. qiskit/circuit/classicalfunction/boolean_expression.py +10 -1
  8. qiskit/circuit/classicalfunction/classicalfunction.py +10 -1
  9. qiskit/circuit/classicalfunction/exceptions.py +7 -1
  10. qiskit/circuit/delay.py +5 -0
  11. qiskit/circuit/library/generalized_gates/mcmt.py +5 -6
  12. qiskit/circuit/library/phase_oracle.py +24 -17
  13. qiskit/circuit/library/standard_gates/rz.py +7 -7
  14. qiskit/circuit/library/standard_gates/xx_minus_yy.py +0 -30
  15. qiskit/circuit/parametervector.py +25 -5
  16. qiskit/circuit/quantumcircuit.py +68 -2
  17. qiskit/circuit/register.py +13 -0
  18. qiskit/compiler/assembler.py +16 -8
  19. qiskit/compiler/transpiler.py +1 -1
  20. qiskit/dagcircuit/dagdependency_v2.py +4 -2
  21. qiskit/passmanager/passmanager.py +19 -1
  22. qiskit/primitives/backend_estimator_v2.py +17 -0
  23. qiskit/primitives/backend_sampler_v2.py +15 -0
  24. qiskit/providers/backend_compat.py +46 -11
  25. qiskit/providers/basic_provider/basic_simulator.py +15 -3
  26. qiskit/providers/exceptions.py +23 -2
  27. qiskit/providers/models/backendproperties.py +19 -1
  28. qiskit/providers/models/backendstatus.py +10 -0
  29. qiskit/providers/models/jobstatus.py +11 -0
  30. qiskit/pulse/schedule.py +1 -1
  31. qiskit/quantum_info/operators/channel/transformations.py +15 -0
  32. qiskit/result/result.py +109 -20
  33. qiskit/synthesis/evolution/product_formula.py +1 -2
  34. qiskit/synthesis/evolution/qdrift.py +1 -2
  35. qiskit/synthesis/evolution/suzuki_trotter.py +1 -2
  36. qiskit/transpiler/__init__.py +772 -542
  37. qiskit/transpiler/layout.py +6 -6
  38. qiskit/transpiler/passes/calibration/rzx_templates.py +7 -0
  39. qiskit/transpiler/passes/layout/dense_layout.py +12 -0
  40. qiskit/transpiler/passes/layout/sabre_layout.py +13 -0
  41. qiskit/transpiler/passes/layout/vf2_layout.py +11 -0
  42. qiskit/transpiler/passes/layout/vf2_post_layout.py +22 -0
  43. qiskit/transpiler/passes/optimization/normalize_rx_angle.py +8 -0
  44. qiskit/transpiler/passes/optimization/remove_identity_equiv.py +2 -3
  45. qiskit/transpiler/passes/routing/star_prerouting.py +17 -2
  46. qiskit/transpiler/passes/scheduling/scheduling/alap.py +1 -1
  47. qiskit/transpiler/passes/scheduling/scheduling/asap.py +1 -1
  48. qiskit/transpiler/passes/synthesis/unitary_synthesis.py +11 -0
  49. qiskit/transpiler/passmanager_config.py +11 -0
  50. qiskit/transpiler/preset_passmanagers/__init__.py +26 -6
  51. qiskit/transpiler/preset_passmanagers/builtin_plugins.py +188 -118
  52. qiskit/transpiler/preset_passmanagers/common.py +133 -83
  53. qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py +29 -3
  54. qiskit/transpiler/preset_passmanagers/plugin.py +33 -42
  55. qiskit/transpiler/target.py +41 -9
  56. qiskit/visualization/circuit/text.py +3 -2
  57. qiskit/visualization/gate_map.py +50 -0
  58. qiskit/visualization/pulse_v2/interface.py +0 -2
  59. qiskit/visualization/timeline/interface.py +3 -3
  60. {qiskit-1.3.2.dist-info → qiskit-1.4.0.dist-info}/METADATA +4 -7
  61. {qiskit-1.3.2.dist-info → qiskit-1.4.0.dist-info}/RECORD +65 -65
  62. {qiskit-1.3.2.dist-info → qiskit-1.4.0.dist-info}/LICENSE.txt +0 -0
  63. {qiskit-1.3.2.dist-info → qiskit-1.4.0.dist-info}/WHEEL +0 -0
  64. {qiskit-1.3.2.dist-info → qiskit-1.4.0.dist-info}/entry_points.txt +0 -0
  65. {qiskit-1.3.2.dist-info → qiskit-1.4.0.dist-info}/top_level.txt +0 -0
@@ -344,13 +344,34 @@ def generate_preset_pass_manager(
344
344
  # preserve the former behavior of transpile.
345
345
  backend_properties = _parse_backend_properties(backend_properties, backend)
346
346
  with warnings.catch_warnings():
347
- # TODO: inst_map will be removed in 2.0
347
+ # TODO: inst_map and backend_properties will be removed in 2.0
348
348
  warnings.filterwarnings(
349
349
  "ignore",
350
350
  category=DeprecationWarning,
351
351
  message=".*``inst_map`` is deprecated as of Qiskit 1.3.*",
352
352
  module="qiskit",
353
353
  )
354
+ warnings.filterwarnings(
355
+ "ignore",
356
+ category=DeprecationWarning,
357
+ message=".* ``backend_properties`` is deprecated as of Qiskit 1.4",
358
+ module="qiskit",
359
+ )
360
+ warnings.filterwarnings(
361
+ "ignore",
362
+ category=DeprecationWarning,
363
+ message=".*``qiskit.providers.exceptions.BackendPropertyError``",
364
+ )
365
+ # TODO: This is a temporary usage of deprecated backend_properties in
366
+ # Target.from_configuration. Probably the logic needs to be restructured
367
+ # in a more target-centric transpiler
368
+ # https://github.com/Qiskit/qiskit/issues/9256
369
+ warnings.filterwarnings(
370
+ "ignore",
371
+ category=DeprecationWarning,
372
+ message=r".+qiskit\.transpiler\.target\.Target\.from_configuration.+",
373
+ module="qiskit",
374
+ )
354
375
  # Build target from constraints.
355
376
  target = Target.from_configuration(
356
377
  basis_gates=basis_gates,
@@ -403,7 +424,6 @@ def generate_preset_pass_manager(
403
424
  initial_layout = _parse_initial_layout(initial_layout)
404
425
  approximation_degree = _parse_approximation_degree(approximation_degree)
405
426
  seed_transpiler = _parse_seed_transpiler(seed_transpiler)
406
-
407
427
  pm_options = {
408
428
  "target": target,
409
429
  "basis_gates": basis_gates,
@@ -428,12 +448,18 @@ def generate_preset_pass_manager(
428
448
  }
429
449
 
430
450
  with warnings.catch_warnings():
431
- # inst_map is deprecated in the PassManagerConfig initializer
451
+ # inst_map and backend_properties are deprecated in the PassManagerConfig initializer
432
452
  warnings.filterwarnings(
433
453
  "ignore",
434
454
  category=DeprecationWarning,
435
455
  message=".*argument ``inst_map`` is deprecated as of Qiskit 1.3",
436
456
  )
457
+ warnings.filterwarnings(
458
+ "ignore",
459
+ category=DeprecationWarning,
460
+ message=".*argument ``backend_properties`` is deprecated as of Qiskit 1.4",
461
+ module="qiskit",
462
+ )
437
463
  if backend is not None:
438
464
  pm_options["_skip_target"] = _skip_target
439
465
  pm_config = PassManagerConfig.from_backend(backend, **pm_options)
@@ -11,6 +11,8 @@
11
11
  # that they have been altered from the originals.
12
12
 
13
13
  """
14
+ .. _transpiler-preset-stage-plugins:
15
+
14
16
  =======================================================================================
15
17
  Transpiler Stage Plugin Interface (:mod:`qiskit.transpiler.preset_passmanagers.plugin`)
16
18
  =======================================================================================
@@ -35,8 +37,10 @@ see :mod:`qiskit.transpiler.passes.synthesis.plugin`.
35
37
  Plugin Stages
36
38
  =============
37
39
 
38
- Currently, there are 6 stages in the preset pass managers, all of which actively
39
- load external plugins via corresponding entry points.
40
+ There are six stages in the preset pass managers, all of which actively
41
+ load external plugins using corresponding entry points. The following table summarizes
42
+ each stage. For more details on the description and expectations of each stage, follow the link
43
+ in the stages' names to the full documentation.
40
44
 
41
45
  .. list-table:: Stages
42
46
  :header-rows: 1
@@ -44,57 +48,44 @@ load external plugins via corresponding entry points.
44
48
  * - Stage Name
45
49
  - Entry Point
46
50
  - Reserved Names
47
- - Description and expectations
48
- * - ``init``
51
+ - Summary
52
+
53
+ * - :ref:`init <transpiler-preset-stage-init>`
49
54
  - ``qiskit.transpiler.init``
50
55
  - ``default``
51
- - This stage runs first and is typically used for any initial logical optimization. Because most
52
- layout and routing algorithms are only designed to work with 1 and 2 qubit gates, this stage
53
- is also used to translate any gates that operate on more than 2 qubits into gates that only
54
- operate on 1 or 2 qubits.
55
- * - ``layout``
56
+ - High-level, logical optimizations on abstract circuits, and reduction of multi-qubit
57
+ operations to one- and two-qubit operations.
58
+
59
+ * - :ref:`layout <transpiler-preset-stage-layout>`
56
60
  - ``qiskit.transpiler.layout``
57
61
  - ``trivial``, ``dense``, ``sabre``, ``default``
58
- - The output from this stage is expected to have the ``layout`` property
59
- set field set with a :class:`~.Layout` object. Additionally, the circuit is
60
- typically expected to be embedded so that it is expanded to include all
61
- qubits and the :class:`~.ApplyLayout` pass is expected to be run to apply the
62
- layout. The embedding of the :class:`~.Layout` can be generated with
63
- :func:`~.generate_embed_passmanager`.
64
- * - ``routing``
62
+ - Choose an initial mapping of virtual qubits to physical qubits, including expansion of the
63
+ circuit to include explicit ancillas. This stage is sometimes combined with ``routing``.
64
+
65
+ * - :ref:`routing <transpiler-preset-stage-routing>`
65
66
  - ``qiskit.transpiler.routing``
66
67
  - ``basic``, ``stochastic``, ``lookahead``, ``sabre``
67
- - The output from this stage is expected to have the circuit match the
68
- connectivity constraints of the target backend. This does not necessarily
69
- need to match the directionality of the edges in the target as a later
70
- stage typically will adjust directional gates to match that constraint
71
- (but there is no penalty for doing that in the ``routing`` stage). The output
72
- of this stage is also expected to have the ``final_layout`` property set field
73
- set with a :class:`~.Layout` object that maps the :class:`.Qubit` to the
74
- output final position of that qubit in the circuit. If there is an
75
- existing ``final_layout`` entry in the property set (such as might be set
76
- by an optimization pass that introduces a permutation) it is expected
77
- that the final layout will be the composition of the two layouts (this
78
- can be computed using :meth:`.DAGCircuit.compose`, for example:
79
- ``second_final_layout.compose(first_final_layout, dag.qubits)``).
80
- * - ``translation``
68
+ - Insert gates into the circuit to ensure it matches the connectivity constraints of the
69
+ :class:`.Target`. The inserted gates do not need to be in the target ISA yet, so are often
70
+ just output as ``swap`` instructions. This stage is sometimes subsumed by ``layout``.
71
+
72
+ * - :ref:`translation <transpiler-preset-stage-translation>`
81
73
  - ``qiskit.transpiler.translation``
82
- - ``translator``, ``synthesis``, ``unroller``
83
- - The output of this stage is expected to have every operation be a native
84
- instruction on the target backend.
85
- * - ``optimization``
74
+ - ``translator``, ``synthesis``
75
+ - Rewrite all gates outside the target ISA to use only gates within the ISA.
76
+
77
+ * - :ref:`optimization <transpiler-preset-stage-optimization>`
86
78
  - ``qiskit.transpiler.optimization``
87
79
  - ``default``
88
- - This stage is expected to perform optimization and simplification.
89
- The constraints from earlier stages still apply to the output of this
90
- stage. After the ``optimization`` stage is run we expect the circuit
91
- to still be executable on the target.
92
- * - ``scheduling``
80
+ - Low-level, physical-circuit-aware optimizations. Unlike ``init``, the ``optimization`` stage
81
+ acts at the level of a physical circuit.
82
+
83
+ * - :ref:`scheduling <transpiler-preset-stage-scheduling>`
93
84
  - ``qiskit.transpiler.scheduling``
94
85
  - ``alap``, ``asap``, ``default``
95
- - This is the last stage run and it is expected to output a scheduled
96
- circuit such that all idle periods in the circuit are marked by explicit
97
- :class:`~qiskit.circuit.Delay` instructions.
86
+ - Insert :class:`~.circuit.Delay` instructions to make the wall-clock timing of the circuit
87
+ fully explicit.
88
+
98
89
 
99
90
  Writing Plugins
100
91
  ===============
@@ -56,9 +56,10 @@ from qiskit.exceptions import QiskitError
56
56
  # full target
57
57
  from qiskit.providers.backend import QubitProperties # pylint: disable=unused-import
58
58
  from qiskit.providers.models.backendproperties import BackendProperties
59
- from qiskit.utils import deprecate_func
59
+ from qiskit.utils import deprecate_func, deprecate_arg
60
60
  from qiskit.utils.deprecate_pulse import deprecate_pulse_dependency, deprecate_pulse_arg
61
61
 
62
+
62
63
  logger = logging.getLogger(__name__)
63
64
 
64
65
 
@@ -656,28 +657,43 @@ class Target(BaseTarget):
656
657
  self,
657
658
  operation_name: str,
658
659
  qargs: tuple[int, ...],
660
+ operation_params: list[float] | float | None = None,
659
661
  ) -> bool:
660
- """Return whether the instruction (operation + qubits) defines a calibration.
662
+ """Return whether the instruction (operation + operation_params + qubits) defines
663
+ a calibration.
661
664
 
662
665
  Args:
663
666
  operation_name: The name of the operation for the instruction.
664
- qargs: The tuple of qubit indices for the instruction.
667
+ qargs: The qubit indices for the instruction.
668
+ operation_params: The parameters for the Instruction. In case
669
+ of multi-parameter gates, the order of parameters in the tuple
670
+ must match the order of the gate parameters.
665
671
 
666
672
  Returns:
667
673
  Returns ``True`` if the calibration is supported and ``False`` if it isn't.
668
674
  """
669
- return self._has_calibration(operation_name, qargs)
675
+ return self._has_calibration(operation_name, qargs, operation_params)
670
676
 
671
677
  def _has_calibration(
672
678
  self,
673
679
  operation_name: str,
674
680
  qargs: tuple[int, ...],
681
+ operation_params: list[float] | float | None = None,
675
682
  ) -> bool:
676
- qargs = tuple(qargs)
683
+ if operation_params is not None and not isinstance(operation_params, list):
684
+ operation_params = [operation_params]
685
+
677
686
  if operation_name not in self._gate_map:
678
687
  return False
688
+
679
689
  if qargs not in self._gate_map[operation_name]:
680
690
  return False
691
+
692
+ if operation_params is not None and not (
693
+ operation_params == self._gate_name_map[operation_name].params
694
+ ):
695
+ return False
696
+
681
697
  return getattr(self._gate_map[operation_name][qargs], "_calibration", None) is not None
682
698
 
683
699
  @deprecate_pulse_dependency
@@ -686,6 +702,7 @@ class Target(BaseTarget):
686
702
  operation_name: str,
687
703
  qargs: tuple[int, ...],
688
704
  *args: ParameterValueType,
705
+ operation_params: list[float] | float | None = None,
689
706
  **kwargs: ParameterValueType,
690
707
  ) -> Schedule | ScheduleBlock:
691
708
  """Get calibrated pulse schedule for the instruction.
@@ -695,25 +712,32 @@ class Target(BaseTarget):
695
712
 
696
713
  Args:
697
714
  operation_name: The name of the operation for the instruction.
698
- qargs: The tuple of qubit indices for the instruction.
715
+ qargs: The qubit indices for the instruction.
699
716
  args: Parameter values to build schedule if any.
717
+ operation_params: The parameters for the Instruction. In case
718
+ of multi-parameter gate, the order of parameters in the tuple
719
+ must match the order of the gate parameters.
700
720
  kwargs: Parameter values with name to build schedule if any.
701
721
 
702
722
  Returns:
703
723
  Calibrated pulse schedule of corresponding instruction.
704
724
  """
705
- return self._get_calibration(operation_name, qargs, *args, *kwargs)
725
+ return self._get_calibration(
726
+ operation_name, qargs, *args, operation_params=operation_params, **kwargs
727
+ )
706
728
 
707
729
  def _get_calibration(
708
730
  self,
709
731
  operation_name: str,
710
732
  qargs: tuple[int, ...],
711
733
  *args: ParameterValueType,
734
+ operation_params: list[float] | float | None = None,
712
735
  **kwargs: ParameterValueType,
713
736
  ) -> Schedule | ScheduleBlock:
714
- if not self._has_calibration(operation_name, qargs):
737
+ if not self._has_calibration(operation_name, qargs, operation_params):
715
738
  raise KeyError(
716
- f"Calibration of instruction {operation_name} for qubit {qargs} is not defined."
739
+ f"Calibration of instruction: `{operation_name}`, with params: "
740
+ f"`{operation_params}` for qubit: {qargs} is not defined."
717
741
  )
718
742
  cal_entry = getattr(self._gate_map[operation_name][qargs], "_calibration")
719
743
  return cal_entry.get_schedule(*args, **kwargs)
@@ -971,6 +995,14 @@ class Target(BaseTarget):
971
995
 
972
996
  @classmethod
973
997
  @deprecate_pulse_arg("inst_map")
998
+ @deprecate_arg(
999
+ name="backend_properties",
1000
+ since="1.4",
1001
+ package_name="Qiskit",
1002
+ removal_timeline="in Qiskit 2.0",
1003
+ additional_msg="To add instructions with specific properties "
1004
+ "use Target.add_instruction(instruction, properties, name).",
1005
+ )
974
1006
  def from_configuration(
975
1007
  cls,
976
1008
  basis_gates: list[str],
@@ -1153,9 +1153,10 @@ class TextDrawing:
1153
1153
  if not self.plotbarriers:
1154
1154
  return layer, current_cons, current_cons_cond, connection_label
1155
1155
 
1156
- for i, qubit in enumerate(node.qargs):
1156
+ top_qubit = min(node.qargs, key=lambda q: self._wire_map.get(q, float("inf")))
1157
+ for qubit in node.qargs:
1157
1158
  if qubit in self.qubits:
1158
- label = op.label if i == 0 else ""
1159
+ label = op.label if qubit == top_qubit else ""
1159
1160
  layer.set_qubit(qubit, Barrier(label))
1160
1161
 
1161
1162
  elif isinstance(op, SwapGate):
@@ -13,6 +13,7 @@
13
13
  """A module for visualizing device coupling maps"""
14
14
 
15
15
  import math
16
+ import warnings
16
17
  from typing import List
17
18
 
18
19
  import numpy as np
@@ -21,6 +22,7 @@ from rustworkx.visualization import graphviz_draw
21
22
 
22
23
  from qiskit.exceptions import QiskitError
23
24
  from qiskit.utils import optionals as _optionals
25
+ from qiskit.providers import BackendV2
24
26
  from qiskit.providers.exceptions import BackendPropertyError
25
27
  from qiskit.transpiler.coupling import CouplingMap
26
28
  from .exceptions import VisualizationError
@@ -50,6 +52,12 @@ def plot_gate_map(
50
52
  ):
51
53
  """Plots the gate map of a device.
52
54
 
55
+ .. deprecated:: 1.4
56
+ The function ``plot_gate_map`` will stop supporting inputs of type
57
+ :class:`.BackendV1` in the `backend` parameter in a future release no
58
+ earlier than 2.0. :class:`.BackendV1` is deprecated and implementations should
59
+ move to :class:`.BackendV2`.
60
+
53
61
  Args:
54
62
  backend (Backend): The backend instance that will be used to plot the device
55
63
  gate map.
@@ -92,6 +100,15 @@ def plot_gate_map(
92
100
 
93
101
  plot_gate_map(backend)
94
102
  """
103
+ if not isinstance(backend, BackendV2):
104
+ warnings.warn(
105
+ "The function `plot_gate_map` will stop supporting inputs of "
106
+ f"type `BackendV1` ( {backend} ) in the `backend` parameter in a future "
107
+ "release no earlier than 2.0. `BackendV1` is deprecated and implementations "
108
+ "should move to `BackendV2`.",
109
+ category=DeprecationWarning,
110
+ stacklevel=2,
111
+ )
95
112
  qubit_coordinates_map = {}
96
113
 
97
114
  qubit_coordinates_map[5] = [[1, 0], [0, 1], [1, 1], [1, 2], [2, 1]]
@@ -1145,6 +1162,12 @@ def plot_circuit_layout(circuit, backend, view="virtual", qubit_coordinates=None
1145
1162
  """Plot the layout of a circuit transpiled for a given
1146
1163
  target backend.
1147
1164
 
1165
+ .. deprecated:: 1.4
1166
+ The function ``plot_circuit_layout`` will stop supporting inputs of type
1167
+ :class:`.BackendV1` in the `backend` parameter in a future release no
1168
+ earlier than 2.0. :class:`.BackendV1` is deprecated and implementations should
1169
+ move to :class:`.BackendV2`.
1170
+
1148
1171
  Args:
1149
1172
  circuit (QuantumCircuit): Input quantum circuit.
1150
1173
  backend (Backend): Target backend.
@@ -1187,6 +1210,17 @@ def plot_circuit_layout(circuit, backend, view="virtual", qubit_coordinates=None
1187
1210
  new_circ_lv3 = transpile(ghz, backend=backend, optimization_level=3)
1188
1211
  plot_circuit_layout(new_circ_lv3, backend)
1189
1212
  """
1213
+
1214
+ if not isinstance(backend, BackendV2):
1215
+ warnings.warn(
1216
+ "The function `plot_circuit_layout` will stop supporting inputs of "
1217
+ f"type `BackendV1` ( {backend} ) in the `backend` parameter in a future "
1218
+ "release no earlier than 2.0. `BackendV1` is deprecated and implementations "
1219
+ "should move to `BackendV2`.",
1220
+ category=DeprecationWarning,
1221
+ stacklevel=2,
1222
+ )
1223
+
1190
1224
  if circuit._layout is None:
1191
1225
  raise QiskitError("Circuit has no layout. Perhaps it has not been transpiled.")
1192
1226
 
@@ -1254,6 +1288,12 @@ def plot_circuit_layout(circuit, backend, view="virtual", qubit_coordinates=None
1254
1288
  def plot_error_map(backend, figsize=(15, 12), show_title=True, qubit_coordinates=None):
1255
1289
  """Plots the error map of a given backend.
1256
1290
 
1291
+ .. deprecated:: 1.4
1292
+ The function ``plot_error_map`` will stop supporting inputs of type
1293
+ :class:`.BackendV1` in the `backend` parameter in a future release no
1294
+ earlier than 2.0. :class:`.BackendV1` is deprecated and implementations should
1295
+ move to :class:`.BackendV2`.
1296
+
1257
1297
  Args:
1258
1298
  backend (Backend): Given backend.
1259
1299
  figsize (tuple): Figure size in inches.
@@ -1282,6 +1322,16 @@ def plot_error_map(backend, figsize=(15, 12), show_title=True, qubit_coordinates
1282
1322
  backend = GenericBackendV2(num_qubits=5)
1283
1323
  plot_error_map(backend)
1284
1324
  """
1325
+ if not isinstance(backend, BackendV2):
1326
+ warnings.warn(
1327
+ "The function `plot_error_map` will stop supporting inputs of "
1328
+ f"type `BackendV1` ( {backend} ) in the `backend` parameter in a future "
1329
+ "release no earlier than 2.0. `BackendV1` is deprecated and implementations "
1330
+ "should move to `BackendV2`.",
1331
+ category=DeprecationWarning,
1332
+ stacklevel=2,
1333
+ )
1334
+
1285
1335
  import matplotlib
1286
1336
  import matplotlib.pyplot as plt
1287
1337
  from matplotlib import gridspec, ticker
@@ -27,12 +27,10 @@ from qiskit.pulse.channels import Channel
27
27
  from qiskit.visualization.exceptions import VisualizationError
28
28
  from qiskit.visualization.pulse_v2 import core, device_info, stylesheet, types
29
29
  from qiskit.exceptions import MissingOptionalLibraryError
30
- from qiskit.utils import deprecate_arg
31
30
  from qiskit.utils.deprecate_pulse import deprecate_pulse_dependency
32
31
 
33
32
 
34
33
  @deprecate_pulse_dependency(moving_to_dynamics=True)
35
- @deprecate_arg("show_barrier", new_alias="plot_barrier", since="1.1.0", pending=True)
36
34
  def draw(
37
35
  program: Union[Waveform, SymbolicPulse, Schedule, ScheduleBlock],
38
36
  style: Optional[Dict[str, Any]] = None,
@@ -30,8 +30,8 @@ from qiskit.visualization.timeline import types, core, stylesheet
30
30
  from qiskit.utils import deprecate_arg
31
31
 
32
32
 
33
- @deprecate_arg("show_idle", new_alias="idle_wires", since="1.1.0", pending=True)
34
- @deprecate_arg("show_barriers", new_alias="plot_barriers", since="1.1.0", pending=True)
33
+ @deprecate_arg("show_idle", new_alias="idle_wires", since="1.4")
34
+ @deprecate_arg("show_barriers", new_alias="plot_barriers", since="1.4")
35
35
  def draw(
36
36
  program: circuit.QuantumCircuit,
37
37
  style: Optional[Dict[str, Any]] = None,
@@ -372,7 +372,7 @@ def draw(
372
372
  warnings.warn(
373
373
  "Target is not specified. In Qiskit 2.0.0 this will be required to get the duration of "
374
374
  "instructions.",
375
- PendingDeprecationWarning,
375
+ DeprecationWarning,
376
376
  stacklevel=2,
377
377
  )
378
378
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: qiskit
3
- Version: 1.3.2
3
+ Version: 1.4.0
4
4
  Summary: An open-source SDK for working with quantum computers at the level of extended quantum circuits, operators, and primitives.
5
5
  Author-email: Qiskit Development Team <qiskit@us.ibm.com>
6
6
  License: Apache 2.0
@@ -56,7 +56,7 @@ Requires-Dist: qiskit[crosstalk-pass,csp-layout-pass,qasm3-import,visualization]
56
56
 
57
57
  [![License](https://img.shields.io/github/license/Qiskit/qiskit.svg?)](https://opensource.org/licenses/Apache-2.0) <!--- long-description-skip-begin -->
58
58
  [![Current Release](https://img.shields.io/github/release/Qiskit/qiskit.svg?logo=Qiskit)](https://github.com/Qiskit/qiskit/releases)
59
- [![Extended Support Release](https://img.shields.io/github/v/release/Qiskit/qiskit?sort=semver&filter=0.*&logo=Qiskit&label=extended%20support)](https://github.com/Qiskit/qiskit/releases?q=tag%3A0)
59
+ <!-- [![Extended Support Release](https://img.shields.io/github/v/release/Qiskit/qiskit?sort=semver&filter=0.*&logo=Qiskit&label=extended%20support)](https://github.com/Qiskit/qiskit/releases?q=tag%3A0) -->
60
60
  [![Downloads](https://img.shields.io/pypi/dm/qiskit.svg)](https://pypi.org/project/qiskit/)
61
61
  [![Coverage Status](https://coveralls.io/repos/github/Qiskit/qiskit/badge.svg?branch=main)](https://coveralls.io/github/Qiskit/qiskit?branch=main)
62
62
  ![PyPI - Python Version](https://img.shields.io/pypi/pyversions/qiskit)
@@ -76,9 +76,6 @@ For more details on how to use Qiskit, refer to the documentation located here:
76
76
 
77
77
  ## Installation
78
78
 
79
- > [!WARNING]
80
- > Do not try to upgrade an existing Qiskit 0.* environment to Qiskit 1.0 in-place. [Read more](https://docs.quantum.ibm.com/migration-guides/qiskit-1.0-installation).
81
-
82
79
  We encourage installing Qiskit via ``pip``:
83
80
 
84
81
  ```bash
@@ -200,9 +197,9 @@ to the project at different levels. If you use Qiskit, please cite as per the in
200
197
 
201
198
  The changelog for a particular release is dynamically generated and gets
202
199
  written to the release page on Github for each release. For example, you can
203
- find the page for the `0.46.0` release here:
200
+ find the page for the `1.2.0` release here:
204
201
 
205
- <https://github.com/Qiskit/qiskit/releases/tag/0.46.0>
202
+ <https://github.com/Qiskit/qiskit/releases/tag/1.2.0>
206
203
 
207
204
  The changelog for the current release can be found in the releases tab:
208
205
  [![Releases](https://img.shields.io/github/release/Qiskit/qiskit.svg?style=flat&label=)](https://github.com/Qiskit/qiskit/releases)