diff --git a/cibuildwheel/resources/build-platforms.toml b/cibuildwheel/resources/build-platforms.toml index b56ce40c..3c02145f 100644 --- a/cibuildwheel/resources/build-platforms.toml +++ b/cibuildwheel/resources/build-platforms.toml @@ -97,12 +97,12 @@ python_configurations = [ { identifier = "cp310-macosx_x86_64", version = "3.10", url = "https://www.python.org/ftp/python/3.10.11/python-3.10.11-macos11.pkg" }, { identifier = "cp310-macosx_arm64", version = "3.10", url = "https://www.python.org/ftp/python/3.10.11/python-3.10.11-macos11.pkg" }, { identifier = "cp310-macosx_universal2", version = "3.10", url = "https://www.python.org/ftp/python/3.10.11/python-3.10.11-macos11.pkg" }, - { identifier = "cp311-macosx_x86_64", version = "3.11", url = "https://www.python.org/ftp/python/3.11.6/python-3.11.6-macos11.pkg" }, - { identifier = "cp311-macosx_arm64", version = "3.11", url = "https://www.python.org/ftp/python/3.11.6/python-3.11.6-macos11.pkg" }, - { identifier = "cp311-macosx_universal2", version = "3.11", url = "https://www.python.org/ftp/python/3.11.6/python-3.11.6-macos11.pkg" }, - { identifier = "cp312-macosx_x86_64", version = "3.12", url = "https://www.python.org/ftp/python/3.12.0/python-3.12.0-macos11.pkg" }, - { identifier = "cp312-macosx_arm64", version = "3.12", url = "https://www.python.org/ftp/python/3.12.0/python-3.12.0-macos11.pkg" }, - { identifier = "cp312-macosx_universal2", version = "3.12", url = "https://www.python.org/ftp/python/3.12.0/python-3.12.0-macos11.pkg" }, + { identifier = "cp311-macosx_x86_64", version = "3.11", url = "https://www.python.org/ftp/python/3.11.7/python-3.11.7-macos11.pkg" }, + { identifier = "cp311-macosx_arm64", version = "3.11", url = "https://www.python.org/ftp/python/3.11.7/python-3.11.7-macos11.pkg" }, + { identifier = "cp311-macosx_universal2", version = "3.11", url = "https://www.python.org/ftp/python/3.11.7/python-3.11.7-macos11.pkg" }, + { identifier = "cp312-macosx_x86_64", version = "3.12", url = "https://www.python.org/ftp/python/3.12.1/python-3.12.1-macos11.pkg" }, + { identifier = "cp312-macosx_arm64", version = "3.12", url = "https://www.python.org/ftp/python/3.12.1/python-3.12.1-macos11.pkg" }, + { identifier = "cp312-macosx_universal2", version = "3.12", url = "https://www.python.org/ftp/python/3.12.1/python-3.12.1-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" }, @@ -124,14 +124,14 @@ python_configurations = [ { identifier = "cp39-win_amd64", version = "3.9.13", arch = "64" }, { identifier = "cp310-win32", version = "3.10.11", arch = "32" }, { identifier = "cp310-win_amd64", version = "3.10.11", arch = "64" }, - { identifier = "cp311-win32", version = "3.11.6", arch = "32" }, - { identifier = "cp311-win_amd64", version = "3.11.6", arch = "64" }, - { identifier = "cp312-win32", version = "3.12.0", arch = "32" }, - { identifier = "cp312-win_amd64", version = "3.12.0", arch = "64" }, + { identifier = "cp311-win32", version = "3.11.7", arch = "32" }, + { identifier = "cp311-win_amd64", version = "3.11.7", arch = "64" }, + { identifier = "cp312-win32", version = "3.12.1", arch = "32" }, + { identifier = "cp312-win_amd64", version = "3.12.1", arch = "64" }, { identifier = "cp39-win_arm64", version = "3.9.10", arch = "ARM64" }, { identifier = "cp310-win_arm64", version = "3.10.11", arch = "ARM64" }, - { identifier = "cp311-win_arm64", version = "3.11.6", arch = "ARM64" }, - { identifier = "cp312-win_arm64", version = "3.12.0", arch = "ARM64" }, + { identifier = "cp311-win_arm64", version = "3.11.7", arch = "ARM64" }, + { identifier = "cp312-win_arm64", version = "3.12.1", 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.13-win64.zip" }, diff --git a/cibuildwheel/resources/constraints-python310.txt b/cibuildwheel/resources/constraints-python310.txt index 4fad94d8..b9cfb12c 100644 --- a/cibuildwheel/resources/constraints-python310.txt +++ b/cibuildwheel/resources/constraints-python310.txt @@ -12,11 +12,11 @@ filelock==3.13.1 # via virtualenv packaging==23.2 # via delocate -platformdirs==4.0.0 +platformdirs==4.1.0 # via virtualenv -typing-extensions==4.8.0 +typing-extensions==4.9.0 # via delocate -virtualenv==20.24.7 +virtualenv==20.25.0 # via -r cibuildwheel/resources/constraints.in wheel==0.42.0 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python311.txt b/cibuildwheel/resources/constraints-python311.txt index 52a4c916..692a528d 100644 --- a/cibuildwheel/resources/constraints-python311.txt +++ b/cibuildwheel/resources/constraints-python311.txt @@ -12,11 +12,11 @@ filelock==3.13.1 # via virtualenv packaging==23.2 # via delocate -platformdirs==4.0.0 +platformdirs==4.1.0 # via virtualenv -typing-extensions==4.8.0 +typing-extensions==4.9.0 # via delocate -virtualenv==20.24.7 +virtualenv==20.25.0 # via -r cibuildwheel/resources/constraints.in wheel==0.42.0 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python312.txt b/cibuildwheel/resources/constraints-python312.txt index 466a0fd0..2fb7f5df 100644 --- a/cibuildwheel/resources/constraints-python312.txt +++ b/cibuildwheel/resources/constraints-python312.txt @@ -12,11 +12,11 @@ filelock==3.13.1 # via virtualenv packaging==23.2 # via delocate -platformdirs==4.0.0 +platformdirs==4.1.0 # via virtualenv -typing-extensions==4.8.0 +typing-extensions==4.9.0 # via delocate -virtualenv==20.24.7 +virtualenv==20.25.0 # via -r cibuildwheel/resources/constraints.in wheel==0.42.0 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python37.txt b/cibuildwheel/resources/constraints-python37.txt index 70ec27c5..db4b9422 100644 --- a/cibuildwheel/resources/constraints-python37.txt +++ b/cibuildwheel/resources/constraints-python37.txt @@ -21,7 +21,7 @@ typing-extensions==4.7.1 # delocate # importlib-metadata # platformdirs -virtualenv==20.24.7 +virtualenv==20.25.0 # via -r cibuildwheel/resources/constraints.in wheel==0.42.0 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python38.txt b/cibuildwheel/resources/constraints-python38.txt index 6dad188b..82438b83 100644 --- a/cibuildwheel/resources/constraints-python38.txt +++ b/cibuildwheel/resources/constraints-python38.txt @@ -12,11 +12,11 @@ filelock==3.13.1 # via virtualenv packaging==23.2 # via delocate -platformdirs==4.0.0 +platformdirs==4.1.0 # via virtualenv -typing-extensions==4.8.0 +typing-extensions==4.9.0 # via delocate -virtualenv==20.24.7 +virtualenv==20.25.0 # via -r cibuildwheel/resources/constraints.in wheel==0.42.0 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints-python39.txt b/cibuildwheel/resources/constraints-python39.txt index e1524b26..e9fa33bd 100644 --- a/cibuildwheel/resources/constraints-python39.txt +++ b/cibuildwheel/resources/constraints-python39.txt @@ -12,11 +12,11 @@ filelock==3.13.1 # via virtualenv packaging==23.2 # via delocate -platformdirs==4.0.0 +platformdirs==4.1.0 # via virtualenv -typing-extensions==4.8.0 +typing-extensions==4.9.0 # via delocate -virtualenv==20.24.7 +virtualenv==20.25.0 # via -r cibuildwheel/resources/constraints.in wheel==0.42.0 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/constraints.txt b/cibuildwheel/resources/constraints.txt index 466a0fd0..2fb7f5df 100644 --- a/cibuildwheel/resources/constraints.txt +++ b/cibuildwheel/resources/constraints.txt @@ -12,11 +12,11 @@ filelock==3.13.1 # via virtualenv packaging==23.2 # via delocate -platformdirs==4.0.0 +platformdirs==4.1.0 # via virtualenv -typing-extensions==4.8.0 +typing-extensions==4.9.0 # via delocate -virtualenv==20.24.7 +virtualenv==20.25.0 # via -r cibuildwheel/resources/constraints.in wheel==0.42.0 # via -r cibuildwheel/resources/constraints.in diff --git a/cibuildwheel/resources/pinned_docker_images.cfg b/cibuildwheel/resources/pinned_docker_images.cfg index 15c9adca..7ca66c0a 100644 --- a/cibuildwheel/resources/pinned_docker_images.cfg +++ b/cibuildwheel/resources/pinned_docker_images.cfg @@ -1,54 +1,54 @@ [x86_64] -manylinux1 = quay.io/pypa/manylinux1_x86_64:2023-10-15-710807d +manylinux1 = quay.io/pypa/manylinux1_x86_64:2023-12-10-cee9633 manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-11-20-745eb52 +manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-12-09-3915976 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-11-20-745eb52 -musllinux_1_1 = quay.io/pypa/musllinux_1_1_x86_64:2023-11-20-745eb52 -musllinux_1_2 = quay.io/pypa/musllinux_1_2_x86_64:2023-11-20-745eb52 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2023-12-09-3915976 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_x86_64:2023-12-09-3915976 +musllinux_1_2 = quay.io/pypa/musllinux_1_2_x86_64:2023-12-09-3915976 [i686] -manylinux1 = quay.io/pypa/manylinux1_i686:2023-10-15-710807d +manylinux1 = quay.io/pypa/manylinux1_i686:2023-12-10-cee9633 manylinux2010 = quay.io/pypa/manylinux2010_i686:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-11-20-745eb52 +manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-12-09-3915976 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-11-20-745eb52 -musllinux_1_2 = quay.io/pypa/musllinux_1_2_i686:2023-11-20-745eb52 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_i686:2023-12-09-3915976 +musllinux_1_2 = quay.io/pypa/musllinux_1_2_i686:2023-12-09-3915976 [pypy_x86_64] manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-11-20-745eb52 +manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2023-12-09-3915976 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-11-20-745eb52 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2023-12-09-3915976 [pypy_i686] manylinux2010 = quay.io/pypa/manylinux2010_i686:2022-08-05-4535177 -manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-11-20-745eb52 +manylinux2014 = quay.io/pypa/manylinux2014_i686:2023-12-09-3915976 manylinux_2_24 = quay.io/pypa/manylinux_2_24_i686:2022-12-26-0d38463 [aarch64] -manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-11-20-745eb52 +manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-12-09-3915976 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-11-20-745eb52 -musllinux_1_1 = quay.io/pypa/musllinux_1_1_aarch64:2023-11-20-745eb52 -musllinux_1_2 = quay.io/pypa/musllinux_1_2_aarch64:2023-11-20-745eb52 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2023-12-09-3915976 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_aarch64:2023-12-09-3915976 +musllinux_1_2 = quay.io/pypa/musllinux_1_2_aarch64:2023-12-09-3915976 [ppc64le] -manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2023-11-20-745eb52 +manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2023-12-09-3915976 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-11-20-745eb52 -musllinux_1_1 = quay.io/pypa/musllinux_1_1_ppc64le:2023-11-20-745eb52 -musllinux_1_2 = quay.io/pypa/musllinux_1_2_ppc64le:2023-11-20-745eb52 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_ppc64le:2023-12-09-3915976 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_ppc64le:2023-12-09-3915976 +musllinux_1_2 = quay.io/pypa/musllinux_1_2_ppc64le:2023-12-09-3915976 [s390x] -manylinux2014 = quay.io/pypa/manylinux2014_s390x:2023-11-20-745eb52 +manylinux2014 = quay.io/pypa/manylinux2014_s390x:2023-12-09-3915976 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-11-20-745eb52 -musllinux_1_1 = quay.io/pypa/musllinux_1_1_s390x:2023-11-20-745eb52 -musllinux_1_2 = quay.io/pypa/musllinux_1_2_s390x:2023-11-20-745eb52 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_s390x:2023-12-09-3915976 +musllinux_1_1 = quay.io/pypa/musllinux_1_1_s390x:2023-12-09-3915976 +musllinux_1_2 = quay.io/pypa/musllinux_1_2_s390x:2023-12-09-3915976 [pypy_aarch64] -manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-11-20-745eb52 +manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2023-12-09-3915976 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-11-20-745eb52 +manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2023-12-09-3915976 diff --git a/docs/working-examples.md b/docs/working-examples.md index b8e3fb06..4487d2b1 100644 --- a/docs/working-examples.md +++ b/docs/working-examples.md @@ -46,8 +46,8 @@ title: Working examples | [coverage.py][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | The coverage tool for Python | | [PyCryptodome][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | A self-contained cryptographic library for Python | | [PyYAML][] | ![github icon][] | ![apple icon][] | Canonical source repository for PyYAML | -| [Line Profiler][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Line-by-line profiling 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. | +| [Line Profiler][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Line-by-line profiling for Python | | [PyAV][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Pythonic bindings for FFmpeg's libraries. | | [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. | @@ -67,8 +67,8 @@ title: Working examples | [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 | | [mosec][] | ![github icon][] | ![linux icon][] ![apple icon][] | A high-performance ML model serving framework, offers dynamic batching and CPU/GPU pipelines to fully exploit your compute machine | -| [Rtree][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Rtree: spatial index for Python GIS | | [Picologging][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A high-performance logging library for Python. | +| [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. | | [pybind11 cmake_example][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Example pybind11 module built with a CMake-based build system | | [time-machine][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Time mocking library using only the CPython C API. | @@ -93,12 +93,12 @@ title: Working examples | [boost-histogram][] | ![github icon][] ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Supports full range of wheels, including PyPy and alternate archs. | | [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 | -| [power-grid-model][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Python/C++ library for distribution power system analysis | | [fathon][] | ![travisci icon][] | ![apple icon][] ![linux icon][] | python package for DFA (Detrended Fluctuation Analysis) and related algorithms | +| [power-grid-model][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Python/C++ library for distribution power system analysis | | [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. | | [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. | | [pybind11 scikit_build_example][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | An example combining scikit-build and pybind11 | +| [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. | | [clang-format][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Scikit-build wrapper around LLVM's CMake, all platforms, generic wheels. | | [cf-units][] | ![github icon][] | ![apple icon][] ![linux icon][] | Units of measure as required by the Climate and Forecast (CF) Metadata Conventions | @@ -153,8 +153,8 @@ title: Working examples [coverage.py]: https://github.com/nedbat/coveragepy [PyCryptodome]: https://github.com/Legrandin/pycryptodome [PyYAML]: https://github.com/yaml/pyyaml -[Line Profiler]: https://github.com/pyutils/line_profiler [CTranslate2]: https://github.com/OpenNMT/CTranslate2 +[Line Profiler]: https://github.com/pyutils/line_profiler [PyAV]: https://github.com/PyAV-Org/PyAV [numexpr]: https://github.com/pydata/numexpr [h5py]: https://github.com/h5py/h5py @@ -174,8 +174,8 @@ title: Working examples [AutoPy]: https://github.com/autopilot-rs/autopy [H3-py]: https://github.com/uber/h3-py [mosec]: https://github.com/mosecorg/mosec -[Rtree]: https://github.com/Toblerity/rtree [Picologging]: https://github.com/microsoft/picologging +[Rtree]: https://github.com/Toblerity/rtree [markupsafe]: https://github.com/pallets/markupsafe [pybind11 cmake_example]: https://github.com/pybind/cmake_example [time-machine]: https://github.com/adamchainz/time-machine @@ -200,12 +200,12 @@ title: Working examples [boost-histogram]: https://github.com/scikit-hep/boost-histogram [Python-WebRTC]: https://github.com/MarshalX/python-webrtc [pybase64]: https://github.com/mayeut/pybase64 -[power-grid-model]: https://github.com/alliander-opensource/power-grid-model [fathon]: https://github.com/stfbnc/fathon +[power-grid-model]: https://github.com/alliander-opensource/power-grid-model [Arbor]: https://github.com/arbor-sim/arbor [Imagecodecs (fork)]: https://github.com/czaki/imagecodecs_build -[polaroid]: https://github.com/daggy1234/polaroid [pybind11 scikit_build_example]: https://github.com/pybind/scikit_build_example +[polaroid]: https://github.com/daggy1234/polaroid [etebase-py]: https://github.com/etesync/etebase-py [clang-format]: https://github.com/ssciwr/clang-format-wheel [cf-units]: https://github.com/SciTools/cf-units