#######################################################################################
# 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==4.0.0
    # via paramiko
cachetools==5.2.0
    # via google-auth
certifi==2022.9.24
    # via
    #   -r requirements.in
    #   kubernetes
    #   requests
cffi==1.15.1
    # via
    #   cryptography
    #   pynacl
charset-normalizer==2.1.1
    # via requests
cryptography==38.0.1
    # via paramiko
google-auth==2.11.1
    # via kubernetes
idna==3.4
    # via requests
juju==3.0.0
    # 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.1
    # via requests-oauthlib
paramiko==2.11.0
    # via juju
protobuf==3.20.2
    # 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.2.1
    # via pyrfc3339
pyyaml==5.4.1
    # via
    #   -r requirements.in
    #   juju
    #   jujubundlelib
    #   kubernetes
requests==2.28.1
    # 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.7
    # via juju
typing-extensions==4.3.0
    # via typing-inspect
typing-inspect==0.8.0
    # via juju
urllib3==1.26.12
    # via
    #   kubernetes
    #   requests
websocket-client==1.4.1
    # via kubernetes
websockets==7.0
    # via juju

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