@@ -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