Compare commits

...
21 Commits
Author SHA1 Message Date
Henry Schreiner da84127892 docs: add Python 3.8 to the identifer list (#728) 2021-06-22 18:15:25 -04:00
Joe Rickerby bf3a5590c9 Bump version: v1.12.0 2021-06-22 18:13:50 +01:00
Henry Schreiner 8734e0e4e6 ci: pin dockcross for tests 2021-06-21 12:27:18 -04:00
Henry Schreiner 744812b7d3 ci: pin dockcross for tests 2021-06-21 12:27:18 -04:00
Henry Schreiner 548e0cefe3 feat: support building universal2/arm64 from x64_86 Python 3.8 (#704) 2021-06-21 12:27:18 -04:00
Joe Rickerby 6c62f9ee62 Bump version: v1.11.1.post1 2021-05-28 15:58:38 +01:00
Joe Rickerby 9a608b0b94 Fix mkdocs "Edit in Github" links 2021-05-28 15:53:26 +01:00
Joe Rickerby 5ea360607d Bump version: v1.11.1 2021-05-28 15:50:45 +01:00
Matthieu Darbois dc127cd69d Revert "Temporarily disable CircleCI mac builds (#685)" (#687)
This reverts commit af45aface9.
2021-05-28 14:24:46 +01:00
Joe Rickerby d1898152f7 Fix bump_version script 2021-05-28 14:13:04 +01:00
Joe Rickerby e4a917f717 Revert "Remove travis-ci macOS from docs/examples"
This reverts commit 5de574d36820c2481f4e7557ed6aa0e431ee3e63.
2021-05-24 17:24:36 -04:00
Henry Schreiner 6d5c80c624 ci: use native actions syntax (#662) 2021-05-24 17:24:36 -04:00
Henry SchreinerandJoe Rickerby 6ab9906ff0 chore: rename joerick/cibuildwheel -> pypa/cibuildwheel (#682)
* chore: rename joerick/cibuildwheel -> pypa/cibuildwheel

* Update Appveyor status badge markup

Note that it still has joerick/cibuildwheel - confusingly it's still within my appveyor account, but this is the new project that points to the pypa github repo

* Update Appveyor badge markup again

I went through a few passes to enable that project, here's the latest.

* Update Azure badge, also

* Update Travis badge to reference the .com

Co-authored-by: Joe Rickerby <joerick@mac.com>
2021-05-24 17:24:36 -04:00
Matthieu Darbois 5150122a95 Fix Travis CI tests on ppc64le/s390x (#689)
* Disable manylinux only tests on Travis CI ppc64le

Those tests are taking too much disk space for the Travis CI runner right now.
c.f. https://travis-ci.community/t/running-out-of-disk-space-quota-when-using-docker-on-ppc64le/11634

* Use focal to run aarch64/ppc64le/s390x jobs on Travis CI

This removes allow_failures from the Travis CI s390x job

* Use `focal` distribution for all Travis CI configurations

* Revert "Disable manylinux only tests on Travis CI ppc64le"

This reverts commit d0a09c689c058985c7dcb60b1e11a85a7bfce5e0.

* Skip test_manylinuxXXXX_only on Travis CI ppc64le

* Add a comment on why test_manylinuxXXXX_only test is skipped
2021-05-24 17:24:36 -04:00
Matthieu Darbois e5556f67f4 Remove macOS build on travis-ci (#686)
* Remove macOS build on travis-ci
* Remove travis-ci macOS from docs/examples
2021-05-24 17:24:36 -04:00
Edoardopre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>Henry Schreiner
f6fc96400b docs: update projects.yml (#673)
* Update projects.yml

Added EdoPro98/SimSiPM project

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* docs: add more projects

* docs: rerun projects.py

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Henry Schreiner <henryschreineriii@gmail.com>
2021-05-24 17:24:36 -04:00
Joe Rickerby 7e3bbe6e04 Temporarily disable CircleCI mac builds (#685) 2021-05-24 17:24:36 -04:00
Henry Schreiner 13f875a04a chore: move to PyPA (PSF) CoC (#679) 2021-05-18 13:51:04 -04:00
Henry SchreinerandMatthieu Darbois 339beb061c [1.x] chore: bump to final Python 3.5 pin (#674)
* chore: bump to final Python 3.5 pin

* Update pinned_docker_images.cfg

* Apply suggestions from code review

Co-authored-by: Matthieu Darbois <mayeut@users.noreply.github.com>

Co-authored-by: Matthieu Darbois <mayeut@users.noreply.github.com>
2021-05-14 16:41:12 -04:00
Henry Schreiner fee39c2f35 fix: missing f for fstrings in bin (#659) 2021-05-07 18:17:44 -04:00
Joe Rickerby 73adde0b9f Enable tests on 1.x branch 2021-05-05 08:51:06 +01:00
39 changed files with 269 additions and 245 deletions
+2 -5
View File
@@ -4,6 +4,7 @@ on:
push: push:
branches: branches:
- master - master
- 1.x
pull_request: pull_request:
paths-ignore: paths-ignore:
- 'docs/**' - 'docs/**'
@@ -39,12 +40,8 @@ jobs:
run: | run: |
python -m pip install -e ".[dev]" python -m pip install -e ".[dev]"
- name: Get PR labels
id: pr-labels
uses: joerick/pr-labels-action@v1.0.6
- name: Sample build - name: Sample build
if: contains(steps.pr-labels.outputs.labels, ' ci-sample-build ') if: "contains(github.event.pull_request.labels.*.name, 'CI: Sample build')"
run: | run: |
python bin/sample_build.py python bin/sample_build.py
+1 -1
View File
@@ -23,7 +23,7 @@ jobs:
- name: "Run update: python configs" - name: "Run update: python configs"
run: python ./bin/update_pythons.py --force run: python ./bin/update_pythons.py --force
- name: Create Pull Request - name: Create Pull Request
if: github.ref == 'refs/heads/master' && github.repository == 'joerick/cibuildwheel' if: github.ref == 'refs/heads/master' && github.repository == 'pypa/cibuildwheel'
uses: peter-evans/create-pull-request@v3 uses: peter-evans/create-pull-request@v3
with: with:
commit-message: Update dependencies commit-message: Update dependencies
+8 -17
View File
@@ -1,4 +1,6 @@
language: minimal os: linux
dist: focal
language: python
branches: branches:
only: only:
@@ -7,30 +9,25 @@ branches:
jobs: jobs:
include: include:
- name: Linux | x86_64 + i686 | Python 3.6 - name: Linux | x86_64 + i686 | Python 3.6
language: python
python: 3.6 python: 3.6
services: docker services: docker
env: PYTHON=python env: PYTHON=python
- name: Linux | arm64 | Python 3.6 - name: Linux | arm64 | Python 3.6
language: python
python: 3.6 python: 3.6
services: docker services: docker
arch: arm64 arch: arm64
env: PYTHON=python env: PYTHON=python
- name: Linux | ppc64le | Python 3.6 - name: Linux | ppc64le | Python 3.6
language: python
python: 3.6 python: 3.6
services: docker services: docker
arch: ppc64le arch: ppc64le
env: PYTHON=python
- name: macOS | x86_64 | Python 3.x
os: osx
env: env:
- PYTHON=python3 - PYTHON=python
- PYTEST_ADDOPTS='-k "unit_test or test_0_basic" --suppress-no-test-exit-code' # skip test_manylinuxXXXX_only, it uses too much disk space
# c.f. https://travis-ci.community/t/running-out-of-disk-space-quota-when-using-docker-on-ppc64le/11634
- PYTEST_ADDOPTS='-k "not test_manylinuxXXXX_only"'
- name: Windows | x86_64 | Python 3.6 - name: Windows | x86_64 | Python 3.6
os: windows os: windows
@@ -42,18 +39,12 @@ jobs:
env: env:
- PYTHON=C:\\Python36\\python - PYTHON=C:\\Python36\\python
- &linux_s390x_36 - name: Linux | s390x | Python 3.6
name: Linux | s390x | Python 3.6
language: python
python: 3.6 python: 3.6
services: docker services: docker
arch: s390x arch: s390x
env: PYTHON=python env: PYTHON=python
allow_failures:
# must repeat the s390x job above exactly to match
- *linux_s390x_36
install: $PYTHON -m pip install -e ".[dev]" pytest-custom-exit-code install: $PYTHON -m pip install -e ".[dev]" pytest-custom-exit-code
script: $PYTHON ./bin/run_tests.py script: $PYTHON ./bin/run_tests.py
-46
View File
@@ -1,46 +0,0 @@
# Contributor Covenant Code of Conduct
## Our Pledge
In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
## Our Standards
Examples of behavior that contributes to creating a positive environment include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a professional setting
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
## Scope
This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at joerick@mac.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
[homepage]: http://contributor-covenant.org
[version]: http://contributor-covenant.org/version/1/4/
+126 -89
View File
@@ -3,11 +3,11 @@ cibuildwheel
[![PyPI](https://img.shields.io/pypi/v/cibuildwheel.svg)](https://pypi.python.org/pypi/cibuildwheel) [![PyPI](https://img.shields.io/pypi/v/cibuildwheel.svg)](https://pypi.python.org/pypi/cibuildwheel)
[![Documentation Status](https://readthedocs.org/projects/cibuildwheel/badge/?version=stable)](https://cibuildwheel.readthedocs.io/en/stable/?badge=stable) [![Documentation Status](https://readthedocs.org/projects/cibuildwheel/badge/?version=stable)](https://cibuildwheel.readthedocs.io/en/stable/?badge=stable)
[![Actions Status](https://github.com/joerick/cibuildwheel/workflows/Test/badge.svg)](https://github.com/joerick/cibuildwheel/actions) [![Actions Status](https://github.com/pypa/cibuildwheel/workflows/Test/badge.svg)](https://github.com/pypa/cibuildwheel/actions)
[![Travis Status](https://img.shields.io/travis/joerick/cibuildwheel/master?logo=travis)](https://travis-ci.org/joerick/cibuildwheel) [![Travis Status](https://img.shields.io/travis/com/pypa/cibuildwheel/master?logo=travis)](https://travis-ci.com/pypa/cibuildwheel)
[![AppVeyor status](https://ci.appveyor.com/api/projects/status/wbsgxshp05tt1tif/branch/master?svg=true)](https://ci.appveyor.com/project/joerick/cibuildwheel/branch/master) [![Appveyor status](https://ci.appveyor.com/api/projects/status/gt3vwl88yt0y3hur/branch/master?svg=true)](https://ci.appveyor.com/project/joerick/cibuildwheel/branch/master)
[![CircleCI Status](https://img.shields.io/circleci/build/gh/joerick/cibuildwheel/master?logo=circleci)](https://circleci.com/gh/joerick/cibuildwheel) [![CircleCI Status](https://img.shields.io/circleci/build/gh/pypa/cibuildwheel/master?logo=circleci)](https://circleci.com/gh/pypa/cibuildwheel)
[![Azure Status](https://dev.azure.com/joerick0429/cibuildwheel/_apis/build/status/joerick.cibuildwheel?branchName=master)](https://dev.azure.com/joerick0429/cibuildwheel/_build/latest?definitionId=2&branchName=master) [![Azure Status](https://dev.azure.com/joerick0429/cibuildwheel/_apis/build/status/pypa.cibuildwheel?branchName=master)](https://dev.azure.com/joerick0429/cibuildwheel/_build/latest?definitionId=4&branchName=master)
[Documentation](https://cibuildwheel.readthedocs.org) [Documentation](https://cibuildwheel.readthedocs.org)
@@ -28,7 +28,7 @@ What does it do?
| CPython 3.5 | ✅ | | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | CPython 3.5 | ✅ | | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| CPython 3.6 | ✅ | | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | CPython 3.6 | ✅ | | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| CPython 3.7 | ✅ | | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | CPython 3.7 | ✅ | | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| CPython 3.8 | ✅ | | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | CPython 3.8 | ✅ | | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| CPython 3.9 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | CPython 3.9 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| PyPy 2.7 v7.3.3 | ✅ | | | ✅ | ✅ | | | | | | PyPy 2.7 v7.3.3 | ✅ | | | ✅ | ✅ | | | | |
| PyPy 3.6 v7.3.3 | ✅ | | | ✅ | ✅ | | | | | | PyPy 3.6 v7.3.3 | ✅ | | | ✅ | ✅ | | | | |
@@ -48,7 +48,7 @@ Usage
| | Linux | macOS | Windows | Linux ARM | | | Linux | macOS | Windows | Linux ARM |
|-----------------|-------|-------|---------|--------------| |-----------------|-------|-------|---------|--------------|
| GitHub Actions | ✅ | ✅ | ✅ | ✅¹ | | GitHub Actions | ✅ | ✅ | ✅ | ✅¹ |
| Azure Pipelines | ✅ | ✅ | ✅ | | | Azure Pipelines | ✅ | ✅ | ✅ | |
| Travis CI | ✅ | ✅ | ✅ | ✅ | | Travis CI | ✅ | ✅ | ✅ | ✅ |
| AppVeyor | ✅ | ✅ | ✅ | | | AppVeyor | ✅ | ✅ | ✅ | |
@@ -86,7 +86,7 @@ jobs:
- uses: actions/setup-python@v2 - uses: actions/setup-python@v2
- name: Install cibuildwheel - name: Install cibuildwheel
run: python -m pip install cibuildwheel==1.11.0 run: python -m pip install cibuildwheel==1.12.0
- name: Build wheels - name: Build wheels
run: python -m cibuildwheel --output-dir wheelhouse run: python -m cibuildwheel --output-dir wheelhouse
@@ -99,7 +99,7 @@ jobs:
path: ./wheelhouse/*.whl path: ./wheelhouse/*.whl
``` ```
For more information, including building on Python 2, PyPI deployment, and the use of other CI services or the dedicated GitHub Action, check out the [documentation](https://cibuildwheel.readthedocs.org) and the [examples](https://github.com/joerick/cibuildwheel/tree/master/examples). For more information, including building on Python 2, PyPI deployment, and the use of other CI services or the dedicated GitHub Action, check out the [documentation](https://cibuildwheel.readthedocs.org) and the [examples](https://github.com/pypa/cibuildwheel/tree/master/examples).
Options Options
------- -------
@@ -146,48 +146,55 @@ 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. | | [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. | | [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. | | [aiortc][] | ![github icon][] | ![apple icon][] ![linux icon][] | WebRTC and ORTC implementation for Python using asyncio. |
| [numexpr][] | ![github icon][] ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Fast numerical array expression evaluator for Python, NumPy, PyTables, pandas, bcolz and more |
| [coverage.py][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | The coverage tool for Python |
| [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. |
| [River][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | 🌊 Online machine learning in 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. | | [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 | | [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 | | [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. | | [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 | | [aioquic][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | QUIC and HTTP/3 implementation in Python |
| [google neuroglancer][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | WebGL-based viewer for volumetric data |
| [pikepdf][] | ![azurepipelines icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A Python library for reading and writing PDF, powered by qpdf | | [pikepdf][] | ![azurepipelines icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A Python library for reading and writing PDF, powered by qpdf |
| [DeepForest][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | An Efficient, Scalable and Optimized Python Framework for Deep Forest (2021.2.1) |
| [google neuroglancer][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | WebGL-based viewer for volumetric data |
| [AutoPy][] | ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Includes a Windows Travis build. | | [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. | | [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 | | [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 ¶ | | [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 | | [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. | | [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 | | [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 | | [cyvcf2][] | ![github icon][] | ![apple icon][] ![linux icon][] | cython + htslib == fast VCF and BCF processing |
| [pybind11 cmake_example][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Example pybind11 module built with a CMake-based build system |
| [pybind11 python_example][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Example pybind11 module built with a Python-based build system | | [pybind11 python_example][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Example pybind11 module built with a Python-based build system |
| [sourmash][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Compute and compare MinHash signatures for DNA data sets. | | [sourmash][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Quickly search, compare, and analyze genomic and metagenomic data sets. |
| [dd-trace-py][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Uses custom alternate arch emulation on GitHub | | [dd-trace-py][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Uses custom alternate arch emulation on GitHub |
| [iminuit][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Jupyter-friendly Python interface for C++ MINUIT2 | | [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 |
| [time-machine][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Time mocking library using only the CPython C API. | | [time-machine][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Time mocking library using only the CPython C API. |
| [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. | | [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. |
| [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. | | [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. |
| [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 | | [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. | | [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. | | [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 | | [iDynTree][] | ![github icon][] | ![linux icon][] | Uses manylinux_2_24 |
| [TgCrypto][] | ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Includes a Windows Travis build. | | [TgCrypto][] | ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Includes a Windows Travis build. |
| [pybase64][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Fast Base64 encoding/decoding in Python |
| [etebase-py][] | ![travisci icon][] | ![linux icon][] | Python bindings to a Rust library using `setuptools-rust`, and `sccache` for improved speed. | | [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 | | [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 | | [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 | | [fathon][] | ![travisci icon][] | ![apple icon][] ![linux icon][] | python package for DFA (Detrended Fluctuation Analysis) and related algorithms |
| [Imagecodecs (fork)][] | ![azurepipelines icon][] | ![apple icon][] ![linux icon][] | Over 20 external dependencies in compiled libraries, custom docker image, `libomp`, `openblas` and `install_name_tool` for macOS. |
| [pyinstrument_cext][] | ![travisci icon][] ![appveyor icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A simple C extension, without external dependencies |
| [polaroid][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Full range of wheels for setuptools rust, with auto release and PyPI deploy. | | [polaroid][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Full range of wheels for setuptools rust, with auto release and PyPI deploy. |
| [xmlstarlet][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Python 3.6+ CFFI bindings with true MSVC build. | | [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 | | [pybind11 scikit_build_example][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | An example combining scikit-build and pybind11 |
| [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. |
| [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. |
| [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 [scikit-learn]: https://github.com/scikit-learn/scikit-learn
[Matplotlib]: https://github.com/matplotlib/matplotlib [Matplotlib]: https://github.com/matplotlib/matplotlib
@@ -198,48 +205,55 @@ Here are some repos that use cibuildwheel.
[websockets]: https://github.com/aaugustin/websockets [websockets]: https://github.com/aaugustin/websockets
[pyzmq]: https://github.com/zeromq/pyzmq [pyzmq]: https://github.com/zeromq/pyzmq
[aiortc]: https://github.com/aiortc/aiortc [aiortc]: https://github.com/aiortc/aiortc
[numexpr]: https://github.com/pydata/numexpr
[coverage.py]: https://github.com/nedbat/coveragepy
[h5py]: https://github.com/h5py/h5py
[River]: https://github.com/online-ml/river [River]: https://github.com/online-ml/river
[PyAV]: https://github.com/PyAV-Org/PyAV [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 [Dependency Injector]: https://github.com/ets-labs/python-dependency-injector
[PyAV]: https://github.com/PyAV-Org/PyAV
[PyTables]: https://github.com/PyTables/PyTables [PyTables]: https://github.com/PyTables/PyTables
[ruptures]: https://github.com/deepcharles/ruptures [ruptures]: https://github.com/deepcharles/ruptures
[aioquic]: https://github.com/aiortc/aioquic [aioquic]: https://github.com/aiortc/aioquic
[google neuroglancer]: https://github.com/google/neuroglancer
[pikepdf]: https://github.com/pikepdf/pikepdf [pikepdf]: https://github.com/pikepdf/pikepdf
[DeepForest]: https://github.com/LAMDA-NJU/Deep-Forest
[google neuroglancer]: https://github.com/google/neuroglancer
[AutoPy]: https://github.com/autopilot-rs/autopy [AutoPy]: https://github.com/autopilot-rs/autopy
[Parselmouth]: https://github.com/YannickJadoul/Parselmouth [Parselmouth]: https://github.com/YannickJadoul/Parselmouth
[python-rapidjson]: https://github.com/python-rapidjson/python-rapidjson [python-rapidjson]: https://github.com/python-rapidjson/python-rapidjson
[Rtree]: https://github.com/Toblerity/rtree [Rtree]: https://github.com/Toblerity/rtree
[python-snappy]: https://github.com/andrix/python-snappy [python-snappy]: https://github.com/andrix/python-snappy
[markupsafe]: https://github.com/pallets/markupsafe [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 [KDEpy]: https://github.com/tommyod/KDEpy
[cyvcf2]: https://github.com/brentp/cyvcf2 [cyvcf2]: https://github.com/brentp/cyvcf2
[pybind11 cmake_example]: https://github.com/pybind/cmake_example
[pybind11 python_example]: https://github.com/pybind/python_example [pybind11 python_example]: https://github.com/pybind/python_example
[sourmash]: https://github.com/dib-lab/sourmash [sourmash]: https://github.com/dib-lab/sourmash
[dd-trace-py]: https://github.com/DataDog/dd-trace-py [dd-trace-py]: https://github.com/DataDog/dd-trace-py
[iminuit]: https://github.com/scikit-hep/iminuit [iminuit]: https://github.com/scikit-hep/iminuit
[jq.py]: https://github.com/mwilliamson/jq.py
[time-machine]: https://github.com/adamchainz/time-machine [time-machine]: https://github.com/adamchainz/time-machine
[matrixprofile]: https://github.com/matrix-profile-foundation/matrixprofile [matrixprofile]: https://github.com/matrix-profile-foundation/matrixprofile
[CTranslate2]: https://github.com/OpenNMT/CTranslate2 [CTranslate2]: https://github.com/OpenNMT/CTranslate2
[jq.py]: https://github.com/mwilliamson/jq.py
[Tokenizer]: https://github.com/OpenNMT/Tokenizer [Tokenizer]: https://github.com/OpenNMT/Tokenizer
[PyGLM]: https://github.com/Zuzu-Typ/PyGLM
[bx-python]: https://github.com/bxlab/bx-python [bx-python]: https://github.com/bxlab/bx-python
[boost-histogram]: https://github.com/scikit-hep/boost-histogram [boost-histogram]: https://github.com/scikit-hep/boost-histogram
[pybase64]: https://github.com/mayeut/pybase64 [iDynTree]: https://github.com/robotology/idyntree
[TgCrypto]: https://github.com/pyrogram/tgcrypto [TgCrypto]: https://github.com/pyrogram/tgcrypto
[pybase64]: https://github.com/mayeut/pybase64
[etebase-py]: https://github.com/etesync/etebase-py [etebase-py]: https://github.com/etesync/etebase-py
[pyjet]: https://github.com/scikit-hep/pyjet [pyjet]: https://github.com/scikit-hep/pyjet
[numpythia]: https://github.com/scikit-hep/numpythia [numpythia]: https://github.com/scikit-hep/numpythia
[fathon]: https://github.com/stfbnc/fathon [fathon]: https://github.com/stfbnc/fathon
[Imagecodecs (fork)]: https://github.com/czaki/imagecodecs_build
[pyinstrument_cext]: https://github.com/joerick/pyinstrument_cext
[polaroid]: https://github.com/daggy1234/polaroid [polaroid]: https://github.com/daggy1234/polaroid
[xmlstarlet]: https://github.com/dimitern/xmlstarlet [GSD]: https://github.com/glotzerlab/gsd
[pybind11 scikit_build_example]: https://github.com/pybind/scikit_build_example [pybind11 scikit_build_example]: https://github.com/pybind/scikit_build_example
[pyinstrument_cext]: https://github.com/joerick/pyinstrument_cext
[xmlstarlet]: https://github.com/dimitern/xmlstarlet
[CorrectionLib]: https://github.com/cms-nanoAOD/correctionlib
[Imagecodecs (fork)]: https://github.com/czaki/imagecodecs_build
[SiPM]: https://github.com/EdoPro98/SimSiPM
[appveyor icon]: docs/data/readme_icons/appveyor.svg [appveyor icon]: docs/data/readme_icons/appveyor.svg
[github icon]: docs/data/readme_icons/github.svg [github icon]: docs/data/readme_icons/github.svg
@@ -251,61 +265,68 @@ Here are some repos that use cibuildwheel.
[apple icon]: docs/data/readme_icons/apple.svg [apple icon]: docs/data/readme_icons/apple.svg
[linux icon]: docs/data/readme_icons/linux.svg [linux icon]: docs/data/readme_icons/linux.svg
<!-- scikit-learn: 44749, last pushed 0 days ago --> <!-- scikit-learn: 45793, last pushed 0 days ago -->
<!-- Matplotlib: 13218, last pushed 0 days ago --> <!-- Matplotlib: 13636, last pushed 0 days ago -->
<!-- MyPy: 10122, last pushed 0 days ago --> <!-- MyPy: 10696, last pushed 0 days ago -->
<!-- psutil: 7128, last pushed 7 days ago --> <!-- psutil: 7319, last pushed 4 days ago -->
<!-- scikit-image: 4220, last pushed 0 days ago --> <!-- scikit-image: 4342, last pushed 0 days ago -->
<!-- twisted-iocpsupport: 4184, last pushed 0 days ago --> <!-- twisted-iocpsupport: 4266, last pushed 0 days ago -->
<!-- websockets: 3217, last pushed 13 days ago --> <!-- websockets: 3349, last pushed 0 days ago -->
<!-- pyzmq: 2707, last pushed 13 days ago --> <!-- pyzmq: 2792, last pushed 1 days ago -->
<!-- aiortc: 2244, last pushed 0 days ago --> <!-- aiortc: 2396, last pushed 32 days ago -->
<!-- numexpr: 1548, last pushed 0 days ago --> <!-- River: 1604, last pushed 0 days ago -->
<!-- coverage.py: 1515, last pushed 1 days ago --> <!-- coverage.py: 1592, last pushed 6 days ago -->
<!-- h5py: 1485, last pushed 0 days ago --> <!-- numexpr: 1586, last pushed 75 days ago -->
<!-- River: 1428, last pushed 0 days ago --> <!-- h5py: 1517, last pushed 1 days ago -->
<!-- PyAV: 1182, last pushed 2 days ago --> <!-- Dependency Injector: 1318, last pushed 20 days ago -->
<!-- Dependency Injector: 1163, last pushed 0 days ago --> <!-- PyAV: 1246, last pushed 2 days ago -->
<!-- PyTables: 1005, last pushed 18 days ago --> <!-- PyTables: 1023, last pushed 53 days ago -->
<!-- ruptures: 637, last pushed 1 days ago --> <!-- ruptures: 704, last pushed 0 days ago -->
<!-- aioquic: 587, last pushed 15 days ago --> <!-- aioquic: 644, last pushed 13 days ago -->
<!-- google neuroglancer: 568, last pushed 5 days ago --> <!-- pikepdf: 624, last pushed 9 days ago -->
<!-- pikepdf: 548, last pushed 0 days ago --> <!-- DeepForest: 591, last pushed 6 days ago -->
<!-- AutoPy: 519, last pushed 175 days ago --> <!-- google neuroglancer: 586, last pushed 3 days ago -->
<!-- Parselmouth: 471, last pushed 0 days ago --> <!-- AutoPy: 533, last pushed 251 days ago -->
<!-- python-rapidjson: 415, last pushed 80 days ago --> <!-- Parselmouth: 511, last pushed 0 days ago -->
<!-- Rtree: 388, last pushed 69 days ago --> <!-- python-rapidjson: 420, last pushed 156 days ago -->
<!-- python-snappy: 386, last pushed 6 days ago --> <!-- Rtree: 403, last pushed 59 days ago -->
<!-- markupsafe: 365, last pushed 2 days ago --> <!-- python-snappy: 398, last pushed 82 days ago -->
<!-- KDEpy: 242, last pushed 16 days ago --> <!-- markupsafe: 390, last pushed 0 days ago -->
<!-- cyvcf2: 242, last pushed 17 days ago --> <!-- H3-py: 376, last pushed 0 days ago -->
<!-- pybind11 cmake_example: 239, last pushed 77 days ago --> <!-- pybind11 cmake_example: 271, last pushed 6 days ago -->
<!-- pybind11 python_example: 235, last pushed 22 days ago --> <!-- KDEpy: 264, last pushed 7 days ago -->
<!-- sourmash: 235, last pushed 0 days ago --> <!-- cyvcf2: 260, last pushed 19 days ago -->
<!-- dd-trace-py: 217, last pushed 0 days ago --> <!-- pybind11 python_example: 250, last pushed 6 days ago -->
<!-- iminuit: 172, last pushed 20 days ago --> <!-- sourmash: 241, last pushed 0 days ago -->
<!-- jq.py: 147, last pushed 7 days ago --> <!-- dd-trace-py: 237, last pushed 0 days ago -->
<!-- time-machine: 139, last pushed 4 days ago --> <!-- iminuit: 181, last pushed 0 days ago -->
<!-- matrixprofile: 138, last pushed 36 days ago --> <!-- time-machine: 160, last pushed 0 days ago -->
<!-- CTranslate2: 133, last pushed 0 days ago --> <!-- matrixprofile: 158, last pushed 68 days ago -->
<!-- Tokenizer: 126, last pushed 0 days ago --> <!-- CTranslate2: 157, last pushed 0 days ago -->
<!-- bx-python: 97, last pushed 2 days ago --> <!-- jq.py: 152, last pushed 15 days ago -->
<!-- boost-histogram: 69, last pushed 0 days ago --> <!-- Tokenizer: 140, last pushed 14 days ago -->
<!-- pybase64: 56, last pushed 1 days ago --> <!-- PyGLM: 103, last pushed 7 days ago -->
<!-- TgCrypto: 52, last pushed 106 days ago --> <!-- bx-python: 102, last pushed 47 days ago -->
<!-- etebase-py: 46, last pushed 58 days ago --> <!-- boost-histogram: 78, last pushed 0 days ago -->
<!-- pyjet: 27, last pushed 7 days ago --> <!-- iDynTree: 75, last pushed 3 days ago -->
<!-- numpythia: 25, last pushed 7 days ago --> <!-- TgCrypto: 64, last pushed 16 days ago -->
<!-- fathon: 22, last pushed 31 days ago --> <!-- pybase64: 62, last pushed 1 days ago -->
<!-- Imagecodecs (fork): 16, last pushed 4 days ago --> <!-- etebase-py: 50, last pushed 134 days ago -->
<!-- pyinstrument_cext: 10, last pushed 19 days ago --> <!-- pyjet: 28, last pushed 6 days ago -->
<!-- polaroid: 9, last pushed 0 days ago --> <!-- numpythia: 28, last pushed 15 days ago -->
<!-- xmlstarlet: 7, last pushed 1 days ago --> <!-- fathon: 25, last pushed 65 days ago -->
<!-- pybind11 scikit_build_example: 4, last pushed 40 days ago --> <!-- polaroid: 16, last pushed 69 days ago -->
<!-- GSD: 16, last pushed 1 days ago -->
<!-- pybind11 scikit_build_example: 14, last pushed 6 days ago -->
<!-- pyinstrument_cext: 10, last pushed 95 days ago -->
<!-- xmlstarlet: 7, last pushed 29 days ago -->
<!-- CorrectionLib: 5, last pushed 5 days ago -->
<!-- Imagecodecs (fork): 3, last pushed 19 days ago -->
<!-- SiPM: 2, last pushed 15 days ago -->
<!-- END bin/projects.py --> <!-- END bin/projects.py -->
> Add your repo here! Let us know on [GitHub Discussions](https://github.com/joerick/cibuildwheel/discussions/485), or send a PR, adding your information to `docs/data/projects.yml`. > 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`.
> >
> <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> > <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>
@@ -325,6 +346,20 @@ Changelog
<!--changelog-start--> <!--changelog-start-->
### v1.12.0
_22 June 2021_
- ✨ Adds support building universal2/arm64 wheels on Python 3.8.
### v1.11.1
_28 May 2021_
- ✨ cibuildwheel is now part of the PyPA!
- 📚 Minor docs changes, fixing links related to the above transition
- 🛠 Update manylinux pins to the last version containing Python 2.7 and 3.5. (#674)
### v1.11.0 ### v1.11.0
_1 May 2021_ _1 May 2021_
@@ -376,7 +411,7 @@ _5 February 2021_
```yaml ```yaml
- name: Build wheels - name: Build wheels
uses: joerick/cibuildwheel@version # e.g. v1.9.0 uses: pypa/cibuildwheel@version # e.g. v1.9.0
with: with:
output-dir: wheelhouse output-dir: wheelhouse
# env: # env:
@@ -704,7 +739,7 @@ _26 May 2019_
- 🌟 Add support for building on Azure pipelines! This lets you build all - 🌟 Add support for building on Azure pipelines! This lets you build all
Linux, Mac and Windows wheels on one service, so it promises to be the Linux, Mac and Windows wheels on one service, so it promises to be the
easiest to set up! Check out the quickstart in the docs, or easiest to set up! Check out the quickstart in the docs, or
[cibuildwheel-azure-example](https://github.com/joerick/cibuildwheel-azure-example) [cibuildwheel-azure-example](https://github.com/pypa/cibuildwheel-azure-example)
for an example project. (#126, #132) for an example project. (#126, #132)
- 🛠 Internal change - the end-to-end test projects format was updated, so we - 🛠 Internal change - the end-to-end test projects format was updated, so we
can more precisely assert what should be produced for each one. (#136, #137). can more precisely assert what should be produced for each one. (#136, #137).
@@ -859,6 +894,8 @@ Contributing
For more info on how to contribute to cibuildwheel, see the [docs](https://cibuildwheel.readthedocs.io/en/latest/contributing/). For more info on how to contribute to cibuildwheel, see the [docs](https://cibuildwheel.readthedocs.io/en/latest/contributing/).
Everyone interacting with the cibuildwheel project via codebase, issue tracker, chat rooms, or otherwise is expected to follow the [PSF Code of Conduct](https://github.com/pypa/.github/blob/main/CODE_OF_CONDUCT.md).
Maintainers Maintainers
----------- -----------
@@ -878,9 +915,9 @@ Credits
Massive props also to- Massive props also to-
- @zfrenchee for [help debugging many issues](https://github.com/joerick/cibuildwheel/issues/2) - @zfrenchee for [help debugging many issues](https://github.com/pypa/cibuildwheel/issues/2)
- @lelit for some great bug reports and [contributions](https://github.com/joerick/cibuildwheel/pull/73) - @lelit for some great bug reports and [contributions](https://github.com/pypa/cibuildwheel/pull/73)
- @mayeut for a [phenomenal PR](https://github.com/joerick/cibuildwheel/pull/71) patching Python itself for better compatibility! - @mayeut for a [phenomenal PR](https://github.com/pypa/cibuildwheel/pull/71) patching Python itself for better compatibility!
- @czaki for being a super-contributor over many PRs and helping out with countless issues! - @czaki for being a super-contributor over many PRs and helping out with countless issues!
- @mattip for his help with adding PyPy support to cibuildwheel - @mattip for his help with adding PyPy support to cibuildwheel
+1 -1
View File
@@ -22,7 +22,7 @@ init:
install: python -m pip install -e ".[dev]" pytest-custom-exit-code install: python -m pip install -e ".[dev]" pytest-custom-exit-code
# the '-u' flag is required so the output is in the correct order. # the '-u' flag is required so the output is in the correct order.
# See https://github.com/joerick/cibuildwheel/pull/24 for more info. # See https://github.com/pypa/cibuildwheel/pull/24 for more info.
test_script: python -u ./bin/run_tests.py test_script: python -u ./bin/run_tests.py
branches: branches:
+2 -2
View File
@@ -18,7 +18,7 @@ import cibuildwheel
config = [ config = [
# file path, version find/replace format # file path, version find/replace format
("README.md", "cibuildwheel=={}"), ("README.md", "cibuildwheel=={}"),
("cibuildwheel/__init__.py", "__version__ = '{}'"), ("cibuildwheel/__init__.py", '__version__ = "{}"'),
("docs/faq.md", "cibuildwheel=={}"), ("docs/faq.md", "cibuildwheel=={}"),
("docs/faq.md", "cibuildwheel@v{}"), ("docs/faq.md", "cibuildwheel@v{}"),
("docs/setup.md", "cibuildwheel=={}"), ("docs/setup.md", "cibuildwheel=={}"),
@@ -52,7 +52,7 @@ def bump_version() -> None:
cd_date, cd_time, cd_tz = commit_date_str.split(" ") cd_date, cd_time, cd_tz = commit_date_str.split(" ")
url_opts = urllib.parse.urlencode({"q": f"is:pr merged:>{cd_date}T{cd_time}{cd_tz}"}) url_opts = urllib.parse.urlencode({"q": f"is:pr merged:>{cd_date}T{cd_time}{cd_tz}"})
url = f"https://github.com/joerick/cibuildwheel/pulls?{url_opts}" url = f"https://github.com/pypa/cibuildwheel/pulls?{url_opts}"
print(f"PRs merged since last release:\n {url}") print(f"PRs merged since last release:\n {url}")
print() print()
+1 -1
View File
@@ -62,7 +62,7 @@ def main():
"gh", "gh",
"pr", "pr",
"create", "create",
"--repo=joerick/cibuildwheel", "--repo=pypa/cibuildwheel",
"--base=master", "--base=master",
"--title=Update dependencies", "--title=Update dependencies",
f"--body='{body}'", f"--body='{body}'",
+6 -8
View File
@@ -39,7 +39,7 @@ services = [
CIService( CIService(
name="appveyor", name="appveyor",
dst_config_path="appveyor.yml", dst_config_path="appveyor.yml",
badge_md="[![Build status](https://ci.appveyor.com/api/projects/status/wbsgxshp05tt1tif/branch/{branch}?svg=true)](https://ci.appveyor.com/project/joerick/cibuildwheel/branch/{branch})", badge_md="[![Build status](https://ci.appveyor.com/api/projects/status/wbsgxshp05tt1tif/branch/{branch}?svg=true)](https://ci.appveyor.com/project/pypa/cibuildwheel/branch/{branch})",
), ),
CIService( CIService(
name="azure-pipelines", name="azure-pipelines",
@@ -49,22 +49,22 @@ services = [
CIService( CIService(
name="circleci", name="circleci",
dst_config_path=".circleci/config.yml", dst_config_path=".circleci/config.yml",
badge_md="[![CircleCI](https://circleci.com/gh/joerick/cibuildwheel/tree/{branch_escaped}.svg?style=svg)](https://circleci.com/gh/joerick/cibuildwheel/tree/{branch})", badge_md="[![CircleCI](https://circleci.com/gh/pypa/cibuildwheel/tree/{branch_escaped}.svg?style=svg)](https://circleci.com/gh/pypa/cibuildwheel/tree/{branch})",
), ),
CIService( CIService(
name="github", name="github",
dst_config_path=".github/workflows/example.yml", dst_config_path=".github/workflows/example.yml",
badge_md="[![Build](https://github.com/joerick/cibuildwheel/workflows/Build/badge.svg?branch={branch})](https://github.com/joerick/cibuildwheel/actions)", badge_md="[![Build](https://github.com/pypa/cibuildwheel/workflows/Build/badge.svg?branch={branch})](https://github.com/pypa/cibuildwheel/actions)",
), ),
CIService( CIService(
name="travis-ci", name="travis-ci",
dst_config_path=".travis.yml", dst_config_path=".travis.yml",
badge_md="[![Build Status](https://travis-ci.org/joerick/cibuildwheel.svg?branch={branch})](https://travis-ci.org/joerick/cibuildwheel)", badge_md="[![Build Status](https://travis-ci.org/pypa/cibuildwheel.svg?branch={branch})](https://travis-ci.org/pypa/cibuildwheel)",
), ),
CIService( CIService(
name="gitlab", name="gitlab",
dst_config_path=".gitlab-ci.yml", dst_config_path=".gitlab-ci.yml",
badge_md="[![Gitlab](https://gitlab.com/joerick/cibuildwheel/badges/{branch}/pipeline.svg)](https://gitlab.com/joerick/cibuildwheel/-/commits/{branch})", badge_md="[![Gitlab](https://gitlab.com/pypa/cibuildwheel/badges/{branch}/pipeline.svg)](https://gitlab.com/pypa/cibuildwheel/-/commits/{branch})",
), ),
] ]
@@ -140,9 +140,7 @@ def run_example_ci_configs(config_files=None):
print() print()
print("> **Examples test run**") print("> **Examples test run**")
print("> ") print("> ")
print( print(f"> Branch: [{branch_name}](https://github.com/pypa/cibuildwheel/tree/{branch_name})")
f"> Branch: [{branch_name}](https://github.com/joerick/cibuildwheel/tree/{branch_name})"
)
print("> ") print("> ")
print("> | Service | Config | Status |") print("> | Service | Config | Status |")
print("> |---|---|---|") print("> |---|---|---|")
+3 -3
View File
@@ -27,7 +27,7 @@ if "--no-docker" in sys.argv:
"--allow-unsafe", "--allow-unsafe",
"--upgrade", "--upgrade",
"cibuildwheel/resources/constraints.in", "cibuildwheel/resources/constraints.in",
"--output-file=cibuildwheel/resources/constraints-python{python_version}.txt", f"--output-file=cibuildwheel/resources/constraints-python{python_version}.txt",
], ],
check=True, check=True,
) )
@@ -40,7 +40,7 @@ else:
python_path = f"/opt/python/cp{python_version}-cp{python_version}{abi_flags}/bin/" python_path = f"/opt/python/cp{python_version}-cp{python_version}{abi_flags}/bin/"
command = ( command = (
f"{python_path}pip install pip-tools && " f"{python_path}pip install pip-tools && "
"{python_path}pip-compile --allow-unsafe --upgrade " f"{python_path}pip-compile --allow-unsafe --upgrade "
"cibuildwheel/resources/constraints.in " "cibuildwheel/resources/constraints.in "
f"--output-file cibuildwheel/resources/constraints-python{python_version}.txt" f"--output-file cibuildwheel/resources/constraints-python{python_version}.txt"
) )
@@ -50,7 +50,7 @@ else:
"run", "run",
"--rm", "--rm",
"--env=CUSTOM_COMPILE_COMMAND", "--env=CUSTOM_COMPILE_COMMAND",
"--volume={os.getcwd()}:/volume", f"--volume={os.getcwd()}:/volume",
"--workdir=/volume", "--workdir=/volume",
image_runner, image_runner,
"bash", "bash",
+1 -1
View File
@@ -1 +1 @@
__version__ = "1.11.0" __version__ = "1.12.0"
+1 -1
View File
@@ -70,7 +70,7 @@ def main() -> None:
description="Build wheels for all the platforms.", description="Build wheels for all the platforms.",
epilog=""" epilog="""
Most options are supplied via environment variables. Most options are supplied via environment variables.
See https://github.com/joerick/cibuildwheel#options for info. See https://github.com/pypa/cibuildwheel#options for info.
""", """,
) )
+10 -12
View File
@@ -293,22 +293,20 @@ def setup_python(
# https://github.com/python/cpython/blob/a5ed2fe0eedefa1649aa93ee74a0bafc8e628a10/Lib/_osx_support.py#L260 # https://github.com/python/cpython/blob/a5ed2fe0eedefa1649aa93ee74a0bafc8e628a10/Lib/_osx_support.py#L260
env.setdefault("ARCHFLAGS", "-arch x86_64") env.setdefault("ARCHFLAGS", "-arch x86_64")
if python_configuration.version == "3.9": elif python_configuration.version not in {"3.6", "3.7"}:
if python_configuration.identifier.endswith("x86_64"): if config_is_arm64:
# even on the macos11.0 Python installer, on the x86_64 side it's
# compatible back to 10.9.
env.setdefault("_PYTHON_HOST_PLATFORM", "macosx-10.9-x86_64")
env.setdefault("ARCHFLAGS", "-arch x86_64")
elif config_is_arm64:
# macOS 11 is the first OS with arm64 support, so the wheels # macOS 11 is the first OS with arm64 support, so the wheels
# have that as a minimum. # have that as a minimum.
env.setdefault("_PYTHON_HOST_PLATFORM", "macosx-11.0-arm64") env.setdefault("_PYTHON_HOST_PLATFORM", "macosx-11.0-arm64")
env.setdefault("ARCHFLAGS", "-arch arm64") env.setdefault("ARCHFLAGS", "-arch arm64")
elif config_is_universal2: elif config_is_universal2:
if get_macos_version() < (10, 16): env.setdefault("_PYTHON_HOST_PLATFORM", "macosx-10.9-universal2")
# we can do universal2 builds on macos 10.15, but we need to env.setdefault("ARCHFLAGS", "-arch arm64 -arch x86_64")
# set ARCHFLAGS otherwise CPython sets it to `-arch x86_64` elif python_configuration.identifier.endswith("x86_64"):
env.setdefault("ARCHFLAGS", "-arch arm64 -arch x86_64") # even on the macos11.0 Python installer, on the x86_64 side it's
# compatible back to 10.9.
env.setdefault("_PYTHON_HOST_PLATFORM", "macosx-10.9-x86_64")
env.setdefault("ARCHFLAGS", "-arch x86_64")
building_arm64 = config_is_arm64 or config_is_universal2 building_arm64 = config_is_arm64 or config_is_universal2
if building_arm64 and get_macos_version() < (10, 16) and "SDKROOT" not in env: if building_arm64 and get_macos_version() < (10, 16) and "SDKROOT" not in env:
@@ -396,7 +394,7 @@ def build(options: BuildOptions) -> None:
built_wheel_dir.mkdir(parents=True) built_wheel_dir.mkdir(parents=True)
# Path.resolve() is needed. Without it pip wheel may try to fetch package from pypi.org # Path.resolve() is needed. Without it pip wheel may try to fetch package from pypi.org
# see https://github.com/joerick/cibuildwheel/pull/369 # see https://github.com/pypa/cibuildwheel/pull/369
call( call(
[ [
"pip", "pip",
+6 -4
View File
@@ -40,10 +40,12 @@ python_configurations = [
{ identifier = "cp35-macosx_x86_64", version = "3.5", url = "https://www.python.org/ftp/python/3.5.4/python-3.5.4-macosx10.6.pkg" }, { identifier = "cp35-macosx_x86_64", version = "3.5", url = "https://www.python.org/ftp/python/3.5.4/python-3.5.4-macosx10.6.pkg" },
{ identifier = "cp36-macosx_x86_64", version = "3.6", url = "https://www.python.org/ftp/python/3.6.8/python-3.6.8-macosx10.9.pkg" }, { identifier = "cp36-macosx_x86_64", version = "3.6", url = "https://www.python.org/ftp/python/3.6.8/python-3.6.8-macosx10.9.pkg" },
{ identifier = "cp37-macosx_x86_64", version = "3.7", url = "https://www.python.org/ftp/python/3.7.9/python-3.7.9-macosx10.9.pkg" }, { identifier = "cp37-macosx_x86_64", version = "3.7", url = "https://www.python.org/ftp/python/3.7.9/python-3.7.9-macosx10.9.pkg" },
{ identifier = "cp38-macosx_x86_64", version = "3.8", url = "https://www.python.org/ftp/python/3.8.9/python-3.8.9-macosx10.9.pkg" }, { identifier = "cp38-macosx_x86_64", version = "3.8", url = "https://www.python.org/ftp/python/3.8.10/python-3.8.10-macosx10.9.pkg" },
{ identifier = "cp39-macosx_x86_64", version = "3.9", url = "https://www.python.org/ftp/python/3.9.4/python-3.9.4-macos11.pkg" }, { identifier = "cp38-macosx_arm64", version = "3.8", url = "https://www.python.org/ftp/python/3.8.10/python-3.8.10-macosx10.9.pkg" },
{ identifier = "cp39-macosx_arm64", version = "3.9", url = "https://www.python.org/ftp/python/3.9.4/python-3.9.4-macos11.pkg" }, { identifier = "cp38-macosx_universal2", version = "3.8", url = "https://www.python.org/ftp/python/3.8.10/python-3.8.10-macosx10.9.pkg" },
{ identifier = "cp39-macosx_universal2", version = "3.9", url = "https://www.python.org/ftp/python/3.9.4/python-3.9.4-macos11.pkg" }, { identifier = "cp39-macosx_x86_64", version = "3.9", url = "https://www.python.org/ftp/python/3.9.5/python-3.9.5-macos11.pkg" },
{ identifier = "cp39-macosx_arm64", version = "3.9", url = "https://www.python.org/ftp/python/3.9.5/python-3.9.5-macos11.pkg" },
{ identifier = "cp39-macosx_universal2", version = "3.9", url = "https://www.python.org/ftp/python/3.9.5/python-3.9.5-macos11.pkg" },
{ identifier = "pp27-macosx_x86_64", version = "2.7", url = "https://downloads.python.org/pypy/pypy2.7-v7.3.3-osx64.tar.bz2" }, { identifier = "pp27-macosx_x86_64", version = "2.7", url = "https://downloads.python.org/pypy/pypy2.7-v7.3.3-osx64.tar.bz2" },
{ identifier = "pp36-macosx_x86_64", version = "3.6", url = "https://downloads.python.org/pypy/pypy3.6-v7.3.3-osx64.tar.bz2" }, { identifier = "pp36-macosx_x86_64", version = "3.6", url = "https://downloads.python.org/pypy/pypy3.6-v7.3.3-osx64.tar.bz2" },
{ identifier = "pp37-macosx_x86_64", version = "3.7", url = "https://downloads.python.org/pypy/pypy3.7-v7.3.3-osx64.tar.bz2" }, { identifier = "pp37-macosx_x86_64", version = "3.7", url = "https://downloads.python.org/pypy/pypy3.7-v7.3.3-osx64.tar.bz2" },
+12 -13
View File
@@ -1,27 +1,26 @@
[x86_64] [x86_64]
manylinux1 = quay.io/pypa/manylinux1_x86_64:2021-04-05-14df3a6 manylinux1 = quay.io/pypa/manylinux1_x86_64:2021-05-05-b64d921
manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2021-02-06-3d322a5 manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2021-02-06-3d322a5
manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2021-04-05-b4fd19d manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2021-05-01-28d233a
manylinux_2_24 = quay.io/pypa/manylinux_2_24_x86_64:2021-04-05-b4fd19d manylinux_2_24 = quay.io/pypa/manylinux_2_24_x86_64:2021-05-01-28d233a
[i686] [i686]
manylinux1 = quay.io/pypa/manylinux1_i686:2021-04-05-14df3a6 manylinux1 = quay.io/pypa/manylinux1_i686:2021-05-05-b64d921
manylinux2010 = quay.io/pypa/manylinux2010_i686:2021-02-06-3d322a5 manylinux2010 = quay.io/pypa/manylinux2010_i686:2021-02-06-3d322a5
manylinux2014 = quay.io/pypa/manylinux2014_i686:2021-04-05-b4fd19d manylinux2014 = quay.io/pypa/manylinux2014_i686:2021-05-01-28d233a
manylinux_2_24 = quay.io/pypa/manylinux_2_24_i686:2021-04-05-b4fd19d manylinux_2_24 = quay.io/pypa/manylinux_2_24_i686:2021-05-01-28d233a
[pypy_x86_64] [pypy_x86_64]
manylinux2010 = pypywheels/manylinux2010-pypy_x86_64:2020-12-11-f1e0e80 manylinux2010 = pypywheels/manylinux2010-pypy_x86_64:2020-12-11-f1e0e80
[aarch64] [aarch64]
manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2021-04-05-b4fd19d manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2021-05-01-28d233a
manylinux_2_24 = quay.io/pypa/manylinux_2_24_aarch64:2021-04-05-b4fd19d manylinux_2_24 = quay.io/pypa/manylinux_2_24_aarch64:2021-05-01-28d233a
[ppc64le] [ppc64le]
manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2021-04-05-b4fd19d manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2021-05-01-28d233a
manylinux_2_24 = quay.io/pypa/manylinux_2_24_ppc64le:2021-04-05-b4fd19d manylinux_2_24 = quay.io/pypa/manylinux_2_24_ppc64le:2021-05-01-28d233a
[s390x] [s390x]
manylinux2014 = quay.io/pypa/manylinux2014_s390x:2021-04-05-b4fd19d manylinux2014 = quay.io/pypa/manylinux2014_s390x:2021-05-01-28d233a
manylinux_2_24 = quay.io/pypa/manylinux_2_24_s390x:2021-04-05-b4fd19d manylinux_2_24 = quay.io/pypa/manylinux_2_24_s390x:2021-05-01-28d233a
+1 -1
View File
@@ -296,7 +296,7 @@ def build(options: BuildOptions) -> None:
shutil.rmtree(built_wheel_dir) shutil.rmtree(built_wheel_dir)
built_wheel_dir.mkdir(parents=True) built_wheel_dir.mkdir(parents=True)
# Path.resolve() is needed. Without it pip wheel may try to fetch package from pypi.org # Path.resolve() is needed. Without it pip wheel may try to fetch package from pypi.org
# see https://github.com/joerick/cibuildwheel/pull/369 # see https://github.com/pypa/cibuildwheel/pull/369
call( call(
[ [
"pip", "pip",
+4 -2
View File
@@ -8,6 +8,8 @@ If you have an idea for a modification or feature, it's probably best to raise a
`cibuildwheel` is indie open source. We're not paid to work on this. `cibuildwheel` is indie open source. We're not paid to work on this.
Everyone contributing to the cibuildwheel project is expected to follow the [PSF Code of Conduct](https://github.com/pypa/.github/blob/main/CODE_OF_CONDUCT.md).
Design Goals Design Goals
------------ ------------
@@ -27,7 +29,7 @@ cibuildwheel doesn't really do anything itself - it's always deferring to other
We're not responsible for errors in those tools, for fixing errors/crashes there. But cibuildwheel's job is providing users with an 'integrated' user experience across those tools. We provide an abstraction. The user says 'build me some wheels', not 'open the docker container, build a wheel with pip, fix up the symbols with auditwheel' etc. However, errors have a habit of breaking abstractions. And this is where users get confused, because the mechanism of cibuildwheel is laid bare, and they must understand a little bit how it works to debug. We're not responsible for errors in those tools, for fixing errors/crashes there. But cibuildwheel's job is providing users with an 'integrated' user experience across those tools. We provide an abstraction. The user says 'build me some wheels', not 'open the docker container, build a wheel with pip, fix up the symbols with auditwheel' etc. However, errors have a habit of breaking abstractions. And this is where users get confused, because the mechanism of cibuildwheel is laid bare, and they must understand a little bit how it works to debug.
So, if we can, I'd like to improve the experience on errors as well. In [this](https://github.com/joerick/cibuildwheel/issues/139) case, it takes a bit of knowledge to understand that the Linux builds are happening in a different OS via Docker, that the linked symbols won't match, that auditwheel will fail because of this. A problem with how the tools fit together, instead of the tools themselves. So, if we can, I'd like to improve the experience on errors as well. In [this](https://github.com/pypa/cibuildwheel/issues/139) case, it takes a bit of knowledge to understand that the Linux builds are happening in a different OS via Docker, that the linked symbols won't match, that auditwheel will fail because of this. A problem with how the tools fit together, instead of the tools themselves.
Maintainer notes Maintainer notes
---------------- ----------------
@@ -118,4 +120,4 @@ twine upload dist/*
git push && git push --tags git push && git push --tags
``` ```
Then head to https://github.com/joerick/cibuildwheel/releases and create a GitHub release from the new tag, pasting in the changelog entry. Then head to https://github.com/pypa/cibuildwheel/releases and create a GitHub release from the new tag, pasting in the changelog entry.
+39
View File
@@ -324,3 +324,42 @@
gh: pallets/markupsafe gh: pallets/markupsafe
ci: [github] ci: [github]
os: [apple, linux, windows] os: [apple, linux, windows]
- name: SiPM
gh: EdoPro98/SimSiPM
ci: [github]
os: [apple, linux]
notes: High performance library for SiPM detectors simulation using C++17, OpenMP and AVX2 intrinsics.
- name: CorrectionLib
gh: cms-nanoAOD/correctionlib
ci: [github]
os: [apple, linux]
notes: Structured JSON powered correction library for HEP, designed for the CMS experiment at CERN.
- name: GSD
gh: glotzerlab/gsd
ci: [github]
os: [apple, linux, windows]
notes: Cython and NumPy project with 64-bit wheels.
- name: PyGLM
gh: Zuzu-Typ/PyGLM
ci: [github]
os: [apple, linux, windows]
- name: iDynTree
gh: robotology/idyntree
ci: [github]
os: [linux]
notes: Uses manylinux_2_24
- name: H3-py
gh: uber/h3-py
ci: [github]
os: [apple, linux, windows]
- name: DeepForest
gh: LAMDA-NJU/Deep-Forest
ci: [github]
os: [apple, linux, windows]
+1 -1
View File
@@ -33,4 +33,4 @@ Obviously, manual steps are for chumps, so we can automate this a little by usin
If you don't need much control over the release of a package, you can set up cibuildwheel to deliver the wheels straight to PyPI. This doesn't require anycloud storage to work - you just need to bump the version and tag it. If you don't need much control over the release of a package, you can set up cibuildwheel to deliver the wheels straight to PyPI. This doesn't require anycloud storage to work - you just need to bump the version and tag it.
[`examples/travis-ci-deploy.yml`](https://github.com/joerick/cibuildwheel/blob/master/examples/travis-ci-deploy.yml) and [`examples/github-deploy.yml`](https://github.com/joerick/cibuildwheel/blob/master/examples/github-deploy.yml) are example configurations that automatically upload wheels to PyPI. Also check out [this example repo](https://github.com/joerick/cibuildwheel-autopypi-example) for more detailed instructions on how to set this up. [`examples/travis-ci-deploy.yml`](https://github.com/pypa/cibuildwheel/blob/master/examples/travis-ci-deploy.yml) and [`examples/github-deploy.yml`](https://github.com/pypa/cibuildwheel/blob/master/examples/github-deploy.yml) are example configurations that automatically upload wheels to PyPI. Also check out [this example repo](https://github.com/pypa/cibuildwheel-autopypi-example) for more detailed instructions on how to set this up.
+4 -4
View File
@@ -12,7 +12,7 @@ If your wheel didn't compile, check the list below for some debugging tips.
- Windows: missing C feature. The Windows C compiler doesn't support C language features invented after 1990, so you'll have to backport your C code to C90. For me, this mostly involved putting my variable declarations at the top of the function like an animal. - Windows: missing C feature. The Windows C compiler doesn't support C language features invented after 1990, so you'll have to backport your C code to C90. For me, this mostly involved putting my variable declarations at the top of the function like an animal.
- MacOS: calling cibuildwheel from a python3 script and getting a `ModuleNotFoundError`? Due to a (fixed) [bug](https://bugs.python.org/issue22490) in CPython, you'll need to [unset the `__PYVENV_LAUNCHER__` variable](https://github.com/joerick/cibuildwheel/issues/133#issuecomment-478288597) before activating a venv. - MacOS: calling cibuildwheel from a python3 script and getting a `ModuleNotFoundError`? Due to a (fixed) [bug](https://bugs.python.org/issue22490) in CPython, you'll need to [unset the `__PYVENV_LAUNCHER__` variable](https://github.com/pypa/cibuildwheel/issues/133#issuecomment-478288597) before activating a venv.
### Linux builds on Docker ### Linux builds on Docker
@@ -208,7 +208,7 @@ python3 -m twine upload wheelhouse/*.whl
Visual Studio and MSVC link the compiled binary wheels to the Microsoft Visual C++ Runtime. Normally, these are included with Python, but when compiling with a newer version of Visual Studio, it is possible users will run into problems on systems that do not have these runtime libraries installed. The solution is to ask users to download the corresponding Visual C++ Redistributable from the [Microsoft website](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads) and install it. Since a Python installation normally includes these VC++ Redistributable files for [the version of the MSVC compiler used to compile Python](https://wiki.python.org/moin/WindowsCompilers), this is typically only a problem when compiling a Python 2.7 C extension with a newer compiler, e.g. to support a modern C++ standard (see [the section on modern C++ standards for Python 2.7](cpp_standards.md#windows-and-python-27) for more details). Visual Studio and MSVC link the compiled binary wheels to the Microsoft Visual C++ Runtime. Normally, these are included with Python, but when compiling with a newer version of Visual Studio, it is possible users will run into problems on systems that do not have these runtime libraries installed. The solution is to ask users to download the corresponding Visual C++ Redistributable from the [Microsoft website](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads) and install it. Since a Python installation normally includes these VC++ Redistributable files for [the version of the MSVC compiler used to compile Python](https://wiki.python.org/moin/WindowsCompilers), this is typically only a problem when compiling a Python 2.7 C extension with a newer compiler, e.g. to support a modern C++ standard (see [the section on modern C++ standards for Python 2.7](cpp_standards.md#windows-and-python-27) for more details).
Additionally, Visual Studio 2019 started linking to an even newer DLL, `VCRUNTIME140_1.dll`, besides the `VCRUNTIME140.dll` that is included with recent Python versions (starting from Python 3.5; see [here](https://wiki.python.org/moin/WindowsCompilers) for more details on the corresponding Visual Studio & MSVC versions used to compile the different Python versions). To avoid this extra dependency on `VCRUNTIME140_1.dll`, the [`/d2FH4-` flag](https://devblogs.microsoft.com/cppblog/making-cpp-exception-handling-smaller-x64/) can be added to the MSVC invocations (check out [this issue](https://github.com/joerick/cibuildwheel/issues/423) for details and references). Additionally, Visual Studio 2019 started linking to an even newer DLL, `VCRUNTIME140_1.dll`, besides the `VCRUNTIME140.dll` that is included with recent Python versions (starting from Python 3.5; see [here](https://wiki.python.org/moin/WindowsCompilers) for more details on the corresponding Visual Studio & MSVC versions used to compile the different Python versions). To avoid this extra dependency on `VCRUNTIME140_1.dll`, the [`/d2FH4-` flag](https://devblogs.microsoft.com/cppblog/making-cpp-exception-handling-smaller-x64/) can be added to the MSVC invocations (check out [this issue](https://github.com/pypa/cibuildwheel/issues/423) for details and references).
To add the `/d2FH4-` flag to a standard `setup.py` using `setuptools`, the `extra_compile_args` option can be used: To add the `/d2FH4-` flag to a standard `setup.py` using `setuptools`, the `extra_compile_args` option can be used:
@@ -235,7 +235,7 @@ There are two suggested methods for keeping cibuildwheel up to date that instead
If you use GitHub Actions for builds, you can use cibuildwheel as an action: If you use GitHub Actions for builds, you can use cibuildwheel as an action:
```yaml ```yaml
uses: joerick/cibuildwheel@v1.11.0 uses: pypa/cibuildwheel@v1.12.0
``` ```
This is a composite step that just runs cibuildwheel using pipx. You can set command-line options as `with:` parameters, and use `env:` as normal. This is a composite step that just runs cibuildwheel using pipx. You can set command-line options as `with:` parameters, and use `env:` as normal.
@@ -261,7 +261,7 @@ The second option, and the only one that supports other CI systems, is using a `
```bash ```bash
# requirements-cibw.txt # requirements-cibw.txt
cibuildwheel==1.11.0 cibuildwheel==1.12.0
``` ```
Then your install step would have `python -m pip install -r requirements-cibw.txt` in it. Your `dependabot.yml` file could look like this: Then your install step would have `python -m pip install -r requirements-cibw.txt` in it. Your `dependabot.yml` file could look like this:
+1 -1
View File
@@ -124,7 +124,7 @@ When setting the options, you can use shell-style globbing syntax, as per [fnmat
| Python 3.5 | cp35-macosx_x86_64 | cp35-win_amd64<br/>cp35-win32 | cp35-manylinux_x86_64<br/>cp35-manylinux_i686 | cp35-manylinux_aarch64<br/>cp35-manylinux_ppc64le<br/>cp35-manylinux_s390x | | Python 3.5 | cp35-macosx_x86_64 | cp35-win_amd64<br/>cp35-win32 | cp35-manylinux_x86_64<br/>cp35-manylinux_i686 | cp35-manylinux_aarch64<br/>cp35-manylinux_ppc64le<br/>cp35-manylinux_s390x |
| Python 3.6 | cp36-macosx_x86_64 | cp36-win_amd64<br/>cp36-win32 | cp36-manylinux_x86_64<br/>cp36-manylinux_i686 | cp36-manylinux_aarch64<br/>cp36-manylinux_ppc64le<br/>cp36-manylinux_s390x | | Python 3.6 | cp36-macosx_x86_64 | cp36-win_amd64<br/>cp36-win32 | cp36-manylinux_x86_64<br/>cp36-manylinux_i686 | cp36-manylinux_aarch64<br/>cp36-manylinux_ppc64le<br/>cp36-manylinux_s390x |
| Python 3.7 | cp37-macosx_x86_64 | cp37-win_amd64<br/>cp37-win32 | cp37-manylinux_x86_64<br/>cp37-manylinux_i686 | cp37-manylinux_aarch64<br/>cp37-manylinux_ppc64le<br/>cp37-manylinux_s390x | | Python 3.7 | cp37-macosx_x86_64 | cp37-win_amd64<br/>cp37-win32 | cp37-manylinux_x86_64<br/>cp37-manylinux_i686 | cp37-manylinux_aarch64<br/>cp37-manylinux_ppc64le<br/>cp37-manylinux_s390x |
| Python 3.8 | cp38-macosx_x86_64 | cp38-win_amd64<br/>cp38-win32 | cp38-manylinux_x86_64<br/>cp38-manylinux_i686 | cp38-manylinux_aarch64<br/>cp38-manylinux_ppc64le<br/>cp38-manylinux_s390x | | Python 3.8 | cp38-macosx_x86_64<br/>cp38-macosx_universal2<br/>cp38-macosx_arm64 | cp38-win_amd64<br/>cp38-win32 | cp38-manylinux_x86_64<br/>cp38-manylinux_i686 | cp38-manylinux_aarch64<br/>cp38-manylinux_ppc64le<br/>cp38-manylinux_s390x |
| Python 3.9 | cp39-macosx_x86_64<br/>cp39-macosx_universal2<br/>cp39-macosx_arm64 | cp39-win_amd64<br/>cp39-win32 | cp39-manylinux_x86_64<br/>cp39-manylinux_i686 | cp39-manylinux_aarch64<br/>cp39-manylinux_ppc64le<br/>cp39-manylinux_s390x | | Python 3.9 | cp39-macosx_x86_64<br/>cp39-macosx_universal2<br/>cp39-macosx_arm64 | cp39-win_amd64<br/>cp39-win32 | cp39-manylinux_x86_64<br/>cp39-manylinux_i686 | cp39-manylinux_aarch64<br/>cp39-manylinux_ppc64le<br/>cp39-manylinux_s390x |
| PyPy2.7 v7.3 | pp27-macosx_x86_64 | pp27-win32 | pp27-manylinux_x86_64 | | | PyPy2.7 v7.3 | pp27-macosx_x86_64 | pp27-win32 | pp27-manylinux_x86_64 | |
| PyPy3.6 v7.3 | pp36-macosx_x86_64 | pp36-win32 | pp36-manylinux_x86_64 | | | PyPy3.6 v7.3 | pp36-macosx_x86_64 | pp36-win32 | pp36-manylinux_x86_64 | |
+4 -4
View File
@@ -46,7 +46,7 @@ To build Linux, Mac, and Windows wheels using GitHub Actions, create a `.github/
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- name: Build wheels - name: Build wheels
run: pipx run cibuildwheel==1.11.0 run: pipx run cibuildwheel==1.12.0
- uses: actions/upload-artifact@v2 - uses: actions/upload-artifact@v2
with: with:
@@ -81,7 +81,7 @@ To build Linux, Mac, and Windows wheels using GitHub Actions, create a `.github/
- uses: actions/setup-python@v2 - uses: actions/setup-python@v2
- name: Install cibuildwheel - name: Install cibuildwheel
run: python -m pip install cibuildwheel==1.11.0 run: python -m pip install cibuildwheel==1.12.0
- name: Build wheels - name: Build wheels
run: python -m cibuildwheel --output-dir wheelhouse run: python -m cibuildwheel --output-dir wheelhouse
@@ -96,7 +96,7 @@ Commit this file, and push to GitHub - either to your default branch, or to a PR
For more info on this file, check out the [docs](https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions). For more info on this file, check out the [docs](https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions).
[`examples/github-deploy.yml`](https://github.com/joerick/cibuildwheel/blob/master/examples/github-deploy.yml) extends this minimal example with a demonstration of how to automatically upload the built wheels to PyPI. [`examples/github-deploy.yml`](https://github.com/pypa/cibuildwheel/blob/master/examples/github-deploy.yml) extends this minimal example with a demonstration of how to automatically upload the built wheels to PyPI.
# Azure Pipelines [linux/mac/windows] {: #azure-pipelines} # Azure Pipelines [linux/mac/windows] {: #azure-pipelines}
@@ -132,7 +132,7 @@ Commit this file, enable building of your repo on Travis CI, and push.
Then setup a deployment method by following the [Travis CI deployment docs](https://docs.travis-ci.com/user/deployment/), or see [Delivering to PyPI](deliver-to-pypi.md). For more info on `.travis.yml`, check out the [docs](https://docs.travis-ci.com/). Then setup a deployment method by following the [Travis CI deployment docs](https://docs.travis-ci.com/user/deployment/), or see [Delivering to PyPI](deliver-to-pypi.md). For more info on `.travis.yml`, check out the [docs](https://docs.travis-ci.com/).
[`examples/travis-ci-deploy.yml`](https://github.com/joerick/cibuildwheel/blob/master/examples/travis-ci-deploy.yml) extends this minimal example with a demonstration of how to automatically upload the built wheels to PyPI. [`examples/travis-ci-deploy.yml`](https://github.com/pypa/cibuildwheel/blob/master/examples/travis-ci-deploy.yml) extends this minimal example with a demonstration of how to automatically upload the built wheels to PyPI.
# AppVeyor [linux/mac/windows] {: #appveyor} # AppVeyor [linux/mac/windows] {: #appveyor}
+1 -1
View File
@@ -12,7 +12,7 @@ stack: python 3.7
init: init:
- cmd: set PATH=C:\Python37;C:\Python37\Scripts;%PATH% - cmd: set PATH=C:\Python37;C:\Python37\Scripts;%PATH%
install: python -m pip install cibuildwheel==1.11.0 install: python -m pip install cibuildwheel==1.12.0
build_script: python -m cibuildwheel --output-dir wheelhouse build_script: python -m cibuildwheel --output-dir wheelhouse
+3 -3
View File
@@ -6,7 +6,7 @@ jobs:
- bash: | - bash: |
set -o errexit set -o errexit
python3 -m pip install --upgrade pip python3 -m pip install --upgrade pip
pip3 install cibuildwheel==1.11.0 pip3 install cibuildwheel==1.12.0
displayName: Install dependencies displayName: Install dependencies
- bash: cibuildwheel --output-dir wheelhouse . - bash: cibuildwheel --output-dir wheelhouse .
displayName: Build wheels displayName: Build wheels
@@ -20,7 +20,7 @@ jobs:
- bash: | - bash: |
set -o errexit set -o errexit
python3 -m pip install --upgrade pip python3 -m pip install --upgrade pip
python3 -m pip install cibuildwheel==1.11.0 python3 -m pip install cibuildwheel==1.12.0
displayName: Install dependencies displayName: Install dependencies
- bash: cibuildwheel --output-dir wheelhouse . - bash: cibuildwheel --output-dir wheelhouse .
displayName: Build wheels displayName: Build wheels
@@ -34,7 +34,7 @@ jobs:
- bash: | - bash: |
set -o errexit set -o errexit
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install cibuildwheel==1.11.0 pip install cibuildwheel==1.12.0
displayName: Install dependencies displayName: Install dependencies
- bash: cibuildwheel --output-dir wheelhouse . - bash: cibuildwheel --output-dir wheelhouse .
displayName: Build wheels displayName: Build wheels
+2 -2
View File
@@ -11,7 +11,7 @@ jobs:
- run: - run:
name: Build the Linux wheels. name: Build the Linux wheels.
command: | command: |
pip3 install --user cibuildwheel==1.11.0 pip3 install --user cibuildwheel==1.12.0
cibuildwheel --output-dir wheelhouse cibuildwheel --output-dir wheelhouse
- store_artifacts: - store_artifacts:
path: wheelhouse/ path: wheelhouse/
@@ -25,7 +25,7 @@ jobs:
- run: - run:
name: Build the OS X wheels. name: Build the OS X wheels.
command: | command: |
pip3 install cibuildwheel==1.11.0 pip3 install cibuildwheel==1.12.0
cibuildwheel --output-dir wheelhouse cibuildwheel --output-dir wheelhouse
- store_artifacts: - store_artifacts:
path: wheelhouse/ path: wheelhouse/
+1 -1
View File
@@ -10,7 +10,7 @@ jobs:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- name: Build wheels - name: Build wheels
uses: joerick/cibuildwheel@v1.11.0 uses: pypa/cibuildwheel@v1.12.0
env: env:
CIBW_ARCHS_MACOS: x86_64 universal2 CIBW_ARCHS_MACOS: x86_64 universal2
+1 -1
View File
@@ -27,7 +27,7 @@ jobs:
python-version: '3.8' python-version: '3.8'
- name: Build wheels - name: Build wheels
uses: joerick/cibuildwheel@v1.11.0 uses: pypa/cibuildwheel@v1.12.0
- uses: actions/upload-artifact@v2 - uses: actions/upload-artifact@v2
with: with:
+1 -1
View File
@@ -14,7 +14,7 @@ jobs:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- name: Build wheels - name: Build wheels
uses: joerick/cibuildwheel@v1.11.0 uses: pypa/cibuildwheel@v1.12.0
# to supply options, put them in 'env', like: # to supply options, put them in 'env', like:
# env: # env:
# CIBW_SOME_OPTION: value # CIBW_SOME_OPTION: value
+1 -1
View File
@@ -25,7 +25,7 @@ jobs:
platforms: all platforms: all
- name: Build wheels - name: Build wheels
uses: joerick/cibuildwheel@v1.11.0 uses: pypa/cibuildwheel@v1.12.0
env: env:
# configure cibuildwheel to build native archs ('auto'), and some # configure cibuildwheel to build native archs ('auto'), and some
# emulated ones # emulated ones
+1 -1
View File
@@ -12,7 +12,7 @@ linux:
DOCKER_TLS_CERTDIR: "" DOCKER_TLS_CERTDIR: ""
script: script:
- curl -sSL https://get.docker.com/ | sh - curl -sSL https://get.docker.com/ | sh
- python -m pip install cibuildwheel==1.11.0 - python -m pip install cibuildwheel==1.12.0
- cibuildwheel --output-dir wheelhouse - cibuildwheel --output-dir wheelhouse
artifacts: artifacts:
paths: paths:
+3 -1
View File
@@ -1,6 +1,8 @@
# As written, this configuration will build your wheels on every # As written, this configuration will build your wheels on every
# commit, but will only push to PyPI on tagged commits. # commit, but will only push to PyPI on tagged commits.
os: linux
dist: focal
language: python language: python
jobs: jobs:
@@ -20,7 +22,7 @@ jobs:
- ln -s /c/Python38/python.exe /c/Python38/python3.exe - ln -s /c/Python38/python.exe /c/Python38/python3.exe
install: install:
- python3 -m pip install cibuildwheel==1.11.0 - python3 -m pip install cibuildwheel==1.12.0
script: script:
# build the wheels, put them into './wheelhouse' # build the wheels, put them into './wheelhouse'
+3 -1
View File
@@ -1,3 +1,5 @@
os: linux
dist: focal
language: python language: python
jobs: jobs:
@@ -26,7 +28,7 @@ jobs:
- ln -s /c/Python38/python.exe /c/Python38/python3.exe - ln -s /c/Python38/python.exe /c/Python38/python3.exe
install: install:
- python3 -m pip install cibuildwheel==1.11.0 - python3 -m pip install cibuildwheel==1.12.0
script: script:
# build the wheels, put them into './wheelhouse' # build the wheels, put them into './wheelhouse'
+7 -5
View File
@@ -5,6 +5,8 @@
# repo is yours (e.g. it won't run on a Pull Request). For convenience, a source # repo is yours (e.g. it won't run on a Pull Request). For convenience, a source
# distribution is also created. # distribution is also created.
os: linux
dist: focal
language: python language: python
python: python:
- 3.6 - 3.6
@@ -32,9 +34,9 @@ stages:
# Only execute deployment stage on tagged commits, and from your repository # Only execute deployment stage on tagged commits, and from your repository
# (e.g. not PRs). Replace with your repo name. # (e.g. not PRs). Replace with your repo name.
- name: deploy - name: deploy
if: tag IS PRESENT AND repo = joerick/cibuildwheel if: tag IS PRESENT AND repo = pypa/cibuildwheel
# To only build tags that look like vX.Y.Z: # To only build tags that look like vX.Y.Z:
# if: tag =~ ^v\d+\.\d+\.\d+$ AND repo = joerick/cibuildwheel # if: tag =~ ^v\d+\.\d+\.\d+$ AND repo = pypa/cibuildwheel
jobs: jobs:
include: include:
@@ -55,7 +57,7 @@ jobs:
- stage: deploy - stage: deploy
name: Build and deploy Linux wheels name: Build and deploy Linux wheels
services: docker services: docker
install: python3 -m pip install cibuildwheel==1.11.0 install: python3 -m pip install cibuildwheel==1.12.0
script: python3 -m cibuildwheel --output-dir wheelhouse script: python3 -m cibuildwheel --output-dir wheelhouse
after_success: | after_success: |
python3 -m pip install twine python3 -m pip install twine
@@ -65,7 +67,7 @@ jobs:
name: Build and deploy macOS wheels name: Build and deploy macOS wheels
os: osx os: osx
language: shell language: shell
install: python3 -m pip install cibuildwheel==1.11.0 install: python3 -m pip install cibuildwheel==1.12.0
script: python3 -m cibuildwheel --output-dir wheelhouse script: python3 -m cibuildwheel --output-dir wheelhouse
after_success: | after_success: |
python3 -m pip install twine python3 -m pip install twine
@@ -75,7 +77,7 @@ jobs:
name: Build and deploy Windows wheels name: Build and deploy Windows wheels
os: windows os: windows
language: shell language: shell
install: python3 -m pip install cibuildwheel==1.11.0 install: python3 -m pip install cibuildwheel==1.12.0
script: python3 -m cibuildwheel --output-dir wheelhouse script: python3 -m cibuildwheel --output-dir wheelhouse
after_success: | after_success: |
python3 -m pip install twine python3 -m pip install twine
+2 -1
View File
@@ -5,7 +5,8 @@ theme:
highlightjs: true highlightjs: true
hljs_languages: hljs_languages:
- yaml - yaml
repo_url: https://github.com/joerick/cibuildwheel repo_url: https://github.com/pypa/cibuildwheel
edit_uri: edit/main/docs/
extra_css: extra_css:
- extra.css - extra.css
+3 -3
View File
@@ -1,10 +1,10 @@
[metadata] [metadata]
name = cibuildwheel name = cibuildwheel
version = 1.11.0 version = 1.12.0
description = Build Python wheels on CI with minimal configuration. description = Build Python wheels on CI with minimal configuration.
long_description = file: README.md long_description = file: README.md
long_description_content_type = text/markdown long_description_content_type = text/markdown
url = https://github.com/joerick/cibuildwheel url = https://github.com/pypa/cibuildwheel
author = Joe Rickerby author = Joe Rickerby
author_email = joerick@mac.com author_email = joerick@mac.com
license = BSD license = BSD
@@ -24,7 +24,7 @@ classifiers =
Topic :: Software Development :: Build Tools Topic :: Software Development :: Build Tools
keywords = ci,wheel,packaging,pypi,travis,appveyor,macos,linux,windows keywords = ci,wheel,packaging,pypi,travis,appveyor,macos,linux,windows
project_urls = project_urls =
Changelog=https://github.com/joerick/cibuildwheel#changelog Changelog=https://github.com/pypa/cibuildwheel#changelog
Documentation=https://cibuildwheel.readthedocs.io/ Documentation=https://cibuildwheel.readthedocs.io/
[options] [options]
+2 -2
View File
@@ -35,8 +35,8 @@ def test(tmp_path):
actual_wheels = utils.cibuildwheel_run( actual_wheels = utils.cibuildwheel_run(
project_dir, project_dir,
add_env={ add_env={
"CIBW_MANYLINUX_X86_64_IMAGE": "dockcross/manylinux2010-x64", "CIBW_MANYLINUX_X86_64_IMAGE": "dockcross/manylinux2010-x64:20210210-84c47e5",
"CIBW_MANYLINUX_I686_IMAGE": "dockcross/manylinux2010-x86", "CIBW_MANYLINUX_I686_IMAGE": "dockcross/manylinux2010-x86:20210210-84c47e5",
"CIBW_SKIP": "pp* cp27-* cp39-*", "CIBW_SKIP": "pp* cp27-* cp39-*",
}, },
) )
+1 -1
View File
@@ -50,7 +50,7 @@ def test_pep518(tmp_path):
assert set(actual_wheels) == set(expected_wheels) assert set(actual_wheels) == set(expected_wheels)
# These checks ensure an extra file is not created when using custom # These checks ensure an extra file is not created when using custom
# workaround; see https://github.com/joerick/cibuildwheel/issues/421 # workaround; see https://github.com/pypa/cibuildwheel/issues/421
assert not (project_dir / "42").exists() assert not (project_dir / "42").exists()
assert not (project_dir / "4.1.2").exists() assert not (project_dir / "4.1.2").exists()
+2 -2
View File
@@ -14,8 +14,8 @@ project_with_ssl_tests = test_projects.new_c_project(
context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2) context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)
data = urlopen("https://www.nist.gov", context=context) data = urlopen("https://www.nist.gov", context=context)
data = urlopen("https://raw.githubusercontent.com/joerick/cibuildwheel/master/CI.md", context=context) data = urlopen("https://raw.githubusercontent.com/pypa/cibuildwheel/master/CI.md", context=context)
data = urlopen("https://raw.githubusercontent.com/joerick/cibuildwheel/master/CI.md") data = urlopen("https://raw.githubusercontent.com/pypa/cibuildwheel/master/CI.md")
""" """
) )
) )
+1 -1
View File
@@ -5,7 +5,7 @@ import pytest
from cibuildwheel.util import download from cibuildwheel.util import download
DOWNLOAD_URL = "https://raw.githubusercontent.com/joerick/cibuildwheel/v1.6.3/requirements-dev.txt" DOWNLOAD_URL = "https://raw.githubusercontent.com/pypa/cibuildwheel/v1.6.3/requirements-dev.txt"
def test_download(monkeypatch, tmp_path): def test_download(monkeypatch, tmp_path):