cibuildwheel 4.1.0__tar.gz → 4.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (236) hide show
  1. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/.github/workflows/copilot-setup-steps.yml +3 -3
  2. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/.github/workflows/release.yml +3 -3
  3. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/.github/workflows/test.yml +32 -25
  4. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/.github/workflows/update-dependencies.yml +3 -2
  5. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/.github/workflows/update-major-minor-tag.yml +1 -1
  6. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/.github/workflows/zizmor.yml +2 -2
  7. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/.gitignore +1 -0
  8. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/.pre-commit-config.yaml +3 -4
  9. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/.readthedocs.yml +1 -1
  10. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/AGENTS.md +2 -2
  11. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/PKG-INFO +54 -37
  12. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/README.md +53 -36
  13. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/action.yml +1 -1
  14. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/azure-pipelines.yml +1 -1
  15. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/bin/generate_schema.py +54 -24
  16. cibuildwheel-4.2.0/bin/update_docker.py +201 -0
  17. cibuildwheel-4.2.0/cibuildwheel/__init__.py +1 -0
  18. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/architecture.py +20 -4
  19. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/frontend.py +6 -1
  20. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/options.py +28 -10
  21. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/platforms/android.py +5 -7
  22. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/platforms/ios.py +7 -1
  23. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/platforms/linux.py +3 -0
  24. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/platforms/macos.py +16 -9
  25. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/platforms/pyodide.py +35 -5
  26. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/platforms/windows.py +7 -1
  27. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/resources/build-platforms.toml +53 -52
  28. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/resources/cibuildwheel.schema.json +105 -10
  29. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/resources/constraints-pyodide312.txt +22 -27
  30. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/resources/constraints-pyodide313.txt +22 -27
  31. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/resources/constraints-pyodide314.txt +22 -27
  32. cibuildwheel-4.2.0/cibuildwheel/resources/constraints-pyodide315.txt +86 -0
  33. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/resources/constraints-python310.txt +12 -13
  34. cibuildwheel-4.2.0/cibuildwheel/resources/constraints-python311.txt +94 -0
  35. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/resources/constraints-python312.txt +14 -13
  36. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/resources/constraints-python313.txt +12 -13
  37. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/resources/constraints-python314.txt +12 -13
  38. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/resources/constraints-python315.txt +12 -13
  39. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/resources/constraints-python39.txt +6 -7
  40. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/resources/constraints.txt +12 -13
  41. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/resources/defaults.toml +1 -0
  42. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/resources/nodejs.toml +2 -2
  43. cibuildwheel-4.2.0/cibuildwheel/resources/pinned_docker_images.cfg +54 -0
  44. cibuildwheel-4.2.0/cibuildwheel/resources/python-build-standalone-releases.json +904 -0
  45. cibuildwheel-4.2.0/cibuildwheel/resources/virtualenv.toml +1 -0
  46. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/selector.py +1 -14
  47. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/util/file.py +11 -2
  48. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/util/resources.py +4 -1
  49. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/venv.py +13 -1
  50. cibuildwheel-4.2.0/docs/_internal/pyodide-maintenance.md +109 -0
  51. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/docs/changelog.md +36 -0
  52. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/docs/faq.md +3 -3
  53. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/docs/options.md +27 -17
  54. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/docs/platforms.md +5 -0
  55. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/examples/azure-pipelines-minimal.yml +3 -3
  56. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/examples/circleci-minimal.yml +3 -3
  57. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/examples/github-deploy.yml +1 -1
  58. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/examples/github-minimal.yml +1 -1
  59. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/examples/github-pipx.yml +1 -1
  60. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/examples/github-with-qemu.yml +1 -1
  61. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/examples/gitlab-minimal.yml +3 -3
  62. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/examples/gitlab-with-qemu.yml +1 -1
  63. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/noxfile.py +63 -2
  64. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/pyproject.toml +3 -2
  65. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/test/conftest.py +64 -27
  66. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/test/test_abi_variants.py +3 -3
  67. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/test/test_android.py +6 -2
  68. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/test/test_before_build.py +1 -1
  69. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/test/test_build_frontend_args.py +13 -3
  70. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/test/test_container_engine.py +7 -1
  71. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/test/test_environment.py +0 -60
  72. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/test/test_pyodide.py +6 -2
  73. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/test/utils.py +13 -9
  74. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/unit_test/architecture_test.py +31 -0
  75. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/unit_test/build_ids_test.py +18 -0
  76. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/unit_test/build_selector_test.py +4 -11
  77. cibuildwheel-4.2.0/unit_test/download_test.py +172 -0
  78. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/unit_test/linux_build_steps_test.py +4 -2
  79. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/unit_test/main_tests/main_options_test.py +11 -11
  80. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/unit_test/option_prepare_test.py +5 -1
  81. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/unit_test/options_test.py +213 -2
  82. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/unit_test/validate_schema_test.py +59 -0
  83. cibuildwheel-4.2.0/unit_test/venv_test.py +60 -0
  84. cibuildwheel-4.1.0/bin/update_docker.py +0 -153
  85. cibuildwheel-4.1.0/cibuildwheel/__init__.py +0 -1
  86. cibuildwheel-4.1.0/cibuildwheel/resources/android/android.patch +0 -11
  87. cibuildwheel-4.1.0/cibuildwheel/resources/constraints-python311.txt +0 -96
  88. cibuildwheel-4.1.0/cibuildwheel/resources/pinned_docker_images.cfg +0 -54
  89. cibuildwheel-4.1.0/cibuildwheel/resources/python-build-standalone-releases.json +0 -904
  90. cibuildwheel-4.1.0/cibuildwheel/resources/virtualenv.toml +0 -1
  91. cibuildwheel-4.1.0/docs/_internal/pyodide-maintenance.md +0 -113
  92. cibuildwheel-4.1.0/unit_test/download_test.py +0 -37
  93. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/.agents/skills/changelog-entry/SKILL.md +0 -0
  94. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/.circleci/config.yml +0 -0
  95. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/.circleci/prepare.sh +0 -0
  96. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/.editorconfig +0 -0
  97. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/.gitattributes +0 -0
  98. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/.github/CODEOWNERS +0 -0
  99. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  100. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/.github/dependabot.yml +0 -0
  101. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/.gitlab-ci.yml +0 -0
  102. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/CI.md +0 -0
  103. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/LICENSE +0 -0
  104. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/bin/bump_version.py +0 -0
  105. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/bin/generate_pyodide_constraints.py +0 -0
  106. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/bin/inspect_all_known_projects.py +0 -0
  107. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/bin/make_dependency_update_pr.py +0 -0
  108. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/bin/projects.py +0 -0
  109. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/bin/readme_changelog.py +0 -0
  110. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/bin/readme_options_table.py +0 -0
  111. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/bin/run_example_ci_configs.py +0 -0
  112. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/bin/run_tests.py +0 -0
  113. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/bin/sample_build.py +0 -0
  114. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/bin/update_how_it_works_image.py +0 -0
  115. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/bin/update_nodejs.py +0 -0
  116. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/bin/update_python_build_standalone.py +0 -0
  117. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/bin/update_pythons.py +0 -0
  118. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/bin/update_virtualenv.py +0 -0
  119. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/__main__.py +0 -0
  120. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/_compat/__init__.py +0 -0
  121. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/_compat/tarfile.py +0 -0
  122. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/audit.py +0 -0
  123. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/bashlex_eval.py +0 -0
  124. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/ci.py +0 -0
  125. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/environment.py +0 -0
  126. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/errors.py +0 -0
  127. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/extra.py +0 -0
  128. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/logger.py +0 -0
  129. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/oci_container.py +0 -0
  130. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/platforms/__init__.py +0 -0
  131. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/projectfiles.py +0 -0
  132. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/py.typed +0 -0
  133. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/resources/android/_cross_venv.pth +0 -0
  134. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/resources/android/_cross_venv.py +0 -0
  135. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/resources/android/fortran_shim.py +0 -0
  136. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/resources/android/rust_shim.py +0 -0
  137. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/resources/constraints.in +0 -0
  138. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/resources/free-threaded-enable-314.xml +0 -0
  139. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/resources/free-threaded-enable-315.xml +0 -0
  140. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/resources/install_certifi.py +0 -0
  141. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/resources/ios-support/_cross_venv.py +0 -0
  142. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/resources/ios-support/arm64-iphoneos/_cross_arm64_iphoneos.py +0 -0
  143. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/resources/ios-support/arm64-iphoneos/sitecustomize.py +0 -0
  144. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/resources/ios-support/arm64-iphonesimulator/_cross_arm64_iphonesimulator.py +0 -0
  145. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/resources/ios-support/arm64-iphonesimulator/sitecustomize.py +0 -0
  146. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/resources/ios-support/make_cross_venv.py +0 -0
  147. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/resources/ios-support/x86_64-iphonesimulator/_cross_x86_64_iphonesimulator.py +0 -0
  148. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/resources/ios-support/x86_64-iphonesimulator/sitecustomize.py +0 -0
  149. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/resources/testing_temp_dir_file.py +0 -0
  150. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/schema.py +0 -0
  151. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/typing.py +0 -0
  152. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/util/__init__.py +0 -0
  153. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/util/cmd.py +0 -0
  154. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/util/helpers.py +0 -0
  155. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/util/packaging.py +0 -0
  156. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/cibuildwheel/util/python_build_standalone.py +0 -0
  157. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/docs/ci-services.md +0 -0
  158. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/docs/configuration.md +0 -0
  159. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/docs/contributing.md +0 -0
  160. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/docs/cpp_standards.md +0 -0
  161. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/docs/data/how-it-works.png +0 -0
  162. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/docs/data/projects.schema.json +0 -0
  163. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/docs/data/projects.yml +0 -0
  164. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/docs/data/readme_icons/android.svg +0 -0
  165. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/docs/data/readme_icons/apple.svg +0 -0
  166. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/docs/data/readme_icons/azurepipelines.svg +0 -0
  167. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/docs/data/readme_icons/circleci.svg +0 -0
  168. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/docs/data/readme_icons/github.svg +0 -0
  169. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/docs/data/readme_icons/gitlab.svg +0 -0
  170. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/docs/data/readme_icons/ios.svg +0 -0
  171. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/docs/data/readme_icons/linux.svg +0 -0
  172. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/docs/data/readme_icons/pyodide.svg +0 -0
  173. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/docs/data/readme_icons/travisci.svg +0 -0
  174. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/docs/data/readme_icons/windows.svg +0 -0
  175. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/docs/deliver-to-pypi.md +0 -0
  176. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/docs/diagram.html +0 -0
  177. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/docs/extra.css +0 -0
  178. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/docs/extra.js +0 -0
  179. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/docs/index.md +0 -0
  180. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/docs/main.py +0 -0
  181. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/docs/setup.md +0 -0
  182. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/docs/theme_overrides/js/theme.js +0 -0
  183. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/docs/working-examples.md +20 -20
  184. /cibuildwheel-4.1.0/mkdocs.yml → /cibuildwheel-4.2.0/properdocs.yml +0 -0
  185. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/test/README.md +0 -0
  186. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/test/__init__.py +0 -0
  187. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/test/_cross_venv_test_android.py +0 -0
  188. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/test/test_0_basic.py +0 -0
  189. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/test/test_abi3audit.py +0 -0
  190. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/test/test_before_all.py +0 -0
  191. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/test/test_before_test.py +0 -0
  192. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/test/test_build_skip.py +0 -0
  193. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/test/test_container_images.py +0 -0
  194. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/test/test_cpp_standards.py +0 -0
  195. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/test/test_custom_repair_wheel.py +0 -0
  196. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/test/test_dependency_versions.py +0 -0
  197. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/test/test_emulation.py +0 -0
  198. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/test/test_from_sdist.py +0 -0
  199. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/test/test_ios.py +0 -0
  200. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/test/test_linux_python.py +0 -0
  201. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/test/test_macos_archs.py +0 -0
  202. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/test/test_manylinuxXXXX_only.py +0 -0
  203. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/test/test_meson_python.py +0 -0
  204. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/test/test_musllinux_X_Y_only.py +0 -0
  205. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/test/test_pep518.py +0 -0
  206. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/test/test_projects/__init__.py +0 -0
  207. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/test/test_projects/__main__.py +0 -0
  208. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/test/test_projects/base.py +0 -0
  209. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/test/test_projects/c.py +0 -0
  210. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/test/test_projects/meson.py +0 -0
  211. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/test/test_projects/setuptools.py +0 -0
  212. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/test/test_pure_wheel.py +0 -0
  213. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/test/test_ssl.py +0 -0
  214. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/test/test_subdir_package.py +0 -0
  215. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/test/test_testing.py +0 -0
  216. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/test/test_troubleshooting.py +0 -0
  217. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/test/test_wheel_tag.py +0 -0
  218. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/test/test_windows.py +0 -0
  219. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/unit_test/__init__.py +0 -0
  220. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/unit_test/audit_test.py +0 -0
  221. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/unit_test/conftest.py +0 -0
  222. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/unit_test/dependency_constraints_test.py +0 -0
  223. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/unit_test/environment_test.py +0 -0
  224. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/unit_test/get_platform_test.py +0 -0
  225. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/unit_test/main_commands_test.py +0 -0
  226. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/unit_test/main_tests/__init__.py +0 -0
  227. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/unit_test/main_tests/conftest.py +0 -0
  228. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/unit_test/main_tests/main_platform_test.py +0 -0
  229. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/unit_test/main_tests/main_requires_python_test.py +0 -0
  230. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/unit_test/oci_container_test.py +0 -0
  231. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/unit_test/options_toml_test.py +0 -0
  232. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/unit_test/projectfiles_test.py +0 -0
  233. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/unit_test/python_build_standalone_test.py +0 -0
  234. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/unit_test/test_sha256.py +0 -0
  235. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/unit_test/utils_test.py +0 -0
  236. {cibuildwheel-4.1.0 → cibuildwheel-4.2.0}/unit_test/wheel_print_test.py +0 -0
@@ -19,16 +19,16 @@ jobs:
19
19
  contents: read
20
20
 
21
21
  steps:
22
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
22
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
23
23
  with:
24
24
  persist-credentials: false
25
25
 
26
- - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
26
+ - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
27
27
  with:
28
28
  python-version: "3.x"
29
29
  allow-prereleases: true
30
30
 
31
- - uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
31
+ - uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
32
32
 
33
33
  - name: Install tooling
34
34
  run: |
@@ -13,7 +13,7 @@ jobs:
13
13
  dist:
14
14
  runs-on: ubuntu-latest
15
15
  steps:
16
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
16
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
17
17
  with:
18
18
  persist-credentials: false
19
19
 
@@ -37,10 +37,10 @@ jobs:
37
37
  path: dist
38
38
 
39
39
  - name: Generate artifact attestation for sdist and wheel
40
- uses: actions/attest-build-provenance@a2bbfa25375fe432b6a289bc6b6cd05ecd0c4c32 # v4.1.0
40
+ uses: actions/attest-build-provenance@0f67c3f4856b2e3261c31976d6725780e5e4c373 # v4.1.1
41
41
  with:
42
42
  subject-path: "dist/cibuildwheel-*"
43
43
 
44
- - uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b # v1.14.0
44
+ - uses: pypa/gh-action-pypi-publish@ba38be9e461d3875417946c167d0b5f3d385a247 # v1.14.1
45
45
  with:
46
46
  attestations: true
@@ -23,7 +23,7 @@ on:
23
23
  - .travis.yml
24
24
  - README.md
25
25
  - azure-pipelines.yml
26
- - mkdocs.yml
26
+ - properdocs.yml
27
27
  - noxfile.py
28
28
  workflow_dispatch:
29
29
  # allow manual runs on branches without a PR
@@ -34,19 +34,23 @@ concurrency:
34
34
  group: test-${{ github.ref }}
35
35
  cancel-in-progress: true
36
36
 
37
+ env:
38
+ # runners see short DNS/network outages; uv's default of 3 retries is too few
39
+ UV_HTTP_RETRIES: "6"
40
+
37
41
  jobs:
38
42
  lint:
39
43
  name: Linters (mypy, ruff, etc.)
40
44
  runs-on: ubuntu-latest
41
45
  steps:
42
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
46
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
43
47
  with:
44
48
  persist-credentials: false
45
- - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
49
+ - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
46
50
  with:
47
51
  python-version: "3.x"
48
- - uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
49
- - uses: j178/prek-action@bdca6f102f98e2b4c7029491a53dfd366469e33d # v2.0.4
52
+ - uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
53
+ - uses: j178/prek-action@5337cb91e0fa35a7ff31b9ca345126d8bbbcdf16 # v2.0.6
50
54
  - name: PyLint checks
51
55
  run: uvx nox -s pylint -- --output-format=github
52
56
 
@@ -55,14 +59,14 @@ jobs:
55
59
  needs: lint
56
60
  runs-on: ubuntu-latest
57
61
  steps:
58
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
62
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
59
63
  with:
60
64
  persist-credentials: false
61
- - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
65
+ - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
62
66
  name: Install Python
63
67
  with:
64
68
  python-version: "3.x"
65
- - uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
69
+ - uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
66
70
  - name: Install dependencies
67
71
  run: uv sync --no-dev --group test
68
72
  - name: Generate a sample project
@@ -117,16 +121,16 @@ jobs:
117
121
  test_select: android
118
122
  timeout-minutes: 180
119
123
  steps:
120
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
124
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
121
125
  with:
122
126
  persist-credentials: false
123
- - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
127
+ - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
124
128
  name: Install Python ${{ matrix.python_version }}
125
129
  with:
126
130
  python-version: ${{ matrix.python_version }}
127
131
  allow-prereleases: true
128
132
 
129
- - uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
133
+ - uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
130
134
 
131
135
  - name: Free up disk space
132
136
  if: runner.os == 'Linux' && matrix.test_select != 'android'
@@ -139,7 +143,7 @@ jobs:
139
143
  # for oci_container unit tests
140
144
  - name: Set up QEMU
141
145
  if: runner.os == 'Linux'
142
- uses: docker/setup-qemu-action@06116385d9baf250c9f4dcb4858b16962ea869c3 # v4.1.0
146
+ uses: docker/setup-qemu-action@96fe6ef7f33517b61c61be40b68a1882f3264fb8 # v4.2.0
143
147
 
144
148
  - name: Set up Xcode
145
149
  if: ${{ startsWith(matrix.os, 'macos-15') }}
@@ -168,6 +172,9 @@ jobs:
168
172
  if [[ -n "$GITHUB_PR_LABEL_CI_GRAALPY" ]]; then
169
173
  CIBW_ENABLE+=" graalpy"
170
174
  fi
175
+ if [[ -n "$GITHUB_PR_LABEL_CI_PYPY_EOL" ]]; then
176
+ CIBW_ENABLE+=" pypy-eol"
177
+ fi
171
178
  fi
172
179
  echo "CIBW_ENABLE=${CIBW_ENABLE}" >> $GITHUB_ENV
173
180
 
@@ -247,13 +254,13 @@ jobs:
247
254
  outputs:
248
255
  archs: ${{ steps.archs.outputs.archs }}
249
256
  steps:
250
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
257
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
251
258
  with:
252
259
  persist-credentials: false
253
- - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
260
+ - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
254
261
  with:
255
262
  python-version: "3.x"
256
- - uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
263
+ - uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
257
264
  - name: Install dependencies
258
265
  run: uv sync --no-dev --group test
259
266
  - name: Get qemu emulated architectures
@@ -272,18 +279,18 @@ jobs:
272
279
  matrix:
273
280
  arch: ${{ fromJSON(needs.emulated-archs.outputs.archs) }}
274
281
  steps:
275
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
282
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
276
283
  with:
277
284
  persist-credentials: false
278
- - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
285
+ - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
279
286
  with:
280
287
  python-version: "3.x"
281
- - uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
288
+ - uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
282
289
  - name: Install dependencies
283
290
  run: uv sync --no-dev --group test
284
291
 
285
292
  - name: Set up QEMU
286
- uses: docker/setup-qemu-action@06116385d9baf250c9f4dcb4858b16962ea869c3 # v4.1.0
293
+ uses: docker/setup-qemu-action@96fe6ef7f33517b61c61be40b68a1882f3264fb8 # v4.2.0
287
294
 
288
295
  - name: Run the emulation tests
289
296
  env:
@@ -296,14 +303,14 @@ jobs:
296
303
  runs-on: ubuntu-24.04
297
304
  timeout-minutes: 180
298
305
  steps:
299
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
306
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
300
307
  with:
301
308
  persist-credentials: false
302
- - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
309
+ - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
303
310
  name: Install Python 3.12
304
311
  with:
305
312
  python-version: '3.12'
306
- - uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
313
+ - uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
307
314
 
308
315
  - name: Install dependencies
309
316
  run: uv sync --no-dev --group test
@@ -321,13 +328,13 @@ jobs:
321
328
  output-dir: wheelhouse
322
329
  env:
323
330
  CIBW_PLATFORM: pyodide
324
- CIBW_ENABLE: pyodide-prerelease
331
+ CIBW_ENABLE: cpython-prerelease
325
332
 
326
333
  - name: Run tests with 'CIBW_PLATFORM' set to 'pyodide'
327
334
  run: uv run --no-sync ./bin/run_tests.py
328
335
  env:
329
336
  CIBW_PLATFORM: pyodide
330
- CIBW_ENABLE: pyodide-prerelease
337
+ CIBW_ENABLE: cpython-prerelease
331
338
 
332
339
  test-uv-extras:
333
340
  name: Test uv extra on ${{ matrix.os }} ${{ matrix.test_select }}
@@ -348,7 +355,7 @@ jobs:
348
355
  - os: macos-15
349
356
  test_select: android
350
357
  steps:
351
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
358
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
352
359
  with:
353
360
  persist-credentials: false
354
361
  - name: Download a sample project
@@ -37,11 +37,11 @@ jobs:
37
37
  permission-contents: write
38
38
  permission-pull-requests: write
39
39
 
40
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
40
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
41
41
  with:
42
42
  persist-credentials: false
43
43
 
44
- - uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
44
+ - uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
45
45
  with:
46
46
  python-version: "3.14"
47
47
 
@@ -69,4 +69,5 @@ jobs:
69
69
  labels: |
70
70
  CI: GraalPy
71
71
  CI: PyPy
72
+ CI: PyPy EoL
72
73
  dependencies
@@ -21,7 +21,7 @@ jobs:
21
21
  permissions:
22
22
  contents: write
23
23
  steps:
24
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
24
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
25
25
  with:
26
26
  persist-credentials: false
27
27
 
@@ -16,9 +16,9 @@ jobs:
16
16
  security-events: write
17
17
  steps:
18
18
  - name: Checkout repository
19
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
19
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
20
20
  with:
21
21
  persist-credentials: false
22
22
 
23
23
  - name: Run zizmor 🌈
24
- uses: zizmorcore/zizmor-action@5f14fd08f7cf1cb1609c1e344975f152c7ee938d # v0.5.6
24
+ uses: zizmorcore/zizmor-action@6fc4b006235f201fdab3722e17240ab420d580e5 # v0.6.1
@@ -122,3 +122,4 @@ site/
122
122
 
123
123
  # This file should be a symlink or contain "See @AGENTS.md"
124
124
  CLAUDE.md
125
+ .claude/
@@ -18,7 +18,7 @@ repos:
18
18
  exclude: ^cibuildwheel/resources/android/android.patch$
19
19
 
20
20
  - repo: https://github.com/astral-sh/ruff-pre-commit
21
- rev: 0671d8ab202c4ac093b78433ae5baf74f3fc7246 # frozen: v0.15.15
21
+ rev: c59bba8fb259db0fec2bbb77ad8ba51ea7341b56 # frozen: v0.15.20
22
22
  hooks:
23
23
  - id: ruff-check
24
24
  args: ["--fix"]
@@ -37,7 +37,6 @@ repos:
37
37
  - dependency-groups>=1.2
38
38
  - humanize
39
39
  - nox>=2025.2.9
40
- - orjson
41
40
  - packaging
42
41
  - pygithub
43
42
  - pytest
@@ -78,7 +77,7 @@ repos:
78
77
  additional_dependencies: [cogapp>=3.5]
79
78
 
80
79
  - repo: https://github.com/henryiii/flake8-lazy
81
- rev: 65b94e97b1091634368592d98072160842265fe4 # frozen: v0.8.2
80
+ rev: 5fed9a818f2583f0403aed779bf2b6c9aa8d25f4 # frozen: v0.8.5
82
81
  hooks:
83
82
  - id: flake8-lazy
84
83
  args: ["--apply=set"]
@@ -94,7 +93,7 @@ repos:
94
93
 
95
94
 
96
95
  - repo: https://github.com/python-jsonschema/check-jsonschema
97
- rev: 943377262562a12b57292fc98fabd7dbf81451fe # frozen: 0.37.2
96
+ rev: 1a4bb160cab6417b3045e1b37b6b72449243e658 # frozen: 0.37.4
98
97
  hooks:
99
98
  - id: check-dependabot
100
99
  - id: check-github-actions
@@ -8,4 +8,4 @@ build:
8
8
  - asdf plugin add uv
9
9
  - asdf install uv latest
10
10
  - asdf global uv latest
11
- - NO_COLOR=1 uv run --python 3.14 --managed-python --no-dev --group docs mkdocs build --strict --site-dir $READTHEDOCS_OUTPUT/html
11
+ - NO_COLOR=1 uv run --python 3.14 --managed-python --no-dev --group docs properdocs build --strict --site-dir $READTHEDOCS_OUTPUT/html
@@ -11,7 +11,7 @@
11
11
  - `nox -s tests -- test -k before_build` — single integration test/file via pytest `-k`.
12
12
  - `nox -s lint` — run all linters (pre-commit/prek).
13
13
  - `nox -s pylint` — run pylint separately (not in pre-commit).
14
- - `nox -s docs` — mkdocs serve (interactive) or build (non-interactive).
14
+ - `nox -s docs` — properdocs serve (interactive) or build (non-interactive).
15
15
  - Set up local dev env at `.venv`: `uv sync` (dependency groups used).
16
16
 
17
17
  ## Project layout
@@ -19,7 +19,7 @@
19
19
  - `test/` — **integration tests** (expensive, run actual wheel builds).
20
20
  - `unit_test/` — **unit tests** (fast, no wheel builds).
21
21
  - `bin/` — maintainer scripts (update pins, generate README tables, schema, etc.).
22
- - `docs/` — mkdocs source.
22
+ - `docs/` — properdocs (MkDocs fork) source.
23
23
 
24
24
  ## Testing specifics
25
25
  - Three test suites exist, run in this order by `bin/run_tests.py`:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cibuildwheel
3
- Version: 4.1.0
3
+ Version: 4.2.0
4
4
  Summary: Build Python wheels on CI with minimal configuration.
5
5
  Project-URL: Changelog, https://github.com/pypa/cibuildwheel#changelog
6
6
  Project-URL: Documentation, https://cibuildwheel.pypa.io
@@ -59,25 +59,24 @@ What does it do?
59
59
 
60
60
  While cibuildwheel itself requires a recent Python version to run (we support the last three releases), it can target the following versions to build wheels:
61
61
 
62
- | | macOS Intel | macOS Apple Silicon | Windows 64bit | Windows 32bit | Windows Arm64 | manylinux<br/>musllinux x86_64 | manylinux<br/>musllinux i686 | manylinux<br/>musllinux aarch64 | manylinux<br/>musllinux ppc64le | manylinux<br/>musllinux s390x | manylinux<br/>musllinux armv7l | Android | iOS | Pyodide |
63
- | ------------------------ | ----------- | ------------------- | ------------- | ------------- | -------------- | ------------------------------ | ---------------------------- | ------------------------------- | ------------------------------- | ----------------------------- | ------------------------------ | ------- | --- | -------------- |
64
- | CPython 3.9 | ✅ | ✅ | ✅ | ✅ | ✅<sup>2</sup> | ✅ | ✅ | ✅ | ✅ | ✅ | ✅<sup>4</sup> | N/A | N/A | N/A |
65
- | CPython 3.10 | ✅ | ✅ | ✅ | ✅ | ✅<sup>2</sup> | ✅ | ✅ | ✅ | ✅ | ✅ | ✅<sup>4</sup> | N/A | N/A | N/A |
66
- | CPython 3.11 | ✅ | ✅ | ✅ | ✅ | ✅<sup>2</sup> | ✅ | ✅ | ✅ | ✅ | ✅ | ✅<sup>4</sup> | N/A | N/A | N/A |
67
- | CPython 3.12 | ✅ | ✅ | ✅ | ✅ | ✅<sup>2</sup> | ✅ | ✅ | ✅ | ✅ | ✅ | ✅<sup>4</sup> | N/A | N/A | ✅<sup>3</sup> |
68
- | CPython 3.13 | ✅ | ✅ | ✅ | ✅ | ✅<sup>2</sup> | ✅ | ✅ | ✅ | ✅ | ✅ | ✅<sup>4</sup> | ✅ | ✅ | ✅ |
69
- | CPython 3.14 | ✅ | ✅ | ✅ | ✅ | ✅<sup>2</sup> | ✅ | ✅ | ✅ | ✅ | ✅ | ✅<sup>4</sup> | ✅ | ✅ | ✅ |
70
- | CPython 3.15<sup>5</sup> | ✅ | ✅ | ✅ | ✅ | ✅<sup>2</sup> | ✅ | ✅ | ✅ | ✅ | ✅ | ✅<sup>4</sup> | ✅ | ✅ | N/A |
71
- | PyPy 3.9 v7.3 | ✅ | ✅ | ✅ | N/A | N/A | ✅<sup>1</sup> | ✅<sup>1</sup> | ✅<sup>1</sup> | N/A | N/A | N/A | N/A | N/A | N/A |
72
- | PyPy 3.10 v7.3 | ✅ | ✅ | ✅ | N/A | N/A | ✅<sup>1</sup> | ✅<sup>1</sup> | ✅<sup>1</sup> | N/A | N/A | N/A | N/A | N/A | N/A |
73
- | PyPy 3.11 v7.3 | ✅ | ✅ | ✅ | N/A | N/A | ✅<sup>1</sup> | ✅<sup>1</sup> | ✅<sup>1</sup> | N/A | N/A | N/A | N/A | N/A | N/A |
74
- | GraalPy 3.12 v25.0 | ✅ | ✅ | ✅ | N/A | N/A | ✅<sup>1</sup> | N/A | ✅<sup>1</sup> | N/A | N/A | N/A | N/A | N/A | N/A |
62
+ | | macOS Intel | macOS Apple Silicon | Windows 64bit | Windows 32bit | Windows Arm64 | manylinux<br/>musllinux x86_64 | manylinux<br/>musllinux i686 | manylinux<br/>musllinux aarch64 | manylinux<br/>musllinux ppc64le | manylinux<br/>musllinux s390x | manylinux<br/>musllinux armv7l | Android | iOS | Pyodide |
63
+ |--------------------| ----------- | ------------------- | ------------- | ------------- | -------------- | ------------------------------ | ---------------------------- | ------------------------------- | ------------------------------- | ----------------------------- | ------------------------------ | ------- | --- | -------------- |
64
+ | CPython 3.9 | ✅ | ✅ | ✅ | ✅ | ✅<sup>2</sup> | ✅ | ✅ | ✅ | ✅ | ✅ | ✅<sup>4</sup> | N/A | N/A | N/A |
65
+ | CPython 3.10 | ✅ | ✅ | ✅ | ✅ | ✅<sup>2</sup> | ✅ | ✅ | ✅ | ✅ | ✅ | ✅<sup>4</sup> | N/A | N/A | N/A |
66
+ | CPython 3.11 | ✅ | ✅ | ✅ | ✅ | ✅<sup>2</sup> | ✅ | ✅ | ✅ | ✅ | ✅ | ✅<sup>4</sup> | N/A | N/A | N/A |
67
+ | CPython 3.12 | ✅ | ✅ | ✅ | ✅ | ✅<sup>2</sup> | ✅ | ✅ | ✅ | ✅ | ✅ | ✅<sup>4</sup> | N/A | N/A | ✅<sup>3</sup> |
68
+ | CPython 3.13 | ✅ | ✅ | ✅ | ✅ | ✅<sup>2</sup> | ✅ | ✅ | ✅ | ✅ | ✅ | ✅<sup>4</sup> | ✅ | ✅ | ✅ |
69
+ | CPython 3.14 | ✅ | ✅ | ✅ | ✅ | ✅<sup>2</sup> | ✅ | ✅ | ✅ | ✅ | ✅ | ✅<sup>4</sup> | ✅ | ✅ | ✅ |
70
+ | CPython 3.15 | ✅ | ✅ | ✅ | ✅ | ✅<sup>2</sup> | ✅ | ✅ | ✅ | ✅ | ✅ | ✅<sup>4</sup> | ✅ | ✅ | ✅ |
71
+ | PyPy 3.9 v7.3 | ✅ | ✅ | ✅ | N/A | N/A | ✅<sup>1</sup> | ✅<sup>1</sup> | ✅<sup>1</sup> | N/A | N/A | N/A | N/A | N/A | N/A |
72
+ | PyPy 3.10 v7.3 | ✅ | ✅ | ✅ | N/A | N/A | ✅<sup>1</sup> | ✅<sup>1</sup> | ✅<sup>1</sup> | N/A | N/A | N/A | N/A | N/A | N/A |
73
+ | PyPy 3.11 v7.3 | ✅ | ✅ | ✅ | N/A | N/A | ✅<sup>1</sup> | ✅<sup>1</sup> | ✅<sup>1</sup> | N/A | N/A | N/A | N/A | N/A | N/A |
74
+ | GraalPy 3.12 v25.0 | ✅ | ✅ | ✅ | N/A | N/A | ✅<sup>1</sup> | N/A | ✅<sup>1</sup> | N/A | N/A | N/A | N/A | N/A | N/A |
75
75
 
76
76
  <sup>**1** PyPy & GraalPy are only supported for manylinux wheels.</sup><br>
77
77
  <sup>**2** Windows arm64 support is experimental.</sup><br>
78
78
  <sup>**3** Not supported on PyPI, uses old `pyodide` tag instead of `pyemscripten`. Requires `pyodide-eol` [`enable`](https://cibuildwheel.pypa.io/en/stable/options/#enable).</sup><br>
79
79
  <sup>**4** manylinux armv7l support is experimental. As there are no RHEL based image for this architecture, it's using an Ubuntu based image instead.</sup><br>
80
- <sup>**5** Python 3.15 requires opt-in using [`enable`](https://cibuildwheel.pypa.io/en/stable/options/#enable).</sup><br>
81
80
 
82
81
  - Builds manylinux, musllinux, macOS, Windows, pyemscripten, iOS, and Android wheels
83
82
  - Supports CPython, PyPy, and GraalPy
@@ -135,7 +134,7 @@ jobs:
135
134
  - uses: actions/setup-python@v6
136
135
 
137
136
  - name: Install cibuildwheel
138
- run: python -m pip install cibuildwheel==4.1.0
137
+ run: python -m pip install cibuildwheel==4.2.0
139
138
 
140
139
  - name: Build wheels
141
140
  run: python -m cibuildwheel --output-dir wheelhouse
@@ -226,8 +225,8 @@ Here are some repos that use cibuildwheel.
226
225
  |-----------------------------------|----|----|:------|
227
226
  | [scikit-learn][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] ![pyodide 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. |
228
227
  | [duckdb][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | DuckDB is an analytical in-process SQL database management system |
229
- | [pytorch-fairseq][] | ![github icon][] | ![apple icon][] ![linux icon][] | Facebook AI Research Sequence-to-Sequence Toolkit written in Python. |
230
228
  | [NumPy][] | ![github icon][] ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] ![pyodide icon][] | The fundamental package for scientific computing with Python. |
229
+ | [pytorch-fairseq][] | ![github icon][] | ![apple icon][] ![linux icon][] | Facebook AI Research Sequence-to-Sequence Toolkit written in Python. |
231
230
  | [NCNN][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | ncnn is a high-performance neural network inference framework optimized for the mobile platform |
232
231
  | [Matplotlib][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] ![pyodide icon][] | The venerable Matplotlib, a Python library with C++ portions |
233
232
  | [Tornado][] | ![github icon][] | ![linux icon][] ![apple icon][] ![windows icon][] | Tornado is a Python web framework and asynchronous networking library. Uses stable ABI for a small C extension. |
@@ -237,8 +236,8 @@ Here are some repos that use cibuildwheel.
237
236
 
238
237
  [scikit-learn]: https://github.com/scikit-learn/scikit-learn
239
238
  [duckdb]: https://github.com/duckdb/duckdb
240
- [pytorch-fairseq]: https://github.com/facebookresearch/fairseq
241
239
  [NumPy]: https://github.com/numpy/numpy
240
+ [pytorch-fairseq]: https://github.com/facebookresearch/fairseq
242
241
  [NCNN]: https://github.com/Tencent/ncnn
243
242
  [Matplotlib]: https://github.com/matplotlib/matplotlib
244
243
  [Tornado]: https://github.com/tornadoweb/tornado
@@ -276,6 +275,42 @@ Changelog
276
275
 
277
276
  <!-- [[[cog from readme_changelog import mini_changelog; print(mini_changelog()) ]]] -->
278
277
 
278
+ ### v4.2.0
279
+
280
+ _4 August 2026_
281
+
282
+ - 🌟 CPython 3.15 wheels are now built by default - without the `"cpython-prerelease"` [`enable`](https://cibuildwheel.pypa.io/en/stable/options/#enable) set. It's time to build and upload these wheels to PyPI! This release includes CPython 3.15.0rc1, which is guaranteed to be ABI compatible with the final release. (#2944)
283
+ - ✨ Adds Pyodide 3.15 support with the `cp315-pyodide_wasm32` build identifier, using Pyodide 315.0.0a2. These are also stable wrt. the final release. (#2958)
284
+ - 🐛 Retries a failed download six times with exponential backoff, so short network outages no longer stop a build. A `4xx` response is still reported at once. (#2953)
285
+ - 🐛 Accepts `default` as a [`build-frontend`](https://cibuildwheel.pypa.io/en/stable/options/#build-frontend) value on Pyodide, and accepts `pyodide-build` in the top-level table and in overrides (#2951)
286
+ - 🛠 Holds pip back on GraalPy, where newer pip breaks the build (#2955)
287
+ - 🛠 Updates Pyodide to 314.0.4 (#2949, #2952)
288
+ - 🛠 Updates dependencies and container pins (#2952, #2960)
289
+ - 💼 Updates CI action pins (#2948, #2954)
290
+ - 🧪 Uses pp311 for the abi3 test, and deletes `test_overridden_pip_constraint`, which is not necessary since #2583 (#2956, #2957)
291
+
292
+ ### v4.1.1
293
+
294
+ _24 July 2026_
295
+
296
+ - ✨ Adds `pyodide-build` as a separate [`build-frontend`](https://cibuildwheel.pypa.io/en/stable/options/#build-frontend), now the default frontend for Pyodide, with verbosity flags handling. Any other frontend is ignored with a warning on Pyodide. (#2609, #2945)
297
+ - 🔐 Uses digests instead of tags for pinned container images, strengthening supply-chain security. The human-readable tags remain as comments in `pinned_docker_images.cfg`. (#2915)
298
+ - 🐛 Fixes platform-specific [`test-runtime`](https://cibuildwheel.pypa.io/en/stable/options/#test-runtime) environment variables (e.g. `CIBW_TEST_RUNTIME_ANDROID`) not being honored (#2941)
299
+ - 🐛 Fixes quoting of [`test-requires`](https://cibuildwheel.pypa.io/en/stable/options/#test-requires) and [`audit-requires`](https://cibuildwheel.pypa.io/en/stable/options/#audit-requires) so PEP 508 specifiers containing spaces work (#2913)
300
+ - 🐛 Makes [`archs`](https://cibuildwheel.pypa.io/en/stable/options/#archs) parsing case-insensitive and platform-aware, so e.g. `arm64` works on Windows (#2920)
301
+ - 🐛 Uses an absolute path for the `{project}` placeholder in [`config-settings`](https://cibuildwheel.pypa.io/en/stable/options/#config-settings) (#2934)
302
+ - 🐛 Validates the [`pyodide-version`](https://cibuildwheel.pypa.io/en/stable/options/#pyodide-version) option against the build identifier with a clear error (#2925)
303
+ - 🐛 Fixes PyPy installs on macOS after PyPy switched its downloads from `.tar.bz2` to `.tar.gz` (#2939)
304
+ - 🐛 Makes a matching `python3-config` available in the build and test venvs on macOS (#2922)
305
+ - 🛠 Updates dependencies and container pins (#2917, #2935, #2939)
306
+ - 🛠 Updates Android tests to current Python versions and the new test repository URL (#2933)
307
+ - 🛠 Drops the `orjson` dependency, no longer used by mypy 2+ (#2923)
308
+ - 📚 Builds the docs with properdocs, a MkDocs fork (#2946)
309
+ - 📚 Adds the missing `cp314-pyodide_wasm32` entry to the build identifier table (#2947)
310
+ - 📚 Removes outdated notes about the `pip wheel` build frontend and ClearLinux (#2926)
311
+ - 💼 Adds a "CI: PyPy EoL" PR label to run PyPy EoL tests on PRs (#2930)
312
+ - 💼 Updates CI action pins and pre-commit hooks (#2914, #2932, #2938, #2940, #2942, #2943)
313
+
279
314
  ### v4.1.0
280
315
 
281
316
  _12 June 2026_
@@ -353,25 +388,7 @@ _2 April 2026_
353
388
  - ✨ cibuildwheel prints the selected build identifiers at the start of the build. (#2785)
354
389
  - 🔐 The GitHub Action now references other actions with a full SHA (#2744)
355
390
 
356
- ### v3.4.0
357
-
358
- _5 March 2026_
359
-
360
- - 🌟 You can now build wheels using `uv` as a build frontend. This should improve performance, especially if your project has lots of build dependencies. To use, set [`build-frontend`](https://cibuildwheel.pypa.io/en/stable/options/#build-frontend) to `uv`. (#2322)
361
- - ⚠️ We no longer support running on Travis CI. It may continue working but we don't run tests there anymore so we can't be sure. (#2682)
362
- - ✨ Improvements to building rust wheels on Android (#2650)
363
- - 🛠 Update Pyodide to 0.29.3 (#2719, #2733)
364
- - 🐛 Fix bug with the GitHub Action on Windows, where PATH was getting unnecessarily changed, causing issues with meson builds. (#2723)
365
- - ✨ Add support for quiet setting on `build` and `uv` from the cibuildwheel `build-verbosity` setting. (#2737)
366
- - 📚 Docs updates, including guidance on using Meson on Windows (#2718)
367
-
368
- ### v3.3.1
369
-
370
- _5 January 2026_
371
-
372
- - 🛠 Update dependencies and container pins, including updating to CPython 3.14.2. (#2708)
373
-
374
- <!-- [[[end]]] (sum: s3fkxPyqwC) -->
391
+ <!-- [[[end]]] (sum: fEuiF50wvg) -->
375
392
 
376
393
  ---
377
394