Coverage report: 87%

Files Functions Classes

coverage.py v7.13.5, created at 2026-05-06 23:45 +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__   4 0 0   100%
src / ai_lls_lib / core / cache.py DynamoDBCache.get   11 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   14 0 0   100%
src / ai_lls_lib / core / cache.py (no function)   11 0 0   100%
src / ai_lls_lib / core / models.py (no function)   43 0 0   100%
src / ai_lls_lib / core / processor.py BulkProcessor.__init__   1 0 0   100%
src / ai_lls_lib / core / processor.py BulkProcessor.process_csv   31 6 0   81%
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   25 0 0   100%
src / ai_lls_lib / core / processor.py BulkProcessor.process_csv_stream   39 0 0   100%
src / ai_lls_lib / core / processor.py BulkProcessor.generate_results_csv_stream   36 0 0   100%
src / ai_lls_lib / core / processor.py (no function)   14 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   2 0 0   100%
src / ai_lls_lib / core / verifier.py PhoneVerifier._check_dnc   2 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.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)   29 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.charge_prepaid   47 11 0   77%
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)   27 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   12 0 0   100%
src / ai_lls_lib / payment / webhook_processor.py WebhookProcessor._handle_subscription_created   18 2 0   89%
src / ai_lls_lib / payment / webhook_processor.py WebhookProcessor._handle_subscription_updated   16 1 0   94%
src / ai_lls_lib / payment / webhook_processor.py WebhookProcessor._try_renewal_credit_grant   28 10 0   64%
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)   35 5 0   86%
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 (no function)   2 0 0   100%
src / ai_lls_lib / providers / external.py ExternalAPIProvider.__init__   6 0 0   100%
src / ai_lls_lib / providers / external.py ExternalAPIProvider.verify_phone   24 3 0   88%
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)   11 0 0   100%
Total     1355 181 10   87%

No items found using the specified filter.