spdx_tools.spdx3.bump_from_spdx2.actor
1# SPDX-FileCopyrightText: 2023 spdx contributors 2# 3# SPDX-License-Identifier: Apache-2.0 4from typing import Optional 5 6from beartype.typing import List 7 8from spdx_tools.spdx3.model import CreationInfo, ExternalIdentifier, ExternalIdentifierType, Organization, Person, Tool 9from spdx_tools.spdx3.payload import Payload 10from spdx_tools.spdx.model.actor import Actor as Spdx2_Actor 11from spdx_tools.spdx.model.actor import ActorType 12 13 14def bump_actor( 15 spdx2_actor: Spdx2_Actor, payload: Payload, document_namespace: str, creation_info: Optional[CreationInfo] = None 16) -> str: 17 name: str = spdx2_actor.name 18 email: str = spdx2_actor.email 19 actor_type: ActorType = spdx2_actor.actor_type 20 21 external_identifiers: List[ExternalIdentifier] = [] 22 name_without_whitespace = "".join(name.split()) 23 if email: 24 external_identifiers.append(ExternalIdentifier(ExternalIdentifierType.EMAIL, email)) 25 spdx_id: str = f"{document_namespace}#SPDXRef-Actor-{name_without_whitespace}-{email}" 26 else: 27 spdx_id: str = f"{document_namespace}#SPDXRef-Actor-{name_without_whitespace}" 28 29 if spdx_id in payload.get_full_map(): # the agent/tool already exists, so we don't need to create a new one 30 return spdx_id 31 32 value_dict = { 33 "spdx_id": spdx_id, 34 "creation_info": creation_info, 35 "name": name, 36 "external_identifier": external_identifiers, 37 } 38 39 if actor_type == ActorType.PERSON: 40 agent_or_tool = Person(**value_dict) 41 42 elif actor_type == ActorType.ORGANIZATION: 43 agent_or_tool = Organization(**value_dict) 44 45 elif actor_type == ActorType.TOOL: 46 agent_or_tool = Tool(**value_dict) 47 48 else: 49 raise ValueError(f"no conversion rule defined for ActorType {actor_type}") 50 51 payload.add_element(agent_or_tool) 52 53 return spdx_id
def
bump_actor( spdx2_actor: spdx_tools.spdx.model.actor.Actor, payload: spdx_tools.spdx3.payload.Payload, document_namespace: str, creation_info: Optional[spdx_tools.spdx3.model.creation_info.CreationInfo] = None) -> str:
15def bump_actor( 16 spdx2_actor: Spdx2_Actor, payload: Payload, document_namespace: str, creation_info: Optional[CreationInfo] = None 17) -> str: 18 name: str = spdx2_actor.name 19 email: str = spdx2_actor.email 20 actor_type: ActorType = spdx2_actor.actor_type 21 22 external_identifiers: List[ExternalIdentifier] = [] 23 name_without_whitespace = "".join(name.split()) 24 if email: 25 external_identifiers.append(ExternalIdentifier(ExternalIdentifierType.EMAIL, email)) 26 spdx_id: str = f"{document_namespace}#SPDXRef-Actor-{name_without_whitespace}-{email}" 27 else: 28 spdx_id: str = f"{document_namespace}#SPDXRef-Actor-{name_without_whitespace}" 29 30 if spdx_id in payload.get_full_map(): # the agent/tool already exists, so we don't need to create a new one 31 return spdx_id 32 33 value_dict = { 34 "spdx_id": spdx_id, 35 "creation_info": creation_info, 36 "name": name, 37 "external_identifier": external_identifiers, 38 } 39 40 if actor_type == ActorType.PERSON: 41 agent_or_tool = Person(**value_dict) 42 43 elif actor_type == ActorType.ORGANIZATION: 44 agent_or_tool = Organization(**value_dict) 45 46 elif actor_type == ActorType.TOOL: 47 agent_or_tool = Tool(**value_dict) 48 49 else: 50 raise ValueError(f"no conversion rule defined for ActorType {actor_type}") 51 52 payload.add_element(agent_or_tool) 53 54 return spdx_id