Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

tox installs conflicting requirements #2272

Closed
jaraco opened this issue Nov 8, 2021 · 2 comments
Closed

tox installs conflicting requirements #2272

jaraco opened this issue Nov 8, 2021 · 2 comments
Labels
bug:normal affects many people or has quite an impact

Comments

@jaraco
Copy link

jaraco commented Nov 8, 2021

Originally reported to Sphinx as sphinx-doc/sphinx#9825, investigating that issue revealed that tox is installing docutils==0.18 whereas Sphinx requires <0.18.

First, grab jaraco/pytest-checkdocs@b4153a4 (the head has a workaround) and run tox -e docs.

$ git clone https://github.com/jaraco/pytest-checkdocs
$ cd pytest-checkdocs
$ git checkout b4153a403388c4944c5a4f883b68bfa5531b1617
$ tox -e docs

It fails because the wrong version of docutils is installed.

docutils is required both by the project and by sphinx via the extras installed for the environment. You can see in the other report that if I create the virtualenv and install the packages directly using the same commands used by tox, pip is able to install the required version without any conflicts. However, if I run with tox, it uses the legacy resolver and reports a conflict:

pytest-checkdocs HEAD $ tox -e docs -vv --notest
using tox.ini: /Users/jaraco/code/main/pytest-checkdocs/tox.ini (pid 2093)
using tox-3.24.4 from /Users/jaraco/.local/pipx/venvs/tox/lib/python3.10/site-packages/tox/__init__.py (pid 2093)
skipping sdist step
/Users/jaraco/.local/pipx/venvs/tox/bin/python (/Users/jaraco/.local/pipx/venvs/tox/bin/python) is {'executable': '/Users/jaraco/.local/pipx/venvs/tox/bin/python', 'implementation': 'CPython', 'version_info': [3, 10, 0, 'final', 0], 'version': '3.10.0 (v3.10.0:b494f5935c, Oct  4 2021, 14:59:20) [Clang 12.0.5 (clang-1205.0.22.11)]', 'is_64': True, 'sysplatform': 'darwin', 'os_sep': '/', 'extra_version_info': None}
docs uses /Users/jaraco/.local/pipx/venvs/tox/bin/python
docs start: getenv /Users/jaraco/code/main/pytest-checkdocs/.tox/docs
docs cannot reuse: no previous config /Users/jaraco/code/main/pytest-checkdocs/.tox/docs/.tox-config1
docs create: /Users/jaraco/code/main/pytest-checkdocs/.tox/docs
setting PATH=/Users/jaraco/code/main/pytest-checkdocs/.tox/docs/bin:/Users/jaraco/.local/bin:/Users/jaraco/.local/bin:/usr/local/opt/openssl@1.1/bin:/Applications/Firefox.app/Contents/MacOS:/Library/Frameworks/Python.framework/Versions/3.10/bin:/Library/Frameworks/Python.framework/Versions/3.9/bin:/Library/Frameworks/Python.framework/Versions/3.8/bin:/Library/Frameworks/Python.framework/Versions/3.7/bin:/Library/Frameworks/Python.framework/Versions/3.6/bin:/Users/jaraco/.local/homebrew/bin:/usr/local/heroku/bin:/Users/jaraco/Dropbox/bin/mac:/opt/cisco/anyconnect/bin:/Users/jaraco/Dropbox/bin/scripts:/Applications/Sublime Merge.app/Contents/SharedSupport/bin:/Applications/Sublime Text.app/Contents/SharedSupport/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/VMware Fusion.app/Contents/Public:/Library/Apple/usr/bin:/Library/Frameworks/Mono.framework/Versions/Current/Commands:/Applications/Wireshark.app/Contents/MacOS
[2095] /Users/jaraco/code/main/pytest-checkdocs/.tox$ /Users/jaraco/.local/pipx/venvs/tox/bin/python -m virtualenv --no-download --python /Users/jaraco/.local/pipx/venvs/tox/bin/python docs
created virtual environment CPython3.10.0.final.0-64 in 211ms
  creator CPython3Posix(dest=/Users/jaraco/code/main/pytest-checkdocs/.tox/docs, clear=False, no_vcs_ignore=False, global=False)
  seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/Users/jaraco/Library/Application Support/virtualenv)
    added seed packages: pip==21.3.1, setuptools==58.3.0, wheel==0.37.0
  activators BashActivator,CShellActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator
docs finish: getenv /Users/jaraco/code/main/pytest-checkdocs/.tox/docs after 0.40 seconds
docs start: developpkg /Users/jaraco/code/main/pytest-checkdocs
docs develop-inst: /Users/jaraco/code/main/pytest-checkdocs
write config to /Users/jaraco/code/main/pytest-checkdocs/.tox/docs/.tox-config1 as '09e2b2534307fa0a5f9ae8975ab12ee3d9c2a78fc1952b6945f79ca0b6feb853 /Users/jaraco/.local/pipx/venvs/tox/bin/python\n3.24.4 0 1 0'
setting PATH=/Users/jaraco/code/main/pytest-checkdocs/.tox/docs/bin:/Users/jaraco/.local/bin:/Users/jaraco/.local/bin:/usr/local/opt/openssl@1.1/bin:/Applications/Firefox.app/Contents/MacOS:/Library/Frameworks/Python.framework/Versions/3.10/bin:/Library/Frameworks/Python.framework/Versions/3.9/bin:/Library/Frameworks/Python.framework/Versions/3.8/bin:/Library/Frameworks/Python.framework/Versions/3.7/bin:/Library/Frameworks/Python.framework/Versions/3.6/bin:/Users/jaraco/.local/homebrew/bin:/usr/local/heroku/bin:/Users/jaraco/Dropbox/bin/mac:/opt/cisco/anyconnect/bin:/Users/jaraco/Dropbox/bin/scripts:/Applications/Sublime Merge.app/Contents/SharedSupport/bin:/Applications/Sublime Text.app/Contents/SharedSupport/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/VMware Fusion.app/Contents/Public:/Library/Apple/usr/bin:/Library/Frameworks/Mono.framework/Versions/Current/Commands:/Applications/Wireshark.app/Contents/MacOS
[2099] /Users/jaraco/code/main/pytest-checkdocs$ /Users/jaraco/code/main/pytest-checkdocs/.tox/docs/bin/python -m pip install --exists-action w -e '/Users/jaraco/code/main/pytest-checkdocs[docs,testing]'
Obtaining file:///Users/jaraco/code/main/pytest-checkdocs
  Installing build dependencies ... done
  Checking if build backend supports build_editable ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
  Preparing metadata (pyproject.toml) ... done
Collecting importlib-metadata>=4
  Using cached importlib_metadata-4.8.1-py3-none-any.whl (17 kB)
Collecting docutils>=0.15
  Using cached docutils-0.18-py2.py3-none-any.whl (569 kB)
Collecting pep517
  Using cached pep517-0.12.0-py2.py3-none-any.whl (19 kB)
Collecting pytest>=6; extra == "testing"
  Using cached pytest-6.2.5-py3-none-any.whl (280 kB)
Collecting pytest-enabler>=1.0.1; extra == "testing"
  Using cached pytest_enabler-1.2.0-py3-none-any.whl (4.1 kB)
Collecting pytest-flake8; extra == "testing"
  Using cached pytest_flake8-1.0.7-py2.py3-none-any.whl (6.4 kB)
Processing /Users/jaraco/Library/Caches/pip/wheels/d1/5b/f7/6fb24525d8710b80c9bee578a05d3c211c8cf25e570135f1ae/pytest_black-0.3.12-py3-none-any.whl
Collecting types-docutils; extra == "testing"
  Using cached types_docutils-0.17.1-py3-none-any.whl (9.5 kB)
Collecting pytest-mypy; platform_python_implementation != "PyPy" and extra == "testing"
  Using cached pytest_mypy-0.8.1-py3-none-any.whl (6.7 kB)
Collecting pytest-cov; extra == "testing"
  Using cached pytest_cov-3.0.0-py3-none-any.whl (20 kB)
Collecting jaraco.packaging>=8.2; extra == "docs"
  Using cached jaraco.packaging-8.2.1-py3-none-any.whl (7.5 kB)
Collecting sphinx; extra == "docs"
  Using cached Sphinx-4.2.0-py3-none-any.whl (3.1 MB)
Collecting rst.linker>=1.9; extra == "docs"
  Using cached rst.linker-2.2.0-py3-none-any.whl (5.3 kB)
Collecting zipp>=0.5
  Using cached zipp-3.6.0-py3-none-any.whl (5.3 kB)
Collecting tomli>=1.1.0; python_version >= "3.6"
  Using cached tomli-1.2.2-py3-none-any.whl (12 kB)
Collecting py>=1.8.2
  Using cached py-1.11.0-py2.py3-none-any.whl (98 kB)
Collecting packaging
  Using cached packaging-21.2-py3-none-any.whl (40 kB)
Collecting iniconfig
  Using cached iniconfig-1.1.1-py2.py3-none-any.whl (5.0 kB)
Collecting attrs>=19.2.0
  Using cached attrs-21.2.0-py2.py3-none-any.whl (53 kB)
Collecting toml
  Using cached toml-0.10.2-py2.py3-none-any.whl (16 kB)
Collecting pluggy<2.0,>=0.12
  Using cached pluggy-1.0.0-py2.py3-none-any.whl (13 kB)
Collecting jaraco.context
  Using cached jaraco.context-4.1.1-py3-none-any.whl (4.4 kB)
Collecting more-itertools
  Using cached more_itertools-8.10.0-py3-none-any.whl (51 kB)
Collecting jaraco.functools
  Using cached jaraco.functools-3.4.0-py3-none-any.whl (6.9 kB)
Collecting flake8>=3.5
  Using cached flake8-4.0.1-py2.py3-none-any.whl (64 kB)
Collecting black; python_version >= "3.6"
  Using cached black-21.10b0-py3-none-any.whl (150 kB)
Collecting filelock>=3.0
  Using cached filelock-3.3.2-py3-none-any.whl (9.7 kB)
Collecting mypy>=0.780; python_version >= "3.9"
  Using cached mypy-0.910-py3-none-any.whl (2.1 MB)
Collecting coverage[toml]>=5.2.1
  Using cached coverage-6.1.1-cp310-cp310-macosx_10_9_x86_64.whl (179 kB)
Requirement already satisfied: setuptools in ./.tox/docs/lib/python3.10/site-packages (from jaraco.packaging>=8.2; extra == "docs"->pytest-checkdocs==2.7.2.dev8+gb4153a4) (58.3.0)
Collecting requests>=2.5.0
  Using cached requests-2.26.0-py2.py3-none-any.whl (62 kB)
Collecting sphinxcontrib-htmlhelp>=2.0.0
  Using cached sphinxcontrib_htmlhelp-2.0.0-py2.py3-none-any.whl (100 kB)
Collecting sphinxcontrib-qthelp
  Using cached sphinxcontrib_qthelp-1.0.3-py2.py3-none-any.whl (90 kB)
Collecting sphinxcontrib-serializinghtml>=1.1.5
  Using cached sphinxcontrib_serializinghtml-1.1.5-py2.py3-none-any.whl (94 kB)
Collecting sphinxcontrib-jsmath
  Using cached sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl (5.1 kB)
Collecting Jinja2>=2.3
  Using cached Jinja2-3.0.2-py3-none-any.whl (133 kB)
Collecting snowballstemmer>=1.1
  Using cached snowballstemmer-2.1.0-py2.py3-none-any.whl (93 kB)
Collecting alabaster<0.8,>=0.7
  Using cached alabaster-0.7.12-py2.py3-none-any.whl (14 kB)
Collecting sphinxcontrib-devhelp
  Using cached sphinxcontrib_devhelp-1.0.2-py2.py3-none-any.whl (84 kB)
Collecting imagesize
  Using cached imagesize-1.2.0-py2.py3-none-any.whl (4.8 kB)
Collecting Pygments>=2.0
  Using cached Pygments-2.10.0-py3-none-any.whl (1.0 MB)
Collecting babel>=1.3
  Using cached Babel-2.9.1-py2.py3-none-any.whl (8.8 MB)
Collecting sphinxcontrib-applehelp
  Using cached sphinxcontrib_applehelp-1.0.2-py2.py3-none-any.whl (121 kB)
Collecting python-dateutil
  Using cached python_dateutil-2.8.2-py2.py3-none-any.whl (247 kB)
Collecting pyparsing<3,>=2.0.2
  Using cached pyparsing-2.4.7-py2.py3-none-any.whl (67 kB)
Collecting pyflakes<2.5.0,>=2.4.0
  Using cached pyflakes-2.4.0-py2.py3-none-any.whl (69 kB)
Collecting pycodestyle<2.9.0,>=2.8.0
  Using cached pycodestyle-2.8.0-py2.py3-none-any.whl (42 kB)
Collecting mccabe<0.7.0,>=0.6.0
  Using cached mccabe-0.6.1-py2.py3-none-any.whl (8.6 kB)
Collecting mypy-extensions>=0.4.3
  Using cached mypy_extensions-0.4.3-py2.py3-none-any.whl (4.5 kB)
Collecting platformdirs>=2
  Using cached platformdirs-2.4.0-py3-none-any.whl (14 kB)
Collecting click>=7.1.2
  Using cached click-8.0.3-py3-none-any.whl (97 kB)
Collecting regex>=2020.1.8
  Using cached regex-2021.11.2-cp310-cp310-macosx_10_9_x86_64.whl (288 kB)
Collecting typing-extensions>=3.10.0.0
  Using cached typing_extensions-3.10.0.2-py3-none-any.whl (26 kB)
Collecting pathspec<1,>=0.9.0
  Using cached pathspec-0.9.0-py2.py3-none-any.whl (31 kB)
Collecting idna<4,>=2.5; python_version >= "3"
  Using cached idna-3.3-py3-none-any.whl (61 kB)
Collecting charset-normalizer~=2.0.0; python_version >= "3"
  Using cached charset_normalizer-2.0.7-py3-none-any.whl (38 kB)
Collecting certifi>=2017.4.17
  Using cached certifi-2021.10.8-py2.py3-none-any.whl (149 kB)
Collecting urllib3<1.27,>=1.21.1
  Using cached urllib3-1.26.7-py2.py3-none-any.whl (138 kB)
Collecting MarkupSafe>=2.0
  Using cached MarkupSafe-2.0.1-cp310-cp310-macosx_10_9_x86_64.whl (14 kB)
Collecting pytz>=2015.7
  Using cached pytz-2021.3-py2.py3-none-any.whl (503 kB)
Collecting six>=1.5
  Using cached six-1.16.0-py2.py3-none-any.whl (11 kB)
Installing collected packages: zipp, importlib-metadata, docutils, tomli, pep517, py, pyparsing, packaging, iniconfig, attrs, toml, pluggy, pytest, jaraco.context, more-itertools, jaraco.functools, pytest-enabler, pyflakes, pycodestyle, mccabe, flake8, pytest-flake8, mypy-extensions, platformdirs, click, regex, typing-extensions, pathspec, black, pytest-black, types-docutils, filelock, mypy, pytest-mypy, coverage, pytest-cov, jaraco.packaging, idna, charset-normalizer, certifi, urllib3, requests, sphinxcontrib-htmlhelp, sphinxcontrib-qthelp, sphinxcontrib-serializinghtml, sphinxcontrib-jsmath, MarkupSafe, Jinja2, snowballstemmer, alabaster, sphinxcontrib-devhelp, imagesize, Pygments, pytz, babel, sphinxcontrib-applehelp, sphinx, six, python-dateutil, rst.linker, pytest-checkdocs
  Running setup.py develop for pytest-checkdocs
ERROR: pip's legacy dependency resolver does not consider dependency conflicts when selecting packages. This behaviour is the source of the following dependency conflicts.
sphinx 4.2.0 requires docutils<0.18,>=0.14, but you'll have docutils 0.18 which is incompatible.
Successfully installed Jinja2-3.0.2 MarkupSafe-2.0.1 Pygments-2.10.0 alabaster-0.7.12 attrs-21.2.0 babel-2.9.1 black-21.10b0 certifi-2021.10.8 charset-normalizer-2.0.7 click-8.0.3 coverage-6.1.1 docutils-0.18 filelock-3.3.2 flake8-4.0.1 idna-3.3 imagesize-1.2.0 importlib-metadata-4.8.1 iniconfig-1.1.1 jaraco.context-4.1.1 jaraco.functools-3.4.0 jaraco.packaging-8.2.1 mccabe-0.6.1 more-itertools-8.10.0 mypy-0.910 mypy-extensions-0.4.3 packaging-21.2 pathspec-0.9.0 pep517-0.12.0 platformdirs-2.4.0 pluggy-1.0.0 py-1.11.0 pycodestyle-2.8.0 pyflakes-2.4.0 pyparsing-2.4.7 pytest-6.2.5 pytest-black-0.3.12 pytest-checkdocs-2.7.2.dev8+gb4153a4 pytest-cov-3.0.0 pytest-enabler-1.2.0 pytest-flake8-1.0.7 pytest-mypy-0.8.1 python-dateutil-2.8.2 pytz-2021.3 regex-2021.11.2 requests-2.26.0 rst.linker-2.2.0 six-1.16.0 snowballstemmer-2.1.0 sphinx-4.2.0 sphinxcontrib-applehelp-1.0.2 sphinxcontrib-devhelp-1.0.2 sphinxcontrib-htmlhelp-2.0.0 sphinxcontrib-jsmath-1.0.1 sphinxcontrib-qthelp-1.0.3 sphinxcontrib-serializinghtml-1.1.5 toml-0.10.2 tomli-1.2.2 types-docutils-0.17.1 typing-extensions-3.10.0.2 urllib3-1.26.7 zipp-3.6.0
docs finish: developpkg /Users/jaraco/code/main/pytest-checkdocs after 15.34 seconds
docs start: envreport 
setting PATH=/Users/jaraco/code/main/pytest-checkdocs/.tox/docs/bin:/Users/jaraco/.local/bin:/Users/jaraco/.local/bin:/usr/local/opt/openssl@1.1/bin:/Applications/Firefox.app/Contents/MacOS:/Library/Frameworks/Python.framework/Versions/3.10/bin:/Library/Frameworks/Python.framework/Versions/3.9/bin:/Library/Frameworks/Python.framework/Versions/3.8/bin:/Library/Frameworks/Python.framework/Versions/3.7/bin:/Library/Frameworks/Python.framework/Versions/3.6/bin:/Users/jaraco/.local/homebrew/bin:/usr/local/heroku/bin:/Users/jaraco/Dropbox/bin/mac:/opt/cisco/anyconnect/bin:/Users/jaraco/Dropbox/bin/scripts:/Applications/Sublime Merge.app/Contents/SharedSupport/bin:/Applications/Sublime Text.app/Contents/SharedSupport/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/VMware Fusion.app/Contents/Public:/Library/Apple/usr/bin:/Library/Frameworks/Mono.framework/Versions/Current/Commands:/Applications/Wireshark.app/Contents/MacOS
[2139] /Users/jaraco/code/main/pytest-checkdocs$ /Users/jaraco/code/main/pytest-checkdocs/.tox/docs/bin/python -m pip freeze >.tox/docs/log/docs-0.log
docs finish: envreport  after 0.60 seconds
docs installed: alabaster==0.7.12,attrs==21.2.0,Babel==2.9.1,black==21.10b0,certifi==2021.10.8,charset-normalizer==2.0.7,click==8.0.3,coverage==6.1.1,docutils==0.18,filelock==3.3.2,flake8==4.0.1,idna==3.3,imagesize==1.2.0,importlib-metadata==4.8.1,iniconfig==1.1.1,jaraco.context==4.1.1,jaraco.functools==3.4.0,jaraco.packaging==8.2.1,Jinja2==3.0.2,MarkupSafe==2.0.1,mccabe==0.6.1,more-itertools==8.10.0,mypy==0.910,mypy-extensions==0.4.3,packaging==21.2,pathspec==0.9.0,pep517==0.12.0,platformdirs==2.4.0,pluggy==1.0.0,py==1.11.0,pycodestyle==2.8.0,pyflakes==2.4.0,Pygments==2.10.0,pyparsing==2.4.7,pytest==6.2.5,pytest-black==0.3.12,-e git+gh://jaraco/pytest-checkdocs@b4153a403388c4944c5a4f883b68bfa5531b1617#egg=pytest_checkdocs,pytest-cov==3.0.0,pytest-enabler==1.2.0,pytest-flake8==1.0.7,pytest-mypy==0.8.1,python-dateutil==2.8.2,pytz==2021.3,regex==2021.11.2,requests==2.26.0,rst.linker==2.2.0,six==1.16.0,snowballstemmer==2.1.0,Sphinx==4.2.0,sphinxcontrib-applehelp==1.0.2,sphinxcontrib-devhelp==1.0.2,sphinxcontrib-htmlhelp==2.0.0,sphinxcontrib-jsmath==1.0.1,sphinxcontrib-qthelp==1.0.3,sphinxcontrib-serializinghtml==1.1.5,toml==0.10.2,tomli==1.2.2,types-docutils==0.17.1,typing-extensions==3.10.0.2,urllib3==1.26.7,zipp==3.6.0
______________________________________________________________________________ summary ______________________________________________________________________________
  docs: skipped tests
  congratulations :)

I took a peek at the tox code but didn't see anything that would indicate that it's configuring the legacy resolver.

Do you have any clue as to why tox causes conflicting requirements to be installed, but when I run the commands, they work as expected?

@jaraco jaraco added the bug:normal affects many people or has quite an impact label Nov 8, 2021
@jugmac00
Copy link
Member

jugmac00 commented Nov 8, 2021

You configure tox to use the legacy resolver explicitly with https://github.com/jaraco/pytest-checkdocs/blob/b4153a403388c4944c5a4f883b68bfa5531b1617/tox.ini#L15-L17

@jaraco
Copy link
Author

jaraco commented Nov 8, 2021

Well dang. Now I feel dumb. I'd considered that possibility, but failed to check. Thanks for finding that!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug:normal affects many people or has quite an impact
Projects
None yet
Development

No branches or pull requests

3 participants