From c824c7e87a0a34e413025113d47e45c48ef2140f Mon Sep 17 00:00:00 2001 From: Joe Rickerby Date: Sun, 9 Jul 2023 15:59:27 +0100 Subject: [PATCH 01/43] Ignore docs changes on more CIs --- .cirrus.yml | 2 ++ azure-pipelines.yml | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/.cirrus.yml b/.cirrus.yml index 4ba969ea2..e496f9123 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -1,3 +1,5 @@ +skip: changesIncludeOnly('docs/*') + run_tests: &RUN_TESTS install_cibuildwheel_script: - python -m pip install -e ".[dev]" pytest-custom-exit-code diff --git a/azure-pipelines.yml b/azure-pipelines.yml index ee0d47471..e49b7cab9 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -1,3 +1,8 @@ +pr: + paths: + exclude: + - docs/* + jobs: - job: linux_38 timeoutInMinutes: 120 From f5960020cd553347c9d7d93f389f1de2f00cc2c6 Mon Sep 17 00:00:00 2001 From: Joe Rickerby Date: Mon, 10 Jul 2023 11:34:10 +0100 Subject: [PATCH 02/43] Add .pre-commit-config.yaml to CI ignore rules --- .cirrus.yml | 2 +- .github/workflows/test.yml | 1 + azure-pipelines.yml | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.cirrus.yml b/.cirrus.yml index e496f9123..edbdb1df4 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -1,4 +1,4 @@ -skip: changesIncludeOnly('docs/*') +skip: changesIncludeOnly('docs/*') || changesIncludeOnly('.pre-commit-config.yaml') run_tests: &RUN_TESTS install_cibuildwheel_script: diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 8c61be9de..ed08a6b86 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -7,6 +7,7 @@ on: pull_request: paths-ignore: - 'docs/**' + - .pre-commit-config.yaml workflow_dispatch: # allow manual runs on branches without a PR diff --git a/azure-pipelines.yml b/azure-pipelines.yml index e49b7cab9..4f3570641 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -2,6 +2,7 @@ pr: paths: exclude: - docs/* + - .pre-commit-config.yaml jobs: - job: linux_38 From ddbcf561dbcfafec901b7e97551f5e9887db2c70 Mon Sep 17 00:00:00 2001 From: Joe Rickerby Date: Sat, 15 Jul 2023 09:57:54 +0100 Subject: [PATCH 03/43] Correct logic with includes-only I'm assuming it takes multiple arguments because the Starlark version of the function does https://cirrus-ci.org/guide/programming-tasks/#changes_include_only --- .cirrus.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.cirrus.yml b/.cirrus.yml index edbdb1df4..e6c502f92 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -1,4 +1,4 @@ -skip: changesIncludeOnly('docs/*') || changesIncludeOnly('.pre-commit-config.yaml') +skip: changesIncludeOnly('docs/*', '.pre-commit-config.yaml') run_tests: &RUN_TESTS install_cibuildwheel_script: From 4135c0a01dc11910ce118f58acc7caf4ac5c524a Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sun, 16 Jul 2023 15:32:55 -0500 Subject: [PATCH 04/43] [pre-commit.ci] pre-commit autoupdate (#1546) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [pre-commit.ci] pre-commit autoupdate updates: - [github.com/astral-sh/ruff-pre-commit: v0.0.276 → v0.0.277](https://github.com/astral-sh/ruff-pre-commit/compare/v0.0.276...v0.0.277) * Update .pre-commit-config.yaml --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Henry Schreiner --- .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 7a343a72b..de6c386f2 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -19,7 +19,7 @@ repos: - id: black - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.0.276 + rev: v0.0.278 hooks: - id: ruff args: ["--fix", "--show-fixes"] From 8df6d59adf7f9c7876ece95d0f908b53e2014ff2 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 17 Jul 2023 23:27:43 +0000 Subject: [PATCH 05/43] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/psf/black: 23.3.0 → 23.7.0](https://github.com/psf/black/compare/23.3.0...23.7.0) --- .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 de6c386f2..444a0f001 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -14,7 +14,7 @@ repos: - id: trailing-whitespace - repo: https://github.com/psf/black - rev: 23.3.0 + rev: 23.7.0 hooks: - id: black From 5b32ee7d7bcd9433f559d8b43e9f9a180288c227 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 24 Jul 2023 22:34:06 -0400 Subject: [PATCH 06/43] [pre-commit.ci] pre-commit autoupdate (#1559) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/astral-sh/ruff-pre-commit: v0.0.278 → v0.0.280](https://github.com/astral-sh/ruff-pre-commit/compare/v0.0.278...v0.0.280) 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 444a0f001..561c3dbce 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -19,7 +19,7 @@ repos: - id: black - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.0.278 + rev: v0.0.280 hooks: - id: ruff args: ["--fix", "--show-fixes"] From 229f8570b497b5fa4a201f7dd28c4f52c104218e Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 1 Aug 2023 17:12:16 -0400 Subject: [PATCH 07/43] [pre-commit.ci] pre-commit autoupdate (#1562) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/astral-sh/ruff-pre-commit: v0.0.280 → v0.0.281](https://github.com/astral-sh/ruff-pre-commit/compare/v0.0.280...v0.0.281) 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 561c3dbce..c26120d9a 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -19,7 +19,7 @@ repos: - id: black - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.0.280 + rev: v0.0.281 hooks: - id: ruff args: ["--fix", "--show-fixes"] From 36049d86a2e21d74382d84d7a423e20e49a2ca91 Mon Sep 17 00:00:00 2001 From: Matthieu Darbois Date: Mon, 7 Aug 2023 18:01:10 +0200 Subject: [PATCH 08/43] feature: add musllinux_1_2 support (#1561) * feature: add musllinux_1_2 support * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * fix[test]: clean-up docker images in test_*linux*_only.py We are reaching disk space limits (14 GB) when running tests. Add a fixture to clean-up docker images after tests. This fixture is applied on tests that pull a specific image for one test only in order not to take too much time pulling that image many times. --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- bin/update_docker.py | 6 ++ .../resources/pinned_docker_images.cfg | 43 +++++++------- docs/options.md | 2 +- test/conftest.py | 34 +++++++++++ test/test_container_images.py | 1 + test/test_manylinuxXXXX_only.py | 1 + test/test_musllinux_X_Y_only.py | 56 +++++++++++++++++++ test/utils.py | 15 ++--- unit_test/option_prepare_test.py | 21 +++++-- 9 files changed, 147 insertions(+), 32 deletions(-) create mode 100644 test/test_musllinux_X_Y_only.py diff --git a/bin/update_docker.py b/bin/update_docker.py index fa91cd009..9be3ae03d 100755 --- a/bin/update_docker.py +++ b/bin/update_docker.py @@ -59,6 +59,12 @@ class Image: Image("musllinux_1_1", "aarch64", "quay.io/pypa/musllinux_1_1_aarch64", None), Image("musllinux_1_1", "ppc64le", "quay.io/pypa/musllinux_1_1_ppc64le", None), Image("musllinux_1_1", "s390x", "quay.io/pypa/musllinux_1_1_s390x", None), + # musllinux_1_2 images + Image("musllinux_1_2", "x86_64", "quay.io/pypa/musllinux_1_2_x86_64", None), + Image("musllinux_1_2", "i686", "quay.io/pypa/musllinux_1_2_i686", None), + Image("musllinux_1_2", "aarch64", "quay.io/pypa/musllinux_1_2_aarch64", None), + Image("musllinux_1_2", "ppc64le", "quay.io/pypa/musllinux_1_2_ppc64le", None), + Image("musllinux_1_2", "s390x", "quay.io/pypa/musllinux_1_2_s390x", None), ] config = configparser.ConfigParser() diff --git a/cibuildwheel/resources/pinned_docker_images.cfg b/cibuildwheel/resources/pinned_docker_images.cfg index b0834e929..3f00c255f 100644 --- a/cibuildwheel/resources/pinned_docker_images.cfg +++ b/cibuildwheel/resources/pinned_docker_images.cfg @@ -1,49 +1,54 @@ [x86_64] manylinux1 = quay.io/pypa/manylinux1_x86_64:2023-06-25-d2e0575 manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-07-14-55e4124 +manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-07-29-8793e83 manylinux_2_24 = quay.io/pypa/manylinux_2_24_x86_64:2022-12-26-0d38463 -manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2023-07-14-55e4124 -musllinux_1_1 = quay.io/pypa/musllinux_1_1_x86_64:2023-07-14-55e4124 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2023-07-29-8793e83 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_x86_64:2023-07-29-8793e83 +musllinux_1_2 = quay.io/pypa/musllinux_1_2_x86_64:2023-07-29-8793e83 [i686] manylinux1 = quay.io/pypa/manylinux1_i686:2023-06-25-d2e0575 manylinux2010 = quay.io/pypa/manylinux2010_i686:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-07-14-55e4124 +manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-07-29-8793e83 manylinux_2_24 = quay.io/pypa/manylinux_2_24_i686:2022-12-26-0d38463 -musllinux_1_1 = quay.io/pypa/musllinux_1_1_i686:2023-07-14-55e4124 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_i686:2023-07-29-8793e83 +musllinux_1_2 = quay.io/pypa/musllinux_1_2_i686:2023-07-29-8793e83 [pypy_x86_64] manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-07-14-55e4124 +manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-07-29-8793e83 manylinux_2_24 = quay.io/pypa/manylinux_2_24_x86_64:2022-12-26-0d38463 -manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2023-07-14-55e4124 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2023-07-29-8793e83 [pypy_i686] manylinux2010 = quay.io/pypa/manylinux2010_i686:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-07-14-55e4124 +manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-07-29-8793e83 manylinux_2_24 = quay.io/pypa/manylinux_2_24_i686:2022-12-26-0d38463 [aarch64] -manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-07-14-55e4124 +manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-07-29-8793e83 manylinux_2_24 = quay.io/pypa/manylinux_2_24_aarch64:2022-12-26-0d38463 -manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2023-07-14-55e4124 -musllinux_1_1 = quay.io/pypa/musllinux_1_1_aarch64:2023-07-14-55e4124 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2023-07-29-8793e83 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_aarch64:2023-07-29-8793e83 +musllinux_1_2 = quay.io/pypa/musllinux_1_2_aarch64:2023-07-29-8793e83 [ppc64le] -manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2023-07-14-55e4124 +manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2023-07-29-8793e83 manylinux_2_24 = quay.io/pypa/manylinux_2_24_ppc64le:2022-12-26-0d38463 -manylinux_2_28 = quay.io/pypa/manylinux_2_28_ppc64le:2023-07-14-55e4124 -musllinux_1_1 = quay.io/pypa/musllinux_1_1_ppc64le:2023-07-14-55e4124 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_ppc64le:2023-07-29-8793e83 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_ppc64le:2023-07-29-8793e83 +musllinux_1_2 = quay.io/pypa/musllinux_1_2_ppc64le:2023-07-29-8793e83 [s390x] -manylinux2014 = quay.io/pypa/manylinux2014_s390x:2023-07-14-55e4124 +manylinux2014 = quay.io/pypa/manylinux2014_s390x:2023-07-29-8793e83 manylinux_2_24 = quay.io/pypa/manylinux_2_24_s390x:2022-12-26-0d38463 -manylinux_2_28 = quay.io/pypa/manylinux_2_28_s390x:2023-07-14-55e4124 -musllinux_1_1 = quay.io/pypa/musllinux_1_1_s390x:2023-07-14-55e4124 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_s390x:2023-07-29-8793e83 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_s390x:2023-07-29-8793e83 +musllinux_1_2 = quay.io/pypa/musllinux_1_2_s390x:2023-07-29-8793e83 [pypy_aarch64] -manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-07-14-55e4124 +manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-07-29-8793e83 manylinux_2_24 = quay.io/pypa/manylinux_2_24_aarch64:2022-12-26-0d38463 -manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2023-07-14-55e4124 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2023-07-29-8793e83 diff --git a/docs/options.md b/docs/options.md index 2c12b9ee1..66dec0b74 100644 --- a/docs/options.md +++ b/docs/options.md @@ -981,7 +981,7 @@ Set an alternative Docker image to be used for building [manylinux / musllinux]( For `CIBW_MANYLINUX_*_IMAGE`, the value of this option can either be set to `manylinux1`, `manylinux2010`, `manylinux2014`, `manylinux_2_24` or `manylinux_2_28` to use a pinned version of the [official manylinux images](https://github.com/pypa/manylinux). Alternatively, set these options to any other valid Docker image name. For PyPy, the `manylinux1` image is not available. For architectures other than x86 (x86\_64 and i686) `manylinux2014`, `manylinux_2_24` or `manylinux_2_28` must be used, because the first version of the manylinux specification that supports additional architectures is `manylinux2014`. `manylinux_2_28` is not supported for `i686` architecture. -For `CIBW_MUSLLINUX_*_IMAGE`, the value of this option can either be set to `musllinux_1_1` to use a pinned version of the [official musllinux images](https://github.com/pypa/musllinux). Alternatively, set these options to any other valid Docker image name. +For `CIBW_MUSLLINUX_*_IMAGE`, the value of this option can either be set to `musllinux_1_1` or `musllinux_1_2` to use a pinned version of the [official musllinux images](https://github.com/pypa/musllinux). Alternatively, set these options to any other valid Docker image name. If this option is blank, it will fall though to the next available definition (environment variable -> pyproject.toml -> default). diff --git a/test/conftest.py b/test/conftest.py index 07db1c1e4..161148680 100644 --- a/test/conftest.py +++ b/test/conftest.py @@ -1,7 +1,15 @@ from __future__ import annotations +import json +import subprocess +from typing import Generator + import pytest +from cibuildwheel.util import detect_ci_provider + +from .utils import platform + def pytest_addoption(parser) -> None: parser.addoption( @@ -21,3 +29,29 @@ def pytest_addoption(parser) -> None: ) def build_frontend_env(request) -> dict[str, str]: return request.param # type: ignore[no-any-return] + + +@pytest.fixture() +def docker_cleanup() -> Generator[None, None, None]: + def get_images() -> set[str]: + images = subprocess.run( + ["docker", "image", "ls", "--format", "{{json .ID}}"], + text=True, + check=True, + stdout=subprocess.PIPE, + ).stdout + return {json.loads(image.strip()) for image in images.splitlines() if image.strip()} + + if detect_ci_provider() is None or platform != "linux": + try: + yield + finally: + pass + return + images_before = get_images() + try: + yield + finally: + images_after = get_images() + for image in images_after - images_before: + subprocess.run(["docker", "rmi", image], check=False) diff --git a/test/test_container_images.py b/test/test_container_images.py index 75b102e38..12d486418 100644 --- a/test/test_container_images.py +++ b/test/test_container_images.py @@ -23,6 +23,7 @@ ) +@pytest.mark.usefixtures("docker_cleanup") def test(tmp_path): if utils.platform != "linux": pytest.skip("the test is only relevant to the linux build") diff --git a/test/test_manylinuxXXXX_only.py b/test/test_manylinuxXXXX_only.py index 4d1fe87e8..06082a7bb 100644 --- a/test/test_manylinuxXXXX_only.py +++ b/test/test_manylinuxXXXX_only.py @@ -53,6 +53,7 @@ "manylinux_image", ["manylinux1", "manylinux2010", "manylinux2014", "manylinux_2_24", "manylinux_2_28"], ) +@pytest.mark.usefixtures("docker_cleanup") def test(manylinux_image, tmp_path): if utils.platform != "linux": pytest.skip("the container image test is only relevant to the linux build") diff --git a/test/test_musllinux_X_Y_only.py b/test/test_musllinux_X_Y_only.py new file mode 100644 index 000000000..d05bc9f87 --- /dev/null +++ b/test/test_musllinux_X_Y_only.py @@ -0,0 +1,56 @@ +from __future__ import annotations + +import textwrap + +import pytest + +from . import test_projects, utils + +project_with_manylinux_symbols = test_projects.new_c_project( + spam_c_top_level_add=textwrap.dedent( + r""" + #include + + #if defined(__GLIBC_PREREQ) + #error "Must not run on a glibc linux environment" + #endif + """ + ), + spam_c_function_add=textwrap.dedent( + r""" + sts = 0; + """ + ), +) + + +@pytest.mark.parametrize( + "musllinux_image", + ["musllinux_1_1", "musllinux_1_2"], +) +@pytest.mark.usefixtures("docker_cleanup") +def test(musllinux_image, tmp_path): + if utils.platform != "linux": + pytest.skip("the container image test is only relevant to the linux build") + + project_dir = tmp_path / "project" + project_with_manylinux_symbols.generate(project_dir) + + # build the wheels + add_env = { + "CIBW_BUILD": "*-musllinux*", + "CIBW_MUSLLINUX_X86_64_IMAGE": musllinux_image, + "CIBW_MUSLLINUX_I686_IMAGE": musllinux_image, + "CIBW_MUSLLINUX_AARCH64_IMAGE": musllinux_image, + "CIBW_MUSLLINUX_PPC64LE_IMAGE": musllinux_image, + "CIBW_MUSLLINUX_S390X_IMAGE": musllinux_image, + } + + actual_wheels = utils.cibuildwheel_run(project_dir, add_env=add_env) + expected_wheels = utils.expected_wheels( + "spam", + "0.1.0", + manylinux_versions=[], + musllinux_versions=[musllinux_image], + ) + assert set(actual_wheels) == set(expected_wheels) diff --git a/test/utils.py b/test/utils.py index f4578a58a..9ddc528c8 100644 --- a/test/utils.py +++ b/test/utils.py @@ -205,13 +205,14 @@ def expected_wheels( if machine_arch == "x86_64": architectures.append("i686") - platform_tags = [ - ".".join( - f"{manylinux_version}_{architecture}" - for manylinux_version in manylinux_versions - ) - for architecture in architectures - ] + if len(manylinux_versions) > 0: + platform_tags = [ + ".".join( + f"{manylinux_version}_{architecture}" + for manylinux_version in manylinux_versions + ) + for architecture in architectures + ] if len(musllinux_versions) > 0 and not python_abi_tag.startswith("pp"): platform_tags.extend( [ diff --git a/unit_test/option_prepare_test.py b/unit_test/option_prepare_test.py index f37badf20..0e965aa40 100644 --- a/unit_test/option_prepare_test.py +++ b/unit_test/option_prepare_test.py @@ -101,13 +101,15 @@ def test_build_with_override_launches(monkeypatch, tmp_path): cibw_toml.write_text( """ [tool.cibuildwheel] -manylinux-x86_64-image = "manylinux_2_24" +manylinux-x86_64-image = "manylinux_2_28" +musllinux-x86_64-image = "musllinux_1_2" -# Before Python 3.10, use manylinux2014 +# Before Python 3.10, use manylinux2014, musllinux_1_1 [[tool.cibuildwheel.overrides]] select = "cp3?-*" manylinux-x86_64-image = "manylinux2014" manylinux-i686-image = "manylinux2014" +musllinux-x86_64-image = "musllinux_1_1" [[tool.cibuildwheel.overrides]] select = "cp36-manylinux_x86_64" @@ -122,7 +124,7 @@ def test_build_with_override_launches(monkeypatch, tmp_path): build_in_container = typing.cast(mock.Mock, linux.build_in_container) - assert build_in_container.call_count == 6 + assert build_in_container.call_count == 7 kwargs = build_in_container.call_args_list[0][1] assert "quay.io/pypa/manylinux2014_x86_64" in kwargs["container"]["image"] @@ -146,7 +148,7 @@ def test_build_with_override_launches(monkeypatch, tmp_path): assert kwargs["options"].build_options("cp37-manylinux_x86_64").before_all == "" kwargs = build_in_container.call_args_list[2][1] - assert "quay.io/pypa/manylinux_2_24_x86_64" in kwargs["container"]["image"] + assert "quay.io/pypa/manylinux_2_28_x86_64" in kwargs["container"]["image"] assert kwargs["container"]["cwd"] == PurePosixPath("/project") assert not kwargs["container"]["simulate_32_bit"] identifiers = {x.identifier for x in kwargs["platform_configs"]} @@ -169,10 +171,19 @@ def test_build_with_override_launches(monkeypatch, tmp_path): identifiers = {x.identifier for x in kwargs["platform_configs"]} assert identifiers == { - f"{x}-musllinux_x86_64" for x in ALL_IDS for x in ALL_IDS if "pp" not in x + f"{x}-musllinux_x86_64" for x in ALL_IDS & {"cp36", "cp37", "cp38", "cp39"} if "pp" not in x } kwargs = build_in_container.call_args_list[5][1] + assert "quay.io/pypa/musllinux_1_2_x86_64" in kwargs["container"]["image"] + assert kwargs["container"]["cwd"] == PurePosixPath("/project") + assert not kwargs["container"]["simulate_32_bit"] + identifiers = {x.identifier for x in kwargs["platform_configs"]} + assert identifiers == { + f"{x}-musllinux_x86_64" for x in ALL_IDS - {"cp36", "cp37", "cp38", "cp39"} if "pp" not in x + } + + kwargs = build_in_container.call_args_list[6][1] assert "quay.io/pypa/musllinux_1_1_i686" in kwargs["container"]["image"] assert kwargs["container"]["cwd"] == PurePosixPath("/project") assert kwargs["container"]["simulate_32_bit"] From 8946bfb2e8ca91e4cf1a267699f475581f292f35 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 7 Aug 2023 23:30:53 +0000 Subject: [PATCH 09/43] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/astral-sh/ruff-pre-commit: v0.0.281 → v0.0.282](https://github.com/astral-sh/ruff-pre-commit/compare/v0.0.281...v0.0.282) --- .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 c26120d9a..ac0e72632 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -19,7 +19,7 @@ repos: - id: black - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.0.281 + rev: v0.0.282 hooks: - id: ruff args: ["--fix", "--show-fixes"] From df94b5db6769eb8c3abb164caa9ab84c763570da Mon Sep 17 00:00:00 2001 From: "cibuildwheel-bot[bot]" <83877280+cibuildwheel-bot[bot]@users.noreply.github.com> Date: Tue, 8 Aug 2023 08:27:23 +0200 Subject: [PATCH 10/43] [Bot] Update dependencies (#1553) Update dependencies Co-authored-by: cibuildwheel-bot[bot] <83877280+cibuildwheel-bot[bot]@users.noreply.github.com> --- cibuildwheel/resources/build-platforms.toml | 12 ++--- .../resources/constraints-python310.txt | 10 ++-- .../resources/constraints-python311.txt | 10 ++-- .../resources/constraints-python312.txt | 10 ++-- .../resources/constraints-python37.txt | 10 ++-- .../resources/constraints-python38.txt | 10 ++-- .../resources/constraints-python39.txt | 10 ++-- cibuildwheel/resources/constraints.txt | 10 ++-- .../resources/pinned_docker_images.cfg | 52 +++++++++---------- docs/working-examples.md | 38 +++++++------- 10 files changed, 86 insertions(+), 86 deletions(-) diff --git a/cibuildwheel/resources/build-platforms.toml b/cibuildwheel/resources/build-platforms.toml index 84d67d9a4..696427cdf 100644 --- a/cibuildwheel/resources/build-platforms.toml +++ b/cibuildwheel/resources/build-platforms.toml @@ -100,9 +100,9 @@ python_configurations = [ { identifier = "cp311-macosx_x86_64", version = "3.11", url = "https://www.python.org/ftp/python/3.11.4/python-3.11.4-macos11.pkg" }, { identifier = "cp311-macosx_arm64", version = "3.11", url = "https://www.python.org/ftp/python/3.11.4/python-3.11.4-macos11.pkg" }, { identifier = "cp311-macosx_universal2", version = "3.11", url = "https://www.python.org/ftp/python/3.11.4/python-3.11.4-macos11.pkg" }, - { identifier = "cp312-macosx_x86_64", version = "3.12", url = "https://www.python.org/ftp/python/3.12.0/python-3.12.0b4-macos11.pkg" }, - { identifier = "cp312-macosx_arm64", version = "3.12", url = "https://www.python.org/ftp/python/3.12.0/python-3.12.0b4-macos11.pkg" }, - { identifier = "cp312-macosx_universal2", version = "3.12", url = "https://www.python.org/ftp/python/3.12.0/python-3.12.0b4-macos11.pkg" }, + { identifier = "cp312-macosx_x86_64", version = "3.12", url = "https://www.python.org/ftp/python/3.12.0/python-3.12.0rc1-macos11.pkg" }, + { identifier = "cp312-macosx_arm64", version = "3.12", url = "https://www.python.org/ftp/python/3.12.0/python-3.12.0rc1-macos11.pkg" }, + { identifier = "cp312-macosx_universal2", version = "3.12", url = "https://www.python.org/ftp/python/3.12.0/python-3.12.0rc1-macos11.pkg" }, { identifier = "pp37-macosx_x86_64", version = "3.7", url = "https://downloads.python.org/pypy/pypy3.7-v7.3.9-osx64.tar.bz2" }, { identifier = "pp38-macosx_x86_64", version = "3.8", url = "https://downloads.python.org/pypy/pypy3.8-v7.3.11-macos_x86_64.tar.bz2" }, { identifier = "pp38-macosx_arm64", version = "3.8", url = "https://downloads.python.org/pypy/pypy3.8-v7.3.11-macos_arm64.tar.bz2" }, @@ -126,12 +126,12 @@ python_configurations = [ { identifier = "cp310-win_amd64", version = "3.10.11", arch = "64" }, { identifier = "cp311-win32", version = "3.11.4", arch = "32" }, { identifier = "cp311-win_amd64", version = "3.11.4", arch = "64" }, - { identifier = "cp312-win32", version = "3.12.0-b4", arch = "32" }, - { identifier = "cp312-win_amd64", version = "3.12.0-b4", arch = "64" }, + { identifier = "cp312-win32", version = "3.12.0-rc1", arch = "32" }, + { identifier = "cp312-win_amd64", version = "3.12.0-rc1", arch = "64" }, { identifier = "cp39-win_arm64", version = "3.9.10", arch = "ARM64" }, { identifier = "cp310-win_arm64", version = "3.10.11", arch = "ARM64" }, { identifier = "cp311-win_arm64", version = "3.11.4", arch = "ARM64" }, - { identifier = "cp312-win_arm64", version = "3.12.0-b4", arch = "ARM64" }, + { identifier = "cp312-win_arm64", version = "3.12.0-rc1", arch = "ARM64" }, { identifier = "pp37-win_amd64", version = "3.7", arch = "64", url = "https://downloads.python.org/pypy/pypy3.7-v7.3.9-win64.zip" }, { identifier = "pp38-win_amd64", version = "3.8", arch = "64", url = "https://downloads.python.org/pypy/pypy3.8-v7.3.11-win64.zip" }, { identifier = "pp39-win_amd64", version = "3.9", arch = "64", url = "https://downloads.python.org/pypy/pypy3.9-v7.3.12-win64.zip" }, diff --git a/cibuildwheel/resources/constraints-python310.txt b/cibuildwheel/resources/constraints-python310.txt index 22f06f863..a2836162a 100644 --- a/cibuildwheel/resources/constraints-python310.txt +++ b/cibuildwheel/resources/constraints-python310.txt @@ -6,23 +6,23 @@ # delocate==0.10.4 # via -r cibuildwheel/resources/constraints.in -distlib==0.3.6 +distlib==0.3.7 # via virtualenv filelock==3.12.2 # via virtualenv packaging==23.1 # via delocate -platformdirs==3.8.1 +platformdirs==3.10.0 # via virtualenv typing-extensions==4.7.1 # via delocate -virtualenv==20.23.1 +virtualenv==20.24.2 # via -r cibuildwheel/resources/constraints.in -wheel==0.40.0 +wheel==0.41.1 # via -r cibuildwheel/resources/constraints.in # The following packages are considered to be unsafe in a requirements file: -pip==23.1.2 +pip==23.2.1 # via -r cibuildwheel/resources/constraints.in setuptools==68.0.0 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python311.txt b/cibuildwheel/resources/constraints-python311.txt index 72882c1d5..11d4beca7 100644 --- a/cibuildwheel/resources/constraints-python311.txt +++ b/cibuildwheel/resources/constraints-python311.txt @@ -6,23 +6,23 @@ # delocate==0.10.4 # via -r cibuildwheel/resources/constraints.in -distlib==0.3.6 +distlib==0.3.7 # via virtualenv filelock==3.12.2 # via virtualenv packaging==23.1 # via delocate -platformdirs==3.8.1 +platformdirs==3.10.0 # via virtualenv typing-extensions==4.7.1 # via delocate -virtualenv==20.23.1 +virtualenv==20.24.2 # via -r cibuildwheel/resources/constraints.in -wheel==0.40.0 +wheel==0.41.1 # via -r cibuildwheel/resources/constraints.in # The following packages are considered to be unsafe in a requirements file: -pip==23.1.2 +pip==23.2.1 # via -r cibuildwheel/resources/constraints.in setuptools==68.0.0 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python312.txt b/cibuildwheel/resources/constraints-python312.txt index ca6615dc4..23a755f1b 100644 --- a/cibuildwheel/resources/constraints-python312.txt +++ b/cibuildwheel/resources/constraints-python312.txt @@ -6,23 +6,23 @@ # delocate==0.10.4 # via -r cibuildwheel/resources/constraints.in -distlib==0.3.6 +distlib==0.3.7 # via virtualenv filelock==3.12.2 # via virtualenv packaging==23.1 # via delocate -platformdirs==3.8.1 +platformdirs==3.10.0 # via virtualenv typing-extensions==4.7.1 # via delocate -virtualenv==20.23.1 +virtualenv==20.24.2 # via -r cibuildwheel/resources/constraints.in -wheel==0.40.0 +wheel==0.41.1 # via -r cibuildwheel/resources/constraints.in # The following packages are considered to be unsafe in a requirements file: -pip==23.1.2 +pip==23.2.1 # via -r cibuildwheel/resources/constraints.in setuptools==68.0.0 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python37.txt b/cibuildwheel/resources/constraints-python37.txt index 250c56b7d..b4e57965d 100644 --- a/cibuildwheel/resources/constraints-python37.txt +++ b/cibuildwheel/resources/constraints-python37.txt @@ -6,7 +6,7 @@ # delocate==0.10.4 # via -r cibuildwheel/resources/constraints.in -distlib==0.3.6 +distlib==0.3.7 # via virtualenv filelock==3.12.2 # via virtualenv @@ -14,22 +14,22 @@ importlib-metadata==6.7.0 # via virtualenv packaging==23.1 # via delocate -platformdirs==3.8.1 +platformdirs==3.10.0 # via virtualenv typing-extensions==4.7.1 # via # delocate # importlib-metadata # platformdirs -virtualenv==20.23.1 +virtualenv==20.24.2 # via -r cibuildwheel/resources/constraints.in -wheel==0.40.0 +wheel==0.41.1 # via -r cibuildwheel/resources/constraints.in zipp==3.15.0 # via importlib-metadata # The following packages are considered to be unsafe in a requirements file: -pip==23.1.2 +pip==23.2.1 # via -r cibuildwheel/resources/constraints.in setuptools==68.0.0 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python38.txt b/cibuildwheel/resources/constraints-python38.txt index 707340c28..f5e63ad5b 100644 --- a/cibuildwheel/resources/constraints-python38.txt +++ b/cibuildwheel/resources/constraints-python38.txt @@ -6,23 +6,23 @@ # delocate==0.10.4 # via -r cibuildwheel/resources/constraints.in -distlib==0.3.6 +distlib==0.3.7 # via virtualenv filelock==3.12.2 # via virtualenv packaging==23.1 # via delocate -platformdirs==3.8.1 +platformdirs==3.10.0 # via virtualenv typing-extensions==4.7.1 # via delocate -virtualenv==20.23.1 +virtualenv==20.24.2 # via -r cibuildwheel/resources/constraints.in -wheel==0.40.0 +wheel==0.41.1 # via -r cibuildwheel/resources/constraints.in # The following packages are considered to be unsafe in a requirements file: -pip==23.1.2 +pip==23.2.1 # via -r cibuildwheel/resources/constraints.in setuptools==68.0.0 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python39.txt b/cibuildwheel/resources/constraints-python39.txt index bbe4692ed..1669efa8b 100644 --- a/cibuildwheel/resources/constraints-python39.txt +++ b/cibuildwheel/resources/constraints-python39.txt @@ -6,23 +6,23 @@ # delocate==0.10.4 # via -r cibuildwheel/resources/constraints.in -distlib==0.3.6 +distlib==0.3.7 # via virtualenv filelock==3.12.2 # via virtualenv packaging==23.1 # via delocate -platformdirs==3.8.1 +platformdirs==3.10.0 # via virtualenv typing-extensions==4.7.1 # via delocate -virtualenv==20.23.1 +virtualenv==20.24.2 # via -r cibuildwheel/resources/constraints.in -wheel==0.40.0 +wheel==0.41.1 # via -r cibuildwheel/resources/constraints.in # The following packages are considered to be unsafe in a requirements file: -pip==23.1.2 +pip==23.2.1 # via -r cibuildwheel/resources/constraints.in setuptools==68.0.0 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints.txt b/cibuildwheel/resources/constraints.txt index ca6615dc4..23a755f1b 100644 --- a/cibuildwheel/resources/constraints.txt +++ b/cibuildwheel/resources/constraints.txt @@ -6,23 +6,23 @@ # delocate==0.10.4 # via -r cibuildwheel/resources/constraints.in -distlib==0.3.6 +distlib==0.3.7 # via virtualenv filelock==3.12.2 # via virtualenv packaging==23.1 # via delocate -platformdirs==3.8.1 +platformdirs==3.10.0 # via virtualenv typing-extensions==4.7.1 # via delocate -virtualenv==20.23.1 +virtualenv==20.24.2 # via -r cibuildwheel/resources/constraints.in -wheel==0.40.0 +wheel==0.41.1 # via -r cibuildwheel/resources/constraints.in # The following packages are considered to be unsafe in a requirements file: -pip==23.1.2 +pip==23.2.1 # via -r cibuildwheel/resources/constraints.in setuptools==68.0.0 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/pinned_docker_images.cfg b/cibuildwheel/resources/pinned_docker_images.cfg index 3f00c255f..7b8ead79b 100644 --- a/cibuildwheel/resources/pinned_docker_images.cfg +++ b/cibuildwheel/resources/pinned_docker_images.cfg @@ -1,54 +1,54 @@ [x86_64] -manylinux1 = quay.io/pypa/manylinux1_x86_64:2023-06-25-d2e0575 +manylinux1 = quay.io/pypa/manylinux1_x86_64:2023-08-06-0a0ac62 manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-07-29-8793e83 +manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-08-07-e3f636d manylinux_2_24 = quay.io/pypa/manylinux_2_24_x86_64:2022-12-26-0d38463 -manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2023-07-29-8793e83 -musllinux_1_1 = quay.io/pypa/musllinux_1_1_x86_64:2023-07-29-8793e83 -musllinux_1_2 = quay.io/pypa/musllinux_1_2_x86_64:2023-07-29-8793e83 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2023-08-07-e3f636d +musllinux_1_1 = quay.io/pypa/musllinux_1_1_x86_64:2023-08-07-e3f636d +musllinux_1_2 = quay.io/pypa/musllinux_1_2_x86_64:2023-08-07-e3f636d [i686] -manylinux1 = quay.io/pypa/manylinux1_i686:2023-06-25-d2e0575 +manylinux1 = quay.io/pypa/manylinux1_i686:2023-08-06-0a0ac62 manylinux2010 = quay.io/pypa/manylinux2010_i686:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-07-29-8793e83 +manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-08-07-e3f636d manylinux_2_24 = quay.io/pypa/manylinux_2_24_i686:2022-12-26-0d38463 -musllinux_1_1 = quay.io/pypa/musllinux_1_1_i686:2023-07-29-8793e83 -musllinux_1_2 = quay.io/pypa/musllinux_1_2_i686:2023-07-29-8793e83 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_i686:2023-08-07-e3f636d +musllinux_1_2 = quay.io/pypa/musllinux_1_2_i686:2023-08-07-e3f636d [pypy_x86_64] manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-07-29-8793e83 +manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-08-07-e3f636d manylinux_2_24 = quay.io/pypa/manylinux_2_24_x86_64:2022-12-26-0d38463 -manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2023-07-29-8793e83 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2023-08-07-e3f636d [pypy_i686] manylinux2010 = quay.io/pypa/manylinux2010_i686:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-07-29-8793e83 +manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-08-07-e3f636d manylinux_2_24 = quay.io/pypa/manylinux_2_24_i686:2022-12-26-0d38463 [aarch64] -manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-07-29-8793e83 +manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-08-07-e3f636d manylinux_2_24 = quay.io/pypa/manylinux_2_24_aarch64:2022-12-26-0d38463 -manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2023-07-29-8793e83 -musllinux_1_1 = quay.io/pypa/musllinux_1_1_aarch64:2023-07-29-8793e83 -musllinux_1_2 = quay.io/pypa/musllinux_1_2_aarch64:2023-07-29-8793e83 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2023-08-07-e3f636d +musllinux_1_1 = quay.io/pypa/musllinux_1_1_aarch64:2023-08-07-e3f636d +musllinux_1_2 = quay.io/pypa/musllinux_1_2_aarch64:2023-08-07-e3f636d [ppc64le] -manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2023-07-29-8793e83 +manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2023-08-07-e3f636d manylinux_2_24 = quay.io/pypa/manylinux_2_24_ppc64le:2022-12-26-0d38463 -manylinux_2_28 = quay.io/pypa/manylinux_2_28_ppc64le:2023-07-29-8793e83 -musllinux_1_1 = quay.io/pypa/musllinux_1_1_ppc64le:2023-07-29-8793e83 -musllinux_1_2 = quay.io/pypa/musllinux_1_2_ppc64le:2023-07-29-8793e83 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_ppc64le:2023-08-07-e3f636d +musllinux_1_1 = quay.io/pypa/musllinux_1_1_ppc64le:2023-08-07-e3f636d +musllinux_1_2 = quay.io/pypa/musllinux_1_2_ppc64le:2023-08-07-e3f636d [s390x] -manylinux2014 = quay.io/pypa/manylinux2014_s390x:2023-07-29-8793e83 +manylinux2014 = quay.io/pypa/manylinux2014_s390x:2023-08-07-e3f636d manylinux_2_24 = quay.io/pypa/manylinux_2_24_s390x:2022-12-26-0d38463 -manylinux_2_28 = quay.io/pypa/manylinux_2_28_s390x:2023-07-29-8793e83 -musllinux_1_1 = quay.io/pypa/musllinux_1_1_s390x:2023-07-29-8793e83 -musllinux_1_2 = quay.io/pypa/musllinux_1_2_s390x:2023-07-29-8793e83 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_s390x:2023-08-07-e3f636d +musllinux_1_1 = quay.io/pypa/musllinux_1_1_s390x:2023-08-07-e3f636d +musllinux_1_2 = quay.io/pypa/musllinux_1_2_s390x:2023-08-07-e3f636d [pypy_aarch64] -manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-07-29-8793e83 +manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-08-07-e3f636d manylinux_2_24 = quay.io/pypa/manylinux_2_24_aarch64:2022-12-26-0d38463 -manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2023-07-29-8793e83 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2023-08-07-e3f636d diff --git a/docs/working-examples.md b/docs/working-examples.md index 1c3fcd47b..50575ea2c 100644 --- a/docs/working-examples.md +++ b/docs/working-examples.md @@ -22,8 +22,8 @@ title: Working examples | [uvloop][] | ![github icon][] | ![apple icon][] ![linux icon][] | Ultra fast asyncio event loop. | | [psutil][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Cross-platform lib for process and system monitoring in Python | | [vaex][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Out-of-Core hybrid Apache Arrow/NumPy DataFrame for Python, ML, visualization and exploration of big tabular data at a billion rows per second 🚀 | -| [Google Benchmark][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | A microbenchmark support library | | [Triton][] | ![github icon][] | ![linux icon][] | Self hosted runners | +| [Google Benchmark][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | A microbenchmark support library | | [Apache Beam][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Apache Beam is a unified programming model for Batch and Streaming data processing. | | [PyGame][] | ![github icon][] | ![apple icon][] ![linux icon][] | 🐍🎮 pygame (the library) is a Free and Open Source python programming language library for making multimedia applications like games built on top of the excellent SDL library. C, Python, Native, OpenGL. | | [asyncpg][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | A fast PostgreSQL Database Client Library for Python/asyncio. | @@ -51,33 +51,33 @@ title: Working examples | [PyAV][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Pythonic bindings for FFmpeg's libraries. | | [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. | | [Wrapt][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A Python module for decorators, wrappers and monkey patching. | -| [pikepdf][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A Python library for reading and writing PDF, powered by qpdf | -| [envd][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | 🏕️ Reproducible development environment for AI/ML | +| [pikepdf][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A Python library for reading and writing PDF, powered by QPDF | +| [envd][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | 🏕️ Reproducible development environment for AI/ML (LLMOps) | | [SimpleJSON][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | simplejson is a simple, fast, extensible JSON encoder/decoder for Python | | [OpenColorIO][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | A color management framework for visual effects and animation. | +| [CTranslate2][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Includes libraries from the [Intel oneAPI toolkit](https://www.intel.com/content/www/us/en/developer/tools/oneapi/base-toolkit.html) and CUDA kernels compiled for multiple GPU architectures. | | [aioquic][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | QUIC and HTTP/3 implementation in Python | | [ruptures][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Extensive Cython + NumPy [pyproject.toml](https://github.com/deepcharles/ruptures/blob/master/pyproject.toml) example. | | [OpenTimelineIO][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Open Source API and interchange format for editorial timeline information. | -| [CTranslate2][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Includes libraries from the [Intel oneAPI toolkit](https://www.intel.com/content/www/us/en/developer/tools/oneapi/base-toolkit.html) and CUDA kernels compiled for multiple GPU architectures. | | [PyTables][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A Python package to manage extremely large amounts of data | | [Psycopg 3][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A modern implementation of a PostgreSQL adapter for Python | | [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. | -| [DeepForest][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | An Efficient, Scalable and Optimized Python Framework for Deep Forest (2021.2.1) | | [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. | | [H3-py][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Python bindings for H3, a hierarchical hexagonal geospatial indexing system | | [Rtree][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Rtree: spatial index for Python GIS ¶ | -| [mosec][] | ![github icon][] | ![linux icon][] ![apple icon][] | A high-performance serving framework for ML models, offers dynamic batching and multi-stage pipeline to fully exploit your compute machine | +| [mosec][] | ![github icon][] | ![linux icon][] ![apple icon][] | A high-performance ML model serving framework, offers dynamic batching and CPU/GPU pipelines to fully exploit your compute machine | | [markupsafe][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Safely add untrusted strings to HTML/XML markup. | | [Picologging][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A high-performance logging library for Python. | | [pybind11 cmake_example][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Example pybind11 module built with a CMake-based build system | | [KDEpy][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Kernel Density Estimation in Python | -| [python-rapidjson][] | ![travisci icon][] ![gitlab icon][] ![appveyor icon][] | ![windows icon][] ![linux icon][] | Python wrapper around rapidjson | | [time-machine][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Time mocking library using only the CPython C API. | +| [python-rapidjson][] | ![travisci icon][] ![gitlab icon][] ![appveyor icon][] | ![windows icon][] ![linux icon][] | Python wrapper around rapidjson | | [python-snappy][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Python bindings for the snappy google library | | [tgcalls][] | ![github icon][] | ![apple icon][] ![windows icon][] | Python `pybind11` binding to Telegram's WebRTC library with third party dependencies like `OpenSSL`, `MozJPEG`, `FFmpeg`, etc. | -| [pybind11 python_example][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Example pybind11 module built with a Python-based build system | | [dd-trace-py][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Uses custom alternate arch emulation on GitHub | +| [pybind11 python_example][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Example pybind11 module built with a Python-based build system | | [sourmash][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Quickly search, compare, and analyze genomic and metagenomic data sets. | | [cyvcf2][] | ![github icon][] | ![apple icon][] ![linux icon][] | cython + htslib == fast VCF and BCF processing | | [matrixprofile][] | ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A Python 3 library making time series data mining tasks, utilizing matrix profile algorithms, accessible to everyone. | @@ -88,8 +88,8 @@ title: Working examples | [PyGLM][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Fast OpenGL Mathematics (GLM) for Python | | [TgCrypto][] | ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Includes a Windows Travis build. | | [bx-python][] | ![travisci icon][] | ![apple icon][] ![linux icon][] | A library that includes Cython extensions. | -| [iDynTree][] | ![github icon][] | ![linux icon][] | Uses manylinux_2_24 | | [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 | | [pillow-heif][] | ![github icon][] ![cirrusci icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Bindings to libheif library with third party dependencies. Fully automated CI for tests and publishing including Apple Silicon builds. | | [Python-WebRTC][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | a Python extension that provides bindings to WebRTC M92 | | [pybase64][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Fast Base64 encoding/decoding in Python | @@ -100,13 +100,13 @@ title: Working examples | [polaroid][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Full range of wheels for setuptools rust, with auto release and PyPI deploy. | | [etebase-py][] | ![travisci icon][] | ![linux icon][] | Python bindings to a Rust library using `setuptools-rust`, and `sccache` for improved speed. | | [pybind11 scikit_build_example][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | An example combining scikit-build and pybind11 | -| [cf-units][] | ![github icon][] | ![apple icon][] ![linux icon][] | Units of measure as required by the Climate and Forecast (CF) Metadata Conventions | | [clang-format][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Scikit-build wrapper around LLVM's CMake, all platforms, generic wheels. | +| [cf-units][] | ![github icon][] | ![apple icon][] ![linux icon][] | Units of measure as required by the Climate and Forecast (CF) Metadata Conventions | | [ninja][] | ![github icon][] ![travisci icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Multitagged binary builds for all supported platforms, using cibw 2 config configuration. | | [numpythia][] | ![github icon][] | ![apple icon][] ![linux icon][] | The interface between PYTHIA and NumPy | | [pyjet][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | The interface between FastJet and NumPy | -| [ril][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A python binding to Rust Imaging library using maturin and Pyo3, utilizes Github Action cache to improve speed. Builds abi3 wheels. | | [GSD][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Cython and NumPy project with 64-bit wheels. | +| [ril][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A python binding to Rust Imaging library using maturin and Pyo3, utilizes Github Action cache to improve speed. Builds abi3 wheels. | | [SiPM][] | ![github icon][] | ![apple icon][] ![linux icon][] | High performance library for SiPM detectors simulation using C++17, OpenMP and AVX2 intrinsics. | | [CorrectionLib][] | ![github icon][] | ![apple icon][] ![linux icon][] | Structured JSON powered correction library for HEP, designed for the CMS experiment at CERN. | | [pyinstrument_cext][] | ![travisci icon][] ![appveyor icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A simple C extension, without external dependencies | @@ -128,8 +128,8 @@ title: Working examples [uvloop]: https://github.com/MagicStack/uvloop [psutil]: https://github.com/giampaolo/psutil [vaex]: https://github.com/vaexio/vaex -[Google Benchmark]: https://github.com/google/benchmark [Triton]: https://github.com/openai/triton +[Google Benchmark]: https://github.com/google/benchmark [Apache Beam]: https://github.com/apache/beam [PyGame]: https://github.com/pygame/pygame [asyncpg]: https://github.com/MagicStack/asyncpg @@ -161,15 +161,15 @@ title: Working examples [envd]: https://github.com/tensorchord/envd [SimpleJSON]: https://github.com/simplejson/simplejson [OpenColorIO]: https://github.com/AcademySoftwareFoundation/OpenColorIO +[CTranslate2]: https://github.com/OpenNMT/CTranslate2 [aioquic]: https://github.com/aiortc/aioquic [ruptures]: https://github.com/deepcharles/ruptures [OpenTimelineIO]: https://github.com/PixarAnimationStudios/OpenTimelineIO -[CTranslate2]: https://github.com/OpenNMT/CTranslate2 [PyTables]: https://github.com/PyTables/PyTables [Psycopg 3]: https://github.com/psycopg/psycopg [Parselmouth]: https://github.com/YannickJadoul/Parselmouth -[DeepForest]: https://github.com/LAMDA-NJU/Deep-Forest [google neuroglancer]: https://github.com/google/neuroglancer +[DeepForest]: https://github.com/LAMDA-NJU/Deep-Forest [AutoPy]: https://github.com/autopilot-rs/autopy [H3-py]: https://github.com/uber/h3-py [Rtree]: https://github.com/Toblerity/rtree @@ -178,12 +178,12 @@ title: Working examples [Picologging]: https://github.com/microsoft/picologging [pybind11 cmake_example]: https://github.com/pybind/cmake_example [KDEpy]: https://github.com/tommyod/KDEpy -[python-rapidjson]: https://github.com/python-rapidjson/python-rapidjson [time-machine]: https://github.com/adamchainz/time-machine +[python-rapidjson]: https://github.com/python-rapidjson/python-rapidjson [python-snappy]: https://github.com/andrix/python-snappy [tgcalls]: https://github.com/MarshalX/tgcalls -[pybind11 python_example]: https://github.com/pybind/python_example [dd-trace-py]: https://github.com/DataDog/dd-trace-py +[pybind11 python_example]: https://github.com/pybind/python_example [sourmash]: https://github.com/dib-lab/sourmash [cyvcf2]: https://github.com/brentp/cyvcf2 [matrixprofile]: https://github.com/matrix-profile-foundation/matrixprofile @@ -194,8 +194,8 @@ title: Working examples [PyGLM]: https://github.com/Zuzu-Typ/PyGLM [TgCrypto]: https://github.com/pyrogram/tgcrypto [bx-python]: https://github.com/bxlab/bx-python -[iDynTree]: https://github.com/robotology/idyntree [boost-histogram]: https://github.com/scikit-hep/boost-histogram +[iDynTree]: https://github.com/robotology/idyntree [pillow-heif]: https://github.com/bigcat88/pillow_heif [Python-WebRTC]: https://github.com/MarshalX/python-webrtc [pybase64]: https://github.com/mayeut/pybase64 @@ -206,13 +206,13 @@ title: Working examples [polaroid]: https://github.com/daggy1234/polaroid [etebase-py]: https://github.com/etesync/etebase-py [pybind11 scikit_build_example]: https://github.com/pybind/scikit_build_example -[cf-units]: https://github.com/SciTools/cf-units [clang-format]: https://github.com/ssciwr/clang-format-wheel +[cf-units]: https://github.com/SciTools/cf-units [ninja]: https://github.com/scikit-build/ninja-python-distributions [numpythia]: https://github.com/scikit-hep/numpythia [pyjet]: https://github.com/scikit-hep/pyjet -[ril]: https://github.com/Cryptex-github/ril-py [GSD]: https://github.com/glotzerlab/gsd +[ril]: https://github.com/Cryptex-github/ril-py [SiPM]: https://github.com/EdoPro98/SimSiPM [CorrectionLib]: https://github.com/cms-nanoAOD/correctionlib [pyinstrument_cext]: https://github.com/joerick/pyinstrument_cext From a63e11a1c40bf45810a29b0837a72312202cb00b Mon Sep 17 00:00:00 2001 From: Henry Schreiner Date: Mon, 7 Aug 2023 12:31:37 -0400 Subject: [PATCH 11/43] feat: build using 3.12 RC by default Signed-off-by: Henry Schreiner --- README.md | 2 +- cibuildwheel/util.py | 2 +- unit_test/build_selector_test.py | 4 ++-- unit_test/linux_build_steps_test.py | 3 ++- unit_test/option_prepare_test.py | 19 ++++++++++++++++--- 5 files changed, 22 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index df066df55..d03c4a617 100644 --- a/README.md +++ b/README.md @@ -41,7 +41,7 @@ What does it do? ² Windows arm64 support is experimental.
³ Alpine 3.14 and very briefly 3.15's default python3 [was not able to load](https://github.com/pypa/cibuildwheel/issues/934) musllinux wheels. This has been fixed; please upgrade the python package if using Alpine from before the fix.
⁴ Cross-compilation not supported with PyPy - to build these wheels you need to run cibuildwheel on an Apple Silicon machine.
-⁵ CPython 3.12 is available using the [CIBW_PRERELEASE_PYTHONS](https://cibuildwheel.readthedocs.io/en/stable/options/#prerelease-pythons) option.
+⁵ CPython 3.12 is built by default using Python RCs, starting with cibuildwheel 2.15.
- Builds manylinux, musllinux, macOS 10.9+, and Windows wheels for CPython and PyPy - Works on GitHub Actions, Azure Pipelines, Travis CI, AppVeyor, CircleCI, GitLab CI, and Cirrus CI diff --git a/cibuildwheel/util.py b/cibuildwheel/util.py index 93aad1860..7875ea404 100644 --- a/cibuildwheel/util.py +++ b/cibuildwheel/util.py @@ -250,7 +250,7 @@ class BuildSelector: requires_python: SpecifierSet | None = None # a pattern that skips prerelease versions, when include_prereleases is False. - PRERELEASE_SKIP: ClassVar[str] = "cp312-*" + PRERELEASE_SKIP: ClassVar[str] = "" prerelease_pythons: bool = False def __call__(self, build_id: str) -> bool: diff --git a/unit_test/build_selector_test.py b/unit_test/build_selector_test.py index b4c6e96a4..9fa7eabda 100644 --- a/unit_test/build_selector_test.py +++ b/unit_test/build_selector_test.py @@ -12,7 +12,7 @@ def test_build(): assert build_selector("cp37-manylinux_x86_64") assert build_selector("cp310-manylinux_x86_64") assert build_selector("cp311-manylinux_x86_64") - assert not build_selector("cp312-manylinux_x86_64") + assert build_selector("cp312-manylinux_x86_64") assert build_selector("pp36-manylinux_x86_64") assert build_selector("pp37-manylinux_x86_64") assert build_selector("cp36-manylinux_i686") @@ -32,7 +32,7 @@ def test_build(): assert build_selector("cp37-win_amd64") assert build_selector("cp310-win_amd64") assert build_selector("cp311-win_amd64") - assert not build_selector("cp312-win_amd64") + assert build_selector("cp312-win_amd64") assert not build_selector("pp36-win_amd64") assert not build_selector("pp37-win_amd64") diff --git a/unit_test/linux_build_steps_test.py b/unit_test/linux_build_steps_test.py index 065c53c35..29ee25990 100644 --- a/unit_test/linux_build_steps_test.py +++ b/unit_test/linux_build_steps_test.py @@ -62,8 +62,9 @@ def before_alls(step): "cp36-manylinux_x86_64", "cp37-manylinux_x86_64", "cp311-manylinux_x86_64", + "cp312-manylinux_x86_64", ] - assert before_alls(build_steps[0]) == ["", "", ""] + assert before_alls(build_steps[0]) == ["", "", "", ""] assert build_steps[1].container_image == "other_container_image" assert identifiers(build_steps[1]) == ["cp38-manylinux_x86_64", "cp310-manylinux_x86_64"] diff --git a/unit_test/option_prepare_test.py b/unit_test/option_prepare_test.py index 0e965aa40..fdf77c537 100644 --- a/unit_test/option_prepare_test.py +++ b/unit_test/option_prepare_test.py @@ -13,7 +13,19 @@ from cibuildwheel import linux, util from cibuildwheel.__main__ import main -ALL_IDS = {"cp36", "cp37", "cp38", "cp39", "cp310", "cp311", "pp37", "pp38", "pp39", "pp310"} +ALL_IDS = { + "cp36", + "cp37", + "cp38", + "cp39", + "cp310", + "cp311", + "cp312", + "pp37", + "pp38", + "pp39", + "pp310", +} @pytest.fixture() @@ -143,7 +155,7 @@ def test_build_with_override_launches(monkeypatch, tmp_path): identifiers = {x.identifier for x in kwargs["platform_configs"]} assert identifiers == { f"{x}-manylinux_x86_64" - for x in ALL_IDS - {"cp36", "cp310", "cp311", "pp37", "pp38", "pp39", "pp310"} + for x in ALL_IDS - {"cp36", "cp310", "cp311", "cp312", "pp37", "pp38", "pp39", "pp310"} } assert kwargs["options"].build_options("cp37-manylinux_x86_64").before_all == "" @@ -153,7 +165,8 @@ def test_build_with_override_launches(monkeypatch, tmp_path): assert not kwargs["container"]["simulate_32_bit"] identifiers = {x.identifier for x in kwargs["platform_configs"]} assert identifiers == { - f"{x}-manylinux_x86_64" for x in ["cp310", "cp311", "pp37", "pp38", "pp39", "pp310"] + f"{x}-manylinux_x86_64" + for x in ["cp310", "cp311", "cp312", "pp37", "pp38", "pp39", "pp310"] } kwargs = build_in_container.call_args_list[3][1] From 39a63b5912f086dd459cf6fcb13dcdd3fe3bc24d Mon Sep 17 00:00:00 2001 From: Joe Rickerby Date: Tue, 8 Aug 2023 18:54:48 +0100 Subject: [PATCH 12/43] Bump version: v2.15.0 --- README.md | 15 ++++++++------- cibuildwheel/__init__.py | 2 +- docs/changelog.md | 7 +++++++ docs/faq.md | 6 +++--- docs/setup.md | 4 ++-- examples/appveyor-minimal.yml | 2 +- examples/azure-pipelines-minimal.yml | 6 +++--- examples/circleci-minimal.yml | 6 +++--- examples/cirrus-ci-intel-mac.yml | 2 +- examples/cirrus-ci-minimal.yml | 2 +- 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 | 4 ++-- examples/gitlab-with-qemu.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 +- 20 files changed, 42 insertions(+), 34 deletions(-) diff --git a/README.md b/README.md index d03c4a617..8346d755e 100644 --- a/README.md +++ b/README.md @@ -97,7 +97,7 @@ jobs: - uses: actions/setup-python@v3 - name: Install cibuildwheel - run: python -m pip install cibuildwheel==2.14.1 + run: python -m pip install cibuildwheel==2.15.0 - name: Build wheels run: python -m cibuildwheel --output-dir wheelhouse @@ -213,6 +213,13 @@ Changelog +### v2.15.0 + +_8 August 2023_ + +- 🌟 CPython 3.12 wheels are now built by default - without the CIBW_PRERELEASE_PYTHONS flag. It's time to build and upload these wheels to PyPI! This release includes CPython 3.12.0rc1, which is guaranteed to be ABI compatible with the final release. (#1565) +- ✨ Adds musllinux_1_2 support - this allows packagers to build for musl-based Linux distributions on a more recent Alpine image, and a newer musl libc. (#1561) + ### v2.14.1 _15 July 2023_ @@ -246,12 +253,6 @@ _28 May 2023_ - ✨ Adds the ability to pass arguments to the container engine when the container is created, using the [CIBW_CONTAINER_ENGINE](https://cibuildwheel.readthedocs.io/en/stable/options/#container-engine) option. (#1499) -### v2.12.3 - -_19 April 2023_ - -- 🐛 Fix an import error when running on Python 3.7. (#1479) - --- diff --git a/cibuildwheel/__init__.py b/cibuildwheel/__init__.py index 08ad1d3c7..79a44705c 100644 --- a/cibuildwheel/__init__.py +++ b/cibuildwheel/__init__.py @@ -1,3 +1,3 @@ from __future__ import annotations -__version__ = "2.14.1" +__version__ = "2.15.0" diff --git a/docs/changelog.md b/docs/changelog.md index 607ecaaf8..8d99c6333 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -4,6 +4,13 @@ title: Changelog # Changelog +### v2.15.0 + +_8 August 2023_ + +- 🌟 CPython 3.12 wheels are now built by default - without the CIBW_PRERELEASE_PYTHONS flag. It's time to build and upload these wheels to PyPI! This release includes CPython 3.12.0rc1, which is guaranteed to be ABI compatible with the final release. (#1565) +- ✨ Adds musllinux_1_2 support - this allows packagers to build for musl-based Linux distributions on a more recent Alpine image, and a newer musl libc. (#1561) + ### v2.14.1 _15 July 2023_ diff --git a/docs/faq.md b/docs/faq.md index 617f3f49c..91f2f6709 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -159,7 +159,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.14.1 +uses: pypa/cibuildwheel@v2.15.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. @@ -181,7 +181,7 @@ The second option, and the only one that supports other CI systems, is using a ` ```bash # requirements-cibw.txt -cibuildwheel==2.14.1 +cibuildwheel==2.15.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: @@ -325,7 +325,7 @@ Solutions to this vary, but the simplest is to use pipx: # most runners have pipx preinstalled, but in case you don't python3 -m pip install pipx -pipx run cibuildwheel==2.14.1 --output-dir wheelhouse +pipx run cibuildwheel==2.15.0 --output-dir wheelhouse pipx run twine upload wheelhouse/*.whl ``` diff --git a/docs/setup.md b/docs/setup.md index 3a18de679..90526097d 100644 --- a/docs/setup.md +++ b/docs/setup.md @@ -184,7 +184,7 @@ To build Linux, Mac, and Windows wheels using GitHub Actions, create a `.github/ - uses: actions/checkout@v3 - name: Build wheels - run: pipx run cibuildwheel==2.14.1 + run: pipx run cibuildwheel==2.15.0 - uses: actions/upload-artifact@v3 with: @@ -219,7 +219,7 @@ To build Linux, Mac, and Windows wheels using GitHub Actions, create a `.github/ - uses: actions/setup-python@v3 - name: Install cibuildwheel - run: python -m pip install cibuildwheel==2.14.1 + run: python -m pip install cibuildwheel==2.15.0 - name: Build wheels run: python -m cibuildwheel --output-dir wheelhouse diff --git a/examples/appveyor-minimal.yml b/examples/appveyor-minimal.yml index f9b91dc49..5ba6b666d 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.14.1 +install: python -m pip install cibuildwheel==2.15.0 build_script: python -m cibuildwheel --output-dir wheelhouse diff --git a/examples/azure-pipelines-minimal.yml b/examples/azure-pipelines-minimal.yml index af5096b9c..90865ffc0 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.14.1 + pip3 install cibuildwheel==2.15.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.14.1 + python3 -m pip install cibuildwheel==2.15.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.14.1 + pip install cibuildwheel==2.15.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 1166e9315..015aa5488 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.14.1 + pip3 install --user cibuildwheel==2.15.0 cibuildwheel --output-dir wheelhouse - store_artifacts: path: wheelhouse/ @@ -28,7 +28,7 @@ jobs: - run: name: Build the Linux aarch64 wheels. command: | - python3 -m pip install --user cibuildwheel==2.14.1 + python3 -m pip install --user cibuildwheel==2.15.0 python3 -m cibuildwheel --output-dir wheelhouse - store_artifacts: path: wheelhouse/ @@ -42,7 +42,7 @@ jobs: - run: name: Build the OS X wheels. command: | - pip3 install cibuildwheel==2.14.1 + pip3 install cibuildwheel==2.15.0 cibuildwheel --output-dir wheelhouse - store_artifacts: path: wheelhouse/ diff --git a/examples/cirrus-ci-intel-mac.yml b/examples/cirrus-ci-intel-mac.yml index eaebfb33b..ab0b69c4e 100644 --- a/examples/cirrus-ci-intel-mac.yml +++ b/examples/cirrus-ci-intel-mac.yml @@ -1,6 +1,6 @@ build_and_store_wheels: &BUILD_AND_STORE_WHEELS install_cibuildwheel_script: - - python -m pip install cibuildwheel==2.14.1 + - python -m pip install cibuildwheel==2.15.0 run_cibuildwheel_script: - cibuildwheel wheels_artifacts: diff --git a/examples/cirrus-ci-minimal.yml b/examples/cirrus-ci-minimal.yml index 808205d13..176726c90 100644 --- a/examples/cirrus-ci-minimal.yml +++ b/examples/cirrus-ci-minimal.yml @@ -1,6 +1,6 @@ build_and_store_wheels: &BUILD_AND_STORE_WHEELS install_cibuildwheel_script: - - python -m pip install cibuildwheel==2.14.1 + - python -m pip install cibuildwheel==2.15.0 run_cibuildwheel_script: - cibuildwheel wheels_artifacts: diff --git a/examples/github-apple-silicon.yml b/examples/github-apple-silicon.yml index 73245df40..3fec68f51 100644 --- a/examples/github-apple-silicon.yml +++ b/examples/github-apple-silicon.yml @@ -10,7 +10,7 @@ jobs: - uses: actions/checkout@v3 - name: Build wheels - uses: pypa/cibuildwheel@v2.14.1 + uses: pypa/cibuildwheel@v2.15.0 env: CIBW_ARCHS_MACOS: x86_64 arm64 diff --git a/examples/github-deploy.yml b/examples/github-deploy.yml index 4178d2add..acafd7273 100644 --- a/examples/github-deploy.yml +++ b/examples/github-deploy.yml @@ -22,7 +22,7 @@ jobs: - uses: actions/checkout@v3 - name: Build wheels - uses: pypa/cibuildwheel@v2.14.1 + uses: pypa/cibuildwheel@v2.15.0 - uses: actions/upload-artifact@v3 with: diff --git a/examples/github-minimal.yml b/examples/github-minimal.yml index 988f8ee89..53a028111 100644 --- a/examples/github-minimal.yml +++ b/examples/github-minimal.yml @@ -14,7 +14,7 @@ jobs: - uses: actions/checkout@v3 - name: Build wheels - uses: pypa/cibuildwheel@v2.14.1 + uses: pypa/cibuildwheel@v2.15.0 # env: # CIBW_SOME_OPTION: value # ... diff --git a/examples/github-with-qemu.yml b/examples/github-with-qemu.yml index eabd1f21f..e31253633 100644 --- a/examples/github-with-qemu.yml +++ b/examples/github-with-qemu.yml @@ -20,7 +20,7 @@ jobs: platforms: all - name: Build wheels - uses: pypa/cibuildwheel@v2.14.1 + uses: pypa/cibuildwheel@v2.15.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 90abc3cac..454c5d27f 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.14.1 + - python -m pip install cibuildwheel==2.15.0 - cibuildwheel --output-dir wheelhouse artifacts: paths: @@ -23,7 +23,7 @@ windows: before_script: - choco install python -y --version 3.8.6 - choco install git.install -y - - py -m pip install cibuildwheel==2.14.1 + - py -m pip install cibuildwheel==2.15.0 script: - py -m cibuildwheel --output-dir wheelhouse --platform windows artifacts: diff --git a/examples/gitlab-with-qemu.yml b/examples/gitlab-with-qemu.yml index f5ea753a0..6dd3f7575 100644 --- a/examples/gitlab-with-qemu.yml +++ b/examples/gitlab-with-qemu.yml @@ -14,7 +14,7 @@ linux: - curl -sSL https://get.docker.com/ | sh # Warning: This is extremely slow, be careful with how many wheels you build - docker run --rm --privileged multiarch/qemu-user-static --reset -p yes - - python -m pip install cibuildwheel==2.14.1 + - python -m pip install cibuildwheel==2.15.0 # Assuming your CI runner's default architecture is x86_64... - cibuildwheel --output-dir wheelhouse --platform linux --archs aarch64 artifacts: diff --git a/examples/travis-ci-deploy.yml b/examples/travis-ci-deploy.yml index c98236647..a0c0ee7d3 100644 --- a/examples/travis-ci-deploy.yml +++ b/examples/travis-ci-deploy.yml @@ -20,7 +20,7 @@ jobs: - ln -s /c/Python38/python.exe /c/Python38/python3.exe install: - - python3 -m pip install cibuildwheel==2.14.1 + - python3 -m pip install cibuildwheel==2.15.0 script: # build the wheels, put them into './dist' diff --git a/examples/travis-ci-minimal.yml b/examples/travis-ci-minimal.yml index d970c1a56..34c06fedb 100644 --- a/examples/travis-ci-minimal.yml +++ b/examples/travis-ci-minimal.yml @@ -26,7 +26,7 @@ jobs: - ln -s /c/Python38/python.exe /c/Python38/python3.exe install: - - python3 -m pip install cibuildwheel==2.14.1 + - python3 -m pip install cibuildwheel==2.15.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 69f3e0db4..32ac81e6f 100644 --- a/examples/travis-ci-test-and-deploy.yml +++ b/examples/travis-ci-test-and-deploy.yml @@ -54,7 +54,7 @@ jobs: - stage: deploy name: Build and deploy Linux wheels services: docker - install: python3 -m pip install cibuildwheel==2.14.1 twine + install: python3 -m pip install cibuildwheel==2.15.0 twine script: python3 -m cibuildwheel --output-dir wheelhouse after_success: python3 -m twine upload --skip-existing wheelhouse/*.whl # Deploy on windows @@ -62,7 +62,7 @@ jobs: name: Build and deploy Windows wheels os: windows language: shell - install: python3 -m pip install cibuildwheel==2.14.1 twine + install: python3 -m pip install cibuildwheel==2.15.0 twine script: python3 -m cibuildwheel --output-dir wheelhouse after_success: python3 -m twine upload --skip-existing wheelhouse/*.whl diff --git a/setup.cfg b/setup.cfg index b5587ba57..e9e0c7cf5 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = cibuildwheel -version = 2.14.1 +version = 2.15.0 description = Build Python wheels on CI with minimal configuration. long_description = file: README.md long_description_content_type = text/markdown From 26c5e18e62a51e082b721f7c0e6160fe92e4e5b8 Mon Sep 17 00:00:00 2001 From: Henry Schreiner Date: Fri, 11 Aug 2023 02:43:29 -0400 Subject: [PATCH 13/43] chore: use 2x faster pre-commit mirror (#1569) --- .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 ac0e72632..a2419fec5 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -13,7 +13,7 @@ repos: - id: mixed-line-ending - id: trailing-whitespace -- repo: https://github.com/psf/black +- repo: https://github.com/psf/black-pre-commit-mirror rev: 23.7.0 hooks: - id: black From 7508943e0613ee0ab79b5cdcd3a6ad081331f9a7 Mon Sep 17 00:00:00 2001 From: Mark Barsi-Siminszky <66876095+MBS9@users.noreply.github.com> Date: Mon, 14 Aug 2023 08:30:33 +0200 Subject: [PATCH 14/43] fix: path construction when testing Linux wheels on Windows hosts (#1573) fix: path construction when testing linux wheels --- cibuildwheel/linux.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cibuildwheel/linux.py b/cibuildwheel/linux.py index 88bd201b5..a4d7c184d 100644 --- a/cibuildwheel/linux.py +++ b/cibuildwheel/linux.py @@ -185,7 +185,7 @@ def build_in_container( constraints_file = build_options.dependency_constraints.get_for_python_version( config.version ) - container_constraints_file = PurePath("/constraints.txt") + container_constraints_file = PurePosixPath("/constraints.txt") container.copy_into(constraints_file, container_constraints_file) dependency_constraint_flags = ["-c", container_constraints_file] From 9afd31017a92372002d0d22593b79cb7ef91f373 Mon Sep 17 00:00:00 2001 From: Ben Darnell Date: Mon, 14 Aug 2023 02:36:44 -0400 Subject: [PATCH 15/43] Update Tornado's entry in projects.yml (#1571) We've moved to github actions and added windows support. Also add a note about our use of the stable ABI which may be the most interesting part of our config. --- docs/data/projects.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/data/projects.yml b/docs/data/projects.yml index cf9937354..dbfb29d2b 100644 --- a/docs/data/projects.yml +++ b/docs/data/projects.yml @@ -413,8 +413,9 @@ - name: Tornado gh: tornadoweb/tornado - ci: [travisci] - os: [apple, linux] + ci: [github] + os: [linux, apple, windows] + notes: Tornado is a Python web framework and asynchronous networking library. Uses stable ABI for a small C extension. - name: pytorch-fairseq gh: pytorch/fairseq From 12d548865f92a33468552176d7979c8c82423317 Mon Sep 17 00:00:00 2001 From: "cibuildwheel-bot[bot]" <83877280+cibuildwheel-bot[bot]@users.noreply.github.com> Date: Mon, 14 Aug 2023 12:15:24 -0400 Subject: [PATCH 16/43] [Bot] Update dependencies (#1575) Update dependencies Co-authored-by: cibuildwheel-bot[bot] <83877280+cibuildwheel-bot[bot]@users.noreply.github.com> --- .../resources/constraints-python310.txt | 2 +- .../resources/constraints-python311.txt | 2 +- .../resources/constraints-python312.txt | 2 +- .../resources/constraints-python37.txt | 2 +- .../resources/constraints-python38.txt | 2 +- .../resources/constraints-python39.txt | 2 +- cibuildwheel/resources/constraints.txt | 2 +- .../resources/pinned_docker_images.cfg | 48 +++++++++---------- docs/working-examples.md | 24 +++++----- 9 files changed, 43 insertions(+), 43 deletions(-) diff --git a/cibuildwheel/resources/constraints-python310.txt b/cibuildwheel/resources/constraints-python310.txt index a2836162a..29c221b6b 100644 --- a/cibuildwheel/resources/constraints-python310.txt +++ b/cibuildwheel/resources/constraints-python310.txt @@ -16,7 +16,7 @@ platformdirs==3.10.0 # via virtualenv typing-extensions==4.7.1 # via delocate -virtualenv==20.24.2 +virtualenv==20.24.3 # via -r cibuildwheel/resources/constraints.in wheel==0.41.1 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python311.txt b/cibuildwheel/resources/constraints-python311.txt index 11d4beca7..c4d8e883a 100644 --- a/cibuildwheel/resources/constraints-python311.txt +++ b/cibuildwheel/resources/constraints-python311.txt @@ -16,7 +16,7 @@ platformdirs==3.10.0 # via virtualenv typing-extensions==4.7.1 # via delocate -virtualenv==20.24.2 +virtualenv==20.24.3 # via -r cibuildwheel/resources/constraints.in wheel==0.41.1 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python312.txt b/cibuildwheel/resources/constraints-python312.txt index 23a755f1b..4c47576f5 100644 --- a/cibuildwheel/resources/constraints-python312.txt +++ b/cibuildwheel/resources/constraints-python312.txt @@ -16,7 +16,7 @@ platformdirs==3.10.0 # via virtualenv typing-extensions==4.7.1 # via delocate -virtualenv==20.24.2 +virtualenv==20.24.3 # via -r cibuildwheel/resources/constraints.in wheel==0.41.1 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python37.txt b/cibuildwheel/resources/constraints-python37.txt index b4e57965d..7acc677bf 100644 --- a/cibuildwheel/resources/constraints-python37.txt +++ b/cibuildwheel/resources/constraints-python37.txt @@ -21,7 +21,7 @@ typing-extensions==4.7.1 # delocate # importlib-metadata # platformdirs -virtualenv==20.24.2 +virtualenv==20.24.3 # via -r cibuildwheel/resources/constraints.in wheel==0.41.1 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python38.txt b/cibuildwheel/resources/constraints-python38.txt index f5e63ad5b..0a9d00ec4 100644 --- a/cibuildwheel/resources/constraints-python38.txt +++ b/cibuildwheel/resources/constraints-python38.txt @@ -16,7 +16,7 @@ platformdirs==3.10.0 # via virtualenv typing-extensions==4.7.1 # via delocate -virtualenv==20.24.2 +virtualenv==20.24.3 # via -r cibuildwheel/resources/constraints.in wheel==0.41.1 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python39.txt b/cibuildwheel/resources/constraints-python39.txt index 1669efa8b..402316bdb 100644 --- a/cibuildwheel/resources/constraints-python39.txt +++ b/cibuildwheel/resources/constraints-python39.txt @@ -16,7 +16,7 @@ platformdirs==3.10.0 # via virtualenv typing-extensions==4.7.1 # via delocate -virtualenv==20.24.2 +virtualenv==20.24.3 # via -r cibuildwheel/resources/constraints.in wheel==0.41.1 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints.txt b/cibuildwheel/resources/constraints.txt index 23a755f1b..4c47576f5 100644 --- a/cibuildwheel/resources/constraints.txt +++ b/cibuildwheel/resources/constraints.txt @@ -16,7 +16,7 @@ platformdirs==3.10.0 # via virtualenv typing-extensions==4.7.1 # via delocate -virtualenv==20.24.2 +virtualenv==20.24.3 # via -r cibuildwheel/resources/constraints.in wheel==0.41.1 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/pinned_docker_images.cfg b/cibuildwheel/resources/pinned_docker_images.cfg index 7b8ead79b..2f97710d3 100644 --- a/cibuildwheel/resources/pinned_docker_images.cfg +++ b/cibuildwheel/resources/pinned_docker_images.cfg @@ -1,54 +1,54 @@ [x86_64] manylinux1 = quay.io/pypa/manylinux1_x86_64:2023-08-06-0a0ac62 manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-08-07-e3f636d +manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-08-13-d68f0ef manylinux_2_24 = quay.io/pypa/manylinux_2_24_x86_64:2022-12-26-0d38463 -manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2023-08-07-e3f636d -musllinux_1_1 = quay.io/pypa/musllinux_1_1_x86_64:2023-08-07-e3f636d -musllinux_1_2 = quay.io/pypa/musllinux_1_2_x86_64:2023-08-07-e3f636d +manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2023-08-13-d68f0ef +musllinux_1_1 = quay.io/pypa/musllinux_1_1_x86_64:2023-08-13-d68f0ef +musllinux_1_2 = quay.io/pypa/musllinux_1_2_x86_64:2023-08-13-d68f0ef [i686] manylinux1 = quay.io/pypa/manylinux1_i686:2023-08-06-0a0ac62 manylinux2010 = quay.io/pypa/manylinux2010_i686:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-08-07-e3f636d +manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-08-13-d68f0ef manylinux_2_24 = quay.io/pypa/manylinux_2_24_i686:2022-12-26-0d38463 -musllinux_1_1 = quay.io/pypa/musllinux_1_1_i686:2023-08-07-e3f636d -musllinux_1_2 = quay.io/pypa/musllinux_1_2_i686:2023-08-07-e3f636d +musllinux_1_1 = quay.io/pypa/musllinux_1_1_i686:2023-08-13-d68f0ef +musllinux_1_2 = quay.io/pypa/musllinux_1_2_i686:2023-08-13-d68f0ef [pypy_x86_64] manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-08-07-e3f636d +manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-08-13-d68f0ef manylinux_2_24 = quay.io/pypa/manylinux_2_24_x86_64:2022-12-26-0d38463 -manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2023-08-07-e3f636d +manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2023-08-13-d68f0ef [pypy_i686] manylinux2010 = quay.io/pypa/manylinux2010_i686:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-08-07-e3f636d +manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-08-13-d68f0ef manylinux_2_24 = quay.io/pypa/manylinux_2_24_i686:2022-12-26-0d38463 [aarch64] -manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-08-07-e3f636d +manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-08-13-d68f0ef manylinux_2_24 = quay.io/pypa/manylinux_2_24_aarch64:2022-12-26-0d38463 -manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2023-08-07-e3f636d -musllinux_1_1 = quay.io/pypa/musllinux_1_1_aarch64:2023-08-07-e3f636d -musllinux_1_2 = quay.io/pypa/musllinux_1_2_aarch64:2023-08-07-e3f636d +manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2023-08-13-d68f0ef +musllinux_1_1 = quay.io/pypa/musllinux_1_1_aarch64:2023-08-13-d68f0ef +musllinux_1_2 = quay.io/pypa/musllinux_1_2_aarch64:2023-08-13-d68f0ef [ppc64le] -manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2023-08-07-e3f636d +manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2023-08-13-d68f0ef manylinux_2_24 = quay.io/pypa/manylinux_2_24_ppc64le:2022-12-26-0d38463 -manylinux_2_28 = quay.io/pypa/manylinux_2_28_ppc64le:2023-08-07-e3f636d -musllinux_1_1 = quay.io/pypa/musllinux_1_1_ppc64le:2023-08-07-e3f636d -musllinux_1_2 = quay.io/pypa/musllinux_1_2_ppc64le:2023-08-07-e3f636d +manylinux_2_28 = quay.io/pypa/manylinux_2_28_ppc64le:2023-08-13-d68f0ef +musllinux_1_1 = quay.io/pypa/musllinux_1_1_ppc64le:2023-08-13-d68f0ef +musllinux_1_2 = quay.io/pypa/musllinux_1_2_ppc64le:2023-08-13-d68f0ef [s390x] -manylinux2014 = quay.io/pypa/manylinux2014_s390x:2023-08-07-e3f636d +manylinux2014 = quay.io/pypa/manylinux2014_s390x:2023-08-13-d68f0ef manylinux_2_24 = quay.io/pypa/manylinux_2_24_s390x:2022-12-26-0d38463 -manylinux_2_28 = quay.io/pypa/manylinux_2_28_s390x:2023-08-07-e3f636d -musllinux_1_1 = quay.io/pypa/musllinux_1_1_s390x:2023-08-07-e3f636d -musllinux_1_2 = quay.io/pypa/musllinux_1_2_s390x:2023-08-07-e3f636d +manylinux_2_28 = quay.io/pypa/manylinux_2_28_s390x:2023-08-13-d68f0ef +musllinux_1_1 = quay.io/pypa/musllinux_1_1_s390x:2023-08-13-d68f0ef +musllinux_1_2 = quay.io/pypa/musllinux_1_2_s390x:2023-08-13-d68f0ef [pypy_aarch64] -manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-08-07-e3f636d +manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-08-13-d68f0ef manylinux_2_24 = quay.io/pypa/manylinux_2_24_aarch64:2022-12-26-0d38463 -manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2023-08-07-e3f636d +manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2023-08-13-d68f0ef diff --git a/docs/working-examples.md b/docs/working-examples.md index 50575ea2c..e008053ff 100644 --- a/docs/working-examples.md +++ b/docs/working-examples.md @@ -40,22 +40,22 @@ title: Working examples | [pyzmq][] | ![github icon][] ![circleci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Python bindings for zeromq, the networking library. Uses Cython on CPython and CFFI on PyPy. ARM wheels for linux are built natively on CircleCI. | | [Confluent client for Kafka][] | ![travisci icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | setup in `tools/wheels/build-wheels.bat` | | [Implicit][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Includes GPU support for linux wheels | -| [vispy][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Main repository for Vispy | | [Dependency Injector][] | ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Dependency injection framework for Python, uses Windows TravisCI | +| [vispy][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Main repository for Vispy | | [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 | | [PyYAML][] | ![github icon][] | ![apple icon][] | Canonical source repository for PyYAML | -| [numexpr][] | ![github icon][] ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Fast numerical array expression evaluator for Python, NumPy, PyTables, pandas, bcolz and more | | [Line Profiler][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Line-by-line profiling 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 | | [PyAV][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Pythonic bindings for FFmpeg's libraries. | | [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. | | [Wrapt][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A Python module for decorators, wrappers and monkey patching. | | [pikepdf][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A Python library for reading and writing PDF, powered by QPDF | | [envd][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | 🏕️ Reproducible development environment for AI/ML (LLMOps) | +| [CTranslate2][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Includes libraries from the [Intel oneAPI toolkit](https://www.intel.com/content/www/us/en/developer/tools/oneapi/base-toolkit.html) and CUDA kernels compiled for multiple GPU architectures. | | [SimpleJSON][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | simplejson is a simple, fast, extensible JSON encoder/decoder for Python | | [OpenColorIO][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | A color management framework for visual effects and animation. | -| [CTranslate2][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Includes libraries from the [Intel oneAPI toolkit](https://www.intel.com/content/www/us/en/developer/tools/oneapi/base-toolkit.html) and CUDA kernels compiled for multiple GPU architectures. | | [aioquic][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | QUIC and HTTP/3 implementation in Python | | [ruptures][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Extensive Cython + NumPy [pyproject.toml](https://github.com/deepcharles/ruptures/blob/master/pyproject.toml) example. | | [OpenTimelineIO][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Open Source API and interchange format for editorial timeline information. | @@ -71,8 +71,8 @@ title: Working examples | [markupsafe][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Safely add untrusted strings to HTML/XML markup. | | [Picologging][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A high-performance logging library for Python. | | [pybind11 cmake_example][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Example pybind11 module built with a CMake-based build system | -| [KDEpy][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Kernel Density Estimation in Python | | [time-machine][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Time mocking library using only the CPython C API. | +| [KDEpy][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Kernel Density Estimation in Python | | [python-rapidjson][] | ![travisci icon][] ![gitlab icon][] ![appveyor icon][] | ![windows icon][] ![linux icon][] | Python wrapper around rapidjson | | [python-snappy][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Python bindings for the snappy google library | | [tgcalls][] | ![github icon][] | ![apple icon][] ![windows icon][] | Python `pybind11` binding to Telegram's WebRTC library with third party dependencies like `OpenSSL`, `MozJPEG`, `FFmpeg`, etc. | @@ -88,8 +88,8 @@ title: Working examples | [PyGLM][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Fast OpenGL Mathematics (GLM) for Python | | [TgCrypto][] | ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Includes a Windows Travis build. | | [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 | +| [boost-histogram][] | ![github icon][] ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Supports full range of wheels, including PyPy and alternate archs. | | [pillow-heif][] | ![github icon][] ![cirrusci icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Bindings to libheif library with third party dependencies. Fully automated CI for tests and publishing including Apple Silicon builds. | | [Python-WebRTC][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | a Python extension that provides bindings to WebRTC M92 | | [pybase64][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Fast Base64 encoding/decoding in Python | @@ -100,8 +100,8 @@ title: Working examples | [polaroid][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Full range of wheels for setuptools rust, with auto release and PyPI deploy. | | [etebase-py][] | ![travisci icon][] | ![linux icon][] | Python bindings to a Rust library using `setuptools-rust`, and `sccache` for improved speed. | | [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. | | [cf-units][] | ![github icon][] | ![apple icon][] ![linux icon][] | Units of measure as required by the Climate and Forecast (CF) Metadata Conventions | +| [clang-format][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Scikit-build wrapper around LLVM's CMake, all platforms, generic wheels. | | [ninja][] | ![github icon][] ![travisci icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Multitagged binary builds for all supported platforms, using cibw 2 config configuration. | | [numpythia][] | ![github icon][] | ![apple icon][] ![linux icon][] | The interface between PYTHIA and NumPy | | [pyjet][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | The interface between FastJet and NumPy | @@ -146,22 +146,22 @@ title: Working examples [pyzmq]: https://github.com/zeromq/pyzmq [Confluent client for Kafka]: https://github.com/confluentinc/confluent-kafka-python [Implicit]: https://github.com/benfred/implicit -[vispy]: https://github.com/vispy/vispy [Dependency Injector]: https://github.com/ets-labs/python-dependency-injector +[vispy]: https://github.com/vispy/vispy [tinyobjloader]: https://github.com/tinyobjloader/tinyobjloader [coverage.py]: https://github.com/nedbat/coveragepy [PyCryptodome]: https://github.com/Legrandin/pycryptodome [PyYAML]: https://github.com/yaml/pyyaml -[numexpr]: https://github.com/pydata/numexpr [Line Profiler]: https://github.com/pyutils/line_profiler +[numexpr]: https://github.com/pydata/numexpr [PyAV]: https://github.com/PyAV-Org/PyAV [h5py]: https://github.com/h5py/h5py [Wrapt]: https://github.com/GrahamDumpleton/wrapt [pikepdf]: https://github.com/pikepdf/pikepdf [envd]: https://github.com/tensorchord/envd +[CTranslate2]: https://github.com/OpenNMT/CTranslate2 [SimpleJSON]: https://github.com/simplejson/simplejson [OpenColorIO]: https://github.com/AcademySoftwareFoundation/OpenColorIO -[CTranslate2]: https://github.com/OpenNMT/CTranslate2 [aioquic]: https://github.com/aiortc/aioquic [ruptures]: https://github.com/deepcharles/ruptures [OpenTimelineIO]: https://github.com/PixarAnimationStudios/OpenTimelineIO @@ -177,8 +177,8 @@ title: Working examples [markupsafe]: https://github.com/pallets/markupsafe [Picologging]: https://github.com/microsoft/picologging [pybind11 cmake_example]: https://github.com/pybind/cmake_example -[KDEpy]: https://github.com/tommyod/KDEpy [time-machine]: https://github.com/adamchainz/time-machine +[KDEpy]: https://github.com/tommyod/KDEpy [python-rapidjson]: https://github.com/python-rapidjson/python-rapidjson [python-snappy]: https://github.com/andrix/python-snappy [tgcalls]: https://github.com/MarshalX/tgcalls @@ -194,8 +194,8 @@ title: Working examples [PyGLM]: https://github.com/Zuzu-Typ/PyGLM [TgCrypto]: https://github.com/pyrogram/tgcrypto [bx-python]: https://github.com/bxlab/bx-python -[boost-histogram]: https://github.com/scikit-hep/boost-histogram [iDynTree]: https://github.com/robotology/idyntree +[boost-histogram]: https://github.com/scikit-hep/boost-histogram [pillow-heif]: https://github.com/bigcat88/pillow_heif [Python-WebRTC]: https://github.com/MarshalX/python-webrtc [pybase64]: https://github.com/mayeut/pybase64 @@ -206,8 +206,8 @@ title: Working examples [polaroid]: https://github.com/daggy1234/polaroid [etebase-py]: https://github.com/etesync/etebase-py [pybind11 scikit_build_example]: https://github.com/pybind/scikit_build_example -[clang-format]: https://github.com/ssciwr/clang-format-wheel [cf-units]: https://github.com/SciTools/cf-units +[clang-format]: https://github.com/ssciwr/clang-format-wheel [ninja]: https://github.com/scikit-build/ninja-python-distributions [numpythia]: https://github.com/scikit-hep/numpythia [pyjet]: https://github.com/scikit-hep/pyjet From ce71f445deee7ac0dabd1ee900d6672370e60478 Mon Sep 17 00:00:00 2001 From: Henry Schreiner Date: Mon, 14 Aug 2023 12:15:53 -0400 Subject: [PATCH 17/43] fix: --only shouldn't require prerelease pythons setting (#1564) * fix: --only shouldn't require prerelease pythons setting Signed-off-by: Henry Schreiner * Add test --------- Signed-off-by: Henry Schreiner Co-authored-by: Joe Rickerby --- cibuildwheel/options.py | 1 + unit_test/main_tests/main_platform_test.py | 1 + 2 files changed, 2 insertions(+) diff --git a/cibuildwheel/options.py b/cibuildwheel/options.py index fd6fabfe1..581e576b8 100644 --- a/cibuildwheel/options.py +++ b/cibuildwheel/options.py @@ -450,6 +450,7 @@ def globals(self) -> GlobalOptions: build_config = args.only skip_config = "" architectures = Architecture.all_archs(self.platform) + prerelease_pythons = True build_selector = BuildSelector( build_config=build_config, diff --git a/unit_test/main_tests/main_platform_test.py b/unit_test/main_tests/main_platform_test.py index 79424821c..782b32520 100644 --- a/unit_test/main_tests/main_platform_test.py +++ b/unit_test/main_tests/main_platform_test.py @@ -214,6 +214,7 @@ def test_only_argument(intercepted_build_args, monkeypatch, only, plat): assert options.globals.build_selector.skip_config == "" assert options.platform == plat assert options.globals.architectures == Architecture.all_archs(plat) + assert options.globals.build_selector.prerelease_pythons is True @pytest.mark.parametrize("only", ("cp311-manylxinux_x86_64", "some_linux_thing")) From 25428deff2fed9064f9387393f95c1c82e494949 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 21 Aug 2023 17:23:52 -0400 Subject: [PATCH 18/43] [pre-commit.ci] pre-commit autoupdate (#1579) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/astral-sh/ruff-pre-commit: v0.0.282 → v0.0.284](https://github.com/astral-sh/ruff-pre-commit/compare/v0.0.282...v0.0.284) - [github.com/pre-commit/mirrors-mypy: v1.4.1 → v1.5.0](https://github.com/pre-commit/mirrors-mypy/compare/v1.4.1...v1.5.0) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index a2419fec5..523245ac1 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -19,7 +19,7 @@ repos: - id: black - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.0.282 + rev: v0.0.284 hooks: - id: ruff args: ["--fix", "--show-fixes"] @@ -31,7 +31,7 @@ repos: args: [--include-version-classifiers, --min-py-version=3.8, --max-py-version=3.11] - repo: https://github.com/pre-commit/mirrors-mypy - rev: v1.4.1 + rev: v1.5.0 hooks: - id: mypy name: mypy 3.8 on cibuildwheel/ From 98b83afe63e86b75643621e9d852c10772acc9b2 Mon Sep 17 00:00:00 2001 From: "cibuildwheel-bot[bot]" <83877280+cibuildwheel-bot[bot]@users.noreply.github.com> Date: Mon, 21 Aug 2023 17:24:01 -0400 Subject: [PATCH 19/43] [Bot] Update dependencies (#1581) Update dependencies Co-authored-by: cibuildwheel-bot[bot] <83877280+cibuildwheel-bot[bot]@users.noreply.github.com> --- README.md | 2 +- .../resources/constraints-python310.txt | 2 +- .../resources/constraints-python311.txt | 2 +- .../resources/constraints-python312.txt | 2 +- .../resources/constraints-python38.txt | 2 +- .../resources/constraints-python39.txt | 2 +- cibuildwheel/resources/constraints.txt | 2 +- .../resources/pinned_docker_images.cfg | 52 +++++++++---------- docs/working-examples.md | 6 +-- 9 files changed, 36 insertions(+), 36 deletions(-) diff --git a/README.md b/README.md index 8346d755e..58ca9506e 100644 --- a/README.md +++ b/README.md @@ -163,7 +163,7 @@ Here are some repos that use cibuildwheel. | [scikit-learn][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | The machine learning library. A complex but clean config using many of cibuildwheel's features to build a large project with Cython and C++ extensions. | | [pytorch-fairseq][] | ![github icon][] | ![apple icon][] ![linux icon][] | Facebook AI Research Sequence-to-Sequence Toolkit written in Python. | | [NumPy][] | ![github icon][] ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | The fundamental package for scientific computing with Python. | -| [Tornado][] | ![travisci icon][] | ![apple icon][] ![linux icon][] | Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed. | +| [Tornado][] | ![github icon][] | ![linux icon][] ![apple icon][] ![windows icon][] | Tornado is a Python web framework and asynchronous networking library. Uses stable ABI for a small C extension. | | [Matplotlib][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | The venerable Matplotlib, a Python library with C++ portions | | [NCNN][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | ncnn is a high-performance neural network inference framework optimized for the mobile platform | | [Prophet][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Tool for producing high quality forecasts for time series data that has multiple seasonality with linear or non-linear growth. | diff --git a/cibuildwheel/resources/constraints-python310.txt b/cibuildwheel/resources/constraints-python310.txt index 29c221b6b..02a99d2bc 100644 --- a/cibuildwheel/resources/constraints-python310.txt +++ b/cibuildwheel/resources/constraints-python310.txt @@ -24,5 +24,5 @@ wheel==0.41.1 # The following packages are considered to be unsafe in a requirements file: pip==23.2.1 # via -r cibuildwheel/resources/constraints.in -setuptools==68.0.0 +setuptools==68.1.2 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python311.txt b/cibuildwheel/resources/constraints-python311.txt index c4d8e883a..4236f3ec6 100644 --- a/cibuildwheel/resources/constraints-python311.txt +++ b/cibuildwheel/resources/constraints-python311.txt @@ -24,5 +24,5 @@ wheel==0.41.1 # The following packages are considered to be unsafe in a requirements file: pip==23.2.1 # via -r cibuildwheel/resources/constraints.in -setuptools==68.0.0 +setuptools==68.1.2 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python312.txt b/cibuildwheel/resources/constraints-python312.txt index 4c47576f5..8de5466f9 100644 --- a/cibuildwheel/resources/constraints-python312.txt +++ b/cibuildwheel/resources/constraints-python312.txt @@ -24,5 +24,5 @@ wheel==0.41.1 # The following packages are considered to be unsafe in a requirements file: pip==23.2.1 # via -r cibuildwheel/resources/constraints.in -setuptools==68.0.0 +setuptools==68.1.2 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python38.txt b/cibuildwheel/resources/constraints-python38.txt index 0a9d00ec4..fa8eb6558 100644 --- a/cibuildwheel/resources/constraints-python38.txt +++ b/cibuildwheel/resources/constraints-python38.txt @@ -24,5 +24,5 @@ wheel==0.41.1 # The following packages are considered to be unsafe in a requirements file: pip==23.2.1 # via -r cibuildwheel/resources/constraints.in -setuptools==68.0.0 +setuptools==68.1.2 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python39.txt b/cibuildwheel/resources/constraints-python39.txt index 402316bdb..58870b808 100644 --- a/cibuildwheel/resources/constraints-python39.txt +++ b/cibuildwheel/resources/constraints-python39.txt @@ -24,5 +24,5 @@ wheel==0.41.1 # The following packages are considered to be unsafe in a requirements file: pip==23.2.1 # via -r cibuildwheel/resources/constraints.in -setuptools==68.0.0 +setuptools==68.1.2 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints.txt b/cibuildwheel/resources/constraints.txt index 4c47576f5..8de5466f9 100644 --- a/cibuildwheel/resources/constraints.txt +++ b/cibuildwheel/resources/constraints.txt @@ -24,5 +24,5 @@ wheel==0.41.1 # The following packages are considered to be unsafe in a requirements file: pip==23.2.1 # via -r cibuildwheel/resources/constraints.in -setuptools==68.0.0 +setuptools==68.1.2 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/pinned_docker_images.cfg b/cibuildwheel/resources/pinned_docker_images.cfg index 2f97710d3..0ec09d169 100644 --- a/cibuildwheel/resources/pinned_docker_images.cfg +++ b/cibuildwheel/resources/pinned_docker_images.cfg @@ -1,54 +1,54 @@ [x86_64] -manylinux1 = quay.io/pypa/manylinux1_x86_64:2023-08-06-0a0ac62 +manylinux1 = quay.io/pypa/manylinux1_x86_64:2023-08-20-dcf13fc manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-08-13-d68f0ef +manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-08-20-323dd42 manylinux_2_24 = quay.io/pypa/manylinux_2_24_x86_64:2022-12-26-0d38463 -manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2023-08-13-d68f0ef -musllinux_1_1 = quay.io/pypa/musllinux_1_1_x86_64:2023-08-13-d68f0ef -musllinux_1_2 = quay.io/pypa/musllinux_1_2_x86_64:2023-08-13-d68f0ef +manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2023-08-20-323dd42 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_x86_64:2023-08-20-323dd42 +musllinux_1_2 = quay.io/pypa/musllinux_1_2_x86_64:2023-08-20-323dd42 [i686] -manylinux1 = quay.io/pypa/manylinux1_i686:2023-08-06-0a0ac62 +manylinux1 = quay.io/pypa/manylinux1_i686:2023-08-20-dcf13fc manylinux2010 = quay.io/pypa/manylinux2010_i686:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-08-13-d68f0ef +manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-08-20-323dd42 manylinux_2_24 = quay.io/pypa/manylinux_2_24_i686:2022-12-26-0d38463 -musllinux_1_1 = quay.io/pypa/musllinux_1_1_i686:2023-08-13-d68f0ef -musllinux_1_2 = quay.io/pypa/musllinux_1_2_i686:2023-08-13-d68f0ef +musllinux_1_1 = quay.io/pypa/musllinux_1_1_i686:2023-08-20-323dd42 +musllinux_1_2 = quay.io/pypa/musllinux_1_2_i686:2023-08-20-323dd42 [pypy_x86_64] manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-08-13-d68f0ef +manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-08-20-323dd42 manylinux_2_24 = quay.io/pypa/manylinux_2_24_x86_64:2022-12-26-0d38463 -manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2023-08-13-d68f0ef +manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2023-08-20-323dd42 [pypy_i686] manylinux2010 = quay.io/pypa/manylinux2010_i686:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-08-13-d68f0ef +manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-08-20-323dd42 manylinux_2_24 = quay.io/pypa/manylinux_2_24_i686:2022-12-26-0d38463 [aarch64] -manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-08-13-d68f0ef +manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-08-20-323dd42 manylinux_2_24 = quay.io/pypa/manylinux_2_24_aarch64:2022-12-26-0d38463 -manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2023-08-13-d68f0ef -musllinux_1_1 = quay.io/pypa/musllinux_1_1_aarch64:2023-08-13-d68f0ef -musllinux_1_2 = quay.io/pypa/musllinux_1_2_aarch64:2023-08-13-d68f0ef +manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2023-08-20-323dd42 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_aarch64:2023-08-20-323dd42 +musllinux_1_2 = quay.io/pypa/musllinux_1_2_aarch64:2023-08-20-323dd42 [ppc64le] -manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2023-08-13-d68f0ef +manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2023-08-20-323dd42 manylinux_2_24 = quay.io/pypa/manylinux_2_24_ppc64le:2022-12-26-0d38463 -manylinux_2_28 = quay.io/pypa/manylinux_2_28_ppc64le:2023-08-13-d68f0ef -musllinux_1_1 = quay.io/pypa/musllinux_1_1_ppc64le:2023-08-13-d68f0ef -musllinux_1_2 = quay.io/pypa/musllinux_1_2_ppc64le:2023-08-13-d68f0ef +manylinux_2_28 = quay.io/pypa/manylinux_2_28_ppc64le:2023-08-20-323dd42 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_ppc64le:2023-08-20-323dd42 +musllinux_1_2 = quay.io/pypa/musllinux_1_2_ppc64le:2023-08-20-323dd42 [s390x] -manylinux2014 = quay.io/pypa/manylinux2014_s390x:2023-08-13-d68f0ef +manylinux2014 = quay.io/pypa/manylinux2014_s390x:2023-08-20-323dd42 manylinux_2_24 = quay.io/pypa/manylinux_2_24_s390x:2022-12-26-0d38463 -manylinux_2_28 = quay.io/pypa/manylinux_2_28_s390x:2023-08-13-d68f0ef -musllinux_1_1 = quay.io/pypa/musllinux_1_1_s390x:2023-08-13-d68f0ef -musllinux_1_2 = quay.io/pypa/musllinux_1_2_s390x:2023-08-13-d68f0ef +manylinux_2_28 = quay.io/pypa/manylinux_2_28_s390x:2023-08-20-323dd42 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_s390x:2023-08-20-323dd42 +musllinux_1_2 = quay.io/pypa/musllinux_1_2_s390x:2023-08-20-323dd42 [pypy_aarch64] -manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-08-13-d68f0ef +manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-08-20-323dd42 manylinux_2_24 = quay.io/pypa/manylinux_2_24_aarch64:2022-12-26-0d38463 -manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2023-08-13-d68f0ef +manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2023-08-20-323dd42 diff --git a/docs/working-examples.md b/docs/working-examples.md index e008053ff..0af26078b 100644 --- a/docs/working-examples.md +++ b/docs/working-examples.md @@ -11,7 +11,7 @@ title: Working examples | [scikit-learn][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | The machine learning library. A complex but clean config using many of cibuildwheel's features to build a large project with Cython and C++ extensions. | | [pytorch-fairseq][] | ![github icon][] | ![apple icon][] ![linux icon][] | Facebook AI Research Sequence-to-Sequence Toolkit written in Python. | | [NumPy][] | ![github icon][] ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | The fundamental package for scientific computing with Python. | -| [Tornado][] | ![travisci icon][] | ![apple icon][] ![linux icon][] | Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed. | +| [Tornado][] | ![github icon][] | ![linux icon][] ![apple icon][] ![windows icon][] | Tornado is a Python web framework and asynchronous networking library. Uses stable ABI for a small C extension. | | [Matplotlib][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | The venerable Matplotlib, a Python library with C++ portions | | [NCNN][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | ncnn is a high-performance neural network inference framework optimized for the mobile platform | | [Prophet][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Tool for producing high quality forecasts for time series data that has multiple seasonality with linear or non-linear growth. | @@ -66,8 +66,8 @@ title: Working examples | [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. | | [H3-py][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Python bindings for H3, a hierarchical hexagonal geospatial indexing system | -| [Rtree][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Rtree: spatial index for Python GIS ¶ | | [mosec][] | ![github icon][] | ![linux icon][] ![apple icon][] | A high-performance ML model serving framework, offers dynamic batching and CPU/GPU pipelines to fully exploit your compute machine | +| [Rtree][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Rtree: spatial index for Python GIS ¶ | | [markupsafe][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Safely add untrusted strings to HTML/XML markup. | | [Picologging][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A high-performance logging library for Python. | | [pybind11 cmake_example][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Example pybind11 module built with a CMake-based build system | @@ -172,8 +172,8 @@ title: Working examples [DeepForest]: https://github.com/LAMDA-NJU/Deep-Forest [AutoPy]: https://github.com/autopilot-rs/autopy [H3-py]: https://github.com/uber/h3-py -[Rtree]: https://github.com/Toblerity/rtree [mosec]: https://github.com/mosecorg/mosec +[Rtree]: https://github.com/Toblerity/rtree [markupsafe]: https://github.com/pallets/markupsafe [Picologging]: https://github.com/microsoft/picologging [pybind11 cmake_example]: https://github.com/pybind/cmake_example From 18ff2c57c2558bd401d8c2639cc4271761f332e3 Mon Sep 17 00:00:00 2001 From: Mike Taves Date: Wed, 23 Aug 2023 03:41:51 +1200 Subject: [PATCH 20/43] docs: Update info for CIBW_TEST_EXTRAS (#1582) Update setuptools link to new URL, and add `pyproject.toml` as a source file (as already done in the example). --- docs/options.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/options.md b/docs/options.md index 66dec0b74..8df4e8f25 100644 --- a/docs/options.md +++ b/docs/options.md @@ -1345,11 +1345,11 @@ Platform-specific environment variables are also available:
> Install your wheel for testing using `extras_require` List of -[extras_require](https://setuptools.readthedocs.io/en/latest/setuptools.html#declaring-extras-optional-features-with-their-own-dependencies) +[extras_require](https://setuptools.pypa.io/en/latest/userguide/dependency_management.html#declaring-required-dependency) options that should be included when installing the wheel prior to running the tests. This can be used to avoid having to redefine test dependencies in -`CIBW_TEST_REQUIRES` if they are already defined in `setup.py` or -`setup.cfg`. +`CIBW_TEST_REQUIRES` if they are already defined in `pyproject.toml`, +`setup.cfg` or `setup.py`. Platform-specific environment variables are also available:
`CIBW_TEST_EXTRAS_MACOS` | `CIBW_TEST_EXTRAS_WINDOWS` | `CIBW_TEST_EXTRAS_LINUX` From e8bb208374117ef8e54e28f8fada054fbe701cc8 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 24 Aug 2023 11:57:20 -0400 Subject: [PATCH 21/43] [pre-commit.ci] pre-commit autoupdate (#1583) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [pre-commit.ci] pre-commit autoupdate updates: - [github.com/astral-sh/ruff-pre-commit: v0.0.284 → v0.0.285](https://github.com/astral-sh/ruff-pre-commit/compare/v0.0.284...v0.0.285) - [github.com/pre-commit/mirrors-mypy: v1.5.0 → v1.5.1](https://github.com/pre-commit/mirrors-mypy/compare/v1.5.0...v1.5.1) * chore: add check arguments Signed-off-by: Henry Schreiner * Update bin/bump_version.py Co-authored-by: Joe Rickerby --------- Signed-off-by: Henry Schreiner Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Henry Schreiner Co-authored-by: Joe Rickerby --- .pre-commit-config.yaml | 4 ++-- bin/bump_version.py | 5 +++-- bin/make_dependency_update_pr.py | 10 +++++----- bin/run_example_ci_configs.py | 10 +++++----- bin/sample_build.py | 6 +++++- bin/update_how_it_works_image.py | 2 +- 6 files changed, 21 insertions(+), 16 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 523245ac1..e66479bba 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -19,7 +19,7 @@ repos: - id: black - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.0.284 + rev: v0.0.285 hooks: - id: ruff args: ["--fix", "--show-fixes"] @@ -31,7 +31,7 @@ repos: args: [--include-version-classifiers, --min-py-version=3.8, --max-py-version=3.11] - repo: https://github.com/pre-commit/mirrors-mypy - rev: v1.5.0 + rev: v1.5.1 hooks: - id: mypy name: mypy 3.8 on cibuildwheel/ diff --git a/bin/bump_version.py b/bin/bump_version.py index 2af6e37d8..cf0727db7 100755 --- a/bin/bump_version.py +++ b/bin/bump_version.py @@ -60,7 +60,7 @@ def bump_version() -> None: print(e) print("Failed to get previous version tag information.") - git_changes_result = subprocess.run(["git diff-index --quiet HEAD --"], shell=True) + git_changes_result = subprocess.run(["git diff-index --quiet HEAD --"], shell=True, check=False) repo_has_uncommitted_changes = git_changes_result.returncode != 0 if repo_has_uncommitted_changes: @@ -142,7 +142,8 @@ def bump_version() -> None: "pre-commit", "run", "--files=docs/changelog.md", - ] + ], + check=False, ) # run pre-commit to check that no errors occurred on the second run diff --git a/bin/make_dependency_update_pr.py b/bin/make_dependency_update_pr.py index be8a57ad5..cfbdef913 100755 --- a/bin/make_dependency_update_pr.py +++ b/bin/make_dependency_update_pr.py @@ -12,13 +12,13 @@ import click -def shell(cmd, **kwargs): - return run([cmd], shell=True, **kwargs) +def shell(cmd, *, check: bool, **kwargs): + return run([cmd], shell=True, check=check, **kwargs) def git_repo_has_changes(): - unstaged_changes = shell("git diff-index --quiet HEAD --").returncode != 0 - staged_changes = shell("git diff-index --quiet --cached HEAD --").returncode != 0 + unstaged_changes = shell("git diff-index --quiet HEAD --", check=False).returncode != 0 + staged_changes = shell("git diff-index --quiet --cached HEAD --", check=False).returncode != 0 return unstaged_changes or staged_changes @@ -73,7 +73,7 @@ def main(): print("Done.") finally: # remove any local changes - shell("git checkout -- .") + shell("git checkout -- .", check=True) shell(f"git checkout {previous_branch}", check=True) shell(f"git branch -D --force {branch_name}", check=True) diff --git a/bin/run_example_ci_configs.py b/bin/run_example_ci_configs.py index 07f3a6cde..ef3c6eaad 100755 --- a/bin/run_example_ci_configs.py +++ b/bin/run_example_ci_configs.py @@ -16,13 +16,13 @@ import click -def shell(cmd, **kwargs): - return run([cmd], shell=True, **kwargs) +def shell(cmd, *, check: bool, **kwargs): + return run([cmd], shell=True, check=check, **kwargs) def git_repo_has_changes(): - unstaged_changes = shell("git diff-index --quiet HEAD --").returncode != 0 - staged_changes = shell("git diff-index --quiet --cached HEAD --").returncode != 0 + unstaged_changes = shell("git diff-index --quiet HEAD --", check=False).returncode != 0 + staged_changes = shell("git diff-index --quiet --cached HEAD --", check=False).returncode != 0 return unstaged_changes or staged_changes @@ -163,7 +163,7 @@ def run_example_ci_configs(config_files=None): finally: # remove any local changes shutil.rmtree(example_project, ignore_errors=True) - shell("git checkout -- .") + shell("git checkout -- .", check=True) shell(f"git checkout {previous_branch}", check=True) shell(f"git branch -D --force {branch_name}", check=True) diff --git a/bin/sample_build.py b/bin/sample_build.py index 90c636ed6..9e8e64204 100755 --- a/bin/sample_build.py +++ b/bin/sample_build.py @@ -24,4 +24,8 @@ check=True, ) - sys.exit(subprocess.run([sys.executable, "-m", "cibuildwheel"], cwd=project_dir).returncode) + sys.exit( + subprocess.run( + [sys.executable, "-m", "cibuildwheel"], cwd=project_dir, check=False + ).returncode + ) diff --git a/bin/update_how_it_works_image.py b/bin/update_how_it_works_image.py index b7b433fb6..39ecfec9b 100755 --- a/bin/update_how_it_works_image.py +++ b/bin/update_how_it_works_image.py @@ -19,7 +19,7 @@ def main(): - subprocess.run(["mkdocs", "build"]) + subprocess.run(["mkdocs", "build"], check=True) hti = Html2Image(custom_flags=["--force-device-scale-factor=2"]) From 297e4a609990b9237e276102b170e62cdaa1fde0 Mon Sep 17 00:00:00 2001 From: Joe Rickerby Date: Sat, 26 Aug 2023 19:37:29 +0100 Subject: [PATCH 22/43] Add args param to build-frontend option --- cibuildwheel/linux.py | 11 ++--- cibuildwheel/macos.py | 19 +++++---- cibuildwheel/oci_container.py | 4 +- cibuildwheel/options.py | 24 +++++------ cibuildwheel/util.py | 49 ++++++++++++++++++----- cibuildwheel/windows.py | 19 +++++---- test/test_build_frontend_args.py | 34 ++++++++++++++++ unit_test/main_tests/main_options_test.py | 2 +- 8 files changed, 115 insertions(+), 47 deletions(-) create mode 100644 test/test_build_frontend_args.py diff --git a/cibuildwheel/linux.py b/cibuildwheel/linux.py index a4d7c184d..0c6184ef0 100644 --- a/cibuildwheel/linux.py +++ b/cibuildwheel/linux.py @@ -16,9 +16,9 @@ from .typing import PathOrStr from .util import ( AlreadyBuiltWheelError, + BuildFrontendConfig, BuildSelector, NonPlatformWheelError, - build_frontend_or_default, find_compatible_wheel, get_build_verbosity_extra_flags, prepare_command, @@ -177,7 +177,7 @@ def build_in_container( for config in platform_configs: log.build_start(config.identifier) build_options = options.build_options(config.identifier) - build_frontend = build_frontend_or_default(build_options.build_frontend) + build_frontend = build_options.build_frontend or BuildFrontendConfig("pip") dependency_constraint_flags: list[PathOrStr] = [] @@ -243,9 +243,10 @@ def build_in_container( container.call(["rm", "-rf", built_wheel_dir]) container.call(["mkdir", "-p", built_wheel_dir]) - extra_flags = split_config_settings(build_options.config_settings, build_frontend) + extra_flags = split_config_settings(build_options.config_settings, build_frontend.name) + extra_flags += build_frontend.args - if build_frontend == "pip": + if build_frontend.name == "pip": extra_flags += get_build_verbosity_extra_flags(build_options.build_verbosity) container.call( [ @@ -260,7 +261,7 @@ def build_in_container( ], env=env, ) - elif build_frontend == "build": + elif build_frontend.name == "build": if not 0 <= build_options.build_verbosity < 2: msg = f"build_verbosity {build_options.build_verbosity} is not supported for build frontend. Ignoring." log.warning(msg) diff --git a/cibuildwheel/macos.py b/cibuildwheel/macos.py index ddc7c4697..77ae492a6 100644 --- a/cibuildwheel/macos.py +++ b/cibuildwheel/macos.py @@ -25,10 +25,10 @@ from .util import ( CIBW_CACHE_PATH, AlreadyBuiltWheelError, - BuildFrontend, + BuildFrontendConfig, + BuildFrontendName, BuildSelector, NonPlatformWheelError, - build_frontend_or_default, call, detect_ci_provider, download, @@ -165,7 +165,7 @@ def setup_python( python_configuration: PythonConfiguration, dependency_constraint_flags: Sequence[PathOrStr], environment: ParsedEnvironment, - build_frontend: BuildFrontend, + build_frontend: BuildFrontendName, ) -> dict[str, str]: tmp.mkdir() implementation_id = python_configuration.identifier.split("-")[0] @@ -334,7 +334,7 @@ def build(options: Options, tmp_path: Path) -> None: for config in python_configurations: build_options = options.build_options(config.identifier) - build_frontend = build_frontend_or_default(build_options.build_frontend) + build_frontend = build_options.build_frontend or BuildFrontendConfig("pip") log.build_start(config.identifier) identifier_tmp_dir = tmp_path / config.identifier @@ -357,7 +357,7 @@ def build(options: Options, tmp_path: Path) -> None: config, dependency_constraint_flags, build_options.environment, - build_frontend, + build_frontend.name, ) compatible_wheel = find_compatible_wheel(built_wheels, config.identifier) @@ -378,9 +378,12 @@ def build(options: Options, tmp_path: Path) -> None: log.step("Building wheel...") built_wheel_dir.mkdir() - extra_flags = split_config_settings(build_options.config_settings, build_frontend) + extra_flags = split_config_settings( + build_options.config_settings, build_frontend.name + ) + extra_flags += build_frontend.args - if build_frontend == "pip": + if build_frontend.name == "pip": extra_flags += get_build_verbosity_extra_flags(build_options.build_verbosity) # Path.resolve() is needed. Without it pip wheel may try to fetch package from pypi.org # see https://github.com/pypa/cibuildwheel/pull/369 @@ -395,7 +398,7 @@ def build(options: Options, tmp_path: Path) -> None: *extra_flags, env=env, ) - elif build_frontend == "build": + elif build_frontend.name == "build": if not 0 <= build_options.build_verbosity < 2: msg = f"build_verbosity {build_options.build_verbosity} is not supported for build frontend. Ignoring." log.warning(msg) diff --git a/cibuildwheel/oci_container.py b/cibuildwheel/oci_container.py index 1ea22edd9..966ab9686 100644 --- a/cibuildwheel/oci_container.py +++ b/cibuildwheel/oci_container.py @@ -29,7 +29,9 @@ class OCIContainerEngineConfig: @staticmethod def from_config_string(config_string: str) -> OCIContainerEngineConfig: - config_dict = parse_key_value_string(config_string, ["name"]) + config_dict = parse_key_value_string( + config_string, ["name"], ["create_args", "create-args"] + ) name = " ".join(config_dict["name"]) if name not in {"docker", "podman"}: msg = f"unknown container engine {name}" diff --git a/cibuildwheel/options.py b/cibuildwheel/options.py index 581e576b8..d85eb02b5 100644 --- a/cibuildwheel/options.py +++ b/cibuildwheel/options.py @@ -27,7 +27,7 @@ from .util import ( MANYLINUX_ARCHS, MUSLLINUX_ARCHS, - BuildFrontend, + BuildFrontendConfig, BuildSelector, DependencyConstraints, TestSelector, @@ -92,7 +92,7 @@ class BuildOptions: test_requires: list[str] test_extras: str build_verbosity: int - build_frontend: BuildFrontend | Literal["default"] + build_frontend: BuildFrontendConfig | None config_settings: str @property @@ -488,7 +488,6 @@ def build_options(self, identifier: str | None) -> BuildOptions: with self.reader.identifier(identifier): before_all = self.reader.get("before-all", sep=" && ") - build_frontend_str = self.reader.get("build-frontend", env_plat=False) environment_config = self.reader.get( "environment", table={"item": '{k}="{v}"', "sep": " "} ) @@ -506,17 +505,16 @@ def build_options(self, identifier: str | None) -> BuildOptions: test_extras = self.reader.get("test-extras", sep=",") build_verbosity_str = self.reader.get("build-verbosity") - build_frontend: BuildFrontend | Literal["default"] - if build_frontend_str == "build": - build_frontend = "build" - elif build_frontend_str == "pip": - build_frontend = "pip" - elif build_frontend_str == "default": - build_frontend = "default" + build_frontend_str = self.reader.get("build-frontend", env_plat=False) + build_frontend: BuildFrontendConfig | None + if not build_frontend_str or build_frontend_str == "default": + build_frontend = None else: - msg = f"cibuildwheel: Unrecognised build frontend {build_frontend_str!r}, only 'pip' and 'build' are supported" - print(msg, file=sys.stderr) - sys.exit(2) + try: + build_frontend = BuildFrontendConfig.from_config_string(build_frontend_str) + except ValueError as e: + print(f"cibuildwheel: {e}", file=sys.stderr) + sys.exit(2) try: environment = parse_environment(environment_config) diff --git a/cibuildwheel/util.py b/cibuildwheel/util.py index 7875ea404..793e5cd95 100644 --- a/cibuildwheel/util.py +++ b/cibuildwheel/util.py @@ -57,16 +57,6 @@ test_fail_cwd_file: Final[Path] = resources_dir / "testing_temp_dir_file.py" -BuildFrontend = Literal["pip", "build"] - - -def build_frontend_or_default( - setting: BuildFrontend | Literal["default"], default: BuildFrontend = "pip" -) -> BuildFrontend: - if setting == "default": - return default - return setting - MANYLINUX_ARCHS: Final[tuple[str, ...]] = ( "x86_64", @@ -376,6 +366,34 @@ def options_summary(self) -> Any: return self.base_file_path.name +BuildFrontendName = Literal["pip", "build"] + + +@dataclass(frozen=True) +class BuildFrontendConfig: + name: BuildFrontendName + args: Sequence[str] = () + + @staticmethod + def from_config_string(config_string: str) -> BuildFrontendConfig: + config_dict = parse_key_value_string(config_string, ["name"], ["args"]) + name = " ".join(config_dict["name"]) + if name not in {"pip", "build"}: + msg = f"Unrecognised build frontend {name}, only 'pip' and 'build' are supported" + raise ValueError(msg) + + name = typing.cast(BuildFrontendName, name) + + args = config_dict.get("args") or [] + return BuildFrontendConfig(name=name, args=args) + + def options_summary(self) -> str | dict[str, str]: + if not self.args: + return self.name + else: + return {"name": self.name, "args": repr(self.args)} + + class NonPlatformWheelError(Exception): def __init__(self) -> None: message = textwrap.dedent( @@ -699,13 +717,19 @@ def fix_ansi_codes_for_github_actions(text: str) -> str: def parse_key_value_string( - key_value_string: str, positional_arg_names: list[str] | None = None + key_value_string: str, + positional_arg_names: Sequence[str] | None = None, + kw_arg_names: Sequence[str] | None = None, ) -> dict[str, list[str]]: """ Parses a string like "docker; create_args: --some-option=value another-option" """ if positional_arg_names is None: positional_arg_names = [] + if kw_arg_names is None: + kw_arg_names = [] + + all_field_names = [*positional_arg_names, *kw_arg_names] shlexer = shlex.shlex(key_value_string, posix=True, punctuation_chars=";:") shlexer.commenters = "" @@ -721,6 +745,9 @@ def parse_key_value_string( if len(field) > 1 and field[1] == ":": field_name = field[0] values = field[2:] + if field_name not in all_field_names: + msg = f"Failed to parse {key_value_string!r}. Unknown field name {field_name!r}" + raise ValueError(msg) else: try: field_name = positional_arg_names[field_i] diff --git a/cibuildwheel/windows.py b/cibuildwheel/windows.py index c291d96da..881821bdd 100644 --- a/cibuildwheel/windows.py +++ b/cibuildwheel/windows.py @@ -25,10 +25,10 @@ from .util import ( CIBW_CACHE_PATH, AlreadyBuiltWheelError, - BuildFrontend, + BuildFrontendConfig, + BuildFrontendName, BuildSelector, NonPlatformWheelError, - build_frontend_or_default, call, download, find_compatible_wheel, @@ -216,7 +216,7 @@ def setup_python( python_configuration: PythonConfiguration, dependency_constraint_flags: Sequence[PathOrStr], environment: ParsedEnvironment, - build_frontend: BuildFrontend, + build_frontend: BuildFrontendName, ) -> dict[str, str]: tmp.mkdir() implementation_id = python_configuration.identifier.split("-")[0] @@ -369,7 +369,7 @@ def build(options: Options, tmp_path: Path) -> None: for config in python_configurations: build_options = options.build_options(config.identifier) - build_frontend = build_frontend_or_default(build_options.build_frontend) + build_frontend = build_options.build_frontend or BuildFrontendConfig("pip") log.build_start(config.identifier) identifier_tmp_dir = tmp_path / config.identifier @@ -390,7 +390,7 @@ def build(options: Options, tmp_path: Path) -> None: config, dependency_constraint_flags, build_options.environment, - build_frontend, + build_frontend.name, ) compatible_wheel = find_compatible_wheel(built_wheels, config.identifier) @@ -414,9 +414,12 @@ def build(options: Options, tmp_path: Path) -> None: log.step("Building wheel...") built_wheel_dir.mkdir() - extra_flags = split_config_settings(build_options.config_settings, build_frontend) + extra_flags = split_config_settings( + build_options.config_settings, build_frontend.name + ) + extra_flags += build_frontend.args - if build_frontend == "pip": + if build_frontend.name == "pip": extra_flags += get_build_verbosity_extra_flags(build_options.build_verbosity) # Path.resolve() is needed. Without it pip wheel may try to fetch package from pypi.org # see https://github.com/pypa/cibuildwheel/pull/369 @@ -431,7 +434,7 @@ def build(options: Options, tmp_path: Path) -> None: *extra_flags, env=env, ) - elif build_frontend == "build": + elif build_frontend.name == "build": if not 0 <= build_options.build_verbosity < 2: msg = f"build_verbosity {build_options.build_verbosity} is not supported for build frontend. Ignoring." log.warning(msg) diff --git a/test/test_build_frontend_args.py b/test/test_build_frontend_args.py new file mode 100644 index 000000000..c2b0fc37c --- /dev/null +++ b/test/test_build_frontend_args.py @@ -0,0 +1,34 @@ +import subprocess + +import pytest + +from . import utils +from .test_projects.c import new_c_project + + +@pytest.mark.parametrize("frontend_name", ["pip", "build"]) +def test_build_frontend_args(tmp_path, capfd, frontend_name): + project = new_c_project() + project_dir = tmp_path / "project" + project.generate(project_dir) + + # the build will fail because the frontend is called with '-h' - it prints the help message + with pytest.raises(subprocess.CalledProcessError): + utils.cibuildwheel_run( + project_dir, + add_env={ + "CIBW_BUILD": "cp311-*", + "CIBW_BUILD_FRONTEND": f"{frontend_name}; args: -h", + }, + ) + + captured = capfd.readouterr() + print(captured.out) + + # check that the help message was printed + if frontend_name == "pip": + assert "Usage:" in captured.out + assert "Wheel Options:" in captured.out + else: + assert "usage:" in captured.out + assert "A simple, correct Python build frontend." in captured.out diff --git a/unit_test/main_tests/main_options_test.py b/unit_test/main_tests/main_options_test.py index 8d2010ee3..5b85da73b 100644 --- a/unit_test/main_tests/main_options_test.py +++ b/unit_test/main_tests/main_options_test.py @@ -365,7 +365,7 @@ def test_defaults(platform, intercepted_build_args): if isinstance(repair_wheel_default, list): repair_wheel_default = " && ".join(repair_wheel_default) assert build_options.repair_command == repair_wheel_default - assert build_options.build_frontend == defaults["build-frontend"] + assert build_options.build_frontend is None if platform == "linux": assert build_options.manylinux_images From 061ea627e2fe9870f547a4c8a56ff7b8887ab8c2 Mon Sep 17 00:00:00 2001 From: Joe Rickerby Date: Sat, 26 Aug 2023 19:47:49 +0100 Subject: [PATCH 23/43] Add docs --- docs/options.md | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/docs/options.md b/docs/options.md index 8df4e8f25..b597684ce 100644 --- a/docs/options.md +++ b/docs/options.md @@ -504,9 +504,19 @@ This option can also be set using the [command-line option](#command-line) `--pr ### `CIBW_BUILD_FRONTEND` {: #build-frontend} > Set the tool to use to build, either "pip" (default for now) or "build" -Choose which build backend to use. Can either be "pip", which will run +Options: + +- `pip[;args: ...]` +- `build[;args: ...]` + +Default: `pip` + +Choose which build frontend to use. Can either be "pip", which will run `python -m pip wheel`, or "build", which will run `python -m build --wheel`. +You can specify extra arguments to pass to `pip wheel` or `build` using the +optional `args` option. + !!! tip Until v2.0.0, [pip] was the only way to build wheels, and is still the default. However, we expect that at some point in the future, cibuildwheel @@ -526,6 +536,9 @@ Choose which build backend to use. Can either be "pip", which will run # Ensure pip is used even if the default changes in the future CIBW_BUILD_FRONTEND: "pip" + + # supply an extra argument to 'pip wheel' + CIBW_BUILD_FRONTEND: "pip; args: --no-build-isolation" ``` !!! tab examples "pyproject.toml" @@ -537,6 +550,9 @@ Choose which build backend to use. Can either be "pip", which will run # Ensure pip is used even if the default changes in the future build-frontend = "pip" + + # supply an extra argument to 'pip wheel' + build-frontend = { name = "pip", args = ["--no-build-isolation"] } ``` ### `CIBW_CONFIG_SETTINGS` {: #config-settings} From ae6b3d40b502b2853bcdb167b008b298d9eaaebd Mon Sep 17 00:00:00 2001 From: "cibuildwheel-bot[bot]" <83877280+cibuildwheel-bot[bot]@users.noreply.github.com> Date: Mon, 28 Aug 2023 06:12:52 +0000 Subject: [PATCH 24/43] Update dependencies --- cibuildwheel/resources/build-platforms.toml | 12 ++--- .../resources/constraints-python310.txt | 2 +- .../resources/constraints-python311.txt | 2 +- .../resources/constraints-python312.txt | 2 +- .../resources/constraints-python37.txt | 2 +- .../resources/constraints-python38.txt | 2 +- .../resources/constraints-python39.txt | 2 +- cibuildwheel/resources/constraints.txt | 2 +- .../resources/pinned_docker_images.cfg | 52 +++++++++---------- docs/working-examples.md | 6 +-- 10 files changed, 42 insertions(+), 42 deletions(-) diff --git a/cibuildwheel/resources/build-platforms.toml b/cibuildwheel/resources/build-platforms.toml index 696427cdf..9099f573f 100644 --- a/cibuildwheel/resources/build-platforms.toml +++ b/cibuildwheel/resources/build-platforms.toml @@ -97,9 +97,9 @@ python_configurations = [ { identifier = "cp310-macosx_x86_64", version = "3.10", url = "https://www.python.org/ftp/python/3.10.11/python-3.10.11-macos11.pkg" }, { identifier = "cp310-macosx_arm64", version = "3.10", url = "https://www.python.org/ftp/python/3.10.11/python-3.10.11-macos11.pkg" }, { identifier = "cp310-macosx_universal2", version = "3.10", url = "https://www.python.org/ftp/python/3.10.11/python-3.10.11-macos11.pkg" }, - { identifier = "cp311-macosx_x86_64", version = "3.11", url = "https://www.python.org/ftp/python/3.11.4/python-3.11.4-macos11.pkg" }, - { identifier = "cp311-macosx_arm64", version = "3.11", url = "https://www.python.org/ftp/python/3.11.4/python-3.11.4-macos11.pkg" }, - { identifier = "cp311-macosx_universal2", version = "3.11", url = "https://www.python.org/ftp/python/3.11.4/python-3.11.4-macos11.pkg" }, + { identifier = "cp311-macosx_x86_64", version = "3.11", url = "https://www.python.org/ftp/python/3.11.5/python-3.11.5-macos11.pkg" }, + { identifier = "cp311-macosx_arm64", version = "3.11", url = "https://www.python.org/ftp/python/3.11.5/python-3.11.5-macos11.pkg" }, + { identifier = "cp311-macosx_universal2", version = "3.11", url = "https://www.python.org/ftp/python/3.11.5/python-3.11.5-macos11.pkg" }, { identifier = "cp312-macosx_x86_64", version = "3.12", url = "https://www.python.org/ftp/python/3.12.0/python-3.12.0rc1-macos11.pkg" }, { identifier = "cp312-macosx_arm64", version = "3.12", url = "https://www.python.org/ftp/python/3.12.0/python-3.12.0rc1-macos11.pkg" }, { identifier = "cp312-macosx_universal2", version = "3.12", url = "https://www.python.org/ftp/python/3.12.0/python-3.12.0rc1-macos11.pkg" }, @@ -124,13 +124,13 @@ python_configurations = [ { identifier = "cp39-win_amd64", version = "3.9.13", arch = "64" }, { identifier = "cp310-win32", version = "3.10.11", arch = "32" }, { identifier = "cp310-win_amd64", version = "3.10.11", arch = "64" }, - { identifier = "cp311-win32", version = "3.11.4", arch = "32" }, - { identifier = "cp311-win_amd64", version = "3.11.4", arch = "64" }, + { identifier = "cp311-win32", version = "3.11.5", arch = "32" }, + { identifier = "cp311-win_amd64", version = "3.11.5", arch = "64" }, { identifier = "cp312-win32", version = "3.12.0-rc1", arch = "32" }, { identifier = "cp312-win_amd64", version = "3.12.0-rc1", arch = "64" }, { identifier = "cp39-win_arm64", version = "3.9.10", arch = "ARM64" }, { identifier = "cp310-win_arm64", version = "3.10.11", arch = "ARM64" }, - { identifier = "cp311-win_arm64", version = "3.11.4", arch = "ARM64" }, + { identifier = "cp311-win_arm64", version = "3.11.5", arch = "ARM64" }, { identifier = "cp312-win_arm64", version = "3.12.0-rc1", arch = "ARM64" }, { identifier = "pp37-win_amd64", version = "3.7", arch = "64", url = "https://downloads.python.org/pypy/pypy3.7-v7.3.9-win64.zip" }, { identifier = "pp38-win_amd64", version = "3.8", arch = "64", url = "https://downloads.python.org/pypy/pypy3.8-v7.3.11-win64.zip" }, diff --git a/cibuildwheel/resources/constraints-python310.txt b/cibuildwheel/resources/constraints-python310.txt index 02a99d2bc..0682d0d56 100644 --- a/cibuildwheel/resources/constraints-python310.txt +++ b/cibuildwheel/resources/constraints-python310.txt @@ -18,7 +18,7 @@ typing-extensions==4.7.1 # via delocate virtualenv==20.24.3 # via -r cibuildwheel/resources/constraints.in -wheel==0.41.1 +wheel==0.41.2 # via -r cibuildwheel/resources/constraints.in # The following packages are considered to be unsafe in a requirements file: diff --git a/cibuildwheel/resources/constraints-python311.txt b/cibuildwheel/resources/constraints-python311.txt index 4236f3ec6..d5615505b 100644 --- a/cibuildwheel/resources/constraints-python311.txt +++ b/cibuildwheel/resources/constraints-python311.txt @@ -18,7 +18,7 @@ typing-extensions==4.7.1 # via delocate virtualenv==20.24.3 # via -r cibuildwheel/resources/constraints.in -wheel==0.41.1 +wheel==0.41.2 # via -r cibuildwheel/resources/constraints.in # The following packages are considered to be unsafe in a requirements file: diff --git a/cibuildwheel/resources/constraints-python312.txt b/cibuildwheel/resources/constraints-python312.txt index 8de5466f9..988407ec1 100644 --- a/cibuildwheel/resources/constraints-python312.txt +++ b/cibuildwheel/resources/constraints-python312.txt @@ -18,7 +18,7 @@ typing-extensions==4.7.1 # via delocate virtualenv==20.24.3 # via -r cibuildwheel/resources/constraints.in -wheel==0.41.1 +wheel==0.41.2 # via -r cibuildwheel/resources/constraints.in # The following packages are considered to be unsafe in a requirements file: diff --git a/cibuildwheel/resources/constraints-python37.txt b/cibuildwheel/resources/constraints-python37.txt index 7acc677bf..673a6d1f4 100644 --- a/cibuildwheel/resources/constraints-python37.txt +++ b/cibuildwheel/resources/constraints-python37.txt @@ -23,7 +23,7 @@ typing-extensions==4.7.1 # platformdirs virtualenv==20.24.3 # via -r cibuildwheel/resources/constraints.in -wheel==0.41.1 +wheel==0.41.2 # via -r cibuildwheel/resources/constraints.in zipp==3.15.0 # via importlib-metadata diff --git a/cibuildwheel/resources/constraints-python38.txt b/cibuildwheel/resources/constraints-python38.txt index fa8eb6558..5aef7fd57 100644 --- a/cibuildwheel/resources/constraints-python38.txt +++ b/cibuildwheel/resources/constraints-python38.txt @@ -18,7 +18,7 @@ typing-extensions==4.7.1 # via delocate virtualenv==20.24.3 # via -r cibuildwheel/resources/constraints.in -wheel==0.41.1 +wheel==0.41.2 # via -r cibuildwheel/resources/constraints.in # The following packages are considered to be unsafe in a requirements file: diff --git a/cibuildwheel/resources/constraints-python39.txt b/cibuildwheel/resources/constraints-python39.txt index 58870b808..5f8bb2703 100644 --- a/cibuildwheel/resources/constraints-python39.txt +++ b/cibuildwheel/resources/constraints-python39.txt @@ -18,7 +18,7 @@ typing-extensions==4.7.1 # via delocate virtualenv==20.24.3 # via -r cibuildwheel/resources/constraints.in -wheel==0.41.1 +wheel==0.41.2 # via -r cibuildwheel/resources/constraints.in # The following packages are considered to be unsafe in a requirements file: diff --git a/cibuildwheel/resources/constraints.txt b/cibuildwheel/resources/constraints.txt index 8de5466f9..988407ec1 100644 --- a/cibuildwheel/resources/constraints.txt +++ b/cibuildwheel/resources/constraints.txt @@ -18,7 +18,7 @@ typing-extensions==4.7.1 # via delocate virtualenv==20.24.3 # via -r cibuildwheel/resources/constraints.in -wheel==0.41.1 +wheel==0.41.2 # via -r cibuildwheel/resources/constraints.in # The following packages are considered to be unsafe in a requirements file: diff --git a/cibuildwheel/resources/pinned_docker_images.cfg b/cibuildwheel/resources/pinned_docker_images.cfg index 0ec09d169..f144c33f5 100644 --- a/cibuildwheel/resources/pinned_docker_images.cfg +++ b/cibuildwheel/resources/pinned_docker_images.cfg @@ -1,54 +1,54 @@ [x86_64] -manylinux1 = quay.io/pypa/manylinux1_x86_64:2023-08-20-dcf13fc +manylinux1 = quay.io/pypa/manylinux1_x86_64:2023-08-27-5bd0c31 manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-08-20-323dd42 +manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-08-27-bd7ad21 manylinux_2_24 = quay.io/pypa/manylinux_2_24_x86_64:2022-12-26-0d38463 -manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2023-08-20-323dd42 -musllinux_1_1 = quay.io/pypa/musllinux_1_1_x86_64:2023-08-20-323dd42 -musllinux_1_2 = quay.io/pypa/musllinux_1_2_x86_64:2023-08-20-323dd42 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2023-08-27-bd7ad21 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_x86_64:2023-08-27-bd7ad21 +musllinux_1_2 = quay.io/pypa/musllinux_1_2_x86_64:2023-08-27-bd7ad21 [i686] -manylinux1 = quay.io/pypa/manylinux1_i686:2023-08-20-dcf13fc +manylinux1 = quay.io/pypa/manylinux1_i686:2023-08-27-5bd0c31 manylinux2010 = quay.io/pypa/manylinux2010_i686:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-08-20-323dd42 +manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-08-27-bd7ad21 manylinux_2_24 = quay.io/pypa/manylinux_2_24_i686:2022-12-26-0d38463 -musllinux_1_1 = quay.io/pypa/musllinux_1_1_i686:2023-08-20-323dd42 -musllinux_1_2 = quay.io/pypa/musllinux_1_2_i686:2023-08-20-323dd42 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_i686:2023-08-27-bd7ad21 +musllinux_1_2 = quay.io/pypa/musllinux_1_2_i686:2023-08-27-bd7ad21 [pypy_x86_64] manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-08-20-323dd42 +manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-08-27-bd7ad21 manylinux_2_24 = quay.io/pypa/manylinux_2_24_x86_64:2022-12-26-0d38463 -manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2023-08-20-323dd42 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2023-08-27-bd7ad21 [pypy_i686] manylinux2010 = quay.io/pypa/manylinux2010_i686:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-08-20-323dd42 +manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-08-27-bd7ad21 manylinux_2_24 = quay.io/pypa/manylinux_2_24_i686:2022-12-26-0d38463 [aarch64] -manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-08-20-323dd42 +manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-08-27-bd7ad21 manylinux_2_24 = quay.io/pypa/manylinux_2_24_aarch64:2022-12-26-0d38463 -manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2023-08-20-323dd42 -musllinux_1_1 = quay.io/pypa/musllinux_1_1_aarch64:2023-08-20-323dd42 -musllinux_1_2 = quay.io/pypa/musllinux_1_2_aarch64:2023-08-20-323dd42 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2023-08-27-bd7ad21 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_aarch64:2023-08-27-bd7ad21 +musllinux_1_2 = quay.io/pypa/musllinux_1_2_aarch64:2023-08-27-bd7ad21 [ppc64le] -manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2023-08-20-323dd42 +manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2023-08-27-bd7ad21 manylinux_2_24 = quay.io/pypa/manylinux_2_24_ppc64le:2022-12-26-0d38463 -manylinux_2_28 = quay.io/pypa/manylinux_2_28_ppc64le:2023-08-20-323dd42 -musllinux_1_1 = quay.io/pypa/musllinux_1_1_ppc64le:2023-08-20-323dd42 -musllinux_1_2 = quay.io/pypa/musllinux_1_2_ppc64le:2023-08-20-323dd42 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_ppc64le:2023-08-27-bd7ad21 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_ppc64le:2023-08-27-bd7ad21 +musllinux_1_2 = quay.io/pypa/musllinux_1_2_ppc64le:2023-08-27-bd7ad21 [s390x] -manylinux2014 = quay.io/pypa/manylinux2014_s390x:2023-08-20-323dd42 +manylinux2014 = quay.io/pypa/manylinux2014_s390x:2023-08-27-bd7ad21 manylinux_2_24 = quay.io/pypa/manylinux_2_24_s390x:2022-12-26-0d38463 -manylinux_2_28 = quay.io/pypa/manylinux_2_28_s390x:2023-08-20-323dd42 -musllinux_1_1 = quay.io/pypa/musllinux_1_1_s390x:2023-08-20-323dd42 -musllinux_1_2 = quay.io/pypa/musllinux_1_2_s390x:2023-08-20-323dd42 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_s390x:2023-08-27-bd7ad21 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_s390x:2023-08-27-bd7ad21 +musllinux_1_2 = quay.io/pypa/musllinux_1_2_s390x:2023-08-27-bd7ad21 [pypy_aarch64] -manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-08-20-323dd42 +manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-08-27-bd7ad21 manylinux_2_24 = quay.io/pypa/manylinux_2_24_aarch64:2022-12-26-0d38463 -manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2023-08-20-323dd42 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2023-08-27-bd7ad21 diff --git a/docs/working-examples.md b/docs/working-examples.md index 0af26078b..041401685 100644 --- a/docs/working-examples.md +++ b/docs/working-examples.md @@ -31,8 +31,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. | | [PyOxidizer][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | A modern Python application packaging and distribution tool | -| [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. | +| [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. | | [River][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | 🌊 Online machine learning in Python | | [UltraJSON][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Ultra fast JSON decoder and encoder written in C with Python bindings | | [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. | @@ -52,7 +52,7 @@ title: Working examples | [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. | | [Wrapt][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A Python module for decorators, wrappers and monkey patching. | | [pikepdf][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A Python library for reading and writing PDF, powered by QPDF | -| [envd][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | 🏕️ Reproducible development environment for AI/ML (LLMOps) | +| [envd][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | 🏕️ Reproducible development environment | | [CTranslate2][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Includes libraries from the [Intel oneAPI toolkit](https://www.intel.com/content/www/us/en/developer/tools/oneapi/base-toolkit.html) and CUDA kernels compiled for multiple GPU architectures. | | [SimpleJSON][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | simplejson is a simple, fast, extensible JSON encoder/decoder for Python | | [OpenColorIO][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | A color management framework for visual effects and animation. | @@ -137,8 +137,8 @@ title: Working examples [scikit-image]: https://github.com/scikit-image/scikit-image [twisted-iocpsupport]: https://github.com/twisted/twisted-iocpsupport [PyOxidizer]: https://github.com/indygreg/PyOxidizer -[websockets]: https://github.com/aaugustin/websockets [cvxpy]: https://github.com/cvxpy/cvxpy +[websockets]: https://github.com/aaugustin/websockets [River]: https://github.com/online-ml/river [UltraJSON]: https://github.com/ultrajson/ultrajson [OpenSpiel]: https://github.com/deepmind/open_spiel From 53b641caaf76223bf9f7e3b44661e1bbe0f8dfec Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 28 Aug 2023 23:17:35 +0000 Subject: [PATCH 25/43] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/astral-sh/ruff-pre-commit: v0.0.285 → v0.0.286](https://github.com/astral-sh/ruff-pre-commit/compare/v0.0.285...v0.0.286) --- .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 e66479bba..584417f79 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -19,7 +19,7 @@ repos: - id: black - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.0.285 + rev: v0.0.286 hooks: - id: ruff args: ["--fix", "--show-fixes"] From 81ef5fac4304fda24f0a96e5b04eb986b4435b6b Mon Sep 17 00:00:00 2001 From: Joe Rickerby Date: Wed, 30 Aug 2023 09:28:34 +0100 Subject: [PATCH 26/43] Add a unit test for the TOML form of the option --- unit_test/options_test.py | 54 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/unit_test/options_test.py b/unit_test/options_test.py index 134db012e..8818ba7e1 100644 --- a/unit_test/options_test.py +++ b/unit_test/options_test.py @@ -253,3 +253,57 @@ def test_container_engine_option(tmp_path: Path, toml_assignment, result_name, r assert parsed_container_engine.name == result_name assert parsed_container_engine.create_args == result_create_args + + +@pytest.mark.parametrize( + ("toml_assignment", "result_name", "result_args"), + [ + ( + "", + None, + None, + ), + ( + 'build-frontend = "build"', + "build", + [], + ), + ( + 'build-frontend = {name = "build"}', + "build", + [], + ), + ( + 'build-frontend = "pip; args: --some-option"', + "pip", + ["--some-option"], + ), + ( + 'build-frontend = {name = "pip", args = ["--some-option"]}', + "pip", + ["--some-option"], + ), + ], +) +def test_build_frontend_option(tmp_path: Path, toml_assignment, result_name, result_args): + args = CommandLineArguments.defaults() + args.package_dir = tmp_path + + tmp_path.joinpath("pyproject.toml").write_text( + textwrap.dedent( + f"""\ + [tool.cibuildwheel] + {toml_assignment} + """ + ) + ) + + options = Options(platform="linux", command_line_arguments=args, env={}) + parsed_build_frontend = options.build_options(identifier=None).build_frontend + + if toml_assignment: + assert parsed_build_frontend is not None + assert parsed_build_frontend.name == result_name + assert parsed_build_frontend.args == result_args + else: + assert parsed_build_frontend is None From 5311f8868456ac4f49832c2b55c5507d31db4dd9 Mon Sep 17 00:00:00 2001 From: Joe Rickerby Date: Wed, 30 Aug 2023 09:28:47 +0100 Subject: [PATCH 27/43] Fix for missing table in option parsing --- cibuildwheel/options.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/cibuildwheel/options.py b/cibuildwheel/options.py index d85eb02b5..d4306a7a6 100644 --- a/cibuildwheel/options.py +++ b/cibuildwheel/options.py @@ -505,7 +505,11 @@ def build_options(self, identifier: str | None) -> BuildOptions: test_extras = self.reader.get("test-extras", sep=",") build_verbosity_str = self.reader.get("build-verbosity") - build_frontend_str = self.reader.get("build-frontend", env_plat=False) + build_frontend_str = self.reader.get( + "build-frontend", + env_plat=False, + table={"item": "{k}:{v}", "sep": "; ", "quote": shlex.quote}, + ) build_frontend: BuildFrontendConfig | None if not build_frontend_str or build_frontend_str == "default": build_frontend = None From be0e07ac31803f7b873021c88455e9c55c9aef3a Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 5 Sep 2023 10:06:12 -0400 Subject: [PATCH 28/43] [pre-commit.ci] pre-commit autoupdate (#1596) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/astral-sh/ruff-pre-commit: v0.0.286 → v0.0.287](https://github.com/astral-sh/ruff-pre-commit/compare/v0.0.286...v0.0.287) 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 584417f79..51ee15a44 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -19,7 +19,7 @@ repos: - id: black - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.0.286 + rev: v0.0.287 hooks: - id: ruff args: ["--fix", "--show-fixes"] From 386d36f5ad33ac949ca0d1da3b6096b539cf375f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 5 Sep 2023 10:06:24 -0400 Subject: [PATCH 29/43] chore(deps): bump actions/checkout from 3 to 4 (#1595) Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/release.yml | 2 +- .github/workflows/test.yml | 6 +++--- .github/workflows/update-dependencies.yml | 2 +- .github/workflows/update-major-minor-tag.yml | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c261259ac..db3bd2b09 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -11,7 +11,7 @@ jobs: dist: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Build SDist and wheel run: pipx run build diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index ed08a6b86..131c1dfd2 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -20,7 +20,7 @@ jobs: name: Linters (mypy, flake8, etc.) runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: actions/setup-python@v4 with: python-version: "3.x" @@ -45,7 +45,7 @@ jobs: python_version: '3.8' timeout-minutes: 180 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: actions/setup-python@v4 name: Install Python ${{ matrix.python_version }} with: @@ -93,7 +93,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 180 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: actions/setup-python@v4 with: python-version: "3.x" diff --git a/.github/workflows/update-dependencies.yml b/.github/workflows/update-dependencies.yml index 7ae7b9b9b..30c38658e 100644 --- a/.github/workflows/update-dependencies.yml +++ b/.github/workflows/update-dependencies.yml @@ -20,7 +20,7 @@ jobs: if: github.repository_owner == 'pypa' || github.event_name != 'schedule' runs-on: ubuntu-20.04 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: wntrblm/nox@2023.04.22 with: diff --git a/.github/workflows/update-major-minor-tag.yml b/.github/workflows/update-major-minor-tag.yml index d25466f06..9958811bc 100644 --- a/.github/workflows/update-major-minor-tag.yml +++ b/.github/workflows/update-major-minor-tag.yml @@ -21,7 +21,7 @@ jobs: permissions: contents: write steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Update the ${{ env.TAG_NAME }} tag id: update-major-minor-tag From 1280565f7fde55be97fabc18968c31d196c92686 Mon Sep 17 00:00:00 2001 From: "cibuildwheel-bot[bot]" <83877280+cibuildwheel-bot[bot]@users.noreply.github.com> Date: Tue, 5 Sep 2023 10:06:44 -0400 Subject: [PATCH 30/43] [Bot] Update dependencies (#1594) Update dependencies Co-authored-by: cibuildwheel-bot[bot] <83877280+cibuildwheel-bot[bot]@users.noreply.github.com> --- .../resources/constraints-python310.txt | 8 ++-- .../resources/constraints-python311.txt | 4 +- .../resources/constraints-python312.txt | 4 +- .../resources/constraints-python37.txt | 2 +- .../resources/constraints-python38.txt | 8 ++-- .../resources/constraints-python39.txt | 8 ++-- cibuildwheel/resources/constraints.txt | 4 +- .../resources/pinned_docker_images.cfg | 48 +++++++++---------- docs/working-examples.md | 8 ++-- 9 files changed, 50 insertions(+), 44 deletions(-) diff --git a/cibuildwheel/resources/constraints-python310.txt b/cibuildwheel/resources/constraints-python310.txt index 0682d0d56..4b53ca8e1 100644 --- a/cibuildwheel/resources/constraints-python310.txt +++ b/cibuildwheel/resources/constraints-python310.txt @@ -8,15 +8,17 @@ delocate==0.10.4 # via -r cibuildwheel/resources/constraints.in distlib==0.3.7 # via virtualenv -filelock==3.12.2 +filelock==3.12.3 # via virtualenv packaging==23.1 # via delocate platformdirs==3.10.0 # via virtualenv typing-extensions==4.7.1 - # via delocate -virtualenv==20.24.3 + # via + # delocate + # filelock +virtualenv==20.24.4 # via -r cibuildwheel/resources/constraints.in wheel==0.41.2 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python311.txt b/cibuildwheel/resources/constraints-python311.txt index d5615505b..e8c28ec94 100644 --- a/cibuildwheel/resources/constraints-python311.txt +++ b/cibuildwheel/resources/constraints-python311.txt @@ -8,7 +8,7 @@ delocate==0.10.4 # via -r cibuildwheel/resources/constraints.in distlib==0.3.7 # via virtualenv -filelock==3.12.2 +filelock==3.12.3 # via virtualenv packaging==23.1 # via delocate @@ -16,7 +16,7 @@ platformdirs==3.10.0 # via virtualenv typing-extensions==4.7.1 # via delocate -virtualenv==20.24.3 +virtualenv==20.24.4 # via -r cibuildwheel/resources/constraints.in wheel==0.41.2 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python312.txt b/cibuildwheel/resources/constraints-python312.txt index 988407ec1..e015d6c64 100644 --- a/cibuildwheel/resources/constraints-python312.txt +++ b/cibuildwheel/resources/constraints-python312.txt @@ -8,7 +8,7 @@ delocate==0.10.4 # via -r cibuildwheel/resources/constraints.in distlib==0.3.7 # via virtualenv -filelock==3.12.2 +filelock==3.12.3 # via virtualenv packaging==23.1 # via delocate @@ -16,7 +16,7 @@ platformdirs==3.10.0 # via virtualenv typing-extensions==4.7.1 # via delocate -virtualenv==20.24.3 +virtualenv==20.24.4 # via -r cibuildwheel/resources/constraints.in wheel==0.41.2 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python37.txt b/cibuildwheel/resources/constraints-python37.txt index 673a6d1f4..f47558e45 100644 --- a/cibuildwheel/resources/constraints-python37.txt +++ b/cibuildwheel/resources/constraints-python37.txt @@ -21,7 +21,7 @@ typing-extensions==4.7.1 # delocate # importlib-metadata # platformdirs -virtualenv==20.24.3 +virtualenv==20.24.4 # via -r cibuildwheel/resources/constraints.in wheel==0.41.2 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python38.txt b/cibuildwheel/resources/constraints-python38.txt index 5aef7fd57..e0c626eef 100644 --- a/cibuildwheel/resources/constraints-python38.txt +++ b/cibuildwheel/resources/constraints-python38.txt @@ -8,15 +8,17 @@ delocate==0.10.4 # via -r cibuildwheel/resources/constraints.in distlib==0.3.7 # via virtualenv -filelock==3.12.2 +filelock==3.12.3 # via virtualenv packaging==23.1 # via delocate platformdirs==3.10.0 # via virtualenv typing-extensions==4.7.1 - # via delocate -virtualenv==20.24.3 + # via + # delocate + # filelock +virtualenv==20.24.4 # via -r cibuildwheel/resources/constraints.in wheel==0.41.2 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python39.txt b/cibuildwheel/resources/constraints-python39.txt index 5f8bb2703..cba0a68fc 100644 --- a/cibuildwheel/resources/constraints-python39.txt +++ b/cibuildwheel/resources/constraints-python39.txt @@ -8,15 +8,17 @@ delocate==0.10.4 # via -r cibuildwheel/resources/constraints.in distlib==0.3.7 # via virtualenv -filelock==3.12.2 +filelock==3.12.3 # via virtualenv packaging==23.1 # via delocate platformdirs==3.10.0 # via virtualenv typing-extensions==4.7.1 - # via delocate -virtualenv==20.24.3 + # via + # delocate + # filelock +virtualenv==20.24.4 # via -r cibuildwheel/resources/constraints.in wheel==0.41.2 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints.txt b/cibuildwheel/resources/constraints.txt index 988407ec1..e015d6c64 100644 --- a/cibuildwheel/resources/constraints.txt +++ b/cibuildwheel/resources/constraints.txt @@ -8,7 +8,7 @@ delocate==0.10.4 # via -r cibuildwheel/resources/constraints.in distlib==0.3.7 # via virtualenv -filelock==3.12.2 +filelock==3.12.3 # via virtualenv packaging==23.1 # via delocate @@ -16,7 +16,7 @@ platformdirs==3.10.0 # via virtualenv typing-extensions==4.7.1 # via delocate -virtualenv==20.24.3 +virtualenv==20.24.4 # via -r cibuildwheel/resources/constraints.in wheel==0.41.2 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/pinned_docker_images.cfg b/cibuildwheel/resources/pinned_docker_images.cfg index f144c33f5..d3c8bec45 100644 --- a/cibuildwheel/resources/pinned_docker_images.cfg +++ b/cibuildwheel/resources/pinned_docker_images.cfg @@ -1,54 +1,54 @@ [x86_64] manylinux1 = quay.io/pypa/manylinux1_x86_64:2023-08-27-5bd0c31 manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-08-27-bd7ad21 +manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-09-04-0828984 manylinux_2_24 = quay.io/pypa/manylinux_2_24_x86_64:2022-12-26-0d38463 -manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2023-08-27-bd7ad21 -musllinux_1_1 = quay.io/pypa/musllinux_1_1_x86_64:2023-08-27-bd7ad21 -musllinux_1_2 = quay.io/pypa/musllinux_1_2_x86_64:2023-08-27-bd7ad21 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2023-09-04-0828984 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_x86_64:2023-09-04-0828984 +musllinux_1_2 = quay.io/pypa/musllinux_1_2_x86_64:2023-09-04-0828984 [i686] manylinux1 = quay.io/pypa/manylinux1_i686:2023-08-27-5bd0c31 manylinux2010 = quay.io/pypa/manylinux2010_i686:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-08-27-bd7ad21 +manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-09-04-0828984 manylinux_2_24 = quay.io/pypa/manylinux_2_24_i686:2022-12-26-0d38463 -musllinux_1_1 = quay.io/pypa/musllinux_1_1_i686:2023-08-27-bd7ad21 -musllinux_1_2 = quay.io/pypa/musllinux_1_2_i686:2023-08-27-bd7ad21 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_i686:2023-09-04-0828984 +musllinux_1_2 = quay.io/pypa/musllinux_1_2_i686:2023-09-04-0828984 [pypy_x86_64] manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-08-27-bd7ad21 +manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-09-04-0828984 manylinux_2_24 = quay.io/pypa/manylinux_2_24_x86_64:2022-12-26-0d38463 -manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2023-08-27-bd7ad21 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2023-09-04-0828984 [pypy_i686] manylinux2010 = quay.io/pypa/manylinux2010_i686:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-08-27-bd7ad21 +manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-09-04-0828984 manylinux_2_24 = quay.io/pypa/manylinux_2_24_i686:2022-12-26-0d38463 [aarch64] -manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-08-27-bd7ad21 +manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-09-04-0828984 manylinux_2_24 = quay.io/pypa/manylinux_2_24_aarch64:2022-12-26-0d38463 -manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2023-08-27-bd7ad21 -musllinux_1_1 = quay.io/pypa/musllinux_1_1_aarch64:2023-08-27-bd7ad21 -musllinux_1_2 = quay.io/pypa/musllinux_1_2_aarch64:2023-08-27-bd7ad21 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2023-09-04-0828984 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_aarch64:2023-09-04-0828984 +musllinux_1_2 = quay.io/pypa/musllinux_1_2_aarch64:2023-09-04-0828984 [ppc64le] -manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2023-08-27-bd7ad21 +manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2023-09-04-0828984 manylinux_2_24 = quay.io/pypa/manylinux_2_24_ppc64le:2022-12-26-0d38463 -manylinux_2_28 = quay.io/pypa/manylinux_2_28_ppc64le:2023-08-27-bd7ad21 -musllinux_1_1 = quay.io/pypa/musllinux_1_1_ppc64le:2023-08-27-bd7ad21 -musllinux_1_2 = quay.io/pypa/musllinux_1_2_ppc64le:2023-08-27-bd7ad21 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_ppc64le:2023-09-04-0828984 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_ppc64le:2023-09-04-0828984 +musllinux_1_2 = quay.io/pypa/musllinux_1_2_ppc64le:2023-09-04-0828984 [s390x] -manylinux2014 = quay.io/pypa/manylinux2014_s390x:2023-08-27-bd7ad21 +manylinux2014 = quay.io/pypa/manylinux2014_s390x:2023-09-04-0828984 manylinux_2_24 = quay.io/pypa/manylinux_2_24_s390x:2022-12-26-0d38463 -manylinux_2_28 = quay.io/pypa/manylinux_2_28_s390x:2023-08-27-bd7ad21 -musllinux_1_1 = quay.io/pypa/musllinux_1_1_s390x:2023-08-27-bd7ad21 -musllinux_1_2 = quay.io/pypa/musllinux_1_2_s390x:2023-08-27-bd7ad21 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_s390x:2023-09-04-0828984 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_s390x:2023-09-04-0828984 +musllinux_1_2 = quay.io/pypa/musllinux_1_2_s390x:2023-09-04-0828984 [pypy_aarch64] -manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-08-27-bd7ad21 +manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-09-04-0828984 manylinux_2_24 = quay.io/pypa/manylinux_2_24_aarch64:2022-12-26-0d38463 -manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2023-08-27-bd7ad21 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2023-09-04-0828984 diff --git a/docs/working-examples.md b/docs/working-examples.md index 041401685..7596525f7 100644 --- a/docs/working-examples.md +++ b/docs/working-examples.md @@ -21,8 +21,8 @@ title: Working examples | [MemRay][] | ![github icon][] | ![linux icon][] | Memray is a memory profiler for Python | | [uvloop][] | ![github icon][] | ![apple icon][] ![linux icon][] | Ultra fast asyncio event loop. | | [psutil][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Cross-platform lib for process and system monitoring in Python | -| [vaex][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Out-of-Core hybrid Apache Arrow/NumPy DataFrame for Python, ML, visualization and exploration of big tabular data at a billion rows per second 🚀 | | [Triton][] | ![github icon][] | ![linux icon][] | Self hosted runners | +| [vaex][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Out-of-Core hybrid Apache Arrow/NumPy DataFrame for Python, ML, visualization and exploration of big tabular data at a billion rows per second 🚀 | | [Google Benchmark][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | A microbenchmark support library | | [Apache Beam][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Apache Beam is a unified programming model for Batch and Streaming data processing. | | [PyGame][] | ![github icon][] | ![apple icon][] ![linux icon][] | 🐍🎮 pygame (the library) is a Free and Open Source python programming language library for making multimedia applications like games built on top of the excellent SDL library. C, Python, Native, OpenGL. | @@ -68,8 +68,8 @@ title: Working examples | [H3-py][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Python bindings for H3, a hierarchical hexagonal geospatial indexing system | | [mosec][] | ![github icon][] | ![linux icon][] ![apple icon][] | A high-performance ML model serving framework, offers dynamic batching and CPU/GPU pipelines to fully exploit your compute machine | | [Rtree][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Rtree: spatial index for Python GIS ¶ | -| [markupsafe][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Safely add untrusted strings to HTML/XML markup. | | [Picologging][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A high-performance logging library for Python. | +| [markupsafe][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Safely add untrusted strings to HTML/XML markup. | | [pybind11 cmake_example][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Example pybind11 module built with a CMake-based build system | | [time-machine][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Time mocking library using only the CPython C API. | | [KDEpy][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Kernel Density Estimation in Python | @@ -127,8 +127,8 @@ title: Working examples [MemRay]: https://github.com/bloomberg/memray [uvloop]: https://github.com/MagicStack/uvloop [psutil]: https://github.com/giampaolo/psutil -[vaex]: https://github.com/vaexio/vaex [Triton]: https://github.com/openai/triton +[vaex]: https://github.com/vaexio/vaex [Google Benchmark]: https://github.com/google/benchmark [Apache Beam]: https://github.com/apache/beam [PyGame]: https://github.com/pygame/pygame @@ -174,8 +174,8 @@ title: Working examples [H3-py]: https://github.com/uber/h3-py [mosec]: https://github.com/mosecorg/mosec [Rtree]: https://github.com/Toblerity/rtree -[markupsafe]: https://github.com/pallets/markupsafe [Picologging]: https://github.com/microsoft/picologging +[markupsafe]: https://github.com/pallets/markupsafe [pybind11 cmake_example]: https://github.com/pybind/cmake_example [time-machine]: https://github.com/adamchainz/time-machine [KDEpy]: https://github.com/tommyod/KDEpy From 82a1f9926823ee29b2478dc781bb60ad062189ef Mon Sep 17 00:00:00 2001 From: Mikail <6186720+NyanKiyoshi@users.noreply.github.com> Date: Tue, 5 Sep 2023 16:07:16 +0200 Subject: [PATCH 31/43] docs: fix deprecated option in github-deploy example (#1593) The `github-deploy.yml` example workflow was using a deprecated argument `repository_url` which is not `repository-url` since v1.7.0 (https://github.com/pypa/gh-action-pypi-publish/releases/tag/v1.7.0 + https://github.com/pypa/gh-action-pypi-publish/blob/b7f401de30cb6434a1e19f805ff006643653240e/action.yml#L15) Thus fixing the warning in GitHub workflows: > Warning: Input 'repository_url' has been deprecated with message: The inputs have been normalized to use kebab-case. Use `repository-url` instead. --- examples/github-deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/github-deploy.yml b/examples/github-deploy.yml index acafd7273..51cb97575 100644 --- a/examples/github-deploy.yml +++ b/examples/github-deploy.yml @@ -60,4 +60,4 @@ jobs: - uses: pypa/gh-action-pypi-publish@release/v1 with: - # To test: repository_url: https://test.pypi.org/legacy/ + # To test: repository-url: https://test.pypi.org/legacy/ From a449142802cb62ace2bb9cd60e23c8297fad4be8 Mon Sep 17 00:00:00 2001 From: Henry Schreiner Date: Tue, 5 Sep 2023 10:09:36 -0400 Subject: [PATCH 32/43] chore: use actions/checkout@4 everywhere Signed-off-by: Henry Schreiner --- README.md | 2 +- docs/deliver-to-pypi.md | 2 +- docs/setup.md | 4 ++-- examples/github-apple-silicon.yml | 2 +- examples/github-deploy.yml | 4 ++-- examples/github-minimal.yml | 2 +- examples/github-with-qemu.yml | 2 +- 7 files changed, 9 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 58ca9506e..6c1594638 100644 --- a/README.md +++ b/README.md @@ -91,7 +91,7 @@ jobs: os: [ubuntu-20.04, windows-2019, macOS-11] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 # Used to host cibuildwheel - uses: actions/setup-python@v3 diff --git a/docs/deliver-to-pypi.md b/docs/deliver-to-pypi.md index b113fcb78..e49d2bb1a 100644 --- a/docs/deliver-to-pypi.md +++ b/docs/deliver-to-pypi.md @@ -48,7 +48,7 @@ well as several useful actions. Alongside your existing job(s) that runs cibuild name: Make SDist runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: fetch-depth: 0 # Optional, use if you use setuptools_scm submodules: true # Optional, use if you have submodules diff --git a/docs/setup.md b/docs/setup.md index 90526097d..7c04b1bf5 100644 --- a/docs/setup.md +++ b/docs/setup.md @@ -181,7 +181,7 @@ To build Linux, Mac, and Windows wheels using GitHub Actions, create a `.github/ os: [ubuntu-20.04, windows-2019, macos-11] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Build wheels run: pipx run cibuildwheel==2.15.0 @@ -213,7 +213,7 @@ To build Linux, Mac, and Windows wheels using GitHub Actions, create a `.github/ os: [ubuntu-20.04, windows-2019, macos-11] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 # Used to host cibuildwheel - uses: actions/setup-python@v3 diff --git a/examples/github-apple-silicon.yml b/examples/github-apple-silicon.yml index 3fec68f51..233785e65 100644 --- a/examples/github-apple-silicon.yml +++ b/examples/github-apple-silicon.yml @@ -7,7 +7,7 @@ jobs: name: Build wheels on macos-11 runs-on: macos-11 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Build wheels uses: pypa/cibuildwheel@v2.15.0 diff --git a/examples/github-deploy.yml b/examples/github-deploy.yml index 51cb97575..4b376e7be 100644 --- a/examples/github-deploy.yml +++ b/examples/github-deploy.yml @@ -19,7 +19,7 @@ jobs: os: [ubuntu-22.04, windows-2022, macos-11] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Build wheels uses: pypa/cibuildwheel@v2.15.0 @@ -32,7 +32,7 @@ jobs: name: Build source distribution runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Build sdist run: pipx run build --sdist diff --git a/examples/github-minimal.yml b/examples/github-minimal.yml index 53a028111..215246574 100644 --- a/examples/github-minimal.yml +++ b/examples/github-minimal.yml @@ -11,7 +11,7 @@ jobs: os: [ubuntu-20.04, windows-2019, macos-11] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Build wheels uses: pypa/cibuildwheel@v2.15.0 diff --git a/examples/github-with-qemu.yml b/examples/github-with-qemu.yml index e31253633..1c9f66b58 100644 --- a/examples/github-with-qemu.yml +++ b/examples/github-with-qemu.yml @@ -11,7 +11,7 @@ jobs: os: [ubuntu-20.04, windows-2019, macos-11] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up QEMU if: runner.os == 'Linux' From 4f888e27c3867b0d04740275afd7a03d71d4df3b Mon Sep 17 00:00:00 2001 From: Lisandro Dalcin Date: Sun, 27 Aug 2023 09:45:55 +0300 Subject: [PATCH 33/43] feature: Automatically pass SOURCE_DATE_EPOCH to Linux containers Co-authored-by: Joe Rickerby --- cibuildwheel/oci_container.py | 1 + docs/options.md | 3 +++ unit_test/oci_container_test.py | 11 +++++++++++ 3 files changed, 15 insertions(+) diff --git a/cibuildwheel/oci_container.py b/cibuildwheel/oci_container.py index 1ea22edd9..9f080edaa 100644 --- a/cibuildwheel/oci_container.py +++ b/cibuildwheel/oci_container.py @@ -115,6 +115,7 @@ def __enter__(self) -> OCIContainer: self.engine.name, "create", "--env=CIBUILDWHEEL", + "--env=SOURCE_DATE_EPOCH", f"--name={self.name}", "--interactive", "--volume=/:/host", # ignored on CircleCI diff --git a/docs/options.md b/docs/options.md index 8df4e8f25..4fffcb352 100644 --- a/docs/options.md +++ b/docs/options.md @@ -664,6 +664,9 @@ A list of environment variables to pass into the linux container during the buil To specify more than one environment variable, separate the variable names by spaces. +!!! note + cibuildwheel automatically passes the environment variable [`SOURCE_DATE_EPOCH`](https://reproducible-builds.org/docs/source-date-epoch/) if defined. + #### Examples !!! tab examples "Environment passthrough" diff --git a/unit_test/oci_container_test.py b/unit_test/oci_container_test.py index ccbd05555..a4b200d99 100644 --- a/unit_test/oci_container_test.py +++ b/unit_test/oci_container_test.py @@ -72,6 +72,17 @@ def test_environment(container_engine): ) +def test_environment_pass(container_engine, monkeypatch): + monkeypatch.setenv("CIBUILDWHEEL", "1") + monkeypatch.setenv("SOURCE_DATE_EPOCH", "1489957071") + with OCIContainer(engine=container_engine, image=DEFAULT_IMAGE) as container: + assert container.call(["sh", "-c", "echo $CIBUILDWHEEL"], capture_output=True) == "1\n" + assert ( + container.call(["sh", "-c", "echo $SOURCE_DATE_EPOCH"], capture_output=True) + == "1489957071\n" + ) + + def test_cwd(container_engine): with OCIContainer( engine=container_engine, image=DEFAULT_IMAGE, cwd="/cibuildwheel/working_directory" From f34ae7731db77b6012ab4b8651e99478904bf70c Mon Sep 17 00:00:00 2001 From: Henry Schreiner Date: Wed, 13 Sep 2023 15:45:40 -0400 Subject: [PATCH 34/43] fix(setup.py): look inside if name == main block Signed-off-by: Henry Schreiner --- cibuildwheel/projectfiles.py | 50 ++++++++++++++++++++++++-- unit_test/projectfiles_test.py | 66 ++++++++++++++++++++++++++++++++++ 2 files changed, 114 insertions(+), 2 deletions(-) diff --git a/cibuildwheel/projectfiles.py b/cibuildwheel/projectfiles.py index e006aca4c..73593fc74 100644 --- a/cibuildwheel/projectfiles.py +++ b/cibuildwheel/projectfiles.py @@ -8,6 +8,43 @@ from ._compat import tomllib +def get_parent(node: ast.AST | None, depth: int = 1) -> ast.AST | None: + for _ in range(depth): + node = getattr(node, "parent", None) + return node + + +def is_main(parent: ast.AST | None) -> bool: + if parent is None: + return False + + # This would be much nicer with 3.10's pattern matching! + if not isinstance(parent, ast.If): + return False + if not isinstance(parent.test, ast.Compare): + return False + + try: + (op,) = parent.test.ops + (comp,) = parent.test.comparators + except ValueError: + return False + + if not isinstance(op, ast.Eq): + return False + + values = {comp, parent.test.left} + + mains = {x for x in values if isinstance(x, ast.Constant) and x.value == "__main__"} + if len(mains) != 1: + return False + consts = {x for x in values if isinstance(x, ast.Name) and x.id == "__name__"} + if len(consts) != 1: + return False + + return True + + class Analyzer(ast.NodeVisitor): def __init__(self) -> None: self.requires_python: str | None = None @@ -19,13 +56,22 @@ def visit(self, node: ast.AST) -> None: super().visit(node) def visit_keyword(self, node: ast.keyword) -> None: + # Must not be nested except for if __name__ == "__main__" + self.generic_visit(node) - # Must not be nested in an if or other structure # This will be Module -> Expr -> Call -> keyword + parent = get_parent(node, 4) + unnested = parent is None + + # This will be Module -> If -> Expr -> Call -> keyword + name_main_unnested = ( + parent is not None and get_parent(parent) is None and is_main(get_parent(node, 3)) + ) + if ( node.arg == "python_requires" - and not hasattr(node.parent.parent.parent, "parent") # type: ignore[attr-defined] and isinstance(node.value, ast.Constant) + and (unnested or name_main_unnested) ): self.requires_python = node.value.value diff --git a/unit_test/projectfiles_test.py b/unit_test/projectfiles_test.py index e7e21ba5d..b1839eda3 100644 --- a/unit_test/projectfiles_test.py +++ b/unit_test/projectfiles_test.py @@ -26,6 +26,72 @@ def test_read_setup_py_simple(tmp_path): assert get_requires_python_str(tmp_path) == "1.23" +def test_read_setup_py_if_main(tmp_path): + with open(tmp_path / "setup.py", "w") as f: + f.write( + dedent( + """ + from setuptools import setup + + if __name__ == "__main__": + setup( + name = "hello", + other = 23, + example = ["item", "other"], + python_requires = "1.23", + ) + """ + ) + ) + + assert setup_py_python_requires(tmp_path.joinpath("setup.py").read_text()) == "1.23" + assert get_requires_python_str(tmp_path) == "1.23" + + +def test_read_setup_py_if_main_reversed(tmp_path): + with open(tmp_path / "setup.py", "w") as f: + f.write( + dedent( + """ + from setuptools import setup + + if "__main__" == __name__: + setup( + name = "hello", + other = 23, + example = ["item", "other"], + python_requires = "1.23", + ) + """ + ) + ) + + assert setup_py_python_requires(tmp_path.joinpath("setup.py").read_text()) == "1.23" + assert get_requires_python_str(tmp_path) == "1.23" + + +def test_read_setup_py_if_invalid(tmp_path): + with open(tmp_path / "setup.py", "w") as f: + f.write( + dedent( + """ + from setuptools import setup + + if True: + setup( + name = "hello", + other = 23, + example = ["item", "other"], + python_requires = "1.23", + ) + """ + ) + ) + + assert not setup_py_python_requires(tmp_path.joinpath("setup.py").read_text()) + assert not get_requires_python_str(tmp_path) + + def test_read_setup_py_full(tmp_path): with open(tmp_path / "setup.py", "w", encoding="utf8") as f: f.write( From 05d5c9bada724c1f8d0790d023e9cd68d5b98747 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 13 Sep 2023 16:02:03 -0400 Subject: [PATCH 35/43] [pre-commit.ci] pre-commit autoupdate (#1607) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/psf/black-pre-commit-mirror: 23.7.0 → 23.9.1](https://github.com/psf/black-pre-commit-mirror/compare/23.7.0...23.9.1) - [github.com/astral-sh/ruff-pre-commit: v0.0.287 → v0.0.288](https://github.com/astral-sh/ruff-pre-commit/compare/v0.0.287...v0.0.288) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 51ee15a44..2d17b785b 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -14,12 +14,12 @@ repos: - id: trailing-whitespace - repo: https://github.com/psf/black-pre-commit-mirror - rev: 23.7.0 + rev: 23.9.1 hooks: - id: black - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.0.287 + rev: v0.0.288 hooks: - id: ruff args: ["--fix", "--show-fixes"] From 028455f4813b890f067688672170b5cea8acdf8d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 13 Sep 2023 16:07:34 -0400 Subject: [PATCH 36/43] chore(deps): bump tibdex/github-app-token from 1 to 2 (#1606) Bumps [tibdex/github-app-token](https://github.com/tibdex/github-app-token) from 1 to 2. - [Release notes](https://github.com/tibdex/github-app-token/releases) - [Commits](https://github.com/tibdex/github-app-token/compare/v1...v2) --- updated-dependencies: - dependency-name: tibdex/github-app-token dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/update-dependencies.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-dependencies.yml b/.github/workflows/update-dependencies.yml index 30c38658e..0461bca9a 100644 --- a/.github/workflows/update-dependencies.yml +++ b/.github/workflows/update-dependencies.yml @@ -35,7 +35,7 @@ jobs: # we use this step to grab a Github App auth token, so that PRs generated by this workflow # run the GHA tests. - - uses: tibdex/github-app-token@v1 + - uses: tibdex/github-app-token@v2 id: generate-token if: github.ref == 'refs/heads/main' && github.repository == 'pypa/cibuildwheel' with: From f6a95d3d0bbcd4b4c28e553d6ab0ce8f5f1901f3 Mon Sep 17 00:00:00 2001 From: Henry Schreiner Date: Wed, 13 Sep 2023 16:09:21 -0400 Subject: [PATCH 37/43] chore: Ruff ignore for _compat Signed-off-by: Henry Schreiner --- cibuildwheel/_compat/tomllib.py | 4 ++-- cibuildwheel/_compat/typing.py | 2 +- pyproject.toml | 1 + 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/cibuildwheel/_compat/tomllib.py b/cibuildwheel/_compat/tomllib.py index f3b30fe65..62d601c65 100644 --- a/cibuildwheel/_compat/tomllib.py +++ b/cibuildwheel/_compat/tomllib.py @@ -3,8 +3,8 @@ import sys if sys.version_info >= (3, 11): - from tomllib import load # noqa: TID251 + from tomllib import load else: - from tomli import load # noqa: TID251 + from tomli import load __all__ = ("load",) diff --git a/cibuildwheel/_compat/typing.py b/cibuildwheel/_compat/typing.py index a66b1abb5..d1aa72271 100644 --- a/cibuildwheel/_compat/typing.py +++ b/cibuildwheel/_compat/typing.py @@ -5,7 +5,7 @@ if sys.version_info < (3, 11): from typing_extensions import NotRequired, assert_never else: - from typing import NotRequired, assert_never # noqa: TID251 + from typing import NotRequired, assert_never __all__ = ( "assert_never", diff --git a/pyproject.toml b/pyproject.toml index 4368cd33a..bf84836e4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -161,3 +161,4 @@ flake8-unused-arguments.ignore-variadic-names = true [tool.ruff.per-file-ignores] "unit_test/*" = ["PLC1901"] +"cibuildwheel/_compat/**.py" = ["TID251"] From db6d3095b900649caa948e1348d71b8e4f2b894d Mon Sep 17 00:00:00 2001 From: Henry Schreiner Date: Wed, 13 Sep 2023 16:09:56 -0400 Subject: [PATCH 38/43] chore: add .gitattributes Signed-off-by: Henry Schreiner --- .gitattributes | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 000000000..53363ffcd --- /dev/null +++ b/.gitattributes @@ -0,0 +1,6 @@ +* text=auto + +*.py diff=python +*.md diff=markdown + +*.svg -diff From cc50337ecd6c50f8561d28b9b7d4bdcc2ae52119 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Sep 2023 13:11:07 +0000 Subject: [PATCH 39/43] chore(deps): bump docker/setup-qemu-action from 2 to 3 Bumps [docker/setup-qemu-action](https://github.com/docker/setup-qemu-action) from 2 to 3. - [Release notes](https://github.com/docker/setup-qemu-action/releases) - [Commits](https://github.com/docker/setup-qemu-action/compare/v2...v3) --- updated-dependencies: - dependency-name: docker/setup-qemu-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 131c1dfd2..5297c386b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -103,7 +103,7 @@ jobs: - name: Set up QEMU id: qemu - uses: docker/setup-qemu-action@v2 + uses: docker/setup-qemu-action@v3 with: platforms: all From adc991c47b1cb56b6de3bb052686f8081791b21b Mon Sep 17 00:00:00 2001 From: "cibuildwheel-bot[bot]" <83877280+cibuildwheel-bot[bot]@users.noreply.github.com> Date: Mon, 18 Sep 2023 10:34:09 -0400 Subject: [PATCH 40/43] [Bot] Update dependencies (#1604) Update dependencies Co-authored-by: cibuildwheel-bot[bot] <83877280+cibuildwheel-bot[bot]@users.noreply.github.com> --- README.md | 4 +- cibuildwheel/resources/build-platforms.toml | 12 ++--- .../resources/constraints-python310.txt | 12 ++--- .../resources/constraints-python311.txt | 8 +-- .../resources/constraints-python312.txt | 8 +-- .../resources/constraints-python37.txt | 2 +- .../resources/constraints-python38.txt | 12 ++--- .../resources/constraints-python39.txt | 12 ++--- cibuildwheel/resources/constraints.txt | 8 +-- .../resources/pinned_docker_images.cfg | 52 +++++++++---------- docs/working-examples.md | 16 +++--- 11 files changed, 70 insertions(+), 76 deletions(-) diff --git a/README.md b/README.md index 6c1594638..c48fd1e7e 100644 --- a/README.md +++ b/README.md @@ -167,8 +167,8 @@ Here are some repos that use cibuildwheel. | [Matplotlib][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | The venerable Matplotlib, a Python library with C++ portions | | [NCNN][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | ncnn is a high-performance neural network inference framework optimized for the mobile platform | | [Prophet][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Tool for producing high quality forecasts for time series data that has multiple seasonality with linear or non-linear growth. | -| [Kivy][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Open source UI framework written in Python, running on Windows, Linux, macOS, Android and iOS | | [MyPy][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | The compiled version of MyPy using MyPyC. | +| [Kivy][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Open source UI framework written in Python, running on Windows, Linux, macOS, Android and iOS | | [duckdb][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | DuckDB is an in-process SQL OLAP Database Management System | [scikit-learn]: https://github.com/scikit-learn/scikit-learn @@ -178,8 +178,8 @@ Here are some repos that use cibuildwheel. [Matplotlib]: https://github.com/matplotlib/matplotlib [NCNN]: https://github.com/Tencent/ncnn [Prophet]: https://github.com/facebook/prophet -[Kivy]: https://github.com/kivy/kivy [MyPy]: https://github.com/mypyc/mypy_mypyc-wheels +[Kivy]: https://github.com/kivy/kivy [duckdb]: https://github.com/duckdb/duckdb [appveyor icon]: docs/data/readme_icons/appveyor.svg diff --git a/cibuildwheel/resources/build-platforms.toml b/cibuildwheel/resources/build-platforms.toml index 9099f573f..bed176ff6 100644 --- a/cibuildwheel/resources/build-platforms.toml +++ b/cibuildwheel/resources/build-platforms.toml @@ -100,9 +100,9 @@ python_configurations = [ { identifier = "cp311-macosx_x86_64", version = "3.11", url = "https://www.python.org/ftp/python/3.11.5/python-3.11.5-macos11.pkg" }, { identifier = "cp311-macosx_arm64", version = "3.11", url = "https://www.python.org/ftp/python/3.11.5/python-3.11.5-macos11.pkg" }, { identifier = "cp311-macosx_universal2", version = "3.11", url = "https://www.python.org/ftp/python/3.11.5/python-3.11.5-macos11.pkg" }, - { identifier = "cp312-macosx_x86_64", version = "3.12", url = "https://www.python.org/ftp/python/3.12.0/python-3.12.0rc1-macos11.pkg" }, - { identifier = "cp312-macosx_arm64", version = "3.12", url = "https://www.python.org/ftp/python/3.12.0/python-3.12.0rc1-macos11.pkg" }, - { identifier = "cp312-macosx_universal2", version = "3.12", url = "https://www.python.org/ftp/python/3.12.0/python-3.12.0rc1-macos11.pkg" }, + { identifier = "cp312-macosx_x86_64", version = "3.12", url = "https://www.python.org/ftp/python/3.12.0/python-3.12.0rc2-macos11.pkg" }, + { identifier = "cp312-macosx_arm64", version = "3.12", url = "https://www.python.org/ftp/python/3.12.0/python-3.12.0rc2-macos11.pkg" }, + { identifier = "cp312-macosx_universal2", version = "3.12", url = "https://www.python.org/ftp/python/3.12.0/python-3.12.0rc2-macos11.pkg" }, { identifier = "pp37-macosx_x86_64", version = "3.7", url = "https://downloads.python.org/pypy/pypy3.7-v7.3.9-osx64.tar.bz2" }, { identifier = "pp38-macosx_x86_64", version = "3.8", url = "https://downloads.python.org/pypy/pypy3.8-v7.3.11-macos_x86_64.tar.bz2" }, { identifier = "pp38-macosx_arm64", version = "3.8", url = "https://downloads.python.org/pypy/pypy3.8-v7.3.11-macos_arm64.tar.bz2" }, @@ -126,12 +126,12 @@ python_configurations = [ { identifier = "cp310-win_amd64", version = "3.10.11", arch = "64" }, { identifier = "cp311-win32", version = "3.11.5", arch = "32" }, { identifier = "cp311-win_amd64", version = "3.11.5", arch = "64" }, - { identifier = "cp312-win32", version = "3.12.0-rc1", arch = "32" }, - { identifier = "cp312-win_amd64", version = "3.12.0-rc1", arch = "64" }, + { identifier = "cp312-win32", version = "3.12.0-rc2", arch = "32" }, + { identifier = "cp312-win_amd64", version = "3.12.0-rc2", arch = "64" }, { identifier = "cp39-win_arm64", version = "3.9.10", arch = "ARM64" }, { identifier = "cp310-win_arm64", version = "3.10.11", arch = "ARM64" }, { identifier = "cp311-win_arm64", version = "3.11.5", arch = "ARM64" }, - { identifier = "cp312-win_arm64", version = "3.12.0-rc1", arch = "ARM64" }, + { identifier = "cp312-win_arm64", version = "3.12.0-rc2", arch = "ARM64" }, { identifier = "pp37-win_amd64", version = "3.7", arch = "64", url = "https://downloads.python.org/pypy/pypy3.7-v7.3.9-win64.zip" }, { identifier = "pp38-win_amd64", version = "3.8", arch = "64", url = "https://downloads.python.org/pypy/pypy3.8-v7.3.11-win64.zip" }, { identifier = "pp39-win_amd64", version = "3.9", arch = "64", url = "https://downloads.python.org/pypy/pypy3.9-v7.3.12-win64.zip" }, diff --git a/cibuildwheel/resources/constraints-python310.txt b/cibuildwheel/resources/constraints-python310.txt index 4b53ca8e1..ae8c55320 100644 --- a/cibuildwheel/resources/constraints-python310.txt +++ b/cibuildwheel/resources/constraints-python310.txt @@ -8,17 +8,15 @@ delocate==0.10.4 # via -r cibuildwheel/resources/constraints.in distlib==0.3.7 # via virtualenv -filelock==3.12.3 +filelock==3.12.4 # via virtualenv packaging==23.1 # via delocate platformdirs==3.10.0 # via virtualenv -typing-extensions==4.7.1 - # via - # delocate - # filelock -virtualenv==20.24.4 +typing-extensions==4.8.0 + # via delocate +virtualenv==20.24.5 # via -r cibuildwheel/resources/constraints.in wheel==0.41.2 # via -r cibuildwheel/resources/constraints.in @@ -26,5 +24,5 @@ wheel==0.41.2 # The following packages are considered to be unsafe in a requirements file: pip==23.2.1 # via -r cibuildwheel/resources/constraints.in -setuptools==68.1.2 +setuptools==68.2.2 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python311.txt b/cibuildwheel/resources/constraints-python311.txt index e8c28ec94..6f35d92a1 100644 --- a/cibuildwheel/resources/constraints-python311.txt +++ b/cibuildwheel/resources/constraints-python311.txt @@ -8,15 +8,15 @@ delocate==0.10.4 # via -r cibuildwheel/resources/constraints.in distlib==0.3.7 # via virtualenv -filelock==3.12.3 +filelock==3.12.4 # via virtualenv packaging==23.1 # via delocate platformdirs==3.10.0 # via virtualenv -typing-extensions==4.7.1 +typing-extensions==4.8.0 # via delocate -virtualenv==20.24.4 +virtualenv==20.24.5 # via -r cibuildwheel/resources/constraints.in wheel==0.41.2 # via -r cibuildwheel/resources/constraints.in @@ -24,5 +24,5 @@ wheel==0.41.2 # The following packages are considered to be unsafe in a requirements file: pip==23.2.1 # via -r cibuildwheel/resources/constraints.in -setuptools==68.1.2 +setuptools==68.2.2 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python312.txt b/cibuildwheel/resources/constraints-python312.txt index e015d6c64..df52db1f5 100644 --- a/cibuildwheel/resources/constraints-python312.txt +++ b/cibuildwheel/resources/constraints-python312.txt @@ -8,15 +8,15 @@ delocate==0.10.4 # via -r cibuildwheel/resources/constraints.in distlib==0.3.7 # via virtualenv -filelock==3.12.3 +filelock==3.12.4 # via virtualenv packaging==23.1 # via delocate platformdirs==3.10.0 # via virtualenv -typing-extensions==4.7.1 +typing-extensions==4.8.0 # via delocate -virtualenv==20.24.4 +virtualenv==20.24.5 # via -r cibuildwheel/resources/constraints.in wheel==0.41.2 # via -r cibuildwheel/resources/constraints.in @@ -24,5 +24,5 @@ wheel==0.41.2 # The following packages are considered to be unsafe in a requirements file: pip==23.2.1 # via -r cibuildwheel/resources/constraints.in -setuptools==68.1.2 +setuptools==68.2.2 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python37.txt b/cibuildwheel/resources/constraints-python37.txt index f47558e45..4e2ea6f06 100644 --- a/cibuildwheel/resources/constraints-python37.txt +++ b/cibuildwheel/resources/constraints-python37.txt @@ -21,7 +21,7 @@ typing-extensions==4.7.1 # delocate # importlib-metadata # platformdirs -virtualenv==20.24.4 +virtualenv==20.24.5 # via -r cibuildwheel/resources/constraints.in wheel==0.41.2 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python38.txt b/cibuildwheel/resources/constraints-python38.txt index e0c626eef..c95021b37 100644 --- a/cibuildwheel/resources/constraints-python38.txt +++ b/cibuildwheel/resources/constraints-python38.txt @@ -8,17 +8,15 @@ delocate==0.10.4 # via -r cibuildwheel/resources/constraints.in distlib==0.3.7 # via virtualenv -filelock==3.12.3 +filelock==3.12.4 # via virtualenv packaging==23.1 # via delocate platformdirs==3.10.0 # via virtualenv -typing-extensions==4.7.1 - # via - # delocate - # filelock -virtualenv==20.24.4 +typing-extensions==4.8.0 + # via delocate +virtualenv==20.24.5 # via -r cibuildwheel/resources/constraints.in wheel==0.41.2 # via -r cibuildwheel/resources/constraints.in @@ -26,5 +24,5 @@ wheel==0.41.2 # The following packages are considered to be unsafe in a requirements file: pip==23.2.1 # via -r cibuildwheel/resources/constraints.in -setuptools==68.1.2 +setuptools==68.2.2 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python39.txt b/cibuildwheel/resources/constraints-python39.txt index cba0a68fc..51f9cc02f 100644 --- a/cibuildwheel/resources/constraints-python39.txt +++ b/cibuildwheel/resources/constraints-python39.txt @@ -8,17 +8,15 @@ delocate==0.10.4 # via -r cibuildwheel/resources/constraints.in distlib==0.3.7 # via virtualenv -filelock==3.12.3 +filelock==3.12.4 # via virtualenv packaging==23.1 # via delocate platformdirs==3.10.0 # via virtualenv -typing-extensions==4.7.1 - # via - # delocate - # filelock -virtualenv==20.24.4 +typing-extensions==4.8.0 + # via delocate +virtualenv==20.24.5 # via -r cibuildwheel/resources/constraints.in wheel==0.41.2 # via -r cibuildwheel/resources/constraints.in @@ -26,5 +24,5 @@ wheel==0.41.2 # The following packages are considered to be unsafe in a requirements file: pip==23.2.1 # via -r cibuildwheel/resources/constraints.in -setuptools==68.1.2 +setuptools==68.2.2 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints.txt b/cibuildwheel/resources/constraints.txt index e015d6c64..df52db1f5 100644 --- a/cibuildwheel/resources/constraints.txt +++ b/cibuildwheel/resources/constraints.txt @@ -8,15 +8,15 @@ delocate==0.10.4 # via -r cibuildwheel/resources/constraints.in distlib==0.3.7 # via virtualenv -filelock==3.12.3 +filelock==3.12.4 # via virtualenv packaging==23.1 # via delocate platformdirs==3.10.0 # via virtualenv -typing-extensions==4.7.1 +typing-extensions==4.8.0 # via delocate -virtualenv==20.24.4 +virtualenv==20.24.5 # via -r cibuildwheel/resources/constraints.in wheel==0.41.2 # via -r cibuildwheel/resources/constraints.in @@ -24,5 +24,5 @@ wheel==0.41.2 # The following packages are considered to be unsafe in a requirements file: pip==23.2.1 # via -r cibuildwheel/resources/constraints.in -setuptools==68.1.2 +setuptools==68.2.2 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/pinned_docker_images.cfg b/cibuildwheel/resources/pinned_docker_images.cfg index d3c8bec45..15ae21e6a 100644 --- a/cibuildwheel/resources/pinned_docker_images.cfg +++ b/cibuildwheel/resources/pinned_docker_images.cfg @@ -1,54 +1,54 @@ [x86_64] -manylinux1 = quay.io/pypa/manylinux1_x86_64:2023-08-27-5bd0c31 +manylinux1 = quay.io/pypa/manylinux1_x86_64:2023-09-12-f07b683 manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-09-04-0828984 +manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-09-17-ae90a16 manylinux_2_24 = quay.io/pypa/manylinux_2_24_x86_64:2022-12-26-0d38463 -manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2023-09-04-0828984 -musllinux_1_1 = quay.io/pypa/musllinux_1_1_x86_64:2023-09-04-0828984 -musllinux_1_2 = quay.io/pypa/musllinux_1_2_x86_64:2023-09-04-0828984 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2023-09-17-ae90a16 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_x86_64:2023-09-17-ae90a16 +musllinux_1_2 = quay.io/pypa/musllinux_1_2_x86_64:2023-09-17-ae90a16 [i686] -manylinux1 = quay.io/pypa/manylinux1_i686:2023-08-27-5bd0c31 +manylinux1 = quay.io/pypa/manylinux1_i686:2023-09-12-f07b683 manylinux2010 = quay.io/pypa/manylinux2010_i686:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-09-04-0828984 +manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-09-17-ae90a16 manylinux_2_24 = quay.io/pypa/manylinux_2_24_i686:2022-12-26-0d38463 -musllinux_1_1 = quay.io/pypa/musllinux_1_1_i686:2023-09-04-0828984 -musllinux_1_2 = quay.io/pypa/musllinux_1_2_i686:2023-09-04-0828984 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_i686:2023-09-17-ae90a16 +musllinux_1_2 = quay.io/pypa/musllinux_1_2_i686:2023-09-17-ae90a16 [pypy_x86_64] manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-09-04-0828984 +manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-09-17-ae90a16 manylinux_2_24 = quay.io/pypa/manylinux_2_24_x86_64:2022-12-26-0d38463 -manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2023-09-04-0828984 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2023-09-17-ae90a16 [pypy_i686] manylinux2010 = quay.io/pypa/manylinux2010_i686:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-09-04-0828984 +manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-09-17-ae90a16 manylinux_2_24 = quay.io/pypa/manylinux_2_24_i686:2022-12-26-0d38463 [aarch64] -manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-09-04-0828984 +manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-09-17-ae90a16 manylinux_2_24 = quay.io/pypa/manylinux_2_24_aarch64:2022-12-26-0d38463 -manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2023-09-04-0828984 -musllinux_1_1 = quay.io/pypa/musllinux_1_1_aarch64:2023-09-04-0828984 -musllinux_1_2 = quay.io/pypa/musllinux_1_2_aarch64:2023-09-04-0828984 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2023-09-17-ae90a16 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_aarch64:2023-09-17-ae90a16 +musllinux_1_2 = quay.io/pypa/musllinux_1_2_aarch64:2023-09-17-ae90a16 [ppc64le] -manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2023-09-04-0828984 +manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2023-09-17-ae90a16 manylinux_2_24 = quay.io/pypa/manylinux_2_24_ppc64le:2022-12-26-0d38463 -manylinux_2_28 = quay.io/pypa/manylinux_2_28_ppc64le:2023-09-04-0828984 -musllinux_1_1 = quay.io/pypa/musllinux_1_1_ppc64le:2023-09-04-0828984 -musllinux_1_2 = quay.io/pypa/musllinux_1_2_ppc64le:2023-09-04-0828984 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_ppc64le:2023-09-17-ae90a16 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_ppc64le:2023-09-17-ae90a16 +musllinux_1_2 = quay.io/pypa/musllinux_1_2_ppc64le:2023-09-17-ae90a16 [s390x] -manylinux2014 = quay.io/pypa/manylinux2014_s390x:2023-09-04-0828984 +manylinux2014 = quay.io/pypa/manylinux2014_s390x:2023-09-17-ae90a16 manylinux_2_24 = quay.io/pypa/manylinux_2_24_s390x:2022-12-26-0d38463 -manylinux_2_28 = quay.io/pypa/manylinux_2_28_s390x:2023-09-04-0828984 -musllinux_1_1 = quay.io/pypa/musllinux_1_1_s390x:2023-09-04-0828984 -musllinux_1_2 = quay.io/pypa/musllinux_1_2_s390x:2023-09-04-0828984 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_s390x:2023-09-17-ae90a16 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_s390x:2023-09-17-ae90a16 +musllinux_1_2 = quay.io/pypa/musllinux_1_2_s390x:2023-09-17-ae90a16 [pypy_aarch64] -manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-09-04-0828984 +manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-09-17-ae90a16 manylinux_2_24 = quay.io/pypa/manylinux_2_24_aarch64:2022-12-26-0d38463 -manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2023-09-04-0828984 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2023-09-17-ae90a16 diff --git a/docs/working-examples.md b/docs/working-examples.md index 7596525f7..38d35e097 100644 --- a/docs/working-examples.md +++ b/docs/working-examples.md @@ -15,8 +15,8 @@ title: Working examples | [Matplotlib][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | The venerable Matplotlib, a Python library with C++ portions | | [NCNN][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | ncnn is a high-performance neural network inference framework optimized for the mobile platform | | [Prophet][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Tool for producing high quality forecasts for time series data that has multiple seasonality with linear or non-linear growth. | -| [Kivy][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Open source UI framework written in Python, running on Windows, Linux, macOS, Android and iOS | | [MyPy][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | The compiled version of MyPy using MyPyC. | +| [Kivy][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Open source UI framework written in Python, running on Windows, Linux, macOS, Android and iOS | | [duckdb][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | DuckDB is an in-process SQL OLAP Database Management System | | [MemRay][] | ![github icon][] | ![linux icon][] | Memray is a memory profiler for Python | | [uvloop][] | ![github icon][] | ![apple icon][] ![linux icon][] | Ultra fast asyncio event loop. | @@ -31,8 +31,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. | | [PyOxidizer][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | A modern Python application packaging and distribution tool | -| [cvxpy][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | A Python-embedded modeling language for convex optimization problems. | | [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. | | [River][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | 🌊 Online machine learning in Python | | [UltraJSON][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Ultra fast JSON decoder and encoder written in C with Python bindings | | [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. | @@ -51,9 +51,9 @@ title: Working examples | [PyAV][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Pythonic bindings for FFmpeg's libraries. | | [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. | | [Wrapt][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A Python module for decorators, wrappers and monkey patching. | +| [CTranslate2][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Includes libraries from the [Intel oneAPI toolkit](https://www.intel.com/content/www/us/en/developer/tools/oneapi/base-toolkit.html) and CUDA kernels compiled for multiple GPU architectures. | | [pikepdf][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A Python library for reading and writing PDF, powered by QPDF | | [envd][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | 🏕️ Reproducible development environment | -| [CTranslate2][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Includes libraries from the [Intel oneAPI toolkit](https://www.intel.com/content/www/us/en/developer/tools/oneapi/base-toolkit.html) and CUDA kernels compiled for multiple GPU architectures. | | [SimpleJSON][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | simplejson is a simple, fast, extensible JSON encoder/decoder for Python | | [OpenColorIO][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | A color management framework for visual effects and animation. | | [aioquic][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | QUIC and HTTP/3 implementation in Python | @@ -105,8 +105,8 @@ title: Working examples | [ninja][] | ![github icon][] ![travisci icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Multitagged binary builds for all supported platforms, using cibw 2 config configuration. | | [numpythia][] | ![github icon][] | ![apple icon][] ![linux icon][] | The interface between PYTHIA and NumPy | | [pyjet][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | The interface between FastJet and NumPy | -| [GSD][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Cython and NumPy project with 64-bit wheels. | | [ril][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A python binding to Rust Imaging library using maturin and Pyo3, utilizes Github Action cache to improve speed. Builds abi3 wheels. | +| [GSD][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Cython and NumPy project with 64-bit wheels. | | [SiPM][] | ![github icon][] | ![apple icon][] ![linux icon][] | High performance library for SiPM detectors simulation using C++17, OpenMP and AVX2 intrinsics. | | [CorrectionLib][] | ![github icon][] | ![apple icon][] ![linux icon][] | Structured JSON powered correction library for HEP, designed for the CMS experiment at CERN. | | [pyinstrument_cext][] | ![travisci icon][] ![appveyor icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A simple C extension, without external dependencies | @@ -121,8 +121,8 @@ title: Working examples [Matplotlib]: https://github.com/matplotlib/matplotlib [NCNN]: https://github.com/Tencent/ncnn [Prophet]: https://github.com/facebook/prophet -[Kivy]: https://github.com/kivy/kivy [MyPy]: https://github.com/mypyc/mypy_mypyc-wheels +[Kivy]: https://github.com/kivy/kivy [duckdb]: https://github.com/duckdb/duckdb [MemRay]: https://github.com/bloomberg/memray [uvloop]: https://github.com/MagicStack/uvloop @@ -137,8 +137,8 @@ title: Working examples [scikit-image]: https://github.com/scikit-image/scikit-image [twisted-iocpsupport]: https://github.com/twisted/twisted-iocpsupport [PyOxidizer]: https://github.com/indygreg/PyOxidizer -[cvxpy]: https://github.com/cvxpy/cvxpy [websockets]: https://github.com/aaugustin/websockets +[cvxpy]: https://github.com/cvxpy/cvxpy [River]: https://github.com/online-ml/river [UltraJSON]: https://github.com/ultrajson/ultrajson [OpenSpiel]: https://github.com/deepmind/open_spiel @@ -157,9 +157,9 @@ title: Working examples [PyAV]: https://github.com/PyAV-Org/PyAV [h5py]: https://github.com/h5py/h5py [Wrapt]: https://github.com/GrahamDumpleton/wrapt +[CTranslate2]: https://github.com/OpenNMT/CTranslate2 [pikepdf]: https://github.com/pikepdf/pikepdf [envd]: https://github.com/tensorchord/envd -[CTranslate2]: https://github.com/OpenNMT/CTranslate2 [SimpleJSON]: https://github.com/simplejson/simplejson [OpenColorIO]: https://github.com/AcademySoftwareFoundation/OpenColorIO [aioquic]: https://github.com/aiortc/aioquic @@ -211,8 +211,8 @@ title: Working examples [ninja]: https://github.com/scikit-build/ninja-python-distributions [numpythia]: https://github.com/scikit-hep/numpythia [pyjet]: https://github.com/scikit-hep/pyjet -[GSD]: https://github.com/glotzerlab/gsd [ril]: https://github.com/Cryptex-github/ril-py +[GSD]: https://github.com/glotzerlab/gsd [SiPM]: https://github.com/EdoPro98/SimSiPM [CorrectionLib]: https://github.com/cms-nanoAOD/correctionlib [pyinstrument_cext]: https://github.com/joerick/pyinstrument_cext From f5e60d647fe700ba6e357c30376e8a48f91e5974 Mon Sep 17 00:00:00 2001 From: Henry Schreiner Date: Mon, 18 Sep 2023 11:57:32 -0400 Subject: [PATCH 41/43] fix: include examples too Signed-off-by: Henry Schreiner --- examples/github-with-qemu.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/github-with-qemu.yml b/examples/github-with-qemu.yml index 1c9f66b58..f26c71e47 100644 --- a/examples/github-with-qemu.yml +++ b/examples/github-with-qemu.yml @@ -15,7 +15,7 @@ jobs: - name: Set up QEMU if: runner.os == 'Linux' - uses: docker/setup-qemu-action@v2 + uses: docker/setup-qemu-action@v3 with: platforms: all From 753cbd1ca526543d317f0678fb5bc16018ed5ee9 Mon Sep 17 00:00:00 2001 From: Joe Rickerby Date: Mon, 18 Sep 2023 17:20:30 +0100 Subject: [PATCH 42/43] Update RtD config to include mandatory build.os option --- .readthedocs.yml | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/.readthedocs.yml b/.readthedocs.yml index b59f4199f..7b94bd1fa 100644 --- a/.readthedocs.yml +++ b/.readthedocs.yml @@ -2,13 +2,17 @@ # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details version: 2 -mkdocs: - configuration: mkdocs.yml +build: + os: ubuntu-22.04 + tools: + python: "3.11" python: - version: 3.8 install: - method: pip path: . extra_requirements: - docs + +mkdocs: + configuration: mkdocs.yml From a873dd9cbf9e3c4c73a1fd11ac31cf835f6eb502 Mon Sep 17 00:00:00 2001 From: Joe Rickerby Date: Mon, 18 Sep 2023 18:34:53 +0100 Subject: [PATCH 43/43] Bump version: v2.16.0 --- README.md | 24 +++++++++++++----------- cibuildwheel/__init__.py | 2 +- docs/changelog.md | 12 ++++++++++++ docs/faq.md | 6 +++--- docs/setup.md | 4 ++-- examples/appveyor-minimal.yml | 2 +- examples/azure-pipelines-minimal.yml | 6 +++--- examples/circleci-minimal.yml | 6 +++--- examples/cirrus-ci-intel-mac.yml | 2 +- examples/cirrus-ci-minimal.yml | 2 +- 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 | 4 ++-- examples/gitlab-with-qemu.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 +- 20 files changed, 52 insertions(+), 38 deletions(-) diff --git a/README.md b/README.md index c48fd1e7e..4aaff6fdc 100644 --- a/README.md +++ b/README.md @@ -97,7 +97,7 @@ jobs: - uses: actions/setup-python@v3 - name: Install cibuildwheel - run: python -m pip install cibuildwheel==2.15.0 + run: python -m pip install cibuildwheel==2.16.0 - name: Build wheels run: python -m cibuildwheel --output-dir wheelhouse @@ -213,6 +213,18 @@ Changelog +### v2.16.0 + +_18 September 2023_ + +- ✨ Add the ability to pass additional flags to a build frontend through the [CIBW_BUILD_FRONTEND](https://cibuildwheel.readthedocs.io/en/stable/options/#build-frontend) option (#1588). +- ✨ The environment variable SOURCE_DATE_EPOCH is now automatically passed through to container Linux builds (useful for [reproducible builds](https://reproducible-builds.org/docs/source-date-epoch/)!) (#1589) +- 🛠 Updates the prerelease CPython 3.12 version to 3.12.0rc2 (#1604) +- 🐛 Fix `requires_python` auto-detection from setup.py when the call to `setup()` is within an `if __name__ == "__main__" block (#1613) +- 🐛 Fix a bug that prevented building Linux wheels in Docker on a Windows host (#1573) +- 🐛 `--only` can now select prerelease-pythons (#1564) +- 📚 Docs & examples updates (#1582, #1593, #1598, #1615) + ### v2.15.0 _8 August 2023_ @@ -243,16 +255,6 @@ _10 June 2023_ - 🛠 Updates the prerelease CPython 3.12 version to 3.12.0b2. (#1516) - 🛠 Adds a moving `v.` tag for use in GitHub Actions workflow files. If you use this, you'll get the latest patch release within a minor version. Additionally, Dependabot won't send you PRs for patch releases. (#1517) -### v2.13.0 - -_28 May 2023_ - -- ✨ Adds CPython 3.12 support, under the prerelease flag [CIBW_PRERELEASE_PYTHONS](https://cibuildwheel.readthedocs.io/en/stable/options/#prerelease-pythons). This version of cibuildwheel uses 3.12.0b1. - - While CPython is in beta, the ABI can change, so your wheels might not be compatible with the final release. For this reason, we don't recommend distributing wheels until RC1, at which point 3.12 will be available in cibuildwheel without the flag. (#1507) - -- ✨ Adds the ability to pass arguments to the container engine when the container is created, using the [CIBW_CONTAINER_ENGINE](https://cibuildwheel.readthedocs.io/en/stable/options/#container-engine) option. (#1499) - --- diff --git a/cibuildwheel/__init__.py b/cibuildwheel/__init__.py index 79a44705c..3e983dea0 100644 --- a/cibuildwheel/__init__.py +++ b/cibuildwheel/__init__.py @@ -1,3 +1,3 @@ from __future__ import annotations -__version__ = "2.15.0" +__version__ = "2.16.0" diff --git a/docs/changelog.md b/docs/changelog.md index 8d99c6333..3224fc2aa 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -4,6 +4,18 @@ title: Changelog # Changelog +### v2.16.0 + +_18 September 2023_ + +- ✨ Add the ability to pass additional flags to a build frontend through the [CIBW_BUILD_FRONTEND](https://cibuildwheel.readthedocs.io/en/stable/options/#build-frontend) option (#1588). +- ✨ The environment variable SOURCE_DATE_EPOCH is now automatically passed through to container Linux builds (useful for [reproducible builds](https://reproducible-builds.org/docs/source-date-epoch/)!) (#1589) +- 🛠 Updates the prerelease CPython 3.12 version to 3.12.0rc2 (#1604) +- 🐛 Fix `requires_python` auto-detection from setup.py when the call to `setup()` is within an `if __name__ == "__main__" block (#1613) +- 🐛 Fix a bug that prevented building Linux wheels in Docker on a Windows host (#1573) +- 🐛 `--only` can now select prerelease-pythons (#1564) +- 📚 Docs & examples updates (#1582, #1593, #1598, #1615) + ### v2.15.0 _8 August 2023_ diff --git a/docs/faq.md b/docs/faq.md index 91f2f6709..e9028797d 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -159,7 +159,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.15.0 +uses: pypa/cibuildwheel@v2.16.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. @@ -181,7 +181,7 @@ The second option, and the only one that supports other CI systems, is using a ` ```bash # requirements-cibw.txt -cibuildwheel==2.15.0 +cibuildwheel==2.16.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: @@ -325,7 +325,7 @@ Solutions to this vary, but the simplest is to use pipx: # most runners have pipx preinstalled, but in case you don't python3 -m pip install pipx -pipx run cibuildwheel==2.15.0 --output-dir wheelhouse +pipx run cibuildwheel==2.16.0 --output-dir wheelhouse pipx run twine upload wheelhouse/*.whl ``` diff --git a/docs/setup.md b/docs/setup.md index 7c04b1bf5..1e7e52cce 100644 --- a/docs/setup.md +++ b/docs/setup.md @@ -184,7 +184,7 @@ To build Linux, Mac, and Windows wheels using GitHub Actions, create a `.github/ - uses: actions/checkout@v4 - name: Build wheels - run: pipx run cibuildwheel==2.15.0 + run: pipx run cibuildwheel==2.16.0 - uses: actions/upload-artifact@v3 with: @@ -219,7 +219,7 @@ To build Linux, Mac, and Windows wheels using GitHub Actions, create a `.github/ - uses: actions/setup-python@v3 - name: Install cibuildwheel - run: python -m pip install cibuildwheel==2.15.0 + run: python -m pip install cibuildwheel==2.16.0 - name: Build wheels run: python -m cibuildwheel --output-dir wheelhouse diff --git a/examples/appveyor-minimal.yml b/examples/appveyor-minimal.yml index 5ba6b666d..ec675448c 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.15.0 +install: python -m pip install cibuildwheel==2.16.0 build_script: python -m cibuildwheel --output-dir wheelhouse diff --git a/examples/azure-pipelines-minimal.yml b/examples/azure-pipelines-minimal.yml index 90865ffc0..ac9ba041e 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.15.0 + pip3 install cibuildwheel==2.16.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.15.0 + python3 -m pip install cibuildwheel==2.16.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.15.0 + pip install cibuildwheel==2.16.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 015aa5488..8dcbbf70d 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.15.0 + pip3 install --user cibuildwheel==2.16.0 cibuildwheel --output-dir wheelhouse - store_artifacts: path: wheelhouse/ @@ -28,7 +28,7 @@ jobs: - run: name: Build the Linux aarch64 wheels. command: | - python3 -m pip install --user cibuildwheel==2.15.0 + python3 -m pip install --user cibuildwheel==2.16.0 python3 -m cibuildwheel --output-dir wheelhouse - store_artifacts: path: wheelhouse/ @@ -42,7 +42,7 @@ jobs: - run: name: Build the OS X wheels. command: | - pip3 install cibuildwheel==2.15.0 + pip3 install cibuildwheel==2.16.0 cibuildwheel --output-dir wheelhouse - store_artifacts: path: wheelhouse/ diff --git a/examples/cirrus-ci-intel-mac.yml b/examples/cirrus-ci-intel-mac.yml index ab0b69c4e..0e66c8e47 100644 --- a/examples/cirrus-ci-intel-mac.yml +++ b/examples/cirrus-ci-intel-mac.yml @@ -1,6 +1,6 @@ build_and_store_wheels: &BUILD_AND_STORE_WHEELS install_cibuildwheel_script: - - python -m pip install cibuildwheel==2.15.0 + - python -m pip install cibuildwheel==2.16.0 run_cibuildwheel_script: - cibuildwheel wheels_artifacts: diff --git a/examples/cirrus-ci-minimal.yml b/examples/cirrus-ci-minimal.yml index 176726c90..f38b09ab8 100644 --- a/examples/cirrus-ci-minimal.yml +++ b/examples/cirrus-ci-minimal.yml @@ -1,6 +1,6 @@ build_and_store_wheels: &BUILD_AND_STORE_WHEELS install_cibuildwheel_script: - - python -m pip install cibuildwheel==2.15.0 + - python -m pip install cibuildwheel==2.16.0 run_cibuildwheel_script: - cibuildwheel wheels_artifacts: diff --git a/examples/github-apple-silicon.yml b/examples/github-apple-silicon.yml index 233785e65..bc1547fb4 100644 --- a/examples/github-apple-silicon.yml +++ b/examples/github-apple-silicon.yml @@ -10,7 +10,7 @@ jobs: - uses: actions/checkout@v4 - name: Build wheels - uses: pypa/cibuildwheel@v2.15.0 + uses: pypa/cibuildwheel@v2.16.0 env: CIBW_ARCHS_MACOS: x86_64 arm64 diff --git a/examples/github-deploy.yml b/examples/github-deploy.yml index 4b376e7be..68eaeb87a 100644 --- a/examples/github-deploy.yml +++ b/examples/github-deploy.yml @@ -22,7 +22,7 @@ jobs: - uses: actions/checkout@v4 - name: Build wheels - uses: pypa/cibuildwheel@v2.15.0 + uses: pypa/cibuildwheel@v2.16.0 - uses: actions/upload-artifact@v3 with: diff --git a/examples/github-minimal.yml b/examples/github-minimal.yml index 215246574..79493c70f 100644 --- a/examples/github-minimal.yml +++ b/examples/github-minimal.yml @@ -14,7 +14,7 @@ jobs: - uses: actions/checkout@v4 - name: Build wheels - uses: pypa/cibuildwheel@v2.15.0 + uses: pypa/cibuildwheel@v2.16.0 # env: # CIBW_SOME_OPTION: value # ... diff --git a/examples/github-with-qemu.yml b/examples/github-with-qemu.yml index f26c71e47..c5472d012 100644 --- a/examples/github-with-qemu.yml +++ b/examples/github-with-qemu.yml @@ -20,7 +20,7 @@ jobs: platforms: all - name: Build wheels - uses: pypa/cibuildwheel@v2.15.0 + uses: pypa/cibuildwheel@v2.16.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 454c5d27f..4af8dd861 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.15.0 + - python -m pip install cibuildwheel==2.16.0 - cibuildwheel --output-dir wheelhouse artifacts: paths: @@ -23,7 +23,7 @@ windows: before_script: - choco install python -y --version 3.8.6 - choco install git.install -y - - py -m pip install cibuildwheel==2.15.0 + - py -m pip install cibuildwheel==2.16.0 script: - py -m cibuildwheel --output-dir wheelhouse --platform windows artifacts: diff --git a/examples/gitlab-with-qemu.yml b/examples/gitlab-with-qemu.yml index 6dd3f7575..495479bfd 100644 --- a/examples/gitlab-with-qemu.yml +++ b/examples/gitlab-with-qemu.yml @@ -14,7 +14,7 @@ linux: - curl -sSL https://get.docker.com/ | sh # Warning: This is extremely slow, be careful with how many wheels you build - docker run --rm --privileged multiarch/qemu-user-static --reset -p yes - - python -m pip install cibuildwheel==2.15.0 + - python -m pip install cibuildwheel==2.16.0 # Assuming your CI runner's default architecture is x86_64... - cibuildwheel --output-dir wheelhouse --platform linux --archs aarch64 artifacts: diff --git a/examples/travis-ci-deploy.yml b/examples/travis-ci-deploy.yml index a0c0ee7d3..28e1822bf 100644 --- a/examples/travis-ci-deploy.yml +++ b/examples/travis-ci-deploy.yml @@ -20,7 +20,7 @@ jobs: - ln -s /c/Python38/python.exe /c/Python38/python3.exe install: - - python3 -m pip install cibuildwheel==2.15.0 + - python3 -m pip install cibuildwheel==2.16.0 script: # build the wheels, put them into './dist' diff --git a/examples/travis-ci-minimal.yml b/examples/travis-ci-minimal.yml index 34c06fedb..ca251d4b6 100644 --- a/examples/travis-ci-minimal.yml +++ b/examples/travis-ci-minimal.yml @@ -26,7 +26,7 @@ jobs: - ln -s /c/Python38/python.exe /c/Python38/python3.exe install: - - python3 -m pip install cibuildwheel==2.15.0 + - python3 -m pip install cibuildwheel==2.16.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 32ac81e6f..d748953d1 100644 --- a/examples/travis-ci-test-and-deploy.yml +++ b/examples/travis-ci-test-and-deploy.yml @@ -54,7 +54,7 @@ jobs: - stage: deploy name: Build and deploy Linux wheels services: docker - install: python3 -m pip install cibuildwheel==2.15.0 twine + install: python3 -m pip install cibuildwheel==2.16.0 twine script: python3 -m cibuildwheel --output-dir wheelhouse after_success: python3 -m twine upload --skip-existing wheelhouse/*.whl # Deploy on windows @@ -62,7 +62,7 @@ jobs: name: Build and deploy Windows wheels os: windows language: shell - install: python3 -m pip install cibuildwheel==2.15.0 twine + install: python3 -m pip install cibuildwheel==2.16.0 twine script: python3 -m cibuildwheel --output-dir wheelhouse after_success: python3 -m twine upload --skip-existing wheelhouse/*.whl diff --git a/setup.cfg b/setup.cfg index e9e0c7cf5..c84f6cd95 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = cibuildwheel -version = 2.15.0 +version = 2.16.0 description = Build Python wheels on CI with minimal configuration. long_description = file: README.md long_description_content_type = text/markdown