# Copyright 2018 Telefonica S.A.
#
# 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.


aiohappyeyeballs==2.4.4
    # via aiohttp
aiohttp==3.11.10
    # via -r requirements.in
aiosignal==1.3.2
    # via aiohttp
async-timeout==4.0.3
    # via
    #   -r requirements.in
    #   aiohttp
attrs==24.3.0
    # via
    #   aiohttp
    #   jsonschema
    #   referencing
autocommand==2.2.2
    # via jaraco-text
backports-tarfile==1.2.0
    # via jaraco-context
cefevent==0.5.6
    # via -r requirements.in
certifi==2024.12.14
    # via requests
charset-normalizer==3.4.0
    # via requests
cheroot==10.0.1
    # via cherrypy
cherrypy==18.10.0
    # via -r requirements.in
debtcollector==3.0.0
    # via
    #   oslo-config
    #   oslo-utils
    #   python-keystoneclient
deepdiff==8.0.1
    # via -r requirements.in
frozenlist==1.5.0
    # via
    #   aiohttp
    #   aiosignal
idna==3.10
    # via
    #   requests
    #   yarl
iso8601==2.1.0
    # via
    #   keystoneauth1
    #   oslo-utils
jaraco-collections==5.1.0
    # via cherrypy
jaraco-context==6.0.1
    # via jaraco-text
jaraco-functools==4.1.0
    # via
    #   cheroot
    #   jaraco-text
    #   tempora
jaraco-text==4.0.0
    # via jaraco-collections
jsonschema==4.23.0
    # via -r requirements.in
jsonschema-specifications==2024.10.1
    # via jsonschema
keystoneauth1==5.9.1
    # via python-keystoneclient
more-itertools==10.5.0
    # via
    #   cheroot
    #   cherrypy
    #   jaraco-functools
    #   jaraco-text
msgpack==1.1.0
    # via oslo-serialization
multidict==6.1.0
    # via
    #   aiohttp
    #   yarl
netaddr==1.3.0
    # via
    #   oslo-config
    #   oslo-utils
orderly-set==5.2.2
    # via deepdiff
os-service-types==1.7.0
    # via keystoneauth1
oslo-config==9.7.0
    # via python-keystoneclient
oslo-i18n==6.5.0
    # via
    #   oslo-config
    #   oslo-utils
    #   python-keystoneclient
oslo-serialization==5.6.0
    # via python-keystoneclient
oslo-utils==8.0.0
    # via
    #   oslo-serialization
    #   python-keystoneclient
packaging==24.2
    # via
    #   oslo-utils
    #   python-keystoneclient
pbr==6.1.0
    # via
    #   keystoneauth1
    #   os-service-types
    #   oslo-i18n
    #   oslo-serialization
    #   python-keystoneclient
    #   stevedore
portend==3.2.0
    # via cherrypy
propcache==0.2.1
    # via
    #   aiohttp
    #   yarl
psutil==6.1.0
    # via oslo-utils
pyparsing==3.2.0
    # via oslo-utils
pyrage==1.2.2
    # via -r requirements.in
python-dateutil==2.9.0.post0
    # via tempora
python-keystoneclient==5.5.0
    # via -r requirements.in
pyyaml==6.0.2
    # via
    #   -r requirements.in
    #   oslo-config
    #   oslo-utils
referencing==0.35.1
    # via
    #   jsonschema
    #   jsonschema-specifications
requests==2.32.3
    # via
    #   -r requirements.in
    #   keystoneauth1
    #   oslo-config
    #   python-keystoneclient
rfc3986==2.0.0
    # via oslo-config
rpds-py==0.22.3
    # via
    #   jsonschema
    #   referencing
six==1.17.0
    # via
    #   python-dateutil
    #   tacacs-plus
stevedore==5.4.0
    # via
    #   keystoneauth1
    #   oslo-config
    #   python-keystoneclient
tacacs-plus==2.6
    # via -r requirements.in
tempora==5.7.0
    # via portend
typing-extensions==4.12.2
    # via
    #   keystoneauth1
    #   multidict
tzdata==2024.2
    # via
    #   oslo-serialization
    #   oslo-utils
urllib3==2.2.3
    # via requests
wrapt==1.17.0
    # via debtcollector
yarl==1.18.3
    # via aiohttp
zc-lockfile==3.0.post1
    # via cherrypy

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