| 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% |