4343
4444Usage::
4545
46- import pathlib
4746 from scanpipe.pipes import spdx
4847
4948 creation_info = spdx.CreationInfo(
5352 tool="SPDXCode-1.0",
5453 )
5554
55+ root_package = spdx.Package(
56+ spdx_id="SPDXRef-project1",
57+ name="project1",
58+ )
59+
5660 package1 = spdx.Package(
5761 spdx_id="SPDXRef-package1",
5862 name="lxml",
7680 document = spdx.Document(
7781 name="Document name",
7882 namespace="https://[CreatorWebsite]/[pathToSpdx]/[DocumentName]-[UUID]",
83+ describes=[root_package.spdx_id],
7984 creation_info=creation_info,
80- packages=[package1],
85+ packages=[root_package, package1],
8186 extracted_licenses=[
8287 spdx.ExtractedLicensingInfo(
8388 license_id="LicenseRef-1",
9398 print(document.as_json())
9499
95100 # Validate document
96- schema = pathlib.Path( spdx.SPDX_JSON_SCHEMA_LOCATION) .read_text()
101+ schema = spdx.SPDX_SCHEMA_PATH .read_text()
97102 document.validate(schema)
98103
99104 # Write document to a file:
@@ -542,7 +547,7 @@ class Document:
542547
543548 name : str
544549 namespace : str
545- describe : Package
550+ describes : list
546551 creation_info : CreationInfo
547552 packages : list [Package ]
548553
@@ -557,18 +562,15 @@ class Document:
557562
558563 def as_dict (self ):
559564 """Return the SPDX document as a serializable dict."""
560- packages = [self .describe .as_dict ()]
561- packages .extend ([package .as_dict () for package in self .packages ])
562-
563565 data = {
564566 "spdxVersion" : f"SPDX-{ self .version } " ,
565567 "dataLicense" : self .data_license ,
566568 "SPDXID" : self .spdx_id ,
567569 "name" : self .safe_document_name (self .name ),
568570 "documentNamespace" : self .namespace ,
569- "documentDescribes" : [ self .describe . spdx_id ] ,
571+ "documentDescribes" : self .describes ,
570572 "creationInfo" : self .creation_info .as_dict (),
571- "packages" : packages ,
573+ "packages" : [ package . as_dict () for package in self . packages ] ,
572574 }
573575
574576 if self .files :
@@ -601,6 +603,7 @@ def from_data(cls, data):
601603 data_license = data .get ("dataLicense" ),
602604 name = data .get ("name" ),
603605 namespace = data .get ("documentNamespace" ),
606+ describes = data .get ("documentDescribes" ),
604607 creation_info = CreationInfo .from_data (data .get ("creationInfo" , {})),
605608 packages = [
606609 Package .from_data (package_data )
0 commit comments