Skip to content

Commit 0e1f56b

Browse files
committed
Normalize license in load_pkginfo_data #33
* Create copyright statement from holder information Signed-off-by: Jono Yang <jyang@nexb.com>
1 parent e9067c8 commit 0e1f56b

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

etc/scripts/utils_thirdparty.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -894,14 +894,20 @@ def load_pkginfo_data(self, dest_dir=THIRDPARTY_DIR):
894894
classifiers = raw_data.get_all('Classifier') or []
895895

896896
declared_license = [raw_data['License']] + [c for c in classifiers if c.startswith('License')]
897+
license_expression = compute_normalized_license_expression(declared_license)
897898
other_classifiers = [c for c in classifiers if not c.startswith('License')]
898899

900+
holder = raw_data['Author']
901+
holder_contact=raw_data['Author-email']
902+
copyright = f'Copyright {holder} <{holder_contact}>'
899903
pkginfo_data = dict(
900904
name=raw_data['Name'],
901905
declared_license=declared_license,
902906
version=raw_data['Version'],
903907
description=raw_data['Summary'],
904908
homepage_url=raw_data['Home-page'],
909+
copyright=copyright,
910+
license_expression=license_expression,
905911
holder=raw_data['Author'],
906912
holder_contact=raw_data['Author-email'],
907913
keywords=raw_data['Keywords'],
@@ -2938,3 +2944,25 @@ def find_problems(
29382944
print(f' Missing checksums in file://{abpth}')
29392945

29402946
check_about(dest_dir=dest_dir)
2947+
2948+
2949+
def compute_normalized_license_expression(declared_licenses):
2950+
if not declared_licenses:
2951+
return
2952+
2953+
from packagedcode import licensing
2954+
from packagedcode.utils import combine_expressions
2955+
2956+
detected_licenses = []
2957+
for declared in declared_licenses:
2958+
try:
2959+
license_expression = licensing.get_normalized_expression(
2960+
query_string=declared
2961+
)
2962+
except Exception:
2963+
return 'unknown'
2964+
if not license_expression:
2965+
continue
2966+
detected_licenses.append(license_expression)
2967+
if detected_licenses:
2968+
return combine_expressions(detected_licenses)

0 commit comments

Comments
 (0)