#######################################################################################
# Copyright ETSI Contributors and Others.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
# implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#######################################################################################
aiokafka==0.7.2
    # via -r requirements.in
appdirs==1.4.4
    # via openstacksdk
attrs==21.4.0
    # via cmd2
autopage==0.4.0
    # via cliff
certifi==2021.10.8
    # via requests
cffi==1.15.0
    # via cryptography
charset-normalizer==2.0.10
    # via requests
cliff==3.10.0
    # via
    #   gnocchiclient
    #   osc-lib
    #   python-neutronclient
cmd2==2.3.3
    # via cliff
cryptography==36.0.1
    # via openstacksdk
debtcollector==2.3.0
    # via
    #   gnocchiclient
    #   oslo.config
    #   oslo.context
    #   oslo.log
    #   oslo.utils
    #   python-keystoneclient
    #   python-neutronclient
decorator==5.1.1
    # via
    #   dogpile.cache
    #   openstacksdk
dogpile.cache==1.1.4
    # via openstacksdk
futurist==2.4.0
    # via gnocchiclient
gnocchiclient==7.0.7
    # via -r requirements.in
humanfriendly==10.0
    # via
    #   -r requirements.in
    #   pyvcloud
idna==3.3
    # via requests
iso8601==1.0.2
    # via
    #   gnocchiclient
    #   keystoneauth1
    #   openstacksdk
    #   oslo.utils
    #   python-ceilometerclient
    #   python-neutronclient
    #   python-novaclient
jmespath==0.10.0
    # via openstacksdk
jsonpatch==1.32
    # via openstacksdk
jsonpointer==2.2
    # via jsonpatch
kafka-python==2.0.2
    # via aiokafka
keystoneauth1==4.4.0
    # via
    #   gnocchiclient
    #   openstacksdk
    #   osc-lib
    #   python-ceilometerclient
    #   python-cinderclient
    #   python-keystoneclient
    #   python-neutronclient
    #   python-novaclient
lxml==4.7.1
    # via
    #   -r requirements.in
    #   pyvcloud
monotonic==1.6
    # via gnocchiclient
msgpack==1.0.3
    # via oslo.serialization
munch==2.5.0
    # via openstacksdk
netaddr==0.8.0
    # via
    #   oslo.config
    #   oslo.utils
    #   python-neutronclient
netifaces==0.11.0
    # via
    #   openstacksdk
    #   oslo.utils
openstacksdk==0.61.0
    # via
    #   os-client-config
    #   osc-lib
os-client-config==2.1.0
    # via python-neutronclient
os-service-types==1.7.0
    # via
    #   keystoneauth1
    #   openstacksdk
osc-lib==2.4.2
    # via python-neutronclient
oslo.config==8.7.1
    # via
    #   oslo.log
    #   python-keystoneclient
oslo.context==3.4.0
    # via oslo.log
oslo.i18n==5.1.0
    # via
    #   osc-lib
    #   oslo.config
    #   oslo.log
    #   oslo.utils
    #   python-ceilometerclient
    #   python-cinderclient
    #   python-keystoneclient
    #   python-neutronclient
    #   python-novaclient
oslo.log==4.6.1
    # via python-neutronclient
oslo.serialization==4.2.0
    # via
    #   oslo.log
    #   python-ceilometerclient
    #   python-keystoneclient
    #   python-neutronclient
    #   python-novaclient
oslo.utils==4.12.0
    # via
    #   osc-lib
    #   oslo.log
    #   oslo.serialization
    #   python-ceilometerclient
    #   python-cinderclient
    #   python-keystoneclient
    #   python-neutronclient
    #   python-novaclient
packaging==21.3
    # via
    #   oslo.utils
    #   pyvcloud
pbr==5.8.0
    # via
    #   cliff
    #   debtcollector
    #   futurist
    #   gnocchiclient
    #   keystoneauth1
    #   openstacksdk
    #   os-service-types
    #   osc-lib
    #   oslo.context
    #   oslo.i18n
    #   oslo.log
    #   oslo.serialization
    #   oslo.utils
    #   python-ceilometerclient
    #   python-cinderclient
    #   python-keystoneclient
    #   python-neutronclient
    #   python-novaclient
    #   stevedore
prettytable==0.7.2
    # via
    #   cliff
    #   python-ceilometerclient
    #   python-cinderclient
    #   python-novaclient
prometheus-client==0.12.0
    # via -r requirements.in
pycparser==2.21
    # via cffi
pygments==2.11.2
    # via pyvcloud
pyinotify==0.9.6
    # via oslo.log
pyparsing==3.0.6
    # via
    #   cliff
    #   oslo.utils
    #   packaging
pyperclip==1.8.2
    # via cmd2
python-ceilometerclient==2.9.0
    # via -r requirements.in
python-cinderclient==8.2.0
    # via -r requirements.in
python-dateutil==2.8.2
    # via
    #   gnocchiclient
    #   oslo.log
    #   pyvcloud
python-keystoneclient==4.4.0
    # via
    #   -r requirements.in
    #   python-neutronclient
python-neutronclient==7.7.0
    # via -r requirements.in
python-novaclient==17.6.0
    # via -r requirements.in
pytz==2021.3
    # via
    #   oslo.serialization
    #   oslo.utils
pyvcloud==23.0.3
    # via -r requirements.in
pyyaml==5.4.1
    # via
    #   -r requirements.in
    #   cliff
    #   openstacksdk
    #   oslo.config
    #   pyvcloud
requests==2.27.1
    # via
    #   -r requirements.in
    #   keystoneauth1
    #   oslo.config
    #   python-ceilometerclient
    #   python-cinderclient
    #   python-keystoneclient
    #   python-neutronclient
    #   pyvcloud
requestsexceptions==1.4.0
    # via openstacksdk
rfc3986==1.5.0
    # via oslo.config
simplejson==3.17.6
    # via
    #   osc-lib
    #   python-cinderclient
    #   python-neutronclient
six==1.16.0
    # via
    #   -r requirements.in
    #   debtcollector
    #   futurist
    #   gnocchiclient
    #   keystoneauth1
    #   munch
    #   python-ceilometerclient
    #   python-dateutil
    #   python-keystoneclient
stevedore==3.5.0
    # via
    #   cliff
    #   dogpile.cache
    #   keystoneauth1
    #   osc-lib
    #   oslo.config
    #   python-ceilometerclient
    #   python-cinderclient
    #   python-keystoneclient
    #   python-novaclient
ujson==5.1.0
    # via gnocchiclient
unittest-xml-reporting==3.0.4
    # via pyvcloud
urllib3==1.26.8
    # via requests
vcd-api-schemas-type==10.3.0.dev72
    # via pyvcloud
wcwidth==0.2.5
    # via cmd2
wrapt==1.13.3
    # via debtcollector
