Coverage for src/lexigram/admin/constants.py: 92%
25 statements
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-21 14:26 +0800
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-21 14:26 +0800
1"""Package-level constants for lexigram-admin.
3These are stable, typed constants used across the Admin package.
4Import from here — never hard-code these values elsewhere.
5"""
7from __future__ import annotations
9import importlib.metadata
11# -- Version -------------------------------------------------------------------
13try:
14 __version__: str = importlib.metadata.version("lexigram-admin")
15except ImportError:
16 __version__ = "0.0.0"
19# ---------------------------------------------------------------------------
20# Environment variable prefix
21# ---------------------------------------------------------------------------
23ENV_PREFIX: str = "LEX_ADMIN__"
24ENV_NESTED_DELIMITER: str = "__"
25"""Delimiter for nested env var keys (e.g. LEX_ADMIN__AUTH__SESSION_SECRET)."""
27# ---------------------------------------------------------------------------
28# Default settings
29# ---------------------------------------------------------------------------
31DEFAULT_ADMIN_PATH: str = "/admin"
32DEFAULT_ITEMS_PER_PAGE: int = 25
33DEFAULT_MAX_ITEMS_PER_PAGE: int = 200
34DEFAULT_SEARCH_LIMIT: int = 50
35DEFAULT_SESSION_LIFETIME: int = 86400 # 24 hours in seconds
37# ---------------------------------------------------------------------------
38# Permission constants
39# ---------------------------------------------------------------------------
41PERMISSION_VIEW: str = "view"
42PERMISSION_CREATE: str = "create"
43PERMISSION_EDIT: str = "edit"
44PERMISSION_DELETE: str = "delete"
45PERMISSION_ADMIN: str = "admin"
47# ---------------------------------------------------------------------------
48# Layout constants
49# ---------------------------------------------------------------------------
51LAYOUT_SIDEBAR: str = "sidebar"
52LAYOUT_TOP_NAV: str = "top_nav"
54# ---------------------------------------------------------------------------
55# Theme constants
56# ---------------------------------------------------------------------------
58THEME_LIGHT: str = "light"
59THEME_DARK: str = "dark"
60THEME_SYSTEM: str = "system"
63__all__ = [
64 "DEFAULT_ADMIN_PATH",
65 "DEFAULT_ITEMS_PER_PAGE",
66 "DEFAULT_MAX_ITEMS_PER_PAGE",
67 "DEFAULT_SEARCH_LIMIT",
68 "DEFAULT_SESSION_LIFETIME",
69 "ENV_NESTED_DELIMITER",
70 "ENV_PREFIX",
71 "LAYOUT_SIDEBAR",
72 "LAYOUT_TOP_NAV",
73 "PERMISSION_ADMIN",
74 "PERMISSION_CREATE",
75 "PERMISSION_DELETE",
76 "PERMISSION_EDIT",
77 "PERMISSION_VIEW",
78 "THEME_DARK",
79 "THEME_LIGHT",
80 "THEME_SYSTEM",
81 "__version__",
82]