Skip to content

Change output format #68 #69

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Oct 5, 2022
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 10 additions & 1 deletion CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,19 @@ Changelog
=========


v0.7.2
------

- Change Output Format to look like ScanCode-Toolkit #68
https://github.com/nexB/python-inspector/issues/68.


v0.7.1
------

- Correct version reporting #70.
- Correct version reporting #70
https://github.com/nexB/python-inspector/issues/70.


v0.7.0
------
Expand Down
46 changes: 35 additions & 11 deletions src/python_inspector/resolve_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -254,8 +254,20 @@ def resolve_dependencies(
if PYPI_SIMPLE_URL not in index_urls:
index_urls = tuple([PYPI_SIMPLE_URL]) + tuple(index_urls)

files = []

for req_file in requirement_files:
deps = dependencies.get_dependencies_from_requirements(requirements_file=req_file)
files.append(
dict(
type="file",
path=req_file,
package_data=[
pkg_data.to_dict()
for pkg_data in PipRequirementsFileHandler.parse(location=req_file)
],
)
)
for extra_data in dependencies.get_extra_data_from_requirements(requirements_file=req_file):
index_urls = (*index_urls, *tuple(extra_data.get("extra_index_urls") or []))
direct_dependencies.extend(deps)
Expand All @@ -267,6 +279,13 @@ def resolve_dependencies(
if setup_py_file:
package_data = list(PythonSetupPyHandler.parse(location=setup_py_file))
assert len(package_data) == 1
files.append(
dict(
type="file",
path=setup_py_file,
package_data=package_data[0].to_dict(),
)
)
package_data = package_data[0]
# validate if python require matches our current python version
python_requires = package_data.extra_data.get("python_requires")
Expand Down Expand Up @@ -360,7 +379,7 @@ def resolve_dependencies(
click.secho(f" {repo}")

# resolve dependencies proper
requirements, resolved_dependencies, purls = resolve(
resolved_dependencies, purls = resolve(
direct_dependencies=direct_dependencies,
environment=environment,
repos=repos,
Expand All @@ -381,7 +400,7 @@ def resolve_dependencies(
notice = (
"Dependency tree generated with python-inspector.\n"
"python-inspector is a free software tool from nexB Inc. and others.\n"
"Visit https://github.com/nexB/scancode-toolkit/ for support and download."
"Visit https://github.com/nexB/python-inspector/ for support and download."
)

headers = dict(
Expand All @@ -404,19 +423,19 @@ def resolve_dependencies(
if json_output:
write_output(
headers=headers,
requirements=requirements,
resolved_dependencies=resolved_dependencies,
json_output=json_output,
packages=packages,
files=files,
)

else:
write_output(
headers=headers,
requirements=requirements,
resolved_dependencies=resolved_dependencies,
json_output=pdt_output,
packages=packages,
files=files,
pdt_output=True,
)

Expand Down Expand Up @@ -461,9 +480,7 @@ def resolve(
analyze_setup_py_insecurely=analyze_setup_py_insecurely,
)

initial_requirements = [d.to_dict() for d in direct_dependencies]

return initial_requirements, resolved_dependencies, packages
return resolved_dependencies, packages


def get_requirements_from_direct_dependencies(
Expand All @@ -484,7 +501,12 @@ def get_requirements_from_direct_dependencies(


def write_output(
headers, requirements, resolved_dependencies, json_output, packages, pdt_output=False
headers,
resolved_dependencies,
json_output,
packages,
files,
pdt_output=False,
):
"""
Write headers, requirements and resolved_dependencies as JSON to ``json_output``.
Expand All @@ -494,14 +516,16 @@ def write_output(
if not pdt_output:
output = dict(
headers=headers,
requirements=requirements,
resolved_dependencies=resolved_dependencies,
files=files,
resolved_dependencies_graph=resolved_dependencies,
packages=packages,
)
else:
output = dict(
resolved_dependencies=resolved_dependencies,
headers=headers,
files=files,
packages=packages,
resolved_dependencies_graph=resolved_dependencies,
)

json.dump(output, json_output, indent=2)
Expand Down
17 changes: 3 additions & 14 deletions tests/data/default-url-expected.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,23 +10,12 @@
"--operating-system linux",
"--json <file>"
],
"notice": "Dependency tree generated with python-inspector.\npython-inspector is a free software tool from nexB Inc. and others.\nVisit https://github.com/nexB/scancode-toolkit/ for support and download.",
"notice": "Dependency tree generated with python-inspector.\npython-inspector is a free software tool from nexB Inc. and others.\nVisit https://github.com/nexB/python-inspector/ for support and download.",
"warnings": [],
"errors": []
},
"requirements": [
{
"purl": "pkg:pypi/[email protected]",
"extracted_requirement": "zipp==3.8.0",
"scope": "install",
"is_runtime": true,
"is_optional": false,
"is_resolved": true,
"resolved_package": {},
"extra_data": {}
}
],
"resolved_dependencies": [
"files": [],
"resolved_dependencies_graph": [
{
"package": "pkg:pypi/[email protected]",
"dependencies": []
Expand Down
Loading