Coverage for src/lexigram/admin/state/__init__.py: 14%
14 statements
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-24 23:31 +0800
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-24 23:31 +0800
1"""State management for Lexigram Admin.
3PEP 562 lazy loading to avoid import-time dependency issues.
4"""
6from __future__ import annotations
8import importlib
9from typing import TYPE_CHECKING, Any
11if TYPE_CHECKING:
12 from lexigram.admin.state.context import AdminContext
13 from lexigram.admin.state.persistence import StatePersistenceManager
14 from lexigram.admin.state.store import GlobalStore
15 from lexigram.admin.state.url import URLState
16 from lexigram.admin.state.url_sync import URLStateManager
18_EXPORTS = {
19 "AdminContext": "lexigram.admin.state.context",
20 "URLState": "lexigram.admin.state.url",
21 "URLStateManager": "lexigram.admin.state.url_sync",
22 "GlobalStore": "lexigram.admin.state.store",
23 "StatePersistenceManager": "lexigram.admin.state.persistence",
24}
26__all__ = list(_EXPORTS.keys())
29def __getattr__(name: str) -> Any:
30 if name in _EXPORTS:
31 module = importlib.import_module(_EXPORTS[name], __package__)
32 value = getattr(module, name)
33 globals()[name] = value
34 return value
35 raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
38def __dir__() -> Any:
39 return __all__