#######################################################################################
# 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.
#######################################################################################
-e git+https://osm.etsi.org/gerrit/osm/N2VC.git@master#egg=n2vc
    # via -r requirements-dev.in
-e git+https://osm.etsi.org/gerrit/osm/common.git@master#egg=osm-common
    # via -r requirements-dev.in
aiokafka==0.7.2
    # via -r ../common/requirements.txt
async-timeout==3.0.1
    # via
    #   -r ../N2VC/requirements.txt
    #   retrying-async
bcrypt==4.0.1
    # via
    #   -r ../N2VC/requirements.txt
    #   paramiko
cachetools==5.3.0
    # via
    #   -r ../N2VC/requirements.txt
    #   google-auth
certifi==2022.12.7
    # via
    #   -r ../N2VC/requirements.txt
    #   kubernetes
    #   requests
cffi==1.15.1
    # via
    #   -r ../N2VC/requirements.txt
    #   cryptography
    #   pynacl
charset-normalizer==3.1.0
    # via
    #   -r ../N2VC/requirements.txt
    #   requests
cryptography==40.0.2
    # via
    #   -r ../N2VC/requirements.txt
    #   paramiko
dataclasses==0.6
    # via -r ../common/requirements.txt
google-auth==2.17.3
    # via
    #   -r ../N2VC/requirements.txt
    #   kubernetes
idna==3.4
    # via
    #   -r ../N2VC/requirements.txt
    #   requests
juju==2.9.42.1
    # via -r ../N2VC/requirements.txt
jujubundlelib==0.5.7
    # via
    #   -r ../N2VC/requirements.txt
    #   theblues
kafka-python==2.0.2
    # via
    #   -r ../common/requirements.txt
    #   aiokafka
kubernetes==26.1.0
    # via
    #   -r ../N2VC/requirements.txt
    #   juju
macaroonbakery==1.3.1
    # via
    #   -r ../N2VC/requirements.txt
    #   juju
    #   theblues
motor==1.3.1
    # via -r ../N2VC/requirements.txt
mypy-extensions==1.0.0
    # via
    #   -r ../N2VC/requirements.txt
    #   typing-inspect
oauthlib==3.2.2
    # via
    #   -r ../N2VC/requirements.txt
    #   requests-oauthlib
paramiko==2.12.0
    # via
    #   -r ../N2VC/requirements.txt
    #   juju
protobuf==3.20.3
    # via
    #   -r ../N2VC/requirements.txt
    #   macaroonbakery
pyasn1==0.4.8
    # via
    #   -r ../N2VC/requirements.txt
    #   juju
    #   pyasn1-modules
    #   rsa
pyasn1-modules==0.2.8
    # via
    #   -r ../N2VC/requirements.txt
    #   google-auth
pycparser==2.21
    # via
    #   -r ../N2VC/requirements.txt
    #   cffi
pycrypto==2.6.1
    # via -r ../common/requirements.txt
pymacaroons==0.13.0
    # via
    #   -r ../N2VC/requirements.txt
    #   macaroonbakery
pymongo==3.12.3
    # via
    #   -r ../N2VC/requirements.txt
    #   -r ../common/requirements.txt
    #   motor
pynacl==1.5.0
    # via
    #   -r ../N2VC/requirements.txt
    #   macaroonbakery
    #   paramiko
    #   pymacaroons
pyrfc3339==1.1
    # via
    #   -r ../N2VC/requirements.txt
    #   juju
    #   macaroonbakery
python-dateutil==2.8.2
    # via
    #   -r ../N2VC/requirements.txt
    #   kubernetes
pytz==2023.3
    # via
    #   -r ../N2VC/requirements.txt
    #   pyrfc3339
pyyaml==5.4.1
    # via
    #   -r ../N2VC/requirements.txt
    #   -r ../common/requirements.txt
    #   juju
    #   jujubundlelib
    #   kubernetes
requests==2.28.2
    # via
    #   -r ../N2VC/requirements.txt
    #   kubernetes
    #   macaroonbakery
    #   requests-oauthlib
    #   theblues
requests-oauthlib==1.3.1
    # via
    #   -r ../N2VC/requirements.txt
    #   kubernetes
retrying-async==2.0.0
    # via -r ../N2VC/requirements.txt
rsa==4.9
    # via
    #   -r ../N2VC/requirements.txt
    #   google-auth
six==1.16.0
    # via
    #   -r ../N2VC/requirements.txt
    #   google-auth
    #   kubernetes
    #   macaroonbakery
    #   paramiko
    #   pymacaroons
    #   python-dateutil
theblues==0.5.2
    # via
    #   -r ../N2VC/requirements.txt
    #   juju
toposort==1.10
    # via
    #   -r ../N2VC/requirements.txt
    #   juju
typing-extensions==4.5.0
    # via
    #   -r ../N2VC/requirements.txt
    #   typing-inspect
typing-inspect==0.8.0
    # via
    #   -r ../N2VC/requirements.txt
    #   juju
urllib3==1.26.15
    # via
    #   -r ../N2VC/requirements.txt
    #   kubernetes
    #   requests
websocket-client==1.5.1
    # via
    #   -r ../N2VC/requirements.txt
    #   kubernetes
websockets==7.0
    # via
    #   -r ../N2VC/requirements.txt
    #   juju

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