#######################################################################################
# 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.
#######################################################################################
aiohappyeyeballs==2.3.4
    # via aiohttp
aiohttp==3.10.1
    # via -r requirements.in
aiosignal==1.3.1
    # via aiohttp
annotated-types==0.7.0
    # via pydantic
async-timeout==4.0.3
    # via
    #   -r requirements.in
    #   aiohttp
    #   retrying-async
attrs==24.2.0
    # via
    #   aiohttp
    #   glom
boltons==24.0.0
    # via
    #   face
    #   glom
checksumdir==1.2.0
    # via -r requirements.in
config-man==0.0.4
    # via -r requirements.in
face==20.1.1
    # via glom
fire==0.6.0
    # via randomname
frozenlist==1.4.1
    # via
    #   aiohttp
    #   aiosignal
glom==23.5.0
    # via config-man
grpcio==1.65.4
    # via grpcio-tools
grpcio-tools==1.48.2
    # via -r requirements.in
grpclib==0.4.7
    # via -r requirements.in
h2==4.1.0
    # via grpclib
hpack==4.0.0
    # via h2
hyperframe==6.0.1
    # via h2
idna==3.7
    # via yarl
jinja2==3.1.4
    # via -r requirements.in
markupsafe==2.1.5
    # via jinja2
multidict==6.0.5
    # via
    #   aiohttp
    #   grpclib
    #   yarl
protobuf==3.20.3
    # via
    #   -r requirements.in
    #   grpcio-tools
pydantic==2.8.2
    # via -r requirements.in
pydantic-core==2.20.1
    # via pydantic
pyrage==1.1.2
    # via -r requirements.in
pyyaml==6.0.2
    # via -r requirements.in
randomname==0.2.1
    # via -r requirements.in
retrying-async==2.0.0
    # via -r requirements.in
six==1.16.0
    # via fire
termcolor==2.4.0
    # via fire
typing-extensions==4.12.2
    # via
    #   pydantic
    #   pydantic-core
yarl==1.9.4
    # via aiohttp

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