Update pip and setuptools in requirements txt

Versions selected to be pre-19 pip
due to unresolved issues with the build systems

Upgrade everything, party on

document new process

rotate license files

fix Swagger schema generation target

Remove --ignore-installed flag
This commit is contained in:
Seth Foster
2019-11-18 15:12:45 -05:00
committed by AlanCoding
parent 679d531930
commit 7873d08311
31 changed files with 380 additions and 392 deletions

View File

@@ -1,10 +1,37 @@
# Dependency Management
The `requirements.txt` and `requirements_ansible.txt` files are generated from `requirements.in` and `requirements_ansible.in`, respectively, using `pip-tools` `pip-compile`.
Run `./updater.sh` command from inside `./requirements` directory of the awx repository.
## How To Use
Make sure you have `patch, awk, python3, python2, python3-venv, python2-virtualenv, pip2, pip3` installed.
Commands should from inside `./requirements` directory of the awx repository.
If you are using the development container image, you need to run `dnf install libpq-devel libcurl-devel`. These packages are only installed temporarily in the Dockerfile.
Make sure you have `patch, awk, python3, python2, python3-venv, python2-virtualenv, pip2, pip3` installed. The development container image should have all these.
### Upgrading or Adding Select Libraries
If you need to add or upgrade one targeted library, then modify `requirements.in`,
then run the script:
`./updater.sh`
#### Upgrading Unpinned Dependency
If you require a new version of a dependency that does not have a pinned version
for a fix or feature, pin a minimum version and run `./updater.sh`. For example,
replace the line `asgi-amqp` with `asgi-amqp>=1.1.4`, and consider leaving a
note.
Then next time that a general upgrade is performed, the minimum version specifiers
can be removed, because `*.txt` files are upgraded to latest.
### Upgrading Dependencies
You can upgrade (`pip-compile --upgrade`) the dependencies by running
`./updater.sh upgrade`.
## What The Script Does
This script will:
@@ -13,7 +40,6 @@ This script will:
- including an automated patch that adds `python_version < "3"` for Python 2 backward compatibility
- Removes the `docutils` dependency line from `requirements.txt` and `requirements_ansible.txt`
You can also upgrade (`pip-compile --upgrade`) the dependencies by running `./updater.sh upgrade`.
## Licenses and Source Files
@@ -29,3 +55,97 @@ pip download <pypi library name> -d docs/licenses/ --no-binary :all: --no-deps
```
Make sure to delete the old tarball if it is an upgrade.
## UPGRADE BLOCKERs
Anything pinned in `*.in` files involves additional manual work in
order to upgrade. Some information related to that work is outlined here.
### django
For any upgrade of Django, it must be confirmed that
we don't regress on FIPS support before merging.
See internal integration test knowledge base article `how_to_test_FIPS`
for instructions.
If operating in a FIPS environment, `hashlib.md5()` will raise a `ValueError`,
but will support the `usedforsecurity` keyword on RHEL and Centos systems.
Keep an eye on https://code.djangoproject.com/ticket/28401
The override of `names_digest` could easily be broken in a future version.
Check that the import remains the same in the desired version.
https://github.com/django/django/blob/af5ec222ccd24e81f9fec6c34836a4e503e7ccf7/django/db/backends/base/schema.py#L7
### social-auth-app-django
django-social keeps a list of backends in memory that it gathers
based on the value of `settings.AUTHENTICATION_BACKENDS` *at import time*:
https://github.com/python-social-auth/social-app-django/blob/c1e2795b00b753d58a81fa6a0261d8dae1d9c73d/social_django/utils.py#L13
Our `settings.AUTHENTICATION_BACKENDS` can *change*
dynamically as Tower settings are changed (i.e., if somebody
configures Github OAuth2 integration), so we need to
_overwrite_ this in-memory value at the top of every request so
that we have the latest version
see: https://github.com/ansible/tower/issues/1979
### django-oauth-toolkit
Version 1.2.0 of this project has a bug that error when revoking tokens.
This is fixed in the master branch but is not yet released.
When upgrading past 1.2.0 in the future, the `0025` migration needs to be
edited, just like the old migration was edited in the project:
https://github.com/jazzband/django-oauth-toolkit/commit/96538876d0d7ea0319ba5286f9bde842a906e1c5
The field can simply have the validator method `validate_uris` removed.
### azure-keyvault
Upgrading to 4.0.0 causes error because imports changed.
```
File "/var/lib/awx/venv/awx/lib64/python3.6/site-packages/awx/main/credential_plugins/azure_kv.py", line 4, in <module>
from azure.keyvault import KeyVaultClient, KeyVaultAuthentication
ImportError: cannot import name 'KeyVaultClient'
```
### slackclient
Imports as used in `awx/main/notifications/slack_backend.py` changed
in version 2.0. This plugin code will need to change and be re-tested
as the upgrade takes place.
### django-jsonfield
Instead of calling a `loads()` operation, the returned value is casted into
a string in some cases, introduced in the change:
https://github.com/adamchainz/django-jsonfield/pull/14
This breaks a very large amount of AWX code that assumes these fields
are returned as dicts. Upgrading this library will require a refactor
to accomidate this change.
### pip and setuptools
The offline installer needs to have functionality confirmed before upgrading these.
## Library Notes
### celery
This is only used for the beat feature (running periodic tasks).
This could be replaced, see: https://github.com/ansible/awx/pull/2530
### requests-futures
This can be removed when a solution for the external log queuing is ready.
https://github.com/ansible/awx/pull/5092
### asgi-amqp
This library is not compatible with channels 2 and is not expected
to become so. This drives other pins in the requirements file.

View File

@@ -1,53 +1,48 @@
ansible-runner==1.4.4
ansiconv==1.0.0
appdirs==1.4.2
asgi-amqp==1.1.4
azure-keyvault==1.1.0
boto==2.47.0
channels==1.1.8
celery==4.3.0
daphne==1.3.0 # Last before backwards-incompatible channels 2 upgrade
twisted[tls]>=17.1 # from daphne, see https://github.com/django/daphne/pull/257
Django==2.2.4
django-auth-ldap==1.7.0
django-cors-headers==2.4.0
django-crum==0.7.2
django-extensions==2.0.0
django-jsonfield==1.2.0
django-oauth-toolkit==1.1.3
django-polymorphic==2.0.2
django-pglocks==1.0.2
django-qsstats-magic==1.1.0
django-radius==1.3.3
django-solo==1.1.3
django-split-settings==0.3.0
django-taggit==0.22.2
djangorestframework==3.9.4
djangorestframework-yaml==1.0.3
GitPython==2.1.11
irc==16.2
jinja2==2.10.1
jsonschema==2.6.0
Markdown==2.6.11 # used for formatting API help
openshift==0.9.0
ordereddict==1.1
prometheus_client==0.6.0
psutil==5.4.3
psycopg2==2.8.2
pygerduty==0.37.0
pyparsing==2.2.0
python-dateutil==2.7.2 # contains support for TZINFO= parsing
python-memcached==1.59
python-radius==1.0
python3-saml==1.4.0
social-auth-core==3.0.0
social-auth-app-django==2.1.0
requests==2.21.0
requests-futures==0.9.7
slackclient==1.1.2
tacacs_plus==1.0
twilio==6.10.4
uWSGI==2.0.17
uwsgitop==0.10.0
pip==9.0.1
setuptools==36.0.1
ansible-runner
ansiconv==1.0.0 # UPGRADE BLOCKER: from 2013, consider replacing instead of upgrading
asgi-amqp>=1.1.4 # see library notes, related to channels 2
azure-keyvault==1.1.0 # see UPGRADE BLOCKERs
boto # replacement candidate https://github.com/ansible/awx/issues/2115
channels==1.1.8 # UPGRADE BLOCKER: Last before backwards-incompatible channels 2 upgrade
celery==4.3.0 # see library notes
daphne==1.4.2 # UPGRADE BLOCKER: last before channels 2 but not pinned by other deps
Django==2.2.7 # see UPGRADE BLOCKERs
django-auth-ldap
django-cors-headers
django-crum
django-extensions
django-jsonfield==1.2.0 # see UPGRADE BLOCKERs
django-oauth-toolkit==1.1.3 # see UPGRADE BLOCKERs
django-polymorphic
django-pglocks
django-qsstats-magic
django-radius==1.3.3 # FIX auth does not work with later versions
django-solo
django-split-settings
django-taggit
djangorestframework
djangorestframework-yaml
GitPython
irc
jinja2
jsonschema
Markdown # used for formatting API help
openshift
prometheus_client
psycopg2
pygerduty
pyparsing
python-memcached
python-radius
python3-saml
social-auth-core==3.2.0 # see UPGRADE BLOCKERs
social-auth-app-django==3.1.0 # see UPGRADE BLOCKERs
requests
requests-futures # see library notes
slackclient==1.1.2 # see UPGRADE BLOCKERs
tacacs_plus==1.0 # UPGRADE BLOCKER: auth does not work with later versions
twilio
uWSGI
uwsgitop
pip==19.3.1 # see UPGRADE BLOCKERs
setuptools==42.0.1 # see UPGRADE BLOCKERs

View File

@@ -1,135 +1,132 @@
adal==1.2.1 # via msrestazure
amqp==2.4.2 # via kombu
adal==1.2.2 # via msrestazure
amqp==2.5.2 # via kombu
ansible-runner==1.4.4
ansiconv==1.0.0
appdirs==1.4.2
argparse==1.4.0 # via uwsgitop
asgi-amqp==1.1.4
asgiref==1.1.2 # via asgi-amqp, channels, daphne
asn1crypto==0.24.0 # via cryptography
attrs==19.1.0 # via automat, service-identity, twisted
autobahn==19.5.1 # via daphne
automat==0.7.0 # via twisted
azure-common==1.1.21 # via azure-keyvault
attrs==19.3.0 # via automat, jsonschema, twisted
autobahn==19.11.1 # via daphne
automat==0.8.0 # via twisted
azure-common==1.1.23 # via azure-keyvault
azure-keyvault==1.1.0
azure-nspkg==3.0.2 # via azure-keyvault
billiard==3.6.0.0 # via celery
boto==2.47.0
billiard==3.6.1.0 # via celery
boto==2.49.0
cachetools==3.1.1 # via google-auth
celery==4.3.0
certifi==2019.3.9 # via kubernetes, msrest, requests
cffi==1.12.3 # via cryptography
certifi==2019.11.28 # via kubernetes, msrest, requests
cffi==1.13.2 # via cryptography
channels==1.1.8
chardet==3.0.4 # via requests
constantly==15.1.0 # via twisted
cryptography==2.6.1 # via adal, azure-keyvault, pyopenssl, service-identity
daphne==1.3.0
defusedxml==0.5.0 # via python3-openid, python3-saml, social-auth-core
cryptography==2.8 # via adal, autobahn, azure-keyvault
daphne==1.4.2
defusedxml==0.6.0 # via python3-openid, python3-saml, social-auth-core
dictdiffer==0.8.0 # via openshift
django-auth-ldap==1.7.0
django-cors-headers==2.4.0
django-crum==0.7.2
django-extensions==2.0.0
django-auth-ldap==2.1.0
django-cors-headers==3.2.0
django-crum==0.7.4
django-extensions==2.2.5
django-jsonfield==1.2.0
django-oauth-toolkit==1.1.3
django-pglocks==1.0.2
django-polymorphic==2.0.2
django-pglocks==1.0.3
django-polymorphic==2.1.2
django-qsstats-magic==1.1.0
django-radius==1.3.3
django-solo==1.1.3
django-split-settings==0.3.0
django-taggit==0.22.2
django==2.2.4
django-split-settings==1.0.0
django-taggit==1.2.0
django==2.2.7
djangorestframework-yaml==1.0.3
djangorestframework==3.9.4
djangorestframework==3.10.3
future==0.16.0 # via django-radius
gitdb2==2.0.5 # via gitpython
gitpython==2.1.11
google-auth==1.6.3 # via kubernetes
gitdb2==2.0.6 # via gitpython
gitpython==3.0.5
google-auth==1.7.1 # via kubernetes
hyperlink==19.0.0 # via twisted
idna==2.8 # via hyperlink, requests, twisted
idna==2.8 # via hyperlink, requests
importlib-metadata==1.1.0 # via inflect, irc, jsonschema, kombu
importlib-resources==1.0.2 # via jaraco.text
incremental==17.5.0 # via twisted
inflect==2.1.0 # via jaraco.itertools
irc==16.2
inflect==3.0.2 # via jaraco.itertools
irc==17.1
isodate==0.6.0 # via msrest, python3-saml
jaraco.classes==2.0 # via jaraco.collections
jaraco.collections==2.0 # via irc
jaraco.collections==2.1 # via irc
jaraco.functools==2.0 # via irc, jaraco.text, tempora
jaraco.itertools==4.4.2 # via irc
jaraco.logging==2.0 # via irc
jaraco.stream==2.0 # via irc
jaraco.text==3.0 # via irc, jaraco.collections
jinja2==2.10.1
jaraco.text==3.2.0 # via irc, jaraco.collections
jinja2==2.10.3
jsonpickle==1.2 # via asgi-amqp
jsonschema==2.6.0
kombu==4.5.0 # via asgi-amqp, celery
kubernetes==9.0.0 # via openshift
jsonschema==3.2.0
kombu==4.6.6 # via asgi-amqp, celery
kubernetes==10.0.1 # via openshift
lockfile==0.12.2 # via python-daemon
lxml==4.3.3 # via xmlsec
markdown==2.6.11
lxml==4.4.2 # via xmlsec
markdown==3.1.1
markupsafe==1.1.1 # via jinja2
more-itertools==7.0.0 # via irc, jaraco.functools, jaraco.itertools
more-itertools==8.0.0 # via irc, jaraco.functools, jaraco.itertools, zipp
msgpack-python==0.5.6 # via asgi-amqp
msrest==0.6.6 # via azure-keyvault, msrestazure
msrestazure==0.6.0 # via azure-keyvault
msrest==0.6.10 # via azure-keyvault, msrestazure
msrestazure==0.6.2 # via azure-keyvault
netaddr==0.7.19 # via pyrad
oauthlib==3.0.1 # via django-oauth-toolkit, requests-oauthlib, social-auth-core
openshift==0.9.0
ordereddict==1.1
pexpect==4.6.0 # via ansible-runner
oauthlib==3.1.0 # via django-oauth-toolkit, requests-oauthlib, social-auth-core
openshift==0.10.0
pexpect==4.7.0 # via ansible-runner
pkgconfig==1.5.1 # via xmlsec
prometheus_client==0.6.0
psutil==5.4.3
psycopg2==2.8.2
prometheus-client==0.7.1
psutil==5.6.7 # via ansible-runner
psycopg2==2.8.4
ptyprocess==0.6.0 # via pexpect
pyasn1-modules==0.2.5 # via google-auth, python-ldap, service-identity
pyasn1==0.4.5 # via pyasn1-modules, python-ldap, rsa, service-identity
pyasn1-modules==0.2.7 # via google-auth, python-ldap
pyasn1==0.4.8 # via pyasn1-modules, python-ldap, rsa
pycparser==2.19 # via cffi
pygerduty==0.37.0
pygerduty==0.38.2
pyhamcrest==1.9.0 # via twisted
pyjwt==1.7.1 # via adal, social-auth-core, twilio
pyopenssl==19.0.0 # via twisted
pyparsing==2.2.0
pyrad==2.1 # via django-radius
pysocks==1.7.0 # via twilio
python-daemon==2.2.3 # via ansible-runner
python-dateutil==2.7.2
pyparsing==2.4.5
pyrad==2.2 # via django-radius
pyrsistent==0.15.6 # via jsonschema
python-daemon==2.2.4 # via ansible-runner
python-dateutil==2.8.1 # via adal, kubernetes
python-ldap==3.2.0 # via django-auth-ldap
python-memcached==1.59
python-radius==1.0
python-string-utils==0.6.0 # via openshift
python3-openid==3.1.0 # via social-auth-core
python3-saml==1.4.0
python3-saml==1.9.0
pytz==2019.3 # via celery, django, irc, tempora, twilio
pyyaml==5.1 # via ansible-runner, djangorestframework-yaml, kubernetes
requests-futures==0.9.7
requests-oauthlib==1.2.0 # via kubernetes, msrest, social-auth-core
requests==2.21.0
pyyaml==5.2 # via ansible-runner, djangorestframework-yaml, kubernetes
requests-futures==1.0.0
requests-oauthlib==1.3.0 # via kubernetes, msrest, social-auth-core
requests==2.22.0
rsa==4.0 # via google-auth
ruamel.yaml==0.15.99 # via openshift
service-identity==18.1.0 # via twisted
simplejson==3.16.0 # via uwsgitop
six==1.12.0 # via ansible-runner, asgi-amqp, asgiref, autobahn, automat, cryptography, django-extensions, google-auth, irc, isodate, jaraco.classes, jaraco.collections, jaraco.itertools, jaraco.logging, jaraco.stream, kubernetes, openshift, pygerduty, pyhamcrest, pyopenssl, pyrad, python-dateutil, python-memcached, slackclient, social-auth-app-django, social-auth-core, tacacs-plus, tempora, twilio, txaio, websocket-client
ruamel.yaml.clib==0.2.0 # via ruamel.yaml
ruamel.yaml==0.16.5 # via openshift
six==1.13.0 # via ansible-runner, asgi-amqp, asgiref, autobahn, automat, cryptography, django-extensions, google-auth, isodate, jaraco.classes, jaraco.collections, jaraco.itertools, jaraco.logging, jaraco.stream, jaraco.text, jsonschema, kubernetes, openshift, pygerduty, pyhamcrest, pyrad, pyrsistent, python-dateutil, python-memcached, slackclient, social-auth-app-django, social-auth-core, tacacs-plus, tempora, twilio, txaio, websocket-client
slackclient==1.1.2
smmap2==2.0.5 # via gitdb2
social-auth-app-django==2.1.0
social-auth-core==3.0.0
social-auth-app-django==3.1.0
social-auth-core==3.2.0
sqlparse==0.3.0 # via django
tacacs_plus==1.0
tempora==1.14.1 # via irc, jaraco.logging
twilio==6.10.4
twisted[tls]==19.2.0
twilio==6.33.1
twisted==19.10.0 # via daphne
txaio==18.8.1 # via autobahn
typing==3.6.6 # via django-extensions
urllib3==1.24.3 # via kubernetes, requests
uwsgi==2.0.17
uwsgitop==0.10.0
urllib3==1.25.7 # via kubernetes, requests
uwsgi==2.0.18
uwsgitop==0.11
vine==1.3.0 # via amqp, celery
websocket-client==0.56.0 # via kubernetes, slackclient
xmlsec==1.3.3 # via python3-saml
zope.interface==4.6.0 # via twisted
zipp==0.6.0 # via importlib-metadata
zope.interface==4.7.1 # via twisted
# The following packages are considered to be unsafe in a requirements file:
pip==9.0.1
setuptools==36.0.1
pip==19.3.1
setuptools==42.0.1
wheel==0.33.6

View File

@@ -53,8 +53,8 @@ ovirt-engine-sdk-python==4.3.0 # minimum set inside Ansible facts module requ
pycurl==7.43.0.1 # higher versions will not install without SSL backend specified
# AWX usage
psutil==5.4.3 # same as AWX requirement
setuptools==36.0.1
pip==9.0.1
pip==19.3.1 # see upgrade blockers
setuptools==42.0.1 # see upgrade blockers
# VMware
pyvmomi==6.7.3
# WinRM

View File

@@ -1,9 +1,8 @@
adal==1.2.1 # via msrestazure
adal==1.2.2 # via msrestazure
apache-libcloud==2.5.0
appdirs==1.4.3 # via openstacksdk
applicationinsights==0.11.9 # via azure-cli-core
argcomplete==1.9.5 # via azure-cli-core, knack
asn1crypto==0.24.0 # via cryptography
argcomplete==1.10.3 # via azure-cli-core, knack
azure-cli-core==2.0.35
azure-cli-nspkg==3.0.2
azure-common==1.1.11
@@ -39,82 +38,83 @@ azure-mgmt-web==0.41.0
azure-nspkg==2.0.0
azure-storage==0.35.1
backports.ssl-match-hostname==3.5.0.1
bcrypt==3.1.6 # via paramiko
bcrypt==3.1.7 # via paramiko
boto3==1.9.223
boto==2.47.0
botocore==1.12.223 # via boto3, s3transfer
cachetools==3.1.0 # via google-auth
certifi==2019.3.9 # via msrest, requests
cffi==1.12.3 # via bcrypt, cryptography, pynacl
botocore==1.12.253 # via boto3, s3transfer
cachetools==3.1.1 # via google-auth
certifi==2019.11.28 # via msrest, requests
cffi==1.13.2 # via bcrypt, cryptography, pynacl
chardet==3.0.4 # via requests
colorama==0.4.1 # via azure-cli-core, knack
cryptography==2.6.1 # via adal, azure-keyvault, azure-storage, openstacksdk, paramiko, pyopenssl, requests-credssp, requests-kerberos, requests-ntlm
decorator==4.4.0 # via dogpile.cache, openstacksdk
docutils==0.14 # via botocore
dogpile.cache==0.7.1 # via openstacksdk
cryptography==2.8 # via adal, azure-keyvault, azure-storage, openstacksdk, paramiko, pyopenssl, requests-credssp, requests-kerberos, requests-ntlm
decorator==4.4.1 # via dogpile.cache, openstacksdk
docutils==0.15.2 # via botocore
dogpile.cache==0.9.0 # via openstacksdk
enum34==1.1.6; python_version < "3" # via cryptography, knack, msrest, ovirt-engine-sdk-python
futures==3.2.0; python_version < "3" # via openstacksdk, s3transfer
futures==3.3.0; python_version < "3" # via openstacksdk, s3transfer
google-auth==1.6.2
humanfriendly==4.18 # via azure-cli-core
idna==2.8 # via requests
ipaddress==1.0.22; python_version < "3" # via cryptography, openstacksdk
ipaddress==1.0.23; python_version < "3" # via cryptography, openstacksdk
iso8601==0.1.12 # via keystoneauth1, openstacksdk
isodate==0.6.0 # via msrest
jinja2==2.10.1
jmespath==0.9.4 # via azure-cli-core, boto3, botocore, knack, openstacksdk
jsonpatch==1.23 # via openstacksdk
jsonpatch==1.24 # via openstacksdk
jsonpointer==2.0 # via jsonpatch
keystoneauth1==3.14.0 # via openstacksdk
keystoneauth1==3.18.0 # via openstacksdk
knack==0.3.3 # via azure-cli-core
lxml==4.3.3 # via ncclient, pyvmomi
lxml==4.4.2 # via ncclient
markupsafe==1.1.1 # via jinja2
monotonic==1.5; python_version < "3" # via humanfriendly
msrest==0.6.1
msrestazure==0.5.0
munch==2.3.2 # via openstacksdk
munch==2.5.0 # via openstacksdk
ncclient==0.6.3
netaddr==0.7.19
netifaces==0.10.9 # via openstacksdk
ntlm-auth==1.3.0 # via requests-credssp, requests-ntlm
oauthlib==3.0.1 # via requests-oauthlib
ntlm-auth==1.4.0 # via requests-credssp, requests-ntlm
oauthlib==3.1.0 # via requests-oauthlib
openstacksdk==0.31.1
os-service-types==1.7.0 # via keystoneauth1, openstacksdk
ovirt-engine-sdk-python==4.3.0
packaging==19.0
paramiko==2.6.0 # via azure-cli-core, ncclient
pbr==5.2.0 # via keystoneauth1, openstacksdk, os-service-types, stevedore
packaging==19.2
paramiko==2.7.0 # via azure-cli-core, ncclient
pbr==5.4.4 # via keystoneauth1, openstacksdk, os-service-types, stevedore
psutil==5.4.3
pyasn1-modules==0.2.5 # via google-auth
pyasn1==0.4.5 # via pyasn1-modules, requests-credssp, rsa
pyasn1-modules==0.2.7 # via google-auth
pyasn1==0.4.8 # via pyasn1-modules, requests-credssp, rsa
pycparser==2.19 # via cffi
pycurl==7.43.0.1
pygments==2.3.1 # via azure-cli-core, knack
pygments==2.5.2 # via azure-cli-core, knack
pyjwt==1.7.1 # via adal, azure-cli-core
pykerberos==1.2.1 # via requests-kerberos
pynacl==1.3.0 # via paramiko
pyopenssl==19.0.0 # via azure-cli-core, pyvmomi, requests-credssp
pyparsing==2.4.0 # via packaging
python-dateutil==2.6.1 # via adal, azure-storage, botocore
pyopenssl==19.1.0 # via azure-cli-core, requests-credssp
pyparsing==2.4.5 # via packaging
python-dateutil==2.8.1 # via adal, azure-storage, botocore
pyvmomi==6.7.3
pywinrm[kerberos]==0.3.0
pyyaml==5.1 # via azure-cli-core, knack, openstacksdk
pyyaml==5.2 # via azure-cli-core, knack, openstacksdk
requests-credssp==1.0.2
requests-kerberos==0.12.0 # via pywinrm
requests-ntlm==1.1.0 # via pywinrm
requests-oauthlib==1.2.0 # via msrest
requests==2.21.0
requests-oauthlib==1.3.0 # via msrest
requests==2.22.0
requestsexceptions==1.4.0 # via openstacksdk
rsa==4.0 # via google-auth
s3transfer==0.2.1 # via boto3
selectors2==2.0.1 # via ncclient
six==1.12.0 # via azure-cli-core, bcrypt, cryptography, google-auth, isodate, keystoneauth1, knack, munch, ncclient, openstacksdk, ovirt-engine-sdk-python, packaging, pynacl, pyopenssl, python-dateutil, pyvmomi, pywinrm, requests-credssp, stevedore
stevedore==1.30.1 # via keystoneauth1
six==1.13.0 # via azure-cli-core, bcrypt, cryptography, google-auth, isodate, keystoneauth1, knack, munch, ncclient, openstacksdk, ovirt-engine-sdk-python, packaging, pynacl, pyopenssl, python-dateutil, pyvmomi, pywinrm, requests-credssp, stevedore
stevedore==1.31.0 # via keystoneauth1
tabulate==0.8.2 # via azure-cli-core, knack
typing==3.6.6; python_version < "3" # via msrest
urllib3==1.24.3 # via botocore, requests
wheel==0.30.0 # via azure-cli-core
typing==3.7.4.1; python_version < "3" # via msrest
urllib3==1.25.7 # via botocore, requests
# wheel==0.30.0 # via azure-cli-core
xmltodict==0.12.0 # via pywinrm
# The following packages are considered to be unsafe in a requirements file:
pip==9.0.1
setuptools==36.0.1
pip==19.3.1
setuptools==42.0.1
wheel==0.33.6

View File

@@ -5,3 +5,5 @@ pytest-runner
isort
virtualenv
m2r
twine # from python-daemon
wheel==0.33.6