ipwnponies / dotfiles

Settings and configuration for unix environment
1 stars 3 forks source link

venv-update fails to install with version conflict #6

Closed ipwnponies closed 7 years ago

ipwnponies commented 7 years ago

Installing the requirements with venv-update causes a version conflict with idna package:

$ venv-update venv= foo
> virtualenv foo
Using real prefix '/usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5'
New python executable in /Users/jngu/.config/venv-update/foo/bin/python
Installing setuptools, pip, wheel...done.
> rm -rf foo/local
> pip install venv-update==2.1.3
Collecting venv-update==2.1.3
  Using cached venv_update-2.1.3-py2.py3-none-any.whl
Requirement already satisfied: setuptools>=0.8.0 in ./foo/lib/python3.5/site-packages (from venv-update==2.1.3)
Requirement already satisfied: wheel>0.25.0 in ./foo/lib/python3.5/site-packages (from venv-update==2.1.3)
Requirement already satisfied: pip>=8.1.0 in ./foo/lib/python3.5/site-packages (from venv-update==2.1.3)
Installing collected packages: venv-update
Successfully installed venv-update-2.1.3
> pip-faster install --upgrade --prune -r requirements.txt
Collecting mycli (from -r requirements.txt (line 1))
  slow: full search for unpinned requirement mycli (from -r requirements.txt (line 1))
  Using cached mycli-1.12.1-py2.py3-none-any.whl
Collecting powerline-status (from -r requirements.txt (line 2))
  slow: full search for unpinned requirement powerline-status (from -r requirements.txt (line 2))
Collecting ipython (from -r requirements.txt (line 3))
  slow: full search for unpinned requirement ipython (from -r requirements.txt (line 3))
  Using cached ipython-6.1.0-py3-none-any.whl
Collecting http-prompt (from -r requirements.txt (line 4))
  slow: full search for unpinned requirement http-prompt (from -r requirements.txt (line 4))
  Using cached http_prompt-0.10.2-py2.py3-none-any.whl
Collecting neovim==0.1.10 (from -r requirements.txt (line 5))
Collecting configobj>=5.0.5 (from mycli->-r requirements.txt (line 1))
  slow: full search for unpinned requirement configobj>=5.0.5 (from mycli->-r requirements.txt (line 1))
Collecting click>=4.1 (from mycli->-r requirements.txt (line 1))
  slow: full search for unpinned requirement click>=4.1 (from mycli->-r requirements.txt (line 1))
  Using cached click-6.7-py2.py3-none-any.whl
Collecting cli-helpers[styles]>=0.2.3 (from mycli->-r requirements.txt (line 1))
  slow: full search for unpinned requirement cli-helpers[styles]>=0.2.3 (from mycli->-r requirements.txt (line 1))
  Using cached cli_helpers-0.2.3-py2.py3-none-any.whl
Collecting prompt-toolkit<1.1.0,>=1.0.10 (from mycli->-r requirements.txt (line 1))
  slow: full search for unpinned requirement prompt-toolkit<1.1.0,>=1.0.10 (from mycli->-r requirements.txt (line 1))
  Using cached prompt_toolkit-1.0.15-py3-none-any.whl
Collecting Pygments>=1.6 (from mycli->-r requirements.txt (line 1))
  slow: full search for unpinned requirement Pygments>=1.6 (from mycli->-r requirements.txt (line 1))
  Using cached Pygments-2.2.0-py2.py3-none-any.whl
Collecting cryptography>=1.0.0 (from mycli->-r requirements.txt (line 1))
  slow: full search for unpinned requirement cryptography>=1.0.0 (from mycli->-r requirements.txt (line 1))
  Using cached cryptography-2.0.3-cp35-cp35m-macosx_10_6_intel.whl
Collecting PyMySQL>=0.6.7 (from mycli->-r requirements.txt (line 1))
  slow: full search for unpinned requirement PyMySQL>=0.6.7 (from mycli->-r requirements.txt (line 1))
  Using cached PyMySQL-0.7.11-py2.py3-none-any.whl
Collecting sqlparse<0.3.0,>=0.2.2 (from mycli->-r requirements.txt (line 1))
  slow: full search for unpinned requirement sqlparse<0.3.0,>=0.2.2 (from mycli->-r requirements.txt (line 1))
  Using cached sqlparse-0.2.3-py2.py3-none-any.whl
slow: full search for unpinned requirement setuptools>=18.5 in ./foo/lib/python3.5/site-packages (from ipython->-r requirements.txt (line 3))
Requirement already up-to-date: setuptools>=18.5 in ./foo/lib/python3.5/site-packages (from ipython->-r requirements.txt (line 3))
Collecting jedi>=0.10 (from ipython->-r requirements.txt (line 3))
  slow: full search for unpinned requirement jedi>=0.10 (from ipython->-r requirements.txt (line 3))
  Using cached jedi-0.10.2-py2.py3-none-any.whl
Collecting pexpect; sys_platform != "win32" (from ipython->-r requirements.txt (line 3))
  slow: full search for unpinned requirement pexpect; sys_platform != "win32" (from ipython->-r requirements.txt (line 3))
  Using cached pexpect-4.2.1-py2.py3-none-any.whl
Collecting simplegeneric>0.8 (from ipython->-r requirements.txt (line 3))
  slow: full search for unpinned requirement simplegeneric>0.8 (from ipython->-r requirements.txt (line 3))
Collecting decorator (from ipython->-r requirements.txt (line 3))
  slow: full search for unpinned requirement decorator (from ipython->-r requirements.txt (line 3))
  Using cached decorator-4.1.2-py2.py3-none-any.whl
Collecting pickleshare (from ipython->-r requirements.txt (line 3))
  slow: full search for unpinned requirement pickleshare (from ipython->-r requirements.txt (line 3))
  Using cached pickleshare-0.7.4-py2.py3-none-any.whl
Collecting appnope; sys_platform == "darwin" (from ipython->-r requirements.txt (line 3))
  slow: full search for unpinned requirement appnope; sys_platform == "darwin" (from ipython->-r requirements.txt (line 3))
  Using cached appnope-0.1.0-py2.py3-none-any.whl
Collecting traitlets>=4.2 (from ipython->-r requirements.txt (line 3))
  slow: full search for unpinned requirement traitlets>=4.2 (from ipython->-r requirements.txt (line 3))
  Using cached traitlets-4.3.2-py2.py3-none-any.whl
Collecting parsimonious>=0.6.2 (from http-prompt->-r requirements.txt (line 4))
  slow: full search for unpinned requirement parsimonious>=0.6.2 (from http-prompt->-r requirements.txt (line 4))
Collecting httpie>=0.9.2 (from http-prompt->-r requirements.txt (line 4))
  slow: full search for unpinned requirement httpie>=0.9.2 (from http-prompt->-r requirements.txt (line 4))
  Using cached httpie-0.9.9-py2.py3-none-any.whl
Collecting six>=1.10.0 (from http-prompt->-r requirements.txt (line 4))
  slow: full search for unpinned requirement six>=1.10.0 (from http-prompt->-r requirements.txt (line 4))
  Using cached six-1.10.0-py2.py3-none-any.whl
Collecting greenlet (from neovim==0.1.10->-r requirements.txt (line 5))
  slow: full search for unpinned requirement greenlet (from neovim==0.1.10->-r requirements.txt (line 5))
Collecting msgpack-python>=0.4.0 (from neovim==0.1.10->-r requirements.txt (line 5))
  slow: full search for unpinned requirement msgpack-python>=0.4.0 (from neovim==0.1.10->-r requirements.txt (line 5))
Collecting terminaltables>=3.0.0 (from cli-helpers[styles]>=0.2.3->mycli->-r requirements.txt (line 1))
  slow: full search for unpinned requirement terminaltables>=3.0.0 (from cli-helpers[styles]>=0.2.3->mycli->-r requirements.txt (line 1))
Collecting backports.csv>=1.0.0 (from cli-helpers[styles]>=0.2.3->mycli->-r requirements.txt (line 1))
  slow: full search for unpinned requirement backports.csv>=1.0.0 (from cli-helpers[styles]>=0.2.3->mycli->-r requirements.txt (line 1))
  Using cached backports.csv-1.0.5-py2.py3-none-any.whl
Collecting wcwidth (from prompt-toolkit<1.1.0,>=1.0.10->mycli->-r requirements.txt (line 1))
  slow: full search for unpinned requirement wcwidth (from prompt-toolkit<1.1.0,>=1.0.10->mycli->-r requirements.txt (line 1))
  Using cached wcwidth-0.1.7-py2.py3-none-any.whl
Collecting asn1crypto>=0.21.0 (from cryptography>=1.0.0->mycli->-r requirements.txt (line 1))
  slow: full search for unpinned requirement asn1crypto>=0.21.0 (from cryptography>=1.0.0->mycli->-r requirements.txt (line 1))
  Using cached asn1crypto-0.22.0-py2.py3-none-any.whl
Collecting cffi>=1.7 (from cryptography>=1.0.0->mycli->-r requirements.txt (line 1))
  slow: full search for unpinned requirement cffi>=1.7 (from cryptography>=1.0.0->mycli->-r requirements.txt (line 1))
  Using cached cffi-1.10.0-cp35-cp35m-macosx_10_6_intel.whl
Collecting idna>=2.1 (from cryptography>=1.0.0->mycli->-r requirements.txt (line 1))
  slow: full search for unpinned requirement idna>=2.1 (from cryptography>=1.0.0->mycli->-r requirements.txt (line 1))
  Using cached idna-2.6-py2.py3-none-any.whl
Collecting ptyprocess>=0.5 (from pexpect; sys_platform != "win32"->ipython->-r requirements.txt (line 3))
  slow: full search for unpinned requirement ptyprocess>=0.5 (from pexpect; sys_platform != "win32"->ipython->-r requirements.txt (line 3))
  Using cached ptyprocess-0.5.2-py2.py3-none-any.whl
Collecting ipython-genutils (from traitlets>=4.2->ipython->-r requirements.txt (line 3))
  slow: full search for unpinned requirement ipython-genutils (from traitlets>=4.2->ipython->-r requirements.txt (line 3))
  Using cached ipython_genutils-0.2.0-py2.py3-none-any.whl
Collecting requests>=2.11.0 (from httpie>=0.9.2->http-prompt->-r requirements.txt (line 4))
  slow: full search for unpinned requirement requests>=2.11.0 (from httpie>=0.9.2->http-prompt->-r requirements.txt (line 4))
  Using cached requests-2.18.3-py2.py3-none-any.whl
Collecting pycparser (from cffi>=1.7->cryptography>=1.0.0->mycli->-r requirements.txt (line 1))
  slow: full search for unpinned requirement pycparser (from cffi>=1.7->cryptography>=1.0.0->mycli->-r requirements.txt (line 1))
Collecting urllib3<1.23,>=1.21.1 (from requests>=2.11.0->httpie>=0.9.2->http-prompt->-r requirements.txt (line 4))
  slow: full search for unpinned requirement urllib3<1.23,>=1.21.1 (from requests>=2.11.0->httpie>=0.9.2->http-prompt->-r requirements.txt (line 4))
  Using cached urllib3-1.22-py2.py3-none-any.whl
Collecting certifi>=2017.4.17 (from requests>=2.11.0->httpie>=0.9.2->http-prompt->-r requirements.txt (line 4))
  slow: full search for unpinned requirement certifi>=2017.4.17 (from requests>=2.11.0->httpie>=0.9.2->http-prompt->-r requirements.txt (line 4))
  Using cached certifi-2017.7.27.1-py2.py3-none-any.whl
Collecting chardet<3.1.0,>=3.0.2 (from requests>=2.11.0->httpie>=0.9.2->http-prompt->-r requirements.txt (line 4))
  slow: full search for unpinned requirement chardet<3.1.0,>=3.0.2 (from requests>=2.11.0->httpie>=0.9.2->http-prompt->-r requirements.txt (line 4))
  Using cached chardet-3.0.4-py2.py3-none-any.whl
Installing collected packages: six, configobj, click, terminaltables, backports.csv, Pygments, cli-helpers, wcwidth, prompt-toolkit, asn1crypto, pycparser, cffi, idna, cryptography, PyMySQL, sqlparse, mycli, powerline-status, jedi, ptyprocess, pexpect, simplegeneric, decorator, pickleshare, appnope, ipython-genutils, traitlets, ipython, parsimonious, urllib3, certifi, chardet, requests, httpie, http-prompt, greenlet, msgpack-python, neovim
Successfully installed PyMySQL-0.7.11 Pygments-2.2.0 appnope-0.1.0 asn1crypto-0.22.0 backports.csv-1.0.5 certifi-2017.7.27.1 cffi-1.10.0 chardet-3.0.4 cli-helpers-0.2.3 click-6.7 configobj-5.0.6 cryptography-2.0.3 decorator-4.1.2 greenlet-0.4.12 http-prompt-0.10.2 httpie-0.9.9 idna-2.6 ipython-6.1.0 ipython-genutils-0.2.0 jedi-0.10.2 msgpack-python-0.4.8 mycli-1.12.1 neovim-0.1.10 parsimonious-0.8.0 pexpect-4.2.1 pickleshare-0.7.4 powerline-status-2.6 prompt-toolkit-1.0.15 ptyprocess-0.5.2 pycparser-2.18 requests-2.18.3 simplegeneric-0.8.1 six-1.10.0 sqlparse-0.2.3 terminaltables-3.1.0 traitlets-4.3.2 urllib3-1.22 wcwidth-0.1.7
Error: version conflict: idna 2.6 (foo/lib/python3.5/site-packages) <-> idna<2.6,>=2.5 (from requests>=2.11.0->httpie>=0.9.2->http-prompt->-r requirements.txt (line 4))

Something went wrong! Sending 'foo' back in time, so make knows it's invalid.
ipwnponies commented 7 years ago

This does not happen when installing with plain old virtualenv:

$ pip install -r requirements.txt
Collecting mycli (from -r requirements.txt (line 1))
  Using cached mycli-1.12.1-py2.py3-none-any.whl
Collecting powerline-status (from -r requirements.txt (line 2))
Collecting ipython (from -r requirements.txt (line 3))
  Using cached ipython-6.1.0-py3-none-any.whl
Collecting http-prompt (from -r requirements.txt (line 4))
  Using cached http_prompt-0.10.2-py2.py3-none-any.whl
Collecting neovim==0.1.10 (from -r requirements.txt (line 5))
Collecting cli-helpers[styles]>=0.2.3 (from mycli->-r requirements.txt (line 1))
  Using cached cli_helpers-0.2.3-py2.py3-none-any.whl
Collecting sqlparse<0.3.0,>=0.2.2 (from mycli->-r requirements.txt (line 1))
  Using cached sqlparse-0.2.3-py2.py3-none-any.whl
Collecting Pygments>=1.6 (from mycli->-r requirements.txt (line 1))
  Using cached Pygments-2.2.0-py2.py3-none-any.whl
Collecting cryptography>=1.0.0 (from mycli->-r requirements.txt (line 1))
  Using cached cryptography-2.0.3-cp35-cp35m-macosx_10_6_intel.whl
Collecting click>=4.1 (from mycli->-r requirements.txt (line 1))
  Using cached click-6.7-py2.py3-none-any.whl
Collecting prompt-toolkit<1.1.0,>=1.0.10 (from mycli->-r requirements.txt (line 1))
  Using cached prompt_toolkit-1.0.15-py3-none-any.whl
Collecting PyMySQL>=0.6.7 (from mycli->-r requirements.txt (line 1))
  Using cached PyMySQL-0.7.11-py2.py3-none-any.whl
Collecting configobj>=5.0.5 (from mycli->-r requirements.txt (line 1))
Collecting jedi>=0.10 (from ipython->-r requirements.txt (line 3))
  Using cached jedi-0.10.2-py2.py3-none-any.whl
Collecting simplegeneric>0.8 (from ipython->-r requirements.txt (line 3))
Collecting decorator (from ipython->-r requirements.txt (line 3))
  Using cached decorator-4.1.2-py2.py3-none-any.whl
Collecting traitlets>=4.2 (from ipython->-r requirements.txt (line 3))
  Using cached traitlets-4.3.2-py2.py3-none-any.whl
Requirement already satisfied: setuptools>=18.5 in ./bar/lib/python3.5/site-packages (from ipython->-r requirements.txt (line 3))
Collecting pexpect; sys_platform != "win32" (from ipython->-r requirements.txt (line 3))
  Using cached pexpect-4.2.1-py2.py3-none-any.whl
Collecting appnope; sys_platform == "darwin" (from ipython->-r requirements.txt (line 3))
  Using cached appnope-0.1.0-py2.py3-none-any.whl
Collecting pickleshare (from ipython->-r requirements.txt (line 3))
  Using cached pickleshare-0.7.4-py2.py3-none-any.whl
Collecting httpie>=0.9.2 (from http-prompt->-r requirements.txt (line 4))
  Using cached httpie-0.9.9-py2.py3-none-any.whl
Collecting parsimonious>=0.6.2 (from http-prompt->-r requirements.txt (line 4))
Collecting six>=1.10.0 (from http-prompt->-r requirements.txt (line 4))
  Using cached six-1.10.0-py2.py3-none-any.whl
Collecting msgpack-python>=0.4.0 (from neovim==0.1.10->-r requirements.txt (line 5))
Collecting greenlet (from neovim==0.1.10->-r requirements.txt (line 5))
Collecting backports.csv>=1.0.0 (from cli-helpers[styles]>=0.2.3->mycli->-r requirements.txt (line 1))
  Using cached backports.csv-1.0.5-py2.py3-none-any.whl
Collecting terminaltables>=3.0.0 (from cli-helpers[styles]>=0.2.3->mycli->-r requirements.txt (line 1))
Collecting asn1crypto>=0.21.0 (from cryptography>=1.0.0->mycli->-r requirements.txt (line 1))
  Using cached asn1crypto-0.22.0-py2.py3-none-any.whl
Collecting cffi>=1.7 (from cryptography>=1.0.0->mycli->-r requirements.txt (line 1))
  Using cached cffi-1.10.0-cp35-cp35m-macosx_10_6_intel.whl
Collecting idna>=2.1 (from cryptography>=1.0.0->mycli->-r requirements.txt (line 1))
  Using cached idna-2.6-py2.py3-none-any.whl
Collecting wcwidth (from prompt-toolkit<1.1.0,>=1.0.10->mycli->-r requirements.txt (line 1))
  Using cached wcwidth-0.1.7-py2.py3-none-any.whl
Collecting ipython-genutils (from traitlets>=4.2->ipython->-r requirements.txt (line 3))
  Using cached ipython_genutils-0.2.0-py2.py3-none-any.whl
Collecting ptyprocess>=0.5 (from pexpect; sys_platform != "win32"->ipython->-r requirements.txt (line 3))
  Using cached ptyprocess-0.5.2-py2.py3-none-any.whl
Collecting requests>=2.11.0 (from httpie>=0.9.2->http-prompt->-r requirements.txt (line 4))
  Using cached requests-2.18.3-py2.py3-none-any.whl
Collecting pycparser (from cffi>=1.7->cryptography>=1.0.0->mycli->-r requirements.txt (line 1))
Collecting certifi>=2017.4.17 (from requests>=2.11.0->httpie>=0.9.2->http-prompt->-r requirements.txt (line 4))
  Using cached certifi-2017.7.27.1-py2.py3-none-any.whl
Collecting urllib3<1.23,>=1.21.1 (from requests>=2.11.0->httpie>=0.9.2->http-prompt->-r requirements.txt (line 4))
  Using cached urllib3-1.22-py2.py3-none-any.whl
Collecting chardet<3.1.0,>=3.0.2 (from requests>=2.11.0->httpie>=0.9.2->http-prompt->-r requirements.txt (line 4))
  Using cached chardet-3.0.4-py2.py3-none-any.whl
Installing collected packages: backports.csv, terminaltables, Pygments, cli-helpers, sqlparse, six, asn1crypto, pycparser, cffi, idna, cryptography, click, wcwidth, prompt-toolkit, PyMySQL, configobj, mycli, powerline-status, jedi, simplegeneric, decorator, ipython-genutils, traitlets, ptyprocess, pexpect, appnope, pickleshare, ipython, certifi, urllib3, chardet, requests, httpie, parsimonious, http-prompt, msgpack-python, greenlet, neovim
Successfully installed PyMySQL-0.7.11 Pygments-2.2.0 appnope-0.1.0 asn1crypto-0.22.0 backports.csv-1.0.5 certifi-2017.7.27.1 cffi-1.10.0 chardet-3.0.4 cli-helpers-0.2.3 click-6.7 configobj-5.0.6 cryptography-2.0.3 decorator-4.1.2 greenlet-0.4.12 http-prompt-0.10.2 httpie-0.9.9 idna-2.6 ipython-6.1.0 ipython-genutils-0.2.0 jedi-0.10.2 msgpack-python-0.4.8 mycli-1.12.1 neovim-0.1.10 parsimonious-0.8.0 pexpect-4.2.1 pickleshare-0.7.4 powerline-status-2.6 prompt-toolkit-1.0.15 ptyprocess-0.5.2 pycparser-2.18 requests-2.18.3 simplegeneric-0.8.1 six-1.10.0 sqlparse-0.2.3 terminaltables-3.1.0 traitlets-4.3.2 urllib3-1.22 wcwidth-0.1.7

This might be an issue with how venv-update works and handles unpinned requirements.

ipwnponies commented 7 years ago

Okay, so pip doesn't correctly handle version conflicts: https://github.com/pypa/pip/issues/988.

The issue is now to update pin the version conflicts. We can choosely to loosely pin the versions or strictly pin them. Loosely pinning will allow for updates to automagically trickle in. Strictly pinning means the virtualenv can be reliably recreated but we'd need to be proactive on bumping.

ipwnponies commented 7 years ago

We should install https://github.com/Yelp/requirements-tools and visualize-requirements to find out who is depends on idna. And we might as well use upgrade-requirements to generate the pinned requirements.