{"added_deps_external":[],"added_deps_external_complete":[],"removed_deps":[],"removed_deps_external":[],"removed_deps_external_complete":[],"added_deps":[{"used_role":"Production","upstream_impact":"0.0","user_role":"Production","coupling_impact":"0.03030303120613098","used":"/sgraph/sgraph/src> sgraph/converters/external_root_semantics.py/ROLE_UNKNOWN","type":"import","user":"/sgraph/sgraph/src> sgraph/converters/external_identification.py"},{"used_role":"Production","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/sgraph/src> sgraph/converters/external_identification.py/attach_coverage_compositions","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py","test_to_prod_coupling_impact":"0.5552560575306416"},{"used_role":"Production","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/sgraph/src> sgraph/converters/external_identification.py/attach_coverage_summary","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py","test_to_prod_coupling_impact":"0.5552560575306416"},{"used_role":"Production","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/sgraph/src> sgraph/converters/external_identification.py/external_coverage_report","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py","test_to_prod_coupling_impact":"0.5552560575306416"},{"used_role":"Production","upstream_impact":"0.0","user_role":"Production","coupling_impact":"0.0","used":"/sgraph/sgraph/src> sgraph/converters/external_root_semantics.py/external_relative_segments","type":"func_ref","user":"/sgraph/sgraph/src> sgraph/converters/external_root_semantics.py/is_root_node"},{"used_role":"Production","upstream_impact":"0.0","user_role":"Production","coupling_impact":"0.0","used":"/sgraph/sgraph/src> sgraph/converters/sbom_cyclonedx_generator.py/_validated_spec_version","type":"func_ref","user":"/sgraph/sgraph/src> sgraph/converters/sbom_cyclonedx_generator.py/generate_for_element_from_sgraph"},{"used_role":"Production","upstream_impact":"0.0","user_role":"Production","coupling_impact":"0.0","used":"/sgraph/sgraph/src> sgraph/converters/sbom_cyclonedx_generator.py/_validated_spec_version","type":"func_ref","user":"/sgraph/sgraph/src> sgraph/converters/sbom_cyclonedx_generator.py/generate_multi_from_sgraph"},{"used_role":"Test","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/canonical_component","type":"func_ref","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_a_generic_name_without_a_scope_is_untouched"},{"used_role":"ExistingExternal","imported_as":"generate_multi_from_sgraph","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/External/Python/sgraph/converters/sbom_cyclonedx_generator/generate_multi_from_sgraph","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_a_repository_is_told_apart_from_a_non_repository_element"},{"used_role":"Test","upstream_impact":"0.0","user_role":"Test","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_a_repository_is_told_apart_from_a_non_repository_element"},{"used_role":"ExistingExternal","imported_as":"get_model_and_model_api","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/External/Python/Usual dependencies","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_a_requested_spec_version_cannot_leak_into_the_next_call"},{"used_role":"Test","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/canonical_component","type":"func_ref","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_a_scoped_name_whose_ecosystem_did_not_resolve_is_still_encoded"},{"used_role":"Test","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/purl_type_resolution","type":"func_ref","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_a_scoped_name_whose_ecosystem_did_not_resolve_is_still_encoded"},{"used_role":"ExistingExternal","imported_as":"generate_multi_from_sgraph","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/External/Python/sgraph/converters/sbom_cyclonedx_generator/generate_multi_from_sgraph","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_an_unsupported_spec_version_is_refused_naming_the_ones_that_work"},{"used_role":"ExistingExternal","imported_as":"get_model_and_model_api","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/External/Python/Usual dependencies","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_an_unsupported_spec_version_is_refused_naming_the_ones_that_work"},{"used_role":"ExistingExternal","imported_as":"generate_for_element_from_sgraph","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/External/Python/Usual dependencies","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_an_unsupported_spec_version_is_refused_naming_the_ones_that_work"},{"used_role":"NewExternal","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/External/Python/call","type":"ref","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_an_unsupported_spec_version_is_refused_naming_the_ones_that_work"},{"used_role":"ExistingExternal","imported_as":"generate_multi_from_sgraph","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/External/Python/sgraph/converters/sbom_cyclonedx_generator/generate_multi_from_sgraph","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_an_untyped_element_publishes_no_type_rather_than_a_guess"},{"used_role":"Test","upstream_impact":"0.0","user_role":"Test","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_an_untyped_element_publishes_no_type_rather_than_a_guess"},{"used_role":"Test","upstream_impact":"0.0","user_role":"Test","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_an_untyped_element_publishes_no_type_rather_than_a_guess"},{"used_role":"ExistingExternal","imported_as":"generate_multi_from_sgraph","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/External/Python/sgraph/converters/sbom_cyclonedx_generator/generate_multi_from_sgraph","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_each_supported_spec_version_reaches_every_entry_point"},{"used_role":"ExistingExternal","imported_as":"get_model_and_model_api","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/External/Python/Usual dependencies","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_each_supported_spec_version_reaches_every_entry_point"},{"used_role":"ExistingExternal","imported_as":"generate_for_element_from_sgraph","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/External/Python/Usual dependencies","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_each_supported_spec_version_reaches_every_entry_point"},{"used_role":"Test","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/objects_by_cyclonedx_kind","type":"func_ref","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_every_key_the_default_document_carries_is_one_the_default_version_defines"},{"used_role":"NewExternal","imported_as":"attach_coverage_compositions","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/External/Python/sgraph/converters/external_identification/attach_coverage_compositions","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_every_key_the_default_document_carries_is_one_the_default_version_defines"},{"used_role":"ExistingExternal","imported_as":"get_model_and_model_api","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/External/Python/Usual dependencies","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_every_key_the_default_document_carries_is_one_the_default_version_defines"},{"used_role":"NewExternal","imported_as":"external_coverage_report","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/External/Python/sgraph/converters/external_identification/external_coverage_report","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_every_key_the_default_document_carries_is_one_the_default_version_defines"},{"used_role":"ExistingExternal","imported_as":"generate_multi_from_sgraph","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/External/Python/sgraph/converters/sbom_cyclonedx_generator/generate_multi_from_sgraph","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_every_key_the_default_document_carries_is_one_the_default_version_defines"},{"used_role":"ExistingExternal","imported_as":"generate_multi_from_sgraph","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/External/Python/sgraph/converters/sbom_cyclonedx_generator/generate_multi_from_sgraph","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_every_stored_fixture_is_unchanged_because_none_carries_a_type"},{"used_role":"ExistingExternal","imported_as":"get_model_and_model_api","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/External/Python/Usual dependencies","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_every_stored_fixture_is_unchanged_because_none_carries_a_type"},{"used_role":"Test","upstream_impact":"0.0","user_role":"Test","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_every_stored_fixture_is_unchanged_because_none_carries_a_type"},{"used_role":"ExistingExternal","imported_as":"get_model_and_model_api","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/External/Python/Usual dependencies","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_the_default_spec_version_is_one_the_deployed_estate_can_read"},{"used_role":"ExistingExternal","imported_as":"generate_for_element_from_sgraph","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/External/Python/Usual dependencies","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_the_default_spec_version_is_one_the_deployed_estate_can_read"},{"used_role":"Test","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/canonical_component","type":"func_ref","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_the_generic_encoding_does_not_touch_the_disclosed_name"},{"used_role":"ExistingExternal","imported_as":"get_model_and_model_api","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/External/Python/Usual dependencies","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_the_oldest_stored_fixture_takes_the_new_default_like_every_other"},{"used_role":"Test","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/without_the_fields_allowed_to_move","type":"func_ref","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_the_oldest_stored_fixture_takes_the_new_default_like_every_other"},{"used_role":"ExistingExternal","imported_as":"generate_multi_from_sgraph","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/External/Python/sgraph/converters/sbom_cyclonedx_generator/generate_multi_from_sgraph","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_the_published_type_is_a_string_as_cyclonedx_requires"},{"used_role":"ExistingExternal","imported_as":"get_model_and_model_api","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/External/Python/Usual dependencies","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_the_spec_version_is_the_only_thing_the_spec_version_changes"},{"used_role":"Test","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/without_the_fields_allowed_to_move","type":"func_ref","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_the_spec_version_is_the_only_thing_the_spec_version_changes"},{"used_role":"ExistingExternal","imported_as":"generate_multi_from_sgraph","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/External/Python/sgraph/converters/sbom_cyclonedx_generator/generate_multi_from_sgraph","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_the_type_reaches_the_legacy_and_inlined_components_too"},{"used_role":"ExistingExternal","imported_as":"get_model_and_model_api","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/External/Python/Usual dependencies","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_the_type_reaches_the_legacy_and_inlined_components_too"},{"used_role":"Test","upstream_impact":"0.0","user_role":"Test","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_the_type_reaches_the_legacy_and_inlined_components_too"},{"used_role":"Production","imported_as":"SGraph","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/sgraph/src> sgraph/sgraph.py/SGraph","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/test_the_type_reaches_the_legacy_and_inlined_components_too","test_to_prod_coupling_impact":"0.2965288804844022"},{"used_role":"Production","imported_as":"SGraph","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/sgraph/src> sgraph/sgraph.py/SGraph","type":"import","user":"/sgraph/sgraph/tests/converters/sbom_cyclonedx_generator_test.py/typed_estate_model","test_to_prod_coupling_impact":"0.2965288804844022"},{"used_role":"Test","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/sgraph/tests/converters/test_external_identification.py/category_of","type":"func_ref","user":"/sgraph/sgraph/tests/converters/test_external_identification.py/test_a_root_known_to_assert_no_kind_keeps_exactly_todays_answer"},{"used_role":"Test","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/sgraph/tests/converters/test_external_identification.py/external","type":"func_ref","user":"/sgraph/sgraph/tests/converters/test_external_identification.py/test_a_root_known_to_assert_no_kind_keeps_exactly_todays_answer"},{"used_role":"Test","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/sgraph/tests/converters/test_external_identification.py/identification","type":"func_ref","user":"/sgraph/sgraph/tests/converters/test_external_identification.py/test_a_root_known_to_assert_no_kind_keeps_exactly_todays_answer"},{"used_role":"Production","imported_as":"SGraph","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/sgraph/src> sgraph/sgraph.py/SGraph","type":"import","user":"/sgraph/sgraph/tests/converters/test_external_identification.py/test_a_root_known_to_assert_no_kind_keeps_exactly_todays_answer","test_to_prod_coupling_impact":"0.2894540512934327"},{"used_role":"Test","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/sgraph/tests/converters/test_external_identification.py/category_of","type":"func_ref","user":"/sgraph/sgraph/tests/converters/test_external_identification.py/test_an_element_under_a_root_with_no_rule_makes_no_identification_claim"},{"used_role":"Test","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/sgraph/tests/converters/test_external_identification.py/identification","type":"func_ref","user":"/sgraph/sgraph/tests/converters/test_external_identification.py/test_an_element_under_a_root_with_no_rule_makes_no_identification_claim"},{"used_role":"Test","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/sgraph/tests/converters/test_external_identification.py/external_root_of","type":"func_ref","user":"/sgraph/sgraph/tests/converters/test_external_identification.py/test_an_unknown_root_is_recognised_as_a_root_whatever_the_tables_say"},{"used_role":"Test","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/sgraph/tests/converters/test_external_identification.py/unknown_root_model","type":"func_ref","user":"/sgraph/sgraph/tests/converters/test_external_identification.py/test_an_unknown_root_is_recognised_as_a_root_whatever_the_tables_say"},{"used_role":"NewExternal","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/External/Python/__import__","type":"ref","user":"/sgraph/sgraph/tests/converters/test_external_identification.py/test_an_unknown_root_is_recognised_as_a_root_whatever_the_tables_say"},{"used_role":"Test","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/sgraph/tests/converters/test_external_identification.py/category_of","type":"func_ref","user":"/sgraph/sgraph/tests/converters/test_external_identification.py/test_an_unmatched_image_under_a_known_root_is_left_alone"},{"used_role":"Test","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/sgraph/tests/converters/test_external_identification.py/external","type":"func_ref","user":"/sgraph/sgraph/tests/converters/test_external_identification.py/test_an_unmatched_image_under_a_known_root_is_left_alone"},{"used_role":"Test","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/sgraph/tests/converters/test_external_identification.py/identification","type":"func_ref","user":"/sgraph/sgraph/tests/converters/test_external_identification.py/test_an_unmatched_image_under_a_known_root_is_left_alone"},{"used_role":"Production","imported_as":"SElement","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/sgraph/src> sgraph/sgraph.py/SElement","type":"import","user":"/sgraph/sgraph/tests/converters/test_external_identification.py/test_an_unmatched_image_under_a_known_root_is_left_alone","test_to_prod_coupling_impact":"0.4761207206174731"},{"used_role":"Production","imported_as":"SGraph","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/sgraph/src> sgraph/sgraph.py/SGraph","type":"import","user":"/sgraph/sgraph/tests/converters/test_external_identification.py/test_an_unmatched_image_under_a_known_root_is_left_alone","test_to_prod_coupling_impact":"0.2894540512934327"},{"used_role":"Test","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/sgraph/tests/converters/test_external_identification.py/identification","type":"func_ref","user":"/sgraph/sgraph/tests/converters/test_external_identification.py/test_the_new_bucket_does_not_claim_its_members_are_packages"},{"used_role":"Test","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/sgraph/tests/converters/test_external_identification.py/category_of","type":"func_ref","user":"/sgraph/sgraph/tests/converters/test_external_identification.py/test_the_root_element_of_an_unknown_root_is_structure_not_a_failed_identification"},{"used_role":"Test","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/sgraph/tests/converters/test_external_identification.py/identification","type":"func_ref","user":"/sgraph/sgraph/tests/converters/test_external_identification.py/test_the_root_element_of_an_unknown_root_is_structure_not_a_failed_identification"},{"used_role":"Test","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/sgraph/tests/converters/test_external_identification.py/identification","type":"func_ref","user":"/sgraph/sgraph/tests/converters/test_external_identification.py/test_the_summary_publishes_the_new_count_rather_than_hiding_it"},{"used_role":"Test","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/sgraph/tests/converters/test_external_identification.py/external","type":"func_ref","user":"/sgraph/sgraph/tests/converters/test_external_identification.py/unknown_root_model"},{"used_role":"Production","imported_as":"SGraph","upstream_impact":"0.0","user_role":"Test","used":"/sgraph/sgraph/src> sgraph/sgraph.py/SGraph","type":"import","user":"/sgraph/sgraph/tests/converters/test_external_identification.py/unknown_root_model","test_to_prod_coupling_impact":"0.2894540512934327"}],"code_rank":{"code_rank_global_base":73.04785975822941,"code_rank_global_head":72.87593362315678,"code_rank_local_head":95.41471359426706,"code_rank_local_base":97.91677519665758}}