Coverage report: 85%

Files Functions Classes

coverage.py v7.13.5, created at 2026-03-18 23:17 +0000

File function   statements missing excluded   coverage
backend / app / __init__.py (no function)   0 0 0   100%
backend / app / base_models.py CommonBase.__tablename__   2 0 0   100%
backend / app / base_models.py CommonBase.__init__   1 0 0   100%
backend / app / base_models.py (no function)   12 0 0   100%
backend / app / base_schemas.py serialise_relationships   5 0 0   100%
backend / app / base_schemas.py (no function)   16 0 0   100%
backend / app / config.py get_app_version   4 2 0   50%
backend / app / config.py (no function)   52 0 0   100%
backend / app / core / __init__.py (no function)   0 0 0   100%
backend / app / core / models.py get_setting_value   4 0 0   100%
backend / app / core / models.py User.__init__   22 3 0   86%
backend / app / core / models.py User.name   3 0 0   100%
backend / app / core / models.py User.pending_email_change   4 2 0   50%
backend / app / core / models.py UserToken.is_valid   4 0 0   100%
backend / app / core / models.py UserToken.remaining_seconds   2 0 0   100%
backend / app / core / models.py delete_existing_tokens_of_same_type   2 0 0   100%
backend / app / core / models.py (no function)   73 0 0   100%
backend / app / core / oauth2.py create_access_token   6 0 0   100%
backend / app / core / oauth2.py verify_access_token   11 0 0   100%
backend / app / core / oauth2.py get_current_user   10 0 0   100%
backend / app / core / oauth2.py (no function)   15 0 0   100%
backend / app / core / routers / __init__.py (no function)   3 0 0   100%
backend / app / core / routers / auth.py _assert_not_maintenance   10 2 0   80%
backend / app / core / routers / auth.py login   34 4 0   88%
backend / app / core / routers / auth.py create_user   26 0 0   100%
backend / app / core / routers / auth.py verify_email   16 1 0   94%
backend / app / core / routers / auth.py request_password_reset   12 0 0   100%
backend / app / core / routers / auth.py reset_password   20 5 0   75%
backend / app / core / routers / auth.py (no function)   26 0 0   100%
backend / app / core / routers / settings.py (no function)   3 0 0   100%
backend / app / core / routers / user.py transform_user_data   4 0 0   100%
backend / app / core / routers / user.py invalidate_all_sessions   4 4 0   0%
backend / app / core / routers / user.py send_release_email   14 0 0   100%
backend / app / core / routers / user.py get_latest_user_qualification   4 1 0   75%
backend / app / core / routers / user.py upsert_user_qualification   12 0 0   100%
backend / app / core / routers / user.py get_current_user_profile   1 0 0   100%
backend / app / core / routers / user.py heartbeat   4 0 0   100%
backend / app / core / routers / user.py update_account   34 1 0   97%
backend / app / core / routers / user.py verify_email_change   23 1 0   96%
backend / app / core / routers / user.py check_email_pending   8 8 0   0%
backend / app / core / routers / user.py delete_account   12 4 0   67%
backend / app / core / routers / user.py (no function)   36 0 0   100%
backend / app / core / schemas.py UserQualificationUpsert.validate_experience   4 0 0   100%
backend / app / core / schemas.py UserQualificationUpsert.validate_other_fields   4 0 0   100%
backend / app / core / schemas.py (no function)   131 0 0   100%
backend / app / core / utils.py get_token   1 0 0   100%
backend / app / core / utils.py generate_token   8 0 0   100%
backend / app / core / utils.py send_verification_with_rate_limit   12 0 0   100%
backend / app / core / utils.py send_email_verification_email   1 0 0   100%
backend / app / core / utils.py send_password_reset_email   1 0 0   100%
backend / app / core / utils.py send_email_change_email   1 0 0   100%
backend / app / core / utils.py (no function)   13 0 0   100%
backend / app / data_tables / __init__.py (no function)   0 0 0   100%
backend / app / data_tables / models.py Location.name   8 0 0   100%
backend / app / data_tables / models.py Person.name   1 0 0   100%
backend / app / data_tables / models.py (no function)   134 0 0   100%
backend / app / data_tables / routers.py transform_location   6 0 0   100%
backend / app / data_tables / routers.py download_file   14 4 0   71%
backend / app / data_tables / routers.py (no function)   21 0 0   100%
backend / app / data_tables / schemas.py JobOut.serialize_relationships   1 0 0   100%
backend / app / data_tables / schemas.py InterviewOut.serialize_relationships   1 0 0   100%
backend / app / data_tables / schemas.py SpeculativeApplicationOut.serialize_relationships   1 0 0   100%
backend / app / data_tables / schemas.py (no function)   154 0 0   100%
backend / app / database.py create_db_url   3 0 0   100%
backend / app / database.py get_demo_db   4 0 0   100%
backend / app / database.py get_db   6 1 0   83%
backend / app / database.py (no function)   17 0 0   100%
backend / app / demo / __init__.py (no function)   0 0 0   100%
backend / app / demo / routers.py demo_cleanup   4 0 0   100%
backend / app / demo / routers.py (no function)   8 0 0   100%
backend / app / demo / seed.py _filter_owner   1 0 0   100%
backend / app / demo / seed.py _build_index_map   7 0 0   100%
backend / app / demo / seed.py _remap_with_map   9 1 0   89%
backend / app / demo / seed.py _filter_mappings   10 0 0   100%
backend / app / demo / seed.py seed_demo_data   78 0 0   100%
backend / app / demo / seed.py delete_user   4 0 0   100%
backend / app / demo / seed.py (no function)   15 0 0   100%
backend / app / demo / setup.py setup_demo_schema   14 0 0   100%
backend / app / demo / setup.py seed_demo_ai_prompts   3 1 0   67%
backend / app / demo / setup.py cleanup_stale_demo_users   6 0 0   100%
backend / app / demo / setup.py (no function)   12 0 0   100%
backend / app / emails / __init__.py (no function)   0 0 0   100%
backend / app / emails / email_service.py EmailService.__init__   6 0 0   100%
backend / app / emails / email_service.py EmailService.current_datetime   1 1 0   0%
backend / app / emails / email_service.py EmailService.send_email   17 2 0   88%
backend / app / emails / email_service.py EmailService.send_verification_email   3 2 0   33%
backend / app / emails / email_service.py EmailService.send_email_change_verification   3 3 0   0%
backend / app / emails / email_service.py EmailService.send_password_reset_email   3 3 0   0%
backend / app / emails / email_service.py EmailService.send_password_changed_notification   4 4 0   0%
backend / app / emails / email_service.py EmailService.send_email_change_notification   4 4 0   0%
backend / app / emails / email_service.py EmailService.send_trial_end_notification   4 4 0   0%
backend / app / emails / email_service.py EmailService.send_new_version_email   3 3 0   0%
backend / app / emails / email_service.py EmailService._connect_imap   3 0 0   100%
backend / app / emails / email_service.py EmailService.get_test_emails   5 5 0   0%
backend / app / emails / email_service.py EmailService.clear_test_emails   2 2 0   0%
backend / app / emails / email_service.py EmailService.get_email_ids   25 2 0   92%
backend / app / emails / email_service.py EmailService.get_email_data   49 8 0   84%
backend / app / emails / email_service.py EmailService.get_emails   7 0 0   100%
backend / app / emails / email_service.py EmailService._decode_header   9 0 0   100%
backend / app / emails / email_service.py EmailService.delete_email   12 12 0   0%
backend / app / emails / email_service.py (no function)   39 0 0   100%
backend / app / emails / release_data.py get_release_slides   1 0 0   100%
backend / app / emails / release_data.py (no function)   2 0 0   100%
backend / app / emails / routers / __init__.py (no function)   2 0 0   100%
backend / app / emails / routers / templates.py preview_email_template   5 0 0   100%
backend / app / emails / routers / templates.py (no function)   14 0 0   100%
backend / app / emails / routers / tests.py get_test_emails   4 0 0   100%
backend / app / emails / routers / tests.py get_verification_link   12 0 0   100%
backend / app / emails / routers / tests.py get_reset_link   12 0 0   100%
backend / app / emails / routers / tests.py clear_test_emails   4 0 0   100%
backend / app / emails / routers / tests.py (no function)   13 0 0   100%
backend / app / emails / utils.py clean_email_address   3 0 0   100%
backend / app / emails / utils.py get_user_id_from_email   4 0 0   100%
backend / app / emails / utils.py build_multi_from_query   6 0 0   100%
backend / app / emails / utils.py (no function)   5 0 0   100%
backend / app / geolocation / __init__.py (no function)   0 0 0   100%
backend / app / geolocation / geolocation.py call_geocoding_api   19 0 0   100%
backend / app / geolocation / geolocation.py geocode_location   43 1 0   98%
backend / app / geolocation / geolocation.py (no function)   14 0 0   100%
backend / app / geolocation / routers.py geolocate   1 0 0   100%
backend / app / geolocation / routers.py (no function)   9 0 0   100%
backend / app / job_email_scraping / __init__.py (no function)   0 0 0   100%
backend / app / job_email_scraping / email_parsers / __init__.py (no function)   5 0 0   100%
backend / app / job_email_scraping / email_parsers / indeed.py get_indeed_redirected_url   10 10 0   0%
backend / app / job_email_scraping / email_parsers / indeed.py parse_indeed_job_email   64 3 0   95%
backend / app / job_email_scraping / email_parsers / indeed.py extract_alert_name   9 0 0   100%
backend / app / job_email_scraping / email_parsers / indeed.py (no function)   9 0 0   100%
backend / app / job_email_scraping / email_parsers / linkedin.py parse_linkedin_job_email   68 3 0   96%
backend / app / job_email_scraping / email_parsers / linkedin.py extract_alert_name   5 0 0   100%
backend / app / job_email_scraping / email_parsers / linkedin.py (no function)   7 0 0   100%
backend / app / job_email_scraping / email_parsers / nhs.py parse_nhs_job_email   53 3 0   94%
backend / app / job_email_scraping / email_parsers / nhs.py extract_alert_name   20 0 0   100%
backend / app / job_email_scraping / email_parsers / nhs.py (no function)   9 0 0   100%
backend / app / job_email_scraping / email_parsers / utils.py process_salary   9 3 0   67%
backend / app / job_email_scraping / email_parsers / utils.py remove_style_tags   4 0 0   100%
backend / app / job_email_scraping / email_parsers / utils.py (no function)   9 0 0   100%
backend / app / job_email_scraping / email_parsers / veganjobs.py parse_veganjobs_email   23 1 0   96%
backend / app / job_email_scraping / email_parsers / veganjobs.py extract_alert_name   5 1 0   80%
backend / app / job_email_scraping / email_parsers / veganjobs.py (no function)   6 0 0   100%
backend / app / job_email_scraping / email_scraper.py JobEmailScraper.__init__   4 0 0   100%
backend / app / job_email_scraping / email_scraper.py JobEmailScraper.create_service_log   5 5 0   0%
backend / app / job_email_scraping / email_scraper.py JobEmailScraper.upsert_platform_stat   12 0 0   100%
backend / app / job_email_scraping / email_scraper.py JobEmailScraper.log_service_error   5 0 0   100%
backend / app / job_email_scraping / email_scraper.py JobEmailScraper.get_user_monthly_scrape_count   3 0 0   100%
backend / app / job_email_scraping / email_scraper.py JobEmailScraper.is_user_over_monthly_quota   1 0 0   100%
backend / app / job_email_scraping / email_scraper.py JobEmailScraper.extract_forwarding_email_confirmation   35 6 0   83%
backend / app / job_email_scraping / email_scraper.py JobEmailScraper.get_and_save_email_to_db   19 1 0   95%
backend / app / job_email_scraping / email_scraper.py JobEmailScraper.process_job_result   28 0 0   100%
backend / app / job_email_scraping / email_scraper.py JobEmailScraper.save_job_base_info_to_db   16 0 0   100%
backend / app / job_email_scraping / email_scraper.py JobEmailScraper.update_scraped_job_data   8 0 0   100%
backend / app / job_email_scraping / email_scraper.py JobEmailScraper.copy_existing_entry   6 0 0   100%
backend / app / job_email_scraping / email_scraper.py JobEmailScraper.run_scraping   17 17 0   0%
backend / app / job_email_scraping / email_scraper.py JobEmailScraper.process_emails   31 8 0   74%
backend / app / job_email_scraping / email_scraper.py JobEmailScraper.extract_email_data   16 8 0   50%
backend / app / job_email_scraping / email_scraper.py JobEmailScraper.scrape_jobs   72 17 0   76%
backend / app / job_email_scraping / email_scraper.py (no function)   38 0 0   100%
backend / app / job_email_scraping / filtering.py apply_rule_to_values   25 20 0   20%
backend / app / job_email_scraping / filtering.py job_matches_rule_python   4 1 0   75%
backend / app / job_email_scraping / filtering.py is_job_filtered_out   5 0 0   100%
backend / app / job_email_scraping / filtering.py is_job_favoured   5 2 0   60%
backend / app / job_email_scraping / filtering.py rule_to_sql_predicate   25 25 0   0%
backend / app / job_email_scraping / filtering.py (no function)   9 0 0   100%
backend / app / job_email_scraping / gmail.py extract_forwarding_confirmation_link   5 0 0   100%
backend / app / job_email_scraping / gmail.py extract_gmail_originator   3 0 0   100%
backend / app / job_email_scraping / gmail.py (no function)   3 0 0   100%
backend / app / job_email_scraping / job_scrapers / __init__.py (no function)   6 0 0   100%
backend / app / job_email_scraping / job_scrapers / apify.py ApifyJobScraper.__init__   6 0 0   100%
backend / app / job_email_scraping / job_scrapers / apify.py ApifyJobScraper._start_actor_run   3 0 0   100%
backend / app / job_email_scraping / job_scrapers / apify.py ApifyJobScraper._wait_for_data   13 0 0   100%
backend / app / job_email_scraping / job_scrapers / apify.py ApifyJobScraper._retrieve_data   4 0 0   100%
backend / app / job_email_scraping / job_scrapers / apify.py ApifyJobScraper._process_job_data   1 0 0   100%
backend / app / job_email_scraping / job_scrapers / apify.py ApifyJobScraper.scrape_job   10 0 0   100%
backend / app / job_email_scraping / job_scrapers / apify.py (no function)   17 0 0   100%
backend / app / job_email_scraping / job_scrapers / brightdata.py BrightdataJobScraper.__init__   6 0 0   100%
backend / app / job_email_scraping / job_scrapers / brightdata.py BrightdataJobScraper._get_snapshot   11 0 0   100%
backend / app / job_email_scraping / job_scrapers / brightdata.py BrightdataJobScraper._wait_for_data   17 0 0   100%
backend / app / job_email_scraping / job_scrapers / brightdata.py BrightdataJobScraper._retrieve_data   14 0 0   100%
backend / app / job_email_scraping / job_scrapers / brightdata.py BrightdataJobScraper._process_job_data   1 0 0   100%
backend / app / job_email_scraping / job_scrapers / brightdata.py BrightdataJobScraper.scrape_job   4 0 0   100%
backend / app / job_email_scraping / job_scrapers / brightdata.py (no function)   16 0 0   100%
backend / app / job_email_scraping / job_scrapers / indeed.py IndeedBrightdataJobScraper._process_job_data   10 10 0   0%
backend / app / job_email_scraping / job_scrapers / indeed.py IndeedApifyJobScraper._process_job_data   5 5 0   0%
backend / app / job_email_scraping / job_scrapers / indeed.py (no function)   24 6 0   75%
backend / app / job_email_scraping / job_scrapers / linkedin.py LinkedinBrightdataJobScraper._process_job_data   11 11 0   0%
backend / app / job_email_scraping / job_scrapers / linkedin.py (no function)   12 3 0   75%
backend / app / job_email_scraping / job_scrapers / nhs.py NhsJobScraper.__init__   2 2 0   0%
backend / app / job_email_scraping / job_scrapers / nhs.py NhsJobScraper.scrape_job   33 33 0   0%
backend / app / job_email_scraping / job_scrapers / nhs.py (no function)   13 3 0   77%
backend / app / job_email_scraping / job_scrapers / veganjobs.py VeganJobsJobScraper.__init__   3 3 0   0%
backend / app / job_email_scraping / job_scrapers / veganjobs.py VeganJobsJobScraper.scrape_job_listing   20 20 0   0%
backend / app / job_email_scraping / job_scrapers / veganjobs.py VeganJobsJobScraper.scrape_job   10 10 0   0%
backend / app / job_email_scraping / job_scrapers / veganjobs.py (no function)   13 3 0   77%
backend / app / job_email_scraping / location_parser.py LocationParser.__init__   1 0 0   100%
backend / app / job_email_scraping / location_parser.py LocationParser.extract_attendance_type   13 0 0   100%
backend / app / job_email_scraping / location_parser.py LocationParser.remove_attendance_indicators   23 0 0   100%
backend / app / job_email_scraping / location_parser.py LocationParser.parse_location   8 0 0   100%
backend / app / job_email_scraping / location_parser.py (no function)   6 0 0   100%
backend / app / job_email_scraping / migrate_email_ids.py run_migration   15 15 0   0%
backend / app / job_email_scraping / migrate_email_ids.py (no function)   12 12 0   0%
backend / app / job_email_scraping / models.py JobEmailScrapingServiceLog.__init__   3 0 0   100%
backend / app / job_email_scraping / models.py JobEmailScrapingServiceLog.job_to_process_n   1 0 0   100%
backend / app / job_email_scraping / models.py JobEmailScrapingServiceLog.job_scrape_succeeded_n   1 0 0   100%
backend / app / job_email_scraping / models.py JobEmailScrapingServiceLog.job_scrape_failed_n   1 0 0   100%
backend / app / job_email_scraping / models.py JobEmailScrapingServiceLog.job_scrape_copied_n   1 0 0   100%
backend / app / job_email_scraping / models.py JobEmailScrapingServiceLog.job_scrape_skipped_n   1 0 0   100%
backend / app / job_email_scraping / models.py JobEmailScrapingServiceLog.job_found_n   1 0 0   100%
backend / app / job_email_scraping / models.py JobEmailScrapingServiceLog.email_saved_n   1 0 0   100%
backend / app / job_email_scraping / models.py JobEmailScrapingServiceLog.email_skipped_n   1 0 0   100%
backend / app / job_email_scraping / models.py JobEmailScrapingServiceLog.job_scrape_filtered_n   1 1 0   0%
backend / app / job_email_scraping / models.py JobEmailScrapingPlatformStat.__init__   10 0 0   100%
backend / app / job_email_scraping / models.py Filter.name   2 0 0   100%
backend / app / job_email_scraping / models.py (no function)   129 0 0   100%
backend / app / job_email_scraping / routers / __init__.py (no function)   6 0 0   100%
backend / app / job_email_scraping / routers / forwarding_confirmation.py get_pending_confirmation_links   4 0 0   100%
backend / app / job_email_scraping / routers / forwarding_confirmation.py update_confirmation_link   8 0 0   100%
backend / app / job_email_scraping / routers / forwarding_confirmation.py (no function)   12 0 0   100%
backend / app / job_email_scraping / routers / job_email.py get_job_emails_paged   16 1 0   94%
backend / app / job_email_scraping / routers / job_email.py get_job_emails_by_scraped_job   4 0 0   100%
backend / app / job_email_scraping / routers / job_email.py (no function)   15 0 0   100%
backend / app / job_email_scraping / routers / scraped_job.py get_all   38 12 0   68%
backend / app / job_email_scraping / routers / scraped_job.py get_scraped_jobs_by_email   4 0 0   100%
backend / app / job_email_scraping / routers / scraped_job.py get_scraped_jobs_filtered_by_filter   2 2 0   0%
backend / app / job_email_scraping / routers / scraped_job.py (no function)   20 0 0   100%
backend / app / job_email_scraping / routers / scraper_service.py start_scraper   1 1 0   0%
backend / app / job_email_scraping / routers / scraper_service.py stop_scraper   1 1 0   0%
backend / app / job_email_scraping / routers / scraper_service.py scraper_status   1 1 0   0%
backend / app / job_email_scraping / routers / scraper_service.py get_scraper_logs   1 1 0   0%
backend / app / job_email_scraping / routers / scraper_service.py (no function)   15 0 0   100%
backend / app / job_email_scraping / routers / scraping_filter.py update_scraping_filter   15 0 0   100%
backend / app / job_email_scraping / routers / scraping_filter.py delete_scraping_filter   7 0 0   100%
backend / app / job_email_scraping / routers / scraping_filter.py (no function)   13 0 0   100%
backend / app / job_email_scraping / routers / service_log.py get_service_logs_by_date_range   1 0 0   100%
backend / app / job_email_scraping / routers / service_log.py get_latest   1 0 0   100%
backend / app / job_email_scraping / routers / service_log.py (no function)   13 0 0   100%
backend / app / job_email_scraping / run_email_scraper.py main   14 0 0   100%
backend / app / job_email_scraping / run_email_scraper.py (no function)   6 1 0   83%
backend / app / job_email_scraping / schemas.py JobEmailOut.serialize_relationships   1 0 0   100%
backend / app / job_email_scraping / schemas.py ScrapedJobOut.serialize_relationships   1 0 0   100%
backend / app / job_email_scraping / schemas.py JobEmailScrapingServiceLogOut.serialize_relationships   1 0 0   100%
backend / app / job_email_scraping / schemas.py ScrapingFilterOut.serialize_relationships   1 0 0   100%
backend / app / job_email_scraping / schemas.py (no function)   158 0 0   100%
backend / app / job_rating / __init__.py (no function)   0 0 0   100%
backend / app / job_rating / chatgpt.py openai_query   13 13 0   0%
backend / app / job_rating / chatgpt.py (no function)   9 0 0   100%
backend / app / job_rating / claude.py claude_query   15 15 0   0%
backend / app / job_rating / claude.py (no function)   11 0 0   100%
backend / app / job_rating / models.py JobRating.__init__   2 0 0   100%
backend / app / job_rating / models.py JobRatingServiceLog.__init__   7 0 0   100%
backend / app / job_rating / models.py (no function)   44 0 0   100%
backend / app / job_rating / prompts.py _or_not_provided   1 0 0   100%
backend / app / job_rating / prompts.py create_system_prompt_with_profile   2 0 0   100%
backend / app / job_rating / prompts.py create_job_only_prompt   1 0 0   100%
backend / app / job_rating / prompts.py seed_ai_prompts   8 0 0   100%
backend / app / job_rating / prompts.py (no function)   25 12 0   52%
backend / app / job_rating / routers / __init__.py (no function)   4 0 0   100%
backend / app / job_rating / routers / job_rating.py (no function)   4 0 0   100%
backend / app / job_rating / routers / llm_prompt.py get_all_ai_system_prompts   1 1 0   0%
backend / app / job_rating / routers / llm_prompt.py (no function)   9 0 0   100%
backend / app / job_rating / routers / service_log.py get_service_logs_by_date_range   1 0 0   100%
backend / app / job_rating / routers / service_log.py get_latest   1 0 0   100%
backend / app / job_rating / routers / service_log.py (no function)   13 0 0   100%
backend / app / job_rating / routers / service_runner.py start_scraper   1 1 0   0%
backend / app / job_rating / routers / service_runner.py stop_scraper   1 1 0   0%
backend / app / job_rating / routers / service_runner.py scraper_status   1 1 0   0%
backend / app / job_rating / routers / service_runner.py get_scraper_logs   1 1 0   0%
backend / app / job_rating / routers / service_runner.py (no function)   15 0 0   100%
backend / app / job_rating / schemas.py (no function)   35 0 0   100%
backend / app / job_rating / scraped_job_rating.py ensure_length_limit   9 1 0   89%
backend / app / job_rating / scraped_job_rating.py get_rating_active_users   1 0 0   100%
backend / app / job_rating / scraped_job_rating.py get_user_unrated_scraped_jobs   1 0 0   100%
backend / app / job_rating / scraped_job_rating.py ScrapedJobRater.__init__   1 0 0   100%
backend / app / job_rating / scraped_job_rating.py ScrapedJobRater.run   24 0 0   100%
backend / app / job_rating / scraped_job_rating.py ScrapedJobRater._process_user   13 0 0   100%
backend / app / job_rating / scraped_job_rating.py ScrapedJobRater._rate_job   51 2 0   96%
backend / app / job_rating / scraped_job_rating.py (no function)   19 0 0   100%
backend / app / main.py lifespan   2 2 0   0%
backend / app / main.py get_allowed_origins   3 1 0   67%
backend / app / main.py demo_schema_middleware   11 2 0   82%
backend / app / main.py read_root   1 1 0   0%
backend / app / main.py health_check   1 1 0   0%
backend / app / main.py (no function)   65 0 0   100%
backend / app / models.py (no function)   4 0 0   100%
backend / app / payments / __init__.py (no function)   6 0 0   100%
backend / app / payments / checkout.py build_checkout_params   9 0 0   100%
backend / app / payments / checkout.py (no function)   3 0 0   100%
backend / app / payments / customer.py create_customer   6 0 0   100%
backend / app / payments / customer.py get_or_create_stripe_customer   25 0 0   100%
backend / app / payments / customer.py (no function)   9 0 0   100%
backend / app / payments / routers / __init__.py (no function)   2 0 0   100%
backend / app / payments / routers / routers.py create_subscription_checkout   14 14 0   0%
backend / app / payments / routers / routers.py stripe_webhook   15 6 0   60%
backend / app / payments / routers / routers.py create_portal_session   15 15 0   0%
backend / app / payments / routers / routers.py (no function)   19 0 0   100%
backend / app / payments / routers / test_routers.py delete_all_stripe_customers   0 0 83   100%
backend / app / payments / routers / test_routers.py advance_test_clock   0 0 92   100%
backend / app / payments / routers / test_routers.py (no function)   12 0 7   100%
backend / app / payments / setup.py setup_stripe_products   3 0 0   100%
backend / app / payments / setup.py (no function)   4 1 0   75%
backend / app / payments / webhooks.py process_subscription_event   29 2 0   93%
backend / app / payments / webhooks.py get_subscription_status   9 0 0   100%
backend / app / payments / webhooks.py (no function)   9 0 0   100%
backend / app / resources.py (no function)   3 0 0   100%
backend / app / routers / __init__.py (no function)   2 0 0   100%
backend / app / routers / export.py query_for_owner   1 0 0   100%
backend / app / routers / export.py write_csv   6 0 0   100%
backend / app / routers / export.py get_model_rows   1 0 0   100%
backend / app / routers / export.py export_all   19 0 0   100%
backend / app / routers / export.py (no function)   20 0 0   100%
backend / app / routers / others.py get_currencies   1 1 0   0%
backend / app / routers / others.py get_countries   1 1 0   0%
backend / app / routers / others.py get_demo_credentials   4 4 0   0%
backend / app / routers / others.py get_config   1 1 0   0%
backend / app / routers / others.py get_status   1 1 0   0%
backend / app / routers / others.py (no function)   18 0 0   100%
backend / app / routers / utility.py filter_out_non_owned   32 3 0   91%
backend / app / routers / utility.py filter_query   13 2 0   85%
backend / app / routers / utility.py filter_query.convert_value   14 5 0   64%
backend / app / routers / utility.py assert_admin   2 0 0   100%
backend / app / routers / utility.py generate_data_table_crud_router   24 0 0   100%
backend / app / routers / utility.py generate_data_table_crud_router.check_admin   2 0 0   100%
backend / app / routers / utility.py generate_data_table_crud_router.check_ownership   2 0 0   100%
backend / app / routers / utility.py generate_data_table_crud_router.upsert_many_to_many   16 7 0   56%
backend / app / routers / utility.py generate_data_table_crud_router.get_all   16 1 0   94%
backend / app / routers / utility.py generate_data_table_crud_router.get_one   8 0 0   100%
backend / app / routers / utility.py generate_data_table_crud_router.create   33 6 0   82%
backend / app / routers / utility.py generate_data_table_crud_router.update   36 3 0   92%
backend / app / routers / utility.py generate_data_table_crud_router.delete   13 0 0   100%
backend / app / routers / utility.py (no function)   14 0 0   100%
backend / app / service_runner / __init__.py (no function)   0 0 0   100%
backend / app / service_runner / models.py (no function)   6 0 0   100%
backend / app / service_runner / routers.py start_scraper   6 6 0   0%
backend / app / service_runner / routers.py stop_scraper   6 6 0   0%
backend / app / service_runner / routers.py scraper_status   2 2 0   0%
backend / app / service_runner / routers.py get_service_logs   45 45 0   0%
backend / app / service_runner / routers.py get_service_logs_by_date_range   13 0 0   100%
backend / app / service_runner / routers.py get_latest   5 0 0   100%
backend / app / service_runner / routers.py (no function)   15 0 0   100%
backend / app / service_runner / service_runner.py ServiceRunner.__init__   13 0 0   100%
backend / app / service_runner / service_runner.py ServiceRunner.start_runner   12 12 0   0%
backend / app / service_runner / service_runner.py ServiceRunner.stop_runner   6 6 0   0%
backend / app / service_runner / service_runner.py ServiceRunner._run_service   35 35 0   0%
backend / app / service_runner / service_runner.py ServiceRunner.status   1 1 0   0%
backend / app / service_runner / service_runner.py (no function)   11 0 0   100%
backend / app / utils.py hash_password   1 0 0   100%
backend / app / utils.py verify_password   1 0 0   100%
backend / app / utils.py hash_token   1 0 0   100%
backend / app / utils.py clean_email   1 0 0   100%
backend / app / utils.py open_json   4 0 0   100%
backend / app / utils.py super_getattr   4 4 0   0%
backend / app / utils.py super_hasattr   6 6 0   0%
backend / app / utils.py AppLogger.get_logger   27 2 0   93%
backend / app / utils.py AppLogger.create_service_logger   3 0 0   100%
backend / app / utils.py get_last_log_line   27 2 0   93%
backend / app / utils.py (no function)   24 0 0   100%
Total     4453 647 182   85%

No items found using the specified filter.