Coverage for src/lexigram/admin/core/__init__.py: 43%
14 statements
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-21 14:56 +0800
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-21 14:56 +0800
1"""Core module for lexigram-admin.
3Provides foundational utilities: caching, resilience, middleware,
4decorators, and distributed locking.
5"""
7from __future__ import annotations
9from typing import TYPE_CHECKING, Any
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}
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 )
79def __getattr__(name: str) -> Any:
80 if name in _LAZY_IMPORTS:
81 import importlib
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}")
90def __dir__() -> list[str]:
91 return list(_LAZY_IMPORTS.keys())
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]