src/eric7/PipInterface/piplicenses.py

branch
eric7
changeset 9849
99782ca569ed
parent 9653
e67609152c5e
child 9850
20c49b517679
--- a/src/eric7/PipInterface/piplicenses.py	Sat Mar 04 18:09:08 2023 +0100
+++ b/src/eric7/PipInterface/piplicenses.py	Sun Mar 05 12:26:12 2023 +0100
@@ -97,7 +97,7 @@
 
 
 __pkgname__ = "pip-licenses"
-__version__ = "4.0.2"
+__version__ = "4.1.0"
 __author__ = "raimon"
 __license__ = "MIT"
 __summary__ = (
@@ -269,7 +269,9 @@
         )
 
         if fail_on_licenses:
-            failed_licenses = license_names.intersection(fail_on_licenses)
+            failed_licenses = case_insensitive_set_intersect(
+                license_names, fail_on_licenses
+            )
             if failed_licenses:
                 sys.stderr.write(
                     "fail-on license {} was found for package "
@@ -282,7 +284,9 @@
                 sys.exit(1)
 
         if allow_only_licenses:
-            uncommon_licenses = license_names.difference(allow_only_licenses)
+            uncommon_licenses = case_insensitive_set_diff(
+                license_names, allow_only_licenses
+            )
             if len(uncommon_licenses) == len(license_names):
                 sys.stderr.write(
                     "license {} not in allow-only licenses was found"
@@ -367,6 +371,26 @@
     return licenses
 
 
+def case_insensitive_set_intersect(set_a, set_b):
+    """Same as set.intersection() but case-insensitive"""
+    common_items = set()
+    set_b_lower = {item.lower() for item in set_b}
+    for elem in set_a:
+        if elem.lower() in set_b_lower:
+            common_items.add(elem)
+    return common_items
+
+
+def case_insensitive_set_diff(set_a, set_b):
+    """Same as set.difference() but case-insensitive"""
+    uncommon_items = set()
+    set_b_lower = {item.lower() for item in set_b}
+    for elem in set_a:
+        if not elem.lower() in set_b_lower:
+            uncommon_items.add(elem)
+    return uncommon_items
+
+
 def find_license_from_classifier(classifiers: list[str]) -> list[str]:
     licenses = []
     for classifier in filter(lambda c: c.startswith("License"), classifiers):

eric ide

mercurial