python-inspector icon indicating copy to clipboard operation
python-inspector copied to clipboard

Exception in requirements.txt

Open dgutson opened this issue 1 year ago • 3 comments

requirements.txt:

netifaces==0.10.4

running:

python-inspector -r requirements.txt -p 310 -o linux --json ./pp.json --analyze-setup-py-insecurely

traceback:

Traceback (most recent call last):
  File "/home/daniel/.local/lib/python3.10/site-packages/python_inspector/resolve_cli.py", line 247, in resolve_dependencies
    resolution_result: Dict = resolver_api(
  File "/home/daniel/.local/lib/python3.10/site-packages/python_inspector/api.py", line 254, in resolve_dependencies
    resolution, purls = resolve(
  File "/home/daniel/.local/lib/python3.10/site-packages/python_inspector/api.py", line 313, in resolve
    resolved_dependencies, packages = get_resolved_dependencies(
  File "/home/daniel/.local/lib/python3.10/site-packages/python_inspector/api.py", line 351, in get_resolved_dependencies
    resolver_results = resolver.resolve(requirements=requirements, max_rounds=max_rounds)
  File "/home/daniel/.local/lib/python3.10/site-packages/resolvelib/resolvers.py", line 546, in resolve
    state = resolution.resolve(requirements, max_rounds=max_rounds)
  File "/home/daniel/.local/lib/python3.10/site-packages/resolvelib/resolvers.py", line 427, in resolve
    failure_causes = self._attempt_to_pin_criterion(name)
  File "/home/daniel/.local/lib/python3.10/site-packages/resolvelib/resolvers.py", line 239, in _attempt_to_pin_criterion
    criteria = self._get_updated_criteria(candidate)
  File "/home/daniel/.local/lib/python3.10/site-packages/resolvelib/resolvers.py", line 229, in _get_updated_criteria
    for requirement in self._p.get_dependencies(candidate=candidate):
  File "/home/daniel/.local/lib/python3.10/site-packages/python_inspector/resolution.py", line 639, in get_dependencies
    return list(self._iter_dependencies(candidate))
  File "/home/daniel/.local/lib/python3.10/site-packages/python_inspector/resolution.py", line 630, in _iter_dependencies
    for r in self.get_requirements_for_package(purl=purl, candidate=candidate):
  File "/home/daniel/.local/lib/python3.10/site-packages/python_inspector/resolution.py", line 509, in get_requirements_for_package_from_pypi_simple
    yield from get_requirements_from_python_manifest(
  File "/home/daniel/.local/lib/python3.10/site-packages/python_inspector/resolution.py", line 299, in get_requirements_from_python_manifest
    yield from get_reqs_insecurely(
  File "/home/daniel/.local/lib/python3.10/site-packages/python_inspector/resolution.py", line 277, in get_reqs_insecurely
    yield from parse_reqs_from_setup_py_insecurely(setup_py=setup_py_location)
  File "/home/daniel/.local/lib/python3.10/site-packages/python_inspector/resolution.py", line 128, in parse_reqs_from_setup_py_insecurely
    for req in iter_requirements(level="", extras=[], setup_file=setup_py):
  File "/home/daniel/.local/lib/python3.10/site-packages/python_inspector/setup_py_live_eval.py", line 117, in iter_requirements
    exec(file_contents, g)
  File "<string>", line 17, in <module>
AttributeError: 'dict' object has no attribute 'print'

CC @sschuberth since this showed up in ORT. CC @qequ @arieltorti

python-inspector version 0.9.5

dgutson avatar Mar 17 '23 01:03 dgutson

Thank you for the report!

pombredanne avatar Mar 23 '23 11:03 pombredanne

netifaces==0.10.4 is a release from 2014 of the (unmaintained) package at https://github.com/al45tair/netifaces that has a fairly complex setup.py that we cannot evaluate correctly even insecurely. The newer versions have the same issue. It would need to be built for this and this would require to have a build toolchain installed. This escapes the practical realm of the possible things we can do here IMHO but interestingly this should work without an insecure eveluation.

pombredanne avatar Apr 17 '23 07:04 pombredanne

@luciamartinezgavier

dgutson avatar Aug 09 '23 18:08 dgutson