#######################################################################################
# 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 retrying-async
bcrypt==4.0.1
    # via paramiko
cachetools==5.3.1
    # via google-auth
certifi==2023.7.22
    # via
    #   kubernetes
    #   requests
cffi==1.16.0
    # via
    #   cryptography
    #   pynacl
charset-normalizer==3.2.0
    # via
    #   -r requirements.in
    #   requests
cryptography==41.0.4
    # via paramiko
dnspython==2.4.2
    # via pymongo
google-auth==2.17.3
    # via
    #   -r requirements.in
    #   kubernetes
idna==3.4
    # via requests
juju==2.9.44.0
    # via -r requirements.in
jujubundlelib==0.5.7
    # via theblues
kubernetes==26.1.0
    # via
    #   -r requirements.in
    #   juju
macaroonbakery==1.3.1
    # via
    #   juju
    #   theblues
motor==3.3.1
    # via -r requirements.in
mypy-extensions==1.0.0
    # via typing-inspect
oauthlib==3.2.2
    # via requests-oauthlib
paramiko==2.12.0
    # via juju
protobuf==3.20.3
    # via macaroonbakery
pyasn1==0.5.0
    # via
    #   -r requirements.in
    #   juju
    #   pyasn1-modules
    #   rsa
pyasn1-modules==0.3.0
    # via google-auth
pycparser==2.21
    # via cffi
pymacaroons==0.13.0
    # via macaroonbakery
pymongo==4.5.0
    # via motor
pynacl==1.5.0
    # via
    #   macaroonbakery
    #   paramiko
    #   pymacaroons
pyrfc3339==1.1
    # via
    #   juju
    #   macaroonbakery
python-dateutil==2.8.2
    # via kubernetes
pytz==2023.3.post1
    # via pyrfc3339
pyyaml==6.0.1
    # via
    #   -r requirements.in
    #   juju
    #   jujubundlelib
    #   kubernetes
requests==2.31.0
    # via
    #   kubernetes
    #   macaroonbakery
    #   requests-oauthlib
    #   theblues
requests-oauthlib==1.3.1
    # via kubernetes
retrying-async==2.0.0
    # via -r requirements.in
rsa==4.9
    # via google-auth
six==1.16.0
    # via
    #   google-auth
    #   kubernetes
    #   macaroonbakery
    #   paramiko
    #   pymacaroons
    #   python-dateutil
theblues==0.5.2
    # via juju
toposort==1.10
    # via juju
typing-extensions==4.8.0
    # via typing-inspect
typing-inspect==0.9.0
    # via juju
urllib3==2.0.5
    # via
    #   kubernetes
    #   requests
websocket-client==1.6.3
    # via kubernetes
websockets==11.0.3
    # via juju

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