From c33d88a9d20f4557f3ae02719c09e0085d0dcacd Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 13 Feb 2023 21:34:59 +0000 Subject: [PATCH 01/96] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/charliermarsh/ruff-pre-commit: v0.0.243 → v0.0.246](https://github.com/charliermarsh/ruff-pre-commit/compare/v0.0.243...v0.0.246) --- .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 c2acbdf4..a76bcd94 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -19,7 +19,7 @@ repos: - id: black - repo: https://github.com/charliermarsh/ruff-pre-commit - rev: v0.0.243 + rev: v0.0.246 hooks: - id: ruff args: ["--fix"] From fbebb732e61e1123470a3a52a2dd38ec68351ae9 Mon Sep 17 00:00:00 2001 From: "cibuildwheel-bot[bot]" <83877280+cibuildwheel-bot[bot]@users.noreply.github.com> Date: Mon, 20 Feb 2023 09:55:37 -0500 Subject: [PATCH 02/96] [Bot] Update dependencies (#1417) Update dependencies Co-authored-by: cibuildwheel-bot[bot] <83877280+cibuildwheel-bot[bot]@users.noreply.github.com> --- README.md | 2 +- cibuildwheel/resources/build-platforms.toml | 24 +++++------ .../resources/constraints-python310.txt | 10 ++--- .../resources/constraints-python311.txt | 10 ++--- .../resources/constraints-python37.txt | 12 +++--- .../resources/constraints-python38.txt | 10 ++--- .../resources/constraints-python39.txt | 10 ++--- cibuildwheel/resources/constraints.txt | 10 ++--- .../resources/pinned_docker_images.cfg | 40 +++++++++---------- cibuildwheel/resources/virtualenv.toml | 4 +- docs/working-examples.md | 26 ++++++------ 11 files changed, 79 insertions(+), 79 deletions(-) diff --git a/README.md b/README.md index c46327c0..a20d9095 100644 --- a/README.md +++ b/README.md @@ -166,7 +166,7 @@ Here are some repos that use cibuildwheel. | [Kivy][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Open source UI framework written in Python, running on Windows, Linux, macOS, Android and iOS | | [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. | | [MyPy][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | The compiled version of MyPy using MyPyC. | -| [pydantic][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Data parsing and validation using Python type hints | +| [pydantic][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Data validation using Python type hints | [scikit-learn]: https://github.com/scikit-learn/scikit-learn [NumPy]: https://github.com/numpy/numpy diff --git a/cibuildwheel/resources/build-platforms.toml b/cibuildwheel/resources/build-platforms.toml index 601d8d46..42441f20 100644 --- a/cibuildwheel/resources/build-platforms.toml +++ b/cibuildwheel/resources/build-platforms.toml @@ -81,12 +81,12 @@ python_configurations = [ { identifier = "cp39-macosx_x86_64", version = "3.9", url = "https://www.python.org/ftp/python/3.9.13/python-3.9.13-macos11.pkg" }, { identifier = "cp39-macosx_arm64", version = "3.9", url = "https://www.python.org/ftp/python/3.9.13/python-3.9.13-macos11.pkg" }, { identifier = "cp39-macosx_universal2", version = "3.9", url = "https://www.python.org/ftp/python/3.9.13/python-3.9.13-macos11.pkg" }, - { identifier = "cp310-macosx_x86_64", version = "3.10", url = "https://www.python.org/ftp/python/3.10.9/python-3.10.9-macos11.pkg" }, - { identifier = "cp310-macosx_arm64", version = "3.10", url = "https://www.python.org/ftp/python/3.10.9/python-3.10.9-macos11.pkg" }, - { identifier = "cp310-macosx_universal2", version = "3.10", url = "https://www.python.org/ftp/python/3.10.9/python-3.10.9-macos11.pkg" }, - { identifier = "cp311-macosx_x86_64", version = "3.11", url = "https://www.python.org/ftp/python/3.11.1/python-3.11.1-macos11.pkg" }, - { identifier = "cp311-macosx_arm64", version = "3.11", url = "https://www.python.org/ftp/python/3.11.1/python-3.11.1-macos11.pkg" }, - { identifier = "cp311-macosx_universal2", version = "3.11", url = "https://www.python.org/ftp/python/3.11.1/python-3.11.1-macos11.pkg" }, + { identifier = "cp310-macosx_x86_64", version = "3.10", url = "https://www.python.org/ftp/python/3.10.10/python-3.10.10-macos11.pkg" }, + { identifier = "cp310-macosx_arm64", version = "3.10", url = "https://www.python.org/ftp/python/3.10.10/python-3.10.10-macos11.pkg" }, + { identifier = "cp310-macosx_universal2", version = "3.10", url = "https://www.python.org/ftp/python/3.10.10/python-3.10.10-macos11.pkg" }, + { identifier = "cp311-macosx_x86_64", version = "3.11", url = "https://www.python.org/ftp/python/3.11.2/python-3.11.2-macos11.pkg" }, + { identifier = "cp311-macosx_arm64", version = "3.11", url = "https://www.python.org/ftp/python/3.11.2/python-3.11.2-macos11.pkg" }, + { identifier = "cp311-macosx_universal2", version = "3.11", url = "https://www.python.org/ftp/python/3.11.2/python-3.11.2-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" }, @@ -104,13 +104,13 @@ python_configurations = [ { identifier = "cp38-win_amd64", version = "3.8.10", arch = "64" }, { identifier = "cp39-win32", version = "3.9.13", arch = "32" }, { identifier = "cp39-win_amd64", version = "3.9.13", arch = "64" }, - { identifier = "cp310-win32", version = "3.10.9", arch = "32" }, - { identifier = "cp310-win_amd64", version = "3.10.9", arch = "64" }, - { identifier = "cp311-win32", version = "3.11.1", arch = "32" }, - { identifier = "cp311-win_amd64", version = "3.11.1", arch = "64" }, + { identifier = "cp310-win32", version = "3.10.10", arch = "32" }, + { identifier = "cp310-win_amd64", version = "3.10.10", arch = "64" }, + { identifier = "cp311-win32", version = "3.11.2", arch = "32" }, + { identifier = "cp311-win_amd64", version = "3.11.2", arch = "64" }, { identifier = "cp39-win_arm64", version = "3.9.10", arch = "ARM64" }, - { identifier = "cp310-win_arm64", version = "3.10.8", arch = "ARM64" }, - { identifier = "cp311-win_arm64", version = "3.11.1", arch = "ARM64" }, + { identifier = "cp310-win_arm64", version = "3.10.10", arch = "ARM64" }, + { identifier = "cp311-win_arm64", version = "3.11.2", 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.11-win64.zip" }, diff --git a/cibuildwheel/resources/constraints-python310.txt b/cibuildwheel/resources/constraints-python310.txt index c6f6cbe3..98a9814d 100644 --- a/cibuildwheel/resources/constraints-python310.txt +++ b/cibuildwheel/resources/constraints-python310.txt @@ -12,17 +12,17 @@ filelock==3.9.0 # via virtualenv packaging==23.0 # via delocate -platformdirs==2.6.2 +platformdirs==3.0.0 # via virtualenv -typing-extensions==4.4.0 +typing-extensions==4.5.0 # via delocate -virtualenv==20.17.1 +virtualenv==20.19.0 # via -r cibuildwheel/resources/constraints.in wheel==0.38.4 # via -r cibuildwheel/resources/constraints.in # The following packages are considered to be unsafe in a requirements file: -pip==23.0 +pip==23.0.1 # via -r cibuildwheel/resources/constraints.in -setuptools==67.1.0 +setuptools==67.3.2 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python311.txt b/cibuildwheel/resources/constraints-python311.txt index c2fa590f..4116b1c8 100644 --- a/cibuildwheel/resources/constraints-python311.txt +++ b/cibuildwheel/resources/constraints-python311.txt @@ -12,17 +12,17 @@ filelock==3.9.0 # via virtualenv packaging==23.0 # via delocate -platformdirs==2.6.2 +platformdirs==3.0.0 # via virtualenv -typing-extensions==4.4.0 +typing-extensions==4.5.0 # via delocate -virtualenv==20.17.1 +virtualenv==20.19.0 # via -r cibuildwheel/resources/constraints.in wheel==0.38.4 # via -r cibuildwheel/resources/constraints.in # The following packages are considered to be unsafe in a requirements file: -pip==23.0 +pip==23.0.1 # via -r cibuildwheel/resources/constraints.in -setuptools==67.1.0 +setuptools==67.3.2 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python37.txt b/cibuildwheel/resources/constraints-python37.txt index 2ff0390f..2078988e 100644 --- a/cibuildwheel/resources/constraints-python37.txt +++ b/cibuildwheel/resources/constraints-python37.txt @@ -14,22 +14,22 @@ importlib-metadata==6.0.0 # via virtualenv packaging==23.0 # via delocate -platformdirs==2.6.2 +platformdirs==3.0.0 # via virtualenv -typing-extensions==4.4.0 +typing-extensions==4.5.0 # via # delocate # importlib-metadata # platformdirs -virtualenv==20.17.1 +virtualenv==20.19.0 # via -r cibuildwheel/resources/constraints.in wheel==0.38.4 # via -r cibuildwheel/resources/constraints.in -zipp==3.12.1 +zipp==3.14.0 # via importlib-metadata # The following packages are considered to be unsafe in a requirements file: -pip==23.0 +pip==23.0.1 # via -r cibuildwheel/resources/constraints.in -setuptools==67.1.0 +setuptools==67.3.2 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python38.txt b/cibuildwheel/resources/constraints-python38.txt index 2cd59960..4156fda2 100644 --- a/cibuildwheel/resources/constraints-python38.txt +++ b/cibuildwheel/resources/constraints-python38.txt @@ -12,17 +12,17 @@ filelock==3.9.0 # via virtualenv packaging==23.0 # via delocate -platformdirs==2.6.2 +platformdirs==3.0.0 # via virtualenv -typing-extensions==4.4.0 +typing-extensions==4.5.0 # via delocate -virtualenv==20.17.1 +virtualenv==20.19.0 # via -r cibuildwheel/resources/constraints.in wheel==0.38.4 # via -r cibuildwheel/resources/constraints.in # The following packages are considered to be unsafe in a requirements file: -pip==23.0 +pip==23.0.1 # via -r cibuildwheel/resources/constraints.in -setuptools==67.1.0 +setuptools==67.3.2 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python39.txt b/cibuildwheel/resources/constraints-python39.txt index e853692d..071eec91 100644 --- a/cibuildwheel/resources/constraints-python39.txt +++ b/cibuildwheel/resources/constraints-python39.txt @@ -12,17 +12,17 @@ filelock==3.9.0 # via virtualenv packaging==23.0 # via delocate -platformdirs==2.6.2 +platformdirs==3.0.0 # via virtualenv -typing-extensions==4.4.0 +typing-extensions==4.5.0 # via delocate -virtualenv==20.17.1 +virtualenv==20.19.0 # via -r cibuildwheel/resources/constraints.in wheel==0.38.4 # via -r cibuildwheel/resources/constraints.in # The following packages are considered to be unsafe in a requirements file: -pip==23.0 +pip==23.0.1 # via -r cibuildwheel/resources/constraints.in -setuptools==67.1.0 +setuptools==67.3.2 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints.txt b/cibuildwheel/resources/constraints.txt index c2fa590f..4116b1c8 100644 --- a/cibuildwheel/resources/constraints.txt +++ b/cibuildwheel/resources/constraints.txt @@ -12,17 +12,17 @@ filelock==3.9.0 # via virtualenv packaging==23.0 # via delocate -platformdirs==2.6.2 +platformdirs==3.0.0 # via virtualenv -typing-extensions==4.4.0 +typing-extensions==4.5.0 # via delocate -virtualenv==20.17.1 +virtualenv==20.19.0 # via -r cibuildwheel/resources/constraints.in wheel==0.38.4 # via -r cibuildwheel/resources/constraints.in # The following packages are considered to be unsafe in a requirements file: -pip==23.0 +pip==23.0.1 # via -r cibuildwheel/resources/constraints.in -setuptools==67.1.0 +setuptools==67.3.2 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/pinned_docker_images.cfg b/cibuildwheel/resources/pinned_docker_images.cfg index 85b4b4dd..e7254f56 100644 --- a/cibuildwheel/resources/pinned_docker_images.cfg +++ b/cibuildwheel/resources/pinned_docker_images.cfg @@ -1,49 +1,49 @@ [x86_64] -manylinux1 = quay.io/pypa/manylinux1_x86_64:2023-02-05-7c3bb1c +manylinux1 = quay.io/pypa/manylinux1_x86_64:2023-02-09-5e8b8af manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-02-05-56647d4 +manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-02-13-f687857 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-02-05-56647d4 -musllinux_1_1 = quay.io/pypa/musllinux_1_1_x86_64:2023-02-05-56647d4 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2023-02-13-f687857 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_x86_64:2023-02-13-f687857 [i686] -manylinux1 = quay.io/pypa/manylinux1_i686:2023-02-05-7c3bb1c +manylinux1 = quay.io/pypa/manylinux1_i686:2023-02-09-5e8b8af manylinux2010 = quay.io/pypa/manylinux2010_i686:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-02-05-56647d4 +manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-02-13-f687857 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-02-05-56647d4 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_i686:2023-02-13-f687857 [pypy_x86_64] manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-02-05-56647d4 +manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-02-13-f687857 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-02-05-56647d4 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2023-02-13-f687857 [pypy_i686] manylinux2010 = quay.io/pypa/manylinux2010_i686:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-02-05-56647d4 +manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-02-13-f687857 manylinux_2_24 = quay.io/pypa/manylinux_2_24_i686:2022-12-26-0d38463 [aarch64] -manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-02-05-56647d4 +manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-02-13-f687857 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-02-05-56647d4 -musllinux_1_1 = quay.io/pypa/musllinux_1_1_aarch64:2023-02-05-56647d4 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2023-02-13-f687857 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_aarch64:2023-02-13-f687857 [ppc64le] -manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2023-02-05-56647d4 +manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2023-02-13-f687857 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-01-03-129be5e -musllinux_1_1 = quay.io/pypa/musllinux_1_1_ppc64le:2023-02-05-56647d4 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_ppc64le:2023-02-13-f687857 [s390x] -manylinux2014 = quay.io/pypa/manylinux2014_s390x:2023-02-05-56647d4 +manylinux2014 = quay.io/pypa/manylinux2014_s390x:2023-02-13-f687857 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-02-05-56647d4 -musllinux_1_1 = quay.io/pypa/musllinux_1_1_s390x:2023-02-05-56647d4 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_s390x:2023-02-13-f687857 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_s390x:2023-02-13-f687857 [pypy_aarch64] -manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-02-05-56647d4 +manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-02-13-f687857 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-02-05-56647d4 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2023-02-13-f687857 diff --git a/cibuildwheel/resources/virtualenv.toml b/cibuildwheel/resources/virtualenv.toml index feb0327e..a632bf6f 100644 --- a/cibuildwheel/resources/virtualenv.toml +++ b/cibuildwheel/resources/virtualenv.toml @@ -1,2 +1,2 @@ -version = "20.17.1" -url = "https://github.com/pypa/get-virtualenv/blob/20.17.1/public/virtualenv.pyz?raw=true" +version = "20.19.0" +url = "https://github.com/pypa/get-virtualenv/blob/20.19.0/public/virtualenv.pyz?raw=true" diff --git a/docs/working-examples.md b/docs/working-examples.md index 1307895f..92080c3e 100644 --- a/docs/working-examples.md +++ b/docs/working-examples.md @@ -17,7 +17,7 @@ title: Working examples | [Kivy][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Open source UI framework written in Python, running on Windows, Linux, macOS, Android and iOS | | [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. | | [MyPy][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | The compiled version of MyPy using MyPyC. | -| [pydantic][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Data parsing and validation using Python type hints | +| [pydantic][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Data validation using Python type hints | | [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 | @@ -28,8 +28,8 @@ title: Working examples | [asyncpg][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | A fast PostgreSQL Database Client Library for Python/asyncio. | | [PyGame][] | ![github icon][] | ![apple icon][] ![linux icon][] | 🐍🎮 pygame (the library) is a Free and Open Source python programming language library for making multimedia applications like games built on top of the excellent SDL library. C, Python, Native, OpenGL. | | [cmake][] | ![github icon][] ![travisci icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Multitagged binary builds for all supported platforms, using cibw 2 config configuration. | -| [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. | | [Triton][] | ![github icon][] | ![linux icon][] | Self hosted runners | +| [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. | @@ -57,8 +57,8 @@ title: Working examples | [envd][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | 🏕️ Reproducible development environment for AI/ML | | [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 | -| [PyTables][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A Python package to manage extremely large amounts of data | | [OpenTimelineIO][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Open Source API and interchange format for editorial timeline information. | +| [PyTables][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A Python package to manage extremely large amounts of data | | [ruptures][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Extensive Cython + NumPy [pyproject.toml](https://github.com/deepcharles/ruptures/blob/master/pyproject.toml) example. | | [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. | @@ -71,9 +71,9 @@ title: Working examples | [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 | | [python-rapidjson][] | ![travisci icon][] ![gitlab icon][] ![appveyor icon][] | ![windows icon][] ![linux icon][] | Python wrapper around rapidjson | +| [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. | | [python-snappy][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Python bindings for the snappy google library | | [KDEpy][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Kernel Density Estimation in Python | -| [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. | | [tgcalls][] | ![github icon][] | ![apple icon][] ![windows icon][] | Python `pybind11` binding to Telegram's WebRTC library with third party dependencies like `OpenSSL`, `MozJPEG`, `FFmpeg`, etc. | | [time-machine][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Time mocking library using only the CPython C API. | | [pybind11 python_example][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Example pybind11 module built with a Python-based build system | @@ -96,16 +96,16 @@ title: Working examples | [Arbor][] | ![github icon][] | ![apple icon][] ![linux icon][] | Arbor is a multi-compartment neuron simulation library; compatible with next-generation accelerators; best-practices applied to research software; focused on community-driven development. Includes a [small script](https://github.com/arbor-sim/arbor/blob/master/scripts/patchwheel.py) patching `rpath` in bundled libraries. | | [fathon][] | ![travisci icon][] | ![apple icon][] ![linux icon][] | python package for DFA (Detrended Fluctuation Analysis) and related algorithms | | [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. | -| [Imagecodecs (fork)][] | ![azurepipelines icon][] | ![apple icon][] ![linux icon][] | Over 20 external dependencies in compiled libraries, custom docker image, `libomp`, `openblas` and `install_name_tool` for macOS. | | [polaroid][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Full range of wheels for setuptools rust, with auto release and PyPI deploy. | -| [etebase-py][] | ![travisci icon][] | ![linux icon][] | Python bindings to a Rust library using `setuptools-rust`, and `sccache` for improved speed. | +| [Imagecodecs (fork)][] | ![azurepipelines icon][] | ![apple icon][] ![linux icon][] | Over 20 external dependencies in compiled libraries, custom docker image, `libomp`, `openblas` and `install_name_tool` for macOS. | | [power-grid-model][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Python/C++ library for distribution power system analysis | +| [etebase-py][] | ![travisci icon][] | ![linux icon][] | Python bindings to a Rust library using `setuptools-rust`, and `sccache` for improved speed. | | [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. | | [pybind11 scikit_build_example][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | An example combining scikit-build and pybind11 | | [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 | | [ninja][] | ![github icon][] ![travisci icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Multitagged binary builds for all supported platforms, using cibw 2 config configuration. | +| [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. | | [SiPM][] | ![github icon][] | ![apple icon][] ![linux icon][] | High performance library for SiPM detectors simulation using C++17, OpenMP and AVX2 intrinsics. | @@ -134,8 +134,8 @@ title: Working examples [asyncpg]: https://github.com/MagicStack/asyncpg [PyGame]: https://github.com/pygame/pygame [cmake]: https://github.com/scikit-build/cmake-python-distributions -[scikit-image]: https://github.com/scikit-image/scikit-image [Triton]: https://github.com/openai/triton +[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 @@ -163,8 +163,8 @@ title: Working examples [envd]: https://github.com/tensorchord/envd [OpenColorIO]: https://github.com/AcademySoftwareFoundation/OpenColorIO [aioquic]: https://github.com/aiortc/aioquic -[PyTables]: https://github.com/PyTables/PyTables [OpenTimelineIO]: https://github.com/PixarAnimationStudios/OpenTimelineIO +[PyTables]: https://github.com/PyTables/PyTables [ruptures]: https://github.com/deepcharles/ruptures [Psycopg 3]: https://github.com/psycopg/psycopg [Parselmouth]: https://github.com/YannickJadoul/Parselmouth @@ -177,9 +177,9 @@ title: Working examples [Picologging]: https://github.com/microsoft/picologging [pybind11 cmake_example]: https://github.com/pybind/cmake_example [python-rapidjson]: https://github.com/python-rapidjson/python-rapidjson +[CTranslate2]: https://github.com/OpenNMT/CTranslate2 [python-snappy]: https://github.com/andrix/python-snappy [KDEpy]: https://github.com/tommyod/KDEpy -[CTranslate2]: https://github.com/OpenNMT/CTranslate2 [tgcalls]: https://github.com/MarshalX/tgcalls [time-machine]: https://github.com/adamchainz/time-machine [pybind11 python_example]: https://github.com/pybind/python_example @@ -202,16 +202,16 @@ title: Working examples [Arbor]: https://github.com/arbor-sim/arbor [fathon]: https://github.com/stfbnc/fathon [pillow-heif]: https://github.com/bigcat88/pillow_heif -[Imagecodecs (fork)]: https://github.com/czaki/imagecodecs_build [polaroid]: https://github.com/daggy1234/polaroid -[etebase-py]: https://github.com/etesync/etebase-py +[Imagecodecs (fork)]: https://github.com/czaki/imagecodecs_build [power-grid-model]: https://github.com/alliander-opensource/power-grid-model +[etebase-py]: https://github.com/etesync/etebase-py [cf-units]: https://github.com/SciTools/cf-units [clang-format]: https://github.com/ssciwr/clang-format-wheel [pybind11 scikit_build_example]: https://github.com/pybind/scikit_build_example [numpythia]: https://github.com/scikit-hep/numpythia -[pyjet]: https://github.com/scikit-hep/pyjet [ninja]: https://github.com/scikit-build/ninja-python-distributions +[pyjet]: https://github.com/scikit-hep/pyjet [GSD]: https://github.com/glotzerlab/gsd [ril]: https://github.com/Cryptex-github/ril-py [SiPM]: https://github.com/EdoPro98/SimSiPM From a604902a76342c218aba80dc2577eb20dc8bd1cc Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 21 Feb 2023 09:25:53 -0500 Subject: [PATCH 03/96] [pre-commit.ci] pre-commit autoupdate (#1420) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/charliermarsh/ruff-pre-commit: v0.0.246 → v0.0.249](https://github.com/charliermarsh/ruff-pre-commit/compare/v0.0.246...v0.0.249) - [github.com/pre-commit/mirrors-mypy: v1.0.0 → v1.0.1](https://github.com/pre-commit/mirrors-mypy/compare/v1.0.0...v1.0.1) 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 a76bcd94..d0bcbdca 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -19,7 +19,7 @@ repos: - id: black - repo: https://github.com/charliermarsh/ruff-pre-commit - rev: v0.0.246 + rev: v0.0.249 hooks: - id: ruff args: ["--fix"] @@ -31,7 +31,7 @@ repos: args: [--include-version-classifiers, --max-py-version=3.11] - repo: https://github.com/pre-commit/mirrors-mypy - rev: v1.0.0 + rev: v1.0.1 hooks: - id: mypy name: mypy 3.7 on cibuildwheel/ From 422509e1684c05482f1f93b4ef8e9b82584084b7 Mon Sep 17 00:00:00 2001 From: "cibuildwheel-bot[bot]" <83877280+cibuildwheel-bot[bot]@users.noreply.github.com> Date: Tue, 28 Feb 2023 08:29:31 +0100 Subject: [PATCH 04/96] [Bot] Update dependencies (#1422) Update dependencies Co-authored-by: cibuildwheel-bot[bot] <83877280+cibuildwheel-bot[bot]@users.noreply.github.com> --- README.md | 4 +- .../resources/constraints-python310.txt | 2 +- .../resources/constraints-python311.txt | 2 +- .../resources/constraints-python37.txt | 4 +- .../resources/constraints-python38.txt | 2 +- .../resources/constraints-python39.txt | 2 +- cibuildwheel/resources/constraints.txt | 2 +- .../resources/pinned_docker_images.cfg | 42 +++++++++---------- docs/working-examples.md | 20 ++++----- 9 files changed, 40 insertions(+), 40 deletions(-) diff --git a/README.md b/README.md index a20d9095..547f81c3 100644 --- a/README.md +++ b/README.md @@ -159,8 +159,8 @@ 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. | | [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. | | [pytorch-fairseq][] | ![github icon][] | ![apple icon][] ![linux icon][] | Facebook AI Research Sequence-to-Sequence Toolkit written in Python. | +| [Tornado][] | ![travisci icon][] | ![apple icon][] ![linux icon][] | Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed. | | [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 | | [Kivy][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Open source UI framework written in Python, running on Windows, Linux, macOS, Android and iOS | @@ -170,8 +170,8 @@ Here are some repos that use cibuildwheel. [scikit-learn]: https://github.com/scikit-learn/scikit-learn [NumPy]: https://github.com/numpy/numpy -[Tornado]: https://github.com/tornadoweb/tornado [pytorch-fairseq]: https://github.com/pytorch/fairseq +[Tornado]: https://github.com/tornadoweb/tornado [Matplotlib]: https://github.com/matplotlib/matplotlib [NCNN]: https://github.com/Tencent/ncnn [Kivy]: https://github.com/kivy/kivy diff --git a/cibuildwheel/resources/constraints-python310.txt b/cibuildwheel/resources/constraints-python310.txt index 98a9814d..6d939d31 100644 --- a/cibuildwheel/resources/constraints-python310.txt +++ b/cibuildwheel/resources/constraints-python310.txt @@ -24,5 +24,5 @@ wheel==0.38.4 # The following packages are considered to be unsafe in a requirements file: pip==23.0.1 # via -r cibuildwheel/resources/constraints.in -setuptools==67.3.2 +setuptools==67.4.0 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python311.txt b/cibuildwheel/resources/constraints-python311.txt index 4116b1c8..371d61c0 100644 --- a/cibuildwheel/resources/constraints-python311.txt +++ b/cibuildwheel/resources/constraints-python311.txt @@ -24,5 +24,5 @@ wheel==0.38.4 # The following packages are considered to be unsafe in a requirements file: pip==23.0.1 # via -r cibuildwheel/resources/constraints.in -setuptools==67.3.2 +setuptools==67.4.0 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python37.txt b/cibuildwheel/resources/constraints-python37.txt index 2078988e..687a7cd8 100644 --- a/cibuildwheel/resources/constraints-python37.txt +++ b/cibuildwheel/resources/constraints-python37.txt @@ -25,11 +25,11 @@ virtualenv==20.19.0 # via -r cibuildwheel/resources/constraints.in wheel==0.38.4 # via -r cibuildwheel/resources/constraints.in -zipp==3.14.0 +zipp==3.15.0 # via importlib-metadata # The following packages are considered to be unsafe in a requirements file: pip==23.0.1 # via -r cibuildwheel/resources/constraints.in -setuptools==67.3.2 +setuptools==67.4.0 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python38.txt b/cibuildwheel/resources/constraints-python38.txt index 4156fda2..3c0db0b8 100644 --- a/cibuildwheel/resources/constraints-python38.txt +++ b/cibuildwheel/resources/constraints-python38.txt @@ -24,5 +24,5 @@ wheel==0.38.4 # The following packages are considered to be unsafe in a requirements file: pip==23.0.1 # via -r cibuildwheel/resources/constraints.in -setuptools==67.3.2 +setuptools==67.4.0 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python39.txt b/cibuildwheel/resources/constraints-python39.txt index 071eec91..481ac0b7 100644 --- a/cibuildwheel/resources/constraints-python39.txt +++ b/cibuildwheel/resources/constraints-python39.txt @@ -24,5 +24,5 @@ wheel==0.38.4 # The following packages are considered to be unsafe in a requirements file: pip==23.0.1 # via -r cibuildwheel/resources/constraints.in -setuptools==67.3.2 +setuptools==67.4.0 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints.txt b/cibuildwheel/resources/constraints.txt index 4116b1c8..371d61c0 100644 --- a/cibuildwheel/resources/constraints.txt +++ b/cibuildwheel/resources/constraints.txt @@ -24,5 +24,5 @@ wheel==0.38.4 # The following packages are considered to be unsafe in a requirements file: pip==23.0.1 # via -r cibuildwheel/resources/constraints.in -setuptools==67.3.2 +setuptools==67.4.0 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/pinned_docker_images.cfg b/cibuildwheel/resources/pinned_docker_images.cfg index e7254f56..5eb15ccb 100644 --- a/cibuildwheel/resources/pinned_docker_images.cfg +++ b/cibuildwheel/resources/pinned_docker_images.cfg @@ -1,49 +1,49 @@ [x86_64] -manylinux1 = quay.io/pypa/manylinux1_x86_64:2023-02-09-5e8b8af +manylinux1 = quay.io/pypa/manylinux1_x86_64:2023-02-26-4ed41b6 manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-02-13-f687857 +manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-02-26-8e43fd8 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-02-13-f687857 -musllinux_1_1 = quay.io/pypa/musllinux_1_1_x86_64:2023-02-13-f687857 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2023-02-26-8e43fd8 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_x86_64:2023-02-26-8e43fd8 [i686] -manylinux1 = quay.io/pypa/manylinux1_i686:2023-02-09-5e8b8af +manylinux1 = quay.io/pypa/manylinux1_i686:2023-02-26-4ed41b6 manylinux2010 = quay.io/pypa/manylinux2010_i686:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-02-13-f687857 +manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-02-26-8e43fd8 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-02-13-f687857 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_i686:2023-02-26-8e43fd8 [pypy_x86_64] manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-02-13-f687857 +manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-02-26-8e43fd8 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-02-13-f687857 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2023-02-26-8e43fd8 [pypy_i686] manylinux2010 = quay.io/pypa/manylinux2010_i686:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-02-13-f687857 +manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-02-26-8e43fd8 manylinux_2_24 = quay.io/pypa/manylinux_2_24_i686:2022-12-26-0d38463 [aarch64] -manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-02-13-f687857 +manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-02-26-8e43fd8 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-02-13-f687857 -musllinux_1_1 = quay.io/pypa/musllinux_1_1_aarch64:2023-02-13-f687857 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2023-02-26-8e43fd8 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_aarch64:2023-02-26-8e43fd8 [ppc64le] -manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2023-02-13-f687857 +manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2023-02-26-8e43fd8 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-01-03-129be5e -musllinux_1_1 = quay.io/pypa/musllinux_1_1_ppc64le:2023-02-13-f687857 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_ppc64le:2023-02-26-8e43fd8 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_ppc64le:2023-02-26-8e43fd8 [s390x] -manylinux2014 = quay.io/pypa/manylinux2014_s390x:2023-02-13-f687857 +manylinux2014 = quay.io/pypa/manylinux2014_s390x:2023-02-26-8e43fd8 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-02-13-f687857 -musllinux_1_1 = quay.io/pypa/musllinux_1_1_s390x:2023-02-13-f687857 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_s390x:2023-02-26-8e43fd8 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_s390x:2023-02-26-8e43fd8 [pypy_aarch64] -manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-02-13-f687857 +manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-02-26-8e43fd8 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-02-13-f687857 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2023-02-26-8e43fd8 diff --git a/docs/working-examples.md b/docs/working-examples.md index 92080c3e..7790a852 100644 --- a/docs/working-examples.md +++ b/docs/working-examples.md @@ -10,8 +10,8 @@ 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. | | [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. | | [pytorch-fairseq][] | ![github icon][] | ![apple icon][] ![linux icon][] | Facebook AI Research Sequence-to-Sequence Toolkit written in Python. | +| [Tornado][] | ![travisci icon][] | ![apple icon][] ![linux icon][] | Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed. | | [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 | | [Kivy][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Open source UI framework written in Python, running on Windows, Linux, macOS, Android and iOS | @@ -51,8 +51,8 @@ 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. | | [PyAV][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Pythonic bindings for FFmpeg's libraries. | -| [pikepdf][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A Python library for reading and writing PDF, powered by qpdf | | [Line Profiler][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Line-by-line profiling for Python | +| [pikepdf][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A Python library for reading and writing PDF, powered by qpdf | | [SimpleJSON][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | simplejson is a simple, fast, extensible JSON encoder/decoder for Python | | [envd][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | 🏕️ Reproducible development environment for AI/ML | | [OpenColorIO][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | A color management framework for visual effects and animation. | @@ -69,9 +69,9 @@ title: Working examples | [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. | +| [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. | | [pybind11 cmake_example][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Example pybind11 module built with a CMake-based build system | | [python-rapidjson][] | ![travisci icon][] ![gitlab icon][] ![appveyor icon][] | ![windows icon][] ![linux icon][] | Python wrapper around rapidjson | -| [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. | | [python-snappy][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Python bindings for the snappy google library | | [KDEpy][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Kernel Density Estimation in Python | | [tgcalls][] | ![github icon][] | ![apple icon][] ![windows icon][] | Python `pybind11` binding to Telegram's WebRTC library with third party dependencies like `OpenSSL`, `MozJPEG`, `FFmpeg`, etc. | @@ -84,8 +84,8 @@ title: Working examples | [abess][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A fast best-subset selection library. It uses cibuildwheel to build a large project with C++ extensions. | | [jq.py][] | ![travisci icon][] | ![apple icon][] ![linux icon][] | Python bindings for jq | | [iminuit][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Jupyter-friendly Python interface for C++ MINUIT2 | -| [Tokenizer][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Fast and customizable text tokenization library with BPE and SentencePiece support | | [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 | +| [Tokenizer][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Fast and customizable text tokenization library with BPE and SentencePiece support | | [PyGLM][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Fast OpenGL Mathematics (GLM) for Python | | [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. | @@ -109,15 +109,15 @@ title: Working examples | [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. | +| [xmlstarlet][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Python 3.6+ CFFI bindings with true MSVC build. | | [CorrectionLib][] | ![github icon][] | ![apple icon][] ![linux icon][] | Structured JSON powered correction library for HEP, designed for the CMS experiment at CERN. | | [pyinstrument_cext][] | ![travisci icon][] ![appveyor icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A simple C extension, without external dependencies | -| [xmlstarlet][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Python 3.6+ CFFI bindings with true MSVC build. | | [pybind11 cross build example][] | ![github icon][] ![gitlab icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Same as pybind11 cmake_example but used to demo Linux ARM + Windows + macOS builds on GitLab | [scikit-learn]: https://github.com/scikit-learn/scikit-learn [NumPy]: https://github.com/numpy/numpy -[Tornado]: https://github.com/tornadoweb/tornado [pytorch-fairseq]: https://github.com/pytorch/fairseq +[Tornado]: https://github.com/tornadoweb/tornado [Matplotlib]: https://github.com/matplotlib/matplotlib [NCNN]: https://github.com/Tencent/ncnn [Kivy]: https://github.com/kivy/kivy @@ -157,8 +157,8 @@ title: Working examples [h5py]: https://github.com/h5py/h5py [Wrapt]: https://github.com/GrahamDumpleton/wrapt [PyAV]: https://github.com/PyAV-Org/PyAV -[pikepdf]: https://github.com/pikepdf/pikepdf [Line Profiler]: https://github.com/pyutils/line_profiler +[pikepdf]: https://github.com/pikepdf/pikepdf [SimpleJSON]: https://github.com/simplejson/simplejson [envd]: https://github.com/tensorchord/envd [OpenColorIO]: https://github.com/AcademySoftwareFoundation/OpenColorIO @@ -175,9 +175,9 @@ title: Working examples [Rtree]: https://github.com/Toblerity/rtree [markupsafe]: https://github.com/pallets/markupsafe [Picologging]: https://github.com/microsoft/picologging +[CTranslate2]: https://github.com/OpenNMT/CTranslate2 [pybind11 cmake_example]: https://github.com/pybind/cmake_example [python-rapidjson]: https://github.com/python-rapidjson/python-rapidjson -[CTranslate2]: https://github.com/OpenNMT/CTranslate2 [python-snappy]: https://github.com/andrix/python-snappy [KDEpy]: https://github.com/tommyod/KDEpy [tgcalls]: https://github.com/MarshalX/tgcalls @@ -190,8 +190,8 @@ title: Working examples [abess]: https://github.com/abess-team/abess [jq.py]: https://github.com/mwilliamson/jq.py [iminuit]: https://github.com/scikit-hep/iminuit -[Tokenizer]: https://github.com/OpenNMT/Tokenizer [mosec]: https://github.com/mosecorg/mosec +[Tokenizer]: https://github.com/OpenNMT/Tokenizer [PyGLM]: https://github.com/Zuzu-Typ/PyGLM [TgCrypto]: https://github.com/pyrogram/tgcrypto [bx-python]: https://github.com/bxlab/bx-python @@ -215,9 +215,9 @@ title: Working examples [GSD]: https://github.com/glotzerlab/gsd [ril]: https://github.com/Cryptex-github/ril-py [SiPM]: https://github.com/EdoPro98/SimSiPM +[xmlstarlet]: https://github.com/dimitern/xmlstarlet [CorrectionLib]: https://github.com/cms-nanoAOD/correctionlib [pyinstrument_cext]: https://github.com/joerick/pyinstrument_cext -[xmlstarlet]: https://github.com/dimitern/xmlstarlet [pybind11 cross build example]: https://github.com/wbarnha/pybind_cmake_example_crossbuild [appveyor icon]: data/readme_icons/appveyor.svg From c72e27e65a7b287675f5b3173364c1554cd13820 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 28 Feb 2023 08:43:58 -0500 Subject: [PATCH 05/96] [pre-commit.ci] pre-commit autoupdate (#1423) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [pre-commit.ci] pre-commit autoupdate updates: - [github.com/charliermarsh/ruff-pre-commit: v0.0.249 → v0.0.253](https://github.com/charliermarsh/ruff-pre-commit/compare/v0.0.249...v0.0.253) * fix ruff warnings * chore: fix pylint warnings Signed-off-by: Henry Schreiner --------- Signed-off-by: Henry Schreiner Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Grzegorz Bokota Co-authored-by: Henry Schreiner --- .pre-commit-config.yaml | 2 +- cibuildwheel/environment.py | 2 +- cibuildwheel/util.py | 4 ++-- pyproject.toml | 1 + test/test_projects/base.py | 2 +- 5 files changed, 6 insertions(+), 5 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index d0bcbdca..5f9c33ae 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -19,7 +19,7 @@ repos: - id: black - repo: https://github.com/charliermarsh/ruff-pre-commit - rev: v0.0.249 + rev: v0.0.253 hooks: - id: ruff args: ["--fix"] diff --git a/cibuildwheel/environment.py b/cibuildwheel/environment.py index fd17175d..74bfd78a 100644 --- a/cibuildwheel/environment.py +++ b/cibuildwheel/environment.py @@ -117,7 +117,7 @@ class ParsedEnvironment: prev_environment: Mapping[str, str], executor: bashlex_eval.EnvironmentExecutor | None = None, ) -> dict[str, str]: - environment = dict(**prev_environment) + environment = {**prev_environment} for assignment in self.assignments: value = assignment.evaluated_value(environment=environment, executor=executor) diff --git a/cibuildwheel/util.py b/cibuildwheel/util.py index fe9e3487..c0af8182 100644 --- a/cibuildwheel/util.py +++ b/cibuildwheel/util.py @@ -543,8 +543,8 @@ def _parse_constraints_for_virtualenv( constraint_path = Path(dependency_constraint_flags[1]) assert constraint_path.exists() with constraint_path.open(encoding="utf-8") as constraint_file: - for line in constraint_file: - line = line.strip() + for line_ in constraint_file: + line = line_.strip() if not line: continue if line.startswith("#"): diff --git a/pyproject.toml b/pyproject.toml index e53b0c68..4573b9f4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -115,6 +115,7 @@ messages_control.disable = [ "unsubscriptable-object", "wrong-import-position", "unused-argument", # Handled by Ruff + "broad-exception-raised", # Could be improved eventually ] [tool.ruff] diff --git a/test/test_projects/base.py b/test/test_projects/base.py index c4ea5403..5da5928c 100644 --- a/test/test_projects/base.py +++ b/test/test_projects/base.py @@ -33,7 +33,7 @@ class TestProject: with file_path.open("w", encoding="utf8") as f: if isinstance(content, jinja2.Template): - content = content.render(self.template_context) + content = content.render(self.template_context) # noqa: PLW2901 f.write(content) From 49b736d1c725bda880a31df86e46a3d1a09d92b8 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 6 Mar 2023 21:58:11 +0000 Subject: [PATCH 06/96] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/charliermarsh/ruff-pre-commit: v0.0.253 → v0.0.254](https://github.com/charliermarsh/ruff-pre-commit/compare/v0.0.253...v0.0.254) --- .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 5f9c33ae..4ebf497d 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -19,7 +19,7 @@ repos: - id: black - repo: https://github.com/charliermarsh/ruff-pre-commit - rev: v0.0.253 + rev: v0.0.254 hooks: - id: ruff args: ["--fix"] From 94efa61f7667e9451d24b5ce8265b0afaaead76a Mon Sep 17 00:00:00 2001 From: Henry Schreiner Date: Tue, 7 Mar 2023 12:20:21 -0500 Subject: [PATCH 07/96] ci: fix appveyor (Python 3.8+ needed for macOS) Signed-off-by: Henry Schreiner --- appveyor.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index a832cc7c..4f12790d 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,18 +1,18 @@ environment: matrix: - APPVEYOR_BUILD_WORKER_IMAGE: Ubuntu - APPVEYOR_JOB_NAME: "python37-x64-ubuntu" + APPVEYOR_JOB_NAME: "python38-x64-ubuntu" - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 - APPVEYOR_JOB_NAME: "python37-x64-vs2015" + APPVEYOR_JOB_NAME: "python38-x64-vs2015" - APPVEYOR_BUILD_WORKER_IMAGE: macos - APPVEYOR_JOB_NAME: "python37-x64-macos" + APPVEYOR_JOB_NAME: "python38-x64-macos" -stack: python 3.7 +stack: python 3.8 build: off init: -- cmd: set PATH=C:\Python37;C:\Python37\Scripts;%PATH% +- cmd: set PATH=C:\Python38;C:\Python38\Scripts;%PATH% - ps: | $BRANCH = if ($env:APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH) { $env:APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH } else { $env:APPVEYOR_REPO_BRANCH } if (-not ($BRANCH -eq 'main' -or $BRANCH.ToLower().StartsWith('appveyor-'))) { From 16380b855562429b51e9ac36f6dd57094121c4b4 Mon Sep 17 00:00:00 2001 From: Joe Rickerby Date: Tue, 7 Mar 2023 20:53:21 +0000 Subject: [PATCH 08/96] Update CI table --- CI.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/CI.md b/CI.md index 1fa1c510..98d36c73 100644 --- a/CI.md +++ b/CI.md @@ -1,11 +1,11 @@ This is a summary of the Python versions and platforms covered by the different CI platforms: -| | 3.7 | 3.8 | 3.9 | 3.10 | 3.11 | -|---------|-----------------------|--------------------------|----------|-----------|----------------| -| Linux | AppVeyor¹ / Travis CI | Azure Pipelines / GitLab | CircleCI | Cirrus CI | GitHub Actions | -| macOS | AppVeyor¹ / Travis CI | Azure Pipelines | CircleCI | Cirrus CI | GitHub Actions | -| Windows | AppVeyor¹ / Travis CI | Azure Pipelines | | Cirrus CI | GitHub Actions | +| | 3.7 | 3.8 | 3.9 | 3.10 | 3.11 | +|---------|-----------|---------------------------------------|-----------|-----------|----------------| +| Linux | Travis CI | AppVeyor¹ / Azure Pipelines / GitLab¹ | CircleCI¹ | Cirrus CI | GitHub Actions | +| macOS | Travis CI | AppVeyor¹ / Azure Pipelines | CircleCI¹ | Cirrus CI | GitHub Actions | +| Windows | Travis CI | AppVeyor¹ / Azure Pipelines / GitLab¹ | | Cirrus CI | GitHub Actions | -> ¹ AppVeyor only runs the "basic" test to reduce load. +> ¹ Runs a reduced set of tests to reduce CI load Non-x86 architectures are covered on Travis CI using Python 3.7. From c6818608d23a2f54b26e48b22c28fceb40ce2c57 Mon Sep 17 00:00:00 2001 From: Henry Schreiner Date: Fri, 10 Mar 2023 12:00:51 -0500 Subject: [PATCH 09/96] fix: pip config options were broken Signed-off-by: Henry Schreiner --- cibuildwheel/linux.py | 4 +++- cibuildwheel/macos.py | 4 +++- cibuildwheel/util.py | 5 +++-- cibuildwheel/windows.py | 4 +++- unit_test/main_tests/main_options_test.py | 8 +++++++- 5 files changed, 19 insertions(+), 6 deletions(-) diff --git a/cibuildwheel/linux.py b/cibuildwheel/linux.py index acf00667..5cc19bf5 100644 --- a/cibuildwheel/linux.py +++ b/cibuildwheel/linux.py @@ -240,7 +240,9 @@ def build_in_container( container.call(["mkdir", "-p", built_wheel_dir]) verbosity_flags = get_build_verbosity_extra_flags(build_options.build_verbosity) - extra_flags = split_config_settings(build_options.config_settings) + extra_flags = split_config_settings( + build_options.config_settings, plural=build_options.build_frontend == "pip" + ) if build_options.build_frontend == "pip": extra_flags += verbosity_flags diff --git a/cibuildwheel/macos.py b/cibuildwheel/macos.py index a94caa66..49068ab8 100644 --- a/cibuildwheel/macos.py +++ b/cibuildwheel/macos.py @@ -374,7 +374,9 @@ def build(options: Options, tmp_path: Path) -> None: built_wheel_dir.mkdir() verbosity_flags = get_build_verbosity_extra_flags(build_options.build_verbosity) - extra_flags = split_config_settings(build_options.config_settings) + extra_flags = split_config_settings( + build_options.config_settings, plural=build_options.build_frontend == "pip" + ) if build_options.build_frontend == "pip": extra_flags += verbosity_flags diff --git a/cibuildwheel/util.py b/cibuildwheel/util.py index c0af8182..f217af08 100644 --- a/cibuildwheel/util.py +++ b/cibuildwheel/util.py @@ -208,9 +208,10 @@ def get_build_verbosity_extra_flags(level: int) -> list[str]: return [] -def split_config_settings(config_settings: str) -> list[str]: +def split_config_settings(config_settings: str, *, plural: bool) -> list[str]: config_settings_list = shlex.split(config_settings) - return [f"--config-setting={setting}" for setting in config_settings_list] + s = "s" if plural else "" + return [f"--config-setting{s}={setting}" for setting in config_settings_list] def read_python_configs(config: PlatformName) -> list[dict[str, str]]: diff --git a/cibuildwheel/windows.py b/cibuildwheel/windows.py index 9182f046..3eeee294 100644 --- a/cibuildwheel/windows.py +++ b/cibuildwheel/windows.py @@ -411,7 +411,9 @@ def build(options: Options, tmp_path: Path) -> None: built_wheel_dir.mkdir() verbosity_flags = get_build_verbosity_extra_flags(build_options.build_verbosity) - extra_flags = split_config_settings(build_options.config_settings) + extra_flags = split_config_settings( + build_options.config_settings, plural=build_options.build_frontend == "pip" + ) if build_options.build_frontend == "pip": extra_flags += verbosity_flags diff --git a/unit_test/main_tests/main_options_test.py b/unit_test/main_tests/main_options_test.py index 80f446a0..ec9b0725 100644 --- a/unit_test/main_tests/main_options_test.py +++ b/unit_test/main_tests/main_options_test.py @@ -283,12 +283,18 @@ def test_config_settings(platform_specific, platform, intercepted_build_args, mo assert build_options.config_settings == config_settings - assert split_config_settings(config_settings) == [ + assert split_config_settings(config_settings, plural=False) == [ "--config-setting=setting=value", "--config-setting=setting=value2", "--config-setting=other=something else", ] + assert split_config_settings(config_settings, plural=True) == [ + "--config-settings=setting=value", + "--config-settings=setting=value2", + "--config-settings=other=something else", + ] + @pytest.mark.parametrize( "selector", From 2e48667e29fa128d96738dd6bb585aaab232b580 Mon Sep 17 00:00:00 2001 From: Henry Schreiner Date: Fri, 10 Mar 2023 13:46:42 -0500 Subject: [PATCH 10/96] refactor: use frontend instead of plural Signed-off-by: Henry Schreiner --- cibuildwheel/linux.py | 2 +- cibuildwheel/macos.py | 2 +- cibuildwheel/util.py | 4 ++-- cibuildwheel/windows.py | 2 +- unit_test/main_tests/main_options_test.py | 4 ++-- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/cibuildwheel/linux.py b/cibuildwheel/linux.py index 5cc19bf5..f5d8710e 100644 --- a/cibuildwheel/linux.py +++ b/cibuildwheel/linux.py @@ -241,7 +241,7 @@ def build_in_container( verbosity_flags = get_build_verbosity_extra_flags(build_options.build_verbosity) extra_flags = split_config_settings( - build_options.config_settings, plural=build_options.build_frontend == "pip" + build_options.config_settings, build_options.build_frontend ) if build_options.build_frontend == "pip": diff --git a/cibuildwheel/macos.py b/cibuildwheel/macos.py index 49068ab8..3bb1324d 100644 --- a/cibuildwheel/macos.py +++ b/cibuildwheel/macos.py @@ -375,7 +375,7 @@ def build(options: Options, tmp_path: Path) -> None: verbosity_flags = get_build_verbosity_extra_flags(build_options.build_verbosity) extra_flags = split_config_settings( - build_options.config_settings, plural=build_options.build_frontend == "pip" + build_options.config_settings, build_options.build_frontend ) if build_options.build_frontend == "pip": diff --git a/cibuildwheel/util.py b/cibuildwheel/util.py index f217af08..72cff326 100644 --- a/cibuildwheel/util.py +++ b/cibuildwheel/util.py @@ -208,9 +208,9 @@ def get_build_verbosity_extra_flags(level: int) -> list[str]: return [] -def split_config_settings(config_settings: str, *, plural: bool) -> list[str]: +def split_config_settings(config_settings: str, frontend: Literal["pip", "build"]) -> list[str]: config_settings_list = shlex.split(config_settings) - s = "s" if plural else "" + s = "s" if frontend == "pip" else "" return [f"--config-setting{s}={setting}" for setting in config_settings_list] diff --git a/cibuildwheel/windows.py b/cibuildwheel/windows.py index 3eeee294..cb83a324 100644 --- a/cibuildwheel/windows.py +++ b/cibuildwheel/windows.py @@ -412,7 +412,7 @@ def build(options: Options, tmp_path: Path) -> None: verbosity_flags = get_build_verbosity_extra_flags(build_options.build_verbosity) extra_flags = split_config_settings( - build_options.config_settings, plural=build_options.build_frontend == "pip" + build_options.config_settings, build_options.build_frontend ) if build_options.build_frontend == "pip": diff --git a/unit_test/main_tests/main_options_test.py b/unit_test/main_tests/main_options_test.py index ec9b0725..6cda8967 100644 --- a/unit_test/main_tests/main_options_test.py +++ b/unit_test/main_tests/main_options_test.py @@ -283,13 +283,13 @@ def test_config_settings(platform_specific, platform, intercepted_build_args, mo assert build_options.config_settings == config_settings - assert split_config_settings(config_settings, plural=False) == [ + assert split_config_settings(config_settings, "build") == [ "--config-setting=setting=value", "--config-setting=setting=value2", "--config-setting=other=something else", ] - assert split_config_settings(config_settings, plural=True) == [ + assert split_config_settings(config_settings, "pip") == [ "--config-settings=setting=value", "--config-settings=setting=value2", "--config-settings=other=something else", From 0b1b539450d86f7be21182225467c24303b687f7 Mon Sep 17 00:00:00 2001 From: "cibuildwheel-bot[bot]" <83877280+cibuildwheel-bot[bot]@users.noreply.github.com> Date: Fri, 10 Mar 2023 18:01:46 -0500 Subject: [PATCH 11/96] [Bot] Update dependencies (#1425) Update dependencies Co-authored-by: cibuildwheel-bot[bot] <83877280+cibuildwheel-bot[bot]@users.noreply.github.com> Co-authored-by: Joe Rickerby --- .../resources/constraints-python310.txt | 6 +-- .../resources/constraints-python311.txt | 6 +-- .../resources/constraints-python37.txt | 6 +-- .../resources/constraints-python38.txt | 6 +-- .../resources/constraints-python39.txt | 6 +-- cibuildwheel/resources/constraints.txt | 6 +-- .../resources/pinned_docker_images.cfg | 38 +++++++++---------- cibuildwheel/resources/virtualenv.toml | 4 +- docs/working-examples.md | 28 +++++++------- 9 files changed, 53 insertions(+), 53 deletions(-) diff --git a/cibuildwheel/resources/constraints-python310.txt b/cibuildwheel/resources/constraints-python310.txt index 6d939d31..58bd62be 100644 --- a/cibuildwheel/resources/constraints-python310.txt +++ b/cibuildwheel/resources/constraints-python310.txt @@ -12,11 +12,11 @@ filelock==3.9.0 # via virtualenv packaging==23.0 # via delocate -platformdirs==3.0.0 +platformdirs==3.1.0 # via virtualenv typing-extensions==4.5.0 # via delocate -virtualenv==20.19.0 +virtualenv==20.20.0 # via -r cibuildwheel/resources/constraints.in wheel==0.38.4 # via -r cibuildwheel/resources/constraints.in @@ -24,5 +24,5 @@ wheel==0.38.4 # The following packages are considered to be unsafe in a requirements file: pip==23.0.1 # via -r cibuildwheel/resources/constraints.in -setuptools==67.4.0 +setuptools==67.5.0 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python311.txt b/cibuildwheel/resources/constraints-python311.txt index 371d61c0..527a7d89 100644 --- a/cibuildwheel/resources/constraints-python311.txt +++ b/cibuildwheel/resources/constraints-python311.txt @@ -12,11 +12,11 @@ filelock==3.9.0 # via virtualenv packaging==23.0 # via delocate -platformdirs==3.0.0 +platformdirs==3.1.0 # via virtualenv typing-extensions==4.5.0 # via delocate -virtualenv==20.19.0 +virtualenv==20.20.0 # via -r cibuildwheel/resources/constraints.in wheel==0.38.4 # via -r cibuildwheel/resources/constraints.in @@ -24,5 +24,5 @@ wheel==0.38.4 # The following packages are considered to be unsafe in a requirements file: pip==23.0.1 # via -r cibuildwheel/resources/constraints.in -setuptools==67.4.0 +setuptools==67.5.0 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python37.txt b/cibuildwheel/resources/constraints-python37.txt index 687a7cd8..136cf5a8 100644 --- a/cibuildwheel/resources/constraints-python37.txt +++ b/cibuildwheel/resources/constraints-python37.txt @@ -14,14 +14,14 @@ importlib-metadata==6.0.0 # via virtualenv packaging==23.0 # via delocate -platformdirs==3.0.0 +platformdirs==3.1.0 # via virtualenv typing-extensions==4.5.0 # via # delocate # importlib-metadata # platformdirs -virtualenv==20.19.0 +virtualenv==20.20.0 # via -r cibuildwheel/resources/constraints.in wheel==0.38.4 # via -r cibuildwheel/resources/constraints.in @@ -31,5 +31,5 @@ zipp==3.15.0 # The following packages are considered to be unsafe in a requirements file: pip==23.0.1 # via -r cibuildwheel/resources/constraints.in -setuptools==67.4.0 +setuptools==67.5.0 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python38.txt b/cibuildwheel/resources/constraints-python38.txt index 3c0db0b8..c2c8a6be 100644 --- a/cibuildwheel/resources/constraints-python38.txt +++ b/cibuildwheel/resources/constraints-python38.txt @@ -12,11 +12,11 @@ filelock==3.9.0 # via virtualenv packaging==23.0 # via delocate -platformdirs==3.0.0 +platformdirs==3.1.0 # via virtualenv typing-extensions==4.5.0 # via delocate -virtualenv==20.19.0 +virtualenv==20.20.0 # via -r cibuildwheel/resources/constraints.in wheel==0.38.4 # via -r cibuildwheel/resources/constraints.in @@ -24,5 +24,5 @@ wheel==0.38.4 # The following packages are considered to be unsafe in a requirements file: pip==23.0.1 # via -r cibuildwheel/resources/constraints.in -setuptools==67.4.0 +setuptools==67.5.0 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python39.txt b/cibuildwheel/resources/constraints-python39.txt index 481ac0b7..6ca11a88 100644 --- a/cibuildwheel/resources/constraints-python39.txt +++ b/cibuildwheel/resources/constraints-python39.txt @@ -12,11 +12,11 @@ filelock==3.9.0 # via virtualenv packaging==23.0 # via delocate -platformdirs==3.0.0 +platformdirs==3.1.0 # via virtualenv typing-extensions==4.5.0 # via delocate -virtualenv==20.19.0 +virtualenv==20.20.0 # via -r cibuildwheel/resources/constraints.in wheel==0.38.4 # via -r cibuildwheel/resources/constraints.in @@ -24,5 +24,5 @@ wheel==0.38.4 # The following packages are considered to be unsafe in a requirements file: pip==23.0.1 # via -r cibuildwheel/resources/constraints.in -setuptools==67.4.0 +setuptools==67.5.0 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints.txt b/cibuildwheel/resources/constraints.txt index 371d61c0..527a7d89 100644 --- a/cibuildwheel/resources/constraints.txt +++ b/cibuildwheel/resources/constraints.txt @@ -12,11 +12,11 @@ filelock==3.9.0 # via virtualenv packaging==23.0 # via delocate -platformdirs==3.0.0 +platformdirs==3.1.0 # via virtualenv typing-extensions==4.5.0 # via delocate -virtualenv==20.19.0 +virtualenv==20.20.0 # via -r cibuildwheel/resources/constraints.in wheel==0.38.4 # via -r cibuildwheel/resources/constraints.in @@ -24,5 +24,5 @@ wheel==0.38.4 # The following packages are considered to be unsafe in a requirements file: pip==23.0.1 # via -r cibuildwheel/resources/constraints.in -setuptools==67.4.0 +setuptools==67.5.0 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/pinned_docker_images.cfg b/cibuildwheel/resources/pinned_docker_images.cfg index 5eb15ccb..4db924b2 100644 --- a/cibuildwheel/resources/pinned_docker_images.cfg +++ b/cibuildwheel/resources/pinned_docker_images.cfg @@ -1,49 +1,49 @@ [x86_64] manylinux1 = quay.io/pypa/manylinux1_x86_64:2023-02-26-4ed41b6 manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-02-26-8e43fd8 +manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-03-05-271004f 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-02-26-8e43fd8 -musllinux_1_1 = quay.io/pypa/musllinux_1_1_x86_64:2023-02-26-8e43fd8 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2023-03-05-271004f +musllinux_1_1 = quay.io/pypa/musllinux_1_1_x86_64:2023-03-05-271004f [i686] manylinux1 = quay.io/pypa/manylinux1_i686:2023-02-26-4ed41b6 manylinux2010 = quay.io/pypa/manylinux2010_i686:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-02-26-8e43fd8 +manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-03-05-271004f 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-02-26-8e43fd8 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_i686:2023-03-05-271004f [pypy_x86_64] manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-02-26-8e43fd8 +manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-03-05-271004f 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-02-26-8e43fd8 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2023-03-05-271004f [pypy_i686] manylinux2010 = quay.io/pypa/manylinux2010_i686:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-02-26-8e43fd8 +manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-03-05-271004f manylinux_2_24 = quay.io/pypa/manylinux_2_24_i686:2022-12-26-0d38463 [aarch64] -manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-02-26-8e43fd8 +manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-03-05-271004f 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-02-26-8e43fd8 -musllinux_1_1 = quay.io/pypa/musllinux_1_1_aarch64:2023-02-26-8e43fd8 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2023-03-05-271004f +musllinux_1_1 = quay.io/pypa/musllinux_1_1_aarch64:2023-03-05-271004f [ppc64le] -manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2023-02-26-8e43fd8 +manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2023-03-05-271004f 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-02-26-8e43fd8 -musllinux_1_1 = quay.io/pypa/musllinux_1_1_ppc64le:2023-02-26-8e43fd8 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_ppc64le:2023-03-05-271004f +musllinux_1_1 = quay.io/pypa/musllinux_1_1_ppc64le:2023-03-05-271004f [s390x] -manylinux2014 = quay.io/pypa/manylinux2014_s390x:2023-02-26-8e43fd8 +manylinux2014 = quay.io/pypa/manylinux2014_s390x:2023-03-05-271004f 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-02-26-8e43fd8 -musllinux_1_1 = quay.io/pypa/musllinux_1_1_s390x:2023-02-26-8e43fd8 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_s390x:2023-03-05-271004f +musllinux_1_1 = quay.io/pypa/musllinux_1_1_s390x:2023-03-05-271004f [pypy_aarch64] -manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-02-26-8e43fd8 +manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-03-05-271004f 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-02-26-8e43fd8 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2023-03-05-271004f diff --git a/cibuildwheel/resources/virtualenv.toml b/cibuildwheel/resources/virtualenv.toml index a632bf6f..2d7450a7 100644 --- a/cibuildwheel/resources/virtualenv.toml +++ b/cibuildwheel/resources/virtualenv.toml @@ -1,2 +1,2 @@ -version = "20.19.0" -url = "https://github.com/pypa/get-virtualenv/blob/20.19.0/public/virtualenv.pyz?raw=true" +version = "20.20.0" +url = "https://github.com/pypa/get-virtualenv/blob/20.20.0/public/virtualenv.pyz?raw=true" diff --git a/docs/working-examples.md b/docs/working-examples.md index 7790a852..4f6dfebd 100644 --- a/docs/working-examples.md +++ b/docs/working-examples.md @@ -27,8 +27,8 @@ title: Working examples | [Apache Beam][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Apache Beam is a unified programming model for Batch and Streaming data processing. | | [asyncpg][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | A fast PostgreSQL Database Client Library for Python/asyncio. | | [PyGame][] | ![github icon][] | ![apple icon][] ![linux icon][] | 🐍🎮 pygame (the library) is a Free and Open Source python programming language library for making multimedia applications like games built on top of the excellent SDL library. C, Python, Native, OpenGL. | -| [cmake][] | ![github icon][] ![travisci icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Multitagged binary builds for all supported platforms, using cibw 2 config configuration. | | [Triton][] | ![github icon][] | ![linux icon][] | Self hosted runners | +| [cmake][] | ![github icon][] ![travisci icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Multitagged binary builds for all supported platforms, using cibw 2 config configuration. | | [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 | @@ -68,14 +68,14 @@ title: Working examples | [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 ¶ | | [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. | | [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. | +| [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 | | [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 | | [KDEpy][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Kernel Density Estimation in Python | -| [tgcalls][] | ![github icon][] | ![apple icon][] ![windows icon][] | Python `pybind11` binding to Telegram's WebRTC library with third party dependencies like `OpenSSL`, `MozJPEG`, `FFmpeg`, etc. | | [time-machine][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Time mocking library using only the CPython C API. | +| [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 | | [sourmash][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Quickly search, compare, and analyze genomic and metagenomic data sets. | @@ -83,8 +83,8 @@ title: Working examples | [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. | | [abess][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A fast best-subset selection library. It uses cibuildwheel to build a large project with C++ extensions. | | [jq.py][] | ![travisci icon][] | ![apple icon][] ![linux icon][] | Python bindings for jq | -| [iminuit][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Jupyter-friendly Python interface for C++ MINUIT2 | | [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 | +| [iminuit][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Jupyter-friendly Python interface for C++ MINUIT2 | | [Tokenizer][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Fast and customizable text tokenization library with BPE and SentencePiece support | | [PyGLM][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Fast OpenGL Mathematics (GLM) for Python | | [TgCrypto][] | ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Includes a Windows Travis build. | @@ -94,10 +94,10 @@ title: Working examples | [Python-WebRTC][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | a Python extension that provides bindings to WebRTC M92 | | [pybase64][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Fast Base64 encoding/decoding in Python | | [Arbor][] | ![github icon][] | ![apple icon][] ![linux icon][] | Arbor is a multi-compartment neuron simulation library; compatible with next-generation accelerators; best-practices applied to research software; focused on community-driven development. Includes a [small script](https://github.com/arbor-sim/arbor/blob/master/scripts/patchwheel.py) patching `rpath` in bundled libraries. | -| [fathon][] | ![travisci icon][] | ![apple icon][] ![linux icon][] | python package for DFA (Detrended Fluctuation Analysis) and related algorithms | | [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. | -| [polaroid][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Full range of wheels for setuptools rust, with auto release and PyPI deploy. | +| [fathon][] | ![travisci icon][] | ![apple icon][] ![linux icon][] | python package for DFA (Detrended Fluctuation Analysis) and related algorithms | | [Imagecodecs (fork)][] | ![azurepipelines icon][] | ![apple icon][] ![linux icon][] | Over 20 external dependencies in compiled libraries, custom docker image, `libomp`, `openblas` and `install_name_tool` for macOS. | +| [polaroid][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Full range of wheels for setuptools rust, with auto release and PyPI deploy. | | [power-grid-model][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Python/C++ library for distribution power system analysis | | [etebase-py][] | ![travisci icon][] | ![linux icon][] | Python bindings to a Rust library using `setuptools-rust`, and `sccache` for improved speed. | | [cf-units][] | ![github icon][] | ![apple icon][] ![linux icon][] | Units of measure as required by the Climate and Forecast (CF) Metadata Conventions | @@ -109,9 +109,9 @@ title: Working examples | [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. | -| [xmlstarlet][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Python 3.6+ CFFI bindings with true MSVC build. | | [CorrectionLib][] | ![github icon][] | ![apple icon][] ![linux icon][] | Structured JSON powered correction library for HEP, designed for the CMS experiment at CERN. | | [pyinstrument_cext][] | ![travisci icon][] ![appveyor icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A simple C extension, without external dependencies | +| [xmlstarlet][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Python 3.6+ CFFI bindings with true MSVC build. | | [pybind11 cross build example][] | ![github icon][] ![gitlab icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Same as pybind11 cmake_example but used to demo Linux ARM + Windows + macOS builds on GitLab | [scikit-learn]: https://github.com/scikit-learn/scikit-learn @@ -133,8 +133,8 @@ title: Working examples [Apache Beam]: https://github.com/apache/beam [asyncpg]: https://github.com/MagicStack/asyncpg [PyGame]: https://github.com/pygame/pygame -[cmake]: https://github.com/scikit-build/cmake-python-distributions [Triton]: https://github.com/openai/triton +[cmake]: https://github.com/scikit-build/cmake-python-distributions [scikit-image]: https://github.com/scikit-image/scikit-image [twisted-iocpsupport]: https://github.com/twisted/twisted-iocpsupport [PyOxidizer]: https://github.com/indygreg/PyOxidizer @@ -174,14 +174,14 @@ title: Working examples [H3-py]: https://github.com/uber/h3-py [Rtree]: https://github.com/Toblerity/rtree [markupsafe]: https://github.com/pallets/markupsafe -[Picologging]: https://github.com/microsoft/picologging [CTranslate2]: https://github.com/OpenNMT/CTranslate2 +[Picologging]: https://github.com/microsoft/picologging [pybind11 cmake_example]: https://github.com/pybind/cmake_example [python-rapidjson]: https://github.com/python-rapidjson/python-rapidjson [python-snappy]: https://github.com/andrix/python-snappy [KDEpy]: https://github.com/tommyod/KDEpy -[tgcalls]: https://github.com/MarshalX/tgcalls [time-machine]: https://github.com/adamchainz/time-machine +[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 [sourmash]: https://github.com/dib-lab/sourmash @@ -189,8 +189,8 @@ title: Working examples [matrixprofile]: https://github.com/matrix-profile-foundation/matrixprofile [abess]: https://github.com/abess-team/abess [jq.py]: https://github.com/mwilliamson/jq.py -[iminuit]: https://github.com/scikit-hep/iminuit [mosec]: https://github.com/mosecorg/mosec +[iminuit]: https://github.com/scikit-hep/iminuit [Tokenizer]: https://github.com/OpenNMT/Tokenizer [PyGLM]: https://github.com/Zuzu-Typ/PyGLM [TgCrypto]: https://github.com/pyrogram/tgcrypto @@ -200,10 +200,10 @@ title: Working examples [Python-WebRTC]: https://github.com/MarshalX/python-webrtc [pybase64]: https://github.com/mayeut/pybase64 [Arbor]: https://github.com/arbor-sim/arbor -[fathon]: https://github.com/stfbnc/fathon [pillow-heif]: https://github.com/bigcat88/pillow_heif -[polaroid]: https://github.com/daggy1234/polaroid +[fathon]: https://github.com/stfbnc/fathon [Imagecodecs (fork)]: https://github.com/czaki/imagecodecs_build +[polaroid]: https://github.com/daggy1234/polaroid [power-grid-model]: https://github.com/alliander-opensource/power-grid-model [etebase-py]: https://github.com/etesync/etebase-py [cf-units]: https://github.com/SciTools/cf-units @@ -215,9 +215,9 @@ title: Working examples [GSD]: https://github.com/glotzerlab/gsd [ril]: https://github.com/Cryptex-github/ril-py [SiPM]: https://github.com/EdoPro98/SimSiPM -[xmlstarlet]: https://github.com/dimitern/xmlstarlet [CorrectionLib]: https://github.com/cms-nanoAOD/correctionlib [pyinstrument_cext]: https://github.com/joerick/pyinstrument_cext +[xmlstarlet]: https://github.com/dimitern/xmlstarlet [pybind11 cross build example]: https://github.com/wbarnha/pybind_cmake_example_crossbuild [appveyor icon]: data/readme_icons/appveyor.svg From 02ad79a31bf7aa0eee07f690509048d2fb9fd445 Mon Sep 17 00:00:00 2001 From: Joe Rickerby Date: Sat, 11 Mar 2023 13:22:16 +0000 Subject: [PATCH 12/96] Bump version: v2.12.1 --- README.md | 14 +++++++------- cibuildwheel/__init__.py | 2 +- docs/changelog.md | 6 ++++++ 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, 40 insertions(+), 34 deletions(-) diff --git a/README.md b/README.md index 547f81c3..be678158 100644 --- a/README.md +++ b/README.md @@ -94,7 +94,7 @@ jobs: - uses: actions/setup-python@v3 - name: Install cibuildwheel - run: python -m pip install cibuildwheel==2.12.0 + run: python -m pip install cibuildwheel==2.12.1 - name: Build wheels run: python -m cibuildwheel --output-dir wheelhouse @@ -210,6 +210,12 @@ Changelog +### v2.12.1 + +_11 March 2023_ + +- 🐛 Fix a bug that prevented the use of CIBW_CONFIG_SETTINGS with the 'pip' build backend. (#1430) + ### v2.12.0 _16 Jan 2023_ @@ -246,12 +252,6 @@ _26 October 2022_ - 📚 Added [a FAQ entry](https://cibuildwheel.readthedocs.io/en/stable/faq/#macos-building-cpython-38-wheels-on-arm64) describing how to perform native builds of CPython 3.8 wheels on Apple Silicon. (#1323) - 📚 Other docs improvements -### v2.11.1 - -_13 October 2022_ - -- 🛠 Updates to the latest manylinux images, and updates CPython 3.10 to 3.10.8. - --- diff --git a/cibuildwheel/__init__.py b/cibuildwheel/__init__.py index 4a09ed48..b9fbec2d 100644 --- a/cibuildwheel/__init__.py +++ b/cibuildwheel/__init__.py @@ -1,3 +1,3 @@ from __future__ import annotations -__version__ = "2.12.0" +__version__ = "2.12.1" diff --git a/docs/changelog.md b/docs/changelog.md index a4a64013..fb151e4e 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -4,6 +4,12 @@ title: Changelog # Changelog +### v2.12.1 + +_11 March 2023_ + +- 🐛 Fix a bug that prevented the use of CIBW_CONFIG_SETTINGS with the 'pip' build backend. (#1430) + ### v2.12.0 _16 Jan 2023_ diff --git a/docs/faq.md b/docs/faq.md index ba0eed47..efef2814 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -145,7 +145,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.12.0 +uses: pypa/cibuildwheel@v2.12.1 ``` This is a composite step that just runs cibuildwheel using pipx. You can set command-line options as `with:` parameters, and use `env:` as normal. @@ -167,7 +167,7 @@ The second option, and the only one that supports other CI systems, is using a ` ```bash # requirements-cibw.txt -cibuildwheel==2.12.0 +cibuildwheel==2.12.1 ``` Then your install step would have `python -m pip install -r requirements-cibw.txt` in it. Your `.github/dependabot.yml` file could look like this: @@ -311,7 +311,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.12.0 --output-dir wheelhouse +pipx run cibuildwheel==2.12.1 --output-dir wheelhouse pipx run twine upload wheelhouse/*.whl ``` diff --git a/docs/setup.md b/docs/setup.md index 10340291..03186235 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.12.0 + run: pipx run cibuildwheel==2.12.1 - 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.12.0 + run: python -m pip install cibuildwheel==2.12.1 - name: Build wheels run: python -m cibuildwheel --output-dir wheelhouse diff --git a/examples/appveyor-minimal.yml b/examples/appveyor-minimal.yml index 4d323e62..4e075827 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.12.0 +install: python -m pip install cibuildwheel==2.12.1 build_script: python -m cibuildwheel --output-dir wheelhouse diff --git a/examples/azure-pipelines-minimal.yml b/examples/azure-pipelines-minimal.yml index fa26985a..62d6d50e 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.12.0 + pip3 install cibuildwheel==2.12.1 displayName: Install dependencies - bash: cibuildwheel --output-dir wheelhouse . displayName: Build wheels @@ -20,7 +20,7 @@ jobs: - bash: | set -o errexit python3 -m pip install --upgrade pip - python3 -m pip install cibuildwheel==2.12.0 + python3 -m pip install cibuildwheel==2.12.1 displayName: Install dependencies - bash: cibuildwheel --output-dir wheelhouse . displayName: Build wheels @@ -34,7 +34,7 @@ jobs: - bash: | set -o errexit python -m pip install --upgrade pip - pip install cibuildwheel==2.12.0 + pip install cibuildwheel==2.12.1 displayName: Install dependencies - bash: cibuildwheel --output-dir wheelhouse . displayName: Build wheels diff --git a/examples/circleci-minimal.yml b/examples/circleci-minimal.yml index 01f2a2c8..80ef3188 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.12.0 + pip3 install --user cibuildwheel==2.12.1 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.12.0 + python3 -m pip install --user cibuildwheel==2.12.1 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.12.0 + pip3 install cibuildwheel==2.12.1 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 402545ce..69ee06c2 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.12.0 + - python -m pip install cibuildwheel==2.12.1 run_cibuildwheel_script: - cibuildwheel wheels_artifacts: diff --git a/examples/cirrus-ci-minimal.yml b/examples/cirrus-ci-minimal.yml index 94bc27fd..27033da6 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.12.0 + - python -m pip install cibuildwheel==2.12.1 run_cibuildwheel_script: - cibuildwheel wheels_artifacts: diff --git a/examples/github-apple-silicon.yml b/examples/github-apple-silicon.yml index 9eea9808..b01ab37b 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.12.0 + uses: pypa/cibuildwheel@v2.12.1 env: CIBW_ARCHS_MACOS: x86_64 arm64 diff --git a/examples/github-deploy.yml b/examples/github-deploy.yml index 407c8eef..820f59f0 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.12.0 + uses: pypa/cibuildwheel@v2.12.1 - uses: actions/upload-artifact@v3 with: diff --git a/examples/github-minimal.yml b/examples/github-minimal.yml index af874848..682cf6f4 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.12.0 + uses: pypa/cibuildwheel@v2.12.1 # env: # CIBW_SOME_OPTION: value # ... diff --git a/examples/github-with-qemu.yml b/examples/github-with-qemu.yml index b9cc782b..4641e7d9 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.12.0 + uses: pypa/cibuildwheel@v2.12.1 env: # configure cibuildwheel to build native archs ('auto'), and some # emulated ones diff --git a/examples/gitlab-minimal.yml b/examples/gitlab-minimal.yml index 1c018263..1db68a43 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.12.0 + - python -m pip install cibuildwheel==2.12.1 - 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.12.0 + - py -m pip install cibuildwheel==2.12.1 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 ff9fe786..21bfb627 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.12.0 + - python -m pip install cibuildwheel==2.12.1 # 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 44996537..9854f2dc 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.12.0 + - python3 -m pip install cibuildwheel==2.12.1 script: # build the wheels, put them into './dist' diff --git a/examples/travis-ci-minimal.yml b/examples/travis-ci-minimal.yml index baa4e20e..642dd729 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.12.0 + - python3 -m pip install cibuildwheel==2.12.1 script: # build the wheels, put them into './wheelhouse' diff --git a/examples/travis-ci-test-and-deploy.yml b/examples/travis-ci-test-and-deploy.yml index 776fd62d..12f560ba 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.12.0 twine + install: python3 -m pip install cibuildwheel==2.12.1 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.12.0 twine + install: python3 -m pip install cibuildwheel==2.12.1 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 5aae77f9..cf66d392 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = cibuildwheel -version = 2.12.0 +version = 2.12.1 description = Build Python wheels on CI with minimal configuration. long_description = file: README.md long_description_content_type = text/markdown From cd3256993713fb6ad3faa02721433d89223399a4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Mar 2023 13:57:27 +0000 Subject: [PATCH 13/96] build(deps): bump pypa/gh-action-pypi-publish from 1.6.4 to 1.7.1 Bumps [pypa/gh-action-pypi-publish](https://github.com/pypa/gh-action-pypi-publish) from 1.6.4 to 1.7.1. - [Release notes](https://github.com/pypa/gh-action-pypi-publish/releases) - [Commits](https://github.com/pypa/gh-action-pypi-publish/compare/v1.6.4...v1.7.1) --- updated-dependencies: - dependency-name: pypa/gh-action-pypi-publish dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index bb2ebe8a..fcda8b24 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -34,7 +34,7 @@ jobs: name: artifact path: dist - - uses: pypa/gh-action-pypi-publish@v1.6.4 + - uses: pypa/gh-action-pypi-publish@v1.7.1 with: user: __token__ password: ${{ secrets.pypi_password }} From 2c3e01287a2216d45b57a5753e0ae2583380f852 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 14 Mar 2023 15:22:17 -0400 Subject: [PATCH 14/96] [pre-commit.ci] pre-commit autoupdate (#1433) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [pre-commit.ci] pre-commit autoupdate updates: - [github.com/charliermarsh/ruff-pre-commit: v0.0.254 → v0.0.255](https://github.com/charliermarsh/ruff-pre-commit/compare/v0.0.254...v0.0.255) - [github.com/pre-commit/mirrors-mypy: v1.0.1 → v1.1.1](https://github.com/pre-commit/mirrors-mypy/compare/v1.0.1...v1.1.1) - [github.com/codespell-project/codespell: v2.2.2 → v2.2.4](https://github.com/codespell-project/codespell/compare/v2.2.2...v2.2.4) * clean ruff warnings * revert C4 -> C40 rename --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Grzegorz Bokota --- .pre-commit-config.yaml | 6 +++--- cibuildwheel/options.py | 2 +- pyproject.toml | 4 ++++ 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 4ebf497d..6eea53a0 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -19,7 +19,7 @@ repos: - id: black - repo: https://github.com/charliermarsh/ruff-pre-commit - rev: v0.0.254 + rev: v0.0.255 hooks: - id: ruff args: ["--fix"] @@ -31,7 +31,7 @@ repos: args: [--include-version-classifiers, --max-py-version=3.11] - repo: https://github.com/pre-commit/mirrors-mypy - rev: v1.0.1 + rev: v1.1.1 hooks: - id: mypy name: mypy 3.7 on cibuildwheel/ @@ -79,7 +79,7 @@ repos: files: ^docs/changelog.md$ - repo: https://github.com/codespell-project/codespell - rev: v2.2.2 + rev: v2.2.4 hooks: - id: codespell args: ["-L", "sur"] diff --git a/cibuildwheel/options.py b/cibuildwheel/options.py index 6b7b335f..9380077e 100644 --- a/cibuildwheel/options.py +++ b/cibuildwheel/options.py @@ -161,7 +161,7 @@ def _dig_first(*pairs: tuple[Mapping[str, Setting], str], ignore_empty: bool = F if key in dict_like: value = dict_like[key] - if ignore_empty and value == "": + if ignore_empty and value == "": # noqa: PLC1901 continue return value diff --git a/pyproject.toml b/pyproject.toml index 4573b9f4..2a5fa388 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -147,3 +147,7 @@ extend-ignore = [ target-version = "py37" typing-modules = ["cibuildwheel.typing"] flake8-unused-arguments.ignore-variadic-names = true + + +[tool.ruff.per-file-ignores] +"unit_test/*" = ["PLC1901"] From 04a0ca0e04ef92864bd2f6fe5a9f1d66f6f10a0b Mon Sep 17 00:00:00 2001 From: "cibuildwheel-bot[bot]" <83877280+cibuildwheel-bot[bot]@users.noreply.github.com> Date: Tue, 14 Mar 2023 15:22:33 -0400 Subject: [PATCH 15/96] [Bot] Update dependencies (#1431) Update dependencies Co-authored-by: cibuildwheel-bot[bot] <83877280+cibuildwheel-bot[bot]@users.noreply.github.com> --- .../resources/constraints-python310.txt | 6 +-- .../resources/constraints-python311.txt | 6 +-- .../resources/constraints-python37.txt | 6 +-- .../resources/constraints-python38.txt | 6 +-- .../resources/constraints-python39.txt | 6 +-- cibuildwheel/resources/constraints.txt | 6 +-- .../resources/pinned_docker_images.cfg | 42 +++++++++---------- cibuildwheel/resources/virtualenv.toml | 4 +- docs/working-examples.md | 20 ++++----- 9 files changed, 51 insertions(+), 51 deletions(-) diff --git a/cibuildwheel/resources/constraints-python310.txt b/cibuildwheel/resources/constraints-python310.txt index 58bd62be..89027fa0 100644 --- a/cibuildwheel/resources/constraints-python310.txt +++ b/cibuildwheel/resources/constraints-python310.txt @@ -12,11 +12,11 @@ filelock==3.9.0 # via virtualenv packaging==23.0 # via delocate -platformdirs==3.1.0 +platformdirs==3.1.1 # via virtualenv typing-extensions==4.5.0 # via delocate -virtualenv==20.20.0 +virtualenv==20.21.0 # via -r cibuildwheel/resources/constraints.in wheel==0.38.4 # via -r cibuildwheel/resources/constraints.in @@ -24,5 +24,5 @@ wheel==0.38.4 # The following packages are considered to be unsafe in a requirements file: pip==23.0.1 # via -r cibuildwheel/resources/constraints.in -setuptools==67.5.0 +setuptools==67.6.0 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python311.txt b/cibuildwheel/resources/constraints-python311.txt index 527a7d89..2e939118 100644 --- a/cibuildwheel/resources/constraints-python311.txt +++ b/cibuildwheel/resources/constraints-python311.txt @@ -12,11 +12,11 @@ filelock==3.9.0 # via virtualenv packaging==23.0 # via delocate -platformdirs==3.1.0 +platformdirs==3.1.1 # via virtualenv typing-extensions==4.5.0 # via delocate -virtualenv==20.20.0 +virtualenv==20.21.0 # via -r cibuildwheel/resources/constraints.in wheel==0.38.4 # via -r cibuildwheel/resources/constraints.in @@ -24,5 +24,5 @@ wheel==0.38.4 # The following packages are considered to be unsafe in a requirements file: pip==23.0.1 # via -r cibuildwheel/resources/constraints.in -setuptools==67.5.0 +setuptools==67.6.0 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python37.txt b/cibuildwheel/resources/constraints-python37.txt index 136cf5a8..53ff6652 100644 --- a/cibuildwheel/resources/constraints-python37.txt +++ b/cibuildwheel/resources/constraints-python37.txt @@ -14,14 +14,14 @@ importlib-metadata==6.0.0 # via virtualenv packaging==23.0 # via delocate -platformdirs==3.1.0 +platformdirs==3.1.1 # via virtualenv typing-extensions==4.5.0 # via # delocate # importlib-metadata # platformdirs -virtualenv==20.20.0 +virtualenv==20.21.0 # via -r cibuildwheel/resources/constraints.in wheel==0.38.4 # via -r cibuildwheel/resources/constraints.in @@ -31,5 +31,5 @@ zipp==3.15.0 # The following packages are considered to be unsafe in a requirements file: pip==23.0.1 # via -r cibuildwheel/resources/constraints.in -setuptools==67.5.0 +setuptools==67.6.0 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python38.txt b/cibuildwheel/resources/constraints-python38.txt index c2c8a6be..93a7c721 100644 --- a/cibuildwheel/resources/constraints-python38.txt +++ b/cibuildwheel/resources/constraints-python38.txt @@ -12,11 +12,11 @@ filelock==3.9.0 # via virtualenv packaging==23.0 # via delocate -platformdirs==3.1.0 +platformdirs==3.1.1 # via virtualenv typing-extensions==4.5.0 # via delocate -virtualenv==20.20.0 +virtualenv==20.21.0 # via -r cibuildwheel/resources/constraints.in wheel==0.38.4 # via -r cibuildwheel/resources/constraints.in @@ -24,5 +24,5 @@ wheel==0.38.4 # The following packages are considered to be unsafe in a requirements file: pip==23.0.1 # via -r cibuildwheel/resources/constraints.in -setuptools==67.5.0 +setuptools==67.6.0 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python39.txt b/cibuildwheel/resources/constraints-python39.txt index 6ca11a88..34b92d97 100644 --- a/cibuildwheel/resources/constraints-python39.txt +++ b/cibuildwheel/resources/constraints-python39.txt @@ -12,11 +12,11 @@ filelock==3.9.0 # via virtualenv packaging==23.0 # via delocate -platformdirs==3.1.0 +platformdirs==3.1.1 # via virtualenv typing-extensions==4.5.0 # via delocate -virtualenv==20.20.0 +virtualenv==20.21.0 # via -r cibuildwheel/resources/constraints.in wheel==0.38.4 # via -r cibuildwheel/resources/constraints.in @@ -24,5 +24,5 @@ wheel==0.38.4 # The following packages are considered to be unsafe in a requirements file: pip==23.0.1 # via -r cibuildwheel/resources/constraints.in -setuptools==67.5.0 +setuptools==67.6.0 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints.txt b/cibuildwheel/resources/constraints.txt index 527a7d89..2e939118 100644 --- a/cibuildwheel/resources/constraints.txt +++ b/cibuildwheel/resources/constraints.txt @@ -12,11 +12,11 @@ filelock==3.9.0 # via virtualenv packaging==23.0 # via delocate -platformdirs==3.1.0 +platformdirs==3.1.1 # via virtualenv typing-extensions==4.5.0 # via delocate -virtualenv==20.20.0 +virtualenv==20.21.0 # via -r cibuildwheel/resources/constraints.in wheel==0.38.4 # via -r cibuildwheel/resources/constraints.in @@ -24,5 +24,5 @@ wheel==0.38.4 # The following packages are considered to be unsafe in a requirements file: pip==23.0.1 # via -r cibuildwheel/resources/constraints.in -setuptools==67.5.0 +setuptools==67.6.0 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/pinned_docker_images.cfg b/cibuildwheel/resources/pinned_docker_images.cfg index 4db924b2..da860b8e 100644 --- a/cibuildwheel/resources/pinned_docker_images.cfg +++ b/cibuildwheel/resources/pinned_docker_images.cfg @@ -1,49 +1,49 @@ [x86_64] -manylinux1 = quay.io/pypa/manylinux1_x86_64:2023-02-26-4ed41b6 +manylinux1 = quay.io/pypa/manylinux1_x86_64:2023-03-12-1a7f2c6 manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-03-05-271004f +manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-03-12-25fd859 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-03-05-271004f -musllinux_1_1 = quay.io/pypa/musllinux_1_1_x86_64:2023-03-05-271004f +manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2023-03-12-25fd859 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_x86_64:2023-03-12-25fd859 [i686] -manylinux1 = quay.io/pypa/manylinux1_i686:2023-02-26-4ed41b6 +manylinux1 = quay.io/pypa/manylinux1_i686:2023-03-12-1a7f2c6 manylinux2010 = quay.io/pypa/manylinux2010_i686:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-03-05-271004f +manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-03-12-25fd859 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-03-05-271004f +musllinux_1_1 = quay.io/pypa/musllinux_1_1_i686:2023-03-12-25fd859 [pypy_x86_64] manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-03-05-271004f +manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-03-12-25fd859 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-03-05-271004f +manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2023-03-12-25fd859 [pypy_i686] manylinux2010 = quay.io/pypa/manylinux2010_i686:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-03-05-271004f +manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-03-12-25fd859 manylinux_2_24 = quay.io/pypa/manylinux_2_24_i686:2022-12-26-0d38463 [aarch64] -manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-03-05-271004f +manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-03-12-25fd859 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-03-05-271004f -musllinux_1_1 = quay.io/pypa/musllinux_1_1_aarch64:2023-03-05-271004f +manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2023-03-12-25fd859 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_aarch64:2023-03-12-25fd859 [ppc64le] -manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2023-03-05-271004f +manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2023-03-12-25fd859 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-03-05-271004f -musllinux_1_1 = quay.io/pypa/musllinux_1_1_ppc64le:2023-03-05-271004f +manylinux_2_28 = quay.io/pypa/manylinux_2_28_ppc64le:2023-03-12-25fd859 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_ppc64le:2023-03-12-25fd859 [s390x] -manylinux2014 = quay.io/pypa/manylinux2014_s390x:2023-03-05-271004f +manylinux2014 = quay.io/pypa/manylinux2014_s390x:2023-03-12-25fd859 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-03-05-271004f -musllinux_1_1 = quay.io/pypa/musllinux_1_1_s390x:2023-03-05-271004f +manylinux_2_28 = quay.io/pypa/manylinux_2_28_s390x:2023-03-12-25fd859 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_s390x:2023-03-12-25fd859 [pypy_aarch64] -manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-03-05-271004f +manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-03-12-25fd859 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-03-05-271004f +manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2023-03-12-25fd859 diff --git a/cibuildwheel/resources/virtualenv.toml b/cibuildwheel/resources/virtualenv.toml index 2d7450a7..b85202fa 100644 --- a/cibuildwheel/resources/virtualenv.toml +++ b/cibuildwheel/resources/virtualenv.toml @@ -1,2 +1,2 @@ -version = "20.20.0" -url = "https://github.com/pypa/get-virtualenv/blob/20.20.0/public/virtualenv.pyz?raw=true" +version = "20.21.0" +url = "https://github.com/pypa/get-virtualenv/blob/20.21.0/public/virtualenv.pyz?raw=true" diff --git a/docs/working-examples.md b/docs/working-examples.md index 4f6dfebd..86b046d1 100644 --- a/docs/working-examples.md +++ b/docs/working-examples.md @@ -66,16 +66,16 @@ title: Working examples | [google neuroglancer][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | WebGL-based viewer for volumetric data | | [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 | +| [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. | | [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. | -| [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. | | [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 | | [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 | | [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. | | [tgcalls][] | ![github icon][] | ![apple icon][] ![windows icon][] | Python `pybind11` binding to Telegram's WebRTC library with third party dependencies like `OpenSSL`, `MozJPEG`, `FFmpeg`, etc. | +| [time-machine][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Time mocking library using only the CPython C API. | | [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 | | [sourmash][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Quickly search, compare, and analyze genomic and metagenomic data sets. | @@ -93,16 +93,16 @@ title: Working examples | [iDynTree][] | ![github icon][] | ![linux icon][] | Uses manylinux_2_24 | | [Python-WebRTC][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | a Python extension that provides bindings to WebRTC M92 | | [pybase64][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Fast Base64 encoding/decoding in Python | -| [Arbor][] | ![github icon][] | ![apple icon][] ![linux icon][] | Arbor is a multi-compartment neuron simulation library; compatible with next-generation accelerators; best-practices applied to research software; focused on community-driven development. Includes a [small script](https://github.com/arbor-sim/arbor/blob/master/scripts/patchwheel.py) patching `rpath` in bundled libraries. | | [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. | +| [Arbor][] | ![github icon][] | ![apple icon][] ![linux icon][] | Arbor is a multi-compartment neuron simulation library; compatible with next-generation accelerators; best-practices applied to research software; focused on community-driven development. Includes a [small script](https://github.com/arbor-sim/arbor/blob/master/scripts/patchwheel.py) patching `rpath` in bundled libraries. | | [fathon][] | ![travisci icon][] | ![apple icon][] ![linux icon][] | python package for DFA (Detrended Fluctuation Analysis) and related algorithms | -| [Imagecodecs (fork)][] | ![azurepipelines icon][] | ![apple icon][] ![linux icon][] | Over 20 external dependencies in compiled libraries, custom docker image, `libomp`, `openblas` and `install_name_tool` for macOS. | | [polaroid][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Full range of wheels for setuptools rust, with auto release and PyPI deploy. | +| [Imagecodecs (fork)][] | ![azurepipelines icon][] | ![apple icon][] ![linux icon][] | Over 20 external dependencies in compiled libraries, custom docker image, `libomp`, `openblas` and `install_name_tool` for macOS. | | [power-grid-model][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Python/C++ library for distribution power system analysis | | [etebase-py][] | ![travisci icon][] | ![linux icon][] | Python bindings to a Rust library using `setuptools-rust`, and `sccache` for improved speed. | | [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. | | [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. | | [numpythia][] | ![github icon][] | ![apple icon][] ![linux icon][] | The interface between PYTHIA and NumPy | | [ninja][] | ![github icon][] ![travisci icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Multitagged binary builds for all supported platforms, using cibw 2 config configuration. | | [pyjet][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | The interface between FastJet and NumPy | @@ -172,16 +172,16 @@ title: Working examples [google neuroglancer]: https://github.com/google/neuroglancer [AutoPy]: https://github.com/autopilot-rs/autopy [H3-py]: https://github.com/uber/h3-py +[CTranslate2]: https://github.com/OpenNMT/CTranslate2 [Rtree]: https://github.com/Toblerity/rtree [markupsafe]: https://github.com/pallets/markupsafe -[CTranslate2]: https://github.com/OpenNMT/CTranslate2 [Picologging]: https://github.com/microsoft/picologging [pybind11 cmake_example]: https://github.com/pybind/cmake_example [python-rapidjson]: https://github.com/python-rapidjson/python-rapidjson [python-snappy]: https://github.com/andrix/python-snappy [KDEpy]: https://github.com/tommyod/KDEpy -[time-machine]: https://github.com/adamchainz/time-machine [tgcalls]: https://github.com/MarshalX/tgcalls +[time-machine]: https://github.com/adamchainz/time-machine [pybind11 python_example]: https://github.com/pybind/python_example [dd-trace-py]: https://github.com/DataDog/dd-trace-py [sourmash]: https://github.com/dib-lab/sourmash @@ -199,16 +199,16 @@ title: Working examples [iDynTree]: https://github.com/robotology/idyntree [Python-WebRTC]: https://github.com/MarshalX/python-webrtc [pybase64]: https://github.com/mayeut/pybase64 -[Arbor]: https://github.com/arbor-sim/arbor [pillow-heif]: https://github.com/bigcat88/pillow_heif +[Arbor]: https://github.com/arbor-sim/arbor [fathon]: https://github.com/stfbnc/fathon -[Imagecodecs (fork)]: https://github.com/czaki/imagecodecs_build [polaroid]: https://github.com/daggy1234/polaroid +[Imagecodecs (fork)]: https://github.com/czaki/imagecodecs_build [power-grid-model]: https://github.com/alliander-opensource/power-grid-model [etebase-py]: https://github.com/etesync/etebase-py [cf-units]: https://github.com/SciTools/cf-units -[clang-format]: https://github.com/ssciwr/clang-format-wheel [pybind11 scikit_build_example]: https://github.com/pybind/scikit_build_example +[clang-format]: https://github.com/ssciwr/clang-format-wheel [numpythia]: https://github.com/scikit-hep/numpythia [ninja]: https://github.com/scikit-build/ninja-python-distributions [pyjet]: https://github.com/scikit-hep/pyjet From 37c749e507530bc69425b098e29d44ee0e9924e3 Mon Sep 17 00:00:00 2001 From: "cibuildwheel-bot[bot]" <83877280+cibuildwheel-bot[bot]@users.noreply.github.com> Date: Mon, 20 Mar 2023 06:15:07 +0000 Subject: [PATCH 16/96] Update dependencies --- .../resources/constraints-python310.txt | 4 +-- .../resources/constraints-python311.txt | 4 +-- .../resources/constraints-python37.txt | 6 ++-- .../resources/constraints-python38.txt | 4 +-- .../resources/constraints-python39.txt | 4 +-- cibuildwheel/resources/constraints.txt | 4 +-- .../resources/pinned_docker_images.cfg | 32 +++++++++---------- docs/working-examples.md | 16 +++++----- 8 files changed, 37 insertions(+), 37 deletions(-) diff --git a/cibuildwheel/resources/constraints-python310.txt b/cibuildwheel/resources/constraints-python310.txt index 89027fa0..6ae31852 100644 --- a/cibuildwheel/resources/constraints-python310.txt +++ b/cibuildwheel/resources/constraints-python310.txt @@ -8,7 +8,7 @@ delocate==0.10.4 # via -r cibuildwheel/resources/constraints.in distlib==0.3.6 # via virtualenv -filelock==3.9.0 +filelock==3.10.0 # via virtualenv packaging==23.0 # via delocate @@ -18,7 +18,7 @@ typing-extensions==4.5.0 # via delocate virtualenv==20.21.0 # via -r cibuildwheel/resources/constraints.in -wheel==0.38.4 +wheel==0.40.0 # 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 2e939118..6875cb07 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.6 # via virtualenv -filelock==3.9.0 +filelock==3.10.0 # via virtualenv packaging==23.0 # via delocate @@ -18,7 +18,7 @@ typing-extensions==4.5.0 # via delocate virtualenv==20.21.0 # via -r cibuildwheel/resources/constraints.in -wheel==0.38.4 +wheel==0.40.0 # 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 53ff6652..3e1b8591 100644 --- a/cibuildwheel/resources/constraints-python37.txt +++ b/cibuildwheel/resources/constraints-python37.txt @@ -8,9 +8,9 @@ delocate==0.10.4 # via -r cibuildwheel/resources/constraints.in distlib==0.3.6 # via virtualenv -filelock==3.9.0 +filelock==3.10.0 # via virtualenv -importlib-metadata==6.0.0 +importlib-metadata==6.1.0 # via virtualenv packaging==23.0 # via delocate @@ -23,7 +23,7 @@ typing-extensions==4.5.0 # platformdirs virtualenv==20.21.0 # via -r cibuildwheel/resources/constraints.in -wheel==0.38.4 +wheel==0.40.0 # 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 93a7c721..4eadbbb0 100644 --- a/cibuildwheel/resources/constraints-python38.txt +++ b/cibuildwheel/resources/constraints-python38.txt @@ -8,7 +8,7 @@ delocate==0.10.4 # via -r cibuildwheel/resources/constraints.in distlib==0.3.6 # via virtualenv -filelock==3.9.0 +filelock==3.10.0 # via virtualenv packaging==23.0 # via delocate @@ -18,7 +18,7 @@ typing-extensions==4.5.0 # via delocate virtualenv==20.21.0 # via -r cibuildwheel/resources/constraints.in -wheel==0.38.4 +wheel==0.40.0 # 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 34b92d97..e062de04 100644 --- a/cibuildwheel/resources/constraints-python39.txt +++ b/cibuildwheel/resources/constraints-python39.txt @@ -8,7 +8,7 @@ delocate==0.10.4 # via -r cibuildwheel/resources/constraints.in distlib==0.3.6 # via virtualenv -filelock==3.9.0 +filelock==3.10.0 # via virtualenv packaging==23.0 # via delocate @@ -18,7 +18,7 @@ typing-extensions==4.5.0 # via delocate virtualenv==20.21.0 # via -r cibuildwheel/resources/constraints.in -wheel==0.38.4 +wheel==0.40.0 # 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 2e939118..6875cb07 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.6 # via virtualenv -filelock==3.9.0 +filelock==3.10.0 # via virtualenv packaging==23.0 # via delocate @@ -18,7 +18,7 @@ typing-extensions==4.5.0 # via delocate virtualenv==20.21.0 # via -r cibuildwheel/resources/constraints.in -wheel==0.38.4 +wheel==0.40.0 # 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 da860b8e..0266fce9 100644 --- a/cibuildwheel/resources/pinned_docker_images.cfg +++ b/cibuildwheel/resources/pinned_docker_images.cfg @@ -1,49 +1,49 @@ [x86_64] manylinux1 = quay.io/pypa/manylinux1_x86_64:2023-03-12-1a7f2c6 manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-03-12-25fd859 +manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-03-20-098e33d 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-03-12-25fd859 -musllinux_1_1 = quay.io/pypa/musllinux_1_1_x86_64:2023-03-12-25fd859 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2023-03-20-098e33d +musllinux_1_1 = quay.io/pypa/musllinux_1_1_x86_64:2023-03-20-098e33d [i686] manylinux1 = quay.io/pypa/manylinux1_i686:2023-03-12-1a7f2c6 manylinux2010 = quay.io/pypa/manylinux2010_i686:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-03-12-25fd859 +manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-03-20-098e33d 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-03-12-25fd859 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_i686:2023-03-20-098e33d [pypy_x86_64] manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-03-12-25fd859 +manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-03-20-098e33d 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-03-12-25fd859 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2023-03-20-098e33d [pypy_i686] manylinux2010 = quay.io/pypa/manylinux2010_i686:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-03-12-25fd859 +manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-03-20-098e33d manylinux_2_24 = quay.io/pypa/manylinux_2_24_i686:2022-12-26-0d38463 [aarch64] -manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-03-12-25fd859 +manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-03-20-098e33d 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-03-12-25fd859 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2023-03-20-098e33d musllinux_1_1 = quay.io/pypa/musllinux_1_1_aarch64:2023-03-12-25fd859 [ppc64le] -manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2023-03-12-25fd859 +manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2023-03-20-098e33d 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-03-12-25fd859 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_ppc64le:2023-03-20-098e33d musllinux_1_1 = quay.io/pypa/musllinux_1_1_ppc64le:2023-03-12-25fd859 [s390x] -manylinux2014 = quay.io/pypa/manylinux2014_s390x:2023-03-12-25fd859 +manylinux2014 = quay.io/pypa/manylinux2014_s390x:2023-03-20-098e33d 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-03-12-25fd859 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_s390x:2023-03-20-098e33d musllinux_1_1 = quay.io/pypa/musllinux_1_1_s390x:2023-03-12-25fd859 [pypy_aarch64] -manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-03-12-25fd859 +manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-03-20-098e33d 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-03-12-25fd859 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2023-03-20-098e33d diff --git a/docs/working-examples.md b/docs/working-examples.md index 86b046d1..94f0f7a4 100644 --- a/docs/working-examples.md +++ b/docs/working-examples.md @@ -26,8 +26,8 @@ title: Working examples | [Google Benchmark][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | A microbenchmark support library | | [Apache Beam][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Apache Beam is a unified programming model for Batch and Streaming data processing. | | [asyncpg][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | A fast PostgreSQL Database Client Library for Python/asyncio. | -| [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. | | [Triton][] | ![github icon][] | ![linux icon][] | Self hosted runners | +| [PyGame][] | ![github icon][] | ![apple icon][] ![linux icon][] | 🐍🎮 pygame (the library) is a Free and Open Source python programming language library for making multimedia applications like games built on top of the excellent SDL library. C, Python, Native, OpenGL. | | [cmake][] | ![github icon][] ![travisci icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Multitagged binary builds for all supported platforms, using cibw 2 config configuration. | | [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. | @@ -49,8 +49,8 @@ title: Working examples | [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 | | [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. | | [PyAV][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Pythonic bindings for FFmpeg's libraries. | +| [Wrapt][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A Python module for decorators, wrappers and monkey patching. | | [Line Profiler][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Line-by-line profiling for Python | | [pikepdf][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A Python library for reading and writing PDF, powered by qpdf | | [SimpleJSON][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | simplejson is a simple, fast, extensible JSON encoder/decoder for Python | @@ -72,8 +72,8 @@ title: Working examples | [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 | | [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 | | [KDEpy][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Kernel Density Estimation in Python | +| [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. | | [time-machine][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Time mocking library using only the CPython C API. | | [pybind11 python_example][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Example pybind11 module built with a Python-based build system | @@ -82,8 +82,8 @@ title: Working examples | [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. | | [abess][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A fast best-subset selection library. It uses cibuildwheel to build a large project with C++ extensions. | -| [jq.py][] | ![travisci icon][] | ![apple icon][] ![linux icon][] | Python bindings for jq | | [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 | +| [jq.py][] | ![travisci icon][] | ![apple icon][] ![linux icon][] | Python bindings for jq | | [iminuit][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Jupyter-friendly Python interface for C++ MINUIT2 | | [Tokenizer][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Fast and customizable text tokenization library with BPE and SentencePiece support | | [PyGLM][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Fast OpenGL Mathematics (GLM) for Python | @@ -132,8 +132,8 @@ title: Working examples [Google Benchmark]: https://github.com/google/benchmark [Apache Beam]: https://github.com/apache/beam [asyncpg]: https://github.com/MagicStack/asyncpg -[PyGame]: https://github.com/pygame/pygame [Triton]: https://github.com/openai/triton +[PyGame]: https://github.com/pygame/pygame [cmake]: https://github.com/scikit-build/cmake-python-distributions [scikit-image]: https://github.com/scikit-image/scikit-image [twisted-iocpsupport]: https://github.com/twisted/twisted-iocpsupport @@ -155,8 +155,8 @@ title: Working examples [PyYAML]: https://github.com/yaml/pyyaml [numexpr]: https://github.com/pydata/numexpr [h5py]: https://github.com/h5py/h5py -[Wrapt]: https://github.com/GrahamDumpleton/wrapt [PyAV]: https://github.com/PyAV-Org/PyAV +[Wrapt]: https://github.com/GrahamDumpleton/wrapt [Line Profiler]: https://github.com/pyutils/line_profiler [pikepdf]: https://github.com/pikepdf/pikepdf [SimpleJSON]: https://github.com/simplejson/simplejson @@ -178,8 +178,8 @@ title: Working examples [Picologging]: https://github.com/microsoft/picologging [pybind11 cmake_example]: https://github.com/pybind/cmake_example [python-rapidjson]: https://github.com/python-rapidjson/python-rapidjson -[python-snappy]: https://github.com/andrix/python-snappy [KDEpy]: https://github.com/tommyod/KDEpy +[python-snappy]: https://github.com/andrix/python-snappy [tgcalls]: https://github.com/MarshalX/tgcalls [time-machine]: https://github.com/adamchainz/time-machine [pybind11 python_example]: https://github.com/pybind/python_example @@ -188,8 +188,8 @@ title: Working examples [cyvcf2]: https://github.com/brentp/cyvcf2 [matrixprofile]: https://github.com/matrix-profile-foundation/matrixprofile [abess]: https://github.com/abess-team/abess -[jq.py]: https://github.com/mwilliamson/jq.py [mosec]: https://github.com/mosecorg/mosec +[jq.py]: https://github.com/mwilliamson/jq.py [iminuit]: https://github.com/scikit-hep/iminuit [Tokenizer]: https://github.com/OpenNMT/Tokenizer [PyGLM]: https://github.com/Zuzu-Typ/PyGLM From cd6c1409fb476dc6651108e34f5bb621aa87cea7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Mar 2023 12:32:32 -0400 Subject: [PATCH 17/96] build(deps): bump pypa/gh-action-pypi-publish from 1.7.1 to 1.8.1 (#1436) Bumps [pypa/gh-action-pypi-publish](https://github.com/pypa/gh-action-pypi-publish) from 1.7.1 to 1.8.1. - [Release notes](https://github.com/pypa/gh-action-pypi-publish/releases) - [Commits](https://github.com/pypa/gh-action-pypi-publish/compare/v1.7.1...v1.8.1) --- updated-dependencies: - dependency-name: pypa/gh-action-pypi-publish dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index fcda8b24..9decc0c0 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -34,7 +34,7 @@ jobs: name: artifact path: dist - - uses: pypa/gh-action-pypi-publish@v1.7.1 + - uses: pypa/gh-action-pypi-publish@v1.8.1 with: user: __token__ password: ${{ secrets.pypi_password }} From a6028923d63452c16fef4b461dcf149e40ad8f14 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 20 Mar 2023 21:11:04 -0400 Subject: [PATCH 18/96] [pre-commit.ci] pre-commit autoupdate (#1437) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/charliermarsh/ruff-pre-commit: v0.0.255 → v0.0.257](https://github.com/charliermarsh/ruff-pre-commit/compare/v0.0.255...v0.0.257) 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 6eea53a0..89246351 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -19,7 +19,7 @@ repos: - id: black - repo: https://github.com/charliermarsh/ruff-pre-commit - rev: v0.0.255 + rev: v0.0.257 hooks: - id: ruff args: ["--fix"] From 8812101cc6bff5fab63403edad7922957cfa0e97 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 29 Mar 2023 10:39:57 -0400 Subject: [PATCH 19/96] [pre-commit.ci] pre-commit autoupdate (#1444) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [pre-commit.ci] pre-commit autoupdate updates: - [github.com/charliermarsh/ruff-pre-commit: v0.0.257 → v0.0.259](https://github.com/charliermarsh/ruff-pre-commit/compare/v0.0.257...v0.0.259) * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 2 +- test/test_dependency_versions.py | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 89246351..11a967c7 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -19,7 +19,7 @@ repos: - id: black - repo: https://github.com/charliermarsh/ruff-pre-commit - rev: v0.0.257 + rev: v0.0.259 hooks: - id: ruff args: ["--fix"] diff --git a/test/test_dependency_versions.py b/test/test_dependency_versions.py index d447706b..269952e5 100644 --- a/test/test_dependency_versions.py +++ b/test/test_dependency_versions.py @@ -45,9 +45,7 @@ VERSION_REGEX = r"([\w-]+)==([^\s]+)" def get_versions_from_constraint_file(constraint_file): constraint_file_text = constraint_file.read_text(encoding="utf8") - return { - package: version for package, version in re.findall(VERSION_REGEX, constraint_file_text) - } + return dict(re.findall(VERSION_REGEX, constraint_file_text)) @pytest.mark.parametrize("python_version", ["3.6", "3.8", "3.9"]) From a2efed2aeb6a016334f6fdd9f07ac58b1148d0d1 Mon Sep 17 00:00:00 2001 From: "cibuildwheel-bot[bot]" <83877280+cibuildwheel-bot[bot]@users.noreply.github.com> Date: Wed, 29 Mar 2023 10:40:16 -0400 Subject: [PATCH 20/96] [Bot] Update dependencies (#1443) Update dependencies Co-authored-by: cibuildwheel-bot[bot] <83877280+cibuildwheel-bot[bot]@users.noreply.github.com> --- .../resources/constraints-python310.txt | 4 +- .../resources/constraints-python311.txt | 4 +- .../resources/constraints-python37.txt | 4 +- .../resources/constraints-python38.txt | 4 +- .../resources/constraints-python39.txt | 4 +- cibuildwheel/resources/constraints.txt | 4 +- .../resources/pinned_docker_images.cfg | 42 +++++++++---------- docs/working-examples.md | 16 +++---- 8 files changed, 41 insertions(+), 41 deletions(-) diff --git a/cibuildwheel/resources/constraints-python310.txt b/cibuildwheel/resources/constraints-python310.txt index 6ae31852..8e567b4c 100644 --- a/cibuildwheel/resources/constraints-python310.txt +++ b/cibuildwheel/resources/constraints-python310.txt @@ -8,11 +8,11 @@ delocate==0.10.4 # via -r cibuildwheel/resources/constraints.in distlib==0.3.6 # via virtualenv -filelock==3.10.0 +filelock==3.10.6 # via virtualenv packaging==23.0 # via delocate -platformdirs==3.1.1 +platformdirs==3.2.0 # via virtualenv typing-extensions==4.5.0 # via delocate diff --git a/cibuildwheel/resources/constraints-python311.txt b/cibuildwheel/resources/constraints-python311.txt index 6875cb07..e464d26c 100644 --- a/cibuildwheel/resources/constraints-python311.txt +++ b/cibuildwheel/resources/constraints-python311.txt @@ -8,11 +8,11 @@ delocate==0.10.4 # via -r cibuildwheel/resources/constraints.in distlib==0.3.6 # via virtualenv -filelock==3.10.0 +filelock==3.10.6 # via virtualenv packaging==23.0 # via delocate -platformdirs==3.1.1 +platformdirs==3.2.0 # via virtualenv typing-extensions==4.5.0 # via delocate diff --git a/cibuildwheel/resources/constraints-python37.txt b/cibuildwheel/resources/constraints-python37.txt index 3e1b8591..ee7bf6c9 100644 --- a/cibuildwheel/resources/constraints-python37.txt +++ b/cibuildwheel/resources/constraints-python37.txt @@ -8,13 +8,13 @@ delocate==0.10.4 # via -r cibuildwheel/resources/constraints.in distlib==0.3.6 # via virtualenv -filelock==3.10.0 +filelock==3.10.6 # via virtualenv importlib-metadata==6.1.0 # via virtualenv packaging==23.0 # via delocate -platformdirs==3.1.1 +platformdirs==3.2.0 # via virtualenv typing-extensions==4.5.0 # via diff --git a/cibuildwheel/resources/constraints-python38.txt b/cibuildwheel/resources/constraints-python38.txt index 4eadbbb0..f9d3a8e5 100644 --- a/cibuildwheel/resources/constraints-python38.txt +++ b/cibuildwheel/resources/constraints-python38.txt @@ -8,11 +8,11 @@ delocate==0.10.4 # via -r cibuildwheel/resources/constraints.in distlib==0.3.6 # via virtualenv -filelock==3.10.0 +filelock==3.10.6 # via virtualenv packaging==23.0 # via delocate -platformdirs==3.1.1 +platformdirs==3.2.0 # via virtualenv typing-extensions==4.5.0 # via delocate diff --git a/cibuildwheel/resources/constraints-python39.txt b/cibuildwheel/resources/constraints-python39.txt index e062de04..21572ebe 100644 --- a/cibuildwheel/resources/constraints-python39.txt +++ b/cibuildwheel/resources/constraints-python39.txt @@ -8,11 +8,11 @@ delocate==0.10.4 # via -r cibuildwheel/resources/constraints.in distlib==0.3.6 # via virtualenv -filelock==3.10.0 +filelock==3.10.6 # via virtualenv packaging==23.0 # via delocate -platformdirs==3.1.1 +platformdirs==3.2.0 # via virtualenv typing-extensions==4.5.0 # via delocate diff --git a/cibuildwheel/resources/constraints.txt b/cibuildwheel/resources/constraints.txt index 6875cb07..e464d26c 100644 --- a/cibuildwheel/resources/constraints.txt +++ b/cibuildwheel/resources/constraints.txt @@ -8,11 +8,11 @@ delocate==0.10.4 # via -r cibuildwheel/resources/constraints.in distlib==0.3.6 # via virtualenv -filelock==3.10.0 +filelock==3.10.6 # via virtualenv packaging==23.0 # via delocate -platformdirs==3.1.1 +platformdirs==3.2.0 # via virtualenv typing-extensions==4.5.0 # via delocate diff --git a/cibuildwheel/resources/pinned_docker_images.cfg b/cibuildwheel/resources/pinned_docker_images.cfg index 0266fce9..62955657 100644 --- a/cibuildwheel/resources/pinned_docker_images.cfg +++ b/cibuildwheel/resources/pinned_docker_images.cfg @@ -1,49 +1,49 @@ [x86_64] -manylinux1 = quay.io/pypa/manylinux1_x86_64:2023-03-12-1a7f2c6 +manylinux1 = quay.io/pypa/manylinux1_x86_64:2023-03-20-322221b manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-03-20-098e33d +manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-03-26-14247e5 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-03-20-098e33d -musllinux_1_1 = quay.io/pypa/musllinux_1_1_x86_64:2023-03-20-098e33d +manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2023-03-26-14247e5 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_x86_64:2023-03-26-14247e5 [i686] -manylinux1 = quay.io/pypa/manylinux1_i686:2023-03-12-1a7f2c6 +manylinux1 = quay.io/pypa/manylinux1_i686:2023-03-26-164c969 manylinux2010 = quay.io/pypa/manylinux2010_i686:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-03-20-098e33d +manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-03-26-14247e5 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-03-20-098e33d +musllinux_1_1 = quay.io/pypa/musllinux_1_1_i686:2023-03-26-14247e5 [pypy_x86_64] manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-03-20-098e33d +manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-03-26-14247e5 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-03-20-098e33d +manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2023-03-26-14247e5 [pypy_i686] manylinux2010 = quay.io/pypa/manylinux2010_i686:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-03-20-098e33d +manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-03-26-14247e5 manylinux_2_24 = quay.io/pypa/manylinux_2_24_i686:2022-12-26-0d38463 [aarch64] -manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-03-20-098e33d +manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-03-26-14247e5 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-03-20-098e33d -musllinux_1_1 = quay.io/pypa/musllinux_1_1_aarch64:2023-03-12-25fd859 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2023-03-26-14247e5 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_aarch64:2023-03-26-14247e5 [ppc64le] -manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2023-03-20-098e33d +manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2023-03-26-14247e5 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-03-20-098e33d -musllinux_1_1 = quay.io/pypa/musllinux_1_1_ppc64le:2023-03-12-25fd859 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_ppc64le:2023-03-26-14247e5 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_ppc64le:2023-03-26-14247e5 [s390x] -manylinux2014 = quay.io/pypa/manylinux2014_s390x:2023-03-20-098e33d +manylinux2014 = quay.io/pypa/manylinux2014_s390x:2023-03-26-14247e5 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-03-20-098e33d -musllinux_1_1 = quay.io/pypa/musllinux_1_1_s390x:2023-03-12-25fd859 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_s390x:2023-03-26-14247e5 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_s390x:2023-03-26-14247e5 [pypy_aarch64] -manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-03-20-098e33d +manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-03-26-14247e5 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-03-20-098e33d +manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2023-03-26-14247e5 diff --git a/docs/working-examples.md b/docs/working-examples.md index 94f0f7a4..a2494955 100644 --- a/docs/working-examples.md +++ b/docs/working-examples.md @@ -19,14 +19,14 @@ title: Working examples | [MyPy][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | The compiled version of MyPy using MyPyC. | | [pydantic][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Data validation using Python type hints | | [MemRay][] | ![github icon][] | ![linux icon][] | Memray is a memory profiler for Python | +| [duckdb][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | DuckDB is an in-process SQL OLAP Database Management System | | [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 | -| [duckdb][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | DuckDB is an in-process SQL OLAP Database Management System | | [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. | -| [asyncpg][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | A fast PostgreSQL Database Client Library for Python/asyncio. | | [Triton][] | ![github icon][] | ![linux icon][] | Self hosted runners | +| [asyncpg][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | A fast PostgreSQL Database Client Library for Python/asyncio. | | [PyGame][] | ![github icon][] | ![apple icon][] ![linux icon][] | 🐍🎮 pygame (the library) is a Free and Open Source python programming language library for making multimedia applications like games built on top of the excellent SDL library. C, Python, Native, OpenGL. | | [cmake][] | ![github icon][] ![travisci icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Multitagged binary builds for all supported platforms, using cibw 2 config configuration. | | [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. | @@ -37,8 +37,8 @@ title: Working examples | [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. | -| [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. | | [aiortc][] | ![github icon][] | ![apple icon][] ![linux icon][] | WebRTC and ORTC implementation for Python using asyncio. | +| [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 | @@ -96,8 +96,8 @@ title: Working examples | [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. | | [Arbor][] | ![github icon][] | ![apple icon][] ![linux icon][] | Arbor is a multi-compartment neuron simulation library; compatible with next-generation accelerators; best-practices applied to research software; focused on community-driven development. Includes a [small script](https://github.com/arbor-sim/arbor/blob/master/scripts/patchwheel.py) patching `rpath` in bundled libraries. | | [fathon][] | ![travisci icon][] | ![apple icon][] ![linux icon][] | python package for DFA (Detrended Fluctuation Analysis) and related algorithms | -| [polaroid][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Full range of wheels for setuptools rust, with auto release and PyPI deploy. | | [Imagecodecs (fork)][] | ![azurepipelines icon][] | ![apple icon][] ![linux icon][] | Over 20 external dependencies in compiled libraries, custom docker image, `libomp`, `openblas` and `install_name_tool` for macOS. | +| [polaroid][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Full range of wheels for setuptools rust, with auto release and PyPI deploy. | | [power-grid-model][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Python/C++ library for distribution power system analysis | | [etebase-py][] | ![travisci icon][] | ![linux icon][] | Python bindings to a Rust library using `setuptools-rust`, and `sccache` for improved speed. | | [cf-units][] | ![github icon][] | ![apple icon][] ![linux icon][] | Units of measure as required by the Climate and Forecast (CF) Metadata Conventions | @@ -125,14 +125,14 @@ title: Working examples [MyPy]: https://github.com/mypyc/mypy_mypyc-wheels [pydantic]: https://github.com/samuelcolvin/pydantic [MemRay]: https://github.com/bloomberg/memray +[duckdb]: https://github.com/duckdb/duckdb [uvloop]: https://github.com/MagicStack/uvloop [psutil]: https://github.com/giampaolo/psutil -[duckdb]: https://github.com/duckdb/duckdb [vaex]: https://github.com/vaexio/vaex [Google Benchmark]: https://github.com/google/benchmark [Apache Beam]: https://github.com/apache/beam -[asyncpg]: https://github.com/MagicStack/asyncpg [Triton]: https://github.com/openai/triton +[asyncpg]: https://github.com/MagicStack/asyncpg [PyGame]: https://github.com/pygame/pygame [cmake]: https://github.com/scikit-build/cmake-python-distributions [scikit-image]: https://github.com/scikit-image/scikit-image @@ -143,8 +143,8 @@ title: Working examples [River]: https://github.com/online-ml/river [UltraJSON]: https://github.com/ultrajson/ultrajson [OpenSpiel]: https://github.com/deepmind/open_spiel -[pyzmq]: https://github.com/zeromq/pyzmq [aiortc]: https://github.com/aiortc/aiortc +[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 @@ -202,8 +202,8 @@ title: Working examples [pillow-heif]: https://github.com/bigcat88/pillow_heif [Arbor]: https://github.com/arbor-sim/arbor [fathon]: https://github.com/stfbnc/fathon -[polaroid]: https://github.com/daggy1234/polaroid [Imagecodecs (fork)]: https://github.com/czaki/imagecodecs_build +[polaroid]: https://github.com/daggy1234/polaroid [power-grid-model]: https://github.com/alliander-opensource/power-grid-model [etebase-py]: https://github.com/etesync/etebase-py [cf-units]: https://github.com/SciTools/cf-units From 6e4dfaefad9889384ed8bb3d31eb88446fb1e246 Mon Sep 17 00:00:00 2001 From: Joe Rickerby Date: Sat, 1 Apr 2023 10:54:13 +0100 Subject: [PATCH 21/96] add warning about `cd /d` in test-command I wouldn't normally document OS features/quirks in our documentation, but here, it wasn't the user that changed the working dir to another drive, it was cibuildwheel, so it seems fair to note some gotchas. --- docs/options.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/options.md b/docs/options.md index 257cd3bd..db99ffc3 100644 --- a/docs/options.md +++ b/docs/options.md @@ -1172,6 +1172,14 @@ The command is run in a shell, so you can write things like `cmd1 && cmd2`. Platform-specific environment variables are also available:
`CIBW_TEST_COMMAND_MACOS` | `CIBW_TEST_COMMAND_WINDOWS` | `CIBW_TEST_COMMAND_LINUX` +!!! tip + + It's isn't recommended to `cd` to your project directory before running tests, + because Python might resolve `import yourpackage` relative to the working dir, + but we want to test the wheel you just built. However, if you're sure that's not + an issue for you and your workflow requires it, on Windows you should do `cd /d`, + because the CWD and project dir might be on different drives. + #### Examples !!! tab examples "Environment variables" From 93e1464e6a464cbf85332fd5169ed95fa688b536 Mon Sep 17 00:00:00 2001 From: Joe Rickerby Date: Sat, 1 Apr 2023 11:06:53 +0100 Subject: [PATCH 22/96] some changes after seeing how this renders --- docs/options.md | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/docs/options.md b/docs/options.md index db99ffc3..92371b04 100644 --- a/docs/options.md +++ b/docs/options.md @@ -1172,14 +1172,6 @@ The command is run in a shell, so you can write things like `cmd1 && cmd2`. Platform-specific environment variables are also available:
`CIBW_TEST_COMMAND_MACOS` | `CIBW_TEST_COMMAND_WINDOWS` | `CIBW_TEST_COMMAND_LINUX` -!!! tip - - It's isn't recommended to `cd` to your project directory before running tests, - because Python might resolve `import yourpackage` relative to the working dir, - but we want to test the wheel you just built. However, if you're sure that's not - an issue for you and your workflow requires it, on Windows you should do `cd /d`, - because the CWD and project dir might be on different drives. - #### Examples !!! tab examples "Environment variables" @@ -1222,6 +1214,13 @@ Platform-specific environment variables are also available:
In configuration files, you can use an array, and the items will be joined with `&&`. +!!! note + + It's isn't recommended to `cd` to your project directory before running tests, + because Python might resolve `import yourpackage` relative to the working dir, + and we want to test the wheel you just built. However, if you're sure that's not + an issue for you and your workflow requires it, on Windows you should do `cd /d`, + because the CWD and project dir might be on different drives. ### `CIBW_BEFORE_TEST` {: #before-test} > Execute a shell command before testing each wheel From 03ece1f81dcb456622b911734ccad8b892e614c6 Mon Sep 17 00:00:00 2001 From: "cibuildwheel-bot[bot]" <83877280+cibuildwheel-bot[bot]@users.noreply.github.com> Date: Mon, 3 Apr 2023 06:13:24 +0000 Subject: [PATCH 23/96] Update dependencies --- .../resources/constraints-python310.txt | 4 +- .../resources/constraints-python311.txt | 4 +- .../resources/constraints-python37.txt | 4 +- .../resources/constraints-python38.txt | 4 +- .../resources/constraints-python39.txt | 4 +- cibuildwheel/resources/constraints.txt | 4 +- .../resources/pinned_docker_images.cfg | 42 +++++++++---------- docs/working-examples.md | 4 +- 8 files changed, 35 insertions(+), 35 deletions(-) diff --git a/cibuildwheel/resources/constraints-python310.txt b/cibuildwheel/resources/constraints-python310.txt index 8e567b4c..c09c1600 100644 --- a/cibuildwheel/resources/constraints-python310.txt +++ b/cibuildwheel/resources/constraints-python310.txt @@ -8,7 +8,7 @@ delocate==0.10.4 # via -r cibuildwheel/resources/constraints.in distlib==0.3.6 # via virtualenv -filelock==3.10.6 +filelock==3.10.7 # via virtualenv packaging==23.0 # via delocate @@ -24,5 +24,5 @@ wheel==0.40.0 # The following packages are considered to be unsafe in a requirements file: pip==23.0.1 # via -r cibuildwheel/resources/constraints.in -setuptools==67.6.0 +setuptools==67.6.1 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python311.txt b/cibuildwheel/resources/constraints-python311.txt index e464d26c..1f8607b6 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.6 # via virtualenv -filelock==3.10.6 +filelock==3.10.7 # via virtualenv packaging==23.0 # via delocate @@ -24,5 +24,5 @@ wheel==0.40.0 # The following packages are considered to be unsafe in a requirements file: pip==23.0.1 # via -r cibuildwheel/resources/constraints.in -setuptools==67.6.0 +setuptools==67.6.1 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python37.txt b/cibuildwheel/resources/constraints-python37.txt index ee7bf6c9..53670e72 100644 --- a/cibuildwheel/resources/constraints-python37.txt +++ b/cibuildwheel/resources/constraints-python37.txt @@ -8,7 +8,7 @@ delocate==0.10.4 # via -r cibuildwheel/resources/constraints.in distlib==0.3.6 # via virtualenv -filelock==3.10.6 +filelock==3.10.7 # via virtualenv importlib-metadata==6.1.0 # via virtualenv @@ -31,5 +31,5 @@ zipp==3.15.0 # The following packages are considered to be unsafe in a requirements file: pip==23.0.1 # via -r cibuildwheel/resources/constraints.in -setuptools==67.6.0 +setuptools==67.6.1 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python38.txt b/cibuildwheel/resources/constraints-python38.txt index f9d3a8e5..ae62ce36 100644 --- a/cibuildwheel/resources/constraints-python38.txt +++ b/cibuildwheel/resources/constraints-python38.txt @@ -8,7 +8,7 @@ delocate==0.10.4 # via -r cibuildwheel/resources/constraints.in distlib==0.3.6 # via virtualenv -filelock==3.10.6 +filelock==3.10.7 # via virtualenv packaging==23.0 # via delocate @@ -24,5 +24,5 @@ wheel==0.40.0 # The following packages are considered to be unsafe in a requirements file: pip==23.0.1 # via -r cibuildwheel/resources/constraints.in -setuptools==67.6.0 +setuptools==67.6.1 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python39.txt b/cibuildwheel/resources/constraints-python39.txt index 21572ebe..5f876e42 100644 --- a/cibuildwheel/resources/constraints-python39.txt +++ b/cibuildwheel/resources/constraints-python39.txt @@ -8,7 +8,7 @@ delocate==0.10.4 # via -r cibuildwheel/resources/constraints.in distlib==0.3.6 # via virtualenv -filelock==3.10.6 +filelock==3.10.7 # via virtualenv packaging==23.0 # via delocate @@ -24,5 +24,5 @@ wheel==0.40.0 # The following packages are considered to be unsafe in a requirements file: pip==23.0.1 # via -r cibuildwheel/resources/constraints.in -setuptools==67.6.0 +setuptools==67.6.1 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints.txt b/cibuildwheel/resources/constraints.txt index e464d26c..1f8607b6 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.6 # via virtualenv -filelock==3.10.6 +filelock==3.10.7 # via virtualenv packaging==23.0 # via delocate @@ -24,5 +24,5 @@ wheel==0.40.0 # The following packages are considered to be unsafe in a requirements file: pip==23.0.1 # via -r cibuildwheel/resources/constraints.in -setuptools==67.6.0 +setuptools==67.6.1 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/pinned_docker_images.cfg b/cibuildwheel/resources/pinned_docker_images.cfg index 62955657..5d13439b 100644 --- a/cibuildwheel/resources/pinned_docker_images.cfg +++ b/cibuildwheel/resources/pinned_docker_images.cfg @@ -1,49 +1,49 @@ [x86_64] -manylinux1 = quay.io/pypa/manylinux1_x86_64:2023-03-20-322221b +manylinux1 = quay.io/pypa/manylinux1_x86_64:2023-04-02-a4fcaba manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-03-26-14247e5 +manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-04-02-7bc2fc8 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-03-26-14247e5 -musllinux_1_1 = quay.io/pypa/musllinux_1_1_x86_64:2023-03-26-14247e5 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2023-04-02-7bc2fc8 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_x86_64:2023-04-02-7bc2fc8 [i686] -manylinux1 = quay.io/pypa/manylinux1_i686:2023-03-26-164c969 +manylinux1 = quay.io/pypa/manylinux1_i686:2023-04-02-a4fcaba manylinux2010 = quay.io/pypa/manylinux2010_i686:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-03-26-14247e5 +manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-04-02-7bc2fc8 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-03-26-14247e5 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_i686:2023-04-02-7bc2fc8 [pypy_x86_64] manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-03-26-14247e5 +manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-04-02-7bc2fc8 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-03-26-14247e5 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2023-04-02-7bc2fc8 [pypy_i686] manylinux2010 = quay.io/pypa/manylinux2010_i686:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-03-26-14247e5 +manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-04-02-7bc2fc8 manylinux_2_24 = quay.io/pypa/manylinux_2_24_i686:2022-12-26-0d38463 [aarch64] -manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-03-26-14247e5 +manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-04-02-7bc2fc8 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-03-26-14247e5 -musllinux_1_1 = quay.io/pypa/musllinux_1_1_aarch64:2023-03-26-14247e5 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2023-04-02-7bc2fc8 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_aarch64:2023-04-02-7bc2fc8 [ppc64le] -manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2023-03-26-14247e5 +manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2023-04-02-7bc2fc8 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-03-26-14247e5 -musllinux_1_1 = quay.io/pypa/musllinux_1_1_ppc64le:2023-03-26-14247e5 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_ppc64le:2023-04-02-7bc2fc8 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_ppc64le:2023-04-02-7bc2fc8 [s390x] -manylinux2014 = quay.io/pypa/manylinux2014_s390x:2023-03-26-14247e5 +manylinux2014 = quay.io/pypa/manylinux2014_s390x:2023-04-02-7bc2fc8 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-03-26-14247e5 -musllinux_1_1 = quay.io/pypa/musllinux_1_1_s390x:2023-03-26-14247e5 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_s390x:2023-04-02-7bc2fc8 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_s390x:2023-04-02-7bc2fc8 [pypy_aarch64] -manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-03-26-14247e5 +manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-04-02-7bc2fc8 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-03-26-14247e5 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2023-04-02-7bc2fc8 diff --git a/docs/working-examples.md b/docs/working-examples.md index a2494955..ce3ee1f1 100644 --- a/docs/working-examples.md +++ b/docs/working-examples.md @@ -65,8 +65,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) | | [google neuroglancer][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | WebGL-based viewer for volumetric data | | [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 | | [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. | +| [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 ¶ | | [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. | @@ -171,8 +171,8 @@ title: Working examples [DeepForest]: https://github.com/LAMDA-NJU/Deep-Forest [google neuroglancer]: https://github.com/google/neuroglancer [AutoPy]: https://github.com/autopilot-rs/autopy -[H3-py]: https://github.com/uber/h3-py [CTranslate2]: https://github.com/OpenNMT/CTranslate2 +[H3-py]: https://github.com/uber/h3-py [Rtree]: https://github.com/Toblerity/rtree [markupsafe]: https://github.com/pallets/markupsafe [Picologging]: https://github.com/microsoft/picologging From 7106da2c6b71aee0f683e74314af547b30ab5bea Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Apr 2023 13:57:34 +0000 Subject: [PATCH 24/96] build(deps): bump pypa/gh-action-pypi-publish from 1.8.1 to 1.8.4 Bumps [pypa/gh-action-pypi-publish](https://github.com/pypa/gh-action-pypi-publish) from 1.8.1 to 1.8.4. - [Release notes](https://github.com/pypa/gh-action-pypi-publish/releases) - [Commits](https://github.com/pypa/gh-action-pypi-publish/compare/v1.8.1...v1.8.4) --- updated-dependencies: - dependency-name: pypa/gh-action-pypi-publish dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9decc0c0..8d04df36 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -34,7 +34,7 @@ jobs: name: artifact path: dist - - uses: pypa/gh-action-pypi-publish@v1.8.1 + - uses: pypa/gh-action-pypi-publish@v1.8.4 with: user: __token__ password: ${{ secrets.pypi_password }} From 2d89ecc140183ac2cd3993d1d2e51ef9bce5a465 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 3 Apr 2023 23:10:41 +0000 Subject: [PATCH 25/96] [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.1.0 → 23.3.0](https://github.com/psf/black/compare/23.1.0...23.3.0) - [github.com/charliermarsh/ruff-pre-commit: v0.0.259 → v0.0.260](https://github.com/charliermarsh/ruff-pre-commit/compare/v0.0.259...v0.0.260) --- .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 11a967c7..afe33c4f 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 - rev: 23.1.0 + rev: 23.3.0 hooks: - id: black - repo: https://github.com/charliermarsh/ruff-pre-commit - rev: v0.0.259 + rev: v0.0.260 hooks: - id: ruff args: ["--fix"] From bd5294b3f31ac600510b873943c34cd5569d77db Mon Sep 17 00:00:00 2001 From: Henry Schreiner Date: Tue, 4 Apr 2023 14:55:51 -0700 Subject: [PATCH 26/96] tests: use uppercase envvar on Windows (#1455) Signed-off-by: Henry Schreiner --- test/test_windows.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/test_windows.py b/test/test_windows.py index bbd1aa0a..43be80b5 100644 --- a/test/test_windows.py +++ b/test/test_windows.py @@ -12,9 +12,9 @@ basic_project = test_projects.new_c_project() def skip_if_no_msvc(arm64=False): - programfiles = os.getenv("ProgramFiles(x86)", "") or os.getenv("ProgramFiles", "") + programfiles = os.getenv("PROGRAMFILES(X86)", "") or os.getenv("PROGRAMFILES", "") if not programfiles: - pytest.skip("Requires %ProgramFiles(x86)% variable to be set") + pytest.skip("Requires %PROGRAMFILES(X86)% variable to be set") vswhere = os.path.join(programfiles, "Microsoft Visual Studio", "Installer", "vswhere.exe") if not os.path.isfile(vswhere): From d018570bc4bdc792a1c7ba1e720d118686fa145b Mon Sep 17 00:00:00 2001 From: Hood Chatham Date: Thu, 6 Apr 2023 11:40:25 -0700 Subject: [PATCH 27/96] chore: add structurally typed GenericPythonConfiguration (#1458) * Add structually typed GenericPythonConfiguration Use structural typing for the return value of get_python_configurations so that we don't have to specify a union of all possible PythonConfiguration types * address henryiii's comments * Use Set in more places --- cibuildwheel/__main__.py | 16 +++++++++------- cibuildwheel/linux.py | 3 ++- cibuildwheel/macos.py | 3 ++- cibuildwheel/typing.py | 6 ++++++ cibuildwheel/windows.py | 3 ++- 5 files changed, 21 insertions(+), 10 deletions(-) diff --git a/cibuildwheel/__main__.py b/cibuildwheel/__main__.py index 1ff447aa..700535fe 100644 --- a/cibuildwheel/__main__.py +++ b/cibuildwheel/__main__.py @@ -7,6 +7,7 @@ import sys import tarfile import textwrap import typing +from collections.abc import Sequence, Set from pathlib import Path from tempfile import mkdtemp @@ -18,7 +19,12 @@ import cibuildwheel.windows from cibuildwheel.architecture import Architecture, allowed_architectures_check from cibuildwheel.logger import log from cibuildwheel.options import CommandLineArguments, Options, compute_options -from cibuildwheel.typing import PLATFORMS, PlatformName, assert_never +from cibuildwheel.typing import ( + PLATFORMS, + GenericPythonConfiguration, + PlatformName, + assert_never, +) from cibuildwheel.util import ( CIBW_CACHE_PATH, BuildSelector, @@ -339,13 +345,9 @@ def print_preamble(platform: str, options: Options, identifiers: list[str]) -> N def get_build_identifiers( - platform: PlatformName, build_selector: BuildSelector, architectures: set[Architecture] + platform: PlatformName, build_selector: BuildSelector, architectures: Set[Architecture] ) -> list[str]: - python_configurations: ( - list[cibuildwheel.linux.PythonConfiguration] - | list[cibuildwheel.windows.PythonConfiguration] - | list[cibuildwheel.macos.PythonConfiguration] - ) + python_configurations: Sequence[GenericPythonConfiguration] if platform == "linux": python_configurations = cibuildwheel.linux.get_python_configurations( diff --git a/cibuildwheel/linux.py b/cibuildwheel/linux.py index f5d8710e..1a1f7103 100644 --- a/cibuildwheel/linux.py +++ b/cibuildwheel/linux.py @@ -3,6 +3,7 @@ from __future__ import annotations import subprocess import sys import textwrap +from collections.abc import Set from dataclasses import dataclass from pathlib import Path, PurePath, PurePosixPath from typing import Iterator, Tuple @@ -46,7 +47,7 @@ class BuildStep: def get_python_configurations( build_selector: BuildSelector, - architectures: set[Architecture], + architectures: Set[Architecture], ) -> list[PythonConfiguration]: full_python_configs = read_python_configs("linux") diff --git a/cibuildwheel/macos.py b/cibuildwheel/macos.py index 3bb1324d..6047b1ee 100644 --- a/cibuildwheel/macos.py +++ b/cibuildwheel/macos.py @@ -8,6 +8,7 @@ import re import shutil import subprocess import sys +from collections.abc import Set from dataclasses import dataclass from pathlib import Path from typing import Sequence, Tuple, cast @@ -69,7 +70,7 @@ class PythonConfiguration: def get_python_configurations( - build_selector: BuildSelector, architectures: set[Architecture] + build_selector: BuildSelector, architectures: Set[Architecture] ) -> list[PythonConfiguration]: full_python_configs = read_python_configs("macos") diff --git a/cibuildwheel/typing.py b/cibuildwheel/typing.py index 6c8fe9fc..9374401c 100644 --- a/cibuildwheel/typing.py +++ b/cibuildwheel/typing.py @@ -42,3 +42,9 @@ else: PlatformName = Literal["linux", "macos", "windows"] PLATFORMS: Final[set[PlatformName]] = {"linux", "macos", "windows"} + + +class GenericPythonConfiguration(Protocol): + @property + def identifier(self) -> str: + ... diff --git a/cibuildwheel/windows.py b/cibuildwheel/windows.py index cb83a324..e0f16d81 100644 --- a/cibuildwheel/windows.py +++ b/cibuildwheel/windows.py @@ -6,6 +6,7 @@ import shutil import subprocess import sys import textwrap +from collections.abc import Set from dataclasses import dataclass from functools import lru_cache from pathlib import Path @@ -71,7 +72,7 @@ class PythonConfiguration: def get_python_configurations( build_selector: BuildSelector, - architectures: set[Architecture], + architectures: Set[Architecture], ) -> list[PythonConfiguration]: full_python_configs = read_python_configs("windows") From 2f3949953a57e8c641b54e82dcac4f355fbae741 Mon Sep 17 00:00:00 2001 From: Hood Chatham Date: Fri, 7 Apr 2023 13:19:47 -0700 Subject: [PATCH 28/96] chore: factor out _compute_platform from build_in_directory build_in_directory was ~140 lines long which is a bit long for my taste. It also has a bunch of nested if statements which I don't prefer. The first ~60 lines are computing the platform, so I factored those out into helper methods which have clearer intent and less indentation. --- cibuildwheel/__main__.py | 126 +++++++++++++++++++++------------------ 1 file changed, 68 insertions(+), 58 deletions(-) diff --git a/cibuildwheel/__main__.py b/cibuildwheel/__main__.py index 700535fe..f264866e 100644 --- a/cibuildwheel/__main__.py +++ b/cibuildwheel/__main__.py @@ -173,70 +173,80 @@ def main() -> None: log.warning(f"Can't delete temporary folder '{temp_dir}'") -def build_in_directory(args: CommandLineArguments) -> None: +def _compute_platform_only(only: str) -> str: + if "linux_" in only: + return "linux" + if "macosx_" in only: + return "macos" + if "win_" in only or "win32" in only: + return "windows" + print( + f"Invalid --only='{only}', must be a build selector with a known platform", + file=sys.stderr, + ) + sys.exit(2) + + +def _compute_platform_ci() -> str: + if detect_ci_provider() is None: + print( + textwrap.dedent( + """ + cibuildwheel: Unable to detect platform. cibuildwheel should run on your CI server; + Travis CI, AppVeyor, Azure Pipelines, GitHub Actions, CircleCI, Gitlab, and Cirrus CI + are supported. You can run on your development machine or other CI providers + using the --platform argument. Check --help output for more information. + """ + ), + file=sys.stderr, + ) + sys.exit(2) + if sys.platform.startswith("linux"): + return "linux" + if sys.platform == "darwin": + return "macos" + elif sys.platform == "win32": + return "windows" + print( + 'cibuildwheel: Unable to detect platform from "sys.platform" in a CI environment. You can run ' + "cibuildwheel using the --platform argument. Check --help output for more information.", + file=sys.stderr, + ) + sys.exit(2) + + +def _compute_platform(args: CommandLineArguments) -> PlatformName: platform_option_value = args.platform or os.environ.get("CIBW_PLATFORM", "auto") - platform: PlatformName + + if args.only and args.platform is not None: + print( + "--platform cannot be specified with --only, it is computed from --only", + file=sys.stderr, + ) + sys.exit(2) + if args.only and args.archs is not None: + print( + "--arch cannot be specified with --only, it is computed from --only", + file=sys.stderr, + ) + sys.exit(2) + + if platform_option_value not in PLATFORMS | {"auto"}: + print(f"cibuildwheel: Unsupported platform: {platform_option_value}", file=sys.stderr) + sys.exit(2) + if args.only: - if "linux_" in args.only: - platform = "linux" - elif "macosx_" in args.only: - platform = "macos" - elif "win_" in args.only or "win32" in args.only: - platform = "windows" - else: - print( - f"Invalid --only='{args.only}', must be a build selector with a known platform", - file=sys.stderr, - ) - sys.exit(2) - if args.platform is not None: - print( - "--platform cannot be specified with --only, it is computed from --only", - file=sys.stderr, - ) - sys.exit(2) - if args.archs is not None: - print( - "--arch cannot be specified with --only, it is computed from --only", - file=sys.stderr, - ) - sys.exit(2) + return _compute_platform_only(args.only) elif platform_option_value != "auto": - if platform_option_value not in PLATFORMS: - print(f"cibuildwheel: Unsupported platform: {platform_option_value}", file=sys.stderr) - sys.exit(2) + return typing.cast(PlatformName, platform_option_value) + + return _compute_platform_ci() - platform = typing.cast(PlatformName, platform_option_value) - else: - ci_provider = detect_ci_provider() - if ci_provider is None: - print( - textwrap.dedent( - """ - cibuildwheel: Unable to detect platform. cibuildwheel should run on your CI server; - Travis CI, AppVeyor, Azure Pipelines, GitHub Actions, CircleCI, Gitlab, and Cirrus CI - are supported. You can run on your development machine or other CI providers - using the --platform argument. Check --help output for more information. - """ - ), - file=sys.stderr, - ) - sys.exit(2) - if sys.platform.startswith("linux"): - platform = "linux" - elif sys.platform == "darwin": - platform = "macos" - elif sys.platform == "win32": - platform = "windows" - else: - print( - 'cibuildwheel: Unable to detect platform from "sys.platform" in a CI environment. You can run ' - "cibuildwheel using the --platform argument. Check --help output for more information.", - file=sys.stderr, - ) - sys.exit(2) + +def build_in_directory(args: CommandLineArguments) -> None: + platform: PlatformName = _compute_platform(args) options = compute_options(platform=platform, command_line_arguments=args, env=os.environ) package_dir = options.globals.package_dir From 0036ac5254323681edb9254d1d9ac5f100ae0253 Mon Sep 17 00:00:00 2001 From: Hood Chatham Date: Fri, 7 Apr 2023 13:56:49 -0700 Subject: [PATCH 29/96] Fix lints --- cibuildwheel/__main__.py | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/cibuildwheel/__main__.py b/cibuildwheel/__main__.py index f264866e..7ae2057f 100644 --- a/cibuildwheel/__main__.py +++ b/cibuildwheel/__main__.py @@ -173,7 +173,7 @@ def main() -> None: log.warning(f"Can't delete temporary folder '{temp_dir}'") -def _compute_platform_only(only: str) -> str: +def _compute_platform_only(only: str) -> PlatformName: if "linux_" in only: return "linux" if "macosx_" in only: @@ -187,7 +187,7 @@ def _compute_platform_only(only: str) -> str: sys.exit(2) -def _compute_platform_ci() -> str: +def _compute_platform_ci() -> PlatformName: if detect_ci_provider() is None: print( textwrap.dedent( @@ -203,16 +203,17 @@ def _compute_platform_ci() -> str: sys.exit(2) if sys.platform.startswith("linux"): return "linux" - if sys.platform == "darwin": + elif sys.platform == "darwin": return "macos" elif sys.platform == "win32": return "windows" - print( - 'cibuildwheel: Unable to detect platform from "sys.platform" in a CI environment. You can run ' - "cibuildwheel using the --platform argument. Check --help output for more information.", - file=sys.stderr, - ) - sys.exit(2) + else: + print( + 'cibuildwheel: Unable to detect platform from "sys.platform" in a CI environment. You can run ' + "cibuildwheel using the --platform argument. Check --help output for more information.", + file=sys.stderr, + ) + sys.exit(2) def _compute_platform(args: CommandLineArguments) -> PlatformName: @@ -235,14 +236,12 @@ def _compute_platform(args: CommandLineArguments) -> PlatformName: print(f"cibuildwheel: Unsupported platform: {platform_option_value}", file=sys.stderr) sys.exit(2) - if args.only: return _compute_platform_only(args.only) elif platform_option_value != "auto": return typing.cast(PlatformName, platform_option_value) - - return _compute_platform_ci() + return _compute_platform_ci() def build_in_directory(args: CommandLineArguments) -> None: From 8a307031a92354d3432c5d508b50fd4270a36ae7 Mon Sep 17 00:00:00 2001 From: Hood Chatham Date: Fri, 7 Apr 2023 15:51:12 -0700 Subject: [PATCH 30/96] Set the defualt build_frontend to be "default" (which is still "pip") Instead of using pip as the default, set it to default. This way each platform can choose independently what to do as the default behavior. This is intended as part of adding Pyodide support. Pyodide cannot use pip as the build frontend. It always uses a modified pypa/build. So if the build_frontend is explicitly set to pip we want to raise an error. But if it's unset, then we should be able to tell and just do what we want. --- cibuildwheel/linux.py | 12 ++++++------ cibuildwheel/macos.py | 14 +++++++------- cibuildwheel/options.py | 6 ++++-- cibuildwheel/resources/defaults.toml | 2 +- cibuildwheel/util.py | 9 +++++++++ cibuildwheel/windows.py | 14 +++++++------- 6 files changed, 34 insertions(+), 23 deletions(-) diff --git a/cibuildwheel/linux.py b/cibuildwheel/linux.py index 1a1f7103..43777126 100644 --- a/cibuildwheel/linux.py +++ b/cibuildwheel/linux.py @@ -17,6 +17,7 @@ from .util import ( AlreadyBuiltWheelError, BuildSelector, NonPlatformWheelError, + build_frontend_or_default, find_compatible_wheel, get_build_verbosity_extra_flags, prepare_command, @@ -175,6 +176,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, "pip") dependency_constraint_flags: list[PathOrStr] = [] @@ -241,11 +243,9 @@ def build_in_container( container.call(["mkdir", "-p", built_wheel_dir]) verbosity_flags = get_build_verbosity_extra_flags(build_options.build_verbosity) - extra_flags = split_config_settings( - build_options.config_settings, build_options.build_frontend - ) + extra_flags = split_config_settings(build_options.config_settings, build_frontend) - if build_options.build_frontend == "pip": + if build_frontend == "pip": extra_flags += verbosity_flags container.call( [ @@ -260,7 +260,7 @@ def build_in_container( ], env=env, ) - elif build_options.build_frontend == "build": + elif build_frontend == "build": verbosity_setting = " ".join(verbosity_flags) extra_flags += (f"--config-setting={verbosity_setting}",) container.call( @@ -276,7 +276,7 @@ def build_in_container( env=env, ) else: - assert_never(build_options.build_frontend) + assert_never(build_frontend) built_wheel = container.glob(built_wheel_dir, "*.whl")[0] diff --git a/cibuildwheel/macos.py b/cibuildwheel/macos.py index 6047b1ee..719a0317 100644 --- a/cibuildwheel/macos.py +++ b/cibuildwheel/macos.py @@ -26,6 +26,7 @@ from .util import ( BuildFrontend, BuildSelector, NonPlatformWheelError, + build_frontend_or_default, call, detect_ci_provider, download, @@ -331,6 +332,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, "pip") log.build_start(config.identifier) identifier_tmp_dir = tmp_path / config.identifier @@ -353,7 +355,7 @@ def build(options: Options, tmp_path: Path) -> None: config, dependency_constraint_flags, build_options.environment, - build_options.build_frontend, + build_frontend, ) compatible_wheel = find_compatible_wheel(built_wheels, config.identifier) @@ -375,11 +377,9 @@ def build(options: Options, tmp_path: Path) -> None: built_wheel_dir.mkdir() verbosity_flags = get_build_verbosity_extra_flags(build_options.build_verbosity) - extra_flags = split_config_settings( - build_options.config_settings, build_options.build_frontend - ) + extra_flags = split_config_settings(build_options.config_settings, build_frontend) - if build_options.build_frontend == "pip": + if build_frontend == "pip": extra_flags += verbosity_flags # Path.resolve() is needed. Without it pip wheel may try to fetch package from pypi.org # see https://github.com/pypa/cibuildwheel/pull/369 @@ -394,7 +394,7 @@ def build(options: Options, tmp_path: Path) -> None: *extra_flags, env=env, ) - elif build_options.build_frontend == "build": + elif build_frontend == "build": verbosity_setting = " ".join(verbosity_flags) extra_flags += (f"--config-setting={verbosity_setting}",) build_env = env.copy() @@ -417,7 +417,7 @@ def build(options: Options, tmp_path: Path) -> None: env=build_env, ) else: - assert_never(build_options.build_frontend) + assert_never(build_frontend) built_wheel = next(built_wheel_dir.glob("*.whl")) diff --git a/cibuildwheel/options.py b/cibuildwheel/options.py index 9380077e..3469dce8 100644 --- a/cibuildwheel/options.py +++ b/cibuildwheel/options.py @@ -94,7 +94,7 @@ class BuildOptions: test_requires: list[str] test_extras: str build_verbosity: int - build_frontend: BuildFrontend + build_frontend: BuildFrontend | Literal["default"] config_settings: str @property @@ -499,11 +499,13 @@ class Options: test_extras = self.reader.get("test-extras", sep=",") build_verbosity_str = self.reader.get("build-verbosity") - build_frontend: BuildFrontend + 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" else: msg = f"cibuildwheel: Unrecognised build frontend {build_frontend_str!r}, only 'pip' and 'build' are supported" print(msg, file=sys.stderr) diff --git a/cibuildwheel/resources/defaults.toml b/cibuildwheel/resources/defaults.toml index d16a3147..40b42f6e 100644 --- a/cibuildwheel/resources/defaults.toml +++ b/cibuildwheel/resources/defaults.toml @@ -4,7 +4,7 @@ skip = "" test-skip = "" archs = ["auto"] -build-frontend = "pip" +build-frontend = "default" config-settings = {} dependency-versions = "pinned" environment = {} diff --git a/cibuildwheel/util.py b/cibuildwheel/util.py index 72cff326..3d4e7ff5 100644 --- a/cibuildwheel/util.py +++ b/cibuildwheel/util.py @@ -71,6 +71,15 @@ 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 +) -> BuildFrontend: + if setting == "default": + return default + return setting + + MANYLINUX_ARCHS: Final[tuple[str, ...]] = ( "x86_64", "i686", diff --git a/cibuildwheel/windows.py b/cibuildwheel/windows.py index e0f16d81..38106925 100644 --- a/cibuildwheel/windows.py +++ b/cibuildwheel/windows.py @@ -27,6 +27,7 @@ from .util import ( BuildFrontend, BuildSelector, NonPlatformWheelError, + build_frontend_or_default, call, download, find_compatible_wheel, @@ -367,6 +368,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, "pip") log.build_start(config.identifier) identifier_tmp_dir = tmp_path / config.identifier @@ -387,7 +389,7 @@ def build(options: Options, tmp_path: Path) -> None: config, dependency_constraint_flags, build_options.environment, - build_options.build_frontend, + build_frontend, ) compatible_wheel = find_compatible_wheel(built_wheels, config.identifier) @@ -412,11 +414,9 @@ def build(options: Options, tmp_path: Path) -> None: built_wheel_dir.mkdir() verbosity_flags = get_build_verbosity_extra_flags(build_options.build_verbosity) - extra_flags = split_config_settings( - build_options.config_settings, build_options.build_frontend - ) + extra_flags = split_config_settings(build_options.config_settings, build_frontend) - if build_options.build_frontend == "pip": + if build_frontend == "pip": extra_flags += verbosity_flags # 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 +431,7 @@ def build(options: Options, tmp_path: Path) -> None: *extra_flags, env=env, ) - elif build_options.build_frontend == "build": + elif build_frontend == "build": verbosity_setting = " ".join(verbosity_flags) extra_flags += (f"--config-setting={verbosity_setting}",) build_env = env.copy() @@ -464,7 +464,7 @@ def build(options: Options, tmp_path: Path) -> None: env=build_env, ) else: - assert_never(build_options.build_frontend) + assert_never(build_frontend) built_wheel = next(built_wheel_dir.glob("*.whl")) From 374d786812903f4f70e395a2be8f29f49a72708b Mon Sep 17 00:00:00 2001 From: Hood Chatham Date: Sat, 8 Apr 2023 18:26:09 -0700 Subject: [PATCH 31/96] Set pip as the default value of default --- cibuildwheel/linux.py | 2 +- cibuildwheel/macos.py | 2 +- cibuildwheel/util.py | 2 +- cibuildwheel/windows.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/cibuildwheel/linux.py b/cibuildwheel/linux.py index 43777126..8c584b20 100644 --- a/cibuildwheel/linux.py +++ b/cibuildwheel/linux.py @@ -176,7 +176,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, "pip") + build_frontend = build_frontend_or_default(build_options.build_frontend) dependency_constraint_flags: list[PathOrStr] = [] diff --git a/cibuildwheel/macos.py b/cibuildwheel/macos.py index 719a0317..3cf4ec53 100644 --- a/cibuildwheel/macos.py +++ b/cibuildwheel/macos.py @@ -332,7 +332,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, "pip") + build_frontend = build_frontend_or_default(build_options.build_frontend) log.build_start(config.identifier) identifier_tmp_dir = tmp_path / config.identifier diff --git a/cibuildwheel/util.py b/cibuildwheel/util.py index 3d4e7ff5..38622c70 100644 --- a/cibuildwheel/util.py +++ b/cibuildwheel/util.py @@ -73,7 +73,7 @@ BuildFrontend = Literal["pip", "build"] def build_frontend_or_default( - setting: BuildFrontend | Literal["default"], default: BuildFrontend + setting: BuildFrontend | Literal["default"], default: BuildFrontend = "pip" ) -> BuildFrontend: if setting == "default": return default diff --git a/cibuildwheel/windows.py b/cibuildwheel/windows.py index 38106925..08cab532 100644 --- a/cibuildwheel/windows.py +++ b/cibuildwheel/windows.py @@ -368,7 +368,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, "pip") + build_frontend = build_frontend_or_default(build_options.build_frontend) log.build_start(config.identifier) identifier_tmp_dir = tmp_path / config.identifier From c0873c9198fdfbe63374d1b6244ff26376bd5d08 Mon Sep 17 00:00:00 2001 From: "cibuildwheel-bot[bot]" <83877280+cibuildwheel-bot[bot]@users.noreply.github.com> Date: Mon, 10 Apr 2023 18:48:35 +0200 Subject: [PATCH 32/96] [Bot] Update dependencies (#1465) Update dependencies Co-authored-by: cibuildwheel-bot[bot] <83877280+cibuildwheel-bot[bot]@users.noreply.github.com> --- cibuildwheel/resources/build-platforms.toml | 24 ++++++------ .../resources/constraints-python310.txt | 2 +- .../resources/constraints-python311.txt | 2 +- .../resources/constraints-python37.txt | 4 +- .../resources/constraints-python38.txt | 2 +- .../resources/constraints-python39.txt | 2 +- cibuildwheel/resources/constraints.txt | 2 +- .../resources/pinned_docker_images.cfg | 38 +++++++++---------- 8 files changed, 38 insertions(+), 38 deletions(-) diff --git a/cibuildwheel/resources/build-platforms.toml b/cibuildwheel/resources/build-platforms.toml index 42441f20..77660634 100644 --- a/cibuildwheel/resources/build-platforms.toml +++ b/cibuildwheel/resources/build-platforms.toml @@ -81,12 +81,12 @@ python_configurations = [ { identifier = "cp39-macosx_x86_64", version = "3.9", url = "https://www.python.org/ftp/python/3.9.13/python-3.9.13-macos11.pkg" }, { identifier = "cp39-macosx_arm64", version = "3.9", url = "https://www.python.org/ftp/python/3.9.13/python-3.9.13-macos11.pkg" }, { identifier = "cp39-macosx_universal2", version = "3.9", url = "https://www.python.org/ftp/python/3.9.13/python-3.9.13-macos11.pkg" }, - { identifier = "cp310-macosx_x86_64", version = "3.10", url = "https://www.python.org/ftp/python/3.10.10/python-3.10.10-macos11.pkg" }, - { identifier = "cp310-macosx_arm64", version = "3.10", url = "https://www.python.org/ftp/python/3.10.10/python-3.10.10-macos11.pkg" }, - { identifier = "cp310-macosx_universal2", version = "3.10", url = "https://www.python.org/ftp/python/3.10.10/python-3.10.10-macos11.pkg" }, - { identifier = "cp311-macosx_x86_64", version = "3.11", url = "https://www.python.org/ftp/python/3.11.2/python-3.11.2-macos11.pkg" }, - { identifier = "cp311-macosx_arm64", version = "3.11", url = "https://www.python.org/ftp/python/3.11.2/python-3.11.2-macos11.pkg" }, - { identifier = "cp311-macosx_universal2", version = "3.11", url = "https://www.python.org/ftp/python/3.11.2/python-3.11.2-macos11.pkg" }, + { 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.3/python-3.11.3-macos11.pkg" }, + { identifier = "cp311-macosx_arm64", version = "3.11", url = "https://www.python.org/ftp/python/3.11.3/python-3.11.3-macos11.pkg" }, + { identifier = "cp311-macosx_universal2", version = "3.11", url = "https://www.python.org/ftp/python/3.11.3/python-3.11.3-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" }, @@ -104,13 +104,13 @@ python_configurations = [ { identifier = "cp38-win_amd64", version = "3.8.10", arch = "64" }, { identifier = "cp39-win32", version = "3.9.13", arch = "32" }, { identifier = "cp39-win_amd64", version = "3.9.13", arch = "64" }, - { identifier = "cp310-win32", version = "3.10.10", arch = "32" }, - { identifier = "cp310-win_amd64", version = "3.10.10", arch = "64" }, - { identifier = "cp311-win32", version = "3.11.2", arch = "32" }, - { identifier = "cp311-win_amd64", version = "3.11.2", 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.3", arch = "32" }, + { identifier = "cp311-win_amd64", version = "3.11.3", arch = "64" }, { identifier = "cp39-win_arm64", version = "3.9.10", arch = "ARM64" }, - { identifier = "cp310-win_arm64", version = "3.10.10", arch = "ARM64" }, - { identifier = "cp311-win_arm64", version = "3.11.2", arch = "ARM64" }, + { identifier = "cp310-win_arm64", version = "3.10.11", arch = "ARM64" }, + { identifier = "cp311-win_arm64", version = "3.11.3", 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.11-win64.zip" }, diff --git a/cibuildwheel/resources/constraints-python310.txt b/cibuildwheel/resources/constraints-python310.txt index c09c1600..e705b040 100644 --- a/cibuildwheel/resources/constraints-python310.txt +++ b/cibuildwheel/resources/constraints-python310.txt @@ -8,7 +8,7 @@ delocate==0.10.4 # via -r cibuildwheel/resources/constraints.in distlib==0.3.6 # via virtualenv -filelock==3.10.7 +filelock==3.11.0 # via virtualenv packaging==23.0 # via delocate diff --git a/cibuildwheel/resources/constraints-python311.txt b/cibuildwheel/resources/constraints-python311.txt index 1f8607b6..ca7ee56e 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.6 # via virtualenv -filelock==3.10.7 +filelock==3.11.0 # via virtualenv packaging==23.0 # via delocate diff --git a/cibuildwheel/resources/constraints-python37.txt b/cibuildwheel/resources/constraints-python37.txt index 53670e72..23b73e18 100644 --- a/cibuildwheel/resources/constraints-python37.txt +++ b/cibuildwheel/resources/constraints-python37.txt @@ -8,9 +8,9 @@ delocate==0.10.4 # via -r cibuildwheel/resources/constraints.in distlib==0.3.6 # via virtualenv -filelock==3.10.7 +filelock==3.11.0 # via virtualenv -importlib-metadata==6.1.0 +importlib-metadata==6.3.0 # via virtualenv packaging==23.0 # via delocate diff --git a/cibuildwheel/resources/constraints-python38.txt b/cibuildwheel/resources/constraints-python38.txt index ae62ce36..5c3589fb 100644 --- a/cibuildwheel/resources/constraints-python38.txt +++ b/cibuildwheel/resources/constraints-python38.txt @@ -8,7 +8,7 @@ delocate==0.10.4 # via -r cibuildwheel/resources/constraints.in distlib==0.3.6 # via virtualenv -filelock==3.10.7 +filelock==3.11.0 # via virtualenv packaging==23.0 # via delocate diff --git a/cibuildwheel/resources/constraints-python39.txt b/cibuildwheel/resources/constraints-python39.txt index 5f876e42..91db3968 100644 --- a/cibuildwheel/resources/constraints-python39.txt +++ b/cibuildwheel/resources/constraints-python39.txt @@ -8,7 +8,7 @@ delocate==0.10.4 # via -r cibuildwheel/resources/constraints.in distlib==0.3.6 # via virtualenv -filelock==3.10.7 +filelock==3.11.0 # via virtualenv packaging==23.0 # via delocate diff --git a/cibuildwheel/resources/constraints.txt b/cibuildwheel/resources/constraints.txt index 1f8607b6..ca7ee56e 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.6 # via virtualenv -filelock==3.10.7 +filelock==3.11.0 # via virtualenv packaging==23.0 # via delocate diff --git a/cibuildwheel/resources/pinned_docker_images.cfg b/cibuildwheel/resources/pinned_docker_images.cfg index 5d13439b..ac04bb17 100644 --- a/cibuildwheel/resources/pinned_docker_images.cfg +++ b/cibuildwheel/resources/pinned_docker_images.cfg @@ -1,49 +1,49 @@ [x86_64] manylinux1 = quay.io/pypa/manylinux1_x86_64:2023-04-02-a4fcaba manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-04-02-7bc2fc8 +manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-04-09-db9a92f 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-04-02-7bc2fc8 -musllinux_1_1 = quay.io/pypa/musllinux_1_1_x86_64:2023-04-02-7bc2fc8 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2023-04-09-db9a92f +musllinux_1_1 = quay.io/pypa/musllinux_1_1_x86_64:2023-04-09-db9a92f [i686] manylinux1 = quay.io/pypa/manylinux1_i686:2023-04-02-a4fcaba manylinux2010 = quay.io/pypa/manylinux2010_i686:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-04-02-7bc2fc8 +manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-04-09-db9a92f 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-04-02-7bc2fc8 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_i686:2023-04-09-db9a92f [pypy_x86_64] manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-04-02-7bc2fc8 +manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-04-09-db9a92f 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-04-02-7bc2fc8 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2023-04-09-db9a92f [pypy_i686] manylinux2010 = quay.io/pypa/manylinux2010_i686:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-04-02-7bc2fc8 +manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-04-09-db9a92f manylinux_2_24 = quay.io/pypa/manylinux_2_24_i686:2022-12-26-0d38463 [aarch64] -manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-04-02-7bc2fc8 +manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-04-09-db9a92f 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-04-02-7bc2fc8 -musllinux_1_1 = quay.io/pypa/musllinux_1_1_aarch64:2023-04-02-7bc2fc8 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2023-04-09-db9a92f +musllinux_1_1 = quay.io/pypa/musllinux_1_1_aarch64:2023-04-09-db9a92f [ppc64le] -manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2023-04-02-7bc2fc8 +manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2023-04-09-db9a92f 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-04-02-7bc2fc8 -musllinux_1_1 = quay.io/pypa/musllinux_1_1_ppc64le:2023-04-02-7bc2fc8 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_ppc64le:2023-04-09-db9a92f +musllinux_1_1 = quay.io/pypa/musllinux_1_1_ppc64le:2023-04-09-db9a92f [s390x] -manylinux2014 = quay.io/pypa/manylinux2014_s390x:2023-04-02-7bc2fc8 +manylinux2014 = quay.io/pypa/manylinux2014_s390x:2023-04-09-db9a92f 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-04-02-7bc2fc8 -musllinux_1_1 = quay.io/pypa/musllinux_1_1_s390x:2023-04-02-7bc2fc8 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_s390x:2023-04-09-db9a92f +musllinux_1_1 = quay.io/pypa/musllinux_1_1_s390x:2023-04-09-db9a92f [pypy_aarch64] -manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-04-02-7bc2fc8 +manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-04-09-db9a92f 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-04-02-7bc2fc8 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2023-04-09-db9a92f From e0a01d9986b245bb45dcaaffb650b53a19ee02fd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Apr 2023 18:49:01 +0200 Subject: [PATCH 33/96] build(deps): bump pypa/gh-action-pypi-publish from 1.8.4 to 1.8.5 (#1466) Bumps [pypa/gh-action-pypi-publish](https://github.com/pypa/gh-action-pypi-publish) from 1.8.4 to 1.8.5. - [Release notes](https://github.com/pypa/gh-action-pypi-publish/releases) - [Commits](https://github.com/pypa/gh-action-pypi-publish/compare/v1.8.4...v1.8.5) --- updated-dependencies: - dependency-name: pypa/gh-action-pypi-publish dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 8d04df36..f9732f35 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -34,7 +34,7 @@ jobs: name: artifact path: dist - - uses: pypa/gh-action-pypi-publish@v1.8.4 + - uses: pypa/gh-action-pypi-publish@v1.8.5 with: user: __token__ password: ${{ secrets.pypi_password }} From 3ed1b65b3e13550b7d252f456152ccab8910da92 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Apr 2023 18:53:08 +0200 Subject: [PATCH 34/96] build(deps): bump peter-evans/create-pull-request from 4 to 5 (#1467) Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 4 to 5. - [Release notes](https://github.com/peter-evans/create-pull-request/releases) - [Commits](https://github.com/peter-evans/create-pull-request/compare/v4...v5) --- updated-dependencies: - dependency-name: peter-evans/create-pull-request 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 414c460a..2d0beee5 100644 --- a/.github/workflows/update-dependencies.yml +++ b/.github/workflows/update-dependencies.yml @@ -44,7 +44,7 @@ jobs: - name: Create Pull Request if: github.ref == 'refs/heads/main' && github.repository == 'pypa/cibuildwheel' - uses: peter-evans/create-pull-request@v4 + uses: peter-evans/create-pull-request@v5 with: commit-message: Update dependencies title: '[Bot] Update dependencies' From 26dd3f399e67d4ef4d4eb17f9f0030dd632406a4 Mon Sep 17 00:00:00 2001 From: Hood Chatham Date: Fri, 7 Apr 2023 13:51:38 -0700 Subject: [PATCH 35/96] chore: Add a platform_interface type to export from each platform This avoids the repetition of the platform checks in __main__.py by defining a dataclass with `get_python_configurations` and `build`. --- cibuildwheel/__main__.py | 46 +++++++++++------------------- cibuildwheel/linux.py | 4 +++ cibuildwheel/macos.py | 4 +++ cibuildwheel/platform_interface.py | 19 ++++++++++++ cibuildwheel/windows.py | 4 +++ unit_test/main_tests/conftest.py | 6 ++-- unit_test/options_test.py | 5 ++-- 7 files changed, 54 insertions(+), 34 deletions(-) create mode 100644 cibuildwheel/platform_interface.py diff --git a/cibuildwheel/__main__.py b/cibuildwheel/__main__.py index 7ae2057f..061439b1 100644 --- a/cibuildwheel/__main__.py +++ b/cibuildwheel/__main__.py @@ -7,7 +7,7 @@ import sys import tarfile import textwrap import typing -from collections.abc import Sequence, Set +from collections.abc import Set from pathlib import Path from tempfile import mkdtemp @@ -19,9 +19,9 @@ import cibuildwheel.windows from cibuildwheel.architecture import Architecture, allowed_architectures_check from cibuildwheel.logger import log from cibuildwheel.options import CommandLineArguments, Options, compute_options +from cibuildwheel.platform_interface import PlatformInterface from cibuildwheel.typing import ( PLATFORMS, - GenericPythonConfiguration, PlatformName, assert_never, ) @@ -244,6 +244,16 @@ def _compute_platform(args: CommandLineArguments) -> PlatformName: return _compute_platform_ci() +def get_platform_interface(platform: PlatformName) -> PlatformInterface: + if platform == "linux": # noqa: SIM116 + return cibuildwheel.linux.interface + elif platform == "windows": + return cibuildwheel.windows.interface + elif platform == "macos": + return cibuildwheel.macos.interface + assert_never(platform) + + def build_in_directory(args: CommandLineArguments) -> None: platform: PlatformName = _compute_platform(args) options = compute_options(platform=platform, command_line_arguments=args, env=os.environ) @@ -257,8 +267,9 @@ def build_in_directory(args: CommandLineArguments) -> None: print(msg, file=sys.stderr) sys.exit(2) + interface = get_platform_interface(platform) identifiers = get_build_identifiers( - platform=platform, + interface=interface, build_selector=options.globals.build_selector, architectures=options.globals.architectures, ) @@ -304,14 +315,7 @@ def build_in_directory(args: CommandLineArguments) -> None: with cibuildwheel.util.print_new_wheels( "\n{n} wheels produced in {m:.0f} minutes:", output_dir ): - if platform == "linux": - cibuildwheel.linux.build(options, tmp_path) - elif platform == "windows": - cibuildwheel.windows.build(options, tmp_path) - elif platform == "macos": - cibuildwheel.macos.build(options, tmp_path) - else: - assert_never(platform) + interface.build(options, tmp_path) finally: # avoid https://github.com/python/cpython/issues/86962 by performing # cleanup manually @@ -354,25 +358,9 @@ def print_preamble(platform: str, options: Options, identifiers: list[str]) -> N def get_build_identifiers( - platform: PlatformName, build_selector: BuildSelector, architectures: Set[Architecture] + interface: PlatformInterface, build_selector: BuildSelector, architectures: Set[Architecture] ) -> list[str]: - python_configurations: Sequence[GenericPythonConfiguration] - - if platform == "linux": - python_configurations = cibuildwheel.linux.get_python_configurations( - build_selector, architectures - ) - elif platform == "windows": - python_configurations = cibuildwheel.windows.get_python_configurations( - build_selector, architectures - ) - elif platform == "macos": - python_configurations = cibuildwheel.macos.get_python_configurations( - build_selector, architectures - ) - else: - assert_never(platform) - + python_configurations = interface.get_python_configurations(build_selector, architectures) return [config.identifier for config in python_configurations] diff --git a/cibuildwheel/linux.py b/cibuildwheel/linux.py index 1a1f7103..bd237600 100644 --- a/cibuildwheel/linux.py +++ b/cibuildwheel/linux.py @@ -12,6 +12,7 @@ from .architecture import Architecture from .logger import log from .oci_container import OCIContainer from .options import Options +from .platform_interface import PlatformInterface from .typing import OrderedDict, PathOrStr, assert_never from .util import ( AlreadyBuiltWheelError, @@ -483,3 +484,6 @@ def troubleshoot(options: Options, error: Exception) -> None: print(" Files detected:") print("\n".join(f" {f}" for f in so_files)) print() + + +interface = PlatformInterface(get_python_configurations=get_python_configurations, build=build) diff --git a/cibuildwheel/macos.py b/cibuildwheel/macos.py index 6047b1ee..6b1d1aca 100644 --- a/cibuildwheel/macos.py +++ b/cibuildwheel/macos.py @@ -19,6 +19,7 @@ from .architecture import Architecture from .environment import ParsedEnvironment from .logger import log from .options import Options +from .platform_interface import PlatformInterface from .typing import Literal, PathOrStr, assert_never from .util import ( CIBW_CACHE_PATH, @@ -622,3 +623,6 @@ def build(options: Options, tmp_path: Path) -> None: f"Command {error.cmd} failed with code {error.returncode}. {error.stdout}" ) sys.exit(1) + + +interface = PlatformInterface(get_python_configurations=get_python_configurations, build=build) diff --git a/cibuildwheel/platform_interface.py b/cibuildwheel/platform_interface.py new file mode 100644 index 00000000..c1bf8819 --- /dev/null +++ b/cibuildwheel/platform_interface.py @@ -0,0 +1,19 @@ +from __future__ import annotations + +import dataclasses +from collections.abc import Callable, Sequence, Set +from pathlib import Path + +from .architecture import Architecture +from .options import Options +from .typing import GenericPythonConfiguration +from .util import BuildSelector + + +# Can't make it frozen because we monkeypatch "build" in unit tests +@dataclasses.dataclass() +class PlatformInterface: + get_python_configurations: Callable[ + [BuildSelector, Set[Architecture]], Sequence[GenericPythonConfiguration] + ] + build: Callable[[Options, Path], None] diff --git a/cibuildwheel/windows.py b/cibuildwheel/windows.py index e0f16d81..7cbf76eb 100644 --- a/cibuildwheel/windows.py +++ b/cibuildwheel/windows.py @@ -20,6 +20,7 @@ from .architecture import Architecture from .environment import ParsedEnvironment from .logger import log from .options import Options +from .platform_interface import PlatformInterface from .typing import PathOrStr, assert_never from .util import ( CIBW_CACHE_PATH, @@ -574,3 +575,6 @@ def build(options: Options, tmp_path: Path) -> None: f"Command {error.cmd} failed with code {error.returncode}. {error.stdout}" ) sys.exit(1) + + +interface = PlatformInterface(get_python_configurations=get_python_configurations, build=build) diff --git a/unit_test/main_tests/conftest.py b/unit_test/main_tests/conftest.py index 9ca5fa52..d9401628 100644 --- a/unit_test/main_tests/conftest.py +++ b/unit_test/main_tests/conftest.py @@ -85,9 +85,9 @@ def platform(request, monkeypatch): def intercepted_build_args(monkeypatch): intercepted = ArgsInterceptor() - monkeypatch.setattr(linux, "build", intercepted) - monkeypatch.setattr(macos, "build", intercepted) - monkeypatch.setattr(windows, "build", intercepted) + monkeypatch.setattr(linux.interface, "build", intercepted) + monkeypatch.setattr(macos.interface, "build", intercepted) + monkeypatch.setattr(windows.interface, "build", intercepted) yield intercepted diff --git a/unit_test/options_test.py b/unit_test/options_test.py index 5a29c91b..5463a3b6 100644 --- a/unit_test/options_test.py +++ b/unit_test/options_test.py @@ -7,7 +7,7 @@ from pathlib import Path import pytest -from cibuildwheel.__main__ import get_build_identifiers +from cibuildwheel.__main__ import get_build_identifiers, get_platform_interface from cibuildwheel.bashlex_eval import local_environment_executor from cibuildwheel.environment import parse_environment from cibuildwheel.options import ( @@ -49,8 +49,9 @@ def test_options_1(tmp_path, monkeypatch): options = Options(platform="linux", command_line_arguments=args, env={}) + interface = get_platform_interface("linux") identifiers = get_build_identifiers( - platform="linux", + interface=interface, build_selector=options.globals.build_selector, architectures=options.globals.architectures, ) From ae0ac92167aae65773b289215ccb0309352c72df Mon Sep 17 00:00:00 2001 From: Joe Rickerby Date: Mon, 10 Apr 2023 22:14:12 +0100 Subject: [PATCH 36/96] Use the platform object itself as the interface --- cibuildwheel/__main__.py | 34 ++++++++++++++++++++---------- cibuildwheel/linux.py | 4 ---- cibuildwheel/macos.py | 4 ---- cibuildwheel/platform_interface.py | 19 ----------------- cibuildwheel/windows.py | 4 ---- unit_test/main_tests/conftest.py | 6 +++--- unit_test/options_test.py | 6 +++--- 7 files changed, 29 insertions(+), 48 deletions(-) delete mode 100644 cibuildwheel/platform_interface.py diff --git a/cibuildwheel/__main__.py b/cibuildwheel/__main__.py index 061439b1..2f4bc2ac 100644 --- a/cibuildwheel/__main__.py +++ b/cibuildwheel/__main__.py @@ -7,7 +7,7 @@ import sys import tarfile import textwrap import typing -from collections.abc import Set +from collections.abc import Sequence, Set from pathlib import Path from tempfile import mkdtemp @@ -19,9 +19,9 @@ import cibuildwheel.windows from cibuildwheel.architecture import Architecture, allowed_architectures_check from cibuildwheel.logger import log from cibuildwheel.options import CommandLineArguments, Options, compute_options -from cibuildwheel.platform_interface import PlatformInterface from cibuildwheel.typing import ( PLATFORMS, + GenericPythonConfiguration, PlatformName, assert_never, ) @@ -244,13 +244,25 @@ def _compute_platform(args: CommandLineArguments) -> PlatformName: return _compute_platform_ci() -def get_platform_interface(platform: PlatformName) -> PlatformInterface: +class PlatformModule(typing.Protocol): + # note that as per PEP544, the self argument is ignored when the protocol + # is applied to a module + def get_python_configurations( + self, build_selector: BuildSelector, architectures: Set[Architecture] + ) -> Sequence[GenericPythonConfiguration]: + ... + + def build(self, options: Options, tmp_path: Path) -> None: + ... + + +def get_platform_module(platform: PlatformName) -> PlatformModule: if platform == "linux": # noqa: SIM116 - return cibuildwheel.linux.interface + return cibuildwheel.linux elif platform == "windows": - return cibuildwheel.windows.interface + return cibuildwheel.windows elif platform == "macos": - return cibuildwheel.macos.interface + return cibuildwheel.macos assert_never(platform) @@ -267,9 +279,9 @@ def build_in_directory(args: CommandLineArguments) -> None: print(msg, file=sys.stderr) sys.exit(2) - interface = get_platform_interface(platform) + platform_module = get_platform_module(platform) identifiers = get_build_identifiers( - interface=interface, + platform_module=platform_module, build_selector=options.globals.build_selector, architectures=options.globals.architectures, ) @@ -315,7 +327,7 @@ def build_in_directory(args: CommandLineArguments) -> None: with cibuildwheel.util.print_new_wheels( "\n{n} wheels produced in {m:.0f} minutes:", output_dir ): - interface.build(options, tmp_path) + platform_module.build(options, tmp_path) finally: # avoid https://github.com/python/cpython/issues/86962 by performing # cleanup manually @@ -358,9 +370,9 @@ def print_preamble(platform: str, options: Options, identifiers: list[str]) -> N def get_build_identifiers( - interface: PlatformInterface, build_selector: BuildSelector, architectures: Set[Architecture] + platform_module: PlatformModule, build_selector: BuildSelector, architectures: Set[Architecture] ) -> list[str]: - python_configurations = interface.get_python_configurations(build_selector, architectures) + python_configurations = platform_module.get_python_configurations(build_selector, architectures) return [config.identifier for config in python_configurations] diff --git a/cibuildwheel/linux.py b/cibuildwheel/linux.py index bd237600..1a1f7103 100644 --- a/cibuildwheel/linux.py +++ b/cibuildwheel/linux.py @@ -12,7 +12,6 @@ from .architecture import Architecture from .logger import log from .oci_container import OCIContainer from .options import Options -from .platform_interface import PlatformInterface from .typing import OrderedDict, PathOrStr, assert_never from .util import ( AlreadyBuiltWheelError, @@ -484,6 +483,3 @@ def troubleshoot(options: Options, error: Exception) -> None: print(" Files detected:") print("\n".join(f" {f}" for f in so_files)) print() - - -interface = PlatformInterface(get_python_configurations=get_python_configurations, build=build) diff --git a/cibuildwheel/macos.py b/cibuildwheel/macos.py index 6b1d1aca..6047b1ee 100644 --- a/cibuildwheel/macos.py +++ b/cibuildwheel/macos.py @@ -19,7 +19,6 @@ from .architecture import Architecture from .environment import ParsedEnvironment from .logger import log from .options import Options -from .platform_interface import PlatformInterface from .typing import Literal, PathOrStr, assert_never from .util import ( CIBW_CACHE_PATH, @@ -623,6 +622,3 @@ def build(options: Options, tmp_path: Path) -> None: f"Command {error.cmd} failed with code {error.returncode}. {error.stdout}" ) sys.exit(1) - - -interface = PlatformInterface(get_python_configurations=get_python_configurations, build=build) diff --git a/cibuildwheel/platform_interface.py b/cibuildwheel/platform_interface.py deleted file mode 100644 index c1bf8819..00000000 --- a/cibuildwheel/platform_interface.py +++ /dev/null @@ -1,19 +0,0 @@ -from __future__ import annotations - -import dataclasses -from collections.abc import Callable, Sequence, Set -from pathlib import Path - -from .architecture import Architecture -from .options import Options -from .typing import GenericPythonConfiguration -from .util import BuildSelector - - -# Can't make it frozen because we monkeypatch "build" in unit tests -@dataclasses.dataclass() -class PlatformInterface: - get_python_configurations: Callable[ - [BuildSelector, Set[Architecture]], Sequence[GenericPythonConfiguration] - ] - build: Callable[[Options, Path], None] diff --git a/cibuildwheel/windows.py b/cibuildwheel/windows.py index 7cbf76eb..e0f16d81 100644 --- a/cibuildwheel/windows.py +++ b/cibuildwheel/windows.py @@ -20,7 +20,6 @@ from .architecture import Architecture from .environment import ParsedEnvironment from .logger import log from .options import Options -from .platform_interface import PlatformInterface from .typing import PathOrStr, assert_never from .util import ( CIBW_CACHE_PATH, @@ -575,6 +574,3 @@ def build(options: Options, tmp_path: Path) -> None: f"Command {error.cmd} failed with code {error.returncode}. {error.stdout}" ) sys.exit(1) - - -interface = PlatformInterface(get_python_configurations=get_python_configurations, build=build) diff --git a/unit_test/main_tests/conftest.py b/unit_test/main_tests/conftest.py index d9401628..9ca5fa52 100644 --- a/unit_test/main_tests/conftest.py +++ b/unit_test/main_tests/conftest.py @@ -85,9 +85,9 @@ def platform(request, monkeypatch): def intercepted_build_args(monkeypatch): intercepted = ArgsInterceptor() - monkeypatch.setattr(linux.interface, "build", intercepted) - monkeypatch.setattr(macos.interface, "build", intercepted) - monkeypatch.setattr(windows.interface, "build", intercepted) + monkeypatch.setattr(linux, "build", intercepted) + monkeypatch.setattr(macos, "build", intercepted) + monkeypatch.setattr(windows, "build", intercepted) yield intercepted diff --git a/unit_test/options_test.py b/unit_test/options_test.py index 5463a3b6..be56b206 100644 --- a/unit_test/options_test.py +++ b/unit_test/options_test.py @@ -7,7 +7,7 @@ from pathlib import Path import pytest -from cibuildwheel.__main__ import get_build_identifiers, get_platform_interface +from cibuildwheel.__main__ import get_build_identifiers, get_platform_module from cibuildwheel.bashlex_eval import local_environment_executor from cibuildwheel.environment import parse_environment from cibuildwheel.options import ( @@ -49,9 +49,9 @@ def test_options_1(tmp_path, monkeypatch): options = Options(platform="linux", command_line_arguments=args, env={}) - interface = get_platform_interface("linux") + module = get_platform_module("linux") identifiers = get_build_identifiers( - interface=interface, + platform_module=module, build_selector=options.globals.build_selector, architectures=options.globals.architectures, ) From 420ef86679073021dd4c5394a23c7664f8f470d9 Mon Sep 17 00:00:00 2001 From: Joe Rickerby Date: Mon, 10 Apr 2023 22:24:20 +0100 Subject: [PATCH 37/96] Apply @henryiii's suggestion --- cibuildwheel/__main__.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cibuildwheel/__main__.py b/cibuildwheel/__main__.py index 2f4bc2ac..e7e55152 100644 --- a/cibuildwheel/__main__.py +++ b/cibuildwheel/__main__.py @@ -257,13 +257,13 @@ class PlatformModule(typing.Protocol): def get_platform_module(platform: PlatformName) -> PlatformModule: - if platform == "linux": # noqa: SIM116 + if platform == "linux": return cibuildwheel.linux - elif platform == "windows": + if platform == "windows": return cibuildwheel.windows - elif platform == "macos": + if platform == "macos": return cibuildwheel.macos - assert_never(platform) + assert_never(platform) # noqa: RET503 def build_in_directory(args: CommandLineArguments) -> None: From 05bf46f059c70a269563c1ae3ca04a4c4b9d817d Mon Sep 17 00:00:00 2001 From: Hood Chatham Date: Mon, 10 Apr 2023 15:13:41 -0700 Subject: [PATCH 38/96] Remove pydantic from example lists --- README.md | 2 -- docs/data/projects.yml | 5 ----- docs/working-examples.md | 2 -- 3 files changed, 9 deletions(-) diff --git a/README.md b/README.md index be678158..46a73c10 100644 --- a/README.md +++ b/README.md @@ -166,7 +166,6 @@ Here are some repos that use cibuildwheel. | [Kivy][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Open source UI framework written in Python, running on Windows, Linux, macOS, Android and iOS | | [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. | | [MyPy][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | The compiled version of MyPy using MyPyC. | -| [pydantic][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Data validation using Python type hints | [scikit-learn]: https://github.com/scikit-learn/scikit-learn [NumPy]: https://github.com/numpy/numpy @@ -177,7 +176,6 @@ Here are some repos that use cibuildwheel. [Kivy]: https://github.com/kivy/kivy [Prophet]: https://github.com/facebook/prophet [MyPy]: https://github.com/mypyc/mypy_mypyc-wheels -[pydantic]: https://github.com/samuelcolvin/pydantic [appveyor icon]: docs/data/readme_icons/appveyor.svg [github icon]: docs/data/readme_icons/github.svg diff --git a/docs/data/projects.yml b/docs/data/projects.yml index 82abe91a..7be74e0e 100644 --- a/docs/data/projects.yml +++ b/docs/data/projects.yml @@ -431,11 +431,6 @@ ci: [github] os: [apple, linux, windows] -- name: pydantic - gh: samuelcolvin/pydantic - ci: [github] - os: [apple, linux, windows] - - name: vaex gh: vaexio/vaex ci: [github] diff --git a/docs/working-examples.md b/docs/working-examples.md index ce3ee1f1..7a5096cc 100644 --- a/docs/working-examples.md +++ b/docs/working-examples.md @@ -17,7 +17,6 @@ title: Working examples | [Kivy][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Open source UI framework written in Python, running on Windows, Linux, macOS, Android and iOS | | [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. | | [MyPy][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | The compiled version of MyPy using MyPyC. | -| [pydantic][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Data validation using Python type hints | | [MemRay][] | ![github icon][] | ![linux icon][] | Memray is a memory profiler for Python | | [duckdb][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | DuckDB is an in-process SQL OLAP Database Management System | | [uvloop][] | ![github icon][] | ![apple icon][] ![linux icon][] | Ultra fast asyncio event loop. | @@ -123,7 +122,6 @@ title: Working examples [Kivy]: https://github.com/kivy/kivy [Prophet]: https://github.com/facebook/prophet [MyPy]: https://github.com/mypyc/mypy_mypyc-wheels -[pydantic]: https://github.com/samuelcolvin/pydantic [MemRay]: https://github.com/bloomberg/memray [duckdb]: https://github.com/duckdb/duckdb [uvloop]: https://github.com/MagicStack/uvloop From fa72100d49397f2d47a7c09b1d3ece2dadc95c0f Mon Sep 17 00:00:00 2001 From: David Lechner Date: Mon, 17 Apr 2023 13:06:14 -0500 Subject: [PATCH 39/96] fix: overwriting wheel on windows shouldn't break (#1464) fix overwriting wheel on windows This is the same fix as #1129 but for Windows this time. --- cibuildwheel/windows.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/cibuildwheel/windows.py b/cibuildwheel/windows.py index 08cab532..9d2ed1f1 100644 --- a/cibuildwheel/windows.py +++ b/cibuildwheel/windows.py @@ -7,6 +7,7 @@ import subprocess import sys import textwrap from collections.abc import Set +from contextlib import suppress from dataclasses import dataclass from functools import lru_cache from pathlib import Path @@ -560,6 +561,9 @@ def build(options: Options, tmp_path: Path) -> None: # we're all done here; move it to output (remove if already exists) if compatible_wheel is None: + with suppress(FileNotFoundError): + (build_options.output_dir / repaired_wheel.name).unlink() + shutil.move(str(repaired_wheel), build_options.output_dir) built_wheels.append(build_options.output_dir / repaired_wheel.name) From fdc0eae932c0941c232a3cdbffe21dac5c1b7a55 Mon Sep 17 00:00:00 2001 From: "cibuildwheel-bot[bot]" <83877280+cibuildwheel-bot[bot]@users.noreply.github.com> Date: Mon, 17 Apr 2023 14:06:31 -0400 Subject: [PATCH 40/96] [Bot] Update dependencies (#1472) Update dependencies Co-authored-by: cibuildwheel-bot[bot] <83877280+cibuildwheel-bot[bot]@users.noreply.github.com> --- README.md | 2 + .../resources/constraints-python310.txt | 4 +- .../resources/constraints-python311.txt | 4 +- .../resources/constraints-python37.txt | 6 +-- .../resources/constraints-python38.txt | 4 +- .../resources/constraints-python39.txt | 4 +- cibuildwheel/resources/constraints.txt | 4 +- .../resources/pinned_docker_images.cfg | 42 +++++++++---------- docs/working-examples.md | 8 ++-- 9 files changed, 40 insertions(+), 38 deletions(-) diff --git a/README.md b/README.md index 46a73c10..e012e44c 100644 --- a/README.md +++ b/README.md @@ -166,6 +166,7 @@ Here are some repos that use cibuildwheel. | [Kivy][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Open source UI framework written in Python, running on Windows, Linux, macOS, Android and iOS | | [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. | | [MyPy][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | The compiled version of MyPy using MyPyC. | +| [MemRay][] | ![github icon][] | ![linux icon][] | Memray is a memory profiler for Python | [scikit-learn]: https://github.com/scikit-learn/scikit-learn [NumPy]: https://github.com/numpy/numpy @@ -176,6 +177,7 @@ Here are some repos that use cibuildwheel. [Kivy]: https://github.com/kivy/kivy [Prophet]: https://github.com/facebook/prophet [MyPy]: https://github.com/mypyc/mypy_mypyc-wheels +[MemRay]: https://github.com/bloomberg/memray [appveyor icon]: docs/data/readme_icons/appveyor.svg [github icon]: docs/data/readme_icons/github.svg diff --git a/cibuildwheel/resources/constraints-python310.txt b/cibuildwheel/resources/constraints-python310.txt index e705b040..edace566 100644 --- a/cibuildwheel/resources/constraints-python310.txt +++ b/cibuildwheel/resources/constraints-python310.txt @@ -10,7 +10,7 @@ distlib==0.3.6 # via virtualenv filelock==3.11.0 # via virtualenv -packaging==23.0 +packaging==23.1 # via delocate platformdirs==3.2.0 # via virtualenv @@ -22,7 +22,7 @@ wheel==0.40.0 # via -r cibuildwheel/resources/constraints.in # The following packages are considered to be unsafe in a requirements file: -pip==23.0.1 +pip==23.1 # via -r cibuildwheel/resources/constraints.in setuptools==67.6.1 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python311.txt b/cibuildwheel/resources/constraints-python311.txt index ca7ee56e..95c961dc 100644 --- a/cibuildwheel/resources/constraints-python311.txt +++ b/cibuildwheel/resources/constraints-python311.txt @@ -10,7 +10,7 @@ distlib==0.3.6 # via virtualenv filelock==3.11.0 # via virtualenv -packaging==23.0 +packaging==23.1 # via delocate platformdirs==3.2.0 # via virtualenv @@ -22,7 +22,7 @@ wheel==0.40.0 # via -r cibuildwheel/resources/constraints.in # The following packages are considered to be unsafe in a requirements file: -pip==23.0.1 +pip==23.1 # via -r cibuildwheel/resources/constraints.in setuptools==67.6.1 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python37.txt b/cibuildwheel/resources/constraints-python37.txt index 23b73e18..32af95da 100644 --- a/cibuildwheel/resources/constraints-python37.txt +++ b/cibuildwheel/resources/constraints-python37.txt @@ -10,9 +10,9 @@ distlib==0.3.6 # via virtualenv filelock==3.11.0 # via virtualenv -importlib-metadata==6.3.0 +importlib-metadata==6.4.1 # via virtualenv -packaging==23.0 +packaging==23.1 # via delocate platformdirs==3.2.0 # via virtualenv @@ -29,7 +29,7 @@ zipp==3.15.0 # via importlib-metadata # The following packages are considered to be unsafe in a requirements file: -pip==23.0.1 +pip==23.1 # via -r cibuildwheel/resources/constraints.in setuptools==67.6.1 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python38.txt b/cibuildwheel/resources/constraints-python38.txt index 5c3589fb..9185b963 100644 --- a/cibuildwheel/resources/constraints-python38.txt +++ b/cibuildwheel/resources/constraints-python38.txt @@ -10,7 +10,7 @@ distlib==0.3.6 # via virtualenv filelock==3.11.0 # via virtualenv -packaging==23.0 +packaging==23.1 # via delocate platformdirs==3.2.0 # via virtualenv @@ -22,7 +22,7 @@ wheel==0.40.0 # via -r cibuildwheel/resources/constraints.in # The following packages are considered to be unsafe in a requirements file: -pip==23.0.1 +pip==23.1 # via -r cibuildwheel/resources/constraints.in setuptools==67.6.1 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python39.txt b/cibuildwheel/resources/constraints-python39.txt index 91db3968..94eb3e6c 100644 --- a/cibuildwheel/resources/constraints-python39.txt +++ b/cibuildwheel/resources/constraints-python39.txt @@ -10,7 +10,7 @@ distlib==0.3.6 # via virtualenv filelock==3.11.0 # via virtualenv -packaging==23.0 +packaging==23.1 # via delocate platformdirs==3.2.0 # via virtualenv @@ -22,7 +22,7 @@ wheel==0.40.0 # via -r cibuildwheel/resources/constraints.in # The following packages are considered to be unsafe in a requirements file: -pip==23.0.1 +pip==23.1 # via -r cibuildwheel/resources/constraints.in setuptools==67.6.1 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints.txt b/cibuildwheel/resources/constraints.txt index ca7ee56e..95c961dc 100644 --- a/cibuildwheel/resources/constraints.txt +++ b/cibuildwheel/resources/constraints.txt @@ -10,7 +10,7 @@ distlib==0.3.6 # via virtualenv filelock==3.11.0 # via virtualenv -packaging==23.0 +packaging==23.1 # via delocate platformdirs==3.2.0 # via virtualenv @@ -22,7 +22,7 @@ wheel==0.40.0 # via -r cibuildwheel/resources/constraints.in # The following packages are considered to be unsafe in a requirements file: -pip==23.0.1 +pip==23.1 # via -r cibuildwheel/resources/constraints.in setuptools==67.6.1 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/pinned_docker_images.cfg b/cibuildwheel/resources/pinned_docker_images.cfg index ac04bb17..91ca2337 100644 --- a/cibuildwheel/resources/pinned_docker_images.cfg +++ b/cibuildwheel/resources/pinned_docker_images.cfg @@ -1,49 +1,49 @@ [x86_64] -manylinux1 = quay.io/pypa/manylinux1_x86_64:2023-04-02-a4fcaba +manylinux1 = quay.io/pypa/manylinux1_x86_64:2023-04-16-36ed6a7 manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-04-09-db9a92f +manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-04-16-157f52a 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-04-09-db9a92f -musllinux_1_1 = quay.io/pypa/musllinux_1_1_x86_64:2023-04-09-db9a92f +manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2023-04-16-157f52a +musllinux_1_1 = quay.io/pypa/musllinux_1_1_x86_64:2023-04-16-157f52a [i686] -manylinux1 = quay.io/pypa/manylinux1_i686:2023-04-02-a4fcaba +manylinux1 = quay.io/pypa/manylinux1_i686:2023-04-16-36ed6a7 manylinux2010 = quay.io/pypa/manylinux2010_i686:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-04-09-db9a92f +manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-04-16-157f52a 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-04-09-db9a92f +musllinux_1_1 = quay.io/pypa/musllinux_1_1_i686:2023-04-16-157f52a [pypy_x86_64] manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-04-09-db9a92f +manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-04-16-157f52a 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-04-09-db9a92f +manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2023-04-16-157f52a [pypy_i686] manylinux2010 = quay.io/pypa/manylinux2010_i686:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-04-09-db9a92f +manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-04-16-157f52a manylinux_2_24 = quay.io/pypa/manylinux_2_24_i686:2022-12-26-0d38463 [aarch64] -manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-04-09-db9a92f +manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-04-16-157f52a 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-04-09-db9a92f -musllinux_1_1 = quay.io/pypa/musllinux_1_1_aarch64:2023-04-09-db9a92f +manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2023-04-16-157f52a +musllinux_1_1 = quay.io/pypa/musllinux_1_1_aarch64:2023-04-16-157f52a [ppc64le] -manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2023-04-09-db9a92f +manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2023-04-16-157f52a 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-04-09-db9a92f -musllinux_1_1 = quay.io/pypa/musllinux_1_1_ppc64le:2023-04-09-db9a92f +manylinux_2_28 = quay.io/pypa/manylinux_2_28_ppc64le:2023-04-16-157f52a +musllinux_1_1 = quay.io/pypa/musllinux_1_1_ppc64le:2023-04-16-157f52a [s390x] -manylinux2014 = quay.io/pypa/manylinux2014_s390x:2023-04-09-db9a92f +manylinux2014 = quay.io/pypa/manylinux2014_s390x:2023-04-16-157f52a 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-04-09-db9a92f -musllinux_1_1 = quay.io/pypa/musllinux_1_1_s390x:2023-04-09-db9a92f +manylinux_2_28 = quay.io/pypa/manylinux_2_28_s390x:2023-04-16-157f52a +musllinux_1_1 = quay.io/pypa/musllinux_1_1_s390x:2023-04-16-157f52a [pypy_aarch64] -manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-04-09-db9a92f +manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-04-16-157f52a 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-04-09-db9a92f +manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2023-04-16-157f52a diff --git a/docs/working-examples.md b/docs/working-examples.md index 7a5096cc..4671bfb2 100644 --- a/docs/working-examples.md +++ b/docs/working-examples.md @@ -52,8 +52,8 @@ title: Working examples | [Wrapt][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A Python module for decorators, wrappers and monkey patching. | | [Line Profiler][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Line-by-line profiling for Python | | [pikepdf][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A Python library for reading and writing PDF, powered by qpdf | -| [SimpleJSON][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | simplejson is a simple, fast, extensible JSON encoder/decoder for Python | | [envd][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | 🏕️ Reproducible development environment for AI/ML | +| [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 | | [OpenTimelineIO][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Open Source API and interchange format for editorial timeline information. | @@ -73,8 +73,8 @@ title: Working examples | [python-rapidjson][] | ![travisci icon][] ![gitlab icon][] ![appveyor icon][] | ![windows icon][] ![linux icon][] | Python wrapper around rapidjson | | [KDEpy][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Kernel Density Estimation in Python | | [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. | | [time-machine][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Time mocking library using only the CPython C API. | +| [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 | | [sourmash][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Quickly search, compare, and analyze genomic and metagenomic data sets. | @@ -157,8 +157,8 @@ title: Working examples [Wrapt]: https://github.com/GrahamDumpleton/wrapt [Line Profiler]: https://github.com/pyutils/line_profiler [pikepdf]: https://github.com/pikepdf/pikepdf -[SimpleJSON]: https://github.com/simplejson/simplejson [envd]: https://github.com/tensorchord/envd +[SimpleJSON]: https://github.com/simplejson/simplejson [OpenColorIO]: https://github.com/AcademySoftwareFoundation/OpenColorIO [aioquic]: https://github.com/aiortc/aioquic [OpenTimelineIO]: https://github.com/PixarAnimationStudios/OpenTimelineIO @@ -178,8 +178,8 @@ title: Working examples [python-rapidjson]: https://github.com/python-rapidjson/python-rapidjson [KDEpy]: https://github.com/tommyod/KDEpy [python-snappy]: https://github.com/andrix/python-snappy -[tgcalls]: https://github.com/MarshalX/tgcalls [time-machine]: https://github.com/adamchainz/time-machine +[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 [sourmash]: https://github.com/dib-lab/sourmash From 224631334441c22e75109c78ad0715aa55cf4557 Mon Sep 17 00:00:00 2001 From: Henry Schreiner Date: Mon, 17 Apr 2023 11:06:45 -0700 Subject: [PATCH 41/96] fix: verbosity isn't supported for pypa/build (#1474) This was incorrectly adding an empty config setting, and it was not correct if included for build - it's a pip wheel only setting. Reported in #1471. Signed-off-by: Henry Schreiner --- cibuildwheel/linux.py | 8 ++++---- cibuildwheel/macos.py | 8 ++++---- cibuildwheel/windows.py | 8 ++++---- docs/options.md | 2 +- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/cibuildwheel/linux.py b/cibuildwheel/linux.py index 8c584b20..eb878d8d 100644 --- a/cibuildwheel/linux.py +++ b/cibuildwheel/linux.py @@ -242,11 +242,10 @@ def build_in_container( container.call(["rm", "-rf", built_wheel_dir]) container.call(["mkdir", "-p", built_wheel_dir]) - verbosity_flags = get_build_verbosity_extra_flags(build_options.build_verbosity) extra_flags = split_config_settings(build_options.config_settings, build_frontend) if build_frontend == "pip": - extra_flags += verbosity_flags + extra_flags += get_build_verbosity_extra_flags(build_options.build_verbosity) container.call( [ "python", @@ -261,8 +260,9 @@ def build_in_container( env=env, ) elif build_frontend == "build": - verbosity_setting = " ".join(verbosity_flags) - extra_flags += (f"--config-setting={verbosity_setting}",) + 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) container.call( [ "python", diff --git a/cibuildwheel/macos.py b/cibuildwheel/macos.py index 3cf4ec53..24d22e46 100644 --- a/cibuildwheel/macos.py +++ b/cibuildwheel/macos.py @@ -376,11 +376,10 @@ def build(options: Options, tmp_path: Path) -> None: log.step("Building wheel...") built_wheel_dir.mkdir() - verbosity_flags = get_build_verbosity_extra_flags(build_options.build_verbosity) extra_flags = split_config_settings(build_options.config_settings, build_frontend) if build_frontend == "pip": - extra_flags += verbosity_flags + 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 call( @@ -395,8 +394,9 @@ def build(options: Options, tmp_path: Path) -> None: env=env, ) elif build_frontend == "build": - verbosity_setting = " ".join(verbosity_flags) - extra_flags += (f"--config-setting={verbosity_setting}",) + 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) build_env = env.copy() if build_options.dependency_constraints: constraint_path = ( diff --git a/cibuildwheel/windows.py b/cibuildwheel/windows.py index 9d2ed1f1..2c0df37f 100644 --- a/cibuildwheel/windows.py +++ b/cibuildwheel/windows.py @@ -414,11 +414,10 @@ def build(options: Options, tmp_path: Path) -> None: log.step("Building wheel...") built_wheel_dir.mkdir() - verbosity_flags = get_build_verbosity_extra_flags(build_options.build_verbosity) extra_flags = split_config_settings(build_options.config_settings, build_frontend) if build_frontend == "pip": - extra_flags += verbosity_flags + 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 call( @@ -433,8 +432,9 @@ def build(options: Options, tmp_path: Path) -> None: env=env, ) elif build_frontend == "build": - verbosity_setting = " ".join(verbosity_flags) - extra_flags += (f"--config-setting={verbosity_setting}",) + 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) build_env = env.copy() if build_options.dependency_constraints: constraints_path = ( diff --git a/docs/options.md b/docs/options.md index 92371b04..1d1dfaf6 100644 --- a/docs/options.md +++ b/docs/options.md @@ -1393,7 +1393,7 @@ This option is not supported in the overrides section in `pyproject.toml`. ### `CIBW_BUILD_VERBOSITY` {: #build-verbosity} > Increase/decrease the output of pip wheel -An number from 1 to 3 to increase the level of verbosity (corresponding to invoking pip with `-v`, `-vv`, and `-vvv`), between -1 and -3 (`-q`, `-qq`, and `-qqq`), or just 0 (default verbosity). These flags are useful while debugging a build when the output of the actual build invoked by `pip wheel` is required. +An number from 1 to 3 to increase the level of verbosity (corresponding to invoking pip with `-v`, `-vv`, and `-vvv`), between -1 and -3 (`-q`, `-qq`, and `-qqq`), or just 0 (default verbosity). These flags are useful while debugging a build when the output of the actual build invoked by `pip wheel` is required. Has no effect on the `build` backend, which produces verbose output by default. Platform-specific environment variables are also available:
`CIBW_BUILD_VERBOSITY_MACOS` | `CIBW_BUILD_VERBOSITY_WINDOWS` | `CIBW_BUILD_VERBOSITY_LINUX` From 063161f5af6245e8b5c8e3be0ca89fee80ce029e Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 17 Apr 2023 14:06:56 -0400 Subject: [PATCH 42/96] [pre-commit.ci] pre-commit autoupdate (#1468) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [pre-commit.ci] pre-commit autoupdate updates: - [github.com/charliermarsh/ruff-pre-commit: v0.0.260 → v0.0.261](https://github.com/charliermarsh/ruff-pre-commit/compare/v0.0.260...v0.0.261) - [github.com/pre-commit/mirrors-mypy: v1.1.1 → v1.2.0](https://github.com/pre-commit/mirrors-mypy/compare/v1.1.1...v1.2.0) * chore: update for mypy bug Signed-off-by: Henry Schreiner --------- 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 --- .pre-commit-config.yaml | 6 +++--- cibuildwheel/oci_container.py | 7 ++++--- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index afe33c4f..ace6a97e 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -19,10 +19,10 @@ repos: - id: black - repo: https://github.com/charliermarsh/ruff-pre-commit - rev: v0.0.260 + rev: v0.0.261 hooks: - id: ruff - args: ["--fix"] + args: ["--fix", "--show-fixes"] - repo: https://github.com/asottile/setup-cfg-fmt rev: v2.2.0 @@ -31,7 +31,7 @@ repos: args: [--include-version-classifiers, --max-py-version=3.11] - repo: https://github.com/pre-commit/mirrors-mypy - rev: v1.1.1 + rev: v1.2.0 hooks: - id: mypy name: mypy 3.7 on cibuildwheel/ diff --git a/cibuildwheel/oci_container.py b/cibuildwheel/oci_container.py index b92acceb..df6af6c9 100644 --- a/cibuildwheel/oci_container.py +++ b/cibuildwheel/oci_container.py @@ -166,6 +166,7 @@ class OCIContainer: cwd=from_path, ) else: + exec_process: subprocess.Popen[bytes] with subprocess.Popen( [ self.engine, @@ -178,10 +179,10 @@ class OCIContainer: ], stdin=subprocess.PIPE, ) as exec_process: - exec_process.stdin = cast(IO[bytes], exec_process.stdin) - + assert exec_process.stdin with open(from_path, "rb") as from_file: - shutil.copyfileobj(from_file, exec_process.stdin) + # Bug in mypy, https://github.com/python/mypy/issues/15031 + shutil.copyfileobj(from_file, exec_process.stdin) # type: ignore[misc] exec_process.stdin.close() exec_process.wait() From 440e18c275b75b0a342bf960bf5955dc1fa7ae74 Mon Sep 17 00:00:00 2001 From: Henry Schreiner Date: Tue, 18 Apr 2023 06:06:18 -0700 Subject: [PATCH 43/96] chore: minor cleanup (#1475) --- .pre-commit-config.yaml | 6 ++---- cibuildwheel/__main__.py | 1 + pyproject.toml | 10 +++++----- setup.py | 11 ----------- 4 files changed, 8 insertions(+), 20 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index ace6a97e..2611d85a 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -46,16 +46,14 @@ repos: - tomli_w - types-certifi - types-click - - types-dataclasses - types-jinja2 - types-pyyaml - types-requests - bracex - - dataclasses - id: mypy - name: mypy 3.10 + name: mypy 3.11 exclude: ^cibuildwheel/resources/.*py$ - args: ["--python-version=3.10"] + args: ["--python-version=3.11"] additional_dependencies: *mypy-dependencies - repo: https://github.com/shellcheck-py/shellcheck-py diff --git a/cibuildwheel/__main__.py b/cibuildwheel/__main__.py index e7e55152..e2915696 100644 --- a/cibuildwheel/__main__.py +++ b/cibuildwheel/__main__.py @@ -256,6 +256,7 @@ class PlatformModule(typing.Protocol): ... +# pylint: disable-next=inconsistent-return-statements def get_platform_module(platform: PlatformName) -> PlatformModule: if platform == "linux": return cibuildwheel.linux diff --git a/pyproject.toml b/pyproject.toml index 2a5fa388..d4224d4f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,7 +7,7 @@ build-backend = "setuptools.build_meta" [tool.black] line-length = 100 -target-version = ['py37', 'py38', 'py39', 'py310'] +target-version = ['py37', 'py38', 'py39', 'py310', 'py311'] [tool.pytest.ini_options] @@ -83,10 +83,10 @@ ignore = [ ] [tool.pylint] -master.py-version = "3.7" -master.jobs = "0" -master.fail-on = ["E", "F"] -master.fail-under = "9.8" +py-version = "3.7" +jobs = "0" +fail-on = ["E", "F"] +fail-under = "9.8" reports.output-format = "colorized" messages_control.enable = [ "useless-suppression", diff --git a/setup.py b/setup.py index b1481a9e..1ce3a00d 100644 --- a/setup.py +++ b/setup.py @@ -27,20 +27,9 @@ extras = { "rich>=9.6", "packaging>=21.0", ], - "mypy": [ - "mypy>=0.901", - "types-jinja2", - "types-certifi", - "types-toml", - "types-jinja2", - "types-pyyaml", - "types-click", - "types-requests", - ], } extras["dev"] = [ - *extras["mypy"], *extras["test"], *extras["bin"], ] From 1512427455dd17ade2b412b797b80ecd47f12b27 Mon Sep 17 00:00:00 2001 From: Henry Schreiner Date: Tue, 18 Apr 2023 12:00:35 -0400 Subject: [PATCH 44/96] chore: touch up Ruff, add exe check Signed-off-by: Henry Schreiner --- bin/projects.py | 0 bin/update_how_it_works_image.py | 0 pyproject.toml | 38 +++++++++++++++++--------------- 3 files changed, 20 insertions(+), 18 deletions(-) mode change 100644 => 100755 bin/projects.py mode change 100644 => 100755 bin/update_how_it_works_image.py diff --git a/bin/projects.py b/bin/projects.py old mode 100644 new mode 100755 diff --git a/bin/update_how_it_works_image.py b/bin/update_how_it_works_image.py old mode 100644 new mode 100755 diff --git a/pyproject.toml b/pyproject.toml index d4224d4f..0234b137 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -120,26 +120,28 @@ messages_control.disable = [ [tool.ruff] select = [ - "E", "F", "W", # flake8 - "B", "B904", # flake8-bugbear - "I", # isort - "ARG", # flake8-unused-arguments - "C4", # flake8-comprehensions - "EM", # flake8-errmsg - "ICN", # flake8-import-conventions - "ISC", # flake8-implicit-str-concat - "PGH", # pygrep-hooks - "PIE", # flake8-pie - "PLC", "PLE", "PLW", # pylint - "PT", # flake8-pytest-style - "RET", # flake8-return - "RUF", # Ruff-specific - "SIM", # flake8-simplify - "UP", # pyupgrade - "YTT", # flake8-2020 + "E", "F", "W", # flake8 + "B", # flake8-bugbear + "I", # isort + "ARG", # flake8-unused-arguments + "C4", # flake8-comprehensions + "EM", # flake8-errmsg + "ICN", # flake8-import-conventions + "ISC", # flake8-implicit-str-concat + "PGH", # pygrep-hooks + "PIE", # flake8-pie + "PL", # pylint + "PT", # flake8-pytest-style + "RET", # flake8-return + "RUF", # Ruff-specific + "SIM", # flake8-simplify + "UP", # pyupgrade + "YTT", # flake8-2020 + "EXE", # flake8-executable ] extend-ignore = [ - "PLR2004", "E501", + "PLR", # Design related pylint codes + "E501", # Line too long "RET504", "RET505", "RET508", # else after control flow "PT004", # Rename suggested for returnless fixtures "PT007", # False positive (fixed upstream) From ec9919a088c47cd7b219592636be06a7cbb37d3b Mon Sep 17 00:00:00 2001 From: Henry Schreiner Date: Tue, 18 Apr 2023 12:01:08 -0400 Subject: [PATCH 45/96] chore: add Ruff logging format check Signed-off-by: Henry Schreiner --- bin/update_pythons.py | 6 +++--- bin/update_virtualenv.py | 6 +++--- pyproject.toml | 1 + 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/bin/update_pythons.py b/bin/update_pythons.py index 930b13df..bfa10ba7 100755 --- a/bin/update_pythons.py +++ b/bin/update_pythons.py @@ -93,7 +93,7 @@ class WindowsVersions: unsorted_versions = spec.filter(self.version_dict) versions = sorted(unsorted_versions, reverse=True) - log.debug(f"Windows {self.arch} {spec} has {', '.join(str(v) for v in versions)}") + log.debug("Windows %s %s has %s", self.arch, spec, ", ".join(str(v) for v in versions)) if not versions: return None @@ -254,7 +254,7 @@ class AllVersions: identifier = config["identifier"] version = Version(config["version"]) spec = Specifier(f"=={version.major}.{version.minor}.*") - log.info(f"Reading in '{identifier}' -> {spec} @ {version}") + log.info("Reading in %r -> %s @ %s", str(identifier), spec, version) orig_config = copy.copy(config) config_update: AnyConfig | None = None @@ -282,7 +282,7 @@ class AllVersions: config.update(**config_update) if config != orig_config: - log.info(f" Updated {orig_config} to {config}") + log.info(" Updated %s to %s", orig_config, config) @click.command() diff --git a/bin/update_virtualenv.py b/bin/update_virtualenv.py index ef1fec80..d7c7dc8a 100755 --- a/bin/update_virtualenv.py +++ b/bin/update_virtualenv.py @@ -54,14 +54,14 @@ def git_ls_remote_versions(url) -> list[VersionTuple]: try: version = Version(version_string) if version.is_devrelease: - log.info(f"Ignoring development release '{version}'") + log.info("Ignoring development release %r", str(version)) continue if version.is_prerelease: - log.info(f"Ignoring pre-release '{version}'") + log.info("Ignoring pre-release %r", str(version)) continue versions.append(VersionTuple(version, version_string)) except InvalidVersion: - log.warning(f"Ignoring ref '{ref}'") + log.warning("Ignoring ref %r", ref) versions.sort(reverse=True) return versions diff --git a/pyproject.toml b/pyproject.toml index 0234b137..c71a1ae4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -128,6 +128,7 @@ select = [ "EM", # flake8-errmsg "ICN", # flake8-import-conventions "ISC", # flake8-implicit-str-concat + "G", # flake8-logging-format "PGH", # pygrep-hooks "PIE", # flake8-pie "PL", # pylint From 6d038dfbdfca459e39ad4642bde682b23435b0e8 Mon Sep 17 00:00:00 2001 From: Henry Schreiner Date: Tue, 18 Apr 2023 12:38:21 -0400 Subject: [PATCH 46/96] chore: update typing to collections.abc Signed-off-by: Henry Schreiner --- bin/inspect_all_known_projects.py | 2 +- cibuildwheel/architecture.py | 3 ++- cibuildwheel/bashlex_eval.py | 3 ++- cibuildwheel/environment.py | 3 ++- cibuildwheel/functools_cached_property_38.py | 8 +++++--- cibuildwheel/linux.py | 4 ++-- cibuildwheel/macos.py | 7 ++++--- cibuildwheel/oci_container.py | 6 ++++-- cibuildwheel/options.py | 8 +++++--- cibuildwheel/util.py | 20 ++++++-------------- cibuildwheel/windows.py | 3 +-- pyproject.toml | 7 +++++++ unit_test/option_prepare_test.py | 6 +++--- 13 files changed, 44 insertions(+), 36 deletions(-) diff --git a/bin/inspect_all_known_projects.py b/bin/inspect_all_known_projects.py index 3f91b2b5..684b7ff1 100755 --- a/bin/inspect_all_known_projects.py +++ b/bin/inspect_all_known_projects.py @@ -15,8 +15,8 @@ the results without the `--online` setting. from __future__ import annotations import ast +from collections.abc import Iterator from pathlib import Path -from typing import Iterator import click import yaml diff --git a/cibuildwheel/architecture.py b/cibuildwheel/architecture.py index e1c8482a..8c4b2293 100644 --- a/cibuildwheel/architecture.py +++ b/cibuildwheel/architecture.py @@ -4,6 +4,7 @@ import functools import platform as platform_module import re import sys +from collections.abc import Set from enum import Enum from .typing import Final, Literal, PlatformName, assert_never @@ -132,7 +133,7 @@ class Architecture(Enum): def allowed_architectures_check( platform: PlatformName, - architectures: set[Architecture], + architectures: Set[Architecture], ) -> None: allowed_architectures = Architecture.all_archs(platform) diff --git a/cibuildwheel/bashlex_eval.py b/cibuildwheel/bashlex_eval.py index 01093a62..3a167890 100644 --- a/cibuildwheel/bashlex_eval.py +++ b/cibuildwheel/bashlex_eval.py @@ -1,8 +1,9 @@ from __future__ import annotations import subprocess +from collections.abc import Sequence from dataclasses import dataclass -from typing import Callable, Dict, List, Sequence +from typing import Callable, Dict, List # noqa: TID251 import bashlex diff --git a/cibuildwheel/environment.py b/cibuildwheel/environment.py index 74bfd78a..625529e9 100644 --- a/cibuildwheel/environment.py +++ b/cibuildwheel/environment.py @@ -1,7 +1,8 @@ from __future__ import annotations import dataclasses -from typing import Any, Mapping, Sequence +from collections.abc import Mapping, Sequence +from typing import Any import bashlex import bashlex.errors diff --git a/cibuildwheel/functools_cached_property_38.py b/cibuildwheel/functools_cached_property_38.py index 879cdb62..134564b5 100644 --- a/cibuildwheel/functools_cached_property_38.py +++ b/cibuildwheel/functools_cached_property_38.py @@ -1,7 +1,9 @@ from __future__ import annotations +import typing +from collections.abc import Callable from threading import RLock -from typing import Any, Callable, Generic, TypeVar, overload +from typing import Any, Generic, TypeVar __all__ = ["cached_property"] @@ -24,11 +26,11 @@ class cached_property(Generic[_T]): msg = f"Cannot assign the same cached_property to two different names ({self.attrname!r} and {name!r})." raise TypeError(msg) - @overload + @typing.overload def __get__(self, instance: None, owner: type[Any] | None = ...) -> cached_property[_T]: ... - @overload + @typing.overload def __get__(self, instance: object, owner: type[Any] | None = ...) -> _T: ... diff --git a/cibuildwheel/linux.py b/cibuildwheel/linux.py index eb878d8d..37ef5c8f 100644 --- a/cibuildwheel/linux.py +++ b/cibuildwheel/linux.py @@ -3,10 +3,10 @@ from __future__ import annotations import subprocess import sys import textwrap -from collections.abc import Set +from collections.abc import Iterator, Set from dataclasses import dataclass from pathlib import Path, PurePath, PurePosixPath -from typing import Iterator, Tuple +from typing import Tuple from .architecture import Architecture from .logger import log diff --git a/cibuildwheel/macos.py b/cibuildwheel/macos.py index 24d22e46..75614449 100644 --- a/cibuildwheel/macos.py +++ b/cibuildwheel/macos.py @@ -8,10 +8,11 @@ import re import shutil import subprocess import sys -from collections.abc import Set +import typing +from collections.abc import Sequence, Set from dataclasses import dataclass from pathlib import Path -from typing import Sequence, Tuple, cast +from typing import Tuple from filelock import FileLock @@ -55,7 +56,7 @@ def get_macos_version() -> tuple[int, int]: """ version_str, _, _ = platform.mac_ver() version = tuple(map(int, version_str.split(".")[:2])) - return cast(Tuple[int, int], version) + return typing.cast(Tuple[int, int], version) def get_macos_sdks() -> list[str]: diff --git a/cibuildwheel/oci_container.py b/cibuildwheel/oci_container.py index df6af6c9..8da216a2 100644 --- a/cibuildwheel/oci_container.py +++ b/cibuildwheel/oci_container.py @@ -8,10 +8,12 @@ import shlex import shutil import subprocess import sys +import typing import uuid +from collections.abc import Sequence from pathlib import Path, PurePath, PurePosixPath from types import TracebackType -from typing import IO, Dict, Sequence, cast +from typing import IO, Dict from cibuildwheel.util import CIProvider, detect_ci_provider @@ -329,7 +331,7 @@ class OCIContainer: capture_output=True, ) ) - return cast(Dict[str, str], env) + return typing.cast(Dict[str, str], env) def environment_executor(self, command: list[str], environment: dict[str, str]) -> str: # used as an EnvironmentExecutor to evaluate commands and capture output diff --git a/cibuildwheel/options.py b/cibuildwheel/options.py index 3469dce8..974470c6 100644 --- a/cibuildwheel/options.py +++ b/cibuildwheel/options.py @@ -10,8 +10,10 @@ import shlex import sys import textwrap import traceback +import typing +from collections.abc import Callable, Generator, Iterator, Mapping, Set from pathlib import Path -from typing import Any, Callable, Dict, Generator, Iterator, List, Mapping, Union, cast +from typing import Any, Dict, List, Union if sys.version_info >= (3, 11): import tomllib @@ -193,7 +195,7 @@ class OptionsReader: *, platform: PlatformName, env: Mapping[str, str], - disallow: dict[str, set[str]] | None = None, + disallow: Mapping[str, Set[str]] | None = None, ) -> None: self.platform = platform self.env = env @@ -462,7 +464,7 @@ class Options: print(msg, file=sys.stderr) sys.exit(2) - container_engine = cast(ContainerEngine, container_engine_str) + container_engine = typing.cast(ContainerEngine, container_engine_str) return GlobalOptions( package_dir=package_dir, diff --git a/cibuildwheel/util.py b/cibuildwheel/util.py index 38622c70..53cb22a6 100644 --- a/cibuildwheel/util.py +++ b/cibuildwheel/util.py @@ -11,23 +11,15 @@ import subprocess import sys import textwrap import time +import typing import urllib.request +from collections.abc import Generator, Iterable, Sequence from dataclasses import dataclass from enum import Enum from functools import lru_cache from pathlib import Path, PurePath from time import sleep -from typing import ( - Any, - ClassVar, - Generator, - Iterable, - Sequence, - TextIO, - TypeVar, - cast, - overload, -) +from typing import Any, ClassVar, TextIO, TypeVar import bracex import certifi @@ -107,7 +99,7 @@ CIBW_CACHE_PATH: Final[Path] = Path( IS_WIN: Final[bool] = sys.platform.startswith("win") -@overload +@typing.overload def call( *args: PathOrStr, env: dict[str, str] | None = None, @@ -117,7 +109,7 @@ def call( ... -@overload +@typing.overload def call( *args: PathOrStr, env: dict[str, str] | None = None, @@ -149,7 +141,7 @@ def call( result = subprocess.run(args_, check=True, shell=IS_WIN, env=env, cwd=cwd, **kwargs) if not capture_stdout: return None - return cast(str, result.stdout) + return typing.cast(str, result.stdout) def shell(*commands: str, env: dict[str, str] | None = None, cwd: PathOrStr | None = None) -> None: diff --git a/cibuildwheel/windows.py b/cibuildwheel/windows.py index 2c0df37f..5ab8827a 100644 --- a/cibuildwheel/windows.py +++ b/cibuildwheel/windows.py @@ -6,12 +6,11 @@ import shutil import subprocess import sys import textwrap -from collections.abc import Set +from collections.abc import Sequence, Set from contextlib import suppress from dataclasses import dataclass from functools import lru_cache from pathlib import Path -from typing import Sequence from zipfile import ZipFile from filelock import FileLock diff --git a/pyproject.toml b/pyproject.toml index c71a1ae4..570772db 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -136,6 +136,7 @@ select = [ "RET", # flake8-return "RUF", # Ruff-specific "SIM", # flake8-simplify + "TID251", # flake8-tidy-imports.banned-api "UP", # pyupgrade "YTT", # flake8-2020 "EXE", # flake8-executable @@ -151,6 +152,12 @@ target-version = "py37" typing-modules = ["cibuildwheel.typing"] flake8-unused-arguments.ignore-variadic-names = true +[tool.ruff.flake8-tidy-imports.banned-api] +"typing.Mapping".msg = "Use collections.abc.Mapping instead." +"typing.Callable".msg = "Use collections.abc.Callable instead." +"typing.Iterator".msg = "Use collections.abc.Iterator instead." +"typing.Sequence".msg = "Use collections.abc.Sequence instead." +"typing.Set".msg = "Use collections.abc.Set instead." [tool.ruff.per-file-ignores] "unit_test/*" = ["PLC1901"] diff --git a/unit_test/option_prepare_test.py b/unit_test/option_prepare_test.py index 5cf58569..b5c361b2 100644 --- a/unit_test/option_prepare_test.py +++ b/unit_test/option_prepare_test.py @@ -3,9 +3,9 @@ from __future__ import annotations import platform as platform_module import subprocess import sys +import typing from contextlib import contextmanager from pathlib import PurePosixPath -from typing import cast from unittest import mock import pytest @@ -52,7 +52,7 @@ def test_build_default_launches(monkeypatch): main() - build_in_container = cast(mock.Mock, linux.build_in_container) + build_in_container = typing.cast(mock.Mock, linux.build_in_container) assert build_in_container.call_count == 4 @@ -120,7 +120,7 @@ before-all = "true" main() - build_in_container = cast(mock.Mock, linux.build_in_container) + build_in_container = typing.cast(mock.Mock, linux.build_in_container) assert build_in_container.call_count == 6 From 8c5f89c035ba6ac81794ed5a5d6cd2110957f181 Mon Sep 17 00:00:00 2001 From: Henry Schreiner Date: Tue, 18 Apr 2023 13:06:17 -0400 Subject: [PATCH 47/96] chore: update typing to be generic on function args Signed-off-by: Henry Schreiner --- bin/inspect_all_known_projects.py | 4 ++-- bin/projects.py | 9 +++++---- bin/update_pythons.py | 5 +++-- cibuildwheel/__main__.py | 6 +++--- cibuildwheel/bashlex_eval.py | 12 +++++++----- cibuildwheel/environment.py | 4 ++-- cibuildwheel/extra.py | 5 ++++- cibuildwheel/linux.py | 8 ++++---- cibuildwheel/oci_container.py | 6 +++--- cibuildwheel/options.py | 8 ++++---- cibuildwheel/util.py | 14 ++++++++------ cibuildwheel/windows.py | 6 +++--- 12 files changed, 48 insertions(+), 39 deletions(-) diff --git a/bin/inspect_all_known_projects.py b/bin/inspect_all_known_projects.py index 684b7ff1..a2c68a6b 100755 --- a/bin/inspect_all_known_projects.py +++ b/bin/inspect_all_known_projects.py @@ -15,7 +15,7 @@ the results without the `--online` setting. from __future__ import annotations import ast -from collections.abc import Iterator +from collections.abc import Iterable, Iterator from pathlib import Path import click @@ -97,7 +97,7 @@ class MaybeRemote: with open(filename, "w") as f: yaml.safe_dump(self.contents, f, default_flow_style=False) - def on_each(self, repos: list[str]) -> Iterator[tuple[str, str, str | None]]: + def on_each(self, repos: Iterable[str]) -> Iterator[tuple[str, str, str | None]]: for repo in repos: print(f"[bold]{repo}:") for filename in sorted(self.contents, reverse=True): diff --git a/bin/projects.py b/bin/projects.py index 6b577189..546a10c8 100755 --- a/bin/projects.py +++ b/bin/projects.py @@ -16,6 +16,7 @@ import functools import textwrap import urllib.request import xml.dom.minidom +from collections.abc import Iterable, Mapping, Sequence from datetime import datetime from io import StringIO from pathlib import Path @@ -42,7 +43,7 @@ ICONS = ( class Project: NAME: int = 0 - def __init__(self, config: dict[str, Any], github: Github | None = None): + def __init__(self, config: Mapping[str, Any], github: Github | None = None): try: self.name: str = config["name"] self.gh: str = config["gh"] @@ -149,7 +150,7 @@ def path_for_icon(icon_name: str, relative_to: Path | None = None) -> Path: def get_projects( - config: list[dict[str, Any]], + config: Iterable[Mapping[str, Any]], *, online: bool = True, auth: str | None = None, @@ -163,7 +164,7 @@ def get_projects( return sorted((Project(item, github) for item in config), reverse=online) -def render_projects(projects: list[Project], *, dest_path: Path, include_info: bool = True): +def render_projects(projects: Sequence[Project], *, dest_path: Path, include_info: bool = True): io = StringIO() print = functools.partial(builtins.print, file=io) @@ -191,7 +192,7 @@ def render_projects(projects: list[Project], *, dest_path: Path, include_info: b def insert_projects_table( file: Path, *, - projects: list[Project], + projects: Sequence[Project], input_filename: str, include_info: bool = True, ): diff --git a/bin/update_pythons.py b/bin/update_pythons.py index bfa10ba7..35f6a76e 100755 --- a/bin/update_pythons.py +++ b/bin/update_pythons.py @@ -6,6 +6,7 @@ import copy import difflib import logging import sys +from collections.abc import Mapping, MutableMapping from pathlib import Path from typing import Any, Union @@ -124,7 +125,7 @@ class PyPyVersions: ] self.arch = arch_str - def get_arch_file(self, release: dict[str, Any]) -> str: + def get_arch_file(self, release: Mapping[str, Any]) -> str: urls: list[str] = [ rf["download_url"] for rf in release["files"] @@ -250,7 +251,7 @@ class AllVersions: self.macos_pypy = PyPyVersions("64") self.macos_pypy_arm64 = PyPyVersions("ARM64") - def update_config(self, config: dict[str, str]) -> None: + def update_config(self, config: MutableMapping[str, str]) -> None: identifier = config["identifier"] version = Version(config["version"]) spec = Specifier(f"=={version.major}.{version.minor}.*") diff --git a/cibuildwheel/__main__.py b/cibuildwheel/__main__.py index e2915696..9dfba151 100644 --- a/cibuildwheel/__main__.py +++ b/cibuildwheel/__main__.py @@ -7,7 +7,7 @@ import sys import tarfile import textwrap import typing -from collections.abc import Sequence, Set +from collections.abc import Iterable, Sequence, Set from pathlib import Path from tempfile import mkdtemp @@ -337,7 +337,7 @@ def build_in_directory(args: CommandLineArguments) -> None: log.warning(f"Can't delete temporary folder '{tmp_path}'") -def print_preamble(platform: str, options: Options, identifiers: list[str]) -> None: +def print_preamble(platform: str, options: Options, identifiers: Sequence[str]) -> None: print( textwrap.dedent( """ @@ -377,7 +377,7 @@ def get_build_identifiers( return [config.identifier for config in python_configurations] -def detect_warnings(*, options: Options, identifiers: list[str]) -> list[str]: +def detect_warnings(*, options: Options, identifiers: Iterable[str]) -> list[str]: warnings = [] # warn about deprecated {python} and {pip} diff --git a/cibuildwheel/bashlex_eval.py b/cibuildwheel/bashlex_eval.py index 3a167890..c5f80537 100644 --- a/cibuildwheel/bashlex_eval.py +++ b/cibuildwheel/bashlex_eval.py @@ -1,7 +1,7 @@ from __future__ import annotations import subprocess -from collections.abc import Sequence +from collections.abc import Iterable, Mapping, Sequence from dataclasses import dataclass from typing import Callable, Dict, List # noqa: TID251 @@ -11,7 +11,7 @@ import bashlex EnvironmentExecutor = Callable[[List[str], Dict[str, str]], str] -def local_environment_executor(command: list[str], env: dict[str, str]) -> str: +def local_environment_executor(command: Sequence[str], env: Mapping[str, str]) -> str: return subprocess.run(command, env=env, text=True, stdout=subprocess.PIPE, check=True).stdout @@ -23,7 +23,7 @@ class NodeExecutionContext: def evaluate( - value: str, environment: dict[str, str], executor: EnvironmentExecutor | None = None + value: str, environment: Mapping[str, str], executor: EnvironmentExecutor | None = None ) -> str: if not value: # empty string evaluates to empty string @@ -41,7 +41,9 @@ def evaluate( return evaluate_node( value_word_node, context=NodeExecutionContext( - environment=environment, input=value, executor=executor or local_environment_executor + environment=dict(environment), + input=value, + executor=executor or local_environment_executor, ), ) @@ -106,7 +108,7 @@ def evaluate_nodes_as_compound_command( def evaluate_nodes_as_simple_command( - nodes: list[bashlex.ast.node], context: NodeExecutionContext + nodes: Iterable[bashlex.ast.node], context: NodeExecutionContext ) -> str: command = [evaluate_node(part, context=context) for part in nodes] return context.executor(command, context.environment) diff --git a/cibuildwheel/environment.py b/cibuildwheel/environment.py index 625529e9..2a7b99a2 100644 --- a/cibuildwheel/environment.py +++ b/cibuildwheel/environment.py @@ -55,7 +55,7 @@ class EnvironmentAssignment(Protocol): def evaluated_value( self, *, - environment: dict[str, str], + environment: Mapping[str, str], executor: bashlex_eval.EnvironmentExecutor | None = None, ) -> str: """Returns the value of this assignment, as evaluated in the environment""" @@ -92,7 +92,7 @@ class EnvironmentAssignmentBash: def evaluated_value( self, - environment: dict[str, str], + environment: Mapping[str, str], executor: bashlex_eval.EnvironmentExecutor | None = None, ) -> str: return bashlex_eval.evaluate(self.value, environment=environment, executor=executor) diff --git a/cibuildwheel/extra.py b/cibuildwheel/extra.py index 36389e6f..03e3ce6f 100644 --- a/cibuildwheel/extra.py +++ b/cibuildwheel/extra.py @@ -4,6 +4,7 @@ These are utilities for the `/bin` scripts, not for the `cibuildwheel` program. from __future__ import annotations +from collections.abc import Mapping, Sequence from io import StringIO from .typing import Protocol @@ -16,7 +17,9 @@ class Printable(Protocol): ... -def dump_python_configurations(inp: dict[str, dict[str, list[dict[str, Printable]]]]) -> str: +def dump_python_configurations( + inp: Mapping[str, Mapping[str, Sequence[Mapping[str, Printable]]]] +) -> str: output = StringIO() for header, values in inp.items(): output.write(f"[{header}]\n") diff --git a/cibuildwheel/linux.py b/cibuildwheel/linux.py index 37ef5c8f..4f019ac3 100644 --- a/cibuildwheel/linux.py +++ b/cibuildwheel/linux.py @@ -3,7 +3,7 @@ from __future__ import annotations import subprocess import sys import textwrap -from collections.abc import Iterator, Set +from collections.abc import Iterable, Iterator, Sequence, Set from dataclasses import dataclass from pathlib import Path, PurePath, PurePosixPath from typing import Tuple @@ -113,7 +113,7 @@ def get_build_steps( def check_all_python_exist( - *, platform_configs: list[PythonConfiguration], container: OCIContainer + *, platform_configs: Iterable[PythonConfiguration], container: OCIContainer ) -> None: exist = True messages = [] @@ -138,7 +138,7 @@ def check_all_python_exist( def build_in_container( *, options: Options, - platform_configs: list[PythonConfiguration], + platform_configs: Sequence[PythonConfiguration], container: OCIContainer, container_project_path: PurePath, container_package_dir: PurePath, @@ -438,7 +438,7 @@ def build(options: Options, tmp_path: Path) -> None: # noqa: ARG001 sys.exit(1) -def _matches_prepared_command(error_cmd: list[str], command_template: str) -> bool: +def _matches_prepared_command(error_cmd: Sequence[str], command_template: str) -> bool: if len(error_cmd) < 3 or error_cmd[0:2] != ["sh", "-c"]: return False command_prefix = command_template.split("{", maxsplit=1)[0].strip() diff --git a/cibuildwheel/oci_container.py b/cibuildwheel/oci_container.py index 8da216a2..aa54eefb 100644 --- a/cibuildwheel/oci_container.py +++ b/cibuildwheel/oci_container.py @@ -10,7 +10,7 @@ import subprocess import sys import typing import uuid -from collections.abc import Sequence +from collections.abc import Mapping, Sequence from pathlib import Path, PurePath, PurePosixPath from types import TracebackType from typing import IO, Dict @@ -241,7 +241,7 @@ class OCIContainer: def call( self, args: Sequence[PathOrStr], - env: dict[str, str] | None = None, + env: Mapping[str, str] | None = None, capture_output: bool = False, cwd: PathOrStr | None = None, ) -> str: @@ -333,7 +333,7 @@ class OCIContainer: ) return typing.cast(Dict[str, str], env) - def environment_executor(self, command: list[str], environment: dict[str, str]) -> str: + def environment_executor(self, command: Sequence[str], environment: dict[str, str]) -> str: # used as an EnvironmentExecutor to evaluate commands and capture output return self.call(command, env=environment, capture_output=True) diff --git a/cibuildwheel/options.py b/cibuildwheel/options.py index 974470c6..d28e7621 100644 --- a/cibuildwheel/options.py +++ b/cibuildwheel/options.py @@ -11,7 +11,7 @@ import sys import textwrap import traceback import typing -from collections.abc import Callable, Generator, Iterator, Mapping, Set +from collections.abc import Callable, Generator, Iterable, Iterator, Mapping, Set from pathlib import Path from typing import Any, Dict, List, Union @@ -601,7 +601,7 @@ class Options: config_settings=config_settings, ) - def check_for_invalid_configuration(self, identifiers: list[str]) -> None: + def check_for_invalid_configuration(self, identifiers: Iterable[str]) -> None: if self.platform in {"macos", "windows"}: before_all_values = {self.build_options(i).before_all for i in identifiers} @@ -633,7 +633,7 @@ class Options: read_config_file=False, ) - def summary(self, identifiers: list[str]) -> str: + def summary(self, identifiers: Iterable[str]) -> str: lines = [] global_option_names = sorted(f.name for f in dataclasses.fields(self.globals)) @@ -671,7 +671,7 @@ class Options: option_name: str, option_value: Any, default_value: Any, - overrides: dict[str, Any] | None = None, + overrides: Mapping[str, Any] | None = None, ) -> str: """ Return a summary of the option value, including any overrides, with diff --git a/cibuildwheel/util.py b/cibuildwheel/util.py index 53cb22a6..2ba4fe6a 100644 --- a/cibuildwheel/util.py +++ b/cibuildwheel/util.py @@ -13,7 +13,7 @@ import textwrap import time import typing import urllib.request -from collections.abc import Generator, Iterable, Sequence +from collections.abc import Generator, Iterable, Mapping, Sequence from dataclasses import dataclass from enum import Enum from functools import lru_cache @@ -102,7 +102,7 @@ IS_WIN: Final[bool] = sys.platform.startswith("win") @typing.overload def call( *args: PathOrStr, - env: dict[str, str] | None = None, + env: Mapping[str, str] | None = None, cwd: PathOrStr | None = None, capture_stdout: Literal[False] = ..., ) -> None: @@ -112,7 +112,7 @@ def call( @typing.overload def call( *args: PathOrStr, - env: dict[str, str] | None = None, + env: Mapping[str, str] | None = None, cwd: PathOrStr | None = None, capture_stdout: Literal[True], ) -> str: @@ -121,7 +121,7 @@ def call( def call( *args: PathOrStr, - env: dict[str, str] | None = None, + env: Mapping[str, str] | None = None, cwd: PathOrStr | None = None, capture_stdout: bool = False, ) -> str | None: @@ -144,7 +144,9 @@ def call( return typing.cast(str, result.stdout) -def shell(*commands: str, env: dict[str, str] | None = None, cwd: PathOrStr | None = None) -> None: +def shell( + *commands: str, env: Mapping[str, str] | None = None, cwd: PathOrStr | None = None +) -> None: command = " ".join(commands) print(f"+ {command}") subprocess.run(command, env=env, cwd=cwd, shell=True, check=True) @@ -499,7 +501,7 @@ def print_new_wheels(msg: str, output_dir: Path) -> Generator[None, None, None]: ) -def get_pip_version(env: dict[str, str]) -> str: +def get_pip_version(env: Mapping[str, str]) -> str: versions_output_text = call( "python", "-m", "pip", "freeze", "--all", capture_stdout=True, env=env ) diff --git a/cibuildwheel/windows.py b/cibuildwheel/windows.py index 5ab8827a..caee9ce6 100644 --- a/cibuildwheel/windows.py +++ b/cibuildwheel/windows.py @@ -6,7 +6,7 @@ import shutil import subprocess import sys import textwrap -from collections.abc import Sequence, Set +from collections.abc import MutableMapping, Sequence, Set from contextlib import suppress from dataclasses import dataclass from functools import lru_cache @@ -137,7 +137,7 @@ def setup_setuptools_cross_compile( tmp: Path, python_configuration: PythonConfiguration, python_libs_base: Path, - env: dict[str, str], + env: MutableMapping[str, str], ) -> None: distutils_cfg = tmp / "extra-setup.cfg" env["DIST_EXTRA_CONFIG"] = str(distutils_cfg) @@ -185,7 +185,7 @@ def setup_rust_cross_compile( tmp: Path, # noqa: ARG001 python_configuration: PythonConfiguration, python_libs_base: Path, # noqa: ARG001 - env: dict[str, str], + env: MutableMapping[str, str], ) -> None: # Assume that MSVC will be used, because we already know that we are # cross-compiling. MinGW users can set CARGO_BUILD_TARGET themselves From 9f18d385cbb38b9c24f46a2c798f361ecea8fd5c Mon Sep 17 00:00:00 2001 From: Joe Rickerby Date: Tue, 18 Apr 2023 21:11:25 +0100 Subject: [PATCH 48/96] Bump version: v2.12.2 --- README.md | 22 +++++++++------------- cibuildwheel/__init__.py | 2 +- docs/changelog.md | 8 ++++++++ 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, 44 insertions(+), 40 deletions(-) diff --git a/README.md b/README.md index e012e44c..323bbeaf 100644 --- a/README.md +++ b/README.md @@ -94,7 +94,7 @@ jobs: - uses: actions/setup-python@v3 - name: Install cibuildwheel - run: python -m pip install cibuildwheel==2.12.1 + run: python -m pip install cibuildwheel==2.12.2 - name: Build wheels run: python -m cibuildwheel --output-dir wheelhouse @@ -210,6 +210,14 @@ Changelog +### v2.12.2 + +_18 April 2023_ + +- 🐛 Fix a bug that caused an extra empty config-setting to be passed to the backend when CIBW_BUILD_FRONTEND is set to `build`. (#1474) +- 🐛 Fix a crash that occurred when overwriting an existing wheel on Windows. (#1464) +- 🛠 Pinned version updates, including CPython 3.10.11, 3.11.3, pip 23.1 and wheel 0.40.0. + ### v2.12.1 _11 March 2023_ @@ -240,18 +248,6 @@ _5 Dec 2022_ - ✨ Added a friendly error message to a common misconfiguration of the `CIBW_TEST_COMMAND` option - not specifying path using the `{project}` placeholder (#1336) - 🛠 The GitHub Action now uses Powershell on Windows to avoid occasional incompabilities with bash (#1346) -### v2.11.2 - -_26 October 2022_ - -- 🛠 Updates CPython 3.11 to 3.11.0 - final release (#1327) -- 🛠 Simplify the default macOS repair command (#1322) -- 🛠 Fix the default `MACOSX_DEPLOYMENT_TARGET` on arm64 (#1312) -- 🛠 Hide irrelevant pip warnings on linux (#1311) -- 🐛 Fix a bug that caused the stdout and stderr of commands in containers to be in the wrong order Previously, stdout could appear after stderr. (#1324) -- 📚 Added [a FAQ entry](https://cibuildwheel.readthedocs.io/en/stable/faq/#macos-building-cpython-38-wheels-on-arm64) describing how to perform native builds of CPython 3.8 wheels on Apple Silicon. (#1323) -- 📚 Other docs improvements - --- diff --git a/cibuildwheel/__init__.py b/cibuildwheel/__init__.py index b9fbec2d..c0ef25cc 100644 --- a/cibuildwheel/__init__.py +++ b/cibuildwheel/__init__.py @@ -1,3 +1,3 @@ from __future__ import annotations -__version__ = "2.12.1" +__version__ = "2.12.2" diff --git a/docs/changelog.md b/docs/changelog.md index fb151e4e..68a2187a 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -4,6 +4,14 @@ title: Changelog # Changelog +### v2.12.2 + +_18 April 2023_ + +- 🐛 Fix a bug that caused an extra empty config-setting to be passed to the backend when CIBW_BUILD_FRONTEND is set to `build`. (#1474) +- 🐛 Fix a crash that occurred when overwriting an existing wheel on Windows. (#1464) +- 🛠 Pinned version updates, including CPython 3.10.11, 3.11.3, pip 23.1 and wheel 0.40.0. + ### v2.12.1 _11 March 2023_ diff --git a/docs/faq.md b/docs/faq.md index efef2814..5593381d 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -145,7 +145,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.12.1 +uses: pypa/cibuildwheel@v2.12.2 ``` This is a composite step that just runs cibuildwheel using pipx. You can set command-line options as `with:` parameters, and use `env:` as normal. @@ -167,7 +167,7 @@ The second option, and the only one that supports other CI systems, is using a ` ```bash # requirements-cibw.txt -cibuildwheel==2.12.1 +cibuildwheel==2.12.2 ``` Then your install step would have `python -m pip install -r requirements-cibw.txt` in it. Your `.github/dependabot.yml` file could look like this: @@ -311,7 +311,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.12.1 --output-dir wheelhouse +pipx run cibuildwheel==2.12.2 --output-dir wheelhouse pipx run twine upload wheelhouse/*.whl ``` diff --git a/docs/setup.md b/docs/setup.md index 03186235..771ed5b2 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.12.1 + run: pipx run cibuildwheel==2.12.2 - 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.12.1 + run: python -m pip install cibuildwheel==2.12.2 - name: Build wheels run: python -m cibuildwheel --output-dir wheelhouse diff --git a/examples/appveyor-minimal.yml b/examples/appveyor-minimal.yml index 4e075827..13e817f4 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.12.1 +install: python -m pip install cibuildwheel==2.12.2 build_script: python -m cibuildwheel --output-dir wheelhouse diff --git a/examples/azure-pipelines-minimal.yml b/examples/azure-pipelines-minimal.yml index 62d6d50e..97dbeaaf 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.12.1 + pip3 install cibuildwheel==2.12.2 displayName: Install dependencies - bash: cibuildwheel --output-dir wheelhouse . displayName: Build wheels @@ -20,7 +20,7 @@ jobs: - bash: | set -o errexit python3 -m pip install --upgrade pip - python3 -m pip install cibuildwheel==2.12.1 + python3 -m pip install cibuildwheel==2.12.2 displayName: Install dependencies - bash: cibuildwheel --output-dir wheelhouse . displayName: Build wheels @@ -34,7 +34,7 @@ jobs: - bash: | set -o errexit python -m pip install --upgrade pip - pip install cibuildwheel==2.12.1 + pip install cibuildwheel==2.12.2 displayName: Install dependencies - bash: cibuildwheel --output-dir wheelhouse . displayName: Build wheels diff --git a/examples/circleci-minimal.yml b/examples/circleci-minimal.yml index 80ef3188..c8bccc59 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.12.1 + pip3 install --user cibuildwheel==2.12.2 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.12.1 + python3 -m pip install --user cibuildwheel==2.12.2 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.12.1 + pip3 install cibuildwheel==2.12.2 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 69ee06c2..f12c36cc 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.12.1 + - python -m pip install cibuildwheel==2.12.2 run_cibuildwheel_script: - cibuildwheel wheels_artifacts: diff --git a/examples/cirrus-ci-minimal.yml b/examples/cirrus-ci-minimal.yml index 27033da6..b7e5b3e3 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.12.1 + - python -m pip install cibuildwheel==2.12.2 run_cibuildwheel_script: - cibuildwheel wheels_artifacts: diff --git a/examples/github-apple-silicon.yml b/examples/github-apple-silicon.yml index b01ab37b..0c3bf65b 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.12.1 + uses: pypa/cibuildwheel@v2.12.2 env: CIBW_ARCHS_MACOS: x86_64 arm64 diff --git a/examples/github-deploy.yml b/examples/github-deploy.yml index 820f59f0..cf7bf50a 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.12.1 + uses: pypa/cibuildwheel@v2.12.2 - uses: actions/upload-artifact@v3 with: diff --git a/examples/github-minimal.yml b/examples/github-minimal.yml index 682cf6f4..b1a1cd7e 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.12.1 + uses: pypa/cibuildwheel@v2.12.2 # env: # CIBW_SOME_OPTION: value # ... diff --git a/examples/github-with-qemu.yml b/examples/github-with-qemu.yml index 4641e7d9..3dae9786 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.12.1 + uses: pypa/cibuildwheel@v2.12.2 env: # configure cibuildwheel to build native archs ('auto'), and some # emulated ones diff --git a/examples/gitlab-minimal.yml b/examples/gitlab-minimal.yml index 1db68a43..3ca6f7a5 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.12.1 + - python -m pip install cibuildwheel==2.12.2 - 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.12.1 + - py -m pip install cibuildwheel==2.12.2 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 21bfb627..98615712 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.12.1 + - python -m pip install cibuildwheel==2.12.2 # 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 9854f2dc..3063e136 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.12.1 + - python3 -m pip install cibuildwheel==2.12.2 script: # build the wheels, put them into './dist' diff --git a/examples/travis-ci-minimal.yml b/examples/travis-ci-minimal.yml index 642dd729..6b7c78b3 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.12.1 + - python3 -m pip install cibuildwheel==2.12.2 script: # build the wheels, put them into './wheelhouse' diff --git a/examples/travis-ci-test-and-deploy.yml b/examples/travis-ci-test-and-deploy.yml index 12f560ba..9b9ae586 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.12.1 twine + install: python3 -m pip install cibuildwheel==2.12.2 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.12.1 twine + install: python3 -m pip install cibuildwheel==2.12.2 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 cf66d392..02801de7 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = cibuildwheel -version = 2.12.1 +version = 2.12.2 description = Build Python wheels on CI with minimal configuration. long_description = file: README.md long_description_content_type = text/markdown From e42f243b523a93352f0686ba2f4a62b7bf5f7d34 Mon Sep 17 00:00:00 2001 From: Henry Schreiner Date: Tue, 18 Apr 2023 21:42:16 -0400 Subject: [PATCH 49/96] ci: add Python 3.7 Signed-off-by: Henry Schreiner --- .github/workflows/test.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 36ed2511..aa07602e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -39,6 +39,9 @@ jobs: matrix: os: [ubuntu-20.04, windows-latest, macos-11] python_version: ['3.11'] + include: + - os: ubuntu-22.04 + python_version: '3.7' timeout-minutes: 180 steps: - uses: actions/checkout@v3 From d996af554ae21435028e538e417e403e8db7433e Mon Sep 17 00:00:00 2001 From: Henry Schreiner Date: Tue, 18 Apr 2023 22:02:47 -0400 Subject: [PATCH 50/96] fix: restore Python 3.7 support Signed-off-by: Henry Schreiner --- bin/update_pythons.py | 2 +- bin/update_virtualenv.py | 2 +- cibuildwheel/__main__.py | 11 ++++++----- cibuildwheel/_compat/__init__.py | 1 + .../_functools_cached_property_38.py} | 0 cibuildwheel/_compat/functools.py | 10 ++++++++++ cibuildwheel/{ => _compat}/typing.py | 4 ++-- cibuildwheel/architecture.py | 2 +- cibuildwheel/environment.py | 3 +-- cibuildwheel/extra.py | 2 +- cibuildwheel/linux.py | 2 +- cibuildwheel/logger.py | 4 ++-- cibuildwheel/macos.py | 2 +- cibuildwheel/oci_container.py | 2 +- cibuildwheel/options.py | 2 +- cibuildwheel/util.py | 9 ++------- cibuildwheel/windows.py | 2 +- pyproject.toml | 9 ++++++++- 18 files changed, 41 insertions(+), 28 deletions(-) create mode 100644 cibuildwheel/_compat/__init__.py rename cibuildwheel/{functools_cached_property_38.py => _compat/_functools_cached_property_38.py} (100%) create mode 100644 cibuildwheel/_compat/functools.py rename cibuildwheel/{ => _compat}/typing.py (92%) diff --git a/bin/update_pythons.py b/bin/update_pythons.py index 35f6a76e..8649f765 100755 --- a/bin/update_pythons.py +++ b/bin/update_pythons.py @@ -24,8 +24,8 @@ from packaging.version import Version from rich.logging import RichHandler from rich.syntax import Syntax +from cibuildwheel._compat.typing import Final, Literal, TypedDict from cibuildwheel.extra import dump_python_configurations -from cibuildwheel.typing import Final, Literal, TypedDict log = logging.getLogger("cibw") diff --git a/bin/update_virtualenv.py b/bin/update_virtualenv.py index d7c7dc8a..7e22d383 100755 --- a/bin/update_virtualenv.py +++ b/bin/update_virtualenv.py @@ -21,7 +21,7 @@ from packaging.version import InvalidVersion, Version from rich.logging import RichHandler from rich.syntax import Syntax -from cibuildwheel.typing import Final +from cibuildwheel._compat.typing import Final log = logging.getLogger("cibw") diff --git a/cibuildwheel/__main__.py b/cibuildwheel/__main__.py index 9dfba151..c6b02bec 100644 --- a/cibuildwheel/__main__.py +++ b/cibuildwheel/__main__.py @@ -16,15 +16,16 @@ import cibuildwheel.linux import cibuildwheel.macos import cibuildwheel.util import cibuildwheel.windows -from cibuildwheel.architecture import Architecture, allowed_architectures_check -from cibuildwheel.logger import log -from cibuildwheel.options import CommandLineArguments, Options, compute_options -from cibuildwheel.typing import ( +from cibuildwheel._compat.typing import ( PLATFORMS, GenericPythonConfiguration, PlatformName, + Protocol, assert_never, ) +from cibuildwheel.architecture import Architecture, allowed_architectures_check +from cibuildwheel.logger import log +from cibuildwheel.options import CommandLineArguments, Options, compute_options from cibuildwheel.util import ( CIBW_CACHE_PATH, BuildSelector, @@ -244,7 +245,7 @@ def _compute_platform(args: CommandLineArguments) -> PlatformName: return _compute_platform_ci() -class PlatformModule(typing.Protocol): +class PlatformModule(Protocol): # note that as per PEP544, the self argument is ignored when the protocol # is applied to a module def get_python_configurations( diff --git a/cibuildwheel/_compat/__init__.py b/cibuildwheel/_compat/__init__.py new file mode 100644 index 00000000..9d48db4f --- /dev/null +++ b/cibuildwheel/_compat/__init__.py @@ -0,0 +1 @@ +from __future__ import annotations diff --git a/cibuildwheel/functools_cached_property_38.py b/cibuildwheel/_compat/_functools_cached_property_38.py similarity index 100% rename from cibuildwheel/functools_cached_property_38.py rename to cibuildwheel/_compat/_functools_cached_property_38.py diff --git a/cibuildwheel/_compat/functools.py b/cibuildwheel/_compat/functools.py new file mode 100644 index 00000000..8fe86a3e --- /dev/null +++ b/cibuildwheel/_compat/functools.py @@ -0,0 +1,10 @@ +from __future__ import annotations + +import sys + +if sys.version_info >= (3, 8): + from functools import cached_property +else: + from ._functools_cached_property_38 import cached_property + +__all__ = ("cached_property",) diff --git a/cibuildwheel/typing.py b/cibuildwheel/_compat/typing.py similarity index 92% rename from cibuildwheel/typing.py rename to cibuildwheel/_compat/typing.py index 9374401c..01475bbb 100644 --- a/cibuildwheel/typing.py +++ b/cibuildwheel/_compat/typing.py @@ -8,12 +8,12 @@ from typing import TYPE_CHECKING, Union if sys.version_info < (3, 8): from typing_extensions import Final, Literal, OrderedDict, Protocol, TypedDict else: - from typing import Final, Literal, OrderedDict, Protocol, TypedDict + from typing import Final, Literal, OrderedDict, Protocol, TypedDict # noqa: TID251 if sys.version_info < (3, 11): from typing_extensions import NotRequired, assert_never else: - from typing import NotRequired, assert_never + from typing import NotRequired, assert_never # noqa: TID251 __all__ = ( "Final", diff --git a/cibuildwheel/architecture.py b/cibuildwheel/architecture.py index 8c4b2293..ec5116f2 100644 --- a/cibuildwheel/architecture.py +++ b/cibuildwheel/architecture.py @@ -7,7 +7,7 @@ import sys from collections.abc import Set from enum import Enum -from .typing import Final, Literal, PlatformName, assert_never +from ._compat.typing import Final, Literal, PlatformName, assert_never PRETTY_NAMES: Final = {"linux": "Linux", "macos": "macOS", "windows": "Windows"} diff --git a/cibuildwheel/environment.py b/cibuildwheel/environment.py index 2a7b99a2..3117b54e 100644 --- a/cibuildwheel/environment.py +++ b/cibuildwheel/environment.py @@ -7,9 +7,8 @@ from typing import Any import bashlex import bashlex.errors -from cibuildwheel.typing import Protocol - from . import bashlex_eval +from ._compat.typing import Protocol class EnvironmentParseError(Exception): diff --git a/cibuildwheel/extra.py b/cibuildwheel/extra.py index 03e3ce6f..5ac9ea1f 100644 --- a/cibuildwheel/extra.py +++ b/cibuildwheel/extra.py @@ -7,7 +7,7 @@ from __future__ import annotations from collections.abc import Mapping, Sequence from io import StringIO -from .typing import Protocol +from ._compat.typing import Protocol __all__ = ("Printable", "dump_python_configurations") diff --git a/cibuildwheel/linux.py b/cibuildwheel/linux.py index 4f019ac3..18ab1954 100644 --- a/cibuildwheel/linux.py +++ b/cibuildwheel/linux.py @@ -8,11 +8,11 @@ from dataclasses import dataclass from pathlib import Path, PurePath, PurePosixPath from typing import Tuple +from ._compat.typing import OrderedDict, PathOrStr, assert_never from .architecture import Architecture from .logger import log from .oci_container import OCIContainer from .options import Options -from .typing import OrderedDict, PathOrStr, assert_never from .util import ( AlreadyBuiltWheelError, BuildSelector, diff --git a/cibuildwheel/logger.py b/cibuildwheel/logger.py index 014f3b00..bc63a3aa 100644 --- a/cibuildwheel/logger.py +++ b/cibuildwheel/logger.py @@ -7,8 +7,8 @@ import sys import time from typing import IO, AnyStr -from cibuildwheel.typing import Final -from cibuildwheel.util import CIProvider, detect_ci_provider +from ._compat.typing import Final +from .util import CIProvider, detect_ci_provider DEFAULT_FOLD_PATTERN: Final = ("{name}", "") FOLD_PATTERNS: Final = { diff --git a/cibuildwheel/macos.py b/cibuildwheel/macos.py index 75614449..10f26d0f 100644 --- a/cibuildwheel/macos.py +++ b/cibuildwheel/macos.py @@ -16,11 +16,11 @@ from typing import Tuple from filelock import FileLock +from ._compat.typing import Literal, PathOrStr, assert_never from .architecture import Architecture from .environment import ParsedEnvironment from .logger import log from .options import Options -from .typing import Literal, PathOrStr, assert_never from .util import ( CIBW_CACHE_PATH, AlreadyBuiltWheelError, diff --git a/cibuildwheel/oci_container.py b/cibuildwheel/oci_container.py index aa54eefb..4d76c5c3 100644 --- a/cibuildwheel/oci_container.py +++ b/cibuildwheel/oci_container.py @@ -17,7 +17,7 @@ from typing import IO, Dict from cibuildwheel.util import CIProvider, detect_ci_provider -from .typing import Literal, PathOrStr, PopenBytes +from ._compat.typing import Literal, PathOrStr, PopenBytes ContainerEngine = Literal["docker", "podman"] diff --git a/cibuildwheel/options.py b/cibuildwheel/options.py index d28e7621..7214bea0 100644 --- a/cibuildwheel/options.py +++ b/cibuildwheel/options.py @@ -22,12 +22,12 @@ else: from packaging.specifiers import SpecifierSet +from ._compat.typing import PLATFORMS, Literal, NotRequired, PlatformName, TypedDict from .architecture import Architecture from .environment import EnvironmentParseError, ParsedEnvironment, parse_environment from .logger import log from .oci_container import ContainerEngine from .projectfiles import get_requires_python_str -from .typing import PLATFORMS, Literal, NotRequired, PlatformName, TypedDict from .util import ( MANYLINUX_ARCHS, MUSLLINUX_ARCHS, diff --git a/cibuildwheel/util.py b/cibuildwheel/util.py index 2ba4fe6a..0b5ae24c 100644 --- a/cibuildwheel/util.py +++ b/cibuildwheel/util.py @@ -36,7 +36,8 @@ from packaging.utils import parse_wheel_filename from packaging.version import Version from platformdirs import user_cache_path -from cibuildwheel.typing import Final, Literal, PathOrStr, PlatformName +from ._compat.functools import cached_property +from ._compat.typing import Final, Literal, PathOrStr, PlatformName __all__ = [ "resources_dir", @@ -661,12 +662,6 @@ def find_compatible_wheel(wheels: Sequence[T], identifier: str) -> T | None: return None -if sys.version_info >= (3, 8): - from functools import cached_property -else: - from .functools_cached_property_38 import cached_property - - # Can be replaced by contextlib.chdir in Python 3.11 @contextlib.contextmanager def chdir(new_path: Path | str) -> Generator[None, None, None]: diff --git a/cibuildwheel/windows.py b/cibuildwheel/windows.py index caee9ce6..eba342b3 100644 --- a/cibuildwheel/windows.py +++ b/cibuildwheel/windows.py @@ -16,11 +16,11 @@ from zipfile import ZipFile from filelock import FileLock from packaging.version import Version +from ._compat.typing import PathOrStr, assert_never from .architecture import Architecture from .environment import ParsedEnvironment from .logger import log from .options import Options -from .typing import PathOrStr, assert_never from .util import ( CIBW_CACHE_PATH, AlreadyBuiltWheelError, diff --git a/pyproject.toml b/pyproject.toml index 570772db..29e9c231 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -149,7 +149,7 @@ extend-ignore = [ "PT007", # False positive (fixed upstream) ] target-version = "py37" -typing-modules = ["cibuildwheel.typing"] +typing-modules = ["cibuildwheel._compat.typing"] flake8-unused-arguments.ignore-variadic-names = true [tool.ruff.flake8-tidy-imports.banned-api] @@ -158,6 +158,13 @@ flake8-unused-arguments.ignore-variadic-names = true "typing.Iterator".msg = "Use collections.abc.Iterator instead." "typing.Sequence".msg = "Use collections.abc.Sequence instead." "typing.Set".msg = "Use collections.abc.Set instead." +"typing.Protocol".msg = "Use cibuildwheel._compat.typing.Protocol instead." +"typing.Final".msg = "Use cibuildwheel._compat.typing.Final instead." +"typing.Literal".msg = "Use cibuildwheel._compat.typing.Literal instead." +"typing.OrderedDict".msg = "Use cibuildwheel._compat.typing.OrderedDict instead." +"typing.TypedDict".msg = "Use cibuildwheel._compat.typing.TypedDict instead." +"typing.NotRequired".msg = "Use cibuildwheel._compat.typing.NotRequired instead." +"typing.assert_never".msg = "Use cibuildwhee._compat.typing.assert_never instead." [tool.ruff.per-file-ignores] "unit_test/*" = ["PLC1901"] From 31bd9c91743e09f5b48c4def38c255c14c00d1af Mon Sep 17 00:00:00 2001 From: Henry Schreiner Date: Tue, 18 Apr 2023 23:05:34 -0400 Subject: [PATCH 51/96] refactor: restore typing for non-backports Signed-off-by: Henry Schreiner --- cibuildwheel/__main__.py | 9 ++------- cibuildwheel/_compat/typing.py | 26 -------------------------- cibuildwheel/architecture.py | 3 ++- cibuildwheel/linux.py | 3 ++- cibuildwheel/macos.py | 3 ++- cibuildwheel/oci_container.py | 6 +++--- cibuildwheel/options.py | 3 ++- cibuildwheel/typing.py | 34 ++++++++++++++++++++++++++++++++++ cibuildwheel/util.py | 3 ++- cibuildwheel/windows.py | 3 ++- 10 files changed, 51 insertions(+), 42 deletions(-) create mode 100644 cibuildwheel/typing.py diff --git a/cibuildwheel/__main__.py b/cibuildwheel/__main__.py index c6b02bec..3682fad4 100644 --- a/cibuildwheel/__main__.py +++ b/cibuildwheel/__main__.py @@ -16,16 +16,11 @@ import cibuildwheel.linux import cibuildwheel.macos import cibuildwheel.util import cibuildwheel.windows -from cibuildwheel._compat.typing import ( - PLATFORMS, - GenericPythonConfiguration, - PlatformName, - Protocol, - assert_never, -) +from cibuildwheel._compat.typing import Protocol, assert_never from cibuildwheel.architecture import Architecture, allowed_architectures_check from cibuildwheel.logger import log from cibuildwheel.options import CommandLineArguments, Options, compute_options +from cibuildwheel.typing import PLATFORMS, GenericPythonConfiguration, PlatformName from cibuildwheel.util import ( CIBW_CACHE_PATH, BuildSelector, diff --git a/cibuildwheel/_compat/typing.py b/cibuildwheel/_compat/typing.py index 01475bbb..62495adf 100644 --- a/cibuildwheel/_compat/typing.py +++ b/cibuildwheel/_compat/typing.py @@ -1,9 +1,6 @@ from __future__ import annotations -import os -import subprocess import sys -from typing import TYPE_CHECKING, Union if sys.version_info < (3, 8): from typing_extensions import Final, Literal, OrderedDict, Protocol, TypedDict @@ -18,33 +15,10 @@ else: __all__ = ( "Final", "Literal", - "PLATFORMS", - "PathOrStr", - "PlatformName", "Protocol", - "PLATFORMS", - "PopenBytes", "Protocol", "TypedDict", "OrderedDict", "assert_never", "NotRequired", ) - - -if TYPE_CHECKING: - PopenBytes = subprocess.Popen[bytes] - PathOrStr = Union[str, os.PathLike[str]] -else: - PopenBytes = subprocess.Popen - PathOrStr = Union[str, "os.PathLike[str]"] - - -PlatformName = Literal["linux", "macos", "windows"] -PLATFORMS: Final[set[PlatformName]] = {"linux", "macos", "windows"} - - -class GenericPythonConfiguration(Protocol): - @property - def identifier(self) -> str: - ... diff --git a/cibuildwheel/architecture.py b/cibuildwheel/architecture.py index ec5116f2..9d9af38b 100644 --- a/cibuildwheel/architecture.py +++ b/cibuildwheel/architecture.py @@ -7,7 +7,8 @@ import sys from collections.abc import Set from enum import Enum -from ._compat.typing import Final, Literal, PlatformName, assert_never +from ._compat.typing import Final, Literal, assert_never +from .typing import PlatformName PRETTY_NAMES: Final = {"linux": "Linux", "macos": "macOS", "windows": "Windows"} diff --git a/cibuildwheel/linux.py b/cibuildwheel/linux.py index 18ab1954..6fd393dc 100644 --- a/cibuildwheel/linux.py +++ b/cibuildwheel/linux.py @@ -8,11 +8,12 @@ from dataclasses import dataclass from pathlib import Path, PurePath, PurePosixPath from typing import Tuple -from ._compat.typing import OrderedDict, PathOrStr, assert_never +from ._compat.typing import OrderedDict, assert_never from .architecture import Architecture from .logger import log from .oci_container import OCIContainer from .options import Options +from .typing import PathOrStr from .util import ( AlreadyBuiltWheelError, BuildSelector, diff --git a/cibuildwheel/macos.py b/cibuildwheel/macos.py index 10f26d0f..1c103629 100644 --- a/cibuildwheel/macos.py +++ b/cibuildwheel/macos.py @@ -16,11 +16,12 @@ from typing import Tuple from filelock import FileLock -from ._compat.typing import Literal, PathOrStr, assert_never +from ._compat.typing import Literal, assert_never from .architecture import Architecture from .environment import ParsedEnvironment from .logger import log from .options import Options +from .typing import PathOrStr from .util import ( CIBW_CACHE_PATH, AlreadyBuiltWheelError, diff --git a/cibuildwheel/oci_container.py b/cibuildwheel/oci_container.py index 4d76c5c3..b2f6fe4a 100644 --- a/cibuildwheel/oci_container.py +++ b/cibuildwheel/oci_container.py @@ -15,9 +15,9 @@ from pathlib import Path, PurePath, PurePosixPath from types import TracebackType from typing import IO, Dict -from cibuildwheel.util import CIProvider, detect_ci_provider - -from ._compat.typing import Literal, PathOrStr, PopenBytes +from ._compat.typing import Literal +from .typing import PathOrStr, PopenBytes +from .util import CIProvider, detect_ci_provider ContainerEngine = Literal["docker", "podman"] diff --git a/cibuildwheel/options.py b/cibuildwheel/options.py index 7214bea0..d4c88222 100644 --- a/cibuildwheel/options.py +++ b/cibuildwheel/options.py @@ -22,12 +22,13 @@ else: from packaging.specifiers import SpecifierSet -from ._compat.typing import PLATFORMS, Literal, NotRequired, PlatformName, TypedDict +from ._compat.typing import Literal, NotRequired, TypedDict from .architecture import Architecture from .environment import EnvironmentParseError, ParsedEnvironment, parse_environment from .logger import log from .oci_container import ContainerEngine from .projectfiles import get_requires_python_str +from .typing import PLATFORMS, PlatformName from .util import ( MANYLINUX_ARCHS, MUSLLINUX_ARCHS, diff --git a/cibuildwheel/typing.py b/cibuildwheel/typing.py new file mode 100644 index 00000000..7abd9e3c --- /dev/null +++ b/cibuildwheel/typing.py @@ -0,0 +1,34 @@ +from __future__ import annotations + +import os +import subprocess +import typing +from typing import Union + +from ._compat.typing import Final, Literal, Protocol + +__all__ = ( + "PLATFORMS", + "PathOrStr", + "PlatformName", + "PLATFORMS", + "PopenBytes", +) + + +if typing.TYPE_CHECKING: + PopenBytes = subprocess.Popen[bytes] + PathOrStr = Union[str, os.PathLike[str]] +else: + PopenBytes = subprocess.Popen + PathOrStr = Union[str, "os.PathLike[str]"] + + +PlatformName = Literal["linux", "macos", "windows"] +PLATFORMS: Final[set[PlatformName]] = {"linux", "macos", "windows"} + + +class GenericPythonConfiguration(Protocol): + @property + def identifier(self) -> str: + ... diff --git a/cibuildwheel/util.py b/cibuildwheel/util.py index 0b5ae24c..00771eb5 100644 --- a/cibuildwheel/util.py +++ b/cibuildwheel/util.py @@ -37,7 +37,8 @@ from packaging.version import Version from platformdirs import user_cache_path from ._compat.functools import cached_property -from ._compat.typing import Final, Literal, PathOrStr, PlatformName +from ._compat.typing import Final, Literal +from .typing import PathOrStr, PlatformName __all__ = [ "resources_dir", diff --git a/cibuildwheel/windows.py b/cibuildwheel/windows.py index eba342b3..d3e58786 100644 --- a/cibuildwheel/windows.py +++ b/cibuildwheel/windows.py @@ -16,11 +16,12 @@ from zipfile import ZipFile from filelock import FileLock from packaging.version import Version -from ._compat.typing import PathOrStr, assert_never +from ._compat.typing import assert_never from .architecture import Architecture from .environment import ParsedEnvironment from .logger import log from .options import Options +from .typing import PathOrStr from .util import ( CIBW_CACHE_PATH, AlreadyBuiltWheelError, From aff6dd5adc49114f1ee49c82bcb386a142fc614a Mon Sep 17 00:00:00 2001 From: Henry Schreiner Date: Tue, 18 Apr 2023 23:29:54 -0400 Subject: [PATCH 52/96] refactor: tomllib in _compat Signed-off-by: Henry Schreiner --- bin/update_pythons.py | 8 +------- bin/update_virtualenv.py | 8 +------- cibuildwheel/_compat/tomllib.py | 10 ++++++++++ cibuildwheel/options.py | 6 +----- cibuildwheel/projectfiles.py | 5 +---- cibuildwheel/util.py | 7 +------ pyproject.toml | 4 +++- unit_test/build_ids_test.py | 8 +------- unit_test/main_tests/main_options_test.py | 6 +----- 9 files changed, 20 insertions(+), 42 deletions(-) create mode 100644 cibuildwheel/_compat/tomllib.py diff --git a/bin/update_pythons.py b/bin/update_pythons.py index 8649f765..e57a7173 100755 --- a/bin/update_pythons.py +++ b/bin/update_pythons.py @@ -5,7 +5,6 @@ from __future__ import annotations import copy import difflib import logging -import sys from collections.abc import Mapping, MutableMapping from pathlib import Path from typing import Any, Union @@ -13,17 +12,12 @@ from typing import Any, Union import click import requests import rich - -if sys.version_info >= (3, 11): - import tomllib -else: - import tomli as tomllib - from packaging.specifiers import Specifier from packaging.version import Version from rich.logging import RichHandler from rich.syntax import Syntax +from cibuildwheel._compat import tomllib from cibuildwheel._compat.typing import Final, Literal, TypedDict from cibuildwheel.extra import dump_python_configurations diff --git a/bin/update_virtualenv.py b/bin/update_virtualenv.py index 7e22d383..a0072406 100755 --- a/bin/update_virtualenv.py +++ b/bin/update_virtualenv.py @@ -5,22 +5,16 @@ from __future__ import annotations import difflib import logging import subprocess -import sys from dataclasses import dataclass from pathlib import Path import click import rich - -if sys.version_info >= (3, 11): - import tomllib -else: - import tomli as tomllib - from packaging.version import InvalidVersion, Version from rich.logging import RichHandler from rich.syntax import Syntax +from cibuildwheel._compat import tomllib from cibuildwheel._compat.typing import Final log = logging.getLogger("cibw") diff --git a/cibuildwheel/_compat/tomllib.py b/cibuildwheel/_compat/tomllib.py new file mode 100644 index 00000000..f3b30fe6 --- /dev/null +++ b/cibuildwheel/_compat/tomllib.py @@ -0,0 +1,10 @@ +from __future__ import annotations + +import sys + +if sys.version_info >= (3, 11): + from tomllib import load # noqa: TID251 +else: + from tomli import load # noqa: TID251 + +__all__ = ("load",) diff --git a/cibuildwheel/options.py b/cibuildwheel/options.py index d4c88222..736f13a7 100644 --- a/cibuildwheel/options.py +++ b/cibuildwheel/options.py @@ -15,13 +15,9 @@ from collections.abc import Callable, Generator, Iterable, Iterator, Mapping, Se from pathlib import Path from typing import Any, Dict, List, Union -if sys.version_info >= (3, 11): - import tomllib -else: - import tomli as tomllib - from packaging.specifiers import SpecifierSet +from ._compat import tomllib from ._compat.typing import Literal, NotRequired, TypedDict from .architecture import Architecture from .environment import EnvironmentParseError, ParsedEnvironment, parse_environment diff --git a/cibuildwheel/projectfiles.py b/cibuildwheel/projectfiles.py index 0b87415b..95dc150d 100644 --- a/cibuildwheel/projectfiles.py +++ b/cibuildwheel/projectfiles.py @@ -7,10 +7,7 @@ import sys from pathlib import Path from typing import Any -if sys.version_info >= (3, 11): - import tomllib -else: - import tomli as tomllib +from ._compat import tomllib if sys.version_info < (3, 8): Constant = ast.Str diff --git a/cibuildwheel/util.py b/cibuildwheel/util.py index 00771eb5..8b5f9f62 100644 --- a/cibuildwheel/util.py +++ b/cibuildwheel/util.py @@ -23,12 +23,6 @@ from typing import Any, ClassVar, TextIO, TypeVar import bracex import certifi - -if sys.version_info >= (3, 11): - import tomllib -else: - import tomli as tomllib - from filelock import FileLock from packaging.requirements import InvalidRequirement, Requirement from packaging.specifiers import SpecifierSet @@ -36,6 +30,7 @@ from packaging.utils import parse_wheel_filename from packaging.version import Version from platformdirs import user_cache_path +from ._compat import tomllib from ._compat.functools import cached_property from ._compat.typing import Final, Literal from .typing import PathOrStr, PlatformName diff --git a/pyproject.toml b/pyproject.toml index 29e9c231..90420fca 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -164,7 +164,9 @@ flake8-unused-arguments.ignore-variadic-names = true "typing.OrderedDict".msg = "Use cibuildwheel._compat.typing.OrderedDict instead." "typing.TypedDict".msg = "Use cibuildwheel._compat.typing.TypedDict instead." "typing.NotRequired".msg = "Use cibuildwheel._compat.typing.NotRequired instead." -"typing.assert_never".msg = "Use cibuildwhee._compat.typing.assert_never instead." +"typing.assert_never".msg = "Use cibuildwheel._compat.typing.assert_never instead." +"tomllib".msg = "Use cibuildwheel._compat.tomllib instead." +"tomli".msg = "Use cibuildwheel._compat.tomllib instead." [tool.ruff.per-file-ignores] "unit_test/*" = ["PLC1901"] diff --git a/unit_test/build_ids_test.py b/unit_test/build_ids_test.py index 0f62ba40..a42af93d 100644 --- a/unit_test/build_ids_test.py +++ b/unit_test/build_ids_test.py @@ -1,14 +1,8 @@ from __future__ import annotations -import sys - -if sys.version_info >= (3, 11): - import tomllib -else: - import tomli as tomllib - from packaging.version import Version +from cibuildwheel._compat import tomllib from cibuildwheel.extra import Printable, dump_python_configurations from cibuildwheel.util import resources_dir diff --git a/unit_test/main_tests/main_options_test.py b/unit_test/main_tests/main_options_test.py index 6cda8967..8d2010ee 100644 --- a/unit_test/main_tests/main_options_test.py +++ b/unit_test/main_tests/main_options_test.py @@ -6,12 +6,8 @@ from pathlib import Path import pytest -if sys.version_info >= (3, 11): - import tomllib -else: - import tomli as tomllib - from cibuildwheel.__main__ import main +from cibuildwheel._compat import tomllib from cibuildwheel.environment import ParsedEnvironment from cibuildwheel.options import BuildOptions, _get_pinned_container_images from cibuildwheel.util import BuildSelector, resources_dir, split_config_settings From c6027e4fc72eee01851e06b1cd173aabeb3abfe0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edouard=20Choini=C3=A8re?= <27212526+echoix@users.noreply.github.com> Date: Tue, 18 Apr 2023 23:50:58 -0400 Subject: [PATCH 53/96] docs: fix options.md typos (#1477) --- docs/options.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/options.md b/docs/options.md index 1d1dfaf6..b0467fed 100644 --- a/docs/options.md +++ b/docs/options.md @@ -92,8 +92,8 @@ Options have the same names as the environment variable overrides, but are placed in `[tool.cibuildwheel]` and are lower case, with dashes, following common [TOML][] practice. Anything placed in subsections `linux`, `windows`, or `macos` will only affect those platforms. Lists can be used instead of -strings for items that are natually a list. Multiline strings also work just -like in in the environment variables. Environment variables will take +strings for items that are naturally a list. Multiline strings also work just +like in the environment variables. Environment variables will take precedence if defined. The example above using environment variables could have been written like this: @@ -237,7 +237,7 @@ For CPython, the minimally supported macOS version is 10.9; for PyPy 3.7, macOS Windows arm64 platform support is experimental. -See the [cibuildwheel 1 documentation](https://cibuildwheel.readthedocs.io/en/1.x/) for past end of life versions of Python, and PyPy2.7. +See the [cibuildwheel 1 documentation](https://cibuildwheel.readthedocs.io/en/1.x/) for past end-of-life versions of Python, and PyPy2.7. #### Examples @@ -314,7 +314,7 @@ See the [cibuildwheel 1 documentation](https://cibuildwheel.readthedocs.io/en/1. It is generally recommended to set `CIBW_BUILD` as an environment variable, though `skip` tends to be useful in a config file; you can statically declare that you don't - support pypy, for example. + support PyPy, for example.