# 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.13.2
    # via -r requirements.in
aiosignal==1.4.0
    # via aiohttp
async-timeout==4.0.3
    # via
    #   -r requirements.in
    #   aiohttp
attrs==25.4.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.11.12
    # via requests
charset-normalizer==3.4.4
    # via requests
cheroot==11.1.2
    # 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.8.0
    # via
    #   aiohttp
    #   aiosignal
idna==3.11
    # 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.2
    # via oslo-serialization
multidict==6.7.0
    # via
    #   aiohttp
    #   yarl
netaddr==1.3.0
    # via
    #   oslo-config
    #   oslo-utils
orderly-set==5.5.0
    # via deepdiff
os-service-types==1.8.2
    # via keystoneauth1
oslo-config==10.1.0
    # via python-keystoneclient
oslo-i18n==6.7.1
    # via
    #   oslo-config
    #   oslo-utils
    #   python-keystoneclient
oslo-serialization==5.8.0
    # via python-keystoneclient
oslo-utils==9.2.0
    # via
    #   oslo-serialization
    #   python-keystoneclient
packaging==25.0
    # via
    #   oslo-utils
    #   python-keystoneclient
pbr==7.0.3
    # via
    #   keystoneauth1
    #   os-service-types
    #   oslo-i18n
    #   oslo-utils
    #   python-keystoneclient
portend==3.2.1
    # via cherrypy
propcache==0.4.1
    # via
    #   aiohttp
    #   yarl
psutil==7.1.3
    # 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.37.0
    # 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.30.0
    # via
    #   jsonschema
    #   referencing
six==1.17.0
    # via
    #   python-dateutil
    #   tacacs-plus
stevedore==5.6.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
    #   os-service-types
    #   referencing
tzdata==2025.2
    # via
    #   oslo-serialization
    #   oslo-utils
urllib3==2.6.1
    # via requests
wrapt==2.0.1
    # via debtcollector
yarl==1.22.0
    # via aiohttp
zc-lockfile==4.0
    # via cherrypy

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