spdx_tools.spdx.model.relationship_filters
1# SPDX-FileCopyrightText: 2022 spdx contributors 2# 3# SPDX-License-Identifier: Apache-2.0 4from beartype.typing import List 5 6from spdx_tools.spdx.model import Document, Package, Relationship, RelationshipType 7 8 9def find_package_contains_file_relationships(document: Document, package: Package) -> List[Relationship]: 10 file_ids_in_document = [file.spdx_id for file in document.files] 11 package_contains_relationships = filter_by_type_and_origin( 12 document.relationships, RelationshipType.CONTAINS, package.spdx_id 13 ) 14 return [ 15 relationship 16 for relationship in package_contains_relationships 17 if relationship.related_spdx_element_id in file_ids_in_document 18 ] 19 20 21def find_file_contained_by_package_relationships(document: Document, package: Package) -> List[Relationship]: 22 file_ids_in_document = [file.spdx_id for file in document.files] 23 contained_by_package_relationships = filter_by_type_and_target( 24 document.relationships, RelationshipType.CONTAINED_BY, package.spdx_id 25 ) 26 return [ 27 relationship 28 for relationship in contained_by_package_relationships 29 if relationship.spdx_element_id in file_ids_in_document 30 ] 31 32 33def filter_by_type_and_target( 34 relationships: List[Relationship], relationship_type: RelationshipType, target_id: str 35) -> List[Relationship]: 36 return [ 37 relationship 38 for relationship in relationships 39 if relationship.relationship_type == relationship_type and relationship.related_spdx_element_id == target_id 40 ] 41 42 43def filter_by_type_and_origin( 44 relationships: List[Relationship], relationship_type: RelationshipType, origin_id: str 45) -> List[Relationship]: 46 return [ 47 relationship 48 for relationship in relationships 49 if relationship.relationship_type == relationship_type and relationship.spdx_element_id == origin_id 50 ]
def
find_package_contains_file_relationships( document: spdx_tools.spdx.model.document.Document, package: spdx_tools.spdx.model.package.Package) -> list[spdx_tools.spdx.model.relationship.Relationship]:
10def find_package_contains_file_relationships(document: Document, package: Package) -> List[Relationship]: 11 file_ids_in_document = [file.spdx_id for file in document.files] 12 package_contains_relationships = filter_by_type_and_origin( 13 document.relationships, RelationshipType.CONTAINS, package.spdx_id 14 ) 15 return [ 16 relationship 17 for relationship in package_contains_relationships 18 if relationship.related_spdx_element_id in file_ids_in_document 19 ]
def
find_file_contained_by_package_relationships( document: spdx_tools.spdx.model.document.Document, package: spdx_tools.spdx.model.package.Package) -> list[spdx_tools.spdx.model.relationship.Relationship]:
22def find_file_contained_by_package_relationships(document: Document, package: Package) -> List[Relationship]: 23 file_ids_in_document = [file.spdx_id for file in document.files] 24 contained_by_package_relationships = filter_by_type_and_target( 25 document.relationships, RelationshipType.CONTAINED_BY, package.spdx_id 26 ) 27 return [ 28 relationship 29 for relationship in contained_by_package_relationships 30 if relationship.spdx_element_id in file_ids_in_document 31 ]
def
filter_by_type_and_target( relationships: list[spdx_tools.spdx.model.relationship.Relationship], relationship_type: spdx_tools.spdx.model.relationship.RelationshipType, target_id: str) -> list[spdx_tools.spdx.model.relationship.Relationship]:
34def filter_by_type_and_target( 35 relationships: List[Relationship], relationship_type: RelationshipType, target_id: str 36) -> List[Relationship]: 37 return [ 38 relationship 39 for relationship in relationships 40 if relationship.relationship_type == relationship_type and relationship.related_spdx_element_id == target_id 41 ]
def
filter_by_type_and_origin( relationships: list[spdx_tools.spdx.model.relationship.Relationship], relationship_type: spdx_tools.spdx.model.relationship.RelationshipType, origin_id: str) -> list[spdx_tools.spdx.model.relationship.Relationship]:
44def filter_by_type_and_origin( 45 relationships: List[Relationship], relationship_type: RelationshipType, origin_id: str 46) -> List[Relationship]: 47 return [ 48 relationship 49 for relationship in relationships 50 if relationship.relationship_type == relationship_type and relationship.spdx_element_id == origin_id 51 ]