Coverage report: 89%

Files Functions Classes

coverage.py v7.15.2, created at 2026-08-24 12:44 +0000

File function   statements missing excluded   coverage
src/ai_lls_lib/__init__.py (no function)   11 0 0   100%
src/ai_lls_lib/admin/__init__.py (no function)   2 0 0   100%
src/ai_lls_lib/apikeys/__init__.py (no function)   3 0 0   100%
src/ai_lls_lib/apikeys/legacy_key_service.py compute_legacy_key_hash   4 0 0   100%
src/ai_lls_lib/apikeys/legacy_key_service.py LegacyApiKeyService.__init__   9 4 0   56%
src/ai_lls_lib/apikeys/legacy_key_service.py LegacyApiKeyService.rotate_key   14 1 0   93%
src/ai_lls_lib/apikeys/legacy_key_service.py LegacyApiKeyService._deactivate_user_keys   11 4 0   64%
src/ai_lls_lib/apikeys/legacy_key_service.py LegacyApiKeyService.validate_by_lookup_hash   13 1 0   92%
src/ai_lls_lib/apikeys/legacy_key_service.py LegacyApiKeyService.backfill_lookup_hash   4 1 0   75%
src/ai_lls_lib/apikeys/legacy_key_service.py LegacyApiKeyService.validate_key   19 3 0   84%
src/ai_lls_lib/apikeys/legacy_key_service.py (no function)   27 3 2   89%
src/ai_lls_lib/apikeys/managed_key_service.py ManagedApiKeyService.__init__   9 4 0   56%
src/ai_lls_lib/apikeys/managed_key_service.py ManagedApiKeyService._get_key   9 1 0   89%
src/ai_lls_lib/apikeys/managed_key_service.py ManagedApiKeyService.list_keys   9 1 0   89%
src/ai_lls_lib/apikeys/managed_key_service.py ManagedApiKeyService.create_key   19 1 0   95%
src/ai_lls_lib/apikeys/managed_key_service.py ManagedApiKeyService.update_key   25 3 0   88%
src/ai_lls_lib/apikeys/managed_key_service.py ManagedApiKeyService.rotate_key   9 1 0   89%
src/ai_lls_lib/apikeys/managed_key_service.py ManagedApiKeyService.revoke_key   9 1 0   89%
src/ai_lls_lib/apikeys/managed_key_service.py (no function)   27 3 2   89%
src/ai_lls_lib/auth/__init__.py (no function)   2 0 0   100%
src/ai_lls_lib/auth/context_parser.py get_user_from_event   5 0 0   100%
src/ai_lls_lib/auth/context_parser.py get_email_from_event   5 0 0   100%
src/ai_lls_lib/auth/context_parser.py is_admin   7 0 0   100%
src/ai_lls_lib/auth/context_parser.py get_groups_from_event   7 0 0   100%
src/ai_lls_lib/auth/context_parser.py require_admin   3 0 1   100%
src/ai_lls_lib/auth/context_parser.py require_admin.wrapper   4 0 0   100%
src/ai_lls_lib/auth/context_parser.py get_auth_type   5 0 0   100%
src/ai_lls_lib/auth/context_parser.py (no function)   10 0 0   100%
src/ai_lls_lib/common.py DecimalEncoder.default   3 0 0   100%
src/ai_lls_lib/common.py extract_area_code   6 0 0   100%
src/ai_lls_lib/common.py (no function)   5 0 0   100%
src/ai_lls_lib/core/__init__.py (no function)   0 0 0   100%
src/ai_lls_lib/core/cache.py DynamoDBCache.__init__   3 0 0   100%
src/ai_lls_lib/core/cache.py DynamoDBCache.dynamodb   3 0 0   100%
src/ai_lls_lib/core/cache.py DynamoDBCache.table   3 0 0   100%
src/ai_lls_lib/core/cache.py DynamoDBCache.get   14 0 0   100%
src/ai_lls_lib/core/cache.py DynamoDBCache.set   6 0 0   100%
src/ai_lls_lib/core/cache.py DynamoDBCache.batch_get   20 0 0   100%
src/ai_lls_lib/core/cache.py (no function)   16 0 0   100%
src/ai_lls_lib/core/models.py (no function)   50 0 0   100%
src/ai_lls_lib/core/processor.py _dict_reader   1 0 0   100%
src/ai_lls_lib/core/processor.py _fold_surplus   8 0 0   100%
src/ai_lls_lib/core/processor.py ProcessingReport.verified   1 0 0   100%
src/ai_lls_lib/core/processor.py ProcessingReport.failures   1 0 0   100%
src/ai_lls_lib/core/processor.py ProcessingReport.attempted   1 0 0   100%
src/ai_lls_lib/core/processor.py ProcessingReport.failure_rate   1 0 0   100%
src/ai_lls_lib/core/processor.py BulkProcessor.__init__   7 0 0   100%
src/ai_lls_lib/core/processor.py BulkProcessor._record_row_failure   16 0 0   100%
src/ai_lls_lib/core/processor.py BulkProcessor._check_failure_rate   2 0 0   100%
src/ai_lls_lib/core/processor.py BulkProcessor.process_csv   1 0 0   100%
src/ai_lls_lib/core/processor.py BulkProcessor.process_csv_report   34 1 0   97%
src/ai_lls_lib/core/processor.py BulkProcessor._verify_one   4 0 0   100%
src/ai_lls_lib/core/processor.py BulkProcessor._verify_all   11 0 0   100%
src/ai_lls_lib/core/processor.py BulkProcessor._find_phone_column   11 0 0   100%
src/ai_lls_lib/core/processor.py BulkProcessor.generate_results_csv   38 0 0   100%
src/ai_lls_lib/core/processor.py BulkProcessor.process_csv_stream   44 0 0   100%
src/ai_lls_lib/core/processor.py BulkProcessor.generate_results_csv_stream   45 0 0   100%
src/ai_lls_lib/core/processor.py (no function)   44 0 0   100%
src/ai_lls_lib/core/verifier.py PhoneVerifier.__init__   3 0 0   100%
src/ai_lls_lib/core/verifier.py PhoneVerifier.normalize_phone   8 0 0   100%
src/ai_lls_lib/core/verifier.py PhoneVerifier.verify   13 0 0   100%
src/ai_lls_lib/core/verifier.py PhoneVerifier._check_line_type   1 0 0   100%
src/ai_lls_lib/core/verifier.py PhoneVerifier._check_dnc   1 0 0   100%
src/ai_lls_lib/core/verifier.py (no function)   13 0 0   100%
src/ai_lls_lib/files/__init__.py (no function)   2 0 0   100%
src/ai_lls_lib/files/file_service.py _get_filename   1 0 0   100%
src/ai_lls_lib/files/file_service.py _map_file_fields   14 0 0   100%
src/ai_lls_lib/files/file_service.py _map_admin_fields   1 0 0   100%
src/ai_lls_lib/files/file_service.py FileService.__init__   9 4 0   56%
src/ai_lls_lib/files/file_service.py FileService._query_all_user_files   12 2 0   83%
src/ai_lls_lib/files/file_service.py FileService.list_user_files   15 0 0   100%
src/ai_lls_lib/files/file_service.py FileService.list_user_files_admin   7 0 0   100%
src/ai_lls_lib/files/file_service.py (no function)   23 3 2   87%
src/ai_lls_lib/key_management.py generate_key_id   1 0 0   100%
src/ai_lls_lib/key_management.py generate_managed_key   1 0 0   100%
src/ai_lls_lib/key_management.py compute_key_hash   1 0 0   100%
src/ai_lls_lib/key_management.py validate_expiration_days   1 0 0   100%
src/ai_lls_lib/key_management.py (no function)   10 0 0   100%
src/ai_lls_lib/payment/__init__.py (no function)   4 0 0   100%
src/ai_lls_lib/payment/credit_manager.py InsufficientCreditsError.__init__   3 0 0   100%
src/ai_lls_lib/payment/credit_manager.py CreditManager.__init__   9 1 0   89%
src/ai_lls_lib/payment/credit_manager.py CreditManager.get_balance   13 1 0   92%
src/ai_lls_lib/payment/credit_manager.py CreditManager.add_credits   12 1 0   92%
src/ai_lls_lib/payment/credit_manager.py CreditManager.deduct_credits   11 0 0   100%
src/ai_lls_lib/payment/credit_manager.py CreditManager.set_credits   14 1 0   93%
src/ai_lls_lib/payment/credit_manager.py CreditManager.set_subscription_state   15 0 0   100%
src/ai_lls_lib/payment/credit_manager.py CreditManager.get_user_payment_info   13 0 0   100%
src/ai_lls_lib/payment/credit_manager.py CreditManager.has_unlimited_access   2 0 0   100%
src/ai_lls_lib/payment/credit_manager.py CreditManager.set_stripe_customer_id   8 1 0   88%
src/ai_lls_lib/payment/credit_manager.py CreditManager.idempotent_credit_grant   12 3 0   75%
src/ai_lls_lib/payment/credit_manager.py CreditManager.idempotent_credit_refund   12 3 0   75%
src/ai_lls_lib/payment/credit_manager.py CreditManager.grant_first_card_bonus   12 3 0   75%
src/ai_lls_lib/payment/credit_manager.py CreditManager.check_and_deduct   11 2 0   82%
src/ai_lls_lib/payment/credit_manager.py (no function)   30 3 2   90%
src/ai_lls_lib/payment/models.py Plan.to_dict   4 0 0   100%
src/ai_lls_lib/payment/models.py Plan.from_stripe_price   22 0 0   100%
src/ai_lls_lib/payment/models.py (no function)   27 0 0   100%
src/ai_lls_lib/payment/stripe_manager.py StripeManager.__init__   7 2 0   71%
src/ai_lls_lib/payment/stripe_manager.py StripeManager.list_plans   17 1 0   94%
src/ai_lls_lib/payment/stripe_manager.py StripeManager.create_setup_intent   7 7 0   0%
src/ai_lls_lib/payment/stripe_manager.py StripeManager.attach_payment_method   13 13 0   0%
src/ai_lls_lib/payment/stripe_manager.py StripeManager.verify_payment_method   7 7 0   0%
src/ai_lls_lib/payment/stripe_manager.py StripeManager.create_subscription_checkout   8 0 0   100%
src/ai_lls_lib/payment/stripe_manager.py StripeManager.charge_prepaid   49 11 0   78%
src/ai_lls_lib/payment/stripe_manager.py StripeManager.customer_has_payment_method   6 6 0   0%
src/ai_lls_lib/payment/stripe_manager.py StripeManager.list_payment_methods   14 3 0   79%
src/ai_lls_lib/payment/stripe_manager.py StripeManager._get_or_create_customer   17 13 0   24%
src/ai_lls_lib/payment/stripe_manager.py StripeManager.create_subscription   10 10 0   0%
src/ai_lls_lib/payment/stripe_manager.py StripeManager.pause_subscription   6 6 0   0%
src/ai_lls_lib/payment/stripe_manager.py StripeManager.resume_subscription   6 6 0   0%
src/ai_lls_lib/payment/stripe_manager.py StripeManager.cancel_subscription   6 6 0   0%
src/ai_lls_lib/payment/stripe_manager.py StripeManager.create_billing_portal_session   6 0 0   100%
src/ai_lls_lib/payment/stripe_manager.py (no function)   28 3 0   89%
src/ai_lls_lib/payment/webhook_processor.py WebhookProcessor.__init__   2 0 0   100%
src/ai_lls_lib/payment/webhook_processor.py WebhookProcessor.verify_and_parse   11 1 0   91%
src/ai_lls_lib/payment/webhook_processor.py WebhookProcessor.process_event   21 0 0   100%
src/ai_lls_lib/payment/webhook_processor.py WebhookProcessor.process_eventbridge_event   11 0 0   100%
src/ai_lls_lib/payment/webhook_processor.py WebhookProcessor._handle_checkout_completed   17 0 0   100%
src/ai_lls_lib/payment/webhook_processor.py WebhookProcessor._handle_subscription_created   17 2 0   88%
src/ai_lls_lib/payment/webhook_processor.py WebhookProcessor._handle_subscription_updated   13 1 0   92%
src/ai_lls_lib/payment/webhook_processor.py WebhookProcessor._record_billing_period   27 10 0   63%
src/ai_lls_lib/payment/webhook_processor.py WebhookProcessor._handle_subscription_deleted   12 2 0   83%
src/ai_lls_lib/payment/webhook_processor.py WebhookProcessor._handle_invoice_paid   4 0 0   100%
src/ai_lls_lib/payment/webhook_processor.py WebhookProcessor._handle_invoice_failed   3 0 0   100%
src/ai_lls_lib/payment/webhook_processor.py WebhookProcessor._handle_payment_intent_succeeded   19 0 0   100%
src/ai_lls_lib/payment/webhook_processor.py WebhookProcessor._handle_dispute_created   8 0 0   100%
src/ai_lls_lib/payment/webhook_processor.py (no function)   33 5 0   85%
src/ai_lls_lib/providers/__init__.py (no function)   4 0 0   100%
src/ai_lls_lib/providers/base.py VerificationProvider.verify_phone   0 0 1   100%
src/ai_lls_lib/providers/base.py (no function)   4 0 0   100%
src/ai_lls_lib/providers/exceptions.py ProviderError.__init__   2 0 0   100%
src/ai_lls_lib/providers/exceptions.py ProviderFailureError.__init__   3 0 0   100%
src/ai_lls_lib/providers/exceptions.py (no function)   7 0 0   100%
src/ai_lls_lib/providers/external.py _env_float   2 0 0   100%
src/ai_lls_lib/providers/external.py _env_int   2 0 0   100%
src/ai_lls_lib/providers/external.py ExternalAPIProvider.__init__   21 0 0   100%
src/ai_lls_lib/providers/external.py ExternalAPIProvider._acquire_token   13 0 0   100%
src/ai_lls_lib/providers/external.py ExternalAPIProvider._check_breaker   8 0 0   100%
src/ai_lls_lib/providers/external.py ExternalAPIProvider._record_success   4 0 0   100%
src/ai_lls_lib/providers/external.py ExternalAPIProvider._record_failure   7 0 0   100%
src/ai_lls_lib/providers/external.py ExternalAPIProvider._backoff   9 2 0   78%
src/ai_lls_lib/providers/external.py ExternalAPIProvider._classify_400   13 2 0   85%
src/ai_lls_lib/providers/external.py ExternalAPIProvider._request   23 0 0   100%
src/ai_lls_lib/providers/external.py ExternalAPIProvider.verify_phone   26 4 0   85%
src/ai_lls_lib/providers/external.py ExternalAPIProvider._map_line_type   3 0 0   100%
src/ai_lls_lib/providers/external.py ExternalAPIProvider.__del__   2 0 0   100%
src/ai_lls_lib/providers/external.py (no function)   28 0 0   100%
Total     1637 184 10   89%

No items found using the specified filter.