Coverage report: 100%

Files Functions Classes

coverage.py v7.14.3, created at 2026-06-28 23:33 +0000

File function   statements missing excluded   coverage
app/aircraft/__init__.py (no function)   0 0 0   100%
app/aircraft/gps_import.py _load_airports   16 0 0   100%
app/aircraft/gps_import.py _reset_airports_cache   1 0 0   100%
app/aircraft/gps_import.py _haversine_km   7 0 0   100%
app/aircraft/gps_import.py detect_format   10 0 0   100%
app/aircraft/gps_import.py classify_track   14 0 0   100%
app/aircraft/gps_import.py _extract_icao_hints   4 0 0   100%
app/aircraft/gps_import.py _parse_gpx   29 0 0   100%
app/aircraft/gps_import.py _parse_garmin_csv   47 0 0   100%
app/aircraft/gps_import.py _parse_kml   54 0 0   100%
app/aircraft/gps_import.py parse_gps_file   6 0 0   100%
app/aircraft/gps_import.py merge_and_sort   6 0 0   100%
app/aircraft/gps_import.py _split_into_raw_groups   31 0 0   100%
app/aircraft/gps_import.py _count_landings   8 0 0   100%
app/aircraft/gps_import.py detect_segments   23 0 0   100%
app/aircraft/gps_import.py resolve_icao   10 0 0   100%
app/aircraft/gps_import.py round_flight_time   6 0 0   100%
app/aircraft/gps_import.py downsample_track   8 0 0   100%
app/aircraft/gps_import.py build_geojson   2 0 0   100%
app/aircraft/gps_import.py (no function)   76 0 0   100%
app/aircraft/routes.py _tenant_id   4 0 0   100%
app/aircraft/routes.py _get_aircraft_or_404   4 0 0   100%
app/aircraft/routes.py _get_component_or_404   4 0 0   100%
app/aircraft/routes.py list_aircraft   15 0 0   100%
app/aircraft/routes.py new_aircraft   3 0 0   100%
app/aircraft/routes.py detail   33 0 0   100%
app/aircraft/routes.py edit_aircraft   4 0 0   100%
app/aircraft/routes.py _save_aircraft   83 0 0   100%
app/aircraft/routes.py delete_aircraft   7 0 0   100%
app/aircraft/routes.py quick_add_components   13 0 0   100%
app/aircraft/routes.py new_component   4 0 0   100%
app/aircraft/routes.py edit_component   5 0 0   100%
app/aircraft/routes.py _save_component   49 0 0   100%
app/aircraft/routes.py _save_component._parse_date   7 0 0   100%
app/aircraft/routes.py delete_component   8 0 0   100%
app/aircraft/routes.py _point_in_polygon   10 0 0   100%
app/aircraft/routes.py wb_config   70 0 0   100%
app/aircraft/routes.py wb_config._f   8 0 0   100%
app/aircraft/routes.py wb_list   6 0 0   100%
app/aircraft/routes.py wb_entry   76 0 0   100%
app/aircraft/routes.py wb_entry_delete   10 0 0   100%
app/aircraft/routes.py _gps_tmp_dir   4 0 0   100%
app/aircraft/routes.py _segment_to_dict   1 0 0   100%
app/aircraft/routes.py _linked_pilot_entries   6 0 0   100%
app/aircraft/routes.py _load_segment_geojson   5 0 0   100%
app/aircraft/routes.py _segment_for_session   9 0 0   100%
app/aircraft/routes.py gps_import_upload   51 0 0   100%
app/aircraft/routes.py gps_import_review   45 0 0   100%
app/aircraft/routes.py _gps_import_create_segment   55 0 0   100%
app/aircraft/routes.py _gps_cleanup   12 0 0   100%
app/aircraft/routes.py gps_import_confirm_one   90 0 0   100%
app/aircraft/routes.py gps_import_prefill_segment   21 0 0   100%
app/aircraft/routes.py gps_import_history   3 0 0   100%
app/aircraft/routes.py gps_import_rollback   13 0 0   100%
app/aircraft/routes.py flight_detail   9 0 0   100%
app/aircraft/routes.py flight_tracks   7 0 0   100%
app/aircraft/routes.py flight_tracks_gif   17 0 0   100%
app/aircraft/routes.py _photo_folder   2 0 0   100%
app/aircraft/routes.py _save_photo_file   10 0 0   100%
app/aircraft/routes.py _trash_photo_file   15 0 0   100%
app/aircraft/routes.py _renumber_photos   17 0 0   100%
app/aircraft/routes.py upload_photo   27 0 0   100%
app/aircraft/routes.py serve_photo   9 0 0   100%
app/aircraft/routes.py delete_photo   16 0 0   100%
app/aircraft/routes.py reorder_photos   17 0 0   100%
app/aircraft/routes.py (no function)   135 0 0   100%
app/airworthiness/routes.py _tenant_id   4 0 0   100%
app/airworthiness/routes.py _get_aircraft_or_404   4 0 0   100%
app/airworthiness/routes.py _get_node_or_404   4 0 0   100%
app/airworthiness/routes.py _get_doc_or_404   7 0 0   100%
app/airworthiness/routes.py _get_stc_or_404   4 0 0   100%
app/airworthiness/routes.py _status_for   1 0 0   100%
app/airworthiness/routes.py dashboard   24 0 0   100%
app/airworthiness/routes.py trigger_sync   11 0 0   100%
app/airworthiness/routes.py add_node   14 0 0   100%
app/airworthiness/routes.py delete_node   6 0 0   100%
app/airworthiness/routes.py add_document   18 0 0   100%
app/airworthiness/routes.py delete_document   9 0 0   100%
app/airworthiness/routes.py update_status   20 0 0   100%
app/airworthiness/routes.py add_stc   9 0 0   100%
app/airworthiness/routes.py delete_stc   6 0 0   100%
app/airworthiness/routes.py (no function)   52 0 0   100%
app/airworthiness_sync.py _build_tree_path   1 0 0   100%
app/airworthiness_sync.py _fetch_references   11 0 0   100%
app/airworthiness_sync.py _easa_doc_url   2 0 0   100%
app/airworthiness_sync.py _process_node   23 0 0   100%
app/airworthiness_sync.py sync_aircraft   13 0 0   100%
app/airworthiness_sync.py sync_all_nodes   33 0 0   100%
app/airworthiness_sync.py (no function)   21 0 0   100%
app/auth/__init__.py (no function)   0 0 0   100%
app/auth/routes.py _sl   1 0 0   100%
app/auth/routes.py _ip_backoff_delay   4 0 0   100%
app/auth/routes.py _increment_ip_failures   3 0 0   100%
app/auth/routes.py _clear_ip_failures   1 0 0   100%
app/auth/routes.py _check_account_locked   9 0 0   100%
app/auth/routes.py _increment_account_failures   3 0 0   100%
app/auth/routes.py _lock_account   4 0 0   100%
app/auth/routes.py _clear_account_failures   2 0 0   100%
app/auth/routes.py _no_users   1 0 0   100%
app/auth/routes.py _is_demo   1 0 0   100%
app/auth/routes.py login   14 0 0   100%
app/auth/routes.py _login_post   6 0 0   100%
app/auth/routes.py _login_credentials   51 0 0   100%
app/auth/routes.py _login_totp   22 0 0   100%
app/auth/routes.py _login_totp_enrol   21 0 0   100%
app/auth/routes.py logout   5 0 0   100%
app/auth/routes.py _wizard_phase   7 0 0   100%
app/auth/routes.py _next_step   7 0 9   100%
app/auth/routes.py setup   52 0 0   100%
app/auth/routes.py _setup_account   20 0 0   100%
app/auth/routes.py _setup_totp   16 0 0   100%
app/auth/routes.py _setup_operating_model   11 0 0   100%
app/auth/routes.py _setup_aircraft_count   17 0 0   100%
app/auth/routes.py _setup_org_name   9 0 0   100%
app/auth/routes.py _setup_co_owners   14 0 0   100%
app/auth/routes.py _setup_finish   55 0 0   100%
app/auth/routes.py _clear_setup_session   2 0 0   100%
app/auth/routes.py profile   18 0 0   100%
app/auth/routes.py _profile_update_name   5 0 0   100%
app/auth/routes.py _profile_change_password   17 0 0   100%
app/auth/routes.py _profile_setup_totp   5 0 0   100%
app/auth/routes.py _profile_confirm_totp   16 0 0   100%
app/auth/routes.py _profile_disable_totp   13 0 0   100%
app/auth/routes.py reset_password   24 0 3   100%
app/auth/routes.py (no function)   68 0 0   100%
app/config/__init__.py (no function)   0 0 0   100%
app/config/routes.py _derive_key   3 0 0   100%
app/config/routes.py _encrypt_bytes   5 0 0   100%
app/config/routes.py _get_alembic_head   5 0 0   100%
app/config/routes.py _parse_gatus_env   8 0 0   100%
app/config/routes.py run_backup   43 0 0   100%
app/config/routes.py _add_uploads_to_zip   5 0 0   100%
app/config/routes.py _pg_dump   9 0 0   100%
app/config/routes.py _block_in_demo   12 0 0   100%
app/config/routes.py index   63 0 0   100%
app/config/routes.py update_tenant_slug   45 0 2   100%
app/config/routes.py update_map_tiles   13 0 0   100%
app/config/routes.py run_backup_now   8 0 0   100%
app/config/routes.py update_profile   30 0 1   100%
app/config/routes.py test_email   14 0 1   100%
app/config/routes.py check_version   13 0 0   100%
app/config/routes.py trigger_upgrade   21 0 0   100%
app/config/routes.py upgrade_status   25 0 0   100%
app/config/routes.py tenant_list   9 0 0   100%
app/config/routes.py tenant_create   29 0 0   100%
app/config/routes.py tenant_toggle_active   10 0 0   100%
app/config/routes.py tenant_reset_owner_password   19 0 0   100%
app/config/routes.py notification_preferences   55 0 0   100%
app/config/routes.py notification_preferences._user_has_cap   1 0 0   100%
app/config/routes.py backfill_aircraft_type_icao   12 0 0   100%
app/config/routes.py gatus_badge   19 0 0   100%
app/config/routes.py (no function)   69 0 0   100%
app/demo/__init__.py (no function)   1 0 0   100%
app/demo/routes.py _busy_window_minutes   4 0 0   100%
app/demo/routes.py _fix_stale_demo_session   5 0 0   100%
app/demo/routes.py enter   26 0 0   100%
app/demo/routes.py _slot_user_id   11 0 0   100%
app/demo/routes.py _touch_slot   2 0 0   100%
app/demo/routes.py next_wipe   2 0 0   100%
app/demo/routes.py demo_has_recent_activity   2 0 0   100%
app/demo/routes.py (no function)   22 0 0   100%
app/documents/__init__.py (no function)   0 0 0   100%
app/documents/routes.py _tenant_id   4 0 0   100%
app/documents/routes.py _get_tenant   4 0 1   100%
app/documents/routes.py _get_aircraft_or_404   4 0 0   100%
app/documents/routes.py _get_aircraft_document_or_404   4 0 0   100%
app/documents/routes.py _delete_file   18 0 0   100%
app/documents/routes.py _resolve_component   9 0 0   100%
app/documents/routes.py _save_upload   9 0 0   100%
app/documents/routes.py _ensure_tenant_slug   11 0 0   100%
app/documents/routes.py _safe_path_component   1 0 0   100%
app/documents/routes.py _safe_join   5 0 0   100%
app/documents/routes.py _save_upload_canonical   20 0 0   100%
app/documents/routes.py _current_role   2 0 0   100%
app/documents/routes.py _doc_broken   2 0 0   100%
app/documents/routes.py title_suggestions   15 0 0   100%
app/documents/routes.py list_documents   11 0 0   100%
app/documents/routes.py upload_document   44 0 0   100%
app/documents/routes.py upload_document._re_render   3 0 0   100%
app/documents/routes.py edit_document   35 0 0   100%
app/documents/routes.py delete_document   8 0 0   100%
app/documents/routes.py download_all_documents   25 0 0   100%
app/documents/routes.py upload_insurance_cert   21 0 0   100%
app/documents/routes.py upload_pilot_document   27 0 0   100%
app/documents/routes.py delete_pilot_document   9 0 0   100%
app/documents/routes.py list_reconcile   15 0 0   100%
app/documents/routes.py scan_documents   60 0 0   100%
app/documents/routes.py rename_reconcile_folder   69 0 0   100%
app/documents/routes.py import_reconcile   26 0 0   100%
app/documents/routes.py ignore_reconcile   6 0 0   100%
app/documents/routes.py (no function)   87 0 0   100%
app/expenses/__init__.py (no function)   0 0 0   100%
app/expenses/routes.py _tenant_id   4 0 0   100%
app/expenses/routes.py _get_aircraft_or_404   4 0 0   100%
app/expenses/routes.py _get_expense_or_404   4 0 0   100%
app/expenses/routes.py _compute_stats   10 0 0   100%
app/expenses/routes.py list_expenses   15 0 0   100%
app/expenses/routes.py add_expense   8 0 0   100%
app/expenses/routes.py edit_expense   9 0 0   100%
app/expenses/routes.py delete_expense   6 0 0   100%
app/expenses/routes.py _validate_and_save   44 0 0   100%
app/expenses/routes.py (no function)   32 0 0   100%
app/extensions.py _rate_limiting_disabled   1 0 0   100%
app/extensions.py (no function)   7 0 0   100%
app/flights/__init__.py (no function)   0 0 0   100%
app/flights/routes.py _openaip_key   2 0 0   100%
app/flights/routes.py _tenant_id   4 0 0   100%
app/flights/routes.py _check_flight_hour_milestone   12 0 0   100%
app/flights/routes.py _get_aircraft_or_404   4 0 0   100%
app/flights/routes.py _get_flight_or_404   7 0 0   100%
app/flights/routes.py _save_upload   8 0 0   100%
app/flights/routes.py _delete_upload   7 0 0   100%
app/flights/routes.py _nature_suggestions   2 0 0   100%
app/flights/routes.py _parse_gps_upload   19 0 0   100%
app/flights/routes.py _find_duplicate_flight   21 0 0   100%
app/flights/routes.py _get_counter_hint   4 0 0   100%
app/flights/routes.py _ac_category   1 0 0   100%
app/flights/routes.py serve_upload   16 0 0   100%
app/flights/routes.py fleet_flights   5 0 0   100%
app/flights/routes.py list_flights   4 0 0   100%
app/flights/routes.py component_logbook   21 0 0   100%
app/flights/routes.py log_flight   19 0 0   100%
app/flights/routes.py edit_flight   11 0 0   100%
app/flights/routes.py flight_track_image   17 0 0   100%
app/flights/routes.py flight_track_gif   17 0 0   100%
app/flights/routes.py registration_lookup   17 0 0   100%
app/flights/routes.py registration_lookup._norm   1 0 0   100%
app/flights/routes.py parse_gps_api   7 0 0   100%
app/flights/routes.py _suggested_aircraft_for_device   4 0 0   100%
app/flights/routes.py _check_gps_duplicate   7 0 0   100%
app/flights/routes.py _handle_log_flight_post   334 0 0   100%
app/flights/routes.py _handle_log_flight_post._parse_dec   7 0 0   100%
app/flights/routes.py _render_form   8 0 0   100%
app/flights/routes.py delete_flight   12 0 0   100%
app/flights/routes.py (no function)   78 0 0   100%
app/hangar/__init__.py (no function)   0 0 0   100%
app/hangar/routes.py secret   1 0 0   100%
app/hangar/routes.py (no function)   5 0 0   100%
app/init.py _aviation_day_msgid   4 0 0   100%
app/init.py _set_sqlite_fk_pragma   4 0 0   100%
app/init.py _drop_and_restore_schema   21 0 0   100%
app/init.py _easa_sync_loop   23 0 0   100%
app/init.py _start_easa_sync_scheduler   3 0 0   100%
app/init.py _parse_notification_time   12 0 0   100%
app/init.py _notification_daily_loop   16 0 0   100%
app/init.py _start_notification_scheduler   4 0 0   100%
app/init.py create_app   146 0 0   100%
app/init.py create_app._get_locale   12 0 0   100%
app/init.py create_app._generate_csp_nonce   1 0 0   100%
app/init.py create_app._csp_nonce   1 0 0   100%
app/init.py create_app._security_headers   13 0 0   100%
app/init.py create_app._airport_name_filter   3 0 0   100%
app/init.py create_app.pwa_manifest   2 0 0   100%
app/init.py create_app.service_worker   9 0 0   100%
app/init.py create_app.api_check_flight_duplicate   29 0 0   100%
app/init.py create_app.airport_search   16 0 0   100%
app/init.py create_app.aircraft_type_search   18 0 0   100%
app/init.py create_app._current_theme   9 0 0   100%
app/init.py create_app.inject_globals   51 0 0   100%
app/init.py create_app.forbidden   1 0 0   100%
app/init.py create_app.not_found   1 0 0   100%
app/init.py create_app.internal_error   6 0 0   100%
app/init.py create_app.index   90 0 0   100%
app/init.py create_app.not_yet_implemented   2 0 0   100%
app/init.py create_app.set_language   17 0 0   100%
app/init.py create_app.set_theme   17 0 0   100%
app/init.py create_app.robots_txt   1 0 0   100%
app/init.py create_app.favicon   1 0 0   100%
app/init.py create_app.health   1 0 0   100%
app/init.py create_app.health_ready   11 0 0   100%
app/init.py create_app.check_empty_db_command   12 0 0   100%
app/init.py create_app.restore_backup_command   66 0 0   100%
app/init.py create_app.backup_now_command   8 0 0   100%
app/init.py create_app.reset_db_command   6 0 0   100%
app/init.py create_app.seed_demo_command   12 0 0   100%
app/init.py _validate_config   72 0 0   100%
app/init.py (no function)   29 0 3   100%
app/log_redaction.py redact_sensitive_path   1 0 0   100%
app/log_redaction.py (no function)   3 0 0   100%
app/maintenance/__init__.py (no function)   0 0 0   100%
app/maintenance/routes.py _tenant_id   4 0 0   100%
app/maintenance/routes.py _get_aircraft_or_404   4 0 0   100%
app/maintenance/routes.py _get_trigger_or_404   4 0 0   100%
app/maintenance/routes.py fleet_overview   34 0 0   100%
app/maintenance/routes.py fleet_overview._trigger_sort_key   3 0 0   100%
app/maintenance/routes.py list_triggers   11 0 0   100%
app/maintenance/routes.py new_trigger   4 0 0   100%
app/maintenance/routes.py edit_trigger   5 0 0   100%
app/maintenance/routes.py _save_trigger   60 0 0   100%
app/maintenance/routes.py delete_trigger   7 0 0   100%
app/maintenance/routes.py service_trigger   44 0 0   100%
app/maintenance/routes.py (no function)   37 0 0   100%
app/models.py User.display_name   1 0 0   100%
app/models.py UserInvitation.is_expired   4 0 0   100%
app/models.py UserInvitation.is_accepted   1 0 0   100%
app/models.py PasswordResetToken.is_expired   4 0 0   100%
app/models.py PasswordResetToken.is_used   1 0 0   100%
app/models.py Aircraft.cover_photo   1 0 0   100%
app/models.py Aircraft.total_engine_hours   2 0 0   100%
app/models.py Aircraft.total_flight_hours   2 0 0   100%
app/models.py Aircraft.is_grounded   4 0 0   100%
app/models.py Aircraft.insurance_status   9 0 0   100%
app/models.py PilotLogbookEntry.total_flight_time   3 0 0   100%
app/models.py MaintenanceTrigger.status   17 0 0   100%
app/models.py MaintenanceTrigger.last_record   1 0 0   100%
app/models.py Document.owner_type   7 0 0   100%
app/models.py Document.is_image   1 0 0   100%
app/models.py Document.is_pdf   1 0 0   100%
app/models.py Document.is_expiring_soon   4 0 0   100%
app/models.py ShareToken.is_active   1 0 0   100%
app/models.py Snag.is_open   1 0 0   100%
app/models.py Reservation.duration_hours   2 0 0   100%
app/models.py EASASourceNode.display_path   1 0 0   100%
app/models.py AirworthinessDocument.is_manual   1 0 0   100%
app/models.py (no function)   695 0 0   100%
app/pilots/__init__.py (no function)   0 0 0   100%
app/pilots/currency.py _rolling_landing_currency   24 0 0   100%
app/pilots/currency.py _rolling_landing_currency._count   1 0 0   100%
app/pilots/currency.py _expiry_status   8 0 0   100%
app/pilots/currency.py per_type_currency   27 0 0   100%
app/pilots/currency.py passenger_currency   3 0 0   100%
app/pilots/currency.py night_currency   3 0 0   100%
app/pilots/currency.py medical_status   5 0 0   100%
app/pilots/currency.py sep_status   5 0 0   100%
app/pilots/currency.py currency_summary   16 0 0   100%
app/pilots/currency.py (no function)   19 0 0   100%
app/pilots/logbook_import.py _norm   1 0 0   100%
app/pilots/logbook_import.py _disambiguate   9 0 0   100%
app/pilots/logbook_import.py _fingerprint   2 0 0   100%
app/pilots/logbook_import.py _is_header_row   5 0 0   100%
app/pilots/logbook_import.py _is_numeric_str   5 0 0   100%
app/pilots/logbook_import.py _header_alias_score   1 0 0   100%
app/pilots/logbook_import.py _find_header_row   13 0 0   100%
app/pilots/logbook_import.py _trim_trailing_empty_cols   9 0 1   100%
app/pilots/logbook_import.py _merge_label_map   10 0 0   100%
app/pilots/logbook_import.py _group_labels_from_map   1 0 0   100%
app/pilots/logbook_import.py _group_labels_heuristic   18 0 0   100%
app/pilots/logbook_import.py _apply_group_labels   9 0 0   100%
app/pilots/logbook_import.py parse_file   6 0 0   100%
app/pilots/logbook_import.py _preferred_sheet_names   8 0 0   100%
app/pilots/logbook_import.py _pick_best_excel_sheet   17 0 0   100%
app/pilots/logbook_import.py _parse_excel   14 0 0   100%
app/pilots/logbook_import.py _parse_csv   12 0 0   100%
app/pilots/logbook_import.py _build_parsed_file   17 0 0   100%
app/pilots/logbook_import.py propose_mapping   24 0 0   100%
app/pilots/logbook_import.py _alias_mapping   4 0 0   100%
app/pilots/logbook_import.py _is_subtotal_row   12 0 0   100%
app/pilots/logbook_import.py parse_date_value   17 0 0   100%
app/pilots/logbook_import.py parse_time_value   16 0 0   100%
app/pilots/logbook_import.py parse_duration_value   25 0 0   100%
app/pilots/logbook_import.py parse_int_value   13 0 0   100%
app/pilots/logbook_import.py _is_nonempty   5 0 0   100%
app/pilots/logbook_import.py type_hints   17 0 0   100%
app/pilots/logbook_import.py preview_rows   15 0 0   100%
app/pilots/logbook_import.py _date_col_index   4 0 0   100%
app/pilots/logbook_import.py execute_import   60 0 0   100%
app/pilots/logbook_import.py execute_import._get   2 0 0   100%
app/pilots/logbook_import.py (no function)   67 0 0   100%
app/pilots/routes.py _current_user_id   1 0 0   100%
app/pilots/routes.py _openaip_key   3 0 0   100%
app/pilots/routes.py _get_or_create_profile   6 0 0   100%
app/pilots/routes.py _check_logbook_milestone   19 0 0   100%
app/pilots/routes.py _parse_time   9 0 0   100%
app/pilots/routes.py _parse_decimal   10 0 0   100%
app/pilots/routes.py _parse_int   10 0 0   100%
app/pilots/routes.py _parse_date   7 0 0   100%
app/pilots/routes.py profile   37 0 0   100%
app/pilots/routes.py pilot_tracks   5 0 0   100%
app/pilots/routes.py pilot_tracks_gif   15 0 0   100%
app/pilots/routes.py view_entry   5 0 0   100%
app/pilots/routes.py logbook   18 0 0   100%
app/pilots/routes.py _compute_totals_sql   5 0 0   100%
app/pilots/routes.py new_entry   15 0 0   100%
app/pilots/routes.py edit_entry   20 0 0   100%
app/pilots/routes.py delete_entry   8 0 0   100%
app/pilots/routes.py _apply_gps_to_pilot_entry   30 0 0   100%
app/pilots/routes.py _apply_gps_to_pilot_entry._parse_dt   4 0 0   100%
app/pilots/routes.py _entry_from_form   49 0 0   100%
app/pilots/routes.py _import_tmp_dir   4 0 0   100%
app/pilots/routes.py _cleanup_previous_tmp   9 0 0   100%
app/pilots/routes.py import_upload   31 0 0   100%
app/pilots/routes.py import_execute   85 0 0   100%
app/pilots/routes.py import_history   3 0 0   100%
app/pilots/routes.py import_rollback   9 0 0   100%
app/pilots/routes.py _pilot_gps_tmp_dir   2 0 0   100%
app/pilots/routes.py _pilot_tenant_id   2 0 0   100%
app/pilots/routes.py _pilot_match_segment   5 0 0   100%
app/pilots/routes.py _pilot_seg_match_dict   5 0 0   100%
app/pilots/routes.py pilot_gps_import_upload   57 0 1   100%
app/pilots/routes.py pilot_gps_import_review   43 0 0   100%
app/pilots/routes.py pilot_gps_import_confirm_one   134 0 0   100%
app/pilots/routes.py (no function)   102 0 0   100%
app/pw_hash.py hash   1 0 0   100%
app/pw_hash.py verify   12 0 0   100%
app/pw_hash.py needs_rehash   3 0 0   100%
app/pw_hash.py _is_bcrypt   1 0 0   100%
app/pw_hash.py (no function)   7 0 0   100%
app/pwa/__init__.py (no function)   0 0 0   100%
app/pwa/routes.py _allowed_destinations   2 0 0   100%
app/pwa/routes.py _dest_labels   1 0 0   100%
app/pwa/routes.py _category_labels   1 0 0   100%
app/pwa/routes.py _get_user_aircraft   4 0 0   100%
app/pwa/routes.py _ensure_tenant_slug   11 0 0   100%
app/pwa/routes.py _safe_path_component   1 0 0   100%
app/pwa/routes.py _cleanup_temp   2 0 0   100%
app/pwa/routes.py share_target_get   1 0 0   100%
app/pwa/routes.py share_target   20 0 0   100%
app/pwa/routes.py share_confirm   37 0 0   100%
app/pwa/routes.py _process_document   59 0 0   100%
app/pwa/routes.py (no function)   35 0 0   100%
app/quotes.py random_aviation_quote   3 0 0   100%
app/quotes.py (no function)   6 0 0   100%
app/reservations/__init__.py (no function)   0 0 0   100%
app/reservations/routes.py _safe_next   5 0 0   100%
app/reservations/routes.py _tenant_id   3 0 1   100%
app/reservations/routes.py _get_aircraft_or_404   4 0 0   100%
app/reservations/routes.py _get_reservation_or_404   4 0 0   100%
app/reservations/routes.py _has_conflict   4 0 0   100%
app/reservations/routes.py _parse_datetime   4 0 0   100%
app/reservations/routes.py _compute_cost   4 0 0   100%
app/reservations/routes.py _build_calendar_grid   2 0 0   100%
app/reservations/routes.py fleet_reservations   40 0 1   100%
app/reservations/routes.py calendar_view   31 0 0   100%
app/reservations/routes.py new_reservation   6 0 0   100%
app/reservations/routes.py edit_reservation   12 0 0   100%
app/reservations/routes.py cancel_reservation   24 0 0   100%
app/reservations/routes.py confirm_reservation   25 0 0   100%
app/reservations/routes.py decline_reservation   12 0 0   100%
app/reservations/routes.py booking_settings   5 0 0   100%
app/reservations/routes.py _save_booking_settings   26 0 0   100%
app/reservations/routes.py _save_booking_settings._float_or_none   5 0 0   100%
app/reservations/routes.py _save_reservation   46 0 0   100%
app/reservations/routes.py (no function)   49 0 0   100%
app/security_alerts.py SecurityAlertHandler.__init__   4 0 0   100%
app/security_alerts.py SecurityAlertHandler.emit   25 0 0   100%
app/security_alerts.py SecurityAlertHandler._dispatch   9 0 0   100%
app/security_alerts.py SecurityAlertHandler._send_ntfy   6 0 0   100%
app/security_alerts.py SecurityAlertHandler._send_email   25 0 0   100%
app/security_alerts.py SecurityAlertHandler._send_webhook   7 0 0   100%
app/security_alerts.py attach_to_logger   3 0 0   100%
app/security_alerts.py (no function)   21 0 0   100%
app/services/__init__.py (no function)   0 0 0   100%
app/services/authorization.py AuthorizationService.effective_mask   26 0 0   100%
app/services/authorization.py AuthorizationService.can   14 0 0   100%
app/services/authorization.py AuthorizationService.maintenance_view_level   7 0 0   100%
app/services/authorization.py (no function)   8 0 0   100%
app/services/email_service.py _smtp_settings   1 0 0   100%
app/services/email_service.py get_smtp_status   4 0 0   100%
app/services/email_service.py get_smtp_status._env   2 0 0   100%
app/services/email_service.py _record_health   20 0 0   100%
app/services/email_service.py get_email_health   16 0 0   100%
app/services/email_service.py send_email   45 0 0   100%
app/services/email_service.py (no function)   17 0 0   100%
app/services/notification_service.py get_effective_preference   8 0 0   100%
app/services/notification_service.py _user_caps   11 0 0   100%
app/services/notification_service.py _find_recipients   11 0 0   100%
app/services/notification_service.py _tenant_display_name   3 0 0   100%
app/services/notification_service.py _build_subject   2 0 0   100%
app/services/notification_service.py _render_email   9 0 0   100%
app/services/notification_service.py _text_for   9 0 0   100%
app/services/notification_service.py dispatch   24 0 0   100%
app/services/notification_service.py run_daily_checks   9 0 0   100%
app/services/notification_service.py _check_maintenance   12 0 0   100%
app/services/notification_service.py _check_insurance   10 0 0   100%
app/services/notification_service.py _check_medical_and_sep   16 0 0   100%
app/services/notification_service.py _check_documents   12 0 0   100%
app/services/notification_service.py _check_airworthiness_reviews   13 0 0   100%
app/services/notification_service.py _dispatch_in_context   4 0 0   100%
app/services/notification_service.py _try_welcome_lock   4 0 0   100%
app/services/notification_service.py send_welcome_email_if_needed   34 0 0   100%
app/services/notification_service.py (no function)   22 0 0   100%
app/services/version_service.py fetch_versions   13 0 0   100%
app/services/version_service.py fetch_versions._StrictRedirect.redirect_request   4 0 0   100%
app/services/version_service.py fetch_latest_version   2 0 0   100%
app/services/version_service.py upsert_app_setting   5 0 0   100%
app/services/version_service.py run_version_check   17 0 0   100%
app/services/version_service.py version_check_loop   10 0 0   100%
app/services/version_service.py start_version_check_thread   3 0 0   100%
app/services/version_service.py (no function)   10 0 0   100%
app/share/__init__.py (no function)   0 0 0   100%
app/share/routes.py _generate_token   4 0 0   100%
app/share/routes.py _get_aircraft_or_403   7 0 1   100%
app/share/routes.py create_token   8 0 0   100%
app/share/routes.py revoke_token   8 0 0   100%
app/share/routes.py token_qr   17 0 0   100%
app/share/routes.py public_view   18 0 0   100%
app/share/routes.py (no function)   25 0 0   100%
app/snags/routes.py _tenant_id   4 0 0   100%
app/snags/routes.py _get_aircraft_or_404   4 0 0   100%
app/snags/routes.py _get_snag_or_404   4 0 0   100%
app/snags/routes.py list_snags   4 0 0   100%
app/snags/routes.py new_snag   4 0 0   100%
app/snags/routes.py edit_snag   8 0 0   100%
app/snags/routes.py _save_snag   33 0 0   100%
app/snags/routes.py resolve_snag   17 0 0   100%
app/snags/routes.py delete_snag   7 0 0   100%
app/snags/routes.py (no function)   31 0 0   100%
app/squawk/__init__.py (no function)   0 0 0   100%
app/squawk/routes.py squawk   3 0 0   100%
app/squawk/routes.py (no function)   6 0 0   100%
app/sync_watcher.py _categories   4 0 0   100%
app/sync_watcher.py _scan_once   29 0 0   100%
app/sync_watcher.py _process_file   31 0 0   100%
app/sync_watcher.py _queue_pending   2 0 0   100%
app/sync_watcher.py _watcher_loop   7 0 0   100%
app/sync_watcher.py start_sync_watcher   6 0 0   100%
app/sync_watcher.py (no function)   18 0 0   100%
app/users/__init__.py (no function)   0 0 0   100%
app/users/routes.py _sl   1 0 0   100%
app/users/routes.py _block_in_demo   2 0 0   100%
app/users/routes.py _tenant_id   3 0 1   100%
app/users/routes.py list_users   10 0 0   100%
app/users/routes.py invite   38 0 0   100%
app/users/routes.py _try_send_invite_email   6 0 0   100%
app/users/routes.py accept_invite   37 0 0   100%
app/users/routes.py change_role   20 0 0   100%
app/users/routes.py revoke_access   13 0 0   100%
app/users/routes.py revoke_invite   6 0 0   100%
app/users/routes.py update_aircraft_access   19 0 0   100%
app/users/routes.py toggle_all_planes   12 0 0   100%
app/users/routes.py update_user_flags   14 0 0   100%
app/users/routes.py edit_permissions   28 0 0   100%
app/users/routes.py edit_permissions._parse_mask   5 0 0   100%
app/users/routes.py edit_permissions._bits_for   2 0 0   100%
app/users/routes.py (no function)   59 0 0   100%
app/utils.py _mercator_y   2 0 0   100%
app/utils.py _build_gif_projection   24 0 0   100%
app/utils.py _build_gif_projection.project   3 0 0   100%
app/utils.py _coords_from_geojson   11 0 0   100%
app/utils.py _make_tile_background   60 0 0   100%
app/utils.py _make_tile_background._lon_to_tx   1 0 0   100%
app/utils.py _make_tile_background._lat_to_ty   2 0 0   100%
app/utils.py _make_tile_background._tile_nw_lonlat   3 0 0   100%
app/utils.py _canvas_geo_bounds   24 0 0   100%
app/utils.py sort_tracks_oldest_first   1 0 0   100%
app/utils.py generate_tracks_gif   62 0 0   100%
app/utils.py generate_tracks_gif.draw_shadow_text   2 0 0   100%
app/utils.py generate_tracks_gif.draw_track   8 0 0   100%
app/utils.py generate_tracks_gif._frame_bg   7 0 0   100%
app/utils.py generate_single_track_image   44 0 0   100%
app/utils.py generate_single_track_image._blank_png   3 0 0   100%
app/utils.py generate_single_track_gif   71 0 0   100%
app/utils.py generate_single_track_gif._blank_gif   3 0 0   100%
app/utils.py generate_single_track_gif.draw_shadow_text   2 0 0   100%
app/utils.py generate_single_track_gif.draw_track   8 0 0   100%
app/utils.py generate_single_track_gif._frame_bg   7 0 0   100%
app/utils.py _load_aircraft_types   13 0 0   100%
app/utils.py _load_aircraft_type_variants   16 0 0   100%
app/utils.py _load_aircraft_type_engine_data   17 0 0   100%
app/utils.py get_aircraft_type_engine_info   1 0 0   100%
app/utils.py resolve_aircraft_type_icao   10 0 0   100%
app/utils.py _load_airport_names   12 0 0   100%
app/utils.py _sl   1 0 0   100%
app/utils.py activity   6 0 0   100%
app/utils.py login_required   3 0 0   100%
app/utils.py login_required.decorated   3 0 0   100%
app/utils.py require_instance_admin   3 0 0   100%
app/utils.py require_instance_admin.decorated   8 0 0   100%
app/utils.py current_user_role   6 0 0   100%
app/utils.py require_role   3 0 0   100%
app/utils.py require_role.decorator   2 0 0   100%
app/utils.py require_role.decorator.decorated   3 0 0   100%
app/utils.py require_pilot_access   3 0 0   100%
app/utils.py require_pilot_access.decorated   10 0 0   100%
app/utils.py require_maint_access   3 0 0   100%
app/utils.py require_maint_access.decorated   10 0 0   100%
app/utils.py user_can_access_aircraft   11 0 0   100%
app/utils.py accessible_aircraft   16 0 0   100%
app/utils.py compute_aircraft_statuses   19 0 0   100%
app/utils.py (no function)   48 0 0   100%
Total     9463 0 26   100%

No items found using the specified filter.