From ea2ecfc5efa4d6baad11e9e3c57d73128f1668d3 Mon Sep 17 00:00:00 2001 From: Ali Zulfiqar Date: Sat, 5 Sep 2026 21:58:54 +0500 Subject: [PATCH] Normalize relation case when combining license expressions Signed-off-by: Ali Zulfiqar --- src/license_expression/__init__.py | 2 +- tests/test_license_expression.py | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/license_expression/__init__.py b/src/license_expression/__init__.py index 13170b4..5d472fa 100644 --- a/src/license_expression/__init__.py +++ b/src/license_expression/__init__.py @@ -1825,5 +1825,5 @@ def combine_expressions( if len(expressions) == 1: return expressions[0] - relation = {"AND": licensing.AND, "OR": licensing.OR}[relation] + relation = {"AND": licensing.AND, "OR": licensing.OR}[relation.upper()] return relation(*expressions) diff --git a/tests/test_license_expression.py b/tests/test_license_expression.py index 7af4175..6322a12 100644 --- a/tests/test_license_expression.py +++ b/tests/test_license_expression.py @@ -2640,3 +2640,9 @@ def test_combine_expressions_with_duplicated_elements(self): def test_combine_expressions_with_or_relationship(self): assert str(combine_expressions(["mit", "apache-2.0"], "OR")) == "mit OR apache-2.0" + + +def test_combine_expressions_accepts_case_insensitive_relations(): + for relation in ("and", "And", "AND", "or", "Or", "OR"): + result = combine_expressions(["mit", "apache-2.0"], relation=relation) + assert str(result) == f"mit {relation.upper()} apache-2.0"