#######################################################################################
# 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.3
    # via yq
attrs==25.4.0
    # via
    #   jsonschema
    #   referencing
autopage==0.6.0
    # via cliff
backports-strenum==1.3.1
    # via cmd2
bcrypt==5.0.0
    # via paramiko
bitarray==3.8.0
    # via -r requirements.in
certifi==2026.2.25
    # via requests
cffi==2.0.0
    # via
    #   cryptography
    #   pynacl
charset-normalizer==3.4.4
    # via requests
cliff==4.13.2
    # via
    #   osc-lib
    #   python-openstackclient
cmd2==3.2.2
    # via cliff
cryptography==46.0.5
    # 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.1.0
    # via openstacksdk
jsonpatch==1.33
    # via openstacksdk
jsonpath-ng==1.8.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.26.0
    # via
    #   robotframework-jsonlibrary
    #   robotframework-jsonvalidator
jsonschema-specifications==2025.9.1
    # via jsonschema
keystoneauth1==5.13.1
    # 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.10.0
    # via
    #   osc-lib
    #   python-openstackclient
os-service-types==1.8.2
    # via
    #   keystoneauth1
    #   openstacksdk
osc-lib==4.4.0
    # via python-openstackclient
oslo-config==10.3.0
    # via python-keystoneclient
oslo-i18n==6.7.2
    # via
    #   osc-lib
    #   oslo-config
    #   oslo-utils
    #   python-cinderclient
    #   python-keystoneclient
    #   python-openstackclient
oslo-serialization==5.9.1
    # via python-keystoneclient
oslo-utils==10.0.0
    # via
    #   osc-lib
    #   oslo-serialization
    #   python-cinderclient
    #   python-keystoneclient
packaging==26.0
    # via
    #   oslo-utils
    #   python-keystoneclient
paramiko==4.0.0
    # via
    #   robotframework-sshlibrary
    #   scp
pbr==7.0.3
    # via
    #   jsonpath-rw-ext
    #   keystoneauth1
    #   openstacksdk
    #   os-service-types
    #   osc-lib
    #   oslo-i18n
    #   oslo-utils
    #   python-cinderclient
    #   python-keystoneclient
    #   python-openstackclient
platformdirs==4.9.2
    # via openstacksdk
ply==3.11
    # via jsonpath-rw
prettytable==3.17.0
    # via
    #   cliff
    #   python-cinderclient
psutil==7.2.2
    # via
    #   openstacksdk
    #   oslo-utils
pyang==2.7.1
    # via pyangbind
pyangbind==0.8.7
    # via -r requirements.in
pycparser==3.0
    # via cffi
pygments==2.19.2
    # via rich
pyjsonselect==0.2.2
    # via robotframework-jsonvalidator
pynacl==1.6.2
    # via paramiko
pyparsing==3.3.2
    # 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==9.0.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==2026.2.19
    # 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.3.3
    # via
    #   cmd2
    #   rich-argparse
rich-argparse==1.7.2
    # via cmd2
robotframework==7.4.1
    # 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.30.0
    # via
    #   jsonschema
    #   referencing
scp==0.15.0
    # via robotframework-sshlibrary
six==1.17.0
    # via jsonpath-rw
stevedore==5.7.0
    # via
    #   cliff
    #   dogpile-cache
    #   keystoneauth1
    #   osc-lib
    #   oslo-config
    #   python-cinderclient
    #   python-keystoneclient
    #   python-openstackclient
tomlkit==0.14.0
    # via yq
typing-extensions==4.15.0
    # via
    #   cmd2
    #   cryptography
    #   dogpile-cache
    #   keystoneauth1
    #   openstacksdk
    #   os-service-types
    #   referencing
urllib3==2.6.3
    # via requests
verboselogs==1.7
    # via -r requirements.in
wcwidth==0.6.0
    # via prettytable
wrapt==2.1.1
    # via debtcollector
xmltodict==1.0.4
    # via yq
yq==3.4.3
    # via -r requirements.in

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