diff --git a/.zuul.d/cross-jobs.yaml b/.zuul.d/cross-jobs.yaml index 7473384e4..38c5e3686 100644 --- a/.zuul.d/cross-jobs.yaml +++ b/.zuul.d/cross-jobs.yaml @@ -13,7 +13,7 @@ .. zuul:jobvar:: tox_envlist Use the specified tox environments (``ALL`` selects all). - nodeset: ubuntu-noble + nodeset: debian-trixie-8GB vars: zuul_work_dir: "{{ (zuul.projects.values() | selectattr('required') | selectattr('name', 'match', '^(?!openstack/requirements)') | list)[0].src_dir }}" tox_constraints_file: "{{ ansible_user_dir }}/{{ zuul.projects['opendev.org/openstack/requirements'].src_dir }}/upper-constraints.txt" @@ -22,68 +22,68 @@ - .zuul.d/cross-jobs.yaml - job: - name: cross-aodh-py312 + name: cross-aodh-py313 parent: requirements-cross-test - description: Run cross-project tests on aodh with py312. + description: Run cross-project tests on aodh with py313. required-projects: openstack/aodh vars: - tox_envlist: py312 + tox_envlist: py313 - job: - name: cross-barbican-py312 + name: cross-barbican-py313 parent: requirements-cross-test - description: Run cross-project tests on barbican with py312. + description: Run cross-project tests on barbican with py313. required-projects: openstack/barbican vars: - tox_envlist: py312 + tox_envlist: py313 - job: - name: cross-ceilometer-py312 + name: cross-ceilometer-py313 parent: requirements-cross-test - description: Run cross-project tests on ceilometer with py312. + description: Run cross-project tests on ceilometer with py313. required-projects: openstack/ceilometer vars: - tox_envlist: py312 + tox_envlist: py313 - job: - name: cross-cinder-py312 + name: cross-cinder-py313 parent: requirements-cross-test - description: Run cross-project tests on cinder with py312. + description: Run cross-project tests on cinder with py313. required-projects: openstack/cinder vars: - tox_envlist: py312 + tox_envlist: py313 - job: - name: cross-designate-py312 + name: cross-designate-py313 parent: requirements-cross-test - description: Run cross-project tests on designate with py312. + description: Run cross-project tests on designate with py313. required-projects: openstack/designate vars: - tox_envlist: py312 + tox_envlist: py313 - job: - name: cross-glance-py312 + name: cross-glance-py313 parent: requirements-cross-test - description: Run cross-project tests on glance with py312. + description: Run cross-project tests on glance with py313. required-projects: openstack/glance vars: - tox_envlist: py312 + tox_envlist: py313 - job: - name: cross-heat-py312 + name: cross-heat-py313 parent: requirements-cross-test - description: Run cross-project tests on heat with py312. + description: Run cross-project tests on heat with py313. required-projects: openstack/heat vars: - tox_envlist: py312 + tox_envlist: py313 - job: - name: cross-horizon-py312 + name: cross-horizon-py313 parent: requirements-cross-test - description: Run cross-project tests on horizon with py312. + description: Run cross-project tests on horizon with py313. required-projects: openstack/horizon vars: - tox_envlist: py312 + tox_envlist: py313 - job: name: cross-horizon-npm @@ -101,70 +101,70 @@ - .zuul.d/cross-jobs.yaml - job: - name: cross-keystone-py312 + name: cross-keystone-py313 parent: requirements-cross-test - description: Run cross-project tests on keystone with py312. + description: Run cross-project tests on keystone with py313. required-projects: openstack/keystone timeout: 3600 vars: - tox_envlist: py312 + tox_envlist: py313 - job: - name: cross-kuryr-py312 + name: cross-kuryr-py313 parent: requirements-cross-test - description: Run cross-project tests on kuryr-kubernetes with py312. + description: Run cross-project tests on kuryr-kubernetes with py313. required-projects: openstack/kuryr-kubernetes vars: - tox_envlist: py312 + tox_envlist: py313 - job: - name: cross-ironic-py312 + name: cross-ironic-py313 parent: requirements-cross-test - description: Run cross-project tests on ironic with py312. + description: Run cross-project tests on ironic with py313. required-projects: openstack/ironic vars: - tox_envlist: py312 + tox_envlist: py313 - job: - name: cross-magnum-py312 + name: cross-magnum-py313 parent: requirements-cross-test - description: Run cross-project tests on magnum with py312. + description: Run cross-project tests on magnum with py313. required-projects: openstack/magnum vars: - tox_envlist: py312 + tox_envlist: py313 - job: - name: cross-manila-py312 + name: cross-manila-py313 parent: requirements-cross-test - description: Run cross-project tests on manila with py312. + description: Run cross-project tests on manila with py313. required-projects: openstack/manila vars: - tox_envlist: py312 + tox_envlist: py313 - job: - name: cross-masakari-py312 + name: cross-masakari-py313 parent: requirements-cross-test - description: Run cross-project tests on masakari with py312. + description: Run cross-project tests on masakari with py313. required-projects: openstack/masakari vars: - tox_envlist: py312 + tox_envlist: py313 - job: - name: cross-mistral-py312 + name: cross-mistral-py313 parent: requirements-cross-test - description: Run cross-project tests on mistral with py312. + description: Run cross-project tests on mistral with py313. required-projects: openstack/mistral vars: - tox_envlist: py312 + tox_envlist: py313 - job: - name: cross-neutron-py312 + name: cross-neutron-py313 parent: requirements-cross-test - description: Run cross-project tests on neutron with py312. + description: Run cross-project tests on neutron with py313. required-projects: openstack/neutron timeout: 3600 vars: - tox_envlist: py312 + tox_envlist: py313 - job: name: cross-nova-functional @@ -175,12 +175,12 @@ tox_envlist: functional - job: - name: cross-placement-functional-py312 + name: cross-placement-functional-py313 parent: requirements-cross-test - description: Run cross-project functional tests on placement with py312. + description: Run cross-project functional tests on placement with py313. required-projects: openstack/placement vars: - tox_envlist: functional-py312 + tox_envlist: functional-py313 - job: name: cross-nova-pep8 @@ -191,20 +191,20 @@ tox_envlist: pep8 - job: - name: cross-nova-py312 + name: cross-nova-py313 parent: requirements-cross-test - description: Run cross-project tests on nova with py312. + description: Run cross-project tests on nova with py313. required-projects: openstack/nova vars: - tox_envlist: py312 + tox_envlist: py313 - job: - name: cross-placement-py312 + name: cross-placement-py313 parent: requirements-cross-test - description: Run cross-project tests on placement with py312. + description: Run cross-project tests on placement with py313. required-projects: openstack/placement vars: - tox_envlist: py312 + tox_envlist: py313 - job: name: cross-osvif-py3 @@ -215,20 +215,20 @@ tox_envlist: py3 - job: - name: cross-octavia-py312 + name: cross-octavia-py313 parent: requirements-cross-test - description: Run cross-project tests on octavia with py312. + description: Run cross-project tests on octavia with py313. required-projects: openstack/octavia vars: - tox_envlist: py312 + tox_envlist: py313 - job: - name: cross-swift-py312 + name: cross-swift-py313 parent: requirements-cross-test - description: Run cross-project tests on swift with py312. + description: Run cross-project tests on swift with py313. required-projects: openstack/swift vars: - tox_envlist: py312 + tox_envlist: py313 - job: name: cross-osc-tox-docs diff --git a/.zuul.d/project.yaml b/.zuul.d/project.yaml index 688f242a4..36283f22f 100644 --- a/.zuul.d/project.yaml +++ b/.zuul.d/project.yaml @@ -20,34 +20,34 @@ - requirements-tox-py313-check-uc - requirements-tox-validate-projects: voting: false - - cross-aodh-py312 - - cross-barbican-py312 - - cross-ceilometer-py312 - - cross-cinder-py312 - - cross-designate-py312 - - cross-glance-py312 - - cross-heat-py312 - - cross-horizon-py312 + - cross-aodh-py313 + - cross-barbican-py313 + - cross-ceilometer-py313 + - cross-cinder-py313 + - cross-designate-py313 + - cross-glance-py313 + - cross-heat-py313 + - cross-horizon-py313 - cross-horizon-npm - - cross-ironic-py312 - - cross-keystone-py312 - - cross-kuryr-py312 - - cross-manila-py312 - - cross-magnum-py312 - - cross-masakari-py312: + - cross-ironic-py313 + - cross-keystone-py313 + - cross-kuryr-py313 + - cross-manila-py313 + - cross-magnum-py313 + - cross-masakari-py313: voting: false - - cross-mistral-py312: + - cross-mistral-py313: voting: false - - cross-neutron-py312 + - cross-neutron-py313 - cross-nova-pep8 - - cross-nova-py312 - - cross-placement-py312 + - cross-nova-py313 + - cross-placement-py313 - cross-osvif-py3 - cross-nova-functional - - cross-placement-functional-py312 - - cross-octavia-py312 + - cross-placement-functional-py313 + - cross-octavia-py313 - cross-osc-tox-docs - - cross-swift-py312 + - cross-swift-py313 - cross-watcher-py3 - openstacksdk-functional-devstack - tempest-full-py3: @@ -78,28 +78,28 @@ - requirements-tox-py311-check-uc - requirements-tox-py312-check-uc - requirements-tox-py313-check-uc - - cross-cinder-py312 - - cross-designate-py312 - - cross-glance-py312 - - cross-heat-py312 - - cross-horizon-py312 + - cross-cinder-py313 + - cross-designate-py313 + - cross-glance-py313 + - cross-heat-py313 + - cross-horizon-py313 - cross-horizon-npm - - cross-ironic-py312 - - cross-keystone-py312 - - cross-kuryr-py312 - - cross-manila-py312 - - cross-neutron-py312 + - cross-ironic-py313 + - cross-keystone-py313 + - cross-kuryr-py313 + - cross-manila-py313 + - cross-neutron-py313 - cross-nova-pep8 - - cross-nova-py312: + - cross-nova-py313: files: ^upper-constraints.txt$ - - cross-placement-py312: + - cross-placement-py313: files: ^upper-constraints.txt$ - cross-osvif-py3 - cross-nova-functional - - cross-placement-functional-py312 - - cross-octavia-py312 + - cross-placement-functional-py313 + - cross-octavia-py313 - cross-osc-tox-docs - - cross-swift-py312 + - cross-swift-py313 - cross-watcher-py3 - openstacksdk-functional-devstack - tempest-full-py3: diff --git a/global-requirements.txt b/global-requirements.txt index b1b617db1..8c49dbc2a 100644 --- a/global-requirements.txt +++ b/global-requirements.txt @@ -135,7 +135,7 @@ pyOpenSSL # Apache-2.0 pyparsing # MIT pyroute2!=0.5.4,!=0.5.5,!=0.7.1,!=0.9.1,!=0.9.2,!=0.9.3,!=0.9.4;sys_platform!='win32' # Apache-2.0 (+ dual licensed GPL2) pysaml2!=4.0.3,!=4.0.4,!=4.0.5rc1,!=4.0.5,!=4.1.0,!=4.2.0,!=4.3.0,!=4.4.0,!=4.6.0 # Apache-2.0 -pysnmp-lextudio # BSD +pysnmp # BSD pystache # MIT # Only required for sasl/binary protocol python-binary-memcached # MIT @@ -289,6 +289,7 @@ pydotplus # MIT License Pygments # BSD license rst2txt # BSD sphinx!=1.6.6,!=1.6.7,!=2.1.0,!=3.0.0,!=3.4.2 # BSD +sphinx-copybutton # MIT sphinxcontrib-actdiag # BSD sphinxcontrib-apidoc # BSD sphinxcontrib-blockdiag # BSD @@ -483,11 +484,6 @@ jsonpath-rw # Apache-2.0 jsonpath-rw-ext # Apache-2.0 python-consul # MIT License python-consul2 # MIT License -# pysnmp library is not maintained since 4 years, it is -# not recommended to use it, use its fork pysnmp-lextudio instead -# in conjunction with its dependencies pyasn1-lextudio and -# pyasn1-modules-lextudio -pysnmp # BSD simplejson # MIT six # MIT zake # Apache-2.0 diff --git a/detail.py b/tools/detail.py similarity index 78% rename from detail.py rename to tools/detail.py index 2d48f81e0..7fb97ca4c 100644 --- a/detail.py +++ b/tools/detail.py @@ -12,6 +12,15 @@ # License for the specific language governing permissions and limitations # under the License. +# Script to extract detailed package information from PyPi for all entries in +# a requirements file. JSON formatted details are written to a *.json file +# corresponding to the input file. As an example, the following command: +# +# python3 detail.py global-requirements.txt +# +# would result in a 'global-requirements.json' file containing an entry for +# each requirement. + import contextlib import json import os @@ -20,12 +29,12 @@ import urllib.parse as urlparse import urllib.request as urlreq -import packaging.requirement +import packaging.requirements try: PYPI_LOCATION = os.environ['PYPI_LOCATION'] except KeyError: - PYPI_LOCATION = 'http://pypi.org/project' + PYPI_LOCATION = 'https://pypi.org/pypi' KEEP_KEYS = frozenset( @@ -56,7 +65,8 @@ def release_data(req): url = PYPI_LOCATION + f"/{urlparse.quote(name)}/json" if url in attempted: continue - with contextlib.closing(urlreq.urlopen(url)) as uh: + req_obj = urlreq.Request(url, headers={'User-Agent': 'detail.py/1.0'}) + with contextlib.closing(urlreq.urlopen(req_obj)) as uh: if uh.getcode() != 200: attempted.append(url) continue @@ -76,12 +86,14 @@ def main(): for filename in sys.argv[1:]: print(f"Analyzing file: {filename}") details = {} - with open(filename, "rb") as fh: + with open(filename) as fh: for line in fh.read().splitlines(): line = line.strip() if line.startswith("#") or not line: continue - req = packaging.requirement.Requirement(line) + req = packaging.requirements.Requirement( + line.partition('#')[0].strip() + ) print(f" - processing: {req}") try: raw_req_data = release_data(req) @@ -94,12 +106,12 @@ def main(): if k not in KEEP_KEYS: continue req_info[k] = v - details[req.key] = { + details[req.name] = { 'requirement': str(req), 'info': req_info, } filename, _ext = os.path.splitext(filename) - with open(f"{filename}.json", "wb") as fh: + with open(f"{filename}.json", "w") as fh: fh.write( json.dumps( details, sort_keys=True, indent=4, separators=(",", ": ") diff --git a/upper-constraints.txt b/upper-constraints.txt index 0d0a50525..c45596085 100644 --- a/upper-constraints.txt +++ b/upper-constraints.txt @@ -15,7 +15,7 @@ Routes===2.5.1 rtslib-fb===2.2.4 oslo.limit===2.10.0 restructuredtext_lint===2.0.2 -tzdata===2025.3 +tzdata===2026.2 smmap===5.0.3 confget===5.1.2 XStatic-Angular-Bootstrap===2.5.0.1 @@ -24,23 +24,23 @@ sphinxcontrib-actdiag===3.0.0 pecan===1.8.0 os-api-ref===3.2.0 python-ldap===3.4.5 -oslo.concurrency===7.4.0 +oslo.concurrency===7.4.1 websocket-client===1.9.0 osprofiler===4.3.0 os-resource-classes===1.1.0 mypy_extensions===1.1.0 tabulate===0.10.0 python-ironic-inspector-client===5.4.0 -lxml===6.0.2 +lxml===6.1.0 vintage===0.4.1 rst2txt===1.1.0 setproctitle===1.3.7 -pytest===9.0.2 +pytest===9.0.3 python-slugify===8.0.4 cursive===0.2.3 oslo.service===4.5.1 django-appconf===1.2.0 -ntc_templates===9.0.0 +ntc_templates===9.1.0 sphinxcontrib-nwdiag===2.0.0 rbd-iscsi-client===0.1.8 alabaster===1.0.0 @@ -48,7 +48,7 @@ pbr===7.0.3 munch===4.0.0 waiting===1.5.0 attrs===26.1.0 -jwcrypto===1.5.6 +jwcrypto===1.5.7 Pint===0.24.4 oslo.i18n===6.7.2 jsonpath-rw-ext===1.2.2 @@ -56,43 +56,44 @@ python-mistralclient===6.2.0 oslo.context===6.3.0 rcssmin===1.2.2 pycadf===4.0.1 -grpcio===1.78.0 +grpcio===1.80.0 sniffio===1.3.1 fixtures===4.3.2 -neutron-lib===3.24.0 +neutron-lib===3.25.0 XStatic-FileSaver===1.3.2.1 jaraco.functools===4.4.0 oslo.metrics===0.15.1 storage-interfaces===1.0.5 -pydantic===2.12.5 +pydantic===2.13.3 pystache===0.6.8 XStatic-Font-Awesome===6.2.1.2 nose===1.3.7 waitress===3.0.2 os-refresh-config===14.0.1 -pysnmp===7.1.22 -Mako===1.3.10 +pysnmp===7.1.25 +Mako===1.3.11 sphinxcontrib-htmlhelp===2.1.0 XStatic-jQuery===3.7.1.1 +sphinx-copybutton===0.5.2 ddt===1.7.2 pyserial===3.5 moto===5.1.22 infi.dtypes.wwn===0.1.1 -awscrt===0.32.0 +awscrt===0.32.2 pcre2===0.6.0 python-freezerclient===6.2.0 python-vitrageclient===5.4.0 -py-pure-client===1.85.0 +py-pure-client===1.87.0 krest===1.3.8 -psycopg2===2.9.11 +psycopg2===2.9.12 networkx===3.4.2 cheroot===11.1.2 XStatic-Angular===1.8.2.3 -zuul-sphinx===0.7.0 +zuul-sphinx===0.8.1 ply===3.11 -google-api-core===2.30.0 +google-api-core===2.30.3 requests-toolbelt===1.0.0 -simplejson===3.20.2 +simplejson===4.1.1 python-swiftclient===4.10.0 pyOpenSSL===24.2.1 typing-inspection===0.4.2 @@ -100,12 +101,12 @@ monasca-common===3.8.0 hyperframe===6.1.0 zeroconf===0.148.0 scipy===1.15.3 -opentelemetry-exporter-otlp===1.40.0 +opentelemetry-exporter-otlp===1.41.1 rsd-lib===1.2.0 XStatic-Jasmine===2.4.1.3 -googleapis-common-protos===1.73.1 +googleapis-common-protos===1.74.0 python-glanceclient===4.11.0 -prometheus_client===0.24.1 +prometheus_client===0.25.0 jaraco.classes===3.4.0 debtcollector===3.1.0 responses===0.26.0 @@ -116,16 +117,16 @@ octavia-lib===3.11.0 python-watcherclient===4.10.0 MarkupSafe===3.0.3 doc8===2.0.0 -pymongo===4.16.0 +pymongo===4.17.0 python-cloudkittyclient===6.1.0 soupsieve===2.8.3 sqlparse===0.5.5 -oslotest===6.1.0 +oslotest===6.1.1 jsonpointer===3.1.1 defusedxml===0.7.1 -opentelemetry-sdk===1.40.0 +opentelemetry-sdk===1.41.1 netaddr===1.3.0 -pyghmi===1.6.14 +pyghmi===1.6.16 sphinxcontrib-blockdiag===3.0.0 aiosqlite===0.22.1 gnocchiclient===7.2.0 @@ -134,23 +135,23 @@ sphinxcontrib.datatemplates===0.11.0 jsonpath-rw===1.4.0 prettytable===3.17.0 vine===5.1.0 -pathspec===1.0.4 +pathspec===1.1.0 taskflow===6.2.0 arrow===1.4.0 semantic-version===2.10.0 ConfigArgParse===1.7.5 async-timeout===5.0.1 virtualbmc===3.3.0 -SQLAlchemy===2.0.48 +SQLAlchemy===2.0.49 pyroute2===0.8.1 -google-auth===2.49.1 +google-auth===2.49.2 kazoo===2.11.0 pyspnego===0.12.1 trio-websocket===0.12.2 XStatic-roboto-fontface===0.8.0.1 pyudev===0.24.4 -eventlet===0.40.4 -openstack-doc-tools===4.0.1 +eventlet===0.41.0 +openstack-doc-tools===4.0.3 oslo.messaging===17.3.0 jira===3.10.5 PyJWT===2.12.1 @@ -174,20 +175,20 @@ pycparser===3.0 mock===5.2.0 PyYAML===6.0.3 beautifulsoup4===4.14.3 -ovs===3.7.0 +ovs===3.7.1 cryptography===43.0.3 httpcore===1.0.9 URLObject===3.0.0 -psycopg2-binary===2.9.11 +psycopg2-binary===2.9.12 glance_store===5.4.0 -openstack-release-test===8.3.0 +openstack-release-test===8.4.0 requests-mock===1.12.1 os-apply-config===14.0.1 gunicorn===25.3.0 storpool===7.3.0 textfsm===2.1.0 python-3parclient===4.4 -libvirt-python===12.1.0 +libvirt-python===12.2.0 python-zunclient===5.4.0 tzlocal===5.3.1 sysv_ipc===1.2.0 @@ -201,13 +202,14 @@ bcrypt===5.0.0 exceptiongroup===1.3.1 os-client-config===2.3.0 XStatic-Angular-Gettext===2.4.1.1 +Deprecated===1.3.1 h11===0.16.0 -Pygments===2.19.2 +Pygments===2.20.0 XStatic-Hogan===2.0.0.5 XStatic-objectpath===1.2.1.1 python-manilaclient===6.0.0 sphinxcontrib-serializinghtml===2.0.0 -requests===2.33.0 +requests===2.33.1 snowballstemmer===3.0.1 Jinja2===3.1.6 XStatic-Bootstrap-SCSS===3.4.1.1 @@ -218,7 +220,7 @@ ruamel.yaml===0.19.1 websockify===0.13.0 gssapi===1.11.1 XStatic-JQuery.quicksearch===2.0.3.3 -pyasn1_modules===0.4.1 +pyasn1_modules===0.4.2 mpmath===1.3.0 python-binary-memcached===0.31.4 jaraco.context===6.1.2 @@ -227,12 +229,12 @@ 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.3.0 +google-auth-httplib2===0.3.1 daiquiri===3.4.0 influxdb===5.3.2 funcparserlib===2.0.0a0 passlib===1.7.4 -cliff===4.13.2 +cliff===4.13.3 os-brick===7.0.0 valkey===6.1.1 scp===0.15.0 @@ -241,9 +243,9 @@ python-zaqarclient===4.4.0 ldappool===3.0.0 hpack===4.1.0 joblib===1.5.3 -google-api-python-client===2.193.0 +google-api-python-client===2.194.0 castellan===5.6.0 -oslo.versionedobjects===3.9.0 +oslo.versionedobjects===3.10.2 enmerkar===0.7.1 webcolors===25.10.0 aodhclient===3.10.1 @@ -257,9 +259,9 @@ mdurl===0.1.2 toml===0.10.2 pycdlib===1.14.0 pyperclip===1.11.0 -cassandra-driver===3.29.3 +cassandra-driver===3.30.0 XStatic-Angular-Schema-Form===0.8.13.1 -opentelemetry-exporter-otlp-proto-http===1.40.0 +opentelemetry-exporter-otlp-proto-http===1.41.1 gabbi===4.2.0 nwdiag===3.0.0 XStatic-bootswatch===3.3.7.1 @@ -275,13 +277,13 @@ os_vif===4.3.0 qrcode===8.2 oslo.middleware===8.0.0 XStatic-mdi===1.6.50.3 -pydantic_core===2.41.5 +pydantic_core===2.46.3 uritemplate===4.2.0 docutils===0.21.2 threadpoolctl===3.6.0 os-ken===4.1.1 ujson===5.12.0 -selenium===4.41.0 +selenium===4.43.0 pytest-subtests===0.15.0 mistral-lib===3.5.1 dogtag-pki===11.2.1 @@ -291,18 +293,17 @@ os-win===5.9.0 capacity===1.3.14 markdown-it-py===4.0.0 retrying===1.4.2 -python-discovery===1.2.1 -platformdirs===4.9.4 +python-discovery===1.2.2 +platformdirs===4.9.6 pydotplus===2.0.2 boto3===1.35.99 jeepney===0.9.0 stestr===4.2.1 -pillow===12.1.1 +pillow===12.2.0 infoblox-client===0.6.2 -pysmi-lextudio===1.4.3 oslo.serialization===5.9.1 warlock===2.1.0 -exabgp===5.0.5 +exabgp===5.0.9 aiomysql===0.3.2 sphinxcontrib-httpdomain===2.0.0 metalsmith===2.5.0 @@ -313,21 +314,21 @@ oslo.vmware===4.9.0 autopage===0.6.0 gitdb===4.0.12 python-monascaclient===2.8.0 -opentelemetry-api===1.40.0 +opentelemetry-api===1.41.1 automaton===3.4.0 os-service-types===1.8.2 keyring===25.7.0 elementpath===4.8.0 wsgi_intercept===1.13.1 jsonschema-specifications===2025.9.1 -testscenarios===0.5.0 +testscenarios===0.6.1 sphinxcontrib-pecanwsme===0.11.0 sadisplay===0.4.9 enum34===1.1.10 infinisdk===289.1.0 rich-argparse===1.7.2 -packaging===26.0 -opentelemetry-exporter-otlp-proto-grpc===1.40.0 +packaging===26.2 +opentelemetry-exporter-otlp-proto-grpc===1.41.1 psutil===7.2.2 txaio===25.9.2 elasticsearch===9.3.0 @@ -336,7 +337,7 @@ asgiref===3.11.1 XStatic-JQuery.TableSorter===2.14.5.3 pifpaf===3.4.0 blockdiag===3.0.0 -testtools===2.8.7 +testtools===2.9.1 infi.dtypes.iqn===0.4.0 jsonpath-ng===1.8.0 XStatic-tv4===1.2.7.1 @@ -345,14 +346,14 @@ python-cinderclient===9.9.0 keystonemiddleware===12.0.0 django-formtools===2.5.1 XStatic-Spin===1.2.5.3 -rich===14.3.3 +rich===15.0.0 os-traits===3.6.0 typepy===1.3.4 SecretStorage===3.5.0 XStatic-Rickshaw===1.5.1.3 iso8601===2.1.0 tooz===8.1.0 -idna===3.11 +idna===3.13 yamlloader===1.6.0 protobuf===6.33.6 sushy===5.10.0 @@ -366,17 +367,16 @@ python-octaviaclient===3.13.0 pysaml2===7.5.4 requests-oauthlib===2.0.0 oslo.reports===3.7.0 -pysnmp-lextudio===6.1.2 -bitmath===1.3.3.1 +bitmath===1.4.0.1 ceilometermiddleware===3.10.0 testrepository===0.0.22 -librt===0.8.1 +librt===0.9.0 sympy===1.14.0 Logbook===1.9.2 PyNaCl===1.6.2 -osc-lib===4.4.0 +osc-lib===4.5.0 python-consul===1.1.0 -more-itertools===10.8.0 +more-itertools===11.0.2 seqdiag===3.0.0 numpy===2.2.6 msgpack===1.1.2 @@ -387,7 +387,6 @@ osc-placement===4.8.0 rpds-py===0.30.0 zake===0.2.2 flux===1.4.0 -pysnmpcrypto===0.0.4 flexparser===0.4 krb5===0.9.0 PyMySQL===1.1.2 @@ -399,12 +398,12 @@ construct===2.10.70 pytest-metadata===3.1.1 pyparsing===3.3.2 geomet===1.1.0 -opentelemetry-exporter-otlp-proto-common===1.40.0 +opentelemetry-exporter-otlp-proto-common===1.41.1 distlib===0.4.0 dogpile.cache===1.5.0 python-barbicanclient===7.3.0 salt===3007.13 -opentelemetry-semantic-conventions===0.61b0 +opentelemetry-semantic-conventions===0.62b1 api-object-schema===2.0.0 blinker===1.9.0 WSME===0.12.1 @@ -414,16 +413,16 @@ sherlock===0.4.1 stevedore===5.7.0 botocore===1.35.99 xmltodict===1.0.4 -pyasn1===0.6.0 +pyasn1===0.6.3 oslo.rootwrap===7.9.0 -Django===4.2.29 +Django===4.2.30 pexpect===4.9.0 elastic-transport===9.2.1 -cmd2===3.4.0 -python-json-logger===4.0.0 +cmd2===3.5.1 +python-json-logger===4.1.0 redis===7.4.0 jmespath===1.1.0 -click===8.3.1 +click===8.3.3 XStatic-smart-table===1.4.13.3 kuryr-lib===3.4.1 jsonpatch===1.33 @@ -433,11 +432,11 @@ cotyledon===2.2.0 xattr===1.3.0 systemd-python===235 python-memcached===1.62 -openstacksdk===4.10.0 +openstacksdk===4.12.0 infi.dtypes.nqn===0.1.0 six===1.17.0 h2===4.3.0 -dulwich===1.1.0 +dulwich===1.2.0 dfs-sdk===1.2.27 sentinels===1.1.1 kombu===5.6.2 @@ -446,12 +445,12 @@ zstd===1.5.7.3 yaql===3.2.0 durationpy===0.10 requestsexceptions===1.4.0 -testresources===2.0.2 +testresources===2.1.2 falcon===4.2.0 tomlkit===0.14.0 -etcd3gw===2.5.0 +etcd3gw===2.6.0 Flask-RESTful===0.3.10 -GitPython===3.1.46 +GitPython===3.1.47 python-ironicclient===6.0.0 babel===2.18.0 XStatic===1.0.3 @@ -466,17 +465,17 @@ wsproto===1.3.2 pymemcache===4.0.0 wrapt===2.1.2 PySocks===1.7.1 -oslo.privsep===3.10.1 +oslo.privsep===3.11.0 sphinxcontrib-apidoc===0.6.0 oslo.policy===5.0.0 hvac===2.4.0 -pyeclib===1.7.0 +pyeclib===1.8.0 repoze.lru===0.7 rfc3986===2.0.0 tenacity===9.1.4 -invoke===2.2.1 +invoke===3.0.3 python-designateclient===6.4.0 -pytest-cov===4.1.0 +pytest-cov===7.1.0 reactivex===4.1.0 Paste===3.10.1 pytest-django===4.12.0 @@ -485,7 +484,7 @@ boto===2.49.0 hyperlink===21.0.0 mitba===1.1.1 python-masakariclient===8.8.0 -Werkzeug===3.1.7 +Werkzeug===3.1.8 outcome===1.3.0.post0 APScheduler===3.11.2 xmlschema===2.5.1 @@ -493,7 +492,7 @@ python-troveclient===8.10.0 cachez===0.1.2 XStatic-Bootstrap-Datepicker===1.4.0.1 netifaces===0.11.0 -cachetools===7.0.5 +cachetools===7.0.6 flexcache===0.3 sphinxcontrib-qthelp===2.0.0 keystoneauth1===5.13.1 @@ -507,7 +506,7 @@ docker===7.1.0 storops===1.2.12 anyio===4.13.0 XStatic-Angular-lrdragndrop===1.0.2.7 -ovsdbapp===2.16.0 +ovsdbapp===2.17.0 aniso8601===10.0.1 rjsmin===1.2.5 icalendar===7.0.3 @@ -526,18 +525,18 @@ sphinxcontrib-programoutput===0.19 storpool.spopenstack===3.2.0 dnspython===2.8.0 oauthlib===3.3.1 -zipp===3.23.0 -greenlet===3.3.2 +zipp===3.23.1 +greenlet===3.4.0 XStatic-Angular-Vis===4.16.0.1 iniconfig===2.3.0 referencing===0.37.0 -confluent-kafka===2.13.2 +confluent-kafka===2.14.0 backports.tarfile===1.2.0 xvfbwrapper===0.2.23 influxdb-client===1.50.0 tosca-parser===2.14.0 python-consul2===0.1.5 -charset-normalizer===3.4.6 +charset-normalizer===3.4.7 Flask===3.1.3 httpx===0.28.1 sqlalchemy-filters===0.13.0 @@ -548,21 +547,21 @@ importlib_metadata===8.7.1 sortedcontainers===2.4.0 microversion_parse===2.1.0 python-linstor===1.27.1 -filelock===3.25.2 +filelock===3.29.0 python-tackerclient===2.5.0 python-heatclient===5.1.0 -oslo.utils===10.0.0 +oslo.utils===10.0.1 requests-kerberos===0.15.0 itsdangerous===2.2.0 XStatic-jquery-ui===1.13.0.2 monasca-statsd===2.7.0 python-dateutil===2.9.0.post0 -virtualenv===21.2.0 +virtualenv===21.2.4 colorama===0.4.6 confetti===2.5.3 ironic-lib===7.0.0 pytz===2026.1.post1 -opentelemetry-proto===1.40.0 +opentelemetry-proto===1.41.1 XStatic-D3===3.5.17.1 actdiag===3.0.0 sphinxcontrib-applehelp===2.0.0