#######################################################################################
# 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.6.0
    # via cliff
azure-common==1.1.28
    # via
    #   -r requirements.in
    #   azure-mgmt-monitor
azure-core==1.38.2
    # via
    #   azure-identity
    #   azure-mgmt-core
azure-identity==1.25.2
    # via -r requirements.in
azure-mgmt-compute==37.2.0
    # via -r requirements.in
azure-mgmt-core==1.6.0
    # via
    #   azure-mgmt-compute
    #   azure-mgmt-monitor
azure-mgmt-monitor==7.0.0
    # via -r requirements.in
backports-strenum==1.3.1
    # via cmd2
certifi==2026.2.25
    # via requests
cffi==2.0.0
    # via cryptography
charset-normalizer==3.4.4
    # via requests
cliff==4.13.2
    # via gnocchiclient
cmd2==3.2.2
    # via cliff
contourpy==1.3.2
    # via matplotlib
cryptography==46.0.5
    # via
    #   azure-identity
    #   google-auth
    #   msal
    #   pyjwt
cycler==0.12.1
    # via matplotlib
dateparser==1.3.0
    # via prometheus-api-client
debtcollector==3.0.0
    # via
    #   futurist
    #   gnocchiclient
    #   oslo-utils
    #   python-keystoneclient
fonttools==4.61.1
    # via matplotlib
futurist==3.2.1
    # via gnocchiclient
gnocchiclient==7.2.0
    # via -r requirements.in
google-api-core[grpc]==2.30.0
    # via
    #   google-api-python-client
    #   google-cloud-monitoring
google-api-python-client==2.190.0
    # via -r requirements.in
google-auth==2.48.0
    # via
    #   -r requirements.in
    #   google-api-core
    #   google-api-python-client
    #   google-auth-httplib2
    #   google-cloud-monitoring
google-auth-httplib2==0.3.0
    # via google-api-python-client
google-cloud-monitoring==2.29.1
    # via -r requirements.in
googleapis-common-protos==1.72.0
    # via
    #   google-api-core
    #   grpcio-status
grpcio==1.78.1
    # via
    #   google-api-core
    #   google-cloud-monitoring
    #   grpcio-status
grpcio-status==1.78.1
    # via google-api-core
httmock==1.4.0
    # via prometheus-api-client
httplib2==0.31.2
    # via
    #   google-api-python-client
    #   google-auth-httplib2
idna==3.11
    # 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.13.1
    # via
    #   gnocchiclient
    #   python-ceilometerclient
    #   python-keystoneclient
    #   python-novaclient
kiwisolver==1.4.9
    # via matplotlib
markdown-it-py==4.0.0
    # via rich
matplotlib==3.10.8
    # via prometheus-api-client
mdurl==0.1.2
    # via markdown-it-py
msal==1.35.0
    # via
    #   azure-identity
    #   msal-extensions
msal-extensions==1.3.1
    # via azure-identity
msgpack==1.1.2
    # 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.8.2
    # via keystoneauth1
oslo-config==10.3.0
    # via python-keystoneclient
oslo-i18n==6.7.2
    # via
    #   oslo-config
    #   oslo-utils
    #   python-ceilometerclient
    #   python-keystoneclient
    #   python-novaclient
oslo-serialization==5.9.1
    # via
    #   python-ceilometerclient
    #   python-keystoneclient
    #   python-novaclient
oslo-utils==10.0.0
    # via
    #   oslo-serialization
    #   python-ceilometerclient
    #   python-keystoneclient
    #   python-novaclient
packaging==26.0
    # via
    #   matplotlib
    #   oslo-utils
    #   python-keystoneclient
pandas==2.3.3
    # via prometheus-api-client
pbr==7.0.3
    # via
    #   keystoneauth1
    #   os-service-types
    #   oslo-i18n
    #   oslo-utils
    #   python-ceilometerclient
    #   python-keystoneclient
    #   python-novaclient
pillow==12.1.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.24.1
    # via -r requirements.in
proto-plus==1.27.1
    # via
    #   google-api-core
    #   google-cloud-monitoring
protobuf==6.33.5
    # via
    #   google-api-core
    #   google-cloud-monitoring
    #   googleapis-common-protos
    #   grpcio-status
    #   proto-plus
psutil==7.2.2
    # via oslo-utils
pyasn1==0.6.2
    # via
    #   pyasn1-modules
    #   rsa
pyasn1-modules==0.4.2
    # via google-auth
pycparser==3.0
    # via cffi
pygments==2.19.2
    # via rich
pyjwt[crypto]==2.11.0
    # via
    #   msal
    #   pyjwt
pyparsing==3.3.2
    # via
    #   httplib2
    #   matplotlib
    #   oslo-utils
pyperclip==1.11.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.7.0
    # via -r requirements.in
python-novaclient==18.12.0
    # via -r requirements.in
pytz==2025.2
    # via
    #   dateparser
    #   pandas
pyyaml==6.0.3
    # via
    #   -r requirements.in
    #   cliff
    #   oslo-config
    #   oslo-utils
regex==2026.2.19
    # via dateparser
requests==2.32.5
    # 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
rich==14.3.3
    # via
    #   cmd2
    #   rich-argparse
rich-argparse==1.7.2
    # via cmd2
rsa==4.9.1
    # via google-auth
six==1.17.0
    # via
    #   python-ceilometerclient
    #   python-dateutil
stevedore==5.7.0
    # via
    #   cliff
    #   keystoneauth1
    #   oslo-config
    #   python-ceilometerclient
    #   python-keystoneclient
    #   python-novaclient
typing-extensions==4.15.0
    # via
    #   azure-core
    #   azure-identity
    #   azure-mgmt-compute
    #   azure-mgmt-monitor
    #   cmd2
    #   cryptography
    #   grpcio
    #   keystoneauth1
    #   os-service-types
tzdata==2025.3
    # via pandas
tzlocal==5.3.1
    # via dateparser
ujson==5.11.0
    # via gnocchiclient
uritemplate==4.2.0
    # via google-api-python-client
urllib3==2.6.3
    # via requests
wrapt==2.1.1
    # via debtcollector

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