setup.py
    F 8:0 get_requirements - A (4)
tests/test_manifest_models.py
    M 30:4 TestManifestModels.test_attributes - A (5)
    M 44:4 TestManifestModels.test_add_tags_and_value - A (3)
    M 97:4 TestManifestModels.test_get_dependencies - A (3)
    C 12:0 TestManifestModels - A (2)
    M 15:4 TestManifestModels.test_mavenpom_constructor_with_blank_xml_str - A (2)
    M 20:4 TestManifestModels.test_mavenpom_constructor_with_invalid_xml_str - A (2)
    M 25:4 TestManifestModels.test_mavenpom_constructor_with_valid_xml_str - A (2)
    M 53:4 TestManifestModels.test_add_dependency - A (2)
    M 64:4 TestManifestModels.test_add_dependencies - A (2)
    M 85:4 TestManifestModels.test_remove_dependency - A (2)
    M 125:4 TestManifestModels.test_pypi_constructor - A (2)
    M 130:4 TestManifestModels.test_npm_constructor - A (2)
tests/test_api_v1.py
    F 258:0 test_get_item_skip - B (7)
    F 18:0 assert_pages - A (5)
    F 268:0 test_get_item_relative_limit - A (5)
    F 276:0 test_get_item_absolute_limit - A (5)
    F 284:0 test_get_items_for_page - A (5)
    F 98:0 fill_packages_for_paging - A (3)
    C 111:0 TestApiV1Root - A (3)
    M 142:4 TestApiV1Root.test_api_root - A (3)
    M 179:4 TestCommonEndpoints.test_stack_analyses_202 - A (3)
    C 235:0 TestApiV1SystemVersion - A (3)
    M 239:4 TestApiV1SystemVersion.test_get_system_version - A (3)
    C 246:0 TestApiV1RecommendationFeedback - A (3)
    M 250:4 TestApiV1RecommendationFeedback.test_get_recommendation_feedback - A (3)
    F 37:0 fill_analyses - A (2)
    F 292:0 test_paginated - A (2)
    C 149:0 TestCommonEndpoints - A (2)
    M 153:4 TestCommonEndpoints.test_readiness - A (2)
    M 158:4 TestCommonEndpoints.test_liveness - A (2)
    M 164:4 TestCommonEndpoints.test_error - A (2)
    M 169:4 TestCommonEndpoints.test_system_version - A (2)
    M 174:4 TestCommonEndpoints.test_stack_analyses - A (2)
    M 202:4 TestCommonEndpoints.test_component_search - A (2)
    M 207:4 TestCommonEndpoints.test_component_analyses - A (2)
    M 213:4 TestCommonEndpoints.test_component_analyses1 - A (2)
    F 13:0 api_route_for - A (1)
    C 228:0 TestUser - A (1)
tests/test_generate_manifest.py
    F 6:0 test_constructor - A (4)
    F 37:0 test_attributes - A (4)
    F 45:0 test_add_framework - A (4)
    F 68:0 test_xml_string - A (2)
    F 87:0 test_add_dependencies - A (2)
tests/test_depencency_finder.py
    F 7:0 test_scan_and_find_dependencies - A (4)
    F 20:0 test_scan_and_find_dependencies_pypi - A (4)
    F 33:0 test_scan_and_find_dependencies_golang - A (3)
tests/test_utils.py
    F 446:0 test_get_cves_by_date_ecosystem_add - B (10)
    F 300:0 test_semantic_versioning - B (9)
    F 389:0 test_create_dir_structure - B (8)
    F 466:0 test_get_epvs_by_cve - B (7)
    F 321:0 test_version_info_tuple - B (6)
    F 334:0 test_version_info_tuple_empty_version_obj - B (6)
    F 426:0 test_gremlin_component_analysis_response - B (6)
    F 369:0 test_has_field - A (5)
    F 515:0 test_get_ecosystem_from_manifest - A (5)
    F 358:0 test_get_user_email - A (4)
    F 483:0 test_check_manifest_for_resolved_deps - A (4)
    F 578:0 test_graph_analyses - A (4)
    F 181:0 analyses - A (3)
    F 345:0 test_select_latest_version - A (3)
    F 377:0 test_is_valid - A (3)
    F 383:0 test_get_core_dependencies - A (3)
    F 546:0 test_check_for_accepted_ecosystem - A (3)
    F 555:0 test_get_analyses_from_graph - A (2)
    F 564:0 get_vendor_data - A (2)
    F 620:0 test_get_link - A (2)
    C 217:0 TestDoProjection - A (2)
    M 221:4 TestDoProjection.test_empty_projection - A (2)
    M 228:4 TestDoProjection.test_simple_projection - A (2)
    M 236:4 TestDoProjection.test_none_projection - A (2)
    M 243:4 TestDoProjection.test_nested_projection - A (2)
    M 252:4 TestDoProjection.test_combined_projection - A (2)
    M 261:4 TestDoProjection.test_three_level_fields - A (2)
    C 273:0 TestFetchFileFromGithub - A (2)
    M 278:4 TestFetchFileFromGithub.test_github_url_exist_or_not - A (2)
    M 283:4 TestFetchFileFromGithub.test_repo_with_file_exist - A (2)
    M 290:4 TestFetchFileFromGithub.test_repo_file_in_diff_branch - A (2)
    C 593:0 MockedGremlinResponse - A (1)
    M 596:4 MockedGremlinResponse.__init__ - A (1)
    M 600:4 MockedGremlinResponse.json - A (1)
    C 605:0 GenerateRecommendationMocker - A (1)
    M 608:4 GenerateRecommendationMocker.__init__ - A (1)
    M 612:4 GenerateRecommendationMocker.clubbed_data - A (1)
tests/test_license_extractor.py
    F 25:0 test_get_license_synonyms - B (7)
    F 74:0 test_extract_licenses - A (5)
    F 67:0 _check_extracted_license - A (4)
    F 56:0 test_get_license_synonyms_wrong_response - A (3)
    F 103:0 test_extract_licenses_no_synonyms - A (3)
    F 50:0 mocked_requests_get - A (2)
    F 113:0 test_extract_licenses_wrong_file - A (2)
    F 9:0 setUp - A (1)
    F 15:0 tearDown - A (1)
    F 20:0 current_app_logger - A (1)
    C 42:0 _response - A (1)
    M 45:4 _response.__init__ - A (1)
tests/conftest.py
    F 34:0 rdb - A (2)
    F 12:0 someuser - A (1)
    F 20:0 auth_header - A (1)
    F 26:0 app - A (1)
tools/check_python_version.py
    F 19:0 get_expected_version - A (4)
    F 48:0 compare_versions - A (2)
    F 59:0 main - A (2)
    F 43:0 get_actual_version - A (1)
bayesian/auth.py
    F 8:0 get_access_token - A (3)
bayesian/dependency_finder.py
    M 100:4 DependencyFinder.execute - C (19)
    M 205:4 DependencyFinder.validate_manifest - B (9)
    M 33:4 DependencyFinder.get_npm_dependencies - B (8)
    C 22:0 DependencyFinder - B (7)
    M 70:4 DependencyFinder.get_npm_transitives - B (7)
    M 87:4 DependencyFinder._handle_external_deps - A (5)
    M 25:4 DependencyFinder.scan_and_find_dependencies - A (2)
    M 184:4 DependencyFinder.get_dependencies_from_ecosystem_list - A (2)
bayesian/__init__.py
    F 18:0 setup_logging - A (2)
    F 33:0 create_app - A (1)
bayesian/utils.py
    F 1202:0 push_repo - C (11)
    F 424:0 get_analyses_from_graph - B (8)
    F 1103:0 fetch_file_from_github_release - B (8)
    F 1157:0 create_directory_structure - B (8)
    F 137:0 do_projection - B (6)
    F 290:0 search_packages_from_graph - B (6)
    M 342:4 GraphAnalyses.get_analyses_for_snyk - B (6)
    M 846:4 GithubRead.get_manifest_files - B (6)
    F 256:0 generate_recommendation - A (5)
    F 647:0 get_system_version - A (5)
    F 666:0 get_next_component_from_graph - A (5)
    F 1051:0 select_latest_version - A (5)
    F 1077:0 fetch_file_from_github - A (5)
    F 1322:0 resolved_files_exist - A (5)
    F 1334:0 get_ecosystem_from_manifest - A (5)
    M 231:4 GremlinComponentAnalysisResponse.get_version_without_cves - A (5)
    M 538:4 CveByDateEcosystemUtils.get_cves_by_date_ecosystem - A (5)
    M 863:4 GithubRead.get_files_github_url - A (5)
    M 901:4 RecommendationReason.add_reco_reason - A (5)
    M 956:4 RecommendationReason._companion_reason - A (5)
    F 1241:0 get_booster_core_repo - A (4)
    F 1267:0 get_recommendation_feedback_by_ecosystem - A (4)
    M 181:4 GremlinComponentAnalysisResponse.__init__ - A (4)
    M 216:4 GremlinComponentAnalysisResponse.get_max_cvss_score - A (4)
    C 738:0 JSONEncoderWithExtraTypes - A (4)
    M 746:4 JSONEncoderWithExtraTypes.default - A (4)
    C 836:0 GithubRead - A (4)
    C 898:0 RecommendationReason - A (4)
    M 938:4 RecommendationReason._check_usage_outlier - A (4)
    F 108:0 server_create_analysis - A (3)
    F 155:0 has_field - A (3)
    F 630:0 get_latest_analysis_for - A (3)
    F 759:0 retrieve_worker_results - A (3)
    F 781:0 retrieve_worker_result - A (3)
    F 805:0 get_item_from_list_by_key_value - A (3)
    F 1008:0 convert_version_to_proper_semantic - A (3)
    C 178:0 GremlinComponentAnalysisResponse - A (3)
    C 332:0 GraphAnalyses - A (3)
    M 920:4 RecommendationReason._alternate_reason - A (3)
    F 84:0 get_user_email - A (2)
    F 169:0 add_field - A (2)
    F 706:0 set_tags_to_component - A (2)
    F 813:0 fetch_sa_request - A (2)
    F 823:0 request_timed_out - A (2)
    F 1036:0 version_info_tuple - A (2)
    M 204:4 GremlinComponentAnalysisResponse.get_cve_maps - A (2)
    C 502:0 CveByDateEcosystemUtils - A (2)
    M 528:4 CveByDateEcosystemUtils.__init__ - A (2)
    M 568:4 CveByDateEcosystemUtils.get_cves_epv_by_date - A (2)
    M 587:4 CveByDateEcosystemUtils.prepare_response_cve - A (2)
    M 611:4 CveByDateEcosystemUtils.prepare_response_epv - A (2)
    M 892:4 GithubRead.del_temp_files - A (2)
    F 58:0 get_recent_analyses - A (1)
    F 64:0 server_run_flow - A (1)
    F 94:0 server_create_component_bookkeeping - A (1)
    F 992:0 get_categories_data - A (1)
    F 1137:0 is_valid - A (1)
    F 1142:0 generate_content_hash - A (1)
    F 1148:0 get_core_dependencies - A (1)
    F 1317:0 check_for_accepted_ecosystem - A (1)
    M 200:4 GremlinComponentAnalysisResponse.has_cves - A (1)
    M 335:4 GraphAnalyses.__init__ - A (1)
    M 412:4 GraphAnalyses.get_link - A (1)
    M 581:4 CveByDateEcosystemUtils.prepare_payload - A (1)
bayesian/manifest_models.py
    M 62:4 MavenPom.add_element - B (10)
    M 13:4 MavenPom.__init__ - B (8)
    M 49:4 MavenPom.__setitem__ - A (3)
    M 141:4 MavenPom.tostring - A (3)
    C 10:0 MavenPom - A (2)
    M 102:4 MavenPom.add_dependencies - A (2)
    M 127:4 MavenPom.get_dependencies - A (2)
    M 135:4 MavenPom._commit - A (2)
    M 43:4 MavenPom.__getitem__ - A (1)
    M 94:4 MavenPom.add_dependency - A (1)
    M 111:4 MavenPom.remove_dependency - A (1)
    M 119:4 MavenPom.__contains__ - A (1)
    M 157:4 MavenPom.to_objectify - A (1)
    M 166:4 MavenPom._reload - A (1)
    C 286:0 PypiRequirements - A (1)
    M 289:4 PypiRequirements.__init__ - A (1)
    C 297:0 NpmPackage - A (1)
    M 300:4 NpmPackage.__init__ - A (1)
bayesian/generate_manifest.py
    M 62:4 PomXMLTemplate.add_dependencies - A (4)
    M 23:4 PomXMLTemplate.create - A (3)
    M 45:4 PomXMLTemplate.add_framework - A (3)
    C 10:0 PomXMLTemplate - A (2)
    M 13:4 PomXMLTemplate.__init__ - A (1)
    M 73:4 PomXMLTemplate.xml_string - A (1)
bayesian/api_v1.py
    M 751:4 StackAnalyses.post - D (29)
    C 382:0 StackAnalysesGET - C (19)
    M 387:4 StackAnalysesGET.get - C (19)
    C 746:0 StackAnalyses - C (15)
    C 323:0 ComponentAnalysesPOST - B (10)
    M 328:4 ComponentAnalysesPOST.post - B (10)
    C 978:0 CategoryService - B (8)
    M 983:4 CategoryService.get - B (8)
    C 241:0 ComponentAnalyses - B (7)
    M 246:4 ComponentAnalyses.get - B (7)
    C 553:0 UserIntent - B (7)
    M 558:4 UserIntent.post - B (7)
    C 681:0 SetTagsToComponent - B (7)
    M 686:4 SetTagsToComponent.post - B (7)
    C 1051:0 EmptyBooster - B (7)
    M 1056:4 EmptyBooster.post - B (7)
    C 1021:0 CoreDependencies - A (5)
    M 1026:4 CoreDependencies.get - A (5)
    C 1145:0 CveByDateEcosystem - A (5)
    M 1150:4 CveByDateEcosystem.get - A (5)
    F 85:0 error - A (4)
    C 521:0 UserFeedback - A (4)
    M 529:4 UserFeedback.post - A (4)
    C 595:0 UserIntentGET - A (4)
    M 600:4 UserIntentGET.get - A (4)
    C 932:0 SubmitFeedback - A (4)
    M 937:4 SubmitFeedback.post - A (4)
    F 189:0 add_resource_no_matter_slashes - A (3)
    F 495:0 stack_analyses_debug - A (3)
    M 631:4 MasterTagsGET.get - A (3)
    C 657:0 GetNextComponent - A (3)
    M 662:4 GetNextComponent.post - A (3)
    C 719:0 GenerateManifest - A (3)
    M 724:4 GenerateManifest.post - A (3)
    C 225:0 ComponentSearch - A (2)
    M 230:4 ComponentSearch.get - A (2)
    C 624:0 MasterTagsGET - A (2)
    C 1132:0 RecommendationFB - A (2)
    M 1135:4 RecommendationFB.get - A (2)
    C 1176:0 EpvsByCveidService - A (2)
    M 1181:4 EpvsByCveidService.get - A (2)
    F 104:0 readiness - A (1)
    F 110:0 liveness - A (1)
    F 120:0 get_item_skip - A (1)
    F 125:0 get_item_relative_limit - A (1)
    F 130:0 get_item_absolute_limit - A (1)
    F 135:0 get_items_for_page - A (1)
    F 142:0 paginated - A (1)
    F 1224:0 handle_http_error - A (1)
    F 1230:0 api_401_handler - A (1)
    F 1239:0 api_404_handler - A (1)
    C 208:0 ApiEndpoints - A (1)
    M 211:4 ApiEndpoints.get - A (1)
    C 216:0 SystemVersion - A (1)
    M 219:4 SystemVersion.get - A (1)
    M 652:4 MasterTagsGET.__repr__ - A (1)
    M 926:4 StackAnalyses.get - A (1)
bayesian/exceptions.py
    C 8:0 HTTPError - A (1)
    M 20:4 HTTPError.__init__ - A (1)
bayesian/license_extractor.py
    F 29:0 extract_licenses - C (13)
    F 15:0 get_license_synonyms - A (2)

264 blocks (classes, functions, methods) analyzed.
Average complexity: A (3.5492424242424243)