#######################################################################################
# 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.
#######################################################################################
appdirs==1.4.4
    # via openstacksdk
argcomplete==3.1.2
    # via yq
attrs==23.1.0
    # via
    #   cmd2
    #   jsonschema
    #   outcome
    #   referencing
    #   trio
autopage==0.5.1
    # via cliff
bcrypt==4.0.1
    # via paramiko
bitarray==2.8.1
    # via -r requirements.in
certifi==2023.7.22
    # via
    #   requests
    #   selenium
cffi==1.15.1
    # via
    #   cryptography
    #   pynacl
charset-normalizer==3.2.0
    # via requests
cliff==4.3.0
    # via
    #   osc-lib
    #   python-openstackclient
cmd2==2.4.3
    # via cliff
cryptography==41.0.4
    # via
    #   openstacksdk
    #   paramiko
    #   python-openstackclient
debtcollector==2.5.0
    # via
    #   oslo-config
    #   oslo-utils
    #   python-keystoneclient
decorator==5.1.1
    # via
    #   dogpile-cache
    #   jsonpath-rw
    #   openstacksdk
dogpile-cache==1.2.2
    # via openstacksdk
enum34==1.1.10
    # via pyangbind
exceptiongroup==1.1.3
    # via
    #   trio
    #   trio-websocket
h11==0.14.0
    # via wsproto
haikunator==2.1.0
    # via -r requirements.in
idna==3.4
    # via
    #   requests
    #   trio
importlib-metadata==6.8.0
    # via cliff
iso8601==2.0.0
    # via
    #   keystoneauth1
    #   openstacksdk
    #   oslo-utils
    #   python-novaclient
    #   python-openstackclient
jmespath==1.0.1
    # via openstacksdk
jsonpatch==1.33
    # via openstacksdk
jsonpath-ng==1.6.0
    # via robotframework-jsonlibrary
jsonpath-rw==1.4.0
    # via jsonpath-rw-ext
jsonpath-rw-ext==1.2.2
    # via robotframework-jsonvalidator
jsonpointer==2.4
    # via jsonpatch
jsonschema==4.19.1
    # via
    #   robotframework-jsonlibrary
    #   robotframework-jsonvalidator
jsonschema-specifications==2023.7.1
    # via jsonschema
keystoneauth1==5.3.0
    # via
    #   openstacksdk
    #   osc-lib
    #   python-cinderclient
    #   python-keystoneclient
    #   python-novaclient
lxml==4.9.3
    # via
    #   pyang
    #   pyangbind
msgpack==1.0.7
    # via oslo-serialization
netaddr==0.9.0
    # via
    #   oslo-config
    #   oslo-utils
netifaces==0.11.0
    # via
    #   openstacksdk
    #   oslo-utils
objectpath==0.6.1
    # via robotframework-jsonvalidator
openstacksdk==1.5.0
    # via
    #   osc-lib
    #   python-openstackclient
os-service-types==1.7.0
    # via
    #   keystoneauth1
    #   openstacksdk
osc-lib==2.8.1
    # via python-openstackclient
oslo-config==9.2.0
    # via python-keystoneclient
oslo-i18n==6.1.0
    # via
    #   osc-lib
    #   oslo-config
    #   oslo-utils
    #   python-cinderclient
    #   python-keystoneclient
    #   python-novaclient
    #   python-openstackclient
oslo-serialization==5.2.0
    # via
    #   python-keystoneclient
    #   python-novaclient
oslo-utils==6.2.1
    # via
    #   osc-lib
    #   oslo-serialization
    #   python-cinderclient
    #   python-keystoneclient
    #   python-novaclient
    #   python-openstackclient
outcome==1.2.0
    # via trio
packaging==23.1
    # via
    #   oslo-utils
    #   python-keystoneclient
paramiko==3.3.1
    # via
    #   robotframework-sshlibrary
    #   scp
pbr==5.11.1
    # via
    #   jsonpath-rw-ext
    #   keystoneauth1
    #   openstacksdk
    #   os-service-types
    #   osc-lib
    #   oslo-i18n
    #   oslo-serialization
    #   python-cinderclient
    #   python-keystoneclient
    #   python-novaclient
    #   python-openstackclient
    #   stevedore
ply==3.11
    # via
    #   jsonpath-ng
    #   jsonpath-rw
prettytable==3.9.0
    # via
    #   cliff
    #   python-cinderclient
    #   python-novaclient
pyang==2.5.3
    # via pyangbind
pyangbind==0.8.3.post1
    # via -r requirements.in
pycparser==2.21
    # via cffi
pyjsonselect==0.2.2
    # via robotframework-jsonvalidator
pynacl==1.5.0
    # via paramiko
pyparsing==3.1.1
    # via oslo-utils
pyperclip==1.8.2
    # via cmd2
pysocks==1.7.1
    # via urllib3
python-cinderclient==9.4.0
    # via python-openstackclient
python-keystoneclient==5.2.0
    # via python-openstackclient
python-novaclient==18.4.0
    # via python-openstackclient
python-openstackclient==6.3.0
    # via -r requirements.in
pytz==2023.3.post1
    # via
    #   oslo-serialization
    #   oslo-utils
pyyaml==6.0.1
    # via
    #   -r requirements.in
    #   cliff
    #   openstacksdk
    #   oslo-config
    #   robotframework-yamllibrary
    #   yq
referencing==0.30.2
    # via
    #   jsonschema
    #   jsonschema-specifications
regex==2023.8.8
    # via
    #   -r requirements.in
    #   pyangbind
requests==2.31.0
    # via
    #   -r requirements.in
    #   keystoneauth1
    #   oslo-config
    #   python-cinderclient
    #   python-keystoneclient
    #   robotframework-requests
requestsexceptions==1.4.0
    # via openstacksdk
rfc3986==2.0.0
    # via oslo-config
robotframework==6.1.1
    # via
    #   -r requirements.in
    #   robotframework-jsonlibrary
    #   robotframework-jsonvalidator
    #   robotframework-requests
    #   robotframework-seleniumlibrary
    #   robotframework-sshlibrary
robotframework-jsonlibrary==0.5
    # via -r requirements.in
robotframework-jsonvalidator==2.0.0
    # via -r requirements.in
robotframework-pythonlibcore==4.2.0
    # via robotframework-seleniumlibrary
robotframework-requests==0.9.5
    # via -r requirements.in
robotframework-seleniumlibrary==6.1.2
    # via -r requirements.in
robotframework-sshlibrary==3.8.0
    # via -r requirements.in
robotframework-yamllibrary==0.2.8
    # via -r requirements.in
rpds-py==0.10.3
    # via
    #   jsonschema
    #   referencing
scp==0.14.5
    # via robotframework-sshlibrary
selenium==4.13.0
    # via robotframework-seleniumlibrary
simplejson==3.19.1
    # via osc-lib
six==1.16.0
    # via
    #   jsonpath-rw
    #   pyangbind
    #   python-keystoneclient
sniffio==1.3.0
    # via trio
sortedcontainers==2.4.0
    # via trio
stevedore==5.1.0
    # via
    #   cliff
    #   dogpile-cache
    #   keystoneauth1
    #   osc-lib
    #   oslo-config
    #   python-cinderclient
    #   python-keystoneclient
    #   python-novaclient
    #   python-openstackclient
tomlkit==0.12.1
    # via yq
trio==0.22.2
    # via
    #   selenium
    #   trio-websocket
trio-websocket==0.11.1
    # via selenium
typing-extensions==4.8.0
    # via dogpile-cache
tzdata==2023.3
    # via
    #   oslo-serialization
    #   oslo-utils
urllib3[socks]==2.0.5
    # via
    #   requests
    #   selenium
verboselogs==1.7
    # via -r requirements.in
wcwidth==0.2.6
    # via
    #   cmd2
    #   prettytable
wrapt==1.15.0
    # via debtcollector
wsproto==1.2.0
    # via trio-websocket
xmltodict==0.13.0
    # via yq
yq==3.2.3
    # via -r requirements.in
zipp==3.17.0
    # via importlib-metadata
