|
13 | 13 | """Types used by the qiskit-algorithms package.""" |
14 | 14 | from __future__ import annotations |
15 | 15 |
|
16 | | -from typing import Any, Protocol, Union |
| 16 | +from typing import Any, Protocol, TypeAlias, TypeVar, overload |
17 | 17 |
|
18 | 18 | from qiskit import QuantumCircuit |
19 | 19 |
|
20 | | -_Circuits = Union[list[QuantumCircuit], QuantumCircuit] |
| 20 | +_T = TypeVar("_T") # Pylint does not allow single character class names. |
| 21 | +ListOrDict = list[_T | None] | dict[str, _T] |
| 22 | + |
| 23 | +_Circuits: TypeAlias = list[QuantumCircuit] | QuantumCircuit |
21 | 24 |
|
22 | 25 |
|
23 | 26 | class Transpiler(Protocol): |
24 | 27 | """A Generic type to represent a transpiler.""" |
25 | 28 |
|
26 | | - def run(self, circuits: _Circuits, **options: Any) -> _Circuits: |
| 29 | + @overload |
| 30 | + def run(self, circuits: list[QuantumCircuit], /, **options: Any) -> list[QuantumCircuit]: |
| 31 | + """Transpile a list of quantum circuits.""" |
| 32 | + ... |
| 33 | + |
| 34 | + @overload |
| 35 | + def run(self, circuits: QuantumCircuit, /, **options: Any) -> QuantumCircuit: |
| 36 | + """Transpile a single quantum circuit.""" |
| 37 | + ... |
| 38 | + |
| 39 | + def run(self, circuits: _Circuits, /, **options: Any) -> _Circuits: |
27 | 40 | """Transpile a circuit or a list of quantum circuits.""" |
28 | 41 | pass |
0 commit comments