#######################################################################################
# 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.
#######################################################################################
aiokafka==0.7.2
    # via -r https://osm.etsi.org/gitweb/?p=osm/common.git;a=blob_plain;f=requirements.txt;hb=v13.0
async-timeout==3.0.1
    # via
    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v13.0
    #   retrying-async
bcrypt==4.0.1
    # via
    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v13.0
    #   paramiko
cachetools==5.2.0
    # via
    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v13.0
    #   google-auth
certifi==2022.9.24
    # via
    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v13.0
    #   kubernetes
    #   requests
cffi==1.15.1
    # via
    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v13.0
    #   cryptography
    #   pynacl
charset-normalizer==2.1.1
    # via
    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v13.0
    #   requests
cryptography==38.0.1
    # via
    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v13.0
    #   paramiko
dataclasses==0.6
    # via -r https://osm.etsi.org/gitweb/?p=osm/common.git;a=blob_plain;f=requirements.txt;hb=v13.0
google-auth==2.12.0
    # via
    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v13.0
    #   kubernetes
idna==3.4
    # via
    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v13.0
    #   requests
juju==3.0.0
    # via -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v13.0
jujubundlelib==0.5.7
    # via
    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v13.0
    #   theblues
kafka-python==2.0.2
    # via
    #   -r https://osm.etsi.org/gitweb/?p=osm/common.git;a=blob_plain;f=requirements.txt;hb=v13.0
    #   aiokafka
kubernetes==24.2.0
    # via
    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v13.0
    #   juju
macaroonbakery==1.3.1
    # via
    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v13.0
    #   juju
    #   theblues
motor==1.3.1
    # via -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v13.0
mypy-extensions==0.4.3
    # via
    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v13.0
    #   typing-inspect
n2vc @ git+https://osm.etsi.org/gerrit/osm/N2VC.git@v13.0
    # via -r requirements-dev.in
oauthlib==3.2.1
    # via
    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v13.0
    #   requests-oauthlib
osm-common @ git+https://osm.etsi.org/gerrit/osm/common.git@v13.0
    # via -r requirements-dev.in
paramiko==2.11.0
    # via
    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v13.0
    #   juju
protobuf==3.20.3
    # via
    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v13.0
    #   macaroonbakery
pyasn1==0.4.8
    # via
    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v13.0
    #   juju
    #   pyasn1-modules
    #   rsa
pyasn1-modules==0.2.8
    # via
    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v13.0
    #   google-auth
pycparser==2.21
    # via
    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v13.0
    #   cffi
pycrypto==2.6.1
    # via -r https://osm.etsi.org/gitweb/?p=osm/common.git;a=blob_plain;f=requirements.txt;hb=v13.0
pymacaroons==0.13.0
    # via
    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v13.0
    #   macaroonbakery
pymongo==3.12.3
    # via
    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v13.0
    #   -r https://osm.etsi.org/gitweb/?p=osm/common.git;a=blob_plain;f=requirements.txt;hb=v13.0
    #   motor
pynacl==1.5.0
    # via
    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v13.0
    #   macaroonbakery
    #   paramiko
    #   pymacaroons
pyrfc3339==1.1
    # via
    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v13.0
    #   juju
    #   macaroonbakery
python-dateutil==2.8.2
    # via
    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v13.0
    #   kubernetes
pytz==2022.4
    # via
    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v13.0
    #   pyrfc3339
pyyaml==5.4.1
    # via
    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v13.0
    #   -r https://osm.etsi.org/gitweb/?p=osm/common.git;a=blob_plain;f=requirements.txt;hb=v13.0
    #   juju
    #   jujubundlelib
    #   kubernetes
requests==2.28.1
    # via
    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v13.0
    #   kubernetes
    #   macaroonbakery
    #   requests-oauthlib
    #   theblues
requests-oauthlib==1.3.1
    # via
    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v13.0
    #   kubernetes
retrying-async==2.0.0
    # via -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v13.0
rsa==4.9
    # via
    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v13.0
    #   google-auth
six==1.16.0
    # via
    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v13.0
    #   google-auth
    #   kubernetes
    #   macaroonbakery
    #   paramiko
    #   pymacaroons
    #   python-dateutil
theblues==0.5.2
    # via
    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v13.0
    #   juju
toposort==1.7
    # via
    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v13.0
    #   juju
typing-extensions==4.4.0
    # via
    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v13.0
    #   typing-inspect
typing-inspect==0.8.0
    # via
    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v13.0
    #   juju
urllib3==1.26.12
    # via
    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v13.0
    #   kubernetes
    #   requests
websocket-client==1.4.1
    # via
    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v13.0
    #   kubernetes
websockets==7.0
    # via
    #   -r https://osm.etsi.org/gitweb/?p=osm/N2VC.git;a=blob_plain;f=requirements.txt;hb=v13.0
    #   juju

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