From 6db52297745c0c0c212ce4cd9177bf5b1497b00b Mon Sep 17 00:00:00 2001 From: Henry Schreiner Date: Thu, 21 Oct 2021 22:23:32 -0400 Subject: [PATCH 01/20] fix: artificial limiting in pycln breaks on 3.10 (#886) --- .pre-commit-config.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index d03660a9..aad8a2a4 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -31,6 +31,7 @@ repos: hooks: - id: pycln args: [--config=pyproject.toml] + stages: [manual] # disabled due to artificial limit on Python 3.10 - repo: https://github.com/PyCQA/isort rev: 5.9.3 From 298a8baef7c63393389fd742098e56b62a5e418d Mon Sep 17 00:00:00 2001 From: Joe Rickerby Date: Fri, 22 Oct 2021 14:00:03 +0100 Subject: [PATCH 02/20] Bump version: v2.2.0 --- README.md | 20 ++++++++++---------- cibuildwheel/__init__.py | 2 +- docs/changelog.md | 18 +++++++++--------- docs/faq.md | 4 ++-- docs/setup.md | 4 ++-- examples/appveyor-minimal.yml | 2 +- examples/azure-pipelines-minimal.yml | 6 +++--- examples/circleci-minimal.yml | 4 ++-- examples/github-apple-silicon.yml | 2 +- examples/github-deploy.yml | 2 +- examples/github-minimal.yml | 2 +- examples/github-with-qemu.yml | 2 +- examples/gitlab-minimal.yml | 2 +- examples/travis-ci-deploy.yml | 2 +- examples/travis-ci-minimal.yml | 2 +- examples/travis-ci-test-and-deploy.yml | 4 ++-- setup.cfg | 2 +- 17 files changed, 40 insertions(+), 40 deletions(-) diff --git a/README.md b/README.md index adface6d..a60c264e 100644 --- a/README.md +++ b/README.md @@ -85,7 +85,7 @@ jobs: - uses: actions/setup-python@v2 - name: Install cibuildwheel - run: python -m pip install cibuildwheel==2.2.0b1 + run: python -m pip install cibuildwheel==2.2.0 - name: Build wheels run: python -m cibuildwheel --output-dir wheelhouse @@ -189,24 +189,24 @@ Changelog -### v2.2.0 (prerelease) +### v2.2.0 -_Currently in prerelease. The below release notes will be condensed into a single entry on final release._ +_22 October 2021_ -_v2.2.0b1 (19 October 2021)_ +- 🌟 Added support for [musllinux](https://www.python.org/dev/peps/pep-0656/). Support for this new wheel format lets projects build wheels for Linux distributions that use [musl libc](https://musl.libc.org/), notably, [Alpine](https://alpinelinux.org/) Docker containers. (#768) -- 🌟 TOML option overrides. This provides much greater flexibility in configuration via pyproject.toml. + Musllinux builds are enabled by default. If you're not ready to build musllinux, add `*-musllinux_*` to your [`CIBW_SKIP`/`skip`](https://cibuildwheel.readthedocs.io/en/stable/options/#build-skip) option. Or, you might have to make some changes to your options - to simplify that process, you can use... + +- 🌟 TOML option overrides! This provides much greater flexibility in configuration via pyproject.toml. (#854) You can now set build options for any subset of your builds using a match pattern. So, for example, you can customise CPython 3.8 builds with an override on `cp38-*` or musllinux builds by selecting `*musllinux*`. Check out [the docs](https://cibuildwheel.readthedocs.io/en/latest/options/#overrides) for more info on the specifics. -_v2.2.0a1 (23 September 2021)_ +- 🛠 Added support for building PyPy wheels on macOS 11 CI runners. (#875) -- 🌟 Added support for [musllinux](https://www.python.org/dev/peps/pep-0656/). Support for this new wheel format lets projects build wheels for Linux distributions that use [musl libc](https://musl.libc.org/), notably, [Alpine](https://alpinelinux.org/) Docker containers. - - Musllinux builds are enabled by default. To disable them on your project, add `*-musllinux_*` to your [`CIBW_SKIP`/`skip`](https://cibuildwheel.readthedocs.io/en/stable/options/#build-skip) - option. (#768) - 🛠 Setting an empty string for the [`CIBW_*_IMAGE`](https://cibuildwheel.readthedocs.io/en/stable/options/#manylinux-image) option will now fallthrough to the config file or cibuildwheel's default, rather than causing an error. This makes the option easier to use in CI build matricies. (#829) +- 🛠 Support for TOML 1.0 when reading config files, via the `tomli` package. (#876) + ### v2.1.3 _6 October 2021_ diff --git a/cibuildwheel/__init__.py b/cibuildwheel/__init__.py index 218eb8fd..8a124bf6 100644 --- a/cibuildwheel/__init__.py +++ b/cibuildwheel/__init__.py @@ -1 +1 @@ -__version__ = "2.2.0b1" +__version__ = "2.2.0" diff --git a/docs/changelog.md b/docs/changelog.md index 478c9865..7b904153 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -2,24 +2,24 @@ title: Changelog --- -### v2.2.0 (prerelease) +### v2.2.0 -_Currently in prerelease. The below release notes will be condensed into a single entry on final release._ +_22 October 2021_ -_v2.2.0b1 (19 October 2021)_ +- 🌟 Added support for [musllinux](https://www.python.org/dev/peps/pep-0656/). Support for this new wheel format lets projects build wheels for Linux distributions that use [musl libc](https://musl.libc.org/), notably, [Alpine](https://alpinelinux.org/) Docker containers. (#768) -- 🌟 TOML option overrides. This provides much greater flexibility in configuration via pyproject.toml. + Musllinux builds are enabled by default. If you're not ready to build musllinux, add `*-musllinux_*` to your [`CIBW_SKIP`/`skip`](https://cibuildwheel.readthedocs.io/en/stable/options/#build-skip) option. Or, you might have to make some changes to your options - to simplify that process, you can use... + +- 🌟 TOML option overrides! This provides much greater flexibility in configuration via pyproject.toml. (#854) You can now set build options for any subset of your builds using a match pattern. So, for example, you can customise CPython 3.8 builds with an override on `cp38-*` or musllinux builds by selecting `*musllinux*`. Check out [the docs](https://cibuildwheel.readthedocs.io/en/latest/options/#overrides) for more info on the specifics. -_v2.2.0a1 (23 September 2021)_ +- 🛠 Added support for building PyPy wheels on macOS 11 CI runners. (#875) -- 🌟 Added support for [musllinux](https://www.python.org/dev/peps/pep-0656/). Support for this new wheel format lets projects build wheels for Linux distributions that use [musl libc](https://musl.libc.org/), notably, [Alpine](https://alpinelinux.org/) Docker containers. - - Musllinux builds are enabled by default. To disable them on your project, add `*-musllinux_*` to your [`CIBW_SKIP`/`skip`](https://cibuildwheel.readthedocs.io/en/stable/options/#build-skip) - option. (#768) - 🛠 Setting an empty string for the [`CIBW_*_IMAGE`](https://cibuildwheel.readthedocs.io/en/stable/options/#manylinux-image) option will now fallthrough to the config file or cibuildwheel's default, rather than causing an error. This makes the option easier to use in CI build matricies. (#829) +- 🛠 Support for TOML 1.0 when reading config files, via the `tomli` package. (#876) + ### v2.1.3 _6 October 2021_ diff --git a/docs/faq.md b/docs/faq.md index a5a0738a..20f712bd 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -127,7 +127,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.2.0b1 +uses: pypa/cibuildwheel@v2.2.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. @@ -153,7 +153,7 @@ The second option, and the only one that supports other CI systems, is using a ` ```bash # requirements-cibw.txt -cibuildwheel==2.2.0b1 +cibuildwheel==2.2.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: diff --git a/docs/setup.md b/docs/setup.md index 85e935f1..969fb2b7 100644 --- a/docs/setup.md +++ b/docs/setup.md @@ -118,7 +118,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.2.0b1 + run: pipx run cibuildwheel==2.2.0 - uses: actions/upload-artifact@v2 with: @@ -153,7 +153,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.2.0b1 + run: python -m pip install cibuildwheel==2.2.0 - name: Build wheels run: python -m cibuildwheel --output-dir wheelhouse diff --git a/examples/appveyor-minimal.yml b/examples/appveyor-minimal.yml index 1c49c93c..baeede28 100644 --- a/examples/appveyor-minimal.yml +++ b/examples/appveyor-minimal.yml @@ -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.2.0b1 +install: python -m pip install cibuildwheel==2.2.0 build_script: python -m cibuildwheel --output-dir wheelhouse diff --git a/examples/azure-pipelines-minimal.yml b/examples/azure-pipelines-minimal.yml index 3106615a..5ba0a329 100644 --- a/examples/azure-pipelines-minimal.yml +++ b/examples/azure-pipelines-minimal.yml @@ -6,7 +6,7 @@ jobs: - bash: | set -o errexit python3 -m pip install --upgrade pip - pip3 install cibuildwheel==2.2.0b1 + pip3 install cibuildwheel==2.2.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.2.0b1 + python3 -m pip install cibuildwheel==2.2.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.2.0b1 + pip install cibuildwheel==2.2.0 displayName: Install dependencies - bash: cibuildwheel --output-dir wheelhouse . displayName: Build wheels diff --git a/examples/circleci-minimal.yml b/examples/circleci-minimal.yml index fda7752a..92c53700 100644 --- a/examples/circleci-minimal.yml +++ b/examples/circleci-minimal.yml @@ -11,7 +11,7 @@ jobs: - run: name: Build the Linux wheels. command: | - pip3 install --user cibuildwheel==2.2.0b1 + pip3 install --user cibuildwheel==2.2.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.2.0b1 + pip3 install cibuildwheel==2.2.0 cibuildwheel --output-dir wheelhouse - store_artifacts: path: wheelhouse/ diff --git a/examples/github-apple-silicon.yml b/examples/github-apple-silicon.yml index b042ff11..c50038c1 100644 --- a/examples/github-apple-silicon.yml +++ b/examples/github-apple-silicon.yml @@ -10,7 +10,7 @@ jobs: - uses: actions/checkout@v2 - name: Build wheels - uses: pypa/cibuildwheel@v2.2.0b1 + uses: pypa/cibuildwheel@v2.2.0 env: CIBW_ARCHS_MACOS: x86_64 universal2 diff --git a/examples/github-deploy.yml b/examples/github-deploy.yml index b9ea8975..94601903 100644 --- a/examples/github-deploy.yml +++ b/examples/github-deploy.yml @@ -27,7 +27,7 @@ jobs: python-version: '3.8' - name: Build wheels - uses: pypa/cibuildwheel@v2.2.0b1 + uses: pypa/cibuildwheel@v2.2.0 - uses: actions/upload-artifact@v2 with: diff --git a/examples/github-minimal.yml b/examples/github-minimal.yml index 4ac0e3b2..134587db 100644 --- a/examples/github-minimal.yml +++ b/examples/github-minimal.yml @@ -14,7 +14,7 @@ jobs: - uses: actions/checkout@v2 - name: Build wheels - uses: pypa/cibuildwheel@v2.2.0b1 + uses: pypa/cibuildwheel@v2.2.0 # to supply options, put them in 'env', like: # env: # CIBW_SOME_OPTION: value diff --git a/examples/github-with-qemu.yml b/examples/github-with-qemu.yml index 63028cbd..b886a31f 100644 --- a/examples/github-with-qemu.yml +++ b/examples/github-with-qemu.yml @@ -25,7 +25,7 @@ jobs: platforms: all - name: Build wheels - uses: pypa/cibuildwheel@v2.2.0b1 + uses: pypa/cibuildwheel@v2.2.0 env: # configure cibuildwheel to build native archs ('auto'), and some # emulated ones diff --git a/examples/gitlab-minimal.yml b/examples/gitlab-minimal.yml index d7445546..3bd39ecf 100644 --- a/examples/gitlab-minimal.yml +++ b/examples/gitlab-minimal.yml @@ -12,7 +12,7 @@ linux: DOCKER_TLS_CERTDIR: "" script: - curl -sSL https://get.docker.com/ | sh - - python -m pip install cibuildwheel==2.2.0b1 + - python -m pip install cibuildwheel==2.2.0 - cibuildwheel --output-dir wheelhouse artifacts: paths: diff --git a/examples/travis-ci-deploy.yml b/examples/travis-ci-deploy.yml index 39c96df1..ddc55a17 100644 --- a/examples/travis-ci-deploy.yml +++ b/examples/travis-ci-deploy.yml @@ -19,7 +19,7 @@ jobs: - ln -s /c/Python38/python.exe /c/Python38/python3.exe install: - - python3 -m pip install cibuildwheel==2.2.0b1 + - python3 -m pip install cibuildwheel==2.2.0 script: # build the wheels, put them into './wheelhouse' diff --git a/examples/travis-ci-minimal.yml b/examples/travis-ci-minimal.yml index 932b460d..e243b628 100644 --- a/examples/travis-ci-minimal.yml +++ b/examples/travis-ci-minimal.yml @@ -25,7 +25,7 @@ jobs: - ln -s /c/Python38/python.exe /c/Python38/python3.exe install: - - python3 -m pip install cibuildwheel==2.2.0b1 + - python3 -m pip install cibuildwheel==2.2.0 script: # build the wheels, put them into './wheelhouse' diff --git a/examples/travis-ci-test-and-deploy.yml b/examples/travis-ci-test-and-deploy.yml index a7787b34..8e58009f 100644 --- a/examples/travis-ci-test-and-deploy.yml +++ b/examples/travis-ci-test-and-deploy.yml @@ -57,7 +57,7 @@ jobs: - stage: deploy name: Build and deploy Linux wheels services: docker - install: python3 -m pip install cibuildwheel==2.2.0b1 + install: python3 -m pip install cibuildwheel==2.2.0 script: python3 -m cibuildwheel --output-dir wheelhouse after_success: | python3 -m pip install twine @@ -67,7 +67,7 @@ jobs: name: Build and deploy Windows wheels os: windows language: shell - install: python3 -m pip install cibuildwheel==2.2.0b1 + install: python3 -m pip install cibuildwheel==2.2.0 script: python3 -m cibuildwheel --output-dir wheelhouse after_success: | python3 -m pip install twine diff --git a/setup.cfg b/setup.cfg index 7f78f04d..5e8440b5 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = cibuildwheel -version = 2.2.0b1 +version = 2.2.0 description = Build Python wheels on CI with minimal configuration. long_description = file: README.md long_description_content_type = text/markdown From e7da7832efd0bf679872009627b675c95304ad52 Mon Sep 17 00:00:00 2001 From: Henry Schreiner Date: Fri, 22 Oct 2021 20:17:09 -0400 Subject: [PATCH 03/20] tests: rename a test for consistency (#885) --- unit_test/{test_wheel_print.py => wheel_print_test.py} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename unit_test/{test_wheel_print.py => wheel_print_test.py} (100%) diff --git a/unit_test/test_wheel_print.py b/unit_test/wheel_print_test.py similarity index 100% rename from unit_test/test_wheel_print.py rename to unit_test/wheel_print_test.py From 12c64365e2b201119a495d98f018f0159cfe3435 Mon Sep 17 00:00:00 2001 From: Henry Schreiner Date: Fri, 22 Oct 2021 22:34:38 -0400 Subject: [PATCH 04/20] fix: add missing config-file option to the action (#883) * fix: add missing config-file option to the action * feat: empty config-file triggers default behavior * Apply suggestions from code review Co-authored-by: Joe Rickerby Co-authored-by: Joe Rickerby --- action.yml | 5 +++++ cibuildwheel/__main__.py | 7 ++++--- cibuildwheel/options.py | 5 +++-- unit_test/utils.py | 2 +- 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/action.yml b/action.yml index 4c910ef3..3f5bcc07 100644 --- a/action.yml +++ b/action.yml @@ -9,6 +9,10 @@ inputs: description: 'Folder to place the outputs in, defaults to "wheelhouse"' required: false default: wheelhouse + config-file: + description: 'File containing the config, defaults to {package}/pyproject.toml' + required: false + default: '' branding: icon: package color: yellow @@ -24,5 +28,6 @@ runs: cibuildwheel ${{ inputs.package-dir }} --output-dir ${{ inputs.output-dir }} + --config-file "${{ input.config-file }}" 2>&1 shell: bash diff --git a/cibuildwheel/__main__.py b/cibuildwheel/__main__.py index c6a532f9..a04d3e82 100644 --- a/cibuildwheel/__main__.py +++ b/cibuildwheel/__main__.py @@ -57,14 +57,15 @@ def main() -> None: parser.add_argument( "--output-dir", - help="Destination folder for the wheels.", + help="Destination folder for the wheels. Default: wheelhouse.", ) parser.add_argument( "--config-file", + default="", help=""" - TOML config file for cibuildwheel. Defaults to pyproject.toml, but - can be overridden with this option. + TOML config file. Default: "", meaning {package}/pyproject.toml, + if it exists. """, ) diff --git a/cibuildwheel/options.py b/cibuildwheel/options.py index 902b64fa..9a207e9e 100644 --- a/cibuildwheel/options.py +++ b/cibuildwheel/options.py @@ -42,7 +42,7 @@ class CommandLineArguments: platform: Literal["auto", "linux", "macos", "windows"] archs: Optional[str] output_dir: Optional[str] - config_file: Optional[str] + config_file: str package_dir: str print_build_identifiers: bool allow_empty: bool @@ -335,8 +335,9 @@ class Options: def config_file_path(self) -> Optional[Path]: args = self.command_line_arguments - if args.config_file is not None: + if args.config_file: return Path(args.config_file.format(package=args.package_dir)) + # return pyproject.toml, if it's available pyproject_toml_path = Path(args.package_dir) / "pyproject.toml" if pyproject_toml_path.exists(): diff --git a/unit_test/utils.py b/unit_test/utils.py index 0f735916..61833fa2 100644 --- a/unit_test/utils.py +++ b/unit_test/utils.py @@ -7,7 +7,7 @@ def get_default_command_line_arguments() -> CommandLineArguments: defaults.platform = "auto" defaults.allow_empty = False defaults.archs = None - defaults.config_file = None + defaults.config_file = "" defaults.output_dir = None defaults.package_dir = "." defaults.prerelease_pythons = False From 4515cd22030c6ad8e4faf3f55794a9a67d8a2c18 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 25 Oct 2021 18:14:46 -0400 Subject: [PATCH 05/20] [pre-commit.ci] pre-commit autoupdate (#890) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/asottile/yesqa: v1.2.3 → v1.3.0](https://github.com/asottile/yesqa/compare/v1.2.3...v1.3.0) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index aad8a2a4..2a403cae 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -71,7 +71,7 @@ repos: additional_dependencies: *mypy-dependencies - repo: https://github.com/asottile/yesqa - rev: v1.2.3 + rev: v1.3.0 hooks: - id: yesqa additional_dependencies: &flake8-dependencies From 0bfbd5b30989746566d999a36e795cebd8e3d25f Mon Sep 17 00:00:00 2001 From: Henry Schreiner Date: Tue, 26 Oct 2021 12:06:09 -0400 Subject: [PATCH 06/20] fix: produce working SDists --- .github/workflows/test.yml | 1 + MANIFEST.in | 6 ++++++ noxfile.py | 12 +++++++++++- pyproject.toml | 15 +++++++++++++++ 4 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 MANIFEST.in diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 97b2bedd..0dcd29cf 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -22,6 +22,7 @@ jobs: - uses: actions/checkout@v2 - uses: actions/setup-python@v2 - uses: pre-commit/action@v2.0.3 + - run: pipx run nox -s check_manifest test: name: Test cibuildwheel on ${{ matrix.os }} diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 00000000..6fc0b394 --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1,6 @@ +recursive-include cibuildwheel *.cfg +recursive-include cibuildwheel *.in +recursive-include cibuildwheel *.py +recursive-include cibuildwheel *.toml +recursive-include cibuildwheel *.txt +recursive-include cibuildwheel *.typed diff --git a/noxfile.py b/noxfile.py index 0d4881e5..4ee397c9 100644 --- a/noxfile.py +++ b/noxfile.py @@ -4,7 +4,7 @@ from pathlib import Path import nox -nox.options.sessions = ["lint", "tests"] +nox.options.sessions = ["lint", "check_manifest", "tests"] PYTHON_ALL_VERSIONS = ["3.6", "3.7", "3.8", "3.9"] @@ -34,6 +34,16 @@ def lint(session: nox.Session) -> None: session.run("pre-commit", "run", "--all-files", *session.posargs) +@nox.session +def check_manifest(session: nox.Session) -> None: + """ + Ensure all needed files are included in the manifest. + """ + + session.install("check-manifest") + session.run("check-manifest", *session.posargs) + + @nox.session(python=PYTHON_ALL_VERSIONS) def update_constraints(session: nox.Session) -> None: """ diff --git a/pyproject.toml b/pyproject.toml index 2789fd27..7a7aa8f3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -67,3 +67,18 @@ ignore_missing_imports = true [tool.pycln] all = true + +[tool.check-manifest] +ignore = [ + ".*", + ".circleci/**", + "test/**", + "unit_test/**", + "docs/**", + "examples/**", + "bin/**", + "*.yml", + "CI.md", # TODO: can change test/test_ssl and remove this + "requirements-dev.txt", + "noxfile.py", +] From a1342c1b53c7b0fc26320683b6f78ac923e50a4a Mon Sep 17 00:00:00 2001 From: Henry Schreiner Date: Tue, 26 Oct 2021 12:11:08 -0400 Subject: [PATCH 07/20] ci: release to PyPI from CI on GitHub Release --- .github/workflows/release.yml | 40 +++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..cabc1e76 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,40 @@ +name: Release + +on: + workflow_dispatch: + pull_request: + release: + types: + - published + +jobs: + dist: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + + - name: Build SDist and wheel + run: pipx run build + + - uses: actions/upload-artifact@v2 + with: + path: dist/* + + - name: Check metadata + run: pipx run twine check dist/* + + publish: + needs: [dist] + runs-on: ubuntu-latest + if: github.event_name == 'release' && github.event.action == 'published' + + steps: + - uses: actions/download-artifact@v2 + with: + name: artifact + path: dist + + - uses: pypa/gh-action-pypi-publish@v1.4.2 + with: + user: __token__ + password: ${{ secrets.pypi_password }} From 90024def2cfa51157f8c64137ff8217c0d8bc42e Mon Sep 17 00:00:00 2001 From: Joe Rickerby Date: Tue, 26 Oct 2021 18:59:45 +0100 Subject: [PATCH 08/20] Bump version: v2.2.1b1 --- README.md | 21 +++++++++++++-------- cibuildwheel/__init__.py | 2 +- docs/changelog.md | 12 ++++++++++++ docs/faq.md | 4 ++-- docs/setup.md | 4 ++-- examples/appveyor-minimal.yml | 2 +- examples/azure-pipelines-minimal.yml | 6 +++--- examples/circleci-minimal.yml | 4 ++-- examples/github-apple-silicon.yml | 2 +- examples/github-deploy.yml | 2 +- examples/github-minimal.yml | 2 +- examples/github-with-qemu.yml | 2 +- examples/gitlab-minimal.yml | 2 +- examples/travis-ci-deploy.yml | 2 +- examples/travis-ci-minimal.yml | 2 +- examples/travis-ci-test-and-deploy.yml | 4 ++-- setup.cfg | 2 +- 17 files changed, 46 insertions(+), 29 deletions(-) diff --git a/README.md b/README.md index a60c264e..a54debd5 100644 --- a/README.md +++ b/README.md @@ -85,7 +85,7 @@ jobs: - uses: actions/setup-python@v2 - name: Install cibuildwheel - run: python -m pip install cibuildwheel==2.2.0 + run: python -m pip install cibuildwheel==2.2.1b1 - name: Build wheels run: python -m cibuildwheel --output-dir wheelhouse @@ -189,6 +189,16 @@ Changelog +### v2.2.1 + +_26 October 2021_ + +- 🛠 Added a `config-file` option on the GitHub Action to specify something + other than pyproject.toml in your GitHub Workflow file. (#883) +- 🐛 Fix missing resources in sdist and released wheel on PyPI. We've made + some internal change to our release processes to make them more reliable. + (#893, #894) + ### v2.2.0 _22 October 2021_ @@ -207,6 +217,8 @@ _22 October 2021_ - 🛠 Support for TOML 1.0 when reading config files, via the `tomli` package. (#876) +Note: This version is not available on PyPI due to some missing resources in the release files. Please use v2.2.1 instead. + ### v2.1.3 _6 October 2021_ @@ -229,13 +241,6 @@ _7 August 2021_ Note: v2.1.0 was a bad release, it was yanked from PyPI. -### v2.0.1 - -_25 July 2021_ - -- 📚 Docs improvements (#767) -- 🛠 Dependency updates, including delocate 0.9.0. - --- diff --git a/cibuildwheel/__init__.py b/cibuildwheel/__init__.py index 8a124bf6..c18b9652 100644 --- a/cibuildwheel/__init__.py +++ b/cibuildwheel/__init__.py @@ -1 +1 @@ -__version__ = "2.2.0" +__version__ = "2.2.1b1" diff --git a/docs/changelog.md b/docs/changelog.md index 7b904153..7d5b44c9 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -2,6 +2,16 @@ title: Changelog --- +### v2.2.1 + +_26 October 2021_ + +- 🛠 Added a `config-file` option on the GitHub Action to specify something + other than pyproject.toml in your GitHub Workflow file. (#883) +- 🐛 Fix missing resources in sdist and released wheel on PyPI. We've made + some internal change to our release processes to make them more reliable. + (#893, #894) + ### v2.2.0 _22 October 2021_ @@ -20,6 +30,8 @@ _22 October 2021_ - 🛠 Support for TOML 1.0 when reading config files, via the `tomli` package. (#876) +Note: This version is not available on PyPI due to some missing resources in the release files. Please use v2.2.1 instead. + ### v2.1.3 _6 October 2021_ diff --git a/docs/faq.md b/docs/faq.md index 20f712bd..c4947c9d 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -127,7 +127,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.2.0 +uses: pypa/cibuildwheel@v2.2.1b1 ``` 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. @@ -153,7 +153,7 @@ The second option, and the only one that supports other CI systems, is using a ` ```bash # requirements-cibw.txt -cibuildwheel==2.2.0 +cibuildwheel==2.2.1b1 ``` 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: diff --git a/docs/setup.md b/docs/setup.md index 969fb2b7..4758b88a 100644 --- a/docs/setup.md +++ b/docs/setup.md @@ -118,7 +118,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.2.0 + run: pipx run cibuildwheel==2.2.1b1 - uses: actions/upload-artifact@v2 with: @@ -153,7 +153,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.2.0 + run: python -m pip install cibuildwheel==2.2.1b1 - name: Build wheels run: python -m cibuildwheel --output-dir wheelhouse diff --git a/examples/appveyor-minimal.yml b/examples/appveyor-minimal.yml index baeede28..3aec8d61 100644 --- a/examples/appveyor-minimal.yml +++ b/examples/appveyor-minimal.yml @@ -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.2.0 +install: python -m pip install cibuildwheel==2.2.1b1 build_script: python -m cibuildwheel --output-dir wheelhouse diff --git a/examples/azure-pipelines-minimal.yml b/examples/azure-pipelines-minimal.yml index 5ba0a329..d5c6ac47 100644 --- a/examples/azure-pipelines-minimal.yml +++ b/examples/azure-pipelines-minimal.yml @@ -6,7 +6,7 @@ jobs: - bash: | set -o errexit python3 -m pip install --upgrade pip - pip3 install cibuildwheel==2.2.0 + pip3 install cibuildwheel==2.2.1b1 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.2.0 + python3 -m pip install cibuildwheel==2.2.1b1 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.2.0 + pip install cibuildwheel==2.2.1b1 displayName: Install dependencies - bash: cibuildwheel --output-dir wheelhouse . displayName: Build wheels diff --git a/examples/circleci-minimal.yml b/examples/circleci-minimal.yml index 92c53700..ab7c4e26 100644 --- a/examples/circleci-minimal.yml +++ b/examples/circleci-minimal.yml @@ -11,7 +11,7 @@ jobs: - run: name: Build the Linux wheels. command: | - pip3 install --user cibuildwheel==2.2.0 + pip3 install --user cibuildwheel==2.2.1b1 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.2.0 + pip3 install cibuildwheel==2.2.1b1 cibuildwheel --output-dir wheelhouse - store_artifacts: path: wheelhouse/ diff --git a/examples/github-apple-silicon.yml b/examples/github-apple-silicon.yml index c50038c1..123d8e27 100644 --- a/examples/github-apple-silicon.yml +++ b/examples/github-apple-silicon.yml @@ -10,7 +10,7 @@ jobs: - uses: actions/checkout@v2 - name: Build wheels - uses: pypa/cibuildwheel@v2.2.0 + uses: pypa/cibuildwheel@v2.2.1b1 env: CIBW_ARCHS_MACOS: x86_64 universal2 diff --git a/examples/github-deploy.yml b/examples/github-deploy.yml index 94601903..67969e1a 100644 --- a/examples/github-deploy.yml +++ b/examples/github-deploy.yml @@ -27,7 +27,7 @@ jobs: python-version: '3.8' - name: Build wheels - uses: pypa/cibuildwheel@v2.2.0 + uses: pypa/cibuildwheel@v2.2.1b1 - uses: actions/upload-artifact@v2 with: diff --git a/examples/github-minimal.yml b/examples/github-minimal.yml index 134587db..18388f08 100644 --- a/examples/github-minimal.yml +++ b/examples/github-minimal.yml @@ -14,7 +14,7 @@ jobs: - uses: actions/checkout@v2 - name: Build wheels - uses: pypa/cibuildwheel@v2.2.0 + uses: pypa/cibuildwheel@v2.2.1b1 # to supply options, put them in 'env', like: # env: # CIBW_SOME_OPTION: value diff --git a/examples/github-with-qemu.yml b/examples/github-with-qemu.yml index b886a31f..e72e99ec 100644 --- a/examples/github-with-qemu.yml +++ b/examples/github-with-qemu.yml @@ -25,7 +25,7 @@ jobs: platforms: all - name: Build wheels - uses: pypa/cibuildwheel@v2.2.0 + uses: pypa/cibuildwheel@v2.2.1b1 env: # configure cibuildwheel to build native archs ('auto'), and some # emulated ones diff --git a/examples/gitlab-minimal.yml b/examples/gitlab-minimal.yml index 3bd39ecf..006c50e9 100644 --- a/examples/gitlab-minimal.yml +++ b/examples/gitlab-minimal.yml @@ -12,7 +12,7 @@ linux: DOCKER_TLS_CERTDIR: "" script: - curl -sSL https://get.docker.com/ | sh - - python -m pip install cibuildwheel==2.2.0 + - python -m pip install cibuildwheel==2.2.1b1 - cibuildwheel --output-dir wheelhouse artifacts: paths: diff --git a/examples/travis-ci-deploy.yml b/examples/travis-ci-deploy.yml index ddc55a17..bbf20cd8 100644 --- a/examples/travis-ci-deploy.yml +++ b/examples/travis-ci-deploy.yml @@ -19,7 +19,7 @@ jobs: - ln -s /c/Python38/python.exe /c/Python38/python3.exe install: - - python3 -m pip install cibuildwheel==2.2.0 + - python3 -m pip install cibuildwheel==2.2.1b1 script: # build the wheels, put them into './wheelhouse' diff --git a/examples/travis-ci-minimal.yml b/examples/travis-ci-minimal.yml index e243b628..aef345d3 100644 --- a/examples/travis-ci-minimal.yml +++ b/examples/travis-ci-minimal.yml @@ -25,7 +25,7 @@ jobs: - ln -s /c/Python38/python.exe /c/Python38/python3.exe install: - - python3 -m pip install cibuildwheel==2.2.0 + - python3 -m pip install cibuildwheel==2.2.1b1 script: # build the wheels, put them into './wheelhouse' diff --git a/examples/travis-ci-test-and-deploy.yml b/examples/travis-ci-test-and-deploy.yml index 8e58009f..d7739651 100644 --- a/examples/travis-ci-test-and-deploy.yml +++ b/examples/travis-ci-test-and-deploy.yml @@ -57,7 +57,7 @@ jobs: - stage: deploy name: Build and deploy Linux wheels services: docker - install: python3 -m pip install cibuildwheel==2.2.0 + install: python3 -m pip install cibuildwheel==2.2.1b1 script: python3 -m cibuildwheel --output-dir wheelhouse after_success: | python3 -m pip install twine @@ -67,7 +67,7 @@ jobs: name: Build and deploy Windows wheels os: windows language: shell - install: python3 -m pip install cibuildwheel==2.2.0 + install: python3 -m pip install cibuildwheel==2.2.1b1 script: python3 -m cibuildwheel --output-dir wheelhouse after_success: | python3 -m pip install twine diff --git a/setup.cfg b/setup.cfg index 5e8440b5..1c19a4af 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = cibuildwheel -version = 2.2.0 +version = 2.2.1b1 description = Build Python wheels on CI with minimal configuration. long_description = file: README.md long_description_content_type = text/markdown From b31559f2e01657438567eaf4adb7b30fd4c32629 Mon Sep 17 00:00:00 2001 From: Joe Rickerby Date: Tue, 26 Oct 2021 19:17:59 +0100 Subject: [PATCH 09/20] Update release steps in docs --- docs/contributing.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/docs/contributing.md b/docs/contributing.md index 74f93da3..c6a5b930 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -127,12 +127,10 @@ bin/bump_version.py You'll be prompted to enter the new version number. Update the changelog when prompted. The script will create a 'bump version' commit and version tag. -Finally, cut the release and upload to PyPI/GitHub. +Finally, cut the release and push to GitHub. ```bash -rm -rf dist -python -m build -git push && git push --tags && twine upload dist/* +git push && git push --tags ``` -Then head to https://github.com/pypa/cibuildwheel/releases and create a GitHub release from the new tag, pasting in the changelog entry. +Then head to https://github.com/pypa/cibuildwheel/releases and create a GitHub release from the new tag, pasting in the changelog entry. Once the release is created inside GitHub, a CI job will create the assets and upload them to PyPI. From 578098a3f80e6a44fa0e4e3cfc67679c2d1be7f3 Mon Sep 17 00:00:00 2001 From: Joe Rickerby Date: Tue, 26 Oct 2021 19:19:54 +0100 Subject: [PATCH 10/20] Bump version: v2.2.1 --- README.md | 9 +++------ cibuildwheel/__init__.py | 2 +- docs/changelog.md | 7 ++----- docs/faq.md | 4 ++-- docs/setup.md | 4 ++-- examples/appveyor-minimal.yml | 2 +- examples/azure-pipelines-minimal.yml | 6 +++--- examples/circleci-minimal.yml | 4 ++-- examples/github-apple-silicon.yml | 2 +- examples/github-deploy.yml | 2 +- examples/github-minimal.yml | 2 +- examples/github-with-qemu.yml | 2 +- examples/gitlab-minimal.yml | 2 +- examples/travis-ci-deploy.yml | 2 +- examples/travis-ci-minimal.yml | 2 +- examples/travis-ci-test-and-deploy.yml | 4 ++-- setup.cfg | 2 +- 17 files changed, 26 insertions(+), 32 deletions(-) diff --git a/README.md b/README.md index a54debd5..728ce70f 100644 --- a/README.md +++ b/README.md @@ -85,7 +85,7 @@ jobs: - uses: actions/setup-python@v2 - name: Install cibuildwheel - run: python -m pip install cibuildwheel==2.2.1b1 + run: python -m pip install cibuildwheel==2.2.1 - name: Build wheels run: python -m cibuildwheel --output-dir wheelhouse @@ -193,11 +193,8 @@ Changelog _26 October 2021_ -- 🛠 Added a `config-file` option on the GitHub Action to specify something - other than pyproject.toml in your GitHub Workflow file. (#883) -- 🐛 Fix missing resources in sdist and released wheel on PyPI. We've made - some internal change to our release processes to make them more reliable. - (#893, #894) +- 🛠 Added a `config-file` option on the GitHub Action to specify something other than pyproject.toml in your GitHub Workflow file. (#883) +- 🐛 Fix missing resources in sdist and released wheel on PyPI. We've also made some internal changes to our release processes to make them more reliable. (#893, #894) ### v2.2.0 diff --git a/cibuildwheel/__init__.py b/cibuildwheel/__init__.py index c18b9652..b19ee4b7 100644 --- a/cibuildwheel/__init__.py +++ b/cibuildwheel/__init__.py @@ -1 +1 @@ -__version__ = "2.2.1b1" +__version__ = "2.2.1" diff --git a/docs/changelog.md b/docs/changelog.md index 7d5b44c9..d1816634 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -6,11 +6,8 @@ title: Changelog _26 October 2021_ -- 🛠 Added a `config-file` option on the GitHub Action to specify something - other than pyproject.toml in your GitHub Workflow file. (#883) -- 🐛 Fix missing resources in sdist and released wheel on PyPI. We've made - some internal change to our release processes to make them more reliable. - (#893, #894) +- 🛠 Added a `config-file` option on the GitHub Action to specify something other than pyproject.toml in your GitHub Workflow file. (#883) +- 🐛 Fix missing resources in sdist and released wheel on PyPI. We've also made some internal changes to our release processes to make them more reliable. (#893, #894) ### v2.2.0 diff --git a/docs/faq.md b/docs/faq.md index c4947c9d..f4dcff8c 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -127,7 +127,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.2.1b1 +uses: pypa/cibuildwheel@v2.2.1 ``` 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. @@ -153,7 +153,7 @@ The second option, and the only one that supports other CI systems, is using a ` ```bash # requirements-cibw.txt -cibuildwheel==2.2.1b1 +cibuildwheel==2.2.1 ``` 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: diff --git a/docs/setup.md b/docs/setup.md index 4758b88a..ea74eabe 100644 --- a/docs/setup.md +++ b/docs/setup.md @@ -118,7 +118,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.2.1b1 + run: pipx run cibuildwheel==2.2.1 - uses: actions/upload-artifact@v2 with: @@ -153,7 +153,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.2.1b1 + run: python -m pip install cibuildwheel==2.2.1 - name: Build wheels run: python -m cibuildwheel --output-dir wheelhouse diff --git a/examples/appveyor-minimal.yml b/examples/appveyor-minimal.yml index 3aec8d61..c994d5c0 100644 --- a/examples/appveyor-minimal.yml +++ b/examples/appveyor-minimal.yml @@ -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.2.1b1 +install: python -m pip install cibuildwheel==2.2.1 build_script: python -m cibuildwheel --output-dir wheelhouse diff --git a/examples/azure-pipelines-minimal.yml b/examples/azure-pipelines-minimal.yml index d5c6ac47..dcdd85a3 100644 --- a/examples/azure-pipelines-minimal.yml +++ b/examples/azure-pipelines-minimal.yml @@ -6,7 +6,7 @@ jobs: - bash: | set -o errexit python3 -m pip install --upgrade pip - pip3 install cibuildwheel==2.2.1b1 + pip3 install cibuildwheel==2.2.1 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.2.1b1 + python3 -m pip install cibuildwheel==2.2.1 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.2.1b1 + pip install cibuildwheel==2.2.1 displayName: Install dependencies - bash: cibuildwheel --output-dir wheelhouse . displayName: Build wheels diff --git a/examples/circleci-minimal.yml b/examples/circleci-minimal.yml index ab7c4e26..c439aa96 100644 --- a/examples/circleci-minimal.yml +++ b/examples/circleci-minimal.yml @@ -11,7 +11,7 @@ jobs: - run: name: Build the Linux wheels. command: | - pip3 install --user cibuildwheel==2.2.1b1 + pip3 install --user cibuildwheel==2.2.1 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.2.1b1 + pip3 install cibuildwheel==2.2.1 cibuildwheel --output-dir wheelhouse - store_artifacts: path: wheelhouse/ diff --git a/examples/github-apple-silicon.yml b/examples/github-apple-silicon.yml index 123d8e27..838cc591 100644 --- a/examples/github-apple-silicon.yml +++ b/examples/github-apple-silicon.yml @@ -10,7 +10,7 @@ jobs: - uses: actions/checkout@v2 - name: Build wheels - uses: pypa/cibuildwheel@v2.2.1b1 + uses: pypa/cibuildwheel@v2.2.1 env: CIBW_ARCHS_MACOS: x86_64 universal2 diff --git a/examples/github-deploy.yml b/examples/github-deploy.yml index 67969e1a..6631b856 100644 --- a/examples/github-deploy.yml +++ b/examples/github-deploy.yml @@ -27,7 +27,7 @@ jobs: python-version: '3.8' - name: Build wheels - uses: pypa/cibuildwheel@v2.2.1b1 + uses: pypa/cibuildwheel@v2.2.1 - uses: actions/upload-artifact@v2 with: diff --git a/examples/github-minimal.yml b/examples/github-minimal.yml index 18388f08..d032e48e 100644 --- a/examples/github-minimal.yml +++ b/examples/github-minimal.yml @@ -14,7 +14,7 @@ jobs: - uses: actions/checkout@v2 - name: Build wheels - uses: pypa/cibuildwheel@v2.2.1b1 + uses: pypa/cibuildwheel@v2.2.1 # to supply options, put them in 'env', like: # env: # CIBW_SOME_OPTION: value diff --git a/examples/github-with-qemu.yml b/examples/github-with-qemu.yml index e72e99ec..9152f4db 100644 --- a/examples/github-with-qemu.yml +++ b/examples/github-with-qemu.yml @@ -25,7 +25,7 @@ jobs: platforms: all - name: Build wheels - uses: pypa/cibuildwheel@v2.2.1b1 + uses: pypa/cibuildwheel@v2.2.1 env: # configure cibuildwheel to build native archs ('auto'), and some # emulated ones diff --git a/examples/gitlab-minimal.yml b/examples/gitlab-minimal.yml index 006c50e9..b9a80ce3 100644 --- a/examples/gitlab-minimal.yml +++ b/examples/gitlab-minimal.yml @@ -12,7 +12,7 @@ linux: DOCKER_TLS_CERTDIR: "" script: - curl -sSL https://get.docker.com/ | sh - - python -m pip install cibuildwheel==2.2.1b1 + - python -m pip install cibuildwheel==2.2.1 - cibuildwheel --output-dir wheelhouse artifacts: paths: diff --git a/examples/travis-ci-deploy.yml b/examples/travis-ci-deploy.yml index bbf20cd8..08eba337 100644 --- a/examples/travis-ci-deploy.yml +++ b/examples/travis-ci-deploy.yml @@ -19,7 +19,7 @@ jobs: - ln -s /c/Python38/python.exe /c/Python38/python3.exe install: - - python3 -m pip install cibuildwheel==2.2.1b1 + - python3 -m pip install cibuildwheel==2.2.1 script: # build the wheels, put them into './wheelhouse' diff --git a/examples/travis-ci-minimal.yml b/examples/travis-ci-minimal.yml index aef345d3..eb3a019d 100644 --- a/examples/travis-ci-minimal.yml +++ b/examples/travis-ci-minimal.yml @@ -25,7 +25,7 @@ jobs: - ln -s /c/Python38/python.exe /c/Python38/python3.exe install: - - python3 -m pip install cibuildwheel==2.2.1b1 + - python3 -m pip install cibuildwheel==2.2.1 script: # build the wheels, put them into './wheelhouse' diff --git a/examples/travis-ci-test-and-deploy.yml b/examples/travis-ci-test-and-deploy.yml index d7739651..a73e7961 100644 --- a/examples/travis-ci-test-and-deploy.yml +++ b/examples/travis-ci-test-and-deploy.yml @@ -57,7 +57,7 @@ jobs: - stage: deploy name: Build and deploy Linux wheels services: docker - install: python3 -m pip install cibuildwheel==2.2.1b1 + install: python3 -m pip install cibuildwheel==2.2.1 script: python3 -m cibuildwheel --output-dir wheelhouse after_success: | python3 -m pip install twine @@ -67,7 +67,7 @@ jobs: name: Build and deploy Windows wheels os: windows language: shell - install: python3 -m pip install cibuildwheel==2.2.1b1 + install: python3 -m pip install cibuildwheel==2.2.1 script: python3 -m cibuildwheel --output-dir wheelhouse after_success: | python3 -m pip install twine diff --git a/setup.cfg b/setup.cfg index 1c19a4af..ca02a6c7 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = cibuildwheel -version = 2.2.1b1 +version = 2.2.1 description = Build Python wheels on CI with minimal configuration. long_description = file: README.md long_description_content_type = text/markdown From 8a45128d8c8e0012baac80740d443a9530099fb4 Mon Sep 17 00:00:00 2001 From: Henry Schreiner Date: Tue, 26 Oct 2021 15:16:58 -0400 Subject: [PATCH 11/20] fix: missing s in action (#895) --- action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/action.yml b/action.yml index 3f5bcc07..703cb33a 100644 --- a/action.yml +++ b/action.yml @@ -28,6 +28,6 @@ runs: cibuildwheel ${{ inputs.package-dir }} --output-dir ${{ inputs.output-dir }} - --config-file "${{ input.config-file }}" + --config-file "${{ inputs.config-file }}" 2>&1 shell: bash From 2f4987fab99238c9bf61e78b06a887ea80134626 Mon Sep 17 00:00:00 2001 From: Joe Rickerby Date: Tue, 26 Oct 2021 20:32:41 +0100 Subject: [PATCH 12/20] Bump version: v2.2.2 --- README.md | 18 ++++++++---------- cibuildwheel/__init__.py | 2 +- docs/changelog.md | 8 +++++++- docs/faq.md | 4 ++-- docs/setup.md | 4 ++-- examples/appveyor-minimal.yml | 2 +- examples/azure-pipelines-minimal.yml | 6 +++--- examples/circleci-minimal.yml | 4 ++-- examples/github-apple-silicon.yml | 2 +- examples/github-deploy.yml | 2 +- examples/github-minimal.yml | 2 +- examples/github-with-qemu.yml | 2 +- examples/gitlab-minimal.yml | 2 +- examples/travis-ci-deploy.yml | 2 +- examples/travis-ci-minimal.yml | 2 +- examples/travis-ci-test-and-deploy.yml | 4 ++-- setup.cfg | 2 +- 17 files changed, 36 insertions(+), 32 deletions(-) diff --git a/README.md b/README.md index 728ce70f..9dffb47d 100644 --- a/README.md +++ b/README.md @@ -85,7 +85,7 @@ jobs: - uses: actions/setup-python@v2 - name: Install cibuildwheel - run: python -m pip install cibuildwheel==2.2.1 + run: python -m pip install cibuildwheel==2.2.2 - name: Build wheels run: python -m cibuildwheel --output-dir wheelhouse @@ -189,6 +189,12 @@ Changelog +### v2.2.2 + +_26 October 2021_ + +- 🐛 Fix bug in the GitHub Action step causing a syntax error (#895) + ### v2.2.1 _26 October 2021_ @@ -214,7 +220,7 @@ _22 October 2021_ - 🛠 Support for TOML 1.0 when reading config files, via the `tomli` package. (#876) -Note: This version is not available on PyPI due to some missing resources in the release files. Please use v2.2.1 instead. +Note: This version is not available on PyPI due to some missing resources in the release files. Please use a later version instead. ### v2.1.3 @@ -230,14 +236,6 @@ _14 September 2021_ - 📚 Multiple docs updates - 🐛 Improved warnings when built binaries are bundled into the container on Linux. (#807) -### v2.1.1 - -_7 August 2021_ - -- ✨ Corresponding with the release of CPython 3.10.0rc1, which is ABI stable, cibuildwheel now builds CPython 3.10 by default - without the CIBW_PRERELEASE_PYTHONS flag. - -Note: v2.1.0 was a bad release, it was yanked from PyPI. - --- diff --git a/cibuildwheel/__init__.py b/cibuildwheel/__init__.py index b19ee4b7..ba51cedf 100644 --- a/cibuildwheel/__init__.py +++ b/cibuildwheel/__init__.py @@ -1 +1 @@ -__version__ = "2.2.1" +__version__ = "2.2.2" diff --git a/docs/changelog.md b/docs/changelog.md index d1816634..66b3e6db 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -2,6 +2,12 @@ title: Changelog --- +### v2.2.2 + +_26 October 2021_ + +- 🐛 Fix bug in the GitHub Action step causing a syntax error (#895) + ### v2.2.1 _26 October 2021_ @@ -27,7 +33,7 @@ _22 October 2021_ - 🛠 Support for TOML 1.0 when reading config files, via the `tomli` package. (#876) -Note: This version is not available on PyPI due to some missing resources in the release files. Please use v2.2.1 instead. +Note: This version is not available on PyPI due to some missing resources in the release files. Please use a later version instead. ### v2.1.3 diff --git a/docs/faq.md b/docs/faq.md index f4dcff8c..9ed27902 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -127,7 +127,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.2.1 +uses: pypa/cibuildwheel@v2.2.2 ``` 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. @@ -153,7 +153,7 @@ The second option, and the only one that supports other CI systems, is using a ` ```bash # requirements-cibw.txt -cibuildwheel==2.2.1 +cibuildwheel==2.2.2 ``` 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: diff --git a/docs/setup.md b/docs/setup.md index ea74eabe..353522f0 100644 --- a/docs/setup.md +++ b/docs/setup.md @@ -118,7 +118,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.2.1 + run: pipx run cibuildwheel==2.2.2 - uses: actions/upload-artifact@v2 with: @@ -153,7 +153,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.2.1 + run: python -m pip install cibuildwheel==2.2.2 - name: Build wheels run: python -m cibuildwheel --output-dir wheelhouse diff --git a/examples/appveyor-minimal.yml b/examples/appveyor-minimal.yml index c994d5c0..21f75923 100644 --- a/examples/appveyor-minimal.yml +++ b/examples/appveyor-minimal.yml @@ -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.2.1 +install: python -m pip install cibuildwheel==2.2.2 build_script: python -m cibuildwheel --output-dir wheelhouse diff --git a/examples/azure-pipelines-minimal.yml b/examples/azure-pipelines-minimal.yml index dcdd85a3..232360f9 100644 --- a/examples/azure-pipelines-minimal.yml +++ b/examples/azure-pipelines-minimal.yml @@ -6,7 +6,7 @@ jobs: - bash: | set -o errexit python3 -m pip install --upgrade pip - pip3 install cibuildwheel==2.2.1 + pip3 install cibuildwheel==2.2.2 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.2.1 + python3 -m pip install cibuildwheel==2.2.2 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.2.1 + pip install cibuildwheel==2.2.2 displayName: Install dependencies - bash: cibuildwheel --output-dir wheelhouse . displayName: Build wheels diff --git a/examples/circleci-minimal.yml b/examples/circleci-minimal.yml index c439aa96..67388c84 100644 --- a/examples/circleci-minimal.yml +++ b/examples/circleci-minimal.yml @@ -11,7 +11,7 @@ jobs: - run: name: Build the Linux wheels. command: | - pip3 install --user cibuildwheel==2.2.1 + pip3 install --user cibuildwheel==2.2.2 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.2.1 + pip3 install cibuildwheel==2.2.2 cibuildwheel --output-dir wheelhouse - store_artifacts: path: wheelhouse/ diff --git a/examples/github-apple-silicon.yml b/examples/github-apple-silicon.yml index 838cc591..db4b1156 100644 --- a/examples/github-apple-silicon.yml +++ b/examples/github-apple-silicon.yml @@ -10,7 +10,7 @@ jobs: - uses: actions/checkout@v2 - name: Build wheels - uses: pypa/cibuildwheel@v2.2.1 + uses: pypa/cibuildwheel@v2.2.2 env: CIBW_ARCHS_MACOS: x86_64 universal2 diff --git a/examples/github-deploy.yml b/examples/github-deploy.yml index 6631b856..8f16439a 100644 --- a/examples/github-deploy.yml +++ b/examples/github-deploy.yml @@ -27,7 +27,7 @@ jobs: python-version: '3.8' - name: Build wheels - uses: pypa/cibuildwheel@v2.2.1 + uses: pypa/cibuildwheel@v2.2.2 - uses: actions/upload-artifact@v2 with: diff --git a/examples/github-minimal.yml b/examples/github-minimal.yml index d032e48e..17916818 100644 --- a/examples/github-minimal.yml +++ b/examples/github-minimal.yml @@ -14,7 +14,7 @@ jobs: - uses: actions/checkout@v2 - name: Build wheels - uses: pypa/cibuildwheel@v2.2.1 + uses: pypa/cibuildwheel@v2.2.2 # to supply options, put them in 'env', like: # env: # CIBW_SOME_OPTION: value diff --git a/examples/github-with-qemu.yml b/examples/github-with-qemu.yml index 9152f4db..3261da5f 100644 --- a/examples/github-with-qemu.yml +++ b/examples/github-with-qemu.yml @@ -25,7 +25,7 @@ jobs: platforms: all - name: Build wheels - uses: pypa/cibuildwheel@v2.2.1 + uses: pypa/cibuildwheel@v2.2.2 env: # configure cibuildwheel to build native archs ('auto'), and some # emulated ones diff --git a/examples/gitlab-minimal.yml b/examples/gitlab-minimal.yml index b9a80ce3..2e8b89ce 100644 --- a/examples/gitlab-minimal.yml +++ b/examples/gitlab-minimal.yml @@ -12,7 +12,7 @@ linux: DOCKER_TLS_CERTDIR: "" script: - curl -sSL https://get.docker.com/ | sh - - python -m pip install cibuildwheel==2.2.1 + - python -m pip install cibuildwheel==2.2.2 - cibuildwheel --output-dir wheelhouse artifacts: paths: diff --git a/examples/travis-ci-deploy.yml b/examples/travis-ci-deploy.yml index 08eba337..ae2117e0 100644 --- a/examples/travis-ci-deploy.yml +++ b/examples/travis-ci-deploy.yml @@ -19,7 +19,7 @@ jobs: - ln -s /c/Python38/python.exe /c/Python38/python3.exe install: - - python3 -m pip install cibuildwheel==2.2.1 + - python3 -m pip install cibuildwheel==2.2.2 script: # build the wheels, put them into './wheelhouse' diff --git a/examples/travis-ci-minimal.yml b/examples/travis-ci-minimal.yml index eb3a019d..173aa4dc 100644 --- a/examples/travis-ci-minimal.yml +++ b/examples/travis-ci-minimal.yml @@ -25,7 +25,7 @@ jobs: - ln -s /c/Python38/python.exe /c/Python38/python3.exe install: - - python3 -m pip install cibuildwheel==2.2.1 + - python3 -m pip install cibuildwheel==2.2.2 script: # build the wheels, put them into './wheelhouse' diff --git a/examples/travis-ci-test-and-deploy.yml b/examples/travis-ci-test-and-deploy.yml index a73e7961..a538071f 100644 --- a/examples/travis-ci-test-and-deploy.yml +++ b/examples/travis-ci-test-and-deploy.yml @@ -57,7 +57,7 @@ jobs: - stage: deploy name: Build and deploy Linux wheels services: docker - install: python3 -m pip install cibuildwheel==2.2.1 + install: python3 -m pip install cibuildwheel==2.2.2 script: python3 -m cibuildwheel --output-dir wheelhouse after_success: | python3 -m pip install twine @@ -67,7 +67,7 @@ jobs: name: Build and deploy Windows wheels os: windows language: shell - install: python3 -m pip install cibuildwheel==2.2.1 + install: python3 -m pip install cibuildwheel==2.2.2 script: python3 -m cibuildwheel --output-dir wheelhouse after_success: | python3 -m pip install twine diff --git a/setup.cfg b/setup.cfg index ca02a6c7..073cad67 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = cibuildwheel -version = 2.2.1 +version = 2.2.2 description = Build Python wheels on CI with minimal configuration. long_description = file: README.md long_description_content_type = text/markdown From 603a7b5bded9d0c3f5063a6f03f668dcd345bab8 Mon Sep 17 00:00:00 2001 From: Henry Schreiner Date: Tue, 26 Oct 2021 15:56:35 -0400 Subject: [PATCH 13/20] style(types): use new bracex static typing support (#887) * style(types): use new bracex static typing support * style(types): add a bit more basic typing * style(types): globally ignore ghapi * style(types): include a bit more in the global ignores * fix(types): line invalid on Python 3.6 * fix: require typing_extensions 3.10 --- .pre-commit-config.yaml | 5 ++++- bin/inspect_all_known_projects.py | 2 +- cibuildwheel/__main__.py | 2 +- cibuildwheel/linux.py | 7 +++---- cibuildwheel/util.py | 16 ++++++++-------- pyproject.toml | 7 +++---- setup.cfg | 2 +- 7 files changed, 21 insertions(+), 20 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 2a403cae..f8bd6a3c 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -55,7 +55,9 @@ repos: exclude: ^(bin|cibuildwheel/resources|docs)/.*py$ args: ["--python-version=3.6", "--scripts-are-modules", "--show-error-codes"] additional_dependencies: &mypy-dependencies + - nox - packaging>=21.0 + - pygithub - rich - tomli - types-certifi @@ -64,9 +66,10 @@ repos: - types-jinja2 - types-pyyaml - types-requests + - bracex - id: mypy name: mypy 3.7+ on bin/ - files: ^((bin|docs)/.*py|noxfile.py)$ + files: ^((bin|docs)/.*py)$ args: ["--python-version=3.7", "--scripts-are-modules", "--show-error-codes"] additional_dependencies: *mypy-dependencies diff --git a/bin/inspect_all_known_projects.py b/bin/inspect_all_known_projects.py index ccbc9404..542e42b8 100755 --- a/bin/inspect_all_known_projects.py +++ b/bin/inspect_all_known_projects.py @@ -7,7 +7,7 @@ from typing import Iterator import click import yaml -from ghapi.core import GhApi, HTTP404NotFoundError # type: ignore[import] +from ghapi.core import GhApi, HTTP404NotFoundError from rich import print from cibuildwheel.projectfiles import Analyzer diff --git a/cibuildwheel/__main__.py b/cibuildwheel/__main__.py index a04d3e82..9c1af0f1 100644 --- a/cibuildwheel/__main__.py +++ b/cibuildwheel/__main__.py @@ -163,7 +163,7 @@ def main() -> None: os.environ["CIBUILDWHEEL"] = "1" # Python is buffering by default when running on the CI platforms, giving problems interleaving subprocess call output with unflushed calls to 'print' - sys.stdout = Unbuffered(sys.stdout) # type: ignore[no-untyped-call,assignment] + sys.stdout = Unbuffered(sys.stdout) # type: ignore[assignment] print_preamble(platform=platform, options=options, identifiers=identifiers) diff --git a/cibuildwheel/linux.py b/cibuildwheel/linux.py index eb00493e..4031e038 100644 --- a/cibuildwheel/linux.py +++ b/cibuildwheel/linux.py @@ -1,15 +1,14 @@ import subprocess import sys import textwrap -from collections import OrderedDict from pathlib import Path, PurePath -from typing import Iterator, List, NamedTuple, Set +from typing import Iterator, List, NamedTuple, Set, Tuple from .architecture import Architecture from .docker_container import DockerContainer from .logger import log from .options import Options -from .typing import PathOrStr, assert_never +from .typing import OrderedDict, PathOrStr, assert_never from .util import ( BuildSelector, NonPlatformWheelError, @@ -80,7 +79,7 @@ def get_build_steps( Groups PythonConfigurations into BuildSteps. Each BuildStep represents a separate Docker container. """ - steps: OrderedDict[tuple, BuildStep] = OrderedDict() # type: ignore[type-arg] + steps = OrderedDict[Tuple[str, str, str], BuildStep]() for config in python_configurations: _, platform_tag = config.identifier.split("-", 1) diff --git a/cibuildwheel/util.py b/cibuildwheel/util.py index 3474d372..135ea1d9 100644 --- a/cibuildwheel/util.py +++ b/cibuildwheel/util.py @@ -12,7 +12,7 @@ import urllib.request from enum import Enum from pathlib import Path from time import sleep -from typing import Dict, Iterator, List, Optional +from typing import Any, Dict, Iterable, Iterator, List, Optional, TextIO import bracex import certifi @@ -84,9 +84,9 @@ def selector_matches(patterns: str, string: str) -> bool: expansion. For example, 'cp{36,37}-*' would match either of 'cp36-*' or 'cp37-*'. """ - patterns_list: List[str] = patterns.split() - patterns_list = itertools.chain.from_iterable(bracex.expand(p) for p in patterns_list) # type: ignore[assignment] - return any(fnmatch.fnmatch(string, pat) for pat in patterns_list) + patterns_list = patterns.split() + expanded_patterns = itertools.chain.from_iterable(bracex.expand(p) for p in patterns_list) + return any(fnmatch.fnmatch(string, pat) for pat in expanded_patterns) class IdentifierSelector: @@ -161,18 +161,18 @@ class TestSelector(IdentifierSelector): # Taken from https://stackoverflow.com/a/107717 class Unbuffered: - def __init__(self, stream): # type: ignore[no-untyped-def] + def __init__(self, stream: TextIO) -> None: self.stream = stream - def write(self, data): # type: ignore[no-untyped-def] + def write(self, data: str) -> None: self.stream.write(data) self.stream.flush() - def writelines(self, data): # type: ignore[no-untyped-def] + def writelines(self, data: Iterable[str]) -> None: self.stream.writelines(data) self.stream.flush() - def __getattr__(self, attr): # type: ignore[no-untyped-def] + def __getattr__(self, attr: str) -> Any: return getattr(self.stream, attr) diff --git a/pyproject.toml b/pyproject.toml index 7a7aa8f3..ab4ed941 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -32,7 +32,8 @@ files = [ "cibuildwheel/*.py", "test/**/*.py", "unit_test/**/*.py", - "bin/*.py" + "bin/*.py", + "noxfile.py", ] warn_unused_configs = true warn_redundant_casts = true @@ -58,10 +59,8 @@ module = [ "setuptools", "pytest", # ignored in pre-commit to speed up check "bashlex", - "bracex", "importlib_resources", - "nox", - "github", + "ghapi.*", ] ignore_missing_imports = true diff --git a/setup.cfg b/setup.cfg index 073cad67..db9ee637 100644 --- a/setup.cfg +++ b/setup.cfg @@ -37,7 +37,7 @@ install_requires = packaging tomli dataclasses;python_version < '3.7' - typing_extensions;python_version < '3.8' + typing_extensions>=3.10.0.0;python_version < '3.8' python_requires = >=3.6 include_package_data = True zip_safe = False From ecf8122379b9a69cdf727f280f9ccbce8c0667f4 Mon Sep 17 00:00:00 2001 From: "C.A.M. Gerlach" Date: Mon, 1 Nov 2021 01:44:24 -0500 Subject: [PATCH 14/20] fix: fix broken links incorrectly converted to point to PyPA org --- docs/changelog.md | 2 +- docs/deliver-to-pypi.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index 66b3e6db..3a9b2247 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -470,7 +470,7 @@ _26 May 2019_ - 🌟 Add support for building on Azure pipelines! This lets you build all Linux, Mac and Windows wheels on one service, so it promises to be the easiest to set up! Check out the quickstart in the docs, or - [cibuildwheel-azure-example](https://github.com/pypa/cibuildwheel-azure-example) + [cibuildwheel-azure-example](https://github.com/joerick/cibuildwheel-azure-example) for an example project. (#126, #132) - 🛠 Internal change - the end-to-end test projects format was updated, so we can more precisely assert what should be produced for each one. (#136, #137). diff --git a/docs/deliver-to-pypi.md b/docs/deliver-to-pypi.md index bddeea0f..3d794f23 100644 --- a/docs/deliver-to-pypi.md +++ b/docs/deliver-to-pypi.md @@ -33,4 +33,4 @@ Obviously, manual steps are for chumps, so we can automate this a little by usin If you don't need much control over the release of a package, you can set up cibuildwheel to deliver the wheels straight to PyPI. This doesn't require anycloud storage to work - you just need to bump the version and tag it. -[`examples/travis-ci-deploy.yml`](https://github.com/pypa/cibuildwheel/blob/main/examples/travis-ci-deploy.yml) and [`examples/github-deploy.yml`](https://github.com/pypa/cibuildwheel/blob/main/examples/github-deploy.yml) are example configurations that automatically upload wheels to PyPI. Also check out [this example repo](https://github.com/pypa/cibuildwheel-autopypi-example) for more detailed instructions on how to set this up. +See [`examples/travis-ci-deploy.yml`](https://github.com/pypa/cibuildwheel/blob/main/examples/travis-ci-deploy.yml) and [`examples/github-deploy.yml`](https://github.com/pypa/cibuildwheel/blob/main/examples/github-deploy.yml) for example configurations that automatically upload wheels to PyPI. From b4d023142c5b8f2693e34267298c7d640fc41e0a Mon Sep 17 00:00:00 2001 From: Jean-Christophe Morin <38703886+JeanChristopheMorinPerso@users.noreply.github.com> Date: Mon, 8 Nov 2021 11:34:30 -0500 Subject: [PATCH 15/20] Remove "Pixar" reference in the working examples (#907) --- docs/data/projects.yml | 2 +- docs/working-examples.md | 200 +++++++++++++++++++-------------------- 2 files changed, 101 insertions(+), 101 deletions(-) diff --git a/docs/data/projects.yml b/docs/data/projects.yml index 9d5478a9..52a8a990 100644 --- a/docs/data/projects.yml +++ b/docs/data/projects.yml @@ -494,7 +494,7 @@ ci: [github] os: [apple, linux, windows] -- name: Pixar OpenTimelineIO +- name: OpenTimelineIO gh: PixarAnimationStudios/OpenTimelineIO ci: [github] os: [apple, linux, windows] diff --git a/docs/working-examples.md b/docs/working-examples.md index 95a173f8..5301bb80 100644 --- a/docs/working-examples.md +++ b/docs/working-examples.md @@ -23,8 +23,8 @@ title: Working examples | [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. | | [twisted-iocpsupport][] | ![github icon][] | ![windows icon][] | A submodule of Twisted that hooks into native C APIs using Cython. | | [cmake][] | ![github icon][] ![travisci icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Multitagged binary builds for all supported platforms, using cibw 2 config configuration. | -| [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. | | [duckdb][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | DuckDB is an in-process SQL OLAP Database Management System | +| [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. | | [Triton][] | ![github icon][] | ![linux icon][] | Self hosted runners | | [PyOxidizer][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | A modern Python application packaging and distribution tool | @@ -37,22 +37,22 @@ title: Working examples | [tinyobjloader][] | ![azurepipelines icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Tiny but powerful single file wavefront obj loader | | [coverage.py][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | The coverage tool for Python | | [PyCryptodome][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | A self-contained cryptographic library for Python | -| [numexpr][] | ![github icon][] ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Fast numerical array expression evaluator for Python, NumPy, PyTables, pandas, bcolz and more | | [Dependency Injector][] | ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Dependency injection framework for Python, uses Windows TravisCI | +| [numexpr][] | ![github icon][] ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Fast numerical array expression evaluator for Python, NumPy, PyTables, pandas, bcolz and more | | [PyYAML][] | ![github icon][] | ![apple icon][] | Canonical source repository for PyYAML | | [h5py][] | ![azurepipelines icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | HDF5 for Python -- The h5py package is a Pythonic interface to the HDF5 binary data format. | | [PyAV][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Pythonic bindings for FFmpeg's libraries. | | [OpenColorIO][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | A color management framework for visual effects and animation. | | [PyTables][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A Python package to manage extremely large amounts of data | | [Line Profiler][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Line-by-line profiling for Python | -| [Pixar OpenTimelineIO][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Open Source API and interchange format for editorial timeline information. | +| [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. | | [pikepdf][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A Python library for reading and writing PDF, powered by qpdf | | [aioquic][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | QUIC and HTTP/3 implementation in Python | | [google neuroglancer][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | WebGL-based viewer for volumetric data | | [DeepForest][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | An Efficient, Scalable and Optimized Python Framework for Deep Forest (2021.2.1) | -| [AutoPy][] | ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Includes a Windows Travis build. | | [Parselmouth][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A Python interface to the Praat software package, using pybind11, C++17 and CMake, with the core Praat static library built only once and shared between wheels. | +| [AutoPy][] | ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Includes a Windows Travis build. | | [H3-py][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Python bindings for H3, a hierarchical hexagonal geospatial indexing system | | [python-rapidjson][] | ![travisci icon][] ![gitlab icon][] ![appveyor icon][] | ![windows icon][] ![linux icon][] | Python wrapper around rapidjson | | [markupsafe][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Safely add untrusted strings to HTML/XML markup. | @@ -75,18 +75,18 @@ title: Working examples | [bx-python][] | ![travisci icon][] | ![apple icon][] ![linux icon][] | A library that includes Cython extensions. | | [boost-histogram][] | ![github icon][] ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Supports full range of wheels, including PyPy and alternate archs. | | [iDynTree][] | ![github icon][] | ![linux icon][] | Uses manylinux_2_24 | -| [pybase64][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Fast Base64 encoding/decoding in Python | | [TgCrypto][] | ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Includes a Windows Travis build. | +| [pybase64][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Fast Base64 encoding/decoding in Python | | [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 | | [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 | -| [polaroid][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Full range of wheels for setuptools rust, with auto release and PyPI deploy. | | [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. | | [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. | -| [pybind11 scikit_build_example][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | An example combining scikit-build and pybind11 | | [clang-format][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Scikit-build wrapper around LLVM's CMake, all platforms, generic wheels. | +| [pybind11 scikit_build_example][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | An example combining scikit-build and pybind11 | +| [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. | @@ -108,8 +108,8 @@ title: Working examples [scikit-image]: https://github.com/scikit-image/scikit-image [twisted-iocpsupport]: https://github.com/twisted/twisted-iocpsupport [cmake]: https://github.com/scikit-build/cmake-python-distributions -[websockets]: https://github.com/aaugustin/websockets [duckdb]: https://github.com/duckdb/duckdb +[websockets]: https://github.com/aaugustin/websockets [cvxpy]: https://github.com/cvxpy/cvxpy [Triton]: https://github.com/openai/triton [PyOxidizer]: https://github.com/indygreg/PyOxidizer @@ -122,22 +122,22 @@ title: Working examples [tinyobjloader]: https://github.com/tinyobjloader/tinyobjloader [coverage.py]: https://github.com/nedbat/coveragepy [PyCryptodome]: https://github.com/Legrandin/pycryptodome -[numexpr]: https://github.com/pydata/numexpr [Dependency Injector]: https://github.com/ets-labs/python-dependency-injector +[numexpr]: https://github.com/pydata/numexpr [PyYAML]: https://github.com/yaml/pyyaml [h5py]: https://github.com/h5py/h5py [PyAV]: https://github.com/PyAV-Org/PyAV [OpenColorIO]: https://github.com/AcademySoftwareFoundation/OpenColorIO [PyTables]: https://github.com/PyTables/PyTables [Line Profiler]: https://github.com/pyutils/line_profiler -[Pixar OpenTimelineIO]: https://github.com/PixarAnimationStudios/OpenTimelineIO +[OpenTimelineIO]: https://github.com/PixarAnimationStudios/OpenTimelineIO [ruptures]: https://github.com/deepcharles/ruptures [pikepdf]: https://github.com/pikepdf/pikepdf [aioquic]: https://github.com/aiortc/aioquic [google neuroglancer]: https://github.com/google/neuroglancer [DeepForest]: https://github.com/LAMDA-NJU/Deep-Forest -[AutoPy]: https://github.com/autopilot-rs/autopy [Parselmouth]: https://github.com/YannickJadoul/Parselmouth +[AutoPy]: https://github.com/autopilot-rs/autopy [H3-py]: https://github.com/uber/h3-py [python-rapidjson]: https://github.com/python-rapidjson/python-rapidjson [markupsafe]: https://github.com/pallets/markupsafe @@ -160,18 +160,18 @@ title: Working examples [bx-python]: https://github.com/bxlab/bx-python [boost-histogram]: https://github.com/scikit-hep/boost-histogram [iDynTree]: https://github.com/robotology/idyntree -[pybase64]: https://github.com/mayeut/pybase64 [TgCrypto]: https://github.com/pyrogram/tgcrypto +[pybase64]: https://github.com/mayeut/pybase64 [etebase-py]: https://github.com/etesync/etebase-py [fathon]: https://github.com/stfbnc/fathon [pyjet]: https://github.com/scikit-hep/pyjet [numpythia]: https://github.com/scikit-hep/numpythia -[polaroid]: https://github.com/daggy1234/polaroid [Imagecodecs (fork)]: https://github.com/czaki/imagecodecs_build +[polaroid]: https://github.com/daggy1234/polaroid [ninja]: https://github.com/scikit-build/ninja-python-distributions -[GSD]: https://github.com/glotzerlab/gsd -[pybind11 scikit_build_example]: https://github.com/pybind/scikit_build_example [clang-format]: https://github.com/ssciwr/clang-format-wheel +[pybind11 scikit_build_example]: https://github.com/pybind/scikit_build_example +[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 @@ -188,90 +188,90 @@ title: Working examples [apple icon]: data/readme_icons/apple.svg [linux icon]: data/readme_icons/linux.svg - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From f01d6ed8fed72dd3364436db2230f7634264a85e Mon Sep 17 00:00:00 2001 From: Guillaume Klein Date: Mon, 8 Nov 2021 17:37:34 +0100 Subject: [PATCH 16/20] docs: update information for project OpenNMT/Tokenizer (#905) --- docs/data/projects.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/data/projects.yml b/docs/data/projects.yml index 52a8a990..c22300fb 100644 --- a/docs/data/projects.yml +++ b/docs/data/projects.yml @@ -256,8 +256,8 @@ - name: Tokenizer gh: OpenNMT/Tokenizer - ci: [github, travisci] - os: [apple, linux] + ci: [github] + os: [windows, apple, linux] - name: matrixprofile gh: matrix-profile-foundation/matrixprofile From a4a6646979c449d9d73acd55a4a04161a83a97f6 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 9 Nov 2021 22:15:07 -0500 Subject: [PATCH 17/20] [pre-commit.ci] pre-commit autoupdate (#900) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [pre-commit.ci] pre-commit autoupdate updates: - [github.com/PyCQA/isort: 5.9.3 → 5.10.0](https://github.com/PyCQA/isort/compare/5.9.3...5.10.0) - [github.com/psf/black: 21.9b0 → 21.10b0](https://github.com/psf/black/compare/21.9b0...21.10b0) - [github.com/asottile/setup-cfg-fmt: v1.18.0 → v1.19.0](https://github.com/asottile/setup-cfg-fmt/compare/v1.18.0...v1.19.0) * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 6 +++--- setup.cfg | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index f8bd6a3c..eabab8ee 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -34,17 +34,17 @@ repos: stages: [manual] # disabled due to artificial limit on Python 3.10 - repo: https://github.com/PyCQA/isort - rev: 5.9.3 + rev: 5.10.0 hooks: - id: isort - repo: https://github.com/psf/black - rev: 21.9b0 + rev: 21.10b0 hooks: - id: black - repo: https://github.com/asottile/setup-cfg-fmt - rev: v1.18.0 + rev: v1.19.0 hooks: - id: setup-cfg-fmt diff --git a/setup.cfg b/setup.cfg index db9ee637..4dadd79b 100644 --- a/setup.cfg +++ b/setup.cfg @@ -37,7 +37,7 @@ install_requires = packaging tomli dataclasses;python_version < '3.7' - typing_extensions>=3.10.0.0;python_version < '3.8' + typing-extensions>=3.10.0.0;python_version < '3.8' python_requires = >=3.6 include_package_data = True zip_safe = False From 823d4af1ad29ce0d79dfb536c74fb4940b89f76e Mon Sep 17 00:00:00 2001 From: "cibuildwheel-bot[bot]" <83877280+cibuildwheel-bot[bot]@users.noreply.github.com> Date: Thu, 11 Nov 2021 08:40:15 -0500 Subject: [PATCH 18/20] feat: pypy 3.8 & pip 21.3 (#881) * Update dependencies * fix: support pypy 3.8 and 7.3.7 Co-authored-by: henryiii Co-authored-by: Henry Schreiner --- cibuildwheel/resources/build-platforms.toml | 25 ++- .../resources/constraints-python36.txt | 14 +- .../resources/constraints-python37.txt | 12 +- .../resources/constraints-python38.txt | 10 +- .../resources/constraints-python39.txt | 10 +- cibuildwheel/resources/constraints.txt | 10 +- .../resources/pinned_docker_images.cfg | 54 +++--- cibuildwheel/windows.py | 1 - docs/options.md | 3 +- docs/working-examples.md | 174 +++++++++--------- test/utils.py | 2 +- unit_test/build_selector_test.py | 3 + unit_test/option_prepare_test.py | 12 +- 13 files changed, 172 insertions(+), 158 deletions(-) diff --git a/cibuildwheel/resources/build-platforms.toml b/cibuildwheel/resources/build-platforms.toml index 10ac3c7f..78efd3f8 100644 --- a/cibuildwheel/resources/build-platforms.toml +++ b/cibuildwheel/resources/build-platforms.toml @@ -11,6 +11,7 @@ python_configurations = [ { 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 = "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 = "cp36-manylinux_aarch64", version = "3.6", path_str = "/opt/python/cp36-cp36m" }, { identifier = "cp37-manylinux_aarch64", version = "3.7", path_str = "/opt/python/cp37-cp37m" }, { identifier = "cp38-manylinux_aarch64", version = "3.8", path_str = "/opt/python/cp38-cp38" }, @@ -27,7 +28,9 @@ python_configurations = [ { 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 = "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 = "pp37-manylinux_i686", version = "3.7", path_str = "/opt/python/pp37-pypy37_pp73" }, + { identifier = "pp38-manylinux_i686", version = "3.8", path_str = "/opt/python/pp38-pypy38_pp73" }, { identifier = "cp36-musllinux_x86_64", version = "3.6", path_str = "/opt/python/cp36-cp36m" }, { identifier = "cp37-musllinux_x86_64", version = "3.7", path_str = "/opt/python/cp37-cp37m" }, { identifier = "cp38-musllinux_x86_64", version = "3.8", path_str = "/opt/python/cp38-cp38" }, @@ -62,13 +65,14 @@ 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.7/python-3.9.7-macos11.pkg" }, - { identifier = "cp39-macosx_arm64", version = "3.9", url = "https://www.python.org/ftp/python/3.9.7/python-3.9.7-macos11.pkg" }, - { identifier = "cp39-macosx_universal2", version = "3.9", url = "https://www.python.org/ftp/python/3.9.7/python-3.9.7-macos11.pkg" }, - { identifier = "cp310-macosx_x86_64", version = "3.10", url = "https://www.python.org/ftp/python/3.10.0/python-3.10.0-macos11.pkg" }, - { identifier = "cp310-macosx_arm64", version = "3.10", url = "https://www.python.org/ftp/python/3.10.0/python-3.10.0-macos11.pkg" }, - { identifier = "cp310-macosx_universal2", version = "3.10", url = "https://www.python.org/ftp/python/3.10.0/python-3.10.0-macos11.pkg" }, - { identifier = "pp37-macosx_x86_64", version = "3.7", url = "https://downloads.python.org/pypy/pypy3.7-v7.3.5-osx64.tar.bz2" }, + { identifier = "cp39-macosx_x86_64", version = "3.9", url = "https://www.python.org/ftp/python/3.9.8/python-3.9.8-macos11.pkg" }, + { identifier = "cp39-macosx_arm64", version = "3.9", url = "https://www.python.org/ftp/python/3.9.8/python-3.9.8-macos11.pkg" }, + { identifier = "cp39-macosx_universal2", version = "3.9", url = "https://www.python.org/ftp/python/3.9.8/python-3.9.8-macos11.pkg" }, + { identifier = "cp310-macosx_x86_64", version = "3.10", url = "https://www.python.org/ftp/python/3.10.0/python-3.10.0post2-macos11.pkg" }, + { identifier = "cp310-macosx_arm64", version = "3.10", url = "https://www.python.org/ftp/python/3.10.0/python-3.10.0post2-macos11.pkg" }, + { identifier = "cp310-macosx_universal2", version = "3.10", url = "https://www.python.org/ftp/python/3.10.0/python-3.10.0post2-macos11.pkg" }, + { identifier = "pp37-macosx_x86_64", version = "3.7", url = "https://downloads.python.org/pypy/pypy3.7-v7.3.7-osx64.tar.bz2" }, + { identifier = "pp38-macosx_x86_64", version = "3.8", url = "https://downloads.python.org/pypy/pypy3.8-v7.3.7-osx64.tar.bz2" }, ] [windows] @@ -79,9 +83,10 @@ 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.7", arch = "32" }, - { identifier = "cp39-win_amd64", version = "3.9.7", arch = "64" }, + { identifier = "cp39-win32", version = "3.9.8", arch = "32" }, + { identifier = "cp39-win_amd64", version = "3.9.8", arch = "64" }, { identifier = "cp310-win32", version = "3.10.0", arch = "32" }, { identifier = "cp310-win_amd64", version = "3.10.0", arch = "64" }, - { identifier = "pp37-win_amd64", version = "3.7", arch = "64", url = "https://downloads.python.org/pypy/pypy3.7-v7.3.5-win64.zip" }, + { identifier = "pp37-win_amd64", version = "3.7", arch = "64", url = "https://downloads.python.org/pypy/pypy3.7-v7.3.7-win64.zip" }, + { identifier = "pp38-win_amd64", version = "3.8", arch = "64", url = "https://downloads.python.org/pypy/pypy3.8-v7.3.7-win64.zip" }, ] diff --git a/cibuildwheel/resources/constraints-python36.txt b/cibuildwheel/resources/constraints-python36.txt index 36380a9d..997c0348 100644 --- a/cibuildwheel/resources/constraints-python36.txt +++ b/cibuildwheel/resources/constraints-python36.txt @@ -4,19 +4,19 @@ # # bin/update_dependencies.py # -backports.entry-points-selectable==1.1.0 +backports.entry-points-selectable==1.1.1 # via virtualenv delocate==0.10.0 # via -r cibuildwheel/resources/constraints.in distlib==0.3.3 # via virtualenv -filelock==3.3.0 +filelock==3.3.2 # via virtualenv -importlib-metadata==4.8.1 +importlib-metadata==4.8.2 # via # backports.entry-points-selectable # virtualenv -importlib-resources==5.2.2 +importlib-resources==5.4.0 # via virtualenv platformdirs==2.4.0 # via virtualenv @@ -26,7 +26,7 @@ typing-extensions==3.10.0.2 # via # delocate # importlib-metadata -virtualenv==20.8.1 +virtualenv==20.10.0 # via -r cibuildwheel/resources/constraints.in wheel==0.37.0 # via @@ -38,7 +38,7 @@ zipp==3.6.0 # importlib-resources # The following packages are considered to be unsafe in a requirements file: -pip==21.2.4 +pip==21.3.1 # via -r cibuildwheel/resources/constraints.in -setuptools==58.2.0 +setuptools==58.5.3 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python37.txt b/cibuildwheel/resources/constraints-python37.txt index 9dfe3a88..ef7f2d11 100644 --- a/cibuildwheel/resources/constraints-python37.txt +++ b/cibuildwheel/resources/constraints-python37.txt @@ -4,15 +4,15 @@ # # bin/update_dependencies.py # -backports.entry-points-selectable==1.1.0 +backports.entry-points-selectable==1.1.1 # via virtualenv delocate==0.10.0 # via -r cibuildwheel/resources/constraints.in distlib==0.3.3 # via virtualenv -filelock==3.3.0 +filelock==3.3.2 # via virtualenv -importlib-metadata==4.8.1 +importlib-metadata==4.8.2 # via # backports.entry-points-selectable # virtualenv @@ -24,7 +24,7 @@ typing-extensions==3.10.0.2 # via # delocate # importlib-metadata -virtualenv==20.8.1 +virtualenv==20.10.0 # via -r cibuildwheel/resources/constraints.in wheel==0.37.0 # via @@ -34,7 +34,7 @@ zipp==3.6.0 # via importlib-metadata # The following packages are considered to be unsafe in a requirements file: -pip==21.2.4 +pip==21.3.1 # via -r cibuildwheel/resources/constraints.in -setuptools==58.2.0 +setuptools==58.5.3 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python38.txt b/cibuildwheel/resources/constraints-python38.txt index c3bd567c..1e964eb2 100644 --- a/cibuildwheel/resources/constraints-python38.txt +++ b/cibuildwheel/resources/constraints-python38.txt @@ -4,13 +4,13 @@ # # bin/update_dependencies.py # -backports.entry-points-selectable==1.1.0 +backports.entry-points-selectable==1.1.1 # via virtualenv delocate==0.10.0 # via -r cibuildwheel/resources/constraints.in distlib==0.3.3 # via virtualenv -filelock==3.3.0 +filelock==3.3.2 # via virtualenv platformdirs==2.4.0 # via virtualenv @@ -18,7 +18,7 @@ six==1.16.0 # via virtualenv typing-extensions==3.10.0.2 # via delocate -virtualenv==20.8.1 +virtualenv==20.10.0 # via -r cibuildwheel/resources/constraints.in wheel==0.37.0 # via @@ -26,7 +26,7 @@ wheel==0.37.0 # delocate # The following packages are considered to be unsafe in a requirements file: -pip==21.2.4 +pip==21.3.1 # via -r cibuildwheel/resources/constraints.in -setuptools==58.2.0 +setuptools==58.5.3 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python39.txt b/cibuildwheel/resources/constraints-python39.txt index d2824450..ae417444 100644 --- a/cibuildwheel/resources/constraints-python39.txt +++ b/cibuildwheel/resources/constraints-python39.txt @@ -4,13 +4,13 @@ # # bin/update_dependencies.py # -backports.entry-points-selectable==1.1.0 +backports.entry-points-selectable==1.1.1 # via virtualenv delocate==0.10.0 # via -r cibuildwheel/resources/constraints.in distlib==0.3.3 # via virtualenv -filelock==3.3.0 +filelock==3.3.2 # via virtualenv platformdirs==2.4.0 # via virtualenv @@ -18,7 +18,7 @@ six==1.16.0 # via virtualenv typing-extensions==3.10.0.2 # via delocate -virtualenv==20.8.1 +virtualenv==20.10.0 # via -r cibuildwheel/resources/constraints.in wheel==0.37.0 # via @@ -26,7 +26,7 @@ wheel==0.37.0 # delocate # The following packages are considered to be unsafe in a requirements file: -pip==21.2.4 +pip==21.3.1 # via -r cibuildwheel/resources/constraints.in -setuptools==58.2.0 +setuptools==58.5.3 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints.txt b/cibuildwheel/resources/constraints.txt index d2824450..ae417444 100644 --- a/cibuildwheel/resources/constraints.txt +++ b/cibuildwheel/resources/constraints.txt @@ -4,13 +4,13 @@ # # bin/update_dependencies.py # -backports.entry-points-selectable==1.1.0 +backports.entry-points-selectable==1.1.1 # via virtualenv delocate==0.10.0 # via -r cibuildwheel/resources/constraints.in distlib==0.3.3 # via virtualenv -filelock==3.3.0 +filelock==3.3.2 # via virtualenv platformdirs==2.4.0 # via virtualenv @@ -18,7 +18,7 @@ six==1.16.0 # via virtualenv typing-extensions==3.10.0.2 # via delocate -virtualenv==20.8.1 +virtualenv==20.10.0 # via -r cibuildwheel/resources/constraints.in wheel==0.37.0 # via @@ -26,7 +26,7 @@ wheel==0.37.0 # delocate # The following packages are considered to be unsafe in a requirements file: -pip==21.2.4 +pip==21.3.1 # via -r cibuildwheel/resources/constraints.in -setuptools==58.2.0 +setuptools==58.5.3 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/pinned_docker_images.cfg b/cibuildwheel/resources/pinned_docker_images.cfg index b889af8d..e8cf043f 100644 --- a/cibuildwheel/resources/pinned_docker_images.cfg +++ b/cibuildwheel/resources/pinned_docker_images.cfg @@ -1,43 +1,43 @@ [x86_64] -manylinux1 = quay.io/pypa/manylinux1_x86_64:2021-10-10-fee0ae1 -manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2021-10-10-790306f -manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2021-10-10-790306f -manylinux_2_24 = quay.io/pypa/manylinux_2_24_x86_64:2021-10-10-790306f -musllinux_1_1 = quay.io/pypa/musllinux_1_1_x86_64:2021-10-10-790306f +manylinux1 = quay.io/pypa/manylinux1_x86_64:2021-11-07-f38ff36 +manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2021-11-07-28723f3 +manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2021-11-07-28723f3 +manylinux_2_24 = quay.io/pypa/manylinux_2_24_x86_64:2021-11-07-28723f3 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_x86_64:2021-11-07-28723f3 [i686] -manylinux1 = quay.io/pypa/manylinux1_i686:2021-10-10-fee0ae1 -manylinux2010 = quay.io/pypa/manylinux2010_i686:2021-10-10-790306f -manylinux2014 = quay.io/pypa/manylinux2014_i686:2021-10-10-790306f -manylinux_2_24 = quay.io/pypa/manylinux_2_24_i686:2021-10-10-790306f -musllinux_1_1 = quay.io/pypa/musllinux_1_1_i686:2021-10-10-790306f +manylinux1 = quay.io/pypa/manylinux1_i686:2021-11-07-f38ff36 +manylinux2010 = quay.io/pypa/manylinux2010_i686:2021-11-07-28723f3 +manylinux2014 = quay.io/pypa/manylinux2014_i686:2021-11-07-28723f3 +manylinux_2_24 = quay.io/pypa/manylinux_2_24_i686:2021-11-07-28723f3 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_i686:2021-11-07-28723f3 [pypy_x86_64] -manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2021-10-10-790306f -manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2021-10-10-790306f -manylinux_2_24 = quay.io/pypa/manylinux_2_24_x86_64:2021-10-10-790306f +manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2021-11-07-28723f3 +manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2021-11-07-28723f3 +manylinux_2_24 = quay.io/pypa/manylinux_2_24_x86_64:2021-11-07-28723f3 [pypy_i686] -manylinux2010 = quay.io/pypa/manylinux2010_i686:2021-10-10-790306f -manylinux2014 = quay.io/pypa/manylinux2014_i686:2021-10-10-790306f -manylinux_2_24 = quay.io/pypa/manylinux_2_24_i686:2021-10-10-790306f +manylinux2010 = quay.io/pypa/manylinux2010_i686:2021-11-07-28723f3 +manylinux2014 = quay.io/pypa/manylinux2014_i686:2021-11-07-28723f3 +manylinux_2_24 = quay.io/pypa/manylinux_2_24_i686:2021-11-07-28723f3 [aarch64] -manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2021-10-10-790306f -manylinux_2_24 = quay.io/pypa/manylinux_2_24_aarch64:2021-10-10-790306f -musllinux_1_1 = quay.io/pypa/musllinux_1_1_aarch64:2021-10-10-790306f +manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2021-11-07-28723f3 +manylinux_2_24 = quay.io/pypa/manylinux_2_24_aarch64:2021-11-07-28723f3 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_aarch64:2021-11-07-28723f3 [ppc64le] -manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2021-10-10-790306f -manylinux_2_24 = quay.io/pypa/manylinux_2_24_ppc64le:2021-10-10-790306f -musllinux_1_1 = quay.io/pypa/musllinux_1_1_ppc64le:2021-10-10-790306f +manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2021-11-07-28723f3 +manylinux_2_24 = quay.io/pypa/manylinux_2_24_ppc64le:2021-11-07-28723f3 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_ppc64le:2021-11-07-28723f3 [s390x] -manylinux2014 = quay.io/pypa/manylinux2014_s390x:2021-10-10-790306f -manylinux_2_24 = quay.io/pypa/manylinux_2_24_s390x:2021-10-10-790306f -musllinux_1_1 = quay.io/pypa/musllinux_1_1_s390x:2021-10-10-790306f +manylinux2014 = quay.io/pypa/manylinux2014_s390x:2021-11-07-28723f3 +manylinux_2_24 = quay.io/pypa/manylinux_2_24_s390x:2021-11-07-28723f3 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_s390x:2021-11-07-28723f3 [pypy_aarch64] -manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2021-10-10-790306f -manylinux_2_24 = quay.io/pypa/manylinux_2_24_aarch64:2021-10-10-790306f +manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2021-11-07-28723f3 +manylinux_2_24 = quay.io/pypa/manylinux_2_24_aarch64:2021-11-07-28723f3 diff --git a/cibuildwheel/windows.py b/cibuildwheel/windows.py index bd5ad085..0a429c6d 100644 --- a/cibuildwheel/windows.py +++ b/cibuildwheel/windows.py @@ -112,7 +112,6 @@ def install_pypy(version: str, arch: str, url: str) -> Path: download(url, pypy_zip) # Extract to the parent directory because the zip file still contains a directory extract_zip(pypy_zip, installation_path.parent) - (installation_path / "python.exe").symlink_to(installation_path / "pypy3.exe") return installation_path diff --git a/docs/options.md b/docs/options.md index aa625133..3b9aaeb3 100644 --- a/docs/options.md +++ b/docs/options.md @@ -208,7 +208,8 @@ When setting the options, you can use shell-style globbing syntax, as per [fnmat | Python 3.8 | cp38-macosx_x86_64
cp38-macosx_universal2
cp38-macosx_arm64 | cp38-win_amd64
cp38-win32 | cp38-manylinux_x86_64
cp38-manylinux_i686
cp38-musllinux_x86_64
cp38-musllinux_i686 | cp38-manylinux_aarch64
cp38-manylinux_ppc64le
cp38-manylinux_s390x
cp38-musllinux_aarch64
cp38-musllinux_ppc64le
cp38-musllinux_s390x | | Python 3.9 | cp39-macosx_x86_64
cp39-macosx_universal2
cp39-macosx_arm64 | cp39-win_amd64
cp39-win32 | cp39-manylinux_x86_64
cp39-manylinux_i686
cp39-musllinux_x86_64
cp39-musllinux_i686 | cp39-manylinux_aarch64
cp39-manylinux_ppc64le
cp39-manylinux_s390x
cp39-musllinux_aarch64
cp39-musllinux_ppc64le
cp39-musllinux_s390x | | Python 3.10 | cp310-macosx_x86_64
cp310-macosx_universal2
cp310-macosx_arm64 | cp310-win_amd64
cp310-win32 | cp310-manylinux_x86_64
cp310-manylinux_i686
cp310-musllinux_x86_64
cp310-musllinux_i686 | cp310-manylinux_aarch64
cp310-manylinux_ppc64le
cp310-manylinux_s390x
cp310-musllinux_aarch64
cp310-musllinux_ppc64le
cp310-musllinux_s390x | -| PyPy3.7 v7.3 | pp37-macosx_x86_64 | pp37-win_amd64 | pp37-manylinux_x86_64 | | +| PyPy3.7 v7.3 | pp37-macosx_x86_64 | pp37-win_amd64 | pp37-manylinux_x86_64
pp37-manylinux_i686 | pp37-manylinux_aarch64 | +| PyPy3.8 v7.3 | pp38-macosx_x86_64 | pp38-win_amd64 | pp38-manylinux_x86_64
pp38-manylinux_i686 | pp38-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). diff --git a/docs/working-examples.md b/docs/working-examples.md index 5301bb80..5a355bac 100644 --- a/docs/working-examples.md +++ b/docs/working-examples.md @@ -30,8 +30,8 @@ title: Working examples | [PyOxidizer][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | A modern Python application packaging and distribution tool | | [pyzmq][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Python bindings for zeromq, the networking library. Uses Cython and CFFI. | | [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. | -| [vispy][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Main repository for Vispy | | [River][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | 🌊 Online machine learning in Python | +| [vispy][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Main repository for Vispy | | [aiortc][] | ![github icon][] | ![apple icon][] ![linux icon][] | WebRTC and ORTC implementation for Python using asyncio. | | [Confluent client for Kafka][] | ![travisci icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | setup in `tools/wheels/build-wheels.bat` | | [tinyobjloader][] | ![azurepipelines icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Tiny but powerful single file wavefront obj loader | @@ -51,8 +51,8 @@ title: Working examples | [aioquic][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | QUIC and HTTP/3 implementation in Python | | [google neuroglancer][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | WebGL-based viewer for volumetric data | | [DeepForest][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | An Efficient, Scalable and Optimized Python Framework for Deep Forest (2021.2.1) | -| [Parselmouth][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A Python interface to the Praat software package, using pybind11, C++17 and CMake, with the core Praat static library built only once and shared between wheels. | | [AutoPy][] | ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Includes a Windows Travis build. | +| [Parselmouth][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A Python interface to the Praat software package, using pybind11, C++17 and CMake, with the core Praat static library built only once and shared between wheels. | | [H3-py][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Python bindings for H3, a hierarchical hexagonal geospatial indexing system | | [python-rapidjson][] | ![travisci icon][] ![gitlab icon][] ![appveyor icon][] | ![windows icon][] ![linux icon][] | Python wrapper around rapidjson | | [markupsafe][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Safely add untrusted strings to HTML/XML markup. | @@ -70,7 +70,7 @@ title: Working examples | [CTranslate2][] | ![github icon][] | ![apple icon][] ![linux icon][] | Includes libraries from the [Intel oneAPI toolkit](https://software.intel.com/content/www/us/en/develop/tools/oneapi/base-toolkit.html). The Linux wheels also include CUDA libraries for GPU execution. | | [iminuit][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Jupyter-friendly Python interface for C++ MINUIT2 | | [jq.py][] | ![travisci icon][] | ![apple icon][] ![linux icon][] | Python bindings for jq | -| [Tokenizer][] | ![github icon][] ![travisci icon][] | ![apple icon][] ![linux icon][] | Fast and customizable text tokenization library with BPE and SentencePiece support | +| [Tokenizer][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Fast and customizable text tokenization library with BPE and SentencePiece support | | [PyGLM][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Fast OpenGL Mathematics (GLM) for Python | | [bx-python][] | ![travisci icon][] | ![apple icon][] ![linux icon][] | A library that includes Cython extensions. | | [boost-histogram][] | ![github icon][] ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Supports full range of wheels, including PyPy and alternate archs. | @@ -115,8 +115,8 @@ title: Working examples [PyOxidizer]: https://github.com/indygreg/PyOxidizer [pyzmq]: https://github.com/zeromq/pyzmq [OpenSpiel]: https://github.com/deepmind/open_spiel -[vispy]: https://github.com/vispy/vispy [River]: https://github.com/online-ml/river +[vispy]: https://github.com/vispy/vispy [aiortc]: https://github.com/aiortc/aiortc [Confluent client for Kafka]: https://github.com/confluentinc/confluent-kafka-python [tinyobjloader]: https://github.com/tinyobjloader/tinyobjloader @@ -136,8 +136,8 @@ title: Working examples [aioquic]: https://github.com/aiortc/aioquic [google neuroglancer]: https://github.com/google/neuroglancer [DeepForest]: https://github.com/LAMDA-NJU/Deep-Forest -[Parselmouth]: https://github.com/YannickJadoul/Parselmouth [AutoPy]: https://github.com/autopilot-rs/autopy +[Parselmouth]: https://github.com/YannickJadoul/Parselmouth [H3-py]: https://github.com/uber/h3-py [python-rapidjson]: https://github.com/python-rapidjson/python-rapidjson [markupsafe]: https://github.com/pallets/markupsafe @@ -188,90 +188,90 @@ title: Working examples [apple icon]: data/readme_icons/apple.svg [linux icon]: data/readme_icons/linux.svg - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/test/utils.py b/test/utils.py index 34632c20..97675c7d 100644 --- a/test/utils.py +++ b/test/utils.py @@ -130,7 +130,7 @@ def expected_wheels( python_abi_tags = ["cp36-cp36m", "cp37-cp37m", "cp38-cp38", "cp39-cp39", "cp310-cp310"] if machine_arch in ["x86_64", "AMD64", "x86", "aarch64"]: - python_abi_tags += ["pp37-pypy37_pp73"] + python_abi_tags += ["pp37-pypy37_pp73", "pp38-pypy38_pp73"] if platform == "macos" and machine_arch == "arm64": # currently, arm64 macs are only supported by cp39 & cp310 diff --git a/unit_test/build_selector_test.py b/unit_test/build_selector_test.py index c99b28f1..7555ab33 100644 --- a/unit_test/build_selector_test.py +++ b/unit_test/build_selector_test.py @@ -53,6 +53,9 @@ def test_skip(): assert not build_selector("pp36-manylinux_x86_64") assert build_selector("pp37-manylinux_x86_64") + assert build_selector("pp38-manylinux_x86_64") + assert build_selector("pp37-manylinux_i686") + assert build_selector("pp38-manylinux_i686") assert build_selector("cp36-manylinux_x86_64") assert build_selector("cp37-manylinux_x86_64") assert not build_selector("cp36-manylinux_i686") diff --git a/unit_test/option_prepare_test.py b/unit_test/option_prepare_test.py index cadab279..55d7edb2 100644 --- a/unit_test/option_prepare_test.py +++ b/unit_test/option_prepare_test.py @@ -11,7 +11,7 @@ import pytest from cibuildwheel import linux, util from cibuildwheel.__main__ import main -ALL_IDS = {"cp36", "cp37", "cp38", "cp39", "cp310", "pp37"} +ALL_IDS = {"cp36", "cp37", "cp38", "cp39", "cp310", "pp37", "pp38"} @pytest.fixture @@ -132,7 +132,9 @@ before-all = "true" assert not kwargs["docker"]["simulate_32_bit"] identifiers = {x.identifier for x in kwargs["platform_configs"]} - assert identifiers == {f"{x}-manylinux_x86_64" for x in ALL_IDS - {"cp36", "cp310", "pp37"}} + assert identifiers == { + f"{x}-manylinux_x86_64" for x in ALL_IDS - {"cp36", "cp310", "pp37", "pp38"} + } assert kwargs["options"].build_options("cp37-manylinux_x86_64").before_all == "" kwargs = build_on_docker.call_args_list[2][1] @@ -140,7 +142,11 @@ before-all = "true" assert kwargs["docker"]["cwd"] == Path("/project") assert not kwargs["docker"]["simulate_32_bit"] identifiers = {x.identifier for x in kwargs["platform_configs"]} - assert identifiers == {"cp310-manylinux_x86_64", "pp37-manylinux_x86_64"} + assert identifiers == { + "cp310-manylinux_x86_64", + "pp37-manylinux_x86_64", + "pp38-manylinux_x86_64", + } kwargs = build_on_docker.call_args_list[3][1] assert "quay.io/pypa/manylinux2010_i686" in kwargs["docker"]["docker_image"] From 0d10faf957a420dcc89629cf9ae0ad81edd96c7d Mon Sep 17 00:00:00 2001 From: Henry Schreiner Date: Sat, 13 Nov 2021 11:55:53 -0500 Subject: [PATCH 19/20] docs: better deployment docs (#911) * docs: better deployment docs * Apply suggestions from code review Co-authored-by: Joe Rickerby * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci Co-authored-by: Joe Rickerby Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- docs/deliver-to-pypi.md | 81 ++++++++++++++++++++++---- examples/github-deploy.yml | 12 +--- examples/travis-ci-test-and-deploy.yml | 22 +++---- 3 files changed, 80 insertions(+), 35 deletions(-) diff --git a/docs/deliver-to-pypi.md b/docs/deliver-to-pypi.md index 3d794f23..610fe6e5 100644 --- a/docs/deliver-to-pypi.md +++ b/docs/deliver-to-pypi.md @@ -4,15 +4,16 @@ title: Delivering to PyPI After you've built your wheels, you'll probably want to deliver them to PyPI. -### Manual method +## Manual method -On your development machine, do the following... +On your development machine, install [pipx](https://pypa.github.io/pipx/) and do the following: ```bash +# Either download the SDist from your CI, or make it: # Clear out your 'dist' folder. rm -rf dist # Make a source distribution -python setup.py sdist +pipx run build --sdist # 🏃🏻 # Go and download your wheel files from wherever you put them. e.g. your CI @@ -20,17 +21,77 @@ python setup.py sdist # 'dist' folder. # Upload using 'twine' (you may need to 'pip install twine') -twine upload dist/* +pipx run twine upload dist/* ``` -### Semi-automatic method using wheelhouse-uploader +## Automatic method -Obviously, manual steps are for chumps, so we can automate this a little by using [wheelhouse-uploader](https://github.com/ogrisel/wheelhouse-uploader). +If you don't need much control over the release of a package, you can set up +cibuildwheel to deliver the wheels straight to PyPI. You just need to bump the +version and tag it. -> Quick note from me - using S3 as a storage didn't work due to a [bug](https://issues.apache.org/jira/browse/LIBCLOUD-792) in libcloud. Feel free to use my fork of that package that fixes the bug `pip install https://github.com/joerick/libcloud/archive/v1.5.0-s3fix.zip` +### Generic instructions -### Automatic method +Make your SDist with the [build](https://github.com/pypa/build) tool, and your wheels with cibuildwheel. If you can make the files available as +downloadable artifacts, this make testing before releases easier (depending on your CI provider's options). The "publish" job/step should collect the +files, and then run `twine upload ` (possibly via [pipx](https://github.com/pypa/pipx)); this should only happen on tags or "releases". -If you don't need much control over the release of a package, you can set up cibuildwheel to deliver the wheels straight to PyPI. This doesn't require anycloud storage to work - you just need to bump the version and tag it. +### GitHub Actions -See [`examples/travis-ci-deploy.yml`](https://github.com/pypa/cibuildwheel/blob/main/examples/travis-ci-deploy.yml) and [`examples/github-deploy.yml`](https://github.com/pypa/cibuildwheel/blob/main/examples/github-deploy.yml) for example configurations that automatically upload wheels to PyPI. +GitHub actions has pipx in all the runners as a supported package manager, as +well as several useful actions. Alongside your existing job(s) that runs cibuildwheel to make wheels, you will probably want to build an SDist: + +```yaml + make_sdist: + name: Make SDist + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 # Optional, use if you use setuptools_scm + submodules: true # Optional, use if you have submodules + + - name: Build SDist + run: pipx run build --sdist + + - uses: actions/upload-artifact@v2 + with: + path: dist/*.tar.gz +``` + +Then, you need to publish the artifacts that the previous jobs have built. This final job should run only on release or tag, depending on your preference. It gathers the artifacts from the sdist and wheel jobs and uploads them to PyPI. + +This requires a [PyPI upload token](https://pypi.org/manage/account/token/), stored in your [GitHub repo's secrets](https://docs.github.com/en/actions/security-guides/encrypted-secrets#creating-encrypted-secrets-for-a-repository) as `pypi_password`. + +```yaml + upload_all: + needs: [build_wheels, make_sdist] + runs-on: ubuntu-latest + if: github.event_name == 'release' && github.event.action == 'published' + steps: + - uses: actions/download-artifact@v2 + with: + name: artifact + path: dist + + - uses: pypa/gh-action-pypi-publish@v1.4.2 + with: + user: __token__ + password: ${{ secrets.pypi_password }} +``` + +You should use dependabot to keep the publish action up to date. In the above +example, the same name (the default, "artifact" is used for all upload-artifact +runs, so we can just download all of the in one step into a common directory. + +See +[`examples/github-deploy.yml`](https://github.com/pypa/cibuildwheel/blob/main/examples/github-deploy.yml) +for an example configuration that automatically upload wheels to PyPI. Also see +[scikit-hep.org/developer/gha_wheels](https://scikit-hep.org/developer/gha_wheels) +for a complete guide. + +### TravisCI + +See +[`examples/travis-ci-deploy.yml`](https://github.com/pypa/cibuildwheel/blob/main/examples/travis-ci-deploy.yml) +for an example configuration. diff --git a/examples/github-deploy.yml b/examples/github-deploy.yml index 8f16439a..ef4ec299 100644 --- a/examples/github-deploy.yml +++ b/examples/github-deploy.yml @@ -21,11 +21,6 @@ jobs: steps: - uses: actions/checkout@v2 - - uses: actions/setup-python@v2 - name: Install Python - with: - python-version: '3.8' - - name: Build wheels uses: pypa/cibuildwheel@v2.2.2 @@ -39,13 +34,8 @@ jobs: steps: - uses: actions/checkout@v2 - - uses: actions/setup-python@v2 - name: Install Python - with: - python-version: '3.8' - - name: Build sdist - run: python setup.py sdist + run: pipx run build --sdist - uses: actions/upload-artifact@v2 with: diff --git a/examples/travis-ci-test-and-deploy.yml b/examples/travis-ci-test-and-deploy.yml index a538071f..cb556385 100644 --- a/examples/travis-ci-test-and-deploy.yml +++ b/examples/travis-ci-test-and-deploy.yml @@ -26,7 +26,7 @@ install: - python3 -m pip install pytest script: - - python3 setup.py install + - python3 -m pip install . - pytest stages: @@ -48,30 +48,24 @@ jobs: # Deploy source distribution - stage: deploy name: Deploy source distribution - install: skip - script: python3 setup.py sdist --formats=gztar - after_success: | - python3 -m pip install twine - python3 -m twine upload --skip-existing dist/*.tar.gz + install: python3 -m pip install build twine + script: python3 -m build --sdist --formats=gztar + after_success: python3 -m twine upload --skip-existing dist/*.tar.gz # Deploy on linux - stage: deploy name: Build and deploy Linux wheels services: docker - install: python3 -m pip install cibuildwheel==2.2.2 + install: python3 -m pip install cibuildwheel==2.2.2 twine script: python3 -m cibuildwheel --output-dir wheelhouse - after_success: | - python3 -m pip install twine - python3 -m twine upload --skip-existing wheelhouse/*.whl + after_success: python3 -m twine upload --skip-existing wheelhouse/*.whl # Deploy on windows - stage: deploy name: Build and deploy Windows wheels os: windows language: shell - install: python3 -m pip install cibuildwheel==2.2.2 + install: python3 -m pip install cibuildwheel==2.2.2 twine script: python3 -m cibuildwheel --output-dir wheelhouse - after_success: | - python3 -m pip install twine - python3 -m twine upload --skip-existing wheelhouse/*.whl + after_success: python3 -m twine upload --skip-existing wheelhouse/*.whl env: global: From 2710202f18d8f054ddc9faa048722db878cd3152 Mon Sep 17 00:00:00 2001 From: Hadi Alqattan Date: Sat, 13 Nov 2021 20:59:47 +0300 Subject: [PATCH 20/20] chore: reenable Pycln (#918) Since the artificial limit removed for all Python3+ versions. --- .pre-commit-config.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index eabab8ee..7c7a6b45 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -27,11 +27,10 @@ repos: # Autoremoves unused imports - repo: https://github.com/hadialqattan/pycln - rev: v1.0.3 + rev: v1.1.0 hooks: - id: pycln args: [--config=pyproject.toml] - stages: [manual] # disabled due to artificial limit on Python 3.10 - repo: https://github.com/PyCQA/isort rev: 5.10.0