Skip to content

Commit 8c41841

Browse files
committed
Refactor the code
Make write_output sleek by passing output as a parameter instead of computing output in the function Bump the version to 0.7.2 Signed-off-by: Tushar Goel <tushar.goel.dav@gmail.com>
1 parent c33e256 commit 8c41841

17 files changed

+4471
-4491
lines changed

CHANGELOG.rst

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,15 @@ v0.7.2
66
------
77

88
- Change Output Format to look like ScanCode-Toolkit #68
9-
https://github.com/nexB/python-inspector/issues/68.
9+
https://github.com/nexB/python-inspector/issues/68 , we have removed
10+
"requirements" from the ouptut and added a new field "files".
1011

1112

1213
v0.7.1
1314
------
1415

1516
- Correct version reporting #70
16-
https://github.com/nexB/python-inspector/issues/70.
17+
https://github.com/nexB/python-inspector/issues/70 .
1718

1819

1920
v0.7.0

src/python_inspector/resolve_cli.py

Lines changed: 24 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636

3737
TRACE = False
3838

39-
__version__ = "0.7.1"
39+
__version__ = "0.7.2"
4040

4141
DEFAULT_PYTHON_VERSION = "38"
4242
PYPI_SIMPLE_URL = "https://pypi.org/simple"
@@ -251,26 +251,26 @@ def resolve_dependencies(
251251
# TODO: deduplicate me
252252
direct_dependencies = []
253253

254+
files = []
255+
254256
if PYPI_SIMPLE_URL not in index_urls:
255257
index_urls = tuple([PYPI_SIMPLE_URL]) + tuple(index_urls)
256258

257-
files = []
258-
259259
for req_file in requirement_files:
260260
deps = dependencies.get_dependencies_from_requirements(requirements_file=req_file)
261+
for extra_data in dependencies.get_extra_data_from_requirements(requirements_file=req_file):
262+
index_urls = (*index_urls, *tuple(extra_data.get("extra_index_urls") or []))
263+
direct_dependencies.extend(deps)
264+
package_data = [
265+
pkg_data.to_dict() for pkg_data in PipRequirementsFileHandler.parse(location=req_file)
266+
]
261267
files.append(
262268
dict(
263269
type="file",
264270
path=req_file,
265-
package_data=[
266-
pkg_data.to_dict()
267-
for pkg_data in PipRequirementsFileHandler.parse(location=req_file)
268-
],
271+
package_data=package_data,
269272
)
270273
)
271-
for extra_data in dependencies.get_extra_data_from_requirements(requirements_file=req_file):
272-
index_urls = (*index_urls, *tuple(extra_data.get("extra_index_urls") or []))
273-
direct_dependencies.extend(deps)
274274

275275
for specifier in specifiers:
276276
dep = dependencies.get_dependency(specifier=specifier)
@@ -279,14 +279,15 @@ def resolve_dependencies(
279279
if setup_py_file:
280280
package_data = list(PythonSetupPyHandler.parse(location=setup_py_file))
281281
assert len(package_data) == 1
282+
package_data = package_data[0]
283+
file_package_data = [package_data.to_dict()]
282284
files.append(
283285
dict(
284286
type="file",
285287
path=setup_py_file,
286-
package_data=package_data[0].to_dict(),
288+
package_data=file_package_data,
287289
)
288290
)
289-
package_data = package_data[0]
290291
# validate if python require matches our current python version
291292
python_requires = package_data.extra_data.get("python_requires")
292293
if not utils_pypi.valid_python_version(
@@ -420,24 +421,17 @@ def resolve_dependencies(
420421
list(get_pypi_data_from_purl(package, repos=repos, environment=environment)),
421422
)
422423

423-
if json_output:
424-
write_output(
425-
headers=headers,
426-
resolved_dependencies=resolved_dependencies,
427-
json_output=json_output,
428-
packages=packages,
429-
files=files,
430-
)
424+
output = dict(
425+
headers=headers,
426+
files=files,
427+
resolved_dependencies_graph=resolved_dependencies,
428+
packages=packages,
429+
)
431430

432-
else:
433-
write_output(
434-
headers=headers,
435-
resolved_dependencies=resolved_dependencies,
436-
json_output=pdt_output,
437-
packages=packages,
438-
files=files,
439-
pdt_output=True,
440-
)
431+
write_output(
432+
json_output=json_output or pdt_output,
433+
output=output,
434+
)
441435

442436
if verbose:
443437
click.secho("done!")
@@ -500,34 +494,11 @@ def get_requirements_from_direct_dependencies(
500494
yield req
501495

502496

503-
def write_output(
504-
headers,
505-
resolved_dependencies,
506-
json_output,
507-
packages,
508-
files,
509-
pdt_output=False,
510-
):
497+
def write_output(output, json_output):
511498
"""
512499
Write headers, requirements and resolved_dependencies as JSON to ``json_output``.
513500
Return the output data.
514501
"""
515-
516-
if not pdt_output:
517-
output = dict(
518-
headers=headers,
519-
files=files,
520-
resolved_dependencies_graph=resolved_dependencies,
521-
packages=packages,
522-
)
523-
else:
524-
output = dict(
525-
headers=headers,
526-
files=files,
527-
packages=packages,
528-
resolved_dependencies_graph=resolved_dependencies,
529-
)
530-
531502
json.dump(output, json_output, indent=2)
532503
return output
533504

tests/data/default-url-expected.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"headers": {
33
"tool_name": "python-inspector",
44
"tool_homepageurl": "https://github.com/nexB/python-inspector",
5-
"tool_version": "0.7.1",
5+
"tool_version": "0.7.2",
66
"options": [
77
"--specifier zipp==3.8.0",
88
"--index-url https://pypi.org/simple",

tests/data/environment-marker-test-requirements.txt-expected.json

Lines changed: 41 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"headers": {
33
"tool_name": "python-inspector",
44
"tool_homepageurl": "https://github.com/nexB/python-inspector",
5-
"tool_version": "0.7.1",
5+
"tool_version": "0.7.2",
66
"options": [
77
"--requirement /home/tg1999/Desktop/python-inspector-1/tests/data/environment-marker-test-requirements.txt",
88
"--index-url https://pypi.org/simple",
@@ -206,6 +206,46 @@
206206
]
207207
}
208208
],
209+
"resolved_dependencies_graph": [
210+
{
211+
"key": "flask",
212+
"package_name": "flask",
213+
"installed_version": "1.0",
214+
"dependencies": [
215+
{
216+
"key": "click",
217+
"package_name": "click",
218+
"installed_version": "6.7",
219+
"dependencies": []
220+
},
221+
{
222+
"key": "itsdangerous",
223+
"package_name": "itsdangerous",
224+
"installed_version": "0.24",
225+
"dependencies": []
226+
},
227+
{
228+
"key": "jinja2",
229+
"package_name": "jinja2",
230+
"installed_version": "2.11.3",
231+
"dependencies": [
232+
{
233+
"key": "markupsafe",
234+
"package_name": "markupsafe",
235+
"installed_version": "1.0",
236+
"dependencies": []
237+
}
238+
]
239+
},
240+
{
241+
"key": "werkzeug",
242+
"package_name": "werkzeug",
243+
"installed_version": "0.15.3",
244+
"dependencies": []
245+
}
246+
]
247+
}
248+
],
209249
"packages": [
210250
{
211251
"type": "pypi",
@@ -717,45 +757,5 @@
717757
"datasource_id": null,
718758
"purl": "pkg:pypi/werkzeug@0.15.3"
719759
}
720-
],
721-
"resolved_dependencies_graph": [
722-
{
723-
"key": "flask",
724-
"package_name": "flask",
725-
"installed_version": "1.0",
726-
"dependencies": [
727-
{
728-
"key": "click",
729-
"package_name": "click",
730-
"installed_version": "6.7",
731-
"dependencies": []
732-
},
733-
{
734-
"key": "itsdangerous",
735-
"package_name": "itsdangerous",
736-
"installed_version": "0.24",
737-
"dependencies": []
738-
},
739-
{
740-
"key": "jinja2",
741-
"package_name": "jinja2",
742-
"installed_version": "2.11.3",
743-
"dependencies": [
744-
{
745-
"key": "markupsafe",
746-
"package_name": "markupsafe",
747-
"installed_version": "1.0",
748-
"dependencies": []
749-
}
750-
]
751-
},
752-
{
753-
"key": "werkzeug",
754-
"package_name": "werkzeug",
755-
"installed_version": "0.15.3",
756-
"dependencies": []
757-
}
758-
]
759-
}
760760
]
761761
}

0 commit comments

Comments
 (0)