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:
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 )