spdx_tools.spdx3.model.lifecycle_scoped_relationship

 1# SPDX-FileCopyrightText: 2023 spdx contributors
 2#
 3# SPDX-License-Identifier: Apache-2.0
 4from datetime import datetime
 5from enum import Enum, auto
 6
 7from beartype.typing import List, Optional
 8
 9from spdx_tools.common.typing.dataclass_with_properties import dataclass_with_properties
10from spdx_tools.common.typing.type_checks import check_types_and_set_values
11from spdx_tools.spdx3.model import (
12    CreationInfo,
13    ExternalIdentifier,
14    ExternalReference,
15    IntegrityMethod,
16    Relationship,
17    RelationshipCompleteness,
18    RelationshipType,
19)
20
21
22class LifecycleScopeType(Enum):
23    DESIGN = auto()
24    BUILD = auto()
25    DEVELOPMENT = auto()
26    TEST = auto()
27    RUNTIME = auto()
28    OTHER = auto()
29
30
31@dataclass_with_properties
32class LifecycleScopedRelationship(Relationship):
33    scope: Optional[LifecycleScopeType] = None
34
35    def __init__(
36        self,
37        spdx_id: str,
38        from_element: str,
39        relationship_type: RelationshipType,
40        to: List[str] = None,
41        creation_info: Optional[CreationInfo] = None,
42        name: Optional[str] = None,
43        summary: Optional[str] = None,
44        description: Optional[str] = None,
45        comment: Optional[str] = None,
46        verified_using: List[IntegrityMethod] = None,
47        external_reference: List[ExternalReference] = None,
48        external_identifier: List[ExternalIdentifier] = None,
49        extension: Optional[str] = None,
50        completeness: Optional[RelationshipCompleteness] = None,
51        start_time: Optional[datetime] = None,
52        end_time: Optional[datetime] = None,
53        scope: Optional[LifecycleScopeType] = None,
54    ):
55        to = [] if to is None else to
56        verified_using = [] if verified_using is None else verified_using
57        external_reference = [] if external_reference is None else external_reference
58        external_identifier = [] if external_identifier is None else external_identifier
59        check_types_and_set_values(self, locals())
class LifecycleScopeType(enum.Enum):
23class LifecycleScopeType(Enum):
24    DESIGN = auto()
25    BUILD = auto()
26    DEVELOPMENT = auto()
27    TEST = auto()
28    RUNTIME = auto()
29    OTHER = auto()

Create a collection of name/value pairs.

Example enumeration:

>>> class Color(Enum):
...     RED = 1
...     BLUE = 2
...     GREEN = 3

Access them by:

  • attribute access::
>>> Color.RED
<Color.RED: 1>
  • value lookup:
>>> Color(1)
<Color.RED: 1>
  • name lookup:
>>> Color['RED']
<Color.RED: 1>

Enumerations can be iterated over, and know how many members they have:

>>> len(Color)
3
>>> list(Color)
[<Color.RED: 1>, <Color.BLUE: 2>, <Color.GREEN: 3>]

Methods can be added to enumerations, and members can have their own attributes -- see the documentation for details.

DEVELOPMENT = <LifecycleScopeType.DEVELOPMENT: 3>
Inherited Members
enum.Enum
name
value
@dataclass_with_properties
class LifecycleScopedRelationship(spdx_tools.spdx3.model.relationship.Relationship):
32@dataclass_with_properties
33class LifecycleScopedRelationship(Relationship):
34    scope: Optional[LifecycleScopeType] = None
35
36    def __init__(
37        self,
38        spdx_id: str,
39        from_element: str,
40        relationship_type: RelationshipType,
41        to: List[str] = None,
42        creation_info: Optional[CreationInfo] = None,
43        name: Optional[str] = None,
44        summary: Optional[str] = None,
45        description: Optional[str] = None,
46        comment: Optional[str] = None,
47        verified_using: List[IntegrityMethod] = None,
48        external_reference: List[ExternalReference] = None,
49        external_identifier: List[ExternalIdentifier] = None,
50        extension: Optional[str] = None,
51        completeness: Optional[RelationshipCompleteness] = None,
52        start_time: Optional[datetime] = None,
53        end_time: Optional[datetime] = None,
54        scope: Optional[LifecycleScopeType] = None,
55    ):
56        to = [] if to is None else to
57        verified_using = [] if verified_using is None else verified_using
58        external_reference = [] if external_reference is None else external_reference
59        external_identifier = [] if external_identifier is None else external_identifier
60        check_types_and_set_values(self, locals())
LifecycleScopedRelationship( spdx_id: str, from_element: str, relationship_type: spdx_tools.spdx3.model.relationship.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[spdx_tools.spdx3.model.relationship.RelationshipCompleteness] = None, start_time: Optional[datetime.datetime] = None, end_time: Optional[datetime.datetime] = None, scope: Optional[LifecycleScopeType] = None)
36    def __init__(
37        self,
38        spdx_id: str,
39        from_element: str,
40        relationship_type: RelationshipType,
41        to: List[str] = None,
42        creation_info: Optional[CreationInfo] = None,
43        name: Optional[str] = None,
44        summary: Optional[str] = None,
45        description: Optional[str] = None,
46        comment: Optional[str] = None,
47        verified_using: List[IntegrityMethod] = None,
48        external_reference: List[ExternalReference] = None,
49        external_identifier: List[ExternalIdentifier] = None,
50        extension: Optional[str] = None,
51        completeness: Optional[RelationshipCompleteness] = None,
52        start_time: Optional[datetime] = None,
53        end_time: Optional[datetime] = None,
54        scope: Optional[LifecycleScopeType] = None,
55    ):
56        to = [] if to is None else to
57        verified_using = [] if verified_using is None else verified_using
58        external_reference = [] if external_reference is None else external_reference
59        external_identifier = [] if external_identifier is None else external_identifier
60        check_types_and_set_values(self, locals())
scope: Optional[LifecycleScopeType]
47    def get_field(self) -> field_type:
48        return getattr(self, f"_{field_name}")