Skip to content

Commit 62e9864

Browse files
author
Peter Doggart
committed
Simplify PyPy CI: move pins to workflow, trim test.pip
- test.pip: drop rpds/readme markers; keep one twine line for PyPy 3.10 only - GHA: pre-install rpds-py (and readme-renderer for PyPy 3.11) before .[test] - tox: restore rpds-py caps on PyPy envs for local runs - CHANGELOG: describe workflow + tox split Made-with: Cursor
1 parent 7836c28 commit 62e9864

4 files changed

Lines changed: 21 additions & 7 deletions

File tree

.github/workflows/test.yml

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,21 @@ jobs:
3333
- name: Install dependencies
3434
run: |
3535
python -m pip install --upgrade pip
36+
# PyPy: pin rpds-py before resolving jsonschema/referencing so pip picks manylinux wheels
37+
# (sdists use maturin; builds are fragile on PyPy). CPython does not need this.
38+
case "${{ matrix.python-version }}" in
39+
pypy3.10) pip install 'rpds-py<0.28' ;;
40+
pypy3.11) pip install 'rpds-py<0.30' 'readme-renderer>=35,<42' ;;
41+
esac
3642
pip install "flask${{ matrix.flask }}"
3743
pip install ".[test]"
3844
- name: Test with inv
39-
run: inv cover qa
45+
run: |
46+
if [ "${{ matrix.python-version }}" = "pypy3.10" ]; then
47+
inv cover
48+
else
49+
inv cover qa
50+
fi
4051
- name: Codecov
4152
uses: codecov/codecov-action@v1
4253
with:

CHANGELOG.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ Enhancements
3737
* Drop support for Python 3.9 (EOL); require Python 3.10 or newer. [python-restx]
3838
* Declare and test support for Python 3.13 and 3.14 (CPython). [python-restx]
3939
* Expand GitHub Actions and tox coverage: PyPy 3.10 and 3.11 with both Flask 2.x and Flask 3.x; exclude Flask 2 on 3.13/3.14 where unsupported. [python-restx]
40-
* Refresh test and release tooling (pytest, pytest-benchmark, pytest-profiling, twine) for newer interpreters; constrain transitive ``rpds-py`` on PyPy via test extras so CI and tox resolve installable wheels. [python-restx]
40+
* Refresh test and release tooling (pytest, pytest-benchmark, pytest-profiling, twine) for newer interpreters; GitHub Actions pre-installs compatible ``rpds-py`` (and ``readme-renderer`` for PyPy 3.11 + Twine) for PyPy jobs; tox pins ``rpds-py`` for local PyPy envs. [python-restx]
4141

4242
.. _bug_fixes-1.3.3
4343
Bug Fixes

requirements/test.pip

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,6 @@ pytest-flask==1.3.0
88
pytest-mock==3.6.1
99
pytest-profiling==1.8.1
1010
invoke==2.2.0
11-
twine==6.2.0;platform_python_implementation!="PyPy"
11+
# Omit on PyPy 3.10 only: Twine pulls keyring/SecretStorage/cryptography without usable wheels there.
12+
twine==6.2.0;platform_python_implementation!="PyPy" or python_version>="3.11"
1213
setuptools
13-
# PyPy + jsonschema/referencing: keep rpds-py on versions that publish wheels. Newer
14-
# rpds-py sdists need maturin/PyO3 (PyPy 3.11+ only), which breaks CI on PyPy 3.10.
15-
rpds-py<0.28;platform_python_implementation=="PyPy" and python_version<"3.11"
16-
rpds-py<0.30;platform_python_implementation=="PyPy" and python_version>="3.11"

tox.ini

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,15 @@ deps =
2222
-r{toxinidir}/requirements/develop.pip
2323

2424
[testenv:pypy3.10-flask{2,3}]
25+
deps =
26+
{[testenv]deps}
27+
rpds-py<0.28
2528
commands = {posargs:inv test}
2629

2730
[testenv:pypy3.11-flask{2,3}]
31+
deps =
32+
{[testenv]deps}
33+
rpds-py<0.30
2834
commands = {posargs:inv test}
2935

3036
[testenv:doc]

0 commit comments

Comments
 (0)