Skip to content

Commit 7d8d736

Browse files
authored
Merge branch 'main' into travis-ci-debugging
2 parents f2cda66 + 9dd7192 commit 7d8d736

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

57 files changed

+501
-256
lines changed

.github/workflows/test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ jobs:
8383
CIBW_ENABLE=all
8484
else
8585
# get the default CIBW_ENABLE value from the test module
86-
CIBW_ENABLE=$(uv run --no-sync python -c 'import sys, test.conftest as c; sys.stdout.write(c.DEFAULT_CIBW_ENABLE)')
86+
CIBW_ENABLE=$(uv run --no-sync python -c 'import sys, test.utils as c; sys.stdout.write(c.DEFAULT_CIBW_ENABLE)')
8787
8888
# if this is a PR, check for labels
8989
if [[ -n "$GITHUB_PR_LABEL_CI_PYPY" ]]; then

README.md

Lines changed: 26 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ Usage
5858

5959
| | Linux | macOS | Windows | Linux ARM | macOS ARM | Windows ARM | iOS |
6060
|-----------------|-------|-------|---------|-----------|-----------|-------------|-----|
61-
| GitHub Actions ||||||² | ✅³ |
61+
| GitHub Actions |||||| | ✅³ |
6262
| Azure Pipelines |||| || ✅² | ✅³ |
6363
| Travis CI || ||| | | |
6464
| CircleCI ||| ||| | ✅³ |
@@ -97,7 +97,7 @@ jobs:
9797
- uses: actions/setup-python@v5
9898

9999
- name: Install cibuildwheel
100-
run: python -m pip install cibuildwheel==2.23.3
100+
run: python -m pip install cibuildwheel==3.0.0b1
101101

102102
- name: Build wheels
103103
run: python -m cibuildwheel --output-dir wheelhouse
@@ -217,6 +217,29 @@ Changelog
217217

218218
<!-- this section was generated by bin/update_readme_changelog.py -- do not edit manually -->
219219

220+
### v3.0.0
221+
222+
Not yet released, but available for testing.
223+
224+
Note - when using a beta version, be sure to check the [latest docs](https://cibuildwheel.pypa.io/en/latest/), rather than the stable version, which is still on v2.X.
225+
226+
#### v3.0.0b1
227+
228+
_19 May 2025_
229+
230+
- 🌟 Adds the ability to [build wheels for iOS](https://cibuildwheel.pypa.io/en/latest/platforms/#ios)! Set the [`platform` option](https://cibuildwheel.pypa.io/en/latest/options/#platform) to `ios` on a Mac with the iOS toolchain to try it out!
231+
- 🌟 Adds support for the GraalPy interpreter! Enable for your project using the [`enable` option](https://cibuildwheel.pypa.io/en/latest/options/#enable). (#1538)
232+
- ✨ Adds CPython 3.14 support, under the [`enable` option](https://cibuildwheel.pypa.io/en/latest/options/#enable) `cpython-prerelease`. This version of cibuildwheel uses 3.14.0b1.
233+
234+
_While CPython is in beta, the ABI can change, so your wheels might not be compatible with the final release. For this reason, we don't recommend distributing wheels until RC1, at which point 3.14 will be available in cibuildwheel without the flag._ (#2390)
235+
- ✨ Adds the [test-sources option](https://cibuildwheel.pypa.io/en/latest/options/#test-sources). \[discussion about the test cwd change and how to use to come!\]
236+
- ✨ Added `dependency-versions` inline syntax (#2123)
237+
- 🛠 EOL manylinux options can no longer be specified by their shortname. Full OCI URL can still be used for these images, if you wish (#2316)
238+
- 🛠 Build environments no longer have setuptools and wheel preinstalled. (#2329)
239+
- ⚠️ PyPy wheels no longer built by default, due to a change to our options system. To continue building PyPy wheels, you'll now need to set the [`enable` option](https://cibuildwheel.pypa.io/en/latest/options/#enable) to `pypy` or `pypy-eol`.
240+
- ⚠️ Dropped official support for Appveyor. If it was working for you before, it will probably continue to do so, but we can't be sure, because our CI doesn't run there anymore. (#2386)
241+
- 📚 A reorganisation of the docs, and numerous updates (#2280)
242+
220243
### v2.23.3
221244

222245
_26 April 2025_
@@ -229,6 +252,7 @@ _24 March 2025_
229252

230253
- 🐛 Workaround an issue with pyodide builds when running cibuildwheel with a Python that was installed via UV (#2328 via #2331)
231254
- 🛠 Dependency updates, including a manylinux update that fixes an ['undefined symbol' error](https://github.com/pypa/manylinux/issues/1760) in gcc-toolset (#2334)
255+
-
232256

233257
### v2.23.1
234258

@@ -237,33 +261,6 @@ _15 March 2025_
237261
- ⚠️ Added warnings when the shorthand values `manylinux1`, `manylinux2010`, `manylinux_2_24`, and `musllinux_1_1` are used to specify the images in linux builds. The shorthand to these (unmaintainted) images will be removed in v3.0. If you want to keep using these images, explicitly opt-in using the full image URL, which can be found in [this file](https://github.com/pypa/cibuildwheel/blob/v2.23.1/cibuildwheel/resources/pinned_docker_images.cfg). (#2312)
238262
- 🛠 Dependency updates, including a manylinux update which fixes an [issue with rustup](https://github.com/pypa/cibuildwheel/issues/2303). (#2315)
239263

240-
### v2.23.0
241-
242-
_1 March 2025_
243-
244-
- ✨ Adds official support for the new GitHub Actions Arm runners. In fact these worked out-of-the-box, now we include them in our tests and example configs. (#2135 via #2281)
245-
- ✨ Adds support for building PyPy 3.11 wheels (#2268 via #2281)
246-
- 🛠 Adopts the beta pypa/manylinux image for armv7l builds (#2269 via #2281)
247-
- 🛠 Dependency updates, including Pyodide 0.27 (#2117 and #2281)
248-
249-
### v2.22.0
250-
251-
_23 November 2024_
252-
253-
- 🌟 Added a new `CIBW_ENABLE`/`enable` feature that replaces `CIBW_FREETHREADED_SUPPORT`/`free-threaded-support` and `CIBW_PRERELEASE_PYTHONS` with a system that supports both. In cibuildwheel 3, this will also include a PyPy setting and the deprecated options will be removed. (#2048)
254-
- 🌟 [Dependency groups](https://peps.python.org/pep-0735/) are now supported for tests. Use `CIBW_TEST_GROUPS`/`test-groups` to specify groups in `[dependency-groups]` for testing. (#2063)
255-
- 🌟 Support for the experimental Ubuntu-based ARMv7l manylinux image (#2052)
256-
- ✨ Show a warning when cibuildwheel is run from Python 3.10 or older; cibuildwheel 3.0 will require Python 3.11 or newer as host (#2050)
257-
- 🐛 Fix issue with stderr interfering with checking the docker version (#2074)
258-
- 🛠 Python 3.9 is now used in `CIBW_BEFORE_ALL`/`before-all` on linux, replacing 3.8, which is now EoL (#2043)
259-
- 🛠 Error messages for producing a pure-Python wheel are slightly more informative (#2044)
260-
- 🛠 Better error when `uname -m` fails on ARM (#2049)
261-
- 🛠 Better error when repair fails and docs for abi3audit on Windows (#2058)
262-
- 🛠 Better error when `manylinux-interpreters ensure` fails (#2066)
263-
- 🛠 Update Pyodide to 0.26.4, and adapt to the unbundled pyodide-build (now 0.29) (#2090)
264-
- 🛠 Now cibuildwheel uses dependency-groups for development dependencies (#2064, #2085)
265-
- 📚 Docs updates and tidy ups (#2061, #2067, #2072)
266-
267264
<!-- END bin/update_readme_changelog.py -->
268265

269266
---

bin/bump_version.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@
2222
("cibuildwheel/__init__.py", '__version__ = "{}"'),
2323
("docs/faq.md", "cibuildwheel=={}"),
2424
("docs/faq.md", "cibuildwheel@v{}"),
25-
("docs/setup.md", "cibuildwheel=={}"),
26-
("docs/ci-services.md", "cibuildwheel=={}"),
2725
("examples/*", "cibuildwheel=={}"),
2826
("examples/*", "cibuildwheel@v{}"),
2927
]

bin/generate_schema.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
- cpython-freethreading
3737
- cpython-prerelease
3838
- pypy
39+
- pypy-eol
3940
- cpython-experimental-riscv64
4041
description: A Python version or flavor to enable.
4142
additionalProperties: false

cibuildwheel/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = "2.23.3"
1+
__version__ = "3.0.0b1"

cibuildwheel/platforms/ios.py

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
download,
3333
move_file,
3434
)
35-
from ..util.helpers import prepare_command
35+
from ..util.helpers import prepare_command, unwrap_preserving_paragraphs
3636
from ..util.packaging import (
3737
combine_constraints,
3838
find_compatible_wheel,
@@ -593,14 +593,51 @@ def build(options: Options, tmp_path: Path) -> None:
593593
)
594594

595595
log.step("Running test suite...")
596+
597+
test_command_parts = shlex.split(build_options.test_command)
598+
if test_command_parts[0:2] != ["python", "-m"]:
599+
first_part = test_command_parts[0]
600+
if first_part == "pytest":
601+
# pytest works exactly the same as a module, so we
602+
# can just run it as a module.
603+
log.warning(
604+
unwrap_preserving_paragraphs(f"""
605+
iOS tests configured with a test command which doesn't start
606+
with 'python -m'. iOS tests must execute python modules - other
607+
entrypoints are not supported.
608+
609+
cibuildwheel will try to execute it as if it started with
610+
'python -m'. If this works, all you need to do is add that to
611+
your test command.
612+
613+
Test command: {build_options.test_command!r}
614+
""")
615+
)
616+
else:
617+
msg = unwrap_preserving_paragraphs(
618+
f"""
619+
iOS tests configured with a test command which doesn't start
620+
with 'python -m'. iOS tests must execute python modules - other
621+
entrypoints are not supported.
622+
623+
Test command: {build_options.test_command!r}
624+
"""
625+
)
626+
raise errors.FatalError(msg)
627+
else:
628+
# the testbed run command actually doesn't want the
629+
# python -m prefix - it's implicit, so we remove it
630+
# here.
631+
test_command_parts = test_command_parts[2:]
632+
596633
try:
597634
call(
598635
"python",
599636
testbed_path,
600637
"run",
601638
*(["--verbose"] if build_options.build_verbosity > 0 else []),
602639
"--",
603-
*(shlex.split(build_options.test_command)),
640+
*test_command_parts,
604641
env=build_env,
605642
)
606643
failed = False

cibuildwheel/resources/cibuildwheel.schema.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
"cpython-freethreading",
1717
"cpython-prerelease",
1818
"pypy",
19+
"pypy-eol",
1920
"cpython-experimental-riscv64"
2021
]
2122
},

cibuildwheel/resources/constraints-pyodide312.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ shellingham==1.5.4
8989
# via typer
9090
sniffio==1.3.1
9191
# via anyio
92-
typer==0.15.3
92+
typer==0.15.4
9393
# via
9494
# auditwheel-emscripten
9595
# pyodide-build

cibuildwheel/resources/nodejs.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
url = "https://nodejs.org/dist/"
2-
v22 = "v22.15.0"
3-
v20 = "v20.19.1"
2+
v22 = "v22.15.1"
3+
v20 = "v20.19.2"
Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,47 @@
11
[x86_64]
2-
manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2025.05.10-2
3-
manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2025.05.10-2
4-
manylinux_2_34 = quay.io/pypa/manylinux_2_34_x86_64:2025.05.10-2
5-
musllinux_1_2 = quay.io/pypa/musllinux_1_2_x86_64:2025.05.10-2
2+
manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2025.05.16-1
3+
manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2025.05.16-1
4+
manylinux_2_34 = quay.io/pypa/manylinux_2_34_x86_64:2025.05.16-1
5+
musllinux_1_2 = quay.io/pypa/musllinux_1_2_x86_64:2025.05.16-1
66

77
[i686]
8-
manylinux2014 = quay.io/pypa/manylinux2014_i686:2025.05.10-2
9-
musllinux_1_2 = quay.io/pypa/musllinux_1_2_i686:2025.05.10-2
8+
manylinux2014 = quay.io/pypa/manylinux2014_i686:2025.05.16-1
9+
musllinux_1_2 = quay.io/pypa/musllinux_1_2_i686:2025.05.16-1
1010

1111
[aarch64]
12-
manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2025.05.10-2
13-
manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2025.05.10-2
14-
manylinux_2_34 = quay.io/pypa/manylinux_2_34_aarch64:2025.05.10-2
15-
musllinux_1_2 = quay.io/pypa/musllinux_1_2_aarch64:2025.05.10-2
12+
manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2025.05.16-1
13+
manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2025.05.16-1
14+
manylinux_2_34 = quay.io/pypa/manylinux_2_34_aarch64:2025.05.16-1
15+
musllinux_1_2 = quay.io/pypa/musllinux_1_2_aarch64:2025.05.16-1
1616

1717
[ppc64le]
18-
manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2025.05.10-2
19-
manylinux_2_28 = quay.io/pypa/manylinux_2_28_ppc64le:2025.05.10-2
20-
manylinux_2_34 = quay.io/pypa/manylinux_2_34_ppc64le:2025.05.10-2
21-
musllinux_1_2 = quay.io/pypa/musllinux_1_2_ppc64le:2025.05.10-2
18+
manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2025.05.16-1
19+
manylinux_2_28 = quay.io/pypa/manylinux_2_28_ppc64le:2025.05.16-1
20+
manylinux_2_34 = quay.io/pypa/manylinux_2_34_ppc64le:2025.05.16-1
21+
musllinux_1_2 = quay.io/pypa/musllinux_1_2_ppc64le:2025.05.16-1
2222

2323
[s390x]
24-
manylinux2014 = quay.io/pypa/manylinux2014_s390x:2025.05.10-2
25-
manylinux_2_28 = quay.io/pypa/manylinux_2_28_s390x:2025.05.10-2
26-
manylinux_2_34 = quay.io/pypa/manylinux_2_34_s390x:2025.05.10-2
27-
musllinux_1_2 = quay.io/pypa/musllinux_1_2_s390x:2025.05.10-2
24+
manylinux2014 = quay.io/pypa/manylinux2014_s390x:2025.05.16-1
25+
manylinux_2_28 = quay.io/pypa/manylinux_2_28_s390x:2025.05.16-1
26+
manylinux_2_34 = quay.io/pypa/manylinux_2_34_s390x:2025.05.16-1
27+
musllinux_1_2 = quay.io/pypa/musllinux_1_2_s390x:2025.05.16-1
2828

2929
[pypy_x86_64]
30-
manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2025.05.10-2
31-
manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2025.05.10-2
32-
manylinux_2_34 = quay.io/pypa/manylinux_2_34_x86_64:2025.05.10-2
30+
manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2025.05.16-1
31+
manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2025.05.16-1
32+
manylinux_2_34 = quay.io/pypa/manylinux_2_34_x86_64:2025.05.16-1
3333

3434
[pypy_i686]
35-
manylinux2014 = quay.io/pypa/manylinux2014_i686:2025.05.10-2
35+
manylinux2014 = quay.io/pypa/manylinux2014_i686:2025.05.16-1
3636

3737
[pypy_aarch64]
38-
manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2025.05.10-2
39-
manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2025.05.10-2
40-
manylinux_2_34 = quay.io/pypa/manylinux_2_34_aarch64:2025.05.10-2
38+
manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2025.05.16-1
39+
manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2025.05.16-1
40+
manylinux_2_34 = quay.io/pypa/manylinux_2_34_aarch64:2025.05.16-1
4141

4242
[armv7l]
43-
manylinux_2_31 = quay.io/pypa/manylinux_2_31_armv7l:2025.05.10-2
44-
musllinux_1_2 = quay.io/pypa/musllinux_1_2_armv7l:2025.05.10-2
43+
manylinux_2_31 = quay.io/pypa/manylinux_2_31_armv7l:2025.05.16-1
44+
musllinux_1_2 = quay.io/pypa/musllinux_1_2_armv7l:2025.05.16-1
4545

4646
[riscv64]
4747

cibuildwheel/selector.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ class EnableGroup(StrEnum):
3232
CPythonFreeThreading = "cpython-freethreading"
3333
CPythonPrerelease = "cpython-prerelease"
3434
PyPy = "pypy"
35+
PyPyEoL = "pypy-eol"
3536
CPythonExperimentalRiscV64 = "cpython-experimental-riscv64"
3637
GraalPy = "graalpy"
3738

@@ -87,7 +88,9 @@ def __call__(self, build_id: str) -> bool:
8788
return False
8889
if EnableGroup.CPythonPrerelease not in self.enable and fnmatch(build_id, "cp314*"):
8990
return False
90-
if EnableGroup.PyPy not in self.enable and fnmatch(build_id, "pp*"):
91+
if EnableGroup.PyPy not in self.enable and fnmatch(build_id, "pp31*"):
92+
return False
93+
if EnableGroup.PyPyEoL not in self.enable and fnmatch(build_id, "pp3?-*"):
9194
return False
9295
if EnableGroup.CPythonExperimentalRiscV64 not in self.enable and fnmatch(
9396
build_id, "*_riscv64"

cibuildwheel/util/helpers.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,21 @@ def unwrap(text: str) -> str:
7676
return re.sub(r"\s+", " ", text)
7777

7878

79+
def unwrap_preserving_paragraphs(text: str) -> str:
80+
"""
81+
Unwraps multi-line text to a single line, but preserves paragraphs
82+
"""
83+
# remove initial line indent
84+
text = textwrap.dedent(text)
85+
# remove leading/trailing whitespace
86+
text = text.strip()
87+
88+
paragraphs = text.split("\n\n")
89+
# remove consecutive whitespace
90+
paragraphs = [re.sub(r"\s+", " ", paragraph) for paragraph in paragraphs]
91+
return "\n\n".join(paragraphs)
92+
93+
7994
def parse_key_value_string(
8095
key_value_string: str,
8196
positional_arg_names: Sequence[str] | None = None,

docs/changelog.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,29 @@ title: Changelog
44

55
# Changelog
66

7+
### v3.0.0
8+
9+
Not yet released, but available for testing.
10+
11+
Note - when using a beta version, be sure to check the [latest docs](https://cibuildwheel.pypa.io/en/latest/), rather than the stable version, which is still on v2.X.
12+
13+
#### v3.0.0b1
14+
15+
_19 May 2025_
16+
17+
- 🌟 Adds the ability to [build wheels for iOS](https://cibuildwheel.pypa.io/en/latest/platforms/#ios)! Set the [`platform` option](https://cibuildwheel.pypa.io/en/latest/options/#platform) to `ios` on a Mac with the iOS toolchain to try it out!
18+
- 🌟 Adds support for the GraalPy interpreter! Enable for your project using the [`enable` option](https://cibuildwheel.pypa.io/en/latest/options/#enable). (#1538)
19+
- ✨ Adds CPython 3.14 support, under the [`enable` option](https://cibuildwheel.pypa.io/en/latest/options/#enable) `cpython-prerelease`. This version of cibuildwheel uses 3.14.0b1.
20+
21+
_While CPython is in beta, the ABI can change, so your wheels might not be compatible with the final release. For this reason, we don't recommend distributing wheels until RC1, at which point 3.14 will be available in cibuildwheel without the flag._ (#2390)
22+
- ✨ Adds the [test-sources option](https://cibuildwheel.pypa.io/en/latest/options/#test-sources). \[discussion about the test cwd change and how to use to come!\]
23+
- ✨ Added `dependency-versions` inline syntax (#2123)
24+
- 🛠 EOL manylinux options can no longer be specified by their shortname. Full OCI URL can still be used for these images, if you wish (#2316)
25+
- 🛠 Build environments no longer have setuptools and wheel preinstalled. (#2329)
26+
- ⚠️ PyPy wheels no longer built by default, due to a change to our options system. To continue building PyPy wheels, you'll now need to set the [`enable` option](https://cibuildwheel.pypa.io/en/latest/options/#enable) to `pypy` or `pypy-eol`.
27+
- ⚠️ Dropped official support for Appveyor. If it was working for you before, it will probably continue to do so, but we can't be sure, because our CI doesn't run there anymore. (#2386)
28+
- 📚 A reorganisation of the docs, and numerous updates (#2280)
29+
730
### v2.23.3
831

932
_26 April 2025_
@@ -16,6 +39,7 @@ _24 March 2025_
1639

1740
- 🐛 Workaround an issue with pyodide builds when running cibuildwheel with a Python that was installed via UV (#2328 via #2331)
1841
- 🛠 Dependency updates, including a manylinux update that fixes an ['undefined symbol' error](https://github.com/pypa/manylinux/issues/1760) in gcc-toolset (#2334)
42+
-
1943

2044
### v2.23.1
2145

docs/contributing.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,11 +78,11 @@ nox -s tests -- test -k before_build
7878

7979
A few notes-
8080

81-
- Because they run inside a container, Linux tests can run on all platforms where Docker is installed, so they're convenient for running integration tests locally. Set CIBW_PLATFORM to do this: `CIBW_PLATFORM=linux nox -s tests -- test`.
81+
- Because they run inside a container, Linux tests can run on all platforms where Docker is installed, so they're convenient for running integration tests locally. Set the `--platform` flag on pytest to do this: `nox -s tests -- test --platform linux`.
8282

8383
- Running the macOS integration tests requires _system installs_ of Python from python.org for all the versions that are tested. We won't attempt to install these when running locally, but you can do so manually using the URL in the error message that is printed when the install is not found.
8484

85-
- The 'enable groups' run by default are just 'cpython-prerelease' and 'cpython-freethreading'. You can add other groups like pypy or graalpy by setting the [CIBW_ENABLE](options.md#enable) environment variable. On GitHub PRs, you can add a label to the PR to enable these groups.
85+
- The ['enable groups'](options.md#enable) run by default are just 'cpython-prerelease' and 'cpython-freethreading'. You can add other groups like pypy or graalpy by passing the `--enable` argument to pytest, i.e. `nox -s tests -- test --enable pypy`. On GitHub PRs, you can add a label to the PR to enable these groups.
8686

8787
#### Running pytest directly
8888

0 commit comments

Comments
 (0)