2025-03-08 20:26:00 +08:00
|
|
|
from dotenv import load_dotenv
|
|
|
|
|
|
2025-10-10 18:07:06 +08:00
|
|
|
load_dotenv(".env", override=True)
|
2025-03-16 01:11:13 +08:00
|
|
|
|
2025-05-24 11:29:45 +08:00
|
|
|
from concurrent.futures import ThreadPoolExecutor # noqa: E402
|
2026-04-03 13:09:12 +08:00
|
|
|
from importlib import import_module # noqa: E402
|
2025-09-20 22:53:37 +08:00
|
|
|
|
2026-03-17 10:16:44 +08:00
|
|
|
from yuxi.config import config as config # noqa: E402
|
2026-01-21 15:15:52 +08:00
|
|
|
|
2026-04-24 19:32:16 +08:00
|
|
|
try:
|
|
|
|
|
from importlib.metadata import version
|
|
|
|
|
|
|
|
|
|
__version__ = version("yuxi")
|
|
|
|
|
except Exception:
|
|
|
|
|
__version__ = "unknown"
|
2026-03-02 20:25:18 +08:00
|
|
|
|
2025-09-18 23:18:58 +08:00
|
|
|
executor = ThreadPoolExecutor() # noqa: E402
|
2026-03-02 20:25:18 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_version():
|
2026-03-17 18:56:42 +08:00
|
|
|
"""Return the Yuxi version."""
|
2026-03-02 20:25:18 +08:00
|
|
|
return __version__
|
2026-04-03 13:09:12 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def __getattr__(name: str):
|
2026-05-17 13:06:25 +08:00
|
|
|
if name == "knowledge_base":
|
2026-04-03 13:09:12 +08:00
|
|
|
knowledge = import_module("yuxi.knowledge")
|
|
|
|
|
return getattr(knowledge, name)
|
|
|
|
|
raise AttributeError(f"module 'yuxi' has no attribute {name!r}")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def __dir__():
|
2026-05-17 13:06:25 +08:00
|
|
|
return sorted(set(globals()) | {"knowledge_base"})
|