Coverage report: 46%

Files Functions Classes

coverage.py v7.13.5, created at 2026-03-23 05:22 +0000

File function   statements missing excluded   coverage
application / __init__.py (no function)   38 10 0   74%
application / config.py (no function)   23 3 0   87%
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__   9 9 0   0%
application / image_review / external_review / comment_processor.py CommentProcessor.load_comments   118 118 0   0%
application / image_review / external_review / comment_processor.py CommentProcessor.is_vars_annotation   1 1 0   0%
application / image_review / external_review / comment_processor.py CommentProcessor.fetch_vars_annotation   6 6 0   0%
application / image_review / external_review / comment_processor.py (no function)   17 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   40 40 0   0%
application / image_review / tator / routes.py (no function)   8 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 / main.py favicon   1 1 0   0%
application / main.py index   19 19 0   0%
application / main.py index.fetch_json   12 12 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)   17 0 0   100%
application / qaqc / __init__.py (no function)   6 0 0   100%
application / qaqc / tator / __init__.py (no function)   6 0 0   100%
application / qaqc / tator / dropcam / __init__.py (no function)   3 0 0   100%
application / qaqc / tator / dropcam / routes.py _get_deployment_info   9 9 0   0%
application / qaqc / tator / dropcam / routes.py dropcam_qaqc_checklist   34 34 0   0%
application / qaqc / tator / dropcam / routes.py patch_dropcam_qaqc_checklist   7 7 0   0%
application / qaqc / tator / dropcam / routes.py dropcam_qaqc   87 87 0   0%
application / qaqc / tator / dropcam / routes.py attracted_list   2 2 0   0%
application / qaqc / tator / dropcam / routes.py add_attracted   5 5 0   0%
application / qaqc / tator / dropcam / routes.py update_attracted   4 4 0   0%
application / qaqc / tator / dropcam / routes.py delete_attracted   4 4 0   0%
application / qaqc / tator / dropcam / routes.py (no function)   23 0 0   100%
application / qaqc / tator / sub / __init__.py (no function)   3 0 0   100%
application / qaqc / tator / sub / routes.py _get_deployment_info   9 9 0   0%
application / qaqc / tator / sub / routes.py sub_qaqc_checklist   21 21 0   0%
application / qaqc / tator / sub / routes.py patch_sub_qaqc_checklist   7 7 0   0%
application / qaqc / tator / sub / routes.py sub_qaqc   66 66 0   0%
application / qaqc / tator / sub / routes.py (no function)   14 0 0   100%
application / qaqc / tator / util.py init_tator_api   9 9 0   0%
application / qaqc / tator / util.py get_comments_and_image_refs   16 16 0   0%
application / qaqc / tator / util.py (no function)   6 0 0   100%
application / qaqc / vars / __init__.py (no function)   3 0 0   100%
application / qaqc / vars / routes.py vars_qaqc_checklist   14 14 0   0%
application / qaqc / vars / routes.py get_sequence_counts   51 51 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 / tator / __init__.py (no function)   3 0 0   100%
application / tator / routes.py tator_login   6 6 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   40 40 0   0%
application / tator / routes.py tator_sections.should_skip   2 2 0   0%
application / tator / routes.py transects   20 20 0   0%
application / tator / routes.py tator_frame   7 7 0   0%
application / tator / routes.py tator_image   6 6 0   0%
application / tator / routes.py update_tator_localization   17 17 0   0%
application / tator / routes.py update_tator_localization_image   9 9 0   0%
application / tator / routes.py (no function)   26 0 0   100%
application / tator / tator_base_qaqc_processor.py TatorBaseQaqcProcessor.__init__   1 1 0   0%
application / tator / tator_base_qaqc_processor.py TatorBaseQaqcProcessor.check_names_accepted   37 37 0   0%
application / tator / tator_base_qaqc_processor.py TatorBaseQaqcProcessor.check_missing_qualifier   7 7 0   0%
application / tator / tator_base_qaqc_processor.py TatorBaseQaqcProcessor.check_stet_reason   8 8 0   0%
application / tator / tator_base_qaqc_processor.py TatorBaseQaqcProcessor.get_all_tentative_ids_and_morphospecies   36 36 0   0%
application / tator / tator_base_qaqc_processor.py TatorBaseQaqcProcessor.get_all_notes_and_remarks   18 18 0   0%
application / tator / tator_base_qaqc_processor.py TatorBaseQaqcProcessor.get_re_examined   7 7 0   0%
application / tator / tator_base_qaqc_processor.py TatorBaseQaqcProcessor.get_unique_taxa   1 1 0   0%
application / tator / tator_base_qaqc_processor.py TatorBaseQaqcProcessor.get_summary   1 1 0   0%
application / tator / tator_base_qaqc_processor.py TatorBaseQaqcProcessor.download_image_guide   1 1 0   0%
application / tator / tator_base_qaqc_processor.py (no function)   19 0 0   100%
application / tator / tator_dropcam_qaqc_processor.py TatorDropcamQaqcProcessor.__init__   1 1 0   0%
application / tator / tator_dropcam_qaqc_processor.py TatorDropcamQaqcProcessor.check_attracted_not_attracted   15 15 0   0%
application / tator / tator_dropcam_qaqc_processor.py TatorDropcamQaqcProcessor.check_same_name_qualifier   18 18 0   0%
application / tator / tator_dropcam_qaqc_processor.py TatorDropcamQaqcProcessor.check_non_target_not_attracted   10 10 0   0%
application / tator / tator_dropcam_qaqc_processor.py TatorDropcamQaqcProcessor.check_exists_in_image_references   18 18 0   0%
application / tator / tator_dropcam_qaqc_processor.py TatorDropcamQaqcProcessor.get_unique_taxa   30 30 0   0%
application / tator / tator_dropcam_qaqc_processor.py TatorDropcamQaqcProcessor.get_max_n   22 22 0   0%
application / tator / tator_dropcam_qaqc_processor.py TatorDropcamQaqcProcessor.get_tofa   48 48 0   0%
application / tator / tator_dropcam_qaqc_processor.py TatorDropcamQaqcProcessor.get_summary   4 4 0   0%
application / tator / tator_dropcam_qaqc_processor.py TatorDropcamQaqcProcessor.download_image_guide   67 67 0   0%
application / tator / tator_dropcam_qaqc_processor.py TatorDropcamQaqcProcessor.fetch_start_times   27 27 0   0%
application / tator / tator_dropcam_qaqc_processor.py (no function)   26 0 0   100%
application / tator / tator_localization_processor.py Section.__init__   6 6 0   0%
application / tator / tator_localization_processor.py TatorLocalizationProcessor.__init__   9 9 0   0%
application / tator / tator_localization_processor.py TatorLocalizationProcessor.fetch_localizations   15 15 0   0%
application / tator / tator_localization_processor.py TatorLocalizationProcessor.process_records   94 94 0   0%
application / tator / tator_localization_processor.py TatorLocalizationProcessor.process_records.collect_localizations   1 1 0   0%
application / tator / tator_localization_processor.py TatorLocalizationProcessor.process_records.first_if_all_same   1 1 0   0%
application / tator / tator_localization_processor.py TatorLocalizationProcessor.process_records.is_populated   3 3 0   0%
application / tator / tator_localization_processor.py TatorLocalizationProcessor._get_annotator_name   13 13 0   0%
application / tator / tator_localization_processor.py (no function)   19 0 0   100%
application / tator / tator_rest_client.py TatorRestClient.__init__   2 2 0   0%
application / tator / tator_rest_client.py TatorRestClient.login   3 3 0   0%
application / tator / tator_rest_client.py TatorRestClient.get_localizations   8 8 0   0%
application / tator / tator_rest_client.py TatorRestClient.get_section_by_id   4 4 0   0%
application / tator / tator_rest_client.py TatorRestClient.get_medias_for_section   4 4 0   0%
application / tator / tator_rest_client.py TatorRestClient.get_media_by_id   4 4 0   0%
application / tator / tator_rest_client.py TatorRestClient.get_substrates_for_medias   10 10 0   0%
application / tator / tator_rest_client.py TatorRestClient._get_states   4 4 0   0%
application / tator / tator_rest_client.py TatorRestClient.get_user   4 4 0   0%
application / tator / tator_rest_client.py TatorRestClient.get_frame   10 10 0   0%
application / tator / tator_rest_client.py TatorRestClient.get_localization_graphic   5 5 0   0%
application / tator / tator_rest_client.py TatorRestClient._format_timestamp   2 2 0   0%
application / tator / tator_rest_client.py (no function)   18 0 0   100%
application / tator / tator_sub_qaqc_processor.py TatorSubQaqcProcessor.__init__   1 1 0   0%
application / tator / tator_sub_qaqc_processor.py TatorSubQaqcProcessor.check_missing_ancillary_data   6 6 0   0%
application / tator / tator_sub_qaqc_processor.py TatorSubQaqcProcessor.check_missing_upon_and_not_fish   7 7 0   0%
application / tator / tator_sub_qaqc_processor.py TatorSubQaqcProcessor.check_upons_are_current_substrate_or_previous_animal   25 25 0   0%
application / tator / tator_sub_qaqc_processor.py TatorSubQaqcProcessor._upon_matches_substrate   11 11 0   0%
application / tator / tator_sub_qaqc_processor.py TatorSubQaqcProcessor._get_substrate_for_frame   6 6 0   0%
application / tator / tator_sub_qaqc_processor.py TatorSubQaqcProcessor.get_suspicious_records   7 7 0   0%
application / tator / tator_sub_qaqc_processor.py TatorSubQaqcProcessor.find_long_host_associate_time_diff   28 28 0   0%
application / tator / tator_sub_qaqc_processor.py TatorSubQaqcProcessor.get_unique_taxa   15 15 0   0%
application / tator / tator_sub_qaqc_processor.py TatorSubQaqcProcessor.get_summary   1 1 0   0%
application / tator / tator_sub_qaqc_processor.py TatorSubQaqcProcessor.download_image_guide   1 1 0   0%
application / tator / tator_sub_qaqc_processor.py (no function)   17 0 0   100%
application / tator / tator_type.py TatorLocalizationType.is_relevant   1 1 0   0%
application / tator / tator_type.py TatorLocalizationType.is_box   1 1 0   0%
application / tator / tator_type.py TatorLocalizationType.is_dot   1 1 0   0%
application / tator / tator_type.py (no function)   15 0 0   100%
application / util / constants.py (no function)   3 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)   7 0 0   100%
application / util / phylogeny_cache.py PhylogenyCache.__init__   2 0 0   100%
application / util / phylogeny_cache.py PhylogenyCache.load   5 0 0   100%
application / util / phylogeny_cache.py PhylogenyCache.save   7 0 0   100%
application / util / phylogeny_cache.py PhylogenyCache.fetch_vars   18 1 0   94%
application / util / phylogeny_cache.py PhylogenyCache.fetch_worms   20 20 0   0%
application / util / phylogeny_cache.py (no function)   13 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)   16 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%
application / vars / vars_annotation_processor.py VarsAnnotationProcessor.__init__   11 0 0   100%
application / vars / vars_annotation_processor.py VarsAnnotationProcessor.process_sequences   10 0 0   100%
application / vars / vars_annotation_processor.py VarsAnnotationProcessor.fetch_media_and_annotations   13 0 0   100%
application / vars / vars_annotation_processor.py VarsAnnotationProcessor.get_image_url   8 0 0   100%
application / vars / vars_annotation_processor.py VarsAnnotationProcessor.get_video   18 2 0   89%
application / vars / vars_annotation_processor.py VarsAnnotationProcessor.process_working_records   26 0 0   100%
application / vars / vars_annotation_processor.py VarsAnnotationProcessor.sort_records   5 0 0   100%
application / vars / vars_annotation_processor.py (no function)   16 0 0   100%
application / vars / vars_qaqc_processor.py VarsQaqcProcessor.__init__   1 0 0   100%
application / vars / vars_qaqc_processor.py VarsQaqcProcessor.find_duplicate_associations   16 1 0   94%
application / vars / vars_qaqc_processor.py VarsQaqcProcessor.find_missing_s1   8 0 0   100%
application / vars / vars_qaqc_processor.py VarsQaqcProcessor.find_identical_s1_s2   14 1 0   93%
application / vars / vars_qaqc_processor.py VarsQaqcProcessor.find_duplicate_s2   15 1 0   93%
application / vars / vars_qaqc_processor.py VarsQaqcProcessor.find_missing_upon_substrate   21 1 0   95%
application / vars / vars_qaqc_processor.py VarsQaqcProcessor.find_mismatched_substrates   35 4 0   89%
application / vars / vars_qaqc_processor.py VarsQaqcProcessor.find_missing_upon   7 0 0   100%
application / vars / vars_qaqc_processor.py VarsQaqcProcessor.get_num_records_missing_ancillary_data   6 0 0   100%
application / vars / vars_qaqc_processor.py VarsQaqcProcessor.find_missing_ancillary_data   5 0 0   100%
application / vars / vars_qaqc_processor.py VarsQaqcProcessor.find_id_refs_different_concept_name   19 1 0   95%
application / vars / vars_qaqc_processor.py VarsQaqcProcessor.find_id_refs_conflicting_associations   52 10 0   81%
application / vars / vars_qaqc_processor.py VarsQaqcProcessor.find_blank_associations   8 1 0   88%
application / vars / vars_qaqc_processor.py VarsQaqcProcessor.find_suspicious_hosts   8 1 0   88%
application / vars / vars_qaqc_processor.py VarsQaqcProcessor.find_missing_expected_association   19 1 1   95%
application / vars / vars_qaqc_processor.py VarsQaqcProcessor.find_long_host_associate_time_diff   40 0 0   100%
application / vars / vars_qaqc_processor.py VarsQaqcProcessor.find_num_bounding_boxes   14 0 0   100%
application / vars / vars_qaqc_processor.py VarsQaqcProcessor.find_localizations_without_bounding_boxes   13 13 0   0%
application / vars / vars_qaqc_processor.py VarsQaqcProcessor.find_unique_fields   79 12 0   85%
application / vars / vars_qaqc_processor.py VarsQaqcProcessor.find_unique_fields.load_dict   6 0 0   100%
application / vars / vars_qaqc_processor.py (no function)   22 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)   18 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   8 0 0   100%
test / test_vars_annotation_processor.py TestVarsAnnotationProcessor.test_fetch_media   3 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   1 0 0   100%
test / test_vars_annotation_processor.py TestVarsAnnotationProcessor.test_get_image_url_png   1 0 0   100%
test / test_vars_annotation_processor.py TestVarsAnnotationProcessor.test_get_video   3 0 0   100%
test / test_vars_annotation_processor.py TestVarsAnnotationProcessor.test_get_video_url_second_media   3 0 0   100%
test / test_vars_annotation_processor.py TestVarsAnnotationProcessor.test_process_images   3 0 0   100%
test / test_vars_annotation_processor.py TestVarsAnnotationProcessor.test_sort_records   3 0 0   100%
test / test_vars_annotation_processor.py TestVarsAnnotationProcessor.test_find_highest_id_refs   3 0 0   100%
test / test_vars_annotation_processor.py (no function)   24 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_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)   42 0 0   100%
test / util / mock_response.py MockResponse.__init__   2 0 0   100%
test / util / mock_response.py MockResponse.json   11 0 0   100%
test / util / mock_response.py (no function)   6 0 0   100%
Total     3206 1739 1   46%

No items found using the specified filter.