From 7cef9ffb02da341c912f97be0691d1dbb00b2e2a Mon Sep 17 00:00:00 2001 From: Joe Rickerby Date: Tue, 20 Jul 2021 18:50:45 +0100 Subject: [PATCH] Change bin/projects.py to only write the first 10 projects to the readme --- README.md | 169 +------------------------------ bin/projects.py | 97 ++++++++++++------ docs/working-examples.md | 209 ++++++++++++++++++++++++++++++++++++++- 3 files changed, 274 insertions(+), 201 deletions(-) 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!