Coverage for src / lexigram / admin / state / __init__.py: 50%

14 statements  

« prev     ^ index     » next       coverage.py v7.13.5, created at 2026-08-13 22:14 +0800

1"""State management for Lexigram Admin. 

2 

3PEP 562 lazy loading to avoid import-time dependency issues. 

4""" 

5 

6from __future__ import annotations 

7 

8import importlib 

9from typing import TYPE_CHECKING, Any 

10 

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 

17 

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} 

25 

26__all__ = list(_EXPORTS.keys()) 

27 

28 

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}") 

36 

37 

38def __dir__() -> Any: 

39 return __all__