spdx_tools.spdx3.model.relationship
1# SPDX-FileCopyrightText: 2023 spdx contributors 2# 3# SPDX-License-Identifier: Apache-2.0 4from dataclasses import field 5from datetime import datetime 6from enum import Enum, auto 7 8from beartype.typing import List, Optional 9 10from spdx_tools.common.typing.dataclass_with_properties import dataclass_with_properties 11from spdx_tools.common.typing.type_checks import check_types_and_set_values 12from spdx_tools.spdx3.model import CreationInfo, Element, ExternalIdentifier, ExternalReference, IntegrityMethod 13 14 15class RelationshipType(Enum): 16 AFFECTS = auto() 17 AMENDS = auto() 18 ANCESTOR = auto() 19 AVAILABLE_FROM = auto() 20 BUILD_DEPENDENCY = auto() 21 BUILD_TOOL = auto() 22 COORDINATED_BY = auto() 23 CONTAINS = auto() 24 CONFIG_OF = auto() 25 COPY = auto() 26 DATA_FILE = auto() 27 DEPENDENCY_MANIFEST = auto() 28 DEPENDS_ON = auto() 29 DESCENDANT = auto() 30 DESCRIBES = auto() 31 DEV_DEPENDENCY = auto() 32 DEV_TOOL = auto() 33 DISTRIBUTION_ARTIFACT = auto() 34 DOCUMENTATION = auto() 35 DOES_NOT_AFFECT = auto() 36 DYNAMIC_LINK = auto() 37 EXAMPLE = auto() 38 EVIDENCE_FOR = auto() 39 EXPANDED_FROM_ARCHIVE = auto() 40 EXPLOIT_CREATED_BY = auto() 41 FILE_ADDED = auto() 42 FILE_DELETED = auto() 43 FILE_MODIFIED = auto() 44 FIXED_BY = auto() 45 FIXED_IN = auto() 46 FOUND_BY = auto() 47 GENERATES = auto() 48 HAS_ASSESSMENT_FOR = auto() 49 HAS_ASSOCIATED_VULNERABILITY = auto() 50 HOST_OF = auto() 51 INPUT_OF = auto() 52 INVOKED_BY = auto() 53 METAFILE = auto() 54 ON_BEHALF_OF = auto() 55 OPTIONAL_COMPONENT = auto() 56 OPTIONAL_DEPENDENCY = auto() 57 OTHER = auto() 58 OUTPUT_OF = auto() 59 PACKAGES = auto() 60 PATCH = auto() 61 PREREQUISITE = auto() 62 PROVIDED_DEPENDENCY = auto() 63 PUBLISHED_BY = auto() 64 REPORTED_BY = auto() 65 REPUBLISHED_BY = auto() 66 REQUIREMENT_FOR = auto() 67 RUNTIME_DEPENDENCY = auto() 68 SPECIFICATION_FOR = auto() 69 STATIC_LINK = auto() 70 TEST = auto() 71 TEST_CASE = auto() 72 TEST_DEPENDENCY = auto() 73 TEST_TOOL = auto() 74 TESTED_ON = auto() 75 TRAINED_ON = auto() 76 UNDER_INVESTIGATION_FOR = auto() 77 VARIANT = auto() 78 79 80class RelationshipCompleteness(Enum): 81 INCOMPLETE = auto() 82 COMPLETE = auto() 83 NOASSERTION = auto() 84 85 86@dataclass_with_properties 87class Relationship(Element): 88 # due to the inheritance we need to make all fields non-default in the __annotation__, 89 # the __init__ method still raises an error if required fields are not set 90 from_element: str = None 91 to: List[str] = field(default_factory=list) 92 relationship_type: RelationshipType = None 93 completeness: Optional[RelationshipCompleteness] = None 94 start_time: Optional[datetime] = None 95 end_time: Optional[datetime] = None 96 97 def __init__( 98 self, 99 spdx_id: str, 100 from_element: str, 101 relationship_type: RelationshipType, 102 to: List[str] = None, 103 creation_info: Optional[CreationInfo] = None, 104 name: Optional[str] = None, 105 summary: Optional[str] = None, 106 description: Optional[str] = None, 107 comment: Optional[str] = None, 108 verified_using: List[IntegrityMethod] = None, 109 external_reference: List[ExternalReference] = None, 110 external_identifier: List[ExternalIdentifier] = None, 111 extension: Optional[str] = None, 112 completeness: Optional[RelationshipCompleteness] = None, 113 start_time: Optional[datetime] = None, 114 end_time: Optional[datetime] = None, 115 ): 116 to = [] if to is None else to 117 verified_using = [] if verified_using is None else verified_using 118 external_reference = [] if external_reference is None else external_reference 119 external_identifier = [] if external_identifier is None else external_identifier 120 check_types_and_set_values(self, locals())
class
RelationshipType(enum.Enum):
16class RelationshipType(Enum): 17 AFFECTS = auto() 18 AMENDS = auto() 19 ANCESTOR = auto() 20 AVAILABLE_FROM = auto() 21 BUILD_DEPENDENCY = auto() 22 BUILD_TOOL = auto() 23 COORDINATED_BY = auto() 24 CONTAINS = auto() 25 CONFIG_OF = auto() 26 COPY = auto() 27 DATA_FILE = auto() 28 DEPENDENCY_MANIFEST = auto() 29 DEPENDS_ON = auto() 30 DESCENDANT = auto() 31 DESCRIBES = auto() 32 DEV_DEPENDENCY = auto() 33 DEV_TOOL = auto() 34 DISTRIBUTION_ARTIFACT = auto() 35 DOCUMENTATION = auto() 36 DOES_NOT_AFFECT = auto() 37 DYNAMIC_LINK = auto() 38 EXAMPLE = auto() 39 EVIDENCE_FOR = auto() 40 EXPANDED_FROM_ARCHIVE = auto() 41 EXPLOIT_CREATED_BY = auto() 42 FILE_ADDED = auto() 43 FILE_DELETED = auto() 44 FILE_MODIFIED = auto() 45 FIXED_BY = auto() 46 FIXED_IN = auto() 47 FOUND_BY = auto() 48 GENERATES = auto() 49 HAS_ASSESSMENT_FOR = auto() 50 HAS_ASSOCIATED_VULNERABILITY = auto() 51 HOST_OF = auto() 52 INPUT_OF = auto() 53 INVOKED_BY = auto() 54 METAFILE = auto() 55 ON_BEHALF_OF = auto() 56 OPTIONAL_COMPONENT = auto() 57 OPTIONAL_DEPENDENCY = auto() 58 OTHER = auto() 59 OUTPUT_OF = auto() 60 PACKAGES = auto() 61 PATCH = auto() 62 PREREQUISITE = auto() 63 PROVIDED_DEPENDENCY = auto() 64 PUBLISHED_BY = auto() 65 REPORTED_BY = auto() 66 REPUBLISHED_BY = auto() 67 REQUIREMENT_FOR = auto() 68 RUNTIME_DEPENDENCY = auto() 69 SPECIFICATION_FOR = auto() 70 STATIC_LINK = auto() 71 TEST = auto() 72 TEST_CASE = auto() 73 TEST_DEPENDENCY = auto() 74 TEST_TOOL = auto() 75 TESTED_ON = auto() 76 TRAINED_ON = auto() 77 UNDER_INVESTIGATION_FOR = auto() 78 VARIANT = auto()
AFFECTS =
<RelationshipType.AFFECTS: 1>
AMENDS =
<RelationshipType.AMENDS: 2>
ANCESTOR =
<RelationshipType.ANCESTOR: 3>
AVAILABLE_FROM =
<RelationshipType.AVAILABLE_FROM: 4>
BUILD_DEPENDENCY =
<RelationshipType.BUILD_DEPENDENCY: 5>
BUILD_TOOL =
<RelationshipType.BUILD_TOOL: 6>
COORDINATED_BY =
<RelationshipType.COORDINATED_BY: 7>
CONTAINS =
<RelationshipType.CONTAINS: 8>
CONFIG_OF =
<RelationshipType.CONFIG_OF: 9>
COPY =
<RelationshipType.COPY: 10>
DATA_FILE =
<RelationshipType.DATA_FILE: 11>
DEPENDENCY_MANIFEST =
<RelationshipType.DEPENDENCY_MANIFEST: 12>
DEPENDS_ON =
<RelationshipType.DEPENDS_ON: 13>
DESCENDANT =
<RelationshipType.DESCENDANT: 14>
DESCRIBES =
<RelationshipType.DESCRIBES: 15>
DEV_DEPENDENCY =
<RelationshipType.DEV_DEPENDENCY: 16>
DEV_TOOL =
<RelationshipType.DEV_TOOL: 17>
DISTRIBUTION_ARTIFACT =
<RelationshipType.DISTRIBUTION_ARTIFACT: 18>
DOCUMENTATION =
<RelationshipType.DOCUMENTATION: 19>
DOES_NOT_AFFECT =
<RelationshipType.DOES_NOT_AFFECT: 20>
DYNAMIC_LINK =
<RelationshipType.DYNAMIC_LINK: 21>
EXAMPLE =
<RelationshipType.EXAMPLE: 22>
EVIDENCE_FOR =
<RelationshipType.EVIDENCE_FOR: 23>
EXPANDED_FROM_ARCHIVE =
<RelationshipType.EXPANDED_FROM_ARCHIVE: 24>
EXPLOIT_CREATED_BY =
<RelationshipType.EXPLOIT_CREATED_BY: 25>
FILE_ADDED =
<RelationshipType.FILE_ADDED: 26>
FILE_DELETED =
<RelationshipType.FILE_DELETED: 27>
FILE_MODIFIED =
<RelationshipType.FILE_MODIFIED: 28>
FIXED_BY =
<RelationshipType.FIXED_BY: 29>
FIXED_IN =
<RelationshipType.FIXED_IN: 30>
FOUND_BY =
<RelationshipType.FOUND_BY: 31>
GENERATES =
<RelationshipType.GENERATES: 32>
HAS_ASSESSMENT_FOR =
<RelationshipType.HAS_ASSESSMENT_FOR: 33>
HAS_ASSOCIATED_VULNERABILITY =
<RelationshipType.HAS_ASSOCIATED_VULNERABILITY: 34>
HOST_OF =
<RelationshipType.HOST_OF: 35>
INPUT_OF =
<RelationshipType.INPUT_OF: 36>
INVOKED_BY =
<RelationshipType.INVOKED_BY: 37>
METAFILE =
<RelationshipType.METAFILE: 38>
ON_BEHALF_OF =
<RelationshipType.ON_BEHALF_OF: 39>
OPTIONAL_COMPONENT =
<RelationshipType.OPTIONAL_COMPONENT: 40>
OPTIONAL_DEPENDENCY =
<RelationshipType.OPTIONAL_DEPENDENCY: 41>
OTHER =
<RelationshipType.OTHER: 42>
OUTPUT_OF =
<RelationshipType.OUTPUT_OF: 43>
PACKAGES =
<RelationshipType.PACKAGES: 44>
PATCH =
<RelationshipType.PATCH: 45>
PREREQUISITE =
<RelationshipType.PREREQUISITE: 46>
PROVIDED_DEPENDENCY =
<RelationshipType.PROVIDED_DEPENDENCY: 47>
PUBLISHED_BY =
<RelationshipType.PUBLISHED_BY: 48>
REPORTED_BY =
<RelationshipType.REPORTED_BY: 49>
REPUBLISHED_BY =
<RelationshipType.REPUBLISHED_BY: 50>
REQUIREMENT_FOR =
<RelationshipType.REQUIREMENT_FOR: 51>
RUNTIME_DEPENDENCY =
<RelationshipType.RUNTIME_DEPENDENCY: 52>
SPECIFICATION_FOR =
<RelationshipType.SPECIFICATION_FOR: 53>
STATIC_LINK =
<RelationshipType.STATIC_LINK: 54>
TEST =
<RelationshipType.TEST: 55>
TEST_CASE =
<RelationshipType.TEST_CASE: 56>
TEST_DEPENDENCY =
<RelationshipType.TEST_DEPENDENCY: 57>
TEST_TOOL =
<RelationshipType.TEST_TOOL: 58>
TESTED_ON =
<RelationshipType.TESTED_ON: 59>
TRAINED_ON =
<RelationshipType.TRAINED_ON: 60>
UNDER_INVESTIGATION_FOR =
<RelationshipType.UNDER_INVESTIGATION_FOR: 61>
VARIANT =
<RelationshipType.VARIANT: 62>
Inherited Members
- enum.Enum
- name
- value
class
RelationshipCompleteness(enum.Enum):
81class RelationshipCompleteness(Enum): 82 INCOMPLETE = auto() 83 COMPLETE = auto() 84 NOASSERTION = auto()
INCOMPLETE =
<RelationshipCompleteness.INCOMPLETE: 1>
COMPLETE =
<RelationshipCompleteness.COMPLETE: 2>
NOASSERTION =
<RelationshipCompleteness.NOASSERTION: 3>
Inherited Members
- enum.Enum
- name
- value
87@dataclass_with_properties 88class Relationship(Element): 89 # due to the inheritance we need to make all fields non-default in the __annotation__, 90 # the __init__ method still raises an error if required fields are not set 91 from_element: str = None 92 to: List[str] = field(default_factory=list) 93 relationship_type: RelationshipType = None 94 completeness: Optional[RelationshipCompleteness] = None 95 start_time: Optional[datetime] = None 96 end_time: Optional[datetime] = None 97 98 def __init__( 99 self, 100 spdx_id: str, 101 from_element: str, 102 relationship_type: RelationshipType, 103 to: List[str] = None, 104 creation_info: Optional[CreationInfo] = None, 105 name: Optional[str] = None, 106 summary: Optional[str] = None, 107 description: Optional[str] = None, 108 comment: Optional[str] = None, 109 verified_using: List[IntegrityMethod] = None, 110 external_reference: List[ExternalReference] = None, 111 external_identifier: List[ExternalIdentifier] = None, 112 extension: Optional[str] = None, 113 completeness: Optional[RelationshipCompleteness] = None, 114 start_time: Optional[datetime] = None, 115 end_time: Optional[datetime] = None, 116 ): 117 to = [] if to is None else to 118 verified_using = [] if verified_using is None else verified_using 119 external_reference = [] if external_reference is None else external_reference 120 external_identifier = [] if external_identifier is None else external_identifier 121 check_types_and_set_values(self, locals())
Relationship( spdx_id: str, from_element: str, relationship_type: RelationshipType, to: list[str] = None, creation_info: Optional[spdx_tools.spdx3.model.creation_info.CreationInfo] = None, name: Optional[str] = None, summary: Optional[str] = None, description: Optional[str] = None, comment: Optional[str] = None, verified_using: list[spdx_tools.spdx3.model.integrity_method.IntegrityMethod] = None, external_reference: list[spdx_tools.spdx3.model.external_reference.ExternalReference] = None, external_identifier: list[spdx_tools.spdx3.model.external_identifier.ExternalIdentifier] = None, extension: Optional[str] = None, completeness: Optional[RelationshipCompleteness] = None, start_time: Optional[datetime.datetime] = None, end_time: Optional[datetime.datetime] = None)
98 def __init__( 99 self, 100 spdx_id: str, 101 from_element: str, 102 relationship_type: RelationshipType, 103 to: List[str] = None, 104 creation_info: Optional[CreationInfo] = None, 105 name: Optional[str] = None, 106 summary: Optional[str] = None, 107 description: Optional[str] = None, 108 comment: Optional[str] = None, 109 verified_using: List[IntegrityMethod] = None, 110 external_reference: List[ExternalReference] = None, 111 external_identifier: List[ExternalIdentifier] = None, 112 extension: Optional[str] = None, 113 completeness: Optional[RelationshipCompleteness] = None, 114 start_time: Optional[datetime] = None, 115 end_time: Optional[datetime] = None, 116 ): 117 to = [] if to is None else to 118 verified_using = [] if verified_using is None else verified_using 119 external_reference = [] if external_reference is None else external_reference 120 external_identifier = [] if external_identifier is None else external_identifier 121 check_types_and_set_values(self, locals())
relationship_type: RelationshipType
completeness: Optional[RelationshipCompleteness]