# 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.3
    # via -r requirements.in
aiosignal==1.4.0
    # via aiohttp
annotated-doc==0.0.4
    # via typer
async-timeout==4.0.3
    # via
    #   -r requirements.in
    #   aiohttp
attrs==25.4.0
    # via
    #   aiohttp
    #   jsonschema
    #   referencing
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==2026.2.25
    # via requests
charset-normalizer==3.4.4
    # via requests
cheroot==11.1.2
    # via cherrypy
cherrypy==18.10.0
    # via -r requirements.in
click==8.3.1
    # via typer
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.1.0
    # via jaraco-text
jaraco-functools==4.4.0
    # via
    #   cheroot
    #   jaraco-text
    #   tempora
jaraco-text==4.2.0
    # via jaraco-collections
jsonschema==4.26.0
    # via -r requirements.in
jsonschema-specifications==2025.9.1
    # via jsonschema
keystoneauth1==5.13.1
    # via python-keystoneclient
markdown-it-py==4.0.0
    # via rich
mdurl==0.1.2
    # via markdown-it-py
more-itertools==10.8.0
    # via
    #   cheroot
    #   cherrypy
    #   jaraco-functools
    #   jaraco-text
msgpack==1.1.2
    # via oslo-serialization
multidict==6.7.1
    # 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.3.0
    # via python-keystoneclient
oslo-i18n==6.7.2
    # via
    #   oslo-config
    #   oslo-utils
    #   python-keystoneclient
oslo-serialization==5.9.1
    # via python-keystoneclient
oslo-utils==10.0.0
    # via
    #   oslo-serialization
    #   python-keystoneclient
packaging==26.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.2.2
    # via oslo-utils
pygments==2.19.2
    # via rich
pyparsing==3.3.2
    # 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
rich==14.3.3
    # via typer
rpds-py==0.30.0
    # via
    #   jsonschema
    #   referencing
shellingham==1.5.4
    # via typer
six==1.17.0
    # via
    #   python-dateutil
    #   tacacs-plus
stevedore==5.7.0
    # via
    #   keystoneauth1
    #   oslo-config
    #   python-keystoneclient
tacacs-plus==2.6
    # via -r requirements.in
tempora==5.8.1
    # via portend
typer==0.24.1
    # via typer-slim
typer-slim==0.24.0
    # via jaraco-text
typing-extensions==4.15.0
    # via
    #   aiosignal
    #   keystoneauth1
    #   multidict
    #   os-service-types
    #   referencing
urllib3==2.6.3
    # via requests
wrapt==2.1.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
