@@ -894,14 +894,20 @@ def load_pkginfo_data(self, dest_dir=THIRDPARTY_DIR):
894
894
classifiers = raw_data .get_all ('Classifier' ) or []
895
895
896
896
declared_license = [raw_data ['License' ]] + [c for c in classifiers if c .startswith ('License' )]
897
+ license_expression = compute_normalized_license_expression (declared_license )
897
898
other_classifiers = [c for c in classifiers if not c .startswith ('License' )]
898
899
900
+ holder = raw_data ['Author' ]
901
+ holder_contact = raw_data ['Author-email' ]
902
+ copyright = f'Copyright { holder } <{ holder_contact } >'
899
903
pkginfo_data = dict (
900
904
name = raw_data ['Name' ],
901
905
declared_license = declared_license ,
902
906
version = raw_data ['Version' ],
903
907
description = raw_data ['Summary' ],
904
908
homepage_url = raw_data ['Home-page' ],
909
+ copyright = copyright ,
910
+ license_expression = license_expression ,
905
911
holder = raw_data ['Author' ],
906
912
holder_contact = raw_data ['Author-email' ],
907
913
keywords = raw_data ['Keywords' ],
@@ -2938,3 +2944,25 @@ def find_problems(
2938
2944
print (f' Missing checksums in file://{ abpth } ' )
2939
2945
2940
2946
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