Coverage for src/lexigram/web/constants.py: 91%
22 statements
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-25 04:37 +0800
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-25 04:37 +0800
1"""Constants for lexigram-web."""
3from __future__ import annotations
5import importlib.metadata
7# -- Version -------------------------------------------------------------------
9try:
10 __version__: str = importlib.metadata.version("lexigram-web")
11except ImportError:
12 __version__ = "0.0.0"
14# -- Environment Variable Prefixes -------------------------------------------
16ENV_PREFIX: str = "LEX_WEB__"
17ENV_NESTED_DELIMITER: str = "__"
19# -- Default Server Configuration --------------------------------------------
21DEFAULT_HOST: str = "0.0.0.0" # noqa: S104 — config default; runner binds 127.0.0.1
22DEFAULT_PORT: int = 8000
23DEFAULT_WORKERS: int = 1
24DEFAULT_RELOAD: bool = False
26# -- Route Paths -------------------------------------------------------------
28DEFAULT_HEALTH_PATH: str = "/health"
29DEFAULT_DOCS_PATH: str = "/docs"
30DEFAULT_OPENAPI_PATH: str = "/openapi.json"
31DEFAULT_DEBUG_ROUTES_PATH: str = "/_debug/routes"
33# -- Security Defaults -------------------------------------------------------
35DEFAULT_CORS_ALLOW_ORIGINS: tuple[str, ...] = ("*",)
36DEFAULT_RATE_LIMIT_REQUESTS: int = 100
37DEFAULT_RATE_LIMIT_WINDOW: int = 60
39# -- Pagination Defaults -----------------------------------------------------
41DEFAULT_PAGE_SIZE: int = 20
42DEFAULT_MAX_PAGE_SIZE: int = 100
44__all__ = [
45 "DEFAULT_CORS_ALLOW_ORIGINS",
46 "DEFAULT_DEBUG_ROUTES_PATH",
47 "DEFAULT_DOCS_PATH",
48 "DEFAULT_HEALTH_PATH",
49 "DEFAULT_HOST",
50 "DEFAULT_MAX_PAGE_SIZE",
51 "DEFAULT_OPENAPI_PATH",
52 "DEFAULT_PAGE_SIZE",
53 "DEFAULT_PORT",
54 "DEFAULT_RATE_LIMIT_REQUESTS",
55 "DEFAULT_RATE_LIMIT_WINDOW",
56 "DEFAULT_RELOAD",
57 "DEFAULT_WORKERS",
58 "ENV_NESTED_DELIMITER",
59 "ENV_PREFIX",
60]