1313
1414from packageurl import PackageURL
1515
16- from _packagedcode import models
1716from _packagedcode .models import PackageData
17+ from _packagedcode .pypi import get_declared_license
18+ from _packagedcode .pypi import get_keywords
19+ from _packagedcode .pypi import get_parties
1820from python_inspector import utils_pypi
1921from python_inspector .resolution import get_python_version_from_env_tag
2022from python_inspector .utils_pypi import Environment
@@ -96,7 +98,6 @@ def get_pypi_data_from_purl(
9698 return []
9799 info = response .get ("info" ) or {}
98100 homepage_url = info .get ("home_page" )
99- license = info .get ("license" )
100101 project_urls = info .get ("project_urls" ) or {}
101102 code_view_url = get_pypi_codeview_url (project_urls )
102103 bug_tracking_url = get_pypi_bugtracker_url (project_urls )
@@ -125,14 +126,6 @@ def get_pypi_data_from_purl(
125126 if dist_url not in valid_distribution_urls :
126127 continue
127128 digests = url .get ("digests" ) or {}
128- license_classifiers = []
129- keyword_classifiers = []
130- classifiers = info .get ("classifiers" ) or []
131- for clsfr in classifiers :
132- if "License" in clsfr :
133- license_classifiers .append (clsfr )
134- else :
135- keyword_classifiers .append (clsfr )
136129
137130 yield PackageData (
138131 primary_language = "Python" ,
@@ -141,29 +134,19 @@ def get_pypi_data_from_purl(
141134 api_data_url = api_url ,
142135 bug_tracking_url = bug_tracking_url ,
143136 code_view_url = code_view_url ,
144- declared_license = {
145- "classifiers" : license_classifiers ,
146- "license" : license ,
147- },
137+ declared_license = get_declared_license (info ),
148138 download_url = dist_url ,
149139 size = url .get ("size" ),
150140 md5 = digests .get ("md5" ) or url .get ("md5_digest" ),
151141 sha256 = digests .get ("sha256" ),
152142 release_date = url .get ("upload_time" ),
153- keywords = keyword_classifiers ,
154- parties = [
155- models .Party (
156- type = models .party_person ,
157- name = info .get ("author" ),
158- role = "author" ,
159- email = info .get ("author_email" ),
160- ),
161- models .Party (
162- type = models .party_person ,
163- name = info .get ("maintainer" ),
164- role = "maintainer" ,
165- email = info .get ("maintainer_email" ),
166- ),
167- ],
143+ keywords = get_keywords (info ),
144+ parties = get_parties (
145+ info ,
146+ author_key = "author" ,
147+ author_email_key = "author_email" ,
148+ maintainer_key = "maintainer" ,
149+ maintainer_email_key = "maintainer_email" ,
150+ ),
168151 ** purl .to_dict (),
169152 ).to_dict ()
0 commit comments