Skip to content

Commit d984103

Browse files
committed
Return all versions of a PyPI package
Signed-off-by: Keshav Priyadarshi <[email protected]>
1 parent 7360047 commit d984103

File tree

2 files changed

+308
-8
lines changed

2 files changed

+308
-8
lines changed

src/fetchcode/package_versions.py

+4-8
Original file line numberDiff line numberDiff line change
@@ -122,10 +122,8 @@ def get_pypi_versions_from_purl(purl):
122122

123123
releases = response.get("releases") or {}
124124
for version, download_items in releases.items():
125-
if not download_items:
126-
continue
125+
release_date = get_pypi_latest_date(download_items) if download_items else None
127126

128-
release_date = get_pypi_latest_date(download_items)
129127
yield PackageVersion(
130128
value=version,
131129
release_date=release_date,
@@ -317,8 +315,7 @@ def get_golang_versions_from_purl(purl):
317315
break
318316

319317
if response is None or escaped_pkg is None or trimmed_pkg is None:
320-
logger.error(
321-
f"Error while fetching versions for {package_slug!r} from goproxy")
318+
logger.error(f"Error while fetching versions for {package_slug!r} from goproxy")
322319
return
323320

324321
for version_info in response.split("\n"):
@@ -348,7 +345,7 @@ def trim_go_url_path(url_path: str) -> Optional[str]:
348345
# some advisories contains this prefix in package name, e.g. https://github.com/advisories/GHSA-7h6j-2268-fhcm
349346
go_url_prefix = "https://pkg.go.dev/"
350347
if url_path.startswith(go_url_prefix):
351-
url_path = url_path[len(go_url_prefix):]
348+
url_path = url_path[len(go_url_prefix) :]
352349

353350
parsed_url_path = urlparse(url_path)
354351
path = parsed_url_path.path
@@ -409,8 +406,7 @@ def fetch_version_info(version_info: str, escaped_pkg: str) -> Optional[PackageV
409406
f"Error while fetching version info for {escaped_pkg}/{escaped_ver} "
410407
f"from goproxy:\n{traceback.format_exc()}"
411408
)
412-
release_date = dateparser.parse(
413-
response.get("Time", "")) if response else None
409+
release_date = dateparser.parse(response.get("Time", "")) if response else None
414410

415411
return PackageVersion(value=version, release_date=release_date)
416412

tests/data/package_versions/pypi.json

+304
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,280 @@
11
[
2+
{
3+
"value": "0.5",
4+
"release_date": null
5+
},
6+
{
7+
"value": "0.5.1",
8+
"release_date": null
9+
},
10+
{
11+
"value": "0.5.2",
12+
"release_date": null
13+
},
14+
{
15+
"value": "0.5.3",
16+
"release_date": null
17+
},
18+
{
19+
"value": "0.5.4",
20+
"release_date": null
21+
},
22+
{
23+
"value": "0.5.5",
24+
"release_date": null
25+
},
26+
{
27+
"value": "0.5.6",
28+
"release_date": null
29+
},
30+
{
31+
"value": "0.5.7",
32+
"release_date": null
33+
},
34+
{
35+
"value": "0.5.8",
36+
"release_date": null
37+
},
38+
{
39+
"value": "0.5.9",
40+
"release_date": null
41+
},
42+
{
43+
"value": "0.5rc2",
44+
"release_date": null
45+
},
46+
{
47+
"value": "0.6",
48+
"release_date": null
49+
},
50+
{
51+
"value": "0.6.1",
52+
"release_date": null
53+
},
54+
{
55+
"value": "0.6.10",
56+
"release_date": null
57+
},
58+
{
59+
"value": "0.6.11",
60+
"release_date": null
61+
},
62+
{
63+
"value": "0.6.12",
64+
"release_date": null
65+
},
66+
{
67+
"value": "0.6.13",
68+
"release_date": null
69+
},
70+
{
71+
"value": "0.6.14",
72+
"release_date": null
73+
},
74+
{
75+
"value": "0.6.15",
76+
"release_date": null
77+
},
78+
{
79+
"value": "0.6.16",
80+
"release_date": null
81+
},
82+
{
83+
"value": "0.6.17",
84+
"release_date": null
85+
},
86+
{
87+
"value": "0.6.18",
88+
"release_date": null
89+
},
90+
{
91+
"value": "0.6.19",
92+
"release_date": null
93+
},
94+
{
95+
"value": "0.6.2",
96+
"release_date": null
97+
},
98+
{
99+
"value": "0.6.20",
100+
"release_date": null
101+
},
102+
{
103+
"value": "0.6.21",
104+
"release_date": null
105+
},
106+
{
107+
"value": "0.6.22",
108+
"release_date": null
109+
},
110+
{
111+
"value": "0.6.23",
112+
"release_date": null
113+
},
114+
{
115+
"value": "0.6.24",
116+
"release_date": null
117+
},
118+
{
119+
"value": "0.6.25",
120+
"release_date": null
121+
},
122+
{
123+
"value": "0.6.26",
124+
"release_date": null
125+
},
126+
{
127+
"value": "0.6.27",
128+
"release_date": null
129+
},
130+
{
131+
"value": "0.6.28",
132+
"release_date": null
133+
},
134+
{
135+
"value": "0.6.29",
136+
"release_date": null
137+
},
138+
{
139+
"value": "0.6.3",
140+
"release_date": null
141+
},
142+
{
143+
"value": "0.6.30",
144+
"release_date": null
145+
},
146+
{
147+
"value": "0.6.31",
148+
"release_date": null
149+
},
150+
{
151+
"value": "0.6.4",
152+
"release_date": null
153+
},
154+
{
155+
"value": "0.6.5",
156+
"release_date": null
157+
},
158+
{
159+
"value": "0.6.6",
160+
"release_date": null
161+
},
162+
{
163+
"value": "0.6.7",
164+
"release_date": null
165+
},
166+
{
167+
"value": "0.6.8",
168+
"release_date": null
169+
},
170+
{
171+
"value": "0.6.9",
172+
"release_date": null
173+
},
174+
{
175+
"value": "0.7",
176+
"release_date": null
177+
},
178+
{
179+
"value": "0.7.1",
180+
"release_date": null
181+
},
182+
{
183+
"value": "0.7.10",
184+
"release_date": null
185+
},
186+
{
187+
"value": "0.7.11",
188+
"release_date": null
189+
},
190+
{
191+
"value": "0.7.12",
192+
"release_date": null
193+
},
194+
{
195+
"value": "0.7.13",
196+
"release_date": null
197+
},
198+
{
199+
"value": "0.7.14",
200+
"release_date": null
201+
},
202+
{
203+
"value": "0.7.15",
204+
"release_date": null
205+
},
206+
{
207+
"value": "0.7.16",
208+
"release_date": null
209+
},
210+
{
211+
"value": "0.7.17",
212+
"release_date": null
213+
},
214+
{
215+
"value": "0.7.18",
216+
"release_date": null
217+
},
218+
{
219+
"value": "0.7.19",
220+
"release_date": null
221+
},
222+
{
223+
"value": "0.7.2",
224+
"release_date": null
225+
},
226+
{
227+
"value": "0.7.20",
228+
"release_date": null
229+
},
230+
{
231+
"value": "0.7.21",
232+
"release_date": null
233+
},
234+
{
235+
"value": "0.7.22",
236+
"release_date": null
237+
},
238+
{
239+
"value": "0.7.23",
240+
"release_date": null
241+
},
242+
{
243+
"value": "0.7.24",
244+
"release_date": null
245+
},
246+
{
247+
"value": "0.7.25",
248+
"release_date": null
249+
},
250+
{
251+
"value": "0.7.26",
252+
"release_date": null
253+
},
254+
{
255+
"value": "0.7.27",
256+
"release_date": null
257+
},
258+
{
259+
"value": "0.7.28",
260+
"release_date": null
261+
},
262+
{
263+
"value": "0.7.29",
264+
"release_date": null
265+
},
266+
{
267+
"value": "0.7.3",
268+
"release_date": null
269+
},
270+
{
271+
"value": "0.7.30",
272+
"release_date": null
273+
},
274+
{
275+
"value": "0.7.31",
276+
"release_date": null
277+
},
2278
{
3279
"value": "0.7.32",
4280
"release_date": "2016-02-22T06:13:06.774750+00:00"
@@ -7,6 +283,30 @@
7283
"value": "0.7.33",
8284
"release_date": "2016-03-01T18:55:48.013515+00:00"
9285
},
286+
{
287+
"value": "0.7.4",
288+
"release_date": null
289+
},
290+
{
291+
"value": "0.7.5",
292+
"release_date": null
293+
},
294+
{
295+
"value": "0.7.6",
296+
"release_date": null
297+
},
298+
{
299+
"value": "0.7.7",
300+
"release_date": null
301+
},
302+
{
303+
"value": "0.7.8",
304+
"release_date": null
305+
},
306+
{
307+
"value": "0.7.9",
308+
"release_date": null
309+
},
10310
{
11311
"value": "0.8",
12312
"release_date": "2015-10-29T21:14:49.182641+00:00"
@@ -115,6 +415,10 @@
115415
"value": "0.8.6",
116416
"release_date": "2015-10-29T21:13:20.969507+00:00"
117417
},
418+
{
419+
"value": "0.8.6.dev",
420+
"release_date": null
421+
},
118422
{
119423
"value": "0.8.7",
120424
"release_date": "2015-10-29T21:13:40.939660+00:00"

0 commit comments

Comments
 (0)