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

1"""Package-level constants for lexigram-admin. 

2 

3These are stable, typed constants used across the Admin package. 

4Import from here — never hard-code these values elsewhere. 

5""" 

6 

7from __future__ import annotations 

8 

9import importlib.metadata 

10 

11# -- Version ------------------------------------------------------------------- 

12 

13try: 

14 __version__: str = importlib.metadata.version("lexigram-admin") 

15except ImportError: 

16 __version__ = "0.0.0" 

17 

18 

19# --------------------------------------------------------------------------- 

20# Environment variable prefix 

21# --------------------------------------------------------------------------- 

22 

23ENV_PREFIX: str = "LEX_ADMIN__" 

24ENV_NESTED_DELIMITER: str = "__" 

25"""Delimiter for nested env var keys (e.g. LEX_ADMIN__AUTH__SESSION_SECRET).""" 

26 

27# --------------------------------------------------------------------------- 

28# Default settings 

29# --------------------------------------------------------------------------- 

30 

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 

36 

37# --------------------------------------------------------------------------- 

38# Permission constants 

39# --------------------------------------------------------------------------- 

40 

41PERMISSION_VIEW: str = "view" 

42PERMISSION_CREATE: str = "create" 

43PERMISSION_EDIT: str = "edit" 

44PERMISSION_DELETE: str = "delete" 

45PERMISSION_ADMIN: str = "admin" 

46 

47# --------------------------------------------------------------------------- 

48# Layout constants 

49# --------------------------------------------------------------------------- 

50 

51LAYOUT_SIDEBAR: str = "sidebar" 

52LAYOUT_TOP_NAV: str = "top_nav" 

53 

54# --------------------------------------------------------------------------- 

55# Theme constants 

56# --------------------------------------------------------------------------- 

57 

58THEME_LIGHT: str = "light" 

59THEME_DARK: str = "dark" 

60THEME_SYSTEM: str = "system" 

61 

62 

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]