#######################################################################################
# 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.
#######################################################################################
aiohttp==3.8.5
    # via -r requirements.in
aiosignal==1.3.1
    # via aiohttp
annotated-types==0.5.0
    # via pydantic
async-timeout==4.0.3
    # via
    #   -r requirements.in
    #   aiohttp
attrs==23.1.0
    # via
    #   aiohttp
    #   glom
boltons==23.0.0
    # via
    #   face
    #   glom
charset-normalizer==3.2.0
    # via aiohttp
checksumdir==1.2.0
    # via -r requirements.in
config-man==0.0.4
    # via -r requirements.in
face==20.1.1
    # via glom
frozenlist==1.4.0
    # via
    #   aiohttp
    #   aiosignal
glom==23.3.0
    # via config-man
grpcio==1.58.0
    # via grpcio-tools
grpcio-tools==1.48.1
    # via -r requirements.in
grpclib==0.4.5
    # via -r requirements.in
h2==4.1.0
    # via grpclib
hpack==4.0.0
    # via h2
hyperframe==6.0.1
    # via h2
idna==3.4
    # via
    #   -r requirements.in
    #   yarl
jinja2==3.1.2
    # via -r requirements.in
markupsafe==2.1.3
    # via jinja2
multidict==6.0.4
    # via
    #   aiohttp
    #   grpclib
    #   yarl
protobuf==3.20.3
    # via
    #   -r requirements.in
    #   grpcio-tools
pydantic==2.4.2
    # via -r requirements.in
pydantic-core==2.10.1
    # via pydantic
pyyaml==6.0.1
    # via -r requirements.in
typing-extensions==4.8.0
    # via
    #   pydantic
    #   pydantic-core
yarl==1.9.2
    # via aiohttp

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