KChad's picture
initial base program that we will work on
0f6657d
"""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__))