From b61a86edec5c187c61d30194c60abd6c6e781c66 Mon Sep 17 00:00:00 2001 From: Eric Arellano Date: Tue, 28 Mar 2023 11:40:14 -0600 Subject: [PATCH 1/4] Apply new deprecation decorators to algorithms folder --- .../algorithms/amplitude_amplifiers/grover.py | 31 ++++++------------- qiskit/algorithms/amplitude_estimators/ae.py | 31 ++++++------------- qiskit/algorithms/amplitude_estimators/fae.py | 31 ++++++------------- qiskit/algorithms/amplitude_estimators/iae.py | 31 ++++++------------- .../algorithms/amplitude_estimators/mlae.py | 31 ++++++------------- qiskit/algorithms/aux_ops_evaluator.py | 14 ++++----- .../algorithms/eigen_solvers/eigen_solver.py | 22 ++++++------- .../eigen_solvers/numpy_eigen_solver.py | 13 ++++---- qiskit/algorithms/eigen_solvers/vqd.py | 20 +++++------- .../algorithms/evolvers/evolution_problem.py | 13 ++++---- .../algorithms/evolvers/evolution_result.py | 13 ++++---- .../algorithms/evolvers/imaginary_evolver.py | 13 ++++---- qiskit/algorithms/evolvers/real_evolver.py | 13 ++++---- .../evolvers/trotterization/trotter_qrte.py | 13 ++++---- .../minimum_eigen_solver.py | 26 ++++++++-------- .../numpy_minimum_eigen_solver.py | 14 ++++----- .../algorithms/minimum_eigen_solvers/qaoa.py | 11 +++---- .../algorithms/minimum_eigen_solvers/vqe.py | 22 ++++++------- qiskit/algorithms/optimizers/adam_amsgrad.py | 13 +++----- qiskit/algorithms/optimizers/qnspsa.py | 11 ++----- qiskit/algorithms/optimizers/spsa.py | 13 ++++---- .../hamiltonian_phase_estimation.py | 16 +++++----- qiskit/algorithms/phase_estimators/ipe.py | 16 +++++----- .../phase_estimators/phase_estimation.py | 15 +++++---- .../phase_estimation_result.py | 9 +++--- 25 files changed, 176 insertions(+), 279 deletions(-) diff --git a/qiskit/algorithms/amplitude_amplifiers/grover.py b/qiskit/algorithms/amplitude_amplifiers/grover.py index 79609f96a29c..6bb737d34ff2 100644 --- a/qiskit/algorithms/amplitude_amplifiers/grover.py +++ b/qiskit/algorithms/amplitude_amplifiers/grover.py @@ -25,7 +25,7 @@ from qiskit.providers import Backend from qiskit.quantum_info import partial_trace from qiskit.utils import QuantumInstance, algorithm_globals -from qiskit.utils.deprecation import deprecate_function +from qiskit.utils.deprecation import deprecate_arg, deprecate_func from .amplification_problem import AmplificationProblem from .amplitude_amplifier import AmplitudeAmplifier, AmplitudeAmplifierResult @@ -112,6 +112,12 @@ class Grover(AmplitudeAmplifier): `arXiv:quant-ph/0005055 `_. """ + @deprecate_arg( + "quantum_instance", + additional_msg="Instead, use the ``sampler`` argument.", + since="0.22.0", + pending=True, + ) def __init__( self, iterations: Optional[Union[List[int], Iterator[int], int]] = None, @@ -174,13 +180,6 @@ def __init__( self._quantum_instance = None if quantum_instance is not None: - warnings.warn( - "The quantum_instance argument has been superseded by the sampler argument. " - "This argument will be deprecated in a future release and subsequently " - "removed after that.", - category=PendingDeprecationWarning, - stacklevel=2, - ) with warnings.catch_warnings(): warnings.simplefilter("ignore", category=PendingDeprecationWarning) self.quantum_instance = quantum_instance @@ -191,13 +190,7 @@ def __init__( self._iterations_arg = iterations @property - @deprecate_function( - "The Grover.quantum_instance getter is pending deprecation. " - "This property will be deprecated in a future release and subsequently " - "removed after that.", - category=PendingDeprecationWarning, - since="0.23.0", - ) + @deprecate_func(since="0.23.0", pending=True, is_property=True) def quantum_instance(self) -> Optional[QuantumInstance]: r"""Pending deprecation\; Get the quantum instance. @@ -207,13 +200,7 @@ def quantum_instance(self) -> Optional[QuantumInstance]: return self._quantum_instance @quantum_instance.setter - @deprecate_function( - "The Grover.quantum_instance setter is pending deprecation. " - "This property will be deprecated in a future release and subsequently " - "removed after that.", - category=PendingDeprecationWarning, - since="0.23.0", - ) + @deprecate_func(since="0.23.0", pending=True, is_property=True) def quantum_instance(self, quantum_instance: Union[QuantumInstance, Backend]) -> None: r"""Pending deprecation\; Set quantum instance. diff --git a/qiskit/algorithms/amplitude_estimators/ae.py b/qiskit/algorithms/amplitude_estimators/ae.py index 507c377029c4..0df4b89be98d 100644 --- a/qiskit/algorithms/amplitude_estimators/ae.py +++ b/qiskit/algorithms/amplitude_estimators/ae.py @@ -23,7 +23,7 @@ from qiskit.providers import Backend from qiskit.primitives import BaseSampler from qiskit.utils import QuantumInstance -from qiskit.utils.deprecation import deprecate_function +from qiskit.utils.deprecation import deprecate_arg, deprecate_func from .amplitude_estimator import AmplitudeEstimator, AmplitudeEstimatorResult from .ae_utils import pdf_a, derivative_log_pdf_a, bisect_max from .estimation_problem import EstimationProblem @@ -57,6 +57,12 @@ class AmplitudeEstimation(AmplitudeEstimator): `arXiv:1912.05559 `_. """ + @deprecate_arg( + "quantum_instance", + additional_msg="Instead, use the ``sampler`` argument.", + since="0.22.0", + pending=True, + ) def __init__( self, num_eval_qubits: int, @@ -86,13 +92,6 @@ def __init__( super().__init__() # set quantum instance - if quantum_instance is not None: - warnings.warn( - "The quantum_instance argument has been superseded by the sampler argument. " - "This argument will be deprecated in a future release and subsequently " - "removed after that.", - category=PendingDeprecationWarning, - ) with warnings.catch_warnings(): warnings.simplefilter("ignore") self.quantum_instance = quantum_instance @@ -124,13 +123,7 @@ def sampler(self, sampler: BaseSampler) -> None: self._sampler = sampler @property - @deprecate_function( - "The AmplitudeEstimation.quantum_instance getter is pending deprecation. " - "This property will be deprecated in a future release and subsequently " - "removed after that.", - category=PendingDeprecationWarning, - since="0.23.0", - ) + @deprecate_func(since="0.23.0", pending=True, is_property=True) def quantum_instance(self) -> QuantumInstance | None: """Pending deprecation; Get the quantum instance. @@ -140,13 +133,7 @@ def quantum_instance(self) -> QuantumInstance | None: return self._quantum_instance @quantum_instance.setter - @deprecate_function( - "The AmplitudeEstimation.quantum_instance setter is pending deprecation. " - "This property will be deprecated in a future release and subsequently " - "removed after that.", - category=PendingDeprecationWarning, - since="0.23.0", - ) + @deprecate_func(since="0.23.0", pending=True, is_property=True) def quantum_instance(self, quantum_instance: QuantumInstance | Backend) -> None: """Pending deprecation; Set quantum instance. diff --git a/qiskit/algorithms/amplitude_estimators/fae.py b/qiskit/algorithms/amplitude_estimators/fae.py index c1bb0eec9846..143660422676 100644 --- a/qiskit/algorithms/amplitude_estimators/fae.py +++ b/qiskit/algorithms/amplitude_estimators/fae.py @@ -20,7 +20,7 @@ from qiskit.providers import Backend from qiskit.primitives import BaseSampler from qiskit.utils import QuantumInstance -from qiskit.utils.deprecation import deprecate_function +from qiskit.utils.deprecation import deprecate_arg, deprecate_func from qiskit.algorithms.exceptions import AlgorithmError from .amplitude_estimator import AmplitudeEstimator, AmplitudeEstimatorResult @@ -48,6 +48,12 @@ class FasterAmplitudeEstimation(AmplitudeEstimator): """ + @deprecate_arg( + "quantum_instance", + additional_msg="Instead, use the ``sampler`` argument.", + since="0.22.0", + pending=True, + ) def __init__( self, delta: float, @@ -73,13 +79,6 @@ def __init__( """ super().__init__() # set quantum instance - if quantum_instance is not None: - warnings.warn( - "The quantum_instance argument has been superseded by the sampler argument. " - "This argument will be deprecated in a future release and subsequently " - "removed after that.", - category=PendingDeprecationWarning, - ) with warnings.catch_warnings(): warnings.simplefilter("ignore") self.quantum_instance = quantum_instance @@ -109,13 +108,7 @@ def sampler(self, sampler: BaseSampler) -> None: self._sampler = sampler @property - @deprecate_function( - "The FasterAmplitudeEstimation.quantum_instance getter is pending deprecation. " - "This property will be deprecated in a future release and subsequently " - "removed after that.", - category=PendingDeprecationWarning, - since="0.23.0", - ) + @deprecate_func(since="0.23.0", pending=True, is_property=True) def quantum_instance(self) -> QuantumInstance | None: """Pending deprecation; Get the quantum instance. @@ -125,13 +118,7 @@ def quantum_instance(self) -> QuantumInstance | None: return self._quantum_instance @quantum_instance.setter - @deprecate_function( - "The FasterAmplitudeEstimation.quantum_instance setter is pending deprecation. " - "This property will be deprecated in a future release and subsequently " - "removed after that.", - category=PendingDeprecationWarning, - since="0.23.0", - ) + @deprecate_func(since="0.23.0", pending=True, is_property=True) def quantum_instance(self, quantum_instance: QuantumInstance | Backend) -> None: """Pending deprecation; Set quantum instance. diff --git a/qiskit/algorithms/amplitude_estimators/iae.py b/qiskit/algorithms/amplitude_estimators/iae.py index 0b0348c15adf..d1e0f9fe2631 100644 --- a/qiskit/algorithms/amplitude_estimators/iae.py +++ b/qiskit/algorithms/amplitude_estimators/iae.py @@ -22,7 +22,7 @@ from qiskit.providers import Backend from qiskit.primitives import BaseSampler from qiskit.utils import QuantumInstance -from qiskit.utils.deprecation import deprecate_function +from qiskit.utils.deprecation import deprecate_arg, deprecate_func from .amplitude_estimator import AmplitudeEstimator, AmplitudeEstimatorResult from .estimation_problem import EstimationProblem @@ -50,6 +50,12 @@ class IterativeAmplitudeEstimation(AmplitudeEstimator): `arXiv:quant-ph/0005055 `_. """ + @deprecate_arg( + "quantum_instance", + additional_msg="Instead, use the ``sampler`` argument.", + since="0.22.0", + pending=True, + ) def __init__( self, epsilon_target: float, @@ -95,13 +101,6 @@ def __init__( super().__init__() # set quantum instance - if quantum_instance is not None: - warnings.warn( - "The quantum_instance argument has been superseded by the sampler argument. " - "This argument will be deprecated in a future release and subsequently " - "removed after that.", - category=PendingDeprecationWarning, - ) with warnings.catch_warnings(): warnings.simplefilter("ignore") self.quantum_instance = quantum_instance @@ -132,13 +131,7 @@ def sampler(self, sampler: BaseSampler) -> None: self._sampler = sampler @property - @deprecate_function( - "The IterativeAmplitudeEstimation.quantum_instance getter is pending deprecation. " - "This property will be deprecated in a future release and subsequently " - "removed after that.", - category=PendingDeprecationWarning, - since="0.23.0", - ) + @deprecate_func(since="0.23.0", pending=True, is_property=True) def quantum_instance(self) -> QuantumInstance | None: """Pending deprecation; Get the quantum instance. @@ -148,13 +141,7 @@ def quantum_instance(self) -> QuantumInstance | None: return self._quantum_instance @quantum_instance.setter - @deprecate_function( - "The IterativeAmplitudeEstimation.quantum_instance setter is pending deprecation. " - "This property will be deprecated in a future release and subsequently " - "removed after that.", - category=PendingDeprecationWarning, - since="0.23.0", - ) + @deprecate_func(since="0.23.0", pending=True, is_property=True) def quantum_instance(self, quantum_instance: QuantumInstance | Backend) -> None: """Pending deprecation; Set quantum instance. diff --git a/qiskit/algorithms/amplitude_estimators/mlae.py b/qiskit/algorithms/amplitude_estimators/mlae.py index 45ab626ce507..cfb36a438216 100644 --- a/qiskit/algorithms/amplitude_estimators/mlae.py +++ b/qiskit/algorithms/amplitude_estimators/mlae.py @@ -23,7 +23,7 @@ from qiskit import ClassicalRegister, QuantumRegister, QuantumCircuit from qiskit.utils import QuantumInstance from qiskit.primitives import BaseSampler -from qiskit.utils.deprecation import deprecate_function +from qiskit.utils.deprecation import deprecate_arg, deprecate_func from .amplitude_estimator import AmplitudeEstimator, AmplitudeEstimatorResult from .estimation_problem import EstimationProblem @@ -53,6 +53,12 @@ class in named ``MaximumLikelihoodAmplitudeEstimation``. `arXiv:quant-ph/0005055 `_. """ + @deprecate_arg( + "quantum_instance", + additional_msg="Instead, use the ``sampler`` argument.", + since="0.22.0", + pending=True, + ) def __init__( self, evaluation_schedule: list[int] | int, @@ -81,13 +87,6 @@ def __init__( super().__init__() # set quantum instance - if quantum_instance is not None: - warnings.warn( - "The quantum_instance argument has been superseded by the sampler argument. " - "This argument will be deprecated in a future release and subsequently " - "removed after that.", - category=PendingDeprecationWarning, - ) with warnings.catch_warnings(): warnings.simplefilter("ignore") self.quantum_instance = quantum_instance @@ -136,13 +135,7 @@ def sampler(self, sampler: BaseSampler) -> None: self._sampler = sampler @property - @deprecate_function( - "The MaximumLikelihoodAmplitudeEstimation.quantum_instance getter is pending deprecation. " - "This property will be deprecated in a future release and subsequently " - "removed after that.", - category=PendingDeprecationWarning, - since="0.23.0", - ) + @deprecate_func(since="0.23.0", pending=True, is_property=True) def quantum_instance(self) -> QuantumInstance | None: """Pending deprecation; Get the quantum instance. @@ -152,13 +145,7 @@ def quantum_instance(self) -> QuantumInstance | None: return self._quantum_instance @quantum_instance.setter - @deprecate_function( - "The MaximumLikelihoodAmplitudeEstimation.quantum_instance setter is pending deprecation. " - "This property will be deprecated in a future release and subsequently " - "removed after that.", - category=PendingDeprecationWarning, - since="0.23.0", - ) + @deprecate_func(since="0.23.0", pending=True, is_property=True) def quantum_instance(self, quantum_instance: QuantumInstance | Backend) -> None: """Pending deprecation; Set quantum instance. diff --git a/qiskit/algorithms/aux_ops_evaluator.py b/qiskit/algorithms/aux_ops_evaluator.py index 16c489f39331..b8708aad15ee 100644 --- a/qiskit/algorithms/aux_ops_evaluator.py +++ b/qiskit/algorithms/aux_ops_evaluator.py @@ -26,18 +26,18 @@ from qiskit.providers import Backend from qiskit.quantum_info import Statevector from qiskit.utils import QuantumInstance -from qiskit.utils.deprecation import deprecate_function +from qiskit.utils.deprecation import deprecate_func from .list_or_dict import ListOrDict -@deprecate_function( - "The eval_observables function has been superseded by the " - "qiskit.algorithms.observables_evaluator.estimate_observables function. " - "This function will be deprecated in a future release and subsequently " - "removed after that.", - category=PendingDeprecationWarning, +@deprecate_func( + additional_msg=( + "Instead, use the function " + "``qiskit.algorithms.observables_evaluator.estimate_observables``." + ), since="0.23.0", + pending=True, ) def eval_observables( quantum_instance: Union[QuantumInstance, Backend], diff --git a/qiskit/algorithms/eigen_solvers/eigen_solver.py b/qiskit/algorithms/eigen_solvers/eigen_solver.py index c62069154243..3bb0379d4397 100644 --- a/qiskit/algorithms/eigen_solvers/eigen_solver.py +++ b/qiskit/algorithms/eigen_solvers/eigen_solver.py @@ -18,7 +18,7 @@ import numpy as np from qiskit.opflow import OperatorBase -from qiskit.utils.deprecation import deprecate_function +from qiskit.utils.deprecation import deprecate_func from ..algorithm_result import AlgorithmResult from ..list_or_dict import ListOrDict @@ -36,13 +36,10 @@ class Eigensolver(ABC): used interchangeably. """ - @deprecate_function( - "The Eigensolver interface has been superseded by the " - "qiskit.algorithms.eigensolvers.Eigensolver interface. " - "This interface will be deprecated in a future release and subsequently " - "removed after that.", - category=PendingDeprecationWarning, + @deprecate_func( + additional_msg="Instead, use the interface ``qiskit.algorithms.eigensolvers.Eigensolver``", since="0.23.0", + pending=True, ) def __init__(self) -> None: pass @@ -89,13 +86,12 @@ class EigensolverResult(AlgorithmResult): """ - @deprecate_function( - "The EigensolverResult class has been superseded by the " - "qiskit.algorithms.eigensolvers.EigensolverResult class. " - "This class will be deprecated in a future release and subsequently " - "removed after that.", - category=PendingDeprecationWarning, + @deprecate_func( + additional_msg=( + "Instead, use the class ``qiskit.algorithms.eigensolvers.EigensolverResult``." + ), since="0.23.0", + pending=True, ) def __init__(self) -> None: super().__init__() diff --git a/qiskit/algorithms/eigen_solvers/numpy_eigen_solver.py b/qiskit/algorithms/eigen_solvers/numpy_eigen_solver.py index 9faf63647261..e2d50e23be1b 100755 --- a/qiskit/algorithms/eigen_solvers/numpy_eigen_solver.py +++ b/qiskit/algorithms/eigen_solvers/numpy_eigen_solver.py @@ -20,7 +20,7 @@ from qiskit.opflow import I, ListOp, OperatorBase, StateFn from qiskit.utils.validation import validate_min -from qiskit.utils.deprecation import deprecate_function +from qiskit.utils.deprecation import deprecate_func from ..exceptions import AlgorithmError from .eigen_solver import Eigensolver, EigensolverResult from ..list_or_dict import ListOrDict @@ -46,13 +46,12 @@ class NumPyEigensolver(Eigensolver): operator size, mostly in terms of number of qubits it represents, gets larger. """ - @deprecate_function( - "The NumPyEigensolver class has been superseded by the " - "qiskit.algorithms.eigensolvers.NumPyEigensolver class. " - "This class will be deprecated in a future release and subsequently " - "removed after that.", - category=PendingDeprecationWarning, + @deprecate_func( + additional_msg=( + "Instead, use the class ``qiskit.algorithms.eigensolvers.NumPyEigensolver``." + ), since="0.23.0", + pending=True, ) def __init__( self, diff --git a/qiskit/algorithms/eigen_solvers/vqd.py b/qiskit/algorithms/eigen_solvers/vqd.py index 70102c4b51dc..e9c7e91a4165 100644 --- a/qiskit/algorithms/eigen_solvers/vqd.py +++ b/qiskit/algorithms/eigen_solvers/vqd.py @@ -38,7 +38,7 @@ from qiskit.opflow.gradients import GradientBase from qiskit.utils.validation import validate_min from qiskit.utils.backend_utils import is_aer_provider -from qiskit.utils.deprecation import deprecate_function +from qiskit.utils.deprecation import deprecate_func from qiskit.utils import QuantumInstance from ..list_or_dict import ListOrDict from ..optimizers import Optimizer, SLSQP, Minimizer @@ -96,13 +96,10 @@ class VQD(VariationalAlgorithm, Eigensolver): """ - @deprecate_function( - "The VQD class has been superseded by the " - "qiskit.algorithms.eigensolvers.VQD class. " - "This class will be deprecated in a future release and subsequently " - "removed after that.", - category=PendingDeprecationWarning, + @deprecate_func( + additional_msg="Instead, use the class ``qiskit.algorithms.eigensolvers.VQD``", since="0.23.0", + pending=True, ) def __init__( self, @@ -767,13 +764,10 @@ class VQDResult(VariationalResult, EigensolverResult): """ - @deprecate_function( - "The VQDResult class has been superseded by the " - "qiskit.algorithms.eigensolvers.VQDResult class. " - "This class will be deprecated in a future release and subsequently " - "removed after that.", - category=PendingDeprecationWarning, + @deprecate_func( + additional_msg="Instead, use the class ``qiskit.algorithms.eigensolvers.VQDResult``.", since="0.23.0", + pending=True, ) def __init__(self) -> None: super().__init__() diff --git a/qiskit/algorithms/evolvers/evolution_problem.py b/qiskit/algorithms/evolvers/evolution_problem.py index 4a222d9e659f..aa50f4c2a43f 100644 --- a/qiskit/algorithms/evolvers/evolution_problem.py +++ b/qiskit/algorithms/evolvers/evolution_problem.py @@ -17,7 +17,7 @@ from qiskit import QuantumCircuit from qiskit.circuit import Parameter from qiskit.opflow import OperatorBase, StateFn -from qiskit.utils.deprecation import deprecate_function +from qiskit.utils.deprecation import deprecate_func from ..list_or_dict import ListOrDict @@ -33,13 +33,12 @@ class EvolutionProblem: evolution time, a quantum state to be evolved and under which Hamiltonian the state is evolved. """ - @deprecate_function( - "The EvolutionProblem class has been superseded by the " - "qiskit.algorithms.time_evolvers.TimeEvolutionProblem class. " - "This class will be deprecated in a future release and subsequently " - "removed after that.", - category=PendingDeprecationWarning, + @deprecate_func( + additional_msg=( + "Instead, use the class ``qiskit.algorithms.time_evolvers.TimeEvolutionProblem``." + ), since="0.23.0", + pending=True, ) def __init__( self, diff --git a/qiskit/algorithms/evolvers/evolution_result.py b/qiskit/algorithms/evolvers/evolution_result.py index 400afb3b3cfe..1dcb176b9995 100644 --- a/qiskit/algorithms/evolvers/evolution_result.py +++ b/qiskit/algorithms/evolvers/evolution_result.py @@ -17,7 +17,7 @@ from qiskit import QuantumCircuit from qiskit.algorithms.list_or_dict import ListOrDict from qiskit.opflow import StateFn, OperatorBase -from qiskit.utils.deprecation import deprecate_function +from qiskit.utils.deprecation import deprecate_func from ..algorithm_result import AlgorithmResult @@ -31,13 +31,12 @@ class EvolutionResult(AlgorithmResult): """ - @deprecate_function( - "The EvolutionResult class has been superseded by the " - "qiskit.algorithms.time_evolvers.TimeEvolutionResult class. " - "This class will be deprecated in a future release and subsequently " - "removed after that.", - category=PendingDeprecationWarning, + @deprecate_func( + additional_msg=( + "Instead, use the class ``qiskit.algorithms.time_evolvers.TimeEvolutionResult``." + ), since="0.23.0", + pending=True, ) def __init__( self, diff --git a/qiskit/algorithms/evolvers/imaginary_evolver.py b/qiskit/algorithms/evolvers/imaginary_evolver.py index 37c78c3e5462..f6c0624f1b74 100644 --- a/qiskit/algorithms/evolvers/imaginary_evolver.py +++ b/qiskit/algorithms/evolvers/imaginary_evolver.py @@ -14,7 +14,7 @@ from abc import ABC, abstractmethod -from qiskit.utils.deprecation import deprecate_function +from qiskit.utils.deprecation import deprecate_func from .evolution_problem import EvolutionProblem from .evolution_result import EvolutionResult @@ -29,13 +29,12 @@ class ImaginaryEvolver(ABC): """ - @deprecate_function( - "The ImaginaryEvolver interface has been superseded by the " - "qiskit.algorithms.time_evolvers.ImaginaryTimeEvolver interface. " - "This interface will be deprecated in a future release and subsequently " - "removed after that.", - category=PendingDeprecationWarning, + @deprecate_func( + additional_msg=( + "Instead, use the interface ``qiskit.algorithms.time_evolvers.ImaginaryTimeEvolver``." + ), since="0.23.0", + pending=True, ) def __init__(self) -> None: pass diff --git a/qiskit/algorithms/evolvers/real_evolver.py b/qiskit/algorithms/evolvers/real_evolver.py index 144d088eac26..6dfd2d7c119b 100644 --- a/qiskit/algorithms/evolvers/real_evolver.py +++ b/qiskit/algorithms/evolvers/real_evolver.py @@ -13,7 +13,7 @@ """Interface for Quantum Real Time Evolution.""" from abc import ABC, abstractmethod -from qiskit.utils.deprecation import deprecate_function +from qiskit.utils.deprecation import deprecate_func from .evolution_problem import EvolutionProblem from .evolution_result import EvolutionResult @@ -29,13 +29,12 @@ class RealEvolver(ABC): """ - @deprecate_function( - "The RealEvolver interface has been superseded by the " - "qiskit.algorithms.time_evolvers.RealTimeEvolver interface. " - "This interface will be deprecated in a future release and subsequently " - "removed after that.", - category=PendingDeprecationWarning, + @deprecate_func( + additional_msg=( + "Instead, use the interface ``qiskit.algorithms.time_evolvers.RealTimeEvolver``" + ), since="0.23.0", + pending=True, ) def __init__(self) -> None: pass diff --git a/qiskit/algorithms/evolvers/trotterization/trotter_qrte.py b/qiskit/algorithms/evolvers/trotterization/trotter_qrte.py index 4104b535ec0c..dc43248de05e 100644 --- a/qiskit/algorithms/evolvers/trotterization/trotter_qrte.py +++ b/qiskit/algorithms/evolvers/trotterization/trotter_qrte.py @@ -33,7 +33,7 @@ from qiskit.providers import Backend from qiskit.synthesis import ProductFormula, LieTrotter from qiskit.utils import QuantumInstance -from qiskit.utils.deprecation import deprecate_function +from qiskit.utils.deprecation import deprecate_func class TrotterQRTE(RealEvolver): @@ -64,13 +64,12 @@ class TrotterQRTE(RealEvolver): evolved_state = trotter_qrte.evolve(evolution_problem).evolved_state """ - @deprecate_function( - "The TrotterQRTE class has been superseded by the " - "qiskit.algorithms.time_evolvers.trotterization.TrotterQRTE class. " - "This class will be deprecated in a future release and subsequently " - "removed after that.", - category=PendingDeprecationWarning, + @deprecate_func( + additional_msg=( + "Instead, use the class ``qiskit.algorithms.time_evolvers.trotterization.TrotterQRTE``." + ), since="0.23.0", + pending=True, ) def __init__( self, diff --git a/qiskit/algorithms/minimum_eigen_solvers/minimum_eigen_solver.py b/qiskit/algorithms/minimum_eigen_solvers/minimum_eigen_solver.py index e1ea43b40647..09bbab4fd2f6 100644 --- a/qiskit/algorithms/minimum_eigen_solvers/minimum_eigen_solver.py +++ b/qiskit/algorithms/minimum_eigen_solvers/minimum_eigen_solver.py @@ -18,7 +18,7 @@ import numpy as np from qiskit.opflow import OperatorBase -from qiskit.utils.deprecation import deprecate_function +from qiskit.utils.deprecation import deprecate_func from ..algorithm_result import AlgorithmResult from ..list_or_dict import ListOrDict @@ -36,13 +36,13 @@ class MinimumEigensolver(ABC): used interchangeably. """ - @deprecate_function( - "The Minimum Eigensolver interface has been superseded by the " - "qiskit.algorithms.minimum_eigensolvers.MinimumEigensolver interface. " - "This interface will be deprecated in a future release and subsequently " - "removed after that.", - category=PendingDeprecationWarning, + @deprecate_func( + additional_msg=( + "Instead, use the interface " + "``qiskit.algorithms.minimum_eigensolvers.MinimumEigensolver``." + ), since="0.23.0", + pending=True, ) def __init__(self) -> None: pass @@ -93,13 +93,13 @@ class MinimumEigensolverResult(AlgorithmResult): """ - @deprecate_function( - "The MinimumEigensolverResult class has been superseded by the " - "qiskit.algorithms.minimum_eigensolvers.MinimumEigensolverResult class. " - "This class will be deprecated in a future release and subsequently " - "removed after that.", - category=PendingDeprecationWarning, + @deprecate_func( + additional_msg=( + "Instead, use the class " + "``qiskit.algorithms.minimum_eigensolvers.MinimumEigensolverResult``." + ), since="0.23.0", + pending=True, ) def __init__(self) -> None: super().__init__() diff --git a/qiskit/algorithms/minimum_eigen_solvers/numpy_minimum_eigen_solver.py b/qiskit/algorithms/minimum_eigen_solvers/numpy_minimum_eigen_solver.py index 43fe10ac0ecc..227588da509b 100644 --- a/qiskit/algorithms/minimum_eigen_solvers/numpy_minimum_eigen_solver.py +++ b/qiskit/algorithms/minimum_eigen_solvers/numpy_minimum_eigen_solver.py @@ -18,7 +18,7 @@ import numpy as np from qiskit.opflow import OperatorBase -from qiskit.utils.deprecation import deprecate_function +from qiskit.utils.deprecation import deprecate_func from ..eigen_solvers.numpy_eigen_solver import NumPyEigensolver from .minimum_eigen_solver import MinimumEigensolver, MinimumEigensolverResult from ..list_or_dict import ListOrDict @@ -37,13 +37,13 @@ class NumPyMinimumEigensolver(MinimumEigensolver): """ - @deprecate_function( - "The NumPyMinimumEigensolver class has been superseded by the " - "qiskit.algorithms.minimum_eigensolvers.NumPyMinimumEigensolver class. " - "This class will be deprecated in a future release and subsequently " - "removed after that.", - category=PendingDeprecationWarning, + @deprecate_func( + additional_msg=( + "Instead, use the class " + "``qiskit.algorithms.minimum_eigensolvers.NumPyMinimumEigensolver``." + ), since="0.23.0", + pending=True, ) def __init__( self, diff --git a/qiskit/algorithms/minimum_eigen_solvers/qaoa.py b/qiskit/algorithms/minimum_eigen_solvers/qaoa.py index 2abdd5b44915..36bb1b68d39b 100644 --- a/qiskit/algorithms/minimum_eigen_solvers/qaoa.py +++ b/qiskit/algorithms/minimum_eigen_solvers/qaoa.py @@ -23,7 +23,7 @@ from qiskit.providers import Backend from qiskit.utils.quantum_instance import QuantumInstance from qiskit.utils.validation import validate_min -from qiskit.utils.deprecation import deprecate_function +from qiskit.utils.deprecation import deprecate_func from qiskit.circuit.library.n_local.qaoa_ansatz import QAOAAnsatz from qiskit.algorithms.minimum_eigen_solvers.vqe import VQE @@ -59,13 +59,10 @@ class QAOA(VQE): the evolution to a feasible subspace of the full Hilbert space. """ - @deprecate_function( - "The QAOA class has been superseded by the " - "qiskit.algorithms.minimum_eigensolvers.QAOA class. " - "This class will be deprecated in a future release and subsequently " - "removed after that.", - category=PendingDeprecationWarning, + @deprecate_func( + additional_msg="Instead, use the class ``qiskit.algorithms.minimum_eigensolvers.QAOA``.", since="0.23.0", + pending=True, ) def __init__( self, diff --git a/qiskit/algorithms/minimum_eigen_solvers/vqe.py b/qiskit/algorithms/minimum_eigen_solvers/vqe.py index 90197fd203e8..6e7d536e20c7 100755 --- a/qiskit/algorithms/minimum_eigen_solvers/vqe.py +++ b/qiskit/algorithms/minimum_eigen_solvers/vqe.py @@ -41,7 +41,7 @@ from qiskit.utils import QuantumInstance, algorithm_globals from qiskit.utils.backend_utils import is_aer_provider from qiskit.utils.validation import validate_min -from qiskit.utils.deprecation import deprecate_function +from qiskit.utils.deprecation import deprecate_func from ..aux_ops_evaluator import eval_observables from ..exceptions import AlgorithmError @@ -127,13 +127,10 @@ def my_minimizer(fun, x0, jac=None, bounds=None) -> OptimizerResult: """ - @deprecate_function( - "The VQE class has been superseded by the " - "qiskit.algorithms.minimum_eigensolvers.VQE class. " - "This class will be deprecated in a future release and subsequently " - "removed after that.", - category=PendingDeprecationWarning, + @deprecate_func( + additional_msg="Instead, use the class ``qiskit.algorithms.minimum_eigensolvers.VQE``.", since="0.23.0", + pending=True, ) def __init__( self, @@ -667,13 +664,12 @@ class VQEResult(VariationalResult, MinimumEigensolverResult): """ - @deprecate_function( - "The VQEResult class has been superseded by the " - "qiskit.algorithms.minimum_eigensolvers.VQEResult class. " - "This class will be deprecated in a future release and subsequently " - "removed after that.", - category=PendingDeprecationWarning, + @deprecate_func( + additional_msg=( + "Instead, use the class ``qiskit.algorithms.minimum_eigensolvers.VQEResult``." + ), since="0.23.0", + pending=True, ) def __init__(self) -> None: with warnings.catch_warnings(): diff --git a/qiskit/algorithms/optimizers/adam_amsgrad.py b/qiskit/algorithms/optimizers/adam_amsgrad.py index ccdacbddc09e..e20bf559e0e2 100644 --- a/qiskit/algorithms/optimizers/adam_amsgrad.py +++ b/qiskit/algorithms/optimizers/adam_amsgrad.py @@ -17,7 +17,7 @@ import csv import numpy as np -from qiskit.utils.deprecation import deprecate_arguments +from qiskit.utils.deprecation import deprecate_arg from .optimizer import Optimizer, OptimizerSupportLevel, OptimizerResult, POINT # pylint: disable=invalid-name @@ -193,14 +193,9 @@ def load_params(self, load_dir: str) -> None: t = t[1:-1] self._t = np.fromstring(t, dtype=int, sep=" ") - @deprecate_arguments( - { - "objective_function": "fun", - "initial_point": "x0", - "gradient_function": "jac", - }, - since="0.19.0", - ) + @deprecate_arg("objective_function", new_alias="fun", since="0.19.0") + @deprecate_arg("initial_point", new_alias="fun", since="0.19.0") + @deprecate_arg("gradient_function", new_alias="jac", since="0.19.0") def minimize( self, fun: Callable[[POINT], float], diff --git a/qiskit/algorithms/optimizers/qnspsa.py b/qiskit/algorithms/optimizers/qnspsa.py index baef9f3c7ace..2bf6e4520ef2 100644 --- a/qiskit/algorithms/optimizers/qnspsa.py +++ b/qiskit/algorithms/optimizers/qnspsa.py @@ -14,13 +14,13 @@ from __future__ import annotations from typing import Any, Iterator, Callable -import warnings import numpy as np from qiskit.providers import Backend from qiskit.circuit import ParameterVector, QuantumCircuit from qiskit.opflow import StateFn, CircuitSampler, ExpectationBase from qiskit.utils import QuantumInstance +from qiskit.utils.deprecation import deprecate_arg from qiskit.primitives import BaseSampler, Sampler from qiskit.algorithms.state_fidelities import ComputeUncompute @@ -253,6 +253,8 @@ def settings(self) -> dict[str, Any]: return settings @staticmethod + @deprecate_arg("backend", since="0.22", pending=True) + @deprecate_arg("expectation", since="0.22", pending=True) def get_fidelity( circuit: QuantumCircuit, backend: Backend | QuantumInstance | None = None, @@ -301,13 +303,6 @@ def get_fidelity( sampler = Sampler() if expectation is not None or backend is not None: - warnings.warn( - "Passing a backend and expectation converter to QNSPSA.get_fidelity is pending " - "deprecation and will be deprecated in a future release. Instead, pass a " - "sampler primitive.", - stacklevel=2, - category=PendingDeprecationWarning, - ) return QNSPSA._legacy_get_fidelity(circuit, backend, expectation) fid = ComputeUncompute(sampler) diff --git a/qiskit/algorithms/optimizers/spsa.py b/qiskit/algorithms/optimizers/spsa.py index 7888821508f5..4f6c5a29212b 100644 --- a/qiskit/algorithms/optimizers/spsa.py +++ b/qiskit/algorithms/optimizers/spsa.py @@ -25,7 +25,7 @@ import numpy as np from qiskit.utils import algorithm_globals -from qiskit.utils.deprecation import deprecate_function +from qiskit.utils.deprecation import deprecate_func from .optimizer import Optimizer, OptimizerSupportLevel, OptimizerResult, POINT @@ -647,11 +647,12 @@ def get_support_level(self): } # pylint: disable=bad-docstring-quotes - @deprecate_function( - "The SPSA.optimize method is deprecated as of Qiskit Terra 0.21.0 and will be removed no " - "sooner than 3 months after the release date. Instead, use SPSA.minimize as a replacement, " - "which supports the same arguments but follows the interface of scipy.optimize and returns " - "a complete result object containing additional information.", + @deprecate_func( + additional_msg=( + "Instead, use ``SPSA.minimize`` as a replacement, which supports the same arguments " + "but follows the interface of scipy.optimize and returns a complete result object " + "containing additional information." + ), since="0.21.0", ) def optimize( diff --git a/qiskit/algorithms/phase_estimators/hamiltonian_phase_estimation.py b/qiskit/algorithms/phase_estimators/hamiltonian_phase_estimation.py index 0dcc4deb87ec..ee06e2b31e26 100644 --- a/qiskit/algorithms/phase_estimators/hamiltonian_phase_estimation.py +++ b/qiskit/algorithms/phase_estimators/hamiltonian_phase_estimation.py @@ -14,10 +14,9 @@ from __future__ import annotations -import warnings - from qiskit import QuantumCircuit from qiskit.utils import QuantumInstance +from qiskit.utils.deprecation import deprecate_arg from qiskit.opflow import ( SummedOp, PauliOp, @@ -92,6 +91,12 @@ class HamiltonianPhaseEstimation: """ + @deprecate_arg( + "quantum_instance", + additional_msg="Instead, use the ``sampler`` argument.", + since="0.22.0", + pending=True, + ) def __init__( self, num_evaluation_qubits: int, @@ -106,13 +111,6 @@ def __init__( the circuit will be run. sampler: The sampler primitive on which the circuit will be sampled. """ - if quantum_instance is not None: - warnings.warn( - "The quantum_instance argument has been superseded by the sampler argument. " - "This argument will be deprecated in a future release and subsequently " - "removed after that.", - category=PendingDeprecationWarning, - ) self._phase_estimation = PhaseEstimation( num_evaluation_qubits=num_evaluation_qubits, quantum_instance=quantum_instance, diff --git a/qiskit/algorithms/phase_estimators/ipe.py b/qiskit/algorithms/phase_estimators/ipe.py index 276fb096c783..df17adaa89eb 100644 --- a/qiskit/algorithms/phase_estimators/ipe.py +++ b/qiskit/algorithms/phase_estimators/ipe.py @@ -15,8 +15,6 @@ from __future__ import annotations -import warnings - import numpy import qiskit @@ -24,6 +22,7 @@ from qiskit.circuit.classicalregister import ClassicalRegister from qiskit.providers import Backend from qiskit.utils import QuantumInstance +from qiskit.utils.deprecation import deprecate_arg from qiskit.algorithms.exceptions import AlgorithmError from .phase_estimator import PhaseEstimator from .phase_estimator import PhaseEstimatorResult @@ -40,6 +39,12 @@ class IterativePhaseEstimation(PhaseEstimator): qubit benchmark, `arxiv/quant-ph/0610214 `_ """ + @deprecate_arg( + "quantum_instance", + additional_msg="Instead, use the ``sampler`` argument.", + since="0.22.0", + pending=True, + ) def __init__( self, num_iterations: int, @@ -60,13 +65,6 @@ def __init__( raise AlgorithmError( "Neither a sampler nor a quantum instance was provided. Please provide one of them." ) - if quantum_instance is not None: - warnings.warn( - "The quantum_instance argument has been superseded by the sampler argument. " - "This argument will be deprecated in a future release and subsequently " - "removed after that.", - category=PendingDeprecationWarning, - ) if isinstance(quantum_instance, Backend): quantum_instance = QuantumInstance(quantum_instance) self._quantum_instance = quantum_instance diff --git a/qiskit/algorithms/phase_estimators/phase_estimation.py b/qiskit/algorithms/phase_estimators/phase_estimation.py index 83b446e7202f..ff8e92dd11d2 100644 --- a/qiskit/algorithms/phase_estimators/phase_estimation.py +++ b/qiskit/algorithms/phase_estimators/phase_estimation.py @@ -14,7 +14,6 @@ """The Quantum Phase Estimation Algorithm.""" from __future__ import annotations -import warnings import numpy @@ -24,6 +23,7 @@ from qiskit.circuit.classicalregister import ClassicalRegister from qiskit.providers import Backend from qiskit.utils import QuantumInstance +from qiskit.utils.deprecation import deprecate_arg from qiskit.result import Result from qiskit.algorithms.exceptions import AlgorithmError from .phase_estimation_result import PhaseEstimationResult, _sort_phases @@ -81,6 +81,12 @@ class PhaseEstimation(PhaseEstimator): """ + @deprecate_arg( + "quantum_instance", + additional_msg="Instead, use the ``sampler`` argument.", + since="0.22.0", + pending=True, + ) def __init__( self, num_evaluation_qubits: int, @@ -102,13 +108,6 @@ def __init__( raise AlgorithmError( "Neither a sampler nor a quantum instance was provided. Please provide one of them." ) - if quantum_instance is not None: - warnings.warn( - "The quantum_instance argument has been superseded by the sampler argument. " - "This argument will be deprecated in a future release and subsequently " - "removed after that.", - category=PendingDeprecationWarning, - ) self._measurements_added = False if num_evaluation_qubits is not None: self._num_evaluation_qubits = num_evaluation_qubits diff --git a/qiskit/algorithms/phase_estimators/phase_estimation_result.py b/qiskit/algorithms/phase_estimators/phase_estimation_result.py index 1872fb73caa8..166ae162e0b6 100644 --- a/qiskit/algorithms/phase_estimators/phase_estimation_result.py +++ b/qiskit/algorithms/phase_estimators/phase_estimation_result.py @@ -14,7 +14,7 @@ from __future__ import annotations import numpy -from qiskit.utils.deprecation import deprecate_function +from qiskit.utils.deprecation import deprecate_func from qiskit.result import Result from .phase_estimator import PhaseEstimatorResult @@ -67,11 +67,10 @@ def circuit_result(self) -> Result: return self._circuit_result @property - @deprecate_function( - "The 'PhaseEstimationResult.most_likely_phase' attribute is deprecated as of 0.18.0 and " - "will be removed no earlier than 3 months after the release date. It has been renamed as " - "the 'phase' attribute.", + @deprecate_func( + additional_msg="Instead, use the property ``phase``, which behaves the same.", since="0.18.0", + is_property=True, ) def most_likely_phase(self) -> float: r"""DEPRECATED - Return the most likely phase as a number in :math:`[0.0, 1.0)`. From 16fe1fd171002a06ec43272beb1cc02faf8c974d Mon Sep 17 00:00:00 2001 From: Eric Arellano Date: Tue, 28 Mar 2023 12:31:07 -0600 Subject: [PATCH 2/4] Fix docstring starting on first line --- qiskit/algorithms/phase_estimators/ipe.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/qiskit/algorithms/phase_estimators/ipe.py b/qiskit/algorithms/phase_estimators/ipe.py index df17adaa89eb..17f5312ebb5e 100644 --- a/qiskit/algorithms/phase_estimators/ipe.py +++ b/qiskit/algorithms/phase_estimators/ipe.py @@ -51,7 +51,8 @@ def __init__( quantum_instance: QuantumInstance | Backend | None = None, sampler: BaseSampler | None = None, ) -> None: - r"""Args: + r""" + Args: num_iterations: The number of iterations (rounds) of the phase estimation to run. quantum_instance: Pending deprecation\: The quantum instance on which the circuit will be run. From 174784bb1721962ab8f7a2e5b3dae3e6fbc62d54 Mon Sep 17 00:00:00 2001 From: Eric Arellano Date: Tue, 28 Mar 2023 13:40:51 -0600 Subject: [PATCH 3/4] Fix test due to positional args not triggering warning --- test/python/algorithms/optimizers/test_spsa.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/test/python/algorithms/optimizers/test_spsa.py b/test/python/algorithms/optimizers/test_spsa.py index 949f2aa03f80..4e8ccc9cbeb8 100644 --- a/test/python/algorithms/optimizers/test_spsa.py +++ b/test/python/algorithms/optimizers/test_spsa.py @@ -201,9 +201,10 @@ def objective(x): def test_qnspsa_fidelity_deprecation(self): """Test using a backend and expectation converter in get_fidelity warns.""" ansatz = PauliTwoDesign(2, reps=1, seed=2) - with self.assertWarns(PendingDeprecationWarning): - _ = QNSPSA.get_fidelity(ansatz, StatevectorSimulatorPy(), MatrixExpectation()) + QNSPSA.get_fidelity(ansatz, backend=StatevectorSimulatorPy()) + with self.assertWarns(PendingDeprecationWarning): + QNSPSA.get_fidelity(ansatz, expectation=MatrixExpectation()) def test_qnspsa_fidelity_primitives(self): """Test the primitives can be used in get_fidelity.""" From 3f22c3709b49a5e9a46b27a37367d01fbd099df7 Mon Sep 17 00:00:00 2001 From: Eric Arellano Date: Tue, 28 Mar 2023 13:42:53 -0600 Subject: [PATCH 4/4] Improve test further --- test/python/algorithms/optimizers/test_spsa.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/python/algorithms/optimizers/test_spsa.py b/test/python/algorithms/optimizers/test_spsa.py index 4e8ccc9cbeb8..6204198c02ba 100644 --- a/test/python/algorithms/optimizers/test_spsa.py +++ b/test/python/algorithms/optimizers/test_spsa.py @@ -205,6 +205,8 @@ def test_qnspsa_fidelity_deprecation(self): QNSPSA.get_fidelity(ansatz, backend=StatevectorSimulatorPy()) with self.assertWarns(PendingDeprecationWarning): QNSPSA.get_fidelity(ansatz, expectation=MatrixExpectation()) + # No warning when used correctly. + QNSPSA.get_fidelity(ansatz) def test_qnspsa_fidelity_primitives(self): """Test the primitives can be used in get_fidelity."""