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()