Normalize global-requirements.txt

This enforces consistent spacing in global-requirements.txt
and sorts the specifiers to be always in a specific order
(namely minimum bound first, then exceptions, then upper bound).

Add test coverage for this normalisation.

Change-Id: If41732bfe4476e422bc6b9f9f896eb978db8be84
This commit is contained in:
Dirk Mueller 2017-10-24 15:26:44 +02:00 committed by Tony Breeds
parent 869832ffa6
commit 4f54188c61
3 changed files with 106 additions and 94 deletions

View File

@ -3,7 +3,7 @@
astroid astroid
bandit bandit
flake8 flake8
flake8_docstrings flake8-docstrings
flake8-import-order flake8-import-order
hacking hacking
mccabe mccabe

View File

@ -9,24 +9,24 @@ automaton>=1.9.0 # Apache-2.0
beautifulsoup4>=4.6.0 # MIT beautifulsoup4>=4.6.0 # MIT
Babel>=2.3.4,!=2.4.0 # BSD Babel>=2.3.4,!=2.4.0 # BSD
bcrypt>=3.1.3 # Apache-2.0 bcrypt>=3.1.3 # Apache-2.0
betamax>=0.7.0 # Apache-2.0 betamax>=0.7.0 # Apache-2.0
betamax-matchers>=0.4.0 # Apache-2.0 betamax-matchers>=0.4.0 # Apache-2.0
boto>=2.32.1 # MIT boto>=2.32.1 # MIT
botocore>=1.5.1 # Apache-2.0 botocore>=1.5.1 # Apache-2.0
cassandra-driver>=2.1.4,!=3.6.0 # Apache-2.0 cassandra-driver>=2.1.4,!=3.6.0 # Apache-2.0
castellan>=0.14.0 # Apache-2.0 castellan>=0.14.0 # Apache-2.0
ceilometermiddleware>=1.1.0 # Apache-2.0 ceilometermiddleware>=1.1.0 # Apache-2.0
cachetools>=2.0.0 # MIT License cachetools>=2.0.0 # MIT License
cffi>=1.1.2 # MIT cffi>=1.1.2 # MIT
cliff>=2.8.0,!=2.9.0 # Apache-2.0 cliff>=2.8.0,!=2.9.0 # Apache-2.0
cmd2>=0.6.7 # MIT cmd2>=0.6.7 # MIT
cotyledon>=1.3.0 # Apache-2.0 cotyledon>=1.3.0 # Apache-2.0
construct>=2.8.10 # MIT construct>=2.8.10 # MIT
PuLP>=1.4.1 # MIT PuLP>=1.4.1 # MIT
contextlib2>=0.4.0 # PSF License contextlib2>=0.4.0 # PSF License
croniter>=0.3.4 # MIT License croniter>=0.3.4 # MIT License
cryptography>=1.9,!=2.0 # BSD/Apache-2.0 cryptography>=1.9,!=2.0 # BSD/Apache-2.0
cursive>=0.1.2 # Apache-2.0 cursive>=0.1.2 # Apache-2.0
ddt>=1.0.1 # MIT ddt>=1.0.1 # MIT
debtcollector>=1.2.0 # Apache-2.0 debtcollector>=1.2.0 # Apache-2.0
decorator>=3.4.0 # BSD decorator>=3.4.0 # BSD
@ -34,10 +34,10 @@ dib-utils>=0.0.8 # Apache-2.0
diskimage-builder>=1.1.2,!=1.6.0,!=1.7.0,!=1.7.1 # Apache-2.0 diskimage-builder>=1.1.2,!=1.6.0,!=1.7.0,!=1.7.1 # Apache-2.0
Django>=1.8,<2.0 # BSD Django>=1.8,<2.0 # BSD
django-babel>=0.5.1 # BSD django-babel>=0.5.1 # BSD
django_compressor>=2.0 # MIT django-compressor>=2.0 # MIT
django-floppyforms>=1.0,<2 # BSD django-floppyforms>=1.0,<2 # BSD
django-formtools>=1.0 # BSD django-formtools>=1.0 # BSD
django_openstack_auth>=3.5.0 # Apache-2.0 django-openstack-auth>=3.5.0 # Apache-2.0
dnspython>=1.14.0;python_version=='2.7' # http://www.dnspython.org/LICENSE dnspython>=1.14.0;python_version=='2.7' # http://www.dnspython.org/LICENSE
dnspython3>=1.12.0,!=1.13.0,!=1.14.0;python_version>='3.0' # http://www.dnspython.org/LICENSE dnspython3>=1.12.0,!=1.13.0,!=1.14.0;python_version>='3.0' # http://www.dnspython.org/LICENSE
# Note(tonyb): We don't actually directly depend on docutils but we pull it in # Note(tonyb): We don't actually directly depend on docutils but we pull it in
@ -47,36 +47,36 @@ docutils>=0.11 # OSI-Approved Open Source, Public Domain
dogpile.cache>=0.6.2 # BSD dogpile.cache>=0.6.2 # BSD
dogtag-pki>=10.3.5.1 # LGPLv3+ dogtag-pki>=10.3.5.1 # LGPLv3+
dulwich>=0.15.0 # Apache-2.0 dulwich>=0.15.0 # Apache-2.0
elasticsearch>=2.0.0,<=3.0.0 # Apache-2.0 elasticsearch>=2.0.0,<=3.0.0 # Apache-2.0
enum34>=1.0.4;python_version=='2.7' or python_version=='2.6' or python_version=='3.3' # BSD enum34>=1.0.4;python_version=='2.7' or python_version=='2.6' or python_version=='3.3' # BSD
# NOTE: New versions of eventlet should not be accepted lightly # NOTE: New versions of eventlet should not be accepted lightly
# as they have earned a reputation of frequently breaking things. # as they have earned a reputation of frequently breaking things.
# NOTE(sdague): before allowing in >= 0.21 please be sure # NOTE(sdague): before allowing in >= 0.21 please be sure
# https://github.com/eventlet/eventlet/issues/401 is resolved # https://github.com/eventlet/eventlet/issues/401 is resolved
eventlet!=0.18.3,>=0.18.2,!=0.20.1,<0.21.0 # MIT eventlet>=0.18.2,!=0.18.3,!=0.20.1,<0.21.0 # MIT
exabgp>=4.0.1 # BSD exabgp>=4.0.1 # BSD
extras>=0.0.3 # MIT extras>=0.0.3 # MIT
falcon>=1.0.0 # Apache-2.0 falcon>=1.0.0 # Apache-2.0
Flask>=0.10,!=0.11,<1.0 # BSD Flask>=0.10,!=0.11,<1.0 # BSD
flask-keystone>=0.2 # Apache-2.0 flask-keystone>=0.2 # Apache-2.0
flask-oslolog>=0.1 # Apache-2.0 flask-oslolog>=0.1 # Apache-2.0
Flask-RESTful>=0.3.5 # BSD Flask-RESTful>=0.3.5 # BSD
Flask-SQLAlchemy>=2.0 # BSD Flask-SQLAlchemy>=2.0 # BSD
fortiosclient>=0.0.2 # Apache-2.0 fortiosclient>=0.0.2 # Apache-2.0
futures>=3.0;python_version=='2.7' or python_version=='2.6' # BSD futures>=3.0;python_version=='2.7' or python_version=='2.6' # BSD
futurist>=1.2.0 # Apache-2.0 futurist>=1.2.0 # Apache-2.0
funcsigs>=1.0.0;python_version=='2.7' or python_version=='2.6' # Apache-2.0 funcsigs>=1.0.0;python_version=='2.7' or python_version=='2.6' # Apache-2.0
gitdb>=0.6.4 # BSD License (3 clause) gitdb>=0.6.4 # BSD License (3 clause)
glance_store>=0.22.0 # Apache-2.0 glance-store>=0.22.0 # Apache-2.0
google-api-python-client>=1.4.2 # Apache-2.0 google-api-python-client>=1.4.2 # Apache-2.0
graphviz>=0.4,!=0.5.0 # MIT License graphviz>=0.4,!=0.5.0 # MIT License
greenlet>=0.4.10 # MIT greenlet>=0.4.10 # MIT
GitPython>=1.0.1 # BSD License (3 clause) GitPython>=1.0.1 # BSD License (3 clause)
gunicorn>=19.0.0 # MIT gunicorn>=19.0.0 # MIT
happybase>=0.5,!=0.7,!=1.0.0;python_version=='2.7' # MIT happybase>=0.5,!=0.7,!=1.0.0;python_version=='2.7' # MIT
heat-translator>=0.4.0 # Apache-2.0 heat-translator>=0.4.0 # Apache-2.0
httplib2>=0.9.1 # MIT httplib2>=0.9.1 # MIT
icalendar>=3.10 # BSD icalendar>=3.10 # BSD
influxdb>=2.9.2 # MIT influxdb>=2.9.2 # MIT
instack-undercloud>=7.0.0 # Apache-2.0 instack-undercloud>=7.0.0 # Apache-2.0
ironic-lib>=2.5.0 # Apache-2.0 ironic-lib>=2.5.0 # Apache-2.0
@ -96,14 +96,14 @@ krest>=1.3.1 # Apache-2.0
kubernetes>=1.0.0 # Apache-2.0 kubernetes>=1.0.0 # Apache-2.0
kuryr-lib>=0.5.0 # Apache-2.0 kuryr-lib>=0.5.0 # Apache-2.0
packaging>=16.5 # Apache-2.0 packaging>=16.5 # Apache-2.0
pylev>=1.3.0 # BSD pylev>=1.3.0 # BSD
pypowervm>=1.1.7 # Apache-2.0 pypowervm>=1.1.7 # Apache-2.0
pyScss>=1.3.4,!=1.3.5 # MIT License pyScss>=1.3.4,!=1.3.5 # MIT License
django-pyscss>=2.0.2 # BSD License (2 clause) django-pyscss>=2.0.2 # BSD License (2 clause)
kombu>=4.0.0,!=4.0.2 # BSD kombu>=4.0.0,!=4.0.2 # BSD
ldap3>=1.0.2 # LGPLv3 ldap3>=1.0.2 # LGPLv3
deprecation>=1.0 # Apache-2.0 deprecation>=1.0 # Apache-2.0
libvirt-python>=3.5.0 # LGPLv2+ libvirt-python>=3.5.0 # LGPLv2+
lxml>=3.4.1,!=3.7.0 # BSD lxml>=3.4.1,!=3.7.0 # BSD
Mako>=0.4.0 # MIT Mako>=0.4.0 # MIT
marathon>=0.8.6,!=0.9.1 # MIT marathon>=0.8.6,!=0.9.1 # MIT
@ -112,7 +112,7 @@ mistral-lib>=0.3.0 # Apache-2.0
mitmproxy>=1.0.2;python_version>'3.0' # MIT mitmproxy>=1.0.2;python_version>'3.0' # MIT
monasca-common>=1.4.0 # Apache-2.0 monasca-common>=1.4.0 # Apache-2.0
monasca-statsd>=1.1.0 # Apache-2.0 monasca-statsd>=1.1.0 # Apache-2.0
monotonic>=0.6 # Apache-2.0 monotonic>=0.6 # Apache-2.0
msgpack-python>=0.4.0 # Apache-2.0 msgpack-python>=0.4.0 # Apache-2.0
munch>=2.1.0 # MIT munch>=2.1.0 # MIT
murano-pkg-check>=0.3.0 # Apache-2.0 murano-pkg-check>=0.3.0 # Apache-2.0
@ -120,7 +120,7 @@ mypy>=0.501;python_version>='3.2' # MIT
ndg-httpsclient>=0.4.2;python_version<'3.0' # BSD ndg-httpsclient>=0.4.2;python_version<'3.0' # BSD
netaddr>=0.7.18 # BSD netaddr>=0.7.18 # BSD
netifaces>=0.10.4 # MIT netifaces>=0.10.4 # MIT
netmiko>=1.2.5 # MIT netmiko>=1.2.5 # MIT
# Pinned to 1.0 branch until projects update, see: # Pinned to 1.0 branch until projects update, see:
# https://bugs.launchpad.net/openstack-requirements/+bug/1718576 # https://bugs.launchpad.net/openstack-requirements/+bug/1718576
networkx>=1.10,<2.0 # BSD networkx>=1.10,<2.0 # BSD
@ -133,24 +133,24 @@ ordereddict>=1.1 # MIT
osc-lib>=1.7.0 # Apache-2.0 osc-lib>=1.7.0 # Apache-2.0
oslo.cache>=1.26.0 # Apache-2.0 oslo.cache>=1.26.0 # Apache-2.0
oslo.config>=4.6.0 # Apache-2.0 oslo.config>=4.6.0 # Apache-2.0
oslo.concurrency>=3.20.0 # Apache-2.0 oslo.concurrency>=3.20.0 # Apache-2.0
oslo.context>=2.14.0,!=2.19.1 # Apache-2.0 oslo.context>=2.14.0,!=2.19.1 # Apache-2.0
oslo.db>=4.27.0 # Apache-2.0 oslo.db>=4.27.0 # Apache-2.0
oslo.i18n>=3.15.3 # Apache-2.0 oslo.i18n>=3.15.3 # Apache-2.0
oslo.log>=3.30.0 # Apache-2.0 oslo.log>=3.30.0 # Apache-2.0
oslo.messaging>=5.29.0 # Apache-2.0 oslo.messaging>=5.29.0 # Apache-2.0
oslo.middleware>=3.31.0 # Apache-2.0 oslo.middleware>=3.31.0 # Apache-2.0
oslo.policy>=1.23.0 # Apache-2.0 oslo.policy>=1.23.0 # Apache-2.0
oslo.privsep>=1.23.0 # Apache-2.0 oslo.privsep>=1.23.0 # Apache-2.0
oslo.reports>=1.18.0 # Apache-2.0 oslo.reports>=1.18.0 # Apache-2.0
oslo.rootwrap>=5.8.0 # Apache-2.0 oslo.rootwrap>=5.8.0 # Apache-2.0
# NOTE(mriedem): oslo.serialization 2.19.1 is blocked for bug 1593641 # NOTE(mriedem): oslo.serialization 2.19.1 is blocked for bug 1593641
oslo.serialization>=2.18.0,!=2.19.1 # Apache-2.0 oslo.serialization>=2.18.0,!=2.19.1 # Apache-2.0
oslo.service>=1.24.0 # Apache-2.0 oslo.service>=1.24.0 # Apache-2.0
oslo.utils>=3.28.0 # Apache-2.0 oslo.utils>=3.28.0 # Apache-2.0
oslo.vmware>=2.17.0 # Apache-2.0 oslo.vmware>=2.17.0 # Apache-2.0
oslo.versionedobjects>=1.28.0 # Apache-2.0 oslo.versionedobjects>=1.28.0 # Apache-2.0
osprofiler>=1.4.0 # Apache-2.0 osprofiler>=1.4.0 # Apache-2.0
os-apply-config>=0.1.31 # Apache-2.0 os-apply-config>=0.1.31 # Apache-2.0
os-brick>=1.15.2 # Apache-2.0 os-brick>=1.15.2 # Apache-2.0
os-client-config>=1.28.0 # Apache-2.0 os-client-config>=1.28.0 # Apache-2.0
@ -161,11 +161,11 @@ os-refresh-config>=0.1.10 # Apache-2.0
os-service-types>=1.1.0 # Apache-2.0 os-service-types>=1.1.0 # Apache-2.0
os-testr>=1.0.0 # Apache-2.0 os-testr>=1.0.0 # Apache-2.0
os-traits>=0.3.2 # Apache-2.0 os-traits>=0.3.2 # Apache-2.0
os-vif>=1.7.0 # Apache-2.0 os-vif>=1.7.0 # Apache-2.0
ovs>=2.7.0 # Apache-2.0 ovs>=2.7.0 # Apache-2.0
os-win>=2.0.0 # Apache-2.0 os-win>=2.0.0 # Apache-2.0
os-xenapi>=0.3.1 # Apache-2.0 os-xenapi>=0.3.1 # Apache-2.0
paramiko>=2.0.0 # LGPLv2.1+ paramiko>=2.0.0 # LGPLv2.1+
Parsley>=1.2 # MIT Parsley>=1.2 # MIT
pathlib2>=2.1.0 # MIT pathlib2>=2.1.0 # MIT
passlib>=1.7.0 # BSD passlib>=1.7.0 # BSD
@ -174,7 +174,7 @@ PasteDeploy>=1.5.0 # MIT
paunch>=1.0.0 # Apache-2.0 paunch>=1.0.0 # Apache-2.0
pbr>=2.0.0,!=2.1.0 # Apache-2.0 pbr>=2.0.0,!=2.1.0 # Apache-2.0
pecan>=1.0.0,!=1.0.2,!=1.0.3,!=1.0.4,!=1.2 # BSD pecan>=1.0.0,!=1.0.2,!=1.0.3,!=1.0.4,!=1.2 # BSD
pexpect>=3.1,!=3.3 # ISC License pexpect>=3.1,!=3.3 # ISC License
pifpaf>=0.10.0 # Apache-2.0 pifpaf>=0.10.0 # Apache-2.0
pika>=0.10.0 # BSD pika>=0.10.0 # BSD
pika-pool>=0.1.3 # BSD pika-pool>=0.1.3 # BSD
@ -187,25 +187,25 @@ pyasn1>=0.1.8,!=0.2.3 # BSD
pyasn1-modules>=0.0.6 # BSD pyasn1-modules>=0.0.6 # BSD
pycadf>=1.1.0,!=2.0.0 # Apache-2.0 pycadf>=1.1.0,!=2.0.0 # Apache-2.0
pycrypto>=2.6 # Public Domain pycrypto>=2.6 # Public Domain
PyECLib>=1.3.1 # BSD PyECLib>=1.3.1 # BSD
pyghmi>=1.0.22 # Apache-2.0 pyghmi>=1.0.22 # Apache-2.0
pyinotify>=0.9.6;sys_platform!='win32' and sys_platform!='darwin' and sys_platform!='sunos5' # MIT pyinotify>=0.9.6;sys_platform!='win32' and sys_platform!='darwin' and sys_platform!='sunos5' # MIT
PyJWT>=1.0.1 # MIT PyJWT>=1.0.1 # MIT
pykafka>=2.5.0 # Apache 2.0 License pykafka>=2.5.0 # Apache 2.0 License
pykmip>=0.5.0 # Apache 2.0 License pykmip>=0.5.0 # Apache 2.0 License
pyldap>=2.4.20 # PSF pyldap>=2.4.20 # PSF
pylxd>=2.2.2 # Apache-2.0 pylxd>=2.2.2 # Apache-2.0
pymemcache>=1.2.9,!=1.3.0 # Apache 2.0 License pymemcache>=1.2.9,!=1.3.0 # Apache 2.0 License
pymod2pkg>=0.7.0,!=0.8.0 # Apache-2.0 pymod2pkg>=0.7.0,!=0.8.0 # Apache-2.0
pymongo>=3.0.2,!=3.1 # Apache-2.0 pymongo>=3.0.2,!=3.1 # Apache-2.0
PyMySQL>=0.7.6 # MIT License PyMySQL>=0.7.6 # MIT License
python-etcd>=0.4.3 # MIT License python-etcd>=0.4.3 # MIT License
etcd3>=0.5.2 # Apache-2.0 etcd3>=0.5.2 # Apache-2.0
etcd3gw>=0.2.0 # Apache-2.0 etcd3gw>=0.2.0 # Apache-2.0
typing>=3.5.2.2 # PSF typing>=3.5.2.2 # PSF
voluptuous>=0.8.9 # BSD License voluptuous>=0.8.9 # BSD License
pydot3>=1.0.8 # MIT License pydot3>=1.0.8 # MIT License
pydotplus>=2.0.2 # MIT License pydotplus>=2.0.2 # MIT License
crc16>=0.1.1 # LGPLv3+ crc16>=0.1.1 # LGPLv3+
pyzabbix>=0.7.4 # LGPL pyzabbix>=0.7.4 # LGPL
statsd>=3.2.1 # MIT statsd>=3.2.1 # MIT
@ -215,7 +215,7 @@ weakrefmethod>=1.0.2;python_version=='2.7' # PSF
# uuid-dev and swig # uuid-dev and swig
pyngus>=2.2.0 # Apache-2.0 pyngus>=2.2.0 # Apache-2.0
pyOpenSSL>=16.2.0 # Apache-2.0 pyOpenSSL>=16.2.0 # Apache-2.0
pyparsing>=2.1.0 # MIT pyparsing>=2.1.0 # MIT
pyroute2>=0.4.21;sys_platform!='win32' # Apache-2.0 (+ dual licensed GPL2) pyroute2>=0.4.21;sys_platform!='win32' # Apache-2.0 (+ dual licensed GPL2)
pysnmp>=4.2.3 # BSD pysnmp>=4.2.3 # BSD
@ -232,13 +232,13 @@ pysaml2>=4.0.2,<4.0.3 # Apache-2.0
# as that has implications for testing in the gate. # as that has implications for testing in the gate.
aodhclient>=0.9.0 # Apache-2.0 aodhclient>=0.9.0 # Apache-2.0
gnocchiclient>=3.3.1 # Apache-2.0 gnocchiclient>=3.3.1 # Apache-2.0
tricircleclient>=0.1.1 # Apache-2.0 tricircleclient>=0.1.1 # Apache-2.0
python-barbicanclient>=4.0.0,!=4.5.0,!=4.5.1 # Apache-2.0 python-barbicanclient>=4.0.0,!=4.5.0,!=4.5.1 # Apache-2.0
python-ceilometerclient>=2.5.0 # Apache-2.0 python-ceilometerclient>=2.5.0 # Apache-2.0
python-cinderclient>=3.2.0 # Apache-2.0 python-cinderclient>=3.2.0 # Apache-2.0
python-congressclient>=1.3.0,<2000 # Apache-2.0 python-congressclient>=1.3.0,<2000 # Apache-2.0
python-designateclient>=2.7.0 # Apache-2.0 python-designateclient>=2.7.0 # Apache-2.0
python-freezerclient>=1.3.0 # Apache-2.0 python-freezerclient>=1.3.0 # Apache-2.0
python-heatclient>=1.10.0 # Apache-2.0 python-heatclient>=1.10.0 # Apache-2.0
python-hnvclient>=0.1.0 # Apache-2.0 python-hnvclient>=0.1.0 # Apache-2.0
python-glanceclient>=2.8.0 # Apache-2.0 python-glanceclient>=2.8.0 # Apache-2.0
@ -247,20 +247,20 @@ python-ironic-inspector-client>=1.5.0 # Apache-2.0
python-ironicclient>=1.14.0 # Apache-2.0 python-ironicclient>=1.14.0 # Apache-2.0
python-karborclient>=0.6.0 # Apache-2.0 python-karborclient>=0.6.0 # Apache-2.0
python-keystoneclient>=3.8.0 # Apache-2.0 python-keystoneclient>=3.8.0 # Apache-2.0
python-kingbirdclient>=0.1.0 # Apache-2.0 python-kingbirdclient>=0.1.0 # Apache-2.0
python-magnumclient>=2.0.0 # Apache-2.0 python-magnumclient>=2.0.0 # Apache-2.0
python-masakariclient>=3.0.1 # Apache-2.0 python-masakariclient>=3.0.1 # Apache-2.0
python-manilaclient>=1.16.0 # Apache-2.0 python-manilaclient>=1.16.0 # Apache-2.0
python-mistralclient>=3.1.0 # Apache-2.0 python-mistralclient>=3.1.0 # Apache-2.0
python-muranoclient>=0.8.2 # Apache-2.0 python-muranoclient>=0.8.2 # Apache-2.0
python-monascaclient>=1.7.0 # Apache-2.0 python-monascaclient>=1.7.0 # Apache-2.0
python-neutronclient>=6.3.0 # Apache-2.0 python-neutronclient>=6.3.0 # Apache-2.0
python-novaclient>=9.1.0 # Apache-2.0 python-novaclient>=9.1.0 # Apache-2.0
python-octaviaclient>=1.0.0 # Apache-2.0 python-octaviaclient>=1.0.0 # Apache-2.0
python-openstackclient>=3.12.0 # Apache-2.0 python-openstackclient>=3.12.0 # Apache-2.0
python-rsdclient>=0.1.0 # Apache-2.0 python-rsdclient>=0.1.0 # Apache-2.0
python-saharaclient>=1.2.0 # Apache-2.0 python-saharaclient>=1.2.0 # Apache-2.0
python-searchlightclient>=1.0.0 #Apache-2.0 python-searchlightclient>=1.0.0 #Apache-2.0
python-senlinclient>=1.1.0 # Apache-2.0 python-senlinclient>=1.1.0 # Apache-2.0
python-smaugclient>=0.0.5 # Apache-2.0 python-smaugclient>=0.0.5 # Apache-2.0
python-solumclient>=1.2.7 # Apache-2.0 python-solumclient>=1.2.7 # Apache-2.0
@ -282,14 +282,14 @@ PyYAML>=3.10 # MIT
qpid-python>=0.26;python_version=='2.7' # Apache-2.0 qpid-python>=0.26;python_version=='2.7' # Apache-2.0
reno>=2.5.0 # Apache-2.0 reno>=2.5.0 # Apache-2.0
requests>=2.14.2 # Apache-2.0 requests>=2.14.2 # Apache-2.0
requests-aws>=0.1.4 # BSD License (3 clause) requests-aws>=0.1.4 # BSD License (3 clause)
requests-kerberos>=0.6 # ISC requests-kerberos>=0.6 # ISC
requestsexceptions>=1.2.0 # Apache-2.0 requestsexceptions>=1.2.0 # Apache-2.0
rfc3986>=0.3.1 # Apache-2.0 rfc3986>=0.3.1 # Apache-2.0
Routes>=2.3.1 # MIT Routes>=2.3.1 # MIT
rtslib-fb>=2.1.43,!=2.1.60,!=2.1.61 # Apache-2.0 rtslib-fb>=2.1.43,!=2.1.60,!=2.1.61 # Apache-2.0
ryu>=4.14 # Apache-2.0 ryu>=4.14 # Apache-2.0
semantic_version>=2.3.1 # BSD semantic-version>=2.3.1 # BSD
fasteners>=0.7.0 # Apache-2.0 fasteners>=0.7.0 # Apache-2.0
scrypt>=0.8.0 # BSD scrypt>=0.8.0 # BSD
simplejson>=3.5.1 # MIT simplejson>=3.5.1 # MIT
@ -303,26 +303,26 @@ scikit-learn>=0.17.1 # BSD
SQLAlchemy>=1.0.10,!=1.1.5,!=1.1.6,!=1.1.7,!=1.1.8 # MIT SQLAlchemy>=1.0.10,!=1.1.5,!=1.1.6,!=1.1.7,!=1.1.8 # MIT
SQLAlchemy-Utils>=0.30.11 # BSD License SQLAlchemy-Utils>=0.30.11 # BSD License
sqlalchemy-migrate>=0.11.0 # Apache-2.0 sqlalchemy-migrate>=0.11.0 # Apache-2.0
sqlparse>=0.2.2 # BSD sqlparse>=0.2.2 # BSD
stevedore>=1.20.0 # Apache-2.0 stevedore>=1.20.0 # Apache-2.0
systemd-python>=234 # LGPLv2+ systemd-python>=234 # LGPLv2+
sysv_ipc>=0.6.8 # BSD License sysv-ipc>=0.6.8 # BSD License
suds-jurko>=0.6 # LGPLv3+ suds-jurko>=0.6 # LGPLv3+
sympy>=0.7.6 # BSD sympy>=0.7.6 # BSD
taskflow>=2.7.0 # Apache-2.0 taskflow>=2.7.0 # Apache-2.0
tempest>=16.1.0 # Apache-2.0 tempest>=16.1.0 # Apache-2.0
tempest-lib>=1.0.0 # Apache-2.0 tempest-lib>=1.0.0 # Apache-2.0
tooz>=1.58.0 # Apache-2.0 tooz>=1.58.0 # Apache-2.0
tosca-parser>=0.8.1 # Apache-2.0 tosca-parser>=0.8.1 # Apache-2.0
tripleo-common>=7.1.0 # Apache-2.0 tripleo-common>=7.1.0 # Apache-2.0
urllib3>=1.21.1 # MIT urllib3>=1.21.1 # MIT
unicodecsv>=0.8.0;python_version<'3.0' # BSD unicodecsv>=0.8.0;python_version<'3.0' # BSD
warlock>=1.2.0,!=1.3.0,<2 # Apache-2.0 warlock>=1.2.0,!=1.3.0,<2 # Apache-2.0
WebOb>=1.7.1 # MIT WebOb>=1.7.1 # MIT
websocket-client>=0.33.0 # LGPLv2+ websocket-client>=0.33.0 # LGPLv2+
websockify>=0.8.0 # LGPLv3 websockify>=0.8.0 # LGPLv3
wheel>=0.24.0 # MIT wheel>=0.24.0 # MIT
PyMI>=1.0.0;sys_platform=='win32' # Apache 2.0 License PyMI>=1.0.0;sys_platform=='win32' # Apache 2.0 License
wmi>=0.5;sys_platform=='win32' # MIT wmi>=0.5;sys_platform=='win32' # MIT
WSME>=0.8.0 # MIT WSME>=0.8.0 # MIT
xattr>=0.9.2 # MIT xattr>=0.9.2 # MIT
@ -330,13 +330,13 @@ XenAPI>=1.2 # LGPL
XStatic>=1.0.0 # MIT License XStatic>=1.0.0 # MIT License
XStatic-Angular>=1.5.8.0 # MIT License XStatic-Angular>=1.5.8.0 # MIT License
XStatic-Angular-Bootstrap>=2.2.0.0 # MIT License XStatic-Angular-Bootstrap>=2.2.0.0 # MIT License
XStatic-Angular-Gettext>=2.3.8.0 # MIT License XStatic-Angular-Gettext>=2.3.8.0 # MIT License
XStatic-Angular-lrdragndrop>=1.0.2.2 # MIT License XStatic-Angular-lrdragndrop>=1.0.2.2 # MIT License
XStatic-Angular-Schema-Form>=0.8.13.0 # MIT XStatic-Angular-Schema-Form>=0.8.13.0 # MIT
XStatic-angular-ui-router>=0.3.1.2 # MIT XStatic-angular-ui-router>=0.3.1.2 # MIT
XStatic-Bootstrap-Datepicker>=1.3.1.0 # Apache 2.0 License XStatic-Bootstrap-Datepicker>=1.3.1.0 # Apache 2.0 License
XStatic-Bootstrap-SCSS>=3.3.7.1 # Apache 2.0 License XStatic-Bootstrap-SCSS>=3.3.7.1 # Apache 2.0 License
XStatic-bootswatch>=3.3.7.0 # MIT License XStatic-bootswatch>=3.3.7.0 # MIT License
XStatic-D3>=3.5.17.0 # BSD License (3 clause) XStatic-D3>=3.5.17.0 # BSD License (3 clause)
XStatic-Font-Awesome>=4.7.0.0 # SIL OFL 1.1 License, MIT License XStatic-Font-Awesome>=4.7.0.0 # SIL OFL 1.1 License, MIT License
XStatic-Hogan>=2.0.0.2 # Apache 2.0 License XStatic-Hogan>=2.0.0.2 # Apache 2.0 License
@ -348,23 +348,23 @@ XStatic-JQuery.TableSorter>=2.14.5.1 # MIT License
XStatic-jquery-ui>=1.10.4.1 # MIT License XStatic-jquery-ui>=1.10.4.1 # MIT License
XStatic-JSEncrypt>=2.3.1.1 # MIT License XStatic-JSEncrypt>=2.3.1.1 # MIT License
XStatic-Magic-Search>=0.2.5.1 # Apache 2.0 License XStatic-Magic-Search>=0.2.5.1 # Apache 2.0 License
XStatic-mdi>=1.4.57.0 # SIL OPEN FONT LICENSE Version 1.1 XStatic-mdi>=1.4.57.0 # SIL OPEN FONT LICENSE Version 1.1
XStatic-objectpath>=1.2.1.0 # MIT XStatic-objectpath>=1.2.1.0 # MIT
XStatic-Rickshaw>=1.5.0.0 # BSD License (prior) XStatic-Rickshaw>=1.5.0.0 # BSD License (prior)
XStatic-roboto-fontface>=0.5.0.0 # Apache 2.0 License XStatic-roboto-fontface>=0.5.0.0 # Apache 2.0 License
XStatic-smart-table>=1.4.13.2 # MIT License XStatic-smart-table>=1.4.13.2 # MIT License
XStatic-Spin>=1.2.5.2 # MIT License XStatic-Spin>=1.2.5.2 # MIT License
XStatic-term.js>=0.0.7.0 # MIT License XStatic-term.js>=0.0.7.0 # MIT License
XStatic-tv4>=1.2.7.0 # MIT XStatic-tv4>=1.2.7.0 # MIT
XStatic-Angular-FileUpload>=12.0.4.0 # MIT License XStatic-Angular-FileUpload>=12.0.4.0 # MIT License
yaql>=1.1.3 # Apache 2.0 License yaql>=1.1.3 # Apache 2.0 License
zhmcclient>=0.9.0 # Apache 2.0 License zhmcclient>=0.9.0 # Apache 2.0 License
# Testing tools below, which are typically in test-requires.txt # Testing tools below, which are typically in test-requires.txt
bashate>=0.5.1 # Apache-2.0 bashate>=0.5.1 # Apache-2.0
cliff-tablib>=1.0 # Apache-2.0 cliff-tablib>=1.0 # Apache-2.0
couchdb>=0.8 # Apache-2.0 couchdb>=0.8 # Apache-2.0
coverage>=4.0,!=4.4 # Apache-2.0 coverage>=4.0,!=4.4 # Apache-2.0
demjson>=2.2.2 # GLGPLv3+ demjson>=2.2.2 # GLGPLv3+
docker>=2.4.2 # Apache-2.0 docker>=2.4.2 # Apache-2.0
@ -375,7 +375,7 @@ freezegun>=0.3.6 # Apache-2.0
gabbi>=1.35.0 # Apache-2.0 gabbi>=1.35.0 # Apache-2.0
kafka-python>=1.3.1 # Apache-2.0 kafka-python>=1.3.1 # Apache-2.0
keyring>=5.5.1 # MIT/PSF keyring>=5.5.1 # MIT/PSF
ldappool>=2.0.0 # MPL ldappool>=2.0.0 # MPL
# Do not make mock conditional on Python version: we depend on newer code than # Do not make mock conditional on Python version: we depend on newer code than
# in [most] releases of the Python std library. # in [most] releases of the Python std library.
mock>=2.0.0 # BSD mock>=2.0.0 # BSD
@ -388,25 +388,25 @@ nose-exclude>=0.3.0 # LGPL
nosehtmloutput>=0.0.3 # Apache-2.0 nosehtmloutput>=0.0.3 # Apache-2.0
nosexcover>=1.0.10 # BSD nosexcover>=1.0.10 # BSD
openstack-doc-tools>=1.5.0 # Apache-2.0 openstack-doc-tools>=1.5.0 # Apache-2.0
openstack.nose_plugin>=0.7 # Apache-2.0 openstack.nose-plugin>=0.7 # Apache-2.0
openstacksdk>=0.9.18 # Apache-2.0 openstacksdk>=0.9.18 # Apache-2.0
os-api-ref>=1.4.0 # Apache-2.0 os-api-ref>=1.4.0 # Apache-2.0
oslosphinx>=4.7.0 # Apache-2.0 oslosphinx>=4.7.0 # Apache-2.0
oslotest>=1.10.0 # Apache-2.0 oslotest>=1.10.0 # Apache-2.0
ovsdbapp>=0.6.0 # Apache-2.0 ovsdbapp>=0.6.0 # Apache-2.0
proboscis>=1.2.5.3 # Apache-2.0 proboscis>=1.2.5.3 # Apache-2.0
psycopg2>=2.6.2 # LGPL/ZPL psycopg2>=2.6.2 # LGPL/ZPL
pysendfile>=2.0.0 # MIT pysendfile>=2.0.0 # MIT
python-consul>=0.4.7 # MIT License python-consul>=0.4.7 # MIT License
python-subunit>=0.0.18 # Apache-2.0/BSD python-subunit>=0.0.18 # Apache-2.0/BSD
python-pytun>=2.2.1 # MIT python-pytun>=2.2.1 # MIT
pyzmq>=14.3.1 # LGPL+BSD pyzmq>=14.3.1 # LGPL+BSD
redis>=2.10.0 # MIT redis>=2.10.0 # MIT
hiredis>=0.2.0 # BSD hiredis>=0.2.0 # BSD
requests-mock>=1.1.0 # Apache-2.0 requests-mock>=1.1.0 # Apache-2.0
tenacity>=3.2.1 # Apache-2.0 tenacity>=3.2.1 # Apache-2.0
retrying>=1.2.3,!=1.3.0 # Apache-2.0 retrying>=1.2.3,!=1.3.0 # Apache-2.0
spec_cleaner>=0.8.2,!=0.9.3 # BSD spec-cleaner>=0.8.2,!=0.9.3 # BSD
selenium>=2.50.1 # Apache-2.0 selenium>=2.50.1 # Apache-2.0
# While setuptools cannot deal with pre-installed incompatible versions, # While setuptools cannot deal with pre-installed incompatible versions,
# setting a lower bound is not harmful - it makes error messages cleaner. DO # setting a lower bound is not harmful - it makes error messages cleaner. DO
@ -425,7 +425,7 @@ sphinxcontrib-seqdiag>=0.8.4 # BSD
sphinxcontrib-pecanwsme>=0.8.0 # Apache-2.0 sphinxcontrib-pecanwsme>=0.8.0 # Apache-2.0
sphinxcontrib-fulltoc>=1.2.0 # Apache-2.0 sphinxcontrib-fulltoc>=1.2.0 # Apache-2.0
sphinxmark>=0.1.14 # Apache-2.0 sphinxmark>=0.1.14 # Apache-2.0
stestr>=1.0.0 # Apache-2.0 stestr>=1.0.0 # Apache-2.0
sushy>=0.1.0 # Apache-2.0 sushy>=0.1.0 # Apache-2.0
testrepository>=0.0.18 # Apache-2.0/BSD testrepository>=0.0.18 # Apache-2.0/BSD
testresources>=2.0.0 # Apache-2.0/BSD testresources>=2.0.0 # Apache-2.0/BSD
@ -434,19 +434,19 @@ testtools>=1.4.0 # MIT
trollius>=1.0 # Apache-2.0 trollius>=1.0 # Apache-2.0
ujson>=1.35 # BSD ujson>=1.35 # BSD
unittest2>=1.1.0 # BSD unittest2>=1.1.0 # BSD
virtualbmc>=1.0.0 # Apache-2.0 virtualbmc>=1.0.0 # Apache-2.0
virtualenv>=13.1.0 # MIT virtualenv>=13.1.0 # MIT
wrapt>=1.7.0 # BSD License wrapt>=1.7.0 # BSD License
WebTest>=2.0.27 # MIT WebTest>=2.0.27 # MIT
Werkzeug>=0.7 # BSD License Werkzeug>=0.7 # BSD License
whereto>=0.3.0 # Apache-2.0 whereto>=0.3.0 # Apache-2.0
xmltodict>=0.10.1 # MIT xmltodict>=0.10.1 # MIT
wsgi_intercept>=1.4.1 # MIT License wsgi-intercept>=1.4.1 # MIT License
xvfbwrapper>=0.1.3 #license: MIT xvfbwrapper>=0.1.3 #license: MIT
zake>=0.1.6 # Apache-2.0 zake>=0.1.6 # Apache-2.0
zuul-sphinx>=0.1.2 # Apache-2.0 zuul-sphinx>=0.1.2 # Apache-2.0
shade>=1.17.0 # Apache-2.0 shade>=1.17.0 # Apache-2.0
sadisplay>=0.4.8 # BSD sadisplay>=0.4.8 # BSD
# Indirect dependencies that need blocking # Indirect dependencies that need blocking
daiquiri>=1.2.1 daiquiri>=1.2.1

View File

@ -67,6 +67,18 @@ def main():
print(msg) print(msg)
error_count += 1 error_count += 1
# Check that global requirements are uniformly formatted
print('\nValidating uniform formatting on %s' % args.global_requirements)
with open(args.global_requirements, 'rt') as f:
for line in f:
if line == '\n':
continue
req = requirement.parse_line(line)
normed_req = req.to_line(comment_prefix=' ', sort_specifiers=True)
if line.rstrip() != normed_req.rstrip():
print("-%s\n+%s" % (line.rstrip(), normed_req.rstrip()))
error_count += 1
# Check that all of the items in the global-requirements list # Check that all of the items in the global-requirements list
# appear in exactly one of the constraints file or the blacklist. # appear in exactly one of the constraints file or the blacklist.
print('\nChecking %s' % args.blacklist) print('\nChecking %s' % args.blacklist)