Environment
Description
pip's new resolver's output is repeating Collecting XYZ
for the same requirement multiple times.
Expected behavior
pip's output should not have Collecting XYZ
multiple times.
How to Reproduce
pip install --unstable-feature=resolver 'pyrax==1.9.8'
Output
Collecting pyrax==1.9.8
Using cached pyrax-1.9.8-py2.py3-none-any.whl (346 kB)
Requirement already satisfied: six<2,>=1.9.0 in /Users/pradyunsg/.virtualenvs/pip/lib/python3.8/site-packages (from pyrax==1.9.8) (1.14.0)
Collecting python-novaclient==2.27.0
Using cached python_novaclient-2.27.0-py2.py3-none-any.whl (312 kB)
Collecting PrettyTable<0.8,>=0.7
Using cached prettytable-0.7.2.zip (28 kB)
Collecting iso8601>=0.1.9
Using cached iso8601-0.1.12-py3-none-any.whl (12 kB)
Collecting pbr<2.0,>=1.6
Using cached pbr-1.10.0-py2.py3-none-any.whl (96 kB)
Collecting rackspace-novaclient
Using cached rackspace-novaclient-2.1.tar.gz (1.7 kB)
Collecting ip_associations_python_novaclient_ext
Using cached ip_associations_python_novaclient_ext-0.2.tar.gz (2.4 kB)
Collecting rackspace-auth-openstack
Using cached rackspace-auth-openstack-1.3.tar.gz (6.8 kB)
Collecting os_diskconfig_python_novaclient_ext
Using cached os_diskconfig_python_novaclient_ext-0.1.3.tar.gz (2.5 kB)
Collecting rax_scheduled_images_python_novaclient_ext
Using cached rax_scheduled_images_python_novaclient_ext-0.3.1.tar.gz (2.9 kB)
Collecting os_networksv2_python_novaclient_ext
Using cached os_networksv2_python_novaclient_ext-0.26.tar.gz (2.3 kB)
Collecting rax_default_network_flags_python_novaclient_ext
Using cached rax_default_network_flags_python_novaclient_ext-0.4.0.tar.gz (2.5 kB)
Collecting os_virtual_interfacesv2_python_novaclient_ext
Using cached os_virtual_interfacesv2_python_novaclient_ext-0.20.tar.gz (2.6 kB)
Collecting Babel>=1.3
Using cached Babel-2.8.0-py2.py3-none-any.whl (8.6 MB)
Collecting argparse
Using cached argparse-1.4.0-py2.py3-none-any.whl (23 kB)
Collecting pytz>=2015.7
Using cached pytz-2020.1-py2.py3-none-any.whl (510 kB)
Collecting mock
Using cached mock-4.0.2-py3-none-any.whl (28 kB)
Collecting python-keystoneclient>=1.6.0
Using cached python_keystoneclient-4.0.0-py3-none-any.whl (397 kB)
Collecting python-keystoneclient>=1.6.0
Using cached python_keystoneclient-3.22.0-py2.py3-none-any.whl (397 kB)
Collecting python-keystoneclient>=1.6.0
Using cached python_keystoneclient-3.21.0-py2.py3-none-any.whl (395 kB)
Collecting python-keystoneclient>=1.6.0
Using cached python_keystoneclient-3.20.0-py2.py3-none-any.whl (394 kB)
Collecting python-keystoneclient>=1.6.0
Using cached python_keystoneclient-3.19.1-py2.py3-none-any.whl (394 kB)
Collecting python-keystoneclient>=1.6.0
Using cached python_keystoneclient-3.19.0-py2.py3-none-any.whl (394 kB)
Collecting python-keystoneclient>=1.6.0
Using cached python_keystoneclient-3.18.0-py2.py3-none-any.whl (393 kB)
Collecting python-keystoneclient>=1.6.0
Using cached python_keystoneclient-3.17.0-py2.py3-none-any.whl (382 kB)
Collecting python-keystoneclient>=1.6.0
Using cached python_keystoneclient-3.16.0-py2.py3-none-any.whl (376 kB)
Collecting python-keystoneclient>=1.6.0
Using cached python_keystoneclient-3.15.1-py2.py3-none-any.whl (385 kB)
Collecting python-keystoneclient>=1.6.0
Using cached python_keystoneclient-3.15.0-py2.py3-none-any.whl (378 kB)
Collecting python-keystoneclient>=1.6.0
Using cached python_keystoneclient-3.14.0-py2.py3-none-any.whl (372 kB)
Collecting python-keystoneclient>=1.6.0
Using cached python_keystoneclient-3.13.1-py2.py3-none-any.whl (381 kB)
Collecting python-keystoneclient>=1.6.0
Using cached python_keystoneclient-3.13.0-py2.py3-none-any.whl (374 kB)
Collecting python-keystoneclient>=1.6.0
Using cached python_keystoneclient-3.12.0-py2.py3-none-any.whl (374 kB)
Collecting python-keystoneclient>=1.6.0
Using cached python_keystoneclient-3.11.0-py2.py3-none-any.whl (372 kB)
Collecting python-keystoneclient>=1.6.0
Using cached python_keystoneclient-3.10.0-py2.py3-none-any.whl (369 kB)
Collecting positional>=1.1.1
Using cached positional-1.2.1.tar.gz (16 kB)
Collecting stevedore>=1.20.0
Using cached stevedore-1.32.0-py2.py3-none-any.whl (43 kB)
Collecting stevedore>=1.20.0
Using cached stevedore-1.31.0-py2.py3-none-any.whl (43 kB)
Collecting stevedore>=1.20.0
Using cached stevedore-1.30.1-py2.py3-none-any.whl (42 kB)
Collecting stevedore>=1.20.0
Using cached stevedore-1.30.0-py2.py3-none-any.whl (42 kB)
Collecting stevedore>=1.20.0
Using cached stevedore-1.29.0-py2.py3-none-any.whl (37 kB)
Collecting stevedore>=1.20.0
Using cached stevedore-1.28.0-py2.py3-none-any.whl (39 kB)
Collecting stevedore>=1.20.0
Using cached stevedore-1.27.1-py2.py3-none-any.whl (39 kB)
Collecting stevedore>=1.20.0
Using cached stevedore-1.27.0-py2.py3-none-any.whl (39 kB)
Collecting stevedore>=1.20.0
Using cached stevedore-1.26.0-py2.py3-none-any.whl (39 kB)
Collecting stevedore>=1.20.0
Using cached stevedore-1.25.2-py2.py3-none-any.whl (42 kB)
Collecting stevedore>=1.20.0
Using cached stevedore-1.25.1-py2.py3-none-any.whl (39 kB)
Collecting stevedore>=1.20.0
Using cached stevedore-1.25.0-py2.py3-none-any.whl (39 kB)
Collecting stevedore>=1.20.0
Using cached stevedore-1.24.0-py2.py3-none-any.whl (39 kB)
Collecting stevedore>=1.20.0
Using cached stevedore-1.23.0-py2.py3-none-any.whl (39 kB)
Collecting stevedore>=1.20.0
Using cached stevedore-1.22.0-py2.py3-none-any.whl (39 kB)
Collecting stevedore>=1.20.0
Using cached stevedore-1.21.0-py2.py3-none-any.whl (39 kB)
Collecting stevedore>=1.20.0
Using cached stevedore-1.20.1-py2.py3-none-any.whl (39 kB)
Collecting debtcollector>=1.2.0
Using cached debtcollector-2.0.1-py3-none-any.whl (23 kB)
Collecting debtcollector>=1.2.0
Using cached debtcollector-2.0.0-py3-none-any.whl (23 kB)
Collecting debtcollector>=1.2.0
Using cached debtcollector-1.22.0-py2.py3-none-any.whl (23 kB)
Collecting debtcollector>=1.2.0
Using cached debtcollector-1.21.0-py2.py3-none-any.whl (23 kB)
Collecting debtcollector>=1.2.0
Using cached debtcollector-1.20.0-py2.py3-none-any.whl (18 kB)
Collecting debtcollector>=1.2.0
Using cached debtcollector-1.19.0-py2.py3-none-any.whl (20 kB)
Collecting debtcollector>=1.2.0
Using cached debtcollector-1.18.0-py2.py3-none-any.whl (20 kB)
Collecting debtcollector>=1.2.0
Using cached debtcollector-1.17.2-py2.py3-none-any.whl (23 kB)
Collecting debtcollector>=1.2.0
Using cached debtcollector-1.17.1-py2.py3-none-any.whl (20 kB)
Collecting debtcollector>=1.2.0
Using cached debtcollector-1.17.0-py2.py3-none-any.whl (20 kB)
Collecting debtcollector>=1.2.0
Using cached debtcollector-1.16.0-py2.py3-none-any.whl (20 kB)
Collecting debtcollector>=1.2.0
Using cached debtcollector-1.15.0-py2.py3-none-any.whl (20 kB)
Collecting debtcollector>=1.2.0
Using cached debtcollector-1.14.0-py2.py3-none-any.whl (20 kB)
Collecting debtcollector>=1.2.0
Using cached debtcollector-1.13.0-py2.py3-none-any.whl (20 kB)
Collecting debtcollector>=1.2.0
Using cached debtcollector-1.12.0-py2.py3-none-any.whl (20 kB)
Collecting debtcollector>=1.2.0
Using cached debtcollector-1.11.0-py2.py3-none-any.whl (20 kB)
Processing /Users/pradyunsg/Library/Caches/pip/wheels/5f/fd/9e/b6cf5890494cb8ef0b5eaff72e5d55a70fb56316007d6dfe73/wrapt-1.12.1-cp38-cp38-macosx_10_14_x86_64.whl
Collecting requests<3,>=2.2.1
Using cached requests-2.23.0-py2.py3-none-any.whl (58 kB)
Collecting chardet<4,>=3.0.2
Using cached chardet-3.0.4-py2.py3-none-any.whl (133 kB)
Collecting idna<3,>=2.5
Using cached idna-2.9-py2.py3-none-any.whl (58 kB)
Collecting urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1
Using cached urllib3-1.25.9-py2.py3-none-any.whl (126 kB)
Collecting certifi>=2017.4.17
Using cached certifi-2020.4.5.1-py2.py3-none-any.whl (157 kB)
Collecting keystoneauth1>=3.4.0
Using cached keystoneauth1-4.0.0-py3-none-any.whl (310 kB)
Collecting keystoneauth1>=3.4.0
Using cached keystoneauth1-3.18.0-py2.py3-none-any.whl (310 kB)
Collecting keystoneauth1>=3.4.0
Using cached keystoneauth1-3.17.2-py2.py3-none-any.whl (309 kB)
Collecting keystoneauth1>=3.4.0
Using cached keystoneauth1-3.17.1-py2.py3-none-any.whl (309 kB)
Collecting keystoneauth1>=3.4.0
Using cached keystoneauth1-3.17.0-py2.py3-none-any.whl (309 kB)
Collecting keystoneauth1>=3.4.0
Using cached keystoneauth1-3.16.0-py2.py3-none-any.whl (305 kB)
Collecting keystoneauth1>=3.4.0
Using cached keystoneauth1-3.15.0-py2.py3-none-any.whl (304 kB)
Collecting keystoneauth1>=3.4.0
Using cached keystoneauth1-3.14.0-py2.py3-none-any.whl (302 kB)
Collecting keystoneauth1>=3.4.0
Using cached keystoneauth1-3.13.2-py2.py3-none-any.whl (302 kB)
Collecting keystoneauth1>=3.4.0
Using cached keystoneauth1-3.13.1-py2.py3-none-any.whl (302 kB)
Collecting keystoneauth1>=3.4.0
Using cached keystoneauth1-3.13.0-py2.py3-none-any.whl (302 kB)
Collecting keystoneauth1>=3.4.0
Using cached keystoneauth1-3.12.0-py2.py3-none-any.whl (299 kB)
Collecting keystoneauth1>=3.4.0
Using cached keystoneauth1-3.11.2-py2.py3-none-any.whl (299 kB)
Collecting keystoneauth1>=3.4.0
Using cached keystoneauth1-3.11.1-py2.py3-none-any.whl (298 kB)
Collecting keystoneauth1>=3.4.0
Using cached keystoneauth1-3.11.0-py2.py3-none-any.whl (290 kB)
Collecting keystoneauth1>=3.4.0
Using cached keystoneauth1-3.10.1-py2.py3-none-any.whl (297 kB)
Collecting keystoneauth1>=3.4.0
Using cached keystoneauth1-3.10.0-py2.py3-none-any.whl (289 kB)
Collecting keystoneauth1>=3.4.0
Using cached keystoneauth1-3.9.0-py2.py3-none-any.whl (289 kB)
Collecting keystoneauth1>=3.4.0
Using cached keystoneauth1-3.8.0-py2.py3-none-any.whl (288 kB)
Collecting keystoneauth1>=3.4.0
Using cached keystoneauth1-3.7.0-py2.py3-none-any.whl (288 kB)
Collecting keystoneauth1>=3.4.0
Using cached keystoneauth1-3.6.2-py2.py3-none-any.whl (287 kB)
Collecting keystoneauth1>=3.4.0
Using cached keystoneauth1-3.6.1-py2.py3-none-any.whl (287 kB)
Collecting keystoneauth1>=3.4.0
Using cached keystoneauth1-3.6.0-py2.py3-none-any.whl (287 kB)
Collecting keystoneauth1>=3.4.0
Using cached keystoneauth1-3.5.0-py2.py3-none-any.whl (282 kB)
Collecting keystoneauth1>=3.4.0
Using cached keystoneauth1-3.4.1-py2.py3-none-any.whl (289 kB)
Collecting keystoneauth1>=3.4.0
Using cached keystoneauth1-3.4.0-py2.py3-none-any.whl (282 kB)
Collecting keystoneauth1>=3.3.0
Using cached keystoneauth1-3.3.0-py2.py3-none-any.whl (279 kB)
Collecting keystoneauth1>=3.1.0
Using cached keystoneauth1-3.2.0-py2.py3-none-any.whl (274 kB)
Collecting keystoneauth1>=3.1.0
Using cached keystoneauth1-3.1.1-py2.py3-none-any.whl (277 kB)
Collecting keystoneauth1>=3.1.0
Using cached keystoneauth1-3.1.0-py2.py3-none-any.whl (271 kB)
Collecting keystoneauth1>=3.0.1
Using cached keystoneauth1-3.0.1-py2.py3-none-any.whl (270 kB)
Collecting keystoneauth1>=2.21.0
Using cached keystoneauth1-3.0.0-py2.py3-none-any.whl (270 kB)
Collecting keystoneauth1>=2.21.0
Using cached keystoneauth1-2.21.0-py2.py3-none-any.whl (247 kB)
Collecting keystoneauth1>=2.20.0
Using cached keystoneauth1-2.20.0-py2.py3-none-any.whl (247 kB)
Collecting keystoneauth1>=2.18.0
Using cached keystoneauth1-2.19.0-py2.py3-none-any.whl (244 kB)
Collecting keystoneauth1>=2.18.0
Using cached keystoneauth1-2.18.0-py2.py3-none-any.whl (241 kB)
Collecting oslo.i18n>=1.5.0
Using cached oslo.i18n-4.0.1-py3-none-any.whl (47 kB)
Collecting oslo.i18n>=1.5.0
Using cached oslo.i18n-4.0.0-py3-none-any.whl (47 kB)
Collecting oslo.i18n>=1.5.0
Using cached oslo.i18n-3.25.1-py2.py3-none-any.whl (47 kB)
Collecting oslo.i18n>=1.5.0
Using cached oslo.i18n-3.25.0-py2.py3-none-any.whl (47 kB)
Collecting oslo.i18n>=1.5.0
Using cached oslo.i18n-3.24.0-py2.py3-none-any.whl (46 kB)
Collecting oslo.i18n>=1.5.0
Using cached oslo.i18n-3.23.1-py2.py3-none-any.whl (46 kB)
Collecting oslo.i18n>=1.5.0
Using cached oslo.i18n-3.23.0-py2.py3-none-any.whl (46 kB)
Collecting oslo.i18n>=1.5.0
Using cached oslo.i18n-3.22.1-py2.py3-none-any.whl (40 kB)
Collecting oslo.i18n>=1.5.0
Using cached oslo.i18n-3.22.0-py2.py3-none-any.whl (40 kB)
Collecting oslo.i18n>=1.5.0
Using cached oslo.i18n-3.21.0-py2.py3-none-any.whl (40 kB)
Collecting oslo.i18n>=1.5.0
Using cached oslo.i18n-3.20.0-py2.py3-none-any.whl (42 kB)
Collecting oslo.i18n>=1.5.0
Using cached oslo.i18n-3.19.0-py2.py3-none-any.whl (42 kB)
Collecting oslo.i18n>=1.5.0
Using cached oslo.i18n-3.18.0-py2.py3-none-any.whl (42 kB)
Collecting oslo.i18n>=1.5.0
Using cached oslo.i18n-3.17.2-py2.py3-none-any.whl (45 kB)
Collecting oslo.i18n>=1.5.0
Using cached oslo.i18n-3.17.1-py2.py3-none-any.whl (42 kB)
Collecting oslo.i18n>=1.5.0
Using cached oslo.i18n-3.17.0-py2.py3-none-any.whl (42 kB)
Collecting oslo.i18n>=1.5.0
Using cached oslo.i18n-3.16.0-py2.py3-none-any.whl (42 kB)
Collecting oslo.i18n>=1.5.0
Using cached oslo.i18n-3.15.3-py2.py3-none-any.whl (42 kB)
Collecting oslo.i18n>=1.5.0
Using cached oslo.i18n-3.15.2-py2.py3-none-any.whl (42 kB)
Collecting oslo.i18n>=1.5.0
Using cached oslo.i18n-3.15.1-py2.py3-none-any.whl (42 kB)
Collecting oslo.i18n>=1.5.0
Using cached oslo.i18n-3.15.0-py2.py3-none-any.whl (42 kB)
Collecting oslo.i18n>=1.5.0
Using cached oslo.i18n-3.14.0-py2.py3-none-any.whl (42 kB)
Collecting oslo.i18n>=1.5.0
Using cached oslo.i18n-3.13.0-py2.py3-none-any.whl (41 kB)
Collecting oslo.i18n>=1.5.0
Using cached oslo.i18n-3.12.0-py2.py3-none-any.whl (41 kB)
Collecting oslo.serialization>=1.4.0
Using cached oslo.serialization-3.1.1-py3-none-any.whl (28 kB)
Collecting oslo.serialization>=1.4.0
Using cached oslo.serialization-3.1.0-py3-none-any.whl (28 kB)
Collecting oslo.serialization>=1.4.0
Using cached oslo.serialization-3.0.0-py3-none-any.whl (28 kB)
Collecting oslo.serialization>=1.4.0
Using cached oslo.serialization-2.29.2-py2.py3-none-any.whl (28 kB)
Collecting oslo.serialization>=1.4.0
Using cached oslo.serialization-2.29.1-py2.py3-none-any.whl (28 kB)
Collecting oslo.serialization>=1.4.0
Using cached oslo.serialization-2.29.0-py2.py3-none-any.whl (28 kB)
Collecting oslo.serialization>=1.4.0
Using cached oslo.serialization-2.28.2-py2.py3-none-any.whl (26 kB)
Collecting oslo.serialization>=1.4.0
Using cached oslo.serialization-2.28.1-py2.py3-none-any.whl (20 kB)
Collecting oslo.serialization>=1.4.0
Using cached oslo.serialization-2.28.0-py2.py3-none-any.whl (20 kB)
Collecting oslo.serialization>=1.4.0
Using cached oslo.serialization-2.27.0-py2.py3-none-any.whl (20 kB)
Collecting oslo.serialization>=1.4.0
Using cached oslo.serialization-2.26.0-py2.py3-none-any.whl (20 kB)
Collecting oslo.serialization>=1.4.0
Using cached oslo.serialization-2.25.0-py2.py3-none-any.whl (22 kB)
Collecting oslo.serialization>=1.4.0
Using cached oslo.serialization-2.24.0-py2.py3-none-any.whl (22 kB)
Collecting oslo.serialization>=1.4.0
Using cached oslo.serialization-2.23.0-py2.py3-none-any.whl (22 kB)
Collecting oslo.serialization>=1.4.0
Using cached oslo.serialization-2.22.0-py2.py3-none-any.whl (22 kB)
Collecting oslo.serialization>=1.4.0
Using cached oslo.serialization-2.21.2-py2.py3-none-any.whl (22 kB)
Collecting oslo.serialization>=1.4.0
Using cached oslo.serialization-2.21.1-py2.py3-none-any.whl (22 kB)
Collecting oslo.serialization>=1.4.0
Using cached oslo.serialization-2.21.0-py2.py3-none-any.whl (21 kB)
Collecting oslo.serialization>=1.4.0
Using cached oslo.serialization-2.20.3-py2.py3-none-any.whl (25 kB)
Collecting oslo.serialization>=1.4.0
Using cached oslo.serialization-2.20.2-py2.py3-none-any.whl (21 kB)
Collecting oslo.serialization>=1.4.0
Using cached oslo.serialization-2.20.1-py2.py3-none-any.whl (21 kB)
Collecting oslo.serialization>=1.4.0
Using cached oslo.serialization-2.20.0-py2.py3-none-any.whl (21 kB)
Collecting oslo.serialization>=1.4.0
Using cached oslo.serialization-2.19.1-py2.py3-none-any.whl (21 kB)
Collecting oslo.serialization>=1.4.0
Using cached oslo.serialization-2.19.0-py2.py3-none-any.whl (21 kB)
Collecting oslo.serialization>=1.4.0
Using cached oslo.serialization-2.18.0-py2.py3-none-any.whl (21 kB)
Collecting oslo.serialization>=1.4.0
Using cached oslo.serialization-2.17.0-py2.py3-none-any.whl (21 kB)
Collecting oslo.serialization>=1.4.0
Using cached oslo.serialization-2.16.1-py2.py3-none-any.whl (21 kB)
Collecting msgpack-python>=0.4.0
Using cached msgpack-python-0.5.6.tar.gz (138 kB)
Collecting oslo.utils>=2.0.0
Using cached oslo.utils-4.1.1-py3-none-any.whl (100 kB)
Requirement already satisfied: pyparsing>=2.1.0 in /Users/pradyunsg/.virtualenvs/pip/lib/python3.8/site-packages (from oslo.utils>=2.0.0->python-novaclient==2.27.0->pyrax==1.9.8) (2.4.3)
Collecting oslo.utils>=2.0.0
Using cached oslo.utils-4.1.0-py3-none-any.whl (100 kB)
Requirement already satisfied: pyparsing>=2.1.0 in /Users/pradyunsg/.virtualenvs/pip/lib/python3.8/site-packages (from oslo.utils>=2.0.0->python-novaclient==2.27.0->pyrax==1.9.8) (2.4.3)
Collecting oslo.utils>=2.0.0
Using cached oslo.utils-4.0.1-py3-none-any.whl (100 kB)
Requirement already satisfied: pyparsing>=2.1.0 in /Users/pradyunsg/.virtualenvs/pip/lib/python3.8/site-packages (from oslo.utils>=2.0.0->python-novaclient==2.27.0->pyrax==1.9.8) (2.4.3)
Collecting oslo.utils>=2.0.0
Using cached oslo.utils-4.0.0-py2.py3-none-any.whl (100 kB)
Requirement already satisfied: pyparsing>=2.1.0 in /Users/pradyunsg/.virtualenvs/pip/lib/python3.8/site-packages (from oslo.utils>=2.0.0->python-novaclient==2.27.0->pyrax==1.9.8) (2.4.3)
Collecting oslo.utils>=2.0.0
Using cached oslo.utils-3.42.1-py2.py3-none-any.whl (100 kB)
Requirement already satisfied: pyparsing>=2.1.0 in /Users/pradyunsg/.virtualenvs/pip/lib/python3.8/site-packages (from oslo.utils>=2.0.0->python-novaclient==2.27.0->pyrax==1.9.8) (2.4.3)
Collecting oslo.utils>=2.0.0
Using cached oslo.utils-3.42.0-py2.py3-none-any.whl (99 kB)
Requirement already satisfied: pyparsing>=2.1.0 in /Users/pradyunsg/.virtualenvs/pip/lib/python3.8/site-packages (from oslo.utils>=2.0.0->python-novaclient==2.27.0->pyrax==1.9.8) (2.4.3)
Collecting oslo.utils>=2.0.0
Using cached oslo.utils-3.41.5-py2.py3-none-any.whl (100 kB)
Requirement already satisfied: pyparsing>=2.1.0 in /Users/pradyunsg/.virtualenvs/pip/lib/python3.8/site-packages (from oslo.utils>=2.0.0->python-novaclient==2.27.0->pyrax==1.9.8) (2.4.3)
Collecting oslo.utils>=2.0.0
Using cached oslo.utils-3.41.4-py2.py3-none-any.whl (100 kB)
Requirement already satisfied: pyparsing>=2.1.0 in /Users/pradyunsg/.virtualenvs/pip/lib/python3.8/site-packages (from oslo.utils>=2.0.0->python-novaclient==2.27.0->pyrax==1.9.8) (2.4.3)
Collecting oslo.utils>=2.0.0
Using cached oslo.utils-3.41.3-py2.py3-none-any.whl (99 kB)
Requirement already satisfied: pyparsing>=2.1.0 in /Users/pradyunsg/.virtualenvs/pip/lib/python3.8/site-packages (from oslo.utils>=2.0.0->python-novaclient==2.27.0->pyrax==1.9.8) (2.4.3)
Collecting oslo.utils>=2.0.0
Using cached oslo.utils-3.41.2-py2.py3-none-any.whl (99 kB)
Requirement already satisfied: pyparsing>=2.1.0 in /Users/pradyunsg/.virtualenvs/pip/lib/python3.8/site-packages (from oslo.utils>=2.0.0->python-novaclient==2.27.0->pyrax==1.9.8) (2.4.3)
Collecting oslo.utils>=2.0.0
Using cached oslo.utils-3.41.1-py2.py3-none-any.whl (99 kB)
Requirement already satisfied: pyparsing>=2.1.0 in /Users/pradyunsg/.virtualenvs/pip/lib/python3.8/site-packages (from oslo.utils>=2.0.0->python-novaclient==2.27.0->pyrax==1.9.8) (2.4.3)
Collecting oslo.utils>=2.0.0
Using cached oslo.utils-3.41.0-py2.py3-none-any.whl (99 kB)
Requirement already satisfied: pyparsing>=2.1.0 in /Users/pradyunsg/.virtualenvs/pip/lib/python3.8/site-packages (from oslo.utils>=2.0.0->python-novaclient==2.27.0->pyrax==1.9.8) (2.4.3)
Collecting oslo.utils>=2.0.0
Using cached oslo.utils-3.40.6-py2.py3-none-any.whl (100 kB)
Requirement already satisfied: pyparsing>=2.1.0 in /Users/pradyunsg/.virtualenvs/pip/lib/python3.8/site-packages (from oslo.utils>=2.0.0->python-novaclient==2.27.0->pyrax==1.9.8) (2.4.3)
Collecting oslo.utils>=2.0.0
Using cached oslo.utils-3.40.5-py2.py3-none-any.whl (99 kB)
Requirement already satisfied: pyparsing>=2.1.0 in /Users/pradyunsg/.virtualenvs/pip/lib/python3.8/site-packages (from oslo.utils>=2.0.0->python-novaclient==2.27.0->pyrax==1.9.8) (2.4.3)
Collecting oslo.utils>=2.0.0
Using cached oslo.utils-3.40.4-py2.py3-none-any.whl (99 kB)
Requirement already satisfied: pyparsing>=2.1.0 in /Users/pradyunsg/.virtualenvs/pip/lib/python3.8/site-packages (from oslo.utils>=2.0.0->python-novaclient==2.27.0->pyrax==1.9.8) (2.4.3)
Collecting oslo.utils>=2.0.0
Using cached oslo.utils-3.40.3-py2.py3-none-any.whl (99 kB)
Requirement already satisfied: pyparsing>=2.1.0 in /Users/pradyunsg/.virtualenvs/pip/lib/python3.8/site-packages (from oslo.utils>=2.0.0->python-novaclient==2.27.0->pyrax==1.9.8) (2.4.3)
Collecting oslo.utils>=2.0.0
Using cached oslo.utils-3.40.2-py2.py3-none-any.whl (99 kB)
Requirement already satisfied: pyparsing>=2.1.0 in /Users/pradyunsg/.virtualenvs/pip/lib/python3.8/site-packages (from oslo.utils>=2.0.0->python-novaclient==2.27.0->pyrax==1.9.8) (2.4.3)
Collecting oslo.utils>=2.0.0
Using cached oslo.utils-3.40.1-py2.py3-none-any.whl (99 kB)
Requirement already satisfied: pyparsing>=2.1.0 in /Users/pradyunsg/.virtualenvs/pip/lib/python3.8/site-packages (from oslo.utils>=2.0.0->python-novaclient==2.27.0->pyrax==1.9.8) (2.4.3)
Collecting oslo.utils>=2.0.0
Using cached oslo.utils-3.40.0-py2.py3-none-any.whl (99 kB)
Requirement already satisfied: pyparsing>=2.1.0 in /Users/pradyunsg/.virtualenvs/pip/lib/python3.8/site-packages (from oslo.utils>=2.0.0->python-novaclient==2.27.0->pyrax==1.9.8) (2.4.3)
Collecting oslo.utils>=2.0.0
Using cached oslo.utils-3.39.1-py2.py3-none-any.whl (98 kB)
Requirement already satisfied: pyparsing>=2.1.0 in /Users/pradyunsg/.virtualenvs/pip/lib/python3.8/site-packages (from oslo.utils>=2.0.0->python-novaclient==2.27.0->pyrax==1.9.8) (2.4.3)
Collecting oslo.utils>=2.0.0
Using cached oslo.utils-3.39.0-py2.py3-none-any.whl (98 kB)
Requirement already satisfied: pyparsing>=2.1.0 in /Users/pradyunsg/.virtualenvs/pip/lib/python3.8/site-packages (from oslo.utils>=2.0.0->python-novaclient==2.27.0->pyrax==1.9.8) (2.4.3)
Collecting oslo.utils>=2.0.0
Using cached oslo.utils-3.38.0-py2.py3-none-any.whl (98 kB)
Requirement already satisfied: pyparsing>=2.1.0 in /Users/pradyunsg/.virtualenvs/pip/lib/python3.8/site-packages (from oslo.utils>=2.0.0->python-novaclient==2.27.0->pyrax==1.9.8) (2.4.3)
Collecting oslo.utils>=2.0.0
Using cached oslo.utils-3.37.1-py2.py3-none-any.whl (98 kB)
Requirement already satisfied: pyparsing>=2.1.0 in /Users/pradyunsg/.virtualenvs/pip/lib/python3.8/site-packages (from oslo.utils>=2.0.0->python-novaclient==2.27.0->pyrax==1.9.8) (2.4.3)
Collecting oslo.utils>=2.0.0
Using cached oslo.utils-3.37.0-py2.py3-none-any.whl (92 kB)
Requirement already satisfied: pyparsing>=2.1.0 in /Users/pradyunsg/.virtualenvs/pip/lib/python3.8/site-packages (from oslo.utils>=2.0.0->python-novaclient==2.27.0->pyrax==1.9.8) (2.4.3)
Collecting oslo.utils>=2.0.0
Using cached oslo.utils-3.36.5-py2.py3-none-any.whl (98 kB)
Requirement already satisfied: pyparsing>=2.1.0 in /Users/pradyunsg/.virtualenvs/pip/lib/python3.8/site-packages (from oslo.utils>=2.0.0->python-novaclient==2.27.0->pyrax==1.9.8) (2.4.3)
Collecting oslo.utils>=2.0.0
Using cached oslo.utils-3.36.4-py2.py3-none-any.whl (91 kB)
Requirement already satisfied: pyparsing>=2.1.0 in /Users/pradyunsg/.virtualenvs/pip/lib/python3.8/site-packages (from oslo.utils>=2.0.0->python-novaclient==2.27.0->pyrax==1.9.8) (2.4.3)
Collecting oslo.utils>=2.0.0
Using cached oslo.utils-3.36.3-py2.py3-none-any.whl (91 kB)
Requirement already satisfied: pyparsing>=2.1.0 in /Users/pradyunsg/.virtualenvs/pip/lib/python3.8/site-packages (from oslo.utils>=2.0.0->python-novaclient==2.27.0->pyrax==1.9.8) (2.4.3)
Collecting oslo.utils>=2.0.0
Using cached oslo.utils-3.36.2-py2.py3-none-any.whl (91 kB)
Requirement already satisfied: pyparsing>=2.1.0 in /Users/pradyunsg/.virtualenvs/pip/lib/python3.8/site-packages (from oslo.utils>=2.0.0->python-novaclient==2.27.0->pyrax==1.9.8) (2.4.3)
Collecting oslo.utils>=2.0.0
Using cached oslo.utils-3.36.1-py2.py3-none-any.whl (91 kB)
Requirement already satisfied: pyparsing>=2.1.0 in /Users/pradyunsg/.virtualenvs/pip/lib/python3.8/site-packages (from oslo.utils>=2.0.0->python-novaclient==2.27.0->pyrax==1.9.8) (2.4.3)
Collecting oslo.utils>=2.0.0
Using cached oslo.utils-3.36.0-py2.py3-none-any.whl (92 kB)
Requirement already satisfied: pyparsing>=2.1.0 in /Users/pradyunsg/.virtualenvs/pip/lib/python3.8/site-packages (from oslo.utils>=2.0.0->python-novaclient==2.27.0->pyrax==1.9.8) (2.4.3)
Collecting oslo.utils>=2.0.0
Using cached oslo.utils-3.35.1-py2.py3-none-any.whl (90 kB)
Requirement already satisfied: pyparsing>=2.1.0 in /Users/pradyunsg/.virtualenvs/pip/lib/python3.8/site-packages (from oslo.utils>=2.0.0->python-novaclient==2.27.0->pyrax==1.9.8) (2.4.3)
Collecting oslo.utils>=2.0.0
Using cached oslo.utils-3.35.0-py2.py3-none-any.whl (91 kB)
Requirement already satisfied: pyparsing>=2.1.0 in /Users/pradyunsg/.virtualenvs/pip/lib/python3.8/site-packages (from oslo.utils>=2.0.0->python-novaclient==2.27.0->pyrax==1.9.8) (2.4.3)
Collecting oslo.utils>=2.0.0
Using cached oslo.utils-3.34.0-py2.py3-none-any.whl (91 kB)
Requirement already satisfied: pyparsing>=2.1.0 in /Users/pradyunsg/.virtualenvs/pip/lib/python3.8/site-packages (from oslo.utils>=2.0.0->python-novaclient==2.27.0->pyrax==1.9.8) (2.4.3)
Collecting oslo.utils>=2.0.0
Using cached oslo.utils-3.33.0-py2.py3-none-any.whl (90 kB)
Requirement already satisfied: pyparsing>=2.1.0 in /Users/pradyunsg/.virtualenvs/pip/lib/python3.8/site-packages (from oslo.utils>=2.0.0->python-novaclient==2.27.0->pyrax==1.9.8) (2.4.3)
Collecting oslo.utils>=2.0.0
Using cached oslo.utils-3.32.0-py2.py3-none-any.whl (89 kB)
Requirement already satisfied: pyparsing>=2.1.0 in /Users/pradyunsg/.virtualenvs/pip/lib/python3.8/site-packages (from oslo.utils>=2.0.0->python-novaclient==2.27.0->pyrax==1.9.8) (2.4.3)
Collecting oslo.utils>=2.0.0
Using cached oslo.utils-3.31.0-py2.py3-none-any.whl (89 kB)
Requirement already satisfied: pyparsing>=2.1.0 in /Users/pradyunsg/.virtualenvs/pip/lib/python3.8/site-packages (from oslo.utils>=2.0.0->python-novaclient==2.27.0->pyrax==1.9.8) (2.4.3)
Collecting oslo.utils>=2.0.0
Using cached oslo.utils-3.30.0-py2.py3-none-any.whl (89 kB)
Requirement already satisfied: pyparsing>=2.1.0 in /Users/pradyunsg/.virtualenvs/pip/lib/python3.8/site-packages (from oslo.utils>=2.0.0->python-novaclient==2.27.0->pyrax==1.9.8) (2.4.3)
Collecting oslo.utils>=2.0.0
Using cached oslo.utils-3.29.0-py2.py3-none-any.whl (89 kB)
Requirement already satisfied: pyparsing>=2.1.0 in /Users/pradyunsg/.virtualenvs/pip/lib/python3.8/site-packages (from oslo.utils>=2.0.0->python-novaclient==2.27.0->pyrax==1.9.8) (2.4.3)
Collecting oslo.utils>=2.0.0
Using cached oslo.utils-3.28.4-py2.py3-none-any.whl (102 kB)
Requirement already satisfied: pyparsing>=2.1.0 in /Users/pradyunsg/.virtualenvs/pip/lib/python3.8/site-packages (from oslo.utils>=2.0.0->python-novaclient==2.27.0->pyrax==1.9.8) (2.4.3)
Collecting oslo.utils>=2.0.0
Using cached oslo.utils-3.28.3-py2.py3-none-any.whl (95 kB)
Requirement already satisfied: pyparsing>=2.1.0 in /Users/pradyunsg/.virtualenvs/pip/lib/python3.8/site-packages (from oslo.utils>=2.0.0->python-novaclient==2.27.0->pyrax==1.9.8) (2.4.3)
Collecting oslo.utils>=2.0.0
Using cached oslo.utils-3.28.2-py2.py3-none-any.whl (97 kB)
Requirement already satisfied: pyparsing>=2.1.0 in /Users/pradyunsg/.virtualenvs/pip/lib/python3.8/site-packages (from oslo.utils>=2.0.0->python-novaclient==2.27.0->pyrax==1.9.8) (2.4.3)
Collecting oslo.utils>=2.0.0
Using cached oslo.utils-3.28.1-py2.py3-none-any.whl (97 kB)
Requirement already satisfied: pyparsing>=2.1.0 in /Users/pradyunsg/.virtualenvs/pip/lib/python3.8/site-packages (from oslo.utils>=2.0.0->python-novaclient==2.27.0->pyrax==1.9.8) (2.4.3)
Collecting oslo.utils>=2.0.0
Using cached oslo.utils-3.28.0-py2.py3-none-any.whl (97 kB)
Requirement already satisfied: pyparsing>=2.1.0 in /Users/pradyunsg/.virtualenvs/pip/lib/python3.8/site-packages (from oslo.utils>=2.0.0->python-novaclient==2.27.0->pyrax==1.9.8) (2.4.3)
Collecting oslo.utils>=2.0.0
Using cached oslo.utils-3.27.0-py2.py3-none-any.whl (97 kB)
Requirement already satisfied: pyparsing>=2.1.0 in /Users/pradyunsg/.virtualenvs/pip/lib/python3.8/site-packages (from oslo.utils>=2.0.0->python-novaclient==2.27.0->pyrax==1.9.8) (2.4.3)
Collecting oslo.utils>=2.0.0
Using cached oslo.utils-3.26.0-py2.py3-none-any.whl (97 kB)
Requirement already satisfied: pyparsing>=2.1.0 in /Users/pradyunsg/.virtualenvs/pip/lib/python3.8/site-packages (from oslo.utils>=2.0.0->python-novaclient==2.27.0->pyrax==1.9.8) (2.4.3)
Collecting oslo.utils>=2.0.0
Using cached oslo.utils-3.25.1-py2.py3-none-any.whl (97 kB)
Requirement already satisfied: pyparsing>=2.1.0 in /Users/pradyunsg/.virtualenvs/pip/lib/python3.8/site-packages (from oslo.utils>=2.0.0->python-novaclient==2.27.0->pyrax==1.9.8) (2.4.3)
Collecting oslo.utils>=2.0.0
Using cached oslo.utils-3.25.0-py2.py3-none-any.whl (97 kB)
Collecting oslo.utils>=2.0.0
Using cached oslo.utils-3.24.0-py2.py3-none-any.whl (97 kB)
Collecting oslo.utils>=2.0.0
Using cached oslo.utils-3.23.0-py2.py3-none-any.whl (97 kB)
Collecting oslo.utils>=2.0.0
Using cached oslo.utils-3.22.3-py2.py3-none-any.whl (95 kB)
Requirement already satisfied: pyparsing>=2.1.0 in /Users/pradyunsg/.virtualenvs/pip/lib/python3.8/site-packages (from oslo.utils>=2.0.0->python-novaclient==2.27.0->pyrax==1.9.8) (2.4.3)
Collecting netaddr>=0.7.18
Using cached netaddr-0.7.19-py2.py3-none-any.whl (1.6 MB)
Processing /Users/pradyunsg/Library/Caches/pip/wheels/9b/51/d5/d4682860392414da28ba3c5ffac0243983399b868a9cced6df/netifaces-0.10.9-cp38-cp38-macosx_10_14_x86_64.whl
Collecting monotonic>=0.6
Using cached monotonic-1.5-py2.py3-none-any.whl (5.3 kB)
Processing /Users/pradyunsg/Library/Caches/pip/wheels/79/a1/9f/a28ec96c5663fca58b4c735c54b202b4ae08fc4f7624bddb06/simplejson-3.17.0-cp38-cp38-macosx_10_14_x86_64.whl
Collecting oslo.config>=5.2.0
Using cached oslo.config-8.0.2-py3-none-any.whl (125 kB)
Collecting rfc3986>=1.2.0
Using cached rfc3986-1.4.0-py2.py3-none-any.whl (31 kB)
Processing /Users/pradyunsg/Library/Caches/pip/wheels/13/90/db/290ab3a34f2ef0b5a0f89235dc2d40fea83e77de84ed2dc05c/PyYAML-5.3.1-cp38-cp38-macosx_10_14_x86_64.whl
Collecting PyYAML>=3.12
Using cached PyYAML-5.3.tar.gz (268 kB)
Collecting PyYAML>=3.12
ERROR: pip can't proceed with requirements 'PyYAML>=3.12 from https://files.pythonhosted.org/packages/8d/c9/e5be955a117a1ac548cdd31e37e8fd7b02ce987f9655f5c7563c656d5dcb/PyYAML-5.2.tar.gz#sha256=c0ee8eca2c582d29c3c2ec6e2c4f703d1b7f1fb10bc72317355a746057e7346c (from oslo.serialization>=1.4.0->python-novaclient==2.27.0->pyrax==1.9.8)' due to a pre-existing build directory (/private/var/folders/4d/bt0_xfx56bjfmmt2bv3r5_qh0000gn/T/pip-install-bd2tvyfz/PyYAML). This is likely due to a previous installation that failed. pip is being responsible and not assuming it can delete this. Please delete it and try again.
Note that the failure at the end is something that'll be fixed by #8283; but the point of this discussion is all the output prior to it. https://github.com/pypa/pip/issues/8294 is a well formed report of it.
Some thoughts:
Can we have a single progress bar line that gets re-used for each download in turn?
I wonder what you mean by this, is it
The progress bar, IMHO, is pretty much similar to the transparent washing machine lid, while it might be useful to track the progress, for many it's even more important because it makes the waiting time more enjoyable.
Knowing which packages we used wheels for and which needed to be built from source is (occasionally) useful to me
I'd like to have this too, and this was mentioned in https://github.com/pypa/pip/issues/7815#issuecomment-605455983 as needing refactoring I think.
A global progress bar tracking all packages to be downloaded. I imagine that the progress would not only go up but also go down so I think it is not the case.
This would definitely not be what we do. :)
The progress bar, IMHO, is pretty much similar to the transparent washing machine lid, while it might be useful to track the progress, for many it's even more important because it makes the waiting time more enjoyable.
I love this comment :-)
Similar behavior to what we have right now, but the bar stay in one place (i.e. 0% → 100% → 0% → ...), or
This is the option I had in mind.
@pfmoore, if we do that and not using curses or the alike, can the user tell what's been downloaded and what's not, since we'll be limited to one single line I think. Additionally, I believe that it is not possible to fit both the filename and the progress bar within an average console line. Although I'm not entirely sure if it is a good idea to print entire wheel filenames, which are especially long and contain more than enough information (e.g. do I as an user need to care if it's manylinux1 or manylinux2014?).
@pradyunsg, is it correct that the expected behavior is at most (in case the more compact output discussed above turns out to be not so doable) something like
Collecting foo<42
Using cached foo-41...
Using cached foo-40...
Downloading foo-40...
<progress bar>
Downloading foo-40...
...
I also wonder if it is intuitive (to new users) that resolution is happening behind the scene and that the candidates are being rejected that the next one is being downloaded, since the mocked up output above looks kind of strange.
I also wonder if it is intuitive (to new users) that resolution is happening behind the scene and that the candidates are being rejected that the next one is being downloaded, since the mocked up output above looks kind of strange.
Agreed, that's why I sort of wonder whether any of this output is worthwhile. But I'm mostly just speculating on what others might like, to be honest. It matters very little to me personally.
I suggest we "look outward" at Rust/npm/brew/poetry etc, to figure out what they show during dependency resolution.
is it correct that the expected behavior is at most
I have no idea what a good answer is. If everyone left it to me, I'd just orient the entire output around the resolver's state, and completely redo pip's output while I'm at it. :)
Resolving dependencies...
adding: pyrax==1.9.8
working on: pyrax==1.9.8
fetching: pyrax-1.9.8-py2.py3-none-any.whl
[download bar, that gets replaced by the next line after download]
fetched: pyrax-1.9.8-py2.py3-none-any.whl (346 kB, downloaded in 12 seconds)
selected: pyrax 1.9.8
adding: six (>=1.5.2)
adding: python-novaclient (>=2.13.0)
adding: mock
adding: requests (>=2.2.1)
adding: keyring
adding: python-swiftclient (>=1.5.0)
adding: rackspace-novaclient
working on: six (>=1.5.2)
already installed: six 1.14.0
selected: six 1.14.0
working on: python-novaclient (>=2.13.0)
fetching: python_novaclient-2.27.0-py2.py3-none-any.whl
fetched: python_novaclient-2.27.0-py2.py3-none-any.whl (312 kB, cached)
selected: python-novaclient 2.27.0
adding: pbr (>=2.0.0,<2.1.0)
adding: keystoneauth1 (>=3.5.0)
adding: iso8601 (>=0.1.11)
adding: oslo.i18n (>=3.15.3)
adding: oslo.serialization (>=2.18.0,<2.19.1)
adding: oslo.utils (>=3.33.0)
adding: PrettyTable (>=0.7.2,<0.8)
adding: simplejson (>=3.5.1)
adding: six (>=1.10.0)
adding: Babel (>=2.3.4,<2.4.0)
[snip]
working on: PyYAML (>=3.12)
fetching: PyYAML-5.3.1.tar.gz (NNN kB, cached)
generating metadata... failed!
rejecting: PyYAML 5.3.1 (due to failure to generate metadata)
fetching: PyYAML-5.3.tar.gz (NNN kB, cached)
generating metadata... failed!
rejecting: PyYAML 5.3 (due to failure to generate metadata)
fetching: PyYAML-5.2.tar.gz (NNN kB, cached)
generating metadata... done!
selected: PyYAML 5.3
[snip]
This is semi-inspired by poetry's -vv
output.
What does Poetry’s output look like on backtracking? That’s the thing generating output for us right now, and the above example does not have that.
1: fact: urllib3 (1.25.9) requires Python >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4
1: derived: not urllib3 (1.25.9)
1: fact: urllib3 (1.25.8) requires Python >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4
1: derived: not urllib3 (1.25.8)
1: fact: urllib3 (1.25.7) requires Python >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4
1: derived: not urllib3 (1.25.7)
1: fact: urllib3 (1.25.6) requires Python >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4
1: derived: not urllib3 (1.25.6)
1: fact: urllib3 (1.25.5) requires Python >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4
1: derived: not urllib3 (1.25.5)
1: fact: urllib3 (1.25.4) requires Python >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4
1: derived: not urllib3 (1.25.4)
1: fact: urllib3 (1.25.3) requires Python >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4
1: derived: not urllib3 (1.25.3)
1: fact: urllib3 (1.25.2) requires Python >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4
1: derived: not urllib3 (1.25.2)
1: fact: urllib3 (1.24.3) requires Python >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4
1: derived: not urllib3 (1.24.3)
1: fact: urllib3 (1.24.2) requires Python >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4
1: derived: not urllib3 (1.24.2)
1: fact: urllib3 (1.24.1) requires Python >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4
1: derived: not urllib3 (1.24.1)
1: fact: urllib3 (1.24) requires Python >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4
1: derived: not urllib3 (1.24)
1: fact: urllib3 (1.23) requires Python >=2.6, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4
1: derived: not urllib3 (1.23)
I wouldn’t say that’s meaningfully different than pip’s current behaviour 🙁
To be clear, poetry's default output is... to not show anything except a timer. :)
Coming from https://github.com/pypa/pip/pull/8467#issuecomment-648717032, if the dependency information is retrieved differently, do we still want to print e.g. Collecting spam 1.0 (I suggest going for the concrete version)? As an user, what I really want here is to have another logging level, where it is not as cluttered as -v
and print extra and occasionally useful (e.g. in case the resolution takes too long) information like this and by default replace the entire thing by Resolving dependencies.
@pradyunsg @uranusjr @pfmoore - have you made a decision on this? Do you need UX to make a recommendation/specification here?
I think our decision here (through inaction, time constraints, etc) is to leave the status-quo behavior for now.
Recommendations and inputs would certainly be welcome. This is closely related to #8453 (arguably, a single case whereas #8453 is the general "umbrella" that covers this), so I imagine we'd likely tackle this as part of working on that.
Collecting python-keystoneclient>=1.6.0
Using cached python_keystoneclient-4.1.0-py3-none-any.whl (390 kB)
Collecting python-keystoneclient>=1.6.0
Using cached python_keystoneclient-4.0.0-py3-none-any.whl (397 kB)
Collecting python-keystoneclient>=1.6.0
Using cached python_keystoneclient-3.22.0-py2.py3-none-any.whl (397 kB)
Collecting python-keystoneclient>=1.6.0
Using cached python_keystoneclient-3.21.0-py2.py3-none-any.whl (395 kB)
Collecting python-keystoneclient>=1.6.0
Using cached python_keystoneclient-3.20.0-py2.py3-none-any.whl (394 kB)
Collecting python-keystoneclient>=1.6.0
Using cached python_keystoneclient-3.19.1-py2.py3-none-any.whl (394 kB)
Collecting python-keystoneclient>=1.6.0
Using cached python_keystoneclient-3.19.0-py2.py3-none-any.whl (394 kB)
Collecting python-keystoneclient>=1.6.0
Using cached python_keystoneclient-3.18.0-py2.py3-none-any.whl (393 kB)
Collecting python-keystoneclient>=1.6.0
Using cached python_keystoneclient-3.17.0-py2.py3-none-any.whl (382 kB)
Collecting python-keystoneclient>=1.6.0
Using cached python_keystoneclient-3.16.0-py2.py3-none-any.whl (376 kB)
Collecting python-keystoneclient>=1.6.0
Using cached python_keystoneclient-3.15.1-py2.py3-none-any.whl (385 kB)
Collecting python-keystoneclient>=1.6.0
Using cached python_keystoneclient-3.15.0-py2.py3-none-any.whl (378 kB)
Collecting python-keystoneclient>=1.6.0
Using cached python_keystoneclient-3.14.0-py2.py3-none-any.whl (372 kB)
Collecting python-keystoneclient>=1.6.0
Using cached python_keystoneclient-3.13.1-py2.py3-none-any.whl (381 kB)
Collecting python-keystoneclient>=1.6.0
Using cached python_keystoneclient-3.13.0-py2.py3-none-any.whl (374 kB)
Becomes:
Collecting python-keystoneclient>=1.6.0
Using cached python_keystoneclient-4.1.0-py3-none-any.whl (390 kB)
Using cached python_keystoneclient-4.0.0-py3-none-any.whl (397 kB)
Using cached python_keystoneclient-3.22.0-py2.py3-none-any.whl (397 kB)
Using cached python_keystoneclient-3.21.0-py2.py3-none-any.whl (395 kB)
Using cached python_keystoneclient-3.20.0-py2.py3-none-any.whl (394 kB)
Using cached python_keystoneclient-3.19.1-py2.py3-none-any.whl (394 kB)
Using cached python_keystoneclient-3.19.0-py2.py3-none-any.whl (394 kB)
Using cached python_keystoneclient-3.18.0-py2.py3-none-any.whl (393 kB)
Using cached python_keystoneclient-3.17.0-py2.py3-none-any.whl (382 kB)
Using cached python_keystoneclient-3.16.0-py2.py3-none-any.whl (376 kB)
Using cached python_keystoneclient-3.15.1-py2.py3-none-any.whl (385 kB)
Using cached python_keystoneclient-3.15.0-py2.py3-none-any.whl (378 kB)
Using cached python_keystoneclient-3.14.0-py2.py3-none-any.whl (372 kB)
Using cached python_keystoneclient-3.13.1-py2.py3-none-any.whl (381 kB)
Using cached python_keystoneclient-3.13.0-py2.py3-none-any.whl (374 kB)
I think that's an improvement, but we might want to do a bunch more here. :)
As I mentioned in https://github.com/pypa/pip/issues/8683#issuecomment-704615409 :
The team discussed this problem in last week's meeting and work is now in progress so that pip will inform the user when the resolver is doing a lot of backtracking. We'll probably be giving the user a short in-terminal error message and pointing to longer documentation, as we did with this conflict resolution documentation.
I think I'm happy with where we are with pip 20.3 beta1. Let's close this.
Most helpful comment
I love this comment :-)
This is the option I had in mind.