diff --git a/README.md b/README.md
index 94b9ac0b..d80a542a 100644
--- a/README.md
+++ b/README.md
@@ -129,8 +129,6 @@ These options can be specified in a pyproject.toml file, as well; see [configura
Working examples
----------------
-
-
Here are some repos that use cibuildwheel.
@@ -149,56 +147,6 @@ Here are some repos that use cibuildwheel.
| [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. |
| [pyzmq][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Python bindings for zeromq, the networking library. Uses Cython and CFFI. |
| [aiortc][] | ![github icon][] | ![apple icon][] ![linux icon][] | WebRTC and ORTC implementation for Python using asyncio. |
-| [River][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | 🌊 Online machine learning in Python |
-| [coverage.py][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | The coverage tool for Python |
-| [numexpr][] | ![github icon][] ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Fast numerical array expression evaluator for Python, NumPy, PyTables, pandas, bcolz and more |
-| [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. |
-| [Dependency Injector][] | ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Dependency injection framework for Python, uses Windows TravisCI |
-| [PyAV][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Pythonic bindings for FFmpeg's libraries. |
-| [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. |
-| [aioquic][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | QUIC and HTTP/3 implementation in Python |
-| [pikepdf][] | ![azurepipelines icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A Python library for reading and writing PDF, powered by qpdf |
-| [google neuroglancer][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | WebGL-based viewer for volumetric data |
-| [DeepForest][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | An Efficient, Scalable and Optimized Python Framework for Deep Forest (2021.2.1) |
-| [AutoPy][] | ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Includes a Windows Travis build. |
-| [Parselmouth][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A Python interface to the Praat software package, using pybind11, C++17 and CMake, with the core Praat static library built only once and shared between wheels. |
-| [python-rapidjson][] | ![travisci icon][] ![gitlab icon][] ![appveyor icon][] | ![windows icon][] ![linux icon][] | Python wrapper around rapidjson |
-| [Rtree][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Rtree: spatial index for Python GIS ¶ |
-| [python-snappy][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Python bindings for the snappy google library |
-| [markupsafe][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Safely add untrusted strings to HTML/XML markup. |
-| [H3-py][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Python bindings for H3, a hierarchical hexagonal geospatial indexing system |
-| [pybind11 cmake_example][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Example pybind11 module built with a CMake-based build system |
-| [KDEpy][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Kernel Density Estimation in Python |
-| [cyvcf2][] | ![github icon][] | ![apple icon][] ![linux icon][] | cython + htslib == fast VCF and BCF processing |
-| [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. |
-| [time-machine][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Time mocking library using only the CPython C API. |
-| [iminuit][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Jupyter-friendly Python interface for C++ MINUIT2 |
-| [CTranslate2][] | ![github icon][] | ![apple icon][] ![linux icon][] | Includes libraries from the [Intel oneAPI toolkit](https://software.intel.com/content/www/us/en/develop/tools/oneapi/base-toolkit.html). The Linux wheels also include CUDA libraries for GPU execution. |
-| [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. |
-| [jq.py][] | ![travisci icon][] | ![apple icon][] ![linux icon][] | Python bindings for jq |
-| [Tokenizer][] | ![github icon][] ![travisci icon][] | ![apple icon][] ![linux icon][] | Fast and customizable text tokenization library with BPE and SentencePiece support |
-| [PyGLM][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Fast OpenGL Mathematics (GLM) for Python |
-| [bx-python][] | ![travisci icon][] | ![apple icon][] ![linux icon][] | A library that includes Cython extensions. |
-| [boost-histogram][] | ![github icon][] ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Supports full range of wheels, including PyPy and alternate archs. |
-| [iDynTree][] | ![github icon][] | ![linux icon][] | Uses manylinux_2_24 |
-| [pybase64][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Fast Base64 encoding/decoding in Python |
-| [TgCrypto][] | ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Includes a Windows Travis build. |
-| [etebase-py][] | ![travisci icon][] | ![linux icon][] | Python bindings to a Rust library using `setuptools-rust`, and `sccache` for improved speed. |
-| [fathon][] | ![travisci icon][] | ![apple icon][] ![linux icon][] | python package for DFA (Detrended Fluctuation Analysis) and related algorithms |
-| [pyjet][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | The interface between FastJet and NumPy |
-| [numpythia][] | ![github icon][] | ![apple icon][] ![linux icon][] | The interface between PYTHIA and NumPy |
-| [polaroid][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Full range of wheels for setuptools rust, with auto release and PyPI deploy. |
-| [ninja][] | ![github icon][] ![travisci icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Multitagged binary builds for all supported platforms, using cibw 2 config configuration. |
-| [GSD][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Cython and NumPy project with 64-bit wheels. |
-| [pybind11 scikit_build_example][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | An example combining scikit-build and pybind11 |
-| [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. |
-| [pyinstrument_cext][] | ![travisci icon][] ![appveyor icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A simple C extension, without external dependencies |
-| [xmlstarlet][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Python 3.6+ CFFI bindings with true MSVC build. |
-| [CorrectionLib][] | ![github icon][] | ![apple icon][] ![linux icon][] | Structured JSON powered correction library for HEP, designed for the CMS experiment at CERN. |
-| [SiPM][] | ![github icon][] | ![apple icon][] ![linux icon][] | High performance library for SiPM detectors simulation using C++17, OpenMP and AVX2 intrinsics. |
[scikit-learn]: https://github.com/scikit-learn/scikit-learn
[Matplotlib]: https://github.com/matplotlib/matplotlib
@@ -210,56 +158,6 @@ Here are some repos that use cibuildwheel.
[websockets]: https://github.com/aaugustin/websockets
[pyzmq]: https://github.com/zeromq/pyzmq
[aiortc]: https://github.com/aiortc/aiortc
-[River]: https://github.com/online-ml/river
-[coverage.py]: https://github.com/nedbat/coveragepy
-[numexpr]: https://github.com/pydata/numexpr
-[h5py]: https://github.com/h5py/h5py
-[Dependency Injector]: https://github.com/ets-labs/python-dependency-injector
-[PyAV]: https://github.com/PyAV-Org/PyAV
-[PyTables]: https://github.com/PyTables/PyTables
-[ruptures]: https://github.com/deepcharles/ruptures
-[aioquic]: https://github.com/aiortc/aioquic
-[pikepdf]: https://github.com/pikepdf/pikepdf
-[google neuroglancer]: https://github.com/google/neuroglancer
-[DeepForest]: https://github.com/LAMDA-NJU/Deep-Forest
-[AutoPy]: https://github.com/autopilot-rs/autopy
-[Parselmouth]: https://github.com/YannickJadoul/Parselmouth
-[python-rapidjson]: https://github.com/python-rapidjson/python-rapidjson
-[Rtree]: https://github.com/Toblerity/rtree
-[python-snappy]: https://github.com/andrix/python-snappy
-[markupsafe]: https://github.com/pallets/markupsafe
-[H3-py]: https://github.com/uber/h3-py
-[pybind11 cmake_example]: https://github.com/pybind/cmake_example
-[KDEpy]: https://github.com/tommyod/KDEpy
-[cyvcf2]: https://github.com/brentp/cyvcf2
-[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
-[time-machine]: https://github.com/adamchainz/time-machine
-[iminuit]: https://github.com/scikit-hep/iminuit
-[CTranslate2]: https://github.com/OpenNMT/CTranslate2
-[matrixprofile]: https://github.com/matrix-profile-foundation/matrixprofile
-[jq.py]: https://github.com/mwilliamson/jq.py
-[Tokenizer]: https://github.com/OpenNMT/Tokenizer
-[PyGLM]: https://github.com/Zuzu-Typ/PyGLM
-[bx-python]: https://github.com/bxlab/bx-python
-[boost-histogram]: https://github.com/scikit-hep/boost-histogram
-[iDynTree]: https://github.com/robotology/idyntree
-[pybase64]: https://github.com/mayeut/pybase64
-[TgCrypto]: https://github.com/pyrogram/tgcrypto
-[etebase-py]: https://github.com/etesync/etebase-py
-[fathon]: https://github.com/stfbnc/fathon
-[pyjet]: https://github.com/scikit-hep/pyjet
-[numpythia]: https://github.com/scikit-hep/numpythia
-[polaroid]: https://github.com/daggy1234/polaroid
-[ninja]: https://github.com/scikit-build/ninja-python-distributions
-[GSD]: https://github.com/glotzerlab/gsd
-[pybind11 scikit_build_example]: https://github.com/pybind/scikit_build_example
-[Imagecodecs (fork)]: https://github.com/czaki/imagecodecs_build
-[pyinstrument_cext]: https://github.com/joerick/pyinstrument_cext
-[xmlstarlet]: https://github.com/dimitern/xmlstarlet
-[CorrectionLib]: https://github.com/cms-nanoAOD/correctionlib
-[SiPM]: https://github.com/EdoPro98/SimSiPM
[appveyor icon]: docs/data/readme_icons/appveyor.svg
[github icon]: docs/data/readme_icons/github.svg
@@ -271,74 +169,9 @@ Here are some repos that use cibuildwheel.
[apple icon]: docs/data/readme_icons/apple.svg
[linux icon]: docs/data/readme_icons/linux.svg
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-> Add your repo here! Let us know on [GitHub Discussions](https://github.com/pypa/cibuildwheel/discussions/485), or send a PR, adding your information to `docs/data/projects.yml`.
->
-> I'd like to include notes here to indicate why an example might be interesting to cibuildwheel users - the styles/technologies/techniques used in each. Please include that in future additions!
-
-
+> ℹ️ That's just a handful, there are many more! Check out the [Working Examples](https://cibuildwheel.readthedocs.io/en/stable/working-examples) page in the docs.
Legal note
----------
diff --git a/bin/projects.py b/bin/projects.py
index ad7f27a5..792d9da1 100644
--- a/bin/projects.py
+++ b/bin/projects.py
@@ -5,7 +5,7 @@ Convert a yaml project list into a nice table.
Suggested usage:
- ./bin/projects.py docs/data/projects.yml --online --auth $GITHUB_API_TOKEN --readme README.md
+ ./bin/projects.py docs/data/projects.yml --online --auth $GITHUB_API_TOKEN
git diff
"""
@@ -139,28 +139,38 @@ def fetch_icon(icon_name: str) -> None:
f.write(svgElement.toxml())
-def path_for_icon(icon_name: str) -> Path:
- return Path(".") / "docs" / "data" / "readme_icons" / f"{icon_name}.svg"
+def path_for_icon(icon_name: str, relative_to: Path | None = None) -> Path:
+ if relative_to is None:
+ from_path = Path.cwd()
+ else:
+ from_path = relative_to.parent
+
+ absolute_path = PROJECT_ROOT / "docs" / "data" / "readme_icons" / f"{icon_name}.svg"
+
+ return absolute_path.resolve().relative_to(from_path.resolve())
-def str_projects(
+def get_projects(
config: list[dict[str, Any]],
*,
online: bool = True,
auth: str | None = None,
-) -> str:
- io = StringIO()
- print = functools.partial(builtins.print, file=io)
-
+) -> list[Project]:
if online:
for icon in ICONS:
fetch_icon(icon)
github = Github(auth) if online else None
- projects = sorted((Project(item, github) for item in config), reverse=online)
+ return sorted((Project(item, github) for item in config), reverse=online)
+
+
+def render_projects(projects: list[Project], *, include_info: bool = True, dest_path: Path):
+ io = StringIO()
+ print = functools.partial(builtins.print, file=io)
print(Project.header())
+
for project in projects:
print(project.table_row())
@@ -170,42 +180,73 @@ def str_projects(
print()
for icon in ICONS:
- print(f"[{icon} icon]: {path_for_icon(icon).as_posix()}")
+ print(f"[{icon} icon]: {path_for_icon(icon, relative_to=dest_path).as_posix()}")
- print()
- for project in projects:
- print(project.info())
+ if include_info:
+ print()
+ for project in projects:
+ print(project.info())
return io.getvalue()
-@click.command(help="Try ./bin/projects.py docs/data/projects.yml --readme README.md")
+def insert_projects_table(
+ file: Path,
+ *,
+ projects: list[Project],
+ input_filename: str,
+ include_info: bool = True,
+):
+ text = file.read_text()
+ projects_table = render_projects(projects, include_info=include_info, dest_path=file)
+
+ start_str = "\n"
+
+ start = text.find(start_str)
+ assert start != -1
+
+ end = text.find("\n")
+ assert end != -1
+
+ generated_note = f""
+ new_text = (
+ f"{text[:start + len(start_str)]}\n{generated_note}\n\n{projects_table}\n{text[end:]}"
+ )
+
+ file.write_text(new_text)
+
+
+PROJECT_ROOT = Path(__file__).parent / ".."
+README_FILE = PROJECT_ROOT / "README.md"
+DOCS_PAGE = PROJECT_ROOT / "docs" / "working-examples.md"
+
+
+@click.command(help="Try ./bin/projects.py docs/data/projects.yml")
@click.argument("input", type=click.File("r"))
@click.option("--online/--no-online", default=True, help="Get info from GitHub")
@click.option("--auth", help="GitHub authentication token")
-@click.option("--readme", type=click.File("r+"), help="Modify a readme file if given")
+@click.option(
+ "--dry-run", default=False, help="Print the output, rather than writing it to files in the repo"
+)
def projects(
input: TextIO,
online: bool,
auth: str | None,
- readme: TextIO | None,
+ dry_run: bool,
) -> None:
config = yaml.safe_load(input)
- output = str_projects(config, online=online, auth=auth)
+ projects = get_projects(config, online=online, auth=auth)
- if readme is None:
+ if dry_run:
+ output = render_projects(projects, dest_path=README_FILE)
print(output)
else:
- text = readme.read()
- start_str = "\n"
- start = text.find(start_str)
- end = text.find("\n")
- generated_note = f""
- new_text = f"{text[:start + len(start_str)]}\n{generated_note}\n\n{output}\n{text[end:]}"
-
- readme.seek(0)
- readme.write(new_text)
- readme.truncate()
+ insert_projects_table(
+ README_FILE, projects=projects[:10], input_filename=input.name, include_info=False
+ )
+ insert_projects_table(
+ DOCS_PAGE, projects=projects, input_filename=input.name, include_info=True
+ )
if __name__ == "__main__":
diff --git a/docs/working-examples.md b/docs/working-examples.md
index e2c3b86c..d7f46b45 100644
--- a/docs/working-examples.md
+++ b/docs/working-examples.md
@@ -2,11 +2,210 @@
title: Working examples
---
-{%
- include-markdown "../README.md"
- start=""
- end=""
-%}
+
+
+
+
+| Name | CI | OS | Notes |
+|-----------------------------------|----|----|:------|
+| [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. |
+| [Matplotlib][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | The venerable Matplotlib, a Python library with C++ portions |
+| [MyPy][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | MyPyC, the compiled component of MyPy. |
+| [psutil][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Cross-platform lib for process and system monitoring in Python |
+| [scikit-image][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Image processing library. Uses cibuildwheel to build and test a project that uses Cython with platform-native code. |
+| [twisted-iocpsupport][] | ![github icon][] | ![windows icon][] | A submodule of Twisted that hooks into native C APIs using Cython. |
+| [cmake][] | ![github icon][] ![travisci icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Multitagged binary builds for all supported platforms, using cibw 2 config configuration. |
+| [websockets][] | ![travisci icon][] | ![apple icon][] ![linux icon][] | Library for building WebSocket servers and clients. Mostly written in Python, with a small C 'speedups' extension module. |
+| [pyzmq][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Python bindings for zeromq, the networking library. Uses Cython and CFFI. |
+| [aiortc][] | ![github icon][] | ![apple icon][] ![linux icon][] | WebRTC and ORTC implementation for Python using asyncio. |
+| [River][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | 🌊 Online machine learning in Python |
+| [coverage.py][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | The coverage tool for Python |
+| [numexpr][] | ![github icon][] ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Fast numerical array expression evaluator for Python, NumPy, PyTables, pandas, bcolz and more |
+| [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. |
+| [Dependency Injector][] | ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Dependency injection framework for Python, uses Windows TravisCI |
+| [PyAV][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Pythonic bindings for FFmpeg's libraries. |
+| [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. |
+| [aioquic][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | QUIC and HTTP/3 implementation in Python |
+| [pikepdf][] | ![azurepipelines icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A Python library for reading and writing PDF, powered by qpdf |
+| [google neuroglancer][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | WebGL-based viewer for volumetric data |
+| [DeepForest][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | An Efficient, Scalable and Optimized Python Framework for Deep Forest (2021.2.1) |
+| [AutoPy][] | ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Includes a Windows Travis build. |
+| [Parselmouth][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A Python interface to the Praat software package, using pybind11, C++17 and CMake, with the core Praat static library built only once and shared between wheels. |
+| [python-rapidjson][] | ![travisci icon][] ![gitlab icon][] ![appveyor icon][] | ![windows icon][] ![linux icon][] | Python wrapper around rapidjson |
+| [Rtree][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Rtree: spatial index for Python GIS ¶ |
+| [python-snappy][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Python bindings for the snappy google library |
+| [markupsafe][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Safely add untrusted strings to HTML/XML markup. |
+| [H3-py][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Python bindings for H3, a hierarchical hexagonal geospatial indexing system |
+| [pybind11 cmake_example][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Example pybind11 module built with a CMake-based build system |
+| [KDEpy][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Kernel Density Estimation in Python |
+| [cyvcf2][] | ![github icon][] | ![apple icon][] ![linux icon][] | cython + htslib == fast VCF and BCF processing |
+| [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. |
+| [time-machine][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Time mocking library using only the CPython C API. |
+| [iminuit][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Jupyter-friendly Python interface for C++ MINUIT2 |
+| [CTranslate2][] | ![github icon][] | ![apple icon][] ![linux icon][] | Includes libraries from the [Intel oneAPI toolkit](https://software.intel.com/content/www/us/en/develop/tools/oneapi/base-toolkit.html). The Linux wheels also include CUDA libraries for GPU execution. |
+| [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. |
+| [jq.py][] | ![travisci icon][] | ![apple icon][] ![linux icon][] | Python bindings for jq |
+| [Tokenizer][] | ![github icon][] ![travisci icon][] | ![apple icon][] ![linux icon][] | Fast and customizable text tokenization library with BPE and SentencePiece support |
+| [PyGLM][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Fast OpenGL Mathematics (GLM) for Python |
+| [bx-python][] | ![travisci icon][] | ![apple icon][] ![linux icon][] | A library that includes Cython extensions. |
+| [iDynTree][] | ![github icon][] | ![linux icon][] | Uses manylinux_2_24 |
+| [boost-histogram][] | ![github icon][] ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Supports full range of wheels, including PyPy and alternate archs. |
+| [pybase64][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Fast Base64 encoding/decoding in Python |
+| [TgCrypto][] | ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Includes a Windows Travis build. |
+| [etebase-py][] | ![travisci icon][] | ![linux icon][] | Python bindings to a Rust library using `setuptools-rust`, and `sccache` for improved speed. |
+| [fathon][] | ![travisci icon][] | ![apple icon][] ![linux icon][] | python package for DFA (Detrended Fluctuation Analysis) and related algorithms |
+| [pyjet][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | The interface between FastJet and NumPy |
+| [numpythia][] | ![github icon][] | ![apple icon][] ![linux icon][] | The interface between PYTHIA and NumPy |
+| [polaroid][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Full range of wheels for setuptools rust, with auto release and PyPI deploy. |
+| [ninja][] | ![github icon][] ![travisci icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Multitagged binary builds for all supported platforms, using cibw 2 config configuration. |
+| [GSD][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Cython and NumPy project with 64-bit wheels. |
+| [pybind11 scikit_build_example][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | An example combining scikit-build and pybind11 |
+| [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. |
+| [pyinstrument_cext][] | ![travisci icon][] ![appveyor icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A simple C extension, without external dependencies |
+| [xmlstarlet][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Python 3.6+ CFFI bindings with true MSVC build. |
+| [CorrectionLib][] | ![github icon][] | ![apple icon][] ![linux icon][] | Structured JSON powered correction library for HEP, designed for the CMS experiment at CERN. |
+| [SiPM][] | ![github icon][] | ![apple icon][] ![linux icon][] | High performance library for SiPM detectors simulation using C++17, OpenMP and AVX2 intrinsics. |
+
+[scikit-learn]: https://github.com/scikit-learn/scikit-learn
+[Matplotlib]: https://github.com/matplotlib/matplotlib
+[MyPy]: https://github.com/mypyc/mypy_mypyc-wheels
+[psutil]: https://github.com/giampaolo/psutil
+[scikit-image]: https://github.com/scikit-image/scikit-image
+[twisted-iocpsupport]: https://github.com/twisted/twisted-iocpsupport
+[cmake]: https://github.com/scikit-build/cmake-python-distributions
+[websockets]: https://github.com/aaugustin/websockets
+[pyzmq]: https://github.com/zeromq/pyzmq
+[aiortc]: https://github.com/aiortc/aiortc
+[River]: https://github.com/online-ml/river
+[coverage.py]: https://github.com/nedbat/coveragepy
+[numexpr]: https://github.com/pydata/numexpr
+[h5py]: https://github.com/h5py/h5py
+[Dependency Injector]: https://github.com/ets-labs/python-dependency-injector
+[PyAV]: https://github.com/PyAV-Org/PyAV
+[PyTables]: https://github.com/PyTables/PyTables
+[ruptures]: https://github.com/deepcharles/ruptures
+[aioquic]: https://github.com/aiortc/aioquic
+[pikepdf]: https://github.com/pikepdf/pikepdf
+[google neuroglancer]: https://github.com/google/neuroglancer
+[DeepForest]: https://github.com/LAMDA-NJU/Deep-Forest
+[AutoPy]: https://github.com/autopilot-rs/autopy
+[Parselmouth]: https://github.com/YannickJadoul/Parselmouth
+[python-rapidjson]: https://github.com/python-rapidjson/python-rapidjson
+[Rtree]: https://github.com/Toblerity/rtree
+[python-snappy]: https://github.com/andrix/python-snappy
+[markupsafe]: https://github.com/pallets/markupsafe
+[H3-py]: https://github.com/uber/h3-py
+[pybind11 cmake_example]: https://github.com/pybind/cmake_example
+[KDEpy]: https://github.com/tommyod/KDEpy
+[cyvcf2]: https://github.com/brentp/cyvcf2
+[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
+[time-machine]: https://github.com/adamchainz/time-machine
+[iminuit]: https://github.com/scikit-hep/iminuit
+[CTranslate2]: https://github.com/OpenNMT/CTranslate2
+[matrixprofile]: https://github.com/matrix-profile-foundation/matrixprofile
+[jq.py]: https://github.com/mwilliamson/jq.py
+[Tokenizer]: https://github.com/OpenNMT/Tokenizer
+[PyGLM]: https://github.com/Zuzu-Typ/PyGLM
+[bx-python]: https://github.com/bxlab/bx-python
+[iDynTree]: https://github.com/robotology/idyntree
+[boost-histogram]: https://github.com/scikit-hep/boost-histogram
+[pybase64]: https://github.com/mayeut/pybase64
+[TgCrypto]: https://github.com/pyrogram/tgcrypto
+[etebase-py]: https://github.com/etesync/etebase-py
+[fathon]: https://github.com/stfbnc/fathon
+[pyjet]: https://github.com/scikit-hep/pyjet
+[numpythia]: https://github.com/scikit-hep/numpythia
+[polaroid]: https://github.com/daggy1234/polaroid
+[ninja]: https://github.com/scikit-build/ninja-python-distributions
+[GSD]: https://github.com/glotzerlab/gsd
+[pybind11 scikit_build_example]: https://github.com/pybind/scikit_build_example
+[Imagecodecs (fork)]: https://github.com/czaki/imagecodecs_build
+[pyinstrument_cext]: https://github.com/joerick/pyinstrument_cext
+[xmlstarlet]: https://github.com/dimitern/xmlstarlet
+[CorrectionLib]: https://github.com/cms-nanoAOD/correctionlib
+[SiPM]: https://github.com/EdoPro98/SimSiPM
+
+[appveyor icon]: data/readme_icons/appveyor.svg
+[github icon]: data/readme_icons/github.svg
+[azurepipelines icon]: data/readme_icons/azurepipelines.svg
+[circleci icon]: data/readme_icons/circleci.svg
+[gitlab icon]: data/readme_icons/gitlab.svg
+[travisci icon]: data/readme_icons/travisci.svg
+[windows icon]: data/readme_icons/windows.svg
+[apple icon]: data/readme_icons/apple.svg
+[linux icon]: data/readme_icons/linux.svg
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+> Add your repo here! Let us know on [GitHub Discussions](https://github.com/pypa/cibuildwheel/discussions/485), or send a PR, adding your information to `docs/data/projects.yml`.
+>
+> I'd like to include notes here to indicate why an example might be interesting to cibuildwheel users - the styles/technologies/techniques used in each. Please include that in future additions!