Coverage for src/lexigram/graphql/security/__init__.py: 69%
13 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"""Security module.
3This module provides security features for GraphQL APIs,
4including depth limiting, alias limiting, rate limiting, and permissions.
6Note: Advanced features like weighted cost analysis and
7APQ are in lexigram-ent-graphql.
8"""
10from __future__ import annotations
12from typing import Any
14from lexigram.graphql.security.alias import (
15 AliasLimitExtension,
16 AliasLimitValidator,
17)
18from lexigram.graphql.security.depth import (
19 DepthLimitExtension,
20 DepthLimitValidator,
21 create_depth_limit,
22)
23from lexigram.graphql.security.extensions import RateLimitExtension
24from lexigram.graphql.security.permissions import (
25 AbstractPermission,
26 AllowAny,
27 DenyAll,
28 IsAdmin,
29 IsAuthenticated,
30 IsOwner,
31 IsOwnerOrAdmin,
32 allow_any,
33 deny_all,
34 is_admin,
35 is_authenticated,
36 is_owner,
37 is_owner_or_admin,
38)
40try:
41 from lexigram.graphql.security.rate_limit import (
42 RateLimitConfig,
43 RateLimiter,
44 UnifiedRateLimiter,
45 )
46except ImportError:
47 RateLimiter: Any = None # type: ignore[no-redef]
48 UnifiedRateLimiter: Any = None # type: ignore[no-redef]
49 RateLimitConfig: Any = None # type: ignore[no-redef]
51__all__ = [
52 # Permissions
53 "AbstractPermission",
54 # Alias
55 "AliasLimitExtension",
56 "AliasLimitValidator",
57 "AllowAny",
58 "DenyAll",
59 # Depth
60 "DepthLimitExtension",
61 "DepthLimitValidator",
62 "IsAdmin",
63 "IsAuthenticated",
64 "IsOwner",
65 "IsOwnerOrAdmin",
66 "RateLimitConfig",
67 # Rate limit
68 "RateLimitExtension",
69 "RateLimiter",
70 "UnifiedRateLimiter",
71 "allow_any",
72 "create_depth_limit",
73 "deny_all",
74 "is_admin",
75 "is_authenticated",
76 "is_owner",
77 "is_owner_or_admin",
78]