Coverage report: 66%

Files Functions Classes

coverage.py v7.15.4, created at 2026-08-26 00:58 +0800

File class   statements missing excluded   coverage
src/lexigram/auth/__init__.py (no class)   18 1 20   94%
src/lexigram/auth/admin/__init__.py (no class)   4 0 0   100%
src/lexigram/auth/admin/contributor.py AuthAdminContributor   20 9 0   55%
src/lexigram/auth/admin/contributor.py (no class)   30 0 2   100%
src/lexigram/auth/admin/handlers/__init__.py (no class)   5 0 0   100%
src/lexigram/auth/admin/handlers/active_sessions.py ActiveSessionsWidgetHandler   10 1 0   90%
src/lexigram/auth/admin/handlers/active_sessions.py (no class)   11 0 0   100%
src/lexigram/auth/admin/handlers/failed_logins.py FailedLoginsWidgetHandler   9 0 0   100%
src/lexigram/auth/admin/handlers/failed_logins.py (no class)   10 0 0   100%
src/lexigram/auth/admin/handlers/token_refresh_rate.py TokenRefreshRateWidgetHandler   8 0 0   100%
src/lexigram/auth/admin/handlers/token_refresh_rate.py (no class)   10 0 0   100%
src/lexigram/auth/admin/pages/__init__.py (no class)   6 6 0   0%
src/lexigram/auth/admin/pages/overview.py AuthOverviewPage   16 16 0   0%
src/lexigram/auth/admin/pages/overview.py (no class)   12 12 0   0%
src/lexigram/auth/admin/pages/sessions.py AuthSessionsPage   12 12 0   0%
src/lexigram/auth/admin/pages/sessions.py (no class)   11 11 0   0%
src/lexigram/auth/admin/pages/tokens.py AuthTokensPage   11 11 0   0%
src/lexigram/auth/admin/pages/tokens.py (no class)   10 10 0   0%
src/lexigram/auth/admin/pages/users.py AuthUsersPage   12 12 0   0%
src/lexigram/auth/admin/pages/users.py (no class)   10 10 0   0%
src/lexigram/auth/authn/__init__.py (no class)   17 0 0   100%
src/lexigram/auth/authn/_binding.py TokenBindingConfig   0 0 0   100%
src/lexigram/auth/authn/_binding.py (no class)   26 15 0   42%
src/lexigram/auth/authn/_jwt_creation.py _JWTCreationMixin   30 6 4   80%
src/lexigram/auth/authn/_jwt_creation.py (no class)   21 0 3   100%
src/lexigram/auth/authn/_jwt_lifecycle.py _JWTLifecycleMixin   122 25 8   80%
src/lexigram/auth/authn/_jwt_lifecycle.py (no class)   31 0 18   100%
src/lexigram/auth/authn/_key_utils.py (no class)   22 4 0   82%
src/lexigram/auth/authn/account_verification.py AccountVerificationError   0 0 0   100%
src/lexigram/auth/authn/account_verification.py AccountVerificationService   43 19 0   56%
src/lexigram/auth/authn/account_verification.py (no class)   24 0 3   100%
src/lexigram/auth/authn/api_key.py APIKeyConfig   1 0 0   100%
src/lexigram/auth/authn/api_key.py APIKeyAuthenticator   27 0 0   100%
src/lexigram/auth/authn/api_key.py (no class)   22 0 2   100%
src/lexigram/auth/authn/apikeys.py APIKeyManager   32 2 0   94%
src/lexigram/auth/authn/apikeys.py (no class)   21 0 0   100%
src/lexigram/auth/authn/blacklist.py JWTBlacklist   68 11 0   84%
src/lexigram/auth/authn/blacklist.py (no class)   16 0 5   100%
src/lexigram/auth/authn/core.py (no class)   3 0 0   100%
src/lexigram/auth/authn/google_oauth.py GoogleOAuthService   107 48 0   55%
src/lexigram/auth/authn/google_oauth.py (no class)   30 0 2   100%
src/lexigram/auth/authn/jwt.py JWTTokenManager   55 11 0   80%
src/lexigram/auth/authn/jwt.py (no class)   37 0 8   100%
src/lexigram/auth/authn/key_rotation.py JWTKeyStore   36 4 0   89%
src/lexigram/auth/authn/key_rotation.py (no class)   14 0 0   100%
src/lexigram/auth/authn/ldap.py LDAPProvider   0 0 0   100%
src/lexigram/auth/authn/ldap.py LDAPManager   141 141 0   0%
src/lexigram/auth/authn/ldap.py (no class)   48 48 0   0%
src/lexigram/auth/authn/mfa.py (no class)   61 2 2   97%
src/lexigram/auth/authn/oauth2.py OAuth2IdentityProvider   9 0 0   100%
src/lexigram/auth/authn/oauth2.py OAuth2Manager   69 14 0   80%
src/lexigram/auth/authn/oauth2.py OAuth2AuthProvider   39 3 0   92%
src/lexigram/auth/authn/oauth2.py (no class)   31 2 3   94%
src/lexigram/auth/authn/oauth2_session.py LexigramConnectSession   40 33 0   18%
src/lexigram/auth/authn/oauth2_session.py LexigramConnectResponse   15 5 0   67%
src/lexigram/auth/authn/oauth2_session.py (no class)   24 0 2   100%
src/lexigram/auth/authn/passkeys.py _PendingStore   27 2 0   93%
src/lexigram/auth/authn/passkeys.py PasskeyService   101 20 0   80%
src/lexigram/auth/authn/passkeys.py (no class)   24 0 3   100%
src/lexigram/auth/authn/password_hasher.py Argon2idKeyDerivation   14 9 0   36%
src/lexigram/auth/authn/password_hasher.py Argon2idPasswordHasher   19 10 0   47%
src/lexigram/auth/authn/password_hasher.py ComposedPasswordHasher   18 5 0   72%
src/lexigram/auth/authn/password_hasher.py (no class)   36 3 2   92%
src/lexigram/auth/authn/password_reset.py PasswordResetTokenError   0 0 0   100%
src/lexigram/auth/authn/password_reset.py PasswordResetService   36 36 0   0%
src/lexigram/auth/authn/password_reset.py (no class)   25 0 2   100%
src/lexigram/auth/authn/relay.py RelayApiKeyVerifier   31 1 0   97%
src/lexigram/auth/authn/relay.py (no class)   23 1 0   96%
src/lexigram/auth/authn/revocation.py PersistentTokenRevocationStore   18 18 0   0%
src/lexigram/auth/authn/revocation.py (no class)   14 14 2   0%
src/lexigram/auth/authn/saml.py SAMLAttributeMapper   0 0 1   100%
src/lexigram/auth/authn/saml.py EmailAttributeMapper   2 2 0   0%
src/lexigram/auth/authn/saml.py NameAttributeMapper   4 4 0   0%
src/lexigram/auth/authn/saml.py FirstNameAttributeMapper   4 4 0   0%
src/lexigram/auth/authn/saml.py LastNameAttributeMapper   4 4 0   0%
src/lexigram/auth/authn/saml.py GroupsAttributeMapper   4 4 0   0%
src/lexigram/auth/authn/saml.py SAMLAttributeMapperRegistry   16 16 0   0%
src/lexigram/auth/authn/saml.py SAMLProvider   10 10 0   0%
src/lexigram/auth/authn/saml.py SAMLManager   47 47 0   0%
src/lexigram/auth/authn/saml.py (no class)   57 57 2   0%
src/lexigram/auth/authn/schemas/__init__.py (no class)   5 0 0   100%
src/lexigram/auth/authn/schemas/requests.py LoginRequest   0 0 0   100%
src/lexigram/auth/authn/schemas/requests.py RegisterRequest   2 2 0   0%
src/lexigram/auth/authn/schemas/requests.py RefreshTokenRequest   0 0 0   100%
src/lexigram/auth/authn/schemas/requests.py PasswordResetRequest   0 0 0   100%
src/lexigram/auth/authn/schemas/requests.py PasswordResetConfirm   2 2 0   0%
src/lexigram/auth/authn/schemas/requests.py OAuth2AuthorizeRequest   0 0 0   100%
src/lexigram/auth/authn/schemas/requests.py OAuth2TokenRequest   0 0 0   100%
src/lexigram/auth/authn/schemas/requests.py (no class)   45 0 0   100%
src/lexigram/auth/authn/schemas/responses.py TokenResponse   0 0 0   100%
src/lexigram/auth/authn/schemas/responses.py (no class)   12 0 0   100%
src/lexigram/auth/authn/schemas/user.py UserProfile   0 0 0   100%
src/lexigram/auth/authn/schemas/user.py (no class)   20 0 0   100%
src/lexigram/auth/authn/security.py PasswordHasher   38 7 0   82%
src/lexigram/auth/authn/security.py PasswordPolicy   51 14 0   73%
src/lexigram/auth/authn/security.py (no class)   57 7 2   88%
src/lexigram/auth/authn/services.py LockoutConfig   3 0 0   100%
src/lexigram/auth/authn/services.py LoginAttemptTracker   40 0 0   100%
src/lexigram/auth/authn/services.py AuthenticationService   86 29 0   66%
src/lexigram/auth/authn/services.py (no class)   47 0 11   100%
src/lexigram/auth/authn/user_service.py UserService   106 60 0   43%
src/lexigram/auth/authn/user_service.py (no class)   29 0 2   100%
src/lexigram/auth/authz/__init__.py (no class)   12 4 0   67%
src/lexigram/auth/authz/_check_mixin.py _AuthCheckMixin   176 162 0   8%
src/lexigram/auth/authz/_check_mixin.py (no class)   32 0 3   100%
src/lexigram/auth/authz/_parsers.py ValueParser   0 0 2   100%
src/lexigram/auth/authz/_parsers.py StringValueParser   6 5 0   17%
src/lexigram/auth/authz/_parsers.py ListValueParser   2 0 0   100%
src/lexigram/auth/authz/_parsers.py NoneValueParser   2 2 0   0%
src/lexigram/auth/authz/_parsers.py ValueParserRegistry   11 3 0   73%
src/lexigram/auth/authz/_parsers.py (no class)   23 0 3   100%
src/lexigram/auth/authz/guards.py AuthorizationGuard   22 0 0   100%
src/lexigram/auth/authz/guards.py RouteGuard   3 0 0   100%
src/lexigram/auth/authz/guards.py (no class)   52 2 5   96%
src/lexigram/auth/authz/scopes.py OAuthScope   0 0 0   100%
src/lexigram/auth/authz/scopes.py ScopeManager   19 0 0   100%
src/lexigram/auth/authz/scopes.py (no class)   20 0 0   100%
src/lexigram/auth/authz/service.py UserProtocol   0 0 0   100%
src/lexigram/auth/authz/service.py AuthorizationService   84 73 0   13%
src/lexigram/auth/authz/service.py (no class)   32 1 2   97%
src/lexigram/auth/cli/__init__.py (no class)   0 0 0   100%
src/lexigram/auth/cli/checks.py (no class)   4 4 2   0%
src/lexigram/auth/cli/commands.py (no class)   24 24 0   0%
src/lexigram/auth/cli/contributor.py AuthCliContributor   8 8 0   0%
src/lexigram/auth/cli/contributor.py (no class)   15 15 0   0%
src/lexigram/auth/cli/doctor.py (no class)   8 8 0   0%
src/lexigram/auth/cli/generators/__init__.py (no class)   0 0 0   100%
src/lexigram/auth/cli/generators/auth_guard.py AuthGuardGenerator   1 1 0   0%
src/lexigram/auth/cli/generators/auth_guard.py (no class)   6 6 0   0%
src/lexigram/auth/cli/generators/auth_policy.py AuthPolicyGenerator   1 1 0   0%
src/lexigram/auth/cli/generators/auth_policy.py (no class)   6 6 0   0%
src/lexigram/auth/cli/generators/guard.py AuthGuardGenerator   17 0 0   100%
src/lexigram/auth/cli/generators/guard.py (no class)   9 0 0   100%
src/lexigram/auth/cli/hooks.py (no class)   2 2 0   0%
src/lexigram/auth/cli/schema_setup.py (no class)   12 0 0   100%
src/lexigram/auth/cli/shell.py (no class)   5 5 2   0%
src/lexigram/auth/config.py AuthUserConfig   3 1 0   67%
src/lexigram/auth/config.py AuthRoleConfig   0 0 0   100%
src/lexigram/auth/config.py RBACConfig   0 0 0   100%
src/lexigram/auth/config.py JWTConfig   14 1 0   93%
src/lexigram/auth/config.py PasswordConfig   8 0 0   100%
src/lexigram/auth/config.py AuthMiddlewareConfig   0 0 0   100%
src/lexigram/auth/config.py AuthConfig   8 0 0   100%
src/lexigram/auth/config.py (no class)   100 0 0   100%
src/lexigram/auth/constants.py (no class)   24 2 0   92%
src/lexigram/auth/decorators.py (no class)   34 34 1   0%
src/lexigram/auth/di/__init__.py (no class)   7 0 0   100%
src/lexigram/auth/di/bundle_provider.py AuthBundleProvider   30 9 0   70%
src/lexigram/auth/di/bundle_provider.py (no class)   24 0 2   100%
src/lexigram/auth/di/provider.py AuthProvider   15 15 0   0%
src/lexigram/auth/di/provider.py (no class)   23 23 2   0%
src/lexigram/auth/di/sub_providers/__init__.py (no class)   11 0 0   100%
src/lexigram/auth/di/sub_providers/admin_provider.py AuthAdminProvider   19 2 0   89%
src/lexigram/auth/di/sub_providers/admin_provider.py (no class)   11 0 3   100%
src/lexigram/auth/di/sub_providers/authentication_provider.py AuthenticationProvider   53 8 0   85%
src/lexigram/auth/di/sub_providers/authentication_provider.py (no class)   58 3 6   95%
src/lexigram/auth/di/sub_providers/authorization_provider.py AuthorizationProvider   14 2 0   86%
src/lexigram/auth/di/sub_providers/authorization_provider.py (no class)   19 0 3   100%
src/lexigram/auth/di/sub_providers/google_oauth_provider.py GoogleOAuthProvider   26 8 0   69%
src/lexigram/auth/di/sub_providers/google_oauth_provider.py (no class)   20 0 3   100%
src/lexigram/auth/di/sub_providers/mfa_provider.py MFAProvider   4 0 0   100%
src/lexigram/auth/di/sub_providers/mfa_provider.py (no class)   15 0 2   100%
src/lexigram/auth/di/sub_providers/oauth2_provider.py OAuth2Provider   16 16 0   0%
src/lexigram/auth/di/sub_providers/oauth2_provider.py (no class)   20 0 4   100%
src/lexigram/auth/di/sub_providers/oauth_provider.py (no class)   4 1 0   75%
src/lexigram/auth/di/sub_providers/passkey_provider.py PasskeyProvider   4 4 0   0%
src/lexigram/auth/di/sub_providers/passkey_provider.py (no class)   15 0 2   100%
src/lexigram/auth/di/sub_providers/session_provider.py SessionProvider   13 2 0   85%
src/lexigram/auth/di/sub_providers/session_provider.py (no class)   16 0 3   100%
src/lexigram/auth/di/sub_providers/token_provider.py TokenProvider   51 17 0   67%
src/lexigram/auth/di/sub_providers/token_provider.py (no class)   21 0 3   100%
src/lexigram/auth/events.py UserAuthenticated   0 0 0   100%
src/lexigram/auth/events.py AuthenticationFailed   0 0 0   100%
src/lexigram/auth/events.py UserRegistered   0 0 0   100%
src/lexigram/auth/events.py PasswordChanged   0 0 0   100%
src/lexigram/auth/events.py SessionCreated   0 0 0   100%
src/lexigram/auth/events.py SessionRevoked   0 0 0   100%
src/lexigram/auth/events.py UserLoggedIn   0 0 0   100%
src/lexigram/auth/events.py UserLoginFailed   0 0 0   100%
src/lexigram/auth/events.py UserLockedOut   0 0 0   100%
src/lexigram/auth/events.py UserLoggedOut   0 0 0   100%
src/lexigram/auth/events.py TokenRevoked   0 0 0   100%
src/lexigram/auth/events.py (no class)   49 0 0   100%
src/lexigram/auth/exceptions.py AuthError   0 0 0   100%
src/lexigram/auth/exceptions.py AuthenticationError   0 0 0   100%
src/lexigram/auth/exceptions.py AuthorizationError   0 0 0   100%
src/lexigram/auth/exceptions.py InvalidCredentialsError   1 0 0   100%
src/lexigram/auth/exceptions.py AccountLockedError   2 0 0   100%
src/lexigram/auth/exceptions.py UserNotFoundError   1 0 0   100%
src/lexigram/auth/exceptions.py TokenError   0 0 0   100%
src/lexigram/auth/exceptions.py InvalidTokenError   0 0 0   100%
src/lexigram/auth/exceptions.py TokenExpiredError   5 1 0   80%
src/lexigram/auth/exceptions.py TokenBlacklistedError   1 0 0   100%
src/lexigram/auth/exceptions.py TokenInvalidError   5 1 0   80%
src/lexigram/auth/exceptions.py TokenAudienceError   7 2 0   71%
src/lexigram/auth/exceptions.py TokenNotFoundError   5 5 0   0%
src/lexigram/auth/exceptions.py InvalidAudienceError   0 0 0   100%
src/lexigram/auth/exceptions.py InvalidScopeError   0 0 0   100%
src/lexigram/auth/exceptions.py BlacklistedTokenError   0 0 0   100%
src/lexigram/auth/exceptions.py TokenExpiredVerificationError   5 5 0   0%
src/lexigram/auth/exceptions.py AlreadyVerifiedError   5 1 0   80%
src/lexigram/auth/exceptions.py EmailExistsError   0 0 0   100%
src/lexigram/auth/exceptions.py UsernameExistsError   0 0 0   100%
src/lexigram/auth/exceptions.py PasswordPolicyError   0 0 0   100%
src/lexigram/auth/exceptions.py OAuth2Error   0 0 0   100%
src/lexigram/auth/exceptions.py SessionNotFoundError   1 0 0   100%
src/lexigram/auth/exceptions.py (no class)   66 0 0   100%
src/lexigram/auth/hooks.py AuthUserAuthenticatedHook   0 0 0   100%
src/lexigram/auth/hooks.py AuthAuthenticationFailedHook   0 0 0   100%
src/lexigram/auth/hooks.py AuthTokenIssuedHook   0 0 0   100%
src/lexigram/auth/hooks.py AuthTokenRevokedHook   0 0 0   100%
src/lexigram/auth/hooks.py AuthTokenRefreshedHook   0 0 0   100%
src/lexigram/auth/hooks.py (no class)   23 0 0   100%
src/lexigram/auth/mfa/__init__.py (no class)   4 0 0   100%
src/lexigram/auth/mfa/hooks.py MFAChallengeIssuedHook   0 0 0   100%
src/lexigram/auth/mfa/hooks.py MFAVerifiedHook   0 0 0   100%
src/lexigram/auth/mfa/hooks.py MFAFailedHook   0 0 0   100%
src/lexigram/auth/mfa/hooks.py (no class)   16 0 0   100%
src/lexigram/auth/mfa/manager.py MFAManager   48 4 0   92%
src/lexigram/auth/mfa/manager.py (no class)   16 0 2   100%
src/lexigram/auth/mfa/totp_vectors.py TOTPTestVector   0 0 0   100%
src/lexigram/auth/mfa/totp_vectors.py TOTPTestVectors   3 3 0   0%
src/lexigram/auth/mfa/totp_vectors.py (no class)   28 28 0   0%
src/lexigram/auth/models/__init__.py (no class)   4 0 0   100%
src/lexigram/auth/models/apikey.py APIKey   3 3 0   0%
src/lexigram/auth/models/apikey.py (no class)   19 0 0   100%
src/lexigram/auth/models/mfa.py UserMFA   0 0 0   100%
src/lexigram/auth/models/mfa.py (no class)   14 0 0   100%
src/lexigram/auth/models/session.py UserSession   13 10 0   23%
src/lexigram/auth/models/session.py (no class)   25 0 0   100%
src/lexigram/auth/models/token.py AuthToken   0 0 0   100%
src/lexigram/auth/models/token.py (no class)   14 0 2   100%
src/lexigram/auth/models/user.py UserCredentials   0 0 0   100%
src/lexigram/auth/models/user.py User   19 14 0   26%
src/lexigram/auth/models/user.py (no class)   40 0 0   100%
src/lexigram/auth/module.py AuthModule   9 3 0   67%
src/lexigram/auth/module.py (no class)   12 0 0   100%
src/lexigram/auth/policies/__init__.py (no class)   7 0 0   100%
src/lexigram/auth/policies/engine.py PatternMatcher   0 0 2   100%
src/lexigram/auth/policies/engine.py ExactPatternMatcher   2 0 0   100%
src/lexigram/auth/policies/engine.py WildcardPatternMatcher   3 0 0   100%
src/lexigram/auth/policies/engine.py GlobPatternMatcher   4 4 0   0%
src/lexigram/auth/policies/engine.py PatternMatcherRegistry   14 3 0   79%
src/lexigram/auth/policies/engine.py PolicyEngine   94 30 0   68%
src/lexigram/auth/policies/engine.py (no class)   37 0 5   100%
src/lexigram/auth/policies/evaluator.py OperatorHandlerProtocol   0 0 1   100%
src/lexigram/auth/policies/evaluator.py EqualsOperator   1 0 0   100%
src/lexigram/auth/policies/evaluator.py NotEqualsOperator   1 0 0   100%
src/lexigram/auth/policies/evaluator.py ContainsOperator   1 0 0   100%
src/lexigram/auth/policies/evaluator.py NotContainsOperator   1 1 0   0%
src/lexigram/auth/policies/evaluator.py InOperator   1 0 0   100%
src/lexigram/auth/policies/evaluator.py NotInOperator   1 1 0   0%
src/lexigram/auth/policies/evaluator.py MatchesOperator   1 0 0   100%
src/lexigram/auth/policies/evaluator.py GreaterThanOperator   4 2 0   50%
src/lexigram/auth/policies/evaluator.py LessThanOperator   4 2 0   50%
src/lexigram/auth/policies/evaluator.py GreaterThanOrEqualsOperator   4 4 0   0%
src/lexigram/auth/policies/evaluator.py LessThanOrEqualsOperator   4 4 0   0%
src/lexigram/auth/policies/evaluator.py OperatorRegistry   13 2 0   85%
src/lexigram/auth/policies/evaluator.py ConditionEvaluator   26 4 0   85%
src/lexigram/auth/policies/evaluator.py (no class)   42 0 5   100%
src/lexigram/auth/policies/in_memory_store.py InMemoryPolicyStore   14 14 0   0%
src/lexigram/auth/policies/in_memory_store.py (no class)   12 0 2   100%
src/lexigram/auth/policies/store.py PolicyStoreProtocol   0 0 6   100%
src/lexigram/auth/policies/store.py PolicyLoader   0 0 2   100%
src/lexigram/auth/policies/store.py (no class)   15 0 12   100%
src/lexigram/auth/policies/types.py PolicyEffect   0 0 0   100%
src/lexigram/auth/policies/types.py DecisionOutcome   0 0 0   100%
src/lexigram/auth/policies/types.py Condition   0 0 0   100%
src/lexigram/auth/policies/types.py Policy   0 0 0   100%
src/lexigram/auth/policies/types.py AuthorizationRequest   0 0 0   100%
src/lexigram/auth/policies/types.py AuthorizationDecision   0 0 0   100%
src/lexigram/auth/policies/types.py (no class)   39 0 0   100%
src/lexigram/auth/protocols.py TokenValidatorProtocol   0 0 2   100%
src/lexigram/auth/protocols.py IdentityResolverProtocol   0 0 1   100%
src/lexigram/auth/protocols.py (no class)   9 9 6   0%
src/lexigram/auth/services/__init__.py (no class)   4 0 0   100%
src/lexigram/auth/services/activity_tracker.py AuthActivityTracker   29 2 0   93%
src/lexigram/auth/services/activity_tracker.py (no class)   14 0 0   100%
src/lexigram/auth/services/result_pattern_service.py AuthServiceWithResultPattern   65 33 0   49%
src/lexigram/auth/services/result_pattern_service.py (no class)   15 0 4   100%
src/lexigram/auth/session/__init__.py (no class)   5 0 0   100%
src/lexigram/auth/session/cookie_backend.py SessionCookieBackend   33 0 0   100%
src/lexigram/auth/session/cookie_backend.py (no class)   16 0 1   100%
src/lexigram/auth/session/fingerprint.py (no class)   8 0 0   100%
src/lexigram/auth/session/hooks.py SessionCreatedHook   0 0 0   100%
src/lexigram/auth/session/hooks.py SessionRefreshedHook   0 0 0   100%
src/lexigram/auth/session/hooks.py SessionExpiredHook   0 0 0   100%
src/lexigram/auth/session/hooks.py SessionRevokedHook   0 0 0   100%
src/lexigram/auth/session/hooks.py (no class)   20 0 0   100%
src/lexigram/auth/session/manager.py SessionManagerImpl   67 16 0   76%
src/lexigram/auth/session/manager.py (no class)   31 0 0   100%
src/lexigram/auth/storage/__init__.py (no class)   7 0 0   100%
src/lexigram/auth/storage/_mongo_store.py MongoDBUserStore   52 9 0   83%
src/lexigram/auth/storage/_mongo_store.py (no class)   24 0 2   100%
src/lexigram/auth/storage/_sql_store.py SQLUserStore   83 35 0   58%
src/lexigram/auth/storage/_sql_store.py (no class)   25 0 2   100%
src/lexigram/auth/storage/apikey_sql.py APIKeySqlRepository   13 13 0   0%
src/lexigram/auth/storage/apikey_sql.py (no class)   13 0 2   100%
src/lexigram/auth/storage/cached_user_store.py CachedUserStore   99 33 0   67%
src/lexigram/auth/storage/cached_user_store.py (no class)   23 0 4   100%
src/lexigram/auth/storage/db_stores.py RedisUserStore   70 70 0   0%
src/lexigram/auth/storage/db_stores.py (no class)   25 0 2   100%
src/lexigram/auth/storage/in_memory_stores.py InMemorySessionStore   18 8 0   56%
src/lexigram/auth/storage/in_memory_stores.py InMemoryMFAStore   9 9 0   0%
src/lexigram/auth/storage/in_memory_stores.py (no class)   16 0 2   100%
src/lexigram/auth/storage/oauth_identity_store/__init__.py (no class)   7 0 0   100%
src/lexigram/auth/storage/oauth_identity_store/_mongodb.py MongoDBOAuthIdentityStore   60 60 0   0%
src/lexigram/auth/storage/oauth_identity_store/_mongodb.py (no class)   21 0 2   100%
src/lexigram/auth/storage/oauth_identity_store/_protocol.py OAuthIdentityStore   0 0 7   100%
src/lexigram/auth/storage/oauth_identity_store/_protocol.py OAuthIdentity   5 5 0   0%
src/lexigram/auth/storage/oauth_identity_store/_protocol.py (no class)   14 0 8   100%
src/lexigram/auth/storage/oauth_identity_store/_sqlalchemy.py SQLAlchemyOAuthIdentityStore   78 66 0   15%
src/lexigram/auth/storage/oauth_identity_store/_sqlalchemy.py (no class)   20 0 2   100%
src/lexigram/auth/storage/session_store.py SessionStore   0 0 6   100%
src/lexigram/auth/storage/session_store.py MFAStore   0 0 3   100%
src/lexigram/auth/storage/session_store.py (no class)   16 0 13   100%
src/lexigram/auth/storage/token_store.py CachedUserStore   0 0 4   100%
src/lexigram/auth/storage/token_store.py UserStoreProtocol   0 0 9   100%
src/lexigram/auth/storage/token_store.py InMemoryUserStore   43 9 0   79%
src/lexigram/auth/storage/token_store.py (no class)   34 0 15   100%
src/lexigram/auth/types.py AuthStatus   0 0 0   100%
src/lexigram/auth/types.py TokenType   0 0 0   100%
src/lexigram/auth/types.py UserStatus   0 0 0   100%
src/lexigram/auth/types.py GuardContext   0 0 0   100%
src/lexigram/auth/types.py AuthResult   0 0 0   100%
src/lexigram/auth/types.py OAuth2UserInfo   2 1 0   50%
src/lexigram/auth/types.py AuthHealthResult   0 0 0   100%
src/lexigram/auth/types.py TokenPair   0 0 0   100%
src/lexigram/auth/types.py (no class)   65 0 2   100%
src/lexigram/auth/web/__init__.py (no class)   5 0 0   100%
src/lexigram/auth/web/guards.py _GuardBase   8 8 0   0%
src/lexigram/auth/web/guards.py AuthGuard   9 8 0   11%
src/lexigram/auth/web/guards.py RoleGuard   4 4 0   0%
src/lexigram/auth/web/guards.py PermissionGuard   13 13 0   0%
src/lexigram/auth/web/guards.py CompositeGuard   5 5 0   0%
src/lexigram/auth/web/guards.py AdminGuard   1 1 0   0%
src/lexigram/auth/web/guards.py UserGuard   0 0 0   100%
src/lexigram/auth/web/guards.py GuardFactory   11 11 0   0%
src/lexigram/auth/web/guards.py (no class)   132 57 3   57%
src/lexigram/auth/web/middleware/__init__.py (no class)   3 0 0   100%
src/lexigram/auth/web/middleware/api_key_authenticator.py ApiKeyAuthenticator   14 11 0   21%
src/lexigram/auth/web/middleware/api_key_authenticator.py (no class)   7 0 0   100%
src/lexigram/auth/web/middleware/auth.py AuthMiddleware   96 63 0   34%
src/lexigram/auth/web/middleware/auth.py AuthRouter   22 22 0   0%
src/lexigram/auth/web/middleware/auth.py (no class)   80 45 6   44%
src/lexigram/auth/web/middleware/jwt_authenticator.py JwtAuthenticator   28 8 0   71%
src/lexigram/auth/web/middleware/jwt_authenticator.py (no class)   10 0 0   100%
src/lexigram/auth/web/middleware/response_handler.py AuthResponseHandler   13 13 0   0%
src/lexigram/auth/web/middleware/response_handler.py (no class)   16 6 0   62%
src/lexigram/auth/web/middleware/session_authenticator.py SessionAuthenticator   14 10 0   29%
src/lexigram/auth/web/middleware/session_authenticator.py (no class)   7 0 0   100%
src/lexigram/auth/web/middleware/session_validator.py SessionValidator   10 8 0   20%
src/lexigram/auth/web/middleware/session_validator.py (no class)   7 0 2   100%
src/lexigram/auth/web/middleware/throttle.py RateLimitExceededError   2 2 0   0%
src/lexigram/auth/web/middleware/throttle.py RateLimitMiddleware   45 8 0   82%
src/lexigram/auth/web/middleware/throttle.py (no class)   30 6 3   80%
src/lexigram/auth/web/middleware/token_cache.py TokenCache   58 25 0   57%
src/lexigram/auth/web/middleware/token_cache.py (no class)   16 0 2   100%
src/lexigram/auth/web/middleware/token_extractor.py TokenExtractor   24 16 0   33%
src/lexigram/auth/web/middleware/token_extractor.py (no class)   9 0 2   100%
Total     6573 2251 318   66%

No items found using the specified filter.