#######################################################################################
# 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.5.2
    # via cliff
backports-strenum==1.3.1
    # via cmd2
bcrypt==5.0.0
    # via paramiko
bitarray==3.8.0
    # via -r requirements.in
certifi==2025.11.12
    # via requests
cffi==2.0.0
    # via
    #   cryptography
    #   pynacl
charset-normalizer==3.4.4
    # via requests
cliff==4.13.0
    # via
    #   osc-lib
    #   python-openstackclient
cmd2==3.0.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.8.0
    # via
    #   osc-lib
    #   python-openstackclient
os-service-types==1.8.2
    # via
    #   keystoneauth1
    #   openstacksdk
osc-lib==4.2.0
    # via python-openstackclient
oslo-config==10.1.0
    # via python-keystoneclient
oslo-i18n==6.7.1
    # via
    #   osc-lib
    #   oslo-config
    #   oslo-utils
    #   python-cinderclient
    #   python-keystoneclient
    #   python-openstackclient
oslo-serialization==5.8.0
    # via python-keystoneclient
oslo-utils==9.2.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.3
    # via
    #   jsonpath-rw-ext
    #   keystoneauth1
    #   openstacksdk
    #   os-service-types
    #   osc-lib
    #   oslo-i18n
    #   oslo-utils
    #   python-cinderclient
    #   python-keystoneclient
    #   python-openstackclient
platformdirs==4.5.1
    # via openstacksdk
ply==3.11
    # via
    #   jsonpath-ng
    #   jsonpath-rw
prettytable==3.17.0
    # via
    #   cliff
    #   python-cinderclient
psutil==7.1.3
    # 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.1
    # 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.11.3
    # 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
    #   cmd2
    #   rich-argparse
rich-argparse==1.7.2
    # 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.30.0
    # via
    #   jsonschema
    #   referencing
scp==0.15.0
    # via robotframework-sshlibrary
six==1.17.0
    # via jsonpath-rw
stevedore==5.6.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
    #   os-service-types
    #   referencing
tzdata==2025.2
    # via
    #   oslo-serialization
    #   oslo-utils
urllib3==2.6.1
    # via requests
verboselogs==1.7
    # via -r requirements.in
wcwidth==0.2.14
    # via prettytable
wrapt==2.0.1
    # 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
