Skip to content

Graceful handling of non-existent packages #141

@tsteenbe

Description

@tsteenbe

Running Python inspector on docassemble as one of its dependencies guess-language-spirit is misspelled it's guess_language-spirit per https://pypi.org/project/guess_language-spirit/

Propose Python inspector more gracefully handled non-existent packages or packages for which it can not resolve version by still producing output and throw and error versus trowing of an error and no results.

Steps to reproduce below

pip3 install python-inspector 
python-inspector --version
Python-inspector version: 0.9.8
git clone https://github.com/jhpyle/docassemble.git
cd docassemble 
git checkout v1.4.68
cd ..
python-inspector --python-version 310 --operating-system linux --json-pdt output.json --analyze-setup-py-insecurely --setup-py docassemble/docassemble_demo/setup.py --verbose
Resolving dependencies...
direct_dependencies:
 DependentPackage(purl='pkg:pypi/docassemble', extracted_requirement='docassemble==1.4.68', scope='install')
 DependentPackage(purl='pkg:pypi/docassemble.base', extracted_requirement='docassemble.base==1.4.68', scope='install')
 DependentPackage(purl='pkg:pypi/googledrivedownloader', extracted_requirement='googledrivedownloader==0.4', scope='install')
 DependentPackage(purl='pkg:pypi/ics', extracted_requirement='ics==0.7.2', scope='install')
 DependentPackage(purl='pkg:pypi/matplotlib', extracted_requirement='matplotlib==3.7.2', scope='install')
environment: Environment(python_version='310', operating_system='linux')
repos:
 PypiSimpleRepository(index_url='https://pypi.org/simple', credentials=None)
Traceback (most recent call last):
  File "/opt/homebrew/lib/python3.11/site-packages/python_inspector/resolve_cli.py", line 247, in resolve_dependencies
    resolution_result: Dict = resolver_api(
                              ^^^^^^^^^^^^^
  File "/opt/homebrew/lib/python3.11/site-packages/python_inspector/api.py", line 263, in resolve_dependencies
    resolution, purls = resolve(
                        ^^^^^^^^
  File "/opt/homebrew/lib/python3.11/site-packages/python_inspector/api.py", line 322, in resolve
    resolved_dependencies, packages = get_resolved_dependencies(
                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/lib/python3.11/site-packages/python_inspector/api.py", line 360, in get_resolved_dependencies
    resolver_results = resolver.resolve(requirements=requirements, max_rounds=max_rounds)
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/lib/python3.11/site-packages/resolvelib/resolvers.py", line 546, in resolve
    state = resolution.resolve(requirements, max_rounds=max_rounds)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/lib/python3.11/site-packages/resolvelib/resolvers.py", line 427, in resolve
    failure_causes = self._attempt_to_pin_criterion(name)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/lib/python3.11/site-packages/resolvelib/resolvers.py", line 239, in _attempt_to_pin_criterion
    criteria = self._get_updated_criteria(candidate)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/lib/python3.11/site-packages/resolvelib/resolvers.py", line 230, in _get_updated_criteria
    self._add_to_criteria(criteria, requirement, parent=candidate)
  File "/opt/homebrew/lib/python3.11/site-packages/resolvelib/resolvers.py", line 148, in _add_to_criteria
    matches = self._p.find_matches(
              ^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/lib/python3.11/site-packages/python_inspector/resolution.py", line 604, in find_matches
    candidates = sorted(
                 ^^^^^^^
  File "/opt/homebrew/lib/python3.11/site-packages/python_inspector/resolution.py", line 586, in _iter_matches
    raise NoVersionsFound(f"This package does not exist: {name}")
python_inspector.error.NoVersionsFound: This package does not exist: guess-language-spirit

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions