diff --git a/.zuul.d/jobs.yaml b/.zuul.d/jobs.yaml index 3b11241a91..b4f7ddebe4 100644 --- a/.zuul.d/jobs.yaml +++ b/.zuul.d/jobs.yaml @@ -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 diff --git a/.zuul.d/project.yaml b/.zuul.d/project.yaml index 50632e9ea0..8da4557a6e 100644 --- a/.zuul.d/project.yaml +++ b/.zuul.d/project.yaml @@ -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 diff --git a/setup.cfg b/setup.cfg index 2316101795..975d1e9e97 100644 --- a/setup.cfg +++ b/setup.cfg @@ -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 diff --git a/tox.ini b/tox.ini index a675a6b474..0daaa0b672 100644 --- a/tox.ini +++ b/tox.ini @@ -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 = diff --git a/upper-constraints.txt b/upper-constraints.txt index 05232daff4..909dd1a83d 100644 --- a/upper-constraints.txt +++ b/upper-constraints.txt @@ -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