Skip to content

Commit

Permalink
Add support for v2 provider interface (qiskit-community/qiskit-aqua#1270
Browse files Browse the repository at this point in the history
)

* Add support for v2 provider interface

In Qiskit#5086 the v2 provider interface is being added.
This starter interface is basically a drop in replacement for the v1
interface with 3 changes it's explicitly versioned at the object level,
Backend.run() can take in a circuit object, and Job objects can also be
async or sync. Eventually the interace will likely evolve towards a
model similar to what was initially done in Qiskit#4885.
This commit adds initial support for v2 provider backend objects, the
explicit type checking for BaseBackend objects is blocking the terra PR
from moving forward (because it switched BasicAer to use the v2
interface). This initial support just means accepting v2 Backend objects
in addition to v1 BaseBackend objects.

Depends on Qiskit#5086

* Fix import path

* fix style

Co-authored-by: Manoel Marques <manoel.marques@ibm.com>
  • Loading branch information
mtreinish and manoelmarques authored Oct 6, 2020
1 parent c1f3911 commit 5c5ab25
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 7 deletions.
14 changes: 8 additions & 6 deletions qiskit/aqua/operators/converters/circuit_sampler.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
from time import time

from qiskit.providers import BaseBackend
from qiskit.providers import Backend
from qiskit.circuit import QuantumCircuit, Parameter, ParameterExpression
from qiskit import QiskitError
from qiskit.aqua import QuantumInstance
Expand Down Expand Up @@ -48,7 +49,7 @@ class CircuitSampler(ConverterBase):
"""

def __init__(self,
backend: Union[BaseBackend, QuantumInstance] = None,
backend: Union[Backend, BaseBackend, QuantumInstance] = None,
statevector: Optional[bool] = None,
param_qobj: bool = False,
attach_results: bool = False) -> None:
Expand Down Expand Up @@ -101,7 +102,7 @@ def _check_quantum_instance_and_modes_consistent(self) -> None:
'backend, not {}.'.format(self.quantum_instance.backend))

@property
def backend(self) -> BaseBackend:
def backend(self) -> Union[Backend, BaseBackend]:
""" Returns the backend.
Returns:
Expand All @@ -110,11 +111,11 @@ def backend(self) -> BaseBackend:
return self.quantum_instance.backend

@backend.setter
def backend(self, backend: BaseBackend):
def backend(self, backend: Union[Backend, BaseBackend]):
""" Sets backend without additional configuration. """
self.set_backend(backend)

def set_backend(self, backend: BaseBackend, **kwargs) -> None:
def set_backend(self, backend: Union[Backend, BaseBackend], **kwargs) -> None:
""" Sets backend with configuration.
Raises:
Expand All @@ -133,13 +134,14 @@ def quantum_instance(self) -> QuantumInstance:
return self._quantum_instance

@quantum_instance.setter
def quantum_instance(self, quantum_instance: Union[QuantumInstance, BaseBackend]) -> None:
def quantum_instance(self, quantum_instance: Union[QuantumInstance,
Backend, BaseBackend]) -> None:
""" Sets the QuantumInstance.
Raises:
ValueError: statevector or param_qobj are True when not supported by backend.
"""
if isinstance(quantum_instance, BaseBackend):
if isinstance(quantum_instance, (Backend, BaseBackend)):
quantum_instance = QuantumInstance(quantum_instance)
self._quantum_instance = quantum_instance
self._check_quantum_instance_and_modes_consistent()
Expand Down
3 changes: 2 additions & 1 deletion qiskit/aqua/operators/expectations/expectation_factory.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@

from qiskit import BasicAer
from qiskit.providers import BaseBackend
from qiskit.providers import Backend
from qiskit.aqua.utils.backend_utils import (is_statevector_backend,
is_aer_qasm,
has_aer)
Expand All @@ -38,7 +39,7 @@ class ExpectationFactory:

@staticmethod
def build(operator: OperatorBase,
backend: Optional[Union[BaseBackend, QuantumInstance]] = None,
backend: Optional[Union[Backend, BaseBackend, QuantumInstance]] = None,
include_custom: bool = True) -> ExpectationBase:
"""
A factory method for convenient automatic selection of an Expectation based on the
Expand Down

0 comments on commit 5c5ab25

Please sign in to comment.