spdx_tools.spdx3.writer.console.payload_writer

 1# SPDX-FileCopyrightText: 2023 spdx contributors
 2#
 3# SPDX-License-Identifier: Apache-2.0
 4from beartype.typing import TextIO
 5
 6from spdx_tools.spdx3.model import (
 7    Annotation,
 8    Bom,
 9    Bundle,
10    Organization,
11    Person,
12    Relationship,
13    SoftwareAgent,
14    SpdxDocument,
15    Tool,
16)
17from spdx_tools.spdx3.model.ai import AIPackage
18from spdx_tools.spdx3.model.build import Build
19from spdx_tools.spdx3.model.dataset import Dataset
20from spdx_tools.spdx3.model.software import File, Package, Sbom, Snippet, SoftwareDependencyRelationship
21from spdx_tools.spdx3.payload import Payload
22from spdx_tools.spdx3.writer.console.agent_writer import write_agent
23from spdx_tools.spdx3.writer.console.ai.ai_package_writer import write_ai_package
24from spdx_tools.spdx3.writer.console.annotation_writer import write_annotation
25from spdx_tools.spdx3.writer.console.bom_writer import write_bom
26from spdx_tools.spdx3.writer.console.build.build_writer import write_build
27from spdx_tools.spdx3.writer.console.bundle_writer import write_bundle
28from spdx_tools.spdx3.writer.console.dataset.dataset_writer import write_dataset
29from spdx_tools.spdx3.writer.console.relationship_writer import write_relationship
30from spdx_tools.spdx3.writer.console.software.file_writer import write_file
31from spdx_tools.spdx3.writer.console.software.package_writer import write_package
32from spdx_tools.spdx3.writer.console.software.sbom_writer import write_sbom
33from spdx_tools.spdx3.writer.console.software.snippet_writer import write_snippet
34from spdx_tools.spdx3.writer.console.software.software_dependency_relationship_writer import (
35    write_software_dependency_relationship,
36)
37from spdx_tools.spdx3.writer.console.spdx_document_writer import write_spdx_document
38from spdx_tools.spdx3.writer.console.tool_writer import write_tool
39
40MAP_CLASS_TO_WRITE_METHOD = {
41    Annotation: write_annotation,
42    Relationship: write_relationship,
43    SoftwareDependencyRelationship: write_software_dependency_relationship,
44    Bundle: write_bundle,
45    SpdxDocument: write_spdx_document,
46    Bom: write_bom,
47    File: write_file,
48    Package: write_package,
49    Snippet: write_snippet,
50    Sbom: write_sbom,
51    Person: write_agent,
52    Organization: write_agent,
53    SoftwareAgent: write_agent,
54    Tool: write_tool,
55    AIPackage: write_ai_package,
56    Dataset: write_dataset,
57    Build: write_build,
58}
59
60
61def write_payload(payload: Payload, text_output: TextIO):
62    for element in payload.get_full_map().values():
63        write_method = MAP_CLASS_TO_WRITE_METHOD[type(element)]
64        write_method(element, text_output)
65        text_output.write("\n")
MAP_CLASS_TO_WRITE_METHOD = {<class 'spdx_tools.spdx3.model.annotation.Annotation'>: <function write_annotation>, <class 'spdx_tools.spdx3.model.relationship.Relationship'>: <function write_relationship>, <class 'spdx_tools.spdx3.model.software.software_dependency_relationship.SoftwareDependencyRelationship'>: <function write_software_dependency_relationship>, <class 'spdx_tools.spdx3.model.bundle.Bundle'>: <function write_bundle>, <class 'spdx_tools.spdx3.model.spdx_document.SpdxDocument'>: <function write_spdx_document>, <class 'spdx_tools.spdx3.model.bom.Bom'>: <function write_bom>, <class 'spdx_tools.spdx3.model.software.file.File'>: <function write_file>, <class 'spdx_tools.spdx3.model.software.package.Package'>: <function write_package>, <class 'spdx_tools.spdx3.model.software.snippet.Snippet'>: <function write_snippet>, <class 'spdx_tools.spdx3.model.software.sbom.Sbom'>: <function write_sbom>, <class 'spdx_tools.spdx3.model.person.Person'>: <function write_agent>, <class 'spdx_tools.spdx3.model.organization.Organization'>: <function write_agent>, <class 'spdx_tools.spdx3.model.software_agent.SoftwareAgent'>: <function write_agent>, <class 'spdx_tools.spdx3.model.tool.Tool'>: <function write_tool>, <class 'spdx_tools.spdx3.model.ai.ai_package.AIPackage'>: <function write_ai_package>, <class 'spdx_tools.spdx3.model.dataset.dataset.Dataset'>: <function write_dataset>, <class 'spdx_tools.spdx3.model.build.build.Build'>: <function write_build>}
def write_payload( payload: spdx_tools.spdx3.payload.Payload, text_output: <class 'TextIO'>):
62def write_payload(payload: Payload, text_output: TextIO):
63    for element in payload.get_full_map().values():
64        write_method = MAP_CLASS_TO_WRITE_METHOD[type(element)]
65        write_method(element, text_output)
66        text_output.write("\n")