MCPcopy Create free account
hub / github.com/aboutcode-org/scancode-toolkit / from_package_data

Method from_package_data

src/packagedcode/models.py:1644–1678  ·  view source on GitHub ↗

Return a Package from a ``package_data`` PackageData object or mapping. Or None.

(cls, package_data, datafile_path=None, package_only=False)

Source from the content-addressed store, hash-verified

1642
1643 @classmethod
1644 def from_package_data(cls, package_data, datafile_path=None, package_only=False):
1645 """
1646 Return a Package from a ``package_data`` PackageData object
1647 or mapping. Or None.
1648 """
1649 if isinstance(package_data, PackageData):
1650 package_data_mapping = package_data.to_dict()
1651 dsid = package_data.datasource_id
1652 elif isinstance(package_data, dict):
1653 # make a copy
1654 package_data_mapping = dict(package_data.items())
1655 dsid = package_data['datasource_id']
1656 elif package_data:
1657 raise Exception(f'Invalid type: {package_data!r}', package_data)
1658
1659 package_data_mapping['datasource_ids'] = [dsid]
1660
1661 if datafile_path:
1662 package_data_mapping['datafile_paths'] = [datafile_path]
1663 license_detections = package_data_mapping.get('license_detections', [])
1664 for detection in license_detections:
1665 for license_match in detection['matches']:
1666 if not license_match['from_file']:
1667 license_match['from_file'] = datafile_path
1668
1669 package = cls.from_dict(package_data_mapping)
1670
1671 if not package.package_uid:
1672 package.package_uid = build_package_uid(package.purl)
1673
1674 if not package_only:
1675 package.populate_license_fields()
1676 package.populate_holder_field()
1677
1678 return package
1679
1680 @classmethod
1681 def from_dict(cls, mapping):

Callers 15

assembleMethod · 0.80
assembleMethod · 0.80
assembleMethod · 0.80
assembleMethod · 0.80
assembleMethod · 0.80
assembleMethod · 0.80
assembleMethod · 0.80
assemble_from_manyMethod · 0.80
assembleMethod · 0.80
assembleMethod · 0.80
assembleMethod · 0.80

Calls 6

build_package_uidFunction · 0.85
populate_holder_fieldMethod · 0.80
getMethod · 0.65
to_dictMethod · 0.45
from_dictMethod · 0.45

Tested by

no test coverage detected