Re-add python3.9 to upper-constraints

This patch partially reverts https://review.opendev.org/c/openstack/requirements/+/948285
re-adding python3.9 compatible libraries to upper-constraints.
This is done to give time to projects that still run and support
Python3.9 (for example any container/CI jobs based on CentOS Stream 9)
to phase off its usage and pass to a more recent Python version.

Python 3.9 is expect to EoL in October, we expect to be able to
remove its support once and for all before then.

Change-Id: Ie03307aac1dffc5cf397a2513c2c44d403a2d2b7
This commit is contained in:
Riccardo Pittau
2025-05-06 15:37:27 +02:00
parent b58f4867d2
commit 99ac9de126
5 changed files with 52 additions and 9 deletions

View File

@@ -12,6 +12,17 @@
vars:
tox_envlist: babel
- job:
name: requirements-tox-py39-check-uc
parent: openstack-tox-py39
description: |
Run test for requirements project.
Uses tox with the ``py39-check-uc`` environment.
files: ^upper-constraints.*txt$
vars:
tox_envlist: py39-check-uc
- job:
name: requirements-tox-py310-check-uc
parent: openstack-tox-py310
@@ -53,6 +64,16 @@
vars:
tox_envlist: py313-check-uc
- job:
name: requirements-tox-py39-check-uc-no-wheels
parent: requirements-tox-py39-check-uc
description: |
Run test for requirements project.
Uses tox with the ``py39-check-uc`` environment.
Does not use wheel mirror.
pre-run: playbooks/drop-wheel-mirror.yaml
- job:
name: requirements-tox-py310-check-uc-no-wheels
parent: requirements-tox-py310-check-uc

View File

@@ -17,6 +17,7 @@
- requirements-tox-babel
- requirements-tox-bindep:
voting: false
- requirements-tox-py39-check-uc
- requirements-tox-py310-check-uc
- requirements-tox-py311-check-uc
- requirements-tox-py312-check-uc
@@ -83,6 +84,7 @@
- openstack-tox-validate
- requirements-check-self
- requirements-tox-babel
- requirements-tox-py39-check-uc
- requirements-tox-py310-check-uc
- requirements-tox-py311-check-uc
- requirements-tox-py312-check-uc
@@ -118,6 +120,7 @@
jobs:
- nova-ceph-multistore
- nova-next
- requirements-tox-py39-check-uc-no-wheels
- requirements-tox-py310-check-uc-no-wheels
- requirements-tox-py311-check-uc-no-wheels
- requirements-tox-py312-check-uc-no-wheels

View File

@@ -16,6 +16,7 @@ classifier =
Operating System :: MacOS :: MacOS X
Programming Language :: Python
Programming Language :: Python :: 3
Programming Language :: Python :: 3.9
Programming Language :: Python :: 3.10
Programming Language :: Python :: 3.11
Programming Language :: Python :: 3.12

View File

@@ -12,6 +12,13 @@ deps = -c{toxinidir}/upper-constraints.txt
commands =
stestr run {posargs}
[testenv:py39-check-uc]
allowlist_externals =
check-conflicts
basepython = python3.9
deps = -r{toxinidir}/upper-constraints.txt
commands = check-conflicts {toxinidir}/upper-constraints.txt {toxinidir}/upper-constraints-xfails.txt
[testenv:py310-check-uc]
basepython = python3.10
deps = -r{toxinidir}/upper-constraints.txt
@@ -42,7 +49,7 @@ description = Regenerates upper-constraints.txt
# Generate needs an unconstrained install to get new dependencies
deps = -r{toxinidir}/requirements.txt
-r{toxinidir}/test-requirements.txt
commands = generate-constraints {posargs: -d denylist.txt -r global-requirements.txt -p python3.10 -p python3.11 -p python3.12 -p python3.13 > upper-constraints.txt}
commands = generate-constraints {posargs: -d denylist.txt -r global-requirements.txt -p python3.9 -p python3.10 -p python3.11 -p python3.12 -p python3.13 > upper-constraints.txt}
[testenv:validate]
allowlist_externals =

View File

@@ -40,7 +40,8 @@ ntc_templates===7.8.0
sphinxcontrib-nwdiag===2.0.0
rbd-iscsi-client===0.1.8
requests-aws===0.1.8
alabaster===1.0.0
alabaster===0.7.16;python_version=='3.9'
alabaster===1.0.0;python_version>='3.10'
multidict===6.4.3
pbr===6.1.1
munch===4.0.0
@@ -48,7 +49,8 @@ waiting===1.5.0
attrs===25.3.0
microversion-parse===2.0.0
jwcrypto===1.5.6
Pint===0.24.4
Pint===0.23;python_version=='3.9'
Pint===0.24.4;python_version>='3.10'
oslo.i18n===6.5.1
jsonpath-rw-ext===1.2.2
python-mistralclient===5.4.0
@@ -88,7 +90,8 @@ python-vitrageclient===5.2.0
py-pure-client===1.67.0
krest===1.3.6
psycopg2===2.9.10
networkx===3.4.2
networkx===3.2.1;python_version=='3.9'
networkx===3.4.2;python_version>='3.10'
cheroot===10.0.1
XStatic-Angular===1.8.2.2
types-requests===2.31.0.6
@@ -104,7 +107,8 @@ pyOpenSSL===24.2.1
monasca-common===3.8.0
hyperframe===6.1.0
zeroconf===0.146.5
scipy===1.15.2
scipy===1.13.1;python_version=='3.9'
scipy===1.15.2;python_version>='3.10'
opentelemetry-exporter-otlp===1.32.1
python-gnupg===0.5.4
rsd-lib===1.2.0
@@ -146,6 +150,7 @@ vine===5.1.0
taskflow===5.12.0
arrow===1.3.0
semantic-version===2.10.0
async-timeout===5.0.1;python_version=='3.9'
async-timeout===5.0.1;python_version=='3.10'
virtualbmc===3.2.0
SQLAlchemy===2.0.40
@@ -204,6 +209,7 @@ sphinxcontrib-jsmath===1.0.1
python-novaclient===18.9.0
pact===1.12.0
bcrypt===4.0.1
exceptiongroup===1.2.2;python_version=='3.9'
exceptiongroup===1.2.2;python_version=='3.10'
os-client-config===2.1.0
XStatic-Angular-Gettext===2.4.1.0
@@ -237,7 +243,8 @@ XStatic-JQuery-Migrate===3.3.2.1
pytest-html===4.1.1
appdirs===1.4.4
google-auth-httplib2===0.2.0
daiquiri===3.3.0
daiquiri===3.2.5.1;python_version=='3.9'
daiquiri===3.3.0;python_version>='3.10'
influxdb===5.3.2
funcparserlib===2.0.0a0
passlib===1.7.4
@@ -386,9 +393,11 @@ python-consul===1.1.0
more-itertools===10.7.0
seqdiag===3.0.0
zc.lockfile===3.0.post1
numpy===2.2.5
numpy===2.0.0;python_version=='3.9'
numpy===2.2.5;python_version>='3.10'
msgpack===1.1.0
Sphinx===8.1.3
Sphinx===7.4.7;python_version=='3.9'
Sphinx===8.1.3;python_version>='3.10'
oslo.config===9.7.1
openstackdocstheme===3.5.0
osc-placement===4.6.0
@@ -418,6 +427,7 @@ api-object-schema===2.0.0
blinker===1.9.0
aenum===3.1.15
WSME===0.12.1
tomli===2.2.1;python_version=='3.9'
tomli===2.2.1;python_version=='3.10'
oslo.upgradecheck===2.5.0
sherlock===0.4.1
@@ -561,7 +571,8 @@ sqlalchemy-filters===0.13.0
sphinxcontrib-runcmd===0.2.0
confspirator===0.3.0
fasteners===0.19
importlib_metadata===8.6.1
importlib-metadata===6.2.1;python_version=='3.9'
importlib-metadata===8.6.1;python_version>='3.10'
sortedcontainers===2.4.0
python-linstor===1.25.3
filelock===3.18.0