Coverage report: 23%

Files Functions Classes

coverage.py v7.17.0, created at 2026-11-13 03:30 +0000

File function   statements missing excluded   coverage
app/aircraft/gps_import.py _load_airports   18 18 0   0%
app/aircraft/gps_import.py _reset_airports_cache   1 1 0   0%
app/aircraft/gps_import.py _haversine_km   7 7 0   0%
app/aircraft/gps_import.py _xml_root_name   22 0 0   100%
app/aircraft/gps_import.py is_gps_upload_name   1 1 0   0%
app/aircraft/gps_import.py detect_format   18 3 0   83%
app/aircraft/gps_import.py classify_track   14 12 0   14%
app/aircraft/gps_import.py _extract_icao_hints   4 4 0   0%
app/aircraft/gps_import.py _parse_xml_up_to_error   13 0 0   100%
app/aircraft/gps_import.py _drop_bad_fixes   15 10 0   33%
app/aircraft/gps_import.py _speeds_from_positions   13 13 0   0%
app/aircraft/gps_import.py _parse_gpx   36 19 0   47%
app/aircraft/gps_import.py _parse_gpx.q   1 0 0   100%
app/aircraft/gps_import.py _parse_garmin_csv   47 47 0   0%
app/aircraft/gps_import.py _parse_kml   46 36 0   22%
app/aircraft/gps_import.py parse_gps_file   6 1 0   83%
app/aircraft/gps_import.py merge_and_sort   6 6 0   0%
app/aircraft/gps_import.py _split_into_raw_groups   53 53 0   0%
app/aircraft/gps_import.py _recording_gap   2 2 0   0%
app/aircraft/gps_import.py _break_points   19 19 0   0%
app/aircraft/gps_import.py _median   2 2 0   0%
app/aircraft/gps_import.py _high_above_ground   3 3 0   0%
app/aircraft/gps_import.py _airborne_periods   18 18 0   0%
app/aircraft/gps_import.py _count_landings   1 1 0   0%
app/aircraft/gps_import.py detect_segments   21 21 0   0%
app/aircraft/gps_import.py logged_flight_windows   12 12 0   0%
app/aircraft/gps_import.py _same_place   1 1 0   0%
app/aircraft/gps_import.py _recorded_throughout   3 3 0   0%
app/aircraft/gps_import.py _logged_run_end   16 16 0   0%
app/aircraft/gps_import.py _merge_run   9 9 0   0%
app/aircraft/gps_import.py merge_segments_logged_as_one   10 10 0   0%
app/aircraft/gps_import.py resolve_icao   10 10 0   0%
app/aircraft/gps_import.py round_flight_time   6 6 0   0%
app/aircraft/gps_import.py segment_times   9 9 0   0%
app/aircraft/gps_import.py downsample_track   8 8 0   0%
app/aircraft/gps_import.py build_geojson   2 2 0   0%
app/aircraft/gps_import.py score_gps_candidates   3 3 0   0%
app/aircraft/gps_import.py near_date_range   2 2 0   0%
app/aircraft/gps_import.py rank_near_date_candidates   7 7 0   0%
app/aircraft/gps_import.py _score_gps_candidate   9 9 0   0%
app/aircraft/gps_import.py (no function)   126 0 0   100%
app/documents/routes.py _tenant_id   4 4 0   0%
app/documents/routes.py _get_tenant   4 4 1   0%
app/documents/routes.py _get_aircraft_or_404   4 4 0   0%
app/documents/routes.py active_document_for   1 1 0   0%
app/documents/routes.py effective_coverage_until   1 1 0   0%
app/documents/routes.py _recompute_expiry_field   1 1 0   0%
app/documents/routes.py _parse_date_field   8 8 0   0%
app/documents/routes.py _get_aircraft_document_or_404   4 4 0   0%
app/documents/routes.py _delete_file   18 18 0   0%
app/documents/routes.py _resolve_component   9 9 0   0%
app/documents/routes.py _save_upload   9 9 0   0%
app/documents/routes.py _ensure_tenant_slug   11 11 0   0%
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 _parse_reconcile_filename   10 10 0   0%
app/documents/routes.py _save_upload_canonical   20 20 0   0%
app/documents/routes.py _current_role   2 2 0   0%
app/documents/routes.py _doc_broken   2 2 0   0%
app/documents/routes.py title_suggestions   15 15 0   0%
app/documents/routes.py list_documents   33 33 0   0%
app/documents/routes.py upload_document   44 44 0   0%
app/documents/routes.py upload_document._re_render   3 3 0   0%
app/documents/routes.py edit_document   42 42 0   0%
app/documents/routes.py delete_document   12 12 0   0%
app/documents/routes.py download_all_documents   25 25 0   0%
app/documents/routes.py _upload_expiry_cert   23 23 0   0%
app/documents/routes.py upload_insurance_cert   1 1 0   0%
app/documents/routes.py upload_arc_cert   1 1 0   0%
app/documents/routes.py upload_pilot_document   36 36 0   0%
app/documents/routes.py upload_pilot_document._form   1 1 0   0%
app/documents/routes.py delete_pilot_document   11 11 0   0%
app/documents/routes.py list_reconcile   15 15 0   0%
app/documents/routes.py scan_documents   54 54 0   0%
app/documents/routes.py rename_reconcile_folder   61 61 0   0%
app/documents/routes.py import_reconcile   28 28 0   0%
app/documents/routes.py ignore_reconcile   6 6 0   0%
app/documents/routes.py (no function)   109 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   8 0 1   100%
app/pilots/logbook_import.py _merge_label_map   10 10 0   0%
app/pilots/logbook_import.py _group_labels_from_map   1 1 0   0%
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 _parse_excel_cached   12 7 0   42%
app/pilots/logbook_import.py _preferred_sheet_names   8 0 0   100%
app/pilots/logbook_import.py _pick_best_excel_sheet   17 17 0   0%
app/pilots/logbook_import.py _parse_excel   14 10 0   29%
app/pilots/logbook_import.py _parse_csv   15 0 0   100%
app/pilots/logbook_import.py _build_parsed_file   19 2 0   89%
app/pilots/logbook_import.py propose_mapping   24 24 0   0%
app/pilots/logbook_import.py _alias_mapping   4 4 0   0%
app/pilots/logbook_import.py _is_subtotal_row   10 10 0   0%
app/pilots/logbook_import.py parse_date_value   17 4 0   76%
app/pilots/logbook_import.py parse_time_value   16 3 0   81%
app/pilots/logbook_import.py parse_duration_value   25 9 0   64%
app/pilots/logbook_import.py parse_int_value   17 6 0   65%
app/pilots/logbook_import.py is_blank_cell   4 1 0   75%
app/pilots/logbook_import.py _is_nonempty   1 0 0   100%
app/pilots/logbook_import.py type_hints   17 17 0   0%
app/pilots/logbook_import.py preview_rows   16 16 0   0%
app/pilots/logbook_import.py review_values_differ   8 8 0   0%
app/pilots/logbook_import.py format_preview_cell   18 18 0   0%
app/pilots/logbook_import.py _date_col_index   4 4 0   0%
app/pilots/logbook_import.py _row_get   3 3 0   0%
app/pilots/logbook_import.py _parse_row_date   4 4 0   0%
app/pilots/logbook_import.py _build_entry_kwargs   34 34 0   0%
app/pilots/logbook_import.py _num   1 1 0   0%
app/pilots/logbook_import.py _dup_key   1 1 0   0%
app/pilots/logbook_import.py _place_key   4 4 0   0%
app/pilots/logbook_import.py _dup_detail   1 1 0   0%
app/pilots/logbook_import.py _details_compatible   1 1 0   0%
app/pilots/logbook_import.py DedupIndex.__init__   1 1 0   0%
app/pilots/logbook_import.py DedupIndex.add   1 1 0   0%
app/pilots/logbook_import.py DedupIndex.contains   1 1 0   0%
app/pilots/logbook_import.py _add_kwargs   1 1 0   0%
app/pilots/logbook_import.py _contains_kwargs   1 1 0   0%
app/pilots/logbook_import.py _kwargs_dup_detail   1 1 0   0%
app/pilots/logbook_import.py _fetch_existing_dedup_index   7 7 0   0%
app/pilots/logbook_import.py _assign_pilot_identity   11 11 0   0%
app/pilots/logbook_import.py execute_import   47 47 0   0%
app/pilots/logbook_import.py _kwargs_duration   3 3 0   0%
app/pilots/logbook_import.py _score_candidate   35 35 0   0%
app/pilots/logbook_import.py find_conflicting_rows   34 34 0   0%
app/pilots/logbook_import.py merge_into_existing   20 20 0   0%
app/pilots/logbook_import.py _fill_engine_time   6 6 0   0%
app/pilots/logbook_import.py _is_airframe_only   1 1 0   0%
app/pilots/logbook_import.py _is_strong_cross_match   12 12 0   0%
app/pilots/logbook_import.py _is_no_takeoff_match   9 9 0   0%
app/pilots/logbook_import.py plan_bulk_overwrites   11 11 0   0%
app/pilots/logbook_import.py split_auto_merges   11 11 0   0%
app/pilots/logbook_import.py link_entries_to_aircraft   37 37 0   0%
app/pilots/logbook_import.py link_entries_to_aircraft._norm_reg   1 1 0   0%
app/pilots/logbook_import.py link_entries_to_aircraft._tenants_for_pilot   3 3 0   0%
app/pilots/logbook_import.py link_entries_to_aircraft._place_icao   4 4 0   0%
app/pilots/logbook_import.py (no function)   122 0 0   100%
app/reservations/routes.py _booking_number   8 8 0   0%
app/reservations/routes.py _safe_next   8 0 0   100%
app/reservations/routes.py _tenant_id   3 3 1   0%
app/reservations/routes.py _get_aircraft_or_404   6 6 0   0%
app/reservations/routes.py _get_reservation_or_404   4 4 0   0%
app/reservations/routes.py _has_conflict   7 7 0   0%
app/reservations/routes.py _parse_datetime   4 4 0   0%
app/reservations/routes.py _computed_rate   1 1 0   0%
app/reservations/routes.py _effective_rate   6 6 0   0%
app/reservations/routes.py _rate_terms_label   5 5 0   0%
app/reservations/routes.py _is_owner_role   2 2 0   0%
app/reservations/routes.py _rental_authorization_policy   3 3 0   0%
app/reservations/routes.py _grounded_reservation_policy   3 3 0   0%
app/reservations/routes.py _has_open_grounding_snag   1 1 0   0%
app/reservations/routes.py _renter_authorization_ok   2 2 0   0%
app/reservations/routes.py _rate_divergence_warning   10 10 0   0%
app/reservations/routes.py _chargeable_days   4 4 0   0%
app/reservations/routes.py _estimated_hours   5 5 0   0%
app/reservations/routes.py _compute_cost   5 5 0   0%
app/reservations/routes.py _build_calendar_grid   2 2 0   0%
app/reservations/routes.py fleet_reservations   40 40 1   0%
app/reservations/routes.py calendar_view   39 39 0   0%
app/reservations/routes.py _get_downtime_or_404   4 4 0   0%
app/reservations/routes.py _save_downtime   30 30 0   0%
app/reservations/routes.py downtime_new   4 4 0   0%
app/reservations/routes.py downtime_edit   5 5 0   0%
app/reservations/routes.py downtime_delete   6 6 0   0%
app/reservations/routes.py new_reservation   13 13 0   0%
app/reservations/routes.py edit_reservation   12 12 0   0%
app/reservations/routes.py cancel_reservation   28 28 0   0%
app/reservations/routes.py confirm_reservation   34 34 0   0%
app/reservations/routes.py decline_reservation   12 12 0   0%
app/reservations/routes.py booking_settings   5 5 0   0%
app/reservations/routes.py _save_booking_settings   36 36 0   0%
app/reservations/routes.py _save_booking_settings._number_or_none   8 8 0   0%
app/reservations/routes.py _save_reservation   72 72 0   0%
app/reservations/routes.py _can_dispatch   1 1 0   0%
app/reservations/routes.py _discrepancy_warning   17 17 0   0%
app/reservations/routes.py reservation_detail   10 10 0   0%
app/reservations/routes.py checkout   57 57 0   0%
app/reservations/routes.py _checkout_counter_hint   2 2 0   0%
app/reservations/routes.py _draft_rental_charge   29 29 0   0%
app/reservations/routes.py _draft_rental_charge._delta   3 3 0   0%
app/reservations/routes.py checkin   54 54 0   0%
app/reservations/routes.py rental_charge   56 56 0   0%
app/reservations/routes.py rental_charge._number_field   7 7 0   0%
app/reservations/routes.py _my_account_period   9 9 0   0%
app/reservations/routes.py my_account   10 10 1   0%
app/reservations/routes.py my_account_statement_csv   13 13 1   0%
app/reservations/routes.py (no function)   105 0 0   100%
app/utils.py to_libpq_url   2 2 0   0%
app/utils.py _mercator_y   2 2 0   0%
app/utils.py _build_gif_projection   24 24 0   0%
app/utils.py _build_gif_projection.project   3 3 0   0%
app/utils.py _coords_from_geojson   21 21 0   0%
app/utils.py _tile_cache_dir   5 5 0   0%
app/utils.py _fetch_tile_bytes   19 19 0   0%
app/utils.py _ensure_tiles   12 12 0   0%
app/utils.py _ensure_tiles.fetch   12 12 0   0%
app/utils.py _make_tile_background   35 35 0   0%
app/utils.py _make_tile_background._lon_to_tx   1 1 0   0%
app/utils.py _make_tile_background._lat_to_ty   2 2 0   0%
app/utils.py _make_tile_background._tile_nw_lonlat   3 3 0   0%
app/utils.py _tone_down   7 7 0   0%
app/utils.py _canvas_geo_bounds   24 24 0   0%
app/utils.py _canvas_tile_background   5 5 0   0%
app/utils.py sort_tracks_oldest_first   1 1 0   0%
app/utils.py generate_tracks_gif   70 70 0   0%
app/utils.py generate_tracks_gif.draw_shadow_text   2 2 0   0%
app/utils.py generate_tracks_gif.draw_track   8 8 0   0%
app/utils.py generate_tracks_gif._frame_bg   2 2 0   0%
app/utils.py generate_single_track_image   39 39 0   0%
app/utils.py generate_single_track_image._blank_png   3 3 0   0%
app/utils.py generate_single_track_gif   71 71 0   0%
app/utils.py generate_single_track_gif._blank_gif   3 3 0   0%
app/utils.py generate_single_track_gif.draw_shadow_text   2 2 0   0%
app/utils.py generate_single_track_gif.draw_track   8 8 0   0%
app/utils.py generate_single_track_gif._frame_bg   2 2 0   0%
app/utils.py _load_aircraft_types   13 13 0   0%
app/utils.py _load_aircraft_type_variants   16 16 0   0%
app/utils.py _load_aircraft_type_engine_data   17 17 0   0%
app/utils.py get_aircraft_type_engine_info   1 1 0   0%
app/utils.py _build_model_name_prefix_lookup   16 16 0   0%
app/utils.py _sorted_model_prefix_keys   1 1 0   0%
app/utils.py resolve_aircraft_type_icao   23 23 0   0%
app/utils.py _load_aircraft_classes   19 19 0   0%
app/utils.py aircraft_class_for_icao   1 1 0   0%
app/utils.py _load_airport_names   12 12 0   0%
app/utils.py _load_airport_geo   20 20 0   0%
app/utils.py haversine_nm   5 5 0   0%
app/utils.py _sl   1 1 0   0%
app/utils.py activity   6 6 0   0%
app/utils.py AircraftRefConverter.to_python   8 8 0   0%
app/utils.py AircraftRefConverter.to_url   7 7 0   0%
app/utils.py login_required   3 0 0   100%
app/utils.py login_required.decorated   3 3 0   0%
app/utils.py require_instance_admin   3 3 0   0%
app/utils.py require_instance_admin.decorated   8 8 0   0%
app/utils.py current_user_role   6 6 0   0%
app/utils.py check_update_available   14 14 0   0%
app/utils.py check_legacy_logbook_data   6 6 0   0%
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 3 0   0%
app/utils.py require_pilot_access   3 3 0   0%
app/utils.py require_pilot_access.decorated   10 10 0   0%
app/utils.py require_maint_access   3 3 0   0%
app/utils.py require_maint_access.decorated   10 10 0   0%
app/utils.py tenant_pilots   9 9 0   0%
app/utils.py tenant_pilot_names   1 1 0   0%
app/utils.py user_can_access_aircraft   11 11 0   0%
app/utils.py accessible_aircraft   18 18 0   0%
app/utils.py compute_aircraft_statuses   28 28 0   0%
app/utils.py (no function)   84 0 0   100%
Total     3629 2788 6   23%

No items found using the specified filter.