#######################################################################################
# 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.
#######################################################################################
adal==1.2.7
    # via msrestazure
appdirs==1.4.4
    # via openstacksdk
atpublic==4.0
    # via flufl-enum
attrs==23.1.0
    # via
    #   cmd2
    #   jsonschema
    #   referencing
autopage==0.5.1
    # via cliff
azure-common==1.1.28
    # via
    #   -r RO-VIM-azure/requirements.in
    #   azure-mgmt-compute
    #   azure-mgmt-network
    #   azure-mgmt-resource
azure-core==1.29.4
    # via
    #   azure-identity
    #   azure-mgmt-core
    #   msrest
azure-identity==1.14.0
    # via -r RO-VIM-azure/requirements.in
azure-mgmt-compute==30.3.0
    # via -r RO-VIM-azure/requirements.in
azure-mgmt-core==1.4.0
    # via
    #   azure-mgmt-compute
    #   azure-mgmt-network
    #   azure-mgmt-resource
azure-mgmt-network==25.1.0
    # via -r RO-VIM-azure/requirements.in
azure-mgmt-resource==23.0.1
    # via -r RO-VIM-azure/requirements.in
bcrypt==4.0.1
    # via paramiko
boto==2.49.0
    # via -r RO-VIM-aws/requirements.in
cachetools==5.3.1
    # via google-auth
certifi==2023.7.22
    # via
    #   msrest
    #   requests
cffi==1.16.0
    # via
    #   cryptography
    #   pynacl
charset-normalizer==3.2.0
    # via requests
cheroot==10.0.0
    # via cherrypy
cherrypy==18.1.2
    # via -r NG-RO/requirements.in
cliff==4.3.0
    # via
    #   osc-lib
    #   python-neutronclient
    #   python-openstackclient
cmd2==2.4.3
    # via cliff
cryptography==41.0.4
    # via
    #   -r NG-RO/requirements.in
    #   adal
    #   azure-identity
    #   msal
    #   openstacksdk
    #   paramiko
    #   pyjwt
    #   pyopenssl
    #   python-openstackclient
cvprac==1.3.1
    # via -r RO-SDN-arista_cloudvision/requirements.in
debtcollector==2.5.0
    # via
    #   oslo-config
    #   oslo-context
    #   oslo-log
    #   oslo-utils
    #   python-keystoneclient
    #   python-neutronclient
decorator==5.1.1
    # via
    #   dogpile-cache
    #   openstacksdk
dogpile-cache==1.2.2
    # via openstacksdk
flufl-enum==6.0.2
    # via pyvcloud
google-api-core==2.8.2
    # via
    #   -r RO-VIM-gcp/requirements.in
    #   google-api-python-client
google-api-python-client==2.51.0
    # via -r RO-VIM-gcp/requirements.in
google-auth==2.8.0
    # via
    #   -r RO-VIM-gcp/requirements.in
    #   google-api-core
    #   google-api-python-client
    #   google-auth-httplib2
google-auth-httplib2==0.1.1
    # via google-api-python-client
google-cloud==0.34.0
    # via -r RO-VIM-gcp/requirements.in
googleapis-common-protos==1.56.3
    # via
    #   -r RO-VIM-gcp/requirements.in
    #   google-api-core
httplib2==0.22.0
    # via
    #   google-api-python-client
    #   google-auth-httplib2
humanfriendly==10.0
    # via pyvcloud
idna==3.4
    # via requests
importlib-metadata==6.8.0
    # via
    #   -r NG-RO/requirements.in
    #   cliff
ipconflict==0.5.0
    # via -r RO-VIM-aws/requirements.in
iso8601==2.0.0
    # via
    #   keystoneauth1
    #   openstacksdk
    #   oslo-utils
    #   python-neutronclient
    #   python-novaclient
    #   python-openstackclient
isodate==0.6.1
    # via
    #   azure-mgmt-compute
    #   azure-mgmt-network
    #   azure-mgmt-resource
    #   msrest
jaraco-functools==3.9.0
    # via
    #   cheroot
    #   tempora
jinja2==3.1.2
    # via -r NG-RO/requirements.in
jmespath==1.0.1
    # via openstacksdk
jsonpatch==1.33
    # via
    #   openstacksdk
    #   warlock
jsonpointer==2.4
    # via jsonpatch
jsonschema==4.19.1
    # via warlock
jsonschema-specifications==2023.7.1
    # via jsonschema
keystoneauth1==5.3.0
    # via
    #   openstacksdk
    #   osc-lib
    #   python-cinderclient
    #   python-glanceclient
    #   python-keystoneclient
    #   python-neutronclient
    #   python-novaclient
logutils==0.3.5
    # via -r NG-RO/requirements.in
lxml==4.9.3
    # via pyvcloud
markupsafe==2.1.3
    # via jinja2
more-itertools==10.1.0
    # via
    #   cheroot
    #   cherrypy
    #   jaraco-functools
msal==1.24.0
    # via
    #   azure-identity
    #   msal-extensions
msal-extensions==1.0.0
    # via azure-identity
msgpack==1.0.7
    # via oslo-serialization
msrest==0.7.1
    # via
    #   -r RO-VIM-azure/requirements.in
    #   msrestazure
msrestazure==0.6.4
    # via -r RO-VIM-azure/requirements.in
netaddr==0.9.0
    # via
    #   -r RO-VIM-aws/requirements.in
    #   -r RO-VIM-gcp/requirements.in
    #   ipconflict
    #   oslo-config
    #   oslo-utils
    #   python-neutronclient
netifaces==0.11.0
    # via
    #   openstacksdk
    #   oslo-utils
oauthlib==3.2.2
    # via requests-oauthlib
openstacksdk==1.5.0
    # via
    #   os-client-config
    #   osc-lib
    #   python-neutronclient
    #   python-openstackclient
os-client-config==2.1.0
    # via python-neutronclient
os-service-types==1.7.0
    # via
    #   keystoneauth1
    #   openstacksdk
osc-lib==2.8.1
    # via
    #   python-neutronclient
    #   python-openstackclient
oslo-config==9.2.0
    # via
    #   oslo-log
    #   python-keystoneclient
oslo-context==5.2.0
    # via oslo-log
oslo-i18n==6.1.0
    # via
    #   osc-lib
    #   oslo-config
    #   oslo-log
    #   oslo-utils
    #   python-cinderclient
    #   python-glanceclient
    #   python-keystoneclient
    #   python-neutronclient
    #   python-novaclient
    #   python-openstackclient
oslo-log==5.3.0
    # via python-neutronclient
oslo-serialization==5.2.0
    # via
    #   oslo-log
    #   python-keystoneclient
    #   python-neutronclient
    #   python-novaclient
oslo-utils==6.2.1
    # via
    #   osc-lib
    #   oslo-log
    #   oslo-serialization
    #   python-cinderclient
    #   python-glanceclient
    #   python-keystoneclient
    #   python-neutronclient
    #   python-novaclient
    #   python-openstackclient
packaging==23.1
    # via
    #   oslo-utils
    #   python-keystoneclient
paramiko==3.3.1
    # via
    #   -r RO-VIM-gcp/requirements.in
    #   -r RO-plugin/requirements.in
pbr==5.11.1
    # via
    #   keystoneauth1
    #   openstacksdk
    #   os-service-types
    #   osc-lib
    #   oslo-context
    #   oslo-i18n
    #   oslo-log
    #   oslo-serialization
    #   python-cinderclient
    #   python-glanceclient
    #   python-keystoneclient
    #   python-neutronclient
    #   python-novaclient
    #   python-openstackclient
    #   stevedore
portalocker==2.8.2
    # via msal-extensions
portend==3.2.0
    # via cherrypy
prettytable==3.9.0
    # via
    #   -r RO-VIM-vmware/requirements.in
    #   cliff
    #   python-cinderclient
    #   python-glanceclient
    #   python-novaclient
progressbar==2.5
    # via -r RO-VIM-vmware/requirements.in
protobuf==4.24.3
    # via
    #   google-api-core
    #   googleapis-common-protos
py-radix==0.10.0
    # via ipconflict
pyasn1==0.5.0
    # via
    #   pyasn1-modules
    #   rsa
pyasn1-modules==0.3.0
    # via google-auth
pycparser==2.21
    # via cffi
pygments==2.16.1
    # via pyvcloud
pyinotify==0.9.6
    # via oslo-log
pyjwt[crypto]==2.8.0
    # via
    #   adal
    #   msal
pynacl==1.5.0
    # via paramiko
pyopenssl==23.2.0
    # via python-glanceclient
pyparsing==3.1.1
    # via
    #   httplib2
    #   oslo-utils
pyperclip==1.8.2
    # via cmd2
pysocks==1.7.1
    # via requests
python-cinderclient==7.4.1
    # via
    #   -r RO-VIM-openstack/requirements.in
    #   python-openstackclient
python-dateutil==2.8.2
    # via
    #   adal
    #   oslo-log
python-glanceclient==4.4.0
    # via -r RO-VIM-openstack/requirements.in
python-keystoneclient==5.2.0
    # via
    #   -r RO-VIM-openstack/requirements.in
    #   python-neutronclient
    #   python-openstackclient
python-neutronclient==11.0.0
    # via -r RO-VIM-openstack/requirements.in
python-novaclient==18.4.0
    # via
    #   -r NG-RO/requirements.in
    #   -r RO-VIM-openstack/requirements.in
    #   python-openstackclient
python-openstackclient==6.3.0
    # via -r RO-VIM-openstack/requirements.in
pytz==2023.3.post1
    # via
    #   oslo-serialization
    #   oslo-utils
    #   tempora
pyvcloud==19.1.1
    # via -r RO-VIM-vmware/requirements.in
pyvmomi==8.0.2.0
    # via -r RO-VIM-vmware/requirements.in
pyyaml==6.0.1
    # via
    #   -r NG-RO/requirements.in
    #   -r requirements.in
    #   cliff
    #   openstacksdk
    #   oslo-config
    #   pyvcloud
referencing==0.30.2
    # via
    #   jsonschema
    #   jsonschema-specifications
requests[socks]==2.31.0
    # via
    #   -r NG-RO/requirements.in
    #   -r RO-VIM-vmware/requirements.in
    #   adal
    #   azure-core
    #   cvprac
    #   google-api-core
    #   keystoneauth1
    #   msal
    #   msrest
    #   oslo-config
    #   python-cinderclient
    #   python-glanceclient
    #   python-keystoneclient
    #   python-neutronclient
    #   pyvcloud
    #   requests-oauthlib
requests-oauthlib==1.3.1
    # via msrest
requestsexceptions==1.4.0
    # via openstacksdk
rfc3986==2.0.0
    # via oslo-config
rpds-py==0.10.3
    # via
    #   jsonschema
    #   referencing
rsa==4.9
    # via google-auth
simplejson==3.19.1
    # via
    #   osc-lib
    #   python-cinderclient
    #   python-neutronclient
six==1.16.0
    # via
    #   azure-core
    #   google-auth
    #   isodate
    #   msrestazure
    #   python-dateutil
    #   python-keystoneclient
    #   pyvmomi
stevedore==5.1.0
    # via
    #   cliff
    #   dogpile-cache
    #   keystoneauth1
    #   osc-lib
    #   oslo-config
    #   python-cinderclient
    #   python-keystoneclient
    #   python-novaclient
    #   python-openstackclient
tempora==5.5.0
    # via portend
tqdm==4.66.1
    # via ipconflict
typing-extensions==4.8.0
    # via
    #   azure-core
    #   dogpile-cache
    #   jaraco-functools
tzdata==2023.3
    # via
    #   oslo-serialization
    #   oslo-utils
uritemplate==4.1.1
    # via google-api-python-client
urllib3==2.0.5
    # via requests
uuid==1.30
    # via -r RO-SDN-arista_cloudvision/requirements.in
warlock==2.0.1
    # via python-glanceclient
wcwidth==0.2.6
    # via
    #   cmd2
    #   prettytable
wrapt==1.15.0
    # via
    #   debtcollector
    #   python-glanceclient
zc-lockfile==3.0.post1
    # via cherrypy
zipp==3.17.0
    # via importlib-metadata

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