diff --git a/custom-templates/package_init.py.jinja b/custom-templates/package_init.py.jinja index e532b23..d05c1c0 100644 --- a/custom-templates/package_init.py.jinja +++ b/custom-templates/package_init.py.jinja @@ -1,62 +1,17 @@ {% from "helpers.jinja" import safe_docstring %} +{% set modules = ["exceptions", "extensions", "gates", "ionq_client", "pagination", "polling", "session"] %} {{ safe_docstring(package_description) }} -from .exceptions import ( - APIConnectionError, - APIError, - APITimeoutError, - AuthenticationError, - BadRequestError, - IonQError, - NotFoundError, - PermissionDeniedError, - RateLimitError, - ServerError, -) -from .extensions import AsyncEventHook, ClientExtension, EventHook -from .gates import gpi2_matrix, gpi_matrix, ms_matrix, zz_matrix -from .pagination import aiter_jobs, aiter_session_jobs, iter_jobs, iter_session_jobs -from .polling import ( - JobFailedError, - JobTimeoutError, - async_wait_for_job, - wait_for_job, -) -from .session import SessionManager -from .client import AuthenticatedClient, Client -from .ionq_client import IonQClient, __version__ -from .types import UNSET, Unset +from . import {{ modules | join(", ") }} +from .client import AuthenticatedClient, Client # noqa: F401 +{% for m in modules %} +from .{{ m }} import * # noqa: F403 +{% endfor %} +from .types import UNSET, Unset # noqa: F401 -__all__ = ( - "UNSET", - "APIConnectionError", - "APIError", - "APITimeoutError", - "AsyncEventHook", - "AuthenticatedClient", - "AuthenticationError", - "BadRequestError", - "Client", - "ClientExtension", - "EventHook", - "IonQClient", - "IonQError", - "JobFailedError", - "JobTimeoutError", - "NotFoundError", - "PermissionDeniedError", - "RateLimitError", - "ServerError", - "SessionManager", - "Unset", - "__version__", - "aiter_jobs", - "aiter_session_jobs", - "async_wait_for_job", - "gpi2_matrix", - "gpi_matrix", - "iter_jobs", - "iter_session_jobs", - "ms_matrix", - "wait_for_job", - "zz_matrix", -) +__all__ = sorted({ + {{ modules | map("tojson") | join(", ") }}, + "AuthenticatedClient", "Client", "UNSET", "Unset", +{% for m in modules %} + *{{ m }}.__all__, +{% endfor %} +}) diff --git a/ionq_core/__init__.py b/ionq_core/__init__.py index b05def5..4c9d70e 100644 --- a/ionq_core/__init__.py +++ b/ionq_core/__init__.py @@ -3,63 +3,36 @@ """A client library for accessing IonQ Cloud Platform API""" -from .client import AuthenticatedClient, Client -from .exceptions import ( - APIConnectionError, - APIError, - APITimeoutError, - AuthenticationError, - BadRequestError, - IonQError, - NotFoundError, - PermissionDeniedError, - RateLimitError, - ServerError, -) -from .extensions import AsyncEventHook, ClientExtension, EventHook -from .gates import gpi2_matrix, gpi_matrix, ms_matrix, zz_matrix -from .ionq_client import IonQClient, __version__ -from .pagination import aiter_jobs, aiter_session_jobs, iter_jobs, iter_session_jobs -from .polling import ( - JobFailedError, - JobTimeoutError, - async_wait_for_job, - wait_for_job, -) -from .session import SessionManager -from .types import UNSET, Unset +from . import exceptions, extensions, gates, ionq_client, pagination, polling, session +from .client import AuthenticatedClient, Client # noqa: F401 +from .exceptions import * # noqa: F403 +from .extensions import * # noqa: F403 +from .gates import * # noqa: F403 +from .ionq_client import * # noqa: F403 +from .pagination import * # noqa: F403 +from .polling import * # noqa: F403 +from .session import * # noqa: F403 +from .types import UNSET, Unset # noqa: F401 -__all__ = ( - "UNSET", - "APIConnectionError", - "APIError", - "APITimeoutError", - "AsyncEventHook", - "AuthenticatedClient", - "AuthenticationError", - "BadRequestError", - "Client", - "ClientExtension", - "EventHook", - "IonQClient", - "IonQError", - "JobFailedError", - "JobTimeoutError", - "NotFoundError", - "PermissionDeniedError", - "RateLimitError", - "ServerError", - "SessionManager", - "Unset", - "__version__", - "aiter_jobs", - "aiter_session_jobs", - "async_wait_for_job", - "gpi2_matrix", - "gpi_matrix", - "iter_jobs", - "iter_session_jobs", - "ms_matrix", - "wait_for_job", - "zz_matrix", +__all__ = sorted( + { + "exceptions", + "extensions", + "gates", + "ionq_client", + "pagination", + "polling", + "session", + "AuthenticatedClient", + "Client", + "UNSET", + "Unset", + *exceptions.__all__, + *extensions.__all__, + *gates.__all__, + *ionq_client.__all__, + *pagination.__all__, + *polling.__all__, + *session.__all__, + } ) diff --git a/ionq_core/exceptions.py b/ionq_core/exceptions.py index 5296db8..be4e4dd 100644 --- a/ionq_core/exceptions.py +++ b/ionq_core/exceptions.py @@ -32,6 +32,19 @@ ``` """ +__all__ = [ + "APIConnectionError", + "APIError", + "APITimeoutError", + "AuthenticationError", + "BadRequestError", + "IonQError", + "NotFoundError", + "PermissionDeniedError", + "RateLimitError", + "ServerError", +] + class IonQError(Exception): """Base exception for all IonQ errors. diff --git a/ionq_core/extensions.py b/ionq_core/extensions.py index 65fd24a..d5174cc 100644 --- a/ionq_core/extensions.py +++ b/ionq_core/extensions.py @@ -31,6 +31,8 @@ def on_response(self, request: httpx.Request, response: httpx.Response) -> None: ``` """ +__all__ = ["AsyncEventHook", "ClientExtension", "EventHook"] + import logging from collections.abc import Callable from typing import Protocol, runtime_checkable diff --git a/ionq_core/gates.py b/ionq_core/gates.py index c6a440c..0ee486a 100644 --- a/ionq_core/gates.py +++ b/ionq_core/gates.py @@ -28,6 +28,8 @@ ``` """ +__all__ = ["gpi2_matrix", "gpi_matrix", "ms_matrix", "zz_matrix"] + import cmath import math diff --git a/ionq_core/ionq_client.py b/ionq_core/ionq_client.py index c80036c..4660c87 100644 --- a/ionq_core/ionq_client.py +++ b/ionq_core/ionq_client.py @@ -9,6 +9,8 @@ async httpx transports. """ +__all__ = ["IonQClient", "__version__"] + import os import platform import warnings diff --git a/ionq_core/pagination.py b/ionq_core/pagination.py index 1c9f5fa..bc5fc7b 100644 --- a/ionq_core/pagination.py +++ b/ionq_core/pagination.py @@ -19,6 +19,8 @@ from __future__ import annotations +__all__ = ["aiter_jobs", "aiter_session_jobs", "iter_jobs", "iter_session_jobs"] + import logging from collections.abc import AsyncIterator, Callable, Iterator from typing import TYPE_CHECKING, Any diff --git a/ionq_core/polling.py b/ionq_core/polling.py index bdf8959..c82a15e 100644 --- a/ionq_core/polling.py +++ b/ionq_core/polling.py @@ -22,6 +22,8 @@ from __future__ import annotations +__all__ = ["JobFailedError", "JobTimeoutError", "async_wait_for_job", "wait_for_job"] + import asyncio import logging import time diff --git a/ionq_core/session.py b/ionq_core/session.py index d2df148..e24ced7 100644 --- a/ionq_core/session.py +++ b/ionq_core/session.py @@ -27,6 +27,8 @@ from __future__ import annotations +__all__ = ["SessionManager"] + import logging from typing import TYPE_CHECKING