Add private primitive attributes removed by qiskit (#2048)

* Add private primitive attributes removed by qiskit

* wrong url

* call private submit method

* Make submission compatible with qiskit <=0.45

* Skip Operator test is qiskit >=1.0

* grr lint
This commit is contained in:
Ian Hincks 2024-02-02 13:15:55 -05:00 committed by GitHub
parent 9a69eb4411
commit 9f45068975
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 19 additions and 2 deletions

View File

@ -97,6 +97,11 @@ class Estimator(BaseEstimator):
If approximation is True, this parameter is ignored and assumed to be False. If approximation is True, this parameter is ignored and assumed to be False.
""" """
super().__init__(options=run_options) super().__init__(options=run_options)
# These three private attributes used to be created by super, but were deprecated in Qiskit
# 0.46. See https://github.com/Qiskit/qiskit/pull/11051
self._circuits = []
self._parameters = []
self._observables = []
backend_options = {} if backend_options is None else backend_options backend_options = {} if backend_options is None else backend_options
method = ( method = (
@ -204,7 +209,8 @@ class Estimator(BaseEstimator):
parameter_values, parameter_values,
**run_options, **run_options,
) )
job.submit() # The public submit method was removed in Qiskit 0.46
(job.submit if hasattr(job, "submit") else job._submit)() # pylint: disable=no-member
return job return job
def _compute(self, circuits, observables, parameter_values, run_options): def _compute(self, circuits, observables, parameter_values, run_options):

View File

@ -67,6 +67,11 @@ class Sampler(BaseSampler):
skip_transpilation: if True, transpilation is skipped. skip_transpilation: if True, transpilation is skipped.
""" """
super().__init__(options=run_options) super().__init__(options=run_options)
# These two private attributes used to be created by super, but were deprecated in Qiskit
# 0.46. See https://github.com/Qiskit/qiskit/pull/11051
self._circuits = []
self._parameters = []
self._backend = AerSimulator() self._backend = AerSimulator()
backend_options = {} if backend_options is None else backend_options backend_options = {} if backend_options is None else backend_options
self._backend.set_options(**backend_options) self._backend.set_options(**backend_options)
@ -157,7 +162,8 @@ class Sampler(BaseSampler):
self._circuits.append(circuit) self._circuits.append(circuit)
self._parameters.append(circuit.parameters) self._parameters.append(circuit.parameters)
job = PrimitiveJob(self._call, circuit_indices, parameter_values, **run_options) job = PrimitiveJob(self._call, circuit_indices, parameter_values, **run_options)
job.submit() # The public submit method was removed in Qiskit 0.46
(job.submit if hasattr(job, "submit") else job._submit)() # pylint: disable=no-member
return job return job
@staticmethod @staticmethod

View File

@ -20,6 +20,7 @@ from test.terra.common import QiskitAerTestCase
import numpy as np import numpy as np
from ddt import data, ddt from ddt import data, ddt
import qiskit
from qiskit.circuit import Parameter, QuantumCircuit from qiskit.circuit import Parameter, QuantumCircuit
from qiskit.circuit.library import RealAmplitudes from qiskit.circuit.library import RealAmplitudes
from qiskit.exceptions import QiskitError from qiskit.exceptions import QiskitError
@ -84,6 +85,10 @@ class TestEstimator(QiskitAerTestCase):
np.testing.assert_allclose(result.values, [-0.4], rtol=0.02) np.testing.assert_allclose(result.values, [-0.4], rtol=0.02)
@data(True, False) @data(True, False)
@unittest.skipUnless(
qiskit.__version__.startswith("0."),
reason="Operator support in primitives was removed following Qiskit 0.46",
)
def test_init_observable_from_operator(self, abelian_grouping): def test_init_observable_from_operator(self, abelian_grouping):
"""test for evaluate without parameters""" """test for evaluate without parameters"""
circuit = self.ansatz.assign_parameters([0, 1, 1, 2, 3, 5]) circuit = self.ansatz.assign_parameters([0, 1, 1, 2, 3, 5])