#######################################################################################
# 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.3.0
    # via
    #   jsonschema
    #   referencing
autopage==0.5.2
    # via cliff
bcrypt==4.3.0
    # via paramiko
bitarray==3.6.0
    # via -r requirements.in
certifi==2025.7.14
    # via requests
cffi==1.17.1
    # via
    #   cryptography
    #   pynacl
charset-normalizer==3.4.2
    # via requests
cliff==4.10.0
    # via
    #   osc-lib
    #   python-openstackclient
cmd2==2.7.0
    # via cliff
cryptography==45.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.4.0
    # via openstacksdk
enum34==1.1.10
    # via pyangbind
haikunator==2.1.0
    # via -r requirements.in
idna==3.10
    # via requests
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.0
    # via
    #   robotframework-jsonlibrary
    #   robotframework-jsonvalidator
jsonschema-specifications==2025.4.1
    # via jsonschema
keystoneauth1==5.11.1
    # via
    #   openstacksdk
    #   osc-lib
    #   python-cinderclient
    #   python-keystoneclient
lxml==6.0.0
    # via
    #   pyang
    #   pyangbind
markdown-it-py==3.0.0
    # via rich
mdurl==0.1.2
    # via markdown-it-py
msgpack==1.1.1
    # via oslo-serialization
netaddr==1.3.0
    # via
    #   oslo-config
    #   oslo-utils
objectpath==0.6.1
    # via robotframework-jsonvalidator
openstacksdk==4.6.0
    # via
    #   osc-lib
    #   python-openstackclient
os-service-types==1.8.0
    # via
    #   keystoneauth1
    #   openstacksdk
osc-lib==4.1.0
    # via python-openstackclient
oslo-config==10.0.0
    # via python-keystoneclient
oslo-i18n==6.5.1
    # via
    #   osc-lib
    #   oslo-config
    #   oslo-utils
    #   python-cinderclient
    #   python-keystoneclient
    #   python-openstackclient
oslo-serialization==5.7.0
    # via python-keystoneclient
oslo-utils==9.0.0
    # via
    #   osc-lib
    #   oslo-serialization
    #   python-cinderclient
    #   python-keystoneclient
packaging==25.0
    # via
    #   oslo-utils
    #   python-keystoneclient
paramiko==3.5.1
    # via
    #   robotframework-sshlibrary
    #   scp
pbr==6.1.1
    # via
    #   jsonpath-rw-ext
    #   keystoneauth1
    #   openstacksdk
    #   os-service-types
    #   osc-lib
    #   oslo-i18n
    #   oslo-utils
    #   python-cinderclient
    #   python-keystoneclient
    #   python-openstackclient
    #   stevedore
platformdirs==4.3.8
    # via openstacksdk
ply==3.11
    # via
    #   jsonpath-ng
    #   jsonpath-rw
prettytable==3.16.0
    # via
    #   cliff
    #   python-cinderclient
psutil==7.0.0
    # via
    #   openstacksdk
    #   oslo-utils
pyang==2.6.1
    # via pyangbind
pyangbind==0.8.6
    # via -r requirements.in
pycparser==2.22
    # via cffi
pygments==2.19.2
    # via rich
pyjsonselect==0.2.2
    # via robotframework-jsonvalidator
pynacl==1.5.0
    # via paramiko
pyparsing==3.2.3
    # via oslo-utils
pyperclip==1.9.0
    # via cmd2
python-cinderclient==9.7.0
    # via python-openstackclient
python-keystoneclient==5.6.0
    # via python-openstackclient
python-openstackclient==8.1.0
    # via -r requirements.in
pyyaml==6.0.2
    # via
    #   -r requirements.in
    #   cliff
    #   openstacksdk
    #   oslo-config
    #   oslo-utils
    #   robotframework-yamllibrary
    #   yq
referencing==0.36.2
    # via
    #   jsonschema
    #   jsonschema-specifications
regex==2025.7.34
    # via
    #   -r requirements.in
    #   pyangbind
requests==2.32.4
    # 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.1.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.26.0
    # via
    #   jsonschema
    #   referencing
scp==0.15.0
    # via robotframework-sshlibrary
six==1.17.0
    # via jsonpath-rw
stevedore==5.4.1
    # via
    #   cliff
    #   dogpile-cache
    #   keystoneauth1
    #   osc-lib
    #   oslo-config
    #   python-cinderclient
    #   python-keystoneclient
    #   python-openstackclient
tomlkit==0.13.3
    # via yq
typing-extensions==4.14.1
    # via
    #   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.13
    # via
    #   cmd2
    #   prettytable
wrapt==1.17.2
    # via debtcollector
xmltodict==0.14.2
    # via yq
yq==3.4.3
    # via -r requirements.in

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