diff --git a/pyproject.toml b/pyproject.toml index 804af395..6caa94c3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -144,6 +144,8 @@ report.exclude_also = [ 'if TYPE_CHECKING:', 'raise AssertionError', 'raise NotImplementedError', + 'def __dir__()', # Ignore __dir__ method that exists mainly for better IDE support + '@overload' # Overloads are only for static typing ] diff --git a/src/mqt/qcec/_compat/optional.py b/src/mqt/qcec/_compat/optional.py index e6000484..6e381d14 100644 --- a/src/mqt/qcec/_compat/optional.py +++ b/src/mqt/qcec/_compat/optional.py @@ -11,6 +11,12 @@ import typing import warnings +__all__ = ["HAS_QISKIT", "OptionalDependencyTester"] + + +def __dir__() -> list[str]: + return __all__ + class OptionalDependencyTester: """A manager for optional dependencies to assert their availability. diff --git a/src/mqt/qcec/compilation_flow_profiles.py b/src/mqt/qcec/compilation_flow_profiles.py index a2ae1d2b..f85b2033 100644 --- a/src/mqt/qcec/compilation_flow_profiles.py +++ b/src/mqt/qcec/compilation_flow_profiles.py @@ -14,6 +14,16 @@ from numpy.typing import NDArray from qiskit.circuit import QuantumCircuit +__all__ = [ + "AncillaMode", + "generate_profile", + "generate_profile_name", +] + + +def __dir__() -> list[str]: + return __all__ + @unique class AncillaMode(Enum): diff --git a/src/mqt/qcec/configuration.py b/src/mqt/qcec/configuration.py index 54884455..0f051265 100644 --- a/src/mqt/qcec/configuration.py +++ b/src/mqt/qcec/configuration.py @@ -8,6 +8,12 @@ from . import ApplicationScheme, Configuration, StateType from .literals import ApplicationSchemeName, StateTypeName +__all__ = ["ConfigurationOptions", "augment_config_from_kwargs"] + + +def __dir__() -> list[str]: + return __all__ + class ConfigurationOptions(TypedDict, total=False): """A dictionary of configuration options. diff --git a/src/mqt/qcec/literals.py b/src/mqt/qcec/literals.py index 551b0253..0c38cb79 100644 --- a/src/mqt/qcec/literals.py +++ b/src/mqt/qcec/literals.py @@ -4,6 +4,17 @@ from typing import Literal +__all__ = [ + "ApplicationSchemeName", + "EquivalenceCriterionName", + "StateTypeName", +] + + +def __dir__() -> list[str]: + return __all__ + + ApplicationSchemeName = Literal["sequential", "one_to_one", "proportional", "lookahead", "gate_cost"] EquivalenceCriterionName = Literal[ "no_information", diff --git a/src/mqt/qcec/parameterized.py b/src/mqt/qcec/parameterized.py index 2d1a5860..9d2d8502 100644 --- a/src/mqt/qcec/parameterized.py +++ b/src/mqt/qcec/parameterized.py @@ -19,6 +19,17 @@ from mqt.core.ir.operations import SymbolicOperation from mqt.core.ir.symbolic import Variable +__all__ = [ + "check_instantiated", + "check_instantiated_random", + "check_parameterized", + "check_parameterized_zx", +] + + +def __dir__() -> list[str]: + return __all__ + def __adjust_timeout(curr_timeout: float, res: EquivalenceCheckingManager.Results | float) -> float: if curr_timeout == 0: @@ -42,7 +53,7 @@ def check_parameterized_zx( return ecm.get_results() -def extract_params( +def __extract_params( circ1: QuantumComputation, circ2: QuantumComputation ) -> tuple[list[Variable], NDArray[np.float64], NDArray[np.float64]]: """Extract parameters and equations of parameterized circuits.""" @@ -136,7 +147,7 @@ def __write_stats(instantiation: int, result: EquivalenceCheckingManager.Results n_checks = configuration.parameterized.additional_instantiations tol = configuration.parameterized.parameterized_tolerance - parameters, mat, offsets = extract_params(circ1, circ2) + parameters, mat, offsets = __extract_params(circ1, circ2) def __instantiate_params( qc1: QuantumComputation, qc2: QuantumComputation, b: NDArray[np.float64] diff --git a/src/mqt/qcec/verify.py b/src/mqt/qcec/verify.py index bef7b306..6019976e 100644 --- a/src/mqt/qcec/verify.py +++ b/src/mqt/qcec/verify.py @@ -4,6 +4,12 @@ from typing import TYPE_CHECKING +from mqt.core import load + +from . import Configuration, EquivalenceCheckingManager +from .configuration import augment_config_from_kwargs +from .parameterized import check_parameterized + if TYPE_CHECKING: import os @@ -14,11 +20,11 @@ from ._compat.typing import Unpack from .configuration import ConfigurationOptions -from mqt.core import load +__all__ = ["verify"] -from . import Configuration, EquivalenceCheckingManager -from .configuration import augment_config_from_kwargs -from .parameterized import check_parameterized + +def __dir__() -> list[str]: + return __all__ def verify( diff --git a/src/mqt/qcec/verify_compilation_flow.py b/src/mqt/qcec/verify_compilation_flow.py index b3f21d0a..282b8d62 100644 --- a/src/mqt/qcec/verify_compilation_flow.py +++ b/src/mqt/qcec/verify_compilation_flow.py @@ -5,6 +5,14 @@ import warnings from typing import TYPE_CHECKING +from mqt.core import load + +from . import ApplicationScheme, Configuration, EquivalenceCheckingManager +from ._compat.importlib import resources +from .compilation_flow_profiles import AncillaMode, generate_profile_name +from .configuration import augment_config_from_kwargs +from .verify import verify + if TYPE_CHECKING: import os @@ -15,13 +23,11 @@ from ._compat.typing import Unpack from .configuration import ConfigurationOptions -from mqt.core import load +__all__ = ["verify_compilation"] -from . import ApplicationScheme, Configuration, EquivalenceCheckingManager -from ._compat.importlib import resources -from .compilation_flow_profiles import AncillaMode, generate_profile_name -from .configuration import augment_config_from_kwargs -from .verify import verify + +def __dir__() -> list[str]: + return __all__ def __check_if_circuit_contains_measurements(circuit: QuantumComputation) -> None: