diff --git a/global-requirements.txt b/global-requirements.txt index 5455bccac..053c2d65f 100644 --- a/global-requirements.txt +++ b/global-requirements.txt @@ -13,7 +13,7 @@ aiomysql # MIT License aiosqlite # MIT License alembic!=1.2.0,!=1.6.3 # MIT amqp!=2.1.4,!=5.0.4 # BSD -appdirs # MIT License +anycrc # Zlib apscheduler # MIT License autobahn # MIT License automaton # Apache-2.0 @@ -24,11 +24,8 @@ bcrypt # Apache-2.0 beautifulsoup4 # MIT betamax # Apache-2.0 boto # MIT -# Capped until https://bugs.launchpad.net/glance/+bug/2121144 is resolved -boto3<1.36 # Apache-2.0 -botocore<1.36 # Apache-2.0 -# indirect from boto3/botocore -s3transfer<0.11 # Apache-2.0 +boto3 # Apache-2.0 +botocore # Apache-2.0 cachetools # MIT License cassandra-driver!=3.6.0 # Apache-2.0 cffi # MIT @@ -92,6 +89,7 @@ jsonschema # MIT kazoo # Apache-2.0 kombu!=4.0.2 # BSD kubernetes # Apache-2.0 +ldappool # MPL libsass # MIT libvirt-python!=4.1.0,!=4.2.0 # LGPLv2+ lxml!=3.7.0 # BSD @@ -109,6 +107,7 @@ opentelemetry-exporter-otlp-proto-grpc # Apache-2.0 opentelemetry-exporter-otlp-proto-http # Apache-2.0 opentelemetry-sdk # Apache-2.0 ovs # Apache-2.0 +ovsdbapp # Apache-2.0 packaging!=20.5,!=20.6,!=20.7 # Apache-2.0 paramiko!=2.9.0,!=2.9.1 # LGPLv2.1+ passlib # BSD @@ -116,7 +115,6 @@ Paste # MIT PasteDeploy # MIT pecan!=1.0.2,!=1.0.3,!=1.0.4,!=1.2,!=1.4.0 # BSD pexpect!=3.3 # ISC License -pika # BSD Pillow # PIL License Pint # BSD platformdirs # MIT License @@ -124,6 +122,7 @@ PrettyTable!=3.4.0 # BSD prometheus-client # Apache-2.0 protobuf # BSD License (3 clause) psutil # BSD +psycopg2 # LGPL/ZPL pyasn1!=0.2.3 # BSD pyasn1-modules # BSD pycadf!=2.0.0 # Apache-2.0 @@ -150,11 +149,13 @@ pytz # MIT pyudev # LGPLv2.1+ PyYAML # MIT pyzabbix # LGPL +pyzmq # LGPL+BSD qrcode # BSD rbd-iscsi-client # Apache-2.0 +redis!=4.0.0 # MIT requests!=2.20.0,!=2.24.0 # Apache-2.0 requests-kerberos # ISC -requestsexceptions # Apache-2.0 +retrying!=1.3.0 # Apache-2.0 rfc3986 # Apache-2.0 Routes # MIT rtslib-fb # Apache-2.0 @@ -165,21 +166,27 @@ scipy # BSD semantic-version # BSD setproctitle # BSD SQLAlchemy # MIT -SQLAlchemy-Utils # BSD License sshtunnel # MIT statsd # MIT suds-community # LGPLv3+ +sushy!=1.9.0 # Apache-2.0 sympy # BSD systemd-python # LGPLv2+ sysv-ipc # BSD License +tabulate # MIT +tenacity # Apache-2.0 uhashring # BSD urllib3 # MIT +valkey # MIT voluptuous # BSD License warlock # Apache-2.0 WebOb # MIT websocket-client # LGPLv2+ websockify # LGPLv3 +Werkzeug!=2.2.0 # BSD License +wrapt # BSD License xattr;sys_platform!='win32' # MIT +xmltodict # MIT XStatic # MIT License XStatic-Angular # MIT License XStatic-Angular-Bootstrap # MIT License @@ -232,7 +239,6 @@ freezegun # Apache-2.0 # NOTE(tkajinam): block 2.5.0 because of https://github.com/cdent/gabbi/issues/309 gabbi!=2.5.0 # Apache-2.0 keyring # MIT/PSF -ldappool # MPL # Do not make mock conditional on Python version: we depend on newer code than # in [most] releases of the Python std library. # https://github.com/testing-cabal/mock/issues/487 for 4.0.[0-1] denylist @@ -243,11 +249,10 @@ nodeenv # BSD openstack-doc-tools # Apache-2.0 os-testr # Apache-2.0 oslotest # Apache-2.0 -ovsdbapp # Apache-2.0 pifpaf # Apache-2.0 playwright # Apache-2.0 -psycopg2 # LGPL/ZPL psycopg2-binary # LGPL/ZPL +py-consul # MIT License pytest # MIT pytest-cov # MIT pytest-django # BSD (3 clause) @@ -255,32 +260,21 @@ pytest-html #MPL-2.0 pytest-subtests # MIT pytest-xdist # MIT python-subunit # Apache-2.0/BSD -pyzmq # LGPL+BSD -redis!=4.0.0 # MIT requests-mock # Apache-2.0 respx # BSD-3-Clause -retrying!=1.3.0 # Apache-2.0 -sadisplay # BSD selenium # Apache-2.0 stestr!=2.3.0,!=3.0.0 # Apache-2.0 -sushy!=1.9.0 # Apache-2.0 -tabulate # MIT -tenacity # Apache-2.0 testrepository # Apache-2.0/BSD testresources # Apache-2.0/BSD testscenarios # Apache-2.0/BSD testtools # MIT typing-extensions # PSF tzdata # MIT -valkey # MIT virtualbmc # Apache-2.0 virtualenv!=16.3.0 # MIT WebTest # MIT -Werkzeug!=2.2.0 # BSD License whereto # Apache-2.0 -wrapt # BSD License wsgi-intercept # MIT License -xmltodict # MIT xvfbwrapper #license: MIT ## section:docs @@ -352,7 +346,6 @@ os-resource-classes # Apache-2.0 os-service-types # Apache-2.0 os-traits # Apache-2.0 os-vif!=1.8.0,!=1.12.0,!=3.0.0 # Apache-2.0 -os-win # Apache-2.0 osc-lib # Apache-2.0 osc-placement # Apache-2.0 oslo.cache!=1.31.1,!=2.1.0 # Apache-2.0 @@ -486,8 +479,6 @@ wheel # MIT jsonpath-rw # Apache-2.0 jsonpath-rw-ext # Apache-2.0 -py-consul # MIT License python-consul2 # MIT License simplejson # MIT six # MIT -zake # Apache-2.0 diff --git a/openstack_requirements/cmds/check_exists.py b/openstack_requirements/cmds/check_exists.py index 95a989cbc..c74c36b6c 100644 --- a/openstack_requirements/cmds/check_exists.py +++ b/openstack_requirements/cmds/check_exists.py @@ -10,9 +10,9 @@ # License for the specific language governing permissions and limitations # under the License. -"""Check to see if a package from a project's requrements file exist in g-r or -u-c. +"""Check for a package dependency. +Check to see if a package from a project's dependencies exists in g-r or u-c. """ import argparse @@ -28,7 +28,9 @@ def main(args=None): parser = argparse.ArgumentParser() parser.add_argument( - 'project', default='', help='path to the project source root folder.' + 'project', + default='', + help='path to the project source root folder.', ) parser.add_argument( '-u', @@ -115,7 +117,7 @@ def main(args=None): print( f'Specifier {spec.version} from {name} is ' f'failing check from global-requirements ' - f'specifiers {str(spec_gr)}' + f'specifiers {spec_gr!s}' ) error_count += 1 continue diff --git a/openstack_requirements/cmds/edit_constraint.py b/openstack_requirements/cmds/edit_constraint.py index a92f495cc..4fa40c9da 100644 --- a/openstack_requirements/cmds/edit_constraint.py +++ b/openstack_requirements/cmds/edit_constraint.py @@ -66,7 +66,7 @@ def main(argv=None, stdout=None): if stdout is None: stdout = sys.stdout _validate_options(options, args) - args = args + [""] + args = [*args, ""] content = open(args[0]).read() reqs = requirement.parse(content, permit_urls=True) out_reqs = edit(reqs, args[1], args[2]) diff --git a/openstack_requirements/cmds/generate.py b/openstack_requirements/cmds/generate.py index edee037a7..4cba3bba9 100644 --- a/openstack_requirements/cmds/generate.py +++ b/openstack_requirements/cmds/generate.py @@ -113,7 +113,7 @@ def _freeze(requirements, python): b'\n'.join(output).decode('utf-8'), exc, ) - ) + ) from exc finally: # log job results with tempfile.NamedTemporaryFile( @@ -162,7 +162,7 @@ def _combine_freezes(freezes, denylist=None): # version ranges for these for idx, (version, py_versions) in enumerate( sorted(versions.items()) - ): # noqa: E501 + ): if idx == 0: # lower-bound marker = f"python_version<='{py_versions[-1]}'" elif idx + 1 != len(versions): # intermediate version(s) @@ -174,9 +174,7 @@ def _combine_freezes(freezes, denylist=None): elif list(versions.values())[0] != reference_versions: # markers for packages with a single version - these are usually # version specific so we use strict python versions for these - for idx, (version, py_versions) in enumerate( - sorted(versions.items()) - ): # noqa: E501 + for version, py_versions in sorted(versions.items()): for py_version in sorted(py_versions): marker = f"python_version=='{py_version}'" yield f'{package}==={version};{marker}\n' @@ -294,7 +292,7 @@ def main(argv=None, stdout=None): 'installed' ), ) - options, args = parser.parse_args(argv) + options, _ = parser.parse_args(argv) if stdout is None: stdout = sys.stdout _validate_options(options) diff --git a/openstack_requirements/project_config.py b/openstack_requirements/project_config.py index 71831df0d..cda3a3b13 100644 --- a/openstack_requirements/project_config.py +++ b/openstack_requirements/project_config.py @@ -15,8 +15,7 @@ import requests import yaml - -ZUUL_PROJECTS_URL = 'https://git.openstack.org/cgit/openstack-infra/project-config/plain/zuul.d/projects.yaml' # noqa +ZUUL_PROJECTS_URL = 'https://git.openstack.org/cgit/openstack-infra/project-config/plain/zuul.d/projects.yaml' ZUUL_PROJECTS_FILENAME = 'openstack-infra/project-config/zuul.d/projects.yaml' diff --git a/playbooks/files/project-requirements-change.py b/playbooks/files/project-requirements-change.py index f063515d5..204685ebe 100755 --- a/playbooks/files/project-requirements-change.py +++ b/playbooks/files/project-requirements-change.py @@ -24,9 +24,9 @@ import sys import tempfile -from openstack_requirements import check # noqa -from openstack_requirements import project # noqa -from openstack_requirements import requirement # noqa +from openstack_requirements import check +from openstack_requirements import project +from openstack_requirements import requirement def run_command(cmd): diff --git a/projects.txt b/projects.txt index c01307ca2..4a6e73493 100644 --- a/projects.txt +++ b/projects.txt @@ -1,6 +1,5 @@ openstack/hacking openstack/pbr -openstack/requestsexceptions openstack/shade openstack/ansible-config_template openstack/ansible-hardening @@ -17,6 +16,7 @@ openstack/castellan openstack/cinder openstack/cinder-tempest-plugin openstack/cliff +openstack/cursive openstack/debtcollector openstack/designate openstack/designate-dashboard @@ -39,7 +39,6 @@ openstack/heat-translator openstack/horizon openstack/i18n openstack/ironic -openstack/ironic-inspector openstack/ironic-python-agent openstack/ironic-tempest-plugin openstack/ironic-ui @@ -173,7 +172,6 @@ openstack/python-designateclient openstack/python-freezerclient openstack/python-glanceclient openstack/python-heatclient -openstack/python-ironic-inspector-client openstack/python-ironicclient openstack/python-keystoneclient openstack/python-magnumclient diff --git a/pyproject.toml b/pyproject.toml index 5df4dd082..7a7a2e246 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -49,8 +49,14 @@ quote-style = "preserve" docstring-code-format = true [tool.ruff.lint] -select = ["E", "F", "UP"] +select = ["B", "E", "F", "RUF", "UP"] +ignore = [ + # next(iter(x)) is harder to read than list(x)[0] + "RUF015", +] -# [tool.ruff.lint.per-file-ignores] -# "openstack/tests/*" = ["S"] -# "examples/*" = ["S"] +[tool.ruff.lint.per-file-ignores] +"openstack_requirements/tests/*" = [ + # don't want to annotate testscenarios scenarios + "RUF012" +] diff --git a/upper-constraints.txt b/upper-constraints.txt index 190d18649..f240078be 100644 --- a/upper-constraints.txt +++ b/upper-constraints.txt @@ -6,17 +6,19 @@ # *STRONGLY* encouraged to rely on curated distributions of OpenStack # or manage security patching of dependencies themselves. voluptuous===0.16.0 +anycrc===2.0.0 +bitarray===3.8.0 chardet===6.0.0.post1 enum-compat===0.0.3 netmiko===4.8.0 -sshtunnel===0.4.0 +sshtunnel===0.5.1 PasteDeploy===3.1.0 Routes===2.5.1 rtslib-fb===2.2.4 oslo.limit===2.12.0 restructuredtext_lint===2.0.2 yarl===1.25.1 -tzdata===2026.4 +tzdata===2026.5 smmap===5.0.3 confget===5.1.2 XStatic-Angular-Bootstrap===2.5.0.1 @@ -38,7 +40,7 @@ rst2txt===1.1.0 setproctitle===1.3.8 pytest===9.1.1 a2wsgi===1.10.10 -python-slugify===9.1.2 +python-slugify===9.1.3 cursive===0.3.1 oslo.service===4.8.0 django-appconf===1.2.0 @@ -69,10 +71,10 @@ annotated-doc===0.0.5 jaraco.text===4.3.0 oslo.metrics===0.17.0 storage-interfaces===1.0.5 -pydantic===2.13.5 +pydantic===2.14.0 pystache===0.6.8 XStatic-Font-Awesome===6.2.1.2 -aiohttp===3.14.3 +aiohttp===3.14.4 waitress===3.0.2 os-refresh-config===14.1.0 pysnmp===7.1.30 @@ -80,7 +82,7 @@ Mako===1.4.3 sphinxcontrib-htmlhelp===2.1.0 XStatic-jQuery===3.7.1.1 sphinx-copybutton===0.5.2 -beartype===0.22.9 +beartype===0.23.0 jaraco.collections===5.2.1 ddt===1.7.2 pyserial===3.5 @@ -89,7 +91,7 @@ infi.dtypes.wwn===0.2.0 awscrt===0.37.0 pcre2===0.7.1 python-freezerclient===6.5.0 -py-pure-client===1.95.0 +py-pure-client===1.96.0 krest===1.3.8 psycopg2===2.9.13 networkx===3.6.1 @@ -97,7 +99,7 @@ cheroot===11.1.2 XStatic-Angular===1.8.2.3 zuul-sphinx===0.8.1 ply===3.11 -google-api-core===2.40.0 +google-api-core===2.42.0 requests-toolbelt===1.0.0 simplejson===4.2.0 python-swiftclient===4.11.0 @@ -108,7 +110,7 @@ monasca-common===3.8.0 hyperframe===6.1.0 zeroconf===0.151.5 scipy===1.17.1 -opentelemetry-exporter-otlp===1.45.0 +opentelemetry-exporter-otlp===1.45.1 python-gnupg===0.5.7 rsd-lib===1.2.0 XStatic-Jasmine===2.4.1.3 @@ -127,21 +129,21 @@ python-watcherclient===4.11.0 MarkupSafe===3.0.4 cloudpickle===3.1.2 doc8===2.0.0 -pymongo===4.18.2 +pymongo===4.18.3 python-cloudkittyclient===6.2.0 soupsieve===2.10 sqlparse===0.6.0 oslotest===6.1.1 -jsonpointer===3.1.1 +jsonpointer===3.2.0 defusedxml===0.7.1 -opentelemetry-sdk===1.45.0 +opentelemetry-sdk===1.45.1 netaddr===1.3.0 pyghmi===1.6.19 sphinxcontrib-blockdiag===3.0.0 aiosqlite===0.22.1 priority===2.0.0 gnocchiclient===7.2.0 -wcwidth===0.9.1 +wcwidth===0.9.2 sphinxcontrib.datatemplates===0.11.0 jsonpath-rw===1.4.0 prettytable===3.18.0 @@ -153,11 +155,11 @@ semantic-version===2.10.0 ConfigArgParse===1.8.0 async-timeout===5.0.1 virtualbmc===3.3.0 -SQLAlchemy===2.0.54 +SQLAlchemy===2.1.4 pyroute2===0.8.1 -google-auth===2.59.1 +google-auth===2.61.0 kazoo===2.11.0 -pyspnego===0.12.3 +pyspnego===0.12.4 trio-websocket===0.12.2 XStatic-roboto-fontface===0.8.0.1 pyudev===0.24.5 @@ -184,7 +186,7 @@ networking-generic-switch===10.2.0 pywbem===1.9.1 python-subunit===1.4.6 tornado===6.5.10 -pycparser===3.0 +pycparser===3.11 mock===5.2.0 PyYAML===6.0.3 beautifulsoup4===4.15.0 @@ -195,7 +197,7 @@ URLObject===3.0.0 psycopg2-binary===2.9.13 glance_store===5.7.0 openstack-release-test===8.6.0 -pycryptodomex===3.23.0 +pycryptodomex===3.24.0 requests-mock===1.12.1 os-apply-config===14.1.0 xxhash===4.0.1 @@ -230,7 +232,7 @@ Jinja2===3.1.6 XStatic-Bootstrap-SCSS===3.4.1.1 pyzabbix===1.3.1 ptyprocess===0.7.0 -amqp===5.4.0 +amqp===5.4.1 ruamel.yaml===0.19.1 websockify===0.13.0 CherryPy===18.10.0 @@ -244,7 +246,6 @@ django-debreach===2.1.0 sphinx-feature-classification===2.1.0 XStatic-JQuery-Migrate===3.3.2.2 pytest-html===4.2.0 -appdirs===1.4.4 google-auth-httplib2===0.4.4 daiquiri===3.4.0 apache-libcloud===3.9.1 @@ -254,9 +255,9 @@ passlib===1.7.4 cliff===4.16.0 os-brick===7.1.1 valkey===6.1.1 -scp===0.16.1 +scp===0.16.2 lark===1.3.1 -opentelemetry-exporter-prometheus===0.66b0 +opentelemetry-exporter-prometheus===0.66b1 python-zaqarclient===4.7.0 ldappool===3.0.0 hpack===4.2.0 @@ -265,13 +266,13 @@ roman-numerals===4.1.0 google-api-python-client===2.201.0 castellan===5.8.0 oslo.versionedobjects===3.12.0 +ssh-python===1.2.0.post1 enmerkar===0.7.1 -typer===0.27.2 +typer===0.27.3 webcolors===25.10.0 aodhclient===3.12.0 autobahn===26.7.1 truststore===0.10.4 -SQLAlchemy-Utils===0.42.1 retryz===0.1.9 pluggy===1.6.0 coverage===7.16.2 @@ -279,11 +280,11 @@ pyee===13.0.1 freezegun===1.5.5 mdurl===0.1.2 toml===0.10.2 -pycdlib===1.21.0 +pycdlib===1.22.0 pyperclip===1.11.0 cassandra-driver===3.30.1 XStatic-Angular-Schema-Form===0.8.13.1 -opentelemetry-exporter-otlp-proto-http===1.45.0 +opentelemetry-exporter-otlp-proto-http===1.45.1 gabbi===4.2.3 nwdiag===3.0.0 XStatic-bootswatch===3.3.7.1 @@ -299,28 +300,27 @@ os_vif===5.3.0 qrcode===8.2 oslo.middleware===8.2.0 XStatic-mdi===1.6.50.3 -pydantic_core===2.46.5 +pydantic_core===2.50.0 uritemplate===4.2.0 docutils===0.21.2 threadpoolctl===3.7.0 os-ken===4.2.2 ujson===6.0.0 -selenium===4.50.0 +selenium===4.51.0 pytest-subtests===0.15.0 mistral-lib===3.6.0 dogtag-pki===11.2.1 XStatic-Angular-UUID===0.0.4.1 dfs_sdk===1.2.27 sphinxcontrib-seqdiag===3.0.0 -os-win===5.9.0 capacity===1.3.14 playwright===1.63.0 markdown-it-py===4.2.0 retrying===1.4.2 -python-discovery===1.6.1 -platformdirs===4.12.2 +python-discovery===1.6.2 +platformdirs===4.12.4 pydotplus===2.0.2 -boto3===1.35.99 +boto3===1.40.1 jeepney===0.9.0 stestr===4.2.1 pillow===12.3.0 @@ -329,16 +329,16 @@ oslo.serialization===5.11.0 warlock===2.1.0 exabgp===5.0.13 aiomysql===0.3.2 -sphinxcontrib-httpdomain===2.0.0 +sphinxcontrib-httpdomain===2.1.0 metalsmith===2.5.0 -s3transfer===0.10.4 +s3transfer===0.13.1 text-unidecode===1.3 sphinxcontrib-svg2pdfconverter===2.1.0 oslo.vmware===4.10.1 autopage===0.6.0 gitdb===4.0.12 python-monascaclient===2.8.0 -opentelemetry-api===1.45.0 +opentelemetry-api===1.45.1 frozenlist===1.8.0 automaton===3.5.0 os-service-types===1.9.0 @@ -348,12 +348,11 @@ wsgi_intercept===1.13.1 jsonschema-specifications===2025.9.1 testscenarios===0.7.0 sphinxcontrib-pecanwsme===0.11.0 -sadisplay===0.4.9 enum34===1.1.10 infinisdk===289.1.4 rich-argparse===1.8.0 packaging===26.3 -opentelemetry-exporter-otlp-proto-grpc===1.45.0 +opentelemetry-exporter-otlp-proto-grpc===1.45.1 psutil===7.2.2 txaio===26.6.1 elasticsearch===9.5.1 @@ -363,7 +362,7 @@ pifpaf===3.4.0 blockdiag===3.0.0 testtools===2.9.1 infi.dtypes.iqn===0.4.0 -jsonpath-ng===1.8.0 +jsonpath-ng===1.10.0 XStatic-tv4===1.2.7.1 XStatic-JSEncrypt===2.3.1.2 python-cinderclient===9.10.0 @@ -383,7 +382,6 @@ yamlloader===1.6.0 protobuf===7.36.2 sushy===5.14.0 python-neutronclient===14.0.0 -pika===1.4.4 oslo.cache===4.3.0 WebTest===3.0.7 os-collect-config===14.1.0 @@ -408,39 +406,39 @@ Sphinx===9.0.4 oslo.config===10.7.0 openstackdocstheme===3.6.0 osc-placement===4.9.1 -rpds-py===2026.6.3 -zake===0.2.2 +rpds-py===2026.9.1 flux===1.4.0 flexparser===0.4 krb5===0.10.0 PyMySQL===1.2.3 uhashring===2.5 -kubernetes===36.0.3 +kubernetes===37.0.1 httplib2===0.32.0 -opentelemetry-exporter-otlp-common===0.66b0 +opentelemetry-exporter-otlp-common===0.66b1 betamax===0.9.0 construct===2.10.70 pytest-metadata===3.1.1 pyparsing===3.3.2 geomet===1.1.0 -opentelemetry-exporter-otlp-proto-common===1.45.0 +opentelemetry-exporter-otlp-proto-common===1.45.1 +aiohttp-retry===2.9.1 distlib===0.4.3 -ast_serialize===0.12.0 +ast_serialize===0.12.1 dogpile.cache===1.5.0 python-barbicanclient===7.6.0 salt===3008.0 -opentelemetry-semantic-conventions===0.66b0 +opentelemetry-semantic-conventions===0.66b1 blinker===1.9.0 WSME===0.13.0 oslo.upgradecheck===2.8.0 sherlock===0.4.1 tempora===5.13.0 stevedore===5.9.1 -botocore===1.35.99 +botocore===1.40.1 xmltodict===1.0.4 pyasn1===0.6.4 oslo.rootwrap===7.10.0 -Django===5.2.17 +Django===5.2.18 pexpect===4.9.0 elastic-transport===9.4.2 cmd2===4.2.4 @@ -451,7 +449,7 @@ cbor2===6.1.5 click===8.5.0 XStatic-smart-table===1.4.13.3 kuryr-lib===3.5.0 -jsonpatch===1.33 +jsonpatch===1.34 respx===0.23.1 libsass===0.23.0 os-testr===3.0.0 @@ -464,18 +462,17 @@ infi.dtypes.nqn===0.1.0 looseversion===1.3.0 six===1.17.0 h2===4.4.1 -dulwich===1.2.15 +dulwich===1.2.17 sentinels===1.1.1 kombu===5.6.2 distro===1.9.0 zstd===1.5.7.2 yaql===3.2.0 durationpy===0.11 -requestsexceptions===1.4.0 testresources===2.1.2 falcon===4.4.0 tomlkit===0.15.1 -opentelemetry-exporter-http-transport===0.66b0 +opentelemetry-exporter-http-transport===0.66b1 etcd3gw===2.7.0 timelib===0.3.0 Flask-RESTful===0.3.10 @@ -500,7 +497,7 @@ oslo.policy===6.0.1 hvac===2.4.0 pyeclib===1.8.0 rfc3986===2.0.0 -tenacity===9.1.4 +tenacity===9.2.1 invoke===3.0.3 python-designateclient===7.0.0 pytest-cov===7.1.0 @@ -522,10 +519,10 @@ cachez===0.1.2 XStatic-Bootstrap-Datepicker===1.4.0.1 netifaces===0.11.0 propcache===0.5.4 -cachetools===7.2.0 +cachetools===7.2.1 flexcache===0.3 sphinxcontrib-qthelp===2.0.0 -keystoneauth1===5.18.0 +keystoneauth1===5.18.1 statsd===4.0.1 proto-plus===1.29.0 python-keystoneclient===6.0.0 @@ -558,15 +555,15 @@ sphinxcontrib-programoutput===0.20 storpool.spopenstack===3.2.0 dnspython===2.8.0 oauthlib===4.0.0 -zipp===4.1.0 +zipp===4.1.1 greenlet===3.5.6 XStatic-Angular-Vis===4.16.0.1 -iniconfig===2.3.0 +iniconfig===2.3.1 referencing===0.37.0 -confluent-kafka===2.15.1 +confluent-kafka===2.16.0 backports.tarfile===1.2.0 -narwhals===2.26.0 -xvfbwrapper===0.2.34 +narwhals===2.27.1 +xvfbwrapper===0.2.35 influxdb-client===1.50.0 tosca-parser===2.15.0 python-consul2===0.1.5 @@ -580,7 +577,7 @@ importlib_metadata===9.0.1 sortedcontainers===2.4.0 microversion_parse===2.1.0 python-linstor===1.29.1 -filelock===4.0.9 +filelock===4.1.0 python-tackerclient===2.6.0 python-heatclient===5.3.0 oslo.utils===10.2.0 @@ -594,8 +591,8 @@ colorama===0.4.6 confetti===2.5.3 ironic-lib===7.0.0 aiohappyeyeballs===2.7.1 -pytz===2026.4 -opentelemetry-proto===1.45.0 +pytz===2026.5 +opentelemetry-proto===1.45.1 XStatic-D3===3.5.17.1 actdiag===3.0.0 sphinxcontrib-applehelp===2.0.0