Coverage report: 49%

Files Functions Classes

coverage.py v7.13.1, created at 2026-01-07 06:46 +0000

File function   statements missing excluded   coverage
application / __init__.py (no function)   38 10 0   74%
application / config.py (no function)   25 4 0   84%
application / image_reference / __init__.py (no function)   3 0 0   100%
application / image_reference / routes.py image_reference_page   5 5 0   0%
application / image_reference / routes.py add_image_reference   4 4 0   0%
application / image_reference / routes.py (no function)   7 0 0   100%
application / image_review / __init__.py (no function)   8 0 0   100%
application / image_review / external_review / __init__.py (no function)   3 0 0   100%
application / image_review / external_review / comment_processor.py CommentProcessor.__init__   8 8 0   0%
application / image_review / external_review / comment_processor.py CommentProcessor.load_comments   143 143 0   0%
application / image_review / external_review / comment_processor.py (no function)   13 0 0   100%
application / image_review / external_review / routes.py get_external_review   53 53 0   0%
application / image_review / external_review / routes.py add_external_review   10 10 0   0%
application / image_review / external_review / routes.py add_external_review.add_vars_or_tator_comment   11 11 0   0%
application / image_review / external_review / routes.py delete_external_review   12 12 0   0%
application / image_review / external_review / routes.py reviewers   1 1 0   0%
application / image_review / external_review / routes.py update_reviewer_info   19 19 0   0%
application / image_review / external_review / routes.py delete_reviewer   7 7 0   0%
application / image_review / external_review / routes.py (no function)   20 0 0   100%
application / image_review / tator / __init__.py (no function)   3 0 0   100%
application / image_review / tator / routes.py tator_image_review   32 32 0   0%
application / image_review / tator / routes.py (no function)   7 0 0   100%
application / image_review / tator / tator_localization_processor.py Section.__init__   6 6 0   0%
application / image_review / tator / tator_localization_processor.py TatorLocalizationProcessor.__init__   7 7 0   0%
application / image_review / tator / tator_localization_processor.py TatorLocalizationProcessor.load_phylogeny   5 5 0   0%
application / image_review / tator / tator_localization_processor.py TatorLocalizationProcessor.save_phylogeny   7 7 0   0%
application / image_review / tator / tator_localization_processor.py TatorLocalizationProcessor.fetch_worms_phylogeny   20 20 0   0%
application / image_review / tator / tator_localization_processor.py TatorLocalizationProcessor.fetch_localizations   6 6 0   0%
application / image_review / tator / tator_localization_processor.py TatorLocalizationProcessor.process_records   82 82 0   0%
application / image_review / tator / tator_localization_processor.py TatorLocalizationProcessor.process_records.collect_localizations   1 1 0   0%
application / image_review / tator / tator_localization_processor.py TatorLocalizationProcessor.process_records.first_if_all_same   1 1 0   0%
application / image_review / tator / tator_localization_processor.py TatorLocalizationProcessor.process_records.is_populated   3 3 0   0%
application / image_review / tator / tator_localization_processor.py (no function)   23 0 0   100%
application / image_review / vars / __init__.py (no function)   3 0 0   100%
application / image_review / vars / routes.py view_images   16 16 0   0%
application / image_review / vars / routes.py (no function)   6 0 0   100%
application / image_review / vars / vars_annotation_processor.py VarsAnnotationProcessor.__init__   10 0 0   100%
application / image_review / vars / vars_annotation_processor.py VarsAnnotationProcessor.process_sequences   12 12 0   0%
application / image_review / vars / vars_annotation_processor.py VarsAnnotationProcessor.load_phylogeny   5 1 0   80%
application / image_review / vars / vars_annotation_processor.py VarsAnnotationProcessor.save_phylogeny   7 7 0   0%
application / image_review / vars / vars_annotation_processor.py VarsAnnotationProcessor.fetch_media   8 0 0   100%
application / image_review / vars / vars_annotation_processor.py VarsAnnotationProcessor.fetch_vars_phylogeny   17 1 0   94%
application / image_review / vars / vars_annotation_processor.py VarsAnnotationProcessor.get_image_url   8 0 0   100%
application / image_review / vars / vars_annotation_processor.py VarsAnnotationProcessor.get_video   10 1 0   90%
application / image_review / vars / vars_annotation_processor.py VarsAnnotationProcessor.process_working_records   26 0 0   100%
application / image_review / vars / vars_annotation_processor.py VarsAnnotationProcessor.sort_records   5 0 0   100%
application / image_review / vars / vars_annotation_processor.py (no function)   18 0 0   100%
application / main.py favicon   1 1 0   0%
application / main.py index   13 13 0   0%
application / main.py index.fetch_json   10 10 0   0%
application / main.py video   2 2 0   0%
application / main.py page_not_found   1 1 0   0%
application / main.py server_error   6 6 0   0%
application / main.py (no function)   16 0 0   100%
application / qaqc / __init__.py (no function)   6 0 0   100%
application / qaqc / tator / __init__.py (no function)   3 0 0   100%
application / qaqc / tator / routes.py tator_qaqc_checklist   45 45 0   0%
application / qaqc / tator / routes.py patch_tator_qaqc_checklist   7 7 0   0%
application / qaqc / tator / routes.py tator_qaqc   113 113 0   0%
application / qaqc / tator / routes.py attracted_list   2 2 0   0%
application / qaqc / tator / routes.py add_attracted   5 5 0   0%
application / qaqc / tator / routes.py update_attracted   4 4 0   0%
application / qaqc / tator / routes.py delete_attracted   4 4 0   0%
application / qaqc / tator / routes.py (no function)   21 0 0   100%
application / qaqc / tator / tator_qaqc_processor.py TatorQaqcProcessor.__init__   1 1 0   0%
application / qaqc / tator / tator_qaqc_processor.py TatorQaqcProcessor.check_names_accepted   37 37 0   0%
application / qaqc / tator / tator_qaqc_processor.py TatorQaqcProcessor.check_missing_qualifier   7 7 0   0%
application / qaqc / tator / tator_qaqc_processor.py TatorQaqcProcessor.check_stet_reason   8 8 0   0%
application / qaqc / tator / tator_qaqc_processor.py TatorQaqcProcessor.check_attracted_not_attracted   15 15 0   0%
application / qaqc / tator / tator_qaqc_processor.py TatorQaqcProcessor.check_same_name_qualifier   18 18 0   0%
application / qaqc / tator / tator_qaqc_processor.py TatorQaqcProcessor.check_non_target_not_attracted   10 10 0   0%
application / qaqc / tator / tator_qaqc_processor.py TatorQaqcProcessor.check_exists_in_image_references   18 18 0   0%
application / qaqc / tator / tator_qaqc_processor.py TatorQaqcProcessor.get_all_tentative_ids   27 27 0   0%
application / qaqc / tator / tator_qaqc_processor.py TatorQaqcProcessor.get_all_notes_and_remarks   18 18 0   0%
application / qaqc / tator / tator_qaqc_processor.py TatorQaqcProcessor.get_re_examined   7 7 0   0%
application / qaqc / tator / tator_qaqc_processor.py TatorQaqcProcessor.get_unique_taxa   30 30 0   0%
application / qaqc / tator / tator_qaqc_processor.py TatorQaqcProcessor.get_max_n   22 22 0   0%
application / qaqc / tator / tator_qaqc_processor.py TatorQaqcProcessor.get_tofa   46 46 0   0%
application / qaqc / tator / tator_qaqc_processor.py TatorQaqcProcessor.get_summary   4 4 0   0%
application / qaqc / tator / tator_qaqc_processor.py TatorQaqcProcessor.download_image_guide   67 67 0   0%
application / qaqc / tator / tator_qaqc_processor.py TatorQaqcProcessor.fetch_start_times   27 27 0   0%
application / qaqc / tator / tator_qaqc_processor.py (no function)   33 0 0   100%
application / qaqc / vars / __init__.py (no function)   3 0 0   100%
application / qaqc / vars / routes.py vars_qaqc_checklist   15 15 0   0%
application / qaqc / vars / routes.py get_sequence_counts   52 52 0   0%
application / qaqc / vars / routes.py patch_vars_qaqc_checklist   7 7 0   0%
application / qaqc / vars / routes.py vars_qaqc   61 61 0   0%
application / qaqc / vars / routes.py qaqc_quick   7 7 0   0%
application / qaqc / vars / routes.py (no function)   15 0 0   100%
application / qaqc / vars / vars_qaqc_processor.py VarsQaqcProcessor.__init__   3 0 0   100%
application / qaqc / vars / vars_qaqc_processor.py VarsQaqcProcessor.fetch_annotations   9 0 0   100%
application / qaqc / vars / vars_qaqc_processor.py VarsQaqcProcessor.find_duplicate_associations   16 1 0   94%
application / qaqc / vars / vars_qaqc_processor.py VarsQaqcProcessor.find_missing_s1   8 0 0   100%
application / qaqc / vars / vars_qaqc_processor.py VarsQaqcProcessor.find_identical_s1_s2   14 1 0   93%
application / qaqc / vars / vars_qaqc_processor.py VarsQaqcProcessor.find_duplicate_s2   15 1 0   93%
application / qaqc / vars / vars_qaqc_processor.py VarsQaqcProcessor.find_missing_upon_substrate   21 1 0   95%
application / qaqc / vars / vars_qaqc_processor.py VarsQaqcProcessor.find_mismatched_substrates   35 4 0   89%
application / qaqc / vars / vars_qaqc_processor.py VarsQaqcProcessor.find_missing_upon   7 0 0   100%
application / qaqc / vars / vars_qaqc_processor.py VarsQaqcProcessor.get_num_records_missing_ancillary_data   6 0 0   100%
application / qaqc / vars / vars_qaqc_processor.py VarsQaqcProcessor.find_missing_ancillary_data   5 0 0   100%
application / qaqc / vars / vars_qaqc_processor.py VarsQaqcProcessor.find_id_refs_different_concept_name   19 1 0   95%
application / qaqc / vars / vars_qaqc_processor.py VarsQaqcProcessor.find_id_refs_conflicting_associations   52 10 0   81%
application / qaqc / vars / vars_qaqc_processor.py VarsQaqcProcessor.find_blank_associations   8 1 0   88%
application / qaqc / vars / vars_qaqc_processor.py VarsQaqcProcessor.find_suspicious_hosts   8 1 0   88%
application / qaqc / vars / vars_qaqc_processor.py VarsQaqcProcessor.find_missing_expected_association   19 1 1   95%
application / qaqc / vars / vars_qaqc_processor.py VarsQaqcProcessor.find_long_host_associate_time_diff   40 0 0   100%
application / qaqc / vars / vars_qaqc_processor.py VarsQaqcProcessor.find_num_bounding_boxes   14 0 0   100%
application / qaqc / vars / vars_qaqc_processor.py VarsQaqcProcessor.find_localizations_without_bounding_boxes   13 13 0   0%
application / qaqc / vars / vars_qaqc_processor.py VarsQaqcProcessor.find_unique_fields   79 12 0   85%
application / qaqc / vars / vars_qaqc_processor.py VarsQaqcProcessor.find_unique_fields.load_dict   6 0 0   100%
application / qaqc / vars / vars_qaqc_processor.py (no function)   25 0 0   100%
application / tator / __init__.py (no function)   3 0 0   100%
application / tator / routes.py tator_login   5 5 0   0%
application / tator / routes.py check_tator_token   8 8 0   0%
application / tator / routes.py tator_logout   2 2 0   0%
application / tator / routes.py tator_sections   39 39 0   0%
application / tator / routes.py tator_sections.should_skip   2 2 0   0%
application / tator / routes.py tator_frame   11 11 0   0%
application / tator / routes.py tator_image   10 10 0   0%
application / tator / routes.py update_tator_localization   12 12 0   0%
application / tator / routes.py update_tator_localization_image   9 9 0   0%
application / tator / routes.py (no function)   24 0 0   100%
application / util / constants.py (no function)   4 0 0   100%
application / util / functions.py parse_datetime   3 0 0   100%
application / util / functions.py extract_recorded_datetime   8 0 0   100%
application / util / functions.py get_association   6 1 0   83%
application / util / functions.py format_annotator   3 0 0   100%
application / util / functions.py flatten_taxa_tree   4 0 0   100%
application / util / functions.py (no function)   8 0 0   100%
application / util / tator_localization_type.py (no function)   4 0 0   100%
application / vars / __init__.py (no function)   3 0 0   100%
application / vars / annosaurus.py AuthenticationError.__init__   1 0 0   100%
application / vars / annosaurus.py JWTAuthentication.__init__   3 0 0   100%
application / vars / annosaurus.py JWTAuthentication.authorize   8 0 0   100%
application / vars / annosaurus.py JWTAuthentication.authenticate   8 0 0   100%
application / vars / annosaurus.py JWTAuthentication._auth_header   1 0 0   100%
application / vars / annosaurus.py Annosaurus.__init__   1 0 0   100%
application / vars / annosaurus.py Annosaurus.create_association   10 0 0   100%
application / vars / annosaurus.py Annosaurus.update_association   3 0 0   100%
application / vars / annosaurus.py Annosaurus.delete_association   3 0 0   100%
application / vars / annosaurus.py Annosaurus.update_concept_name   3 0 0   100%
application / vars / annosaurus.py Annosaurus.update_annotation_comment   37 3 0   92%
application / vars / annosaurus.py (no function)   17 0 0   100%
application / vars / routes.py get_current_associations   4 4 0   0%
application / vars / routes.py update_annotation   3 3 0   0%
application / vars / routes.py create_association   6 6 0   0%
application / vars / routes.py update_association   4 4 0   0%
application / vars / routes.py delete_association   3 3 0   0%
application / vars / routes.py video_frame   36 36 0   0%
application / vars / routes.py (no function)   18 0 0   100%
run.py (no function)   6 6 0   0%
test / __init__.py (no function)   0 0 0   100%
test / conftest.py app   2 2 0   0%
test / conftest.py client   1 1 0   0%
test / conftest.py (no function)   6 0 0   100%
test / data / vars_responses.py (no function)   4 0 0   100%
test / data / worms_responses.py (no function)   2 0 0   100%
test / test_annosaurus.py MockResponse.__init__   5 0 0   100%
test / test_annosaurus.py MockResponse.json   51 6 0   88%
test / test_annosaurus.py MockResponse.text   1 1 0   0%
test / test_annosaurus.py mocked_requests_get   1 0 0   100%
test / test_annosaurus.py mocked_requests_get_404   1 0 0   100%
test / test_annosaurus.py mocked_requests_post   1 0 0   100%
test / test_annosaurus.py mocked_requests_put   1 0 0   100%
test / test_annosaurus.py mocked_requests_delete   1 0 0   100%
test / test_annosaurus.py TestAnnosaurus.test_init   2 0 0   100%
test / test_annosaurus.py TestAnnosaurus.test_authorize_jwt   2 0 0   100%
test / test_annosaurus.py TestAnnosaurus.test_authorize_client_secret   3 0 0   100%
test / test_annosaurus.py TestAnnosaurus.test_authorize_invalid   3 0 0   100%
test / test_annosaurus.py TestAnnosaurus.test_authorize_none   3 0 0   100%
test / test_annosaurus.py TestAnnosaurus.test_auth_header   2 0 0   100%
test / test_annosaurus.py TestAnnosaurus.test_create_association   5 0 0   100%
test / test_annosaurus.py TestAnnosaurus.test_create_association_missing_link_value   3 0 0   100%
test / test_annosaurus.py TestAnnosaurus.test_update_association   4 0 0   100%
test / test_annosaurus.py TestAnnosaurus.test_delete_association   4 0 0   100%
test / test_annosaurus.py TestAnnosaurus.test_update_concept_name   6 0 0   100%
test / test_annosaurus.py TestAnnosaurus.test_update_annotation_comment_404   4 0 0   100%
test / test_annosaurus.py TestAnnosaurus.test_update_annotation_comment_new_one_reviewer   4 0 0   100%
test / test_annosaurus.py TestAnnosaurus.test_update_annotation_comment_new_multiple_reviewers   4 0 0   100%
test / test_annosaurus.py TestAnnosaurus.test_update_annotation_comment_update_no_prev_reviewers   4 0 0   100%
test / test_annosaurus.py TestAnnosaurus.test_update_annotation_comment_update_prev_reviewers_add   4 0 0   100%
test / test_annosaurus.py TestAnnosaurus.test_update_annotation_comment_update_prev_reviewers_replace   4 0 0   100%
test / test_annosaurus.py TestAnnosaurus.test_update_annotation_comment_delete_empty   4 0 0   100%
test / test_annosaurus.py TestAnnosaurus.test_update_annotation_comment_delete_not_empty   4 0 0   100%
test / test_annosaurus.py (no function)   55 0 0   100%
test / test_functions.py TestFunctions.test_parse_datetime_micro   2 0 0   100%
test / test_functions.py TestFunctions.test_parse_datetime_no_micro   2 0 0   100%
test / test_functions.py TestFunctions.test_parse_datetime_fail   2 0 0   100%
test / test_functions.py TestFunctions.test_extract_recorded_datetime_no_micro   2 0 0   100%
test / test_functions.py TestFunctions.test_extract_recorded_datetime_round_up   2 0 0   100%
test / test_functions.py TestFunctions.test_extract_recorded_datetime_round_down   2 0 0   100%
test / test_functions.py TestFunctions.test_extract_recorded_datetime_fail   1 0 0   100%
test / test_functions.py TestFunctions.test_get_association   2 0 0   100%
test / test_functions.py TestFunctions.test_get_association_none   2 0 0   100%
test / test_functions.py TestFunctions.test_format_annotator_normal   1 0 0   100%
test / test_functions.py TestFunctions.test_format_annotator_harold   1 0 0   100%
test / test_functions.py TestFunctions.test_flatten_taxa_tree   1 0 0   100%
test / test_functions.py (no function)   17 0 0   100%
test / test_vars_annotation_processor.py mocked_requests_get   1 0 0   100%
test / test_vars_annotation_processor.py TestVarsAnnotationProcessor.test_init   7 0 0   100%
test / test_vars_annotation_processor.py TestVarsAnnotationProcessor.test_load_phylogeny   3 0 0   100%
test / test_vars_annotation_processor.py TestVarsAnnotationProcessor.test_fetch_media   5 0 0   100%
test / test_vars_annotation_processor.py TestVarsAnnotationProcessor.test_fetch_vars_phylogeny   3 0 0   100%
test / test_vars_annotation_processor.py TestVarsAnnotationProcessor.test_get_image_url_only_one   2 0 0   100%
test / test_vars_annotation_processor.py TestVarsAnnotationProcessor.test_get_image_url_png   2 0 0   100%
test / test_vars_annotation_processor.py TestVarsAnnotationProcessor.test_get_video   5 0 0   100%
test / test_vars_annotation_processor.py TestVarsAnnotationProcessor.test_get_video_url_second_media   4 0 0   100%
test / test_vars_annotation_processor.py TestVarsAnnotationProcessor.test_process_images   4 0 0   100%
test / test_vars_annotation_processor.py TestVarsAnnotationProcessor.test_sort_records   5 0 0   100%
test / test_vars_annotation_processor.py TestVarsAnnotationProcessor.test_find_highest_id_refs   5 0 0   100%
test / test_vars_annotation_processor.py (no function)   27 0 0   100%
test / test_vars_qaqc_processor.py mocked_requests_get   1 0 0   100%
test / test_vars_qaqc_processor.py TestVarsQaqcProcessor.test_init   6 0 0   100%
test / test_vars_qaqc_processor.py TestVarsQaqcProcessor.test_fetch_annotations   3 0 0   100%
test / test_vars_qaqc_processor.py TestVarsQaqcProcessor.test_find_duplicate_associations   6 0 0   100%
test / test_vars_qaqc_processor.py TestVarsQaqcProcessor.test_find_missing_s1   6 0 0   100%
test / test_vars_qaqc_processor.py TestVarsQaqcProcessor.test_find_identical_s1_s2   6 0 0   100%
test / test_vars_qaqc_processor.py TestVarsQaqcProcessor.test_find_duplicate_s2   6 0 0   100%
test / test_vars_qaqc_processor.py TestVarsQaqcProcessor.test_find_missing_upon_substrate   6 0 0   100%
test / test_vars_qaqc_processor.py TestVarsQaqcProcessor.test_find_mismatched_substrates   6 0 0   100%
test / test_vars_qaqc_processor.py TestVarsQaqcProcessor.test_find_missing_upon   6 0 0   100%
test / test_vars_qaqc_processor.py TestVarsQaqcProcessor.test_get_num_records_missing_ancillary_data   4 0 0   100%
test / test_vars_qaqc_processor.py TestVarsQaqcProcessor.test_find_missing_ancillary_data   6 0 0   100%
test / test_vars_qaqc_processor.py TestVarsQaqcProcessor.test_find_id_refs_different_concept_name   6 0 0   100%
test / test_vars_qaqc_processor.py TestVarsQaqcProcessor.test_find_id_refs_conflicting_associations   6 0 0   100%
test / test_vars_qaqc_processor.py TestVarsQaqcProcessor.test_find_blank_associations   6 0 0   100%
test / test_vars_qaqc_processor.py TestVarsQaqcProcessor.test_find_suspicious_hosts   6 0 0   100%
test / test_vars_qaqc_processor.py TestVarsQaqcProcessor.test_find_missing_expected_association   6 0 0   100%
test / test_vars_qaqc_processor.py TestVarsQaqcProcessor.test_find_long_host_associate_time_diff   6 0 0   100%
test / test_vars_qaqc_processor.py TestVarsQaqcProcessor.test_find_num_bounding_boxes   3 0 0   100%
test / test_vars_qaqc_processor.py TestVarsQaqcProcessor.test_find_unique_fields   3 0 0   100%
test / test_vars_qaqc_processor.py (no function)   46 0 0   100%
test / util / mock_response.py MockResponse.__init__   2 0 0   100%
test / util / mock_response.py MockResponse.json   10 0 0   100%
test / util / mock_response.py (no function)   4 0 0   100%
Total     2800 1433 1   49%

No items found using the specified filter.