diff options
author | Iyán Méndez Veiga | 2022-11-22 22:51:50 +0100 |
---|---|---|
committer | Iyán Méndez Veiga | 2022-11-22 22:51:50 +0100 |
commit | 30455f1cc25e6c88b026db9d5875d2f3a1bf75b1 (patch) | |
tree | c810c37f63dd6af5407364734316819244c73a92 | |
parent | 65a219f8ecea74cb55ebdcd4a386eebe746862e9 (diff) | |
download | aur-30455f1cc25e6c88b026db9d5875d2f3a1bf75b1.tar.gz |
upgpkg: python-qiskit-terra 0.22.2-1
upstream release
-rw-r--r-- | .SRCINFO | 10 | ||||
-rw-r--r-- | PKGBUILD | 19 | ||||
-rw-r--r-- | rustworkx.patch | 773 |
3 files changed, 794 insertions, 8 deletions
@@ -1,6 +1,6 @@ pkgbase = python-qiskit-terra pkgdesc = An open-source framework for working with noisy quantum computers at the level of pulses, circuits, and algorithms - pkgver = 0.22.0 + pkgver = 0.22.2 pkgrel = 1 url = https://github.com/Qiskit/qiskit-terra arch = x86_64 @@ -16,7 +16,7 @@ pkgbase = python-qiskit-terra depends = python-numpy depends = python-ply depends = python-psutil - depends = python-retworkx + depends = python-rustworkx depends = python-scipy depends = python-stevedore depends = python-symengine @@ -32,7 +32,9 @@ pkgbase = python-qiskit-terra optdepends = python-pygments: syntax highlighter optdepends = python-pylatexenc: LaTeX support optdepends = python-seaborn: statistical data visualization - source = qiskit-terra-0.22.0.tar.gz::https://github.com/Qiskit/qiskit-terra/archive/0.22.0.tar.gz - b2sums = 208f554de7fd6c11e76879a8c4c08f27859f1dd729494c3ab372e73e5205def0f97a5dac16bd26f632a80428d5ead1797509f67e78983eebdc34d092158a5124 + source = qiskit-terra-0.22.2.tar.gz::https://github.com/Qiskit/qiskit-terra/archive/0.22.2.tar.gz + source = rustworkx.patch + b2sums = 2bc25a93e573fa9fa464f3cac5df2fefd0cbb372ff718e4ddc55ea377a1cb532002c1589b1ee551ceeb3fa2b5ba5c49f1a749ec86e85578e64e69e642558ba6a + b2sums = 94133e4479ad918a8b40bdb53c91e44f2cd5eb85ed3831b559e643f3cf5b985ad11fa27bb16096995e59af67611902595e0e6b10f2b71e8624ff8eadb9a36a1f pkgname = python-qiskit-terra @@ -1,7 +1,7 @@ # Maintainer: Iyán Méndez Veiga <me (at) iyanmv (dot) com> _pkgname=qiskit-terra pkgname=python-${_pkgname} -pkgver=0.22.0 +pkgver=0.22.2 pkgrel=1 pkgdesc="An open-source framework for working with noisy quantum computers at the level of pulses, circuits, and algorithms" arch=('x86_64') @@ -14,7 +14,7 @@ depends=( 'python-numpy' 'python-ply' 'python-psutil' - 'python-retworkx' + 'python-rustworkx' 'python-scipy' 'python-stevedore' 'python-symengine' @@ -42,8 +42,19 @@ makedepends=( 'python-setuptools-rust' 'python-wheel' ) -source=("${_pkgname}-${pkgver}.tar.gz::https://github.com/Qiskit/${_pkgname}/archive/${pkgver}.tar.gz") -b2sums=('208f554de7fd6c11e76879a8c4c08f27859f1dd729494c3ab372e73e5205def0f97a5dac16bd26f632a80428d5ead1797509f67e78983eebdc34d092158a5124') +source=( + "${_pkgname}-${pkgver}.tar.gz::https://github.com/Qiskit/${_pkgname}/archive/${pkgver}.tar.gz" + "rustworkx.patch" +) +b2sums=( + '2bc25a93e573fa9fa464f3cac5df2fefd0cbb372ff718e4ddc55ea377a1cb532002c1589b1ee551ceeb3fa2b5ba5c49f1a749ec86e85578e64e69e642558ba6a' + '94133e4479ad918a8b40bdb53c91e44f2cd5eb85ed3831b559e643f3cf5b985ad11fa27bb16096995e59af67611902595e0e6b10f2b71e8624ff8eadb9a36a1f' +) + +prepare() { + cd "${srcdir}/${_pkgname}-${pkgver}" + patch --forward --strip=1 --input="${srcdir}/rustworkx.patch" +} build() { cd "${srcdir}/${_pkgname}-${pkgver}" diff --git a/rustworkx.patch b/rustworkx.patch new file mode 100644 index 000000000000..25ab2d45ed7f --- /dev/null +++ b/rustworkx.patch @@ -0,0 +1,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() |