cibuildwheel 4.2.1__tar.gz → 4.3.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 (233) hide show
  1. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/.github/workflows/copilot-setup-steps.yml +1 -1
  2. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/.github/workflows/test.yml +15 -13
  3. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/.github/workflows/update-dependencies.yml +3 -1
  4. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/.github/workflows/zizmor.yml +1 -1
  5. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/.pre-commit-config.yaml +5 -5
  6. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/PKG-INFO +25 -63
  7. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/README.md +24 -62
  8. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/action.yml +10 -1
  9. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/bin/generate_schema.py +63 -22
  10. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/bin/update_pythons.py +13 -16
  11. cibuildwheel-4.3.0/cibuildwheel/__init__.py +1 -0
  12. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/__main__.py +2 -2
  13. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/extra.py +4 -1
  14. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/logger.py +12 -2
  15. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/oci_container.py +2 -2
  16. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/options.py +207 -72
  17. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/platforms/macos.py +4 -5
  18. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/platforms/windows.py +1 -1
  19. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/resources/build-platforms.toml +56 -46
  20. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/resources/cibuildwheel.schema.json +478 -56
  21. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/resources/constraints-pyodide312.txt +12 -11
  22. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/resources/constraints-pyodide313.txt +12 -11
  23. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/resources/constraints-pyodide314.txt +12 -11
  24. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/resources/constraints-pyodide315.txt +12 -11
  25. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/resources/constraints-python310.txt +14 -13
  26. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/resources/constraints-python311.txt +14 -13
  27. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/resources/constraints-python312.txt +14 -13
  28. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/resources/constraints-python313.txt +14 -13
  29. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/resources/constraints-python314.txt +14 -13
  30. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/resources/constraints-python315.txt +14 -13
  31. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/resources/constraints-python39.txt +6 -5
  32. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/resources/constraints.txt +14 -13
  33. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/resources/nodejs.toml +2 -2
  34. cibuildwheel-4.3.0/cibuildwheel/resources/pinned_docker_images.cfg +54 -0
  35. cibuildwheel-4.3.0/cibuildwheel/resources/python-build-standalone-releases.json +904 -0
  36. cibuildwheel-4.3.0/cibuildwheel/resources/virtualenv.toml +1 -0
  37. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/util/cmd.py +42 -7
  38. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/util/helpers.py +55 -13
  39. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/docs/changelog.md +15 -0
  40. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/docs/ci-services.md +5 -0
  41. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/docs/configuration.md +71 -18
  42. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/docs/faq.md +11 -9
  43. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/docs/options.md +51 -30
  44. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/docs/working-examples.md +12 -12
  45. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/examples/azure-pipelines-minimal.yml +3 -3
  46. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/examples/circleci-minimal.yml +3 -3
  47. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/examples/github-deploy.yml +1 -1
  48. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/examples/github-minimal.yml +1 -1
  49. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/examples/github-pipx.yml +1 -1
  50. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/examples/github-with-qemu.yml +1 -1
  51. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/examples/gitlab-minimal.yml +3 -3
  52. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/examples/gitlab-with-qemu.yml +1 -1
  53. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/noxfile.py +10 -21
  54. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/pyproject.toml +1 -1
  55. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/test/test_abi_variants.py +3 -3
  56. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/test/test_manylinuxXXXX_only.py +12 -0
  57. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/test/utils.py +11 -1
  58. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/unit_test/build_selector_test.py +12 -6
  59. cibuildwheel-4.3.0/unit_test/cmd_test.py +64 -0
  60. cibuildwheel-4.3.0/unit_test/extra_test.py +57 -0
  61. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/unit_test/option_prepare_test.py +5 -1
  62. cibuildwheel-4.2.1/unit_test/options_toml_test.py → cibuildwheel-4.3.0/unit_test/options_reader_test.py +254 -0
  63. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/unit_test/options_test.py +5 -0
  64. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/unit_test/utils_test.py +122 -11
  65. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/unit_test/validate_schema_test.py +64 -0
  66. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/unit_test/wheel_print_test.py +21 -0
  67. cibuildwheel-4.2.1/cibuildwheel/__init__.py +0 -1
  68. cibuildwheel-4.2.1/cibuildwheel/resources/pinned_docker_images.cfg +0 -54
  69. cibuildwheel-4.2.1/cibuildwheel/resources/python-build-standalone-releases.json +0 -904
  70. cibuildwheel-4.2.1/cibuildwheel/resources/virtualenv.toml +0 -1
  71. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/.agents/skills/changelog-entry/SKILL.md +0 -0
  72. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/.circleci/config.yml +0 -0
  73. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/.circleci/prepare.sh +0 -0
  74. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/.editorconfig +0 -0
  75. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/.gitattributes +0 -0
  76. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/.github/CODEOWNERS +0 -0
  77. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  78. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/.github/dependabot.yml +0 -0
  79. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/.github/workflows/release.yml +0 -0
  80. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/.github/workflows/update-major-minor-tag.yml +0 -0
  81. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/.gitignore +0 -0
  82. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/.gitlab-ci.yml +0 -0
  83. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/.readthedocs.yml +0 -0
  84. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/AGENTS.md +0 -0
  85. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/CI.md +0 -0
  86. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/LICENSE +0 -0
  87. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/azure-pipelines.yml +0 -0
  88. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/bin/bump_version.py +0 -0
  89. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/bin/generate_pyodide_constraints.py +0 -0
  90. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/bin/inspect_all_known_projects.py +0 -0
  91. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/bin/make_dependency_update_pr.py +0 -0
  92. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/bin/projects.py +0 -0
  93. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/bin/readme_changelog.py +0 -0
  94. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/bin/readme_options_table.py +0 -0
  95. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/bin/run_example_ci_configs.py +0 -0
  96. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/bin/run_tests.py +0 -0
  97. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/bin/sample_build.py +0 -0
  98. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/bin/update_docker.py +0 -0
  99. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/bin/update_how_it_works_image.py +0 -0
  100. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/bin/update_nodejs.py +0 -0
  101. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/bin/update_python_build_standalone.py +0 -0
  102. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/bin/update_virtualenv.py +0 -0
  103. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/_compat/__init__.py +0 -0
  104. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/_compat/tarfile.py +0 -0
  105. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/architecture.py +0 -0
  106. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/audit.py +0 -0
  107. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/bashlex_eval.py +0 -0
  108. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/ci.py +0 -0
  109. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/environment.py +0 -0
  110. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/errors.py +0 -0
  111. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/frontend.py +0 -0
  112. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/platforms/__init__.py +0 -0
  113. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/platforms/android.py +0 -0
  114. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/platforms/ios.py +0 -0
  115. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/platforms/linux.py +0 -0
  116. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/platforms/pyodide.py +0 -0
  117. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/projectfiles.py +0 -0
  118. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/py.typed +0 -0
  119. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/resources/android/_cross_venv.pth +0 -0
  120. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/resources/android/_cross_venv.py +0 -0
  121. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/resources/android/fortran_shim.py +0 -0
  122. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/resources/android/rust_shim.py +0 -0
  123. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/resources/constraints.in +0 -0
  124. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/resources/defaults.toml +0 -0
  125. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/resources/free-threaded-enable-314.xml +0 -0
  126. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/resources/free-threaded-enable-315.xml +0 -0
  127. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/resources/install_certifi.py +0 -0
  128. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/resources/ios-support/_cross_venv.py +0 -0
  129. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/resources/ios-support/arm64-iphoneos/_cross_arm64_iphoneos.py +0 -0
  130. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/resources/ios-support/arm64-iphoneos/sitecustomize.py +0 -0
  131. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/resources/ios-support/arm64-iphonesimulator/_cross_arm64_iphonesimulator.py +0 -0
  132. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/resources/ios-support/arm64-iphonesimulator/sitecustomize.py +0 -0
  133. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/resources/ios-support/make_cross_venv.py +0 -0
  134. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/resources/ios-support/x86_64-iphonesimulator/_cross_x86_64_iphonesimulator.py +0 -0
  135. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/resources/ios-support/x86_64-iphonesimulator/sitecustomize.py +0 -0
  136. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/resources/testing_temp_dir_file.py +0 -0
  137. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/schema.py +0 -0
  138. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/selector.py +0 -0
  139. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/typing.py +0 -0
  140. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/util/__init__.py +0 -0
  141. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/util/file.py +0 -0
  142. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/util/packaging.py +0 -0
  143. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/util/python_build_standalone.py +0 -0
  144. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/util/resources.py +0 -0
  145. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/cibuildwheel/venv.py +0 -0
  146. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/docs/_internal/pyodide-maintenance.md +0 -0
  147. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/docs/contributing.md +0 -0
  148. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/docs/cpp_standards.md +0 -0
  149. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/docs/data/how-it-works.png +0 -0
  150. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/docs/data/projects.schema.json +0 -0
  151. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/docs/data/projects.yml +0 -0
  152. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/docs/data/readme_icons/android.svg +0 -0
  153. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/docs/data/readme_icons/apple.svg +0 -0
  154. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/docs/data/readme_icons/azurepipelines.svg +0 -0
  155. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/docs/data/readme_icons/circleci.svg +0 -0
  156. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/docs/data/readme_icons/github.svg +0 -0
  157. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/docs/data/readme_icons/gitlab.svg +0 -0
  158. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/docs/data/readme_icons/ios.svg +0 -0
  159. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/docs/data/readme_icons/linux.svg +0 -0
  160. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/docs/data/readme_icons/pyodide.svg +0 -0
  161. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/docs/data/readme_icons/travisci.svg +0 -0
  162. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/docs/data/readme_icons/windows.svg +0 -0
  163. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/docs/deliver-to-pypi.md +0 -0
  164. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/docs/diagram.html +0 -0
  165. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/docs/extra.css +0 -0
  166. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/docs/extra.js +0 -0
  167. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/docs/index.md +0 -0
  168. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/docs/main.py +0 -0
  169. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/docs/platforms.md +0 -0
  170. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/docs/setup.md +0 -0
  171. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/docs/theme_overrides/js/theme.js +0 -0
  172. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/properdocs.yml +0 -0
  173. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/test/README.md +0 -0
  174. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/test/__init__.py +0 -0
  175. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/test/_cross_venv_test_android.py +0 -0
  176. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/test/conftest.py +0 -0
  177. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/test/test_0_basic.py +0 -0
  178. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/test/test_abi3audit.py +0 -0
  179. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/test/test_android.py +0 -0
  180. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/test/test_before_all.py +0 -0
  181. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/test/test_before_build.py +0 -0
  182. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/test/test_before_test.py +0 -0
  183. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/test/test_build_frontend_args.py +0 -0
  184. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/test/test_build_skip.py +0 -0
  185. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/test/test_container_engine.py +0 -0
  186. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/test/test_container_images.py +0 -0
  187. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/test/test_cpp_standards.py +0 -0
  188. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/test/test_custom_repair_wheel.py +0 -0
  189. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/test/test_dependency_versions.py +0 -0
  190. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/test/test_emulation.py +0 -0
  191. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/test/test_environment.py +0 -0
  192. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/test/test_from_sdist.py +0 -0
  193. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/test/test_ios.py +0 -0
  194. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/test/test_linux_python.py +0 -0
  195. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/test/test_macos_archs.py +0 -0
  196. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/test/test_meson_python.py +0 -0
  197. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/test/test_musllinux_X_Y_only.py +0 -0
  198. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/test/test_pep518.py +0 -0
  199. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/test/test_projects/__init__.py +0 -0
  200. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/test/test_projects/__main__.py +0 -0
  201. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/test/test_projects/base.py +0 -0
  202. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/test/test_projects/c.py +0 -0
  203. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/test/test_projects/meson.py +0 -0
  204. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/test/test_projects/setuptools.py +0 -0
  205. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/test/test_pure_wheel.py +0 -0
  206. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/test/test_pyodide.py +0 -0
  207. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/test/test_ssl.py +0 -0
  208. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/test/test_subdir_package.py +0 -0
  209. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/test/test_testing.py +0 -0
  210. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/test/test_troubleshooting.py +0 -0
  211. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/test/test_wheel_tag.py +0 -0
  212. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/test/test_windows.py +0 -0
  213. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/unit_test/__init__.py +0 -0
  214. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/unit_test/architecture_test.py +0 -0
  215. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/unit_test/audit_test.py +0 -0
  216. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/unit_test/build_ids_test.py +0 -0
  217. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/unit_test/conftest.py +0 -0
  218. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/unit_test/dependency_constraints_test.py +0 -0
  219. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/unit_test/download_test.py +0 -0
  220. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/unit_test/environment_test.py +0 -0
  221. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/unit_test/get_platform_test.py +0 -0
  222. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/unit_test/linux_build_steps_test.py +0 -0
  223. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/unit_test/main_commands_test.py +0 -0
  224. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/unit_test/main_tests/__init__.py +0 -0
  225. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/unit_test/main_tests/conftest.py +0 -0
  226. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/unit_test/main_tests/main_options_test.py +0 -0
  227. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/unit_test/main_tests/main_platform_test.py +0 -0
  228. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/unit_test/main_tests/main_requires_python_test.py +0 -0
  229. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/unit_test/oci_container_test.py +0 -0
  230. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/unit_test/projectfiles_test.py +0 -0
  231. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/unit_test/python_build_standalone_test.py +0 -0
  232. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/unit_test/test_sha256.py +0 -0
  233. {cibuildwheel-4.2.1 → cibuildwheel-4.3.0}/unit_test/venv_test.py +0 -0
@@ -28,7 +28,7 @@ jobs:
28
28
  python-version: "3.x"
29
29
  allow-prereleases: true
30
30
 
31
- - uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
31
+ - uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
32
32
 
33
33
  - name: Install tooling
34
34
  run: |
@@ -49,7 +49,7 @@ jobs:
49
49
  - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
50
50
  with:
51
51
  python-version: "3.x"
52
- - uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
52
+ - uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
53
53
  - uses: j178/prek-action@4e14d07f9231acabce116ccfca13b13dd9755ece # v3.0.0
54
54
  - name: PyLint checks
55
55
  run: uvx nox -s pylint -- --output-format=github
@@ -66,7 +66,7 @@ jobs:
66
66
  name: Install Python
67
67
  with:
68
68
  python-version: "3.x"
69
- - uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
69
+ - uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
70
70
  - name: Install dependencies
71
71
  run: uv sync --no-dev --group test
72
72
  - name: Generate a sample project
@@ -130,7 +130,7 @@ jobs:
130
130
  python-version: ${{ matrix.python_version }}
131
131
  allow-prereleases: true
132
132
 
133
- - uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
133
+ - uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
134
134
 
135
135
  - name: Free up disk space
136
136
  if: runner.os == 'Linux' && matrix.test_select != 'android'
@@ -143,7 +143,7 @@ jobs:
143
143
  # for oci_container unit tests
144
144
  - name: Set up QEMU
145
145
  if: runner.os == 'Linux'
146
- uses: docker/setup-qemu-action@96fe6ef7f33517b61c61be40b68a1882f3264fb8 # v4.2.0
146
+ uses: docker/setup-qemu-action@99012661954931238ded8c8b007157a8430204e1 # v4.4.0
147
147
 
148
148
  - name: Set up Xcode
149
149
  if: ${{ startsWith(matrix.os, 'macos-15') }}
@@ -185,7 +185,7 @@ jobs:
185
185
  path: sample_proj
186
186
 
187
187
  - name: Run a sample build (GitHub Action)
188
- uses: ./
188
+ uses: $/
189
189
  with:
190
190
  package-dir: sample_proj
191
191
  output-dir: wheelhouse
@@ -196,7 +196,7 @@ jobs:
196
196
  CIBW_TEST_RUNTIME: ${{ matrix.test_runtime }}
197
197
 
198
198
  - name: Run a sample build (GitHub Action, only)
199
- uses: ./
199
+ uses: $/
200
200
  if: matrix.test_select == ''
201
201
  with:
202
202
  package-dir: sample_proj
@@ -216,7 +216,7 @@ jobs:
216
216
  EOF
217
217
 
218
218
  - name: Run a sample build (GitHub Action, config-file)
219
- uses: ./
219
+ uses: $/
220
220
  env:
221
221
  CIBW_PLATFORM: ${{ matrix.test_select }}
222
222
  CIBW_TEST_RUNTIME: ${{ matrix.test_runtime }}
@@ -224,6 +224,8 @@ jobs:
224
224
  package-dir: sample_proj
225
225
  output-dir: wheelhouse_config_file
226
226
  config-file: sample_proj/cibw.toml
227
+ # Exercise the system-Python override on Linux.
228
+ python-path: ${{ runner.os == 'Linux' && 'python3' || '' }}
227
229
 
228
230
  - name: Check Action artifacts
229
231
  shell: bash
@@ -260,7 +262,7 @@ jobs:
260
262
  - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
261
263
  with:
262
264
  python-version: "3.x"
263
- - uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
265
+ - uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
264
266
  - name: Install dependencies
265
267
  run: uv sync --no-dev --group test
266
268
  - name: Get qemu emulated architectures
@@ -285,12 +287,12 @@ jobs:
285
287
  - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
286
288
  with:
287
289
  python-version: "3.x"
288
- - uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
290
+ - uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
289
291
  - name: Install dependencies
290
292
  run: uv sync --no-dev --group test
291
293
 
292
294
  - name: Set up QEMU
293
- uses: docker/setup-qemu-action@96fe6ef7f33517b61c61be40b68a1882f3264fb8 # v4.2.0
295
+ uses: docker/setup-qemu-action@99012661954931238ded8c8b007157a8430204e1 # v4.4.0
294
296
 
295
297
  - name: Run the emulation tests
296
298
  env:
@@ -310,7 +312,7 @@ jobs:
310
312
  name: Install Python 3.12
311
313
  with:
312
314
  python-version: '3.12'
313
- - uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
315
+ - uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
314
316
 
315
317
  - name: Install dependencies
316
318
  run: uv sync --no-dev --group test
@@ -322,7 +324,7 @@ jobs:
322
324
  path: sample_proj
323
325
 
324
326
  - name: Run a sample build (GitHub Action)
325
- uses: ./
327
+ uses: $/
326
328
  with:
327
329
  package-dir: sample_proj
328
330
  output-dir: wheelhouse
@@ -364,7 +366,7 @@ jobs:
364
366
  name: sample_proj
365
367
  path: sample_proj
366
368
  - name: Run a sample build (GitHub Action)
367
- uses: ./
369
+ uses: $/
368
370
  with:
369
371
  extras: uv
370
372
  package-dir: sample_proj
@@ -41,7 +41,7 @@ jobs:
41
41
  with:
42
42
  persist-credentials: false
43
43
 
44
- - uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
44
+ - uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
45
45
  with:
46
46
  python-version: "3.14"
47
47
 
@@ -49,6 +49,8 @@ jobs:
49
49
  run: uvx nox --force-color -s update_constraints
50
50
  - name: "Run update: python configs"
51
51
  run: uvx nox --force-color -s update_pins
52
+ env:
53
+ GITHUB_TOKEN: ${{ github.token }}
52
54
  - name: "Run update: docs user projects"
53
55
  run: uvx nox --force-color -s update_proj -- --auth=${{ secrets.GITHUB_TOKEN }}
54
56
 
@@ -21,4 +21,4 @@ jobs:
21
21
  persist-credentials: false
22
22
 
23
23
  - name: Run zizmor 🌈
24
- uses: zizmorcore/zizmor-action@3dc1ecc9bcb9e94e9b2c709687979e1298497054 # v0.6.2
24
+ uses: zizmorcore/zizmor-action@cc914d7f3750a2d13d75c7f184a1060aa0e9d482 # v0.6.4
@@ -18,14 +18,14 @@ repos:
18
18
  exclude: ^cibuildwheel/resources/android/android.patch$
19
19
 
20
20
  - repo: https://github.com/astral-sh/ruff-pre-commit
21
- rev: 39d9ac5938dadb73df0564a45f163e25ff9fa6e2 # frozen: v0.16.1
21
+ rev: a56c0b927e6465d37cae3e97d35d4d18ab2b96cd # frozen: v0.16.9
22
22
  hooks:
23
23
  - id: ruff-check
24
24
  args: ["--fix"]
25
25
  - id: ruff-format
26
26
 
27
27
  - repo: https://github.com/pre-commit/mirrors-mypy
28
- rev: 41e691678310dfd3833f7ab4e180ddb014310356 # frozen: v2.3.0
28
+ rev: 7ff8d35ae36a7d2b968f2f90b4c723e292e594ee # frozen: v2.3.1
29
29
  hooks:
30
30
  - id: mypy
31
31
  name: mypy 3.11 on cibuildwheel/
@@ -56,7 +56,7 @@ repos:
56
56
  additional_dependencies: *mypy-dependencies
57
57
 
58
58
  - repo: https://github.com/shellcheck-py/shellcheck-py
59
- rev: 745eface02aef23e168a8afb6b5737818efbea95 # frozen: v0.11.0.1
59
+ rev: a6564f5d57444e123433a5c9af733e3975c77229 # frozen: v0.11.0.1-1
60
60
  hooks:
61
61
  - id: shellcheck
62
62
 
@@ -77,7 +77,7 @@ repos:
77
77
  additional_dependencies: [cogapp>=3.5]
78
78
 
79
79
  - repo: https://github.com/henryiii/flake8-lazy
80
- rev: 5fed9a818f2583f0403aed779bf2b6c9aa8d25f4 # frozen: v0.8.5
80
+ rev: 3b5e52593dfaec56e6e4a48f237bafcf3d0b83ea # frozen: v0.9.0
81
81
  hooks:
82
82
  - id: flake8-lazy
83
83
  args: ["--apply=set"]
@@ -93,7 +93,7 @@ repos:
93
93
 
94
94
 
95
95
  - repo: https://github.com/python-jsonschema/check-jsonschema
96
- rev: 1a4bb160cab6417b3045e1b37b6b72449243e658 # frozen: 0.37.4
96
+ rev: 4f85d46a92dc17713078e5de73f8a13190edf6fc # frozen: 0.38.2
97
97
  hooks:
98
98
  - id: check-dependabot
99
99
  - id: check-github-actions
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: cibuildwheel
3
- Version: 4.2.1
3
+ Version: 4.3.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
@@ -70,8 +70,10 @@ While cibuildwheel itself requires a recent Python version to run (we support th
70
70
  | CPython 3.15 | ✅ | ✅ | ✅ | ✅ | ✅<sup>2</sup> | ✅ | ✅ | ✅ | ✅ | ✅ | ✅<sup>4</sup> | ✅ | ✅ | ✅ |
71
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
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 |
73
+ | PyPy 3.11 v8.0 | ✅ | ✅ | ✅ | 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
+ | PyPy 3.12 v8.0 | ✅ | ✅ | ✅ | 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
75
  | 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 |
76
+ | GraalPy 3.13 v25.3 | N/A | ✅ | ✅ | 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
77
 
76
78
  <sup>**1** PyPy & GraalPy are only supported for manylinux wheels.</sup><br>
77
79
  <sup>**2** Windows arm64 support is experimental.</sup><br>
@@ -134,7 +136,7 @@ jobs:
134
136
  - uses: actions/setup-python@v6
135
137
 
136
138
  - name: Install cibuildwheel
137
- run: python -m pip install cibuildwheel==4.2.1
139
+ run: python -m pip install cibuildwheel==4.3.0
138
140
 
139
141
  - name: Build wheels
140
142
  run: python -m cibuildwheel --output-dir wheelhouse
@@ -203,12 +205,13 @@ The following diagram summarises the steps that cibuildwheel takes on each platf
203
205
  | | [`test-skip`](https://cibuildwheel.pypa.io/en/stable/options/#test-skip) | Skip running tests on some builds |
204
206
  | | [`test-environment`](https://cibuildwheel.pypa.io/en/stable/options/#test-environment) | Set environment variables for the test environment |
205
207
  | | [`test-runtime`](https://cibuildwheel.pypa.io/en/stable/options/#test-runtime) | Controls how the tests will be executed. |
206
- | **Debugging** | [`debug-keep-container`](https://cibuildwheel.pypa.io/en/stable/options/#debug-keep-container) | Keep the container after running for debugging. |
208
+ | **Debugging** | [`build-verbosity`](https://cibuildwheel.pypa.io/en/stable/options/#build-verbosity) | Increase/decrease the output of the build |
209
+ | | [`debug-keep-container`](https://cibuildwheel.pypa.io/en/stable/options/#debug-keep-container) | Keep the container after running for debugging. |
207
210
  | | [`debug-traceback`](https://cibuildwheel.pypa.io/en/stable/options/#debug-traceback) | Print full traceback when errors occur. |
208
- | | [`build-verbosity`](https://cibuildwheel.pypa.io/en/stable/options/#build-verbosity) | Increase/decrease the output of the build |
211
+ | | [`log-fold-mode`](https://cibuildwheel.pypa.io/en/stable/options/#log-fold-mode) | Control CI log folding. |
209
212
 
210
213
 
211
- <!--[[[end]]] (sum: Of/28Z7Nut) -->
214
+ <!--[[[end]]] (sum: iao/k2ZuR1) -->
212
215
 
213
216
  These options can be specified in a pyproject.toml file, or as environment variables, see [configuration docs](https://cibuildwheel.pypa.io/en/latest/configuration/).
214
217
 
@@ -275,6 +278,21 @@ Changelog
275
278
 
276
279
  <!-- [[[cog from readme_changelog import mini_changelog; print(mini_changelog()) ]]] -->
277
280
 
281
+ ### v4.3.0
282
+
283
+ _5 October 2026_
284
+
285
+ - ✨ Extends [option inheritance](https://cibuildwheel.pypa.io/en/stable/configuration/#inherit) to every configuration layer, so global and platform-specific settings can append or prepend to existing values, including cibuildwheel's defaults. Environment variables can also extend earlier settings using `CIBW_INHERIT`. (#2928)
286
+ - ✨ Adds PyPy 3.12 support and updates PyPy 3.11 to v8.0.0, available with the `pypy` [`enable`](https://cibuildwheel.pypa.io/en/stable/options/#enable) flag (#2998)
287
+ - ✨ Adds GraalPy 3.13 (v25.3) support on Linux, Windows, and macOS arm64, available with the `graalpy` [`enable`](https://cibuildwheel.pypa.io/en/stable/options/#enable) flag (#2982)
288
+ - ✨ Adds [`log-fold-mode`](https://cibuildwheel.pypa.io/en/stable/options/#log-fold-mode) to override CI log folding, including `CIBW_LOG_FOLD_MODE=disabled` to keep build steps expanded (#2972)
289
+ - ✨ Adds a `python-path` input to the GitHub Action to choose the Python interpreter used to run cibuildwheel, and falls back to system `python3` on runner architectures unsupported by `setup-python`, such as native riscv64 (#2990)
290
+ - 🐛 Fixes Windows command execution when paths or arguments contain shell metacharacters, including dependency specifiers containing `<` or `>` (#2978)
291
+ - 🛠 Improves readability of logged commands whose arguments contain quotes (#2993)
292
+ - 🛠 Updates Pyodide to 0.27.8, 0.29.5, and 314.0.7, and updates its build tooling, including auditwheel-emscripten 0.3.0 (#2996)
293
+ - 🛠 Updates dependencies and container pins, including CPython 3.15.0rc3 (#2986, #3003)
294
+ - 📚 Corrects references to `--archs` in CLI help, error messages, and documentation (#2992)
295
+
278
296
  ### v4.2.1
279
297
 
280
298
  _5 September 2026_
@@ -330,63 +348,7 @@ _12 June 2026_
330
348
  - 📚 Adds an FAQ section on caching cibuildwheel's downloaded tools with `CIBW_CACHE_PATH` (#2842)
331
349
  - 📚 Documentation improvements: clarifies which shell is used for command options, clarifies environment variable precedence, and fixes a dead Pyodide env info link (#2904, #2905, #2911)
332
350
 
333
- ### v4.0.0
334
-
335
- _7 June 2026_
336
-
337
- See @henryiii's [release post](https://iscinumpy.dev/post/cibuildwheel-4-0-0/) for more info on new features!
338
-
339
- - 🌟 Adds wheel auditing with `abi3audit` as a default after the repair step, with new [`audit-requires`](https://cibuildwheel.pypa.io/en/stable/options/#audit-requires) and [`audit-command`](https://cibuildwheel.pypa.io/en/stable/options/#audit-command) options (#2805)
340
- - 🌟 Adds `pyemscripten` platform tag support (PEP 783), updates Pyodide to 314.0.0a2, and adds a `pyodide-eol` [`enable`](https://cibuildwheel.pypa.io/en/stable/options/#enable) flag for building end-of-life Pyodide versions (#2812, #2848)
341
- - 🌟 Sets up `delvewheel` as the default [`repair-wheel-command`](https://cibuildwheel.pypa.io/en/stable/options/#repair-wheel-command) for Windows, so extension module DLLs are now bundled automatically. Skip by setting it to empty if not needed. (#2831)
342
- - ✨ Adds CPython 3.15 support, under the [`enable` option](https://cibuildwheel.pypa.io/en/stable/options/#enable) `cpython-prerelease`. This version of cibuildwheel uses 3.15.0b2. (#2833, #2850)
343
-
344
- _While CPython is in beta, the ABI can change, so your wheels might not be compatible with the final release. For this reason, we don't recommend distributing wheels until RC1, at which point 3.15 will be available in cibuildwheel without the flag._
345
-
346
- - ✨ Adds CPython 3.15 support for iOS and Android (#2857, #2858)
347
- - ✨ Adds Android improvements for building NumPy and related packages, including auditwheel support, pkg-config and Fortran configuration, and the [`xbuild-files`](https://cibuildwheel.pypa.io/en/stable/options/#xbuild-files) option (#2695)
348
- - ✨ Adds `CIBUILDWHEEL_BUILD_IDENTIFIER` environment variable set to the current build identifier (e.g. `cp311-manylinux_x86_64`) during per-build steps (#2872)
349
- - ✨ Adds `{project}` and `{package}` placeholders to [`config-settings`](https://cibuildwheel.pypa.io/en/stable/options/#config-settings) (#2827)
350
- - ⚠️ Drops support for Python 3.8 (#2686)
351
- - ⚠️ Removes the experimental CPython 3.13 free-threading builds and the `cpython-freethreading` [`enable`](https://cibuildwheel.pypa.io/en/stable/options/#enable) option. CPython 3.14+ free-threading support remains available without the enable flag. (#2684)
352
- - ⚠️ Drops support for Cirrus CI, which is shutting down June 1, 2026 (#2817)
353
- - ⚠️ Drops GraalPy 3.11 (gp311) support, as agreed in #2741, and removes GraalPy 24-only workarounds (#2895)
354
- - 🔐 Adds SHA256 verification for direct downloads of Python interpreters, virtualenv, and python-build-standalone assets (#2873)
355
- - 🔐 Adds tarfile extraction filter for safe archive extraction (#2856)
356
- - 🐛 Fixes `UV_PYTHON` not being set for [`before-build`](https://cibuildwheel.pypa.io/en/stable/options/#before-build) on Linux when using `uv` as the [`build-frontend`](https://cibuildwheel.pypa.io/en/stable/options/#build-frontend) (#2830)
357
- - 🐛 Fixes detection of musl libc when downloading python-build-standalone, which previously always selected the gnu asset on musl hosts like Alpine (#2889)
358
- - 🐛 Fixes [`config-settings`](https://cibuildwheel.pypa.io/en/stable/options/#config-settings) expansion when `{project}` or `{package}` contains spaces or backslashes (#2886)
359
- - 🐛 Prevents deadlock when `linux32` fails and forwards platform args to the sanity check (#2880, #2888)
360
- - 🐛 Fixes container resource leaks on start failure and during teardown (#2879, #2887)
361
- - 🐛 Removes potential partial cache-population in case of error (#2892)
362
- - 🐛 Raises a clear error when `ANDROID_API_LEVEL` is not an integer (#2891)
363
- - 🐛 Replaces assert with proper exception in python-build-standalone (#2859)
364
- - 🐛 Uses ConfigurationError when `package_dir` is outside cwd instead of a generic Exception (#2898)
365
- - 🛠 Updates dependencies and container pins (#2893, #2882, #2874, #2868, #2862, #2884, #2845, #2837, #2818, #2810, #2838, #2813)
366
- - 🛠 Updates Android to Python 3.13.13 and 3.14.4 (#2821)
367
- - 🛠 Applies Pyodide-specific patches to the Emscripten toolchain installation (#2800)
368
- - 🛠 Uses `python -V -V` for Windows build diagnostics (#2832)
369
- - 🛠 Simplifies pinned container image lookup (#2897)
370
- - 🛠 Minor fixups across error messages, OCI container, and options (#2860)
371
- - 💼 Adds PEP 723 metadata for `bin/` scripts and drops the `bin` dependency group (#2819)
372
- - 💼 Improves Azure test reliability with retries and caching (#2890)
373
- - 💼 Fixes Windows GitLab CI test running (#2870)
374
- - 💼 Updates CI action pins and dev dependencies (#2902, #2867, #2851, #2843, #2826, #2823, #2820, #2807)
375
- - 💼 Adds agent and copilot setup files (#2861)
376
- - 💼 Uses `if TYPE_CHECKING:` blocks (#2866, #2864)
377
- - 🧪 Fixes Android tests using the `uv` frontend (#2809)
378
- - 🧪 Fixes the update-dependencies workflow to use `uv` to run `nox` (#2808)
379
- - 🧪 Adds unit tests for `OCIContainer._get_platform_args` (#2878)
380
- - 📚 Updates documentation for delvewheel as the default Windows [`repair-wheel-command`](https://cibuildwheel.pypa.io/en/stable/options/#repair-wheel-command), including the build diagram, schema defaults, and legal note (#2877, #2853, #2891)
381
- - 📚 Documents platform-specific [`before-build`](https://cibuildwheel.pypa.io/en/stable/options/#before-build) configuration (#2834)
382
- - 📚 Updates the "How it works" diagram with details of Android, iOS, and Pyodide builds (#2816)
383
- - 📚 Adds Pyodide icon and regenerates working examples data for Android, iOS, and Pyodide (#2815, #2811)
384
- - 📚 Adds intersphinx support for external documentation linking (#2871)
385
- - 📚 Adds instructions for building CUDA wheels and fixes manylinux container references in FAQ (#2896, #2900)
386
- - 📚 Links back to source in docs (#2806)
387
- - 📚 Removes outdated numpy info (#2855)
388
-
389
- <!-- [[[end]]] (sum: 0zxqpn7F3B) -->
351
+ <!-- [[[end]]] (sum: X2rbVg9Z07) -->
390
352
 
391
353
  ---
392
354
 
@@ -33,8 +33,10 @@ While cibuildwheel itself requires a recent Python version to run (we support th
33
33
  | CPython 3.15 | ✅ | ✅ | ✅ | ✅ | ✅<sup>2</sup> | ✅ | ✅ | ✅ | ✅ | ✅ | ✅<sup>4</sup> | ✅ | ✅ | ✅ |
34
34
  | 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 |
35
35
  | 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 |
36
- | 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 |
36
+ | PyPy 3.11 v8.0 | ✅ | ✅ | ✅ | 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 |
37
+ | PyPy 3.12 v8.0 | ✅ | ✅ | ✅ | 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 |
37
38
  | 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 |
39
+ | GraalPy 3.13 v25.3 | N/A | ✅ | ✅ | N/A | N/A | ✅<sup>1</sup> | N/A | ✅<sup>1</sup> | N/A | N/A | N/A | N/A | N/A | N/A |
38
40
 
39
41
  <sup>**1** PyPy & GraalPy are only supported for manylinux wheels.</sup><br>
40
42
  <sup>**2** Windows arm64 support is experimental.</sup><br>
@@ -97,7 +99,7 @@ jobs:
97
99
  - uses: actions/setup-python@v6
98
100
 
99
101
  - name: Install cibuildwheel
100
- run: python -m pip install cibuildwheel==4.2.1
102
+ run: python -m pip install cibuildwheel==4.3.0
101
103
 
102
104
  - name: Build wheels
103
105
  run: python -m cibuildwheel --output-dir wheelhouse
@@ -166,12 +168,13 @@ The following diagram summarises the steps that cibuildwheel takes on each platf
166
168
  | | [`test-skip`](https://cibuildwheel.pypa.io/en/stable/options/#test-skip) | Skip running tests on some builds |
167
169
  | | [`test-environment`](https://cibuildwheel.pypa.io/en/stable/options/#test-environment) | Set environment variables for the test environment |
168
170
  | | [`test-runtime`](https://cibuildwheel.pypa.io/en/stable/options/#test-runtime) | Controls how the tests will be executed. |
169
- | **Debugging** | [`debug-keep-container`](https://cibuildwheel.pypa.io/en/stable/options/#debug-keep-container) | Keep the container after running for debugging. |
171
+ | **Debugging** | [`build-verbosity`](https://cibuildwheel.pypa.io/en/stable/options/#build-verbosity) | Increase/decrease the output of the build |
172
+ | | [`debug-keep-container`](https://cibuildwheel.pypa.io/en/stable/options/#debug-keep-container) | Keep the container after running for debugging. |
170
173
  | | [`debug-traceback`](https://cibuildwheel.pypa.io/en/stable/options/#debug-traceback) | Print full traceback when errors occur. |
171
- | | [`build-verbosity`](https://cibuildwheel.pypa.io/en/stable/options/#build-verbosity) | Increase/decrease the output of the build |
174
+ | | [`log-fold-mode`](https://cibuildwheel.pypa.io/en/stable/options/#log-fold-mode) | Control CI log folding. |
172
175
 
173
176
 
174
- <!--[[[end]]] (sum: Of/28Z7Nut) -->
177
+ <!--[[[end]]] (sum: iao/k2ZuR1) -->
175
178
 
176
179
  These options can be specified in a pyproject.toml file, or as environment variables, see [configuration docs](https://cibuildwheel.pypa.io/en/latest/configuration/).
177
180
 
@@ -238,6 +241,21 @@ Changelog
238
241
 
239
242
  <!-- [[[cog from readme_changelog import mini_changelog; print(mini_changelog()) ]]] -->
240
243
 
244
+ ### v4.3.0
245
+
246
+ _5 October 2026_
247
+
248
+ - ✨ Extends [option inheritance](https://cibuildwheel.pypa.io/en/stable/configuration/#inherit) to every configuration layer, so global and platform-specific settings can append or prepend to existing values, including cibuildwheel's defaults. Environment variables can also extend earlier settings using `CIBW_INHERIT`. (#2928)
249
+ - ✨ Adds PyPy 3.12 support and updates PyPy 3.11 to v8.0.0, available with the `pypy` [`enable`](https://cibuildwheel.pypa.io/en/stable/options/#enable) flag (#2998)
250
+ - ✨ Adds GraalPy 3.13 (v25.3) support on Linux, Windows, and macOS arm64, available with the `graalpy` [`enable`](https://cibuildwheel.pypa.io/en/stable/options/#enable) flag (#2982)
251
+ - ✨ Adds [`log-fold-mode`](https://cibuildwheel.pypa.io/en/stable/options/#log-fold-mode) to override CI log folding, including `CIBW_LOG_FOLD_MODE=disabled` to keep build steps expanded (#2972)
252
+ - ✨ Adds a `python-path` input to the GitHub Action to choose the Python interpreter used to run cibuildwheel, and falls back to system `python3` on runner architectures unsupported by `setup-python`, such as native riscv64 (#2990)
253
+ - 🐛 Fixes Windows command execution when paths or arguments contain shell metacharacters, including dependency specifiers containing `<` or `>` (#2978)
254
+ - 🛠 Improves readability of logged commands whose arguments contain quotes (#2993)
255
+ - 🛠 Updates Pyodide to 0.27.8, 0.29.5, and 314.0.7, and updates its build tooling, including auditwheel-emscripten 0.3.0 (#2996)
256
+ - 🛠 Updates dependencies and container pins, including CPython 3.15.0rc3 (#2986, #3003)
257
+ - 📚 Corrects references to `--archs` in CLI help, error messages, and documentation (#2992)
258
+
241
259
  ### v4.2.1
242
260
 
243
261
  _5 September 2026_
@@ -293,63 +311,7 @@ _12 June 2026_
293
311
  - 📚 Adds an FAQ section on caching cibuildwheel's downloaded tools with `CIBW_CACHE_PATH` (#2842)
294
312
  - 📚 Documentation improvements: clarifies which shell is used for command options, clarifies environment variable precedence, and fixes a dead Pyodide env info link (#2904, #2905, #2911)
295
313
 
296
- ### v4.0.0
297
-
298
- _7 June 2026_
299
-
300
- See @henryiii's [release post](https://iscinumpy.dev/post/cibuildwheel-4-0-0/) for more info on new features!
301
-
302
- - 🌟 Adds wheel auditing with `abi3audit` as a default after the repair step, with new [`audit-requires`](https://cibuildwheel.pypa.io/en/stable/options/#audit-requires) and [`audit-command`](https://cibuildwheel.pypa.io/en/stable/options/#audit-command) options (#2805)
303
- - 🌟 Adds `pyemscripten` platform tag support (PEP 783), updates Pyodide to 314.0.0a2, and adds a `pyodide-eol` [`enable`](https://cibuildwheel.pypa.io/en/stable/options/#enable) flag for building end-of-life Pyodide versions (#2812, #2848)
304
- - 🌟 Sets up `delvewheel` as the default [`repair-wheel-command`](https://cibuildwheel.pypa.io/en/stable/options/#repair-wheel-command) for Windows, so extension module DLLs are now bundled automatically. Skip by setting it to empty if not needed. (#2831)
305
- - ✨ Adds CPython 3.15 support, under the [`enable` option](https://cibuildwheel.pypa.io/en/stable/options/#enable) `cpython-prerelease`. This version of cibuildwheel uses 3.15.0b2. (#2833, #2850)
306
-
307
- _While CPython is in beta, the ABI can change, so your wheels might not be compatible with the final release. For this reason, we don't recommend distributing wheels until RC1, at which point 3.15 will be available in cibuildwheel without the flag._
308
-
309
- - ✨ Adds CPython 3.15 support for iOS and Android (#2857, #2858)
310
- - ✨ Adds Android improvements for building NumPy and related packages, including auditwheel support, pkg-config and Fortran configuration, and the [`xbuild-files`](https://cibuildwheel.pypa.io/en/stable/options/#xbuild-files) option (#2695)
311
- - ✨ Adds `CIBUILDWHEEL_BUILD_IDENTIFIER` environment variable set to the current build identifier (e.g. `cp311-manylinux_x86_64`) during per-build steps (#2872)
312
- - ✨ Adds `{project}` and `{package}` placeholders to [`config-settings`](https://cibuildwheel.pypa.io/en/stable/options/#config-settings) (#2827)
313
- - ⚠️ Drops support for Python 3.8 (#2686)
314
- - ⚠️ Removes the experimental CPython 3.13 free-threading builds and the `cpython-freethreading` [`enable`](https://cibuildwheel.pypa.io/en/stable/options/#enable) option. CPython 3.14+ free-threading support remains available without the enable flag. (#2684)
315
- - ⚠️ Drops support for Cirrus CI, which is shutting down June 1, 2026 (#2817)
316
- - ⚠️ Drops GraalPy 3.11 (gp311) support, as agreed in #2741, and removes GraalPy 24-only workarounds (#2895)
317
- - 🔐 Adds SHA256 verification for direct downloads of Python interpreters, virtualenv, and python-build-standalone assets (#2873)
318
- - 🔐 Adds tarfile extraction filter for safe archive extraction (#2856)
319
- - 🐛 Fixes `UV_PYTHON` not being set for [`before-build`](https://cibuildwheel.pypa.io/en/stable/options/#before-build) on Linux when using `uv` as the [`build-frontend`](https://cibuildwheel.pypa.io/en/stable/options/#build-frontend) (#2830)
320
- - 🐛 Fixes detection of musl libc when downloading python-build-standalone, which previously always selected the gnu asset on musl hosts like Alpine (#2889)
321
- - 🐛 Fixes [`config-settings`](https://cibuildwheel.pypa.io/en/stable/options/#config-settings) expansion when `{project}` or `{package}` contains spaces or backslashes (#2886)
322
- - 🐛 Prevents deadlock when `linux32` fails and forwards platform args to the sanity check (#2880, #2888)
323
- - 🐛 Fixes container resource leaks on start failure and during teardown (#2879, #2887)
324
- - 🐛 Removes potential partial cache-population in case of error (#2892)
325
- - 🐛 Raises a clear error when `ANDROID_API_LEVEL` is not an integer (#2891)
326
- - 🐛 Replaces assert with proper exception in python-build-standalone (#2859)
327
- - 🐛 Uses ConfigurationError when `package_dir` is outside cwd instead of a generic Exception (#2898)
328
- - 🛠 Updates dependencies and container pins (#2893, #2882, #2874, #2868, #2862, #2884, #2845, #2837, #2818, #2810, #2838, #2813)
329
- - 🛠 Updates Android to Python 3.13.13 and 3.14.4 (#2821)
330
- - 🛠 Applies Pyodide-specific patches to the Emscripten toolchain installation (#2800)
331
- - 🛠 Uses `python -V -V` for Windows build diagnostics (#2832)
332
- - 🛠 Simplifies pinned container image lookup (#2897)
333
- - 🛠 Minor fixups across error messages, OCI container, and options (#2860)
334
- - 💼 Adds PEP 723 metadata for `bin/` scripts and drops the `bin` dependency group (#2819)
335
- - 💼 Improves Azure test reliability with retries and caching (#2890)
336
- - 💼 Fixes Windows GitLab CI test running (#2870)
337
- - 💼 Updates CI action pins and dev dependencies (#2902, #2867, #2851, #2843, #2826, #2823, #2820, #2807)
338
- - 💼 Adds agent and copilot setup files (#2861)
339
- - 💼 Uses `if TYPE_CHECKING:` blocks (#2866, #2864)
340
- - 🧪 Fixes Android tests using the `uv` frontend (#2809)
341
- - 🧪 Fixes the update-dependencies workflow to use `uv` to run `nox` (#2808)
342
- - 🧪 Adds unit tests for `OCIContainer._get_platform_args` (#2878)
343
- - 📚 Updates documentation for delvewheel as the default Windows [`repair-wheel-command`](https://cibuildwheel.pypa.io/en/stable/options/#repair-wheel-command), including the build diagram, schema defaults, and legal note (#2877, #2853, #2891)
344
- - 📚 Documents platform-specific [`before-build`](https://cibuildwheel.pypa.io/en/stable/options/#before-build) configuration (#2834)
345
- - 📚 Updates the "How it works" diagram with details of Android, iOS, and Pyodide builds (#2816)
346
- - 📚 Adds Pyodide icon and regenerates working examples data for Android, iOS, and Pyodide (#2815, #2811)
347
- - 📚 Adds intersphinx support for external documentation linking (#2871)
348
- - 📚 Adds instructions for building CUDA wheels and fixes manylinux container references in FAQ (#2896, #2900)
349
- - 📚 Links back to source in docs (#2806)
350
- - 📚 Removes outdated numpy info (#2855)
351
-
352
- <!-- [[[end]]] (sum: 0zxqpn7F3B) -->
314
+ <!-- [[[end]]] (sum: X2rbVg9Z07) -->
353
315
 
354
316
  ---
355
317
 
@@ -21,6 +21,12 @@ inputs:
21
21
  description: 'Comma-separated list of extras to install'
22
22
  required: false
23
23
  default: ''
24
+ python-path:
25
+ description: >-
26
+ Python interpreter used to install cibuildwheel. If unset, uses
27
+ actions/setup-python on X64/ARM64, and "python3" on other architectures.
28
+ required: false
29
+ default: ''
24
30
  branding:
25
31
  icon: package
26
32
  color: yellow
@@ -30,6 +36,9 @@ runs:
30
36
  steps:
31
37
  - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
32
38
  id: python
39
+ # Only use setup-python when no interpreter was supplied and the
40
+ # runner architecture is supported.
41
+ if: inputs.python-path == '' && (runner.arch == 'X64' || runner.arch == 'ARM64')
33
42
  with:
34
43
  python-version: "3.11 - 3.14"
35
44
  update-environment: false
@@ -119,7 +128,7 @@ runs:
119
128
  EOF
120
129
  shell: bash
121
130
  env:
122
- PYTHON: ${{ steps.python.outputs.python-path }}
131
+ PYTHON: ${{ inputs.python-path || steps.python.outputs.python-path || 'python3' }}
123
132
  INPUT_PACKAGE_DIR: ${{ inputs.package-dir }}
124
133
  INPUT_OUTPUT_DIR: ${{ inputs.output-dir }}
125
134
  INPUT_CONFIG_FILE: ${{ inputs.config-file }}
@@ -40,6 +40,28 @@ additionalProperties: false
40
40
  description: cibuildwheel's settings.
41
41
  type: object
42
42
  properties:
43
+ inherit:
44
+ type: object
45
+ additionalProperties: false
46
+ properties:
47
+ audit-command: {"$ref": "#/$defs/inherit"}
48
+ audit-requires: {"$ref": "#/$defs/inherit"}
49
+ before-all: {"$ref": "#/$defs/inherit"}
50
+ before-build: {"$ref": "#/$defs/inherit"}
51
+ xbuild-tools: {"$ref": "#/$defs/inherit"}
52
+ xbuild-files: {"$ref": "#/$defs/inherit"}
53
+ before-test: {"$ref": "#/$defs/inherit"}
54
+ config-settings: {"$ref": "#/$defs/inherit"}
55
+ container-engine: {"$ref": "#/$defs/inherit"}
56
+ environment: {"$ref": "#/$defs/inherit"}
57
+ environment-pass: {"$ref": "#/$defs/inherit"}
58
+ repair-wheel-command: {"$ref": "#/$defs/inherit"}
59
+ test-command: {"$ref": "#/$defs/inherit"}
60
+ test-extras: {"$ref": "#/$defs/inherit"}
61
+ test-sources: {"$ref": "#/$defs/inherit"}
62
+ test-requires: {"$ref": "#/$defs/inherit"}
63
+ test-environment: {"$ref": "#/$defs/inherit"}
64
+ test-runtime: {"$ref": "#/$defs/inherit"}
43
65
  audit-command:
44
66
  description: Execute a shell command to audit each wheel after it is repaired. Use {wheel} for each wheel path, or {abi3_wheel} to only audit abi3 wheels.
45
67
  type: string_array
@@ -332,31 +354,30 @@ items:
332
354
  additionalProperties: false
333
355
  properties:
334
356
  select: {}
335
- inherit:
336
- type: object
337
- additionalProperties: false
338
- properties:
339
- audit-command: {"$ref": "#/$defs/inherit"}
340
- audit-requires: {"$ref": "#/$defs/inherit"}
341
- before-all: {"$ref": "#/$defs/inherit"}
342
- before-build: {"$ref": "#/$defs/inherit"}
343
- xbuild-tools: {"$ref": "#/$defs/inherit"}
344
- xbuild-files: {"$ref": "#/$defs/inherit"}
345
- before-test: {"$ref": "#/$defs/inherit"}
346
- config-settings: {"$ref": "#/$defs/inherit"}
347
- container-engine: {"$ref": "#/$defs/inherit"}
348
- environment: {"$ref": "#/$defs/inherit"}
349
- environment-pass: {"$ref": "#/$defs/inherit"}
350
- repair-wheel-command: {"$ref": "#/$defs/inherit"}
351
- test-command: {"$ref": "#/$defs/inherit"}
352
- test-extras: {"$ref": "#/$defs/inherit"}
353
- test-sources: {"$ref": "#/$defs/inherit"}
354
- test-requires: {"$ref": "#/$defs/inherit"}
355
- test-environment: {"$ref": "#/$defs/inherit"}
356
- test-runtime: {"$ref": "#/$defs/inherit"}
357
357
  """
358
358
  )
359
359
 
360
+ INHERITABLE_OPTIONS = frozenset(
361
+ {
362
+ "audit-command",
363
+ "audit-requires",
364
+ "before-all",
365
+ "before-build",
366
+ "before-test",
367
+ "config-settings",
368
+ "environment",
369
+ "environment-pass",
370
+ "repair-wheel-command",
371
+ "test-command",
372
+ "test-environment",
373
+ "test-extras",
374
+ "test-groups",
375
+ "test-requires",
376
+ "test-sources",
377
+ "xbuild-tools",
378
+ }
379
+ )
380
+
360
381
  for key, value in schema["properties"].items():
361
382
  value["title"] = f"CIBW_{key.replace('-', '_').upper()}"
362
383
 
@@ -388,6 +409,19 @@ def as_object(d: dict[str, Any]) -> dict[str, Any]:
388
409
  }
389
410
 
390
411
 
412
+ def inherit_schema(options: dict[str, Any]) -> dict[str, Any]:
413
+ properties = {
414
+ name: {"$ref": "#/$defs/inherit"} for name in options if name in INHERITABLE_OPTIONS
415
+ }
416
+ return {
417
+ "description": "How options at this configuration level inherit previous values.",
418
+ "oneOf": [
419
+ {"type": "string"},
420
+ as_object(properties),
421
+ ],
422
+ }
423
+
424
+
391
425
  oses = {
392
426
  "linux": as_object(non_global_options),
393
427
  "windows": as_object(not_linux),
@@ -410,6 +444,13 @@ for os_name, command in [
410
444
 
411
445
  del oses["linux"]["properties"]["dependency-versions"]
412
446
 
447
+ schema["properties"]["inherit"] = {
448
+ **inherit_schema(schema["properties"]),
449
+ "title": "CIBW_INHERIT",
450
+ }
451
+ overrides["items"]["properties"]["inherit"] = inherit_schema(overrides["items"]["properties"])
452
+ for os_schema in oses.values():
453
+ os_schema["properties"]["inherit"] = inherit_schema(os_schema["properties"])
413
454
 
414
455
  schema["$defs"]["build-frontend-no-pyodide"] = build_frontend_schema(
415
456
  FRONTENDS,