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

1"""Constants for lexigram-graphql.""" 

2 

3from __future__ import annotations 

4 

5import importlib.metadata 

6 

7# -- Version ------------------------------------------------------------------- 

8 

9try: 

10 __version__: str = importlib.metadata.version("lexigram-graphql") 

11except ImportError: 

12 __version__ = "0.0.0" 

13 

14# -- Environment Variable Prefixes ------------------------------------------- 

15 

16ENV_PREFIX: str = "LEX_GRAPHQL__" 

17ENV_NESTED_DELIMITER: str = "__" 

18 

19# -- Default Configuration Values -------------------------------------------- 

20 

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 

27 

28# -- Endpoint Paths ---------------------------------------------------------- 

29 

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" 

36 

37# -- Protocol Constants ------------------------------------------------------ 

38 

39INTROSPECTION_QUERY_TYPE: str = "__schema" 

40TYPENAME_FIELD: str = "__typename" 

41 

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]