spdx_tools.spdx3.bump_from_spdx2.snippet

 1# SPDX-FileCopyrightText: 2023 spdx contributors
 2#
 3# SPDX-License-Identifier: Apache-2.0
 4from beartype.typing import List, Optional, Tuple
 5
 6from spdx_tools.spdx3.bump_from_spdx2.message import print_missing_conversion
 7from spdx_tools.spdx3.model import ExternalMap
 8from spdx_tools.spdx3.model.positive_integer_range import PositiveIntegerRange
 9from spdx_tools.spdx3.model.software import Snippet
10from spdx_tools.spdx3.payload import Payload
11from spdx_tools.spdx.model import ExternalDocumentRef, SpdxNoAssertion
12from spdx_tools.spdx.model.snippet import Snippet as Spdx2_Snippet
13from spdx_tools.spdx.spdx_element_utils import get_full_element_spdx_id
14
15
16def bump_integer_range(spdx2_range: Optional[Tuple[int, int]]) -> PositiveIntegerRange:
17    return PositiveIntegerRange(spdx2_range[0], spdx2_range[1]) if spdx2_range else None
18
19
20def bump_snippet(
21    spdx2_snippet: Spdx2_Snippet,
22    payload: Payload,
23    document_namespace: str,
24    external_document_refs: List[ExternalDocumentRef],
25    imports: List[ExternalMap],
26):
27    spdx_id = get_full_element_spdx_id(spdx2_snippet, document_namespace, external_document_refs)
28    if ":" in spdx2_snippet.spdx_id:
29        imports.append(
30            ExternalMap(
31                external_id=spdx2_snippet.spdx_id,
32                defining_document=f"{spdx2_snippet.spdx_id.split(':')[0]}:SPDXRef-DOCUMENT",
33            )
34        )
35
36    print_missing_conversion("snippet.file_spdx_id", 0, "https://github.com/spdx/spdx-3-model/issues/130")
37    copyright_text = None
38    if isinstance(spdx2_snippet.copyright_text, str):
39        copyright_text = spdx2_snippet.copyright_text
40    elif isinstance(spdx2_snippet.copyright_text, SpdxNoAssertion):
41        print_missing_conversion("package2.copyright_text", 0)
42    print_missing_conversion(
43        "snippet.license_info_in_snippet, snippet.license_comment,",
44        0,
45        "missing definitions for license profile",
46    )
47
48    payload.add_element(
49        Snippet(
50            spdx_id=spdx_id,
51            name=spdx2_snippet.name,
52            comment=spdx2_snippet.comment,
53            byte_range=bump_integer_range(spdx2_snippet.byte_range),
54            line_range=bump_integer_range(spdx2_snippet.line_range),
55            copyright_text=copyright_text,
56            attribution_text=", ".join(spdx2_snippet.attribution_texts),
57        )
58    )
def bump_integer_range( spdx2_range: Optional[tuple[int, int]]) -> spdx_tools.spdx3.model.positive_integer_range.PositiveIntegerRange:
17def bump_integer_range(spdx2_range: Optional[Tuple[int, int]]) -> PositiveIntegerRange:
18    return PositiveIntegerRange(spdx2_range[0], spdx2_range[1]) if spdx2_range else None
def bump_snippet( spdx2_snippet: spdx_tools.spdx.model.snippet.Snippet, payload: spdx_tools.spdx3.payload.Payload, document_namespace: str, external_document_refs: list[spdx_tools.spdx.model.external_document_ref.ExternalDocumentRef], imports: list[spdx_tools.spdx3.model.external_map.ExternalMap]):
21def bump_snippet(
22    spdx2_snippet: Spdx2_Snippet,
23    payload: Payload,
24    document_namespace: str,
25    external_document_refs: List[ExternalDocumentRef],
26    imports: List[ExternalMap],
27):
28    spdx_id = get_full_element_spdx_id(spdx2_snippet, document_namespace, external_document_refs)
29    if ":" in spdx2_snippet.spdx_id:
30        imports.append(
31            ExternalMap(
32                external_id=spdx2_snippet.spdx_id,
33                defining_document=f"{spdx2_snippet.spdx_id.split(':')[0]}:SPDXRef-DOCUMENT",
34            )
35        )
36
37    print_missing_conversion("snippet.file_spdx_id", 0, "https://github.com/spdx/spdx-3-model/issues/130")
38    copyright_text = None
39    if isinstance(spdx2_snippet.copyright_text, str):
40        copyright_text = spdx2_snippet.copyright_text
41    elif isinstance(spdx2_snippet.copyright_text, SpdxNoAssertion):
42        print_missing_conversion("package2.copyright_text", 0)
43    print_missing_conversion(
44        "snippet.license_info_in_snippet, snippet.license_comment,",
45        0,
46        "missing definitions for license profile",
47    )
48
49    payload.add_element(
50        Snippet(
51            spdx_id=spdx_id,
52            name=spdx2_snippet.name,
53            comment=spdx2_snippet.comment,
54            byte_range=bump_integer_range(spdx2_snippet.byte_range),
55            line_range=bump_integer_range(spdx2_snippet.line_range),
56            copyright_text=copyright_text,
57            attribution_text=", ".join(spdx2_snippet.attribution_texts),
58        )
59    )