From: Zack Cerza Date: Mon, 17 Apr 2017 21:24:39 +0000 (-0600) Subject: Use pip-tools to manage dependencies X-Git-Tag: 1.1.0~431^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=f3523d7ca936872d0b0c49602759950d17373626;p=teuthology.git Use pip-tools to manage dependencies After yet another instance of pip failing to resolve dependencies, I think it's time to pin everything. The pip-tools utilities provide a simple way to pin libraries and update them when necessary. Signed-off-by: Zack Cerza --- diff --git a/bootstrap b/bootstrap index 2604749566..b0bd347c45 100755 --- a/bootstrap +++ b/bootstrap @@ -133,9 +133,17 @@ fi # Upgrade pip first ./virtualenv/bin/pip install --upgrade pip +# Ensure setuptools is installed ./virtualenv/bin/pip install setuptools --upgrade +# Install all requirements ./virtualenv/bin/pip install --upgrade -r requirements.txt +# Invoke pip-sync +./virtualenv/bin/pip-sync requirements.txt + +# Check to make sure requirements are met +./virtualenv/bin/pip check + # Remove leftover .pyc files find teuthology -name '*.pyc' -exec rm {} \; diff --git a/requirements.txt b/requirements.txt index cd8c47d3d7..19cc14c4f1 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,96 @@ ---index-url https://pypi.python.org/simple/ - --e . +# +# This file is autogenerated by pip-compile +# To update, run: +# +# pip-compile --output-file requirements.txt setup.py +# +ansible==2.3.0.0 +apache-libcloud==1.5.0 +appdirs==1.4.3 # via os-client-config +argparse==1.4.0 +asn1crypto==0.22.0 # via cryptography +babel==2.4.0 # via osc-lib, oslo.i18n, python-cinderclient, python-glanceclient, python-neutronclient, python-novaclient, python-openstackclient +backports.ssl-match-hostname==3.5.0.1 +beanstalkc==0.4.0 +boto==2.46.1 +bunch==1.0.1 +cffi==1.10.0 # via cryptography +click==6.7 # via pip-tools +cliff==2.5.0 # via osc-lib, python-neutronclient, python-openstackclient +cmd2==0.7.0 # via cliff +configobj==5.0.6 +configparser==3.5.0 +contextlib2==0.5.4 # via raven +cryptography==1.8.1 # via paramiko, pyopenssl +debtcollector==1.13.0 # via oslo.config, oslo.utils, python-keystoneclient, python-neutronclient +deprecation==1.0 # via openstacksdk +docopt==0.6.2 +enum34==1.1.6 # via cryptography +first==2.0.1 # via pip-tools +funcsigs==1.0.2 # via debtcollector, oslo.utils +functools32==3.2.3.post2 # via jsonschema +gevent==1.2.1 +greenlet==0.4.12 # via gevent +httplib2==0.10.3 +idna==2.5 # via cryptography +ipaddress==1.0.18 # via cryptography +iso8601==0.1.11 # via keystoneauth1, oslo.utils, python-neutronclient, python-novaclient +jinja2==2.9.6 # via ansible +jsonpatch==1.15 # via warlock +jsonpointer==1.10 # via jsonpatch +jsonschema==2.6.0 # via warlock +keystoneauth1==2.19.0 # via openstacksdk, os-client-config, osc-lib, python-cinderclient, python-glanceclient, python-keystoneclient, python-neutronclient, python-novaclient, python-openstackclient +libvirt-python==3.2.0 +manhole==1.3.0 +markupsafe==1.0 # via jinja2 +monotonic==1.3 # via oslo.utils +msgpack-python==0.4.8 # via oslo.serialization +mysql-python==1.2.3 +ndg-httpsclient==0.4.2 +netaddr==0.7.19 # via oslo.config, oslo.utils, python-neutronclient +netifaces==0.10.5 # via oslo.utils +openstacksdk==0.9.15 # via python-openstackclient +os-client-config==1.26.0 # via openstacksdk, osc-lib, python-neutronclient +osc-lib==1.3.0 # via python-neutronclient, python-openstackclient +oslo.config==3.24.0 # via python-keystoneclient +oslo.i18n==3.15.0 # via osc-lib, oslo.config, oslo.utils, python-cinderclient, python-glanceclient, python-keystoneclient, python-neutronclient, python-novaclient, python-openstackclient +oslo.serialization==2.18.0 # via python-keystoneclient, python-neutronclient, python-novaclient +oslo.utils==3.25.0 # via osc-lib, oslo.serialization, python-cinderclient, python-glanceclient, python-keystoneclient, python-neutronclient, python-novaclient, python-openstackclient +packaging==16.8 # via cryptography +paramiko==2.1.2 +pbr==2.0.0 # via cliff, debtcollector, keystoneauth1, openstacksdk, osc-lib, oslo.i18n, oslo.serialization, oslo.utils, positional, python-cinderclient, python-glanceclient, python-keystoneclient, python-neutronclient, python-novaclient, python-openstackclient, requestsexceptions, stevedore +pexpect==4.2.1 +pip-tools==1.9.0 +pluggy==0.4.0 # via tox +positional==1.1.1 # via keystoneauth1, python-keystoneclient +prettytable==0.7.2 +psutil==5.2.2 +ptyprocess==0.5.1 # via pexpect +py==1.4.33 # via tox +pyasn1==0.2.3 +pycparser==2.17 # via cffi +pycrypto==2.6.1 # via ansible +pyopenssl==16.2.0 +pyparsing==2.2.0 # via cliff, cmd2, oslo.utils, packaging +python-cinderclient==2.0.1 # via python-openstackclient +python-dateutil==2.6.0 +python-glanceclient==2.6.0 # via python-openstackclient +python-keystoneclient==3.10.0 # via python-neutronclient, python-openstackclient +python-neutronclient==6.2.0 +python-novaclient==8.0.0 +python-openstackclient==3.9.0 +pytz==2017.2 # via babel, oslo.serialization, oslo.utils +pyyaml==3.12 +raven==6.0.0 +requests==2.12.5 +requestsexceptions==1.2.0 # via os-client-config +rfc3986==0.4.1 # via oslo.config +simplejson==3.10.0 # via osc-lib, python-cinderclient, python-neutronclient, python-novaclient +six==1.10.0 +stevedore==1.21.0 # via cliff, keystoneauth1, openstacksdk, osc-lib, oslo.config, python-keystoneclient +tox==2.7.0 +unicodecsv==0.14.1 # via cliff +virtualenv==15.1.0 # via tox +warlock==1.2.0 # via python-glanceclient +web.py==0.38 +wrapt==1.10.10 # via debtcollector, positional, python-glanceclient diff --git a/setup.py b/setup.py index 5683bde111..5f5be1986e 100644 --- a/setup.py +++ b/setup.py @@ -48,7 +48,8 @@ setup( 'Topic :: System :: Distributed Computing', 'Topic :: System :: Filesystems', ], - install_requires=['setuptools', + install_requires=['pip-tools', + 'tox', 'gevent', # For teuthology-coverage 'MySQL-python == 1.2.3', @@ -68,10 +69,6 @@ setup( 'docopt', 'psutil >= 2.1.0', 'configparser', - 'pytest', - 'pytest-capturelog', - 'mock', - 'fudge', 'ansible>=2.0', 'pyopenssl>=0.13', 'ndg-httpsclient', @@ -82,9 +79,6 @@ setup( # python-novaclient 4.0.0 'python-novaclient', 'python-openstackclient', - # Copy the below from python-openstackclient's - # requirements to avoid a conflict - 'openstacksdk!=0.9.11,!=0.9.12,>=0.9.10', # with openstacklient >= 2.1.0, neutronclient no longer is # a dependency but we need it anyway. 'python-neutronclient', diff --git a/tox.ini b/tox.ini index 276bdc68fb..27da6002b7 100644 --- a/tox.ini +++ b/tox.ini @@ -7,10 +7,11 @@ passenv = HOME sitepackages=True deps= -r{toxinidir}/requirements.txt + pytest + pytest-capturelog mock fudge nose - pytest-capturelog pytest-cov==1.6 coverage==3.7.1 @@ -23,6 +24,8 @@ passenv = HOME OS_REGION_NAME OS_AUTH_URL OS_TENANT_ID OS_TENANT_NAME OS_PASSWOR sitepackages=True deps= -r{toxinidir}/requirements.txt + pytest + pytest-capturelog mock fudge nose @@ -42,7 +45,12 @@ commands=flake8 --select=F,E9 {posargs:teuthology scripts} install_command = pip install --upgrade {opts} {packages} basepython=python changedir=docs -deps=sphinx +deps= + -r{toxinidir}/requirements.txt + sphinx + pytest + pytest-capturelog + mock commands= sphinx-apidoc -f -o . ../teuthology ../teuthology/test ../teuthology/orchestra/test ../teuthology/task/test sphinx-build -b html -d {envtmpdir}/doctrees . {envtmpdir}/html @@ -53,8 +61,9 @@ passenv = HOME OS_REGION_NAME OS_AUTH_URL OS_TENANT_ID OS_TENANT_NAME OS_PASSWOR sitepackages=True deps= -r{toxinidir}/requirements.txt - mock + pytest pytest-capturelog + mock commands=py.test -v {posargs:teuthology/openstack/test/test_openstack.py} basepython=python2.7 @@ -64,6 +73,7 @@ passenv = HOME OS_REGION_NAME OS_AUTH_URL OS_TENANT_ID OS_TENANT_NAME OS_PASSWOR basepython=python2 deps= -r{toxinidir}/requirements.txt + pytest mock commands=