feat: add CPython 3.10 pre-release support (#675)

* Add CPython 3.10 support

* Fix logger displaying CPython 3.1 instead of 3.10

* Fix tests failing with CPython 3.10

* Use pytest instead of nose

* feat: --pre flag

Apply suggestions from code review

Co-authored-by: Matthieu Darbois <mayeut@users.noreply.github.com>

* fix: update Python update script to process beta versions

* refactor: prerelease-pythons

* Use `strtobool` to parse `CIBW_PRERELEASE_PYTHONS` env var

* Update python version filtering for universal2 & arm64

* Filter out CPython 3.10 and above for `test_manylinuxXXXX_only[manylinux1]` test

* Use CIBW_BUILD filtering rather than CIBW_SKIP for test_docker_images

* Use skip_patterns to filter out pre-releases

* Use `prerelease_pythons` instead of `pre`

* Reword `CIBW_PRERELEASE_PYTHONS` doc per review.

* Use `CIBW_PRERELEASE_PYTHONS: True` for usage example.

* Update `cibuildwheel --help` doc

* docs: add note on spec.filter

* Clean up the BuildSelector __repr__ by refactoring

* fix: remove platform variants for CIBW_PRERELEASE_PYTHONS

* docs: mention the flag

Co-authored-by: Henry Schreiner <henryschreineriii@gmail.com>
Co-authored-by: Joe Rickerby <joerick@mac.com>
This commit is contained in:
Matthieu Darbois
2021-05-28 18:26:55 -04:00
committed by GitHub
co-authored by Henry Schreiner Joe Rickerby
parent f294cab7aa
commit 5b22fc636b
17 changed files with 166 additions and 53 deletions
+30 -2
View File
@@ -299,6 +299,32 @@ the package is compatible with all versions of Python that it can build.
CIBW_PROJECT_REQUIRES_PYTHON: ">=3.6"
```
### `CIBW_PRERELEASE_PYTHONS` {: #prerelease-pythons}
> Enable building with pre-release versions of Python
During the beta period, when new versions of Python are being tested,
cibuildwheel will often gain early support for beta releases. If you would
like to test wheel building with these versions, you can enable this flag.
!!! caution
This option is provided for testing purposes only. It is not
recommended to distribute wheels built when `CIBW_PRERELEASE_PYTHONS` is
set, such as uploading to PyPI. Please _do not_ upload these wheels to
PyPI, as they are not guaranteed to work with the final Python release.
Once Python is ABI stable and enters the release candidate phase, that
version of Python will become available without this flag.
Default: Off (0) if Python is available in beta phase. No effect otherwise.
This option can also be set using the [command-line option](#command-line) `--prerelease-pythons`.
#### Examples
```yaml
# Include latest Python beta
CIBW_PRERELEASE_PYTHONS: True
```
## Build customization
### `CIBW_ENVIRONMENT` {: #environment}
@@ -715,6 +741,7 @@ CIBW_BUILD_VERBOSITY: 1
usage: cibuildwheel [-h] [--platform {auto,linux,macos,windows}]
[--archs ARCHS] [--output-dir OUTPUT_DIR]
[--print-build-identifiers] [--allow-empty]
[--prerelease-pythons]
[package_dir]
Build wheels for all the platforms.
@@ -741,8 +768,8 @@ optional arguments:
natively supported on this machine. Set this option to
build an architecture via emulation, for example,
using binfmt_misc and QEMU. Default: auto. Choices:
auto, native, all, x86_64, i686, aarch64, ppc64le,
s390x, x86, AMD64
auto, auto64, auto32, native, all, x86_64, i686,
aarch64, ppc64le, s390x, universal2, arm64, x86, AMD64
--output-dir OUTPUT_DIR
Destination folder for the wheels.
--print-build-identifiers
@@ -750,6 +777,7 @@ optional arguments:
invocation and exit.
--allow-empty Do not report an error code if the build does not
match any wheels.
--prerelease-pythons Enable pre-release Python versions if available.
```
<style>