From a53449e276dbf7ba5fa1a73cb015520ef16cf030 Mon Sep 17 00:00:00 2001 From: aniruth37 Date: Fri, 13 Feb 2026 10:28:55 +0530 Subject: [PATCH] fix: case-sensitive checks for package-purpose, relationship-type and external-ref Signed-off-by: aniruth37 --- .../spdx/parser/jsonlikedict/dict_parsing_functions.py | 7 +++++-- src/spdx_tools/spdx/parser/jsonlikedict/package_parser.py | 4 ++-- .../spdx/parser/jsonlikedict/relationship_parser.py | 2 +- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/spdx_tools/spdx/parser/jsonlikedict/dict_parsing_functions.py b/src/spdx_tools/spdx/parser/jsonlikedict/dict_parsing_functions.py index 0733317d1..b967d5231 100644 --- a/src/spdx_tools/spdx/parser/jsonlikedict/dict_parsing_functions.py +++ b/src/spdx_tools/spdx/parser/jsonlikedict/dict_parsing_functions.py @@ -9,10 +9,13 @@ from spdx_tools.spdx.parser.parsing_functions import raise_parsing_error_if_logger_has_messages -def json_str_to_enum_name(json_str: str) -> str: +def json_str_to_enum_name(json_str: str, convert_to_upper: bool = True) -> str: if not isinstance(json_str, str): raise SPDXParsingError([f"Type for enum must be str not {type(json_str).__name__}"]) - return json_str.replace("-", "_").upper() + enum_name = json_str.replace("-", "_") + if convert_to_upper: + enum_name = enum_name.upper() + return enum_name def parse_field_or_log_error( diff --git a/src/spdx_tools/spdx/parser/jsonlikedict/package_parser.py b/src/spdx_tools/spdx/parser/jsonlikedict/package_parser.py index b395abd39..4444cb6ef 100644 --- a/src/spdx_tools/spdx/parser/jsonlikedict/package_parser.py +++ b/src/spdx_tools/spdx/parser/jsonlikedict/package_parser.py @@ -193,7 +193,7 @@ def parse_external_ref(self, external_ref_dict: Dict) -> ExternalPackageRef: @staticmethod def parse_external_ref_category(external_ref_category_str: str) -> ExternalPackageRefCategory: try: - external_ref_category = ExternalPackageRefCategory[json_str_to_enum_name(external_ref_category_str)] + external_ref_category = ExternalPackageRefCategory[json_str_to_enum_name(external_ref_category_str, False)] except KeyError: raise SPDXParsingError([f"Invalid ExternalPackageRefCategory: {external_ref_category_str}"]) @@ -213,6 +213,6 @@ def parse_package_verification_code(verification_code_dict: Dict) -> PackageVeri @staticmethod def parse_primary_package_purpose(primary_package_purpose: str) -> PackagePurpose: try: - return PackagePurpose[json_str_to_enum_name(primary_package_purpose)] + return PackagePurpose[json_str_to_enum_name(primary_package_purpose, False)] except KeyError: raise SPDXParsingError([f"Invalid PrimaryPackagePurpose: {primary_package_purpose}"]) diff --git a/src/spdx_tools/spdx/parser/jsonlikedict/relationship_parser.py b/src/spdx_tools/spdx/parser/jsonlikedict/relationship_parser.py index 17374bef5..f9bf03fec 100644 --- a/src/spdx_tools/spdx/parser/jsonlikedict/relationship_parser.py +++ b/src/spdx_tools/spdx/parser/jsonlikedict/relationship_parser.py @@ -104,7 +104,7 @@ def parse_relationship(self, relationship_dict: Dict) -> Relationship: @staticmethod def parse_relationship_type(relationship_type_str: str) -> RelationshipType: try: - relationship_type = RelationshipType[json_str_to_enum_name(relationship_type_str)] + relationship_type = RelationshipType[json_str_to_enum_name(relationship_type_str, False)] except KeyError: raise SPDXParsingError([f"Invalid RelationshipType: {relationship_type_str}"]) return relationship_type