#######################################################################################
# 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.
#######################################################################################
attrs==22.2.0
    # via cmd2
autopage==0.5.1
    # via cliff
azure-common==1.1.28
    # via
    #   -r requirements.in
    #   azure-mgmt-compute
azure-core==1.26.4
    # via
    #   azure-identity
    #   azure-mgmt-core
    #   msrest
azure-identity==1.12.0
    # via -r requirements.in
azure-mgmt-compute==29.1.0
    # via -r requirements.in
azure-mgmt-core==1.4.0
    # via azure-mgmt-compute
cachetools==5.3.0
    # via google-auth
certifi==2022.12.7
    # via
    #   msrest
    #   requests
cffi==1.15.1
    # via cryptography
charset-normalizer==3.0.1
    # via requests
cliff==4.2.0
    # via gnocchiclient
cmd2==2.4.3
    # via cliff
cryptography==40.0.1
    # via
    #   azure-identity
    #   msal
    #   pyjwt
debtcollector==2.5.0
    # via
    #   gnocchiclient
    #   oslo-config
    #   oslo-utils
    #   python-keystoneclient
futurist==2.4.1
    # via gnocchiclient
gnocchiclient==7.0.8
    # via -r requirements.in
google-api-core==2.11.0
    # via google-api-python-client
google-api-python-client==2.84.0
    # via -r requirements.in
google-auth==2.17.2
    # via
    #   -r requirements.in
    #   google-api-core
    #   google-api-python-client
    #   google-auth-httplib2
google-auth-httplib2==0.1.0
    # via google-api-python-client
googleapis-common-protos==1.59.0
    # via google-api-core
httplib2==0.22.0
    # via
    #   google-api-python-client
    #   google-auth-httplib2
idna==3.4
    # via requests
importlib-metadata==6.3.0
    # via cliff
iso8601==1.1.0
    # via
    #   gnocchiclient
    #   keystoneauth1
    #   oslo-utils
    #   python-ceilometerclient
    #   python-novaclient
isodate==0.6.1
    # via msrest
keystoneauth1==5.1.2
    # via
    #   gnocchiclient
    #   python-ceilometerclient
    #   python-keystoneclient
    #   python-novaclient
msal==1.21.0
    # via
    #   azure-identity
    #   msal-extensions
msal-extensions==1.0.0
    # via azure-identity
msgpack==1.0.5
    # via oslo-serialization
msrest==0.7.1
    # via azure-mgmt-compute
netaddr==0.8.0
    # via
    #   oslo-config
    #   oslo-utils
netifaces==0.11.0
    # via oslo-utils
oauthlib==3.2.2
    # via requests-oauthlib
os-service-types==1.7.0
    # via keystoneauth1
oslo-config==9.1.1
    # via python-keystoneclient
oslo-i18n==6.0.0
    # via
    #   oslo-config
    #   oslo-utils
    #   python-ceilometerclient
    #   python-keystoneclient
    #   python-novaclient
oslo-serialization==5.1.1
    # via
    #   python-ceilometerclient
    #   python-keystoneclient
    #   python-novaclient
oslo-utils==6.1.0
    # via
    #   oslo-serialization
    #   python-ceilometerclient
    #   python-keystoneclient
    #   python-novaclient
packaging==23.0
    # via
    #   oslo-utils
    #   python-keystoneclient
pbr==5.11.1
    # via
    #   keystoneauth1
    #   os-service-types
    #   oslo-i18n
    #   oslo-serialization
    #   python-ceilometerclient
    #   python-keystoneclient
    #   python-novaclient
    #   stevedore
portalocker==2.7.0
    # via msal-extensions
prettytable==0.7.2
    # via
    #   cliff
    #   python-ceilometerclient
    #   python-novaclient
prometheus-client==0.16.0
    # via -r requirements.in
protobuf==3.20.3
    # via
    #   -r requirements.in
    #   google-api-core
    #   googleapis-common-protos
pyasn1==0.4.8
    # via
    #   pyasn1-modules
    #   rsa
pyasn1-modules==0.2.8
    # via google-auth
pycparser==2.21
    # via cffi
pyjwt[crypto]==2.6.0
    # via msal
pyparsing==3.0.9
    # via
    #   httplib2
    #   oslo-utils
pyperclip==1.8.2
    # via cmd2
python-ceilometerclient==2.9.0
    # via -r requirements.in
python-dateutil==2.8.2
    # via gnocchiclient
python-keystoneclient==5.1.0
    # via -r requirements.in
python-novaclient==18.3.0
    # via -r requirements.in
pytz==2023.3
    # via
    #   oslo-serialization
    #   oslo-utils
pyyaml==5.4.1
    # via
    #   -r requirements.in
    #   cliff
    #   oslo-config
requests==2.28.2
    # via
    #   azure-core
    #   google-api-core
    #   keystoneauth1
    #   msal
    #   msrest
    #   oslo-config
    #   python-ceilometerclient
    #   python-keystoneclient
    #   requests-oauthlib
requests-oauthlib==1.3.1
    # via msrest
rfc3986==2.0.0
    # via oslo-config
rsa==4.9
    # via google-auth
six==1.16.0
    # via
    #   azure-core
    #   azure-identity
    #   gnocchiclient
    #   google-auth
    #   google-auth-httplib2
    #   isodate
    #   keystoneauth1
    #   python-ceilometerclient
    #   python-dateutil
    #   python-keystoneclient
stevedore==5.0.0
    # via
    #   cliff
    #   keystoneauth1
    #   oslo-config
    #   python-ceilometerclient
    #   python-keystoneclient
    #   python-novaclient
typing-extensions==4.5.0
    # via azure-core
ujson==5.7.0
    # via gnocchiclient
uritemplate==4.1.1
    # via google-api-python-client
urllib3==1.26.15
    # via requests
wcwidth==0.2.6
    # via cmd2
wrapt==1.15.0
    # via debtcollector
zipp==3.15.0
    # via importlib-metadata
