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

Class Package

src/packagedcode/models.py:1603–1853  ·  view source on GitHub ↗

Top-level package instance assembled from parsed package data collected from one or more data files such as manifests or lockfiles.

Source from the content-addressed store, hash-verified

1601
1602@attr.attributes(slots=True)
1603class Package(PackageData):
1604 """
1605 Top-level package instance assembled from parsed package data collected
1606 from one or more data files such as manifests or lockfiles.
1607 """
1608
1609 package_uid = String(
1610 label='Package unique id',
1611 help='A unique identifier for this package instance.'
1612 'Consists of the package purl with a UUID qualifier.'
1613 )
1614
1615 datafile_paths = List(
1616 item_type=str,
1617 label='List of datafile paths',
1618 help='List of datafile paths used to create this package.'
1619 )
1620
1621 datasource_ids = List(
1622 item_type=str,
1623 label='datasource ids',
1624 help='List of the datasource ids used to create this package.'
1625 )
1626
1627 def __attrs_post_init__(self, *args, **kwargs):
1628 if not self.purl:
1629 self.purl = self.set_purl()
1630 if not self.package_uid:
1631 self.package_uid = build_package_uid(self.purl)
1632
1633 def to_dict(self):
1634 return super().to_dict(with_details=False)
1635
1636 def to_package_data(self):
1637 mapping = super().to_dict(with_details=True)
1638 mapping.pop('package_uid', None)
1639 mapping.pop('datafile_paths', None)
1640 mapping.pop('datasource_ids', None)
1641 return PackageData.from_dict(mapping)
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

Callers 2

package_talliesFunction · 0.90
write_spdxFunction · 0.90

Calls 2

StringFunction · 0.90
ListFunction · 0.90

Tested by

no test coverage detected