#######################################################################################
# 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.
#######################################################################################
argcomplete==3.5.0
    # via yq
attrs==24.2.0
    # via
    #   cmd2
    #   jsonschema
    #   outcome
    #   referencing
    #   trio
autopage==0.5.2
    # via cliff
bcrypt==4.2.0
    # via paramiko
bitarray==2.9.2
    # via -r requirements.in
certifi==2024.7.4
    # via
    #   requests
    #   selenium
cffi==1.17.0
    # via
    #   cryptography
    #   pynacl
charset-normalizer==3.3.2
    # via requests
click==8.1.7
    # via robotframework-seleniumlibrary
cliff==4.7.0
    # via
    #   osc-lib
    #   python-openstackclient
cmd2==2.4.3
    # via cliff
cryptography==43.0.0
    # via
    #   openstacksdk
    #   paramiko
    #   python-openstackclient
debtcollector==3.0.0
    # via
    #   oslo-config
    #   oslo-utils
    #   python-keystoneclient
decorator==5.1.1
    # via
    #   dogpile-cache
    #   jsonpath-rw
    #   openstacksdk
dogpile-cache==1.3.3
    # via openstacksdk
enum34==1.1.10
    # via pyangbind
exceptiongroup==1.2.2
    # via
    #   trio
    #   trio-websocket
h11==0.14.0
    # via wsproto
haikunator==2.1.0
    # via -r requirements.in
idna==3.7
    # via
    #   requests
    #   trio
iso8601==2.1.0
    # via
    #   keystoneauth1
    #   openstacksdk
    #   oslo-utils
    #   python-openstackclient
jmespath==1.0.1
    # via openstacksdk
jsonpatch==1.33
    # via openstacksdk
jsonpath-ng==1.6.1
    # via robotframework-jsonlibrary
jsonpath-rw==1.4.0
    # via jsonpath-rw-ext
jsonpath-rw-ext==1.2.2
    # via robotframework-jsonvalidator
jsonpointer==3.0.0
    # via jsonpatch
jsonschema==4.23.0
    # via
    #   robotframework-jsonlibrary
    #   robotframework-jsonvalidator
jsonschema-specifications==2023.12.1
    # via jsonschema
keystoneauth1==5.7.0
    # via
    #   openstacksdk
    #   osc-lib
    #   python-cinderclient
    #   python-keystoneclient
lxml==5.2.2
    # via
    #   pyang
    #   pyangbind
msgpack==1.0.8
    # via oslo-serialization
netaddr==1.3.0
    # via
    #   oslo-config
    #   oslo-utils
netifaces==0.11.0
    # via
    #   openstacksdk
    #   oslo-utils
objectpath==0.6.1
    # via robotframework-jsonvalidator
openstacksdk==3.3.0
    # via
    #   osc-lib
    #   python-openstackclient
os-service-types==1.7.0
    # via
    #   keystoneauth1
    #   openstacksdk
osc-lib==3.1.0
    # via python-openstackclient
oslo-config==9.5.0
    # via python-keystoneclient
oslo-i18n==6.3.0
    # via
    #   osc-lib
    #   oslo-config
    #   oslo-utils
    #   python-cinderclient
    #   python-keystoneclient
    #   python-openstackclient
oslo-serialization==5.4.0
    # via python-keystoneclient
oslo-utils==7.2.0
    # via
    #   osc-lib
    #   oslo-serialization
    #   python-cinderclient
    #   python-keystoneclient
outcome==1.3.0.post0
    # via trio
packaging==24.1
    # via
    #   oslo-utils
    #   python-keystoneclient
paramiko==3.4.0
    # via
    #   robotframework-sshlibrary
    #   scp
pbr==6.0.0
    # via
    #   jsonpath-rw-ext
    #   keystoneauth1
    #   openstacksdk
    #   os-service-types
    #   osc-lib
    #   oslo-i18n
    #   oslo-serialization
    #   python-cinderclient
    #   python-keystoneclient
    #   python-openstackclient
    #   stevedore
platformdirs==4.2.2
    # via openstacksdk
ply==3.11
    # via
    #   jsonpath-ng
    #   jsonpath-rw
prettytable==3.10.2
    # via
    #   cliff
    #   python-cinderclient
pyang==2.6.1
    # via pyangbind
pyangbind==0.8.6
    # via -r requirements.in
pycparser==2.22
    # via cffi
pyjsonselect==0.2.2
    # via robotframework-jsonvalidator
pynacl==1.5.0
    # via paramiko
pyparsing==3.1.2
    # via oslo-utils
pyperclip==1.9.0
    # via cmd2
pysocks==1.7.1
    # via urllib3
python-cinderclient==9.5.0
    # via python-openstackclient
python-keystoneclient==5.4.0
    # via python-openstackclient
python-openstackclient==7.0.0
    # via -r requirements.in
pyyaml==6.0.2
    # via
    #   -r requirements.in
    #   cliff
    #   openstacksdk
    #   oslo-config
    #   oslo-utils
    #   robotframework-yamllibrary
    #   yq
referencing==0.35.1
    # via
    #   jsonschema
    #   jsonschema-specifications
regex==2024.7.24
    # via
    #   -r requirements.in
    #   pyangbind
requests==2.32.3
    # via
    #   -r requirements.in
    #   keystoneauth1
    #   osc-lib
    #   oslo-config
    #   python-cinderclient
    #   python-keystoneclient
    #   python-openstackclient
    #   robotframework-requests
requestsexceptions==1.4.0
    # via openstacksdk
rfc3986==2.0.0
    # via oslo-config
robotframework==7.0.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.4.1
    # via robotframework-seleniumlibrary
robotframework-requests==0.9.7
    # via -r requirements.in
robotframework-seleniumlibrary==6.5.0
    # 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.20.0
    # via
    #   jsonschema
    #   referencing
scp==0.15.0
    # via robotframework-sshlibrary
selenium==4.23.1
    # via robotframework-seleniumlibrary
six==1.16.0
    # via jsonpath-rw
sniffio==1.3.1
    # via trio
sortedcontainers==2.4.0
    # via trio
stevedore==5.2.0
    # via
    #   cliff
    #   dogpile-cache
    #   keystoneauth1
    #   osc-lib
    #   oslo-config
    #   python-cinderclient
    #   python-keystoneclient
    #   python-openstackclient
tomlkit==0.13.0
    # via yq
trio==0.26.1
    # via
    #   selenium
    #   trio-websocket
trio-websocket==0.11.1
    # via selenium
typing-extensions==4.12.2
    # via
    #   dogpile-cache
    #   selenium
tzdata==2024.1
    # via
    #   oslo-serialization
    #   oslo-utils
urllib3[socks]==2.2.2
    # via
    #   requests
    #   selenium
verboselogs==1.7
    # via -r requirements.in
wcwidth==0.2.13
    # via
    #   cmd2
    #   prettytable
websocket-client==1.8.0
    # via selenium
wrapt==1.16.0
    # via debtcollector
wsproto==1.2.0
    # via trio-websocket
xmltodict==0.13.0
    # via yq
yq==3.4.3
    # via -r requirements.in
