"""Unified OpenEnv package bundling the CLI and core runtime.""" from __future__ import annotations from importlib import import_module, metadata __all__ = [ "core", "cli", "AutoEnv", "AutoAction", "GenericEnvClient", "GenericAction", "SyncEnvClient", ] def _load_package_version() -> str: """Resolve the installed distribution version for the OpenEnv package.""" for distribution_name in ("openenv-core", "openenv"): try: return metadata.version(distribution_name) except metadata.PackageNotFoundError: continue return "0.0.0" __version__ = _load_package_version() _LAZY_MODULES = { "core": ".core", "cli": ".cli", } _LAZY_ATTRS = { "AutoEnv": (".auto", "AutoEnv"), "AutoAction": (".auto", "AutoAction"), "GenericEnvClient": (".core", "GenericEnvClient"), "GenericAction": (".core", "GenericAction"), "SyncEnvClient": (".core", "SyncEnvClient"), } def __getattr__(name: str): if name in _LAZY_MODULES: module = import_module(_LAZY_MODULES[name], __name__) globals()[name] = module return module if name in _LAZY_ATTRS: module_path, attr_name = _LAZY_ATTRS[name] module = import_module(module_path, __name__) value = getattr(module, attr_name) globals()[name] = value return value raise AttributeError(f"module {__name__!r} has no attribute {name!r}") def __dir__() -> list[str]: return sorted(set(globals().keys()) | set(__all__))