Commit Graph
927 Commits
Author SHA1 Message Date
cibuildwheel-bot[bot]andcibuildwheel-bot[bot] <83877280+cibuildwheel-bot[bot]@users.noreply.github.com> a007eeda0d [Bot] Update dependencies (#2976)
Update dependencies

Co-authored-by: cibuildwheel-bot[bot] <83877280+cibuildwheel-bot[bot]@users.noreply.github.com>
2026-08-28 12:15:55 -04:00
Henry Schreiner 148ea702ac chore: faster and stricter mypy (#2968)
* chore: faster mypy

This makes mypy around 26% faster from a cold cache.

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

* chore: enable more mypy error codes

Turn on possibly-undefined, exhaustive-match, and other strict flags, and
fix what they report. Two real bugs: pyodide never set `repaired_wheel`
when it reused a compatible wheel, so the test step failed with a
NameError; the OCI shell read loop spun forever if the shell exited.

Assisted-by: ClaudeCode:claude-opus-5

* test: carry default OCI runtime into podman vfs test config

Podman ignores its usual config files when CONTAINERS_CONF is set, so it
falls back to the first runtime found on PATH. On current GitHub Ubuntu
runner images that is crun 1.14.1, which cannot parse the OCI spec v1.2.x
config that podman 5.8.4 generates ("crun: unknown version specified").
Query the default runtime path and set it in the generated config.

Assisted-by: ClaudeCode:claude-fable-5

* fix: annotate vfs config dict so mypy passes on Linux

mypy on macOS marks the rest of the function unreachable after the
darwin pytest.skip, so the strict index error only appears on Linux.

Assisted-by: ClaudeCode:claude-fable-5

* chore: minor cleanup of variable name

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

* test: cover container shell exiting during call

Assisted-by: ClaudeCode:claude-opus-5

---------

Signed-off-by: Henry Schreiner <henryfs@princeton.edu>
2026-08-17 19:02:37 -04:00
cibuildwheel-bot[bot]andcibuildwheel-bot[bot] <83877280+cibuildwheel-bot[bot]@users.noreply.github.com> 1928c1bfa5 [Bot] Update dependencies (#2965)
Update dependencies

Co-authored-by: cibuildwheel-bot[bot] <83877280+cibuildwheel-bot[bot]@users.noreply.github.com>
2026-08-10 21:44:01 -04:00
Henry Schreiner 1828c10ab3 Bump version: v4.2.0 2026-08-04 22:23:12 -04:00
cibuildwheel-bot[bot]andcibuildwheel-bot[bot] <83877280+cibuildwheel-bot[bot]@users.noreply.github.com> 3568a1cb9e [Bot] Update dependencies (#2952)
Update dependencies

Co-authored-by: cibuildwheel-bot[bot] <83877280+cibuildwheel-bot[bot]@users.noreply.github.com>
2026-08-04 19:46:48 -04:00
Hood Chathamandpre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> 03cefa35ab feat: add pyodide_315 support (#2958)
* Add pyodide_315 support

Guarded by cpython_prerelease for the moment.

* Update

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

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

* Update constraints to pyodide-build 0.39.0

* Update to 315.0.0a2

* Remove example versions

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2026-08-04 17:41:22 -04:00
Henry Schreiner 4726cd35bb Bump version: v4.1.1 2026-07-24 16:31:06 -04:00
Henry Schreiner b21d76ae03 docs: add missing cp314-pyodide_wasm32 to build-id table (#2947)
* docs: add missing cp314-pyodide_wasm32 to build-id table

The build-id table in docs/options.md is hand-maintained, so a new
identifier can be missed when build-platforms.toml changes. Add a unit
test that checks every identifier appears in the table to guard against
this.

Assisted-by: ClaudeCode:claude-opus-4.8

* test: skip docs table check when docs/options.md is absent

Assisted-by: ClaudeCode:claude-opus-4.8
2026-07-24 14:55:24 -04:00
Henry Schreiner b7cac6dfef fix: don't error when a global build-frontend is set on pyodide (#2945)
Since #2609, the pyodide platform required the 'pyodide-build' frontend,
but a global build-frontend setting (TOML or CIBW_BUILD_FRONTEND)
overrides the platform default, so previously-working configs like
build-frontend = "build" failed with a ConfigurationError. Even
"default" failed, since it was mapped to "build" before the check.

Resolve "default" to the platform default, and warn and use
pyodide-build when another frontend is set on pyodide, matching
pre-#2609 behavior where the frontend name only affected verbosity
flags.

Assisted-by: ClaudeCode:claude-opus-4.8
2026-07-23 11:40:11 -04:00
cibuildwheel-bot[bot]cibuildwheel-bot[bot] <83877280+cibuildwheel-bot[bot]@users.noreply.github.com>Henry Schreinermayeut
17b74206ab [Bot] Update dependencies (#2939)
* Update dependencies

* fix: older pip for graalpy on Windows

The dependency update regenerated the constraints and dropped the pip
hold-back for GraalPy on Windows, where newer pip breaks. Restore the
marker-based pin.

Assisted-by: ClaudeCode:claude-opus-4.8

* ci: keep graalpy pip workaround across dependency bumps

update_constraints now re-applies the GraalPy Windows pip hold-back after
uv pip compile, so the bot no longer wipes it each run. Target only the
Python versions that ship a GraalPy config (3.12), derived from
build-platforms.toml; drop the stale pin from the 3.11 constraints.

Assisted-by: ClaudeCode:claude-opus-4.8

* fix(macos): accept .tar.gz PyPy archives

PyPy switched its macOS downloads from .tar.bz2 to .tar.gz, which tripped
the hard-coded extension assert in install_pypy. Accept both.

Assisted-by: ClaudeCode:claude-opus-4.8

* ci: hold filelock back for graalpy

filelock >=3.30 imports errno.ENOTSUP, which GraalPy lacks, so virtualenv
fails on GraalPy. Hold it at 3.29.4 for GraalPy until the upstream fix
ships (~2026-08), reusing the update_constraints workaround mechanism.

Assisted-by: ClaudeCode:claude-opus-4.8

* ci: bump filelock for graalpy

* revert android cp315 update

see https://github.com/pypa/cibuildwheel/pull/2933#issuecomment-4821042715

---------

Co-authored-by: cibuildwheel-bot[bot] <83877280+cibuildwheel-bot[bot]@users.noreply.github.com>
Co-authored-by: Henry Schreiner <henryfs@princeton.edu>
Co-authored-by: mayeut <mayeut@users.noreply.github.com>
2026-07-21 21:12:27 -04:00
cibuildwheel-bot[bot]cibuildwheel-bot[bot] <83877280+cibuildwheel-bot[bot]@users.noreply.github.com>mayeut
e6eb0f50ed [Bot] Update dependencies (#2935)
* Update dependencies

* Revert pip marker flattening for GraalPy on Windows

* revert android cp315 update

see https://github.com/pypa/cibuildwheel/pull/2933#issuecomment-4821042715

---------

Co-authored-by: cibuildwheel-bot[bot] <83877280+cibuildwheel-bot[bot]@users.noreply.github.com>
Co-authored-by: mayeut <mayeut@users.noreply.github.com>
2026-06-30 09:00:00 -04:00
Agriya Khetarpal 7933323184 Add pyodide-build as a separate build frontend and update its build verbosity handling (#2609) 2026-06-22 00:12:15 +05:30
Agriya Khetarpal 78d8530df9 docs: replace outdated note about build frontend and remove mention of ClearLinux (#2926)
* Remove outdated `pip wheel` note

* Remove ClearLinux reference

* Change Alpine to BSD
2026-06-20 01:31:15 -04:00
Agriya Khetarpal 034e6353e8 Fix quoting of test-requires and audit-requires options for PEP 508 specifiers (#2913) 2026-06-13 06:04:58 +05:30
Joe Rickerby 2947353127 Bump version: v4.1.0 2026-06-12 17:02:22 +01:00
Himanshu Agrawal 01265e5db0 Clarify shell used for command options (#2904) 2026-06-12 14:24:15 +01:00
Mike Evdokimov f4afd95cbc Add FAQ section on caching cibuildwheel's downloaded tools (#2842)
* Add FAQ section on caching cibuildwheel's downloaded tools

Adds a Tips entry covering:

- What cibuildwheel caches (CPython/PyPy installers, virtualenv,
  python-build-standalone archives) and the default per-OS cache folder.
- How to override the cache location with ``CIBW_CACHE_PATH``.
- A worked GitHub Actions example pairing ``actions/cache`` with
  ``CIBW_CACHE_PATH`` so the cache survives between runs.
- A pointer to ``--clean-cache`` for invalidating stale entries.

Closes #1585.

Per @joerick's request in the issue ("a caching section in the FAQ
would be great, if you can contribute it") the scope is intentionally
narrow — just FAQ-level guidance. Platform-specific caching (e.g.
Windows NuGet, addressed in #2839) lives in the platforms doc.

* docs: bump actions/cache v4 to v5

* docs: move cache to runner.temp, add cache poisoning warning (review feedback)
2026-06-12 14:02:09 +01:00
Victorien f3aa1bed4f Fix dead Pyodide env info link, remove mention of alpha ABI (#2911) 2026-06-12 15:29:56 +05:30
Himanshu Agrawal 55c8985c12 docs: clarify environment precedence (#2905) 2026-06-10 09:34:19 -04:00
Henry Schreiner c3e47f896b docs: fix changelog formatting
Updates changelog to reflect changes in CPython 3.15 support and other enhancements.
2026-06-07 15:19:15 -04:00
Henry Schreiner f03ac7617d Bump version: v4.0.0 2026-06-07 14:53:57 -04:00
Henry Schreiner 557c5f65f8 feat: remove GraalPy 3.11 (gp311) support (#2895)
Drops the GraalPy 3.11 / GraalPy 24.2 builds (gp311_242) as agreed in
pypa/cibuildwheel#2741: a ~6-month overlap after the GraalPy 25 (gp312)
release. GraalPy 3.12 (gp312_250) stays.

This also removes the GraalPy 24-only workarounds that were explicitly
marked "Remove when GraalPy 24.x is dropped":
- the Visual Studio compiler-discovery (vswhere) and build-isolation
  (graalpython#491) workarounds in the Windows backend
- the issue-491 Windows skip/filter hacks in test_pep518 and
  test_dependency_versions (added in the original GraalPy PR #1538 and
  unneeded since GraalPy 25 per #2597)

The uv-doesn't-support-graalpy skip (#2754), the `graalpy` enable group,
and the generated constraints pins apply to all GraalPy and are kept.

Assisted-by: ClaudeCode:claude-opus-4.8
2026-06-07 14:24:31 -04:00
Henry Schreiner 866ae74781 docs: fix CUDA manylinux container references in FAQ (#2900)
Noticed by Claude when doing something else.
2026-06-06 10:32:03 -04:00
Philip Hyunsu Cho 785d812a47 docs: add instructions for building CUDA wheels (#2896)
* Add documentation for building CUDA wheels

* Move to Tips section
2026-06-06 08:18:02 -04:00
Henry Schreiner f6bd0477cc Bump version: v4.0.0rc2 2026-06-05 09:26:48 -04:00
cibuildwheel-bot[bot]Matthieu Darboiscibuildwheel-bot[bot] <83877280+cibuildwheel-bot[bot]@users.noreply.github.com>
cdb170b8c6 [Bot] Update dependencies (#2893)
* Update dependencies

* restore pip workaround for graalpy

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

---------

Co-authored-by: cibuildwheel-bot[bot] <83877280+cibuildwheel-bot[bot]@users.noreply.github.com>
Co-authored-by: Matthieu Darbois <mayeut@users.noreply.github.com>
2026-06-05 08:09:34 -04:00
Henry Schreiner 2f49f9a050 fix: minor 4.0 issues in Android validation, docs, and docstring (#2891)
* fix: minor 4.0 issues in android validation, docs, and docstring

- android: raise a clear FatalError when ANDROID_API_LEVEL is not an
  integer, instead of an uncaught ValueError deep in localized_vars
- docs: note that delvewheel is the default Windows repair-wheel-command
  since 4.0 and how to skip it for platform-tagged wheels with no
  extension module; update the now-outdated FAQ wording
- venv: fix _parse_pip_constraint_for_virtualenv docstring to say
  marker-bearing constraints are evaluated against the host's default
  environment (not skipped) when marker_env is None

Assisted-by: ClaudeCode:claude-opus-4.8

* fix: use int() with original error for ANDROID_API_LEVEL validation

Handle ANDROID_API_LEVEL validation via try/except around int() so the
original exception message is surfaced, and so non-ASCII Unicode digits
(which isdigit() accepts but int() may reject) are handled correctly.

Assisted-by: ClaudeCode:claude-opus-4.8

* refactor: address reivew by moving error catch

Assisted-by: ClaudeCode:claude-opus-4.8
Signed-off-by: Henry Schreiner <henryfs@princeton.edu>

---------

Signed-off-by: Henry Schreiner <henryfs@princeton.edu>
2026-06-03 15:23:06 -04:00
cibuildwheel-bot[bot]henryiiicibuildwheel-bot[bot] <83877280+cibuildwheel-bot[bot]@users.noreply.github.com>copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
72b75a45a2 [Bot] Update dependencies (#2882)
* Update dependencies

* Restore GraalPy-specific pip workaround in constraints

Co-authored-by: henryiii <4616906+henryiii@users.noreply.github.com>

---------

Co-authored-by: cibuildwheel-bot[bot] <83877280+cibuildwheel-bot[bot]@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: henryiii <4616906+henryiii@users.noreply.github.com>
2026-06-01 18:27:52 -04:00
Henry SchreinerCopilotcopilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>henryiii
cd38ee1548 feat: add SHA256 verification for direct downloads (#2873)
* feat: add SHA256 verification for direct downloads

Store SHA256 hashes when running update scripts and verify them
when downloading files at build time. This improves security by
detecting unexpected changes to downloaded artifacts.

Platforms covered: macOS (CPython, PyPy, GraalPy), iOS, Android,
virtualenv, and python-build-standalone. Windows (nuget) and
Linux (Docker) are excluded.

SHA256 sources per platform:
- macOS/iOS/Android CPython (python.org): sha256_sum from API
- GraalPy: .sha256 sidecar assets from GitHub releases
- python-build-standalone: SHA256SUMS file in release
- PyPy, BeeWare iOS, Maven (Chaquopy): stream-download and compute

Changes:
- cibuildwheel/util/file.py: add sha256 param to download()
- cibuildwheel/platforms/{macos,ios,android}.py: add sha256 to
  PythonConfiguration and pass to download()
- cibuildwheel/venv.py: read sha256 from toml and pass to download()
- cibuildwheel/util/python_build_standalone.py: add sha256 to
  PythonBuildStandaloneAsset and pass to download()
- cibuildwheel/resources/build-platforms.toml: add sha256 fields
- cibuildwheel/resources/virtualenv.toml: add sha256 field
- cibuildwheel/resources/python-build-standalone-releases.json: add sha256
- bin/update_pythons.py: compute/store sha256 per source strategy
- bin/update_virtualenv.py: compute sha256 by streaming download
- bin/update_python_build_standalone.py: parse SHA256SUMS file

Closes #908

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Assisted-by: copilot-cli:claude-sonnet-4.6

* fix: populate sha256 in resource files and fix Windows PythonConfiguration

- Add sha256 field to Windows PythonConfiguration (PyPy/GraalPy have
  direct download URLs on Windows too)
- Pass sha256 to install_pypy() and install_graalpy() in windows.py
- Fix update_pythons.py: handle empty sha256 from CPython API (older
  versions) by streaming download to compute it; fix condition to
  check 'not sha256' rather than 'not in dict'
- Fix update_virtualenv.py: compute sha256 even when version unchanged
  but sha256 is empty (first-time population)
- Fix update_python_build_standalone.py: resolve file path relative to
  the script itself (not the installed package) so writes go to source
  checkout, not the uv cache
- Populate actual sha256 values by running all three update scripts

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Assisted-by: copilot-cli:claude-sonnet-4.6

* fix: also include pyodide

Assisted-by: CopilotCLI:gpt-5.3-codex
Signed-off-by: Henry Schreiner <henryfs@princeton.edu>

* fix: PR review comments for cache verification and docs wording

Co-authored-by: henryiii <4616906+henryiii@users.noreply.github.com>
Signed-off-by: Henry Schreiner <henryfs@princeton.edu>

* fix: require sha256 for download configs

Require sha256 for URL-backed Python and virtualenv download configs. Update the GraalPy updater to refresh macOS x86_64 entries by selecting the latest release that still has a matching asset, and fill the two missing GraalPy checksums in build-platforms.toml.

Assisted-by: CopilotCLI:gpt-5.4

* ci: remove unit test for bin item

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

* refactor: combine sha256 unit tests into test_sha256.py

Merge pyodide_test.py and python_build_standalone_test.py into a
single unit_test/test_sha256.py since both test sha256-related
behaviour.

Assisted-by: opencode:glm-5

---------

Signed-off-by: Henry Schreiner <henryfs@princeton.edu>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: henryiii <4616906+henryiii@users.noreply.github.com>
2026-05-29 15:02:33 -04:00
Henry Schreiner 322b876891 docs: add delvewheel to diagram, schema defaults, and docs (#2877)
Since delvewheel is now the default repair-wheel-command on Windows,
update all places where auditwheel/delocate were referenced but
delvewheel was missing:

- diagram.html: add delvewheel repair block for Windows (was grouped
  with ios/pyodide as optional dot)
- generate_schema.py: add Windows delvewheel default to the platform
  loop so schema.json includes the default
- schema.json: regenerated with Windows delvewheel default
- options.md: add Windows to defaults list, remove outdated tip about
  delvewheel being early-stage/optional, update examples
- contributing.md: add delvewheel to the tool list

Assisted-by: OpenCode:glm-5.1

Signed-off-by: Henry Schreiner <henryfs@princeton.edu>
2026-05-29 13:51:09 -04:00
CopilothenryiiiHenry Schreinercopilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
b84dd90062 docs: support intersphinx (#2871)
* Initial plan

* Add mkdocs-intersphinx plugin to generate objects.inv for intersphinx linking

Co-authored-by: henryiii <4616906+henryiii@users.noreply.github.com>

* Add options.md comments to schema generator

Co-authored-by: henryiii <4616906+henryiii@users.noreply.github.com>

* Plan intersphinx marker fix

Co-authored-by: henryiii <4616906+henryiii@users.noreply.github.com>

* Add Python 3.12 marker to mkdocs-intersphinx

Co-authored-by: henryiii <4616906+henryiii@users.noreply.github.com>

* Revert schema comment metadata changes

Co-authored-by: henryiii <4616906+henryiii@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: Henry Schreiner <HenrySchreinerIII@gmail.com>

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

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

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: henryiii <4616906+henryiii@users.noreply.github.com>
Co-authored-by: Henry Schreiner <HenrySchreinerIII@gmail.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2026-05-29 13:22:53 -04:00
Henry SchreinerandCopilot 80d5810e2a feat: add CIBUILDWHEEL_BUILD_IDENTIFIER environment variable (#2872)
* feat: add CIBUILDWHEEL_BUILD_IDENTIFIER environment variable

Set `CIBUILDWHEEL_BUILD_IDENTIFIER` to the current build identifier
(e.g. `cp311-manylinux_x86_64`) in the environment for all per-build
steps: `before_build`, the build itself, `repair_command`,
`before_test`, and `test_command`.

This allows scripts and commands to inspect which build is currently
running, which is useful for e.g. writing per-build output files:

    CIBW_TEST_COMMAND='pytest --junit-xml=results-$CIBUILDWHEEL_BUILD_IDENTIFIER.xml'

The variable is set after the user's environment overrides are applied
and is only available for per-build steps (not `before_all`, where no
single identifier applies). All six platforms are covered: linux, macOS,
Windows, pyodide, Android, and iOS.

Closes #944, closes #2750

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Assisted-by: OpenCode:claude-sonnet-4.6

* fix: address review comment moving this for Android

Assisted-by: OpenCode:glm-5.1
Signed-off-by: Henry Schreiner <henryfs@princeton.edu>

---------

Signed-off-by: Henry Schreiner <henryfs@princeton.edu>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-29 00:28:20 -04:00
1cf64d0d3c feat: Android improvements needed for building NumPy and related packages (#2695)
* Use auditwheel on Android

* Add auditwheel command to defaults

* pkgconfig fixes

* Pre-import ctypes before monkey-patching in _cross_venv

* Set PKG_CONFIG and PKG_CONFIG_RELOCATE_PATHS variables

* Initial attempt at using mzakharo/android-gfortran

* Switch to using termux/ndk-toolchain-clang-with-flang

* Move PKG_CONFIG variables from build_env to android_env

* Simplify flang installation

* Add cross build files for NumPy

* Add ldpaths entry for libomp

* Add `--rm` to docker command line

* Make Rust and Fortran shims consistent

* Update documentation

* Default to API level 24 on all Python versions

* Clarify comments

* Cleanups

* Fix tests:
* Set up Android env after installing pkgconf
* Add tests for successfully using an older API level
* Previous commit's auditwheel failure is fixed in the auditwheel PR

* Update how-it-works diagram

* Add tests for repair errors

* Add more repair tests

* Add test for Meson and Fortran

* Add test for cross build files

* Improve test_api_level error message

* Add xbuild-files option

* use pypa/auditwheel@main

* Remove dependencies which are no longer needed

* Fix README

* Update to auditwheel 6.7.0

* Fix compatibility with pkgconf 2.5.1.post2

* Documentation clarifications

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

* Fortran shim improvements

* Add Jinja variables to new_meson_project

* Update run_example_ci_configs for changed new_meson_project signature

* Add missing dependency to run_example_ci_configs

---------

Co-authored-by: mayeut <mayeut@users.noreply.github.com>
Co-authored-by: Joe Rickerby <joerick@mac.com>
2026-05-29 00:27:28 -04:00
cibuildwheel-bot[bot]cibuildwheel-bot[bot] <83877280+cibuildwheel-bot[bot]@users.noreply.github.com>mayeut
8286363b4d [Bot] Update dependencies (#2868)
* Update dependencies

* Revert pip marker flattening for GraalPy 3.11 on Windows

* Revert pip marker flattening for GraalPy 3.12 on Windows

---------

Co-authored-by: cibuildwheel-bot[bot] <83877280+cibuildwheel-bot[bot]@users.noreply.github.com>
Co-authored-by: mayeut <mayeut@users.noreply.github.com>
2026-05-26 06:27:17 +02:00
cibuildwheel-bot[bot]henryiiicibuildwheel-bot[bot] <83877280+cibuildwheel-bot[bot]@users.noreply.github.com>copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
525f538878 [Bot] Update dependencies (#2862)
* Update dependencies

* Revert pip marker flattening for GraalPy on Windows

Agent-Logs-Url: https://github.com/pypa/cibuildwheel/sessions/a34e363b-219c-487f-8e2e-a1fe4ad5d768

Co-authored-by: henryiii <4616906+henryiii@users.noreply.github.com>

---------

Co-authored-by: cibuildwheel-bot[bot] <83877280+cibuildwheel-bot[bot]@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: henryiii <4616906+henryiii@users.noreply.github.com>
2026-05-18 16:47:31 -07:00
Henry Schreiner 02b64875a0 docs: remove outdated numpy info (#2855)
Signed-off-by: Henry Schreiner <henryfs@princeton.edu>
2026-05-15 16:08:44 +05:30
Henry Schreiner 54327ab9d3 Bump version: v4.0.0rc1 2026-05-14 08:58:13 -07:00
79244d366c feet: general approach to auditing wheels with abi3audit default (#2805)
* WIP - initial punt at audit command

* Add `abi3audit` as a dependency

* Add helper functions to check stable ABI wheels

* Run `abi3audit` for macOS and Windows wheels

* Copy out of container for repairing?

* Add some notes that `cibuildwheel` runs `abi3audit`

* Add basic unit tests

* Add a basic C extension with `Py_LIMITED_API`

* Add a test project that violates Stable ABI

* Fix linux test

* Skip abi3 wheel tests for Pyodide

* Patch the correct subprocess module

* wrap cleanup of abi3audit dir

* Write the docs for the new options

* Move to above testing in docs

* Implement audit-requires and audit-command

* Some cleanups after self-review

* Add default value

* fix type errors

* the key is `audit-command`, not `audit`

* Add a variety of tests for audit requires options

* Add `test_audit_requires` similar to `test_test_requires`

* Add some configurability-related audit tests

* Fix parsing error with options docs leaving out commands

* Better way to extract version (maybe helps Pyodide?)

* Fix a case of unbound `use_uv`

* Standardise: rename to `abi3_wheel`

* Fix audit command run message

* Simplify custom audit command a bit

* Remove unnecessary skip for Pyodide

* Pyodide should have no default audit command

* More accurate skip messages for Pyodide skips

* Wheels are audited after they are repaired

* Regenerate constraints to include `abi3audit`

* Fix typos

* Some attempts for Windows fixes

* Check `pyvenv.cfg` instead of directory existence

* Add validation for lack of wheel placeholders

* Try yet another Windows `uv` fix

* Regenerate diagram and re-trigger Azure CI

* Add missing `import sys` for abi3 C extension tests

* Remove audit-command at the global level

* Clarify `abi3audit` pinning a little bit

* Regen constraints

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

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

* try opt-in uv again

* fix issue on windows on Python 3.13 related to nested venvs

On win / python 3.13, virtualenv creates a venv where the 'home'
points back to the venv that sys.executable was running in, rather
than the root install. that seemingly leads to problems with package
resolution, where pip.exe couldn't find the pip python package.
this appears to fix it!

* Update constraints

* chore: revert python-discovery bump

Assisted-by: OpenCode:glm-5.1
Signed-off-by: Henry Schreiner <henryfs@princeton.edu>

* fix: restore workaround for graalpy

Assisted-by: OpenCode:glm-5.1
Signed-off-by: Henry Schreiner <henryfs@princeton.edu>

---------

Signed-off-by: Henry Schreiner <henryfs@princeton.edu>
Co-authored-by: Agriya Khetarpal <74401230+agriyakhetarpal@users.noreply.github.com>
Co-authored-by: Henry Schreiner <henryfs@princeton.edu>
2026-05-14 07:41:14 -07:00
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
cibuildwheel-bot[bot]cibuildwheel-bot[bot] <83877280+cibuildwheel-bot[bot]@users.noreply.github.com>Henry Schreinerpre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
ec0977e5f6 [Bot] Update dependencies (#2845)
* Update dependencies

* fix: revert pip upgrade on graalpy for now

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

* fix: older pip for graalpy on Windows

Assisted-by: OpenCode:glm-5.1
Signed-off-by: Henry Schreiner <henryfs@princeton.edu>

---------

Signed-off-by: Henry Schreiner <henryfs@princeton.edu>
Co-authored-by: cibuildwheel-bot[bot] <83877280+cibuildwheel-bot[bot]@users.noreply.github.com>
Co-authored-by: Henry Schreiner <henryfs@princeton.edu>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2026-05-12 21:59:10 -04:00
Matthieu Darbois 3617733645 feat: add CPython 3.15 beta 1 (#2833) 2026-05-11 13:35:40 -04:00
Matthieu Darbois 8bdb703302 break: drop Python 3.8 (#2686) 2026-05-10 21:19:36 -04:00
Henry Schreinerandagriya khetarpal cbef1e8b89 feat: config settings placeholders (#2827)
* feat: config settings placeholders

Assisted-by: Copilot:GPT-5.4
Signed-off-by: Henry Schreiner <henryfs@princeton.edu>

* Update docs/options.md

Co-authored-by: agriya khetarpal <74401230+agriyakhetarpal@users.noreply.github.com>

---------

Signed-off-by: Henry Schreiner <henryfs@princeton.edu>
Co-authored-by: agriya khetarpal <74401230+agriyakhetarpal@users.noreply.github.com>
2026-05-09 14:11:40 -04:00
d2c0e59833 feat: pyemscripten platform tag (PEP 783), 314.0a1, pyodide-eol flag, and maintenance updates (#2812)
* Use `pyodide config get emscripten_dir`

* Update constraints

* Updates for `pyemscripten` platform tag

* Weird constraints stuff...

* Revert "Weird constraints stuff..."

This reverts commit 4bd785de872269c0b27362ee800f17288b2b4789.

* Add some special constraints for pyodide

* Wheel pyemscripten collision

* Put delocate back in constraints (not needed tho)

* Drop Pyodide 0.27.7 (cp312-pyodide_wasm32)

* Add Pyodide 314.0.0a1 (cp314-pyodide_wasm32)

* Delete no-longer-needed Pyodide 312 constraints

* Update Pyodide 313 and 314 constraints

* Add back prerelease stuff and update tests

* Fix `test_pyodide_on_windows`

* Update and fix tests some more

* Also enable pyodide-prerelease in GHA sample build

* Update tests yet again (`SINGLE_PYTHON_VERSION` changes)

* Add a Pyodide-specific maintenance guide

* Add suggestions from Hood and Gyeongjae

Co-Authored-By: Hood Chatham <roberthoodchatham@gmail.com>
Co-Authored-By: Gyeongjae Choi <def6488@gmail.com>

* Add "Last updated: May 2026" to Pyodide document

* Add a Pyodide EOL filter

* Fix typo

* Update maintenance docs about EoL Pyodide

* Add Pyodide 312 constraints back

* Update Pyodide 313 and 314 constraints

* Remove "experimental" note about Pyodide

* Remove another experimental Pyodide sentence

* Add docs about the `pyodide-eol` enable option

---------

Co-authored-by: Hood Chatham <roberthoodchatham@gmail.com>
Co-authored-by: Gyeongjae Choi <def6488@gmail.com>
Co-authored-by: Henry Schreiner <henryfs@princeton.edu>
2026-05-09 14:01:41 -04:00
Matthieu Darbois 542335fb4a feat: drop python3.13t (#2684)
* break: remove cp313t

* break: drop unused cpython-freethreading enable option

* update message
2026-05-09 10:59:24 -04:00
Matthieu Darboisandcibuildwheel-bot[bot] <83877280+cibuildwheel-bot[bot]@users.noreply.github.com> b425e9d2a7 [Bot] Update dependencies (#2837)
* Update dependencies

* revert pyodide changes

they will be handled in #2812

* revert pip & virtualenv updates

---------

Co-authored-by: cibuildwheel-bot[bot] <83877280+cibuildwheel-bot[bot]@users.noreply.github.com>
2026-05-05 22:00:16 +02:00
d593457f60 Document platform-specific before-build config (#2834)
* Document platform-specific before-build config

* Update docs/options.md

Co-authored-by: agriya khetarpal <74401230+agriyakhetarpal@users.noreply.github.com>

* Align before-build examples across config formats

---------

Co-authored-by: Henry Schreiner <HenrySchreinerIII@gmail.com>
Co-authored-by: agriya khetarpal <74401230+agriyakhetarpal@users.noreply.github.com>
2026-05-04 16:08:55 -04:00
cibuildwheel-bot[bot]cibuildwheel-bot[bot] <83877280+cibuildwheel-bot[bot]@users.noreply.github.com>Malcolm Smithmayeut
32b0ccc560 [Bot] Update dependencies (#2818)
* Update dependencies

* revert pyodide changes

those will be handled in #2812

---------

Co-authored-by: cibuildwheel-bot[bot] <83877280+cibuildwheel-bot[bot]@users.noreply.github.com>
Co-authored-by: Malcolm Smith <smith@chaquo.com>
Co-authored-by: mayeut <mayeut@users.noreply.github.com>
2026-04-15 07:45:31 -04:00
1d5d9be23f docs: update "How it works" diagram with details of Android, iOS, and Pyodide builds (#2816)
* Update diagram with details of Android, iOS, and Pyodide builds

* Update diagram as well

* Simplify

Co-Authored-By: Malcolm Smith <smith@chaquo.com>

* Improve WCAG for some text elements

* Update diagram snapshot

* Modernise image generation script and rerun

---------

Co-authored-by: Malcolm Smith <smith@chaquo.com>
Co-authored-by: Joe Rickerby <joerick@mac.com>
2026-04-10 13:09:28 -04:00
Henry Schreiner a42e5d3563 fix: drop Cirrus CI (going away June 1, 2026) (#2817)
* fix: drop Cirrus CI (going away June 1, 2026)

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

* Restore missing note

* Update CI services documentation for Cirrus CI

Removed official support for Cirrus CI due to end-of-life.

---------

Signed-off-by: Henry Schreiner <henryfs@princeton.edu>
2026-04-10 13:08:09 -04:00