#######################################################################################
# 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.
#######################################################################################
async-timeout==4.0.3
    # via
    #   -r requirements.in
    #   retrying-async
bcrypt==4.3.0
    # via paramiko
cachetools==5.5.2
    # via google-auth
certifi==2025.6.15
    # via
    #   kubernetes
    #   requests
cffi==1.17.1
    # via
    #   cryptography
    #   pynacl
charset-normalizer==3.4.2
    # via
    #   -r requirements.in
    #   requests
cryptography==45.0.4
    # via paramiko
dnspython==2.7.0
    # via pymongo
durationpy==0.10
    # via kubernetes
google-auth==2.17.3
    # via
    #   -r requirements.in
    #   kubernetes
idna==3.10
    # via requests
juju==2.9.44.0
    # via -r requirements.in
jujubundlelib==0.5.7
    # via theblues
kubernetes==33.1.0
    # via
    #   -r requirements.in
    #   juju
macaroonbakery==1.3.4
    # via
    #   juju
    #   theblues
motor==3.7.1
    # via -r requirements.in
mypy-extensions==1.1.0
    # via typing-inspect
oauthlib==3.3.1
    # via
    #   kubernetes
    #   requests-oauthlib
paramiko==2.12.0
    # via juju
protobuf==3.20.3
    # via
    #   -r requirements.in
    #   macaroonbakery
pyasn1==0.6.1
    # via
    #   -r requirements.in
    #   juju
    #   pyasn1-modules
    #   rsa
pyasn1-modules==0.4.2
    # via google-auth
pycparser==2.22
    # via cffi
pymacaroons==0.13.0
    # via macaroonbakery
pymongo==4.13.2
    # via motor
pynacl==1.5.0
    # 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.2
    # via
    #   -r requirements.in
    #   juju
    #   jujubundlelib
    #   kubernetes
requests==2.32.4
    # 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
theblues==0.5.2
    # via juju
toposort==1.10
    # via juju
typing-extensions==4.14.0
    # via typing-inspect
typing-inspect==0.9.0
    # via juju
urllib3==2.5.0
    # via
    #   kubernetes
    #   requests
websocket-client==1.8.0
    # via kubernetes
websockets==15.0.1
    # via juju
