#######################################################################################
# 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.6.2
    # via yq
attrs==25.4.0
    # via
    #   jsonschema
    #   referencing
autopage==0.5.2
    # via cliff
bcrypt==5.0.0
    # via paramiko
bitarray==3.7.2
    # via -r requirements.in
certifi==2025.10.5
    # via requests
cffi==2.0.0
    # via
    #   cryptography
    #   pynacl
charset-normalizer==3.4.4
    # via requests
cliff==4.11.0
    # via
    #   osc-lib
    #   python-openstackclient
cmd2==2.7.0
    # via cliff
cryptography==46.0.3
    # via
    #   openstacksdk
    #   paramiko
    #   python-openstackclient
debtcollector==3.0.0
    # via
    #   oslo-utils
    #   python-keystoneclient
decorator==5.2.1
    # via
    #   dogpile-cache
    #   jsonpath-rw
    #   openstacksdk
dogpile-cache==1.5.0
    # via openstacksdk
enum34==1.1.10
    # via pyangbind
haikunator==2.1.0
    # via -r requirements.in
idna==3.11
    # via requests
invoke==2.2.1
    # via paramiko
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.7.0
    # 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.25.1
    # via
    #   robotframework-jsonlibrary
    #   robotframework-jsonvalidator
jsonschema-specifications==2025.9.1
    # via jsonschema
keystoneauth1==5.12.0
    # via
    #   openstacksdk
    #   osc-lib
    #   python-cinderclient
    #   python-keystoneclient
lxml==6.0.2
    # via
    #   pyang
    #   pyangbind
markdown-it-py==4.0.0
    # via rich
mdurl==0.1.2
    # via markdown-it-py
msgpack==1.1.2
    # via oslo-serialization
netaddr==1.3.0
    # via
    #   oslo-config
    #   oslo-utils
objectpath==0.6.1
    # via robotframework-jsonvalidator
openstacksdk==4.7.1
    # via
    #   osc-lib
    #   python-openstackclient
os-service-types==1.8.0
    # via
    #   keystoneauth1
    #   openstacksdk
osc-lib==4.2.0
    # via python-openstackclient
oslo-config==10.0.0
    # via python-keystoneclient
oslo-i18n==6.6.0
    # via
    #   osc-lib
    #   oslo-config
    #   oslo-utils
    #   python-cinderclient
    #   python-keystoneclient
    #   python-openstackclient
oslo-serialization==5.8.0
    # via python-keystoneclient
oslo-utils==9.1.0
    # via
    #   osc-lib
    #   oslo-serialization
    #   python-cinderclient
    #   python-keystoneclient
packaging==25.0
    # via
    #   oslo-utils
    #   python-keystoneclient
paramiko==4.0.0
    # via
    #   robotframework-sshlibrary
    #   scp
pbr==7.0.1
    # via
    #   jsonpath-rw-ext
    #   keystoneauth1
    #   openstacksdk
    #   os-service-types
    #   osc-lib
    #   oslo-i18n
    #   oslo-utils
    #   python-cinderclient
    #   python-keystoneclient
    #   python-openstackclient
platformdirs==4.5.0
    # via openstacksdk
ply==3.11
    # via
    #   jsonpath-ng
    #   jsonpath-rw
prettytable==3.16.0
    # via
    #   cliff
    #   python-cinderclient
psutil==7.1.0
    # via
    #   openstacksdk
    #   oslo-utils
pyang==2.7.1
    # via pyangbind
pyangbind==0.8.6
    # via -r requirements.in
pycparser==2.23
    # via cffi
pygments==2.19.2
    # via rich
pyjsonselect==0.2.2
    # via robotframework-jsonvalidator
pynacl==1.6.0
    # via paramiko
pyparsing==3.2.5
    # via oslo-utils
pyperclip==1.11.0
    # via cmd2
python-cinderclient==9.8.0
    # via python-openstackclient
python-keystoneclient==5.7.0
    # via python-openstackclient
python-openstackclient==8.2.0
    # via -r requirements.in
pyyaml==6.0.3
    # via
    #   -r requirements.in
    #   cliff
    #   openstacksdk
    #   oslo-config
    #   oslo-utils
    #   robotframework-yamllibrary
    #   yq
referencing==0.37.0
    # via
    #   jsonschema
    #   jsonschema-specifications
regex==2025.9.18
    # via
    #   -r requirements.in
    #   pyangbind
requests==2.32.5
    # 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
rich==14.2.0
    # via rich-argparse
rich-argparse==1.7.1
    # via cmd2
robotframework==7.3.2
    # via
    #   -r requirements.in
    #   robotframework-jsonlibrary
    #   robotframework-jsonvalidator
    #   robotframework-requests
    #   robotframework-sshlibrary
robotframework-jsonlibrary==0.5
    # via -r requirements.in
robotframework-jsonvalidator==2.0.0
    # via -r requirements.in
robotframework-requests==0.9.7
    # 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.27.1
    # via
    #   jsonschema
    #   referencing
scp==0.15.0
    # via robotframework-sshlibrary
six==1.17.0
    # via jsonpath-rw
stevedore==5.5.0
    # via
    #   cliff
    #   dogpile-cache
    #   keystoneauth1
    #   osc-lib
    #   oslo-config
    #   python-cinderclient
    #   python-keystoneclient
    #   python-openstackclient
tomlkit==0.13.3
    # via yq
typing-extensions==4.15.0
    # via
    #   cryptography
    #   dogpile-cache
    #   keystoneauth1
    #   openstacksdk
    #   referencing
tzdata==2025.2
    # via
    #   oslo-serialization
    #   oslo-utils
urllib3==2.5.0
    # via requests
verboselogs==1.7
    # via -r requirements.in
wcwidth==0.2.14
    # via
    #   cmd2
    #   prettytable
wrapt==1.17.3
    # via debtcollector
xmltodict==1.0.2
    # via yq
yq==3.4.3
    # via -r requirements.in

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