Coverage for src/lexigram/graphql/constants.py: 90%
20 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-graphql."""
3from __future__ import annotations
5import importlib.metadata
7# -- Version -------------------------------------------------------------------
9try:
10 __version__: str = importlib.metadata.version("lexigram-graphql")
11except ImportError:
12 __version__ = "0.0.0"
14# -- Environment Variable Prefixes -------------------------------------------
16ENV_PREFIX: str = "LEX_GRAPHQL__"
17ENV_NESTED_DELIMITER: str = "__"
19# -- Default Configuration Values --------------------------------------------
21DEFAULT_MAX_DEPTH: int = 10
22DEFAULT_MAX_ALIASES: int = 15
23DEFAULT_MAX_COMPLEXITY: int = 1000
24DEFAULT_REQUESTS_PER_MINUTE: int = 60
25DEFAULT_CACHE_MAX_AGE: int = 0
26DEFAULT_SUBSCRIPTION_KEEPALIVE: int = 30
28# -- Endpoint Paths ----------------------------------------------------------
30DEFAULT_GRAPHQL_PATH: str = "/graphql"
31DEFAULT_PLAYGROUND_PATH: str = "/graphql/playground"
32# WebSocket endpoint for GraphQL subscriptions. Historically this lived at
33# "/graphql/ws" in the codebase; keep the constant aligned with the value
34# used throughout the documentation and downstream projects.
35DEFAULT_SUBSCRIPTIONS_PATH: str = "/graphql/ws"
37# -- Protocol Constants ------------------------------------------------------
39INTROSPECTION_QUERY_TYPE: str = "__schema"
40TYPENAME_FIELD: str = "__typename"
42__all__ = [
43 "DEFAULT_CACHE_MAX_AGE",
44 "DEFAULT_GRAPHQL_PATH",
45 "DEFAULT_MAX_ALIASES",
46 "DEFAULT_MAX_COMPLEXITY",
47 "DEFAULT_MAX_DEPTH",
48 "DEFAULT_PLAYGROUND_PATH",
49 "DEFAULT_REQUESTS_PER_MINUTE",
50 "DEFAULT_SUBSCRIPTIONS_PATH",
51 "DEFAULT_SUBSCRIPTION_KEEPALIVE",
52 "ENV_NESTED_DELIMITER",
53 "ENV_PREFIX",
54 "INTROSPECTION_QUERY_TYPE",
55 "TYPENAME_FIELD",
56]