qiskit 1.4.2__cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl → 2.0.0rc2__cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.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 +2 -5
- qiskit/_accelerate.abi3.so +0 -0
- qiskit/circuit/__init__.py +24 -5
- qiskit/circuit/{add_control.py → _add_control.py} +32 -12
- qiskit/circuit/_classical_resource_map.py +5 -3
- qiskit/circuit/barrier.py +3 -7
- qiskit/circuit/classical/expr/__init__.py +31 -3
- qiskit/circuit/classical/expr/constructors.py +248 -28
- qiskit/circuit/classical/expr/expr.py +104 -3
- qiskit/circuit/classical/expr/visitors.py +75 -0
- qiskit/circuit/classical/types/__init__.py +12 -8
- qiskit/circuit/classical/types/ordering.py +14 -7
- qiskit/circuit/classical/types/types.py +36 -0
- qiskit/circuit/commutation_checker.py +34 -7
- qiskit/circuit/controlflow/__init__.py +32 -1
- qiskit/circuit/controlflow/_builder_utils.py +9 -5
- qiskit/circuit/controlflow/box.py +163 -0
- qiskit/circuit/controlflow/break_loop.py +1 -1
- qiskit/circuit/controlflow/builder.py +139 -39
- qiskit/circuit/controlflow/continue_loop.py +1 -3
- qiskit/circuit/controlflow/control_flow.py +10 -0
- qiskit/circuit/controlflow/for_loop.py +2 -1
- qiskit/circuit/controlflow/if_else.py +3 -16
- qiskit/circuit/controlflow/switch_case.py +2 -8
- qiskit/circuit/controlflow/while_loop.py +2 -7
- qiskit/circuit/controlledgate.py +2 -4
- qiskit/circuit/delay.py +40 -11
- qiskit/circuit/duration.py +0 -15
- qiskit/circuit/gate.py +2 -4
- qiskit/circuit/instruction.py +2 -141
- qiskit/circuit/instructionset.py +7 -54
- qiskit/circuit/library/__init__.py +34 -5
- qiskit/circuit/library/arithmetic/__init__.py +16 -10
- qiskit/circuit/library/arithmetic/adders/cdkm_ripple_carry_adder.py +1 -1
- qiskit/circuit/library/arithmetic/adders/draper_qft_adder.py +2 -2
- qiskit/circuit/library/arithmetic/adders/vbe_ripple_carry_adder.py +1 -1
- qiskit/circuit/library/arithmetic/exact_reciprocal.py +64 -21
- qiskit/circuit/library/arithmetic/integer_comparator.py +37 -80
- qiskit/circuit/library/arithmetic/linear_amplitude_function.py +169 -2
- qiskit/circuit/library/arithmetic/linear_pauli_rotations.py +59 -5
- qiskit/circuit/library/arithmetic/piecewise_chebyshev.py +154 -6
- qiskit/circuit/library/arithmetic/piecewise_linear_pauli_rotations.py +114 -4
- qiskit/circuit/library/arithmetic/piecewise_polynomial_pauli_rotations.py +191 -15
- qiskit/circuit/library/arithmetic/polynomial_pauli_rotations.py +93 -39
- qiskit/circuit/library/arithmetic/quadratic_form.py +168 -2
- qiskit/circuit/library/arithmetic/weighted_adder.py +73 -1
- qiskit/circuit/library/bit_flip_oracle.py +130 -0
- qiskit/circuit/library/blueprintcircuit.py +52 -16
- qiskit/circuit/library/data_preparation/initializer.py +1 -1
- qiskit/circuit/library/data_preparation/pauli_feature_map.py +4 -4
- qiskit/circuit/library/data_preparation/state_preparation.py +1 -1
- qiskit/circuit/library/generalized_gates/gms.py +1 -1
- qiskit/circuit/library/generalized_gates/isometry.py +1 -1
- qiskit/circuit/library/generalized_gates/pauli.py +1 -2
- qiskit/circuit/library/generalized_gates/uc.py +97 -7
- qiskit/circuit/library/generalized_gates/uc_pauli_rot.py +1 -1
- qiskit/circuit/library/generalized_gates/unitary.py +4 -2
- qiskit/circuit/library/hamiltonian_gate.py +1 -1
- qiskit/circuit/library/n_local/evolved_operator_ansatz.py +1 -1
- qiskit/circuit/library/n_local/n_local.py +1 -1
- qiskit/circuit/library/n_local/qaoa_ansatz.py +1 -1
- qiskit/circuit/library/overlap.py +2 -2
- qiskit/circuit/library/pauli_evolution.py +39 -24
- qiskit/circuit/library/phase_oracle.py +130 -51
- qiskit/circuit/library/standard_gates/__init__.py +0 -1
- qiskit/circuit/library/standard_gates/dcx.py +3 -4
- qiskit/circuit/library/standard_gates/ecr.py +3 -4
- qiskit/circuit/library/standard_gates/global_phase.py +5 -6
- qiskit/circuit/library/standard_gates/h.py +4 -9
- qiskit/circuit/library/standard_gates/i.py +2 -2
- qiskit/circuit/library/standard_gates/iswap.py +3 -4
- qiskit/circuit/library/standard_gates/p.py +15 -34
- qiskit/circuit/library/standard_gates/r.py +3 -7
- qiskit/circuit/library/standard_gates/rx.py +5 -15
- qiskit/circuit/library/standard_gates/rxx.py +3 -6
- qiskit/circuit/library/standard_gates/ry.py +5 -17
- qiskit/circuit/library/standard_gates/ryy.py +3 -6
- qiskit/circuit/library/standard_gates/rz.py +5 -17
- qiskit/circuit/library/standard_gates/rzx.py +3 -6
- qiskit/circuit/library/standard_gates/rzz.py +3 -6
- qiskit/circuit/library/standard_gates/s.py +6 -15
- qiskit/circuit/library/standard_gates/swap.py +4 -11
- qiskit/circuit/library/standard_gates/sx.py +7 -12
- qiskit/circuit/library/standard_gates/t.py +6 -7
- qiskit/circuit/library/standard_gates/u.py +2 -10
- qiskit/circuit/library/standard_gates/u1.py +5 -16
- qiskit/circuit/library/standard_gates/u2.py +2 -6
- qiskit/circuit/library/standard_gates/u3.py +3 -11
- qiskit/circuit/library/standard_gates/x.py +13 -60
- qiskit/circuit/library/standard_gates/xx_minus_yy.py +2 -5
- qiskit/circuit/library/standard_gates/xx_plus_yy.py +2 -5
- qiskit/circuit/library/standard_gates/y.py +4 -9
- qiskit/circuit/library/standard_gates/z.py +5 -15
- qiskit/circuit/measure.py +11 -2
- qiskit/circuit/parameterexpression.py +7 -1
- qiskit/circuit/quantumcircuit.py +881 -555
- qiskit/circuit/random/utils.py +12 -6
- qiskit/circuit/reset.py +5 -2
- qiskit/circuit/singleton.py +5 -11
- qiskit/circuit/store.py +0 -8
- qiskit/compiler/__init__.py +1 -7
- qiskit/compiler/transpiler.py +38 -196
- qiskit/converters/circuit_to_dag.py +4 -2
- qiskit/converters/circuit_to_dagdependency.py +0 -2
- qiskit/converters/circuit_to_dagdependency_v2.py +0 -1
- qiskit/converters/circuit_to_gate.py +1 -1
- qiskit/converters/circuit_to_instruction.py +16 -29
- qiskit/converters/dag_to_circuit.py +5 -5
- qiskit/converters/dag_to_dagdependency.py +0 -1
- qiskit/converters/dag_to_dagdependency_v2.py +0 -1
- qiskit/converters/dagdependency_to_circuit.py +0 -6
- qiskit/converters/dagdependency_to_dag.py +0 -6
- qiskit/dagcircuit/collect_blocks.py +32 -20
- qiskit/dagcircuit/dagdependency.py +3 -37
- qiskit/dagcircuit/dagdependency_v2.py +2 -80
- qiskit/dagcircuit/dagnode.py +14 -2
- qiskit/passmanager/__init__.py +24 -6
- qiskit/passmanager/passmanager.py +26 -24
- qiskit/primitives/__init__.py +44 -35
- qiskit/primitives/backend_estimator_v2.py +102 -23
- qiskit/primitives/backend_sampler_v2.py +5 -20
- qiskit/primitives/base/__init__.py +4 -4
- qiskit/primitives/base/base_estimator.py +77 -82
- qiskit/primitives/base/base_primitive_job.py +2 -2
- qiskit/primitives/base/{base_primitive.py → base_primitive_v1.py} +1 -1
- qiskit/primitives/base/{base_result.py → base_result_v1.py} +1 -1
- qiskit/primitives/base/base_sampler.py +52 -60
- qiskit/primitives/base/{estimator_result.py → estimator_result_v1.py} +2 -2
- qiskit/primitives/base/{sampler_result.py → sampler_result_v1.py} +2 -2
- qiskit/primitives/base/{validation.py → validation_v1.py} +34 -15
- qiskit/primitives/containers/bindings_array.py +3 -1
- qiskit/primitives/containers/bit_array.py +23 -0
- qiskit/primitives/containers/data_bin.py +3 -1
- qiskit/primitives/containers/observables_array.py +19 -2
- qiskit/primitives/statevector_sampler.py +6 -8
- qiskit/primitives/utils.py +14 -189
- qiskit/providers/__init__.py +4 -130
- qiskit/providers/backend.py +11 -314
- qiskit/providers/basic_provider/__init__.py +3 -1
- qiskit/providers/basic_provider/basic_provider.py +29 -9
- qiskit/providers/basic_provider/basic_simulator.py +158 -298
- qiskit/providers/exceptions.py +0 -33
- qiskit/providers/fake_provider/__init__.py +0 -37
- qiskit/providers/fake_provider/generic_backend_v2.py +32 -693
- qiskit/qasm2/__init__.py +21 -6
- qiskit/qasm2/export.py +2 -10
- qiskit/qasm2/parse.py +11 -25
- qiskit/qasm3/__init__.py +5 -1
- qiskit/qasm3/ast.py +44 -0
- qiskit/qasm3/exporter.py +65 -27
- qiskit/qasm3/printer.py +35 -4
- qiskit/qpy/__init__.py +141 -19
- qiskit/qpy/binary_io/__init__.py +0 -1
- qiskit/qpy/binary_io/circuits.py +93 -130
- qiskit/qpy/binary_io/schedules.py +69 -439
- qiskit/qpy/binary_io/value.py +154 -31
- qiskit/qpy/common.py +10 -7
- qiskit/qpy/formats.py +41 -0
- qiskit/qpy/interface.py +34 -81
- qiskit/qpy/type_keys.py +58 -221
- qiskit/quantum_info/analysis/distance.py +3 -1
- qiskit/quantum_info/operators/dihedral/dihedral.py +3 -1
- qiskit/quantum_info/operators/operator.py +6 -2
- qiskit/quantum_info/operators/symplectic/clifford.py +3 -1
- qiskit/quantum_info/operators/symplectic/pauli.py +4 -2
- qiskit/quantum_info/operators/symplectic/pauli_list.py +17 -5
- qiskit/quantum_info/operators/symplectic/sparse_pauli_op.py +40 -6
- qiskit/quantum_info/states/densitymatrix.py +16 -6
- qiskit/quantum_info/states/stabilizerstate.py +35 -4
- qiskit/quantum_info/states/statevector.py +16 -6
- qiskit/result/__init__.py +5 -17
- qiskit/result/models.py +18 -10
- qiskit/result/result.py +28 -126
- qiskit/result/sampled_expval.py +1 -2
- qiskit/result/utils.py +3 -4
- qiskit/synthesis/__init__.py +21 -1
- qiskit/synthesis/arithmetic/__init__.py +3 -1
- qiskit/synthesis/arithmetic/adders/cdkm_ripple_carry_adder.py +1 -1
- qiskit/synthesis/arithmetic/adders/draper_qft_adder.py +1 -1
- qiskit/synthesis/arithmetic/adders/vbe_ripple_carry_adder.py +2 -2
- qiskit/{providers/fake_provider/backends_v1/fake_20q → synthesis/arithmetic/comparators}/__init__.py +4 -6
- qiskit/synthesis/arithmetic/comparators/compare_2s.py +112 -0
- qiskit/synthesis/arithmetic/comparators/compare_greedy.py +66 -0
- qiskit/synthesis/arithmetic/multipliers/hrs_cumulative_multiplier.py +1 -1
- qiskit/synthesis/arithmetic/multipliers/rg_qft_multiplier.py +1 -1
- qiskit/synthesis/arithmetic/weighted_sum.py +155 -0
- qiskit/{result/mitigation → synthesis/boolean}/__init__.py +2 -2
- qiskit/synthesis/boolean/boolean_expression.py +231 -0
- qiskit/synthesis/boolean/boolean_expression_synth.py +124 -0
- qiskit/synthesis/boolean/boolean_expression_visitor.py +96 -0
- qiskit/synthesis/evolution/lie_trotter.py +10 -7
- qiskit/synthesis/evolution/product_formula.py +44 -35
- qiskit/synthesis/evolution/qdrift.py +17 -24
- qiskit/synthesis/evolution/suzuki_trotter.py +20 -27
- qiskit/synthesis/linear/linear_depth_lnn.py +6 -221
- qiskit/synthesis/linear_phase/cx_cz_depth_lnn.py +4 -205
- qiskit/synthesis/multi_controlled/__init__.py +1 -0
- qiskit/synthesis/multi_controlled/mcx_synthesis.py +5 -2
- qiskit/synthesis/multi_controlled/multi_control_rotation_gates.py +206 -0
- qiskit/synthesis/one_qubit/one_qubit_decompose.py +1 -1
- qiskit/synthesis/two_qubit/__init__.py +1 -0
- qiskit/synthesis/two_qubit/two_qubit_decompose.py +28 -145
- qiskit/transpiler/__init__.py +32 -232
- qiskit/transpiler/basepasses.py +20 -51
- qiskit/transpiler/layout.py +1 -1
- qiskit/transpiler/passes/__init__.py +2 -40
- qiskit/transpiler/passes/basis/basis_translator.py +4 -3
- qiskit/transpiler/passes/basis/decompose.py +1 -15
- qiskit/transpiler/passes/basis/unroll_3q_or_more.py +1 -5
- qiskit/transpiler/passes/basis/unroll_custom_definitions.py +3 -2
- qiskit/transpiler/passes/layout/apply_layout.py +4 -0
- qiskit/transpiler/passes/layout/dense_layout.py +2 -39
- qiskit/transpiler/passes/layout/full_ancilla_allocation.py +4 -4
- qiskit/transpiler/passes/layout/sabre_layout.py +7 -3
- qiskit/transpiler/passes/layout/vf2_layout.py +2 -20
- qiskit/transpiler/passes/layout/vf2_post_layout.py +60 -125
- qiskit/transpiler/passes/layout/vf2_utils.py +2 -26
- qiskit/transpiler/passes/optimization/__init__.py +1 -3
- qiskit/transpiler/passes/optimization/collect_and_collapse.py +2 -0
- qiskit/transpiler/passes/optimization/collect_cliffords.py +5 -0
- qiskit/transpiler/passes/optimization/collect_linear_functions.py +5 -0
- qiskit/transpiler/passes/optimization/collect_multiqubit_blocks.py +16 -1
- qiskit/transpiler/passes/optimization/commutation_analysis.py +3 -3
- qiskit/transpiler/passes/optimization/consolidate_blocks.py +41 -19
- qiskit/transpiler/passes/optimization/contract_idle_wires_in_control_flow.py +104 -0
- qiskit/transpiler/passes/optimization/light_cone.py +135 -0
- qiskit/transpiler/passes/optimization/optimize_1q_commutation.py +0 -1
- qiskit/transpiler/passes/optimization/optimize_1q_decomposition.py +18 -22
- qiskit/transpiler/passes/optimization/optimize_annotated.py +3 -2
- qiskit/transpiler/passes/optimization/remove_identity_equiv.py +6 -4
- qiskit/transpiler/passes/optimization/reset_after_measure_simplification.py +5 -2
- qiskit/transpiler/passes/optimization/split_2q_unitaries.py +26 -3
- qiskit/transpiler/passes/optimization/template_matching/template_substitution.py +1 -0
- qiskit/transpiler/passes/routing/__init__.py +0 -1
- qiskit/transpiler/passes/routing/commuting_2q_gate_routing/commuting_2q_gate_router.py +3 -1
- qiskit/transpiler/passes/routing/sabre_swap.py +14 -6
- qiskit/transpiler/passes/routing/star_prerouting.py +1 -1
- qiskit/transpiler/passes/scheduling/__init__.py +1 -7
- qiskit/transpiler/passes/scheduling/alignments/__init__.py +2 -4
- qiskit/transpiler/passes/scheduling/alignments/check_durations.py +1 -9
- qiskit/transpiler/passes/scheduling/alignments/reschedule.py +17 -16
- qiskit/transpiler/passes/scheduling/padding/base_padding.py +30 -2
- qiskit/transpiler/passes/scheduling/padding/dynamical_decoupling.py +20 -58
- qiskit/transpiler/passes/scheduling/padding/pad_delay.py +11 -3
- qiskit/transpiler/passes/scheduling/scheduling/alap.py +5 -39
- qiskit/transpiler/passes/scheduling/scheduling/asap.py +4 -35
- qiskit/transpiler/passes/scheduling/scheduling/base_scheduler.py +10 -16
- qiskit/transpiler/passes/scheduling/time_unit_conversion.py +127 -59
- qiskit/transpiler/passes/synthesis/default_unitary_synth_plugin.py +653 -0
- qiskit/transpiler/passes/synthesis/high_level_synthesis.py +176 -601
- qiskit/transpiler/passes/synthesis/hls_plugins.py +294 -1
- qiskit/transpiler/passes/synthesis/plugin.py +4 -0
- qiskit/transpiler/passes/synthesis/solovay_kitaev_synthesis.py +16 -10
- qiskit/transpiler/passes/synthesis/unitary_synthesis.py +34 -697
- qiskit/transpiler/passes/utils/__init__.py +0 -1
- qiskit/transpiler/passes/utils/check_gate_direction.py +13 -5
- qiskit/transpiler/passes/utils/control_flow.py +2 -6
- qiskit/transpiler/passes/utils/gate_direction.py +7 -0
- qiskit/transpiler/passes/utils/remove_final_measurements.py +40 -33
- qiskit/transpiler/passmanager.py +13 -0
- qiskit/transpiler/passmanager_config.py +5 -81
- qiskit/transpiler/preset_passmanagers/builtin_plugins.py +225 -344
- qiskit/transpiler/preset_passmanagers/common.py +140 -167
- qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py +101 -322
- qiskit/transpiler/preset_passmanagers/level0.py +2 -11
- qiskit/transpiler/preset_passmanagers/level1.py +2 -14
- qiskit/transpiler/preset_passmanagers/level2.py +2 -12
- qiskit/transpiler/preset_passmanagers/level3.py +2 -11
- qiskit/transpiler/preset_passmanagers/plugin.py +5 -3
- qiskit/transpiler/target.py +67 -524
- qiskit/user_config.py +8 -4
- qiskit/utils/__init__.py +13 -12
- qiskit/utils/deprecation.py +4 -112
- qiskit/utils/optionals.py +11 -4
- qiskit/utils/parallel.py +214 -87
- qiskit/utils/units.py +4 -1
- qiskit/visualization/__init__.py +3 -7
- qiskit/visualization/array.py +4 -1
- qiskit/visualization/bloch.py +1 -1
- qiskit/visualization/circuit/_utils.py +19 -19
- qiskit/visualization/circuit/circuit_visualization.py +11 -4
- qiskit/visualization/circuit/matplotlib.py +13 -23
- qiskit/visualization/circuit/text.py +7 -3
- qiskit/visualization/dag_visualization.py +2 -1
- qiskit/visualization/gate_map.py +39 -154
- qiskit/visualization/pass_manager_visualization.py +6 -2
- qiskit/visualization/state_visualization.py +6 -0
- qiskit/visualization/timeline/core.py +18 -12
- qiskit/visualization/timeline/interface.py +19 -18
- {qiskit-1.4.2.dist-info → qiskit-2.0.0rc2.dist-info}/METADATA +2 -2
- {qiskit-1.4.2.dist-info → qiskit-2.0.0rc2.dist-info}/RECORD +624 -771
- {qiskit-1.4.2.dist-info → qiskit-2.0.0rc2.dist-info}/entry_points.txt +8 -2
- qiskit/assembler/__init__.py +0 -42
- qiskit/assembler/assemble_circuits.py +0 -451
- qiskit/assembler/assemble_schedules.py +0 -367
- qiskit/assembler/disassemble.py +0 -310
- qiskit/assembler/run_config.py +0 -77
- qiskit/circuit/bit.py +0 -106
- qiskit/circuit/classicalfunction/__init__.py +0 -152
- qiskit/circuit/classicalfunction/boolean_expression.py +0 -138
- qiskit/circuit/classicalfunction/classical_element.py +0 -54
- qiskit/circuit/classicalfunction/classical_function_visitor.py +0 -155
- qiskit/circuit/classicalfunction/classicalfunction.py +0 -182
- qiskit/circuit/classicalfunction/exceptions.py +0 -41
- qiskit/circuit/classicalfunction/types.py +0 -18
- qiskit/circuit/classicalfunction/utils.py +0 -91
- qiskit/circuit/classicalregister.py +0 -57
- qiskit/circuit/library/standard_gates/multi_control_rotation_gates.py +0 -405
- qiskit/circuit/quantumregister.py +0 -75
- qiskit/circuit/register.py +0 -246
- qiskit/compiler/assembler.py +0 -689
- qiskit/compiler/scheduler.py +0 -109
- qiskit/compiler/sequencer.py +0 -71
- qiskit/primitives/backend_estimator.py +0 -486
- qiskit/primitives/backend_sampler.py +0 -222
- qiskit/primitives/estimator.py +0 -172
- qiskit/primitives/sampler.py +0 -162
- qiskit/providers/backend_compat.py +0 -507
- qiskit/providers/fake_provider/backends_v1/__init__.py +0 -22
- qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/__init__.py +0 -18
- qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/conf_washington.json +0 -1
- qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/defs_washington.json +0 -1
- qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/fake_127q_pulse_v1.py +0 -37
- qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/props_washington.json +0 -1
- qiskit/providers/fake_provider/backends_v1/fake_20q/conf_singapore.json +0 -1
- qiskit/providers/fake_provider/backends_v1/fake_20q/fake_20q.py +0 -43
- qiskit/providers/fake_provider/backends_v1/fake_20q/props_singapore.json +0 -1
- qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/__init__.py +0 -18
- qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/conf_hanoi.json +0 -1
- qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/defs_hanoi.json +0 -1
- qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/fake_27q_pulse_v1.py +0 -50
- qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/props_hanoi.json +0 -1
- qiskit/providers/fake_provider/backends_v1/fake_5q/__init__.py +0 -18
- qiskit/providers/fake_provider/backends_v1/fake_5q/conf_yorktown.json +0 -1
- qiskit/providers/fake_provider/backends_v1/fake_5q/fake_5q_v1.py +0 -41
- qiskit/providers/fake_provider/backends_v1/fake_5q/props_yorktown.json +0 -1
- qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/__init__.py +0 -18
- qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/conf_nairobi.json +0 -1
- qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/defs_nairobi.json +0 -1
- qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/fake_7q_pulse_v1.py +0 -44
- qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/props_nairobi.json +0 -1
- qiskit/providers/fake_provider/fake_1q.py +0 -91
- qiskit/providers/fake_provider/fake_backend.py +0 -165
- qiskit/providers/fake_provider/fake_openpulse_2q.py +0 -391
- qiskit/providers/fake_provider/fake_openpulse_3q.py +0 -340
- qiskit/providers/fake_provider/fake_pulse_backend.py +0 -49
- qiskit/providers/fake_provider/fake_qasm_backend.py +0 -77
- qiskit/providers/fake_provider/utils/backend_converter.py +0 -150
- qiskit/providers/fake_provider/utils/json_decoder.py +0 -109
- qiskit/providers/models/__init__.py +0 -89
- qiskit/providers/models/backendconfiguration.py +0 -1040
- qiskit/providers/models/backendproperties.py +0 -535
- qiskit/providers/models/backendstatus.py +0 -104
- qiskit/providers/models/jobstatus.py +0 -77
- qiskit/providers/models/pulsedefaults.py +0 -305
- qiskit/providers/provider.py +0 -95
- qiskit/pulse/__init__.py +0 -158
- qiskit/pulse/builder.py +0 -2262
- qiskit/pulse/calibration_entries.py +0 -381
- qiskit/pulse/channels.py +0 -227
- qiskit/pulse/configuration.py +0 -245
- qiskit/pulse/exceptions.py +0 -45
- qiskit/pulse/filters.py +0 -309
- qiskit/pulse/instruction_schedule_map.py +0 -424
- qiskit/pulse/instructions/__init__.py +0 -67
- qiskit/pulse/instructions/acquire.py +0 -150
- qiskit/pulse/instructions/delay.py +0 -71
- qiskit/pulse/instructions/directives.py +0 -154
- qiskit/pulse/instructions/frequency.py +0 -135
- qiskit/pulse/instructions/instruction.py +0 -270
- qiskit/pulse/instructions/phase.py +0 -152
- qiskit/pulse/instructions/play.py +0 -99
- qiskit/pulse/instructions/reference.py +0 -100
- qiskit/pulse/instructions/snapshot.py +0 -82
- qiskit/pulse/library/__init__.py +0 -97
- qiskit/pulse/library/continuous.py +0 -430
- qiskit/pulse/library/pulse.py +0 -148
- qiskit/pulse/library/samplers/__init__.py +0 -15
- qiskit/pulse/library/samplers/decorators.py +0 -295
- qiskit/pulse/library/samplers/strategies.py +0 -71
- qiskit/pulse/library/symbolic_pulses.py +0 -1989
- qiskit/pulse/library/waveform.py +0 -136
- qiskit/pulse/macros.py +0 -262
- qiskit/pulse/parameter_manager.py +0 -445
- qiskit/pulse/parser.py +0 -314
- qiskit/pulse/reference_manager.py +0 -58
- qiskit/pulse/schedule.py +0 -1854
- qiskit/pulse/transforms/__init__.py +0 -106
- qiskit/pulse/transforms/alignments.py +0 -406
- qiskit/pulse/transforms/base_transforms.py +0 -71
- qiskit/pulse/transforms/canonicalization.py +0 -498
- qiskit/pulse/transforms/dag.py +0 -122
- qiskit/pulse/utils.py +0 -149
- qiskit/qobj/__init__.py +0 -75
- qiskit/qobj/common.py +0 -81
- qiskit/qobj/converters/__init__.py +0 -18
- qiskit/qobj/converters/lo_config.py +0 -177
- qiskit/qobj/converters/pulse_instruction.py +0 -897
- qiskit/qobj/pulse_qobj.py +0 -709
- qiskit/qobj/qasm_qobj.py +0 -708
- qiskit/qobj/utils.py +0 -46
- qiskit/result/mitigation/base_readout_mitigator.py +0 -79
- qiskit/result/mitigation/correlated_readout_mitigator.py +0 -277
- qiskit/result/mitigation/local_readout_mitigator.py +0 -328
- qiskit/result/mitigation/utils.py +0 -217
- qiskit/scheduler/__init__.py +0 -40
- qiskit/scheduler/config.py +0 -37
- qiskit/scheduler/lowering.py +0 -187
- qiskit/scheduler/methods/__init__.py +0 -15
- qiskit/scheduler/methods/basic.py +0 -140
- qiskit/scheduler/schedule_circuit.py +0 -69
- qiskit/scheduler/sequence.py +0 -104
- qiskit/transpiler/passes/calibration/__init__.py +0 -17
- qiskit/transpiler/passes/calibration/base_builder.py +0 -79
- qiskit/transpiler/passes/calibration/builders.py +0 -20
- qiskit/transpiler/passes/calibration/exceptions.py +0 -22
- qiskit/transpiler/passes/calibration/pulse_gate.py +0 -100
- qiskit/transpiler/passes/calibration/rx_builder.py +0 -164
- qiskit/transpiler/passes/calibration/rzx_builder.py +0 -411
- qiskit/transpiler/passes/calibration/rzx_templates.py +0 -58
- qiskit/transpiler/passes/optimization/cx_cancellation.py +0 -65
- qiskit/transpiler/passes/optimization/echo_rzx_weyl_decomposition.py +0 -162
- qiskit/transpiler/passes/optimization/normalize_rx_angle.py +0 -157
- qiskit/transpiler/passes/routing/stochastic_swap.py +0 -532
- qiskit/transpiler/passes/scheduling/alap.py +0 -153
- qiskit/transpiler/passes/scheduling/alignments/align_measures.py +0 -255
- qiskit/transpiler/passes/scheduling/alignments/pulse_gate_validation.py +0 -107
- qiskit/transpiler/passes/scheduling/asap.py +0 -175
- qiskit/transpiler/passes/scheduling/base_scheduler.py +0 -310
- qiskit/transpiler/passes/scheduling/dynamical_decoupling.py +0 -313
- qiskit/transpiler/passes/utils/convert_conditions_to_if_ops.py +0 -93
- qiskit/utils/deprecate_pulse.py +0 -119
- qiskit/utils/multiprocessing.py +0 -56
- qiskit/visualization/pulse_v2/__init__.py +0 -21
- qiskit/visualization/pulse_v2/core.py +0 -901
- qiskit/visualization/pulse_v2/device_info.py +0 -173
- qiskit/visualization/pulse_v2/drawings.py +0 -253
- qiskit/visualization/pulse_v2/events.py +0 -254
- qiskit/visualization/pulse_v2/generators/__init__.py +0 -40
- qiskit/visualization/pulse_v2/generators/barrier.py +0 -76
- qiskit/visualization/pulse_v2/generators/chart.py +0 -208
- qiskit/visualization/pulse_v2/generators/frame.py +0 -436
- qiskit/visualization/pulse_v2/generators/snapshot.py +0 -133
- qiskit/visualization/pulse_v2/generators/waveform.py +0 -645
- qiskit/visualization/pulse_v2/interface.py +0 -459
- qiskit/visualization/pulse_v2/layouts.py +0 -387
- qiskit/visualization/pulse_v2/plotters/__init__.py +0 -17
- qiskit/visualization/pulse_v2/plotters/base_plotter.py +0 -53
- qiskit/visualization/pulse_v2/plotters/matplotlib.py +0 -201
- qiskit/visualization/pulse_v2/stylesheet.py +0 -312
- qiskit/visualization/pulse_v2/types.py +0 -242
- {qiskit-1.4.2.dist-info → qiskit-2.0.0rc2.dist-info}/LICENSE.txt +0 -0
- {qiskit-1.4.2.dist-info → qiskit-2.0.0rc2.dist-info}/WHEEL +0 -0
- {qiskit-1.4.2.dist-info → qiskit-2.0.0rc2.dist-info}/top_level.txt +0 -0
qiskit/VERSION.txt
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
2.0.0rc2
|
qiskit/__init__.py
CHANGED
@@ -81,7 +81,6 @@ sys.modules["qiskit._accelerate.sampled_exp_val"] = _accelerate.sampled_exp_val
|
|
81
81
|
sys.modules["qiskit._accelerate.sparse_observable"] = _accelerate.sparse_observable
|
82
82
|
sys.modules["qiskit._accelerate.sparse_pauli_op"] = _accelerate.sparse_pauli_op
|
83
83
|
sys.modules["qiskit._accelerate.star_prerouting"] = _accelerate.star_prerouting
|
84
|
-
sys.modules["qiskit._accelerate.stochastic_swap"] = _accelerate.stochastic_swap
|
85
84
|
sys.modules["qiskit._accelerate.elide_permutations"] = _accelerate.elide_permutations
|
86
85
|
sys.modules["qiskit._accelerate.target"] = _accelerate.target
|
87
86
|
sys.modules["qiskit._accelerate.two_qubit_decompose"] = _accelerate.two_qubit_decompose
|
@@ -128,10 +127,11 @@ import qiskit.circuit.reset
|
|
128
127
|
|
129
128
|
_config = _user_config.get_config()
|
130
129
|
|
131
|
-
from qiskit.compiler import transpile
|
130
|
+
from qiskit.compiler import transpile
|
132
131
|
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager
|
133
132
|
from .version import __version__
|
134
133
|
|
134
|
+
|
135
135
|
__all__ = [
|
136
136
|
"AncillaRegister",
|
137
137
|
"ClassicalRegister",
|
@@ -139,9 +139,6 @@ __all__ = [
|
|
139
139
|
"QiskitError",
|
140
140
|
"QuantumCircuit",
|
141
141
|
"QuantumRegister",
|
142
|
-
"assemble",
|
143
|
-
"schedule",
|
144
|
-
"sequence",
|
145
142
|
"transpile",
|
146
143
|
"generate_preset_pass_manager",
|
147
144
|
]
|
qiskit/_accelerate.abi3.so
CHANGED
Binary file
|
qiskit/circuit/__init__.py
CHANGED
@@ -561,7 +561,11 @@ Hardware can be instructed to apply a real-time idle period on a given qubit. A
|
|
561
561
|
|
562
562
|
The :class:`Barrier` instruction can span an arbitrary number of qubits and clbits, and is a no-op
|
563
563
|
in hardware. During transpilation and optimization, however, it blocks any optimizations from
|
564
|
-
"crossing" the barrier; that is, in
|
564
|
+
"crossing" the barrier; that is, in:
|
565
|
+
|
566
|
+
.. plot::
|
567
|
+
:include-source:
|
568
|
+
:nofigs:
|
565
569
|
|
566
570
|
from qiskit.circuit import QuantumCircuit
|
567
571
|
|
@@ -697,6 +701,11 @@ attributes of each of the control-flow operations.
|
|
697
701
|
|
698
702
|
Set of the instruction names of Qiskit's known control-flow operations.
|
699
703
|
|
704
|
+
The :func:`.get_control_flow_name_mapping` function allows to access the control-flow operation
|
705
|
+
classes associated to each name.
|
706
|
+
|
707
|
+
.. autofunction:: get_control_flow_name_mapping
|
708
|
+
|
700
709
|
These control-flow operations (:class:`IfElseOp`, :class:`WhileLoopOp`,
|
701
710
|
:class:`SwitchCaseOp` and :class:`ForLoopOp`) all have specific state that defines the branching
|
702
711
|
conditions and strategies, but contain all the different subcircuit blocks that might be entered in
|
@@ -1273,11 +1282,21 @@ In both these cases, the matrix form of :class:`.CCXGate` in ``ctrl_state = 1``
|
|
1273
1282
|
\end{pmatrix}
|
1274
1283
|
"""
|
1275
1284
|
|
1285
|
+
from qiskit._accelerate.circuit import ( # pylint: disable=unused-import
|
1286
|
+
Bit,
|
1287
|
+
Qubit,
|
1288
|
+
AncillaQubit,
|
1289
|
+
Clbit,
|
1290
|
+
QuantumRegister,
|
1291
|
+
AncillaRegister,
|
1292
|
+
ClassicalRegister,
|
1293
|
+
Register,
|
1294
|
+
Duration,
|
1295
|
+
)
|
1296
|
+
|
1276
1297
|
from .exceptions import CircuitError
|
1277
1298
|
from . import _utils
|
1278
1299
|
from .quantumcircuit import QuantumCircuit
|
1279
|
-
from .classicalregister import ClassicalRegister, Clbit
|
1280
|
-
from .quantumregister import QuantumRegister, Qubit, AncillaRegister, AncillaQubit
|
1281
1300
|
from .gate import Gate
|
1282
1301
|
|
1283
1302
|
# pylint: disable=cyclic-import
|
@@ -1296,14 +1315,13 @@ from .parametervector import ParameterVector, ParameterVectorElement
|
|
1296
1315
|
from .parameterexpression import ParameterExpression
|
1297
1316
|
from .quantumcircuitdata import CircuitInstruction
|
1298
1317
|
from .equivalence import EquivalenceLibrary
|
1299
|
-
from .bit import Bit
|
1300
|
-
from .register import Register
|
1301
1318
|
from . import library
|
1302
1319
|
from .equivalence_library import StandardEquivalenceLibrary, SessionEquivalenceLibrary
|
1303
1320
|
from .commutation_checker import CommutationChecker
|
1304
1321
|
|
1305
1322
|
from .controlflow import (
|
1306
1323
|
ControlFlowOp,
|
1324
|
+
BoxOp,
|
1307
1325
|
WhileLoopOp,
|
1308
1326
|
ForLoopOp,
|
1309
1327
|
IfElseOp,
|
@@ -1312,6 +1330,7 @@ from .controlflow import (
|
|
1312
1330
|
BreakLoopOp,
|
1313
1331
|
ContinueLoopOp,
|
1314
1332
|
CONTROL_FLOW_OP_NAMES,
|
1333
|
+
get_control_flow_name_mapping,
|
1315
1334
|
)
|
1316
1335
|
|
1317
1336
|
from .annotated_operation import AnnotatedOperation, InverseModifier, ControlModifier, PowerModifier
|
@@ -109,7 +109,7 @@ def control(
|
|
109
109
|
|
110
110
|
global_phase = 0
|
111
111
|
|
112
|
-
basis = ["p", "u", "x", "z", "rx", "ry", "rz", "cx"]
|
112
|
+
basis = ["p", "u", "x", "z", "y", "h", "sx", "sxdg", "rx", "ry", "rz", "cx"]
|
113
113
|
|
114
114
|
if operation.name in basis:
|
115
115
|
apply_basic_controlled_gate(controlled_circ, operation, q_control, q_target[0])
|
@@ -187,7 +187,7 @@ def apply_basic_controlled_gate(circuit, gate, controls, target):
|
|
187
187
|
|
188
188
|
This implements multi-control operations for the following basis gates:
|
189
189
|
|
190
|
-
["p", "u", "x", "z", "rx", "ry", "rz", "cx"]
|
190
|
+
["p", "u", "x", "z", "y", "h", "sx", "sxdg", "rx", "ry", "rz", "cx"]
|
191
191
|
|
192
192
|
"""
|
193
193
|
num_ctrl_qubits = len(controls)
|
@@ -239,31 +239,51 @@ def apply_basic_controlled_gate(circuit, gate, controls, target):
|
|
239
239
|
circuit.cu(theta, phi, lamb, 0, controls[0], target)
|
240
240
|
else:
|
241
241
|
if phi == -pi / 2 and lamb == pi / 2:
|
242
|
-
circuit.mcrx(theta, controls, target, use_basis_gates=
|
242
|
+
circuit.mcrx(theta, controls, target, use_basis_gates=False)
|
243
243
|
elif phi == 0 and lamb == 0:
|
244
244
|
circuit.mcry(
|
245
245
|
theta,
|
246
246
|
controls,
|
247
247
|
target,
|
248
|
-
use_basis_gates=
|
248
|
+
use_basis_gates=False,
|
249
249
|
)
|
250
250
|
elif theta == 0 and phi == 0:
|
251
251
|
circuit.mcp(lamb, controls, target)
|
252
252
|
else:
|
253
|
-
circuit.
|
254
|
-
circuit.mcry(
|
255
|
-
|
256
|
-
|
257
|
-
target,
|
258
|
-
use_basis_gates=True,
|
259
|
-
)
|
260
|
-
circuit.mcp(phi, controls, target)
|
253
|
+
circuit.mcrz(lamb, controls, target, use_basis_gates=False)
|
254
|
+
circuit.mcry(theta, controls, target, use_basis_gates=False)
|
255
|
+
circuit.mcrz(phi, controls, target, use_basis_gates=False)
|
256
|
+
circuit.mcp((phi + lamb) / 2, controls[1:], controls[0])
|
261
257
|
|
262
258
|
elif gate.name == "z":
|
263
259
|
circuit.h(target)
|
264
260
|
circuit.mcx(controls, target)
|
265
261
|
circuit.h(target)
|
266
262
|
|
263
|
+
elif gate.name == "y":
|
264
|
+
circuit.sdg(target)
|
265
|
+
circuit.mcx(controls, target)
|
266
|
+
circuit.s(target)
|
267
|
+
|
268
|
+
elif gate.name == "h":
|
269
|
+
circuit.s(target)
|
270
|
+
circuit.h(target)
|
271
|
+
circuit.t(target)
|
272
|
+
circuit.mcx(controls, target)
|
273
|
+
circuit.tdg(target)
|
274
|
+
circuit.h(target)
|
275
|
+
circuit.sdg(target)
|
276
|
+
|
277
|
+
elif gate.name == "sx":
|
278
|
+
circuit.h(target)
|
279
|
+
circuit.mcp(pi / 2, controls, target)
|
280
|
+
circuit.h(target)
|
281
|
+
|
282
|
+
elif gate.name == "sxdg":
|
283
|
+
circuit.h(target)
|
284
|
+
circuit.mcp(3 * pi / 2, controls, target)
|
285
|
+
circuit.h(target)
|
286
|
+
|
267
287
|
else:
|
268
288
|
raise CircuitError(f"Gate {gate} not in supported basis.")
|
269
289
|
|
@@ -16,9 +16,8 @@ from __future__ import annotations
|
|
16
16
|
|
17
17
|
import typing
|
18
18
|
|
19
|
-
from .
|
19
|
+
from . import Bit, Clbit, ClassicalRegister # pylint: disable=cyclic-import
|
20
20
|
from .classical import expr
|
21
|
-
from .classicalregister import ClassicalRegister, Clbit
|
22
21
|
|
23
22
|
|
24
23
|
class VariableMapper(expr.ExprVisitor[expr.Expr]):
|
@@ -43,7 +42,7 @@ class VariableMapper(expr.ExprVisitor[expr.Expr]):
|
|
43
42
|
self,
|
44
43
|
target_cregs: typing.Iterable[ClassicalRegister],
|
45
44
|
bit_map: typing.Mapping[Bit, Bit],
|
46
|
-
var_map: typing.Mapping[expr.Var, expr.Var] | None = None,
|
45
|
+
var_map: typing.Mapping[expr.Var | expr.Stretch, expr.Var | expr.Stretch] | None = None,
|
47
46
|
*,
|
48
47
|
add_register: typing.Callable[[ClassicalRegister], None] | None = None,
|
49
48
|
):
|
@@ -132,6 +131,9 @@ class VariableMapper(expr.ExprVisitor[expr.Expr]):
|
|
132
131
|
return expr.Var(self._map_register(node.var), node.type)
|
133
132
|
return self.var_map.get(node, node)
|
134
133
|
|
134
|
+
def visit_stretch(self, node, /):
|
135
|
+
return self.var_map.get(node, node)
|
136
|
+
|
135
137
|
def visit_value(self, node, /):
|
136
138
|
return expr.Value(node.value, node.type)
|
137
139
|
|
qiskit/circuit/barrier.py
CHANGED
@@ -18,9 +18,8 @@ with the :meth:`~qiskit.circuit.QuantumCircuit.barrier` method.
|
|
18
18
|
|
19
19
|
from __future__ import annotations
|
20
20
|
|
21
|
-
from qiskit.
|
22
|
-
from qiskit.
|
23
|
-
from .instruction import Instruction
|
21
|
+
from qiskit.circuit.instruction import Instruction
|
22
|
+
from qiskit._accelerate.circuit import StandardInstructionType
|
24
23
|
|
25
24
|
|
26
25
|
class Barrier(Instruction):
|
@@ -31,6 +30,7 @@ class Barrier(Instruction):
|
|
31
30
|
"""
|
32
31
|
|
33
32
|
_directive = True
|
33
|
+
_standard_instruction_type = StandardInstructionType.Barrier
|
34
34
|
|
35
35
|
def __init__(self, num_qubits: int, label: str | None = None):
|
36
36
|
"""
|
@@ -44,7 +44,3 @@ class Barrier(Instruction):
|
|
44
44
|
def inverse(self, annotated: bool = False):
|
45
45
|
"""Special case. Return self."""
|
46
46
|
return Barrier(self.num_qubits)
|
47
|
-
|
48
|
-
@deprecate_func(since="1.3.0", removal_timeline="in 2.0.0")
|
49
|
-
def c_if(self, classical, val):
|
50
|
-
raise QiskitError("Barriers are compiler directives and cannot be conditional.")
|
@@ -39,6 +39,10 @@ The expression system is based on tree representation. All nodes in the tree ar
|
|
39
39
|
|
40
40
|
These objects are mutable and should not be reused in a different location without a copy.
|
41
41
|
|
42
|
+
All :class`Expr` instances define a boolean :attr:`~Expr.const` attribute, which indicates
|
43
|
+
whether the expression can be evaluated at compile time. Most expression classes infer this
|
44
|
+
during construction based on the const-ness of their operands.
|
45
|
+
|
42
46
|
The base for dynamic variables is the :class:`Var`, which can be either an arbitrarily typed
|
43
47
|
real-time variable, or a wrapper around a :class:`.Clbit` or :class:`.ClassicalRegister`.
|
44
48
|
|
@@ -46,10 +50,15 @@ real-time variable, or a wrapper around a :class:`.Clbit` or :class:`.ClassicalR
|
|
46
50
|
:members: var, name, new
|
47
51
|
|
48
52
|
Similarly, literals used in expressions (such as integers) should be lifted to :class:`Value` nodes
|
49
|
-
with associated types.
|
53
|
+
with associated types. A :class:`Value` is always considered a constant expression.
|
50
54
|
|
51
55
|
.. autoclass:: Value
|
52
56
|
|
57
|
+
Stretch variables for use in duration expressions are represented by the :class:`Stretch` node.
|
58
|
+
|
59
|
+
.. autoclass:: Stretch
|
60
|
+
:members: var, name, new
|
61
|
+
|
53
62
|
The operations traditionally associated with pre-, post- or infix operators in programming are
|
54
63
|
represented by the :class:`Unary` and :class:`Binary` nodes as appropriate. These each take an
|
55
64
|
operation type code, which are exposed as enumerations inside each class as :class:`Unary.Op`
|
@@ -130,6 +139,10 @@ Similarly, the binary operations and relations have helper functions defined.
|
|
130
139
|
.. autofunction:: greater_equal
|
131
140
|
.. autofunction:: shift_left
|
132
141
|
.. autofunction:: shift_right
|
142
|
+
.. autofunction:: add
|
143
|
+
.. autofunction:: sub
|
144
|
+
.. autofunction:: mul
|
145
|
+
.. autofunction:: div
|
133
146
|
|
134
147
|
You can index into unsigned integers and bit-likes using another unsigned integer of any width.
|
135
148
|
This includes in storing operations, if the target of the index is writeable.
|
@@ -166,6 +179,11 @@ not the general structure, the iterator method :func:`iter_vars` is provided.
|
|
166
179
|
|
167
180
|
.. autofunction:: iter_vars
|
168
181
|
|
182
|
+
To iterator over all variables including stretch variables, the iterator method
|
183
|
+
:func:`iter_identifiers` is provided.
|
184
|
+
|
185
|
+
.. autofunction:: iter_identifiers
|
186
|
+
|
169
187
|
Two expressions can be compared for direct structural equality by using the built-in Python ``==``
|
170
188
|
operator. In general, though, one might want to compare two expressions slightly more semantically,
|
171
189
|
allowing that the :class:`Var` nodes inside them are bound to different memory-location descriptions
|
@@ -188,8 +206,10 @@ __all__ = [
|
|
188
206
|
"Unary",
|
189
207
|
"Binary",
|
190
208
|
"Index",
|
209
|
+
"Stretch",
|
191
210
|
"ExprVisitor",
|
192
211
|
"iter_vars",
|
212
|
+
"iter_identifiers",
|
193
213
|
"structurally_equivalent",
|
194
214
|
"is_lvalue",
|
195
215
|
"lift",
|
@@ -210,11 +230,15 @@ __all__ = [
|
|
210
230
|
"greater",
|
211
231
|
"greater_equal",
|
212
232
|
"index",
|
233
|
+
"add",
|
234
|
+
"sub",
|
235
|
+
"mul",
|
236
|
+
"div",
|
213
237
|
"lift_legacy_condition",
|
214
238
|
]
|
215
239
|
|
216
|
-
from .expr import Expr, Var, Value, Cast, Unary, Binary, Index
|
217
|
-
from .visitors import ExprVisitor, iter_vars, structurally_equivalent, is_lvalue
|
240
|
+
from .expr import Expr, Var, Value, Cast, Unary, Binary, Index, Stretch
|
241
|
+
from .visitors import ExprVisitor, iter_vars, iter_identifiers, structurally_equivalent, is_lvalue
|
218
242
|
from .constructors import (
|
219
243
|
lift,
|
220
244
|
cast,
|
@@ -234,5 +258,9 @@ from .constructors import (
|
|
234
258
|
shift_left,
|
235
259
|
shift_right,
|
236
260
|
index,
|
261
|
+
add,
|
262
|
+
sub,
|
263
|
+
mul,
|
264
|
+
div,
|
237
265
|
lift_legacy_condition,
|
238
266
|
)
|