nexB / python-inspector

Inspect Python code and PyPI package manifests. Resolve Python dependencies.
20 stars 17 forks source link

RecursionError in Dependency Resolution with "sphinx-rtd-theme" in requirements.txt #164

Open inderps opened 8 months ago

inderps commented 8 months ago

Description

I am experiencing a RecursionError when using python-inspector to analyze a project that includes sphinx-rtd-theme as a dependency. This error seems to occur during the dependency resolution process.

Steps to Reproduce

  1. Create a requirements.txt file with the following content:
sphinx-rtd-theme
  1. Run python-inspector with the following command:
    python-inspector --python-version 311 --operating-system macos --json-pdt output.json --analyze-setup-py-insecurely --requirement requirements.txt --verbose

Expected Behavior

I expected python-inspector to analyze the project's dependencies without any issues.

Actual Behavior

The python-inspector command results in a RecursionError. The detailed error output is as follows:

    dependencies = [pdt_dfs(mapping, graph, c) for c in children]
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/inderpal.singh/.pyenv/versions/3.11.5/lib/python3.11/site-packages/python_inspector/resolution.py", line 739, in <listcomp>
    dependencies = [pdt_dfs(mapping, graph, c) for c in children]
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/inderpal.singh/.pyenv/versions/3.11.5/lib/python3.11/site-packages/python_inspector/resolution.py", line 736, in pdt_dfs
    key=src, package_name=src, installed_version=str(mapping[src].version), dependencies=[]
                                                 ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/inderpal.singh/.pyenv/versions/3.11.5/lib/python3.11/site-packages/packvers/version.py", line 301, in __str__
    parts.append(".".join(str(x) for x in self.release))
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
RecursionError: maximum recursion depth exceeded
TG1999 commented 8 months ago

@inderps thanks for raising this issue. Note also that a PR is always welcomed if you want to take a stab at fixing this bug.

AJDurant commented 4 months ago

I had the same issue when the requirements file had:

sphinx-autodoc-typehints==1.25.2

along with any one of:

sphinxcontrib-applehelp==1.0.8
sphinxcontrib-devhelp==1.0.6
sphinxcontrib-htmlhelp==2.0.5
sphinxcontrib-qthelp==1.0.7
sphinxcontrib-serializinghtml==1.1.9

However I realised that these contrib packages had mix-matched versions with the downstream Sphinx dependencies. Moving them on one incremental version seems to avoid the issue.