summarylogtreecommitdiffstats
path: root/rustworkx.patch
blob: 25ab2d45ed7f181cf3c731630ca53213710fa4d5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
diff --git a/Cargo.lock b/Cargo.lock
index dcf0546e4..bd99bc8ac 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -319,6 +319,16 @@ version = "0.2.16"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872"
 
+[[package]]
+name = "priority-queue"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cf40e51ccefb72d42720609e1d3c518de8b5800d723a09358d4a6d6245e1f8ca"
+dependencies = [
+ "autocfg",
+ "indexmap",
+]
+
 [[package]]
 name = "proc-macro2"
 version = "1.0.47"
@@ -407,7 +417,7 @@ dependencies = [
  "rand_distr",
  "rand_pcg",
  "rayon",
- "retworkx-core",
+ "rustworkx-core",
 ]
 
 [[package]]
@@ -508,15 +518,18 @@ dependencies = [
 ]
 
 [[package]]
-name = "retworkx-core"
-version = "0.11.0"
+name = "rustworkx-core"
+version = "0.12.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "353bcdcdab6c754ea32bce39ee7a763c8a3c16c91a8dd648befd14fbcb0d5b68"
+checksum = "23f8a8866a33f4f8b06ed2a4120d3c08a0be63a9c18a53b4238e53922edfc953"
 dependencies = [
  "ahash 0.7.6",
+ "fixedbitset",
  "hashbrown 0.11.2",
  "indexmap",
+ "num-traits",
  "petgraph",
+ "priority-queue",
  "rayon",
 ]
 
diff --git a/Cargo.toml b/Cargo.toml
index a65bf6dd7..9088c8470 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -18,7 +18,7 @@ rand_distr = "0.4.3"
 ahash = "0.8.0"
 num-complex = "0.4"
 num-bigint = "0.4"
-retworkx-core = "0.11"
+rustworkx-core = "0.12"
 
 [dependencies.pyo3]
 version = "0.17.2"
diff --git a/qiskit/circuit/equivalence.py b/qiskit/circuit/equivalence.py
index 381297e45..80731a3dc 100644
--- a/qiskit/circuit/equivalence.py
+++ b/qiskit/circuit/equivalence.py
@@ -14,8 +14,8 @@
 
 from collections import namedtuple
 
-from retworkx.visualization import graphviz_draw  # pylint: disable=no-name-in-module,import-error
-import retworkx as rx
+from rustworkx.visualization import graphviz_draw  # pylint: disable=no-name-in-module
+import rustworkx as rx
 
 from qiskit.exceptions import InvalidFileError
 from .exceptions import CircuitError
diff --git a/qiskit/circuit/library/graph_state.py b/qiskit/circuit/library/graph_state.py
index f811bea83..aeb2e8cb5 100644
--- a/qiskit/circuit/library/graph_state.py
+++ b/qiskit/circuit/library/graph_state.py
@@ -44,7 +44,7 @@ class GraphState(QuantumCircuit):
 
         from qiskit.circuit.library import GraphState
         import qiskit.tools.jupyter
-        import retworkx as rx
+        import rustworkx as rx
         G = rx.generators.cycle_graph(5)
         circuit = GraphState(rx.adjacency_matrix(G))
         %circuit_library_info circuit
diff --git a/qiskit/dagcircuit/dagcircuit.py b/qiskit/dagcircuit/dagcircuit.py
index 721497775..df5ed3cc5 100644
--- a/qiskit/dagcircuit/dagcircuit.py
+++ b/qiskit/dagcircuit/dagcircuit.py
@@ -26,7 +26,7 @@ import itertools
 import math
 
 import numpy as np
-import retworkx as rx
+import rustworkx as rx
 
 from qiskit.circuit import ControlFlowOp, ForLoopOp, IfElseOp, WhileLoopOp
 from qiskit.circuit.exceptions import CircuitError
@@ -1289,7 +1289,7 @@ class DAGCircuit:
             self.global_phase += in_dag.global_phase
 
         # Add wire from pred to succ if no ops on mapped wire on ``in_dag``
-        # retworkx's substitute_node_with_subgraph lacks the DAGCircuit
+        # rustworkx's substitute_node_with_subgraph lacks the DAGCircuit
         # context to know what to do in this case (the method won't even see
         # these nodes because they're filtered) so we manually retain the
         # edges prior to calling substitute_node_with_subgraph and set the
@@ -1325,8 +1325,8 @@ class DAGCircuit:
                 wire_output_id = in_dag.output_map[wire]._node_id
                 out_index = in_dag._multi_graph.predecessor_indices(wire_output_id)[0]
                 # Edge directly from from input nodes to output nodes in in_dag are
-                # already handled prior to calling retworkx. Don't map these edges
-                # in retworkx.
+                # already handled prior to calling rustworkx. Don't map these edges
+                # in rustworkx.
                 if not isinstance(in_dag._multi_graph[out_index], DAGOpNode):
                     return None
             # predecessor edge
@@ -1334,8 +1334,8 @@ class DAGCircuit:
                 wire_input_id = in_dag.input_map[wire]._node_id
                 out_index = in_dag._multi_graph.successor_indices(wire_input_id)[0]
                 # Edge directly from from input nodes to output nodes in in_dag are
-                # already handled prior to calling retworkx. Don't map these edges
-                # in retworkx.
+                # already handled prior to calling rustworkx. Don't map these edges
+                # in rustworkx.
                 if not isinstance(in_dag._multi_graph[out_index], DAGOpNode):
                     return None
             return out_index
diff --git a/qiskit/dagcircuit/dagdependency.py b/qiskit/dagcircuit/dagdependency.py
index f9fb8b758..b09f92764 100644
--- a/qiskit/dagcircuit/dagdependency.py
+++ b/qiskit/dagcircuit/dagdependency.py
@@ -18,7 +18,7 @@ import heapq
 from collections import OrderedDict, defaultdict
 import warnings
 
-import retworkx as rx
+import rustworkx as rx
 
 from qiskit.circuit.quantumregister import QuantumRegister, Qubit
 from qiskit.circuit.classicalregister import ClassicalRegister, Clbit
diff --git a/qiskit/opflow/converters/abelian_grouper.py b/qiskit/opflow/converters/abelian_grouper.py
index ec27ef523..1b8b51616 100644
--- a/qiskit/opflow/converters/abelian_grouper.py
+++ b/qiskit/opflow/converters/abelian_grouper.py
@@ -16,7 +16,7 @@ from collections import defaultdict
 from typing import List, Tuple, Union, cast
 
 import numpy as np
-import retworkx as rx
+import rustworkx as rx
 
 from qiskit.opflow.converters.converter_base import ConverterBase
 from qiskit.opflow.evolutions.evolved_op import EvolvedOp
diff --git a/qiskit/pulse/schedule.py b/qiskit/pulse/schedule.py
index 9d0561c11..5355c5364 100644
--- a/qiskit/pulse/schedule.py
+++ b/qiskit/pulse/schedule.py
@@ -42,7 +42,7 @@ import warnings
 from typing import List, Tuple, Iterable, Union, Dict, Callable, Set, Optional, Any
 
 import numpy as np
-import retworkx as rx
+import rustworkx as rx
 
 from qiskit.circuit.parameter import Parameter
 from qiskit.circuit.parameterexpression import ParameterExpression, ParameterValueType
diff --git a/qiskit/pulse/transforms/dag.py b/qiskit/pulse/transforms/dag.py
index 4756cb98e..41f354476 100644
--- a/qiskit/pulse/transforms/dag.py
+++ b/qiskit/pulse/transforms/dag.py
@@ -11,7 +11,7 @@
 # that they have been altered from the originals.
 """A collection of functions to convert ScheduleBlock to DAG representation."""
 
-import retworkx as rx
+import rustworkx as rx
 
 from qiskit.pulse.exceptions import UnassignedReferenceError
 
diff --git a/qiskit/quantum_info/operators/symplectic/pauli_list.py b/qiskit/quantum_info/operators/symplectic/pauli_list.py
index 293e0a641..3cf7f0399 100644
--- a/qiskit/quantum_info/operators/symplectic/pauli_list.py
+++ b/qiskit/quantum_info/operators/symplectic/pauli_list.py
@@ -16,7 +16,7 @@ Optimized list of Pauli operators
 from collections import defaultdict
 
 import numpy as np
-import retworkx as rx
+import rustworkx as rx
 
 from qiskit.exceptions import QiskitError
 from qiskit.quantum_info.operators.custom_iterator import CustomIterator
@@ -1109,7 +1109,7 @@ class PauliList(BasePauli, LinearMixin, GroupMixin):
                 or on a per-qubit basis.
 
         Returns:
-            retworkx.PyGraph: A class of undirected graphs
+            rustworkx.PyGraph: A class of undirected graphs
         """
 
         edges = self._noncommutation_graph(qubit_wise)
diff --git a/qiskit/quantum_info/operators/symplectic/sparse_pauli_op.py b/qiskit/quantum_info/operators/symplectic/sparse_pauli_op.py
index dd2ac3bc6..f9b3b50f6 100644
--- a/qiskit/quantum_info/operators/symplectic/sparse_pauli_op.py
+++ b/qiskit/quantum_info/operators/symplectic/sparse_pauli_op.py
@@ -18,7 +18,7 @@ from numbers import Number
 from typing import Dict, Optional
 
 import numpy as np
-import retworkx as rx
+import rustworkx as rx
 
 from qiskit._accelerate.sparse_pauli_op import unordered_unique  # pylint: disable=import-error
 from qiskit.exceptions import QiskitError
@@ -930,7 +930,7 @@ class SparsePauliOp(LinearOp):
                 or on a per-qubit basis.
 
         Returns:
-            retworkx.PyGraph: A class of undirected graphs
+            rustworkx.PyGraph: A class of undirected graphs
         """
 
         edges = self.paulis._noncommutation_graph(qubit_wise)
diff --git a/qiskit/transpiler/coupling.py b/qiskit/transpiler/coupling.py
index ddc93191f..1fac676a4 100644
--- a/qiskit/transpiler/coupling.py
+++ b/qiskit/transpiler/coupling.py
@@ -22,8 +22,8 @@ onto a device with this coupling.
 import warnings
 
 import numpy as np
-import retworkx as rx
-from retworkx.visualization import graphviz_draw  # pylint: disable=no-name-in-module,import-error
+import rustworkx as rx
+from rustworkx.visualization import graphviz_draw  # pylint: disable=no-name-in-module
 
 from qiskit.transpiler.exceptions import CouplingError
 
@@ -409,8 +409,8 @@ class CouplingMap:
     def draw(self):
         """Draws the coupling map.
 
-        This function calls the :func:`~retworkx.visualization.graphviz_draw` function from the
-        ``retworkx`` package to draw the :class:`CouplingMap` object.
+        This function calls the :func:`~rustworkx.visualization.graphviz_draw` function from the
+        ``rustworkx`` package to draw the :class:`CouplingMap` object.
 
         Returns:
             PIL.Image: Drawn coupling map.
diff --git a/qiskit/transpiler/passes/basis/basis_translator.py b/qiskit/transpiler/passes/basis/basis_translator.py
index 004371c12..8cba722ee 100644
--- a/qiskit/transpiler/passes/basis/basis_translator.py
+++ b/qiskit/transpiler/passes/basis/basis_translator.py
@@ -21,7 +21,7 @@ from itertools import zip_longest
 from collections import defaultdict
 from functools import singledispatch
 
-import retworkx
+import rustworkx
 
 from qiskit.circuit import Gate, ParameterVector, QuantumRegister, ControlFlowOp, QuantumCircuit
 from qiskit.dagcircuit import DAGCircuit
@@ -365,11 +365,11 @@ def _(circ: QuantumCircuit):
 
 
 class StopIfBasisRewritable(Exception):
-    """Custom exception that signals `retworkx.dijkstra_search` to stop."""
+    """Custom exception that signals `rustworkx.dijkstra_search` to stop."""
 
 
-class BasisSearchVisitor(retworkx.visit.DijkstraVisitor):  # pylint: disable=no-member
-    """Handles events emitted during `retworkx.dijkstra_search`."""
+class BasisSearchVisitor(rustworkx.visit.DijkstraVisitor):  # pylint: disable=no-member
+    """Handles events emitted during `rustworkx.dijkstra_search`."""
 
     def __init__(self, graph, source_basis, target_basis, num_gates_for_rule):
         self.graph = graph
@@ -414,7 +414,7 @@ class BasisSearchVisitor(retworkx.visit.DijkstraVisitor):  # pylint: disable=no-
         # if there are gates in this `rule` that we have not yet generated, we can't apply
         # this `rule`. if `target` is already in basis, it's not beneficial to use this rule.
         if self._num_gates_remain_for_rule[index] > 0 or target in self.target_basis:
-            raise retworkx.visit.PruneSearch  # pylint: disable=no-member
+            raise rustworkx.visit.PruneSearch  # pylint: disable=no-member
 
     def edge_relaxed(self, edge):
         _, target, edata = edge
@@ -480,7 +480,7 @@ def _basis_search(equiv_lib, source_basis, target_basis):
 
     all_gates_in_lib = set()
 
-    graph = retworkx.PyDiGraph()
+    graph = rustworkx.PyDiGraph()
     nodes_to_indices = dict()
     num_gates_for_rule = dict()
 
@@ -527,7 +527,7 @@ def _basis_search(equiv_lib, source_basis, target_basis):
     graph.add_edges_from_no_data([(dummy, nodes_to_indices[key]) for key in target_basis_keys])
     rtn = None
     try:
-        retworkx.digraph_dijkstra_search(graph, [dummy], vis.edge_cost, vis)
+        rustworkx.digraph_dijkstra_search(graph, [dummy], vis.edge_cost, vis)
     except StopIfBasisRewritable:
         rtn = vis.basis_transforms
 
diff --git a/qiskit/transpiler/passes/layout/dense_layout.py b/qiskit/transpiler/passes/layout/dense_layout.py
index 6b75b6d09..59be8ad5f 100644
--- a/qiskit/transpiler/passes/layout/dense_layout.py
+++ b/qiskit/transpiler/passes/layout/dense_layout.py
@@ -14,7 +14,7 @@
 
 
 import numpy as np
-import retworkx
+import rustworkx
 
 from qiskit.transpiler.layout import Layout
 from qiskit.transpiler.basepasses import AnalysisPass
@@ -53,12 +53,12 @@ class DenseLayout(AnalysisPass):
             num_qubits = target.num_qubits
             self.coupling_map = target.build_coupling_map()
             if self.coupling_map is not None:
-                self.adjacency_matrix = retworkx.adjacency_matrix(self.coupling_map.graph)
+                self.adjacency_matrix = rustworkx.adjacency_matrix(self.coupling_map.graph)
             self.error_mat, self._use_error = _build_error_matrix(num_qubits, target=target)
         else:
             if self.coupling_map:
                 num_qubits = self.coupling_map.size()
-                self.adjacency_matrix = retworkx.adjacency_matrix(self.coupling_map.graph)
+                self.adjacency_matrix = rustworkx.adjacency_matrix(self.coupling_map.graph)
             self.error_mat, self._use_error = _build_error_matrix(
                 num_qubits, backend_prop=self.backend_prop, coupling_map=self.coupling_map
             )
diff --git a/qiskit/transpiler/passes/layout/noise_adaptive_layout.py b/qiskit/transpiler/passes/layout/noise_adaptive_layout.py
index 046452074..f8dcc566d 100644
--- a/qiskit/transpiler/passes/layout/noise_adaptive_layout.py
+++ b/qiskit/transpiler/passes/layout/noise_adaptive_layout.py
@@ -14,7 +14,7 @@
 
 import math
 
-import retworkx as rx
+import rustworkx as rx
 
 from qiskit.transpiler.layout import Layout
 from qiskit.transpiler.basepasses import AnalysisPass
diff --git a/qiskit/transpiler/passes/layout/vf2_layout.py b/qiskit/transpiler/passes/layout/vf2_layout.py
index b20ca0cf9..5362b5397 100644
--- a/qiskit/transpiler/passes/layout/vf2_layout.py
+++ b/qiskit/transpiler/passes/layout/vf2_layout.py
@@ -15,7 +15,7 @@ from enum import Enum
 import logging
 import time
 
-from retworkx import vf2_mapping
+from rustworkx import vf2_mapping
 
 from qiskit.transpiler.layout import Layout
 from qiskit.transpiler.basepasses import AnalysisPass
diff --git a/qiskit/transpiler/passes/layout/vf2_post_layout.py b/qiskit/transpiler/passes/layout/vf2_post_layout.py
index fb346d6e5..5b3b8361b 100644
--- a/qiskit/transpiler/passes/layout/vf2_post_layout.py
+++ b/qiskit/transpiler/passes/layout/vf2_post_layout.py
@@ -16,7 +16,7 @@ import logging
 import inspect
 import time
 
-from retworkx import PyDiGraph, vf2_mapping, PyGraph
+from rustworkx import PyDiGraph, vf2_mapping, PyGraph
 
 from qiskit.transpiler.layout import Layout
 from qiskit.transpiler.basepasses import AnalysisPass
diff --git a/qiskit/transpiler/passes/layout/vf2_utils.py b/qiskit/transpiler/passes/layout/vf2_utils.py
index 950b2447d..667a770a0 100644
--- a/qiskit/transpiler/passes/layout/vf2_utils.py
+++ b/qiskit/transpiler/passes/layout/vf2_utils.py
@@ -16,7 +16,7 @@ from collections import defaultdict
 import statistics
 import random
 
-from retworkx import PyDiGraph, PyGraph
+from rustworkx import PyDiGraph, PyGraph
 
 from qiskit.circuit import ControlFlowOp, ForLoopOp
 from qiskit.converters import circuit_to_dag
diff --git a/qiskit/transpiler/passes/routing/algorithms/token_swapper.py b/qiskit/transpiler/passes/routing/algorithms/token_swapper.py
index 7f5f9fcc7..63dd1e1f0 100644
--- a/qiskit/transpiler/passes/routing/algorithms/token_swapper.py
+++ b/qiskit/transpiler/passes/routing/algorithms/token_swapper.py
@@ -31,7 +31,7 @@ import logging
 from typing import Iterator, Mapping, MutableMapping, MutableSet, List, Iterable, Union
 
 import numpy as np
-import retworkx as rx
+import rustworkx as rx
 
 from .types import Swap, Permutation
 from .util import PermutationCircuit, permutation_circuit
diff --git a/qiskit/transpiler/passes/routing/sabre_swap.py b/qiskit/transpiler/passes/routing/sabre_swap.py
index a2d749b69..c5f8bbf90 100644
--- a/qiskit/transpiler/passes/routing/sabre_swap.py
+++ b/qiskit/transpiler/passes/routing/sabre_swap.py
@@ -16,7 +16,7 @@ import logging
 from copy import copy, deepcopy
 
 import numpy as np
-import retworkx
+import rustworkx
 
 from qiskit.circuit.library.standard_gates import SwapGate
 from qiskit.transpiler.basepasses import TransformationPass
@@ -148,7 +148,9 @@ class SabreSwap(TransformationPass):
             self.coupling_map.make_symmetric()
         self._neighbor_table = None
         if coupling_map is not None:
-            self._neighbor_table = NeighborTable(retworkx.adjacency_matrix(self.coupling_map.graph))
+            self._neighbor_table = NeighborTable(
+                rustworkx.adjacency_matrix(self.coupling_map.graph)
+            )
 
         self.heuristic = heuristic
 
diff --git a/qiskit/transpiler/preset_passmanagers/common.py b/qiskit/transpiler/preset_passmanagers/common.py
index b44125986..d77c644f7 100644
--- a/qiskit/transpiler/preset_passmanagers/common.py
+++ b/qiskit/transpiler/preset_passmanagers/common.py
@@ -510,9 +510,9 @@ def get_vf2_call_limit(
     vf2_call_limit = None
     if layout_method is None and initial_layout is None:
         if optimization_level == 1:
-            vf2_call_limit = int(5e4)  # Set call limit to ~100ms with retworkx 0.10.2
+            vf2_call_limit = int(5e4)  # Set call limit to ~100ms with rustworkx 0.10.2
         elif optimization_level == 2:
-            vf2_call_limit = int(5e6)  # Set call limit to ~10 sec with retworkx 0.10.2
+            vf2_call_limit = int(5e6)  # Set call limit to ~10 sec with rustworkx 0.10.2
         elif optimization_level == 3:
-            vf2_call_limit = int(3e7)  # Set call limit to ~60 sec with retworkx 0.10.2
+            vf2_call_limit = int(3e7)  # Set call limit to ~60 sec with rustworkx 0.10.2
     return vf2_call_limit
diff --git a/qiskit/transpiler/preset_passmanagers/level1.py b/qiskit/transpiler/preset_passmanagers/level1.py
index 6268b3dc6..37da850d7 100644
--- a/qiskit/transpiler/preset_passmanagers/level1.py
+++ b/qiskit/transpiler/preset_passmanagers/level1.py
@@ -127,7 +127,7 @@ def level_1_pass_manager(pass_manager_config: PassManagerConfig) -> StagedPassMa
         else VF2Layout(
             coupling_map,
             seed=seed_transpiler,
-            call_limit=int(5e4),  # Set call limit to ~100ms with retworkx 0.10.2
+            call_limit=int(5e4),  # Set call limit to ~100ms with rustworkx 0.10.2
             properties=backend_properties,
             target=target,
         )
diff --git a/qiskit/transpiler/preset_passmanagers/level2.py b/qiskit/transpiler/preset_passmanagers/level2.py
index 240869d60..1c11193ef 100644
--- a/qiskit/transpiler/preset_passmanagers/level2.py
+++ b/qiskit/transpiler/preset_passmanagers/level2.py
@@ -117,7 +117,7 @@ def level_2_pass_manager(pass_manager_config: PassManagerConfig) -> StagedPassMa
         else VF2Layout(
             coupling_map,
             seed=seed_transpiler,
-            call_limit=int(5e6),  # Set call limit to ~10 sec with retworkx 0.10.2
+            call_limit=int(5e6),  # Set call limit to ~10 sec with rustworkx 0.10.2
             properties=backend_properties,
             target=target,
         )
diff --git a/qiskit/transpiler/preset_passmanagers/level3.py b/qiskit/transpiler/preset_passmanagers/level3.py
index 5e1f5b979..fdb8bec93 100644
--- a/qiskit/transpiler/preset_passmanagers/level3.py
+++ b/qiskit/transpiler/preset_passmanagers/level3.py
@@ -123,7 +123,7 @@ def level_3_pass_manager(pass_manager_config: PassManagerConfig) -> StagedPassMa
         else VF2Layout(
             coupling_map,
             seed=seed_transpiler,
-            call_limit=int(3e7),  # Set call limit to ~60 sec with retworkx 0.10.2
+            call_limit=int(3e7),  # Set call limit to ~60 sec with rustworkx 0.10.2
             properties=backend_properties,
             target=target,
         )
diff --git a/qiskit/transpiler/target.py b/qiskit/transpiler/target.py
index ee4f88991..b2fbe90d3 100644
--- a/qiskit/transpiler/target.py
+++ b/qiskit/transpiler/target.py
@@ -24,7 +24,7 @@ import io
 import logging
 import inspect
 
-import retworkx as rx
+import rustworkx as rx
 
 from qiskit.circuit.parameter import Parameter
 from qiskit.pulse.instruction_schedule_map import InstructionScheduleMap
diff --git a/qiskit/visualization/dag_visualization.py b/qiskit/visualization/dag_visualization.py
index a0d0ef7c2..e73e7b34e 100644
--- a/qiskit/visualization/dag_visualization.py
+++ b/qiskit/visualization/dag_visualization.py
@@ -15,8 +15,7 @@
 """
 Visualization function for DAG circuit representation.
 """
-from retworkx.visualization import graphviz_draw  # pylint: disable=no-name-in-module,import-error
-
+from rustworkx.visualization import graphviz_draw  # pylint: disable=no-name-in-module
 from qiskit.dagcircuit.dagnode import DAGOpNode, DAGInNode, DAGOutNode
 from qiskit.circuit import Qubit
 from qiskit.utils import optionals as _optionals
@@ -29,8 +28,8 @@ def dag_drawer(dag, scale=0.7, filename=None, style="color"):
     """Plot the directed acyclic graph (dag) to represent operation dependencies
     in a quantum circuit.
 
-    This function calls the :func:`~retworkx.visualization.graphviz_draw` function from the ``retworkx``
-    package to draw the DAG.
+    This function calls the :func:`~rustworkx.visualization.graphviz_draw` function from the
+    ``rustworkx`` package to draw the DAG.
 
     Args:
         dag (DAGCircuit): The dag to draw.
diff --git a/qiskit/visualization/gate_map.py b/qiskit/visualization/gate_map.py
index 44ce2253f..1c38ef808 100644
--- a/qiskit/visualization/gate_map.py
+++ b/qiskit/visualization/gate_map.py
@@ -16,7 +16,7 @@ import math
 from typing import List
 
 import numpy as np
-import retworkx as rx
+import rustworkx as rx
 
 from qiskit.exceptions import QiskitError
 from qiskit.utils import optionals as _optionals
@@ -498,7 +498,7 @@ def plot_gate_map(
         qubit_coordinates = qubit_coordinates_map.get(num_qubits, None)
 
     if qubit_coordinates is None:
-        # Replace with planar_layout() when retworkx offers it
+        # Replace with planar_layout() when rustworkx offers it
         qubit_coordinates_rx = rx.spring_layout(coupling_map.graph, seed=1234)
         scaling_factor = 10 ** int(math.log10(num_qubits) + 1)
         qubit_coordinates = [
diff --git a/releasenotes/notes/rustworkx-not-retworkx-b7c4da600df58701.yaml b/releasenotes/notes/rustworkx-not-retworkx-b7c4da600df58701.yaml
new file mode 100644
index 000000000..0a1c5ba44
--- /dev/null
+++ b/releasenotes/notes/rustworkx-not-retworkx-b7c4da600df58701.yaml
@@ -0,0 +1,10 @@
+---
+upgrade:
+  - |
+    The ``retworkx`` dependency for Qiskit has been removed and replaced by
+    ``rustworkx`` library. These are the same packages, but ``rustworkx`` is
+    the new name for ``retworkx`` which was renamed as part of their combined
+    0.12.0 release. If you were previously using retworkx 0.12.0 with Qiskit
+    then you already installed rustworkx (retworkx 0.12.0 was just a redirect
+    shim for backwards compatibility). This change was made to migrate to the
+    new package name which will be the only supported package in the future.
diff --git a/requirements.txt b/requirements.txt
index d27187456..eda6daaf6 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,4 +1,4 @@
-retworkx>=0.11.0
+rustworkx>=0.12.0
 numpy>=1.17
 ply>=3.10
 psutil>=5
diff --git a/src/sabre_swap/mod.rs b/src/sabre_swap/mod.rs
index 1798a0dd0..eb718fbfc 100644
--- a/src/sabre_swap/mod.rs
+++ b/src/sabre_swap/mod.rs
@@ -29,10 +29,10 @@ use rand::prelude::SliceRandom;
 use rand::prelude::*;
 use rand_pcg::Pcg64Mcg;
 use rayon::prelude::*;
-use retworkx_core::dictmap::*;
-use retworkx_core::petgraph::prelude::*;
-use retworkx_core::petgraph::visit::EdgeRef;
-use retworkx_core::shortest_path::dijkstra;
+use rustworkx_core::dictmap::*;
+use rustworkx_core::petgraph::prelude::*;
+use rustworkx_core::petgraph::visit::EdgeRef;
+use rustworkx_core::shortest_path::dijkstra;
 
 use crate::getenv_use_multiple_threads;
 use crate::nlayout::NLayout;
diff --git a/src/sabre_swap/neighbor_table.rs b/src/sabre_swap/neighbor_table.rs
index 195875330..7568707da 100644
--- a/src/sabre_swap/neighbor_table.rs
+++ b/src/sabre_swap/neighbor_table.rs
@@ -22,7 +22,7 @@ use rayon::prelude::*;
 /// This object is typically created once from the adjacency matrix of
 /// a coupling map, for example::
 ///
-///     neigh_table = NeighborTable(retworkx.adjacency_matrix(coupling_map.graph))
+///     neigh_table = NeighborTable(rustworkx.adjacency_matrix(coupling_map.graph))
 ///
 /// and used solely to represent neighbors of each node in qiskit-terra's rust
 /// module.
diff --git a/src/sabre_swap/sabre_dag.rs b/src/sabre_swap/sabre_dag.rs
index 480dbb003..1992cc3fd 100644
--- a/src/sabre_swap/sabre_dag.rs
+++ b/src/sabre_swap/sabre_dag.rs
@@ -13,7 +13,7 @@
 use hashbrown::{HashMap, HashSet};
 use numpy::PyReadonlyArray1;
 use pyo3::prelude::*;
-use retworkx_core::petgraph::prelude::*;
+use rustworkx_core::petgraph::prelude::*;
 
 /// A DAG object used to represent the data interactions from a DAGCircuit
 /// to run the the sabre algorithm. This is structurally identical to the input
diff --git a/test/python/algorithms/minimum_eigensolvers/test_qaoa.py b/test/python/algorithms/minimum_eigensolvers/test_qaoa.py
index 8956b7943..071bda4b6 100644
--- a/test/python/algorithms/minimum_eigensolvers/test_qaoa.py
+++ b/test/python/algorithms/minimum_eigensolvers/test_qaoa.py
@@ -21,7 +21,7 @@ import numpy as np
 from scipy.optimize import minimize as scipy_minimize
 from ddt import ddt, idata, unpack
 
-import retworkx as rx
+import rustworkx as rx
 
 from qiskit import QuantumCircuit
 from qiskit.algorithms.minimum_eigensolvers import QAOA
diff --git a/test/python/algorithms/test_measure_error_mitigation.py b/test/python/algorithms/test_measure_error_mitigation.py
index ba9a0d016..39ca299b2 100644
--- a/test/python/algorithms/test_measure_error_mitigation.py
+++ b/test/python/algorithms/test_measure_error_mitigation.py
@@ -17,7 +17,7 @@ import unittest
 from test.python.algorithms import QiskitAlgorithmsTestCase
 from ddt import ddt, data, unpack
 import numpy as np
-import retworkx as rx
+import rustworkx as rx
 from qiskit import QuantumCircuit, execute
 from qiskit.quantum_info import Pauli
 from qiskit.exceptions import QiskitError
diff --git a/test/python/algorithms/test_qaoa.py b/test/python/algorithms/test_qaoa.py
index 95064b300..2998c1f17 100644
--- a/test/python/algorithms/test_qaoa.py
+++ b/test/python/algorithms/test_qaoa.py
@@ -20,7 +20,7 @@ import math
 import numpy as np
 from scipy.optimize import minimize as scipy_minimize
 from ddt import ddt, idata, unpack
-import retworkx as rx
+import rustworkx as rx
 
 from qiskit.algorithms import QAOA
 from qiskit.algorithms.optimizers import COBYLA, NELDER_MEAD
diff --git a/test/python/dagcircuit/test_dagcircuit.py b/test/python/dagcircuit/test_dagcircuit.py
index 3d6fd3f19..ed4e224a7 100644
--- a/test/python/dagcircuit/test_dagcircuit.py
+++ b/test/python/dagcircuit/test_dagcircuit.py
@@ -17,7 +17,7 @@ import unittest
 
 from ddt import ddt, data
 
-import retworkx as rx
+import rustworkx as rx
 from numpy import pi
 
 from qiskit.dagcircuit import DAGCircuit, DAGOpNode, DAGInNode, DAGOutNode
diff --git a/test/python/dagcircuit/test_dagdependency.py b/test/python/dagcircuit/test_dagdependency.py
index 0bec2cee3..011584dde 100644
--- a/test/python/dagcircuit/test_dagdependency.py
+++ b/test/python/dagcircuit/test_dagdependency.py
@@ -24,7 +24,7 @@ from qiskit.converters import circuit_to_dagdependency
 from qiskit.test import QiskitTestCase
 
 try:
-    import retworkx as rx
+    import rustworkx as rx
 except ImportError:
     pass
 
diff --git a/test/python/transpiler/test_token_swapper.py b/test/python/transpiler/test_token_swapper.py
index d8014614b..24225f4a3 100644
--- a/test/python/transpiler/test_token_swapper.py
+++ b/test/python/transpiler/test_token_swapper.py
@@ -28,7 +28,7 @@
 
 import itertools
 
-import retworkx as rx
+import rustworkx as rx
 from numpy import random
 from qiskit.transpiler.passes.routing.algorithms import ApproximateTokenSwapper
 from qiskit.transpiler.passes.routing.algorithms import util
diff --git a/test/python/transpiler/test_vf2_layout.py b/test/python/transpiler/test_vf2_layout.py
index 15746e2d3..580e1d6fe 100644
--- a/test/python/transpiler/test_vf2_layout.py
+++ b/test/python/transpiler/test_vf2_layout.py
@@ -17,7 +17,7 @@ from math import pi
 
 import ddt
 import numpy
-import retworkx
+import rustworkx
 
 from qiskit import QuantumRegister, QuantumCircuit, ClassicalRegister
 from qiskit.circuit import ControlFlowOp
@@ -254,12 +254,12 @@ class TestVF2LayoutLattice(LayoutTestCase):
 
     def graph_state_from_pygraph(self, graph):
         """Creates a GraphState circuit from a PyGraph"""
-        adjacency_matrix = retworkx.adjacency_matrix(graph)
+        adjacency_matrix = rustworkx.adjacency_matrix(graph)
         return GraphState(adjacency_matrix).decompose()
 
     def test_hexagonal_lattice_graph_20_in_25(self):
         """A 20x20 interaction map in 25x25 coupling map"""
-        graph_20_20 = retworkx.generators.hexagonal_lattice_graph(20, 20)
+        graph_20_20 = rustworkx.generators.hexagonal_lattice_graph(20, 20)
         circuit = self.graph_state_from_pygraph(graph_20_20)
 
         dag = circuit_to_dag(circuit)
@@ -269,7 +269,7 @@ class TestVF2LayoutLattice(LayoutTestCase):
 
     def test_hexagonal_lattice_graph_9_in_25(self):
         """A 9x9 interaction map in 25x25 coupling map"""
-        graph_9_9 = retworkx.generators.hexagonal_lattice_graph(9, 9)
+        graph_9_9 = rustworkx.generators.hexagonal_lattice_graph(9, 9)
         circuit = self.graph_state_from_pygraph(graph_9_9)
 
         dag = circuit_to_dag(circuit)
diff --git a/test/python/transpiler/test_vf2_post_layout.py b/test/python/transpiler/test_vf2_post_layout.py
index c89dbd8ca..92807ed3e 100644
--- a/test/python/transpiler/test_vf2_post_layout.py
+++ b/test/python/transpiler/test_vf2_post_layout.py
@@ -12,7 +12,7 @@
 
 """Test the VF2Layout pass"""
 
-import retworkx
+import rustworkx
 
 from qiskit import QuantumRegister, QuantumCircuit
 from qiskit.circuit import ControlFlowOp
@@ -365,7 +365,7 @@ class TestVF2PostLayoutScoring(QiskitTestCase):
         """Test error rate is 0 for empty circuit."""
         bit_map = {}
         reverse_bit_map = {}
-        im_graph = retworkx.PyDiGraph()
+        im_graph = rustworkx.PyDiGraph()
         backend = FakeYorktownV2()
         vf2_pass = VF2PostLayout(target=backend.target)
         layout = Layout()
@@ -376,7 +376,7 @@ class TestVF2PostLayoutScoring(QiskitTestCase):
         """Test error rate for all 1q input."""
         bit_map = {Qubit(): 0, Qubit(): 1}
         reverse_bit_map = {v: k for k, v in bit_map.items()}
-        im_graph = retworkx.PyDiGraph()
+        im_graph = rustworkx.PyDiGraph()
         im_graph.add_node({"sx": 1})
         im_graph.add_node({"sx": 1})
         backend = FakeYorktownV2()
@@ -389,7 +389,7 @@ class TestVF2PostLayoutScoring(QiskitTestCase):
         """Test average scoring for all 1q input."""
         bit_map = {Qubit(): 0, Qubit(): 1}
         reverse_bit_map = {v: k for k, v in bit_map.items()}
-        im_graph = retworkx.PyDiGraph()
+        im_graph = rustworkx.PyDiGraph()
         im_graph.add_node({"sx": 1})
         im_graph.add_node({"sx": 1})
         backend = FakeYorktownV2()