Coverage report: 76%

Files Functions Classes

coverage.py v7.15.4, created at 2026-08-25 04:37 +0800

File class   statements missing excluded   coverage
src/lexigram/graphql/__init__.py (no class)   18 2 24   89%
src/lexigram/graphql/cli/__init__.py (no class)   4 0 0   100%
src/lexigram/graphql/cli/contributor.py GraphQLCliContributor   2 0 0   100%
src/lexigram/graphql/cli/contributor.py (no class)   7 0 0   100%
src/lexigram/graphql/cli/generators/__init__.py (no class)   3 0 0   100%
src/lexigram/graphql/cli/generators/dataloader.py DataLoaderGenerator   12 7 0   42%
src/lexigram/graphql/cli/generators/dataloader.py (no class)   13 0 0   100%
src/lexigram/graphql/config.py CacheConfig   0 0 0   100%
src/lexigram/graphql/config.py DepthLimitConfig   0 0 0   100%
src/lexigram/graphql/config.py ComplexityConfig   0 0 0   100%
src/lexigram/graphql/config.py AliasLimitConfig   0 0 0   100%
src/lexigram/graphql/config.py PersistedQueryConfig   0 0 0   100%
src/lexigram/graphql/config.py BatchConfig   0 0 0   100%
src/lexigram/graphql/config.py IntrospectionConfig   0 0 0   100%
src/lexigram/graphql/config.py PlaygroundConfig   0 0 0   100%
src/lexigram/graphql/config.py SubscriptionConfig   0 0 0   100%
src/lexigram/graphql/config.py DataLoaderConfig   0 0 0   100%
src/lexigram/graphql/config.py TracingConfig   0 0 0   100%
src/lexigram/graphql/config.py MetricsConfig   0 0 0   100%
src/lexigram/graphql/config.py ErrorConfig   0 0 0   100%
src/lexigram/graphql/config.py GraphQLConfig   19 7 0   63%
src/lexigram/graphql/config.py (no class)   123 0 2   100%
src/lexigram/graphql/constants.py (no class)   20 2 0   90%
src/lexigram/graphql/controllers/__init__.py (no class)   3 0 0   100%
src/lexigram/graphql/controllers/graphql.py GraphQLController   55 2 0   96%
src/lexigram/graphql/controllers/graphql.py GraphQLSubscriptionController   2 1 0   50%
src/lexigram/graphql/controllers/graphql.py (no class)   22 0 4   100%
src/lexigram/graphql/core/__init__.py (no class)   9 0 0   100%
src/lexigram/graphql/core/batching.py BatchResult   0 0 0   100%
src/lexigram/graphql/core/batching.py BatchExecutor   23 3 0   87%
src/lexigram/graphql/core/batching.py (no class)   29 0 0   100%
src/lexigram/graphql/core/caching.py _MemoryCacheShim   45 5 0   89%
src/lexigram/graphql/core/caching.py ResponseCacheEntry   0 0 0   100%
src/lexigram/graphql/core/caching.py ResponseCache   26 0 0   100%
src/lexigram/graphql/core/caching.py (no class)   57 0 2   100%
src/lexigram/graphql/core/context/__init__.py (no class)   5 0 0   100%
src/lexigram/graphql/core/context/_context.py GraphQLContext   18 17 0   6%
src/lexigram/graphql/core/context/_context.py (no class)   38 0 2   100%
src/lexigram/graphql/core/context/_factory.py ContextFactory   94 43 0   54%
src/lexigram/graphql/core/context/_factory.py (no class)   28 0 2   100%
src/lexigram/graphql/core/context/_models.py GraphQLRequest   0 0 0   100%
src/lexigram/graphql/core/context/_models.py GraphQLErrorPayload   0 0 0   100%
src/lexigram/graphql/core/context/_models.py GraphQLResponse   5 1 0   80%
src/lexigram/graphql/core/context/_models.py (no class)   38 0 2   100%
src/lexigram/graphql/core/error_formatter.py ErrorFormatter   29 1 0   97%
src/lexigram/graphql/core/error_formatter.py (no class)   16 1 0   94%
src/lexigram/graphql/core/error_logging.py ErrorLogEntry   1 0 0   100%
src/lexigram/graphql/core/error_logging.py ErrorLogger   22 0 0   100%
src/lexigram/graphql/core/error_logging.py QueryLogger   14 1 0   93%
src/lexigram/graphql/core/error_logging.py (no class)   30 0 0   100%
src/lexigram/graphql/core/execution.py ExecutionContextProtocol   5 1 0   80%
src/lexigram/graphql/core/execution.py GraphQLExecutorProtocol   81 23 0   72%
src/lexigram/graphql/core/execution.py (no class)   42 1 5   98%
src/lexigram/graphql/core/introspection.py IntrospectionHandler   39 1 0   97%
src/lexigram/graphql/core/introspection.py IntrospectionGuardExtension   7 1 0   86%
src/lexigram/graphql/core/introspection.py (no class)   45 4 3   91%
src/lexigram/graphql/core/middleware.py MiddlewareResult   0 0 0   100%
src/lexigram/graphql/core/middleware.py GraphQLMiddleware   0 0 1   100%
src/lexigram/graphql/core/middleware.py AbstractMiddleware   3 0 0   100%
src/lexigram/graphql/core/middleware.py LoggingMiddleware   14 0 0   100%
src/lexigram/graphql/core/middleware.py AuthMiddleware   9 0 0   100%
src/lexigram/graphql/core/middleware.py MetricsMiddleware   16 0 0   100%
src/lexigram/graphql/core/middleware.py MiddlewarePipeline   10 0 0   100%
src/lexigram/graphql/core/middleware.py (no class)   44 0 4   100%
src/lexigram/graphql/core/persisted_queries.py PersistedQueryStore   0 0 2   100%
src/lexigram/graphql/core/persisted_queries.py InMemoryPersistedQueryStore   13 3 0   77%
src/lexigram/graphql/core/persisted_queries.py RedisPersistedQueryStore   15 0 0   100%
src/lexigram/graphql/core/persisted_queries.py CacheBackendPersistedQueryStore   15 0 0   100%
src/lexigram/graphql/core/persisted_queries.py APQResult   0 0 0   100%
src/lexigram/graphql/core/persisted_queries.py APQHandler   27 2 0   93%
src/lexigram/graphql/core/persisted_queries.py (no class)   47 0 3   100%
src/lexigram/graphql/core/validation.py ValidationResult   3 1 0   67%
src/lexigram/graphql/core/validation.py SchemaValidator   52 4 0   92%
src/lexigram/graphql/core/validation.py (no class)   23 0 2   100%
src/lexigram/graphql/dataloader/__init__.py (no class)   5 0 0   100%
src/lexigram/graphql/dataloader/batch.py BatchScheduler   34 6 0   82%
src/lexigram/graphql/dataloader/batch.py (no class)   31 0 0   100%
src/lexigram/graphql/dataloader/cache.py LoaderCache   0 0 5   100%
src/lexigram/graphql/dataloader/cache.py LoaderCacheEntry   3 1 0   67%
src/lexigram/graphql/dataloader/cache.py InMemoryCache   31 14 0   55%
src/lexigram/graphql/dataloader/cache.py NoOpCache   2 2 0   0%
src/lexigram/graphql/dataloader/cache.py (no class)   43 0 6   100%
src/lexigram/graphql/dataloader/loader.py DataLoaderProtocol   52 5 0   90%
src/lexigram/graphql/dataloader/loader.py (no class)   25 0 0   100%
src/lexigram/graphql/dataloader/registry.py DataLoaderRegistry   3 0 0   100%
src/lexigram/graphql/dataloader/registry.py (no class)   14 0 0   100%
src/lexigram/graphql/decorators.py (no class)   37 0 0   100%
src/lexigram/graphql/di/__init__.py (no class)   3 0 0   100%
src/lexigram/graphql/di/_discovery.py _GraphQLDiscoveryMixin   43 43 1   0%
src/lexigram/graphql/di/_discovery.py (no class)   19 3 16   84%
src/lexigram/graphql/di/provider.py GraphQLProvider   137 43 0   69%
src/lexigram/graphql/di/provider.py (no class)   34 3 8   91%
src/lexigram/graphql/directives/__init__.py (no class)   4 0 0   100%
src/lexigram/graphql/directives/builtin.py DeprecationDirectiveHandler   6 0 0   100%
src/lexigram/graphql/directives/builtin.py (no class)   4 0 0   100%
src/lexigram/graphql/directives/registry.py DirectiveRegistry   14 0 0   100%
src/lexigram/graphql/directives/registry.py (no class)   9 0 0   100%
src/lexigram/graphql/events.py BeforeExecuteEvent   0 0 0   100%
src/lexigram/graphql/events.py AfterExecuteEvent   0 0 0   100%
src/lexigram/graphql/events.py OnErrorEvent   0 0 0   100%
src/lexigram/graphql/events.py SchemaBuiltEvent   0 0 0   100%
src/lexigram/graphql/events.py SubscriptionStartedEvent   0 0 0   100%
src/lexigram/graphql/events.py (no class)   23 0 2   100%
src/lexigram/graphql/exceptions.py GraphQLError   4 0 0   100%
src/lexigram/graphql/exceptions.py ExecutionError   0 0 0   100%
src/lexigram/graphql/exceptions.py GraphQLTimeoutError   0 0 0   100%
src/lexigram/graphql/exceptions.py QueryTooDeepError   0 0 0   100%
src/lexigram/graphql/exceptions.py InputGraphQLError   0 0 0   100%
src/lexigram/graphql/exceptions.py ParseError   0 0 0   100%
src/lexigram/graphql/exceptions.py QueryTooComplexError   0 0 0   100%
src/lexigram/graphql/exceptions.py ResolverError   0 0 0   100%
src/lexigram/graphql/exceptions.py AuthenticationError   0 0 0   100%
src/lexigram/graphql/exceptions.py AuthorizationError   0 0 0   100%
src/lexigram/graphql/exceptions.py ForbiddenError   0 0 0   100%
src/lexigram/graphql/exceptions.py NotFoundError   0 0 0   100%
src/lexigram/graphql/exceptions.py RateLimitError   0 0 0   100%
src/lexigram/graphql/exceptions.py SubscriptionError   0 0 0   100%
src/lexigram/graphql/exceptions.py GraphQLConnectionError   0 0 0   100%
src/lexigram/graphql/exceptions.py (no class)   57 0 0   100%
src/lexigram/graphql/hooks.py GraphQLSchemaBuiltHook   0 0 0   100%
src/lexigram/graphql/hooks.py GraphQLRequestReceivedHook   0 0 0   100%
src/lexigram/graphql/hooks.py GraphQLResponsePreparedHook   0 0 0   100%
src/lexigram/graphql/hooks.py (no class)   13 0 0   100%
src/lexigram/graphql/module.py GraphQLModule   4 2 0   50%
src/lexigram/graphql/module.py (no class)   11 0 0   100%
src/lexigram/graphql/monitoring/__init__.py (no class)   4 0 0   100%
src/lexigram/graphql/monitoring/metrics.py QueryStats   0 0 0   100%
src/lexigram/graphql/monitoring/metrics.py GraphQLMetrics   13 0 0   100%
src/lexigram/graphql/monitoring/metrics.py MetricsCollectorProtocol   21 0 0   100%
src/lexigram/graphql/monitoring/metrics.py MetricsExtension   25 9 0   64%
src/lexigram/graphql/monitoring/metrics.py (no class)   49 5 3   90%
src/lexigram/graphql/monitoring/tracing.py TraceSpan   4 4 0   0%
src/lexigram/graphql/monitoring/tracing.py ExecutionTrace   3 3 0   0%
src/lexigram/graphql/monitoring/tracing.py TracingExtension   43 43 0   0%
src/lexigram/graphql/monitoring/tracing.py (no class)   63 24 2   62%
src/lexigram/graphql/pagination/__init__.py (no class)   4 0 0   100%
src/lexigram/graphql/pagination/helpers.py (no class)   91 78 2   14%
src/lexigram/graphql/pagination/types.py Edge   0 0 0   100%
src/lexigram/graphql/pagination/types.py PageInfo   0 0 0   100%
src/lexigram/graphql/pagination/types.py CursorConnection   0 0 0   100%
src/lexigram/graphql/pagination/types.py CursorPaginationInput   8 0 0   100%
src/lexigram/graphql/pagination/types.py OffsetPaginationInput   4 0 0   100%
src/lexigram/graphql/pagination/types.py PaginationResult   0 0 0   100%
src/lexigram/graphql/pagination/types.py (no class)   36 0 0   100%
src/lexigram/graphql/protocols.py (no class)   10 10 0   0%
src/lexigram/graphql/resolvers/__init__.py (no class)   3 3 0   0%
src/lexigram/graphql/resolvers/adapter.py ResolverAdapter   14 14 0   0%
src/lexigram/graphql/resolvers/adapter.py (no class)   12 12 2   0%
src/lexigram/graphql/scalars/__init__.py (no class)   8 0 0   100%
src/lexigram/graphql/scalars/date.py Date   8 0 0   100%
src/lexigram/graphql/scalars/date.py (no class)   8 0 0   100%
src/lexigram/graphql/scalars/datetime.py DateTime   8 4 0   50%
src/lexigram/graphql/scalars/datetime.py (no class)   8 0 0   100%
src/lexigram/graphql/scalars/json.py JSON   6 6 0   0%
src/lexigram/graphql/scalars/json.py (no class)   9 0 0   100%
src/lexigram/graphql/scalars/misc.py UUID   8 8 0   0%
src/lexigram/graphql/scalars/misc.py Email   8 8 0   0%
src/lexigram/graphql/scalars/misc.py URL   8 8 0   0%
src/lexigram/graphql/scalars/misc.py BigInt   6 6 0   0%
src/lexigram/graphql/scalars/misc.py Void   2 2 0   0%
src/lexigram/graphql/scalars/misc.py (no class)   29 0 0   100%
src/lexigram/graphql/scalars/time.py Time   8 4 0   50%
src/lexigram/graphql/scalars/time.py (no class)   8 0 0   100%
src/lexigram/graphql/scalars/timestamp.py Timestamp   8 4 0   50%
src/lexigram/graphql/scalars/timestamp.py (no class)   8 0 0   100%
src/lexigram/graphql/schema/__init__.py (no class)   6 0 0   100%
src/lexigram/graphql/schema/builder.py SchemaBuilderProtocol   70 9 0   87%
src/lexigram/graphql/schema/builder.py SchemaBuilderProtocol.build.EmptyQuery   1 1 0   0%
src/lexigram/graphql/schema/builder.py (no class)   35 5 0   86%
src/lexigram/graphql/schema/decorators.py (no class)   80 62 2   22%
src/lexigram/graphql/schema/diff.py SchemaDiff   1 1 0   0%
src/lexigram/graphql/schema/diff.py SchemaDiffer   14 14 0   0%
src/lexigram/graphql/schema/diff.py (no class)   14 14 0   0%
src/lexigram/graphql/schema/documentation.py FieldDoc   0 0 0   100%
src/lexigram/graphql/schema/documentation.py TypeDoc   0 0 0   100%
src/lexigram/graphql/schema/documentation.py SchemaDoc   20 20 0   0%
src/lexigram/graphql/schema/documentation.py SchemaDocumentationGenerator   24 24 0   0%
src/lexigram/graphql/schema/documentation.py (no class)   29 3 0   90%
src/lexigram/graphql/schema/types.py Connection   0 0 0   100%
src/lexigram/graphql/schema/types.py Connection.Edge   0 0 0   100%
src/lexigram/graphql/schema/types.py Connection.PageInfo   0 0 0   100%
src/lexigram/graphql/schema/types.py ConnectionPageInfo   0 0 0   100%
src/lexigram/graphql/schema/types.py PagedResult   3 3 0   0%
src/lexigram/graphql/schema/types.py PaginationInput   0 0 0   100%
src/lexigram/graphql/schema/types.py CursorPaginationInput   0 0 0   100%
src/lexigram/graphql/schema/types.py SortInput   0 0 0   100%
src/lexigram/graphql/schema/types.py MutationResult   0 0 0   100%
src/lexigram/graphql/schema/types.py DeleteResult   0 0 0   100%
src/lexigram/graphql/schema/types.py create_connection_type.TypedEdge   0 0 0   100%
src/lexigram/graphql/schema/types.py create_connection_type.TypedConnection   0 0 0   100%
src/lexigram/graphql/schema/types.py (no class)   76 12 1   84%
src/lexigram/graphql/security/__init__.py (no class)   13 4 0   69%
src/lexigram/graphql/security/alias.py AliasLimitValidator   22 0 0   100%
src/lexigram/graphql/security/alias.py AliasLimitExtension   5 0 0   100%
src/lexigram/graphql/security/alias.py (no class)   17 0 3   100%
src/lexigram/graphql/security/complexity.py ComplexityResult   0 0 0   100%
src/lexigram/graphql/security/complexity.py ComplexityAnalyzer   71 9 0   87%
src/lexigram/graphql/security/complexity.py ComplexityLimitExtension   5 0 0   100%
src/lexigram/graphql/security/complexity.py (no class)   48 14 4   71%
src/lexigram/graphql/security/depth.py DepthLimitValidator   41 2 0   95%
src/lexigram/graphql/security/depth.py DepthLimitExtension   9 0 0   100%
src/lexigram/graphql/security/depth.py (no class)   19 0 3   100%
src/lexigram/graphql/security/extensions.py RateLimitExtension   15 12 0   20%
src/lexigram/graphql/security/extensions.py (no class)   9 0 3   100%
src/lexigram/graphql/security/permissions.py AbstractPermission   0 0 1   100%
src/lexigram/graphql/security/permissions.py IsAuthenticated   2 0 0   100%
src/lexigram/graphql/security/permissions.py IsAdmin   5 0 0   100%
src/lexigram/graphql/security/permissions.py IsOwner   22 0 0   100%
src/lexigram/graphql/security/permissions.py IsOwnerOrAdmin   5 0 0   100%
src/lexigram/graphql/security/permissions.py AllowAny   1 0 0   100%
src/lexigram/graphql/security/permissions.py DenyAll   1 0 0   100%
src/lexigram/graphql/security/permissions.py (no class)   39 0 5   100%
src/lexigram/graphql/security/query_whitelist.py WhitelistEntry   0 0 0   100%
src/lexigram/graphql/security/query_whitelist.py QueryWhitelist   22 0 0   100%
src/lexigram/graphql/security/query_whitelist.py (no class)   22 0 0   100%
src/lexigram/graphql/security/rate_limit.py RateLimitConfig   0 0 0   100%
src/lexigram/graphql/security/rate_limit.py RateLimiter   1 1 0   0%
src/lexigram/graphql/security/rate_limit.py UnifiedRateLimiter   16 7 0   56%
src/lexigram/graphql/security/rate_limit.py (no class)   19 0 0   100%
src/lexigram/graphql/subscriptions/__init__.py (no class)   6 0 0   100%
src/lexigram/graphql/subscriptions/auth.py SubscriptionAuth   13 12 0   8%
src/lexigram/graphql/subscriptions/auth.py (no class)   11 0 0   100%
src/lexigram/graphql/subscriptions/manager.py SubscriptionManager   69 45 0   35%
src/lexigram/graphql/subscriptions/manager.py (no class)   20 0 2   100%
src/lexigram/graphql/subscriptions/protocol.py GQLWSMessageType   0 0 0   100%
src/lexigram/graphql/subscriptions/protocol.py (no class)   23 0 0   100%
src/lexigram/graphql/subscriptions/transport/__init__.py (no class)   5 0 0   100%
src/lexigram/graphql/subscriptions/transport/_connection.py SubscriptionConnection   3 1 0   67%
src/lexigram/graphql/subscriptions/transport/_connection.py (no class)   15 0 4   100%
src/lexigram/graphql/subscriptions/transport/_messaging.py _WSMessagingMixin   30 26 0   13%
src/lexigram/graphql/subscriptions/transport/_messaging.py (no class)   22 0 4   100%
src/lexigram/graphql/subscriptions/transport/_transport.py GraphQLWSTransport   174 126 0   28%
src/lexigram/graphql/subscriptions/transport/_transport.py (no class)   22 0 4   100%
src/lexigram/graphql/subscriptions/transport/handler.py GraphQLWSHandler   10 10 0   0%
src/lexigram/graphql/subscriptions/transport/handler.py (no class)   21 4 4   81%
src/lexigram/graphql/types.py OperationType   0 0 0   100%
src/lexigram/graphql/types.py GraphQLErrorCode   0 0 0   100%
src/lexigram/graphql/types.py DirectiveLocation   0 0 0   100%
src/lexigram/graphql/types.py CacheScope   0 0 0   100%
src/lexigram/graphql/types.py SubscriptionProtocol   0 0 0   100%
src/lexigram/graphql/types.py GraphQLLocation   0 0 0   100%
src/lexigram/graphql/types.py GraphQLErrorExtensions   12 0 0   100%
src/lexigram/graphql/types.py GraphQLErrorData   8 0 0   100%
src/lexigram/graphql/types.py FieldInfo   0 0 0   100%
src/lexigram/graphql/types.py OperationInfo   0 0 0   100%
src/lexigram/graphql/types.py ResolverInfo   0 0 0   100%
src/lexigram/graphql/types.py CacheControl   6 0 0   100%
src/lexigram/graphql/types.py QueryMetrics   2 0 0   100%
src/lexigram/graphql/types.py SubscriptionInfo   0 0 0   100%
src/lexigram/graphql/types.py DataLoaderStats   2 0 0   100%
src/lexigram/graphql/types.py (no class)   157 2 0   99%
src/lexigram/graphql/web/__init__.py (no class)   3 0 0   100%
src/lexigram/graphql/web/contributor.py GraphQLWebContributor   4 1 0   75%
src/lexigram/graphql/web/contributor.py (no class)   8 0 0   100%
Total     4008 955 145   76%

No items found using the specified filter.