#######################################################################################
# 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.6.1
    # via aiohttp
aiohttp==3.13.3
    # via -r requirements.in
aiosignal==1.4.0
    # via aiohttp
annotated-types==0.7.0
    # via pydantic
async-timeout==4.0.3
    # via
    #   -r requirements.in
    #   aiohttp
    #   retrying-async
attrs==25.4.0
    # via
    #   aiohttp
    #   glom
bcrypt==5.0.0
    # via paramiko
boltons==25.0.0
    # via
    #   face
    #   glom
cachetools==5.5.2
    # via google-auth
certifi==2026.2.25
    # via
    #   kubernetes
    #   requests
cffi==2.0.0
    # via
    #   cryptography
    #   pynacl
charset-normalizer==3.4.4
    # via
    #   -r requirements.in
    #   requests
checksumdir==1.3.0
    # via -r requirements.in
config-man==0.0.4
    # via -r requirements.in
cryptography==46.0.5
    # via paramiko
dnspython==2.8.0
    # via pymongo
durationpy==0.10
    # via kubernetes
face==26.0.0
    # via glom
fire==0.7.1
    # via randomname
frozenlist==1.8.0
    # via
    #   aiohttp
    #   aiosignal
gitdb==4.0.12
    # via gitpython
gitpython==3.1.46
    # via -r requirements.in
glom==25.12.0
    # via config-man
google-auth==2.17.3
    # via -r requirements.in
grpcio==1.78.1
    # via grpcio-tools
grpcio-tools==1.48.2
    # via -r requirements.in
grpclib==0.4.9
    # via -r requirements.in
h2==4.3.0
    # via grpclib
hpack==4.1.0
    # via h2
hyperframe==6.1.0
    # via h2
idna==3.11
    # via
    #   requests
    #   yarl
jinja2==3.1.6
    # via -r requirements.in
jsonpath-ng==1.8.0
    # via -r requirements.in
juju==2.9.44.0
    # via -r requirements.in
jujubundlelib==0.5.7
    # via theblues
kubernetes==35.0.0
    # via
    #   -r requirements.in
    #   juju
macaroonbakery==1.3.4
    # via
    #   juju
    #   theblues
markupsafe==3.0.3
    # via jinja2
motor==3.7.1
    # via -r requirements.in
multidict==6.7.1
    # via
    #   aiohttp
    #   grpclib
    #   yarl
mypy-extensions==1.1.0
    # via typing-inspect
oauthlib==3.3.1
    # via requests-oauthlib
paramiko==2.12.0
    # via juju
propcache==0.4.1
    # via
    #   aiohttp
    #   yarl
protobuf==3.20.3
    # via
    #   -r requirements.in
    #   grpcio-tools
    #   macaroonbakery
pyasn1==0.6.2
    # via
    #   -r requirements.in
    #   juju
    #   pyasn1-modules
    #   rsa
pyasn1-modules==0.4.2
    # via google-auth
pycparser==3.0
    # via cffi
pydantic==2.12.5
    # via -r requirements.in
pydantic-core==2.41.5
    # via pydantic
pymacaroons==0.13.0
    # via macaroonbakery
pymongo==4.16.0
    # via motor
pynacl==1.6.2
    # via
    #   macaroonbakery
    #   paramiko
    #   pymacaroons
pyrfc3339==1.1
    # via
    #   juju
    #   macaroonbakery
python-dateutil==2.9.0.post0
    # via kubernetes
pytz==2025.2
    # via pyrfc3339
pyyaml==6.0.3
    # via
    #   -r requirements.in
    #   juju
    #   jujubundlelib
    #   kubernetes
randomname==0.2.1
    # via -r requirements.in
requests==2.32.5
    # via
    #   kubernetes
    #   macaroonbakery
    #   requests-oauthlib
    #   theblues
requests-oauthlib==2.0.0
    # via kubernetes
retrying-async==2.0.0
    # via -r requirements.in
rsa==4.9.1
    # via google-auth
six==1.17.0
    # via
    #   google-auth
    #   kubernetes
    #   macaroonbakery
    #   paramiko
    #   pymacaroons
    #   python-dateutil
smmap==5.0.2
    # via gitdb
termcolor==3.3.0
    # via fire
theblues==0.5.2
    # via juju
toposort==1.10
    # via juju
typing-extensions==4.15.0
    # via
    #   aiosignal
    #   cryptography
    #   grpcio
    #   multidict
    #   pydantic
    #   pydantic-core
    #   typing-inspect
    #   typing-inspection
typing-inspect==0.9.0
    # via juju
typing-inspection==0.4.2
    # via pydantic
urllib3==2.6.1
    # via
    #   -r requirements.in
    #   kubernetes
    #   requests
websocket-client==1.9.0
    # via kubernetes
websockets==16.0
    # via juju
yarl==1.22.0
    # via aiohttp

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