Commit Graph
128 Commits
Author SHA1 Message Date
Henry SchreinerandRussell Keith-Magee 45cfffd3ee feat: add CPython 3.15 support for iOS (#2857)
* feat: add CPython 3.15 support for iOS

Assisted-by: OpenCode:Kimi-K2.6
Signed-off-by: Henry Schreiner <henryfs@princeton.edu>

* fix: copy in iOS support files

Assisted-by: Copilot:claude-sonnet-4.6
Signed-off-by: Henry Schreiner <henryfs@princeton.edu>

* fix: skip directories when copying iOS support files

When copying multiarch-specific support files (e.g. _cross_arm64_iphoneos.py),
the code was trying to copy all items in the directory including __pycache__
directories. The shutil.copy() function only works with files, not directories,
which caused an IsADirectoryError.

This fix adds a check to only copy files, skipping any directories like
__pycache__ that may have been created by Python imports.

Assisted-by: Copilot:claude-haiku-4.5

* fix: - in dir fine for now

Signed-off-by: Henry Schreiner <henryfs@princeton.edu>

* fix: apply review suggestions

Assisted-by: Copilot:claude-sonnet-4.6
Signed-off-by: Henry Schreiner <henryfs@princeton.edu>

* fix: only do this on 3.15+

Signed-off-by: Henry Schreiner <henryfs@princeton.edu>

* Ensure target Python directory exists before build

Add assertion to check if target Python directory exists.

* fix(ios): use stdlib dir directly instead of copying to platform-config

Remove the _inject_support_files workaround for python.org 3.15+
distributions. Instead of copying sysconfig files from the stdlib into
a synthetic platform-config/ directory, pass the stdlib directory
directly to make_cross_venv.py.

make_cross_venv.py is updated to derive the multiarch tag from the
_sysconfigdata_ filename rather than assuming it comes from the
directory name.

Co-authored-by: Russell Keith-Magee <russell@keith-magee.com>
Assisted-by: OpenCode:Kimi-K2.6
Signed-off-by: Henry Schreiner <henryfs@princeton.edu>

* Minor format cleanups on pre-commit skipped files.

* Clarify path names in make_cross_venv script.

---------

Signed-off-by: Henry Schreiner <henryfs@princeton.edu>
Co-authored-by: Russell Keith-Magee <russell@keith-magee.com>
2026-05-23 10:47:49 -04:00
Henry Schreiner a7b3f178c3 chore: avoid importing TYPE_CHECKING (#2864)
Assisted-by: OpenCode:glm-5.1

Signed-off-by: Henry Schreiner <henryfs@princeton.edu>
2026-05-18 20:10:51 -07:00
Henry Schreiner 54327ab9d3 Bump version: v4.0.0rc1 2026-05-14 08:58:13 -07:00
Henry Schreiner efebd1ca62 chore: add Python 3.15 to CI test matrix and classifiers (#2850)
test: add Python 3.15 to CI test matrix and classifiers

Update the Max Python CI job from 3.14 to 3.15 and add the
Programming Language :: Python :: 3.15 classifier to pyproject.toml.

Assisted-by: OpenCode:GLM-5
2026-05-14 08:18:20 -07:00
dependabot[bot] e04baff444 chore(deps-dev): bump mkdocs-include-markdown-plugin from 6.2.2 to 7.1.8 (#2851)
Signed-off-by: dependabot[bot] <support@github.com>
2026-05-14 09:52:01 +05:30
Agriya KhetarpalandAohan Dang 78869d0cf6 feat: set up delvewheel as the default repair wheel command for Windows (#2831)
* Add a default repair wheel command for Windows

* Install `delvewheel` into Windows build tools

* Add delvewheel to constraints file

* Regenerate constraints

* Docs

* Suggest how to disable Windows wheel repair

* Add tests

* Run `delvewheel` with verbose mode as default

* Add note about telling delvewheel where to look

Suggested-by: Nils <nilsnolde@proton.me>

* Partially revert 81374bb8fc43acefed76cb13d761a9e6cf6afa58

* Add `pip` and `uv` cases for build installations

* Ignore `python-native.dll` for GraalPy

* Ignore MSVC DLLs, try Windows amd64 graalpy happy

* Fix last remaining Windows test failure (famous last words?)

* Update constraints

* Drop workaround unneeded with delvewheel v1.12.1

* Update docs/options.md

Co-authored-by: Aohan Dang <adang1345@gmail.com>

* Drop `test_delvewheel_default_on_windows`

* Partially revert "Update constraints"

This partially reverts commit 2dc4c0f4951858959e213463d90431a5ca03b96f.

* Add a test case when repair command is `""`

* Add back test that checks delvewheel run/disable

* Add a C project with a missing DLL

* Add tests for `missing_dll_project`

* Partially undo virtualenv/python-discovery update

* Fix test

* Discard changes to cibuildwheel/resources/constraints-pyodide312.txt

* Discard changes to cibuildwheel/resources/constraints-pyodide314.txt

* Fix bad merge of constraints

* Discard changes to cibuildwheel/resources/constraints-pyodide313.txt

* Manually add more GraalPy pip markers

* Dependency parsing was too naïve

* Maybe a better way to invoke the compiler on Windows

* Can we get away without a DLL?

---------

Co-authored-by: Aohan Dang <adang1345@gmail.com>
2026-05-13 18:18:30 -04:00
f86700db67 chore: add PEP 723 metadata for various bin/ scripts, drop bin dependency group (#2819)
* Add PEP 723 metadata for various `bin` scripts

* Use a subprocess to install chromium

* Regenerate image

* Update shebangs

Co-Authored-By: Henry Schreiner <HenrySchreinerIII@gmail.com>

* Add cibuildwheel local dependency for some scripts

Co-Authored-By: Henry Schreiner <HenrySchreinerIII@gmail.com>

* Remove `bin` dependency group fully

* Add CSS for styling the diagram

Co-Authored-By: Joe Rickerby <1244307+joerick@users.noreply.github.com>

* Restore image to original

* Install `uv` for PyLint to find it

* Drop setup-python too in favour of setup-uv

* Revert "Drop setup-python too in favour of setup-uv"

This reverts commit 663db5c253f18bd09229ea5dbf92f7f6aa8ebf1c.

* Make `uv` venv backend for nox optional again

---------

Co-authored-by: Henry Schreiner <HenrySchreinerIII@gmail.com>
Co-authored-by: Joe Rickerby <1244307+joerick@users.noreply.github.com>
2026-04-15 07:36:04 -04:00
pre-commit-ci[bot]henryiiipre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>Henry Schreiner
075b5c8881 [pre-commit.ci] pre-commit autoupdate (#2813)
Co-authored-by: henryiii <4616906+henryiii@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Henry Schreiner <HenrySchreinerIII@gmail.com>
2026-04-07 14:46:13 +05:30
Joe Rickerby 8d2b08b684 Bump version: v3.4.1 2026-04-02 14:57:41 +01:00
Henry Schreinerandpre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> 097806b6b1 tests: fully type the test suite (#2794)
* tests: fully type the test suite

* chore: require more typing

Signed-off-by: Henry Schreiner <henryfs@princeton.edu>

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

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

---------

Signed-off-by: Henry Schreiner <henryfs@princeton.edu>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2026-04-01 15:23:02 +01:00
Henry Schreiner 6df84da3e7 chore: some cleanup and checks (#2792)
* chore: clean up config a bit

* chore: add an extra check

* Apply suggestions from code review

Co-authored-by: Henry Schreiner <HenrySchreinerIII@gmail.com>
2026-03-24 23:51:49 -04:00
Henry Schreiner cb1fdd0316 chore: use absolute imports (#2796)
chore: use abosolute imports

Signed-off-by: Henry Schreiner <henryfs@princeton.edu>
2026-03-24 09:20:41 -04:00
Henry Schreiner fd6b413212 tests: use pytest 9+ and modern config (#2777)
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
2026-03-13 20:44:48 +01:00
Joe Rickerby ee02a1537c Bump version: v3.4.0 2026-03-05 09:00:28 +00:00
Joe Rickerby f3ba8a83a5 Merge branch '3.3.x' 2026-01-05 20:04:05 +00:00
Joe Rickerby 298ed2fb2c Bump version: v3.3.1 2026-01-05 19:57:01 +00:00
Matthieu Darbois 24bade1d15 break: remove Travis CI support (#2682)
Stop testing on Travis CI.
References to Travis CI are removed from docs.
Travis CI specifics are kept as-is in cibuildwheel itself (mostly logging stuff).
2025-12-29 17:03:03 -05:00
Joe Rickerby 63fd63b352 Bump version: v3.3.0 2025-11-12 19:27:31 +00:00
Henry Schreiner 1337e50f74 chore: pytest log_level is better than log_cli_level (#2657)
Committed via https://github.com/asottile/all-repos
2025-11-10 22:47:32 +01:00
Henry Schreiner e1baa60eb0 chore: enable more Ruff checks (#2654)
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
2025-11-07 18:48:20 -05:00
Joe Rickerby 8165422c41 chrome: remove dependency workaround for mkdocs-macro-plugin (#2639)
chrome: remove version pin for mkdocs-macro-plugin
2025-10-25 14:40:07 +01:00
Joe Rickerby 9c00cb4f6b Bump version: v3.2.1 2025-10-12 09:23:50 +01:00
Joe Rickerby 7c619efba9 Bump version: v3.2.0 2025-09-22 21:44:26 +01:00
pre-commit-ci[bot]pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>Joe Rickerby
5bbeaf830f [pre-commit.ci] pre-commit autoupdate (#2604)
* [pre-commit.ci] pre-commit autoupdate

updates:
- [github.com/astral-sh/ruff-pre-commit: v0.13.0 → v0.13.1](https://github.com/astral-sh/ruff-pre-commit/compare/v0.13.0...v0.13.1)
- [github.com/pre-commit/mirrors-mypy: v1.18.1 → v1.18.2](https://github.com/pre-commit/mirrors-mypy/compare/v1.18.1...v1.18.2)
- [github.com/python-jsonschema/check-jsonschema: 0.33.3 → 0.34.0](https://github.com/python-jsonschema/check-jsonschema/compare/0.33.3...0.34.0)

* add requests to the docs dependencies

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Joe Rickerby <joerick@mac.com>
2025-09-22 21:24:22 +01:00
cibuildwheel-bot[bot]cibuildwheel-bot[bot] <83877280+cibuildwheel-bot[bot]@users.noreply.github.com>Joe Rickerbymayeut
1d31ef4ab2 [Bot] Update dependencies (#2578)
* Update dependencies

* Fix pytest-rerunfailures version constraint

* update docker images (remove default setuptools for GraalPy)

---------

Co-authored-by: cibuildwheel-bot[bot] <83877280+cibuildwheel-bot[bot]@users.noreply.github.com>
Co-authored-by: Joe Rickerby <joerick@mac.com>
Co-authored-by: mayeut <mayeut@users.noreply.github.com>
2025-09-06 15:22:22 +01:00
Henry Schreiner c923d83ad9 Bump version: v3.1.4 2025-08-19 14:16:52 -04:00
Henry Schreiner ff9a284f21 fix: add patchelf requirement for android (#2552)
Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
2025-08-13 08:52:44 -04:00
Jon CrallandJoe Rickerby 5952330610 tests: fix and enable doctests (#2546)
* fix doctest

* Update cibuildwheel/oci_container.py

Co-authored-by: Joe Rickerby <joerick@mac.com>

* Update cibuildwheel/oci_container.py

Co-authored-by: Joe Rickerby <joerick@mac.com>

* Update cibuildwheel/oci_container.py

Co-authored-by: Joe Rickerby <joerick@mac.com>

* Add xdoctest to CI

* Add doctests to run tests

* Replace test map with new native method

* Forgot key for arm64

* Allow doctests to be filtered on circleci

---------

Co-authored-by: Joe Rickerby <joerick@mac.com>
2025-08-12 09:06:12 -04:00
Henry Schreiner 352e01339f Bump version: v3.1.3 2025-08-01 12:38:46 -04:00
Henry Schreiner feeb3992a7 tests: add flaky test handling (#2527)
* chore: add flaky test handling

Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>

* Update test_android.py

---------

Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
2025-07-31 12:26:17 -04:00
Henry Schreiner 9e4e50bd76 Bump version: v3.1.2 2025-07-29 09:12:51 -06:00
Henry SchreinerandMatthieu Darbois 140bc1a96a tests: mark and add skips (#2524)
* tests: mark and add skips

Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>

* fix comment

---------

Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
Co-authored-by: Matthieu Darbois <mayeut@users.noreply.github.com>
2025-07-27 12:12:42 +02:00
Joe Rickerby e6de07ed39 Bump version: v3.1.1 2025-07-24 19:14:08 +01:00
Henry Schreiner ffd835cef1 Bump version: v3.1.0 2025-07-23 23:23:06 -04:00
cibuildwheel-bot[bot] 10c727eed9 feat: Python 3.14rc1 build by default (#2507) 2025-07-23 20:59:02 -04:00
0f487ee2cb feat: add support for building Android wheels (#2349)
* Add Android to resource files

* Add Android to miscellaneous places

* Add Android documentation

* Docs cleanups

* Add Android platform module; implement top-level structure and target Python installation

* Implement setup_env and build_wheel

* lru-dict build working

* Alter prefix in sysconfigdata file; fix various issues with FLAGS variables

* Implement Android testing

* Add type annotations to _cross_venv

* Revert Python 3.8 to pip 25.0.1

* Make test-sources required on Android

* Add Android integration tests

* Test cleanups

* Add test of all available Python versions

* Update test-sources and test-command behavior to match iOS

* Documentation cleanups

* Replace Builder class with a set of global functions

* Rename "env" to "build_env"

* Remove Chaquopy repository from default pip command line

* Move native_platform to platforms module

* Fix parse_config_settings

Co-authored-by: Joe Rickerby <joerick@mac.com>

* Add unit tests for parse_config_settings and arch_synonym

* Make `shell_prepared` arguments keyword-only, and add tests for the commands that use it

* Replace `importlib.util.spec_from_file_location` with `runpy.run_path`

* Use python-build-standalone

* Update Android Python

* Enable KVM in Linux CI

* Move KVM code to test_android.py

* Use Java 17 on Azure

* Install emulator if necessary before running -accel-check

* Free up additional disk space on Linux runners

* Add sudo

* Skip emulator tests on CI platforms that don't support it

* Download Android Python from Maven Central

* Free up more disk space on Linux runners

* fix: minor fixups

Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>

* Set sysconfig._BASE_PREFIX to support sysconfig.get_path("include")

* Get ANDROID_API_LEVEL from the build environment, not cibuildwheel's own environment

* Correct relative path of test-sources

* Pass a CMake toolchain file to the build

* Add "repair" step which adds libc++ to the wheel when necessary

* Add missing needs_emulator decorator

* Provide useful error message if ANDROID_HOME is not set

* Remove use of HOST environment variable

* Update to Python 3.15.5

* Fix PyLint warnings, clarify comment

* Group common arguments into a dataclass

* Handle environment variables containing newlines

* Discourage the use of `pytest` test commands without `python -m`

* Use single quotes in user-visible messages

* Improve testing documentation

* Pass wheel filename to `log.build_end`

* In GitHub Actions example, skip Android tests on macOS

* Correct relative paths in `patchelf --set-rpath`

* Clarify `test-sources` docs

* Update to Python 3.13.5+20250722.214220

---------

Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
Co-authored-by: Joe Rickerby <joerick@mac.com>
Co-authored-by: Henry Schreiner <henryschreineriii@gmail.com>
2025-07-23 17:18:33 -04:00
Henry SchreinerandJoe Rickerby d0e4aded3e feat: add summary to Action (#2469)
* chore: add summary to Action

* refactor: new summary table

* fix: fixup tests and formatting

Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>

* fix: pyodide missing some logging

Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>

* fix: nicer printout, nicer in-place summary

Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>

* fix: use summary for everything

Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>

* fix: support only one output wheel from repair

Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>

* Add new Github summary format

* Remove a couple of humanize uses

* fix: filter ANSI codes in summary

Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>

* fix: add sha256

Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>

* fix: nicer wheel/wheels depending on how many are present

Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>

---------

Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
Co-authored-by: Joe Rickerby <joerick@mac.com>
2025-07-15 20:45:53 -07:00
Joe Rickerby 95d2f3a92f Bump version: v3.0.1 2025-07-05 19:03:42 +01:00
pre-commit-ci[bot]pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>Henry Schreiner
34b4f1e86e [pre-commit.ci] pre-commit autoupdate (#2474)
* [pre-commit.ci] pre-commit autoupdate

updates:
- [github.com/astral-sh/ruff-pre-commit: v0.11.13 → v0.12.0](https://github.com/astral-sh/ruff-pre-commit/compare/v0.11.13...v0.12.0)
- [github.com/pre-commit/mirrors-mypy: v1.16.0 → v1.16.1](https://github.com/pre-commit/mirrors-mypy/compare/v1.16.0...v1.16.1)
- [github.com/python-jsonschema/check-jsonschema: 0.33.0 → 0.33.1](https://github.com/python-jsonschema/check-jsonschema/compare/0.33.0...0.33.1)

* chore: address new lints

Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>

---------

Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Henry Schreiner <henryschreineriii@gmail.com>
2025-06-24 09:48:01 -04:00
Joe Rickerby 5f22145df4 Bump version: v3.0.0 2025-06-11 14:02:58 +01:00
Henry Schreiner 3c5ff09888 Bump version: v3.0.0rc3 2025-06-11 00:57:01 -04:00
Henry Schreiner 2edf578499 Bump version: v3.0.0rc2 2025-06-06 00:05:23 -04:00
Joe Rickerby 31f536bdf3 Bump version: v3.0.0rc1 2025-06-05 11:39:19 +00:00
Henry Schreiner a76b6fc338 Bump version: v3.0.0b5 2025-06-03 02:49:08 -04:00
pre-commit-ci[bot]pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>Henry Schreiner
4aa7d7e9c1 [pre-commit.ci] pre-commit autoupdate (#2440)
* [pre-commit.ci] pre-commit autoupdate

updates:
- [github.com/astral-sh/ruff-pre-commit: v0.11.11 → v0.11.12](https://github.com/astral-sh/ruff-pre-commit/compare/v0.11.11...v0.11.12)
- [github.com/pre-commit/mirrors-mypy: v1.15.0 → v1.16.0](https://github.com/pre-commit/mirrors-mypy/compare/v1.15.0...v1.16.0)

* chore: update some things for checks

Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>

* chore: fully use PEP 639 licensing

Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>

---------

Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Henry Schreiner <henryschreineriii@gmail.com>
2025-06-02 23:36:28 -04:00
Henry Schreinerandpre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> c90accef51 docs: color output for docs (#2407)
* docs: color output for docs

Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>

* fix: use asdf (python-build)

* docs: try to fix colors

Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>

* Update .pre-commit-config.yaml

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

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

---------

Signed-off-by: Henry Schreiner <henryschreineriii@gmail.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-06-01 01:34:20 -04:00
Henry Schreiner cf078b0954 Bump version: v3.0.0b4 2025-05-29 00:27:20 -04:00
Joe Rickerby c41b47f7c2 Bump version: v3.0.0b3 2025-05-28 20:07:38 +01:00
Joe Rickerby 44d6ccfade Merge remote-tracking branch 'origin/main' 2025-05-25 13:04:36 +01:00
Joe Rickerby dded469d60 Bump version: v3.0.0b2 2025-05-25 13:02:14 +01:00