#######################################################################################
# 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.
#######################################################################################
autopage==0.5.2
    # via cliff
azure-common==1.1.28
    # via
    #   -r requirements.in
    #   azure-mgmt-compute
    #   azure-mgmt-monitor
azure-core==1.34.0
    # via
    #   azure-identity
    #   azure-mgmt-core
azure-identity==1.23.0
    # via -r requirements.in
azure-mgmt-compute==34.1.0
    # via -r requirements.in
azure-mgmt-core==1.5.0
    # via
    #   azure-mgmt-compute
    #   azure-mgmt-monitor
azure-mgmt-monitor==6.0.2
    # via -r requirements.in
cachetools==5.5.2
    # via google-auth
certifi==2025.6.15
    # via requests
cffi==1.17.1
    # via cryptography
charset-normalizer==3.4.2
    # via requests
cliff==4.10.0
    # via gnocchiclient
cmd2==2.6.1
    # via cliff
contourpy==1.3.2
    # via matplotlib
cryptography==45.0.4
    # via
    #   azure-identity
    #   msal
    #   pyjwt
cycler==0.12.1
    # via matplotlib
dateparser==1.2.1
    # via prometheus-api-client
debtcollector==3.0.0
    # via
    #   futurist
    #   gnocchiclient
    #   oslo-config
    #   oslo-utils
    #   python-keystoneclient
fonttools==4.58.4
    # via matplotlib
futurist==3.1.1
    # via gnocchiclient
gnocchiclient==7.2.0
    # via -r requirements.in
google-api-core[grpc]==2.25.1
    # via
    #   google-api-python-client
    #   google-cloud-monitoring
google-api-python-client==2.173.0
    # via -r requirements.in
google-auth==2.40.3
    # via
    #   -r requirements.in
    #   google-api-core
    #   google-api-python-client
    #   google-auth-httplib2
    #   google-cloud-monitoring
google-auth-httplib2==0.2.0
    # via google-api-python-client
google-cloud-monitoring==2.27.2
    # via -r requirements.in
googleapis-common-protos==1.70.0
    # via
    #   google-api-core
    #   grpcio-status
grpcio==1.73.0
    # via
    #   google-api-core
    #   grpcio-status
grpcio-status==1.73.0
    # via google-api-core
httmock==1.4.0
    # via prometheus-api-client
httplib2==0.22.0
    # via
    #   google-api-python-client
    #   google-auth-httplib2
idna==3.10
    # via requests
iso8601==2.1.0
    # via
    #   gnocchiclient
    #   keystoneauth1
    #   oslo-utils
    #   python-ceilometerclient
    #   python-novaclient
isodate==0.7.2
    # via
    #   azure-mgmt-compute
    #   azure-mgmt-monitor
keystoneauth1==5.11.1
    # via
    #   gnocchiclient
    #   python-ceilometerclient
    #   python-keystoneclient
    #   python-novaclient
kiwisolver==1.4.8
    # via matplotlib
matplotlib==3.10.3
    # via prometheus-api-client
msal==1.32.3
    # via
    #   azure-identity
    #   msal-extensions
msal-extensions==1.3.1
    # via azure-identity
msgpack==1.1.1
    # via oslo-serialization
netaddr==1.3.0
    # via
    #   oslo-config
    #   oslo-utils
numpy==2.2.6
    # via
    #   contourpy
    #   matplotlib
    #   pandas
    #   prometheus-api-client
os-service-types==1.7.0
    # via keystoneauth1
oslo-config==9.8.0
    # via python-keystoneclient
oslo-i18n==6.5.1
    # via
    #   oslo-config
    #   oslo-utils
    #   python-ceilometerclient
    #   python-keystoneclient
    #   python-novaclient
oslo-serialization==5.7.0
    # via
    #   python-ceilometerclient
    #   python-keystoneclient
    #   python-novaclient
oslo-utils==9.0.0
    # via
    #   oslo-serialization
    #   python-ceilometerclient
    #   python-keystoneclient
    #   python-novaclient
packaging==25.0
    # via
    #   matplotlib
    #   oslo-utils
    #   python-keystoneclient
pandas==2.3.0
    # via prometheus-api-client
pbr==6.1.1
    # via
    #   keystoneauth1
    #   os-service-types
    #   oslo-i18n
    #   oslo-utils
    #   python-ceilometerclient
    #   python-keystoneclient
    #   python-novaclient
    #   stevedore
pillow==11.2.1
    # via matplotlib
prettytable==0.7.2
    # via
    #   cliff
    #   python-ceilometerclient
    #   python-novaclient
prometheus-api-client==0.6.0
    # via -r requirements.in
prometheus-client==0.22.1
    # via -r requirements.in
proto-plus==1.26.1
    # via
    #   google-api-core
    #   google-cloud-monitoring
protobuf==6.31.1
    # via
    #   google-api-core
    #   google-cloud-monitoring
    #   googleapis-common-protos
    #   grpcio-status
    #   proto-plus
psutil==7.0.0
    # via oslo-utils
pyasn1==0.6.1
    # via
    #   pyasn1-modules
    #   rsa
pyasn1-modules==0.4.2
    # via google-auth
pycparser==2.22
    # via cffi
pyjwt[crypto]==2.10.1
    # via msal
pyparsing==3.2.3
    # via
    #   httplib2
    #   matplotlib
    #   oslo-utils
pyperclip==1.9.0
    # via cmd2
python-ceilometerclient==2.9.0
    # via -r requirements.in
python-dateutil==2.9.0.post0
    # via
    #   dateparser
    #   gnocchiclient
    #   matplotlib
    #   pandas
python-keystoneclient==5.6.0
    # via -r requirements.in
python-novaclient==18.9.0
    # via -r requirements.in
pytz==2025.2
    # via
    #   dateparser
    #   pandas
pyyaml==6.0.2
    # via
    #   -r requirements.in
    #   cliff
    #   oslo-config
    #   oslo-utils
regex==2024.11.6
    # via dateparser
requests==2.32.4
    # via
    #   azure-core
    #   google-api-core
    #   httmock
    #   keystoneauth1
    #   msal
    #   oslo-config
    #   prometheus-api-client
    #   python-ceilometerclient
    #   python-keystoneclient
rfc3986==2.0.0
    # via oslo-config
rsa==4.9.1
    # via google-auth
six==1.17.0
    # via
    #   azure-core
    #   python-ceilometerclient
    #   python-dateutil
stevedore==5.4.1
    # via
    #   cliff
    #   keystoneauth1
    #   oslo-config
    #   python-ceilometerclient
    #   python-keystoneclient
    #   python-novaclient
typing-extensions==4.14.0
    # via
    #   azure-core
    #   azure-identity
    #   azure-mgmt-compute
    #   keystoneauth1
tzdata==2025.2
    # via
    #   oslo-serialization
    #   oslo-utils
    #   pandas
tzlocal==5.3.1
    # via dateparser
ujson==5.10.0
    # via gnocchiclient
uritemplate==4.2.0
    # via google-api-python-client
urllib3==2.5.0
    # via requests
wcwidth==0.2.13
    # via cmd2
wrapt==1.17.2
    # via debtcollector

# The following packages are considered to be unsafe in a requirements file:
# setuptools
