"""python_repositories: Unified repository interfaces and adapters.""" from __future__ import annotations from typing import TYPE_CHECKING # Interfaces are always available; they have no optional backend dependencies. from . import adapters from .config import MinioConfig, RedisConfig, load_dotenv from .interfaces import ( ConnectionAwareInterface, ContextAwareInterface, JsonRepositoryInterface, ObjectRepositoryInterface, ) # Adapters are imported only for static type checkers; runtime loading is delegated below. if TYPE_CHECKING: from .adapters.minio_adapter import MinioAdapter as MinioAdapter from .adapters.redis_adapter import RedisAdapter as RedisAdapter __all__ = [ "ConnectionAwareInterface", "ContextAwareInterface", "JsonRepositoryInterface", "MinioConfig", "ObjectRepositoryInterface", "RedisConfig", "load_dotenv", *adapters.__all__, ] def __getattr__(name: str) -> object: """Delegate adapter lookups to adapters; lazy loading is defined there.""" if name in adapters.__all__: return getattr(adapters, name) raise AttributeError(f"module {__name__!r} has no attribute {name!r}") def __dir__() -> list[str]: """Expose lazy adapter names in tab completion and dir().""" return sorted(__all__)