From f8b4fd224f59b478f20b7532f549a2b1df38c0a6 Mon Sep 17 00:00:00 2001 From: Stephen Finucane Date: Tue, 28 Oct 2025 16:36:01 +0000 Subject: [PATCH 01/32] Move parsing of setup.cfg, requirements.txt files At least part of it anyway. Rather than waiting to split the lines and strip the non-dependency information (comments etc) from the file, we do it immediately on load. We also add a whole lot of type hints to the modified code, to help us reason about things a little easier. Change-Id: Ide4574c53123ebe20d28211b80b9c079d01dd5e0 Signed-off-by: Stephen Finucane --- openstack_requirements/check.py | 2 +- openstack_requirements/cmds/check_exists.py | 2 +- openstack_requirements/project.py | 95 +++++++++++++------ openstack_requirements/requirement.py | 16 +++- openstack_requirements/tests/test_check.py | 8 +- .../tests/test_check_constraints.py | 21 ++-- openstack_requirements/tests/test_project.py | 4 +- 7 files changed, 95 insertions(+), 53 deletions(-) diff --git a/openstack_requirements/check.py b/openstack_requirements/check.py index 34ded6df5..8b095786d 100644 --- a/openstack_requirements/check.py +++ b/openstack_requirements/check.py @@ -44,7 +44,7 @@ def reqs(self): def extract_reqs(self, content, strict): reqs = collections.defaultdict(set) - parsed = requirement.parse(content) + parsed = requirement.parse_lines(content) for name, entries in parsed.items(): if not name: # Comments and other unprocessed lines diff --git a/openstack_requirements/cmds/check_exists.py b/openstack_requirements/cmds/check_exists.py index 685b3a259..dd2d5c680 100644 --- a/openstack_requirements/cmds/check_exists.py +++ b/openstack_requirements/cmds/check_exists.py @@ -67,7 +67,7 @@ def main(args=None): print( f'\nComparing {require_file} with global-requirements and upper-constraints' ) - requirements = requirement.parse(data) + requirements = requirement.parse_lines(data) for name, spec_list in requirements.items(): if not name or name in denylist: continue diff --git a/openstack_requirements/project.py b/openstack_requirements/project.py index 213d42834..9461db24a 100644 --- a/openstack_requirements/project.py +++ b/openstack_requirements/project.py @@ -19,6 +19,8 @@ import errno import io import os +from typing import Any +from typing import TypedDict try: # Python 3.11+ @@ -28,7 +30,19 @@ import tomli as tomllib # type: ignore -def _read_pyproject_toml(root): +def _read_raw(root: str, filename: str) -> str | None: + try: + path = os.path.join(root, filename) + with open(path, encoding="utf-8") as f: + return f.read() + except OSError as e: + if e.errno == errno.ENOENT: + return None + + raise + + +def _read_pyproject_toml(root: str) -> dict[str, Any] | None: data = _read_raw(root, 'pyproject.toml') if data is None: return None @@ -36,33 +50,46 @@ def _read_pyproject_toml(root): return tomllib.loads(data) -def _read_pyproject_toml_requirements(root): +def _read_requirements_txt(root: str, filename: str) -> list[str] | None: + data = _read_raw(root, filename) + if data is None: + return None + + result = [] + for line in data.splitlines(): + # we only ignore comments and empty lines: everything else is + # handled later + line = line.strip() + + if line.startswith('#') or not line: + continue + + result.append(line) + + return result + + +def _read_pyproject_toml_requirements(root: str) -> list[str] | None: data = _read_pyproject_toml(root) or {} # projects may not have PEP-621 project metadata if 'project' not in data: return None - # FIXME(stephenfin): We should not be doing this, but the fix requires a - # larger change to do normalization here. - return '\n'.join(data['project'].get('dependencies', [])) + return data['project'].get('dependencies', []) -def _read_pyproject_toml_extras(root): +def _read_pyproject_toml_extras(root: str) -> dict[str, list[str]] | None: data = _read_pyproject_toml(root) or {} # projects may not have PEP-621 project metadata if 'project' not in data: return None - # FIXME(stephenfin): As above, we should not be doing this. - return { - k: '\n'.join(v) for k, v in - data['project'].get('optional-dependencies', {}).items() - } + return data['project'].get('optional-dependencies', {}) -def _read_setup_cfg_extras(root): +def _read_setup_cfg_extras(root: str) -> dict[str, list[str]] | None: data = _read_raw(root, 'setup.cfg') if data is None: return None @@ -72,20 +99,32 @@ def _read_setup_cfg_extras(root): if not c.has_section('extras'): return None - return dict(c.items('extras')) + result: dict[str, list[str]] = {} + for extra, deps in c.items('extras'): + result[extra] = [] + for line in deps.splitlines(): + # we only ignore comments and empty lines: everything else is + # handled later + line = line.strip() + if line.startswith('#') or not line: + continue -def _read_raw(root, filename): - try: - path = os.path.join(root, filename) - with open(path, encoding="utf-8") as f: - return f.read() - except OSError as e: - if e.errno != errno.ENOENT: - raise + result[extra].append(line) + + return result + + +class Project(TypedDict): + # The root directory path + root: str + # A mapping of filename to the contents of that file + requirements: dict[str, list[str]] + # A mapping of filename to extras from that file + extras: dict[str, dict[str, list[str]]] -def read(root): +def read(root: str) -> Project: """Read into memory the packaging data for the project at root. :param root: A directory path. @@ -96,11 +135,13 @@ def read(root): requirements """ # Store root directory and installer-related files for later processing - result = {'root': root} + result: Project = { + 'root': root, + 'requirements': {}, + 'extras': {}, + } # Store requirements - result['requirements'] = {} - if (data := _read_pyproject_toml_requirements(root)) is not None: result['requirements']['pyproject.toml'] = data @@ -116,12 +157,10 @@ def read(root): 'test-requirements-py2.txt', 'test-requirements-py3.txt', ]: - if (data := _read_raw(root, filename)) is not None: + if (data := _read_requirements_txt(root, filename)) is not None: result['requirements'][filename] = data # Store extras - result['extras'] = {} - if (data := _read_setup_cfg_extras(root)) is not None: result['extras']['setup.cfg'] = data diff --git a/openstack_requirements/requirement.py b/openstack_requirements/requirement.py index 8782583f9..40e4ea325 100644 --- a/openstack_requirements/requirement.py +++ b/openstack_requirements/requirement.py @@ -99,6 +99,10 @@ def parse(content, permit_urls=False): return to_dict(to_reqs(content, permit_urls=permit_urls)) +def parse_lines(lines, permit_urls=False): + return to_dict(to_req(line, permit_urls=permit_urls) for line in lines) + + def parse_line(req_line, permit_urls=False): """Parse a single line of a requirements file. @@ -201,6 +205,13 @@ def _pass_through(req_line, permit_urls=False): ) +def to_req(line, permit_urls=False): + if _pass_through(line, permit_urls=permit_urls): + return (None, line) + else: + return (parse_line(line, permit_urls=permit_urls), line) + + def to_reqs(content, permit_urls=False): for content_line in content.splitlines(True): req_line = content_line.strip() @@ -209,10 +220,7 @@ def to_reqs(content, permit_urls=False): if req_line.startswith('#') or not req_line: continue - if _pass_through(req_line, permit_urls=permit_urls): - yield None, content_line - else: - yield parse_line(req_line, permit_urls=permit_urls), content_line + yield to_req(req_line, permit_urls) def check_reqs_bounds_policy(global_reqs): diff --git a/openstack_requirements/tests/test_check.py b/openstack_requirements/tests/test_check.py index 414d2c67d..e17623d38 100644 --- a/openstack_requirements/tests/test_check.py +++ b/openstack_requirements/tests/test_check.py @@ -30,14 +30,14 @@ def test_extras__setup_cfg(self): project_data = { 'root': '/fake/root', 'requirements': { - 'requirements.txt': 'requests>=2.0.0\n' + 'requirements.txt': ['requests>=2.0.0'], }, 'extras': { 'setup.cfg': { - 'test': 'pytest>=6.0.0\nflake8>=3.8.0\n', - 'dev': 'black>=24.0.0\nmypy>=0.900\n' + 'test': ['pytest>=6.0.0', 'flake8>=3.8.0'], + 'dev': ['black>=24.0.0', 'mypy>=0.900'], } - } + }, } req_list = check.RequirementsList('test-project', project_data) diff --git a/openstack_requirements/tests/test_check_constraints.py b/openstack_requirements/tests/test_check_constraints.py index 354f33c7e..f8d8d6da1 100644 --- a/openstack_requirements/tests/test_check_constraints.py +++ b/openstack_requirements/tests/test_check_constraints.py @@ -137,16 +137,14 @@ def remove_req_read_reqs_file(filename): return orig_mocked_read_req(filename) - new_reqs = '>1.10.0\nsomerandommodule\n' - # lets change the six requirement not include the u-c version proj_read = project.read(common.project_fixture.root) - proj_read['requirements']['requirements.txt'] = ( - proj_read['requirements']['requirements.txt'][:-1] + new_reqs + proj_read['requirements']['requirements.txt'][-1] = 'six>1.10.0' + proj_read['requirements']['requirements.txt'].append( + 'somerandommodule' ) - proj_read['requirements']['test-requirements.txt'] = ( - proj_read['requirements']['test-requirements.txt'] - + 'anotherrandommodule\n' + proj_read['requirements']['test-requirements.txt'].append( + 'anotherrandommodule' ) expected_outs = [ @@ -182,9 +180,7 @@ def test_project_req_bigger_then_uc(self): # lets change the six requirement not include the u-c version proj_read = project.read(common.project_fixture.root) - proj_read['requirements']['requirements.txt'] = ( - proj_read['requirements']['requirements.txt'][:-1] + '>1.10.0\n' - ) + proj_read['requirements']['requirements.txt'][-1] = 'six>1.10.0' expected_out = ( 'six must be <= 1.10.0 from upper-constraints and ' 'include the upper-constraints version' @@ -211,9 +207,8 @@ def test_project_req_not_include_uc_version(self): # lets change the six requirement not include the u-c version proj_read = project.read(common.project_fixture.root) - proj_read['requirements']['requirements.txt'] = ( - proj_read['requirements']['requirements.txt'][:-1] - + '<1.10.0,>1.10.0\n' + proj_read['requirements']['requirements.txt'][-1] = ( + 'six<1.10.0,>1.10.0' ) expected_out = ( 'six must be <= 1.10.0 from upper-constraints and ' diff --git a/openstack_requirements/tests/test_project.py b/openstack_requirements/tests/test_project.py index da672fe8e..d61831bdd 100644 --- a/openstack_requirements/tests/test_project.py +++ b/openstack_requirements/tests/test_project.py @@ -72,7 +72,7 @@ def test_pyproject_toml(self): ] """) ) - expected = {'1': 'foo', '2': 'foo\nbar'} + expected = {'1': ['foo'], '2': ['foo', 'bar']} self.assertEqual(expected, project._read_pyproject_toml_extras(root)) def test_setup_cfg(self): @@ -88,7 +88,7 @@ def test_setup_cfg(self): bar """) ) - expected = {'1': '\nfoo', '2': '\nfoo # fred\nbar'} + expected = {'1': ['foo'], '2': ['foo # fred', 'bar']} self.assertEqual(expected, project._read_setup_cfg_extras(root)) def test_none(self): From 3dcf7a433f367f3ed8af9a655823c80efe69ae3e Mon Sep 17 00:00:00 2001 From: OpenStack Proposal Bot Date: Mon, 3 Nov 2025 17:12:09 +0000 Subject: [PATCH 02/32] update constraint for pbr to new release 7.0.3 meta: version: 7.0.3 meta: team: oslo meta: diff-start: - meta: series: independent meta: branch: master meta: release-type: release meta: pypi: yes meta: first: no meta: release:Author: Jeremy Stanley meta: release:Commit: Jeremy Stanley meta: release:Change-Id: I80d65f9f4c82ae66a585e5f13ea004bc50d513bb meta: release:Code-Review+2: Elod Illes meta: release:Workflow+1: Dr. Jens Harbott meta: release:Code-Review+1: Daniel Bengtsson meta: release:Code-Review+1: Stephen Finucane meta: release:Code-Review+1: Tony Breeds meta: release:Code-Review+1: Clark Boylan meta: release:Code-Review+2: Dr. Jens Harbott Change-Id: I4f91343247366456ee27db2628b9deec28830031 Signed-off-by: OpenStack Proposal Bot Generated-By: openstack/project-config:roles/copy-release-tools-scripts/files/release-tools/update_constraints.sh --- upper-constraints.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/upper-constraints.txt b/upper-constraints.txt index aa9ad4873..37caa4cd7 100644 --- a/upper-constraints.txt +++ b/upper-constraints.txt @@ -47,7 +47,7 @@ sphinxcontrib-nwdiag===2.0.0 rbd-iscsi-client===0.1.8 requests-aws===0.1.8 alabaster===1.0.0 -pbr===7.0.2 +pbr===7.0.3 munch===4.0.0 waiting===1.5.0 attrs===25.4.0 From b6521a7432f88f7872e8586273c3212a40169a75 Mon Sep 17 00:00:00 2001 From: OpenStack Proposal Bot Date: Tue, 11 Nov 2025 13:39:06 +0000 Subject: [PATCH 03/32] update constraint for oslotest to new release 6.0.0 meta: version: 6.0.0 meta: team: oslo meta: diff-start: - meta: series: independent meta: branch: master meta: release-type: release meta: pypi: yes meta: first: no meta: release:Author: Stephen Finucane meta: release:Commit: Stephen Finucane meta: release:Change-Id: Iab882ee360b072584e5c0c71d699a52d35c6bdfd meta: release:Workflow+1: Elod Illes meta: release:Code-Review+1: Takashi Kajinami meta: release:Code-Review+2: Dr. Jens Harbott meta: release:Code-Review+2: Elod Illes Change-Id: I6f6a3fd634cddeb162fdaa57e27a784b52756b51 Signed-off-by: OpenStack Proposal Bot Generated-By: openstack/project-config:roles/copy-release-tools-scripts/files/release-tools/update_constraints.sh --- upper-constraints.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/upper-constraints.txt b/upper-constraints.txt index aa9ad4873..7d60a8c51 100644 --- a/upper-constraints.txt +++ b/upper-constraints.txt @@ -128,7 +128,7 @@ pymongo===4.15.3 python-cloudkittyclient===5.4.0 soupsieve===2.8 sqlparse===0.5.3 -oslotest===5.0.1 +oslotest===6.0.0 jsonpointer===3.0.0 defusedxml===0.7.1 opentelemetry-sdk===1.38.0 From c52474fb0a864dfd53e78c8c25b0a399ae25ce0a Mon Sep 17 00:00:00 2001 From: Takashi Kajinami Date: Wed, 12 Nov 2025 01:47:16 +0900 Subject: [PATCH 04/32] ruff: Use more specific name to enable pyupgrade rule UP is the exact name of the rule, instead of U. Use the exact name to avoid potential problems caused by any UX rules which can be added in the future. Change-Id: Ie007e90c3861aa7f289a9a9719e33199cd10efac Signed-off-by: Takashi Kajinami --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 0d31dcc54..13374bbe9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -52,7 +52,7 @@ quote-style = "preserve" docstring-code-format = true [tool.ruff.lint] -select = ["E4", "E7", "E9", "F", "U"] +select = ["E4", "E7", "E9", "F", "UP"] # [tool.ruff.lint.per-file-ignores] # "openstack/tests/*" = ["S"] From be23441b5205b4b4afb9b579f475d286d6958781 Mon Sep 17 00:00:00 2001 From: OpenStack Proposal Bot Date: Thu, 13 Nov 2025 13:46:02 +0000 Subject: [PATCH 05/32] update constraint for python-mistralclient to new release 6.1.0 meta: version: 6.1.0 meta: team: mistral meta: diff-start: - meta: series: gazpacho meta: branch: master meta: release-type: release meta: pypi: yes meta: first: yes meta: release:Author: Elod Illes meta: release:Commit: Elod Illes meta: release:Change-Id: Ie51423df50429031ce49ce21daffd113289a6384 meta: release:Code-Review+2: Thierry Carrez meta: release:Code-Review+1: Arnaud Morin meta: release:Workflow+1: Thierry Carrez meta: release:Code-Review+2: Elod Illes Change-Id: I2b42b690d5083169ebb063252e184affa07e991a Signed-off-by: OpenStack Proposal Bot Generated-By: openstack/project-config:roles/copy-release-tools-scripts/files/release-tools/update_constraints.sh --- upper-constraints.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/upper-constraints.txt b/upper-constraints.txt index aa9ad4873..fde7f64cb 100644 --- a/upper-constraints.txt +++ b/upper-constraints.txt @@ -56,7 +56,7 @@ jwcrypto===1.5.6 Pint===0.24.4 oslo.i18n===6.6.0 jsonpath-rw-ext===1.2.2 -python-mistralclient===6.0.0 +python-mistralclient===6.1.0 oslo.context===6.1.0 rcssmin===1.1.2 pycadf===4.0.1 From 0445413607fffd8c61a54927b2d97407171869cf Mon Sep 17 00:00:00 2001 From: OpenStack Proposal Bot Date: Thu, 13 Nov 2025 13:46:31 +0000 Subject: [PATCH 06/32] update constraint for python-manilaclient to new release 5.7.0 meta: version: 5.7.0 meta: team: manila meta: diff-start: - meta: series: gazpacho meta: branch: master meta: release-type: release meta: pypi: yes meta: first: yes meta: release:Author: Elod Illes meta: release:Commit: Elod Illes meta: release:Change-Id: Ia76666bfb026b81309413ac4f49b19edf4fb32b0 meta: release:Code-Review+1: Goutham Pacha Ravi meta: release:Workflow+1: Thierry Carrez meta: release:Code-Review+2: Elod Illes meta: release:Code-Review+2: Thierry Carrez meta: release:Code-Review+1: Carlos Eduardo Change-Id: Ib05053ed2315b5f101b46be8445d082f6c9ff608 Signed-off-by: OpenStack Proposal Bot Generated-By: openstack/project-config:roles/copy-release-tools-scripts/files/release-tools/update_constraints.sh --- upper-constraints.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/upper-constraints.txt b/upper-constraints.txt index aa9ad4873..d969dc075 100644 --- a/upper-constraints.txt +++ b/upper-constraints.txt @@ -208,7 +208,7 @@ h11===0.16.0 Pygments===2.19.2 XStatic-Hogan===2.0.0.3 XStatic-objectpath===1.2.1.0 -python-manilaclient===5.6.0 +python-manilaclient===5.7.0 sphinxcontrib-serializinghtml===2.0.0 requests===2.32.5 snowballstemmer===3.0.1 From 8548bb732334d9d04dbdedf3142936bd42b7a742 Mon Sep 17 00:00:00 2001 From: OpenStack Proposal Bot Date: Thu, 13 Nov 2025 13:53:37 +0000 Subject: [PATCH 07/32] update constraint for oslo.rootwrap to new release 7.8.0 meta: version: 7.8.0 meta: team: oslo meta: diff-start: - meta: series: gazpacho meta: branch: master meta: release-type: release meta: pypi: yes meta: first: yes meta: release:Author: Elod Illes meta: release:Commit: Elod Illes meta: release:Change-Id: I53dd5c219667fb587642aca1935cf329e3a59fb7 meta: release:Code-Review+2: Elod Illes meta: release:Code-Review+1: Daniel Bengtsson meta: release:Workflow+1: Thierry Carrez meta: release:Code-Review+2: Thierry Carrez Change-Id: I14fff21b329d0d79a94dff68afabb3b6d6d91088 Signed-off-by: OpenStack Proposal Bot Generated-By: openstack/project-config:roles/copy-release-tools-scripts/files/release-tools/update_constraints.sh --- upper-constraints.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/upper-constraints.txt b/upper-constraints.txt index aa9ad4873..3d61b074f 100644 --- a/upper-constraints.txt +++ b/upper-constraints.txt @@ -422,7 +422,7 @@ stevedore===5.5.0 botocore===1.35.99 xmltodict===1.0.2 pyasn1===0.6.0 -oslo.rootwrap===7.7.0 +oslo.rootwrap===7.8.0 Django===4.2.25 pexpect===4.9.0 cmd2===2.7.0 From 31efc27d739cf7a9b4d3322ece305338967ed08c Mon Sep 17 00:00:00 2001 From: OpenStack Proposal Bot Date: Thu, 13 Nov 2025 13:54:04 +0000 Subject: [PATCH 08/32] update constraint for oslo.config to new release 10.1.0 meta: version: 10.1.0 meta: team: oslo meta: diff-start: - meta: series: gazpacho meta: branch: master meta: release-type: release meta: pypi: yes meta: first: yes meta: release:Author: Elod Illes meta: release:Commit: Elod Illes meta: release:Change-Id: I522b7dc0534b42074552e2b5f6fbdd4af99f4fd6 meta: release:Code-Review+2: Elod Illes meta: release:Workflow+1: Thierry Carrez meta: release:Code-Review+1: Daniel Bengtsson meta: release:Code-Review+2: Thierry Carrez Change-Id: I90ec769a3adc0389bdcfdede3aba2bdfd44f89c1 Signed-off-by: OpenStack Proposal Bot Generated-By: openstack/project-config:roles/copy-release-tools-scripts/files/release-tools/update_constraints.sh --- upper-constraints.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/upper-constraints.txt b/upper-constraints.txt index aa9ad4873..390f0879d 100644 --- a/upper-constraints.txt +++ b/upper-constraints.txt @@ -386,7 +386,7 @@ seqdiag===3.0.0 numpy===2.2.6 msgpack===1.1.2 Sphinx===8.1.3 -oslo.config===10.0.0 +oslo.config===10.1.0 openstackdocstheme===3.5.0 osc-placement===4.7.0 rpds-py===0.28.0 From a927d9dc9051737a5827bf5030b279cf6873d50a Mon Sep 17 00:00:00 2001 From: OpenStack Proposal Bot Date: Thu, 13 Nov 2025 13:54:46 +0000 Subject: [PATCH 09/32] update constraint for python-swiftclient to new release 4.9.0 meta: version: 4.9.0 meta: team: swift meta: diff-start: - meta: series: gazpacho meta: branch: master meta: release-type: release meta: pypi: yes meta: first: yes meta: release:Author: Elod Illes meta: release:Commit: Tim Burke meta: release:Change-Id: I313c604b578b56e8ecf24eef0532c5481a8a135a meta: release:Code-Review+2: Thierry Carrez meta: release:Workflow+1: Thierry Carrez meta: release:Code-Review+1: Tim Burke meta: release:Code-Review+2: Elod Illes Change-Id: I047376a4699c7085f44e76b41365e6d395ff2a0f Signed-off-by: OpenStack Proposal Bot Generated-By: openstack/project-config:roles/copy-release-tools-scripts/files/release-tools/update_constraints.sh --- upper-constraints.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/upper-constraints.txt b/upper-constraints.txt index aa9ad4873..35de9c34e 100644 --- a/upper-constraints.txt +++ b/upper-constraints.txt @@ -99,7 +99,7 @@ google-api-core===2.27.0 requests-toolbelt===1.0.0 simplejson===3.20.2 types-paramiko===4.0.0.20250822 -python-swiftclient===4.8.0 +python-swiftclient===4.9.0 pyOpenSSL===24.2.1 typing-inspection===0.4.2 monasca-common===3.8.0 From e18bf1c036dc6932e6a1752aed30f005bef75df1 Mon Sep 17 00:00:00 2001 From: OpenStack Proposal Bot Date: Thu, 13 Nov 2025 13:56:38 +0000 Subject: [PATCH 10/32] update constraint for oslo.i18n to new release 6.7.0 meta: version: 6.7.0 meta: team: oslo meta: diff-start: - meta: series: gazpacho meta: branch: master meta: release-type: release meta: pypi: yes meta: first: yes meta: release:Author: Elod Illes meta: release:Commit: Elod Illes meta: release:Change-Id: I9e88e9bf2b917d481da58007ffd6048e48b37819 meta: release:Workflow+1: Thierry Carrez meta: release:Code-Review+2: Elod Illes meta: release:Code-Review+2: Thierry Carrez meta: release:Code-Review+1: Daniel Bengtsson Change-Id: I4f4fca65372efd4f4056189bda1cdb0e288c92ce Signed-off-by: OpenStack Proposal Bot Generated-By: openstack/project-config:roles/copy-release-tools-scripts/files/release-tools/update_constraints.sh --- upper-constraints.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/upper-constraints.txt b/upper-constraints.txt index aa9ad4873..240f2fb80 100644 --- a/upper-constraints.txt +++ b/upper-constraints.txt @@ -54,7 +54,7 @@ attrs===25.4.0 microversion-parse===2.0.0 jwcrypto===1.5.6 Pint===0.24.4 -oslo.i18n===6.6.0 +oslo.i18n===6.7.0 jsonpath-rw-ext===1.2.2 python-mistralclient===6.0.0 oslo.context===6.1.0 From 78b96f80c23a5479cb7910d9e108954180b90068 Mon Sep 17 00:00:00 2001 From: OpenStack Proposal Bot Date: Thu, 13 Nov 2025 14:02:15 +0000 Subject: [PATCH 11/32] update constraint for sushy to new release 5.8.0 meta: version: 5.8.0 meta: team: ironic meta: diff-start: - meta: series: gazpacho meta: branch: master meta: release-type: release meta: pypi: no meta: first: yes meta: release:Author: Elod Illes meta: release:Commit: Elod Illes meta: release:Change-Id: Ib3b919946c39ecf39552088e3b2246e1e60f68c1 meta: release:Code-Review+2: Thierry Carrez meta: release:Code-Review+1: Riccardo Pittau meta: release:Workflow+1: Thierry Carrez meta: release:Code-Review+2: Elod Illes Change-Id: I0da77979f41bf2eb1aeb5fbb92fb1ab8ee9d4256 Signed-off-by: OpenStack Proposal Bot Generated-By: openstack/project-config:roles/copy-release-tools-scripts/files/release-tools/update_constraints.sh --- upper-constraints.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/upper-constraints.txt b/upper-constraints.txt index aa9ad4873..84cae1464 100644 --- a/upper-constraints.txt +++ b/upper-constraints.txt @@ -360,7 +360,7 @@ tooz===7.0.0 idna===3.11 yamlloader===1.5.2 protobuf===6.33.0 -sushy===5.7.1 +sushy===5.8.0 python-neutronclient===11.6.0 types-setuptools===80.9.0.20250822 pika===1.3.2 From b54287d36b7d4e7c6970fe6946850611e59b281a Mon Sep 17 00:00:00 2001 From: OpenStack Proposal Bot Date: Thu, 13 Nov 2025 14:02:36 +0000 Subject: [PATCH 12/32] update constraint for openstacksdk to new release 4.8.0 meta: version: 4.8.0 meta: team: OpenStackSDK meta: diff-start: - meta: series: gazpacho meta: branch: master meta: release-type: release meta: pypi: yes meta: first: yes meta: release:Author: Elod Illes meta: release:Commit: Elod Illes meta: release:Change-Id: I97c9cc9904ff0bb8a96ecb8f25c4180e4c05e2b6 meta: release:Code-Review+2: Elod Illes meta: release:Code-Review+1: Artem Goncharov meta: release:Code-Review+2: Thierry Carrez meta: release:Workflow+1: Thierry Carrez Change-Id: Ie483142a2722f9a1360fb36a78a7c280de2b1d1f Signed-off-by: OpenStack Proposal Bot Generated-By: openstack/project-config:roles/copy-release-tools-scripts/files/release-tools/update_constraints.sh --- upper-constraints.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/upper-constraints.txt b/upper-constraints.txt index aa9ad4873..38095fc61 100644 --- a/upper-constraints.txt +++ b/upper-constraints.txt @@ -440,7 +440,7 @@ cotyledon===2.1.0 xattr===1.3.0 systemd-python===235 python-memcached===1.62 -openstacksdk===4.7.1 +openstacksdk===4.8.0 infi.dtypes.nqn===0.1.0 six===1.17.0 h2===4.3.0 From 781ef2b5ad2616ea62b24763053e1d7d4c5673b3 Mon Sep 17 00:00:00 2001 From: OpenStack Proposal Bot Date: Tue, 18 Nov 2025 09:31:27 +0000 Subject: [PATCH 13/32] update constraint for castellan to new release 5.5.0 meta: version: 5.5.0 meta: team: oslo meta: diff-start: - meta: series: gazpacho meta: branch: master meta: release-type: release meta: pypi: no meta: first: yes meta: release:Author: Elod Illes meta: release:Commit: Elod Illes meta: release:Change-Id: I246dc3637f96ba288a5245ca069158ad676bbbb1 meta: release:Code-Review+1: Daniel Bengtsson meta: release:Code-Review+2: Thierry Carrez meta: release:Workflow+1: Elod Illes meta: release:Code-Review+2: Elod Illes Change-Id: Ia204b190d15bc3d39ced5bd6274e71a79902f801 Signed-off-by: OpenStack Proposal Bot Generated-By: openstack/project-config:roles/copy-release-tools-scripts/files/release-tools/update_constraints.sh --- upper-constraints.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/upper-constraints.txt b/upper-constraints.txt index 36e52d6d6..a946dd1a6 100644 --- a/upper-constraints.txt +++ b/upper-constraints.txt @@ -245,7 +245,7 @@ ldappool===3.0.0 hpack===4.1.0 joblib===1.5.2 google-api-python-client===2.185.0 -castellan===5.4.1 +castellan===5.5.0 oslo.versionedobjects===3.8.0 enmerkar===0.7.1 webcolors===24.11.1 From e90b06a6c1d026217955e3b1c37f6147e747881a Mon Sep 17 00:00:00 2001 From: OpenStack Proposal Bot Date: Tue, 18 Nov 2025 09:35:24 +0000 Subject: [PATCH 14/32] update constraint for python-ironicclient to new release 5.14.0 meta: version: 5.14.0 meta: team: ironic meta: diff-start: - meta: series: gazpacho meta: branch: master meta: release-type: release meta: pypi: yes meta: first: yes meta: release:Author: Elod Illes meta: release:Commit: Riccardo Pittau meta: release:Change-Id: Ic7f2088392e0d11d2b0eb1c5f2d767d987e58610 meta: release:Code-Review+2: Elod Illes meta: release:Workflow+1: Elod Illes meta: release:Code-Review+2: Thierry Carrez Change-Id: I674f38a33b9e3e177c192a5677d0dd2c30bbb62c Signed-off-by: OpenStack Proposal Bot Generated-By: openstack/project-config:roles/copy-release-tools-scripts/files/release-tools/update_constraints.sh --- upper-constraints.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/upper-constraints.txt b/upper-constraints.txt index 36e52d6d6..9c808eee0 100644 --- a/upper-constraints.txt +++ b/upper-constraints.txt @@ -459,7 +459,7 @@ tomlkit===0.13.3 etcd3gw===2.4.2 Flask-RESTful===0.3.10 GitPython===3.1.45 -python-ironicclient===5.13.0 +python-ironicclient===5.14.0 babel===2.17.0 XStatic===1.0.3 XStatic-Angular-FileUpload===12.2.13.0 From b9e01a32a69aade3916b15029f265af5006e5f87 Mon Sep 17 00:00:00 2001 From: OpenStack Proposal Bot Date: Tue, 18 Nov 2025 09:42:02 +0000 Subject: [PATCH 15/32] update constraint for ovsdbapp to new release 2.14.0 meta: version: 2.14.0 meta: team: neutron meta: diff-start: - meta: series: gazpacho meta: branch: master meta: release-type: release meta: pypi: no meta: first: yes meta: release:Author: Elod Illes meta: release:Commit: Brian Haley meta: release:Change-Id: I7e357bd7f71f06db8f9b3c91ba6494733d39e61f meta: release:Workflow+1: Elod Illes meta: release:Code-Review+1: Lajos Katona meta: release:Code-Review+1: Brian Haley meta: release:Code-Review+2: Thierry Carrez meta: release:Code-Review+2: Elod Illes meta: release:Code-Review+1: Rodolfo Alonso Change-Id: Iaf52b5aa6d433bd91a0a0190107629255b5d6d58 Signed-off-by: OpenStack Proposal Bot Generated-By: openstack/project-config:roles/copy-release-tools-scripts/files/release-tools/update_constraints.sh --- upper-constraints.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/upper-constraints.txt b/upper-constraints.txt index 36e52d6d6..b40d49b53 100644 --- a/upper-constraints.txt +++ b/upper-constraints.txt @@ -512,7 +512,7 @@ docker===7.1.0 storops===1.2.11 anyio===4.11.0 XStatic-Angular-lrdragndrop===1.0.2.6 -ovsdbapp===2.13.0 +ovsdbapp===2.14.0 aniso8601===10.0.1 rjsmin===1.2.2 icalendar===6.3.1 From 6175fb3b6574a6e14dd81dcb9378869dc2984d32 Mon Sep 17 00:00:00 2001 From: OpenStack Proposal Bot Date: Tue, 18 Nov 2025 09:51:06 +0000 Subject: [PATCH 16/32] update constraint for oslo.metrics to new release 0.14.0 meta: version: 0.14.0 meta: team: oslo meta: diff-start: - meta: series: gazpacho meta: branch: master meta: release-type: release meta: pypi: yes meta: first: yes meta: release:Author: Elod Illes meta: release:Commit: Elod Illes meta: release:Change-Id: I5a9e7e5744f4964c73fd0291251ff205bd7d1245 meta: release:Code-Review+2: Elod Illes meta: release:Code-Review+2: Thierry Carrez meta: release:Workflow+1: Elod Illes meta: release:Code-Review+1: Daniel Bengtsson Change-Id: I28b45a3b4f092d344a65eb87c3146afdc16373e5 Signed-off-by: OpenStack Proposal Bot Generated-By: openstack/project-config:roles/copy-release-tools-scripts/files/release-tools/update_constraints.sh --- upper-constraints.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/upper-constraints.txt b/upper-constraints.txt index 36e52d6d6..fc7098a8e 100644 --- a/upper-constraints.txt +++ b/upper-constraints.txt @@ -66,7 +66,7 @@ fixtures===4.2.6 neutron-lib===3.22.0 XStatic-FileSaver===1.3.2.0 jaraco.functools===4.3.0 -oslo.metrics===0.13.0 +oslo.metrics===0.14.0 storage-interfaces===1.0.5 pydantic===2.12.3 persist-queue===1.0.0 From 0eab7cbed07afcc9877701b0c12ff0f51efb7418 Mon Sep 17 00:00:00 2001 From: OpenStack Proposal Bot Date: Wed, 19 Nov 2025 14:58:06 +0000 Subject: [PATCH 17/32] update constraint for oslo.service to new release 4.4.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit meta: version: 4.4.1 meta: team: oslo meta: diff-start: - meta: series: gazpacho meta: branch: master meta: release-type: release meta: pypi: yes meta: first: no meta: release:Author: Hervé Beraud meta: release:Commit: Hervé Beraud meta: release:Change-Id: I09ba108cd5fa1ded9aae42fb3873e5d47db2cd59 meta: release:Code-Review+2: Elod Illes meta: release:Code-Review+1: Daniel Bengtsson meta: release:Workflow+1: Thierry Carrez meta: release:Code-Review+2: Thierry Carrez meta: release:Code-Review+1: Balazs Gibizer Change-Id: I4dd66fc4e2ab375e39280ffcc19d3d3f69ceebed Signed-off-by: OpenStack Proposal Bot Generated-By: openstack/project-config:roles/copy-release-tools-scripts/files/release-tools/update_constraints.sh --- upper-constraints.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/upper-constraints.txt b/upper-constraints.txt index 66b4b264e..233dea1a2 100644 --- a/upper-constraints.txt +++ b/upper-constraints.txt @@ -40,7 +40,7 @@ setproctitle===1.3.7 pytest===8.4.2 python-slugify===8.0.4 cursive===0.2.3 -oslo.service===4.3.0 +oslo.service===4.4.1 django-appconf===1.1.0 ntc_templates===8.1.0 sphinxcontrib-nwdiag===2.0.0 From 2f66826040f50dfb95580b34b51055a2918febc9 Mon Sep 17 00:00:00 2001 From: Stephen Finucane Date: Wed, 19 Nov 2025 14:43:22 +0000 Subject: [PATCH 18/32] Correct expected type for Requirements.process In change Ide4574c53123ebe20d28211b80b9c079d01dd5e0, we changed the type of openstack_requirements.project.Project.requirements from a dict of strings (corresponding to filename mapped to file contents) to a dict of lists of strings (corresponding to filename mapped to file lines). However, we forgot to update one of the callers. Do this, adding the hints that should have been added initially to catch this obvious issue. Change-Id: I5f9aff4d964c049f7681126c74a2ee89f3ba35f1 Signed-off-by: Stephen Finucane --- openstack_requirements/check.py | 20 ++++++++++---------- openstack_requirements/project.py | 10 +++++++++- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/openstack_requirements/check.py b/openstack_requirements/check.py index 8b095786d..32ce222ba 100644 --- a/openstack_requirements/check.py +++ b/openstack_requirements/check.py @@ -20,6 +20,7 @@ from packaging import markers +from openstack_requirements.project import Project from openstack_requirements import requirement MIN_PY_VERSION = '3.5' @@ -32,23 +33,27 @@ class RequirementsList: - def __init__(self, name, project): + def __init__(self, name: str, project: Project) -> None: self.name = name - self.reqs_by_file = {} + self.reqs_by_file: dict[str, dict[str, set[str]]] = {} self.project = project self.failed = False @property - def reqs(self): + def reqs(self) -> dict[str, set[str]]: + """Flattens the list of per-file reqs.""" return {k: v for d in self.reqs_by_file.values() for k, v in d.items()} - def extract_reqs(self, content, strict): + def extract_reqs( + self, content: list[str], strict: bool + ) -> dict[str, set[str]]: reqs = collections.defaultdict(set) parsed = requirement.parse_lines(content) for name, entries in parsed.items(): if not name: # Comments and other unprocessed lines continue + list_reqs = [r for (r, line) in entries] # Strip the comments out before checking if there are duplicates list_reqs_stripped = [r._replace(comment='') for r in list_reqs] @@ -64,7 +69,7 @@ def extract_reqs(self, content, strict): reqs[name].update(list_reqs) return reqs - def process(self, strict=True): + def process(self, strict: bool = True) -> None: """Convert the project into ready to use data. - an iterable of requirement sets to check @@ -99,11 +104,6 @@ def process(self, strict=True): ) print(f"Processing {fname} (requirements)") - if strict and not content.endswith('\n'): - print( - f"Requirements file {fname} does not end with a newline.", - file=sys.stderr, - ) self.reqs_by_file[fname] = self.extract_reqs(content, strict) for fname, extras in self.project['extras'].items(): diff --git a/openstack_requirements/project.py b/openstack_requirements/project.py index 9461db24a..a83035f9f 100644 --- a/openstack_requirements/project.py +++ b/openstack_requirements/project.py @@ -19,6 +19,7 @@ import errno import io import os +import sys from typing import Any from typing import TypedDict @@ -34,7 +35,14 @@ def _read_raw(root: str, filename: str) -> str | None: try: path = os.path.join(root, filename) with open(path, encoding="utf-8") as f: - return f.read() + data = f.read() + if not data.endswith('\n'): + print( + f"Requirements file {filename} does not end with a " + f"newline.", + file=sys.stderr, + ) + return data except OSError as e: if e.errno == errno.ENOENT: return None From 3080b1f1f893cd6f309a8d5c0c3536e648ed94c3 Mon Sep 17 00:00:00 2001 From: Stephen Finucane Date: Wed, 19 Nov 2025 14:49:34 +0000 Subject: [PATCH 19/32] project-requirements-change: Improve path handling Allow calling with relative paths like so: python playbooks/files/project-requirements-change.py \ --reqs . ../nova master Change-Id: Ic790e5b9803f2dff453760723056c7a7f4ee3684 Signed-off-by: Stephen Finucane --- playbooks/files/project-requirements-change.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/playbooks/files/project-requirements-change.py b/playbooks/files/project-requirements-change.py index 09da5c6ca..1a997e486 100755 --- a/playbooks/files/project-requirements-change.py +++ b/playbooks/files/project-requirements-change.py @@ -103,6 +103,8 @@ def main(): print('selecting default requirements directory for normal mode') reqdir = _DEFAULT_REQS_DIR + reqdir = os.path.abspath(reqdir) + print(f'Branch: {branch}') print(f'Source: {args.src_dir}') print(f'Requirements: {reqdir}') @@ -114,14 +116,19 @@ def main(): # build a list of requirements from the global list in the # openstack/requirements project so we can match them to the changes with tempdir(): - with open(reqdir + '/global-requirements.txt') as f: - global_reqs = check.get_global_reqs(f.read()) - denylist = requirement.parse(open(reqdir + '/denylist.txt').read()) - backports_file = reqdir + '/backports.txt' + with open(os.path.join(reqdir, 'global-requirements.txt')) as fh: + global_reqs = check.get_global_reqs(fh.read()) + + with open(os.path.join(reqdir, 'denylist.txt')) as fh: + denylist = requirement.parse(fh.read()) + + backports_file = os.path.join(reqdir, 'backports.txt') if os.path.exists(backports_file): - backports = requirement.parse(open(backports_file).read()) + with open(backports_file) as fh: + backports = requirement.parse(fh.read()) else: backports = {} + cwd = os.getcwd() # build a list of requirements in the proposed change, # and check them for style violations while doing so @@ -154,6 +161,7 @@ def main(): print("*** Incompatible requirement found!") print("*** See https://docs.openstack.org/requirements/latest/") sys.exit(1) + print("Updated requirements match openstack/requirements.") From 89bfb625543f5f62f41302f1ba5629f231f51789 Mon Sep 17 00:00:00 2001 From: Stephen Finucane Date: Wed, 19 Nov 2025 15:04:25 +0000 Subject: [PATCH 20/32] project-requirements-change: Improve debug output For the default path, this changes output from: Processing pyproject.toml (requirements) Processing requirements.txt (requirements) Processing test-requirements.txt (requirements) Processing doc/requirements.txt (requirements) Processing pyproject.toml (extras) Processing .[osprofiler] Processing .[zvm] Processing .[vmware] Validating pyproject.toml Validating requirements.txt Validating test-requirements.txt Validating doc/requirements.txt Validating osprofiler Validating zvm Validating vmware Updated requirements match openstack/requirements to: Processing pyproject.toml (requirements) Processing requirements.txt (requirements) Processing test-requirements.txt (requirements) Processing doc/requirements.txt (requirements) Processing pyproject.toml (extras) Processing .[osprofiler] Processing .[zvm] Processing .[vmware] Validating pyproject.toml (dependencies) Validating requirements.txt (dependencies) Validating test-requirements.txt (dependencies) Validating doc/requirements.txt (dependencies) Validating pyproject.toml (.[osprofiler] extra) Validating pyproject.toml (.[zvm] extra) Validating pyproject.toml (.[vmware] extra) Updated requirements match openstack/requirements. While for the error path, this changes the error output from: ERROR: Requirement for package oslo.vmware excludes a version not excluded in the global list. Local settings : {'!=0.0.1'} Global settings: set() Unexpected : {'!=0.0.1'} *** Incompatible requirement found! *** See https://docs.openstack.org/requirements/latest/ to: ERROR: Requirement for package oslo.vmware excludes a version not excluded in the global list. Local settings : ['!=0.0.1'] Global settings: [] Unexpected : ['!=0.0.1'] *** Incompatible requirement found! *** See https://docs.openstack.org/requirements/latest/ Both of which look better and easier to grok, IMO. Change-Id: I82fe39797ac857957c6b07cc90fc78bcae58628a Signed-off-by: Stephen Finucane --- openstack_requirements/check.py | 29 ++++++++++++---------- openstack_requirements/tests/test_check.py | 8 +++--- 2 files changed, 20 insertions(+), 17 deletions(-) diff --git a/openstack_requirements/check.py b/openstack_requirements/check.py index 32ce222ba..7b6711b24 100644 --- a/openstack_requirements/check.py +++ b/openstack_requirements/check.py @@ -104,13 +104,17 @@ def process(self, strict: bool = True) -> None: ) print(f"Processing {fname} (requirements)") - self.reqs_by_file[fname] = self.extract_reqs(content, strict) + self.reqs_by_file[f'{fname} (dependencies)'] = self.extract_reqs( + content, strict + ) for fname, extras in self.project['extras'].items(): print(f"Processing {fname} (extras)") for name, content in extras.items(): - print(f"Processing .[{name}]") - self.reqs_by_file[name] = self.extract_reqs(content, strict) + print(f" Processing .[{name}]") + self.reqs_by_file[f'{fname} (.[{name}] extra)'] = ( + self.extract_reqs(content, strict) + ) def _get_exclusions(req): @@ -191,20 +195,19 @@ def _is_requirement_in_global_reqs( difference = req_exclusions - global_exclusions print( f"ERROR: Requirement for package {local_req.package} " - "excludes a version not excluded in the " - "global list.\n" - f" Local settings : {req_exclusions}\n" - f" Global settings: {global_exclusions}\n" - f" Unexpected : {difference}" + f"excludes a version not excluded in the " + f"global list.\n" + f" Local settings : {list(req_exclusions)}\n" + f" Global settings: {list(global_exclusions)}\n" + f" Unexpected : {list(difference)}" ) return False print( - "ERROR: " - f"Could not find a global requirements entry to match package {local_req.package}. " - "If the package is already included in the global list, " - "the name or platform markers there may not match the local " - "settings." + f"ERROR: Could not find a global requirements entry to match package " + f"{local_req.package}. If the package is already included in the " + f"global list, the name or platform markers there may not match the " + f"local settings." ) return False diff --git a/openstack_requirements/tests/test_check.py b/openstack_requirements/tests/test_check.py index e17623d38..ef34a74e9 100644 --- a/openstack_requirements/tests/test_check.py +++ b/openstack_requirements/tests/test_check.py @@ -43,11 +43,11 @@ def test_extras__setup_cfg(self): req_list = check.RequirementsList('test-project', project_data) req_list.process(strict=False) - self.assertIn('test', req_list.reqs_by_file) - self.assertIn('dev', req_list.reqs_by_file) + self.assertIn('setup.cfg (.[test] extra)', req_list.reqs_by_file) + self.assertIn('setup.cfg (.[dev] extra)', req_list.reqs_by_file) - test_reqs = req_list.reqs_by_file['test'] - dev_reqs = req_list.reqs_by_file['dev'] + test_reqs = req_list.reqs_by_file['setup.cfg (.[test] extra)'] + dev_reqs = req_list.reqs_by_file['setup.cfg (.[dev] extra)'] self.assertEqual(len(test_reqs), 2) self.assertIn('pytest', test_reqs) From eecaf4f374dd564806510c3dba3c20a663c3a1a7 Mon Sep 17 00:00:00 2001 From: OpenStack Proposal Bot Date: Wed, 19 Nov 2025 19:26:23 +0000 Subject: [PATCH 21/32] update constraint for oslo.middleware to new release 7.0.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit meta: version: 7.0.0 meta: team: oslo meta: diff-start: - meta: series: gazpacho meta: branch: master meta: release-type: release meta: pypi: yes meta: first: yes meta: release:Author: Stephen Finucane meta: release:Commit: Stephen Finucane meta: release:Change-Id: Ifbad95c6945ba51c4bf0809922ff9f6fea6d2af1 meta: release:Code-Review+2: Hervé Beraud meta: release:Code-Review+2: Elod Illes meta: release:Workflow+1: Elod Illes meta: release:Code-Review+1: Takashi Kajinami Change-Id: I6e8d31af54e0b703a572aea687f09b0b6a95eca1 Signed-off-by: OpenStack Proposal Bot Generated-By: openstack/project-config:roles/copy-release-tools-scripts/files/release-tools/update_constraints.sh --- upper-constraints.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/upper-constraints.txt b/upper-constraints.txt index bfddee106..345fad7a8 100644 --- a/upper-constraints.txt +++ b/upper-constraints.txt @@ -276,7 +276,7 @@ gossip===2.5.0 suds-community===1.2.0 os_vif===4.2.1 qrcode===8.2 -oslo.middleware===6.6.0 +oslo.middleware===7.0.0 XStatic-mdi===1.6.50.2 pydantic_core===2.41.4 uritemplate===4.2.0 From 6fc6b628b0a0cd14e91731baa51b3370b88078e5 Mon Sep 17 00:00:00 2001 From: OpenStack Proposal Bot Date: Wed, 19 Nov 2025 19:39:29 +0000 Subject: [PATCH 22/32] update constraint for oslo.cache to new release 4.0.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit meta: version: 4.0.0 meta: team: oslo meta: diff-start: - meta: series: gazpacho meta: branch: master meta: release-type: release meta: pypi: yes meta: first: yes meta: release:Author: Stephen Finucane meta: release:Commit: Takashi Kajinami meta: release:Change-Id: I82b716bb4cb2f3481c6d07dec24deb6988d33d05 meta: release:Code-Review+1: Stephen Finucane meta: release:Workflow+1: Elod Illes meta: release:Code-Review+2: Hervé Beraud meta: release:Code-Review+2: Elod Illes Change-Id: I96870e59fd06ad6170c5d53bc9cbc58127021b19 Signed-off-by: OpenStack Proposal Bot Generated-By: openstack/project-config:roles/copy-release-tools-scripts/files/release-tools/update_constraints.sh --- upper-constraints.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/upper-constraints.txt b/upper-constraints.txt index bfddee106..2b3334290 100644 --- a/upper-constraints.txt +++ b/upper-constraints.txt @@ -364,7 +364,7 @@ sushy===5.8.0 python-neutronclient===11.6.0 types-setuptools===80.9.0.20250822 pika===1.3.2 -oslo.cache===3.12.0 +oslo.cache===4.0.0 WebTest===3.0.7 os-collect-config===14.0.1 edgegrid-python===2.0.2 From c1807ef0abeb582c41485dd5f4f825106aa58060 Mon Sep 17 00:00:00 2001 From: OpenStack Proposal Bot Date: Thu, 13 Nov 2025 13:52:51 +0000 Subject: [PATCH 23/32] update constraint for ceilometermiddleware to new release 3.9.0 meta: version: 3.9.0 meta: team: Telemetry meta: diff-start: - meta: series: gazpacho meta: branch: master meta: release-type: release meta: pypi: yes meta: first: yes meta: release:Author: Elod Illes meta: release:Commit: Elod Illes meta: release:Change-Id: I19d8ceddfa19e30f3e98615dae3bce25773e4a29 meta: release:Code-Review+1: Juan Larriba meta: release:Code-Review+2: Thierry Carrez meta: release:Code-Review+2: Elod Illes meta: release:Workflow+1: Thierry Carrez Change-Id: I93db0942531f4dc155972f6643a453d67cb76add Signed-off-by: OpenStack Proposal Bot Generated-By: openstack/project-config:roles/copy-release-tools-scripts/files/release-tools/update_constraints.sh --- upper-constraints.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/upper-constraints.txt b/upper-constraints.txt index 483d5b127..0ae88437b 100644 --- a/upper-constraints.txt +++ b/upper-constraints.txt @@ -374,7 +374,7 @@ requests-oauthlib===2.0.0 oslo.reports===3.6.0 pysnmp-lextudio===6.1.2 bitmath===1.3.3.1 -ceilometermiddleware===3.8.0 +ceilometermiddleware===3.9.0 testrepository===0.0.21 sympy===1.14.0 Logbook===1.8.2 From 889f891a65f880ed721ea402873e2a5977333943 Mon Sep 17 00:00:00 2001 From: OpenStack Proposal Bot Date: Thu, 13 Nov 2025 13:45:59 +0000 Subject: [PATCH 24/32] update constraint for mistral-lib to new release 3.5.0 meta: version: 3.5.0 meta: team: mistral meta: diff-start: - meta: series: gazpacho meta: branch: master meta: release-type: release meta: pypi: yes meta: first: yes meta: release:Author: Elod Illes meta: release:Commit: Elod Illes meta: release:Change-Id: I61468bdcdb9c9030c79f2650ddb9779e16291cb0 meta: release:Code-Review+1: Arnaud Morin meta: release:Code-Review+2: Elod Illes meta: release:Workflow+1: Thierry Carrez meta: release:Code-Review+2: Thierry Carrez Change-Id: Ie5136504837b55c6b69f40da0932f83dec57eead Signed-off-by: OpenStack Proposal Bot Generated-By: openstack/project-config:roles/copy-release-tools-scripts/files/release-tools/update_constraints.sh --- upper-constraints.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/upper-constraints.txt b/upper-constraints.txt index 0ae88437b..23b908844 100644 --- a/upper-constraints.txt +++ b/upper-constraints.txt @@ -286,7 +286,7 @@ os-ken===4.0.0 ujson===5.11.0 selenium===3.141.0 pytest-subtests===0.15.0 -mistral-lib===3.4.0 +mistral-lib===3.5.0 dogtag-pki===11.2.1 XStatic-Angular-UUID===0.0.4.0 sphinxcontrib-seqdiag===3.0.0 From 0a42c9a01f72a7e5624c9268e5eace28319087d5 Mon Sep 17 00:00:00 2001 From: OpenStack Proposal Bot Date: Thu, 13 Nov 2025 13:53:45 +0000 Subject: [PATCH 25/32] update constraint for oslo.policy to new release 4.7.0 meta: version: 4.7.0 meta: team: oslo meta: diff-start: - meta: series: gazpacho meta: branch: master meta: release-type: release meta: pypi: yes meta: first: yes meta: release:Author: Elod Illes meta: release:Commit: Elod Illes meta: release:Change-Id: Ie68a8c7cd684b3a32631a8c000a5a98da66e6261 meta: release:Code-Review+1: Daniel Bengtsson meta: release:Workflow+1: Thierry Carrez meta: release:Code-Review+2: Thierry Carrez meta: release:Code-Review+2: Elod Illes Change-Id: I19f19eba75359aef59e52fea694f0976d7dbfeaa Signed-off-by: OpenStack Proposal Bot Generated-By: openstack/project-config:roles/copy-release-tools-scripts/files/release-tools/update_constraints.sh --- upper-constraints.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/upper-constraints.txt b/upper-constraints.txt index 23b908844..7f262ef46 100644 --- a/upper-constraints.txt +++ b/upper-constraints.txt @@ -474,7 +474,7 @@ pymemcache===4.0.0 wrapt===2.0.0 oslo.privsep===3.8.0 sphinxcontrib-apidoc===0.6.0 -oslo.policy===4.6.0 +oslo.policy===4.7.0 hvac===2.3.0 pyeclib===1.7.0 repoze.lru===0.7 From d35c2a21e73b2b0d1a117f280c0790ba76609e8b Mon Sep 17 00:00:00 2001 From: OpenStack Proposal Bot Date: Thu, 13 Nov 2025 13:48:11 +0000 Subject: [PATCH 26/32] update constraint for python-zaqarclient to new release 4.2.0 meta: version: 4.2.0 meta: team: zaqar meta: diff-start: - meta: series: gazpacho meta: branch: master meta: release-type: release meta: pypi: yes meta: first: yes meta: release:Author: Elod Illes meta: release:Commit: Elod Illes meta: release:Change-Id: Ib294e81d440f095b2ee467db885135bcdc3ac709 meta: release:Workflow+1: Thierry Carrez meta: release:Code-Review+2: Elod Illes meta: release:Code-Review+2: Thierry Carrez meta: release:Code-Review+1: Hao Wang Change-Id: I9f9fc30def8d0b3bd54d009f08c6f92999aa73db Signed-off-by: OpenStack Proposal Bot Generated-By: openstack/project-config:roles/copy-release-tools-scripts/files/release-tools/update_constraints.sh --- upper-constraints.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/upper-constraints.txt b/upper-constraints.txt index 7f262ef46..abd1e67aa 100644 --- a/upper-constraints.txt +++ b/upper-constraints.txt @@ -240,7 +240,7 @@ os-brick===6.13.0 valkey===6.1.1 scp===0.15.0 lark===1.3.0 -python-zaqarclient===4.1.0 +python-zaqarclient===4.2.0 ldappool===3.0.0 hpack===4.1.0 joblib===1.5.2 From 1dfaa9f031e99f7cdf7c97f96cee8745a6e4b42e Mon Sep 17 00:00:00 2001 From: OpenStack Proposal Bot Date: Thu, 20 Nov 2025 10:09:05 +0000 Subject: [PATCH 27/32] update constraint for stevedore to new release 5.6.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit meta: version: 5.6.0 meta: team: oslo meta: diff-start: - meta: series: gazpacho meta: branch: master meta: release-type: release meta: pypi: yes meta: first: yes meta: release:Author: Stephen Finucane meta: release:Commit: Stephen Finucane meta: release:Change-Id: I13ee392a1fe31c37409f09c431995d8b198837fc meta: release:Workflow+1: Elod Illes meta: release:Code-Review+2: Elod Illes meta: release:Code-Review+2: Hervé Beraud meta: release:Code-Review+1: Takashi Kajinami Change-Id: I391eed6051fe73a4b9b04a7f32d1e7699994c19b Signed-off-by: OpenStack Proposal Bot Generated-By: openstack/project-config:roles/copy-release-tools-scripts/files/release-tools/update_constraints.sh --- upper-constraints.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/upper-constraints.txt b/upper-constraints.txt index a43a24010..481709d03 100644 --- a/upper-constraints.txt +++ b/upper-constraints.txt @@ -418,7 +418,7 @@ WSME===0.12.1 tomli===2.3.0 oslo.upgradecheck===2.6.0 sherlock===0.4.1 -stevedore===5.5.0 +stevedore===5.6.0 botocore===1.35.99 xmltodict===1.0.2 pyasn1===0.6.0 From e50569dcb717c7191d2eae7651870be1d5e2e832 Mon Sep 17 00:00:00 2001 From: OpenStack Proposal Bot Date: Thu, 20 Nov 2025 15:07:39 +0000 Subject: [PATCH 28/32] update constraint for cliff to new release 4.12.0 meta: version: 4.12.0 meta: team: OpenStackSDK meta: diff-start: - meta: series: gazpacho meta: branch: master meta: release-type: release meta: pypi: yes meta: first: yes meta: release:Author: Stephen Finucane meta: release:Commit: Stephen Finucane meta: release:Change-Id: I1c1b3dbc6153644e7d930e09423d6424b12e52d0 meta: release:Code-Review+2: Elod Illes meta: release:Workflow+1: Thierry Carrez meta: release:Code-Review+1: Artem Goncharov meta: release:Code-Review+2: Thierry Carrez Change-Id: I08ab72e0d53c7f75bcd2409aace3eca482f84e5f Signed-off-by: OpenStack Proposal Bot Generated-By: openstack/project-config:roles/copy-release-tools-scripts/files/release-tools/update_constraints.sh --- upper-constraints.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/upper-constraints.txt b/upper-constraints.txt index 0f1e35c4a..a7deeafba 100644 --- a/upper-constraints.txt +++ b/upper-constraints.txt @@ -235,7 +235,7 @@ daiquiri===3.4.0 influxdb===5.3.2 funcparserlib===2.0.0a0 passlib===1.7.4 -cliff===4.11.0 +cliff===4.12.0 os-brick===6.13.0 valkey===6.1.1 scp===0.15.0 From 13aae795a0ddc7d8a7d3928c781392588502b11e Mon Sep 17 00:00:00 2001 From: OpenStack Proposal Bot Date: Thu, 20 Nov 2025 15:17:01 +0000 Subject: [PATCH 29/32] update constraint for oslo.i18n to new release 6.7.1 meta: version: 6.7.1 meta: team: oslo meta: diff-start: - meta: series: gazpacho meta: branch: master meta: release-type: release meta: pypi: yes meta: first: no meta: release:Author: Stephen Finucane meta: release:Commit: Stephen Finucane meta: release:Change-Id: I4f197d9339e982b1def3cef20ab6e637b53bc1f0 meta: release:Code-Review+1: Takashi Kajinami meta: release:Workflow+1: Thierry Carrez meta: release:Code-Review+2: Thierry Carrez meta: release:Code-Review+2: Elod Illes Change-Id: I6de3650af5e21e77cdb2860b0f34c5f9e2823d2a Signed-off-by: OpenStack Proposal Bot Generated-By: openstack/project-config:roles/copy-release-tools-scripts/files/release-tools/update_constraints.sh --- upper-constraints.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/upper-constraints.txt b/upper-constraints.txt index 0f1e35c4a..310713b44 100644 --- a/upper-constraints.txt +++ b/upper-constraints.txt @@ -54,7 +54,7 @@ attrs===25.4.0 microversion-parse===2.0.0 jwcrypto===1.5.6 Pint===0.24.4 -oslo.i18n===6.7.0 +oslo.i18n===6.7.1 jsonpath-rw-ext===1.2.2 python-mistralclient===6.1.0 oslo.context===6.1.0 From 6257c0c119e2b7f39d1aef7f007450fcc7c0d5e0 Mon Sep 17 00:00:00 2001 From: OpenStack Proposal Bot Date: Thu, 20 Nov 2025 15:18:01 +0000 Subject: [PATCH 30/32] update constraint for oslo.utils to new release 9.2.0 meta: version: 9.2.0 meta: team: oslo meta: diff-start: - meta: series: gazpacho meta: branch: master meta: release-type: release meta: pypi: yes meta: first: yes meta: release:Author: Stephen Finucane meta: release:Commit: Stephen Finucane meta: release:Change-Id: Ieb7b6f6178552b58d54e1473a550133f2cd58782 meta: release:Code-Review+1: Takashi Kajinami meta: release:Code-Review+2: Thierry Carrez meta: release:Code-Review+2: Elod Illes meta: release:Workflow+1: Thierry Carrez Change-Id: I0a23ed7ff2c01bf9557bf3b642a1852ce5ccaf5d Signed-off-by: OpenStack Proposal Bot Generated-By: openstack/project-config:roles/copy-release-tools-scripts/files/release-tools/update_constraints.sh --- upper-constraints.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/upper-constraints.txt b/upper-constraints.txt index 0f1e35c4a..529bbe6b9 100644 --- a/upper-constraints.txt +++ b/upper-constraints.txt @@ -554,7 +554,7 @@ python-linstor===1.25.3 filelock===3.20.0 python-tackerclient===2.4.0 python-heatclient===4.3.0 -oslo.utils===9.1.0 +oslo.utils===9.2.0 requests-kerberos===0.15.0 itsdangerous===2.2.0 XStatic-jquery-ui===1.13.0.1 From 107e0a76021aa3f7be130a4298fc32427975954a Mon Sep 17 00:00:00 2001 From: OpenStack Proposal Bot Date: Thu, 20 Nov 2025 15:23:36 +0000 Subject: [PATCH 31/32] update constraint for oslo.context to new release 6.2.0 meta: version: 6.2.0 meta: team: oslo meta: diff-start: - meta: series: gazpacho meta: branch: master meta: release-type: release meta: pypi: yes meta: first: yes meta: release:Author: Stephen Finucane meta: release:Commit: Stephen Finucane meta: release:Change-Id: I3115fa6436cd47057d891833df4804f1ae29a0a8 meta: release:Workflow+1: Thierry Carrez meta: release:Code-Review+2: Elod Illes meta: release:Code-Review+1: Takashi Kajinami meta: release:Code-Review+2: Thierry Carrez Change-Id: I31699f0b8a20c6e1b55de2d57e8392196e000da5 Signed-off-by: OpenStack Proposal Bot Generated-By: openstack/project-config:roles/copy-release-tools-scripts/files/release-tools/update_constraints.sh --- upper-constraints.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/upper-constraints.txt b/upper-constraints.txt index 0f1e35c4a..4d2ee067b 100644 --- a/upper-constraints.txt +++ b/upper-constraints.txt @@ -57,7 +57,7 @@ Pint===0.24.4 oslo.i18n===6.7.0 jsonpath-rw-ext===1.2.2 python-mistralclient===6.1.0 -oslo.context===6.1.0 +oslo.context===6.2.0 rcssmin===1.1.2 pycadf===4.0.1 grpcio===1.76.0 From dc2d07e7ba53b173c04cf24aac607b07a63ceaff Mon Sep 17 00:00:00 2001 From: OpenStack Proposal Bot Date: Fri, 21 Nov 2025 14:06:02 +0000 Subject: [PATCH 32/32] update constraint for os-service-types to new release 1.8.2 meta: version: 1.8.2 meta: team: OpenStackSDK meta: diff-start: - meta: series: independent meta: branch: master meta: release-type: release meta: pypi: yes meta: first: no meta: release:Author: Stephen Finucane meta: release:Commit: Stephen Finucane meta: release:Change-Id: I0d149b5ca22489d248edd64e5e6505776a3f10ef meta: release:Code-Review+2: Elod Illes meta: release:Code-Review+2: Thierry Carrez meta: release:Code-Review+1: Artem Goncharov meta: release:Workflow+1: Elod Illes Change-Id: I10b662a41cd37552cf3cef350ec3ea4a97900472 Signed-off-by: OpenStack Proposal Bot Generated-By: openstack/project-config:roles/copy-release-tools-scripts/files/release-tools/update_constraints.sh --- upper-constraints.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/upper-constraints.txt b/upper-constraints.txt index 0f1e35c4a..deee1f554 100644 --- a/upper-constraints.txt +++ b/upper-constraints.txt @@ -321,7 +321,7 @@ python-monascaclient===2.8.0 opentelemetry-api===1.38.0 automaton===3.2.0 types-urllib3===1.26.25.14 -os-service-types===1.8.1 +os-service-types===1.8.2 keyring===25.6.0 elementpath===4.8.0 wsgi_intercept===1.13.1