Skip to content

Commit b6bb763

Browse files
Fix dparse2 pypi detection bug
Signed-off-by: Ayan Sinha Mahapatra <ayansmahapatra@gmail.com>
1 parent 9688dfc commit b6bb763

File tree

3 files changed

+215
-23
lines changed

3 files changed

+215
-23
lines changed

src/packagedcode/pypi.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,7 @@ def recognize(cls, location):
300300

301301
dependent_packages = parse_with_dparse2(
302302
location=location,
303-
dependency_type=dependency_type,
303+
file_name=dependency_type,
304304
)
305305
yield cls(dependencies=dependent_packages)
306306

tests/packagedcode/data/instance/python-package-instance-expected-with-uuid.json

Lines changed: 115 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@
2727
"is_runtime": true,
2828
"is_optional": false,
2929
"is_resolved": false,
30-
"dependency_uuid": "pkg:pypi/colorama?uuid=0af638f1-97ce-4415-b012-09cf986d4b0e",
31-
"for_package": "pkg:pypi/click@8.0.1?uuid=b3e1f027-fd5a-4e77-a399-a5178cd3189f",
30+
"dependency_uuid": "pkg:pypi/colorama?uuid=6bf7d1d3-fc5d-43bd-ba39-e54f14dbf14e",
31+
"for_package": "pkg:pypi/click@8.0.1?uuid=72fd2656-d125-436a-863d-4f73eb53b5d0",
3232
"lockfile": "METADATA"
3333
},
3434
{
@@ -38,8 +38,8 @@
3838
"is_runtime": true,
3939
"is_optional": false,
4040
"is_resolved": false,
41-
"dependency_uuid": "pkg:pypi/importlib-metadata?uuid=3b9c184d-830e-4b11-a180-2cec72bcb91d",
42-
"for_package": "pkg:pypi/click@8.0.1?uuid=b3e1f027-fd5a-4e77-a399-a5178cd3189f",
41+
"dependency_uuid": "pkg:pypi/importlib-metadata?uuid=cf451110-8833-4591-aa10-fc7440b41dfa",
42+
"for_package": "pkg:pypi/click@8.0.1?uuid=72fd2656-d125-436a-863d-4f73eb53b5d0",
4343
"lockfile": "METADATA"
4444
},
4545
{
@@ -49,8 +49,8 @@
4949
"is_runtime": true,
5050
"is_optional": false,
5151
"is_resolved": false,
52-
"dependency_uuid": "pkg:pypi/colorama?uuid=25056a30-b296-4a84-894b-118248507c22",
53-
"for_package": "pkg:pypi/click@8.0.1?uuid=b3e1f027-fd5a-4e77-a399-a5178cd3189f",
52+
"dependency_uuid": "pkg:pypi/colorama?uuid=e7320fd7-b926-4892-9f49-8332e5a11220",
53+
"for_package": "pkg:pypi/click@8.0.1?uuid=72fd2656-d125-436a-863d-4f73eb53b5d0",
5454
"lockfile": "setup.py"
5555
},
5656
{
@@ -60,9 +60,20 @@
6060
"is_runtime": true,
6161
"is_optional": false,
6262
"is_resolved": false,
63-
"dependency_uuid": "pkg:pypi/importlib-metadata?uuid=c53aa178-d981-49e1-b85f-003650f840a4",
64-
"for_package": "pkg:pypi/click@8.0.1?uuid=b3e1f027-fd5a-4e77-a399-a5178cd3189f",
63+
"dependency_uuid": "pkg:pypi/importlib-metadata?uuid=05b8a6ec-e5ac-4c13-9fb5-32c1ed61193d",
64+
"for_package": "pkg:pypi/click@8.0.1?uuid=72fd2656-d125-436a-863d-4f73eb53b5d0",
6565
"lockfile": "setup.py"
66+
},
67+
{
68+
"purl": "pkg:pypi/pre-commit",
69+
"requirement": "pre-commit",
70+
"scope": "install",
71+
"is_runtime": true,
72+
"is_optional": false,
73+
"is_resolved": false,
74+
"dependency_uuid": "pkg:pypi/pre-commit?uuid=ea29ec73-4851-4cac-ac63-60a3e9667c61",
75+
"for_package": "pkg:pypi/click@8.0.1?uuid=72fd2656-d125-436a-863d-4f73eb53b5d0",
76+
"lockfile": "tox.ini"
6677
}
6778
],
6879
"packages": [
@@ -139,10 +150,12 @@
139150
"contains_source_code": null,
140151
"source_packages": [],
141152
"extra_data": {},
142-
"package_uuid": "pkg:pypi/click@8.0.1?uuid=b3e1f027-fd5a-4e77-a399-a5178cd3189f",
153+
"package_uuid": "pkg:pypi/click@8.0.1?uuid=72fd2656-d125-436a-863d-4f73eb53b5d0",
143154
"package_data_paths": [
144155
"METADATA",
145-
"setup.py"
156+
"setup.cfg",
157+
"setup.py",
158+
"tox.ini"
146159
],
147160
"files": [
148161
"LICENSE.rst",
@@ -165,7 +178,7 @@
165178
"type": "file",
166179
"package_data": [],
167180
"for_packages": [
168-
"pkg:pypi/click@8.0.1?uuid=b3e1f027-fd5a-4e77-a399-a5178cd3189f"
181+
"pkg:pypi/click@8.0.1?uuid=72fd2656-d125-436a-863d-4f73eb53b5d0"
169182
],
170183
"scan_errors": []
171184
},
@@ -174,7 +187,7 @@
174187
"type": "file",
175188
"package_data": [],
176189
"for_packages": [
177-
"pkg:pypi/click@8.0.1?uuid=b3e1f027-fd5a-4e77-a399-a5178cd3189f"
190+
"pkg:pypi/click@8.0.1?uuid=72fd2656-d125-436a-863d-4f73eb53b5d0"
178191
],
179192
"scan_errors": []
180193
},
@@ -262,7 +275,7 @@
262275
}
263276
],
264277
"for_packages": [
265-
"pkg:pypi/click@8.0.1?uuid=b3e1f027-fd5a-4e77-a399-a5178cd3189f"
278+
"pkg:pypi/click@8.0.1?uuid=72fd2656-d125-436a-863d-4f73eb53b5d0"
266279
],
267280
"scan_errors": []
268281
},
@@ -271,16 +284,53 @@
271284
"type": "file",
272285
"package_data": [],
273286
"for_packages": [
274-
"pkg:pypi/click@8.0.1?uuid=b3e1f027-fd5a-4e77-a399-a5178cd3189f"
287+
"pkg:pypi/click@8.0.1?uuid=72fd2656-d125-436a-863d-4f73eb53b5d0"
275288
],
276289
"scan_errors": []
277290
},
278291
{
279292
"path": "setup.cfg",
280293
"type": "file",
281-
"package_data": [],
294+
"package_data": [
295+
{
296+
"type": "pypi",
297+
"namespace": null,
298+
"name": null,
299+
"version": null,
300+
"qualifiers": {},
301+
"subpath": null,
302+
"primary_language": "Python",
303+
"description": null,
304+
"release_date": null,
305+
"parties": [],
306+
"keywords": [],
307+
"homepage_url": null,
308+
"download_url": null,
309+
"size": null,
310+
"sha1": null,
311+
"md5": null,
312+
"sha256": null,
313+
"sha512": null,
314+
"bug_tracking_url": null,
315+
"code_view_url": null,
316+
"vcs_url": null,
317+
"copyright": null,
318+
"license_expression": null,
319+
"declared_license": null,
320+
"notice_text": null,
321+
"root_path": null,
322+
"dependencies": [],
323+
"contains_source_code": null,
324+
"source_packages": [],
325+
"extra_data": {},
326+
"purl": null,
327+
"repository_homepage_url": null,
328+
"repository_download_url": null,
329+
"api_data_url": null
330+
}
331+
],
282332
"for_packages": [
283-
"pkg:pypi/click@8.0.1?uuid=b3e1f027-fd5a-4e77-a399-a5178cd3189f"
333+
"pkg:pypi/click@8.0.1?uuid=72fd2656-d125-436a-863d-4f73eb53b5d0"
284334
],
285335
"scan_errors": []
286336
},
@@ -343,16 +393,62 @@
343393
}
344394
],
345395
"for_packages": [
346-
"pkg:pypi/click@8.0.1?uuid=b3e1f027-fd5a-4e77-a399-a5178cd3189f"
396+
"pkg:pypi/click@8.0.1?uuid=72fd2656-d125-436a-863d-4f73eb53b5d0"
347397
],
348398
"scan_errors": []
349399
},
350400
{
351401
"path": "tox.ini",
352402
"type": "file",
353-
"package_data": [],
403+
"package_data": [
404+
{
405+
"type": "pypi",
406+
"namespace": null,
407+
"name": null,
408+
"version": null,
409+
"qualifiers": {},
410+
"subpath": null,
411+
"primary_language": "Python",
412+
"description": null,
413+
"release_date": null,
414+
"parties": [],
415+
"keywords": [],
416+
"homepage_url": null,
417+
"download_url": null,
418+
"size": null,
419+
"sha1": null,
420+
"md5": null,
421+
"sha256": null,
422+
"sha512": null,
423+
"bug_tracking_url": null,
424+
"code_view_url": null,
425+
"vcs_url": null,
426+
"copyright": null,
427+
"license_expression": null,
428+
"declared_license": null,
429+
"notice_text": null,
430+
"root_path": null,
431+
"dependencies": [
432+
{
433+
"purl": "pkg:pypi/pre-commit",
434+
"requirement": "pre-commit",
435+
"scope": "install",
436+
"is_runtime": true,
437+
"is_optional": false,
438+
"is_resolved": false
439+
}
440+
],
441+
"contains_source_code": null,
442+
"source_packages": [],
443+
"extra_data": {},
444+
"purl": null,
445+
"repository_homepage_url": null,
446+
"repository_download_url": null,
447+
"api_data_url": null
448+
}
449+
],
354450
"for_packages": [
355-
"pkg:pypi/click@8.0.1?uuid=b3e1f027-fd5a-4e77-a399-a5178cd3189f"
451+
"pkg:pypi/click@8.0.1?uuid=72fd2656-d125-436a-863d-4f73eb53b5d0"
356452
],
357453
"scan_errors": []
358454
}

tests/packagedcode/data/instance/python-package-instance-expected.json

Lines changed: 99 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,17 @@
6363
"dependency_uuid": "pkg:pypi/importlib-metadata",
6464
"for_package": "pkg:pypi/click@8.0.1",
6565
"lockfile": "setup.py"
66+
},
67+
{
68+
"purl": "pkg:pypi/pre-commit",
69+
"requirement": "pre-commit",
70+
"scope": "install",
71+
"is_runtime": true,
72+
"is_optional": false,
73+
"is_resolved": false,
74+
"dependency_uuid": "pkg:pypi/pre-commit",
75+
"for_package": "pkg:pypi/click@8.0.1",
76+
"lockfile": "tox.ini"
6677
}
6778
],
6879
"packages": [
@@ -142,7 +153,9 @@
142153
"package_uuid": "pkg:pypi/click@8.0.1",
143154
"package_data_paths": [
144155
"METADATA",
145-
"setup.py"
156+
"setup.cfg",
157+
"setup.py",
158+
"tox.ini"
146159
],
147160
"files": [
148161
"LICENSE.rst",
@@ -278,7 +291,44 @@
278291
{
279292
"path": "setup.cfg",
280293
"type": "file",
281-
"package_data": [],
294+
"package_data": [
295+
{
296+
"type": "pypi",
297+
"namespace": null,
298+
"name": null,
299+
"version": null,
300+
"qualifiers": {},
301+
"subpath": null,
302+
"primary_language": "Python",
303+
"description": null,
304+
"release_date": null,
305+
"parties": [],
306+
"keywords": [],
307+
"homepage_url": null,
308+
"download_url": null,
309+
"size": null,
310+
"sha1": null,
311+
"md5": null,
312+
"sha256": null,
313+
"sha512": null,
314+
"bug_tracking_url": null,
315+
"code_view_url": null,
316+
"vcs_url": null,
317+
"copyright": null,
318+
"license_expression": null,
319+
"declared_license": null,
320+
"notice_text": null,
321+
"root_path": null,
322+
"dependencies": [],
323+
"contains_source_code": null,
324+
"source_packages": [],
325+
"extra_data": {},
326+
"purl": null,
327+
"repository_homepage_url": null,
328+
"repository_download_url": null,
329+
"api_data_url": null
330+
}
331+
],
282332
"for_packages": [
283333
"pkg:pypi/click@8.0.1"
284334
],
@@ -350,7 +400,53 @@
350400
{
351401
"path": "tox.ini",
352402
"type": "file",
353-
"package_data": [],
403+
"package_data": [
404+
{
405+
"type": "pypi",
406+
"namespace": null,
407+
"name": null,
408+
"version": null,
409+
"qualifiers": {},
410+
"subpath": null,
411+
"primary_language": "Python",
412+
"description": null,
413+
"release_date": null,
414+
"parties": [],
415+
"keywords": [],
416+
"homepage_url": null,
417+
"download_url": null,
418+
"size": null,
419+
"sha1": null,
420+
"md5": null,
421+
"sha256": null,
422+
"sha512": null,
423+
"bug_tracking_url": null,
424+
"code_view_url": null,
425+
"vcs_url": null,
426+
"copyright": null,
427+
"license_expression": null,
428+
"declared_license": null,
429+
"notice_text": null,
430+
"root_path": null,
431+
"dependencies": [
432+
{
433+
"purl": "pkg:pypi/pre-commit",
434+
"requirement": "pre-commit",
435+
"scope": "install",
436+
"is_runtime": true,
437+
"is_optional": false,
438+
"is_resolved": false
439+
}
440+
],
441+
"contains_source_code": null,
442+
"source_packages": [],
443+
"extra_data": {},
444+
"purl": null,
445+
"repository_homepage_url": null,
446+
"repository_download_url": null,
447+
"api_data_url": null
448+
}
449+
],
354450
"for_packages": [
355451
"pkg:pypi/click@8.0.1"
356452
],

0 commit comments

Comments
 (0)