mirror of
https://github.com/HKUDS/nanobot.git
synced 2026-06-13 22:34:06 +00:00
49 lines
1.3 KiB
Python
49 lines
1.3 KiB
Python
"""
|
|
nanobot - A lightweight AI agent framework
|
|
"""
|
|
|
|
import tomllib
|
|
from importlib.metadata import PackageNotFoundError
|
|
from importlib.metadata import version as _pkg_version
|
|
from pathlib import Path
|
|
|
|
|
|
def _read_pyproject_version() -> str | None:
|
|
"""Read the source-tree version when package metadata is unavailable."""
|
|
pyproject = Path(__file__).resolve().parent.parent / "pyproject.toml"
|
|
if not pyproject.exists():
|
|
return None
|
|
data = tomllib.loads(pyproject.read_text(encoding="utf-8"))
|
|
return data.get("project", {}).get("version")
|
|
|
|
|
|
def _resolve_version() -> str:
|
|
try:
|
|
return _pkg_version("nanobot-ai")
|
|
except PackageNotFoundError:
|
|
# Source checkouts often import nanobot without installed dist-info.
|
|
return _read_pyproject_version() or "0.2.1"
|
|
|
|
|
|
__version__ = _resolve_version()
|
|
__logo__ = "🐈"
|
|
|
|
_LAZY_EXPORTS = {
|
|
"Nanobot": ".nanobot",
|
|
"RunResult": ".nanobot",
|
|
}
|
|
|
|
|
|
def __getattr__(name: str):
|
|
module_path = _LAZY_EXPORTS.get(name)
|
|
if module_path is None:
|
|
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|
|
from importlib import import_module
|
|
mod = import_module(module_path, __name__)
|
|
val = getattr(mod, name)
|
|
globals()[name] = val
|
|
return val
|
|
|
|
|
|
__all__ = ["Nanobot", "RunResult"]
|