#######################################################################################
# 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==3.0.1
    # via
    #   -r requirements.in
    #   retrying-async
bcrypt==3.2.2
    # via paramiko
cachetools==5.2.0
    # via google-auth
certifi==2022.6.15
    # via
    #   kubernetes
    #   requests
cffi==1.15.0
    # via
    #   bcrypt
    #   cryptography
    #   pynacl
charset-normalizer==2.0.12
    # via requests
cryptography==37.0.2
    # via paramiko
google-auth==2.8.0
    # via kubernetes
idna==3.3
    # via requests
juju==2.9.10
    # via -r requirements.in
jujubundlelib==0.5.7
    # via theblues
kubernetes==24.2.0
    # via
    #   -r requirements.in
    #   juju
macaroonbakery==1.3.1
    # via
    #   juju
    #   theblues
motor==1.3.1
    # via -r requirements.in
mypy-extensions==0.4.3
    # via typing-inspect
oauthlib==3.2.0
    # via requests-oauthlib
paramiko==2.11.0
    # via juju
protobuf==3.20.1
    # via macaroonbakery
pyasn1==0.4.8
    # via
    #   -r requirements.in
    #   juju
    #   pyasn1-modules
    #   rsa
pyasn1-modules==0.2.8
    # via google-auth
pycparser==2.21
    # via cffi
pymacaroons==0.13.0
    # via macaroonbakery
pymongo==3.12.3
    # via motor
pynacl==1.5.0
    # via
    #   macaroonbakery
    #   paramiko
    #   pymacaroons
pyrfc3339==1.1
    # via
    #   juju
    #   macaroonbakery
python-dateutil==2.8.2
    # via kubernetes
pytz==2022.1
    # via pyrfc3339
pyyaml==5.4.1
    # via
    #   -r requirements.in
    #   juju
    #   jujubundlelib
    #   kubernetes
requests==2.28.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.8
    # via google-auth
six==1.16.0
    # via
    #   google-auth
    #   kubernetes
    #   macaroonbakery
    #   paramiko
    #   pymacaroons
    #   python-dateutil
theblues==0.5.2
    # via juju
toposort==1.7
    # via juju
typing-extensions==4.2.0
    # via typing-inspect
typing-inspect==0.7.1
    # via juju
urllib3==1.26.9
    # via
    #   kubernetes
    #   requests
websocket-client==1.3.3
    # via kubernetes
websockets==7.0
    # via juju

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