# 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.6.1
    # via aiohttp
aiohttp==3.12.15
    # via -r requirements.in
aiosignal==1.4.0
    # via aiohttp
async-timeout==4.0.3
    # via
    #   -r requirements.in
    #   aiohttp
attrs==25.3.0
    # via
    #   aiohttp
    #   jsonschema
    #   referencing
autocommand==2.2.2
    # via jaraco-text
backports-tarfile==1.2.0
    # via jaraco-context
bcrypt==5.0.0
    # via -r requirements.in
cefevent==0.5.6
    # via -r requirements.in
certifi==2025.8.3
    # via requests
charset-normalizer==3.4.3
    # via requests
cheroot==11.0.0
    # via cherrypy
cherrypy==18.10.0
    # via -r requirements.in
debtcollector==3.0.0
    # via
    #   oslo-utils
    #   python-keystoneclient
deepdiff==8.6.1
    # via -r requirements.in
frozenlist==1.7.0
    # via
    #   aiohttp
    #   aiosignal
idna==3.10
    # via
    #   requests
    #   yarl
iso8601==2.1.0
    # via
    #   keystoneauth1
    #   oslo-utils
jaraco-collections==5.2.1
    # via cherrypy
jaraco-context==6.0.1
    # via jaraco-text
jaraco-functools==4.3.0
    # via
    #   cheroot
    #   jaraco-text
    #   tempora
jaraco-text==4.0.0
    # via jaraco-collections
jsonschema==4.25.1
    # via -r requirements.in
jsonschema-specifications==2025.9.1
    # via jsonschema
keystoneauth1==5.12.0
    # via python-keystoneclient
more-itertools==10.8.0
    # via
    #   cheroot
    #   cherrypy
    #   jaraco-functools
    #   jaraco-text
msgpack==1.1.1
    # via oslo-serialization
multidict==6.6.4
    # via
    #   aiohttp
    #   yarl
netaddr==1.3.0
    # via
    #   oslo-config
    #   oslo-utils
orderly-set==5.5.0
    # via deepdiff
os-service-types==1.8.0
    # via keystoneauth1
oslo-config==10.0.0
    # via python-keystoneclient
oslo-i18n==6.6.0
    # via
    #   oslo-config
    #   oslo-utils
    #   python-keystoneclient
oslo-serialization==5.8.0
    # via python-keystoneclient
oslo-utils==9.1.0
    # via
    #   oslo-serialization
    #   python-keystoneclient
packaging==25.0
    # via
    #   oslo-utils
    #   python-keystoneclient
pbr==7.0.1
    # via
    #   keystoneauth1
    #   os-service-types
    #   oslo-i18n
    #   oslo-utils
    #   python-keystoneclient
portend==3.2.1
    # via cherrypy
propcache==0.3.2
    # via
    #   aiohttp
    #   yarl
psutil==7.1.0
    # via oslo-utils
pyparsing==3.2.5
    # via oslo-utils
pyrage==1.3.0
    # via -r requirements.in
python-dateutil==2.9.0.post0
    # via tempora
python-keystoneclient==5.7.0
    # via -r requirements.in
pyyaml==6.0.3
    # via
    #   -r requirements.in
    #   oslo-config
    #   oslo-utils
referencing==0.36.2
    # via
    #   jsonschema
    #   jsonschema-specifications
requests==2.32.5
    # via
    #   -r requirements.in
    #   keystoneauth1
    #   oslo-config
    #   python-keystoneclient
rfc3986==2.0.0
    # via oslo-config
rpds-py==0.27.1
    # via
    #   jsonschema
    #   referencing
six==1.17.0
    # via
    #   python-dateutil
    #   tacacs-plus
stevedore==5.5.0
    # via
    #   keystoneauth1
    #   oslo-config
    #   python-keystoneclient
tacacs-plus==2.6
    # via -r requirements.in
tempora==5.8.1
    # via portend
typing-extensions==4.15.0
    # via
    #   aiosignal
    #   keystoneauth1
    #   multidict
    #   referencing
tzdata==2025.2
    # via
    #   oslo-serialization
    #   oslo-utils
urllib3==2.5.0
    # via requests
wrapt==1.17.3
    # via debtcollector
yarl==1.20.1
    # via aiohttp
zc-lockfile==4.0
    # via cherrypy

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