Merge pull request #474 from henryiii/docs/stars
docs: table and add stars
@@ -13,7 +13,7 @@ repos:
|
||||
- id: check-merge-conflict
|
||||
- id: check-yaml
|
||||
- id: end-of-file-fixer
|
||||
exclude: cibuildwheel/resources/pinned_docker_images.cfg
|
||||
exclude: (cibuildwheel/resources/pinned_docker_images.cfg)|(.svg$)
|
||||
- id: mixed-line-ending
|
||||
- id: trailing-whitespace
|
||||
|
||||
@@ -21,5 +21,5 @@ repos:
|
||||
rev: v0.782
|
||||
hooks:
|
||||
- id: mypy
|
||||
files: cibuildwheel/|test/
|
||||
files: ^(cibuildwheel/|test/|bin/projects.py)
|
||||
pass_filenames: false
|
||||
|
||||
@@ -125,35 +125,136 @@ Options
|
||||
Working examples
|
||||
----------------
|
||||
|
||||
<!--working-examples-start-->
|
||||
|
||||
Here are some repos that use cibuildwheel.
|
||||
|
||||
- [Matplotlib](https://github.com/matplotlib/matplotlib) - The venerable Matplotlib, a Python library with C++ portions, built for Linux, Mac, and Windows on Github Actions.
|
||||
- [pyinstrument_cext](https://github.com/joerick/pyinstrument_cext) - A simple C extension, without external dependencies, built on Travis CI/Appveyor.
|
||||
- [websockets](https://github.com/aaugustin/websockets)
|
||||
- [Parselmouth](https://github.com/YannickJadoul/Parselmouth) - 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; all platforms built on Github Actions.
|
||||
- [python-admesh](https://github.com/admesh/python-admesh)
|
||||
- [pybase64](https://github.com/mayeut/pybase64)
|
||||
- [KDEpy](https://github.com/tommyod/KDEpy)
|
||||
- [AutoPy](https://github.com/autopilot-rs/autopy)
|
||||
- [apriltags2-ethz](https://github.com/safijari/apriltags2_ethz)
|
||||
- [TgCrypto](https://github.com/pyrogram/tgcrypto)
|
||||
- [twisted-iocpsupport](https://github.com/twisted/twisted-iocpsupport) - A submodule of Twisted that hooks into native C APIs using Cython. Built on Github CI for Windows.
|
||||
- [gmic-py](https://github.com/dtschump/gmic-py)
|
||||
- [creme](https://github.com/creme-ml/creme)
|
||||
- [PyAV](https://github.com/PyAV-Org/PyAV)
|
||||
- [aiortc](https://github.com/aiortc/aiortc)
|
||||
- [aioquic](https://github.com/aiortc/aioquic)
|
||||
- [pikepdf](https://github.com/pikepdf/pikepdf)
|
||||
- [fathon](https://github.com/stfbnc/fathon)
|
||||
- [etebase-py](https://github.com/etesync/etebase-py) - Python bindings to a Rust library using `setuptools-rust`, and `sccache` for improved speed, built on Travis CI.
|
||||
- [xmlstarlet](https://github.com/dimitern/xmlstarlet) - Python 3.6+ CFFI bindings with true MSVC build and GitHub Actions.
|
||||
- [bx-python](https://github.com/bxlab/bx-python) - A library that includes Cython extensions, built on Travis CI for Mac and Linux.
|
||||
- [coverage.py](https://github.com/nedbat/coveragepy) - The coverage tool for Python.
|
||||
<!-- START bin/projects.py -->
|
||||
|
||||
> Add your repo here! Send a PR.
|
||||
<!-- this section is generated by bin/projects.py. Don't edit it directly, instead, edit docs/data/projects.yml -->
|
||||
|
||||
| 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 |
|
||||
| [twisted-iocpsupport][] | ![github icon][] | ![windows icon][] | A submodule of Twisted that hooks into native C APIs using Cython. |
|
||||
| [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. |
|
||||
| [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. |
|
||||
| [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. |
|
||||
| [coverage.py][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | The coverage tool for Python |
|
||||
| [River][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | 🌊 Online machine learning in Python |
|
||||
| [PyAV][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Pythonic bindings for FFmpeg's libraries. |
|
||||
| [google neuroglancer][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | WebGL-based viewer for volumetric data |
|
||||
| [aioquic][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | QUIC and HTTP/3 implementation in Python |
|
||||
| [AutoPy][] | ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Includes a Windows Travis build. |
|
||||
| [pikepdf][] | ![azurepipelines icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A Python library for reading and writing PDF, powered by qpdf |
|
||||
| [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 |
|
||||
| [KDEpy][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Kernel Density Estimation in Python |
|
||||
| [pybind11 python_example][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Example pybind11 module built with a Python-based build system |
|
||||
| [pybind11 cmake_example][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Example pybind11 module built with a CMake-based build system |
|
||||
| [iminuit][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Jupyter-friendly Python interface for C++ MINUIT2 |
|
||||
| [jq.py][] | ![travisci icon][] | ![apple icon][] ![linux icon][] | Python bindings for jq |
|
||||
| [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. |
|
||||
| [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. |
|
||||
| [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 |
|
||||
| [fathon][] | ![travisci icon][] | ![apple icon][] ![linux icon][] | python package for DFA (Detrended Fluctuation Analysis) and related algorithms |
|
||||
| [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 scikit_build_example][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | An example combining scikit-build and pybind11 |
|
||||
|
||||
[scikit-learn]: https://github.com/scikit-learn/scikit-learn
|
||||
[Matplotlib]: https://github.com/matplotlib/matplotlib
|
||||
[twisted-iocpsupport]: https://github.com/twisted/twisted-iocpsupport
|
||||
[scikit-image]: https://github.com/scikit-image/scikit-image
|
||||
[websockets]: https://github.com/aaugustin/websockets
|
||||
[pyzmq]: https://github.com/zeromq/pyzmq
|
||||
[aiortc]: https://github.com/aiortc/aiortc
|
||||
[h5py]: https://github.com/h5py/h5py
|
||||
[coverage.py]: https://github.com/nedbat/coveragepy
|
||||
[River]: https://github.com/online-ml/river
|
||||
[PyAV]: https://github.com/PyAV-Org/PyAV
|
||||
[google neuroglancer]: https://github.com/google/neuroglancer
|
||||
[aioquic]: https://github.com/aiortc/aioquic
|
||||
[AutoPy]: https://github.com/autopilot-rs/autopy
|
||||
[pikepdf]: https://github.com/pikepdf/pikepdf
|
||||
[Parselmouth]: https://github.com/YannickJadoul/Parselmouth
|
||||
[python-rapidjson]: https://github.com/python-rapidjson/python-rapidjson
|
||||
[KDEpy]: https://github.com/tommyod/KDEpy
|
||||
[pybind11 python_example]: https://github.com/pybind/python_example
|
||||
[pybind11 cmake_example]: https://github.com/pybind/cmake_example
|
||||
[iminuit]: https://github.com/scikit-hep/iminuit
|
||||
[jq.py]: https://github.com/mwilliamson/jq.py
|
||||
[bx-python]: https://github.com/bxlab/bx-python
|
||||
[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
|
||||
[pyjet]: https://github.com/scikit-hep/pyjet
|
||||
[numpythia]: https://github.com/scikit-hep/numpythia
|
||||
[fathon]: https://github.com/stfbnc/fathon
|
||||
[pyinstrument_cext]: https://github.com/joerick/pyinstrument_cext
|
||||
[xmlstarlet]: https://github.com/dimitern/xmlstarlet
|
||||
[pybind11 scikit_build_example]: https://github.com/pybind/scikit_build_example
|
||||
|
||||
[appveyor icon]: docs/data/readme_icons/appveyor.svg
|
||||
[github icon]: docs/data/readme_icons/github.svg
|
||||
[azurepipelines icon]: docs/data/readme_icons/azurepipelines.svg
|
||||
[circleci icon]: docs/data/readme_icons/circleci.svg
|
||||
[gitlab icon]: docs/data/readme_icons/gitlab.svg
|
||||
[travisci icon]: docs/data/readme_icons/travisci.svg
|
||||
[windows icon]: docs/data/readme_icons/windows.svg
|
||||
[apple icon]: docs/data/readme_icons/apple.svg
|
||||
[linux icon]: docs/data/readme_icons/linux.svg
|
||||
|
||||
<!-- scikit-learn: 43359, last pushed 0 days ago -->
|
||||
<!-- Matplotlib: 12734, last pushed 0 days ago -->
|
||||
<!-- twisted-iocpsupport: 4107, last pushed 0 days ago -->
|
||||
<!-- scikit-image: 4085, last pushed 0 days ago -->
|
||||
<!-- websockets: 3065, last pushed 0 days ago -->
|
||||
<!-- pyzmq: 2655, last pushed 9 days ago -->
|
||||
<!-- aiortc: 2058, last pushed 10 days ago -->
|
||||
<!-- h5py: 1451, last pushed 1 days ago -->
|
||||
<!-- coverage.py: 1429, last pushed 3 days ago -->
|
||||
<!-- River: 1174, last pushed 0 days ago -->
|
||||
<!-- PyAV: 1107, last pushed 2 days ago -->
|
||||
<!-- google neuroglancer: 545, last pushed 2 days ago -->
|
||||
<!-- aioquic: 543, last pushed 38 days ago -->
|
||||
<!-- AutoPy: 503, last pushed 94 days ago -->
|
||||
<!-- pikepdf: 477, last pushed 3 days ago -->
|
||||
<!-- Parselmouth: 429, last pushed 15 days ago -->
|
||||
<!-- python-rapidjson: 406, last pushed 2 days ago -->
|
||||
<!-- KDEpy: 224, last pushed 12 days ago -->
|
||||
<!-- pybind11 python_example: 219, last pushed 32 days ago -->
|
||||
<!-- pybind11 cmake_example: 217, last pushed 16 days ago -->
|
||||
<!-- iminuit: 164, last pushed 3 days ago -->
|
||||
<!-- jq.py: 137, last pushed 62 days ago -->
|
||||
<!-- bx-python: 95, last pushed 75 days ago -->
|
||||
<!-- boost-histogram: 60, last pushed 0 days ago -->
|
||||
<!-- pybase64: 52, last pushed 2 days ago -->
|
||||
<!-- TgCrypto: 48, last pushed 24 days ago -->
|
||||
<!-- etebase-py: 39, last pushed 0 days ago -->
|
||||
<!-- pyjet: 27, last pushed 17 days ago -->
|
||||
<!-- numpythia: 23, last pushed 16 days ago -->
|
||||
<!-- fathon: 17, last pushed 49 days ago -->
|
||||
<!-- pyinstrument_cext: 9, last pushed 17 days ago -->
|
||||
<!-- xmlstarlet: 7, last pushed 5 days ago -->
|
||||
<!-- pybind11 scikit_build_example: 1, last pushed 30 days ago -->
|
||||
|
||||
<!-- END bin/projects.py -->
|
||||
|
||||
> Add your repo here! Send a PR, adding your information to `docs/data/projects.yml`.
|
||||
>
|
||||
> <sup>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!</sup>
|
||||
|
||||
<!--working-examples-end-->
|
||||
|
||||
Legal note
|
||||
----------
|
||||
|
||||
@@ -166,6 +267,8 @@ This is similar to static linking, so it might have some licence implications. C
|
||||
Changelog
|
||||
=========
|
||||
|
||||
<!--changelog-start-->
|
||||
|
||||
### 1.7.1
|
||||
|
||||
_3 December 2020_
|
||||
@@ -573,6 +676,8 @@ _31 March 2017_
|
||||
|
||||
- 🌟 First public release!
|
||||
|
||||
<!--changelog-end-->
|
||||
|
||||
Contributing
|
||||
============
|
||||
|
||||
|
||||
@@ -0,0 +1,198 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
"""
|
||||
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
|
||||
git diff
|
||||
"""
|
||||
|
||||
import builtins
|
||||
import functools
|
||||
from datetime import datetime
|
||||
from io import StringIO
|
||||
from typing import Dict, Any, List, Optional, TextIO
|
||||
|
||||
import click
|
||||
import yaml
|
||||
from github import Github
|
||||
import urllib.request
|
||||
import xml.dom.minidom
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
ICONS = (
|
||||
"appveyor",
|
||||
"github",
|
||||
"azurepipelines",
|
||||
"circleci",
|
||||
"gitlab",
|
||||
"travisci",
|
||||
"windows",
|
||||
"apple",
|
||||
"linux",
|
||||
)
|
||||
|
||||
|
||||
class Project:
|
||||
NAME: int = 0
|
||||
|
||||
def __init__(self, config: Dict[str, Any], github: Optional[Github] = None):
|
||||
try:
|
||||
self.name: str = config["name"]
|
||||
self.gh: str = config["gh"]
|
||||
except KeyError:
|
||||
print("Invalid config, needs at least gh and name!", config)
|
||||
raise
|
||||
|
||||
self.stars_repo: str = config.get("stars", self.gh)
|
||||
self.notes: str = config.get("notes", "")
|
||||
self.ci: List[str] = config.get("ci", [])
|
||||
self.os: List[str] = config.get("os", [])
|
||||
|
||||
self.online = github is not None
|
||||
if github is not None:
|
||||
repo = github.get_repo(self.stars_repo)
|
||||
self.num_stars = repo.stargazers_count
|
||||
self.pushed_at = repo.pushed_at
|
||||
if not self.notes:
|
||||
notes = repo.description
|
||||
if repo.description:
|
||||
self.notes = notes
|
||||
else:
|
||||
self.num_stars = 0
|
||||
self.pushed_at = datetime.utcnow()
|
||||
|
||||
name_len = len(self.name) + 4
|
||||
self.__class__.NAME = max(self.__class__.NAME, name_len)
|
||||
|
||||
def __lt__(self, other: "Project") -> bool:
|
||||
if self.online:
|
||||
return self.num_stars < other.num_stars
|
||||
else:
|
||||
return self.name < other.name
|
||||
|
||||
@classmethod
|
||||
def header(cls) -> str:
|
||||
return (
|
||||
f"| {'Name':{cls.NAME}} | CI | OS | Notes |\n"
|
||||
f"|{'':-^{cls.NAME+2 }}|----|----|:------|"
|
||||
)
|
||||
|
||||
@property
|
||||
def namelink(self) -> str:
|
||||
return f"[{self.name}][]"
|
||||
|
||||
@property
|
||||
def starslink(self) -> str:
|
||||
return f"![{self.name} stars][]"
|
||||
|
||||
@property
|
||||
def url(self) -> str:
|
||||
return f"https://github.com/{self.gh}"
|
||||
|
||||
@property
|
||||
def ci_icons(self) -> str:
|
||||
return " ".join(f"![{icon} icon][]" for icon in self.ci)
|
||||
|
||||
@property
|
||||
def os_icons(self) -> str:
|
||||
return " ".join(f"![{icon} icon][]" for icon in self.os)
|
||||
|
||||
def table_row(self) -> str:
|
||||
notes = self.notes.replace('\n', ' ')
|
||||
return f"| {self.namelink: <{self.NAME}} | {self.ci_icons} | {self.os_icons} | {notes} |"
|
||||
|
||||
def links(self) -> str:
|
||||
return f"[{self.name}]: {self.url}"
|
||||
|
||||
def info(self) -> str:
|
||||
days = (datetime.utcnow() - self.pushed_at).days
|
||||
return f"<!-- {self.name}: {self.num_stars}, last pushed {days} days ago -->"
|
||||
|
||||
|
||||
def fetch_icon(icon_name: str) -> None:
|
||||
url = f'https://cdn.jsdelivr.net/npm/simple-icons@v4/icons/{icon_name}.svg'
|
||||
with urllib.request.urlopen(url) as f:
|
||||
original_svg_data = f.read()
|
||||
|
||||
document = xml.dom.minidom.parseString(original_svg_data)
|
||||
svgElement = document.documentElement
|
||||
assert svgElement.nodeName == 'svg'
|
||||
svgElement.setAttribute('width', '16px')
|
||||
svgElement.setAttribute('fill', '#606060')
|
||||
|
||||
icon_path = path_for_icon(icon_name)
|
||||
icon_path.parent.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
with open(path_for_icon(icon_name), 'w') as f:
|
||||
f.write(svgElement.toxml())
|
||||
|
||||
|
||||
def path_for_icon(icon_name: str) -> Path:
|
||||
return Path('.') / 'docs' / 'data' / 'readme_icons' / f'{icon_name}.svg'
|
||||
|
||||
|
||||
def str_projects(
|
||||
config: List[Dict[str, Any]], *, online: bool = True, auth: Optional[str] = None
|
||||
) -> str:
|
||||
io = StringIO()
|
||||
print = functools.partial(builtins.print, file=io)
|
||||
|
||||
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)
|
||||
|
||||
print(Project.header())
|
||||
for project in projects:
|
||||
print(project.table_row())
|
||||
|
||||
print()
|
||||
for project in projects:
|
||||
print(project.links())
|
||||
|
||||
print()
|
||||
for icon in ICONS:
|
||||
print(f"[{icon} icon]: {path_for_icon(icon).as_posix()}")
|
||||
|
||||
print()
|
||||
for project in projects:
|
||||
print(project.info())
|
||||
|
||||
return io.getvalue()
|
||||
|
||||
|
||||
@click.command()
|
||||
@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")
|
||||
def projects(
|
||||
input: TextIO, online: bool, auth: Optional[str], readme: Optional[TextIO]
|
||||
) -> None:
|
||||
config = yaml.safe_load(input)
|
||||
output = str_projects(config, online=online, auth=auth)
|
||||
|
||||
if readme is None:
|
||||
print(output)
|
||||
else:
|
||||
text = readme.read()
|
||||
start_str = "<!-- START bin/projects.py -->\n"
|
||||
start = text.find(start_str)
|
||||
end = text.find("<!-- END bin/projects.py -->\n")
|
||||
generated_note = f'<!-- this section is generated by bin/projects.py. Don\'t edit it directly, instead, edit {input.name} -->'
|
||||
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()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
projects()
|
||||
@@ -0,0 +1,17 @@
|
||||
---
|
||||
title: Changelog
|
||||
---
|
||||
|
||||
{%
|
||||
includemarkdown "../README.md"
|
||||
start="<!--changelog-start-->"
|
||||
end="<!--changelog-end-->"
|
||||
%}
|
||||
|
||||
<script>
|
||||
// undo the scrollTop that the theme did on this page, as there are loads
|
||||
// of toc entries and it's disorientating.
|
||||
window.addEventListener('DOMContentLoaded', function() {
|
||||
$('.wy-nav-side').scrollTop(0)
|
||||
})
|
||||
</script>
|
||||
@@ -0,0 +1,215 @@
|
||||
# Fields:
|
||||
# name: required, printed name
|
||||
# gh: Github repo (eventually a url: could be added for non-github projects)
|
||||
# stars: Github repo (optional, if different from package, such as for Twisted)
|
||||
# os: Operating system list, [windows, apple, linux] (optional)
|
||||
# ci: [appveyor, github, azurepipelines, circleci, gitlab, travisci] (optional)
|
||||
# notes: (text, optional)
|
||||
|
||||
- name: Matplotlib
|
||||
gh: matplotlib/matplotlib
|
||||
notes: The venerable Matplotlib, a Python library with C++ portions
|
||||
ci: [github]
|
||||
os: [windows, apple, linux]
|
||||
|
||||
- name: pyinstrument_cext
|
||||
gh: joerick/pyinstrument_cext
|
||||
ci: [travisci, appveyor]
|
||||
os: [windows, apple, linux]
|
||||
notes: A simple C extension, without external dependencies
|
||||
|
||||
- name: websockets
|
||||
gh: aaugustin/websockets
|
||||
ci: [travisci]
|
||||
ci_config: .travis.yml
|
||||
os: [apple, linux]
|
||||
notes: |
|
||||
Library for building WebSocket servers and clients. Mostly written in
|
||||
Python, with a small C 'speedups' extension module.
|
||||
|
||||
- name: Parselmouth
|
||||
gh: YannickJadoul/Parselmouth
|
||||
notes: 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.
|
||||
ci: [github]
|
||||
os: [windows, apple, linux]
|
||||
|
||||
# Seems to be defunct
|
||||
# - name: python-admesh
|
||||
# gh: admesh/python-admesh
|
||||
|
||||
- name: pybase64
|
||||
gh: mayeut/pybase64
|
||||
ci: [github]
|
||||
os: [windows, apple, linux]
|
||||
|
||||
|
||||
- name: KDEpy
|
||||
gh: tommyod/KDEpy
|
||||
ci: [github]
|
||||
os: [windows, apple, linux]
|
||||
|
||||
- name: AutoPy
|
||||
gh: autopilot-rs/autopy
|
||||
ci: [travisci]
|
||||
os: [windows, apple, linux]
|
||||
notes: Includes a Windows Travis build.
|
||||
|
||||
# Seems to be defunct
|
||||
# - name: apriltags2-ethz
|
||||
# gh: safijari/apriltags2_ethz
|
||||
|
||||
- name: TgCrypto
|
||||
gh: pyrogram/tgcrypto
|
||||
ci: [travisci]
|
||||
os: [windows, apple, linux]
|
||||
notes: Includes a Windows Travis build.
|
||||
|
||||
- name: twisted-iocpsupport
|
||||
gh: twisted/twisted-iocpsupport
|
||||
stars: twisted/twisted
|
||||
notes: A submodule of Twisted that hooks into native C APIs using Cython.
|
||||
ci: [github]
|
||||
os: [windows]
|
||||
|
||||
# cibuildwheel moved to backup folder
|
||||
# - name: gmic-py
|
||||
# gh: myselfhimself/gmic-py
|
||||
|
||||
- name: River
|
||||
gh: online-ml/river
|
||||
ci: [github]
|
||||
os: [windows, apple, linux]
|
||||
|
||||
- name: PyAV
|
||||
gh: PyAV-Org/PyAV
|
||||
ci: [github]
|
||||
os: [windows, apple, linux]
|
||||
notes: Pythonic bindings for FFmpeg's libraries.
|
||||
|
||||
- name: aiortc
|
||||
gh: aiortc/aiortc
|
||||
ci: [github]
|
||||
os: [apple, linux]
|
||||
notes: WebRTC and ORTC implementation for Python using asyncio.
|
||||
|
||||
- name: aioquic
|
||||
gh: aiortc/aioquic
|
||||
ci: [github]
|
||||
os: [windows, apple, linux]
|
||||
|
||||
- name: pikepdf
|
||||
gh: pikepdf/pikepdf
|
||||
ci: [azurepipelines]
|
||||
os: [windows, apple, linux]
|
||||
|
||||
- name: fathon
|
||||
gh: stfbnc/fathon
|
||||
ci: [travisci]
|
||||
os: [apple, linux]
|
||||
|
||||
- name: etebase-py
|
||||
gh: etesync/etebase-py
|
||||
notes: Python bindings to a Rust library using `setuptools-rust`, and `sccache` for improved speed.
|
||||
ci: [travisci]
|
||||
os: [linux]
|
||||
|
||||
- name: xmlstarlet
|
||||
gh: dimitern/xmlstarlet
|
||||
notes: Python 3.6+ CFFI bindings with true MSVC build.
|
||||
ci: [github]
|
||||
os: [windows, apple, linux]
|
||||
|
||||
- name: bx-python
|
||||
gh: bxlab/bx-python
|
||||
notes: A library that includes Cython extensions.
|
||||
ci: [travisci]
|
||||
os: [apple, linux]
|
||||
|
||||
- name: coverage.py
|
||||
gh: nedbat/coveragepy
|
||||
ci: [github]
|
||||
os: [windows, apple, linux]
|
||||
notes: The coverage tool for Python
|
||||
|
||||
- name: scikit-learn
|
||||
gh: scikit-learn/scikit-learn
|
||||
ci: [github]
|
||||
os: [windows, apple, linux]
|
||||
ci_config: .github/workflows/wheels.yml
|
||||
notes: |
|
||||
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.
|
||||
|
||||
- name: scikit-image
|
||||
gh: scikit-image/scikit-image
|
||||
ci: [github]
|
||||
os: [windows, apple, linux]
|
||||
ci_config: .github/workflows/cibuildwheel.yml
|
||||
notes: |
|
||||
Image processing library. Uses cibuildwheel to build and test a project
|
||||
that uses Cython with platform-native code.
|
||||
|
||||
- name: google neuroglancer
|
||||
gh: google/neuroglancer
|
||||
ci: [github]
|
||||
os: [windows, apple, linux]
|
||||
|
||||
- name: h5py
|
||||
gh: h5py/h5py
|
||||
ci: [azurepipelines]
|
||||
os: [windows, apple, linux]
|
||||
|
||||
- name: pyzmq
|
||||
gh: zeromq/pyzmq
|
||||
ci: [github]
|
||||
os: [windows, apple, linux]
|
||||
ci_config: .github/workflows/wheels.yml
|
||||
notes: |
|
||||
Python bindings for zeromq, the networking library. Uses Cython and CFFI.
|
||||
|
||||
- name: python-rapidjson
|
||||
gh: python-rapidjson/python-rapidjson
|
||||
ci: [travisci, gitlab, appveyor]
|
||||
os: [windows, linux]
|
||||
|
||||
- name: jq.py
|
||||
gh: mwilliamson/jq.py
|
||||
ci: [travisci]
|
||||
os: [apple, linux]
|
||||
|
||||
- name: pybind11 python_example
|
||||
gh: pybind/python_example
|
||||
ci: [github]
|
||||
os: [windows, apple, linux]
|
||||
|
||||
- name: pybind11 cmake_example
|
||||
gh: pybind/cmake_example
|
||||
ci: [github]
|
||||
os: [windows, apple, linux]
|
||||
|
||||
- name: pybind11 scikit_build_example
|
||||
gh: pybind/scikit_build_example
|
||||
ci: [github]
|
||||
os: [windows, apple, linux]
|
||||
|
||||
- name: iminuit
|
||||
gh: scikit-hep/iminuit
|
||||
ci: [github]
|
||||
os: [windows, apple, linux]
|
||||
|
||||
- name: pyjet
|
||||
gh: scikit-hep/pyjet
|
||||
ci: [github]
|
||||
os: [windows, apple, linux]
|
||||
|
||||
- name: numpythia
|
||||
gh: scikit-hep/numpythia
|
||||
ci: [github]
|
||||
os: [apple, linux]
|
||||
|
||||
- name: boost-histogram
|
||||
gh: scikit-hep/boost-histogram
|
||||
ci: [github, travisci]
|
||||
os: [windows, apple, linux]
|
||||
notes: Supports full range of wheels, including PyPy and alternate archs.
|
||||
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 24 24" width="16px" fill="#606060"><title>Apple icon</title><path d="M7.078 23.55c-.473-.316-.893-.703-1.244-1.15-.383-.463-.738-.95-1.064-1.454-.766-1.12-1.365-2.345-1.78-3.636-.5-1.502-.743-2.94-.743-4.347 0-1.57.34-2.94 1.002-4.09.49-.9 1.22-1.653 2.1-2.182.85-.53 1.84-.82 2.84-.84.35 0 .73.05 1.13.15.29.08.64.21 1.07.37.55.21.85.34.95.37.32.12.59.17.8.17.16 0 .39-.05.645-.13.145-.05.42-.14.81-.31.386-.14.692-.26.935-.35.37-.11.728-.21 1.05-.26.39-.06.777-.08 1.148-.05.71.05 1.36.2 1.94.42 1.02.41 1.843 1.05 2.457 1.96-.26.16-.5.346-.725.55-.487.43-.9.94-1.23 1.505-.43.77-.65 1.64-.644 2.52.015 1.083.29 2.035.84 2.86.387.6.904 1.114 1.534 1.536.31.21.582.355.84.45-.12.375-.252.74-.405 1.1-.347.807-.76 1.58-1.25 2.31-.432.63-.772 1.1-1.03 1.41-.402.48-.79.84-1.18 1.097-.43.285-.935.436-1.452.436-.35.015-.7-.03-1.034-.127-.29-.095-.576-.202-.856-.323-.293-.134-.596-.248-.905-.34-.38-.1-.77-.148-1.164-.147-.4 0-.79.05-1.16.145-.31.088-.61.196-.907.325-.42.175-.695.29-.855.34-.324.096-.656.154-.99.175-.52 0-1.004-.15-1.486-.45zm6.854-18.46c-.68.34-1.326.484-1.973.436-.1-.646 0-1.31.27-2.037.24-.62.56-1.18 1-1.68.46-.52 1.01-.95 1.63-1.26.66-.34 1.29-.52 1.89-.55.08.68 0 1.35-.25 2.07-.228.64-.568 1.23-1 1.76-.435.52-.975.95-1.586 1.26z"/></svg>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 24 24" width="16px" fill="#606060"><title>AppVeyor icon</title><path d="M 12,0 C 18.6,0 24,5.4 24,12 24,18.6 18.6,24 12,24 5.4,24 0,18.6 0,12 0,5.4 5.4,0 12,0 Z m 2.94,14.34 C 16.26,12.66 16.08,10.26 14.4,9 12.78,7.74 10.38,8.04 9,9.72 7.68,11.4 7.86,13.8 9.54,15.06 c 1.68,1.26 4.08,0.96 5.4,-0.72 z m -6.42,7.8 c 0.72,0.3 2.28,0.6 3.06,0.6 l 5.22,-7.56 c 1.68,-2.52 1.26,-5.94 -1.08,-7.8 -2.1,-1.68 -5.04,-1.62 -7.14,0 l -7.26,5.58 c 0.18,1.92 0.72,2.88 0.72,2.94 l 4.14,-4.5 c -0.3,1.98 0.42,4.02 2.1,5.28 1.44,1.14 3.18,1.44 4.86,1.08 z"/></svg>
|
||||
|
After Width: | Height: | Size: 613 B |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 24 24" width="16px" fill="#606060"><title>Azure Pipelines icon</title><path d="M1.8 18H0v6h6v-1.8H1.8zM23 0h-8.93a2 2 0 0 0-1.67.89L9 5.99H1a1 1 0 0 0-1 1v5.5l3.5 3.61 1.2-1.29 1.5 1.5L5 17.53l1.48 1.48 1.22-1.22 1.5 1.51L8 20.5l3.5 3.5H17a1 1 0 0 0 1-1v-8l5.11-3.4A2 2 0 0 0 24 9.92V1a1 1 0 0 0-1-1zm-5 9a3 3 0 1 1 0-6 3 3 0 0 1 0 6z"/></svg>
|
||||
|
After Width: | Height: | Size: 407 B |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 24 24" width="16px" fill="#606060"><title>CircleCI icon</title><path d="M8.963 12c0-1.584 1.284-2.855 2.855-2.855 1.572 0 2.856 1.284 2.856 2.855 0 1.572-1.284 2.856-2.856 2.856-1.57 0-2.855-1.284-2.855-2.856zm2.855-12C6.215 0 1.522 3.84.19 9.025c-.01.036-.01.07-.01.12 0 .313.252.576.575.576H5.59c.23 0 .433-.13.517-.333.997-2.16 3.18-3.672 5.712-3.672 3.466 0 6.286 2.82 6.286 6.287 0 3.47-2.82 6.29-6.29 6.29-2.53 0-4.714-1.5-5.71-3.673-.097-.19-.29-.336-.517-.336H.755c-.312 0-.575.253-.575.576 0 .037.014.072.014.12C1.514 20.16 6.214 24 11.818 24c6.624 0 12-5.375 12-12 0-6.623-5.376-12-12-12z"/></svg>
|
||||
|
After Width: | Height: | Size: 671 B |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 24 24" width="16px" fill="#606060"><title>GitHub icon</title><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg>
|
||||
|
After Width: | Height: | Size: 855 B |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 24 24" width="16px" fill="#606060"><title>GitLab icon</title><path d="M4.845.904c-.435 0-.82.28-.955.692C2.639 5.449 1.246 9.728.07 13.335a1.437 1.437 0 00.522 1.607l11.071 8.045c.2.145.472.144.67-.004l11.073-8.04a1.436 1.436 0 00.522-1.61c-1.285-3.942-2.683-8.256-3.817-11.746a1.004 1.004 0 00-.957-.684.987.987 0 00-.949.69l-2.405 7.408H8.203l-2.41-7.408a.987.987 0 00-.942-.69h-.006zm-.006 1.42l2.173 6.678H2.675zm14.326 0l2.168 6.678h-4.341zm-10.593 7.81h6.862c-1.142 3.52-2.288 7.04-3.434 10.559L8.572 10.135zm-5.514.005h4.321l3.086 9.5zm13.567 0h4.325c-2.467 3.17-4.95 6.328-7.411 9.502 1.028-3.167 2.059-6.334 3.086-9.502zM2.1 10.762l6.977 8.947-7.817-5.682a.305.305 0 01-.112-.341zm19.798 0l.952 2.922a.305.305 0 01-.11.341v.002l-7.82 5.68.026-.035z"/></svg>
|
||||
|
After Width: | Height: | Size: 830 B |
|
After Width: | Height: | Size: 5.4 KiB |
|
After Width: | Height: | Size: 5.6 KiB |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 24 24" width="16px" fill="#606060"><title>Windows icon</title><path d="M0 3.449L9.75 2.1v9.451H0m10.949-9.602L24 0v11.4H10.949M0 12.6h9.75v9.451L0 20.699M10.949 12.6H24V24l-12.9-1.801"/></svg>
|
||||
|
After Width: | Height: | Size: 256 B |
@@ -0,0 +1 @@
|
||||
../data
|
||||
@@ -29,7 +29,6 @@ h1, h2, h3, h4, h5, h6 {
|
||||
border-bottom: 1px solid #e1e4e5;
|
||||
margin-bottom: 0.8em;
|
||||
padding-bottom: 0.2em;
|
||||
|
||||
}
|
||||
|
||||
.rst-content blockquote {
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
---
|
||||
title: Working examples
|
||||
---
|
||||
|
||||
{%
|
||||
includemarkdown "../README.md"
|
||||
start="<!--working-examples-start-->"
|
||||
end="<!--working-examples-end-->"
|
||||
%}
|
||||
|
||||
<style>
|
||||
.wy-nav-content {
|
||||
/* this table benefits from a wider page */
|
||||
max-width: 1000px;
|
||||
}
|
||||
.rst-content .section table img {
|
||||
/* make the icons darker on this page */
|
||||
filter: brightness(0.5);
|
||||
}
|
||||
</style>
|
||||
@@ -20,7 +20,9 @@ nav:
|
||||
- deliver-to-pypi.md
|
||||
- cpp_standards.md
|
||||
- faq.md
|
||||
- working-examples.md
|
||||
- contributing.md
|
||||
- changelog.md
|
||||
|
||||
markdown_extensions:
|
||||
- fenced_code
|
||||
|
||||
@@ -7,4 +7,6 @@ pip-tools
|
||||
requests
|
||||
click
|
||||
mypy
|
||||
pyyaml
|
||||
pygithub
|
||||
typing-extensions
|
||||
|
||||