Coverage for src / lexigram / admin / actions / __init__.py: 50%
14 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-08-13 22:14 +0800
« prev ^ index » next coverage.py v7.13.5, created at 2026-08-13 22:14 +0800
1"""Action managers 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.actions.audited import AuditedAction
13 from lexigram.admin.actions.bulk_manager import (
14 BulkActionManager,
15 BulkActionProgress,
16 BulkActionResult,
17 BulkActionSnapshot,
18 BulkAssignConfig,
19 BulkEditField,
20 IBulkDataSource,
21 )
22 from lexigram.admin.actions.header_manager import (
23 ColumnVisibilityConfig,
24 DensityConfig,
25 HeaderAction,
26 HeaderActionManager,
27 HeaderActionStyle,
28 IHeaderDataSource,
29 TableDensity,
30 )
31 from lexigram.admin.actions.polymorphic import PolymorphicBulkAction
32 from lexigram.admin.actions.row_manager import (
33 ActionGroup,
34 ActionPosition,
35 ActionStyle,
36 IRowDataSource,
37 RowAction,
38 RowActionManager,
39 )
41_EXPORTS = {
42 # audited
43 "AuditedAction": "lexigram.admin.actions.audited",
44 # polymorphic
45 "PolymorphicBulkAction": "lexigram.admin.actions.polymorphic",
46 # bulk_manager
47 "IBulkDataSource": "lexigram.admin.actions.bulk_manager",
48 "BulkEditField": "lexigram.admin.actions.bulk_manager",
49 "BulkAssignConfig": "lexigram.admin.actions.bulk_manager",
50 "BulkActionResult": "lexigram.admin.actions.bulk_manager",
51 "BulkActionSnapshot": "lexigram.admin.actions.bulk_manager",
52 "BulkActionProgress": "lexigram.admin.actions.bulk_manager",
53 "BulkActionManager": "lexigram.admin.actions.bulk_manager",
54 # header_manager
55 "HeaderActionStyle": "lexigram.admin.actions.header_manager",
56 "TableDensity": "lexigram.admin.actions.header_manager",
57 "HeaderAction": "lexigram.admin.actions.header_manager",
58 "ColumnVisibilityConfig": "lexigram.admin.actions.header_manager",
59 "DensityConfig": "lexigram.admin.actions.header_manager",
60 "IHeaderDataSource": "lexigram.admin.actions.header_manager",
61 "HeaderActionManager": "lexigram.admin.actions.header_manager",
62 # row_manager
63 "ActionStyle": "lexigram.admin.actions.row_manager",
64 "ActionPosition": "lexigram.admin.actions.row_manager",
65 "RowAction": "lexigram.admin.actions.row_manager",
66 "ActionGroup": "lexigram.admin.actions.row_manager",
67 "IRowDataSource": "lexigram.admin.actions.row_manager",
68 "RowActionManager": "lexigram.admin.actions.row_manager",
69}
71__all__ = list(_EXPORTS.keys())
74def __getattr__(name: str) -> Any:
75 if name in _EXPORTS:
76 module = importlib.import_module(_EXPORTS[name], __package__)
77 value = getattr(module, name)
78 globals()[name] = value
79 return value
80 raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
83def __dir__() -> Any:
84 return __all__