8000 Update spdx3.model to SPDX v3.0.1 by bact · Pull Request #829 · spdx/tools-python · GitHub
[go: up one dir, main page]

Skip to content

Update spdx3.model to SPDX v3.0.1 #829

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 23 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Fix type in relationship_mapping; Simplify bump_from_spdx2 imports
Signed-off-by: Arthit Suriyawongkul <arthit@gmail.com>
  • Loading branch information
bact committed Oct 10, 2024
commit deb707c716affa24af9494c85ad817c1de2457c0
40 changes: 40 additions & 0 deletions src/spdx_tools/spdx3/bump_from_spdx2/__init__.py
Original file line number Diff line number Diff line change
@@ -1,2 +1,42 @@
# SPDX-License-Identifier: Apache-2.0
# SPDX-FileCopyrightText: 2024 The SPDX Contributors

from .actor import bump_actor
from .annotation import bump_annotation
from .bump_utils import handle_no_assertion_or_none
from .checksum import bump_checksum, convert_checksum_algorithm_to_hash_algorithm
from .creation_info import bump_creation_info
from .external_document_ref import bump_external_document_ref
from .file import bump_file
from .license_expression import (
bump_license_exception,
bump_license_expression,
bump_license_expression_or_none_or_no_assertion,
)
from .message import print_missing_conversion
from .package import bump_package
from .positive_integer_range import bump_positive_integer_range
from .relationship import bump_relationship, bump_relationships
from .snippet import bump_snippet
from .spdx_document import bump_spdx_document

__all__ = [
"convert_checksum_algorithm_to_hash_algorithm",
"bump_actor",
"bump_annotation",
"bump_checksum",
"bump_creation_info",
"bump_external_document_ref",
"bump_file",
"bump_license_exception",
"bump_license_expression",
"bump_license_expression_or_none_or_no_assertion",
"bump_package",
"bump_positive_integer_range",
"bump_relationship",
"bump_relationships",
"bump_snippet",
"bump_spdx_document",
"handle_no_assertion_or_none",
"print_missing_conversion",
]
8 changes: 4 additions & 4 deletions src/spdx_tools/spdx3/bump_from_spdx2/actor.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@

from beartype.typing import List

from spdx_tools.spdx3.model.core import CreationInfo, ExternalIdentifier, ExternalIdentifierType, Organization, Person, Tool
from spdx_tools.spdx3.payload import Payload
from spdx_tools.spdx.model.actor import Actor as Spdx2_Actor
from spdx_tools.spdx.model.actor import ActorType
from ..model.core import CreationInfo, ExternalIdentifier, ExternalIdentifierType, Organization, Person, Tool
from ..payload import Payload
from ...spdx.model.actor import Actor as Spdx2_Actor
from ...spdx.model.actor import ActorType


def bump_actor(
Expand Down
11 changes: 5 additions & 6 deletions src/spdx_tools/spdx3/bump_from_spdx2/annotation.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,11 @@
# SPDX-License-Identifier: Apache-2.0
from copy import deepcopy

from spdx_tools.spdx3.bump_from_spdx2.actor import bump_actor
from spdx_tools.spdx3.bump_from_spdx2.message import print_missing_conversion
from spdx_tools.spdx3.model.core import Annotation, AnnotationType, CreationInfo
from spdx_tools.spdx3.payload import Payload
from spdx_tools.spdx.model.actor import ActorType
from spdx_tools.spdx.model.annotation import Annotation as Spdx2_Annotation
from . import bump_actor, print_missing_conversion
from ..model.core import Annotation, AnnotationType, CreationInfo
from ..payload import Payload
from ...spdx.model.actor import ActorType
from ...spdx.model.annotation import Annotation as Spdx2_Annotation


def bump_annotation(
Expand Down
4 changes: 2 additions & 2 deletions src/spdx_tools/spdx3/bump_from_spdx2/bump_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
# SPDX-License-Identifier: Apache-2.0
from beartype.typing import Optional, Union

from spdx_tools.spdx.model.spdx_no_assertion import SpdxNoAssertion
from spdx_tools.spdx.model.spdx_none import SpdxNone
from ...spdx.model.spdx_no_assertion import SpdxNoAssertion
from ...spdx.model.spdx_none import SpdxNone


def handle_no_assertion_or_none(field: Union[SpdxNone, SpdxNoAssertion, str], field_name: str) -> Optional[str]:
Expand Down
8 changes: 5 additions & 3 deletions src/spdx_tools/spdx3/bump_from_spdx2/checksum.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
# SPDX-FileCopyrightText: 2023 spdx contributors
#
# SPDX-License-Identifier: Apache-2.0
from spdx_tools.spdx3.model.core import Hash, HashAlgorithm
from spdx_tools.spdx.model.checksum import Checksum as Spdx2_Checksum
from spdx_tools.spdx.model.checksum import ChecksumAlgorithm
from ..model.core import Hash, HashAlgorithm
from ...spdx.model.checksum import (
Checksum as Spdx2_Checksum,
ChecksumAlgorithm,
)


def bump_checksum(spdx2_checksum: Spdx2_Checksum) -> Hash:
Expand Down
13 changes: 6 additions & 7 deletions src/spdx_tools/spdx3/bump_from_spdx2/creation_info.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,12 @@
from beartype.typing import List
from semantic_version import Version

from spdx_tools.spdx3.bump_from_spdx2.actor import bump_actor
from spdx_tools.spdx3.bump_from_spdx2.external_document_ref import bump_external_document_ref
from spdx_tools.spdx3.bump_from_spdx2.message import print_missing_conversion
from spdx_tools.spdx3.model.core import CreationInfo, ProfileIdentifierType, SpdxDocument
from spdx_tools.spdx3.payload import Payload
from spdx_tools.spdx.model.actor import ActorType
from spdx_tools.spdx.model.document import CreationInfo as Spdx2_CreationInfo
from . import bump_actor, bump_external_document_ref
from .message import print_missing_conversion
from ..model.core import CreationInfo, ProfileIdentifierType, SpdxDocument
from ..payload import Payload
from ...spdx.model.actor import ActorType
from ...spdx.model.document import CreationInfo as Spdx2_CreationInfo


def bump_creation_info(spdx2_creation_info: Spdx2_CreationInfo, payload: Payload) -> SpdxDocument:
Expand Down
6 changes: 3 additions & 3 deletions src/spdx_tools/spdx3/bump_from_spdx2/external_document_ref.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
# SPDX-License-Identifier: Apache-2.0
from beartype.typing import List, Tuple

from spdx_tools.spdx3.bump_from_spdx2.checksum import bump_checksum
from spdx_tools.spdx3.model.core import ExternalMap, Hash, NamespaceMap
from spdx_tools.spdx.model.external_document_ref import ExternalDocumentRef
from . import bump_checksum
from ..model.core import ExternalMap, Hash, NamespaceMap
from ...spdx.model.external_document_ref import ExternalDocumentRef


def bump_external_document_ref(external_document_ref: ExternalDocumentRef) -> Tuple[NamespaceMap, ExternalMap]:
Expand Down
15 changes: 7 additions & 8 deletions src/spdx_tools/spdx3/bump_from_spdx2/file.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,13 @@
# SPDX-License-Identifier: Apache-2.0
from beartype.typing import List

from spdx_tools.spdx3.bump_from_spdx2.checksum import bump_checksum
from spdx_tools.spdx3.bump_from_spdx2.message import print_missing_conversion
from spdx_tools.spdx3.model.core import ExternalMap
from spdx_tools.spdx3.model.software import File
from spdx_tools.spdx3.payload import Payload
from spdx_tools.spdx.model import ExternalDocumentRef, SpdxNoAssertion
from spdx_tools.spdx.model.file import File as Spdx2_File
from spdx_tools.spdx.spdx_element_utils import get_full_element_spdx_id
from . import bump_checksum, print_missing_conversion
from ..model.core import ExternalMap
from ..model.software import File
from ..payload import Payload
from ...spdx.model import ExternalDocumentRef, SpdxNoAssertion
from ...spdx.model.file import File as Spdx2_File
from ...spdx.spdx_element_utils import get_full_element_spdx_id


def bump_file(
Expand Down
6 changes: 3 additions & 3 deletions src/spdx_tools/spdx3/bump_from_spdx2/license_expression.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,7 @@
from beartype.typing import List, Union
from license_expression import AND, OR, LicenseExpression, LicenseSymbol, LicenseWithExceptionSymbol

from spdx_tools.common.spdx_licensing import spdx_licensing
from spdx_tools.spdx3.model.licensing import (
from ..model.licensing import (
AnyLicenseInfo,
ConjunctiveLicenseSet,
CustomLicense,
Expand All @@ -20,7 +19,8 @@
NoneLicense,
WithAdditionOperator,
)
from spdx_tools.spdx.model import ExtractedLicensingInfo, SpdxNoAssertion, SpdxNone
from ...common.spdx_licensing import spdx_licensing
from ...spdx.model import ExtractedLicensingInfo, SpdxNoAssertion, SpdxNone


def bump_license_expression_or_none_or_no_assertion(
Expand Down
26 changes: 14 additions & 12 deletions src/spdx_tools/spdx3/bump_from_spdx2/package.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,24 +3,26 @@
# SPDX-License-Identifier: Apache-2.0
from beartype.typing import List, Optional, Union

from spdx_tools.spdx3.bump_from_spdx2.actor import bump_actor
from spdx_tools.spdx3.bump_from_spdx2.bump_utils import handle_no_assertion_or_none
from spdx_tools.spdx3.bump_from_spdx2.checksum import bump_checksum
from spdx_tools.spdx3.bump_from_spdx2.message import print_missing_conversion
from spdx_tools.spdx3.model.core import (
from . import bump_actor, bump_checksum, handle_no_assertion_or_none, print_missing_conversion
from ..model.core import (
ExternalIdentifier,
ExternalIdentifierType,
ExternalMap,
ExternalRef,
ExternalRefType,
)
from spdx_tools.spdx3.model.software import Package, SoftwarePurpose
from spdx_tools.spdx3.payload import Payload
from spdx_tools.spdx.model import Actor as Spdx2_Actor
from spdx_tools.spdx.model import ExternalDocumentRef, SpdxNoAssertion
from spdx_tools.spdx.model.package import ExternalPackageRef
from spdx_tools.spdx.model.package import Package as Spdx2_Package
from spdx_tools.spdx.spdx_element_utils import get_full_element_spdx_id
from ..model.software import Package, SoftwarePurpose
from ..payload import Payload
from ...spdx.model import (
Actor as Spdx2_Actor,
ExternalDocumentRef,
SpdxNoAssertion,
)
from ...spdx.model.package import (
ExternalPackageRef,
Package as Spdx2_Package,
)
from ...spdx.spdx_element_utils import get_full_element_spdx_id


def bump_package(
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
from beartype.typing import Optional, Tuple

from ..model.core import PositiveIntegerRange

def bump_positive_integer_range(spdx2_range: Optional[Tuple[int, int]]) -> PositiveIntegerRange:
return PositiveIntegerRange(spdx2_range[0], spdx2_range[1]) if spdx2_range else None
32 changes: 21 additions & 11 deletions src/spdx_tools/spdx3/bump_from_spdx2/relationship.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,32 +6,32 @@

from beartype.typing import Dict, List, Optional, Tuple, Union

from spdx_tools.spdx3.bump_from_spdx2.message import print_missing_conversion
from spdx_tools.spdx3.model.core import (
from . import print_missing_conversion
from ..model.core import (
LifecycleScopeType,
Relationship,
RelationshipCompleteness,
RelationshipType,
)
from spdx_tools.spdx3.model.software import (
from ..model.software import (
DependencyConditionalityType,
SoftwareDependencyLinkType,
SoftwareDependencyRelationship,
)
from spdx_tools.spdx3.payload import Payload
from spdx_tools.spdx.model.relationship import Relationship as Spdx2_Relationship
from spdx_tools.spdx.model.relationship import (
from ..payload import Payload
from ...spdx.model.relationship import (
Relationship as Spdx2_Relationship,
RelationshipType as Spdx2_RelationshipType,
)
from spdx_tools.spdx.model.spdx_no_assertion import SpdxNoAssertion
from spdx_tools.spdx.model.spdx_none import SpdxNone
from ...spdx.model.spdx_no_assertion import SpdxNoAssertion
from ...spdx.model.spdx_none import SpdxNone

# bump relationship type, map each relationship type to the corresponding class in 3.0,
# the relationship type, other arguments and if swapped
relationship_mapping: Dict[
Spdx2_RelationshipType,
Tuple[
Union[Relationship, SoftwareDependencyRelationship],
Union[type[Relationship], type[SoftwareDependencyRelationship]],
RelationshipType,
Dict[
str,
Expand Down Expand Up @@ -336,6 +336,16 @@ def bump_relationship(
if relationship_class == SoftwareDependencyRelationship:
from_element = spdx2_relationship.spdx_element_id

software_linkage = (
SoftwareDependencyLinkType(parameters.get("linkage"))
if parameters.get("linkage")
else None
)
conditionality = (
DependencyConditionalityType(parameters.get("conditionality"))
if parameters.get("conditionality")
else None
)
return SoftwareDependencyRelationship(
spdx_id,
f"{document_namespace}#{from_element}",
Expand All @@ -344,8 +354,8 @@ def bump_relationship(
comment=spdx2_relationship.comment,
completeness=completeness,
scope=parameters.get("scope"),
software_linkage=parameters.get("linkage"),
conditionality=parameters.get("conditionality"),
software_linkage=software_linkage,
conditionality=conditionality,
)

return Relationship(
Expand Down
24 changes: 10 additions & 14 deletions src/spdx_tools/spdx3/bump_from_spdx2/snippet.py
Original file line number Diff line number Diff line change
@@ -1,19 +1,15 @@
# SPDX-FileCopyrightText: 2023 spdx contributors
#
# SPDX-License-Identifier: Apache-2.0
from beartype.typing import List, Optional, Tuple
from beartype.typing import List

from spdx_tools.spdx3.bump_from_spdx2.message import print_missing_conversion
from spdx_tools.spdx3.model.core import ExternalMap, PositiveIntegerRange
from spdx_tools.spdx3.model.software import Snippet
from spdx_tools.spdx3.payload import Payload
from spdx_tools.spdx.model import ExternalDocumentRef, SpdxNoAssertion
from spdx_tools.spdx.model.snippet import Snippet as Spdx2_Snippet
from spdx_tools.spdx.spdx_element_utils import get_full_element_spdx_id


def bump_integer_range(spdx2_range: Optional[Tuple[int, int]]) -> PositiveIntegerRange:
return PositiveIntegerRange(spdx2_range[0], spdx2_range[1]) if spdx2_range else None
from . import bump_positive_integer_range, print_missing_conversion
from ..model.core import ExternalMap
from ..model.software import Snippet
from ..payload import Payload
from ...spdx.model import ExternalDocumentRef, SpdxNoAssertion
from ...spdx.model.snippet import Snippet as Spdx2_Snippet
from ...spdx.spdx_element_utils import get_full_element_spdx_id


def bump_snippet(
Expand Down Expand Up @@ -49,8 +45,8 @@ def bump_snippet(
spdx_id=spdx_id,
name=spdx2_snippet.name,
comment=spdx2_snippet.comment,
byte_range=bump_integer_range(spdx2_snippet.byte_range),
line_range=bump_integer_range(spdx2_snippet.line_range),
byte_range=bump_positive_integer_range(spdx2_snippet.byte_range),
line_range=bump_positive_integer_range(spdx2_snippet.line_range),
copyright_text=copyright_text,
attribution_text=", ".join(spdx2_snippet.attribution_texts),
)
Expand Down
34 changes: 21 additions & 13 deletions src/spdx_tools/spdx3/bump_from_spdx2/spdx_document.py
Original file line number Diff line number Diff line change
@@ -1,17 +1,19 @@
# SPDX-FileCopyrightText: 2023 spdx contributors
#
# SPDX-License-Identifier: Apache-2.0
from spdx_tools.spdx3.bump_from_spdx2.annotation import bump_annotation
from spdx_tools.spdx3.bump_from_spdx2.creation_info import bump_creation_info
from spdx_tools.spdx3.bump_from_spdx2.file import bump_file
from spdx_tools.spdx3.bump_from_spdx2.package import bump_package
from spdx_tools.spdx3.bump_from_spdx2.relationship import bump_relationships
from spdx_tools.spdx3.bump_from_spdx2.snippet import bump_snippet
from spdx_tools.spdx3.model.core import CreationInfo, SpdxDocument
from spdx_tools.spdx3.payload import Payload
from spdx_tools.spdx.model import RelationshipType
from spdx_tools.spdx.model.document import Document as Spdx2_Document
from spdx_tools.spdx.model.relationship_filters import filter_by_type_and_origin
from . import (
bump_annotation,
bump_creation_info,
bump_file,
bump_package,
bump_relationships,
bump_snippet,
)
from ..model.core import CreationInfo, SpdxDocument
from ..payload import Payload
from ...spdx.model import RelationshipType
from ...spdx.model.document import Document as Spdx2_Document
from ...spdx.model.relationship_filters import filter_by_type_and_origin

""" We want to implement a bump_from_spdx2 from the data model in src.spdx to the data model in src.spdx3.
As there are many fundamental differences between these version we want each bump_from_spdx2 method to take
Expand Down Expand Up @@ -63,8 +65,14 @@ def bump_spdx_document(document: Spdx2_Document) -> Payload:
bump_relationships(document.relationships, payload, document_namespace)

for counter, spdx2_annotation in enumerate(document.annotations):
bump_annotation(spdx2_annotation, payload, creation_info, document_namespace, counter)
bump_annotation(
spdx2_annotation, payload, creation_info, document_namespace, counter
)

spdx_document.element = [spdx_id for spdx_id in payload.get_full_map() if spdx_id != spdx_document.spdx_id]
spdx_document.element = [
spdx_id
for spdx_id in payload.get_full_map()
if spdx_id != spdx_document.spdx_id
]

return payload
2 changes: 1 addition & 1 deletion tests/spdx3/bump/test_actor_bump.py
8000
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import pytest
from semantic_version import Version

from spdx_tools.spdx3.bump_from_spdx2.actor import bump_actor
from spdx_tools.spdx3.bump_from_spdx2 import bump_actor
from spdx_tools.spdx3.model.core import (
CreationInfo,
ExternalIdentifier,
Expand Down
2 changes: 1 addition & 1 deletion tests/spdx3/bump/test_bump_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
# SPDX-License-Identifier: Apache-2.0
import pytest

from spdx_tools.spdx3.bump_from_spdx2.bump_utils import handle_no_assertion_or_none
from spdx_tools.spdx3.bump_from_spdx2 import handle_no_assertion_or_none
from spdx_tools.spdx.model.spdx_no_assertion import SpdxNoAssertion
from spdx_tools.spdx.model.spdx_none import SpdxNone

Expand Down
Loading
0