Skip to content

Commit 8f9935f

Browse files
committed
Change output format #68
Reference: #68 Signed-off-by: Tushar Goel <[email protected]>
1 parent 1af5ecc commit 8f9935f

15 files changed

+4682
-1802
lines changed

src/python_inspector/resolve_cli.py

Lines changed: 34 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -254,8 +254,20 @@ def resolve_dependencies(
254254
if PYPI_SIMPLE_URL not in index_urls:
255255
index_urls = tuple([PYPI_SIMPLE_URL]) + tuple(index_urls)
256256

257+
files = []
258+
257259
for req_file in requirement_files:
258260
deps = dependencies.get_dependencies_from_requirements(requirements_file=req_file)
261+
files.append(
262+
dict(
263+
type="file",
264+
path=req_file,
265+
package_data=[
266+
pkg_data.to_dict()
267+
for pkg_data in PipRequirementsFileHandler.parse(location=req_file)
268+
],
269+
)
270+
)
259271
for extra_data in dependencies.get_extra_data_from_requirements(requirements_file=req_file):
260272
index_urls = (*index_urls, *tuple(extra_data.get("extra_index_urls") or []))
261273
direct_dependencies.extend(deps)
@@ -267,6 +279,13 @@ def resolve_dependencies(
267279
if setup_py_file:
268280
package_data = list(PythonSetupPyHandler.parse(location=setup_py_file))
269281
assert len(package_data) == 1
282+
files.append(
283+
dict(
284+
type="file",
285+
path=setup_py_file,
286+
package_data=package_data[0].to_dict(),
287+
)
288+
)
270289
package_data = package_data[0]
271290
# validate if python require matches our current python version
272291
python_requires = package_data.extra_data.get("python_requires")
@@ -360,7 +379,7 @@ def resolve_dependencies(
360379
click.secho(f" {repo}")
361380

362381
# resolve dependencies proper
363-
requirements, resolved_dependencies, purls = resolve(
382+
resolved_dependencies, purls = resolve(
364383
direct_dependencies=direct_dependencies,
365384
environment=environment,
366385
repos=repos,
@@ -404,19 +423,19 @@ def resolve_dependencies(
404423
if json_output:
405424
write_output(
406425
headers=headers,
407-
requirements=requirements,
408426
resolved_dependencies=resolved_dependencies,
409427
json_output=json_output,
410428
packages=packages,
429+
files=files,
411430
)
412431

413432
else:
414433
write_output(
415434
headers=headers,
416-
requirements=requirements,
417435
resolved_dependencies=resolved_dependencies,
418436
json_output=pdt_output,
419437
packages=packages,
438+
files=files,
420439
pdt_output=True,
421440
)
422441

@@ -461,9 +480,7 @@ def resolve(
461480
analyze_setup_py_insecurely=analyze_setup_py_insecurely,
462481
)
463482

464-
initial_requirements = [d.to_dict() for d in direct_dependencies]
465-
466-
return initial_requirements, resolved_dependencies, packages
483+
return resolved_dependencies, packages
467484

468485

469486
def get_requirements_from_direct_dependencies(
@@ -484,7 +501,12 @@ def get_requirements_from_direct_dependencies(
484501

485502

486503
def write_output(
487-
headers, requirements, resolved_dependencies, json_output, packages, pdt_output=False
504+
headers,
505+
resolved_dependencies,
506+
json_output,
507+
packages,
508+
files,
509+
pdt_output=False,
488510
):
489511
"""
490512
Write headers, requirements and resolved_dependencies as JSON to ``json_output``.
@@ -494,14 +516,16 @@ def write_output(
494516
if not pdt_output:
495517
output = dict(
496518
headers=headers,
497-
requirements=requirements,
498-
resolved_dependencies=resolved_dependencies,
519+
files=files,
520+
resolved_dependencies_graph=resolved_dependencies,
499521
packages=packages,
500522
)
501523
else:
502524
output = dict(
503-
resolved_dependencies=resolved_dependencies,
525+
headers=headers,
526+
files=files,
504527
packages=packages,
528+
resolved_dependencies_graph=resolved_dependencies,
505529
)
506530

507531
json.dump(output, json_output, indent=2)

tests/data/default-url-expected.json

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,19 +14,8 @@
1414
"warnings": [],
1515
"errors": []
1616
},
17-
"requirements": [
18-
{
19-
"purl": "pkg:pypi/[email protected]",
20-
"extracted_requirement": "zipp==3.8.0",
21-
"scope": "install",
22-
"is_runtime": true,
23-
"is_optional": false,
24-
"is_resolved": true,
25-
"resolved_package": {},
26-
"extra_data": {}
27-
}
28-
],
29-
"resolved_dependencies": [
17+
"files": [],
18+
"resolved_dependencies_graph": [
3019
{
3120
"package": "pkg:pypi/[email protected]",
3221
"dependencies": []

0 commit comments

Comments
 (0)