spdx_tools.spdx.validation.relationship_validator
1# SPDX-FileCopyrightText: 2022 spdx contributors 2# 3# SPDX-License-Identifier: Apache-2.0 4 5from beartype.typing import List 6 7from spdx_tools.spdx.model import Document, Relationship, RelationshipType, SpdxNoAssertion, SpdxNone 8from spdx_tools.spdx.validation.spdx_id_validators import validate_spdx_id 9from spdx_tools.spdx.validation.validation_message import SpdxElementType, ValidationContext, ValidationMessage 10 11 12def validate_relationships( 13 relationships: List[Relationship], spdx_version: str, document: Document 14) -> List[ValidationMessage]: 15 validation_messages = [] 16 for relationship in relationships: 17 validation_messages.extend(validate_relationship(relationship, spdx_version, document)) 18 19 return validation_messages 20 21 22def validate_relationship( 23 relationship: Relationship, spdx_version: str, document: Document 24) -> List[ValidationMessage]: 25 validation_messages = [] 26 context = ValidationContext(element_type=SpdxElementType.RELATIONSHIP, full_element=relationship) 27 28 relationship_type: RelationshipType = relationship.relationship_type 29 30 messages: List[str] = validate_spdx_id(relationship.spdx_element_id, document, check_document=True) 31 for message in messages: 32 validation_messages.append(ValidationMessage(message, context)) 33 34 if relationship.related_spdx_element_id not in [SpdxNone(), SpdxNoAssertion()]: 35 messages: List[str] = validate_spdx_id(relationship.related_spdx_element_id, document, check_document=True) 36 for message in messages: 37 validation_messages.append(ValidationMessage(message, context)) 38 39 if spdx_version == "SPDX-2.2": 40 if ( 41 relationship_type == RelationshipType.SPECIFICATION_FOR 42 or relationship_type == RelationshipType.REQUIREMENT_DESCRIPTION_FOR 43 ): 44 validation_messages.append(ValidationMessage(f"{relationship_type} is not supported in SPDX-2.2", context)) 45 46 return validation_messages
def
validate_relationships( relationships: list[spdx_tools.spdx.model.relationship.Relationship], spdx_version: str, document: spdx_tools.spdx.model.document.Document) -> list[spdx_tools.spdx.validation.validation_message.ValidationMessage]:
13def validate_relationships( 14 relationships: List[Relationship], spdx_version: str, document: Document 15) -> List[ValidationMessage]: 16 validation_messages = [] 17 for relationship in relationships: 18 validation_messages.extend(validate_relationship(relationship, spdx_version, document)) 19 20 return validation_messages
def
validate_relationship( relationship: spdx_tools.spdx.model.relationship.Relationship, spdx_version: str, document: spdx_tools.spdx.model.document.Document) -> list[spdx_tools.spdx.validation.validation_message.ValidationMessage]:
23def validate_relationship( 24 relationship: Relationship, spdx_version: str, document: Document 25) -> List[ValidationMessage]: 26 validation_messages = [] 27 context = ValidationContext(element_type=SpdxElementType.RELATIONSHIP, full_element=relationship) 28 29 relationship_type: RelationshipType = relationship.relationship_type 30 31 messages: List[str] = validate_spdx_id(relationship.spdx_element_id, document, check_document=True) 32 for message in messages: 33 validation_messages.append(ValidationMessage(message, context)) 34 35 if relationship.related_spdx_element_id not in [SpdxNone(), SpdxNoAssertion()]: 36 messages: List[str] = validate_spdx_id(relationship.related_spdx_element_id, document, check_document=True) 37 for message in messages: 38 validation_messages.append(ValidationMessage(message, context)) 39 40 if spdx_version == "SPDX-2.2": 41 if ( 42 relationship_type == RelationshipType.SPECIFICATION_FOR 43 or relationship_type == RelationshipType.REQUIREMENT_DESCRIPTION_FOR 44 ): 45 validation_messages.append(ValidationMessage(f"{relationship_type} is not supported in SPDX-2.2", context)) 46 47 return validation_messages