Compare commits

..
18 Commits
Author SHA1 Message Date
Joe Rickerby 4bbbee7949 Bump version: v2.6.0 2022-05-25 18:43:56 +01:00
Joe Rickerby d73f1ea2a4 Merge pull request #1109 from mayeut/python-3.11
feature: add CPython 3.11 support
2022-05-25 18:33:47 +01:00
Joe Rickerby a08a952b4b Merge pull request #1100 from pypa/docs-diagram
Add interactive diagram to the docs
2022-05-25 09:04:56 +01:00
pre-commit-ci[bot]andpre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> 29f102bdfe [pre-commit.ci] pre-commit autoupdate (#1116)
updates:
- [github.com/hadialqattan/pycln: v1.3.2 → v1.3.3](https://github.com/hadialqattan/pycln/compare/v1.3.2...v1.3.3)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2022-05-24 12:13:13 -04:00
mayeut 2edd5270c3 mark CPython 3.11 as pre-release 2022-05-23 20:47:08 +02:00
mayeut b8abcb128c feature: add CPython 3.11 support 2022-05-23 20:47:08 +02:00
cibuildwheel-bot[bot]andcibuildwheel-bot[bot] <83877280+cibuildwheel-bot[bot]@users.noreply.github.com> 79bfea0817 [Bot] Update dependencies (#1115)
Update dependencies

Co-authored-by: cibuildwheel-bot[bot] <83877280+cibuildwheel-bot[bot]@users.noreply.github.com>
2022-05-23 20:44:09 +02:00
cibuildwheel-bot[bot]andcibuildwheel-bot[bot] <83877280+cibuildwheel-bot[bot]@users.noreply.github.com> 0b1b47d7ec Update dependencies (#1111)
Co-authored-by: cibuildwheel-bot[bot] <83877280+cibuildwheel-bot[bot]@users.noreply.github.com>
2022-05-16 17:48:27 -04:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> a2a54b9833 chore(deps): bump excitedleigh/setup-nox from 2.0.0 to 2.1.0 (#1110)
Bumps [excitedleigh/setup-nox](https://github.com/excitedleigh/setup-nox) from 2.0.0 to 2.1.0.
- [Release notes](https://github.com/excitedleigh/setup-nox/releases)
- [Commits](https://github.com/excitedleigh/setup-nox/compare/v2.0.0...v2.1.0)

---
updated-dependencies:
- dependency-name: excitedleigh/setup-nox
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-05-16 18:26:58 +02:00
dependabot[bot] e33c037e6a chore(deps): bump docker/setup-qemu-action from 1 to 2 (#1106) 2022-05-10 07:51:24 +02:00
pre-commit-ci[bot] 7437ecf59d [pre-commit.ci] pre-commit autoupdate (#1107) 2022-05-10 07:51:05 +02:00
Joe Rickerby dcb5be78d0 Add noscript fallback 2022-05-09 14:24:03 +01:00
Joe Rickerby a37367fb86 Improve the touch support (tap the tooltip to follow link) 2022-05-09 13:31:47 +01:00
Matthieu Darbois 2d1ad70d06 chore: use bot email for dependency update Pull Requests (#1105) 2022-05-09 08:27:30 +02:00
pre-commit-ci[bot]andpre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> 99d6c378db [pre-commit.ci] pre-commit autoupdate (#1102)
updates:
- [github.com/hadialqattan/pycln: v1.3.1 → v1.3.2](https://github.com/hadialqattan/pycln/compare/v1.3.1...v1.3.2)
- [github.com/pre-commit/mirrors-mypy: v0.942 → v0.950](https://github.com/pre-commit/mirrors-mypy/compare/v0.942...v0.950)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2022-05-07 20:42:17 -04:00
Joe Rickerby 960b069eb9 Add mobile/touch support (where hover doesn't exist) 2022-05-02 11:11:02 +01:00
Joe Rickerby 6d9a16376e Add interactive diagram to the docs 2022-04-30 17:14:21 +01:00
Joe Rickerby 1f1c8008d8 Changelog tweak 2022-04-29 14:54:25 +01:00
42 changed files with 820 additions and 243 deletions
+1 -1
View File
@@ -84,7 +84,7 @@ jobs:
- name: Set up QEMU
id: qemu
uses: docker/setup-qemu-action@v1
uses: docker/setup-qemu-action@v2
with:
platforms: all
+6 -1
View File
@@ -12,7 +12,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: excitedleigh/setup-nox@v2.0.0
- uses: actions/setup-python@v3
with:
python-version: "3.11-dev"
- uses: excitedleigh/setup-nox@v2.1.0
- name: "Run update: dependencies"
run: nox --force-color -s update_constraints
@@ -41,5 +44,7 @@ jobs:
PR generated by "Update dependencies" [workflow](https://github.com/${{github.repository}}/actions/runs/${{github.run_id}}).
branch: update-dependencies-pr
committer: "cibuildwheel-bot[bot] <83877280+cibuildwheel-bot[bot]@users.noreply.github.com>"
author: "cibuildwheel-bot[bot] <83877280+cibuildwheel-bot[bot]@users.noreply.github.com>"
token: ${{ steps.generate-token.outputs.token }}
delete-branch: true
+3 -3
View File
@@ -14,7 +14,7 @@ repos:
- id: trailing-whitespace
- repo: https://github.com/asottile/pyupgrade
rev: v2.32.0
rev: v2.32.1
hooks:
- id: pyupgrade
name: PyUpgrade 3.6+
@@ -27,7 +27,7 @@ repos:
# Autoremoves unused imports
- repo: https://github.com/hadialqattan/pycln
rev: v1.3.1
rev: v1.3.3
hooks:
- id: pycln
args: [--all]
@@ -49,7 +49,7 @@ repos:
- id: setup-cfg-fmt
- repo: https://github.com/pre-commit/mirrors-mypy
rev: v0.942
rev: v0.950
hooks:
- id: mypy
name: mypy 3.6 on cibuildwheel/
+22 -10
View File
@@ -29,6 +29,7 @@ What does it do?
| CPython 3.8 | ✅ | ✅ | ✅ | ✅ | N/A | ✅ | ✅ | ✅ | ✅ | ✅ |
| CPython 3.9 | ✅ | ✅ | ✅ | ✅ | ✅² | ✅³ | ✅ | ✅ | ✅ | ✅ |
| CPython 3.10 | ✅ | ✅ | ✅ | ✅ | ✅² | ✅ | ✅ | ✅ | ✅ | ✅ |
| CPython 3.11⁴ | ✅ | ✅ | ✅ | ✅ | ✅² | ✅ | ✅ | ✅ | ✅ | ✅ |
| PyPy 3.7 v7.3 | ✅ | N/A | ✅ | N/A | N/A | ✅¹ | ✅¹ | ✅¹ | N/A | N/A |
| PyPy 3.8 v7.3 | ✅ | N/A | ✅ | N/A | N/A | ✅¹ | ✅¹ | ✅¹ | N/A | N/A |
| PyPy 3.9 v7.3 | ✅ | N/A | ✅ | N/A | N/A | ✅¹ | ✅¹ | ✅¹ | N/A | N/A |
@@ -36,6 +37,7 @@ What does it do?
<sup>¹ PyPy is only supported for manylinux wheels.</sup><br>
<sup>² Windows arm64 support is experimental.</sup><br>
<sup>³ Alpine 3.14 and very briefly 3.15's default python3 [was not able to load](https://github.com/pypa/cibuildwheel/issues/934) musllinux wheels. This has been fixed; please upgrade the python package if using Alpine from before the fix.</sup><br>
<sup>⁴ CPython 3.11 is available using the [CIBW_PRERELEASE_PYTHONS](https://cibuildwheel.readthedocs.io/en/stable/options/#prerelease-pythons) option.</sup><br>
- Builds manylinux, musllinux, macOS 10.9+, and Windows wheels for CPython and PyPy
- Works on GitHub Actions, Azure Pipelines, Travis CI, AppVeyor, CircleCI, and GitLab CI
@@ -87,7 +89,7 @@ jobs:
- uses: actions/setup-python@v2
- name: Install cibuildwheel
run: python -m pip install cibuildwheel==2.5.0
run: python -m pip install cibuildwheel==2.6.0
- name: Build wheels
run: python -m cibuildwheel --output-dir wheelhouse
@@ -102,6 +104,15 @@ jobs:
For more information, including PyPI deployment, and the use of other CI services or the dedicated GitHub Action, check out the [documentation](https://cibuildwheel.readthedocs.org) and the [examples](https://github.com/pypa/cibuildwheel/tree/main/examples).
How it works
------------
The following diagram summarises the steps that cibuildwheel takes on each platform.
![](docs/data/how-it-works.png)
<sup>Explore an interactive version of this diagram [in the docs](https://cibuildwheel.readthedocs.io/en/stable/#how-it-works).</sup>
Options
-------
@@ -117,7 +128,7 @@ Options
| | [`CIBW_ENVIRONMENT_PASS_LINUX`](https://cibuildwheel.readthedocs.io/en/stable/options/#environment-pass) | Set environment variables on the host to pass-through to the container during the build. |
| | [`CIBW_BEFORE_ALL`](https://cibuildwheel.readthedocs.io/en/stable/options/#before-all) | Execute a shell command on the build system before any wheels are built. |
| | [`CIBW_BEFORE_BUILD`](https://cibuildwheel.readthedocs.io/en/stable/options/#before-build) | Execute a shell command preparing each wheel's build |
| | [`CIBW_REPAIR_WHEEL_COMMAND`](https://cibuildwheel.readthedocs.io/en/stable/options/#repair-wheel-command) | Execute a shell command to repair each (non-pure Python) built wheel |
| | [`CIBW_REPAIR_WHEEL_COMMAND`](https://cibuildwheel.readthedocs.io/en/stable/options/#repair-wheel-command) | Execute a shell command to repair each built wheel |
| | [`CIBW_MANYLINUX_*_IMAGE`<br/>`CIBW_MUSLLINUX_*_IMAGE`](https://cibuildwheel.readthedocs.io/en/stable/options/#linux-image) | Specify alternative manylinux / musllinux Docker images |
| | [`CIBW_DEPENDENCY_VERSIONS`](https://cibuildwheel.readthedocs.io/en/stable/options/#dependency-versions) | Specify how cibuildwheel controls the versions of the tools it uses |
| **Testing** | [`CIBW_TEST_COMMAND`](https://cibuildwheel.readthedocs.io/en/stable/options/#test-command) | Execute a shell command to test each built wheel |
@@ -192,12 +203,19 @@ Changelog
<!-- this section was generated by bin/update_readme_changelog.py -- do not edit manually -->
### v2.6.0
_25 May 2022_
- 🌟 Added the ability to test building wheels on CPython 3.11! Because CPython 3.11 is in beta, these wheels should not be distributed, because they might not be compatible with the final release, but it's available to build for testing purposes. Use the flag [`--prerelease-pythons` or `CIBW_PRERELEASE_PYTHONS`](https://cibuildwheel.readthedocs.io/en/stable/options/#prerelease-pythons) to test. This version of cibuildwheel includes CPython 3.11.0b1. (#1109)
- 📚 Added an interactive diagram showing how cibuildwheel works to the [docs](https://cibuildwheel.readthedocs.io/en/stable/#how-it-works) (#1100)
### v2.5.0
_29 April 2022_
- ✨ Added support for building ABI3 wheels. cibuildwheel will now recognise when an ABI3 wheel was produced, and skip subsequent build steps where the previously built wheel is compatible. Tests still will run on all selected versions of Python, using the ABI3 wheel. (#1091)
- ✨ You can now build wheels directly from sdist archives, in addition to source directories. Just call cibuildwheel with an sdist argument on the command line, like `cibuildwheel mypackage-1.0.0.tar.gz` (#1096)
- ✨ Added support for building ABI3 wheels. cibuildwheel will now recognise when an ABI3 wheel was produced, and skip subsequent build steps where the previously built wheel is compatible. Tests still will run on all selected versions of Python, using the ABI3 wheel. Check [this entry](https://cibuildwheel.readthedocs.io/en/stable/faq/#abi3) in the docs for more info. (#1091)
- ✨ You can now build wheels directly from sdist archives, in addition to source directories. Just call cibuildwheel with an sdist argument on the command line, like `cibuildwheel mypackage-1.0.0.tar.gz`. For more details, check the [`--help` output](https://cibuildwheel.readthedocs.io/en/stable/options/#command-line) (#1096)
- 🐛 Fix a bug where cibuildwheel would crash when no builds are selected and `--allow-empty` is passed (#1086)
- 🐛 Workaround a permissions issue on Linux relating to newer versions of git and setuptools_scm (#1095)
- 📚 Minor docs improvements
@@ -235,12 +253,6 @@ _26 November 2021_
- 🛠 Pip updated to 21.3, meaning it now defaults to in-tree builds again. If this causes an issue with your project, setting environment variable `PIP_USE_DEPRECATED=out-of-tree-build` is available as a temporary flag to restore the old behaviour. However, be aware that this flag will probably be removed soon. (#881)
- 🐛 You can now access the current Python interpreter using `python3` within a build on Windows (#917)
### v2.2.2
_26 October 2021_
- 🐛 Fix bug in the GitHub Action step causing a syntax error (#895)
<!-- END bin/update_readme_changelog.py -->
---
+1 -1
View File
@@ -1 +1 @@
__version__ = "2.5.0"
__version__ = "2.6.0"
+21 -5
View File
@@ -5,11 +5,13 @@ python_configurations = [
{ identifier = "cp38-manylinux_x86_64", version = "3.8", path_str = "/opt/python/cp38-cp38" },
{ identifier = "cp39-manylinux_x86_64", version = "3.9", path_str = "/opt/python/cp39-cp39" },
{ identifier = "cp310-manylinux_x86_64", version = "3.10", path_str = "/opt/python/cp310-cp310" },
{ identifier = "cp311-manylinux_x86_64", version = "3.11", path_str = "/opt/python/cp311-cp311" },
{ identifier = "cp36-manylinux_i686", version = "3.6", path_str = "/opt/python/cp36-cp36m" },
{ identifier = "cp37-manylinux_i686", version = "3.7", path_str = "/opt/python/cp37-cp37m" },
{ identifier = "cp38-manylinux_i686", version = "3.8", path_str = "/opt/python/cp38-cp38" },
{ identifier = "cp39-manylinux_i686", version = "3.9", path_str = "/opt/python/cp39-cp39" },
{ identifier = "cp310-manylinux_i686", version = "3.10", path_str = "/opt/python/cp310-cp310" },
{ identifier = "cp311-manylinux_i686", version = "3.11", path_str = "/opt/python/cp311-cp311" },
{ identifier = "pp37-manylinux_x86_64", version = "3.7", path_str = "/opt/python/pp37-pypy37_pp73" },
{ identifier = "pp38-manylinux_x86_64", version = "3.8", path_str = "/opt/python/pp38-pypy38_pp73" },
{ identifier = "pp39-manylinux_x86_64", version = "3.9", path_str = "/opt/python/pp39-pypy39_pp73" },
@@ -18,16 +20,19 @@ python_configurations = [
{ identifier = "cp38-manylinux_aarch64", version = "3.8", path_str = "/opt/python/cp38-cp38" },
{ identifier = "cp39-manylinux_aarch64", version = "3.9", path_str = "/opt/python/cp39-cp39" },
{ identifier = "cp310-manylinux_aarch64", version = "3.10", path_str = "/opt/python/cp310-cp310" },
{ identifier = "cp311-manylinux_aarch64", version = "3.11", path_str = "/opt/python/cp311-cp311" },
{ identifier = "cp36-manylinux_ppc64le", version = "3.6", path_str = "/opt/python/cp36-cp36m" },
{ identifier = "cp37-manylinux_ppc64le", version = "3.7", path_str = "/opt/python/cp37-cp37m" },
{ identifier = "cp38-manylinux_ppc64le", version = "3.8", path_str = "/opt/python/cp38-cp38" },
{ identifier = "cp39-manylinux_ppc64le", version = "3.9", path_str = "/opt/python/cp39-cp39" },
{ identifier = "cp310-manylinux_ppc64le", version = "3.10", path_str = "/opt/python/cp310-cp310" },
{ identifier = "cp311-manylinux_ppc64le", version = "3.11", path_str = "/opt/python/cp311-cp311" },
{ identifier = "cp36-manylinux_s390x", version = "3.6", path_str = "/opt/python/cp36-cp36m" },
{ identifier = "cp37-manylinux_s390x", version = "3.7", path_str = "/opt/python/cp37-cp37m" },
{ identifier = "cp38-manylinux_s390x", version = "3.8", path_str = "/opt/python/cp38-cp38" },
{ identifier = "cp39-manylinux_s390x", version = "3.9", path_str = "/opt/python/cp39-cp39" },
{ identifier = "cp310-manylinux_s390x", version = "3.10", path_str = "/opt/python/cp310-cp310" },
{ identifier = "cp311-manylinux_s390x", version = "3.11", path_str = "/opt/python/cp311-cp311" },
{ identifier = "pp37-manylinux_aarch64", version = "3.7", path_str = "/opt/python/pp37-pypy37_pp73" },
{ identifier = "pp38-manylinux_aarch64", version = "3.8", path_str = "/opt/python/pp38-pypy38_pp73" },
{ identifier = "pp39-manylinux_aarch64", version = "3.9", path_str = "/opt/python/pp39-pypy39_pp73" },
@@ -39,26 +44,31 @@ python_configurations = [
{ identifier = "cp38-musllinux_x86_64", version = "3.8", path_str = "/opt/python/cp38-cp38" },
{ identifier = "cp39-musllinux_x86_64", version = "3.9", path_str = "/opt/python/cp39-cp39" },
{ identifier = "cp310-musllinux_x86_64", version = "3.10", path_str = "/opt/python/cp310-cp310" },
{ identifier = "cp311-musllinux_x86_64", version = "3.11", path_str = "/opt/python/cp311-cp311" },
{ identifier = "cp36-musllinux_i686", version = "3.6", path_str = "/opt/python/cp36-cp36m" },
{ identifier = "cp37-musllinux_i686", version = "3.7", path_str = "/opt/python/cp37-cp37m" },
{ identifier = "cp38-musllinux_i686", version = "3.8", path_str = "/opt/python/cp38-cp38" },
{ identifier = "cp39-musllinux_i686", version = "3.9", path_str = "/opt/python/cp39-cp39" },
{ identifier = "cp310-musllinux_i686", version = "3.10", path_str = "/opt/python/cp310-cp310" },
{ identifier = "cp311-musllinux_i686", version = "3.11", path_str = "/opt/python/cp311-cp311" },
{ identifier = "cp36-musllinux_aarch64", version = "3.6", path_str = "/opt/python/cp36-cp36m" },
{ identifier = "cp37-musllinux_aarch64", version = "3.7", path_str = "/opt/python/cp37-cp37m" },
{ identifier = "cp38-musllinux_aarch64", version = "3.8", path_str = "/opt/python/cp38-cp38" },
{ identifier = "cp39-musllinux_aarch64", version = "3.9", path_str = "/opt/python/cp39-cp39" },
{ identifier = "cp310-musllinux_aarch64", version = "3.10", path_str = "/opt/python/cp310-cp310" },
{ identifier = "cp311-musllinux_aarch64", version = "3.11", path_str = "/opt/python/cp311-cp311" },
{ identifier = "cp36-musllinux_ppc64le", version = "3.6", path_str = "/opt/python/cp36-cp36m" },
{ identifier = "cp37-musllinux_ppc64le", version = "3.7", path_str = "/opt/python/cp37-cp37m" },
{ identifier = "cp38-musllinux_ppc64le", version = "3.8", path_str = "/opt/python/cp38-cp38" },
{ identifier = "cp39-musllinux_ppc64le", version = "3.9", path_str = "/opt/python/cp39-cp39" },
{ identifier = "cp310-musllinux_ppc64le", version = "3.10", path_str = "/opt/python/cp310-cp310" },
{ identifier = "cp311-musllinux_ppc64le", version = "3.11", path_str = "/opt/python/cp311-cp311" },
{ identifier = "cp36-musllinux_s390x", version = "3.6", path_str = "/opt/python/cp36-cp36m" },
{ identifier = "cp37-musllinux_s390x", version = "3.7", path_str = "/opt/python/cp37-cp37m" },
{ identifier = "cp38-musllinux_s390x", version = "3.8", path_str = "/opt/python/cp38-cp38" },
{ identifier = "cp39-musllinux_s390x", version = "3.9", path_str = "/opt/python/cp39-cp39" },
{ identifier = "cp310-musllinux_s390x", version = "3.10", path_str = "/opt/python/cp310-cp310" },
{ identifier = "cp311-musllinux_s390x", version = "3.11", path_str = "/opt/python/cp311-cp311" },
]
[macos]
@@ -68,12 +78,15 @@ python_configurations = [
{ identifier = "cp38-macosx_x86_64", version = "3.8", url = "https://www.python.org/ftp/python/3.8.10/python-3.8.10-macosx10.9.pkg" },
{ identifier = "cp38-macosx_arm64", version = "3.8", url = "https://www.python.org/ftp/python/3.8.10/python-3.8.10-macosx10.9.pkg" },
{ identifier = "cp38-macosx_universal2", version = "3.8", url = "https://www.python.org/ftp/python/3.8.10/python-3.8.10-macosx10.9.pkg" },
{ identifier = "cp39-macosx_x86_64", version = "3.9", url = "https://www.python.org/ftp/python/3.9.12/python-3.9.12-macos11.pkg" },
{ identifier = "cp39-macosx_arm64", version = "3.9", url = "https://www.python.org/ftp/python/3.9.12/python-3.9.12-macos11.pkg" },
{ identifier = "cp39-macosx_universal2", version = "3.9", url = "https://www.python.org/ftp/python/3.9.12/python-3.9.12-macos11.pkg" },
{ identifier = "cp39-macosx_x86_64", version = "3.9", url = "https://www.python.org/ftp/python/3.9.13/python-3.9.13-macos11.pkg" },
{ identifier = "cp39-macosx_arm64", version = "3.9", url = "https://www.python.org/ftp/python/3.9.13/python-3.9.13-macos11.pkg" },
{ identifier = "cp39-macosx_universal2", version = "3.9", url = "https://www.python.org/ftp/python/3.9.13/python-3.9.13-macos11.pkg" },
{ identifier = "cp310-macosx_x86_64", version = "3.10", url = "https://www.python.org/ftp/python/3.10.4/python-3.10.4-macos11.pkg" },
{ identifier = "cp310-macosx_arm64", version = "3.10", url = "https://www.python.org/ftp/python/3.10.4/python-3.10.4-macos11.pkg" },
{ identifier = "cp310-macosx_universal2", version = "3.10", url = "https://www.python.org/ftp/python/3.10.4/python-3.10.4-macos11.pkg" },
{ identifier = "cp311-macosx_x86_64", version = "3.11", url = "https://www.python.org/ftp/python/3.11.0/python-3.11.0b1-macos11.pkg" },
{ identifier = "cp311-macosx_arm64", version = "3.11", url = "https://www.python.org/ftp/python/3.11.0/python-3.11.0b1-macos11.pkg" },
{ identifier = "cp311-macosx_universal2", version = "3.11", url = "https://www.python.org/ftp/python/3.11.0/python-3.11.0b1-macos11.pkg" },
{ identifier = "pp37-macosx_x86_64", version = "3.7", url = "https://downloads.python.org/pypy/pypy3.7-v7.3.9-osx64.tar.bz2" },
{ identifier = "pp38-macosx_x86_64", version = "3.8", url = "https://downloads.python.org/pypy/pypy3.8-v7.3.9-osx64.tar.bz2" },
{ identifier = "pp39-macosx_x86_64", version = "3.9", url = "https://downloads.python.org/pypy/pypy3.9-v7.3.9-osx64.tar.bz2" },
@@ -87,12 +100,15 @@ python_configurations = [
{ identifier = "cp37-win_amd64", version = "3.7.9", arch = "64" },
{ identifier = "cp38-win32", version = "3.8.10", arch = "32" },
{ identifier = "cp38-win_amd64", version = "3.8.10", arch = "64" },
{ identifier = "cp39-win32", version = "3.9.12", arch = "32" },
{ identifier = "cp39-win_amd64", version = "3.9.12", arch = "64" },
{ identifier = "cp39-win32", version = "3.9.13", arch = "32" },
{ identifier = "cp39-win_amd64", version = "3.9.13", arch = "64" },
{ identifier = "cp310-win32", version = "3.10.4", arch = "32" },
{ identifier = "cp310-win_amd64", version = "3.10.4", arch = "64" },
{ identifier = "cp311-win32", version = "3.11.0-b1", arch = "32" },
{ identifier = "cp311-win_amd64", version = "3.11.0-b1", arch = "64" },
{ identifier = "cp39-win_arm64", version = "3.9.10", arch = "ARM64" },
{ identifier = "cp310-win_arm64", version = "3.10.4", arch = "ARM64" },
{ identifier = "cp311-win_arm64", version = "3.11.0-b1", arch = "ARM64" },
{ identifier = "pp37-win_amd64", version = "3.7", arch = "64", url = "https://downloads.python.org/pypy/pypy3.7-v7.3.9-win64.zip" },
{ identifier = "pp38-win_amd64", version = "3.8", arch = "64", url = "https://downloads.python.org/pypy/pypy3.8-v7.3.9-win64.zip" },
{ identifier = "pp39-win_amd64", version = "3.9", arch = "64", url = "https://downloads.python.org/pypy/pypy3.9-v7.3.9-win64.zip" },
@@ -8,15 +8,15 @@ delocate==0.10.2
# via -r cibuildwheel/resources/constraints.in
distlib==0.3.4
# via virtualenv
filelock==3.6.0
filelock==3.7.0
# via virtualenv
platformdirs==2.5.1
platformdirs==2.5.2
# via virtualenv
six==1.16.0
# via virtualenv
typing-extensions==4.1.1
typing-extensions==4.2.0
# via delocate
virtualenv==20.14.0
virtualenv==20.14.1
# via -r cibuildwheel/resources/constraints.in
wheel==0.37.1
# via
@@ -24,7 +24,7 @@ wheel==0.37.1
# delocate
# The following packages are considered to be unsafe in a requirements file:
pip==22.0.4
pip==22.1.1
# via -r cibuildwheel/resources/constraints.in
setuptools==61.3.1
setuptools==62.3.2
# via -r cibuildwheel/resources/constraints.in
@@ -0,0 +1,30 @@
#
# This file is autogenerated by pip-compile with python 3.11
# To update, run:
#
# bin/update_dependencies.py
#
delocate==0.10.2
# via -r cibuildwheel/resources/constraints.in
distlib==0.3.4
# via virtualenv
filelock==3.7.0
# via virtualenv
platformdirs==2.5.2
# via virtualenv
six==1.16.0
# via virtualenv
typing-extensions==4.2.0
# via delocate
virtualenv==20.14.1
# via -r cibuildwheel/resources/constraints.in
wheel==0.37.1
# via
# -r cibuildwheel/resources/constraints.in
# delocate
# The following packages are considered to be unsafe in a requirements file:
pip==22.1.1
# via -r cibuildwheel/resources/constraints.in
setuptools==62.3.2
# via -r cibuildwheel/resources/constraints.in
@@ -22,7 +22,7 @@ typing-extensions==4.1.1
# via
# delocate
# importlib-metadata
virtualenv==20.14.0
virtualenv==20.14.1
# via -r cibuildwheel/resources/constraints.in
wheel==0.37.1
# via
@@ -8,19 +8,19 @@ delocate==0.10.2
# via -r cibuildwheel/resources/constraints.in
distlib==0.3.4
# via virtualenv
filelock==3.6.0
filelock==3.7.0
# via virtualenv
importlib-metadata==4.11.3
importlib-metadata==4.11.4
# via virtualenv
platformdirs==2.5.1
platformdirs==2.5.2
# via virtualenv
six==1.16.0
# via virtualenv
typing-extensions==4.1.1
typing-extensions==4.2.0
# via
# delocate
# importlib-metadata
virtualenv==20.14.0
virtualenv==20.14.1
# via -r cibuildwheel/resources/constraints.in
wheel==0.37.1
# via
@@ -30,7 +30,7 @@ zipp==3.8.0
# via importlib-metadata
# The following packages are considered to be unsafe in a requirements file:
pip==22.0.4
pip==22.1.1
# via -r cibuildwheel/resources/constraints.in
setuptools==61.3.1
setuptools==62.3.2
# via -r cibuildwheel/resources/constraints.in
@@ -8,15 +8,15 @@ delocate==0.10.2
# via -r cibuildwheel/resources/constraints.in
distlib==0.3.4
# via virtualenv
filelock==3.6.0
filelock==3.7.0
# via virtualenv
platformdirs==2.5.1
platformdirs==2.5.2
# via virtualenv
six==1.16.0
# via virtualenv
typing-extensions==4.1.1
typing-extensions==4.2.0
# via delocate
virtualenv==20.14.0
virtualenv==20.14.1
# via -r cibuildwheel/resources/constraints.in
wheel==0.37.1
# via
@@ -24,7 +24,7 @@ wheel==0.37.1
# delocate
# The following packages are considered to be unsafe in a requirements file:
pip==22.0.4
pip==22.1.1
# via -r cibuildwheel/resources/constraints.in
setuptools==61.3.1
setuptools==62.3.2
# via -r cibuildwheel/resources/constraints.in
@@ -8,15 +8,15 @@ delocate==0.10.2
# via -r cibuildwheel/resources/constraints.in
distlib==0.3.4
# via virtualenv
filelock==3.6.0
filelock==3.7.0
# via virtualenv
platformdirs==2.5.1
platformdirs==2.5.2
# via virtualenv
six==1.16.0
# via virtualenv
typing-extensions==4.1.1
typing-extensions==4.2.0
# via delocate
virtualenv==20.14.0
virtualenv==20.14.1
# via -r cibuildwheel/resources/constraints.in
wheel==0.37.1
# via
@@ -24,7 +24,7 @@ wheel==0.37.1
# delocate
# The following packages are considered to be unsafe in a requirements file:
pip==22.0.4
pip==22.1.1
# via -r cibuildwheel/resources/constraints.in
setuptools==61.3.1
setuptools==62.3.2
# via -r cibuildwheel/resources/constraints.in
+6 -6
View File
@@ -8,15 +8,15 @@ delocate==0.10.2
# via -r cibuildwheel/resources/constraints.in
distlib==0.3.4
# via virtualenv
filelock==3.6.0
filelock==3.7.0
# via virtualenv
platformdirs==2.5.1
platformdirs==2.5.2
# via virtualenv
six==1.16.0
# via virtualenv
typing-extensions==4.1.1
typing-extensions==4.2.0
# via delocate
virtualenv==20.14.0
virtualenv==20.14.1
# via -r cibuildwheel/resources/constraints.in
wheel==0.37.1
# via
@@ -24,7 +24,7 @@ wheel==0.37.1
# delocate
# The following packages are considered to be unsafe in a requirements file:
pip==22.0.4
pip==22.1.1
# via -r cibuildwheel/resources/constraints.in
setuptools==61.3.1
setuptools==62.3.2
# via -r cibuildwheel/resources/constraints.in
+27 -27
View File
@@ -1,43 +1,43 @@
[x86_64]
manylinux1 = quay.io/pypa/manylinux1_x86_64:2022-04-03-9524524
manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2022-04-03-da6ecb3
manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2022-04-03-da6ecb3
manylinux_2_24 = quay.io/pypa/manylinux_2_24_x86_64:2022-04-03-da6ecb3
musllinux_1_1 = quay.io/pypa/musllinux_1_1_x86_64:2022-04-03-da6ecb3
manylinux1 = quay.io/pypa/manylinux1_x86_64:2022-05-22-74adb27
manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2022-05-22-fbe07ea
manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2022-05-22-fbe07ea
manylinux_2_24 = quay.io/pypa/manylinux_2_24_x86_64:2022-05-22-fbe07ea
musllinux_1_1 = quay.io/pypa/musllinux_1_1_x86_64:2022-05-22-fbe07ea
[i686]
manylinux1 = quay.io/pypa/manylinux1_i686:2022-04-03-9524524
manylinux2010 = quay.io/pypa/manylinux2010_i686:2022-04-03-da6ecb3
manylinux2014 = quay.io/pypa/manylinux2014_i686:2022-04-03-da6ecb3
manylinux_2_24 = quay.io/pypa/manylinux_2_24_i686:2022-04-03-da6ecb3
musllinux_1_1 = quay.io/pypa/musllinux_1_1_i686:2022-04-03-da6ecb3
manylinux1 = quay.io/pypa/manylinux1_i686:2022-05-22-74adb27
manylinux2010 = quay.io/pypa/manylinux2010_i686:2022-05-22-fbe07ea
manylinux2014 = quay.io/pypa/manylinux2014_i686:2022-05-22-fbe07ea
manylinux_2_24 = quay.io/pypa/manylinux_2_24_i686:2022-05-22-fbe07ea
musllinux_1_1 = quay.io/pypa/musllinux_1_1_i686:2022-05-22-fbe07ea
[pypy_x86_64]
manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2022-04-03-da6ecb3
manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2022-04-03-da6ecb3
manylinux_2_24 = quay.io/pypa/manylinux_2_24_x86_64:2022-04-03-da6ecb3
manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2022-05-22-fbe07ea
manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2022-05-22-fbe07ea
manylinux_2_24 = quay.io/pypa/manylinux_2_24_x86_64:2022-05-22-fbe07ea
[pypy_i686]
manylinux2010 = quay.io/pypa/manylinux2010_i686:2022-04-03-da6ecb3
manylinux2014 = quay.io/pypa/manylinux2014_i686:2022-04-03-da6ecb3
manylinux_2_24 = quay.io/pypa/manylinux_2_24_i686:2022-04-03-da6ecb3
manylinux2010 = quay.io/pypa/manylinux2010_i686:2022-05-22-fbe07ea
manylinux2014 = quay.io/pypa/manylinux2014_i686:2022-05-22-fbe07ea
manylinux_2_24 = quay.io/pypa/manylinux_2_24_i686:2022-05-22-fbe07ea
[aarch64]
manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2022-04-03-da6ecb3
manylinux_2_24 = quay.io/pypa/manylinux_2_24_aarch64:2022-04-03-da6ecb3
musllinux_1_1 = quay.io/pypa/musllinux_1_1_aarch64:2022-04-03-da6ecb3
manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2022-05-22-fbe07ea
manylinux_2_24 = quay.io/pypa/manylinux_2_24_aarch64:2022-05-22-fbe07ea
musllinux_1_1 = quay.io/pypa/musllinux_1_1_aarch64:2022-05-22-fbe07ea
[ppc64le]
manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2022-04-03-da6ecb3
manylinux_2_24 = quay.io/pypa/manylinux_2_24_ppc64le:2022-04-03-da6ecb3
musllinux_1_1 = quay.io/pypa/musllinux_1_1_ppc64le:2022-04-03-da6ecb3
manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2022-05-22-fbe07ea
manylinux_2_24 = quay.io/pypa/manylinux_2_24_ppc64le:2022-05-22-fbe07ea
musllinux_1_1 = quay.io/pypa/musllinux_1_1_ppc64le:2022-05-22-fbe07ea
[s390x]
manylinux2014 = quay.io/pypa/manylinux2014_s390x:2022-04-03-da6ecb3
manylinux_2_24 = quay.io/pypa/manylinux_2_24_s390x:2022-04-03-da6ecb3
musllinux_1_1 = quay.io/pypa/musllinux_1_1_s390x:2022-04-03-da6ecb3
manylinux2014 = quay.io/pypa/manylinux2014_s390x:2022-05-22-fbe07ea
manylinux_2_24 = quay.io/pypa/manylinux_2_24_s390x:2022-05-22-fbe07ea
musllinux_1_1 = quay.io/pypa/musllinux_1_1_s390x:2022-05-22-fbe07ea
[pypy_aarch64]
manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2022-04-03-da6ecb3
manylinux_2_24 = quay.io/pypa/manylinux_2_24_aarch64:2022-04-03-da6ecb3
manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2022-05-22-fbe07ea
manylinux_2_24 = quay.io/pypa/manylinux_2_24_aarch64:2022-05-22-fbe07ea
+2 -2
View File
@@ -1,2 +1,2 @@
version = "20.13.3"
url = "https://github.com/pypa/get-virtualenv/blob/20.13.3/public/virtualenv.pyz?raw=true"
version = "20.14.1"
url = "https://github.com/pypa/get-virtualenv/blob/20.14.1/public/virtualenv.pyz?raw=true"
+1 -1
View File
@@ -244,7 +244,7 @@ class IdentifierSelector:
"""
# a pattern that skips prerelease versions, when include_prereleases is False.
PRERELEASE_SKIP: ClassVar[str] = ""
PRERELEASE_SKIP: ClassVar[str] = "cp311-*"
skip_config: str
build_config: str
+9 -2
View File
@@ -2,12 +2,19 @@
title: Changelog
---
### v2.6.0
_25 May 2022_
- 🌟 Added the ability to test building wheels on CPython 3.11! Because CPython 3.11 is in beta, these wheels should not be distributed, because they might not be compatible with the final release, but it's available to build for testing purposes. Use the flag [`--prerelease-pythons` or `CIBW_PRERELEASE_PYTHONS`](https://cibuildwheel.readthedocs.io/en/stable/options/#prerelease-pythons) to test. This version of cibuildwheel includes CPython 3.11.0b1. (#1109)
- 📚 Added an interactive diagram showing how cibuildwheel works to the [docs](https://cibuildwheel.readthedocs.io/en/stable/#how-it-works) (#1100)
### v2.5.0
_29 April 2022_
- ✨ Added support for building ABI3 wheels. cibuildwheel will now recognise when an ABI3 wheel was produced, and skip subsequent build steps where the previously built wheel is compatible. Tests still will run on all selected versions of Python, using the ABI3 wheel. (#1091)
- ✨ You can now build wheels directly from sdist archives, in addition to source directories. Just call cibuildwheel with an sdist argument on the command line, like `cibuildwheel mypackage-1.0.0.tar.gz` (#1096)
- ✨ Added support for building ABI3 wheels. cibuildwheel will now recognise when an ABI3 wheel was produced, and skip subsequent build steps where the previously built wheel is compatible. Tests still will run on all selected versions of Python, using the ABI3 wheel. Check [this entry](https://cibuildwheel.readthedocs.io/en/stable/faq/#abi3) in the docs for more info. (#1091)
- ✨ You can now build wheels directly from sdist archives, in addition to source directories. Just call cibuildwheel with an sdist argument on the command line, like `cibuildwheel mypackage-1.0.0.tar.gz`. For more details, check the [`--help` output](https://cibuildwheel.readthedocs.io/en/stable/options/#command-line) (#1096)
- 🐛 Fix a bug where cibuildwheel would crash when no builds are selected and `--allow-empty` is passed (#1086)
- 🐛 Workaround a permissions issue on Linux relating to newer versions of git and setuptools_scm (#1095)
- 📚 Minor docs improvements
Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

+487
View File
@@ -0,0 +1,487 @@
<div id="flow-diagram">
<div class="diagram-grid" v-bind:style="gridStyle">
<!-- BEHIND THE GRID CONTENT -->
<!-- line for each platform -->
<div class="grid-line" style="grid-row-start: 3"></div>
<div class="grid-line" style="grid-row-start: 4"></div>
<div class="grid-line" style="grid-row-start: 5"></div>
<!-- the docker container outline -->
<div class="grid-outline docker">
<div class="outline">
Manylinux Docker container
</div>
</div>
<!-- the venv outlines -->
<div class="grid-outline testVenv" style="grid-row-start: 3">
<div class="outline">Test virtualenv</div>
</div>
<div class="grid-outline testVenv" style="grid-row-start: 4"><div class="outline"></div></div>
<div class="grid-outline testVenv" style="grid-row-start: 5"><div class="outline"></div></div>
<!-- THE GRID CONTENT -->
<!-- the row labels -->
<div class="grid-row-label" style="grid-row-start: 3">Linux</div>
<div class="grid-row-label" style="grid-row-start: 4">macOS</div>
<div class="grid-row-label" style="grid-row-start: 5">Windows</div>
<!-- the column labels -->
<div class="grid-column-label"
style="grid-row: 1 / span 1; grid-column: 5 / -3">
<div class="label">For each version of Python</div>
</div>
<div class="grid-column-label"
style="grid-row: 2 / span 1;
grid-column: 8 / -3;
margin-bottom: 0.5em;">
<div class="label">If tests are configured</div>
</div>
<!-- the steps -->
<div class="step" v-for="(step, sIndex) in diagram.steps">
<component v-for="action in step"
class="action"
v-bind:is="action.href ? 'a' : 'div'"
v-bind:href="action.href">
<div class="dots" v-if="action.style == 'dot'">
<div class="dot"
v-info="action"
v-for="(platform, pIndex) in platforms"
v-if="action.platforms.includes(platform)"
v-bind:style="{gridRowStart: `${pIndex+3}`,
gridColumnStart: `${sIndex+2}`}">
<div class="dot-graphic"></div>
</div>
</div>
<div class="block-container" v-if="action.style == 'block'">
<div class="block"
v-info="action"
v-bind:style="{...blockStyle(action),
gridColumnStart: `${sIndex+2}`}">
{{action.label}}
</div>
</div>
</a>
</div>
</div>
</div>
<noscript>
<img src="data/how-it-works.png" alt="Diagram showing the steps for each platform">
<p><strong>Enable JavaScript for an interactive version of this diagram.</strong></p>
</noscript>
<script type="module" async>
import Vue from 'https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.esm.browser.js'
import 'https://unpkg.com/@popperjs/core@2/dist/umd/popper.min.js'
import 'https://unpkg.com/tippy.js@6/dist/tippy-bundle.umd.js'
const diagram = {
steps: [
[
{
label: 'copy project into docker',
platforms: ['linux'],
style: 'block',
width: 2,
},
],
[], // empty column so that the manylinux outline intersects the previous column in the middle.
[
{
href: 'options/#before-all',
platforms: ['linux', 'macos', 'windows'],
style: 'dot',
tooltip: {
title: 'CIBW_BEFORE_ALL',
tag: 'Optional step',
description: 'Execute a shell command on the build system before any wheels are built.'
},
},
],
[
{
label: 'Install Python',
platforms: ['macos', 'windows'],
style: 'block',
tooltip: {
description: 'Install the version of Python required to build this wheel.'
},
},
],
[
{
href: 'options/#before-build',
platforms: ['linux', 'macos', 'windows'],
style: 'dot',
tooltip: {
title: 'CIBW_BEFORE_BUILD',
tag: 'Optional step',
description: "Execute a shell command preparing each wheel's build.",
},
},
],
[
{
label: 'Build wheel',
href: 'options/#build-frontend',
platforms: ['linux', 'macos', 'windows'],
style: 'block',
tooltip: {
title: 'CIBW_BUILD_FRONTEND',
tag: 'Customisable step',
description: 'Build the wheel according to your package configuration, using the frontend of your choice - pip or build.'
},
},
],
[
{
label: 'Repair using auditwheel',
href: 'options/#repair-wheel-command',
platforms: ['linux'],
style: 'block',
tooltip: {
title: 'CIBW_REPAIR_WHEEL_COMMAND',
tag: 'Customisable step',
description: 'Bundle shared libraries and ensure manylinux compliance by running auditwheel on each built wheel.'
},
},
{
label: 'Repair using delocate',
href: 'options/#repair-wheel-command',
platforms: ['macos'],
style: 'block',
tooltip: {
title: 'CIBW_REPAIR_WHEEL_COMMAND',
tag: 'Customisable step',
description: 'Bundle shared libraries by running delocate on each built wheel.'
},
},
{
env: "CIBW_REPAIR_WHEEL_COMMAND",
href: 'options/#repair-wheel-command',
label: 'repair wheel',
platforms: ['windows'],
style: 'dot',
optional: true,
tooltip: {
title: 'CIBW_REPAIR_WHEEL_COMMAND',
tag: 'Optional step',
description: 'Execute a shell command to repair each built wheel'
},
},
],
[
{
href: 'options/#before-test',
platforms: ['linux', 'macos', 'windows'],
style: 'dot',
tooltip: {
title: 'CIBW_BEFORE_TEST',
tag: 'Optional step',
description: 'Execute a shell command before testing each wheel'
},
},
],
[
{
label: 'Install wheel',
platforms: ['linux', 'macos', 'windows'],
style: 'block',
tooltip: {
description: 'Install the wheel we just built into the test virtualenv.'
},
},
],
[
{
label: 'Test wheel',
href: 'options/#test-command',
platforms: ['linux', 'macos', 'windows'],
style: 'block',
tooltip: {
title: 'CIBW_TEST_COMMAND',
tag: 'Optional step',
description: 'Execute a shell command to test each built wheel'
},
},
],
[
{
label: 'Copy wheels out of Docker',
platforms: ['linux'],
style: 'block',
width: 2,
},
],
[],
]
}
const diagramComponent = new Vue({
el: '#flow-diagram',
data() {
return {
diagram,
platforms: ['linux', 'macos', 'windows'],
}
},
methods: {
blockStyle(action) {
let start, end
if (action.platforms.includes('linux')) {
start = 3
} else if (action.platforms.includes('macos')) {
start = 4
} else if (action.platforms.includes('windows')) {
start = 5
}
if (action.platforms.includes('windows')) {
end = 6
} else if (action.platforms.includes('macos')) {
end = 5
} else if (action.platforms.includes('linux')) {
end = 4
}
return {
gridRowStart: start.toString(),
gridRowEnd: end.toString(),
gridColumnEnd: `span ${action.width || 1}`,
}
}
},
computed: {
gridStyle() {
return {
gridTemplateRows: `auto auto repeat(${this.platforms.length}, 1fr)`,
gridTemplateColumns: `repeat(${this.diagram.steps.length+1}, auto)`,
}
},
},
directives: {
info: {
inserted(el, binding) {
const action = binding.value
const {env, label, optional=false, description='', href=''} = action
const tooltip = action.tooltip
if (tooltip) {
const tippyInstance = tippy(el, {
content: `
<a class="tooltip-contents" href="${href || ''}">
<div class="tooltip-title">
${tooltip.title || ''}
</div>
<div class="tooltip-tag">
${tooltip.tag || ''}
</div>
<div class="tooltip-description">
${tooltip.description}
</div>
</a>
`,
placement: 'right-start',
allowHTML: true,
maxWidth: 'none',
appendTo: document.getElementById('flow-diagram'),
offset: [0, 10],
onShow(instance) {
const stepEl = el.closest('.action')
stepEl.classList.add('tooltip-open')
instance.setProps({
interactive: tippy.currentInput.isTouch
})
},
onHide() {
const stepEl = el.closest('.action')
stepEl.classList.remove('tooltip-open')
}
})
el.addEventListener('click', e => {
// click event should just open the tooltip on touch devices
if (tippy.currentInput.isTouch) {
e.preventDefault()
}
})
}
}
}
}
})
</script>
<style>
#flow-diagram {
background: #fcfcfc;
/* font-family: Inter; */
/* font-size: 10px; */
font-size: 0.7em;
padding-bottom: 2em;
}
.no-js #flow-diagram {
display: none
}
.diagram-grid {
display: grid;
overflow-x: auto;
}
.platform, .step, .dots, .block-container, .action {
display: contents;
}
.block, .dot {
position: relative;
margin: 2em 0.5em;
}
.block {
background-color: #eee;
/* margin: 0.5em auto; */
padding: 0.5em;
max-width: 6em;
display: flex;
align-items: center;
justify-content: center;
text-align: center;
}
.dot {
/* margin: 0.5em; */
display: flex;
align-items: center;
justify-content: center;
}
.dot-graphic {
width: 1.3em;
height: 1.3em;
border-radius: 50%;
background: #DADADA;
}
a.action {
color: inherit;
}
.action.tooltip-open .dot-graphic {
background-color: #416EDA;
}
.action.tooltip-open .block {
background-color: #416EDA;
color: white;
}
.grid-column-label {
height: 2em;
position: relative;
display: flex;
align-items: center;
justify-content: center;
margin: 0 0.5em;
}
.grid-column-label::before {
content: "";
height: 1px;
background-color: currentColor;
position: absolute;
top: calc(50% - 0.5px);
left: 0;
right: 0;
}
.grid-column-label .label {
background: #fcfcfc;
padding: 0 2em;
position: relative;
}
.grid-row-label {
grid-column: 1 / span 1;
display: flex;
align-items: center;
justify-content: flex-end;
text-align: right;
background: #fcfcfc;
position: relative;
padding-right: 1em;
font-size: 1.1em;
}
.grid-line {
grid-column: 1 / -1;
grid-row-end: span 1;
position: relative;
}
.grid-line::after {
content: "";
height: 1px;
background-color: #979797;
position: absolute;
top: calc(50% - 1px);
left: 0;
right: 0;
}
.grid-outline {
grid-row-end: span 1;
position: relative;
color: #8f8f8f;
}
.grid-outline.docker {
grid-row: 3 / span 1;
grid-column: 3 / -2;
}
.grid-outline.testVenv {
grid-column: 8 / span 4;
}
.grid-outline .outline {
position: absolute;
border: 1px solid #e5e5e5;
padding: 1px 3px;
}
.grid-outline.docker .outline {
left: 0;
right: 0;
top: 0;
bottom: 0;
}
.grid-outline.testVenv .outline {
left: 0;
right: 0;
top: 0.5em;
bottom: 0.5em;
}
/* style the tooltip */
.tippy-box {
background: white;
box-shadow: 0 2px 6px -1px rgba(0,0,0,0.12);
border-radius: 0;
text-align: left;
font-size: 1em;
color: #1F1F1F;
border: 1px solid rgba(0, 0, 0, 0.02);
width: 14em;
min-width: min-content;
}
.tippy-box[data-placement^='top'] > .tippy-arrow::before {
border-top-color: white;
}
.tippy-box[data-placement^='bottom'] > .tippy-arrow::before {
border-bottom-color: white;
}
.tippy-box[data-placement^='left'] > .tippy-arrow::before {
border-left-color: white;
}
.tippy-box[data-placement^='right'] > .tippy-arrow::before {
border-right-color: white;
}
a.tooltip-contents {
color: inherit;
text-decoration: none;
display: block;
}
.tooltip-title {
font-weight: 600;
font-size: 1.1em;
color: #416EDA;
}
.tooltip-tag {
font-weight: 500;
text-transform: uppercase;
font-size: 0.9em;
color: #C9C9C9;
}
.tooltip-description {
margin-top: 1px;
margin-bottom: 2px;
}
</style>
+1
View File
@@ -3,6 +3,7 @@
body {
overflow-wrap: break-word;
overflow-x: hidden;
}
p {
+2 -2
View File
@@ -133,7 +133,7 @@ There are two suggested methods for keeping cibuildwheel up to date that instead
If you use GitHub Actions for builds, you can use cibuildwheel as an action:
```yaml
uses: pypa/cibuildwheel@v2.5.0
uses: pypa/cibuildwheel@v2.6.0
```
This is a composite step that just runs cibuildwheel using pipx. You can set command-line options as `with:` parameters, and use `env:` as normal.
@@ -159,7 +159,7 @@ The second option, and the only one that supports other CI systems, is using a `
```bash
# requirements-cibw.txt
cibuildwheel==2.5.0
cibuildwheel==2.6.0
```
Then your install step would have `python -m pip install -r requirements-cibw.txt` in it. Your `.github/dependabot.yml` file could look like this:
+11
View File
@@ -9,3 +9,14 @@ title: Home
%}
To get started, head over to the [setup guide](setup.md).
How it works
------------
This diagram summarises the steps that cibuildwheel takes on each platform to build your package's wheels.
{%
include-markdown "diagram.md"
%}
This isn't exhaustive, for a full list of the things cibuildwheel can do, check the [options](options.md) page.
+11 -10
View File
@@ -202,16 +202,17 @@ When setting the options, you can use shell-style globbing syntax, as per [fnmat
<div class="build-id-table-marker"></div>
| | macOS | Windows | Linux Intel | Linux Other |
|--------------|------------------------------------------------------------------------|----------------------------------|-----------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Python 3.6 | cp36-macosx_x86_64 | cp36-win_amd64<br/>cp36-win32 | cp36-manylinux_x86_64<br/>cp36-manylinux_i686<br/>cp36-musllinux_x86_64<br/>cp36-musllinux_i686 | cp36-manylinux_aarch64<br/>cp36-manylinux_ppc64le<br/>cp36-manylinux_s390x<br/>cp36-musllinux_aarch64<br/>cp36-musllinux_ppc64le<br/>cp36-musllinux_s390x |
| Python 3.7 | cp37-macosx_x86_64 | cp37-win_amd64<br/>cp37-win32 | cp37-manylinux_x86_64<br/>cp37-manylinux_i686<br/>cp37-musllinux_x86_64<br/>cp37-musllinux_i686 | cp37-manylinux_aarch64<br/>cp37-manylinux_ppc64le<br/>cp37-manylinux_s390x<br/>cp37-musllinux_aarch64<br/>cp37-musllinux_ppc64le<br/>cp37-musllinux_s390x |
| Python 3.8 | cp38-macosx_x86_64<br/>cp38-macosx_universal2<br/>cp38-macosx_arm64 | cp38-win_amd64<br/>cp38-win32 | cp38-manylinux_x86_64<br/>cp38-manylinux_i686<br/>cp38-musllinux_x86_64<br/>cp38-musllinux_i686 | cp38-manylinux_aarch64<br/>cp38-manylinux_ppc64le<br/>cp38-manylinux_s390x<br/>cp38-musllinux_aarch64<br/>cp38-musllinux_ppc64le<br/>cp38-musllinux_s390x |
| | macOS | Windows | Linux Intel | Linux Other |
|--------------|------------------------------------------------------------------------|-----------------------------------------------------|-----------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Python 3.6 | cp36-macosx_x86_64 | cp36-win_amd64<br/>cp36-win32 | cp36-manylinux_x86_64<br/>cp36-manylinux_i686<br/>cp36-musllinux_x86_64<br/>cp36-musllinux_i686 | cp36-manylinux_aarch64<br/>cp36-manylinux_ppc64le<br/>cp36-manylinux_s390x<br/>cp36-musllinux_aarch64<br/>cp36-musllinux_ppc64le<br/>cp36-musllinux_s390x |
| Python 3.7 | cp37-macosx_x86_64 | cp37-win_amd64<br/>cp37-win32 | cp37-manylinux_x86_64<br/>cp37-manylinux_i686<br/>cp37-musllinux_x86_64<br/>cp37-musllinux_i686 | cp37-manylinux_aarch64<br/>cp37-manylinux_ppc64le<br/>cp37-manylinux_s390x<br/>cp37-musllinux_aarch64<br/>cp37-musllinux_ppc64le<br/>cp37-musllinux_s390x |
| Python 3.8 | cp38-macosx_x86_64<br/>cp38-macosx_universal2<br/>cp38-macosx_arm64 | cp38-win_amd64<br/>cp38-win32 | cp38-manylinux_x86_64<br/>cp38-manylinux_i686<br/>cp38-musllinux_x86_64<br/>cp38-musllinux_i686 | cp38-manylinux_aarch64<br/>cp38-manylinux_ppc64le<br/>cp38-manylinux_s390x<br/>cp38-musllinux_aarch64<br/>cp38-musllinux_ppc64le<br/>cp38-musllinux_s390x |
| Python 3.9 | cp39-macosx_x86_64<br/>cp39-macosx_universal2<br/>cp39-macosx_arm64 | cp39-win_amd64<br/>cp39-win32<br/>cp39-win_arm64 | cp39-manylinux_x86_64<br/>cp39-manylinux_i686<br/>cp39-musllinux_x86_64<br/>cp39-musllinux_i686 | cp39-manylinux_aarch64<br/>cp39-manylinux_ppc64le<br/>cp39-manylinux_s390x<br/>cp39-musllinux_aarch64<br/>cp39-musllinux_ppc64le<br/>cp39-musllinux_s390x |
| Python 3.10 | cp310-macosx_x86_64<br/>cp310-macosx_universal2<br/>cp310-macosx_arm64 | cp310-win_amd64<br/>cp310-win32<br/>cp310-win_arm64 | cp310-manylinux_x86_64<br/>cp310-manylinux_i686<br/>cp310-musllinux_x86_64<br/>cp310-musllinux_i686 | cp310-manylinux_aarch64<br/>cp310-manylinux_ppc64le<br/>cp310-manylinux_s390x<br/>cp310-musllinux_aarch64<br/>cp310-musllinux_ppc64le<br/>cp310-musllinux_s390x |
| PyPy3.7 v7.3 | pp37-macosx_x86_64 | pp37-win_amd64 | pp37-manylinux_x86_64<br/>pp37-manylinux_i686 | pp37-manylinux_aarch64 |
| PyPy3.8 v7.3 | pp38-macosx_x86_64 | pp38-win_amd64 | pp38-manylinux_x86_64<br/>pp38-manylinux_i686 | pp38-manylinux_aarch64 |
| PyPy3.9 v7.3 | pp39-macosx_x86_64 | pp39-win_amd64 | pp39-manylinux_x86_64<br/>pp39-manylinux_i686 | pp39-manylinux_aarch64 |
| Python 3.10 | cp310-macosx_x86_64<br/>cp310-macosx_universal2<br/>cp310-macosx_arm64 | cp310-win_amd64<br/>cp310-win32<br/>cp310-win_arm64 | cp310-manylinux_x86_64<br/>cp310-manylinux_i686<br/>cp310-musllinux_x86_64<br/>cp310-musllinux_i686 | cp310-manylinux_aarch64<br/>cp310-manylinux_ppc64le<br/>cp310-manylinux_s390x<br/>cp310-musllinux_aarch64<br/>cp310-musllinux_ppc64le<br/>cp310-musllinux_s390x |
| Python 3.11 | cp311-macosx_x86_64<br/>cp311-macosx_universal2<br/>cp311-macosx_arm64 | cp311-win_amd64<br/>cp311-win32<br/>cp311-win_arm64 | cp311-manylinux_x86_64<br/>cp311-manylinux_i686<br/>cp311-musllinux_x86_64<br/>cp311-musllinux_i686 | cp311-manylinux_aarch64<br/>cp311-manylinux_ppc64le<br/>cp311-manylinux_s390x<br/>cp311-musllinux_aarch64<br/>cp311-musllinux_ppc64le<br/>cp311-musllinux_s390x |
| PyPy3.7 v7.3 | pp37-macosx_x86_64 | pp37-win_amd64 | pp37-manylinux_x86_64<br/>pp37-manylinux_i686 | pp37-manylinux_aarch64 |
| PyPy3.8 v7.3 | pp38-macosx_x86_64 | pp38-win_amd64 | pp38-manylinux_x86_64<br/>pp38-manylinux_i686 | pp38-manylinux_aarch64 |
| PyPy3.9 v7.3 | pp39-macosx_x86_64 | pp39-win_amd64 | pp39-manylinux_x86_64<br/>pp39-manylinux_i686 | pp39-manylinux_aarch64 |
The list of supported and currently selected build identifiers can also be retrieved by passing the `--print-build-identifiers` flag to cibuildwheel.
The format is `python_tag-platform_tag`, with tags similar to those in [PEP 425](https://www.python.org/dev/peps/pep-0425/#details).
@@ -783,7 +784,7 @@ Platform-specific environment variables are also available:<br/>
### `CIBW_REPAIR_WHEEL_COMMAND` {: #repair-wheel-command}
> Execute a shell command to repair each (non-pure Python) built wheel
> Execute a shell command to repair each built wheel
Default:
+2 -2
View File
@@ -183,7 +183,7 @@ To build Linux, Mac, and Windows wheels using GitHub Actions, create a `.github/
- uses: actions/checkout@v2
- name: Build wheels
run: pipx run cibuildwheel==2.5.0
run: pipx run cibuildwheel==2.6.0
- uses: actions/upload-artifact@v2
with:
@@ -218,7 +218,7 @@ To build Linux, Mac, and Windows wheels using GitHub Actions, create a `.github/
- uses: actions/setup-python@v2
- name: Install cibuildwheel
run: python -m pip install cibuildwheel==2.5.0
run: python -m pip install cibuildwheel==2.6.0
- name: Build wheels
run: python -m cibuildwheel --output-dir wheelhouse
+115 -115
View File
@@ -25,15 +25,15 @@ title: Working examples
| [Google Benchmark][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | A microbenchmark support library |
| [Apache Beam][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Apache Beam is a unified programming model for Batch and Streaming data processing. |
| [asyncpg][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | A fast PostgreSQL Database Client Library for Python/asyncio. |
| [scikit-image][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Image processing library. Uses cibuildwheel to build and test a project that uses Cython with platform-native code. |
| [duckdb][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | DuckDB is an in-process SQL OLAP Database Management System |
| [scikit-image][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Image processing library. Uses cibuildwheel to build and test a project that uses Cython with platform-native code. |
| [PyGame][] | ![github icon][] | ![apple icon][] ![linux icon][] | pygame (the library) is a Free and Open Source python programming language library for making multimedia applications like games built on top of the excellent SDL library. C, Python, Native, OpenGL. |
| [cmake][] | ![github icon][] ![travisci icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Multitagged binary builds for all supported platforms, using cibw 2 config configuration. |
| [twisted-iocpsupport][] | ![github icon][] | ![windows icon][] | A submodule of Twisted that hooks into native C APIs using Cython. |
| [websockets][] | ![travisci icon][] | ![apple icon][] ![linux icon][] | Library for building WebSocket servers and clients. Mostly written in Python, with a small C 'speedups' extension module. |
| [cvxpy][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | A Python-embedded modeling language for convex optimization problems. |
| [UltraJSON][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Ultra fast JSON decoder and encoder written in C with Python bindings |
| [PyOxidizer][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | A modern Python application packaging and distribution tool |
| [UltraJSON][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Ultra fast JSON decoder and encoder written in C with Python bindings |
| [Triton][] | ![github icon][] | ![linux icon][] | Self hosted runners |
| [River][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | 🌊 Online machine learning in Python |
| [OpenSpiel][] | ![github icon][] | ![apple icon][] ![linux icon][] | OpenSpiel is a collection of environments and algorithms for research in general reinforcement learning and search/planning in games. |
@@ -53,9 +53,9 @@ title: Working examples
| [PyAV][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Pythonic bindings for FFmpeg's libraries. |
| [SimpleJSON][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | simplejson is a simple, fast, extensible JSON encoder/decoder for Python |
| [OpenColorIO][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | A color management framework for visual effects and animation. |
| [pikepdf][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A Python library for reading and writing PDF, powered by qpdf |
| [Line Profiler][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Line-by-line profiling for Python |
| [PyTables][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A Python package to manage extremely large amounts of data |
| [pikepdf][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A Python library for reading and writing PDF, powered by qpdf |
| [OpenTimelineIO][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Open Source API and interchange format for editorial timeline information. |
| [ruptures][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Extensive Cython + NumPy [pyproject.toml](https://github.com/deepcharles/ruptures/blob/master/pyproject.toml) example. |
| [aioquic][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | QUIC and HTTP/3 implementation in Python |
@@ -74,9 +74,9 @@ title: Working examples
| [tgcalls][] | ![github icon][] | ![apple icon][] ![windows icon][] | Python `pybind11` binding to Telegram's WebRTC library with third party dependencies like `OpenSSL`, `MozJPEG`, `FFmpeg`, etc. |
| [pybind11 python_example][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Example pybind11 module built with a Python-based build system |
| [dd-trace-py][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Uses custom alternate arch emulation on GitHub |
| [cyvcf2][] | ![github icon][] | ![apple icon][] ![linux icon][] | cython + htslib == fast VCF and BCF processing |
| [time-machine][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Time mocking library using only the CPython C API. |
| [sourmash][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Quickly search, compare, and analyze genomic and metagenomic data sets. |
| [time-machine][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Time mocking library using only the CPython C API. |
| [cyvcf2][] | ![github icon][] | ![apple icon][] ![linux icon][] | cython + htslib == fast VCF and BCF processing |
| [CTranslate2][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Includes libraries from the [Intel oneAPI toolkit](https://www.intel.com/content/www/us/en/developer/tools/oneapi/base-toolkit.html) and CUDA kernels compiled for multiple GPU architectures. |
| [abess][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A fast best-subset selection library. It uses cibuildwheel to build a large project with C++ extensions. |
| [matrixprofile][] | ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A Python 3 library making time series data mining tasks, utilizing matrix profile algorithms, accessible to everyone. |
@@ -91,18 +91,18 @@ title: Working examples
| [Python-WebRTC][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | a Python extension that provides bindings to WebRTC M92 |
| [pybase64][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Fast Base64 encoding/decoding in Python |
| [Arbor][] | ![github icon][] | ![apple icon][] ![linux icon][] | Arbor is a multi-compartment neuron simulation library; compatible with next-generation accelerators; best-practices applied to research software; focused on community-driven development. Includes a [small script](https://github.com/arbor-sim/arbor/blob/master/scripts/patchwheel.py) patching `rpath` in bundled libraries. |
| [etebase-py][] | ![travisci icon][] | ![linux icon][] | Python bindings to a Rust library using `setuptools-rust`, and `sccache` for improved speed. |
| [fathon][] | ![travisci icon][] | ![apple icon][] ![linux icon][] | python package for DFA (Detrended Fluctuation Analysis) and related algorithms |
| [etebase-py][] | ![travisci icon][] | ![linux icon][] | Python bindings to a Rust library using `setuptools-rust`, and `sccache` for improved speed. |
| [Imagecodecs (fork)][] | ![azurepipelines icon][] | ![apple icon][] ![linux icon][] | Over 20 external dependencies in compiled libraries, custom docker image, `libomp`, `openblas` and `install_name_tool` for macOS. |
| [polaroid][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Full range of wheels for setuptools rust, with auto release and PyPI deploy. |
| [numpythia][] | ![github icon][] | ![apple icon][] ![linux icon][] | The interface between PYTHIA and NumPy |
| [clang-format][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Scikit-build wrapper around LLVM's CMake, all platforms, generic wheels. |
| [pyjet][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | The interface between FastJet and NumPy |
| [numpythia][] | ![github icon][] | ![apple icon][] ![linux icon][] | The interface between PYTHIA and NumPy |
| [power-grid-model][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Python/C++ library for distribution power system analysis |
| [pybind11 scikit_build_example][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | An example combining scikit-build and pybind11 |
| [ninja][] | ![github icon][] ![travisci icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Multitagged binary builds for all supported platforms, using cibw 2 config configuration. |
| [GSD][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Cython and NumPy project with 64-bit wheels. |
| [pillow-heif][] | ![github icon][] | ![apple icon][] ![linux icon][] | Python CFFI binding to libheif library with third party dependencies like `libde265`, `x265`, `libaom` with test & publishing on PyPi. |
| [GSD][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Cython and NumPy project with 64-bit wheels. |
| [pyinstrument_cext][] | ![travisci icon][] ![appveyor icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A simple C extension, without external dependencies |
| [xmlstarlet][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Python 3.6+ CFFI bindings with true MSVC build. |
| [CorrectionLib][] | ![github icon][] | ![apple icon][] ![linux icon][] | Structured JSON powered correction library for HEP, designed for the CMS experiment at CERN. |
@@ -125,15 +125,15 @@ title: Working examples
[Google Benchmark]: https://github.com/google/benchmark
[Apache Beam]: https://github.com/apache/beam
[asyncpg]: https://github.com/MagicStack/asyncpg
[scikit-image]: https://github.com/scikit-image/scikit-image
[duckdb]: https://github.com/duckdb/duckdb
[scikit-image]: https://github.com/scikit-image/scikit-image
[PyGame]: https://github.com/pygame/pygame
[cmake]: https://github.com/scikit-build/cmake-python-distributions
[twisted-iocpsupport]: https://github.com/twisted/twisted-iocpsupport
[websockets]: https://github.com/aaugustin/websockets
[cvxpy]: https://github.com/cvxpy/cvxpy
[UltraJSON]: https://github.com/ultrajson/ultrajson
[PyOxidizer]: https://github.com/indygreg/PyOxidizer
[UltraJSON]: https://github.com/ultrajson/ultrajson
[Triton]: https://github.com/openai/triton
[River]: https://github.com/online-ml/river
[OpenSpiel]: https://github.com/deepmind/open_spiel
@@ -153,9 +153,9 @@ title: Working examples
[PyAV]: https://github.com/PyAV-Org/PyAV
[SimpleJSON]: https://github.com/simplejson/simplejson
[OpenColorIO]: https://github.com/AcademySoftwareFoundation/OpenColorIO
[pikepdf]: https://github.com/pikepdf/pikepdf
[Line Profiler]: https://github.com/pyutils/line_profiler
[PyTables]: https://github.com/PyTables/PyTables
[pikepdf]: https://github.com/pikepdf/pikepdf
[OpenTimelineIO]: https://github.com/PixarAnimationStudios/OpenTimelineIO
[ruptures]: https://github.com/deepcharles/ruptures
[aioquic]: https://github.com/aiortc/aioquic
@@ -174,9 +174,9 @@ title: Working examples
[tgcalls]: https://github.com/MarshalX/tgcalls
[pybind11 python_example]: https://github.com/pybind/python_example
[dd-trace-py]: https://github.com/DataDog/dd-trace-py
[cyvcf2]: https://github.com/brentp/cyvcf2
[time-machine]: https://github.com/adamchainz/time-machine
[sourmash]: https://github.com/dib-lab/sourmash
[time-machine]: https://github.com/adamchainz/time-machine
[cyvcf2]: https://github.com/brentp/cyvcf2
[CTranslate2]: https://github.com/OpenNMT/CTranslate2
[abess]: https://github.com/abess-team/abess
[matrixprofile]: https://github.com/matrix-profile-foundation/matrixprofile
@@ -191,18 +191,18 @@ title: Working examples
[Python-WebRTC]: https://github.com/MarshalX/python-webrtc
[pybase64]: https://github.com/mayeut/pybase64
[Arbor]: https://github.com/arbor-sim/arbor
[etebase-py]: https://github.com/etesync/etebase-py
[fathon]: https://github.com/stfbnc/fathon
[etebase-py]: https://github.com/etesync/etebase-py
[Imagecodecs (fork)]: https://github.com/czaki/imagecodecs_build
[polaroid]: https://github.com/daggy1234/polaroid
[numpythia]: https://github.com/scikit-hep/numpythia
[clang-format]: https://github.com/ssciwr/clang-format-wheel
[pyjet]: https://github.com/scikit-hep/pyjet
[numpythia]: https://github.com/scikit-hep/numpythia
[power-grid-model]: https://github.com/alliander-opensource/power-grid-model
[pybind11 scikit_build_example]: https://github.com/pybind/scikit_build_example
[ninja]: https://github.com/scikit-build/ninja-python-distributions
[GSD]: https://github.com/glotzerlab/gsd
[pillow-heif]: https://github.com/bigcat88/pillow_heif
[GSD]: https://github.com/glotzerlab/gsd
[pyinstrument_cext]: https://github.com/joerick/pyinstrument_cext
[xmlstarlet]: https://github.com/dimitern/xmlstarlet
[CorrectionLib]: https://github.com/cms-nanoAOD/correctionlib
@@ -218,105 +218,105 @@ title: Working examples
[apple icon]: data/readme_icons/apple.svg
[linux icon]: data/readme_icons/linux.svg
<!-- scikit-learn: 49827, last pushed 0 days ago -->
<!-- Tornado: 20521, last pushed 2 days ago -->
<!-- NumPy: 20265, last pushed 0 days ago -->
<!-- pytorch-fairseq: 16785, last pushed 0 days ago -->
<!-- Matplotlib: 15401, last pushed 0 days ago -->
<!-- Kivy: 14554, last pushed 2 days ago -->
<!-- NCNN: 14371, last pushed 0 days ago -->
<!-- Prophet: 14355, last pushed 16 days ago -->
<!-- MyPy: 12962, last pushed 0 days ago -->
<!-- pydantic: 9748, last pushed 2 days ago -->
<!-- uvloop: 8562, last pushed 111 days ago -->
<!-- psutil: 8332, last pushed 2 days ago -->
<!-- MemRay: 7309, last pushed 0 days ago -->
<!-- vaex: 7014, last pushed 1 days ago -->
<!-- Google Benchmark: 6408, last pushed 16 days ago -->
<!-- Apache Beam: 5467, last pushed 0 days ago -->
<!-- asyncpg: 5434, last pushed 31 days ago -->
<!-- scikit-image: 4877, last pushed 0 days ago -->
<!-- duckdb: 4808, last pushed 0 days ago -->
<!-- PyGame: 4731, last pushed 0 days ago -->
<!-- cmake: 4701, last pushed 0 days ago -->
<!-- twisted-iocpsupport: 4574, last pushed 0 days ago -->
<!-- websockets: 3903, last pushed 3 days ago -->
<!-- cvxpy: 3881, last pushed 0 days ago -->
<!-- UltraJSON: 3662, last pushed 0 days ago -->
<!-- PyOxidizer: 3628, last pushed 0 days ago -->
<!-- Triton: 3590, last pushed 0 days ago -->
<!-- River: 3327, last pushed 0 days ago -->
<!-- OpenSpiel: 3163, last pushed 1 days ago -->
<!-- pyzmq: 3069, last pushed 2 days ago -->
<!-- aiortc: 2887, last pushed 1 days ago -->
<!-- vispy: 2858, last pushed 0 days ago -->
<!-- Implicit: 2753, last pushed 1 days ago -->
<!-- Confluent client for Kafka: 2731, last pushed 0 days ago -->
<!-- tinyobjloader: 2492, last pushed 121 days ago -->
<!-- Dependency Injector: 2061, last pushed 10 days ago -->
<!-- coverage.py: 2013, last pushed 2 days ago -->
<!-- PyCryptodome: 1981, last pushed 11 days ago -->
<!-- PyYAML: 1810, last pushed 11 days ago -->
<!-- numexpr: 1750, last pushed 7 days ago -->
<!-- h5py: 1716, last pushed 21 days ago -->
<!-- Wrapt: 1662, last pushed 40 days ago -->
<!-- PyAV: 1538, last pushed 0 days ago -->
<!-- SimpleJSON: 1481, last pushed 5 days ago -->
<!-- OpenColorIO: 1299, last pushed 0 days ago -->
<!-- Line Profiler: 1173, last pushed 0 days ago -->
<!-- PyTables: 1120, last pushed 8 days ago -->
<!-- pikepdf: 1042, last pushed 8 days ago -->
<!-- OpenTimelineIO: 1035, last pushed 5 days ago -->
<!-- ruptures: 945, last pushed 12 days ago -->
<!-- aioquic: 906, last pushed 0 days ago -->
<!-- DeepForest: 743, last pushed 278 days ago -->
<!-- google neuroglancer: 731, last pushed 7 days ago -->
<!-- Psycopg 3: 654, last pushed 0 days ago -->
<!-- Parselmouth: 649, last pushed 23 days ago -->
<!-- AutoPy: 634, last pushed 123 days ago -->
<!-- H3-py: 514, last pushed 0 days ago -->
<!-- Rtree: 473, last pushed 8 days ago -->
<!-- markupsafe: 465, last pushed 23 days ago -->
<!-- python-rapidjson: 449, last pushed 50 days ago -->
<!-- python-snappy: 430, last pushed 42 days ago -->
<!-- pybind11 cmake_example: 392, last pushed 16 days ago -->
<!-- KDEpy: 365, last pushed 76 days ago -->
<!-- tgcalls: 347, last pushed 109 days ago -->
<!-- pybind11 python_example: 320, last pushed 16 days ago -->
<!-- dd-trace-py: 315, last pushed 0 days ago -->
<!-- cyvcf2: 295, last pushed 43 days ago -->
<!-- time-machine: 292, last pushed 0 days ago -->
<!-- sourmash: 286, last pushed 0 days ago -->
<!-- CTranslate2: 263, last pushed 0 days ago -->
<!-- abess: 261, last pushed 2 days ago -->
<!-- matrixprofile: 256, last pushed 306 days ago -->
<!-- jq.py: 212, last pushed 80 days ago -->
<!-- iminuit: 199, last pushed 6 days ago -->
<!-- Tokenizer: 174, last pushed 51 days ago -->
<!-- PyGLM: 138, last pushed 30 days ago -->
<!-- bx-python: 113, last pushed 112 days ago -->
<!-- boost-histogram: 110, last pushed 9 days ago -->
<!-- iDynTree: 103, last pushed 16 days ago -->
<!-- TgCrypto: 96, last pushed 54 days ago -->
<!-- Python-WebRTC: 88, last pushed 48 days ago -->
<!-- pybase64: 82, last pushed 2 days ago -->
<!-- Arbor: 72, last pushed 0 days ago -->
<!-- etebase-py: 56, last pushed 121 days ago -->
<!-- fathon: 44, last pushed 161 days ago -->
<!-- Imagecodecs (fork): 42, last pushed 58 days ago -->
<!-- polaroid: 35, last pushed 137 days ago -->
<!-- numpythia: 33, last pushed 23 days ago -->
<!-- clang-format: 33, last pushed 1 days ago -->
<!-- pyjet: 32, last pushed 23 days ago -->
<!-- power-grid-model: 31, last pushed 0 days ago -->
<!-- pybind11 scikit_build_example: 23, last pushed 16 days ago -->
<!-- ninja: 23, last pushed 3 days ago -->
<!-- GSD: 19, last pushed 12 days ago -->
<!-- pillow-heif: 18, last pushed 2 days ago -->
<!-- pyinstrument_cext: 10, last pushed 201 days ago -->
<!-- xmlstarlet: 9, last pushed 16 days ago -->
<!-- CorrectionLib: 8, last pushed 7 days ago -->
<!-- SiPM: 6, last pushed 8 days ago -->
<!-- scikit-learn: 50139, last pushed 0 days ago -->
<!-- Tornado: 20546, last pushed 18 days ago -->
<!-- NumPy: 20488, last pushed 0 days ago -->
<!-- pytorch-fairseq: 17023, last pushed 1 days ago -->
<!-- Matplotlib: 15520, last pushed 0 days ago -->
<!-- Kivy: 14633, last pushed 5 days ago -->
<!-- NCNN: 14617, last pushed 0 days ago -->
<!-- Prophet: 14454, last pushed 0 days ago -->
<!-- MyPy: 13130, last pushed 0 days ago -->
<!-- pydantic: 9970, last pushed 1 days ago -->
<!-- uvloop: 8623, last pushed 7 days ago -->
<!-- psutil: 8395, last pushed 1 days ago -->
<!-- MemRay: 8343, last pushed 2 days ago -->
<!-- vaex: 7075, last pushed 2 days ago -->
<!-- Google Benchmark: 6476, last pushed 0 days ago -->
<!-- Apache Beam: 5517, last pushed 0 days ago -->
<!-- asyncpg: 5481, last pushed 11 days ago -->
<!-- duckdb: 5058, last pushed 0 days ago -->
<!-- scikit-image: 4909, last pushed 2 days ago -->
<!-- PyGame: 4829, last pushed 0 days ago -->
<!-- cmake: 4767, last pushed 0 days ago -->
<!-- twisted-iocpsupport: 4602, last pushed 0 days ago -->
<!-- websockets: 3939, last pushed 7 days ago -->
<!-- cvxpy: 3925, last pushed 0 days ago -->
<!-- PyOxidizer: 3749, last pushed 7 days ago -->
<!-- UltraJSON: 3688, last pushed 4 days ago -->
<!-- Triton: 3635, last pushed 0 days ago -->
<!-- River: 3372, last pushed 0 days ago -->
<!-- OpenSpiel: 3185, last pushed 1 days ago -->
<!-- pyzmq: 3084, last pushed 0 days ago -->
<!-- aiortc: 2917, last pushed 12 days ago -->
<!-- vispy: 2872, last pushed 5 days ago -->
<!-- Implicit: 2787, last pushed 5 days ago -->
<!-- Confluent client for Kafka: 2780, last pushed 2 days ago -->
<!-- tinyobjloader: 2530, last pushed 146 days ago -->
<!-- Dependency Injector: 2119, last pushed 35 days ago -->
<!-- coverage.py: 2045, last pushed 0 days ago -->
<!-- PyCryptodome: 2004, last pushed 3 days ago -->
<!-- PyYAML: 1839, last pushed 11 days ago -->
<!-- numexpr: 1754, last pushed 32 days ago -->
<!-- h5py: 1735, last pushed 0 days ago -->
<!-- Wrapt: 1678, last pushed 21 days ago -->
<!-- PyAV: 1563, last pushed 3 days ago -->
<!-- SimpleJSON: 1487, last pushed 30 days ago -->
<!-- OpenColorIO: 1311, last pushed 1 days ago -->
<!-- pikepdf: 1221, last pushed 0 days ago -->
<!-- Line Profiler: 1214, last pushed 17 days ago -->
<!-- PyTables: 1125, last pushed 33 days ago -->
<!-- OpenTimelineIO: 1055, last pushed 0 days ago -->
<!-- ruptures: 962, last pushed 5 days ago -->
<!-- aioquic: 926, last pushed 13 days ago -->
<!-- DeepForest: 758, last pushed 8 days ago -->
<!-- google neuroglancer: 734, last pushed 2 days ago -->
<!-- Psycopg 3: 676, last pushed 0 days ago -->
<!-- Parselmouth: 658, last pushed 48 days ago -->
<!-- AutoPy: 643, last pushed 148 days ago -->
<!-- H3-py: 523, last pushed 1 days ago -->
<!-- Rtree: 480, last pushed 33 days ago -->
<!-- markupsafe: 471, last pushed 21 days ago -->
<!-- python-rapidjson: 452, last pushed 75 days ago -->
<!-- python-snappy: 435, last pushed 67 days ago -->
<!-- pybind11 cmake_example: 402, last pushed 3 days ago -->
<!-- KDEpy: 373, last pushed 101 days ago -->
<!-- tgcalls: 356, last pushed 15 days ago -->
<!-- pybind11 python_example: 324, last pushed 10 days ago -->
<!-- dd-trace-py: 322, last pushed 2 days ago -->
<!-- sourmash: 305, last pushed 2 days ago -->
<!-- time-machine: 300, last pushed 1 days ago -->
<!-- cyvcf2: 297, last pushed 2 days ago -->
<!-- CTranslate2: 271, last pushed 2 days ago -->
<!-- abess: 263, last pushed 0 days ago -->
<!-- matrixprofile: 259, last pushed 331 days ago -->
<!-- jq.py: 215, last pushed 105 days ago -->
<!-- iminuit: 205, last pushed 6 days ago -->
<!-- Tokenizer: 179, last pushed 76 days ago -->
<!-- PyGLM: 139, last pushed 55 days ago -->
<!-- bx-python: 113, last pushed 137 days ago -->
<!-- boost-histogram: 113, last pushed 4 days ago -->
<!-- iDynTree: 105, last pushed 3 days ago -->
<!-- TgCrypto: 104, last pushed 79 days ago -->
<!-- Python-WebRTC: 89, last pushed 73 days ago -->
<!-- pybase64: 83, last pushed 3 days ago -->
<!-- Arbor: 72, last pushed 2 days ago -->
<!-- fathon: 59, last pushed 186 days ago -->
<!-- etebase-py: 57, last pushed 146 days ago -->
<!-- Imagecodecs (fork): 43, last pushed 5 days ago -->
<!-- polaroid: 38, last pushed 11 days ago -->
<!-- clang-format: 37, last pushed 17 days ago -->
<!-- pyjet: 33, last pushed 19 days ago -->
<!-- numpythia: 33, last pushed 20 days ago -->
<!-- power-grid-model: 32, last pushed 0 days ago -->
<!-- pybind11 scikit_build_example: 25, last pushed 2 days ago -->
<!-- ninja: 24, last pushed 13 days ago -->
<!-- pillow-heif: 21, last pushed 4 days ago -->
<!-- GSD: 19, last pushed 20 days ago -->
<!-- pyinstrument_cext: 10, last pushed 226 days ago -->
<!-- xmlstarlet: 9, last pushed 6 days ago -->
<!-- CorrectionLib: 9, last pushed 23 days ago -->
<!-- SiPM: 6, last pushed 2 days ago -->
<!-- END bin/projects.py -->
+1 -1
View File
@@ -12,7 +12,7 @@ stack: python 3.7
init:
- cmd: set PATH=C:\Python37;C:\Python37\Scripts;%PATH%
install: python -m pip install cibuildwheel==2.5.0
install: python -m pip install cibuildwheel==2.6.0
build_script: python -m cibuildwheel --output-dir wheelhouse
+3 -3
View File
@@ -6,7 +6,7 @@ jobs:
- bash: |
set -o errexit
python3 -m pip install --upgrade pip
pip3 install cibuildwheel==2.5.0
pip3 install cibuildwheel==2.6.0
displayName: Install dependencies
- bash: cibuildwheel --output-dir wheelhouse .
displayName: Build wheels
@@ -20,7 +20,7 @@ jobs:
- bash: |
set -o errexit
python3 -m pip install --upgrade pip
python3 -m pip install cibuildwheel==2.5.0
python3 -m pip install cibuildwheel==2.6.0
displayName: Install dependencies
- bash: cibuildwheel --output-dir wheelhouse .
displayName: Build wheels
@@ -34,7 +34,7 @@ jobs:
- bash: |
set -o errexit
python -m pip install --upgrade pip
pip install cibuildwheel==2.5.0
pip install cibuildwheel==2.6.0
displayName: Install dependencies
- bash: cibuildwheel --output-dir wheelhouse .
displayName: Build wheels
+2 -2
View File
@@ -11,7 +11,7 @@ jobs:
- run:
name: Build the Linux wheels.
command: |
pip3 install --user cibuildwheel==2.5.0
pip3 install --user cibuildwheel==2.6.0
cibuildwheel --output-dir wheelhouse
- store_artifacts:
path: wheelhouse/
@@ -25,7 +25,7 @@ jobs:
- run:
name: Build the OS X wheels.
command: |
pip3 install cibuildwheel==2.5.0
pip3 install cibuildwheel==2.6.0
cibuildwheel --output-dir wheelhouse
- store_artifacts:
path: wheelhouse/
+1 -1
View File
@@ -10,7 +10,7 @@ jobs:
- uses: actions/checkout@v2
- name: Build wheels
uses: pypa/cibuildwheel@v2.5.0
uses: pypa/cibuildwheel@v2.6.0
env:
CIBW_ARCHS_MACOS: x86_64 universal2
+1 -1
View File
@@ -22,7 +22,7 @@ jobs:
- uses: actions/checkout@v2
- name: Build wheels
uses: pypa/cibuildwheel@v2.5.0
uses: pypa/cibuildwheel@v2.6.0
- uses: actions/upload-artifact@v2
with:
+1 -1
View File
@@ -14,7 +14,7 @@ jobs:
- uses: actions/checkout@v2
- name: Build wheels
uses: pypa/cibuildwheel@v2.5.0
uses: pypa/cibuildwheel@v2.6.0
# to supply options, put them in 'env', like:
# env:
# CIBW_SOME_OPTION: value
+1 -1
View File
@@ -25,7 +25,7 @@ jobs:
platforms: all
- name: Build wheels
uses: pypa/cibuildwheel@v2.5.0
uses: pypa/cibuildwheel@v2.6.0
env:
# configure cibuildwheel to build native archs ('auto'), and some
# emulated ones
+1 -1
View File
@@ -12,7 +12,7 @@ linux:
DOCKER_TLS_CERTDIR: ""
script:
- curl -sSL https://get.docker.com/ | sh
- python -m pip install cibuildwheel==2.5.0
- python -m pip install cibuildwheel==2.6.0
- cibuildwheel --output-dir wheelhouse
artifacts:
paths:
+1 -1
View File
@@ -19,7 +19,7 @@ jobs:
- ln -s /c/Python38/python.exe /c/Python38/python3.exe
install:
- python3 -m pip install cibuildwheel==2.5.0
- python3 -m pip install cibuildwheel==2.6.0
script:
# build the wheels, put them into './dist'
+1 -1
View File
@@ -25,7 +25,7 @@ jobs:
- ln -s /c/Python38/python.exe /c/Python38/python3.exe
install:
- python3 -m pip install cibuildwheel==2.5.0
- python3 -m pip install cibuildwheel==2.6.0
script:
# build the wheels, put them into './wheelhouse'
+2 -2
View File
@@ -55,7 +55,7 @@ jobs:
- stage: deploy
name: Build and deploy Linux wheels
services: docker
install: python3 -m pip install cibuildwheel==2.5.0 twine
install: python3 -m pip install cibuildwheel==2.6.0 twine
script: python3 -m cibuildwheel --output-dir wheelhouse
after_success: python3 -m twine upload --skip-existing wheelhouse/*.whl
# Deploy on windows
@@ -63,7 +63,7 @@ jobs:
name: Build and deploy Windows wheels
os: windows
language: shell
install: python3 -m pip install cibuildwheel==2.5.0 twine
install: python3 -m pip install cibuildwheel==2.6.0 twine
script: python3 -m cibuildwheel --output-dir wheelhouse
after_success: python3 -m twine upload --skip-existing wheelhouse/*.whl
+1 -1
View File
@@ -7,7 +7,7 @@ import nox
nox.options.sessions = ["lint", "pylint", "check_manifest", "tests"]
PYTHON_ALL_VERSIONS = ["3.6", "3.7", "3.8", "3.9", "3.10"]
PYTHON_ALL_VERSIONS = ["3.6", "3.7", "3.8", "3.9", "3.10", "3.11"]
DIR = Path(__file__).parent.resolve()
+1 -1
View File
@@ -1,6 +1,6 @@
[metadata]
name = cibuildwheel
version = 2.5.0
version = 2.6.0
description = Build Python wheels on CI with minimal configuration.
long_description = file: README.md
long_description_content_type = text/markdown
+1 -1
View File
@@ -45,6 +45,6 @@ def test(tmp_path):
expected_wheels = [
w.replace("cp38-cp38", "cp38-abi3")
for w in utils.expected_wheels("spam", "0.1.0")
if "-pp" not in w and "-cp39" not in w and "-cp310" not in w
if "-pp" not in w and "-cp39" not in w and "-cp310" not in w and "-cp311" not in w
]
assert set(actual_wheels) == set(expected_wheels)
+4 -4
View File
@@ -72,8 +72,8 @@ def test(manylinux_image, tmp_path):
# We don't have a manylinux1 image for PyPy & CPython 3.10 and above
add_env["CIBW_SKIP"] = "pp* cp31*"
if manylinux_image in {"manylinux2010"}:
# We don't have a manylinux2010 image for PyPy 3.9
add_env["CIBW_SKIP"] = "pp39*"
# We don't have a manylinux2010 image for PyPy 3.9, CPython 3.11
add_env["CIBW_SKIP"] = "pp39* cp311*"
actual_wheels = utils.cibuildwheel_run(project_dir, add_env=add_env)
@@ -92,6 +92,6 @@ def test(manylinux_image, tmp_path):
# remove PyPy & CPython 3.10 and above
expected_wheels = [w for w in expected_wheels if "-pp" not in w and "-cp31" not in w]
if manylinux_image in {"manylinux2010"}:
# remove PyPy 3.9
expected_wheels = [w for w in expected_wheels if "-pp39" not in w]
# remove PyPy 3.9 & CPython 3.11
expected_wheels = [w for w in expected_wheels if "-pp39" not in w and "-cp311" not in w]
assert set(actual_wheels) == set(expected_wheels)
+10 -3
View File
@@ -139,14 +139,21 @@ def expected_wheels(
if musllinux_versions is None:
musllinux_versions = ["musllinux_1_1"]
python_abi_tags = ["cp36-cp36m", "cp37-cp37m", "cp38-cp38", "cp39-cp39", "cp310-cp310"]
python_abi_tags = [
"cp36-cp36m",
"cp37-cp37m",
"cp38-cp38",
"cp39-cp39",
"cp310-cp310",
"cp311-cp311",
]
if machine_arch in ["x86_64", "AMD64", "x86", "aarch64"]:
python_abi_tags += ["pp37-pypy37_pp73", "pp38-pypy38_pp73", "pp39-pypy39_pp73"]
if platform == "macos" and machine_arch == "arm64":
# currently, arm64 macs are only supported by cp39 & cp310
python_abi_tags = ["cp39-cp39", "cp310-cp310"]
# currently, arm64 macs are only supported by cp39, cp310 & cp311
python_abi_tags = ["cp39-cp39", "cp310-cp310", "cp311-cp311"]
wheels = []
+4 -4
View File
@@ -1,4 +1,3 @@
import pytest
from packaging.specifiers import SpecifierSet
from cibuildwheel.util import BuildSelector
@@ -10,6 +9,7 @@ def test_build():
assert build_selector("cp36-manylinux_x86_64")
assert build_selector("cp37-manylinux_x86_64")
assert build_selector("cp310-manylinux_x86_64")
assert not build_selector("cp311-manylinux_x86_64")
assert build_selector("pp36-manylinux_x86_64")
assert build_selector("pp37-manylinux_x86_64")
assert build_selector("cp36-manylinux_i686")
@@ -28,11 +28,11 @@ def test_build():
assert build_selector("cp36-win_amd64")
assert build_selector("cp37-win_amd64")
assert build_selector("cp310-win_amd64")
assert not build_selector("cp311-win_amd64")
assert not build_selector("pp36-win_amd64")
assert not build_selector("pp37-win_amd64")
@pytest.mark.skip("this test only makes sense when we have a prerelease python to test with")
def test_build_filter_pre():
build_selector = BuildSelector(
build_config="cp3*-* *-manylinux*",
@@ -41,9 +41,9 @@ def test_build_filter_pre():
)
assert build_selector("cp37-manylinux_x86_64")
assert build_selector("cp310-manylinux_x86_64")
assert build_selector("cp311-manylinux_x86_64")
assert build_selector("cp37-win_amd64")
assert build_selector("cp310-win_amd64")
assert build_selector("cp311-win_amd64")
def test_skip():