Skip to content

Commit 7a6251f

Browse files
committed
Report file data for files parsed via insecure option
Signed-off-by: Tushar Goel <tushar.goel.dav@gmail.com>
1 parent 8c41841 commit 7a6251f

File tree

2 files changed

+47
-10
lines changed

2 files changed

+47
-10
lines changed

src/python_inspector/resolve_cli.py

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -280,14 +280,6 @@ def resolve_dependencies(
280280
package_data = list(PythonSetupPyHandler.parse(location=setup_py_file))
281281
assert len(package_data) == 1
282282
package_data = package_data[0]
283-
file_package_data = [package_data.to_dict()]
284-
files.append(
285-
dict(
286-
type="file",
287-
path=setup_py_file,
288-
package_data=file_package_data,
289-
)
290-
)
291283
# validate if python require matches our current python version
292284
python_requires = package_data.extra_data.get("python_requires")
293285
if not utils_pypi.valid_python_version(
@@ -302,6 +294,7 @@ def resolve_dependencies(
302294
)
303295
ctx.exit(1)
304296

297+
setup_py_file_deps = package_data.dependencies
305298
for dep in package_data.dependencies:
306299
# TODO : we need to handle to all the scopes
307300
if dep.scope == "install":
@@ -323,17 +316,30 @@ def resolve_dependencies(
323316
location=requirement_location,
324317
)
325318
if deps:
319+
setup_py_file_deps = list(deps)
326320
has_deps = True
327321
direct_dependencies.extend(deps)
328322

329323
if not has_deps and contain_string(string="_require", files=[setup_py_file]):
330324
if analyze_setup_py_insecurely:
331-
direct_dependencies.extend(
325+
insecure_setup_py_deps = list(
332326
parse_deps_from_setup_py_insecurely(setup_py=setup_py_file)
333327
)
328+
setup_py_file_deps = insecure_setup_py_deps
329+
direct_dependencies.extend(insecure_setup_py_deps)
334330
else:
335331
raise Exception("Unable to collect setup.py dependencies securely")
336332

333+
package_data.dependencies = setup_py_file_deps
334+
file_package_data = [package_data.to_dict()]
335+
files.append(
336+
dict(
337+
type="file",
338+
path=setup_py_file,
339+
package_data=file_package_data,
340+
)
341+
)
342+
337343
if not direct_dependencies:
338344
click.secho("Error: no requirements requested.")
339345
ctx.exit(1)

tests/data/insecure-setup/setup.py-expected.json

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,38 @@
7979
"source_packages": [],
8080
"file_references": [],
8181
"extra_data": {},
82-
"dependencies": [],
82+
"dependencies": [
83+
{
84+
"purl": "pkg:pypi/isodate",
85+
"extracted_requirement": "isodate",
86+
"scope": "install",
87+
"is_runtime": false,
88+
"is_optional": false,
89+
"is_resolved": false,
90+
"resolved_package": {},
91+
"extra_data": {}
92+
},
93+
{
94+
"purl": "pkg:pypi/pyparsing",
95+
"extracted_requirement": "pyparsing",
96+
"scope": "install",
97+
"is_runtime": false,
98+
"is_optional": false,
99+
"is_resolved": false,
100+
"resolved_package": {},
101+
"extra_data": {}
102+
},
103+
{
104+
"purl": "pkg:pypi/six",
105+
"extracted_requirement": "six",
106+
"scope": "install",
107+
"is_runtime": false,
108+
"is_optional": false,
109+
"is_resolved": false,
110+
"resolved_package": {},
111+
"extra_data": {}
112+
}
113+
],
83114
"repository_homepage_url": "https://pypi.org/project/rdflib",
84115
"repository_download_url": "https://pypi.org/packages/source/r/rdflib/rdflib-5.0.0.tar.gz",
85116
"api_data_url": "https://pypi.org/pypi/rdflib/5.0.0/json",

0 commit comments

Comments
 (0)