spdx_tools.spdx3.bump_from_spdx2.file
1# SPDX-FileCopyrightText: 2023 spdx contributors 2# 3# SPDX-License-Identifier: Apache-2.0 4from beartype.typing import List 5 6from spdx_tools.spdx3.bump_from_spdx2.checksum import bump_checksum 7from spdx_tools.spdx3.bump_from_spdx2.message import print_missing_conversion 8from spdx_tools.spdx3.model import ExternalMap 9from spdx_tools.spdx3.model.software import File 10from spdx_tools.spdx3.payload import Payload 11from spdx_tools.spdx.model import ExternalDocumentRef, SpdxNoAssertion 12from spdx_tools.spdx.model.file import File as Spdx2_File 13from spdx_tools.spdx.spdx_element_utils import get_full_element_spdx_id 14 15 16def bump_file( 17 spdx2_file: Spdx2_File, 18 payload: Payload, 19 document_namespace: str, 20 external_document_refs: List[ExternalDocumentRef], 21 imports: List[ExternalMap], 22): 23 spdx_id = get_full_element_spdx_id(spdx2_file, document_namespace, external_document_refs) 24 if ":" in spdx2_file.spdx_id: 25 imports.append( 26 ExternalMap( 27 external_id=spdx2_file.spdx_id, 28 defining_document=f"{spdx2_file.spdx_id.split(':')[0]}:SPDXRef-DOCUMENT", 29 ) 30 ) 31 32 integrity_methods = [bump_checksum(checksum) for checksum in spdx2_file.checksums] 33 print_missing_conversion( 34 "file.file_type", 0, "different cardinalities, " "https://github.com/spdx/spdx-3-model/issues/82" 35 ) 36 copyright_text = None 37 if isinstance(spdx2_file.copyright_text, str): 38 copyright_text = spdx2_file.copyright_text 39 elif isinstance(spdx2_file.copyright_text, SpdxNoAssertion): 40 print_missing_conversion("package2.copyright_text", 0) 41 print_missing_conversion( 42 "file.notice, file.contributors, file.license_info_in_file, file.license_comment", 43 0, 44 "missing definition for license profile", 45 ) 46 47 payload.add_element( 48 File( 49 spdx_id, 50 name=spdx2_file.name, 51 comment=spdx2_file.comment, 52 verified_using=integrity_methods, 53 copyright_text=copyright_text, 54 attribution_text=", ".join(spdx2_file.attribution_texts), 55 ) 56 )
def
bump_file( spdx2_file: spdx_tools.spdx.model.file.File, 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]):
17def bump_file( 18 spdx2_file: Spdx2_File, 19 payload: Payload, 20 document_namespace: str, 21 external_document_refs: List[ExternalDocumentRef], 22 imports: List[ExternalMap], 23): 24 spdx_id = get_full_element_spdx_id(spdx2_file, document_namespace, external_document_refs) 25 if ":" in spdx2_file.spdx_id: 26 imports.append( 27 ExternalMap( 28 external_id=spdx2_file.spdx_id, 29 defining_document=f"{spdx2_file.spdx_id.split(':')[0]}:SPDXRef-DOCUMENT", 30 ) 31 ) 32 33 integrity_methods = [bump_checksum(checksum) for checksum in spdx2_file.checksums] 34 print_missing_conversion( 35 "file.file_type", 0, "different cardinalities, " "https://github.com/spdx/spdx-3-model/issues/82" 36 ) 37 copyright_text = None 38 if isinstance(spdx2_file.copyright_text, str): 39 copyright_text = spdx2_file.copyright_text 40 elif isinstance(spdx2_file.copyright_text, SpdxNoAssertion): 41 print_missing_conversion("package2.copyright_text", 0) 42 print_missing_conversion( 43 "file.notice, file.contributors, file.license_info_in_file, file.license_comment", 44 0, 45 "missing definition for license profile", 46 ) 47 48 payload.add_element( 49 File( 50 spdx_id, 51 name=spdx2_file.name, 52 comment=spdx2_file.comment, 53 verified_using=integrity_methods, 54 copyright_text=copyright_text, 55 attribution_text=", ".join(spdx2_file.attribution_texts), 56 ) 57 )