qiskit 1.3.0b1__cp39-abi3-win32.whl → 1.3.0rc2__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.
- qiskit/VERSION.txt +1 -1
- qiskit/__init__.py +20 -1
- qiskit/_accelerate.pyd +0 -0
- qiskit/assembler/assemble_schedules.py +2 -0
- qiskit/circuit/__init__.py +44 -1
- qiskit/circuit/_standard_gates_commutations.py +585 -0
- qiskit/circuit/barrier.py +2 -0
- qiskit/circuit/controlflow/builder.py +3 -3
- qiskit/circuit/controlflow/if_else.py +13 -5
- qiskit/circuit/controlflow/while_loop.py +10 -2
- qiskit/circuit/delay.py +20 -3
- qiskit/circuit/equivalence.py +13 -214
- qiskit/circuit/gate.py +3 -1
- qiskit/circuit/instruction.py +32 -11
- qiskit/circuit/instructionset.py +2 -0
- qiskit/circuit/library/__init__.py +110 -14
- qiskit/circuit/library/arithmetic/__init__.py +9 -2
- qiskit/circuit/library/arithmetic/adders/__init__.py +1 -0
- qiskit/circuit/library/arithmetic/adders/adder.py +154 -2
- qiskit/circuit/library/arithmetic/adders/cdkm_ripple_carry_adder.py +20 -56
- qiskit/circuit/library/arithmetic/adders/draper_qft_adder.py +14 -1
- qiskit/circuit/library/arithmetic/adders/vbe_ripple_carry_adder.py +21 -91
- qiskit/circuit/library/arithmetic/linear_pauli_rotations.py +1 -1
- qiskit/circuit/library/arithmetic/multipliers/__init__.py +1 -0
- qiskit/circuit/library/arithmetic/multipliers/hrs_cumulative_multiplier.py +8 -1
- qiskit/circuit/library/arithmetic/multipliers/multiplier.py +94 -3
- qiskit/circuit/library/arithmetic/multipliers/rg_qft_multiplier.py +8 -1
- qiskit/circuit/library/arithmetic/weighted_adder.py +1 -1
- qiskit/circuit/library/basis_change/qft.py +20 -38
- qiskit/circuit/library/blueprintcircuit.py +64 -0
- qiskit/circuit/library/boolean_logic/__init__.py +4 -4
- qiskit/circuit/library/boolean_logic/inner_product.py +81 -4
- qiskit/circuit/library/boolean_logic/quantum_and.py +107 -4
- qiskit/circuit/library/boolean_logic/quantum_or.py +107 -3
- qiskit/circuit/library/boolean_logic/quantum_xor.py +97 -3
- qiskit/circuit/library/data_preparation/__init__.py +6 -3
- qiskit/circuit/library/data_preparation/{z_feature_map.py → _z_feature_map.py} +45 -34
- qiskit/circuit/library/data_preparation/_zz_feature_map.py +150 -0
- qiskit/circuit/library/data_preparation/pauli_feature_map.py +342 -29
- qiskit/circuit/library/fourier_checking.py +72 -11
- qiskit/circuit/library/generalized_gates/__init__.py +1 -1
- qiskit/circuit/library/generalized_gates/diagonal.py +45 -51
- qiskit/circuit/library/generalized_gates/gms.py +67 -14
- qiskit/circuit/library/generalized_gates/gr.py +4 -4
- qiskit/circuit/library/generalized_gates/isometry.py +2 -2
- qiskit/circuit/library/generalized_gates/linear_function.py +12 -6
- qiskit/circuit/library/generalized_gates/mcmt.py +167 -107
- qiskit/circuit/library/generalized_gates/permutation.py +8 -6
- qiskit/circuit/library/generalized_gates/rv.py +8 -9
- qiskit/circuit/library/graph_state.py +93 -10
- qiskit/circuit/library/grover_operator.py +270 -2
- qiskit/circuit/library/hidden_linear_function.py +83 -20
- qiskit/circuit/library/iqp.py +99 -20
- qiskit/circuit/library/n_local/__init__.py +19 -7
- qiskit/circuit/library/n_local/efficient_su2.py +118 -5
- qiskit/circuit/library/n_local/evolved_operator_ansatz.py +259 -0
- qiskit/circuit/library/n_local/excitation_preserving.py +130 -6
- qiskit/circuit/library/n_local/n_local.py +406 -5
- qiskit/circuit/library/n_local/pauli_two_design.py +106 -4
- qiskit/circuit/library/n_local/qaoa_ansatz.py +80 -1
- qiskit/circuit/library/n_local/real_amplitudes.py +127 -7
- qiskit/circuit/library/n_local/two_local.py +14 -7
- qiskit/circuit/library/overlap.py +91 -26
- qiskit/circuit/library/pauli_evolution.py +17 -15
- qiskit/circuit/library/phase_estimation.py +80 -4
- qiskit/circuit/library/quantum_volume.py +72 -20
- qiskit/circuit/library/standard_gates/__init__.py +20 -1
- qiskit/circuit/library/standard_gates/dcx.py +2 -1
- qiskit/circuit/library/standard_gates/ecr.py +2 -2
- qiskit/circuit/library/standard_gates/h.py +4 -3
- qiskit/circuit/library/standard_gates/i.py +2 -1
- qiskit/circuit/library/standard_gates/iswap.py +2 -2
- qiskit/circuit/library/standard_gates/p.py +20 -12
- qiskit/circuit/library/standard_gates/r.py +1 -1
- qiskit/circuit/library/standard_gates/rx.py +4 -3
- qiskit/circuit/library/standard_gates/rxx.py +2 -2
- qiskit/circuit/library/standard_gates/ry.py +4 -3
- qiskit/circuit/library/standard_gates/ryy.py +2 -2
- qiskit/circuit/library/standard_gates/rz.py +13 -12
- qiskit/circuit/library/standard_gates/rzx.py +6 -6
- qiskit/circuit/library/standard_gates/rzz.py +1 -1
- qiskit/circuit/library/standard_gates/s.py +4 -4
- qiskit/circuit/library/standard_gates/swap.py +3 -3
- qiskit/circuit/library/standard_gates/sx.py +4 -3
- qiskit/circuit/library/standard_gates/t.py +2 -2
- qiskit/circuit/library/standard_gates/u.py +11 -3
- qiskit/circuit/library/standard_gates/u1.py +65 -15
- qiskit/circuit/library/standard_gates/u2.py +4 -1
- qiskit/circuit/library/standard_gates/u3.py +31 -3
- qiskit/circuit/library/standard_gates/x.py +7 -5
- qiskit/circuit/library/standard_gates/xx_minus_yy.py +2 -2
- qiskit/circuit/library/standard_gates/xx_plus_yy.py +2 -2
- qiskit/circuit/library/standard_gates/y.py +4 -3
- qiskit/circuit/library/standard_gates/z.py +3 -3
- qiskit/circuit/library/templates/clifford/clifford_2_1.py +9 -8
- qiskit/circuit/library/templates/clifford/clifford_2_2.py +10 -9
- qiskit/circuit/library/templates/clifford/clifford_2_3.py +9 -7
- qiskit/circuit/library/templates/clifford/clifford_2_4.py +9 -8
- qiskit/circuit/library/templates/clifford/clifford_3_1.py +9 -8
- qiskit/circuit/library/templates/clifford/clifford_4_1.py +10 -9
- qiskit/circuit/library/templates/clifford/clifford_4_2.py +10 -9
- qiskit/circuit/library/templates/clifford/clifford_4_3.py +10 -9
- qiskit/circuit/library/templates/clifford/clifford_4_4.py +10 -9
- qiskit/circuit/library/templates/clifford/clifford_5_1.py +10 -9
- qiskit/circuit/library/templates/clifford/clifford_6_1.py +10 -9
- qiskit/circuit/library/templates/clifford/clifford_6_2.py +10 -9
- qiskit/circuit/library/templates/clifford/clifford_6_3.py +10 -9
- qiskit/circuit/library/templates/clifford/clifford_6_4.py +9 -8
- qiskit/circuit/library/templates/clifford/clifford_6_5.py +10 -9
- qiskit/circuit/library/templates/clifford/clifford_8_1.py +10 -9
- qiskit/circuit/library/templates/clifford/clifford_8_2.py +10 -9
- qiskit/circuit/library/templates/clifford/clifford_8_3.py +10 -9
- qiskit/circuit/library/templates/nct/template_nct_2a_1.py +9 -7
- qiskit/circuit/library/templates/nct/template_nct_2a_2.py +10 -8
- qiskit/circuit/library/templates/nct/template_nct_2a_3.py +12 -10
- qiskit/circuit/library/templates/nct/template_nct_4a_1.py +16 -14
- qiskit/circuit/library/templates/nct/template_nct_4a_2.py +14 -12
- qiskit/circuit/library/templates/nct/template_nct_4a_3.py +12 -10
- qiskit/circuit/library/templates/nct/template_nct_4b_1.py +14 -12
- qiskit/circuit/library/templates/nct/template_nct_4b_2.py +12 -10
- qiskit/circuit/library/templates/nct/template_nct_5a_1.py +12 -10
- qiskit/circuit/library/templates/nct/template_nct_5a_2.py +12 -10
- qiskit/circuit/library/templates/nct/template_nct_5a_3.py +12 -10
- qiskit/circuit/library/templates/nct/template_nct_5a_4.py +11 -9
- qiskit/circuit/library/templates/nct/template_nct_6a_1.py +11 -9
- qiskit/circuit/library/templates/nct/template_nct_6a_2.py +12 -10
- qiskit/circuit/library/templates/nct/template_nct_6a_3.py +12 -10
- qiskit/circuit/library/templates/nct/template_nct_6a_4.py +12 -10
- qiskit/circuit/library/templates/nct/template_nct_6b_1.py +12 -10
- qiskit/circuit/library/templates/nct/template_nct_6b_2.py +12 -10
- qiskit/circuit/library/templates/nct/template_nct_6c_1.py +12 -10
- qiskit/circuit/library/templates/nct/template_nct_7a_1.py +13 -11
- qiskit/circuit/library/templates/nct/template_nct_7b_1.py +13 -11
- qiskit/circuit/library/templates/nct/template_nct_7c_1.py +13 -11
- qiskit/circuit/library/templates/nct/template_nct_7d_1.py +13 -11
- qiskit/circuit/library/templates/nct/template_nct_7e_1.py +13 -11
- qiskit/circuit/library/templates/nct/template_nct_9a_1.py +13 -11
- qiskit/circuit/library/templates/nct/template_nct_9c_1.py +11 -9
- qiskit/circuit/library/templates/nct/template_nct_9c_10.py +12 -10
- qiskit/circuit/library/templates/nct/template_nct_9c_11.py +12 -10
- qiskit/circuit/library/templates/nct/template_nct_9c_12.py +12 -10
- qiskit/circuit/library/templates/nct/template_nct_9c_2.py +12 -10
- qiskit/circuit/library/templates/nct/template_nct_9c_3.py +12 -10
- qiskit/circuit/library/templates/nct/template_nct_9c_4.py +12 -10
- qiskit/circuit/library/templates/nct/template_nct_9c_5.py +12 -10
- qiskit/circuit/library/templates/nct/template_nct_9c_6.py +12 -10
- qiskit/circuit/library/templates/nct/template_nct_9c_7.py +12 -10
- qiskit/circuit/library/templates/nct/template_nct_9c_8.py +12 -10
- qiskit/circuit/library/templates/nct/template_nct_9c_9.py +12 -10
- qiskit/circuit/library/templates/nct/template_nct_9d_1.py +11 -9
- qiskit/circuit/library/templates/nct/template_nct_9d_10.py +12 -10
- qiskit/circuit/library/templates/nct/template_nct_9d_2.py +12 -10
- qiskit/circuit/library/templates/nct/template_nct_9d_3.py +12 -10
- qiskit/circuit/library/templates/nct/template_nct_9d_4.py +12 -10
- qiskit/circuit/library/templates/nct/template_nct_9d_5.py +12 -10
- qiskit/circuit/library/templates/nct/template_nct_9d_6.py +12 -10
- qiskit/circuit/library/templates/nct/template_nct_9d_7.py +12 -10
- qiskit/circuit/library/templates/nct/template_nct_9d_8.py +12 -10
- qiskit/circuit/library/templates/nct/template_nct_9d_9.py +12 -10
- qiskit/circuit/library/templates/rzx/rzx_cy.py +11 -10
- qiskit/circuit/library/templates/rzx/rzx_xz.py +16 -15
- qiskit/circuit/library/templates/rzx/rzx_yz.py +12 -10
- qiskit/circuit/library/templates/rzx/rzx_zz1.py +22 -20
- qiskit/circuit/library/templates/rzx/rzx_zz2.py +16 -15
- qiskit/circuit/library/templates/rzx/rzx_zz3.py +17 -15
- qiskit/circuit/parameter.py +4 -0
- qiskit/circuit/parameterexpression.py +167 -34
- qiskit/circuit/quantumcircuit.py +162 -126
- qiskit/circuit/singleton.py +2 -0
- qiskit/circuit/store.py +2 -0
- qiskit/circuit/twirling.py +145 -0
- qiskit/compiler/assembler.py +17 -4
- qiskit/compiler/scheduler.py +2 -0
- qiskit/compiler/sequencer.py +2 -0
- qiskit/compiler/transpiler.py +81 -26
- qiskit/converters/circuit_to_dag.py +2 -2
- qiskit/converters/circuit_to_dagdependency.py +1 -1
- qiskit/converters/circuit_to_dagdependency_v2.py +1 -1
- qiskit/converters/circuit_to_instruction.py +1 -1
- qiskit/converters/dag_to_circuit.py +7 -5
- qiskit/converters/dag_to_dagdependency.py +1 -1
- qiskit/converters/dag_to_dagdependency_v2.py +1 -1
- qiskit/converters/dagdependency_to_circuit.py +5 -1
- qiskit/converters/dagdependency_to_dag.py +6 -1
- qiskit/dagcircuit/collect_blocks.py +3 -3
- qiskit/dagcircuit/dagdependency.py +18 -5
- qiskit/dagcircuit/dagdependency_v2.py +1 -1
- qiskit/dagcircuit/dagnode.py +2 -2
- qiskit/passmanager/__init__.py +2 -2
- qiskit/primitives/backend_estimator.py +5 -2
- qiskit/primitives/backend_sampler_v2.py +61 -18
- qiskit/primitives/base/base_estimator.py +2 -2
- qiskit/primitives/containers/data_bin.py +9 -1
- qiskit/primitives/statevector_sampler.py +1 -1
- qiskit/primitives/utils.py +1 -1
- qiskit/providers/__init__.py +3 -3
- qiskit/providers/backend.py +12 -1
- qiskit/providers/backend_compat.py +23 -3
- qiskit/providers/basic_provider/basic_simulator.py +12 -2
- qiskit/providers/fake_provider/fake_pulse_backend.py +6 -1
- qiskit/providers/fake_provider/generic_backend_v2.py +46 -30
- qiskit/providers/models/pulsedefaults.py +2 -0
- qiskit/pulse/builder.py +59 -18
- qiskit/pulse/calibration_entries.py +4 -1
- qiskit/pulse/channels.py +2 -0
- qiskit/pulse/exceptions.py +2 -0
- qiskit/pulse/instruction_schedule_map.py +21 -6
- qiskit/pulse/instructions/acquire.py +2 -0
- qiskit/pulse/instructions/delay.py +2 -0
- qiskit/pulse/instructions/directives.py +8 -0
- qiskit/pulse/instructions/frequency.py +3 -0
- qiskit/pulse/instructions/instruction.py +2 -0
- qiskit/pulse/instructions/phase.py +3 -0
- qiskit/pulse/instructions/play.py +2 -0
- qiskit/pulse/instructions/reference.py +2 -0
- qiskit/pulse/instructions/snapshot.py +2 -0
- qiskit/pulse/library/pulse.py +2 -0
- qiskit/pulse/library/symbolic_pulses.py +28 -0
- qiskit/pulse/library/waveform.py +2 -0
- qiskit/pulse/macros.py +1 -1
- qiskit/pulse/schedule.py +12 -13
- qiskit/pulse/transforms/alignments.py +5 -3
- qiskit/pulse/transforms/dag.py +7 -0
- qiskit/qasm2/export.py +5 -3
- qiskit/qasm2/parse.py +46 -2
- qiskit/qasm3/__init__.py +1 -0
- qiskit/qasm3/ast.py +123 -15
- qiskit/qasm3/exporter.py +103 -77
- qiskit/qobj/converters/pulse_instruction.py +6 -4
- qiskit/qpy/__init__.py +181 -0
- qiskit/qpy/binary_io/circuits.py +20 -5
- qiskit/qpy/binary_io/schedules.py +3 -4
- qiskit/qpy/binary_io/value.py +310 -13
- qiskit/qpy/common.py +46 -2
- qiskit/qpy/formats.py +7 -0
- qiskit/qpy/interface.py +40 -4
- qiskit/quantum_info/__init__.py +4 -0
- qiskit/quantum_info/operators/channel/transformations.py +28 -21
- qiskit/quantum_info/operators/dihedral/dihedral.py +1 -1
- qiskit/quantum_info/operators/operator.py +54 -8
- qiskit/quantum_info/operators/symplectic/base_pauli.py +11 -19
- qiskit/quantum_info/operators/symplectic/clifford.py +1 -1
- qiskit/quantum_info/operators/symplectic/clifford_circuits.py +1 -1
- qiskit/quantum_info/operators/symplectic/pauli.py +2 -0
- qiskit/quantum_info/operators/symplectic/pauli_list.py +4 -4
- qiskit/quantum_info/operators/symplectic/sparse_pauli_op.py +23 -2
- qiskit/quantum_info/states/densitymatrix.py +5 -5
- qiskit/quantum_info/states/stabilizerstate.py +1 -1
- qiskit/quantum_info/states/statevector.py +6 -6
- qiskit/result/mitigation/base_readout_mitigator.py +1 -1
- qiskit/result/mitigation/correlated_readout_mitigator.py +9 -1
- qiskit/result/mitigation/local_readout_mitigator.py +9 -1
- qiskit/result/mitigation/utils.py +57 -0
- qiskit/scheduler/config.py +2 -0
- qiskit/scheduler/methods/basic.py +3 -0
- qiskit/scheduler/schedule_circuit.py +2 -0
- qiskit/scheduler/sequence.py +2 -0
- qiskit/synthesis/__init__.py +25 -0
- qiskit/synthesis/arithmetic/__init__.py +16 -0
- qiskit/synthesis/arithmetic/adders/__init__.py +17 -0
- qiskit/synthesis/arithmetic/adders/cdkm_ripple_carry_adder.py +154 -0
- qiskit/synthesis/arithmetic/adders/draper_qft_adder.py +103 -0
- qiskit/synthesis/arithmetic/adders/vbe_ripple_carry_adder.py +161 -0
- qiskit/synthesis/arithmetic/multipliers/__init__.py +16 -0
- qiskit/synthesis/arithmetic/multipliers/hrs_cumulative_multiplier.py +102 -0
- qiskit/synthesis/arithmetic/multipliers/rg_qft_multiplier.py +99 -0
- qiskit/synthesis/clifford/clifford_decompose_bm.py +1 -2
- qiskit/synthesis/clifford/clifford_decompose_greedy.py +3 -2
- qiskit/synthesis/clifford/clifford_decompose_layers.py +2 -1
- qiskit/synthesis/evolution/__init__.py +1 -0
- qiskit/synthesis/evolution/lie_trotter.py +16 -42
- qiskit/synthesis/evolution/pauli_network.py +80 -0
- qiskit/synthesis/evolution/product_formula.py +165 -238
- qiskit/synthesis/evolution/qdrift.py +36 -29
- qiskit/synthesis/evolution/suzuki_trotter.py +87 -27
- qiskit/synthesis/multi_controlled/__init__.py +1 -0
- qiskit/synthesis/multi_controlled/mcmt_vchain.py +52 -0
- qiskit/synthesis/qft/qft_decompose_full.py +19 -1
- qiskit/synthesis/qft/qft_decompose_lnn.py +2 -1
- qiskit/synthesis/stabilizer/stabilizer_decompose.py +2 -1
- qiskit/synthesis/two_qubit/two_qubit_decompose.py +4 -63
- qiskit/synthesis/unitary/qsd.py +5 -5
- qiskit/transpiler/__init__.py +21 -14
- qiskit/transpiler/basepasses.py +1 -1
- qiskit/transpiler/passes/__init__.py +2 -0
- qiskit/transpiler/passes/basis/basis_translator.py +9 -565
- qiskit/transpiler/passes/basis/decompose.py +45 -12
- qiskit/transpiler/passes/basis/unroll_3q_or_more.py +1 -1
- qiskit/transpiler/passes/basis/unroll_custom_definitions.py +1 -1
- qiskit/transpiler/passes/calibration/pulse_gate.py +4 -2
- qiskit/transpiler/passes/calibration/rx_builder.py +11 -7
- qiskit/transpiler/passes/calibration/rzx_builder.py +46 -30
- qiskit/transpiler/passes/layout/disjoint_utils.py +15 -13
- qiskit/transpiler/passes/layout/sabre_layout.py +7 -2
- qiskit/transpiler/passes/layout/sabre_pre_layout.py +5 -0
- qiskit/transpiler/passes/optimization/__init__.py +1 -0
- qiskit/transpiler/passes/optimization/collect_cliffords.py +19 -3
- qiskit/transpiler/passes/optimization/collect_linear_functions.py +1 -1
- qiskit/transpiler/passes/optimization/collect_multiqubit_blocks.py +2 -2
- qiskit/transpiler/passes/optimization/commutative_inverse_cancellation.py +1 -1
- qiskit/transpiler/passes/optimization/consolidate_blocks.py +48 -131
- qiskit/transpiler/passes/optimization/echo_rzx_weyl_decomposition.py +4 -2
- qiskit/transpiler/passes/optimization/elide_permutations.py +9 -32
- qiskit/transpiler/passes/optimization/optimize_1q_decomposition.py +5 -11
- qiskit/transpiler/passes/optimization/optimize_1q_gates.py +1 -1
- qiskit/transpiler/passes/optimization/optimize_swap_before_measure.py +1 -1
- qiskit/transpiler/passes/optimization/remove_identity_equiv.py +69 -0
- qiskit/transpiler/passes/optimization/template_matching/backward_match.py +5 -5
- qiskit/transpiler/passes/optimization/template_matching/forward_match.py +4 -4
- qiskit/transpiler/passes/optimization/template_matching/template_substitution.py +2 -2
- qiskit/transpiler/passes/routing/commuting_2q_gate_routing/commuting_2q_gate_router.py +1 -1
- qiskit/transpiler/passes/routing/commuting_2q_gate_routing/swap_strategy.py +1 -1
- qiskit/transpiler/passes/routing/sabre_swap.py +7 -3
- qiskit/transpiler/passes/routing/star_prerouting.py +2 -2
- qiskit/transpiler/passes/scheduling/alap.py +1 -1
- qiskit/transpiler/passes/scheduling/alignments/align_measures.py +2 -2
- qiskit/transpiler/passes/scheduling/alignments/check_durations.py +1 -1
- qiskit/transpiler/passes/scheduling/alignments/pulse_gate_validation.py +2 -0
- qiskit/transpiler/passes/scheduling/alignments/reschedule.py +2 -2
- qiskit/transpiler/passes/scheduling/asap.py +1 -1
- qiskit/transpiler/passes/scheduling/base_scheduler.py +14 -12
- qiskit/transpiler/passes/scheduling/dynamical_decoupling.py +9 -4
- qiskit/transpiler/passes/scheduling/padding/base_padding.py +1 -1
- qiskit/transpiler/passes/scheduling/padding/dynamical_decoupling.py +16 -5
- qiskit/transpiler/passes/scheduling/padding/pad_delay.py +4 -1
- qiskit/transpiler/passes/scheduling/scheduling/base_scheduler.py +6 -2
- qiskit/transpiler/passes/scheduling/time_unit_conversion.py +9 -4
- qiskit/transpiler/passes/synthesis/high_level_synthesis.py +262 -99
- qiskit/transpiler/passes/synthesis/hls_plugins.py +637 -7
- qiskit/transpiler/passes/synthesis/solovay_kitaev_synthesis.py +3 -3
- qiskit/transpiler/passes/synthesis/unitary_synthesis.py +55 -34
- qiskit/transpiler/passes/utils/barrier_before_final_measurements.py +2 -56
- qiskit/transpiler/passes/utils/convert_conditions_to_if_ops.py +5 -0
- qiskit/transpiler/passes/utils/gate_direction.py +12 -275
- qiskit/transpiler/passes/utils/gates_basis.py +7 -30
- qiskit/transpiler/passes/utils/merge_adjacent_barriers.py +2 -1
- qiskit/transpiler/passmanager_config.py +22 -4
- qiskit/transpiler/preset_passmanagers/builtin_plugins.py +40 -14
- qiskit/transpiler/preset_passmanagers/common.py +5 -3
- qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py +125 -42
- qiskit/transpiler/preset_passmanagers/plugin.py +1 -1
- qiskit/transpiler/target.py +74 -16
- qiskit/utils/deprecate_pulse.py +119 -0
- qiskit/visualization/circuit/_utils.py +2 -2
- qiskit/visualization/circuit/circuit_visualization.py +3 -2
- qiskit/visualization/circuit/matplotlib.py +1 -1
- qiskit/visualization/dag_visualization.py +1 -1
- qiskit/visualization/pass_manager_visualization.py +3 -14
- qiskit/visualization/pulse_v2/interface.py +3 -1
- qiskit/visualization/timeline/core.py +25 -2
- qiskit/visualization/timeline/interface.py +12 -0
- {qiskit-1.3.0b1.dist-info → qiskit-1.3.0rc2.dist-info}/METADATA +9 -8
- {qiskit-1.3.0b1.dist-info → qiskit-1.3.0rc2.dist-info}/RECORD +357 -346
- {qiskit-1.3.0b1.dist-info → qiskit-1.3.0rc2.dist-info}/WHEEL +1 -1
- {qiskit-1.3.0b1.dist-info → qiskit-1.3.0rc2.dist-info}/entry_points.txt +19 -0
- qiskit/circuit/library/data_preparation/zz_feature_map.py +0 -118
- qiskit/synthesis/two_qubit/weyl.py +0 -97
- qiskit/transpiler/passes/synthesis/qubit_tracker.py +0 -132
- {qiskit-1.3.0b1.dist-info → qiskit-1.3.0rc2.dist-info}/LICENSE.txt +0 -0
- {qiskit-1.3.0b1.dist-info → qiskit-1.3.0rc2.dist-info}/top_level.txt +0 -0
@@ -17,6 +17,7 @@ from qiskit.circuit.parameterexpression import ParameterExpression
|
|
17
17
|
from qiskit.pulse.channels import Channel
|
18
18
|
from qiskit.pulse.exceptions import PulseError, UnassignedReferenceError
|
19
19
|
from qiskit.pulse.instructions import instruction
|
20
|
+
from qiskit.utils.deprecate_pulse import deprecate_pulse_func
|
20
21
|
|
21
22
|
|
22
23
|
class Reference(instruction.Instruction):
|
@@ -40,6 +41,7 @@ class Reference(instruction.Instruction):
|
|
40
41
|
# Delimiter for tuple keys.
|
41
42
|
key_delimiter = ","
|
42
43
|
|
44
|
+
@deprecate_pulse_func
|
43
45
|
def __init__(self, name: str, *extra_keys: str):
|
44
46
|
"""Create new reference.
|
45
47
|
|
@@ -18,11 +18,13 @@ from typing import Optional, Tuple
|
|
18
18
|
from qiskit.pulse.channels import SnapshotChannel
|
19
19
|
from qiskit.pulse.exceptions import PulseError
|
20
20
|
from qiskit.pulse.instructions.instruction import Instruction
|
21
|
+
from qiskit.utils.deprecate_pulse import deprecate_pulse_func
|
21
22
|
|
22
23
|
|
23
24
|
class Snapshot(Instruction):
|
24
25
|
"""An instruction targeted for simulators, to capture a moment in the simulation."""
|
25
26
|
|
27
|
+
@deprecate_pulse_func
|
26
28
|
def __init__(self, label: str, snapshot_type: str = "statevector", name: Optional[str] = None):
|
27
29
|
"""Create new snapshot.
|
28
30
|
|
qiskit/pulse/library/pulse.py
CHANGED
@@ -18,6 +18,7 @@ from __future__ import annotations
|
|
18
18
|
import typing
|
19
19
|
from abc import ABC, abstractmethod
|
20
20
|
from typing import Any
|
21
|
+
from qiskit.utils.deprecate_pulse import deprecate_pulse_func
|
21
22
|
|
22
23
|
from qiskit.circuit.parameterexpression import ParameterExpression
|
23
24
|
|
@@ -36,6 +37,7 @@ class Pulse(ABC):
|
|
36
37
|
limit_amplitude = True
|
37
38
|
|
38
39
|
@abstractmethod
|
40
|
+
@deprecate_pulse_func
|
39
41
|
def __init__(
|
40
42
|
self,
|
41
43
|
duration: int | ParameterExpression,
|
@@ -31,6 +31,7 @@ from qiskit.circuit.parameterexpression import ParameterExpression, ParameterVal
|
|
31
31
|
from qiskit.pulse.exceptions import PulseError
|
32
32
|
from qiskit.pulse.library.pulse import Pulse
|
33
33
|
from qiskit.pulse.library.waveform import Waveform
|
34
|
+
from qiskit.utils.deprecate_pulse import deprecate_pulse_func
|
34
35
|
|
35
36
|
|
36
37
|
def _lifted_gaussian(
|
@@ -403,6 +404,7 @@ class SymbolicPulse(Pulse):
|
|
403
404
|
_constraints_lam = LambdifiedExpression("_constraints")
|
404
405
|
_valid_amp_conditions_lam = LambdifiedExpression("_valid_amp_conditions")
|
405
406
|
|
407
|
+
@deprecate_pulse_func
|
406
408
|
def __init__(
|
407
409
|
self,
|
408
410
|
pulse_type: str,
|
@@ -780,6 +782,10 @@ class Gaussian(metaclass=_PulseType):
|
|
780
782
|
valid_amp_conditions=valid_amp_conditions_expr,
|
781
783
|
)
|
782
784
|
|
785
|
+
@deprecate_pulse_func
|
786
|
+
def __init__(self):
|
787
|
+
pass
|
788
|
+
|
783
789
|
|
784
790
|
class GaussianSquare(metaclass=_PulseType):
|
785
791
|
"""A square pulse with a Gaussian shaped risefall on both sides lifted such that
|
@@ -908,7 +914,12 @@ class GaussianSquare(metaclass=_PulseType):
|
|
908
914
|
valid_amp_conditions=valid_amp_conditions_expr,
|
909
915
|
)
|
910
916
|
|
917
|
+
@deprecate_pulse_func
|
918
|
+
def __init__(self):
|
919
|
+
pass
|
920
|
+
|
911
921
|
|
922
|
+
@deprecate_pulse_func
|
912
923
|
def GaussianSquareDrag(
|
913
924
|
duration: int | ParameterExpression,
|
914
925
|
amp: float | ParameterExpression,
|
@@ -1061,6 +1072,7 @@ def GaussianSquareDrag(
|
|
1061
1072
|
)
|
1062
1073
|
|
1063
1074
|
|
1075
|
+
@deprecate_pulse_func
|
1064
1076
|
def gaussian_square_echo(
|
1065
1077
|
duration: int | ParameterValueType,
|
1066
1078
|
amp: float | ParameterExpression,
|
@@ -1264,6 +1276,7 @@ def gaussian_square_echo(
|
|
1264
1276
|
)
|
1265
1277
|
|
1266
1278
|
|
1279
|
+
@deprecate_pulse_func
|
1267
1280
|
def GaussianDeriv(
|
1268
1281
|
duration: int | ParameterValueType,
|
1269
1282
|
amp: float | ParameterExpression,
|
@@ -1424,6 +1437,10 @@ class Drag(metaclass=_PulseType):
|
|
1424
1437
|
valid_amp_conditions=valid_amp_conditions_expr,
|
1425
1438
|
)
|
1426
1439
|
|
1440
|
+
@deprecate_pulse_func
|
1441
|
+
def __init__(self):
|
1442
|
+
pass
|
1443
|
+
|
1427
1444
|
|
1428
1445
|
class Constant(metaclass=_PulseType):
|
1429
1446
|
"""A simple constant pulse, with an amplitude value and a duration:
|
@@ -1485,7 +1502,12 @@ class Constant(metaclass=_PulseType):
|
|
1485
1502
|
valid_amp_conditions=valid_amp_conditions_expr,
|
1486
1503
|
)
|
1487
1504
|
|
1505
|
+
@deprecate_pulse_func
|
1506
|
+
def __init__(self):
|
1507
|
+
pass
|
1508
|
+
|
1488
1509
|
|
1510
|
+
@deprecate_pulse_func
|
1489
1511
|
def Sin(
|
1490
1512
|
duration: int | ParameterExpression,
|
1491
1513
|
amp: float | ParameterExpression,
|
@@ -1550,6 +1572,7 @@ def Sin(
|
|
1550
1572
|
)
|
1551
1573
|
|
1552
1574
|
|
1575
|
+
@deprecate_pulse_func
|
1553
1576
|
def Cos(
|
1554
1577
|
duration: int | ParameterExpression,
|
1555
1578
|
amp: float | ParameterExpression,
|
@@ -1614,6 +1637,7 @@ def Cos(
|
|
1614
1637
|
)
|
1615
1638
|
|
1616
1639
|
|
1640
|
+
@deprecate_pulse_func
|
1617
1641
|
def Sawtooth(
|
1618
1642
|
duration: int | ParameterExpression,
|
1619
1643
|
amp: float | ParameterExpression,
|
@@ -1682,6 +1706,7 @@ def Sawtooth(
|
|
1682
1706
|
)
|
1683
1707
|
|
1684
1708
|
|
1709
|
+
@deprecate_pulse_func
|
1685
1710
|
def Triangle(
|
1686
1711
|
duration: int | ParameterExpression,
|
1687
1712
|
amp: float | ParameterExpression,
|
@@ -1750,6 +1775,7 @@ def Triangle(
|
|
1750
1775
|
)
|
1751
1776
|
|
1752
1777
|
|
1778
|
+
@deprecate_pulse_func
|
1753
1779
|
def Square(
|
1754
1780
|
duration: int | ParameterValueType,
|
1755
1781
|
amp: float | ParameterExpression,
|
@@ -1821,6 +1847,7 @@ def Square(
|
|
1821
1847
|
)
|
1822
1848
|
|
1823
1849
|
|
1850
|
+
@deprecate_pulse_func
|
1824
1851
|
def Sech(
|
1825
1852
|
duration: int | ParameterValueType,
|
1826
1853
|
amp: float | ParameterExpression,
|
@@ -1897,6 +1924,7 @@ def Sech(
|
|
1897
1924
|
)
|
1898
1925
|
|
1899
1926
|
|
1927
|
+
@deprecate_pulse_func
|
1900
1928
|
def SechDeriv(
|
1901
1929
|
duration: int | ParameterValueType,
|
1902
1930
|
amp: float | ParameterExpression,
|
qiskit/pulse/library/waveform.py
CHANGED
@@ -18,6 +18,7 @@ import numpy as np
|
|
18
18
|
|
19
19
|
from qiskit.pulse.exceptions import PulseError
|
20
20
|
from qiskit.pulse.library.pulse import Pulse
|
21
|
+
from qiskit.utils.deprecate_pulse import deprecate_pulse_func
|
21
22
|
|
22
23
|
|
23
24
|
class Waveform(Pulse):
|
@@ -25,6 +26,7 @@ class Waveform(Pulse):
|
|
25
26
|
duration of the backend cycle-time, dt.
|
26
27
|
"""
|
27
28
|
|
29
|
+
@deprecate_pulse_func
|
28
30
|
def __init__(
|
29
31
|
self,
|
30
32
|
samples: np.ndarray | list[complex],
|
qiskit/pulse/macros.py
CHANGED
@@ -194,7 +194,7 @@ def _measure_v2(
|
|
194
194
|
for measure_qubit in meas_group:
|
195
195
|
try:
|
196
196
|
if measure_qubit in qubits:
|
197
|
-
default_sched = target.
|
197
|
+
default_sched = target._get_calibration(measure_name, (measure_qubit,)).filter(
|
198
198
|
channels=[
|
199
199
|
channels.MeasureChannel(measure_qubit),
|
200
200
|
channels.AcquireChannel(measure_qubit),
|
qiskit/pulse/schedule.py
CHANGED
@@ -54,6 +54,7 @@ from qiskit.pulse.utils import instruction_duration_validation
|
|
54
54
|
from qiskit.pulse.reference_manager import ReferenceManager
|
55
55
|
from qiskit.utils.multiprocessing import is_main_process
|
56
56
|
from qiskit.utils import deprecate_arg
|
57
|
+
from qiskit.utils.deprecate_pulse import deprecate_pulse_func
|
57
58
|
|
58
59
|
|
59
60
|
Interval = Tuple[int, int]
|
@@ -81,6 +82,7 @@ class Schedule:
|
|
81
82
|
|
82
83
|
.. code-block:: python
|
83
84
|
|
85
|
+
from qiskit.pulse import Schedule, Gaussian, DriveChannel, Play
|
84
86
|
sched = Schedule()
|
85
87
|
sched += Play(Gaussian(160, 0.1, 40), DriveChannel(0))
|
86
88
|
|
@@ -120,6 +122,7 @@ class Schedule:
|
|
120
122
|
# Counter to count instance number.
|
121
123
|
instances_counter = itertools.count()
|
122
124
|
|
125
|
+
@deprecate_pulse_func
|
123
126
|
def __init__(
|
124
127
|
self,
|
125
128
|
*schedules: "ScheduleComponent" | tuple[int, "ScheduleComponent"],
|
@@ -653,8 +656,6 @@ class Schedule:
|
|
653
656
|
|
654
657
|
sched += pulse.Schedule(old)
|
655
658
|
|
656
|
-
sched = sched.flatten()
|
657
|
-
|
658
659
|
sched = sched.replace(old, new)
|
659
660
|
|
660
661
|
assert sched == pulse.Schedule(new)
|
@@ -899,14 +900,11 @@ class ScheduleBlock:
|
|
899
900
|
pulse.reference("grand_child")
|
900
901
|
pulse.play(pulse.Constant(200, amp2), pulse.DriveChannel(0))
|
901
902
|
|
902
|
-
|
903
|
-
|
904
|
-
.. code-block::
|
905
|
-
|
906
|
-
sched_outer.assign_references({("grand_child", ): sched_inner})
|
903
|
+
# Now assign the inner pulse program to this reference
|
904
|
+
sched_outer.assign_references({("grand_child",): sched_inner})
|
907
905
|
print(sched_outer.parameters)
|
908
906
|
|
909
|
-
..
|
907
|
+
.. code-block:: text
|
910
908
|
|
911
909
|
{Parameter(amp1), Parameter(amp2)}
|
912
910
|
|
@@ -920,7 +918,7 @@ class ScheduleBlock:
|
|
920
918
|
|
921
919
|
print(sched_outer.references)
|
922
920
|
|
923
|
-
..
|
921
|
+
.. code-block:: text
|
924
922
|
|
925
923
|
ReferenceManager:
|
926
924
|
- ('grand_child',): ScheduleBlock(Play(Constant(duration=100, amp=amp1,...
|
@@ -939,7 +937,7 @@ class ScheduleBlock:
|
|
939
937
|
|
940
938
|
print(main.parameters)
|
941
939
|
|
942
|
-
..
|
940
|
+
.. code-block:: text
|
943
941
|
|
944
942
|
{Parameter(amp1), Parameter(amp2), Parameter(amp3}
|
945
943
|
|
@@ -952,7 +950,7 @@ class ScheduleBlock:
|
|
952
950
|
|
953
951
|
print(main.references)
|
954
952
|
|
955
|
-
..
|
953
|
+
.. code-block:: text
|
956
954
|
|
957
955
|
ReferenceManager:
|
958
956
|
- ('child',): ScheduleBlock(ScheduleBlock(ScheduleBlock(Play(Con...
|
@@ -986,6 +984,7 @@ class ScheduleBlock:
|
|
986
984
|
# Counter to count instance number.
|
987
985
|
instances_counter = itertools.count()
|
988
986
|
|
987
|
+
@deprecate_pulse_func
|
989
988
|
def __init__(
|
990
989
|
self, name: str | None = None, metadata: dict | None = None, alignment_context=None
|
991
990
|
):
|
@@ -1459,7 +1458,7 @@ class ScheduleBlock:
|
|
1459
1458
|
|
1460
1459
|
from qiskit import pulse
|
1461
1460
|
|
1462
|
-
with pulse.build() as
|
1461
|
+
with pulse.build() as nested_prog:
|
1463
1462
|
pulse.delay(10, pulse.DriveChannel(0))
|
1464
1463
|
|
1465
1464
|
with pulse.build() as sub_prog:
|
@@ -1490,7 +1489,7 @@ class ScheduleBlock:
|
|
1490
1489
|
.. code-block:: python
|
1491
1490
|
|
1492
1491
|
main_prog.assign_references({("B", ): sub_prog}, inplace=True)
|
1493
|
-
main_prog.references[("B", )].assign_references({"A": nested_prog}, inplace=True)
|
1492
|
+
main_prog.references[("B", )].assign_references({("A", ): nested_prog}, inplace=True)
|
1494
1493
|
|
1495
1494
|
Here :attr:`.references` returns a dict-like object, and you can
|
1496
1495
|
mutably update the nested reference of the particular subroutine.
|
@@ -53,7 +53,7 @@ class AlignmentKind(abc.ABC):
|
|
53
53
|
When the context has two pulses in different channels,
|
54
54
|
a sequential context subtype intends to return following scheduling outcome.
|
55
55
|
|
56
|
-
..
|
56
|
+
.. code-block:: text
|
57
57
|
|
58
58
|
┌────────┐
|
59
59
|
D0: ┤ pulse1 ├────────────
|
@@ -63,7 +63,7 @@ class AlignmentKind(abc.ABC):
|
|
63
63
|
|
64
64
|
On the other hand, parallel context with ``is_sequential=False`` returns
|
65
65
|
|
66
|
-
..
|
66
|
+
.. code-block:: text
|
67
67
|
|
68
68
|
┌────────┐
|
69
69
|
D0: ┤ pulse1 ├
|
@@ -338,8 +338,10 @@ class AlignFunc(AlignmentKind):
|
|
338
338
|
|
339
339
|
.. code-block:: python
|
340
340
|
|
341
|
+
import numpy as np
|
342
|
+
|
341
343
|
def udd10_pos(j):
|
342
|
-
|
344
|
+
return np.sin(np.pi*j/(2*10 + 2))**2
|
343
345
|
|
344
346
|
.. note::
|
345
347
|
|
qiskit/pulse/transforms/dag.py
CHANGED
@@ -32,6 +32,11 @@ def block_to_dag(block: ScheduleBlock) -> rx.PyDAG:
|
|
32
32
|
|
33
33
|
.. code-block:: python
|
34
34
|
|
35
|
+
from qiskit import pulse
|
36
|
+
|
37
|
+
my_gaussian0 = pulse.Gaussian(100, 0.5, 20)
|
38
|
+
my_gaussian1 = pulse.Gaussian(100, 0.3, 10)
|
39
|
+
|
35
40
|
with pulse.build() as sched1:
|
36
41
|
with pulse.align_left():
|
37
42
|
pulse.play(my_gaussian0, pulse.DriveChannel(0))
|
@@ -51,6 +56,8 @@ def block_to_dag(block: ScheduleBlock) -> rx.PyDAG:
|
|
51
56
|
|
52
57
|
.. code-block:: python
|
53
58
|
|
59
|
+
from qiskit import pulse
|
60
|
+
|
54
61
|
with pulse.build() as sched:
|
55
62
|
with pulse.align_left():
|
56
63
|
pulse.shift_phase(1.57, pulse.DriveChannel(1))
|
qiskit/qasm2/export.py
CHANGED
@@ -246,12 +246,14 @@ def _instruction_call_site(operation):
|
|
246
246
|
if operation.params:
|
247
247
|
params = ",".join([pi_check(i, output="qasm", eps=1e-12) for i in operation.params])
|
248
248
|
qasm2_call = f"{qasm2_call}({params})"
|
249
|
-
if operation.
|
250
|
-
if not isinstance(operation.
|
249
|
+
if operation._condition is not None:
|
250
|
+
if not isinstance(operation._condition[0], ClassicalRegister):
|
251
251
|
raise QASM2ExportError(
|
252
252
|
"OpenQASM 2 can only condition on registers, but got '{operation.condition[0]}'"
|
253
253
|
)
|
254
|
-
qasm2_call =
|
254
|
+
qasm2_call = (
|
255
|
+
f"if({operation._condition[0].name}=={operation._condition[1]:d}) " + qasm2_call
|
256
|
+
)
|
255
257
|
return qasm2_call
|
256
258
|
|
257
259
|
|
qiskit/qasm2/parse.py
CHANGED
@@ -11,7 +11,7 @@
|
|
11
11
|
# that they have been altered from the originals.
|
12
12
|
|
13
13
|
"""Python-space bytecode interpreter for the output of the main Rust parser logic."""
|
14
|
-
|
14
|
+
import warnings
|
15
15
|
import dataclasses
|
16
16
|
import math
|
17
17
|
from typing import Iterable, Callable
|
@@ -89,6 +89,35 @@ class CustomInstruction:
|
|
89
89
|
There is a final ``builtin`` field. This is optional, and if set true will cause the
|
90
90
|
instruction to be defined and available within the parsing, even if there is no definition in
|
91
91
|
any included OpenQASM 2 file.
|
92
|
+
|
93
|
+
Examples:
|
94
|
+
|
95
|
+
Instruct the importer to use Qiskit's :class:`.ECRGate` and :class:`.RZXGate` objects to
|
96
|
+
interpret ``gate`` statements that are known to have been created from those same objects
|
97
|
+
during OpenQASM 2 export::
|
98
|
+
|
99
|
+
from qiskit import qasm2
|
100
|
+
from qiskit.circuit import QuantumCircuit, library
|
101
|
+
|
102
|
+
qc = QuantumCircuit(2)
|
103
|
+
qc.ecr(0, 1)
|
104
|
+
qc.rzx(0.3, 0, 1)
|
105
|
+
qc.rzx(0.7, 1, 0)
|
106
|
+
qc.rzx(1.5, 0, 1)
|
107
|
+
qc.ecr(1, 0)
|
108
|
+
|
109
|
+
# This output string includes `gate ecr q0, q1 { ... }` and `gate rzx(p) q0, q1 { ... }`
|
110
|
+
# statements, since `ecr` and `rzx` are neither built-in gates nor in ``qelib1.inc``.
|
111
|
+
dumped = qasm2.dumps(qc)
|
112
|
+
|
113
|
+
# Tell the importer how to interpret the `gate` statements, which we know are safe
|
114
|
+
# because we controlled the input OpenQASM 2 source.
|
115
|
+
custom = [
|
116
|
+
qasm2.CustomInstruction("ecr", 0, 2, library.ECRGate),
|
117
|
+
qasm2.CustomInstruction("rzx", 1, 2, library.RZXGate),
|
118
|
+
]
|
119
|
+
|
120
|
+
loaded = qasm2.loads(dumped, custom_instructions=custom)
|
92
121
|
"""
|
93
122
|
|
94
123
|
name: str
|
@@ -226,6 +255,11 @@ def from_bytecode(bytecode, custom_instructions: Iterable[CustomInstruction]):
|
|
226
255
|
CircuitInstruction(gates[gate_id](*parameters), [qubits[q] for q in op_qubits])
|
227
256
|
)
|
228
257
|
elif opcode == OpCode.ConditionedGate:
|
258
|
+
warnings.warn(
|
259
|
+
"Conditioned gates in qasm2 will be loaded as an IfElseOp starting in Qiskit 2.0",
|
260
|
+
FutureWarning,
|
261
|
+
stacklevel=3,
|
262
|
+
)
|
229
263
|
gate_id, parameters, op_qubits, creg, value = op.operands
|
230
264
|
gate = gates[gate_id](*parameters).c_if(qc.cregs[creg], value)
|
231
265
|
qc._append(CircuitInstruction(gate, [qubits[q] for q in op_qubits]))
|
@@ -233,12 +267,22 @@ def from_bytecode(bytecode, custom_instructions: Iterable[CustomInstruction]):
|
|
233
267
|
qubit, clbit = op.operands
|
234
268
|
qc._append(CircuitInstruction(Measure(), (qubits[qubit],), (clbits[clbit],)))
|
235
269
|
elif opcode == OpCode.ConditionedMeasure:
|
270
|
+
warnings.warn(
|
271
|
+
"Conditioned measurements in qasm2 will be loaded as an IfElseOp starting in Qiskit 2.0",
|
272
|
+
FutureWarning,
|
273
|
+
stacklevel=3,
|
274
|
+
)
|
236
275
|
qubit, clbit, creg, value = op.operands
|
237
276
|
measure = Measure().c_if(qc.cregs[creg], value)
|
238
277
|
qc._append(CircuitInstruction(measure, (qubits[qubit],), (clbits[clbit],)))
|
239
278
|
elif opcode == OpCode.Reset:
|
240
279
|
qc._append(CircuitInstruction(Reset(), (qubits[op.operands[0]],)))
|
241
280
|
elif opcode == OpCode.ConditionedReset:
|
281
|
+
warnings.warn(
|
282
|
+
"Conditioned resets in qasm2 will be loaded as an IfElseOp starting in Qiskit 2.0",
|
283
|
+
FutureWarning,
|
284
|
+
stacklevel=3,
|
285
|
+
)
|
242
286
|
qubit, creg, value = op.operands
|
243
287
|
reset = Reset().c_if(qc.cregs[creg], value)
|
244
288
|
qc._append(CircuitInstruction(reset, (qubits[qubit],)))
|
@@ -327,7 +371,7 @@ class _DefinedGate(Gate):
|
|
327
371
|
# to pickle ourselves, we just eagerly create the definition and pickle that.
|
328
372
|
|
329
373
|
def __getstate__(self):
|
330
|
-
return (self.name, self.num_qubits, self.params, self.definition, self.
|
374
|
+
return (self.name, self.num_qubits, self.params, self.definition, self._condition)
|
331
375
|
|
332
376
|
def __setstate__(self, state):
|
333
377
|
name, num_qubits, params, definition, condition = state
|
qiskit/qasm3/__init__.py
CHANGED
@@ -209,6 +209,7 @@ custom Python constructors to use for particular gates. These custom constructo
|
|
209
209
|
using the :class:`CustomGate` object:
|
210
210
|
|
211
211
|
.. autoclass:: CustomGate
|
212
|
+
:members:
|
212
213
|
|
213
214
|
In ``custom_gates`` is not given, Qiskit will attempt to use its standard-library gate objects for
|
214
215
|
the gates defined in OpenQASM 3 standard library file ``stdgates.inc``. This sequence of gates is
|