Skip to content

Commit

Permalink
Remove legacy providers interface (Qiskit/qiskit#7886)
Browse files Browse the repository at this point in the history
* Remove legacy providers interface

This commit removes the legacy providers interface from terra. This
includes the BaseBackend, BaseJob, BaseProvider abstract classes and
everything that inherits from them in the tree. These classes were
deprecated as part of qiskit-terra 0.18.0 and have been supersceded by
the versioned provider interface and all providers should have migrated
by now to these new supported interface. This also means we no longer
support the qobj execution path and QuantumCircuit and Schedule objects
are used directly everywhere for running. In the future we can look at
deprecating and removing the assemble() function and qobj class in the
future as nothing in tree is using them directly. But before we can
deprecate these the IBM provider and aer will need to have native
implementations.

* Drop handling for incorrect backend.version in BaseBackend

Now that BaseBackend is no longer in qiskit we don't need to special
handle the case where backend.version is not the interface version
(since it was a method in BaseBackend). This commit drops the handling
for this and uses the interface for the versioned interface as it was
originally intended.

* Fix lint

* Fix typo causing test failures

The tests were failing because one of the default values for getting the
backend version attribute was None instead of 0 causing a type error
when an integer was expected. This was not caught previously because the
BaseBackend handling checked for non integer versions and converted
those to 0. However, now without BaseBackend we need to be more explicit
and use an integer for the backend interface version.

Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
  • Loading branch information
mtreinish and mergify[bot] authored Apr 19, 2022
1 parent 0e11218 commit fddf8c9
Show file tree
Hide file tree
Showing 14 changed files with 41 additions and 63 deletions.
10 changes: 4 additions & 6 deletions qiskit_algorithms/amplitude_amplifiers/grover.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
import numpy as np

from qiskit import ClassicalRegister, QuantumCircuit
from qiskit.providers import Backend, BaseBackend
from qiskit.providers import Backend
from qiskit.quantum_info import partial_trace
from qiskit.utils import QuantumInstance
from .amplification_problem import AmplificationProblem
Expand Down Expand Up @@ -112,7 +112,7 @@ def __init__(
iterations: Optional[Union[List[int], Iterator[int], int]] = None,
growth_rate: Optional[float] = None,
sample_from_iterations: bool = False,
quantum_instance: Optional[Union[QuantumInstance, Backend, BaseBackend]] = None,
quantum_instance: Optional[Union[QuantumInstance, Backend]] = None,
) -> None:
r"""
Args:
Expand Down Expand Up @@ -172,14 +172,12 @@ def quantum_instance(self) -> Optional[QuantumInstance]:
return self._quantum_instance

@quantum_instance.setter
def quantum_instance(
self, quantum_instance: Union[QuantumInstance, BaseBackend, Backend]
) -> None:
def quantum_instance(self, quantum_instance: Union[QuantumInstance, Backend]) -> None:
"""Set quantum instance.
Args:
quantum_instance: The quantum instance used to run this algorithm.
"""
if isinstance(quantum_instance, (BaseBackend, Backend)):
if isinstance(quantum_instance, Backend):
quantum_instance = QuantumInstance(quantum_instance)
self._quantum_instance = quantum_instance

Expand Down
10 changes: 4 additions & 6 deletions qiskit_algorithms/amplitude_estimators/ae.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
from scipy.optimize import bisect

from qiskit import QuantumCircuit, ClassicalRegister
from qiskit.providers import BaseBackend, Backend
from qiskit.providers import Backend
from qiskit.utils import QuantumInstance
from .amplitude_estimator import AmplitudeEstimator, AmplitudeEstimatorResult
from .ae_utils import pdf_a, derivative_log_pdf_a, bisect_max
Expand Down Expand Up @@ -58,7 +58,7 @@ def __init__(
num_eval_qubits: int,
phase_estimation_circuit: Optional[QuantumCircuit] = None,
iqft: Optional[QuantumCircuit] = None,
quantum_instance: Optional[Union[QuantumInstance, BaseBackend, Backend]] = None,
quantum_instance: Optional[Union[QuantumInstance, Backend]] = None,
) -> None:
r"""
Args:
Expand Down Expand Up @@ -98,15 +98,13 @@ def quantum_instance(self) -> Optional[QuantumInstance]:
return self._quantum_instance

@quantum_instance.setter
def quantum_instance(
self, quantum_instance: Union[QuantumInstance, BaseBackend, Backend]
) -> None:
def quantum_instance(self, quantum_instance: Union[QuantumInstance, Backend]) -> None:
"""Set quantum instance.
Args:
quantum_instance: The quantum instance used to run this algorithm.
"""
if isinstance(quantum_instance, (BaseBackend, Backend)):
if isinstance(quantum_instance, Backend):
quantum_instance = QuantumInstance(quantum_instance)
self._quantum_instance = quantum_instance

Expand Down
10 changes: 4 additions & 6 deletions qiskit_algorithms/amplitude_estimators/fae.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
import numpy as np

from qiskit.circuit import QuantumCircuit, ClassicalRegister
from qiskit.providers import BaseBackend, Backend
from qiskit.providers import Backend
from qiskit.utils import QuantumInstance
from qiskit.algorithms.exceptions import AlgorithmError

Expand Down Expand Up @@ -50,7 +50,7 @@ def __init__(
delta: float,
maxiter: int,
rescale: bool = True,
quantum_instance: Optional[Union[QuantumInstance, BaseBackend, Backend]] = None,
quantum_instance: Optional[Union[QuantumInstance, Backend]] = None,
) -> None:
r"""
Args:
Expand Down Expand Up @@ -83,15 +83,13 @@ def quantum_instance(self) -> Optional[QuantumInstance]:
return self._quantum_instance

@quantum_instance.setter
def quantum_instance(
self, quantum_instance: Union[QuantumInstance, BaseBackend, Backend]
) -> None:
def quantum_instance(self, quantum_instance: Union[QuantumInstance, Backend]) -> None:
"""Set quantum instance.
Args:
quantum_instance: The quantum instance used to run this algorithm.
"""
if isinstance(quantum_instance, (BaseBackend, Backend)):
if isinstance(quantum_instance, Backend):
quantum_instance = QuantumInstance(quantum_instance)
self._quantum_instance = quantum_instance

Expand Down
10 changes: 4 additions & 6 deletions qiskit_algorithms/amplitude_estimators/iae.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
from scipy.stats import beta

from qiskit import ClassicalRegister, QuantumCircuit
from qiskit.providers import BaseBackend, Backend
from qiskit.providers import Backend
from qiskit.utils import QuantumInstance

from .amplitude_estimator import AmplitudeEstimator, AmplitudeEstimatorResult
Expand Down Expand Up @@ -52,7 +52,7 @@ def __init__(
alpha: float,
confint_method: str = "beta",
min_ratio: float = 2,
quantum_instance: Optional[Union[QuantumInstance, BaseBackend, Backend]] = None,
quantum_instance: Optional[Union[QuantumInstance, Backend]] = None,
) -> None:
r"""
The output of the algorithm is an estimate for the amplitude `a`, that with at least
Expand Down Expand Up @@ -107,15 +107,13 @@ def quantum_instance(self) -> Optional[QuantumInstance]:
return self._quantum_instance

@quantum_instance.setter
def quantum_instance(
self, quantum_instance: Union[QuantumInstance, BaseBackend, Backend]
) -> None:
def quantum_instance(self, quantum_instance: Union[QuantumInstance, Backend]) -> None:
"""Set quantum instance.
Args:
quantum_instance: The quantum instance used to run this algorithm.
"""
if isinstance(quantum_instance, (BaseBackend, Backend)):
if isinstance(quantum_instance, Backend):
quantum_instance = QuantumInstance(quantum_instance)
self._quantum_instance = quantum_instance

Expand Down
9 changes: 3 additions & 6 deletions qiskit_algorithms/amplitude_estimators/mlae.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
from scipy.optimize import brute
from scipy.stats import norm, chi2

from qiskit.providers import BaseBackend
from qiskit.providers import Backend
from qiskit import ClassicalRegister, QuantumRegister, QuantumCircuit
from qiskit.utils import QuantumInstance
Expand Down Expand Up @@ -52,7 +51,7 @@ def __init__(
self,
evaluation_schedule: Union[List[int], int],
minimizer: Optional[MINIMIZER] = None,
quantum_instance: Optional[Union[QuantumInstance, BaseBackend, Backend]] = None,
quantum_instance: Optional[Union[QuantumInstance, Backend]] = None,
) -> None:
r"""
Args:
Expand Down Expand Up @@ -109,15 +108,13 @@ def quantum_instance(self) -> Optional[QuantumInstance]:
return self._quantum_instance

@quantum_instance.setter
def quantum_instance(
self, quantum_instance: Union[QuantumInstance, BaseBackend, Backend]
) -> None:
def quantum_instance(self, quantum_instance: Union[QuantumInstance, Backend]) -> None:
"""Set quantum instance.
Args:
quantum_instance: The quantum instance used to run this algorithm.
"""
if isinstance(quantum_instance, (BaseBackend, Backend)):
if isinstance(quantum_instance, Backend):
quantum_instance = QuantumInstance(quantum_instance)
self._quantum_instance = quantum_instance

Expand Down
6 changes: 3 additions & 3 deletions qiskit_algorithms/aux_ops_evaluator.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,15 +23,15 @@
OperatorBase,
ExpectationBase,
)
from qiskit.providers import BaseBackend, Backend
from qiskit.providers import Backend
from qiskit.quantum_info import Statevector
from qiskit.utils import QuantumInstance

from .list_or_dict import ListOrDict


def eval_observables(
quantum_instance: Union[QuantumInstance, BaseBackend, Backend],
quantum_instance: Union[QuantumInstance, Backend],
quantum_state: Union[
Statevector,
QuantumCircuit,
Expand Down Expand Up @@ -161,7 +161,7 @@ def _compute_std_devs(
observables_expect_sampled: OperatorBase,
observables: ListOrDict[OperatorBase],
expectation: ExpectationBase,
quantum_instance: Union[QuantumInstance, BaseBackend, Backend],
quantum_instance: Union[QuantumInstance, Backend],
) -> List[complex]:
"""
Calculates a list of standard deviations from expectation values of observables provided.
Expand Down
11 changes: 3 additions & 8 deletions qiskit_algorithms/factorizers/shor.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
from qiskit.circuit import Gate, Instruction, ParameterVector
from qiskit.circuit.library import QFT
from qiskit.providers import Backend
from qiskit.providers import BaseBackend
from qiskit.quantum_info import partial_trace
from qiskit.utils import summarize_circuits
from qiskit.utils.arithmetic import is_power
Expand All @@ -51,9 +50,7 @@ class Shor:
See also https://arxiv.org/abs/quant-ph/0205095
"""

def __init__(
self, quantum_instance: Optional[Union[QuantumInstance, BaseBackend, Backend]] = None
) -> None:
def __init__(self, quantum_instance: Optional[Union[QuantumInstance, Backend]] = None) -> None:
"""
Args:
quantum_instance: Quantum Instance or Backend
Expand All @@ -69,11 +66,9 @@ def quantum_instance(self) -> Optional[QuantumInstance]:
return self._quantum_instance

@quantum_instance.setter
def quantum_instance(
self, quantum_instance: Union[QuantumInstance, BaseBackend, Backend]
) -> None:
def quantum_instance(self, quantum_instance: Union[QuantumInstance, Backend]) -> None:
"""Sets quantum instance."""
if isinstance(quantum_instance, (BaseBackend, Backend)):
if isinstance(quantum_instance, Backend):
quantum_instance = QuantumInstance(quantum_instance)
self._quantum_instance = quantum_instance

Expand Down
8 changes: 3 additions & 5 deletions qiskit_algorithms/linear_solvers/hhl.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
ListOp,
ExpectationFactory,
)
from qiskit.providers import Backend, BaseBackend
from qiskit.providers import Backend
from qiskit.quantum_info.operators.base_operator import BaseOperator
from qiskit.utils import QuantumInstance

Expand Down Expand Up @@ -100,7 +100,7 @@ def __init__(
self,
epsilon: float = 1e-2,
expectation: Optional[ExpectationBase] = None,
quantum_instance: Optional[Union[Backend, BaseBackend, QuantumInstance]] = None,
quantum_instance: Optional[Union[Backend, QuantumInstance]] = None,
) -> None:
r"""
Args:
Expand Down Expand Up @@ -142,9 +142,7 @@ def quantum_instance(self) -> Optional[QuantumInstance]:
return None if self._sampler is None else self._sampler.quantum_instance

@quantum_instance.setter
def quantum_instance(
self, quantum_instance: Optional[Union[QuantumInstance, BaseBackend, Backend]]
) -> None:
def quantum_instance(self, quantum_instance: Optional[Union[QuantumInstance, Backend]]) -> None:
"""Set quantum instance.
Args:
Expand Down
3 changes: 1 addition & 2 deletions qiskit_algorithms/minimum_eigen_solvers/qaoa.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
from qiskit.opflow import OperatorBase, ExpectationBase
from qiskit.opflow.gradients import GradientBase
from qiskit.providers import Backend
from qiskit.providers import BaseBackend
from qiskit.utils.quantum_instance import QuantumInstance
from qiskit.utils.validation import validate_min
from qiskit.circuit.library.n_local.qaoa_ansatz import QAOAAnsatz
Expand Down Expand Up @@ -65,7 +64,7 @@ def __init__(
include_custom: bool = False,
max_evals_grouped: int = 1,
callback: Optional[Callable[[int, np.ndarray, float, float], None]] = None,
quantum_instance: Optional[Union[QuantumInstance, BaseBackend, Backend]] = None,
quantum_instance: Optional[Union[QuantumInstance, Backend]] = None,
) -> None:
"""
Args:
Expand Down
7 changes: 2 additions & 5 deletions qiskit_algorithms/minimum_eigen_solvers/vqe.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@

from qiskit.circuit import QuantumCircuit, Parameter
from qiskit.circuit.library import RealAmplitudes
from qiskit.providers import BaseBackend
from qiskit.providers import Backend
from qiskit.opflow import (
OperatorBase,
Expand Down Expand Up @@ -145,7 +144,7 @@ def __init__(
include_custom: bool = False,
max_evals_grouped: int = 1,
callback: Optional[Callable[[int, np.ndarray, float, float], None]] = None,
quantum_instance: Optional[Union[QuantumInstance, BaseBackend, Backend]] = None,
quantum_instance: Optional[Union[QuantumInstance, Backend]] = None,
) -> None:
"""
Expand Down Expand Up @@ -254,9 +253,7 @@ def quantum_instance(self) -> Optional[QuantumInstance]:
return self._quantum_instance

@quantum_instance.setter
def quantum_instance(
self, quantum_instance: Union[QuantumInstance, BaseBackend, Backend]
) -> None:
def quantum_instance(self, quantum_instance: Union[QuantumInstance, Backend]) -> None:
"""Sets quantum_instance"""
if not isinstance(quantum_instance, QuantumInstance):
quantum_instance = QuantumInstance(quantum_instance)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
PauliSumOp,
StateFn,
)
from qiskit.providers import BaseBackend
from qiskit.providers import Backend
from .phase_estimation import PhaseEstimation
from .hamiltonian_phase_estimation_result import HamiltonianPhaseEstimationResult
from .phase_estimation_scale import PhaseEstimationScale
Expand Down Expand Up @@ -88,7 +88,7 @@ class HamiltonianPhaseEstimation:
def __init__(
self,
num_evaluation_qubits: int,
quantum_instance: Optional[Union[QuantumInstance, BaseBackend]] = None,
quantum_instance: Optional[Union[QuantumInstance, Backend]] = None,
) -> None:
"""
Args:
Expand Down
6 changes: 3 additions & 3 deletions qiskit_algorithms/phase_estimators/ipe.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
import qiskit
from qiskit.circuit import QuantumCircuit, QuantumRegister
from qiskit.circuit.classicalregister import ClassicalRegister
from qiskit.providers import BaseBackend, Backend
from qiskit.providers import Backend
from qiskit.utils import QuantumInstance
from .phase_estimator import PhaseEstimator
from .phase_estimator import PhaseEstimatorResult
Expand All @@ -38,7 +38,7 @@ class IterativePhaseEstimation(PhaseEstimator):
def __init__(
self,
num_iterations: int,
quantum_instance: Optional[Union[QuantumInstance, BaseBackend, Backend]] = None,
quantum_instance: Optional[Union[QuantumInstance, Backend]] = None,
) -> None:

"""Args:
Expand All @@ -48,7 +48,7 @@ def __init__(
Raises:
ValueError: if num_iterations is not greater than zero.
"""
if isinstance(quantum_instance, (Backend, BaseBackend)):
if isinstance(quantum_instance, Backend):
quantum_instance = QuantumInstance(quantum_instance)
self._quantum_instance = quantum_instance
if num_iterations <= 0:
Expand Down
6 changes: 3 additions & 3 deletions qiskit_algorithms/phase_estimators/phase_estimation.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
import qiskit
from qiskit import circuit
from qiskit.circuit.classicalregister import ClassicalRegister
from qiskit.providers import BaseBackend, Backend
from qiskit.providers import Backend
from qiskit.utils import QuantumInstance
from qiskit.result import Result
from .phase_estimation_result import PhaseEstimationResult, _sort_phases
Expand Down Expand Up @@ -81,7 +81,7 @@ class PhaseEstimation(PhaseEstimator):
def __init__(
self,
num_evaluation_qubits: int,
quantum_instance: Optional[Union[QuantumInstance, BaseBackend, Backend]] = None,
quantum_instance: Optional[Union[QuantumInstance, Backend]] = None,
) -> None:
"""
Args:
Expand All @@ -94,7 +94,7 @@ def __init__(
if num_evaluation_qubits is not None:
self._num_evaluation_qubits = num_evaluation_qubits

if isinstance(quantum_instance, (Backend, BaseBackend)):
if isinstance(quantum_instance, Backend):
quantum_instance = QuantumInstance(quantum_instance)
self._quantum_instance = quantum_instance

Expand Down
Loading

0 comments on commit fddf8c9

Please sign in to comment.