#######################################################################################
# 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.8.0
    # via -r requirements.in
appdirs==1.4.4
    # via openstacksdk
async-timeout==4.0.2
    # via aiokafka
attrs==23.1.0
    # via cmd2
autopage==0.5.1
    # via cliff
certifi==2023.5.7
    # via
    #   -r requirements.in
    #   requests
cffi==1.15.1
    # via
    #   -r requirements.in
    #   cryptography
charset-normalizer==3.1.0
    # via
    #   -r requirements.in
    #   requests
cliff==4.3.0
    # via
    #   gnocchiclient
    #   osc-lib
    #   python-neutronclient
cmd2==2.4.3
    # via cliff
contourpy==1.0.7
    # via matplotlib
cryptography==40.0.2
    # via
    #   -r requirements.in
    #   openstacksdk
cycler==0.11.0
    # via matplotlib
dateparser==1.1.8
    # via prometheus-api-client
debtcollector==2.5.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.2.0
    # via openstacksdk
fonttools==4.39.4
    # via matplotlib
futurist==2.4.1
    # via gnocchiclient
gnocchiclient==7.0.8
    # via -r requirements.in
httmock==1.4.0
    # via prometheus-api-client
humanfriendly==10.0
    # via
    #   -r requirements.in
    #   pyvcloud
idna==3.4
    # via requests
importlib-metadata==6.6.0
    # via cliff
importlib-resources==5.12.0
    # via matplotlib
iso8601==1.1.0
    # via
    #   gnocchiclient
    #   keystoneauth1
    #   openstacksdk
    #   oslo-utils
    #   python-ceilometerclient
    #   python-neutronclient
    #   python-novaclient
jmespath==1.0.1
    # via openstacksdk
jsonpatch==1.32
    # via openstacksdk
jsonpointer==2.3
    # via jsonpatch
kafka-python==2.0.2
    # via aiokafka
keystoneauth1==5.1.2
    # via
    #   gnocchiclient
    #   openstacksdk
    #   osc-lib
    #   python-ceilometerclient
    #   python-cinderclient
    #   python-keystoneclient
    #   python-neutronclient
    #   python-novaclient
kiwisolver==1.4.4
    # via matplotlib
lxml==4.9.2
    # via
    #   -r requirements.in
    #   pyvcloud
    #   unittest-xml-reporting
matplotlib==3.7.1
    # via prometheus-api-client
msgpack==1.0.5
    # via oslo-serialization
netaddr==0.8.0
    # via
    #   oslo-config
    #   oslo-utils
    #   python-neutronclient
netifaces==0.11.0
    # via
    #   openstacksdk
    #   oslo-utils
numpy==1.24.3
    # via
    #   contourpy
    #   matplotlib
    #   pandas
    #   prometheus-api-client
openstacksdk==1.1.0
    # via
    #   os-client-config
    #   osc-lib
    #   python-neutronclient
os-client-config==2.1.0
    # via python-neutronclient
os-service-types==1.7.0
    # via
    #   keystoneauth1
    #   openstacksdk
osc-lib==2.8.0
    # via python-neutronclient
oslo-config==9.1.1
    # via
    #   oslo-log
    #   python-keystoneclient
oslo-context==5.1.1
    # via oslo-log
oslo-i18n==6.0.0
    # via
    #   osc-lib
    #   oslo-config
    #   oslo-log
    #   oslo-utils
    #   python-ceilometerclient
    #   python-cinderclient
    #   python-keystoneclient
    #   python-neutronclient
    #   python-novaclient
oslo-log==5.2.0
    # via python-neutronclient
oslo-serialization==5.1.1
    # via
    #   oslo-log
    #   python-ceilometerclient
    #   python-keystoneclient
    #   python-neutronclient
    #   python-novaclient
oslo-utils==6.1.0
    # via
    #   osc-lib
    #   oslo-log
    #   oslo-serialization
    #   python-ceilometerclient
    #   python-cinderclient
    #   python-keystoneclient
    #   python-neutronclient
    #   python-novaclient
packaging==23.1
    # via
    #   aiokafka
    #   matplotlib
    #   oslo-utils
    #   python-keystoneclient
    #   pyvcloud
pandas==2.0.1
    # via prometheus-api-client
pbr==5.11.1
    # via
    #   keystoneauth1
    #   openstacksdk
    #   os-service-types
    #   osc-lib
    #   oslo-context
    #   oslo-i18n
    #   oslo-log
    #   oslo-serialization
    #   python-ceilometerclient
    #   python-cinderclient
    #   python-keystoneclient
    #   python-neutronclient
    #   python-novaclient
    #   stevedore
pillow==9.5.0
    # via matplotlib
prettytable==0.7.2
    # via
    #   cliff
    #   python-ceilometerclient
    #   python-cinderclient
    #   python-novaclient
prometheus-api-client==0.5.3
    # via -r requirements.in
prometheus-client==0.16.0
    # via -r requirements.in
pycparser==2.21
    # via cffi
pygments==2.15.1
    # via pyvcloud
pyinotify==0.9.6
    # via oslo-log
pyparsing==3.0.9
    # via
    #   matplotlib
    #   oslo-utils
pyperclip==1.8.2
    # via cmd2
python-ceilometerclient==2.9.0
    # via -r requirements.in
python-cinderclient==8.3.0
    # via -r requirements.in
python-dateutil==2.8.2
    # via
    #   dateparser
    #   gnocchiclient
    #   matplotlib
    #   oslo-log
    #   pandas
    #   pyvcloud
python-keystoneclient==5.1.0
    # via
    #   -r requirements.in
    #   python-neutronclient
python-neutronclient==10.0.0
    # via -r requirements.in
python-novaclient==18.3.0
    # via -r requirements.in
pytz==2023.3
    # via
    #   dateparser
    #   oslo-serialization
    #   oslo-utils
    #   pandas
pytz-deprecation-shim==0.1.0.post0
    # via tzlocal
pyvcloud==23.0.4
    # via -r requirements.in
pyyaml==5.3.1
    # via
    #   -r requirements.in
    #   cliff
    #   openstacksdk
    #   oslo-config
    #   pyvcloud
regex==2023.5.5
    # via dateparser
requests==2.30.0
    # via
    #   -r requirements.in
    #   httmock
    #   keystoneauth1
    #   oslo-config
    #   prometheus-api-client
    #   python-ceilometerclient
    #   python-cinderclient
    #   python-keystoneclient
    #   python-neutronclient
    #   pyvcloud
requestsexceptions==1.4.0
    # via openstacksdk
rfc3986==2.0.0
    # via oslo-config
simplejson==3.19.1
    # via
    #   osc-lib
    #   python-cinderclient
    #   python-neutronclient
six==1.16.0
    # via
    #   -r requirements.in
    #   gnocchiclient
    #   keystoneauth1
    #   python-ceilometerclient
    #   python-dateutil
    #   python-keystoneclient
stevedore==5.0.0
    # via
    #   cliff
    #   dogpile-cache
    #   keystoneauth1
    #   osc-lib
    #   oslo-config
    #   python-ceilometerclient
    #   python-cinderclient
    #   python-keystoneclient
    #   python-novaclient
tzdata==2023.3
    # via pandas
tzlocal==4.3
    # via dateparser
ujson==5.7.0
    # via gnocchiclient
unittest-xml-reporting==3.2.0
    # via pyvcloud
urllib3==2.0.2
    # via requests
vcd-api-schemas-type==10.3.0.dev72
    # via pyvcloud
wcwidth==0.2.6
    # via cmd2
wrapt==1.15.0
    # via debtcollector
zipp==3.15.0
    # via
    #   importlib-metadata
    #   importlib-resources
