Compare commits

..
14 Commits
Author SHA1 Message Date
Joe Rickerby eed12cf4c9 Bump version: v1.7.3 2021-01-01 13:21:29 +00:00
Joe Rickerby da91d7944d Fix docs version number 2021-01-01 13:06:47 +00:00
probot-auto-merge[bot] 965ced1984 Merge pull request #505 from joerick/update-dependencies-pr
[Bot] Update dependencies
2020-12-31 19:26:48 +00:00
henryiii a015f3425c Update dependencies 2020-12-31 16:52:34 +00:00
Grzegorz BokotaandYannick Jadoul 99203a83f9 fix: patching pypy venv (#502)
Potentially revert / remove on release of PyPy 7.3.4.

* patching linux and macos

* try test

* add patch files for pypy2.7

* fix installing

* Combine patch files into one

* Simplify further, and add test to remind ourselves to remove the PyPy patch

* ignore fail of patch on linux

make new test failing only on linux

* fix test

* add timeout

* fix patch on linux

* change `-N` to `--force`

Co-authored-by: Yannick Jadoul <yannick.jadoul@belgacom.net>
2020-12-31 11:50:19 -05:00
Joe Rickerby 1029a1a123 Merge pull request #503 from joerick/update-dependencies-pr
[Bot] Update dependencies
2020-12-31 14:36:13 +00:00
mayeut 143febd9fa Update dependencies 2020-12-28 06:10:06 +00:00
Henry Schreiner 4e17c275ef fix: adding pyproject.toml 2020-12-27 22:26:31 -05:00
Henry Schreiner 93a095d3de docs: include action form of cibuildwheel 2020-12-27 22:26:31 -05:00
Henry Schreiner 723b5e5128 feat: add support for composite-actions 2020-12-27 22:26:31 -05:00
Henry Schreiner 02f3849738 chore: update projects based on Discussion #485 (#498) 2020-12-27 22:22:34 -05:00
e43b105d28 [Bot] Update dependencies (#495)
* Update dependencies

* chore: bump Python 3.8.6 -> 3.8.7

Co-authored-by: mayeut <mayeut@users.noreply.github.com>
Co-authored-by: Henry Schreiner <henryschreineriii@gmail.com>
2020-12-24 10:00:12 -05:00
Matthieu Darbois 14a6a77f48 Run update workflow weekly (#497) 2020-12-23 23:38:45 +01:00
Matthieu DarboisandJoe Rickerby 40ddede41b Add a workflow to update dependencies (#490)
* Add a workflow to update dependencies

* Use '--no-docker' to run dependency update using local pythons

Default method is to use docker

* Only run the dependency update workflow manually

PR are only created for master

* Create constraints for all python versions

* Use manylinux2010_x86_64:latest to update dependencies

Co-authored-by: Joe Rickerby <joerick@mac.com>
2020-12-21 19:51:27 +01:00
39 changed files with 564 additions and 154 deletions
+34
View File
@@ -0,0 +1,34 @@
name: Update dependencies
on:
workflow_dispatch:
schedule:
- cron: '0 6 * * 1' # "At 06:00 on Monday."
jobs:
update-dependencies:
name: Update dependencies
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
name: Install Python 3.9
with:
python-version: 3.9
architecture: x64
- name: Install dependencies
run: python -m pip install requests pip-tools
- name: Run update
run: python ./bin/update_dependencies.py
- name: Create Pull Request
if: github.ref == 'refs/heads/master'
uses: peter-evans/create-pull-request@v3
with:
commit-message: Update dependencies
title: '[Bot] Update dependencies'
body: |
Update the versions of our dependencies.
PR generated by "Update dependencies" [workflow](https://github.com/${{github.repository}}/actions/runs/${{github.run_id}}).
branch: update-dependencies-pr
delete-branch: true
+56 -35
View File
@@ -80,7 +80,7 @@ jobs:
name: Install Python
- name: Install cibuildwheel
run: python -m pip install cibuildwheel==1.7.2
run: python -m pip install cibuildwheel==1.7.3
- name: Build wheels
run: python -m cibuildwheel --output-dir wheelhouse
@@ -129,6 +129,7 @@ Here are some repos that use cibuildwheel.
|-----------------------------------|----|----|:------|
| [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 |
| [psutil][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Cross-platform lib for process and system monitoring in Python |
| [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. |
@@ -138,12 +139,14 @@ Here are some repos that use cibuildwheel.
| [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 |
| [Dependency Injector][] | ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Dependency injection framework for Python, uses Windows TravisCI |
| [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 |
| [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 |
| [Rtree][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Rtree: spatial index for Python GIS ¶ |
| [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 |
@@ -163,6 +166,7 @@ Here are some repos that use cibuildwheel.
[scikit-learn]: https://github.com/scikit-learn/scikit-learn
[Matplotlib]: https://github.com/matplotlib/matplotlib
[psutil]: https://github.com/giampaolo/psutil
[twisted-iocpsupport]: https://github.com/twisted/twisted-iocpsupport
[scikit-image]: https://github.com/scikit-image/scikit-image
[websockets]: https://github.com/aaugustin/websockets
@@ -172,12 +176,14 @@ Here are some repos that use cibuildwheel.
[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
[Dependency Injector]: https://github.com/ets-labs/python-dependency-injector
[aioquic]: https://github.com/aiortc/aioquic
[google neuroglancer]: https://github.com/google/neuroglancer
[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
[Rtree]: https://github.com/Toblerity/rtree
[KDEpy]: https://github.com/tommyod/KDEpy
[pybind11 python_example]: https://github.com/pybind/python_example
[pybind11 cmake_example]: https://github.com/pybind/cmake_example
@@ -205,39 +211,42 @@ Here are some repos that use cibuildwheel.
[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 -->
<!-- scikit-learn: 43477, last pushed 0 days ago -->
<!-- Matplotlib: 12823, last pushed 0 days ago -->
<!-- psutil: 6887, last pushed 0 days ago -->
<!-- twisted-iocpsupport: 4114, last pushed 2 days ago -->
<!-- scikit-image: 4104, last pushed 0 days ago -->
<!-- websockets: 3089, last pushed 10 days ago -->
<!-- pyzmq: 2654, last pushed 20 days ago -->
<!-- aiortc: 2073, last pushed 7 days ago -->
<!-- h5py: 1455, last pushed 12 days ago -->
<!-- coverage.py: 1441, last pushed 3 days ago -->
<!-- River: 1219, last pushed 0 days ago -->
<!-- PyAV: 1114, last pushed 14 days ago -->
<!-- Dependency Injector: 1030, last pushed 0 days ago -->
<!-- aioquic: 552, last pushed 49 days ago -->
<!-- google neuroglancer: 550, last pushed 7 days ago -->
<!-- AutoPy: 507, last pushed 105 days ago -->
<!-- pikepdf: 487, last pushed 0 days ago -->
<!-- Parselmouth: 433, last pushed 26 days ago -->
<!-- python-rapidjson: 407, last pushed 10 days ago -->
<!-- Rtree: 378, last pushed 0 days ago -->
<!-- KDEpy: 230, last pushed 9 days ago -->
<!-- pybind11 python_example: 221, last pushed 44 days ago -->
<!-- pybind11 cmake_example: 219, last pushed 7 days ago -->
<!-- iminuit: 166, last pushed 0 days ago -->
<!-- jq.py: 138, last pushed 73 days ago -->
<!-- bx-python: 94, last pushed 1 days ago -->
<!-- boost-histogram: 63, 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 -->
<!-- TgCrypto: 49, last pushed 36 days ago -->
<!-- etebase-py: 40, last pushed 3 days ago -->
<!-- pyjet: 27, last pushed 29 days ago -->
<!-- numpythia: 23, last pushed 28 days ago -->
<!-- fathon: 18, last pushed 1 days ago -->
<!-- pyinstrument_cext: 10, last pushed 29 days ago -->
<!-- xmlstarlet: 7, last pushed 0 days ago -->
<!-- pybind11 scikit_build_example: 0, last pushed 42 days ago -->
<!-- END bin/projects.py -->
@@ -261,6 +270,18 @@ Changelog
<!--changelog-start-->
### 1.7.3
_1 January 2021_
- 🛠 Added a patch for Pypy to ensure header files are available for building
in a virtualenv. (#502)
- 🛠 Some preparatory work towards using cibuildwheel as a Github Action.
Check out
[the FAQ](https://cibuildwheel.readthedocs.io/en/stable/faq/#option-1-github-action)
for information on how to use it. We'll be fully updating the docs to this
approach in a subsequent release (#494)
### 1.7.2
_21 December 2020_
+26
View File
@@ -0,0 +1,26 @@
name: cibuildwheel
description: 'Installs and runs cibuildwheel on the current runner'
inputs:
package-dir:
description: 'Input directory, defaults to "."'
required: false
default: .
output-dir:
description: 'Folder to place the outputs in, defaults to "wheelhouse"'
required: false
default: wheelhouse
branding:
icon: package
color: yellow
runs:
using: composite
steps:
# This needs powershell-core because github.action path is a Windows-style
# path on Windows. Powershell-core understands both types of paths.
- run: python -m pip install ${{ github.action_path }}
shell: pwsh
- run: python -m cibuildwheel ${{ inputs.package-dir }} --output-dir ${{ inputs.output-dir }}
shell: bash
+5 -2
View File
@@ -11,10 +11,13 @@ import urllib.parse
config = [
# file path, version find/replace format
('cibuildwheel/__init__.py', "__version__ = '{}'"),
('setup.py', "version='{}'"),
('README.md', "cibuildwheel=={}"),
('cibuildwheel/__init__.py', "__version__ = '{}'"),
('docs/faq.md', "cibuildwheel=={}"),
('docs/faq.md', "cibuildwheel@v{}"),
('docs/setup.md', "cibuildwheel@v{}"),
('examples/*', "cibuildwheel=={}"),
('setup.py', "version='{}'"),
]
+1 -1
View File
@@ -17,4 +17,4 @@ if __name__ == '__main__':
subprocess.check_call(unit_test_args)
# run the integration tests
subprocess.check_call([sys.executable, '-m', 'pytest', '-x', '--durations', '0', 'test'])
subprocess.check_call([sys.executable, '-m', 'pytest', '-x', '--durations', '0', '--timeout=1200', 'test'])
+35 -15
View File
@@ -2,7 +2,9 @@
import configparser
import os
import shutil
import subprocess
import sys
from collections import namedtuple
import requests
@@ -12,21 +14,39 @@ os.chdir('..')
# CUSTOM_COMPILE_COMMAND is a pip-compile option that tells users how to
# regenerate the constraints files
os.environ['CUSTOM_COMPILE_COMMAND'] = "bin/update_constraints.py"
subprocess.check_call([
'pip-compile',
'--allow-unsafe',
'--upgrade',
'cibuildwheel/resources/constraints.in',
])
for python_version in ['27', '35', '36', '37']:
subprocess.check_call([
f'./env{python_version}/bin/pip-compile',
'--allow-unsafe',
'--upgrade',
'cibuildwheel/resources/constraints.in',
'--output-file', f'cibuildwheel/resources/constraints-python{python_version}.txt'
])
os.environ['CUSTOM_COMPILE_COMMAND'] = "bin/update_dependencies.py"
PYTHON_VERSIONS = ['27', '35', '36', '37', '38', '39']
if '--no-docker' in sys.argv:
for python_version in PYTHON_VERSIONS:
subprocess.check_call([
f'./env{python_version}/bin/pip-compile',
'--allow-unsafe',
'--upgrade',
'cibuildwheel/resources/constraints.in',
'--output-file', f'cibuildwheel/resources/constraints-python{python_version}.txt'
])
else:
image = 'quay.io/pypa/manylinux2010_x86_64:latest'
subprocess.check_call(['docker', 'pull', image])
for python_version in PYTHON_VERSIONS:
abi_flags = '' if int(python_version) >= 38 else 'm'
python_path = f'/opt/python/cp{python_version}-cp{python_version}{abi_flags}/bin/'
subprocess.check_call([
'docker', 'run', '--rm',
'-e', 'CUSTOM_COMPILE_COMMAND',
'-v', f'{os.getcwd()}:/volume',
'--workdir', '/volume', image,
'bash', '-c',
f'{python_path}pip install pip-tools &&'
f'{python_path}pip-compile --allow-unsafe --upgrade '
'cibuildwheel/resources/constraints.in '
f'--output-file cibuildwheel/resources/constraints-python{python_version}.txt'
])
# default constraints.txt
shutil.copyfile(f'cibuildwheel/resources/constraints-python{PYTHON_VERSIONS[-1]}.txt', 'cibuildwheel/resources/constraints.txt')
Image = namedtuple('Image', [
'manylinux_version',
+1 -1
View File
@@ -1 +1 @@
__version__ = '1.7.2'
__version__ = '1.7.3'
+10
View File
@@ -138,6 +138,16 @@ def build(options: BuildOptions) -> None:
log.build_start(config.identifier)
dependency_constraint_flags: List[Union[str, PathLike]] = []
if config.identifier.startswith("pp"):
# Patch PyPy to make sure headers get installed into a venv
patch_version = '_27' if config.version == '2.7' else ''
patch_path = Path(__file__).absolute().parent / 'resources' / f'pypy_venv{patch_version}.patch'
patch_docker_path = PurePath('/pypy_venv.patch')
docker.copy_into(patch_path, patch_docker_path)
try:
docker.call(['patch', '--force', '-p1', '-d', config.path, '-i', patch_docker_path])
except subprocess.CalledProcessError:
print("PyPy patch not applied", file=sys.stderr)
if options.dependency_constraints:
constraints_file = options.dependency_constraints.get_for_python_version(config.version)
+5 -1
View File
@@ -38,7 +38,7 @@ def get_python_configurations(build_selector: BuildSelector) -> List[PythonConfi
PythonConfiguration(version='3.5', identifier='cp35-macosx_x86_64', url='https://www.python.org/ftp/python/3.5.4/python-3.5.4-macosx10.6.pkg'),
PythonConfiguration(version='3.6', identifier='cp36-macosx_x86_64', url='https://www.python.org/ftp/python/3.6.8/python-3.6.8-macosx10.9.pkg'),
PythonConfiguration(version='3.7', identifier='cp37-macosx_x86_64', url='https://www.python.org/ftp/python/3.7.9/python-3.7.9-macosx10.9.pkg'),
PythonConfiguration(version='3.8', identifier='cp38-macosx_x86_64', url='https://www.python.org/ftp/python/3.8.6/python-3.8.6-macosx10.9.pkg'),
PythonConfiguration(version='3.8', identifier='cp38-macosx_x86_64', url='https://www.python.org/ftp/python/3.8.7/python-3.8.7-macosx10.9.pkg'),
PythonConfiguration(version='3.9', identifier='cp39-macosx_x86_64', url='https://www.python.org/ftp/python/3.9.1/python-3.9.1-macosx10.9.pkg'),
# PyPy
PythonConfiguration(version='2.7', identifier='pp27-macosx_x86_64', url='https://downloads.python.org/pypy/pypy2.7-v7.3.3-osx64.tar.bz2'),
@@ -105,6 +105,10 @@ def install_pypy(version: str, url: str) -> Path:
downloaded_tar_bz2 = Path("/tmp") / pypy_tar_bz2
download(url, downloaded_tar_bz2)
call(['tar', '-C', '/tmp', '-xf', downloaded_tar_bz2])
# Patch PyPy to make sure headers get installed into a venv
patch_version = '_27' if version == '2.7' else ''
patch_path = Path(__file__).absolute().parent / 'resources' / f'pypy_venv{patch_version}.patch'
call(['patch', '--force', '-d', installation_path, patch_path])
installation_bin_path = installation_path / 'bin'
python_executable = 'pypy3' if version[0] == '3' else 'pypy'
+48 -19
View File
@@ -2,25 +2,54 @@
# This file is autogenerated by pip-compile
# To update, run:
#
# bin/update_constraints.py
# bin/update_dependencies.py
#
appdirs==1.4.4 # via virtualenv
configparser==4.0.2 # via importlib-metadata
contextlib2==0.6.0.post1 # via importlib-metadata, importlib-resources
delocate==0.8.2 # via -r cibuildwheel/resources/constraints.in
distlib==0.3.1 # via virtualenv
filelock==3.0.12 # via virtualenv
importlib-metadata==2.1.1 # via virtualenv
importlib-resources==3.3.0 # via virtualenv
pathlib2==2.3.5 # via importlib-metadata, importlib-resources, virtualenv
scandir==1.10.0 # via pathlib2
singledispatch==3.4.0.3 # via importlib-resources
six==1.15.0 # via pathlib2, virtualenv
typing==3.7.4.3 # via importlib-resources
virtualenv==20.2.2 # via -r cibuildwheel/resources/constraints.in
wheel==0.36.2 # via -r cibuildwheel/resources/constraints.in, delocate
zipp==1.2.0 # via importlib-metadata, importlib-resources
appdirs==1.4.4
# via virtualenv
configparser==4.0.2
# via importlib-metadata
contextlib2==0.6.0.post1
# via
# importlib-metadata
# importlib-resources
delocate==0.8.2
# via -r cibuildwheel/resources/constraints.in
distlib==0.3.1
# via virtualenv
filelock==3.0.12
# via virtualenv
importlib-metadata==2.1.1
# via virtualenv
importlib-resources==3.3.1
# via virtualenv
pathlib2==2.3.5
# via
# importlib-metadata
# importlib-resources
# virtualenv
scandir==1.10.0
# via pathlib2
singledispatch==3.4.0.3
# via importlib-resources
six==1.15.0
# via
# pathlib2
# virtualenv
typing==3.7.4.3
# via importlib-resources
virtualenv==20.2.2
# via -r cibuildwheel/resources/constraints.in
wheel==0.36.2
# via
# -r cibuildwheel/resources/constraints.in
# delocate
zipp==1.2.0
# via
# importlib-metadata
# importlib-resources
# The following packages are considered to be unsafe in a requirements file:
pip==20.3.3 # via -r cibuildwheel/resources/constraints.in
setuptools==44.1.1 # via -r cibuildwheel/resources/constraints.in
pip==20.3.3
# via -r cibuildwheel/resources/constraints.in
setuptools==44.1.1
# via -r cibuildwheel/resources/constraints.in
+29 -13
View File
@@ -2,19 +2,35 @@
# This file is autogenerated by pip-compile
# To update, run:
#
# bin/update_constraints.py
# bin/update_dependencies.py
#
appdirs==1.4.4 # via virtualenv
delocate==0.8.2 # via -r cibuildwheel/resources/constraints.in
distlib==0.3.1 # via virtualenv
filelock==3.0.12 # via virtualenv
importlib-metadata==2.1.1 # via virtualenv
importlib-resources==3.2.1 # via virtualenv
six==1.15.0 # via virtualenv
virtualenv==20.2.2 # via -r cibuildwheel/resources/constraints.in
wheel==0.36.2 # via -r cibuildwheel/resources/constraints.in, delocate
zipp==1.2.0 # via importlib-metadata, importlib-resources
appdirs==1.4.4
# via virtualenv
delocate==0.8.2
# via -r cibuildwheel/resources/constraints.in
distlib==0.3.1
# via virtualenv
filelock==3.0.12
# via virtualenv
importlib-metadata==2.1.1
# via virtualenv
importlib-resources==3.2.1
# via virtualenv
six==1.15.0
# via virtualenv
virtualenv==20.2.2
# via -r cibuildwheel/resources/constraints.in
wheel==0.36.2
# via
# -r cibuildwheel/resources/constraints.in
# delocate
zipp==1.2.0
# via
# importlib-metadata
# importlib-resources
# The following packages are considered to be unsafe in a requirements file:
pip==20.3.3 # via -r cibuildwheel/resources/constraints.in
setuptools==50.3.2 # via -r cibuildwheel/resources/constraints.in
pip==20.3.3
# via -r cibuildwheel/resources/constraints.in
setuptools==50.3.2
# via -r cibuildwheel/resources/constraints.in
+31 -14
View File
@@ -2,20 +2,37 @@
# This file is autogenerated by pip-compile
# To update, run:
#
# bin/update_constraints.py
# bin/update_dependencies.py
#
appdirs==1.4.4 # via virtualenv
delocate==0.8.2 # via -r cibuildwheel/resources/constraints.in
distlib==0.3.1 # via virtualenv
filelock==3.0.12 # via virtualenv
importlib-metadata==3.3.0 # via virtualenv
importlib-resources==3.3.0 # via virtualenv
six==1.15.0 # via virtualenv
typing-extensions==3.7.4.3 # via importlib-metadata
virtualenv==20.2.2 # via -r cibuildwheel/resources/constraints.in
wheel==0.36.2 # via -r cibuildwheel/resources/constraints.in, delocate
zipp==3.4.0 # via importlib-metadata, importlib-resources
appdirs==1.4.4
# via virtualenv
delocate==0.8.2
# via -r cibuildwheel/resources/constraints.in
distlib==0.3.1
# via virtualenv
filelock==3.0.12
# via virtualenv
importlib-metadata==3.3.0
# via virtualenv
importlib-resources==4.1.1
# via virtualenv
six==1.15.0
# via virtualenv
typing-extensions==3.7.4.3
# via importlib-metadata
virtualenv==20.2.2
# via -r cibuildwheel/resources/constraints.in
wheel==0.36.2
# via
# -r cibuildwheel/resources/constraints.in
# delocate
zipp==3.4.0
# via
# importlib-metadata
# importlib-resources
# The following packages are considered to be unsafe in a requirements file:
pip==20.3.3 # via -r cibuildwheel/resources/constraints.in
setuptools==51.0.0 # via -r cibuildwheel/resources/constraints.in
pip==20.3.3
# via -r cibuildwheel/resources/constraints.in
setuptools==51.1.1
# via -r cibuildwheel/resources/constraints.in
+27 -13
View File
@@ -2,19 +2,33 @@
# This file is autogenerated by pip-compile
# To update, run:
#
# bin/update_constraints.py
# bin/update_dependencies.py
#
appdirs==1.4.4 # via virtualenv
delocate==0.8.2 # via -r cibuildwheel/resources/constraints.in
distlib==0.3.1 # via virtualenv
filelock==3.0.12 # via virtualenv
importlib-metadata==3.3.0 # via virtualenv
six==1.15.0 # via virtualenv
typing-extensions==3.7.4.3 # via importlib-metadata
virtualenv==20.2.2 # via -r cibuildwheel/resources/constraints.in
wheel==0.36.2 # via -r cibuildwheel/resources/constraints.in, delocate
zipp==3.4.0 # via importlib-metadata
appdirs==1.4.4
# via virtualenv
delocate==0.8.2
# via -r cibuildwheel/resources/constraints.in
distlib==0.3.1
# via virtualenv
filelock==3.0.12
# via virtualenv
importlib-metadata==3.3.0
# via virtualenv
six==1.15.0
# via virtualenv
typing-extensions==3.7.4.3
# via importlib-metadata
virtualenv==20.2.2
# via -r cibuildwheel/resources/constraints.in
wheel==0.36.2
# via
# -r cibuildwheel/resources/constraints.in
# delocate
zipp==3.4.0
# via importlib-metadata
# The following packages are considered to be unsafe in a requirements file:
pip==20.3.3 # via -r cibuildwheel/resources/constraints.in
setuptools==51.0.0 # via -r cibuildwheel/resources/constraints.in
pip==20.3.3
# via -r cibuildwheel/resources/constraints.in
setuptools==51.1.1
# via -r cibuildwheel/resources/constraints.in
@@ -0,0 +1,28 @@
#
# This file is autogenerated by pip-compile
# To update, run:
#
# bin/update_dependencies.py
#
appdirs==1.4.4
# via virtualenv
delocate==0.8.2
# via -r cibuildwheel/resources/constraints.in
distlib==0.3.1
# via virtualenv
filelock==3.0.12
# via virtualenv
six==1.15.0
# via virtualenv
virtualenv==20.2.2
# via -r cibuildwheel/resources/constraints.in
wheel==0.36.2
# via
# -r cibuildwheel/resources/constraints.in
# delocate
# The following packages are considered to be unsafe in a requirements file:
pip==20.3.3
# via -r cibuildwheel/resources/constraints.in
setuptools==51.1.1
# via -r cibuildwheel/resources/constraints.in
@@ -0,0 +1,28 @@
#
# This file is autogenerated by pip-compile
# To update, run:
#
# bin/update_dependencies.py
#
appdirs==1.4.4
# via virtualenv
delocate==0.8.2
# via -r cibuildwheel/resources/constraints.in
distlib==0.3.1
# via virtualenv
filelock==3.0.12
# via virtualenv
six==1.15.0
# via virtualenv
virtualenv==20.2.2
# via -r cibuildwheel/resources/constraints.in
wheel==0.36.2
# via
# -r cibuildwheel/resources/constraints.in
# delocate
# The following packages are considered to be unsafe in a requirements file:
pip==20.3.3
# via -r cibuildwheel/resources/constraints.in
setuptools==51.1.1
# via -r cibuildwheel/resources/constraints.in
+21 -10
View File
@@ -2,16 +2,27 @@
# This file is autogenerated by pip-compile
# To update, run:
#
# bin/update_constraints.py
# bin/update_dependencies.py
#
appdirs==1.4.4 # via virtualenv
delocate==0.8.2 # via -r cibuildwheel/resources/constraints.in
distlib==0.3.1 # via virtualenv
filelock==3.0.12 # via virtualenv
six==1.15.0 # via virtualenv
virtualenv==20.2.2 # via -r cibuildwheel/resources/constraints.in
wheel==0.36.2 # via -r cibuildwheel/resources/constraints.in, delocate
appdirs==1.4.4
# via virtualenv
delocate==0.8.2
# via -r cibuildwheel/resources/constraints.in
distlib==0.3.1
# via virtualenv
filelock==3.0.12
# via virtualenv
six==1.15.0
# via virtualenv
virtualenv==20.2.2
# via -r cibuildwheel/resources/constraints.in
wheel==0.36.2
# via
# -r cibuildwheel/resources/constraints.in
# delocate
# The following packages are considered to be unsafe in a requirements file:
pip==20.3.3 # via -r cibuildwheel/resources/constraints.in
setuptools==51.0.0 # via -r cibuildwheel/resources/constraints.in
pip==20.3.3
# via -r cibuildwheel/resources/constraints.in
setuptools==51.1.1
# via -r cibuildwheel/resources/constraints.in
@@ -1,22 +1,22 @@
[x86_64]
manylinux1 = quay.io/pypa/manylinux1_x86_64:2020-12-18-c48c073
manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2020-12-19-8df9e2d
manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2020-12-18-cb453dc
manylinux1 = quay.io/pypa/manylinux1_x86_64:2020-12-30-e2b3664
manylinux2010 = quay.io/pypa/manylinux2010_x86_64:2020-12-30-3161d69
manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2020-12-30-68d3257
[i686]
manylinux1 = quay.io/pypa/manylinux1_i686:2020-12-18-c48c073
manylinux2010 = quay.io/pypa/manylinux2010_i686:2020-12-19-8df9e2d
manylinux2014 = quay.io/pypa/manylinux2014_i686:2020-12-18-cb453dc
manylinux1 = quay.io/pypa/manylinux1_i686:2020-12-30-e2b3664
manylinux2010 = quay.io/pypa/manylinux2010_i686:2020-12-30-3161d69
manylinux2014 = quay.io/pypa/manylinux2014_i686:2020-12-30-68d3257
[pypy_x86_64]
manylinux2010 = pypywheels/manylinux2010-pypy_x86_64:2020-12-11-f1e0e80
[aarch64]
manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2020-12-18-cb453dc
manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2020-12-30-68d3257
[ppc64le]
manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2020-12-18-cb453dc
manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2020-12-30-68d3257
[s390x]
manylinux2014 = quay.io/pypa/manylinux2014_s390x:2020-12-18-cb453dc
manylinux2014 = quay.io/pypa/manylinux2014_s390x:2020-12-30-68d3257
+36
View File
@@ -0,0 +1,36 @@
diff --git a/lib-python/3/sysconfig.py b/lib-python/3/sysconfig.py
index 0d08cde66b4150e1772c13fdc6fe34d079c2b10d..30c77d165a2505d98bc7660ff0cc3b728f56c682 100644
--- a/lib-python/3/sysconfig.py
+++ b/lib-python/3/sysconfig.py
@@ -618,9 +618,6 @@ def get_config_vars(*args):
import _osx_support
_osx_support.customize_config_vars(_CONFIG_VARS)
- _CONFIG_VARS['INCLUDEPY'] = os.path.join(_CONFIG_VARS['prefix'],
- 'include')
-
if args:
vals = []
for name in args:
diff --git a/lib_pypy/_sysconfigdata.py b/lib_pypy/_sysconfigdata.py
index f1cca41a4b7553819bb1a2a63af1c1a9b8591ce9..a34216e8e12b82abd72fabdd7793b3e8bb19bbcf 100644
--- a/lib_pypy/_sysconfigdata.py
+++ b/lib_pypy/_sysconfigdata.py
@@ -5,6 +5,7 @@ from distutils.spawn import find_executable
so_ext = _imp.extension_suffixes()[0]
+mybase = os.path.dirname(os.path.dirname(__file__))
build_time_vars = {
# SOABI is PEP 3149 compliant, but CPython3 has so_ext.split('.')[1]
@@ -25,7 +26,8 @@ build_time_vars = {
'AR': "ar",
'ARFLAGS': "rc",
'EXE': "",
- 'LIBDIR': os.path.join(sys.prefix, 'bin'),
+ 'LIBDIR': os.path.join(mybase, 'lib'),
+ 'INCLUDEPY': os.path.join(mybase, 'include'),
}
if find_executable("gcc"):
+27
View File
@@ -0,0 +1,27 @@
--- a/lib-python/2.7/sysconfig.py
+++ b/lib-python/2.7/sysconfig.py
@@ -553,9 +553,6 @@ def get_config_vars(*args):
if type_ == imp.C_EXTENSION:
_CONFIG_VARS['SOABI'] = suffix.split('.')[1]
break
- _CONFIG_VARS['INCLUDEPY'] = os.path.join(_CONFIG_VARS['prefix'],
- 'include')
-
if args:
vals = []
for name in args:
--- a/lib_pypy/_sysconfigdata.py
+++ b/lib_pypy/_sysconfigdata.py
@@ -1,5 +1,11 @@
-import imp
+import imp, os
+
+mybase = os.path.dirname(os.path.dirname(__file__))
build_time_vars = {
"SO": [s[0] for s in imp.get_suffixes() if s[2] == imp.C_EXTENSION][0]
}
+
+build_time_vars['LIBDIR'] = os.path.join(mybase, 'lib')
+build_time_vars['INCLUDEPY'] = os.path.join(mybase, 'include')
+
+2 -2
View File
@@ -58,8 +58,8 @@ def get_python_configurations(build_selector: BuildSelector) -> List[PythonConfi
PythonConfiguration(version='3.6.8', arch='64', identifier='cp36-win_amd64', url=None),
PythonConfiguration(version='3.7.9', arch='32', identifier='cp37-win32', url=None),
PythonConfiguration(version='3.7.9', arch='64', identifier='cp37-win_amd64', url=None),
PythonConfiguration(version='3.8.6', arch='32', identifier='cp38-win32', url=None),
PythonConfiguration(version='3.8.6', arch='64', identifier='cp38-win_amd64', url=None),
PythonConfiguration(version='3.8.7', arch='32', identifier='cp38-win32', url=None),
PythonConfiguration(version='3.8.7', arch='64', identifier='cp38-win_amd64', url=None),
PythonConfiguration(version='3.9.1', arch='32', identifier='cp39-win32', url=None),
PythonConfiguration(version='3.9.1', arch='64', identifier='cp39-win_amd64', url=None),
# PyPy
+16
View File
@@ -213,3 +213,19 @@
ci: [github, travisci]
os: [windows, apple, linux]
notes: Supports full range of wheels, including PyPy and alternate archs.
- name: Rtree
gh: Toblerity/rtree
ci: [github]
os: [windows, apple, linux]
- name: psutil
gh: giampaolo/psutil
ci: [github]
os: [windows, apple, linux]
- name: Dependency Injector
gh: ets-labs/python-dependency-injector
ci: [travisci]
os: [windows, apple, linux]
notes: Dependency injection framework for Python, uses Windows TravisCI
+1 -1
View File
@@ -1 +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>
<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="M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701"/></svg>

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 683 B

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB

+53
View File
@@ -81,3 +81,56 @@ To add the `/d2FH4-` flag to a standard `setup.py` using `setuptools`, the `extr
```
To investigate the dependencies of a C extension (i.e., the `.pyd` file, a DLL in disguise) on Windows, [Dependency Walker](http://www.dependencywalker.com/) is a great tool.
### Automatic updates {: #automatic-updates}
Selecting a moving target (like the latest release) is generally a bad idea in CI. If something breaks, you can't tell whether it was your code or an upstream update that caused the breakage, and in a worse-case scenario, it could occur during a release.
There are two suggested methods for keeping cibuildwheel up to date that instead involve scheduled pull requests using GitHub's dependabot.
#### Option 1: GitHub Action
If you use GitHub Actions for builds, you can use cibuildwheel as an action:
```yaml
uses: joerick/cibuildwheel@v1.7.3
```
This is a composite step that just installs and runs cibuildwheel. You can set command-line options as `with:` parameters, and use `env:` as normal.
Then, your `dependabot.yml` file could look like this:
```yaml
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
ignore:
# Optional: Official actions have moving tags like v1;
# if you use those, you don't need updates.
- dependency-name: "actions/*"
```
#### Option 2: Requirement files
The second option, and the only one that supports other CI systems, is using a `requirements-*.txt` file. The file should have a distinct name and have only one entry:
```bash
# requirements-cibw.txt
cibuildwheel==1.7.3
```
Then your install step would have `python -m pip install -r requirements-cibw.txt` in it. Your `dependabot.yml` file could look like this:
```yaml
version: 2
updates:
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "daily"
```
This will also try to update other pins in all requirement files, so be sure you want to do that. The only control you have over the files used is via the directory option.
+2
View File
@@ -17,6 +17,8 @@ For more info on this file, check out the [docs](https://help.github.com/en/acti
[`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.
You can also use cibuildwheel directly as an action with `uses: joerick/cibuildwheel@v1.7.3`; this combines the download and run steps into a single action, and command line arguments are available via `with:`. This makes it easy to manage cibuildwheel updates via normal actions update mechanisms like dependabot, see [Automatic updates](faq.md#automatic-updates).
# Azure Pipelines [linux/mac/windows] {: #azure-pipelines}
To build Linux, Mac, and Windows wheels on Azure Pipelines, create a `azure-pipelines.yml` file in your repo.
+1 -1
View File
@@ -12,7 +12,7 @@ stack: python 3.7
init:
- cmd: set PATH=C:\Python37;C:\Python37\Scripts;%PATH%
install: python -m pip install cibuildwheel==1.7.2
install: python -m pip install cibuildwheel==1.7.3
build_script: python -m cibuildwheel --output-dir wheelhouse
+3 -3
View File
@@ -6,7 +6,7 @@ jobs:
- bash: |
set -o errexit
python3 -m pip install --upgrade pip
pip3 install cibuildwheel==1.7.2
pip3 install cibuildwheel==1.7.3
displayName: Install dependencies
- bash: cibuildwheel --output-dir wheelhouse .
displayName: Build wheels
@@ -20,7 +20,7 @@ jobs:
- bash: |
set -o errexit
python3 -m pip install --upgrade pip
python3 -m pip install cibuildwheel==1.7.2
python3 -m pip install cibuildwheel==1.7.3
displayName: Install dependencies
- bash: cibuildwheel --output-dir wheelhouse .
displayName: Build wheels
@@ -36,7 +36,7 @@ jobs:
- bash: |
set -o errexit
python -m pip install --upgrade pip
pip install cibuildwheel==1.7.2
pip install cibuildwheel==1.7.3
displayName: Install dependencies
- bash: cibuildwheel --output-dir wheelhouse .
displayName: Build wheels
+2 -2
View File
@@ -11,7 +11,7 @@ jobs:
- run:
name: Build the Linux wheels.
command: |
pip3 install --user cibuildwheel==1.7.2
pip3 install --user cibuildwheel==1.7.3
cibuildwheel --output-dir wheelhouse
- store_artifacts:
path: wheelhouse/
@@ -25,7 +25,7 @@ jobs:
- run:
name: Build the OS X wheels.
command: |
pip3 install cibuildwheel==1.7.2
pip3 install cibuildwheel==1.7.3
cibuildwheel --output-dir wheelhouse
- store_artifacts:
path: wheelhouse/
+1 -1
View File
@@ -28,7 +28,7 @@ jobs:
- name: Install cibuildwheel
run: |
python -m pip install cibuildwheel==1.7.2
python -m pip install cibuildwheel==1.7.3
- name: Install Visual C++ for Python 2.7
if: runner.os == 'Windows'
+1 -1
View File
@@ -20,7 +20,7 @@ jobs:
- name: Install cibuildwheel
run: |
python -m pip install cibuildwheel==1.7.2
python -m pip install cibuildwheel==1.7.3
- name: Install Visual C++ for Python 2.7
if: runner.os == 'Windows'
+1 -1
View File
@@ -20,7 +20,7 @@ jobs:
- ln -s /c/Python38/python.exe /c/Python38/python3.exe
install:
- python3 -m pip install cibuildwheel==1.7.2
- python3 -m pip install cibuildwheel==1.7.3
script:
# build the wheels, put them into './wheelhouse'
+1 -1
View File
@@ -26,7 +26,7 @@ jobs:
- ln -s /c/Python38/python.exe /c/Python38/python3.exe
install:
- python3 -m pip install cibuildwheel==1.7.2
- python3 -m pip install cibuildwheel==1.7.3
script:
# build the wheels, put them into './wheelhouse'
+3 -3
View File
@@ -55,7 +55,7 @@ jobs:
- stage: deploy
name: Build and deploy Linux wheels
services: docker
install: python3 -m pip install cibuildwheel==1.7.2
install: python3 -m pip install cibuildwheel==1.7.3
script: python3 -m cibuildwheel --output-dir wheelhouse
after_success: |
python3 -m pip install twine
@@ -65,7 +65,7 @@ jobs:
name: Build and deploy macOS wheels
os: osx
language: shell
install: python3 -m pip install cibuildwheel==1.7.2
install: python3 -m pip install cibuildwheel==1.7.3
script: python3 -m cibuildwheel --output-dir wheelhouse
after_success: |
python3 -m pip install twine
@@ -75,7 +75,7 @@ jobs:
name: Build and deploy Windows wheels
os: windows
language: shell
install: python3 -m pip install cibuildwheel==1.7.2
install: python3 -m pip install cibuildwheel==1.7.3
script: python3 -m cibuildwheel --output-dir wheelhouse
after_success: |
python3 -m pip install twine
+7
View File
@@ -0,0 +1,7 @@
[build-system]
requires = [
"setuptools>=42",
"wheel"
]
build-backend = "setuptools.build_meta"
+1
View File
@@ -1,5 +1,6 @@
-e .
pytest
pytest-timeout
mkdocs==1.0.4
mkdocs-include-markdown-plugin==2.1.1
pymdown-extensions
+1 -1
View File
@@ -11,7 +11,7 @@ long_description = (this_directory / 'README.md').read_text(encoding='utf-8')
setup(
name='cibuildwheel',
version='1.7.2',
version='1.7.3',
install_requires=['bashlex!=0.13', 'toml', 'certifi'],
description="Build Python wheels on CI with minimal configuration.",
long_description=long_description,
+4 -2
View File
@@ -37,13 +37,15 @@ class TestBeforeTest(TestCase):
def test(tmp_path):
project_dir = tmp_path / 'project'
before_test_project.generate(project_dir)
test_project_dir = project_dir / 'dependency'
test_projects.new_c_project().generate(test_project_dir)
# build the wheels
actual_wheels = utils.cibuildwheel_run(project_dir, add_env={
# write python version information to a temporary file, this is
# checked in setup.py
'CIBW_BEFORE_TEST': '''python -c "import sys; open('/tmp/pythonversion.txt', 'w').write(sys.version)" && python -c "import sys; open('/tmp/pythonprefix.txt', 'w').write(sys.prefix)"''',
'CIBW_BEFORE_TEST_WINDOWS': '''python -c "import sys; open('c:\\pythonversion.txt', 'w').write(sys.version)" && python -c "import sys; open('c:\\pythonprefix.txt', 'w').write(sys.prefix)"''',
'CIBW_BEFORE_TEST': '''python -c "import sys; open('/tmp/pythonversion.txt', 'w').write(sys.version)" && python -c "import sys; open('/tmp/pythonprefix.txt', 'w').write(sys.prefix)" && python -m pip install {project}/dependency''',
'CIBW_BEFORE_TEST_WINDOWS': '''python -c "import sys; open('c:\\pythonversion.txt', 'w').write(sys.version)" && python -c "import sys; open('c:\\pythonprefix.txt', 'w').write(sys.prefix)" && python -m pip install {project}/dependency''',
'CIBW_TEST_REQUIRES': 'nose',
# the 'false ||' bit is to ensure this command runs in a shell on
# mac/linux.
+4
View File
@@ -64,6 +64,10 @@ class TestSpam(TestCase):
bits = struct.calcsize("P") * 8
if bits == 32:
self.assertEqual(platform.machine(), "i686")
def test_time_to_remove_the_pypy_venv_patch(self):
if sys.platform == "darwin":
assert not hasattr(sys, "pypy_version_info") or sys.pypy_version_info < (7,3,4)
'''
+2 -1
View File
@@ -10,7 +10,8 @@ def test_defaults():
resources_dir = project_root / 'cibuildwheel' / 'resources'
assert dependency_constraints.base_file_path.samefile(resources_dir / 'constraints.txt')
assert dependency_constraints.get_for_python_version('3.8').samefile(resources_dir / 'constraints.txt')
assert dependency_constraints.get_for_python_version('3.99').samefile(resources_dir / 'constraints.txt')
assert dependency_constraints.get_for_python_version('3.9').samefile(resources_dir / 'constraints-python39.txt')
assert dependency_constraints.get_for_python_version('3.6').samefile(resources_dir / 'constraints-python36.txt')
assert dependency_constraints.get_for_python_version('3.5').samefile(resources_dir / 'constraints-python35.txt')
assert dependency_constraints.get_for_python_version('2.7').samefile(resources_dir / 'constraints-python27.txt')