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
@@ -201,18 +201,25 @@ class BasisTranslatorPassManager(PassManagerStagePlugin):
201
201
  """Plugin class for translation stage with :class:`~.BasisTranslator`"""
202
202
 
203
203
  def pass_manager(self, pass_manager_config, optimization_level=None) -> PassManager:
204
- return common.generate_translation_passmanager(
205
- pass_manager_config.target,
206
- basis_gates=pass_manager_config.basis_gates,
207
- method="translator",
208
- approximation_degree=pass_manager_config.approximation_degree,
209
- coupling_map=pass_manager_config.coupling_map,
210
- backend_props=pass_manager_config.backend_properties,
211
- unitary_synthesis_method=pass_manager_config.unitary_synthesis_method,
212
- unitary_synthesis_plugin_config=pass_manager_config.unitary_synthesis_plugin_config,
213
- hls_config=pass_manager_config.hls_config,
214
- qubits_initially_zero=pass_manager_config.qubits_initially_zero,
215
- )
204
+ with warnings.catch_warnings():
205
+ warnings.filterwarnings(
206
+ "ignore",
207
+ category=DeprecationWarning,
208
+ message=".*argument ``backend_properties`` is deprecated as of Qiskit 1.4",
209
+ module="qiskit",
210
+ )
211
+ return common.generate_translation_passmanager(
212
+ pass_manager_config.target,
213
+ basis_gates=pass_manager_config.basis_gates,
214
+ method="translator",
215
+ approximation_degree=pass_manager_config.approximation_degree,
216
+ coupling_map=pass_manager_config.coupling_map,
217
+ backend_props=pass_manager_config.backend_properties,
218
+ unitary_synthesis_method=pass_manager_config.unitary_synthesis_method,
219
+ unitary_synthesis_plugin_config=pass_manager_config.unitary_synthesis_plugin_config,
220
+ hls_config=pass_manager_config.hls_config,
221
+ qubits_initially_zero=pass_manager_config.qubits_initially_zero,
222
+ )
216
223
 
217
224
 
218
225
  class UnitarySynthesisPassManager(PassManagerStagePlugin):
@@ -457,17 +464,24 @@ class SabreSwapPassManager(PassManagerStagePlugin):
457
464
  seed=seed_transpiler,
458
465
  trials=trial_count,
459
466
  )
460
- return common.generate_routing_passmanager(
461
- routing_pass,
462
- target,
463
- coupling_map,
464
- vf2_call_limit=vf2_call_limit,
465
- vf2_max_trials=vf2_max_trials,
466
- backend_properties=backend_properties,
467
- seed_transpiler=-1,
468
- check_trivial=True,
469
- use_barrier_before_measurement=True,
470
- )
467
+ with warnings.catch_warnings():
468
+ warnings.filterwarnings(
469
+ "ignore",
470
+ category=DeprecationWarning,
471
+ message=".*argument ``backend_properties`` is deprecated as of Qiskit 1.4",
472
+ module="qiskit",
473
+ )
474
+ return common.generate_routing_passmanager(
475
+ routing_pass,
476
+ target,
477
+ coupling_map,
478
+ vf2_call_limit=vf2_call_limit,
479
+ vf2_max_trials=vf2_max_trials,
480
+ backend_properties=backend_properties,
481
+ seed_transpiler=-1,
482
+ check_trivial=True,
483
+ use_barrier_before_measurement=True,
484
+ )
471
485
  if optimization_level == 2:
472
486
  trial_count = _get_trial_count(20)
473
487
 
@@ -477,16 +491,23 @@ class SabreSwapPassManager(PassManagerStagePlugin):
477
491
  seed=seed_transpiler,
478
492
  trials=trial_count,
479
493
  )
480
- return common.generate_routing_passmanager(
481
- routing_pass,
482
- target,
483
- coupling_map=coupling_map,
484
- vf2_call_limit=vf2_call_limit,
485
- vf2_max_trials=vf2_max_trials,
486
- backend_properties=backend_properties,
487
- seed_transpiler=-1,
488
- use_barrier_before_measurement=True,
489
- )
494
+ with warnings.catch_warnings():
495
+ warnings.filterwarnings(
496
+ "ignore",
497
+ category=DeprecationWarning,
498
+ message=".*argument ``backend_properties`` is deprecated as of Qiskit 1.4",
499
+ module="qiskit",
500
+ )
501
+ return common.generate_routing_passmanager(
502
+ routing_pass,
503
+ target,
504
+ coupling_map=coupling_map,
505
+ vf2_call_limit=vf2_call_limit,
506
+ vf2_max_trials=vf2_max_trials,
507
+ backend_properties=backend_properties,
508
+ seed_transpiler=-1,
509
+ use_barrier_before_measurement=True,
510
+ )
490
511
  if optimization_level == 3:
491
512
  trial_count = _get_trial_count(20)
492
513
  routing_pass = SabreSwap(
@@ -495,16 +516,23 @@ class SabreSwapPassManager(PassManagerStagePlugin):
495
516
  seed=seed_transpiler,
496
517
  trials=trial_count,
497
518
  )
498
- return common.generate_routing_passmanager(
499
- routing_pass,
500
- target,
501
- coupling_map=coupling_map,
502
- vf2_call_limit=vf2_call_limit,
503
- vf2_max_trials=vf2_max_trials,
504
- backend_properties=backend_properties,
505
- seed_transpiler=-1,
506
- use_barrier_before_measurement=True,
507
- )
519
+ with warnings.catch_warnings():
520
+ warnings.filterwarnings(
521
+ "ignore",
522
+ category=DeprecationWarning,
523
+ message=".*argument ``backend_properties`` is deprecated as of Qiskit 1.4",
524
+ module="qiskit",
525
+ )
526
+ return common.generate_routing_passmanager(
527
+ routing_pass,
528
+ target,
529
+ coupling_map=coupling_map,
530
+ vf2_call_limit=vf2_call_limit,
531
+ vf2_max_trials=vf2_max_trials,
532
+ backend_properties=backend_properties,
533
+ seed_transpiler=-1,
534
+ use_barrier_before_measurement=True,
535
+ )
508
536
  raise TranspilerError(f"Invalid optimization level specified: {optimization_level}")
509
537
 
510
538
 
@@ -596,30 +624,37 @@ class OptimizationPassManager(PassManagerStagePlugin):
596
624
  ]
597
625
  elif optimization_level == 3:
598
626
  # Steps for optimization level 3
599
- _opt = [
600
- ConsolidateBlocks(
601
- basis_gates=pass_manager_config.basis_gates,
602
- target=pass_manager_config.target,
603
- approximation_degree=pass_manager_config.approximation_degree,
604
- ),
605
- UnitarySynthesis(
606
- pass_manager_config.basis_gates,
607
- approximation_degree=pass_manager_config.approximation_degree,
608
- coupling_map=pass_manager_config.coupling_map,
609
- backend_props=pass_manager_config.backend_properties,
610
- method=pass_manager_config.unitary_synthesis_method,
611
- plugin_config=pass_manager_config.unitary_synthesis_plugin_config,
612
- target=pass_manager_config.target,
613
- ),
614
- RemoveIdentityEquivalent(
615
- approximation_degree=pass_manager_config.approximation_degree,
616
- target=pass_manager_config.target,
617
- ),
618
- Optimize1qGatesDecomposition(
619
- basis=pass_manager_config.basis_gates, target=pass_manager_config.target
620
- ),
621
- CommutativeCancellation(target=pass_manager_config.target),
622
- ]
627
+ with warnings.catch_warnings():
628
+ warnings.filterwarnings(
629
+ "ignore",
630
+ category=DeprecationWarning,
631
+ message=".*argument ``backend_props`` is deprecated as of Qiskit 1.4",
632
+ module="qiskit",
633
+ )
634
+ _opt = [
635
+ ConsolidateBlocks(
636
+ basis_gates=pass_manager_config.basis_gates,
637
+ target=pass_manager_config.target,
638
+ approximation_degree=pass_manager_config.approximation_degree,
639
+ ),
640
+ UnitarySynthesis(
641
+ pass_manager_config.basis_gates,
642
+ approximation_degree=pass_manager_config.approximation_degree,
643
+ coupling_map=pass_manager_config.coupling_map,
644
+ backend_props=pass_manager_config.backend_properties,
645
+ method=pass_manager_config.unitary_synthesis_method,
646
+ plugin_config=pass_manager_config.unitary_synthesis_plugin_config,
647
+ target=pass_manager_config.target,
648
+ ),
649
+ RemoveIdentityEquivalent(
650
+ approximation_degree=pass_manager_config.approximation_degree,
651
+ target=pass_manager_config.target,
652
+ ),
653
+ Optimize1qGatesDecomposition(
654
+ basis=pass_manager_config.basis_gates, target=pass_manager_config.target
655
+ ),
656
+ CommutativeCancellation(target=pass_manager_config.target),
657
+ ]
623
658
 
624
659
  def _opt_control(property_set):
625
660
  return not property_set["optimization_loop_minimum_point"]
@@ -642,24 +677,31 @@ class OptimizationPassManager(PassManagerStagePlugin):
642
677
  if optimization_level == 3:
643
678
  optimization.append(_minimum_point_check)
644
679
  elif optimization_level == 2:
645
- optimization.append(
646
- [
647
- ConsolidateBlocks(
648
- basis_gates=pass_manager_config.basis_gates,
649
- target=pass_manager_config.target,
650
- approximation_degree=pass_manager_config.approximation_degree,
651
- ),
652
- UnitarySynthesis(
653
- pass_manager_config.basis_gates,
654
- approximation_degree=pass_manager_config.approximation_degree,
655
- coupling_map=pass_manager_config.coupling_map,
656
- backend_props=pass_manager_config.backend_properties,
657
- method=pass_manager_config.unitary_synthesis_method,
658
- plugin_config=pass_manager_config.unitary_synthesis_plugin_config,
659
- target=pass_manager_config.target,
660
- ),
661
- ]
662
- )
680
+ with warnings.catch_warnings():
681
+ warnings.filterwarnings(
682
+ "ignore",
683
+ category=DeprecationWarning,
684
+ message=".*argument ``backend_props`` is deprecated as of Qiskit 1.4",
685
+ module="qiskit",
686
+ )
687
+ optimization.append(
688
+ [
689
+ ConsolidateBlocks(
690
+ basis_gates=pass_manager_config.basis_gates,
691
+ target=pass_manager_config.target,
692
+ approximation_degree=pass_manager_config.approximation_degree,
693
+ ),
694
+ UnitarySynthesis(
695
+ pass_manager_config.basis_gates,
696
+ approximation_degree=pass_manager_config.approximation_degree,
697
+ coupling_map=pass_manager_config.coupling_map,
698
+ backend_props=pass_manager_config.backend_properties,
699
+ method=pass_manager_config.unitary_synthesis_method,
700
+ plugin_config=pass_manager_config.unitary_synthesis_plugin_config,
701
+ target=pass_manager_config.target,
702
+ ),
703
+ ]
704
+ )
663
705
  optimization.append(_depth_check + _size_check)
664
706
  else:
665
707
  optimization.append(_depth_check + _size_check)
@@ -788,14 +830,21 @@ class DefaultLayoutPassManager(PassManagerStagePlugin):
788
830
  condition=_choose_layout_condition,
789
831
  )
790
832
  )
791
- choose_layout_1 = VF2Layout(
792
- coupling_map=pass_manager_config.coupling_map,
793
- seed=-1,
794
- call_limit=int(5e4), # Set call limit to ~100ms with rustworkx 0.10.2
795
- properties=pass_manager_config.backend_properties,
796
- target=pass_manager_config.target,
797
- max_trials=2500, # Limits layout scoring to < 600ms on ~400 qubit devices
798
- )
833
+ with warnings.catch_warnings():
834
+ warnings.filterwarnings(
835
+ "ignore",
836
+ category=DeprecationWarning,
837
+ message=".*argument ``properties`` is deprecated as of Qiskit 1.4",
838
+ module="qiskit",
839
+ )
840
+ choose_layout_1 = VF2Layout(
841
+ coupling_map=pass_manager_config.coupling_map,
842
+ seed=-1,
843
+ call_limit=int(5e4), # Set call limit to ~100ms with rustworkx 0.10.2
844
+ properties=pass_manager_config.backend_properties,
845
+ target=pass_manager_config.target,
846
+ max_trials=2500, # Limits layout scoring to < 600ms on ~400 qubit devices
847
+ )
799
848
  layout.append(ConditionalController(choose_layout_1, condition=_layout_not_perfect))
800
849
 
801
850
  trial_count = _get_trial_count(5)
@@ -821,14 +870,21 @@ class DefaultLayoutPassManager(PassManagerStagePlugin):
821
870
  )
822
871
  )
823
872
  elif optimization_level == 2:
824
- choose_layout_0 = VF2Layout(
825
- coupling_map=pass_manager_config.coupling_map,
826
- seed=-1,
827
- call_limit=int(5e6), # Set call limit to ~10s with rustworkx 0.10.2
828
- properties=pass_manager_config.backend_properties,
829
- target=pass_manager_config.target,
830
- max_trials=2500, # Limits layout scoring to < 600ms on ~400 qubit devices
831
- )
873
+ with warnings.catch_warnings():
874
+ warnings.filterwarnings(
875
+ "ignore",
876
+ category=DeprecationWarning,
877
+ message=".*argument ``properties`` is deprecated as of Qiskit 1.4",
878
+ module="qiskit",
879
+ )
880
+ choose_layout_0 = VF2Layout(
881
+ coupling_map=pass_manager_config.coupling_map,
882
+ seed=-1,
883
+ call_limit=int(5e6), # Set call limit to ~10s with rustworkx 0.10.2
884
+ properties=pass_manager_config.backend_properties,
885
+ target=pass_manager_config.target,
886
+ max_trials=2500, # Limits layout scoring to < 600ms on ~400 qubit devices
887
+ )
832
888
  layout.append(
833
889
  ConditionalController(choose_layout_0, condition=_choose_layout_condition)
834
890
  )
@@ -856,14 +912,21 @@ class DefaultLayoutPassManager(PassManagerStagePlugin):
856
912
  )
857
913
  )
858
914
  elif optimization_level == 3:
859
- choose_layout_0 = VF2Layout(
860
- coupling_map=pass_manager_config.coupling_map,
861
- seed=-1,
862
- call_limit=int(3e7), # Set call limit to ~60s with rustworkx 0.10.2
863
- properties=pass_manager_config.backend_properties,
864
- target=pass_manager_config.target,
865
- max_trials=250000, # Limits layout scoring to < 60s on ~400 qubit devices
866
- )
915
+ with warnings.catch_warnings():
916
+ warnings.filterwarnings(
917
+ "ignore",
918
+ category=DeprecationWarning,
919
+ message=".*argument ``properties`` is deprecated as of Qiskit 1.4",
920
+ module="qiskit",
921
+ )
922
+ choose_layout_0 = VF2Layout(
923
+ coupling_map=pass_manager_config.coupling_map,
924
+ seed=-1,
925
+ call_limit=int(3e7), # Set call limit to ~60s with rustworkx 0.10.2
926
+ properties=pass_manager_config.backend_properties,
927
+ target=pass_manager_config.target,
928
+ max_trials=250000, # Limits layout scoring to < 60s on ~400 qubit devices
929
+ )
867
930
  layout.append(
868
931
  ConditionalController(choose_layout_0, condition=_choose_layout_condition)
869
932
  )
@@ -937,16 +1000,23 @@ class DenseLayoutPassManager(PassManagerStagePlugin):
937
1000
 
938
1001
  layout = PassManager()
939
1002
  layout.append(_given_layout)
940
- layout.append(
941
- ConditionalController(
942
- DenseLayout(
943
- coupling_map=pass_manager_config.coupling_map,
944
- backend_prop=pass_manager_config.backend_properties,
945
- target=pass_manager_config.target,
946
- ),
947
- condition=_choose_layout_condition,
1003
+ with warnings.catch_warnings():
1004
+ warnings.filterwarnings(
1005
+ "ignore",
1006
+ category=DeprecationWarning,
1007
+ message=".*argument ``backend_prop`` is deprecated as of Qiskit 1.4",
1008
+ module="qiskit",
1009
+ )
1010
+ layout.append(
1011
+ ConditionalController(
1012
+ DenseLayout(
1013
+ coupling_map=pass_manager_config.coupling_map,
1014
+ backend_prop=pass_manager_config.backend_properties,
1015
+ target=pass_manager_config.target,
1016
+ ),
1017
+ condition=_choose_layout_condition,
1018
+ )
948
1019
  )
949
- )
950
1020
  layout += common.generate_embed_passmanager(coupling_map)
951
1021
  return layout
952
1022
 
@@ -14,6 +14,7 @@
14
14
  """Common preset passmanager generators."""
15
15
 
16
16
  import collections
17
+ import warnings
17
18
  from typing import Optional
18
19
 
19
20
  from qiskit.circuit.equivalence_library import SessionEquivalenceLibrary as sel
@@ -53,7 +54,7 @@ from qiskit.transpiler.passes.layout.vf2_post_layout import VF2PostLayoutStopRea
53
54
  from qiskit.transpiler.exceptions import TranspilerError
54
55
  from qiskit.transpiler.layout import Layout
55
56
  from qiskit.utils.deprecate_pulse import deprecate_pulse_arg
56
-
57
+ from qiskit.utils.deprecation import deprecate_arg
57
58
 
58
59
  _ControlFlowState = collections.namedtuple("_ControlFlowState", ("working", "not_working"))
59
60
 
@@ -275,6 +276,16 @@ def _apply_post_layout_condition(property_set):
275
276
  )
276
277
 
277
278
 
279
+ @deprecate_arg(
280
+ name="backend_properties",
281
+ since="1.4",
282
+ package_name="Qiskit",
283
+ removal_timeline="in Qiskit 2.0",
284
+ additional_msg="The BackendProperties data structure has been deprecated and will be "
285
+ "removed in Qiskit 2.0. The required `target` input argument should be used "
286
+ "instead. You can use Target.from_configuration() to build the target from the properties "
287
+ "object, but in 2.0 you will need to generate a target directly.",
288
+ )
278
289
  def generate_routing_passmanager(
279
290
  routing_pass,
280
291
  target,
@@ -352,20 +363,33 @@ def generate_routing_passmanager(
352
363
 
353
364
  is_vf2_fully_bounded = vf2_call_limit and vf2_max_trials
354
365
  if (target is not None or backend_properties is not None) and is_vf2_fully_bounded:
355
- routing.append(
356
- ConditionalController(
357
- VF2PostLayout(
358
- target,
359
- coupling_map,
360
- backend_properties,
361
- seed_transpiler,
362
- call_limit=vf2_call_limit,
363
- max_trials=vf2_max_trials,
364
- strict_direction=False,
365
- ),
366
- condition=_run_post_layout_condition,
366
+ with warnings.catch_warnings():
367
+ warnings.filterwarnings(
368
+ "ignore",
369
+ category=DeprecationWarning,
370
+ message=".*argument ``properties`` is deprecated as of Qiskit 1.4",
371
+ module="qiskit",
372
+ )
373
+ warnings.filterwarnings(
374
+ "ignore",
375
+ category=DeprecationWarning,
376
+ message=".*argument ``coupling_map`` is deprecated as of Qiskit 1.4",
377
+ module="qiskit",
378
+ )
379
+ routing.append(
380
+ ConditionalController(
381
+ VF2PostLayout(
382
+ target,
383
+ coupling_map,
384
+ backend_properties,
385
+ seed_transpiler,
386
+ call_limit=vf2_call_limit,
387
+ max_trials=vf2_max_trials,
388
+ strict_direction=False,
389
+ ),
390
+ condition=_run_post_layout_condition,
391
+ )
367
392
  )
368
- )
369
393
  routing.append(ConditionalController(ApplyLayout(), condition=_apply_post_layout_condition))
370
394
 
371
395
  def filter_fn(node):
@@ -409,6 +433,16 @@ def generate_pre_op_passmanager(target=None, coupling_map=None, remove_reset_in_
409
433
  return pre_opt
410
434
 
411
435
 
436
+ @deprecate_arg(
437
+ name="backend_properties",
438
+ since="1.4",
439
+ package_name="Qiskit",
440
+ removal_timeline="in Qiskit 2.0",
441
+ additional_msg="The BackendProperties data structure has been deprecated and will be "
442
+ "removed in Qiskit 2.0. The required `target` input argument should be used "
443
+ "instead. You can use Target.from_configuration() to build the target from the properties "
444
+ "object, but in 2.0 you will need to generate a target directly.",
445
+ )
412
446
  def generate_translation_passmanager(
413
447
  target,
414
448
  basis_gates=None,
@@ -455,76 +489,92 @@ def generate_translation_passmanager(
455
489
  TranspilerError: If the ``method`` kwarg is not a valid value
456
490
  """
457
491
  if method == "translator":
458
- unroll = [
459
- # Use unitary synthesis for basis aware decomposition of
460
- # UnitaryGates before custom unrolling
461
- UnitarySynthesis(
462
- basis_gates,
463
- approximation_degree=approximation_degree,
464
- coupling_map=coupling_map,
465
- backend_props=backend_props,
466
- plugin_config=unitary_synthesis_plugin_config,
467
- method=unitary_synthesis_method,
468
- target=target,
469
- ),
470
- HighLevelSynthesis(
471
- hls_config=hls_config,
472
- coupling_map=coupling_map,
473
- target=target,
474
- use_qubit_indices=True,
475
- equivalence_library=sel,
476
- basis_gates=basis_gates,
477
- qubits_initially_zero=qubits_initially_zero,
478
- ),
479
- BasisTranslator(sel, basis_gates, target),
480
- ]
492
+ with warnings.catch_warnings():
493
+ warnings.filterwarnings(
494
+ "ignore",
495
+ category=DeprecationWarning,
496
+ message=".*argument ``backend_props`` is deprecated as of Qiskit 1.4",
497
+ module="qiskit",
498
+ )
499
+ unroll = [
500
+ # Use unitary synthesis for basis aware decomposition of
501
+ # UnitaryGates before custom unrolling
502
+ UnitarySynthesis(
503
+ basis_gates,
504
+ approximation_degree=approximation_degree,
505
+ coupling_map=coupling_map,
506
+ backend_props=backend_props,
507
+ plugin_config=unitary_synthesis_plugin_config,
508
+ method=unitary_synthesis_method,
509
+ target=target,
510
+ ),
511
+ HighLevelSynthesis(
512
+ hls_config=hls_config,
513
+ coupling_map=coupling_map,
514
+ target=target,
515
+ use_qubit_indices=True,
516
+ equivalence_library=sel,
517
+ basis_gates=basis_gates,
518
+ qubits_initially_zero=qubits_initially_zero,
519
+ ),
520
+ BasisTranslator(sel, basis_gates, target),
521
+ ]
481
522
  elif method == "synthesis":
482
- unroll = [
483
- # # Use unitary synthesis for basis aware decomposition of
484
- # UnitaryGates > 2q before collection
485
- UnitarySynthesis(
486
- basis_gates,
487
- approximation_degree=approximation_degree,
488
- coupling_map=coupling_map,
489
- backend_props=backend_props,
490
- plugin_config=unitary_synthesis_plugin_config,
491
- method=unitary_synthesis_method,
492
- min_qubits=3,
493
- target=target,
494
- ),
495
- HighLevelSynthesis(
496
- hls_config=hls_config,
497
- coupling_map=coupling_map,
498
- target=target,
499
- use_qubit_indices=True,
500
- basis_gates=basis_gates,
501
- min_qubits=3,
502
- qubits_initially_zero=qubits_initially_zero,
503
- ),
504
- Unroll3qOrMore(target=target, basis_gates=basis_gates),
505
- Collect2qBlocks(),
506
- Collect1qRuns(),
507
- ConsolidateBlocks(
508
- basis_gates=basis_gates, target=target, approximation_degree=approximation_degree
509
- ),
510
- UnitarySynthesis(
511
- basis_gates=basis_gates,
512
- approximation_degree=approximation_degree,
513
- coupling_map=coupling_map,
514
- backend_props=backend_props,
515
- plugin_config=unitary_synthesis_plugin_config,
516
- method=unitary_synthesis_method,
517
- target=target,
518
- ),
519
- HighLevelSynthesis(
520
- hls_config=hls_config,
521
- coupling_map=coupling_map,
522
- target=target,
523
- use_qubit_indices=True,
524
- basis_gates=basis_gates,
525
- qubits_initially_zero=qubits_initially_zero,
526
- ),
527
- ]
523
+ with warnings.catch_warnings():
524
+ warnings.filterwarnings(
525
+ "ignore",
526
+ category=DeprecationWarning,
527
+ message=".*argument ``backend_props`` is deprecated as of Qiskit 1.4",
528
+ module="qiskit",
529
+ )
530
+ unroll = [
531
+ # Use unitary synthesis for basis aware decomposition of
532
+ # UnitaryGates > 2q before collection
533
+ UnitarySynthesis(
534
+ basis_gates,
535
+ approximation_degree=approximation_degree,
536
+ coupling_map=coupling_map,
537
+ backend_props=backend_props,
538
+ plugin_config=unitary_synthesis_plugin_config,
539
+ method=unitary_synthesis_method,
540
+ min_qubits=3,
541
+ target=target,
542
+ ),
543
+ HighLevelSynthesis(
544
+ hls_config=hls_config,
545
+ coupling_map=coupling_map,
546
+ target=target,
547
+ use_qubit_indices=True,
548
+ basis_gates=basis_gates,
549
+ min_qubits=3,
550
+ qubits_initially_zero=qubits_initially_zero,
551
+ ),
552
+ Unroll3qOrMore(target=target, basis_gates=basis_gates),
553
+ Collect2qBlocks(),
554
+ Collect1qRuns(),
555
+ ConsolidateBlocks(
556
+ basis_gates=basis_gates,
557
+ target=target,
558
+ approximation_degree=approximation_degree,
559
+ ),
560
+ UnitarySynthesis(
561
+ basis_gates=basis_gates,
562
+ approximation_degree=approximation_degree,
563
+ coupling_map=coupling_map,
564
+ backend_props=backend_props,
565
+ plugin_config=unitary_synthesis_plugin_config,
566
+ method=unitary_synthesis_method,
567
+ target=target,
568
+ ),
569
+ HighLevelSynthesis(
570
+ hls_config=hls_config,
571
+ coupling_map=coupling_map,
572
+ target=target,
573
+ use_qubit_indices=True,
574
+ basis_gates=basis_gates,
575
+ qubits_initially_zero=qubits_initially_zero,
576
+ ),
577
+ ]
528
578
  else:
529
579
  raise TranspilerError(f"Invalid translation method {method}.")
530
580
  return PassManager(unroll)