Coverage for src/lexigram/admin/core/__init__.py: 0%

14 statements  

« prev     ^ index     » next       coverage.py v7.15.4, created at 2026-08-24 23:18 +0800

1"""Core module for lexigram-admin. 

2 

3Provides foundational utilities: caching, resilience, middleware, 

4decorators, and distributed locking. 

5""" 

6 

7from __future__ import annotations 

8 

9from typing import TYPE_CHECKING, Any 

10 

11# PEP 562 lazy loading 

12_LAZY_IMPORTS = { 

13 # Cache 

14 "AdminCacheService": "lexigram.admin.core.cache", 

15 "CachedPermissionService": "lexigram.admin.core.cache", 

16 # Decorators 

17 "singleton": "lexigram.admin.core.decorators", 

18 "scoped": "lexigram.admin.core.decorators", 

19 "transient": "lexigram.admin.core.decorators", 

20 # Distributed Lock 

21 "LockError": "lexigram.admin.core.distributed_lock", 

22 "LockAcquisitionError": "lexigram.admin.core.distributed_lock", 

23 "LockTimeoutError": "lexigram.admin.core.distributed_lock", 

24 "LockConfig": "lexigram.admin.core.distributed_lock", 

25 "AdminLockManager": "lexigram.admin.core.distributed_lock", 

26 "ResourceLock": "lexigram.admin.core.distributed_lock", 

27 "BulkOperationLock": "lexigram.admin.core.distributed_lock", 

28 "distributed_lock": "lexigram.admin.core.distributed_lock", 

29 # Middleware 

30 "AdminErrorHandler": "lexigram.admin.core.middleware", 

31 "AdminEntity": "lexigram.admin.core.middleware", 

32 "SoftDeleteEntity": "lexigram.admin.core.middleware", 

33 "AuditedEntity": "lexigram.admin.core.middleware", 

34 "AdminRenderer": "lexigram.admin.core.rendering", 

35 "AdminRouter": "lexigram.admin.core.routing", 

36 "CircuitBreakerConfig": "lexigram.contracts.infra.resilience.models", 

37 "RetryConfig": "lexigram.contracts.infra.resilience.models", 

38 "TimeoutConfig": "lexigram.contracts.infra.resilience.models", 

39 "transaction": "lexigram.admin.core.resilience_config", 

40 "AuditRepositoryMixin": "lexigram.admin.core.resilience_config", 

41} 

42 

43if TYPE_CHECKING: 

44 from lexigram.admin.core.cache import ( 

45 AdminCacheService, 

46 CachedPermissionService, 

47 ) 

48 from lexigram.admin.core.decorators import scoped, singleton, transient 

49 from lexigram.admin.core.distributed_lock import ( 

50 AdminLockManager, 

51 BulkOperationLock, 

52 LockAcquisitionError, 

53 LockConfig, 

54 LockError, 

55 LockTimeoutError, 

56 ResourceLock, 

57 distributed_lock, 

58 ) 

59 from lexigram.admin.core.middleware import ( 

60 AdminEntity, 

61 AdminErrorHandler, 

62 AuditedEntity, 

63 SoftDeleteEntity, 

64 ) 

65 from lexigram.admin.core.registry import AdminRegistry 

66 from lexigram.admin.core.rendering import AdminRenderer 

67 from lexigram.admin.core.resilience_config import ( 

68 AuditRepositoryMixin, 

69 transaction, 

70 ) 

71 from lexigram.admin.core.routing import AdminRouter 

72 from lexigram.contracts.infra.resilience.models import ( 

73 CircuitBreakerConfig, 

74 RetryConfig, 

75 TimeoutConfig, 

76 ) 

77 

78 

79def __getattr__(name: str) -> Any: 

80 if name in _LAZY_IMPORTS: 

81 import importlib 

82 

83 module = importlib.import_module(_LAZY_IMPORTS[name], __package__) 

84 value = getattr(module, name) 

85 globals()[name] = value 

86 return value 

87 raise AttributeError(f"module {__name__!r} has no attribute {name!r}") 

88 

89 

90def __dir__() -> list[str]: 

91 return list(_LAZY_IMPORTS.keys()) 

92 

93 

94__all__ = [ 

95 "AdminCacheService", 

96 "AdminEntity", 

97 "AdminErrorHandler", 

98 "AdminLockManager", 

99 "AdminRegistry", 

100 "AdminRenderer", 

101 "AdminRouter", 

102 "AuditRepositoryMixin", 

103 "AuditedEntity", 

104 "BulkOperationLock", 

105 "CachedPermissionService", 

106 "CircuitBreakerConfig", 

107 "LockAcquisitionError", 

108 "LockConfig", 

109 "LockError", 

110 "LockTimeoutError", 

111 "ResourceLock", 

112 "RetryConfig", 

113 "SoftDeleteEntity", 

114 "TimeoutConfig", 

115 "distributed_lock", 

116 "scoped", 

117 "singleton", 

118 "transaction", 

119 "transient", 

120]