{"added_deps_external":[],"added_deps_external_complete":[],"removed_deps":[],"removed_deps_external":[],"removed_deps_external_complete":[],"added_deps":[{"upstream_impact":"0.0","coupling_impact":"0.0","used":"/sgraph/sgraph/src> sgraph/converters/sbom_cyclonedx_generator.py/_add_element_location","type":"func_ref","user":"/sgraph/sgraph/src> sgraph/converters/sbom_cyclonedx_generator.py/_sbom_for_content_element"},{"upstream_impact":"0.0","coupling_impact":"0.0","used":"/sgraph/sgraph/src> sgraph/converters/sbom_cyclonedx_generator.py/_add_vcs_reference","type":"func_ref","user":"/sgraph/sgraph/src> sgraph/converters/sbom_cyclonedx_generator.py/_sbom_for_content_element"},{"upstream_impact":"0.0","coupling_impact":"0.0","used":"/sgraph/sgraph/src> sgraph/converters/sbom_cyclonedx_generator.py/_add_element_location","type":"func_ref","user":"/sgraph/sgraph/src> sgraph/converters/sbom_cyclonedx_generator.py/_transitive_components_and_dependencies"},{"upstream_impact":"0.0","coupling_impact":"0.0","used":"/sgraph/sgraph/src> sgraph/converters/sbom_cyclonedx_generator.py/_add_vcs_reference","type":"func_ref","user":"/sgraph/sgraph/src> sgraph/converters/sbom_cyclonedx_generator.py/_transitive_components_and_dependencies"},{"upstream_impact":"0.0","coupling_impact":"0.0","used":"/sgraph/sgraph/src> sgraph/converters/sbom_cyclonedx_generator.py/_add_element_location","type":"func_ref","user":"/sgraph/sgraph/src> sgraph/converters/sbom_cyclonedx_generator.py/analyze_component_section"},{"imported_as":"SGraph","upstream_impact":"0.0","used":"/sgraph/sgraph/src> sgraph/sgraph.py/SGraph","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_a_blank_repo_url_does_not_mask_a_real_one_further_up","test_to_prod_coupling_impact":"0.770388625562191"},{"imported_as":"get_model_and_model_api","upstream_impact":"0.0","used":"/sgraph/External/Python/modelapi_test/get_model_and_model_api","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_bom_ref_stays_the_slug_not_the_path"},{"imported_as":"generate_multi_from_sgraph","upstream_impact":"0.0","used":"/sgraph/External/Python/Usual dependencies","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_bom_ref_stays_the_slug_not_the_path"},{"upstream_impact":"0.0","used":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/find_property","type":"func_ref","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_element_location_is_level_agnostic"},{"upstream_impact":"0.0","used":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/sbom_of","type":"func_ref","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_element_location_is_level_agnostic"},{"imported_as":"get_model_and_model_api","upstream_impact":"0.0","used":"/sgraph/External/Python/modelapi_test/get_model_and_model_api","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_element_location_is_level_agnostic"},{"imported_as":"generate_multi_from_sgraph","upstream_impact":"0.0","used":"/sgraph/External/Python/Usual dependencies","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_element_location_is_level_agnostic"},{"upstream_impact":"0.0","used":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/find_property","type":"func_ref","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_element_path_matches_the_serial_number_for_every_sbom"},{"imported_as":"get_model_and_model_api","upstream_impact":"0.0","used":"/sgraph/External/Python/modelapi_test/get_model_and_model_api","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_element_path_matches_the_serial_number_for_every_sbom"},{"imported_as":"generate_multi_from_sgraph","upstream_impact":"0.0","used":"/sgraph/External/Python/Usual dependencies","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_element_path_matches_the_serial_number_for_every_sbom"},{"imported_as":"deterministic_serial","upstream_impact":"0.0","used":"/sgraph/External/Python/Usual dependencies","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_element_path_matches_the_serial_number_for_every_sbom"},{"upstream_impact":"0.0","used":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/find_property","type":"func_ref","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_group_is_absent_at_the_top_level"},{"upstream_impact":"0.0","used":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/sbom_of","type":"func_ref","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_group_is_absent_at_the_top_level"},{"imported_as":"get_model_and_model_api","upstream_impact":"0.0","used":"/sgraph/External/Python/modelapi_test/get_model_and_model_api","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_group_is_absent_at_the_top_level"},{"imported_as":"generate_multi_from_sgraph","upstream_impact":"0.0","used":"/sgraph/External/Python/Usual dependencies","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_group_is_absent_at_the_top_level"},{"upstream_impact":"0.0","used":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/find_property","type":"func_ref","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_inlined_mirror_is_told_apart_from_its_host_by_its_published_location"},{"imported_as":"get_model_and_model_api","upstream_impact":"0.0","used":"/sgraph/External/Python/modelapi_test/get_model_and_model_api","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_inlined_mirror_is_told_apart_from_its_host_by_its_published_location"},{"imported_as":"generate_multi_from_sgraph","upstream_impact":"0.0","used":"/sgraph/External/Python/Usual dependencies","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_inlined_mirror_is_told_apart_from_its_host_by_its_published_location"},{"upstream_impact":"0.0","used":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/find_property","type":"func_ref","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_legacy_single_sbom_carries_the_element_path"},{"imported_as":"get_model_and_model_api","upstream_impact":"0.0","used":"/sgraph/External/Python/modelapi_test/get_model_and_model_api","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_legacy_single_sbom_carries_the_element_path"},{"upstream_impact":"0.0","used":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/find_property","type":"func_ref","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_metadata_component_carries_element_path"},{"upstream_impact":"0.0","used":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/sbom_of","type":"func_ref","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_metadata_component_carries_element_path"},{"imported_as":"get_model_and_model_api","upstream_impact":"0.0","used":"/sgraph/External/Python/modelapi_test/get_model_and_model_api","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_metadata_component_carries_element_path"},{"imported_as":"generate_multi_from_sgraph","upstream_impact":"0.0","used":"/sgraph/External/Python/Usual dependencies","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_metadata_component_carries_element_path"},{"imported_as":"get_model_and_model_api","upstream_impact":"0.0","used":"/sgraph/External/Python/modelapi_test/get_model_and_model_api","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_metadata_component_carries_the_parent_path_as_group"},{"upstream_impact":"0.0","used":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/sbom_of","type":"func_ref","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_metadata_component_carries_the_parent_path_as_group"},{"imported_as":"generate_multi_from_sgraph","upstream_impact":"0.0","used":"/sgraph/External/Python/Usual dependencies","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_metadata_component_carries_the_parent_path_as_group"},{"upstream_impact":"0.0","used":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/find_property","type":"func_ref","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_mirrored_repositories_are_distinguished_by_their_location"},{"imported_as":"get_model_and_model_api","upstream_impact":"0.0","used":"/sgraph/External/Python/modelapi_test/get_model_and_model_api","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_mirrored_repositories_are_distinguished_by_their_location"},{"imported_as":"generate_multi_from_sgraph","upstream_impact":"0.0","used":"/sgraph/External/Python/Usual dependencies","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_mirrored_repositories_are_distinguished_by_their_location"},{"imported_as":"get_model_and_model_api","upstream_impact":"0.0","used":"/sgraph/External/Python/modelapi_test/get_model_and_model_api","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_mirrored_repositories_carry_their_own_distinct_repository_urls"},{"imported_as":"generate_multi_from_sgraph","upstream_impact":"0.0","used":"/sgraph/External/Python/Usual dependencies","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_mirrored_repositories_carry_their_own_distinct_repository_urls"},{"imported_as":"get_model_and_model_api","upstream_impact":"0.0","used":"/sgraph/External/Python/modelapi_test/get_model_and_model_api","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_nearest_repo_url_wins_over_a_more_distant_ancestor"},{"imported_as":"generate_multi_from_sgraph","upstream_impact":"0.0","used":"/sgraph/External/Python/Usual dependencies","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_nearest_repo_url_wins_over_a_more_distant_ancestor"},{"imported_as":"get_model_and_model_api","upstream_impact":"0.0","used":"/sgraph/External/Python/modelapi_test/get_model_and_model_api","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_no_vcs_reference_when_no_ancestor_has_one"},{"upstream_impact":"0.0","used":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/sbom_of","type":"func_ref","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_no_vcs_reference_when_no_ancestor_has_one"},{"imported_as":"generate_multi_from_sgraph","upstream_impact":"0.0","used":"/sgraph/External/Python/Usual dependencies","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_no_vcs_reference_when_no_ancestor_has_one"},{"imported_as":"get_model_and_model_api","upstream_impact":"0.0","used":"/sgraph/External/Python/modelapi_test/get_model_and_model_api","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_purl_and_version_stay_empty_on_the_metadata_component"},{"imported_as":"generate_multi_from_sgraph","upstream_impact":"0.0","used":"/sgraph/External/Python/Usual dependencies","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_purl_and_version_stay_empty_on_the_metadata_component"},{"imported_as":"generate_for_element_from_sgraph","upstream_impact":"0.0","used":"/sgraph/External/Python/Usual dependencies","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_selected_element_sbom_also_carries_its_location"},{"upstream_impact":"0.0","used":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/find_property","type":"func_ref","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_selected_element_sbom_also_carries_its_location"},{"imported_as":"get_model_and_model_api","upstream_impact":"0.0","used":"/sgraph/External/Python/modelapi_test/get_model_and_model_api","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_selected_element_sbom_also_carries_its_location"},{"imported_as":"get_model_and_model_api","upstream_impact":"0.0","used":"/sgraph/External/Python/modelapi_test/get_model_and_model_api","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_serial_numbers_stay_derived_from_the_element_path"},{"imported_as":"generate_multi_from_sgraph","upstream_impact":"0.0","used":"/sgraph/External/Python/Usual dependencies","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_serial_numbers_stay_derived_from_the_element_path"},{"imported_as":"deterministic_serial","upstream_impact":"0.0","used":"/sgraph/External/Python/Usual dependencies","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_serial_numbers_stay_derived_from_the_element_path"},{"upstream_impact":"0.0","used":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/find_property","type":"func_ref","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_transitive_internal_components_carry_their_location"},{"imported_as":"get_model_and_model_api","upstream_impact":"0.0","used":"/sgraph/External/Python/modelapi_test/get_model_and_model_api","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_transitive_internal_components_carry_their_location"},{"imported_as":"generate_multi_from_sgraph","upstream_impact":"0.0","used":"/sgraph/External/Python/Usual dependencies","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_transitive_internal_components_carry_their_location"},{"imported_as":"get_model_and_model_api","upstream_impact":"0.0","used":"/sgraph/External/Python/modelapi_test/get_model_and_model_api","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_vcs_reference_comes_from_the_elements_own_repo_url"},{"upstream_impact":"0.0","used":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/sbom_of","type":"func_ref","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_vcs_reference_comes_from_the_elements_own_repo_url"},{"imported_as":"generate_multi_from_sgraph","upstream_impact":"0.0","used":"/sgraph/External/Python/Usual dependencies","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_vcs_reference_comes_from_the_elements_own_repo_url"},{"imported_as":"generate_for_element_from_sgraph","upstream_impact":"0.0","used":"/sgraph/External/Python/Usual dependencies","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_vcs_reference_is_inherited_from_the_nearest_ancestor"},{"imported_as":"get_model_and_model_api","upstream_impact":"0.0","used":"/sgraph/External/Python/modelapi_test/get_model_and_model_api","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_vcs_reference_is_inherited_from_the_nearest_ancestor"}],"code_rank":{"code_rank_global_base":60.15700930073741,"code_rank_global_head":62.165459022815625,"code_rank_local_head":86.04832729413553,"code_rank_local_base":74.66376968428565}}