Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c923d83ad9 | ||
|
|
55ee8e49bf | ||
|
|
afe486c21f | ||
|
|
1c1ba8a22e | ||
|
|
33b75f491a | ||
|
|
c59c2fe70d | ||
|
|
24b64c5cd1 | ||
|
|
6425e48fed | ||
|
|
0264b4d03a | ||
|
|
68f9762657 | ||
|
|
95e827ece1 | ||
|
|
ff9a284f21 | ||
|
|
cade3864de | ||
|
|
63bdd4f043 | ||
|
|
5952330610 | ||
|
|
8db3538534 | ||
|
|
e5caaec292 | ||
|
|
5a1712daed | ||
|
|
a4c6d16811 | ||
|
|
78a246a901 | ||
|
|
47c5a31c1b | ||
|
|
3ebb6bd942 |
@@ -1,3 +1,7 @@
|
|||||||
|
# Specification files for platform maintainers
|
||||||
cibuildwheel/platforms/ios.py @freakboy3742
|
cibuildwheel/platforms/ios.py @freakboy3742
|
||||||
cibuildwheel/platforms/pyodide.py @hoodmane @ryanking13 @agriyakhetarpal
|
cibuildwheel/platforms/pyodide.py @hoodmane @ryanking13 @agriyakhetarpal
|
||||||
cibuildwheel/platforms/android.py @mhsmith
|
cibuildwheel/platforms/android.py @mhsmith
|
||||||
|
|
||||||
|
# Constraints files
|
||||||
|
cibuildwheel/resources/constraints-pyodide*.txt @hoodmane @ryanking13 @agriyakhetarpal
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ jobs:
|
|||||||
dist:
|
dist:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v5
|
||||||
|
|
||||||
- uses: hynek/build-and-inspect-python-package@v2
|
- uses: hynek/build-and-inspect-python-package@v2
|
||||||
|
|
||||||
@@ -27,7 +27,7 @@ jobs:
|
|||||||
attestations: write
|
attestations: write
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/download-artifact@v4
|
- uses: actions/download-artifact@v5
|
||||||
with:
|
with:
|
||||||
name: Packages
|
name: Packages
|
||||||
path: dist
|
path: dist
|
||||||
|
|||||||
+45
-11
@@ -37,7 +37,7 @@ jobs:
|
|||||||
name: Linters (mypy, ruff, etc.)
|
name: Linters (mypy, ruff, etc.)
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v5
|
||||||
- uses: actions/setup-python@v5
|
- uses: actions/setup-python@v5
|
||||||
id: python
|
id: python
|
||||||
with:
|
with:
|
||||||
@@ -47,22 +47,47 @@ jobs:
|
|||||||
run: pipx run --python "${{ steps.python.outputs.python-path }}" nox -s pylint -- --output-format=github
|
run: pipx run --python "${{ steps.python.outputs.python-path }}" nox -s pylint -- --output-format=github
|
||||||
|
|
||||||
test:
|
test:
|
||||||
name: Test on ${{ matrix.os }} (${{ matrix.python_version }})
|
name: Test on ${{ matrix.os }} (${{ matrix.python_version }}) ${{ matrix.test_select }}
|
||||||
needs: lint
|
needs: lint
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
os: [ubuntu-latest, ubuntu-24.04-arm, windows-latest, windows-11-arm, macos-13, macos-15]
|
|
||||||
python_version: ['3.13']
|
|
||||||
include:
|
include:
|
||||||
|
# Min Python
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
python_version: '3.11'
|
python_version: '3.11'
|
||||||
|
# Max Python
|
||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
python_version: '3.14'
|
python_version: '3.14'
|
||||||
|
- os: ubuntu-latest
|
||||||
|
python_version: '3.13'
|
||||||
|
test_select: android
|
||||||
|
- os: ubuntu-24.04-arm
|
||||||
|
python_version: '3.13'
|
||||||
|
- os: windows-latest
|
||||||
|
python_version: '3.13'
|
||||||
|
- os: windows-11-arm
|
||||||
|
python_version: '3.13'
|
||||||
|
- os: macos-13
|
||||||
|
python_version: '3.13'
|
||||||
|
- os: macos-15
|
||||||
|
python_version: '3.13'
|
||||||
|
- os: macos-13
|
||||||
|
python_version: '3.13'
|
||||||
|
test_select: ios
|
||||||
|
- os: macos-14 # 20250811 macos-15 update caused havoc with iOS simulators
|
||||||
|
python_version: '3.13'
|
||||||
|
test_select: ios
|
||||||
|
- os: macos-13
|
||||||
|
python_version: '3.13'
|
||||||
|
test_select: android
|
||||||
|
- os: macos-15
|
||||||
|
python_version: '3.13'
|
||||||
|
test_select: android
|
||||||
timeout-minutes: 180
|
timeout-minutes: 180
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v5
|
||||||
- uses: actions/setup-python@v5
|
- uses: actions/setup-python@v5
|
||||||
name: Install Python ${{ matrix.python_version }}
|
name: Install Python ${{ matrix.python_version }}
|
||||||
with:
|
with:
|
||||||
@@ -129,10 +154,12 @@ jobs:
|
|||||||
output-dir: wheelhouse
|
output-dir: wheelhouse
|
||||||
env:
|
env:
|
||||||
CIBW_ARCHS_MACOS: x86_64 universal2 arm64
|
CIBW_ARCHS_MACOS: x86_64 universal2 arm64
|
||||||
CIBW_BUILD_FRONTEND: 'build[uv]'
|
CIBW_BUILD_FRONTEND: ${{ matrix.test_select && 'build' || 'build[uv]' }}
|
||||||
|
CIBW_PLATFORM: ${{ matrix.test_select }}
|
||||||
|
|
||||||
- name: Run a sample build (GitHub Action, only)
|
- name: Run a sample build (GitHub Action, only)
|
||||||
uses: ./
|
uses: ./
|
||||||
|
if: matrix.test_select == ''
|
||||||
with:
|
with:
|
||||||
package-dir: sample_proj
|
package-dir: sample_proj
|
||||||
output-dir: wheelhouse_only
|
output-dir: wheelhouse_only
|
||||||
@@ -152,6 +179,8 @@ jobs:
|
|||||||
|
|
||||||
- name: Run a sample build (GitHub Action, config-file)
|
- name: Run a sample build (GitHub Action, config-file)
|
||||||
uses: ./
|
uses: ./
|
||||||
|
env:
|
||||||
|
CIBW_PLATFORM: ${{ matrix.test_select }}
|
||||||
with:
|
with:
|
||||||
package-dir: sample_proj
|
package-dir: sample_proj
|
||||||
output-dir: wheelhouse_config_file
|
output-dir: wheelhouse_config_file
|
||||||
@@ -161,9 +190,14 @@ jobs:
|
|||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
test $(find wheelhouse -name '*.whl' | wc -l) -ge 1
|
test $(find wheelhouse -name '*.whl' | wc -l) -ge 1
|
||||||
test $(find wheelhouse_only -name '*.whl' | wc -l) -eq 1
|
|
||||||
test $(find wheelhouse_config_file -name '*.whl' | wc -l) -eq 1
|
test $(find wheelhouse_config_file -name '*.whl' | wc -l) -eq 1
|
||||||
|
|
||||||
|
- name: Check Action artifacts (native build only)
|
||||||
|
if: matrix.test_select == ''
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
test $(find wheelhouse_only -name '*.whl' | wc -l) -eq 1
|
||||||
|
|
||||||
- uses: actions/upload-artifact@v4
|
- uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: cibw-wheels-${{ matrix.os }}-${{ strategy.job-index }}
|
name: cibw-wheels-${{ matrix.os }}-${{ strategy.job-index }}
|
||||||
@@ -171,7 +205,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Test cibuildwheel
|
- name: Test cibuildwheel
|
||||||
run: |
|
run: |
|
||||||
uv run --no-sync bin/run_tests.py ${{ (runner.os == 'Linux' && runner.arch == 'X64') && '--run-podman' || '' }}
|
uv run --no-sync bin/run_tests.py --test-select=${{ matrix.test_select || 'native' }} ${{ (runner.os == 'Linux' && runner.arch == 'X64') && '--run-podman' || '' }}
|
||||||
|
|
||||||
emulated-archs:
|
emulated-archs:
|
||||||
name: Get qemu emulated architectures
|
name: Get qemu emulated architectures
|
||||||
@@ -180,7 +214,7 @@ jobs:
|
|||||||
outputs:
|
outputs:
|
||||||
archs: ${{ steps.archs.outputs.archs }}
|
archs: ${{ steps.archs.outputs.archs }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v5
|
||||||
- uses: actions/setup-python@v5
|
- uses: actions/setup-python@v5
|
||||||
with:
|
with:
|
||||||
python-version: "3.x"
|
python-version: "3.x"
|
||||||
@@ -203,7 +237,7 @@ jobs:
|
|||||||
matrix:
|
matrix:
|
||||||
arch: ${{ fromJSON(needs.emulated-archs.outputs.archs) }}
|
arch: ${{ fromJSON(needs.emulated-archs.outputs.archs) }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v5
|
||||||
- uses: actions/setup-python@v5
|
- uses: actions/setup-python@v5
|
||||||
with:
|
with:
|
||||||
python-version: "3.x"
|
python-version: "3.x"
|
||||||
@@ -223,7 +257,7 @@ jobs:
|
|||||||
runs-on: ubuntu-24.04
|
runs-on: ubuntu-24.04
|
||||||
timeout-minutes: 180
|
timeout-minutes: 180
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v5
|
||||||
- uses: actions/setup-python@v5
|
- uses: actions/setup-python@v5
|
||||||
name: Install Python 3.12
|
name: Install Python 3.12
|
||||||
with:
|
with:
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ jobs:
|
|||||||
app-id: ${{ secrets.CIBUILDWHEEL_BOT_APP_ID }}
|
app-id: ${{ secrets.CIBUILDWHEEL_BOT_APP_ID }}
|
||||||
private-key: ${{ secrets.CIBUILDWHEEL_BOT_APP_PRIVATE_KEY }}
|
private-key: ${{ secrets.CIBUILDWHEEL_BOT_APP_PRIVATE_KEY }}
|
||||||
|
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v5
|
||||||
|
|
||||||
- uses: wntrblm/nox@2025.05.01
|
- uses: wntrblm/nox@2025.05.01
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ jobs:
|
|||||||
permissions:
|
permissions:
|
||||||
contents: write
|
contents: write
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v5
|
||||||
|
|
||||||
- name: Update the ${{ env.TAG_NAME }} tag
|
- name: Update the ${{ env.TAG_NAME }} tag
|
||||||
id: update-major-minor-tag
|
id: update-major-minor-tag
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
repos:
|
repos:
|
||||||
|
|
||||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||||
rev: v5.0.0
|
rev: v6.0.0
|
||||||
hooks:
|
hooks:
|
||||||
- id: check-case-conflict
|
- id: check-case-conflict
|
||||||
- id: check-merge-conflict
|
- id: check-merge-conflict
|
||||||
@@ -14,14 +14,14 @@ repos:
|
|||||||
- id: trailing-whitespace
|
- id: trailing-whitespace
|
||||||
|
|
||||||
- repo: https://github.com/astral-sh/ruff-pre-commit
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
||||||
rev: v0.12.5
|
rev: v0.12.9
|
||||||
hooks:
|
hooks:
|
||||||
- id: ruff
|
- id: ruff
|
||||||
args: ["--fix", "--show-fixes"]
|
args: ["--fix", "--show-fixes"]
|
||||||
- id: ruff-format
|
- id: ruff-format
|
||||||
|
|
||||||
- repo: https://github.com/pre-commit/mirrors-mypy
|
- repo: https://github.com/pre-commit/mirrors-mypy
|
||||||
rev: v1.17.0
|
rev: v1.17.1
|
||||||
hooks:
|
hooks:
|
||||||
- id: mypy
|
- id: mypy
|
||||||
name: mypy 3.11 on cibuildwheel/
|
name: mypy 3.11 on cibuildwheel/
|
||||||
@@ -54,7 +54,7 @@ repos:
|
|||||||
additional_dependencies: *mypy-dependencies
|
additional_dependencies: *mypy-dependencies
|
||||||
|
|
||||||
- repo: https://github.com/shellcheck-py/shellcheck-py
|
- repo: https://github.com/shellcheck-py/shellcheck-py
|
||||||
rev: v0.10.0.1
|
rev: v0.11.0.1
|
||||||
hooks:
|
hooks:
|
||||||
- id: shellcheck
|
- id: shellcheck
|
||||||
|
|
||||||
@@ -83,7 +83,7 @@ repos:
|
|||||||
|
|
||||||
|
|
||||||
- repo: https://github.com/python-jsonschema/check-jsonschema
|
- repo: https://github.com/python-jsonschema/check-jsonschema
|
||||||
rev: 0.33.2
|
rev: 0.33.3
|
||||||
hooks:
|
hooks:
|
||||||
- id: check-dependabot
|
- id: check-dependabot
|
||||||
- id: check-github-actions
|
- id: check-github-actions
|
||||||
|
|||||||
@@ -91,13 +91,13 @@ jobs:
|
|||||||
os: [ubuntu-latest, ubuntu-24.04-arm, windows-latest, windows-11-arm, macos-13, macos-latest]
|
os: [ubuntu-latest, ubuntu-24.04-arm, windows-latest, windows-11-arm, macos-13, macos-latest]
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v5
|
||||||
|
|
||||||
# Used to host cibuildwheel
|
# Used to host cibuildwheel
|
||||||
- uses: actions/setup-python@v5
|
- uses: actions/setup-python@v5
|
||||||
|
|
||||||
- name: Install cibuildwheel
|
- name: Install cibuildwheel
|
||||||
run: python -m pip install cibuildwheel==3.1.3
|
run: python -m pip install cibuildwheel==3.1.4
|
||||||
|
|
||||||
- name: Build wheels
|
- name: Build wheels
|
||||||
run: python -m cibuildwheel --output-dir wheelhouse
|
run: python -m cibuildwheel --output-dir wheelhouse
|
||||||
@@ -178,8 +178,8 @@ Here are some repos that use cibuildwheel.
|
|||||||
| Name | CI | OS | Notes |
|
| Name | CI | OS | Notes |
|
||||||
|-----------------------------------|----|----|:------|
|
|-----------------------------------|----|----|:------|
|
||||||
| [scikit-learn][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | The machine learning library. A complex but clean config using many of cibuildwheel's features to build a large project with Cython and C++ extensions. |
|
| [scikit-learn][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | The machine learning library. A complex but clean config using many of cibuildwheel's features to build a large project with Cython and C++ extensions. |
|
||||||
| [pytorch-fairseq][] | ![github icon][] | ![apple icon][] ![linux icon][] | Facebook AI Research Sequence-to-Sequence Toolkit written in Python. |
|
|
||||||
| [duckdb][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | DuckDB is an analytical in-process SQL database management system |
|
| [duckdb][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | DuckDB is an analytical in-process SQL database management system |
|
||||||
|
| [pytorch-fairseq][] | ![github icon][] | ![apple icon][] ![linux icon][] | Facebook AI Research Sequence-to-Sequence Toolkit written in Python. |
|
||||||
| [NumPy][] | ![github icon][] ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | The fundamental package for scientific computing with Python. |
|
| [NumPy][] | ![github icon][] ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | The fundamental package for scientific computing with Python. |
|
||||||
| [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. |
|
| [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. |
|
||||||
| [NCNN][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | ncnn is a high-performance neural network inference framework optimized for the mobile platform |
|
| [NCNN][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | ncnn is a high-performance neural network inference framework optimized for the mobile platform |
|
||||||
@@ -189,8 +189,8 @@ Here are some repos that use cibuildwheel.
|
|||||||
| [Kivy][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Open source UI framework written in Python, running on Windows, Linux, macOS, Android and iOS |
|
| [Kivy][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Open source UI framework written in Python, running on Windows, Linux, macOS, Android and iOS |
|
||||||
|
|
||||||
[scikit-learn]: https://github.com/scikit-learn/scikit-learn
|
[scikit-learn]: https://github.com/scikit-learn/scikit-learn
|
||||||
[pytorch-fairseq]: https://github.com/facebookresearch/fairseq
|
|
||||||
[duckdb]: https://github.com/duckdb/duckdb
|
[duckdb]: https://github.com/duckdb/duckdb
|
||||||
|
[pytorch-fairseq]: https://github.com/facebookresearch/fairseq
|
||||||
[NumPy]: https://github.com/numpy/numpy
|
[NumPy]: https://github.com/numpy/numpy
|
||||||
[Tornado]: https://github.com/tornadoweb/tornado
|
[Tornado]: https://github.com/tornadoweb/tornado
|
||||||
[NCNN]: https://github.com/Tencent/ncnn
|
[NCNN]: https://github.com/Tencent/ncnn
|
||||||
@@ -227,14 +227,32 @@ Changelog
|
|||||||
|
|
||||||
<!-- [[[cog from readme_changelog import mini_changelog; print(mini_changelog()) ]]] -->
|
<!-- [[[cog from readme_changelog import mini_changelog; print(mini_changelog()) ]]] -->
|
||||||
|
|
||||||
|
### v3.1.4
|
||||||
|
|
||||||
|
_19 August 2025_
|
||||||
|
|
||||||
|
- ✨ Add a `--clean-cache` command to clean up our cache (#2489)
|
||||||
|
- 🛠 Update Python to 3.14rc2 and other patch version bumps (#2542, #2556)
|
||||||
|
- 🛠 Update Pyodide to 0.28.2 (#2562, #2558)
|
||||||
|
- 🐛 Fix resolution with `pyodide-build` when `dependency-versions` is set (#2548)
|
||||||
|
- 🐛 Set `CMAKE_FIND_ROOT_PATH_MODE_PACKAGE` to `BOTH` on Android (#2547)
|
||||||
|
- 🐛 Add `patchelf` dependency for platforms that can build Android wheels (#2552)
|
||||||
|
- 🐛 Ignore empty values for `CIBW_ARCHS` like most other environment variables (#2541)
|
||||||
|
- 💼 The `color` and `suggest_on_error` argparse options are now default in 3.14rc1+ (#2554)
|
||||||
|
- 💼 Use the virtualenv release URL instead of blob URL (should be more robust) (#2555)
|
||||||
|
- 🧪 For iOS, lowering to macos-14 is needed for now due to issues with GitHub's runner images (#2557)
|
||||||
|
- 🧪 Split out platforms iOS and Android in our tests (#2519)
|
||||||
|
- 🧪 Fix and enable doctests (#2546)
|
||||||
|
- 📚 Improve our docs on free-threading (#2549)
|
||||||
|
|
||||||
|
|
||||||
### v3.1.3
|
### v3.1.3
|
||||||
|
|
||||||
_1 August 2025_
|
_1 August 2025_
|
||||||
|
|
||||||
- 🐛 Fix bug where "latest" dependencies couldn't update to pip 25.2 on Windows (#2537)
|
- 🐛 Fix bug where "latest" dependencies couldn't update to pip 25.2 on Windows (#2537)
|
||||||
- 🛠 Use pytest-rerunfailures to improve some of our iOS/Android tests (#2527, #2539)
|
- 🧪 Use pytest-rerunfailures to improve some of our iOS/Android tests (#2527, #2539)
|
||||||
- 🛠 Remove some GraalPy Windows workarounds in our tests (#2501)
|
- 🧪 Remove some GraalPy Windows workarounds in our tests (#2501)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### v3.1.2
|
### v3.1.2
|
||||||
@@ -272,19 +290,10 @@ _23 July 2025_
|
|||||||
- 🛠 Fixed a typo in the 3.9 MUSL riscv64 identifier (`cp39-musllinux_ricv64` -> `cp39-musllinux_riscv64`) (#2490)
|
- 🛠 Fixed a typo in the 3.9 MUSL riscv64 identifier (`cp39-musllinux_ricv64` -> `cp39-musllinux_riscv64`) (#2490)
|
||||||
- 🛠 Mistyping `--only` now shows the correct possibilities, and even suggests near matches on Python 3.14+ (#2499)
|
- 🛠 Mistyping `--only` now shows the correct possibilities, and even suggests near matches on Python 3.14+ (#2499)
|
||||||
- 🛠 Only support one output from the repair step on linux like other platforms; auditwheel fixed this over four years ago! (#2478)
|
- 🛠 Only support one output from the repair step on linux like other platforms; auditwheel fixed this over four years ago! (#2478)
|
||||||
- 🛠 We now use pattern matching extensively (#2434)
|
- 💼 We now use pattern matching extensively (#2434)
|
||||||
- 📚 We now have platform maintainers for our special platforms and interpreters! (#2481)
|
- 📚 We now have platform maintainers for our special platforms and interpreters! (#2481)
|
||||||
|
|
||||||
|
<!-- [[[end]]] (sum: loynkRqdzf) -->
|
||||||
|
|
||||||
### v3.0.1
|
|
||||||
|
|
||||||
_5 July 2025_
|
|
||||||
|
|
||||||
- 🛠 Updates CPython 3.14 prerelease to 3.14.0b3 (#2471)
|
|
||||||
- ✨ Adds a CPython 3.14 prerelease iOS build (only when prerelease builds are [enabled](https://cibuildwheel.pypa.io/en/stable/options/#enable)) (#2475)
|
|
||||||
|
|
||||||
<!-- [[[end]]] (sum: Fe+mD8YR4+) -->
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
+46
-47
@@ -16,62 +16,61 @@ pr:
|
|||||||
- noxfile.py
|
- noxfile.py
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
- job: linux_311
|
- job: tests
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
linux_311:
|
||||||
|
imageName: "ubuntu-latest"
|
||||||
|
pythonVersion: "3.11"
|
||||||
|
testSelect: "native"
|
||||||
|
android_311:
|
||||||
|
imageName: "ubuntu-latest"
|
||||||
|
pythonVersion: "3.11"
|
||||||
|
testSelect: "android"
|
||||||
|
macos_311:
|
||||||
|
imageName: "macos-latest"
|
||||||
|
pythonVersion: "3.11"
|
||||||
|
testSelect: "native"
|
||||||
|
ios_311:
|
||||||
|
imageName: "macos-latest"
|
||||||
|
pythonVersion: "3.11"
|
||||||
|
testSelect: "ios"
|
||||||
|
android_macos_311:
|
||||||
|
imageName: "macos-latest"
|
||||||
|
pythonVersion: "3.11"
|
||||||
|
testSelect: "android"
|
||||||
|
windows_311:
|
||||||
|
imageName: "windows-latest"
|
||||||
|
pythonVersion: "3.11"
|
||||||
|
testSelect: "native"
|
||||||
timeoutInMinutes: 180
|
timeoutInMinutes: 180
|
||||||
pool: {vmImage: 'ubuntu-latest'}
|
pool:
|
||||||
|
vmImage: $(imageName)
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- task: UsePythonVersion@0
|
- task: UsePythonVersion@0
|
||||||
inputs:
|
inputs:
|
||||||
versionSpec: '3.11'
|
versionSpec: $(pythonVersion)
|
||||||
|
|
||||||
- task: JavaToolInstaller@0
|
- task: JavaToolInstaller@0
|
||||||
|
condition: and(eq(variables['testSelect'], 'android'), eq(variables['Agent.OS'], 'Linux'))
|
||||||
inputs:
|
inputs:
|
||||||
versionSpec: '17'
|
versionSpec: '17'
|
||||||
jdkArchitectureOption: 'x64'
|
jdkArchitectureOption: 'x64'
|
||||||
jdkSourceOption: 'PreInstalled'
|
jdkSourceOption: 'PreInstalled'
|
||||||
- bash: |
|
|
||||||
docker run --rm --privileged docker.io/tonistiigi/binfmt:latest --install all
|
|
||||||
python -m pip install -U pip
|
|
||||||
python -m pip install -e. --group test
|
|
||||||
if [ "$(Build.SourceBranch)" = "refs/heads/main" ]; then
|
|
||||||
echo "INFO: Exporting CIBW_ENABLE=all for main branch test run."
|
|
||||||
export CIBW_ENABLE=all
|
|
||||||
else
|
|
||||||
echo "INFO: CIBW_ENABLE not set for this branch ($(Build.SourceBranch))."
|
|
||||||
fi
|
|
||||||
python ./bin/run_tests.py
|
|
||||||
|
|
||||||
- job: macos_311
|
- bash: docker run --rm --privileged docker.io/tonistiigi/binfmt:latest --install all
|
||||||
pool: {vmImage: 'macOS-latest'}
|
condition: and(eq(variables['imageName'], 'ubuntu-latest'), eq(variables['testSelect'], 'native'))
|
||||||
timeoutInMinutes: 120
|
displayName: 'Install binfmt on Linux'
|
||||||
steps:
|
|
||||||
- task: UsePythonVersion@0
|
- bash: python -m pip install -U pip && python -m pip install -e. --group test
|
||||||
inputs:
|
displayName: 'Update pip and install cibuildwheel --group test'
|
||||||
versionSpec: '3.11'
|
|
||||||
- bash: |
|
- bash: echo "##vso[task.setvariable variable=CIBW_ENABLE;]all"
|
||||||
python -m pip install -U pip
|
condition: eq(variables['Build.SourceBranch'], 'refs/heads/main')
|
||||||
python -m pip install -e. --group test
|
displayName: Set CIBW_ENABLE to all (main branch)
|
||||||
if [ "$(Build.SourceBranch)" = "refs/heads/main" ]; then
|
|
||||||
echo "INFO: Exporting CIBW_ENABLE=all for main branch test run."
|
|
||||||
export CIBW_ENABLE=all
|
|
||||||
else
|
|
||||||
echo "INFO: CIBW_ENABLE not set for this branch ($(Build.SourceBranch))."
|
|
||||||
fi
|
|
||||||
python ./bin/run_tests.py
|
|
||||||
|
|
||||||
- job: windows_311
|
|
||||||
pool: {vmImage: 'windows-latest'}
|
|
||||||
timeoutInMinutes: 180
|
|
||||||
steps:
|
|
||||||
- task: UsePythonVersion@0
|
|
||||||
inputs:
|
|
||||||
versionSpec: '3.11'
|
|
||||||
- bash: |
|
- bash: |
|
||||||
python -m pip install -U pip
|
echo "CIBW_ENABLE = $CIBW_ENABLE"
|
||||||
python -m pip install -e. --group test
|
python ./bin/run_tests.py --test-select $(testSelect)
|
||||||
if [ "$(Build.SourceBranch)" = "refs/heads/main" ]; then
|
displayName: 'Run tests'
|
||||||
echo "INFO: Exporting CIBW_ENABLE=all for main branch test run."
|
|
||||||
export CIBW_ENABLE=all
|
|
||||||
else
|
|
||||||
echo "INFO: CIBW_ENABLE not set for this branch ($(Build.SourceBranch))."
|
|
||||||
fi
|
|
||||||
python ./bin/run_tests.py
|
|
||||||
|
|||||||
@@ -6,17 +6,12 @@
|
|||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
import copy
|
import copy
|
||||||
import functools
|
|
||||||
import json
|
import json
|
||||||
import sys
|
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
import yaml
|
import yaml
|
||||||
|
|
||||||
make_parser = functools.partial(argparse.ArgumentParser, allow_abbrev=False)
|
parser = argparse.ArgumentParser(allow_abbrev=False)
|
||||||
if sys.version_info >= (3, 14):
|
|
||||||
make_parser = functools.partial(make_parser, color=True, suggest_on_error=True)
|
|
||||||
parser = make_parser()
|
|
||||||
parser.add_argument("--schemastore", action="store_true", help="Generate schema_store version")
|
parser.add_argument("--schemastore", action="store_true", help="Generate schema_store version")
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
|||||||
+51
-19
@@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
import functools
|
|
||||||
import os
|
import os
|
||||||
import subprocess
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
@@ -14,10 +13,7 @@ if __name__ == "__main__":
|
|||||||
else:
|
else:
|
||||||
default_cpu_count = os.process_cpu_count() or 2
|
default_cpu_count = os.process_cpu_count() or 2
|
||||||
|
|
||||||
make_parser = functools.partial(argparse.ArgumentParser, allow_abbrev=False)
|
parser = argparse.ArgumentParser(allow_abbrev=False)
|
||||||
if sys.version_info >= (3, 14):
|
|
||||||
make_parser = functools.partial(make_parser, color=True, suggest_on_error=True)
|
|
||||||
parser = make_parser()
|
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--run-podman", action="store_true", default=False, help="run podman tests (linux only)"
|
"--run-podman", action="store_true", default=False, help="run podman tests (linux only)"
|
||||||
)
|
)
|
||||||
@@ -27,26 +23,66 @@ if __name__ == "__main__":
|
|||||||
default=default_cpu_count,
|
default=default_cpu_count,
|
||||||
help="number of processes to use for testing",
|
help="number of processes to use for testing",
|
||||||
)
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--test-select",
|
||||||
|
choices={"all", "native", "android", "ios", "pyodide"},
|
||||||
|
default="all",
|
||||||
|
help="Either 'native' or 'android'/'ios'/'pyodide'",
|
||||||
|
)
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
# move cwd to the project root
|
# move cwd to the project root
|
||||||
os.chdir(Path(__file__).resolve().parents[1])
|
os.chdir(Path(__file__).resolve().parents[1])
|
||||||
|
|
||||||
|
# doc tests
|
||||||
|
doc_test_args = [sys.executable, "-m", "pytest", "cibuildwheel"]
|
||||||
|
|
||||||
|
print(
|
||||||
|
"\n\n================================== DOC TESTS ==================================",
|
||||||
|
flush=True,
|
||||||
|
)
|
||||||
|
result = subprocess.run(doc_test_args, check=False)
|
||||||
|
if result.returncode not in (0, 5):
|
||||||
|
# Allow case where no doctests are collected (returncode 5) because
|
||||||
|
# circleci sets an explicit "-k" filter that disables doctests. There
|
||||||
|
# isn't a pattern that will only select doctests. This can be removed
|
||||||
|
# and have check=True if the circleci PYTEST_ADDOPTS is removed.
|
||||||
|
raise subprocess.CalledProcessError(
|
||||||
|
result.returncode, result.args, output=result.stdout, stderr=result.stderr
|
||||||
|
)
|
||||||
|
|
||||||
# unit tests
|
# unit tests
|
||||||
|
print(
|
||||||
|
"\n\n================================== UNIT TESTS ==================================",
|
||||||
|
flush=True,
|
||||||
|
)
|
||||||
unit_test_args = [sys.executable, "-m", "pytest", "unit_test"]
|
unit_test_args = [sys.executable, "-m", "pytest", "unit_test"]
|
||||||
|
|
||||||
if sys.platform.startswith("linux") and os.environ.get("CIBW_PLATFORM", "linux") == "linux":
|
if (
|
||||||
|
sys.platform.startswith("linux")
|
||||||
|
and os.environ.get("CIBW_PLATFORM", "linux") == "linux"
|
||||||
|
and args.test_select in ["all", "native"]
|
||||||
|
):
|
||||||
# run the docker unit tests only on Linux
|
# run the docker unit tests only on Linux
|
||||||
unit_test_args += ["--run-docker"]
|
unit_test_args += ["--run-docker"]
|
||||||
|
|
||||||
if args.run_podman:
|
if args.run_podman:
|
||||||
unit_test_args += ["--run-podman"]
|
unit_test_args += ["--run-podman"]
|
||||||
|
|
||||||
|
subprocess.run(unit_test_args, check=True)
|
||||||
|
|
||||||
print(
|
print(
|
||||||
"\n\n================================== UNIT TESTS ==================================",
|
"\n\n=========================== SERIAL INTEGRATION TESTS ===========================",
|
||||||
flush=True,
|
flush=True,
|
||||||
)
|
)
|
||||||
subprocess.run(unit_test_args, check=True)
|
|
||||||
|
match args.test_select:
|
||||||
|
case "all":
|
||||||
|
marks = []
|
||||||
|
case "native":
|
||||||
|
marks = ["not pyodide", "not android", "not ios"]
|
||||||
|
case mark:
|
||||||
|
marks = [f"{mark}"]
|
||||||
|
|
||||||
# Run the serial integration tests without multiple processes
|
# Run the serial integration tests without multiple processes
|
||||||
serial_integration_test_args = [
|
serial_integration_test_args = [
|
||||||
@@ -54,7 +90,7 @@ if __name__ == "__main__":
|
|||||||
"-m",
|
"-m",
|
||||||
"pytest",
|
"pytest",
|
||||||
"-m",
|
"-m",
|
||||||
"serial",
|
f"{' and '.join(['serial', *marks])}",
|
||||||
"-x",
|
"-x",
|
||||||
"--durations",
|
"--durations",
|
||||||
"0",
|
"0",
|
||||||
@@ -62,19 +98,19 @@ if __name__ == "__main__":
|
|||||||
"test",
|
"test",
|
||||||
"-vv",
|
"-vv",
|
||||||
]
|
]
|
||||||
print(
|
|
||||||
"\n\n=========================== SERIAL INTEGRATION TESTS ===========================",
|
|
||||||
flush=True,
|
|
||||||
)
|
|
||||||
subprocess.run(serial_integration_test_args, check=True)
|
subprocess.run(serial_integration_test_args, check=True)
|
||||||
|
|
||||||
# Non-serial integration tests
|
print(
|
||||||
|
"\n\n========================= NON-SERIAL INTEGRATION TESTS =========================",
|
||||||
|
flush=True,
|
||||||
|
)
|
||||||
integration_test_args = [
|
integration_test_args = [
|
||||||
sys.executable,
|
sys.executable,
|
||||||
"-m",
|
"-m",
|
||||||
"pytest",
|
"pytest",
|
||||||
"-m",
|
"-m",
|
||||||
"not serial",
|
f"{' and '.join(['not serial', *marks])}",
|
||||||
f"--numprocesses={args.num_processes}",
|
f"--numprocesses={args.num_processes}",
|
||||||
"-x",
|
"-x",
|
||||||
"--durations",
|
"--durations",
|
||||||
@@ -87,8 +123,4 @@ if __name__ == "__main__":
|
|||||||
if sys.platform.startswith("linux") and args.run_podman:
|
if sys.platform.startswith("linux") and args.run_podman:
|
||||||
integration_test_args += ["--run-podman"]
|
integration_test_args += ["--run-podman"]
|
||||||
|
|
||||||
print(
|
|
||||||
"\n\n========================= NON-SERIAL INTEGRATION TESTS =========================",
|
|
||||||
flush=True,
|
|
||||||
)
|
|
||||||
subprocess.run(integration_test_args, check=True)
|
subprocess.run(integration_test_args, check=True)
|
||||||
|
|||||||
+1
-5
@@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
import functools
|
|
||||||
import os
|
import os
|
||||||
import subprocess
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
@@ -13,10 +12,7 @@ if __name__ == "__main__":
|
|||||||
# move cwd to the project root
|
# move cwd to the project root
|
||||||
os.chdir(Path(__file__).resolve().parents[1])
|
os.chdir(Path(__file__).resolve().parents[1])
|
||||||
|
|
||||||
make_parser = functools.partial(argparse.ArgumentParser, allow_abbrev=False)
|
parser = argparse.ArgumentParser(description="Runs a sample build", allow_abbrev=False)
|
||||||
if sys.version_info >= (3, 14):
|
|
||||||
make_parser = functools.partial(make_parser, color=True, suggest_on_error=True)
|
|
||||||
parser = make_parser(description="Runs a sample build")
|
|
||||||
parser.add_argument("project_python_path", nargs="?", default="test.test_0_basic.basic_project")
|
parser.add_argument("project_python_path", nargs="?", default="test.test_0_basic.basic_project")
|
||||||
|
|
||||||
options = parser.parse_args()
|
options = parser.parse_args()
|
||||||
|
|||||||
+31
-30
@@ -4,17 +4,18 @@
|
|||||||
import dataclasses
|
import dataclasses
|
||||||
import difflib
|
import difflib
|
||||||
import logging
|
import logging
|
||||||
import subprocess
|
|
||||||
import tomllib
|
import tomllib
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Final
|
from typing import Final
|
||||||
|
|
||||||
import click
|
import click
|
||||||
import rich
|
import rich
|
||||||
from packaging.version import InvalidVersion, Version
|
from packaging.version import Version
|
||||||
from rich.logging import RichHandler
|
from rich.logging import RichHandler
|
||||||
from rich.syntax import Syntax
|
from rich.syntax import Syntax
|
||||||
|
|
||||||
|
from cibuildwheel.extra import github_api_request
|
||||||
|
|
||||||
log = logging.getLogger("cibw")
|
log = logging.getLogger("cibw")
|
||||||
|
|
||||||
# Looking up the dir instead of using utils.resources_dir
|
# Looking up the dir instead of using utils.resources_dir
|
||||||
@@ -30,32 +31,26 @@ GET_VIRTUALENV_URL_TEMPLATE: Final[str] = (
|
|||||||
|
|
||||||
@dataclasses.dataclass(frozen=True, order=True)
|
@dataclasses.dataclass(frozen=True, order=True)
|
||||||
class VersionTuple:
|
class VersionTuple:
|
||||||
|
name: str
|
||||||
|
download_url: str
|
||||||
version: Version
|
version: Version
|
||||||
version_string: str
|
|
||||||
|
|
||||||
|
|
||||||
def git_ls_remote_versions(url: str) -> list[VersionTuple]:
|
def get_latest_virtualenv_release() -> VersionTuple:
|
||||||
versions: list[VersionTuple] = []
|
response = github_api_request("repos/pypa/get-virtualenv/releases/latest")
|
||||||
tags = subprocess.run(
|
tag_name = response["tag_name"]
|
||||||
["git", "ls-remote", "--tags", url], check=True, text=True, capture_output=True
|
|
||||||
).stdout.splitlines()
|
asset = next(
|
||||||
for tag in tags:
|
(asset for asset in response["assets"] if asset["name"] == "virtualenv.pyz"),
|
||||||
_, ref = tag.split()
|
None,
|
||||||
assert ref.startswith("refs/tags/")
|
)
|
||||||
version_string = ref[10:]
|
if not asset:
|
||||||
try:
|
msg = "No asset named 'virtualenv.pyz' found in the latest release of get-virtualenv."
|
||||||
version = Version(version_string)
|
raise RuntimeError(msg)
|
||||||
if version.is_devrelease:
|
|
||||||
log.info("Ignoring development release %r", str(version))
|
return VersionTuple(
|
||||||
continue
|
version=Version(tag_name), name=tag_name, download_url=asset["browser_download_url"]
|
||||||
if version.is_prerelease:
|
)
|
||||||
log.info("Ignoring pre-release %r", str(version))
|
|
||||||
continue
|
|
||||||
versions.append(VersionTuple(version, version_string))
|
|
||||||
except InvalidVersion:
|
|
||||||
log.warning("Ignoring ref %r", ref)
|
|
||||||
versions.sort(reverse=True)
|
|
||||||
return versions
|
|
||||||
|
|
||||||
|
|
||||||
@click.command()
|
@click.command()
|
||||||
@@ -78,14 +73,20 @@ def update_virtualenv(force: bool, level: str) -> None:
|
|||||||
with toml_file_path.open("rb") as f:
|
with toml_file_path.open("rb") as f:
|
||||||
configurations = tomllib.load(f)
|
configurations = tomllib.load(f)
|
||||||
default = configurations.pop("default")
|
default = configurations.pop("default")
|
||||||
version = str(default["version"])
|
local_version = str(default["version"])
|
||||||
versions = git_ls_remote_versions(GET_VIRTUALENV_GITHUB)
|
|
||||||
if versions[0].version > Version(version):
|
latest_release = get_latest_virtualenv_release()
|
||||||
version = versions[0].version_string
|
|
||||||
|
if latest_release.version > Version(local_version):
|
||||||
|
version = latest_release.name
|
||||||
|
url = latest_release.download_url
|
||||||
|
else:
|
||||||
|
version = local_version
|
||||||
|
url = default["url"]
|
||||||
|
|
||||||
configurations["default"] = {
|
configurations["default"] = {
|
||||||
"version": version,
|
"version": version,
|
||||||
"url": GET_VIRTUALENV_URL_TEMPLATE.format(version=version),
|
"url": url,
|
||||||
}
|
}
|
||||||
result_toml = "".join(
|
result_toml = "".join(
|
||||||
f'{key} = {{ version = "{value["version"]}", url = "{value["url"]}" }}\n'
|
f'{key} = {{ version = "{value["version"]}", url = "{value["url"]}" }}\n'
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
__version__ = "3.1.3"
|
__version__ = "3.1.4"
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
import argparse
|
import argparse
|
||||||
import contextlib
|
import contextlib
|
||||||
import dataclasses
|
import dataclasses
|
||||||
import functools
|
|
||||||
import os
|
import os
|
||||||
import shutil
|
import shutil
|
||||||
import sys
|
import sys
|
||||||
@@ -24,7 +23,7 @@ from cibuildwheel.options import CommandLineArguments, Options, compute_options
|
|||||||
from cibuildwheel.platforms import ALL_PLATFORM_MODULES, get_build_identifiers, native_platform
|
from cibuildwheel.platforms import ALL_PLATFORM_MODULES, get_build_identifiers, native_platform
|
||||||
from cibuildwheel.selector import BuildSelector, EnableGroup, selector_matches
|
from cibuildwheel.selector import BuildSelector, EnableGroup, selector_matches
|
||||||
from cibuildwheel.typing import PLATFORMS, PlatformName
|
from cibuildwheel.typing import PLATFORMS, PlatformName
|
||||||
from cibuildwheel.util.file import CIBW_CACHE_PATH
|
from cibuildwheel.util.file import CIBW_CACHE_PATH, ensure_cache_sentinel
|
||||||
from cibuildwheel.util.helpers import strtobool
|
from cibuildwheel.util.helpers import strtobool
|
||||||
from cibuildwheel.util.resources import read_all_configs
|
from cibuildwheel.util.resources import read_all_configs
|
||||||
|
|
||||||
@@ -80,16 +79,14 @@ def main_inner(global_options: GlobalOptions) -> None:
|
|||||||
rather than exiting directly.
|
rather than exiting directly.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
make_parser = functools.partial(argparse.ArgumentParser, allow_abbrev=False)
|
parser = argparse.ArgumentParser(
|
||||||
if sys.version_info >= (3, 14):
|
|
||||||
make_parser = functools.partial(make_parser, color=True, suggest_on_error=True)
|
|
||||||
parser = make_parser(
|
|
||||||
description="Build wheels for all the platforms.",
|
description="Build wheels for all the platforms.",
|
||||||
epilog="""
|
epilog="""
|
||||||
Most options are supplied via environment variables or in
|
Most options are supplied via environment variables or in
|
||||||
--config-file (pyproject.toml usually). See
|
--config-file (pyproject.toml usually). See
|
||||||
https://github.com/pypa/cibuildwheel#options for info.
|
https://github.com/pypa/cibuildwheel#options for info.
|
||||||
""",
|
""",
|
||||||
|
allow_abbrev=False,
|
||||||
)
|
)
|
||||||
|
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
@@ -182,6 +179,12 @@ def main_inner(global_options: GlobalOptions) -> None:
|
|||||||
help="Print the build identifiers matched by the current invocation and exit.",
|
help="Print the build identifiers matched by the current invocation and exit.",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
parser.add_argument(
|
||||||
|
"--clean-cache",
|
||||||
|
action="store_true",
|
||||||
|
help="Clear the cibuildwheel cache and exit.",
|
||||||
|
)
|
||||||
|
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--allow-empty",
|
"--allow-empty",
|
||||||
action="store_true",
|
action="store_true",
|
||||||
@@ -199,6 +202,48 @@ def main_inner(global_options: GlobalOptions) -> None:
|
|||||||
|
|
||||||
global_options.print_traceback_on_error = args.debug_traceback
|
global_options.print_traceback_on_error = args.debug_traceback
|
||||||
|
|
||||||
|
if args.clean_cache:
|
||||||
|
if not CIBW_CACHE_PATH.exists():
|
||||||
|
print(f"Cache directory does not exist: {CIBW_CACHE_PATH}")
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
|
sentinel_file = CIBW_CACHE_PATH / "CACHEDIR.TAG"
|
||||||
|
if not sentinel_file.exists():
|
||||||
|
print(
|
||||||
|
f"Error: {CIBW_CACHE_PATH} does not appear to be a cibuildwheel cache directory.",
|
||||||
|
"Only directories with a CACHEDIR.TAG sentinel file can be cleaned.",
|
||||||
|
sep="\n",
|
||||||
|
file=sys.stderr,
|
||||||
|
)
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
# Verify signature to ensure it's a proper cache dir
|
||||||
|
# See https://bford.info/cachedir/ for more
|
||||||
|
try:
|
||||||
|
sentinel_content = sentinel_file.read_text(encoding="utf-8")
|
||||||
|
except OSError as e:
|
||||||
|
print(f"Error reading cache directory tag: {e}", file=sys.stderr)
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
if not sentinel_content.startswith("Signature: 8a477f597d28d172789f06886806bc55"):
|
||||||
|
print(
|
||||||
|
f"Error: {sentinel_file} does not contain a valid cache directory signature.",
|
||||||
|
"For safety, only properly signed cache directories can be cleaned.",
|
||||||
|
sep="\n",
|
||||||
|
file=sys.stderr,
|
||||||
|
)
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
print(f"Clearing cache directory: {CIBW_CACHE_PATH}")
|
||||||
|
try:
|
||||||
|
shutil.rmtree(CIBW_CACHE_PATH)
|
||||||
|
print("Cache cleared successfully.")
|
||||||
|
except OSError as e:
|
||||||
|
print(f"Error clearing cache: {e}", file=sys.stderr)
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
args.package_dir = args.package_dir.resolve()
|
args.package_dir = args.package_dir.resolve()
|
||||||
|
|
||||||
# This are always relative to the base directory, even in SDist builds
|
# This are always relative to the base directory, even in SDist builds
|
||||||
@@ -312,6 +357,7 @@ def build_in_directory(args: CommandLineArguments) -> None:
|
|||||||
|
|
||||||
# create the cache dir before it gets printed & builds performed
|
# create the cache dir before it gets printed & builds performed
|
||||||
CIBW_CACHE_PATH.mkdir(parents=True, exist_ok=True)
|
CIBW_CACHE_PATH.mkdir(parents=True, exist_ok=True)
|
||||||
|
ensure_cache_sentinel(CIBW_CACHE_PATH)
|
||||||
|
|
||||||
print_preamble(platform=platform, options=options, identifiers=identifiers)
|
print_preamble(platform=platform, options=options, identifiers=identifiers)
|
||||||
|
|
||||||
|
|||||||
@@ -36,6 +36,28 @@ class OCIPlatform(Enum):
|
|||||||
RISCV64 = "linux/riscv64"
|
RISCV64 = "linux/riscv64"
|
||||||
S390X = "linux/s390x"
|
S390X = "linux/s390x"
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def native(cls) -> "OCIPlatform":
|
||||||
|
"""Return the current OCI platform, or raise ValueError if unknown."""
|
||||||
|
arch = platform.machine().lower()
|
||||||
|
mapping = {
|
||||||
|
"i386": cls.i386,
|
||||||
|
"i686": cls.i386,
|
||||||
|
"x86_64": cls.AMD64,
|
||||||
|
"amd64": cls.AMD64,
|
||||||
|
"armv7l": cls.ARMV7,
|
||||||
|
"aarch64": cls.ARM64,
|
||||||
|
"arm64": cls.ARM64,
|
||||||
|
"ppc64le": cls.PPC64LE,
|
||||||
|
"riscv64": cls.RISCV64,
|
||||||
|
"s390x": cls.S390X,
|
||||||
|
}
|
||||||
|
try:
|
||||||
|
return mapping[arch]
|
||||||
|
except KeyError as ex:
|
||||||
|
msg = f"Unsupported platform architecture: {arch}"
|
||||||
|
raise OSError(msg) from ex
|
||||||
|
|
||||||
|
|
||||||
@dataclasses.dataclass(frozen=True)
|
@dataclasses.dataclass(frozen=True)
|
||||||
class OCIContainerEngineConfig:
|
class OCIContainerEngineConfig:
|
||||||
@@ -152,11 +174,19 @@ class OCIContainer:
|
|||||||
back to cibuildwheel.
|
back to cibuildwheel.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
>>> # xdoctest: +REQUIRES(LINUX)
|
||||||
>>> from cibuildwheel.oci_container import * # NOQA
|
>>> from cibuildwheel.oci_container import * # NOQA
|
||||||
>>> from cibuildwheel.options import _get_pinned_container_images
|
>>> from cibuildwheel.options import _get_pinned_container_images
|
||||||
|
>>> import pytest
|
||||||
|
>>> try:
|
||||||
|
... oci_platform = OCIPlatform.native()
|
||||||
|
... except OSError as ex:
|
||||||
|
... pytest.skip(str(ex))
|
||||||
|
>>> if oci_platform != OCIPlatform.AMD64:
|
||||||
|
... pytest.skip('only runs on amd64')
|
||||||
>>> image = _get_pinned_container_images()['x86_64']['manylinux2014']
|
>>> image = _get_pinned_container_images()['x86_64']['manylinux2014']
|
||||||
>>> # Test the default container
|
>>> # Test the default container
|
||||||
>>> with OCIContainer(image=image) as self:
|
>>> with OCIContainer(image=image, oci_platform=oci_platform) as self:
|
||||||
... self.call(["echo", "hello world"])
|
... self.call(["echo", "hello world"])
|
||||||
... self.call(["cat", "/proc/1/cgroup"])
|
... self.call(["cat", "/proc/1/cgroup"])
|
||||||
... print(self.get_environment())
|
... print(self.get_environment())
|
||||||
|
|||||||
@@ -63,6 +63,7 @@ class CommandLineArguments:
|
|||||||
allow_empty: bool
|
allow_empty: bool
|
||||||
debug_traceback: bool
|
debug_traceback: bool
|
||||||
enable: list[str]
|
enable: list[str]
|
||||||
|
clean_cache: bool
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def defaults(cls) -> Self:
|
def defaults(cls) -> Self:
|
||||||
@@ -77,6 +78,7 @@ class CommandLineArguments:
|
|||||||
print_build_identifiers=False,
|
print_build_identifiers=False,
|
||||||
debug_traceback=False,
|
debug_traceback=False,
|
||||||
enable=[],
|
enable=[],
|
||||||
|
clean_cache=False,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@@ -391,6 +393,7 @@ class OptionsReader:
|
|||||||
by the platform.
|
by the platform.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
>>> # xdoctest: +SKIP
|
||||||
>>> options_reader = OptionsReader(config_file, platform='macos')
|
>>> options_reader = OptionsReader(config_file, platform='macos')
|
||||||
>>> options_reader.get('cool-color')
|
>>> options_reader.get('cool-color')
|
||||||
|
|
||||||
@@ -657,7 +660,9 @@ class Options:
|
|||||||
)
|
)
|
||||||
requires_python = None if requires_python_str is None else SpecifierSet(requires_python_str)
|
requires_python = None if requires_python_str is None else SpecifierSet(requires_python_str)
|
||||||
|
|
||||||
archs_config_str = args.archs or self.reader.get("archs", option_format=ListFormat(sep=" "))
|
archs_config_str = args.archs or self.reader.get(
|
||||||
|
"archs", option_format=ListFormat(sep=" "), ignore_empty=True
|
||||||
|
)
|
||||||
architectures = Architecture.parse_config(archs_config_str, platform=self.platform)
|
architectures = Architecture.parse_config(archs_config_str, platform=self.platform)
|
||||||
|
|
||||||
# Process `--only`
|
# Process `--only`
|
||||||
|
|||||||
@@ -278,7 +278,7 @@ def create_cmake_toolchain(
|
|||||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
|
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE BOTH)
|
||||||
"""
|
"""
|
||||||
),
|
),
|
||||||
file=toolchain_file,
|
file=toolchain_file,
|
||||||
|
|||||||
@@ -284,9 +284,8 @@ def setup_python(
|
|||||||
"pip",
|
"pip",
|
||||||
"install",
|
"install",
|
||||||
"--upgrade",
|
"--upgrade",
|
||||||
"auditwheel-emscripten",
|
|
||||||
"build[virtualenv]",
|
|
||||||
"pyodide-build",
|
"pyodide-build",
|
||||||
|
"build[virtualenv]",
|
||||||
*constraint_flags(constraints_path),
|
*constraint_flags(constraints_path),
|
||||||
env=env,
|
env=env,
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -159,18 +159,18 @@ python_configurations = [
|
|||||||
{ identifier = "cp312-macosx_x86_64", version = "3.12", url = "https://www.python.org/ftp/python/3.12.10/python-3.12.10-macos11.pkg" },
|
{ identifier = "cp312-macosx_x86_64", version = "3.12", url = "https://www.python.org/ftp/python/3.12.10/python-3.12.10-macos11.pkg" },
|
||||||
{ identifier = "cp312-macosx_arm64", version = "3.12", url = "https://www.python.org/ftp/python/3.12.10/python-3.12.10-macos11.pkg" },
|
{ identifier = "cp312-macosx_arm64", version = "3.12", url = "https://www.python.org/ftp/python/3.12.10/python-3.12.10-macos11.pkg" },
|
||||||
{ identifier = "cp312-macosx_universal2", version = "3.12", url = "https://www.python.org/ftp/python/3.12.10/python-3.12.10-macos11.pkg" },
|
{ identifier = "cp312-macosx_universal2", version = "3.12", url = "https://www.python.org/ftp/python/3.12.10/python-3.12.10-macos11.pkg" },
|
||||||
{ identifier = "cp313-macosx_x86_64", version = "3.13", url = "https://www.python.org/ftp/python/3.13.5/python-3.13.5-macos11.pkg" },
|
{ identifier = "cp313-macosx_x86_64", version = "3.13", url = "https://www.python.org/ftp/python/3.13.7/python-3.13.7-macos11.pkg" },
|
||||||
{ identifier = "cp313-macosx_arm64", version = "3.13", url = "https://www.python.org/ftp/python/3.13.5/python-3.13.5-macos11.pkg" },
|
{ identifier = "cp313-macosx_arm64", version = "3.13", url = "https://www.python.org/ftp/python/3.13.7/python-3.13.7-macos11.pkg" },
|
||||||
{ identifier = "cp313-macosx_universal2", version = "3.13", url = "https://www.python.org/ftp/python/3.13.5/python-3.13.5-macos11.pkg" },
|
{ identifier = "cp313-macosx_universal2", version = "3.13", url = "https://www.python.org/ftp/python/3.13.7/python-3.13.7-macos11.pkg" },
|
||||||
{ identifier = "cp313t-macosx_x86_64", version = "3.13", url = "https://www.python.org/ftp/python/3.13.5/python-3.13.5-macos11.pkg" },
|
{ identifier = "cp313t-macosx_x86_64", version = "3.13", url = "https://www.python.org/ftp/python/3.13.7/python-3.13.7-macos11.pkg" },
|
||||||
{ identifier = "cp313t-macosx_arm64", version = "3.13", url = "https://www.python.org/ftp/python/3.13.5/python-3.13.5-macos11.pkg" },
|
{ identifier = "cp313t-macosx_arm64", version = "3.13", url = "https://www.python.org/ftp/python/3.13.7/python-3.13.7-macos11.pkg" },
|
||||||
{ identifier = "cp313t-macosx_universal2", version = "3.13", url = "https://www.python.org/ftp/python/3.13.5/python-3.13.5-macos11.pkg" },
|
{ identifier = "cp313t-macosx_universal2", version = "3.13", url = "https://www.python.org/ftp/python/3.13.7/python-3.13.7-macos11.pkg" },
|
||||||
{ identifier = "cp314-macosx_x86_64", version = "3.14", url = "https://www.python.org/ftp/python/3.14.0/python-3.14.0rc1-macos11.pkg" },
|
{ identifier = "cp314-macosx_x86_64", version = "3.14", url = "https://www.python.org/ftp/python/3.14.0/python-3.14.0rc2-macos11.pkg" },
|
||||||
{ identifier = "cp314-macosx_arm64", version = "3.14", url = "https://www.python.org/ftp/python/3.14.0/python-3.14.0rc1-macos11.pkg" },
|
{ identifier = "cp314-macosx_arm64", version = "3.14", url = "https://www.python.org/ftp/python/3.14.0/python-3.14.0rc2-macos11.pkg" },
|
||||||
{ identifier = "cp314-macosx_universal2", version = "3.14", url = "https://www.python.org/ftp/python/3.14.0/python-3.14.0rc1-macos11.pkg" },
|
{ identifier = "cp314-macosx_universal2", version = "3.14", url = "https://www.python.org/ftp/python/3.14.0/python-3.14.0rc2-macos11.pkg" },
|
||||||
{ identifier = "cp314t-macosx_x86_64", version = "3.14", url = "https://www.python.org/ftp/python/3.14.0/python-3.14.0rc1-macos11.pkg" },
|
{ identifier = "cp314t-macosx_x86_64", version = "3.14", url = "https://www.python.org/ftp/python/3.14.0/python-3.14.0rc2-macos11.pkg" },
|
||||||
{ identifier = "cp314t-macosx_arm64", version = "3.14", url = "https://www.python.org/ftp/python/3.14.0/python-3.14.0rc1-macos11.pkg" },
|
{ identifier = "cp314t-macosx_arm64", version = "3.14", url = "https://www.python.org/ftp/python/3.14.0/python-3.14.0rc2-macos11.pkg" },
|
||||||
{ identifier = "cp314t-macosx_universal2", version = "3.14", url = "https://www.python.org/ftp/python/3.14.0/python-3.14.0rc1-macos11.pkg" },
|
{ identifier = "cp314t-macosx_universal2", version = "3.14", url = "https://www.python.org/ftp/python/3.14.0/python-3.14.0rc2-macos11.pkg" },
|
||||||
{ identifier = "pp38-macosx_x86_64", version = "3.8", url = "https://downloads.python.org/pypy/pypy3.8-v7.3.11-macos_x86_64.tar.bz2" },
|
{ identifier = "pp38-macosx_x86_64", version = "3.8", url = "https://downloads.python.org/pypy/pypy3.8-v7.3.11-macos_x86_64.tar.bz2" },
|
||||||
{ identifier = "pp38-macosx_arm64", version = "3.8", url = "https://downloads.python.org/pypy/pypy3.8-v7.3.11-macos_arm64.tar.bz2" },
|
{ identifier = "pp38-macosx_arm64", version = "3.8", url = "https://downloads.python.org/pypy/pypy3.8-v7.3.11-macos_arm64.tar.bz2" },
|
||||||
{ identifier = "pp39-macosx_x86_64", version = "3.9", url = "https://downloads.python.org/pypy/pypy3.9-v7.3.16-macos_x86_64.tar.bz2" },
|
{ identifier = "pp39-macosx_x86_64", version = "3.9", url = "https://downloads.python.org/pypy/pypy3.9-v7.3.16-macos_x86_64.tar.bz2" },
|
||||||
@@ -195,22 +195,22 @@ python_configurations = [
|
|||||||
{ identifier = "cp311-win_amd64", version = "3.11.9", arch = "64" },
|
{ identifier = "cp311-win_amd64", version = "3.11.9", arch = "64" },
|
||||||
{ identifier = "cp312-win32", version = "3.12.10", arch = "32" },
|
{ identifier = "cp312-win32", version = "3.12.10", arch = "32" },
|
||||||
{ identifier = "cp312-win_amd64", version = "3.12.10", arch = "64" },
|
{ identifier = "cp312-win_amd64", version = "3.12.10", arch = "64" },
|
||||||
{ identifier = "cp313-win32", version = "3.13.5", arch = "32" },
|
{ identifier = "cp313-win32", version = "3.13.7", arch = "32" },
|
||||||
{ identifier = "cp313t-win32", version = "3.13.5", arch = "32" },
|
{ identifier = "cp313t-win32", version = "3.13.7", arch = "32" },
|
||||||
{ identifier = "cp313-win_amd64", version = "3.13.5", arch = "64" },
|
{ identifier = "cp313-win_amd64", version = "3.13.7", arch = "64" },
|
||||||
{ identifier = "cp313t-win_amd64", version = "3.13.5", arch = "64" },
|
{ identifier = "cp313t-win_amd64", version = "3.13.7", arch = "64" },
|
||||||
{ identifier = "cp314-win32", version = "3.14.0-rc1", arch = "32" },
|
{ identifier = "cp314-win32", version = "3.14.0-rc2", arch = "32" },
|
||||||
{ identifier = "cp314t-win32", version = "3.14.0-rc1", arch = "32" },
|
{ identifier = "cp314t-win32", version = "3.14.0-rc2", arch = "32" },
|
||||||
{ identifier = "cp314-win_amd64", version = "3.14.0-rc1", arch = "64" },
|
{ identifier = "cp314-win_amd64", version = "3.14.0-rc2", arch = "64" },
|
||||||
{ identifier = "cp314t-win_amd64", version = "3.14.0-rc1", arch = "64" },
|
{ identifier = "cp314t-win_amd64", version = "3.14.0-rc2", arch = "64" },
|
||||||
{ identifier = "cp39-win_arm64", version = "3.9.10", arch = "ARM64" },
|
{ identifier = "cp39-win_arm64", version = "3.9.10", arch = "ARM64" },
|
||||||
{ identifier = "cp310-win_arm64", version = "3.10.11", arch = "ARM64" },
|
{ identifier = "cp310-win_arm64", version = "3.10.11", arch = "ARM64" },
|
||||||
{ identifier = "cp311-win_arm64", version = "3.11.9", arch = "ARM64" },
|
{ identifier = "cp311-win_arm64", version = "3.11.9", arch = "ARM64" },
|
||||||
{ identifier = "cp312-win_arm64", version = "3.12.10", arch = "ARM64" },
|
{ identifier = "cp312-win_arm64", version = "3.12.10", arch = "ARM64" },
|
||||||
{ identifier = "cp313-win_arm64", version = "3.13.5", arch = "ARM64" },
|
{ identifier = "cp313-win_arm64", version = "3.13.7", arch = "ARM64" },
|
||||||
{ identifier = "cp313t-win_arm64", version = "3.13.5", arch = "ARM64" },
|
{ identifier = "cp313t-win_arm64", version = "3.13.7", arch = "ARM64" },
|
||||||
{ identifier = "cp314-win_arm64", version = "3.14.0-rc1", arch = "ARM64" },
|
{ identifier = "cp314-win_arm64", version = "3.14.0-rc2", arch = "ARM64" },
|
||||||
{ identifier = "cp314t-win_arm64", version = "3.14.0-rc1", arch = "ARM64" },
|
{ identifier = "cp314t-win_arm64", version = "3.14.0-rc2", arch = "ARM64" },
|
||||||
{ identifier = "pp38-win_amd64", version = "3.8", arch = "64", url = "https://downloads.python.org/pypy/pypy3.8-v7.3.11-win64.zip" },
|
{ identifier = "pp38-win_amd64", version = "3.8", arch = "64", url = "https://downloads.python.org/pypy/pypy3.8-v7.3.11-win64.zip" },
|
||||||
{ identifier = "pp39-win_amd64", version = "3.9", arch = "64", url = "https://downloads.python.org/pypy/pypy3.9-v7.3.16-win64.zip" },
|
{ identifier = "pp39-win_amd64", version = "3.9", arch = "64", url = "https://downloads.python.org/pypy/pypy3.9-v7.3.16-win64.zip" },
|
||||||
{ identifier = "pp310-win_amd64", version = "3.10", arch = "64", url = "https://downloads.python.org/pypy/pypy3.10-v7.3.19-win64.zip" },
|
{ identifier = "pp310-win_amd64", version = "3.10", arch = "64", url = "https://downloads.python.org/pypy/pypy3.10-v7.3.19-win64.zip" },
|
||||||
@@ -221,7 +221,7 @@ python_configurations = [
|
|||||||
[pyodide]
|
[pyodide]
|
||||||
python_configurations = [
|
python_configurations = [
|
||||||
{ identifier = "cp312-pyodide_wasm32", version = "3.12", default_pyodide_version = "0.27.7", node_version = "v22" },
|
{ identifier = "cp312-pyodide_wasm32", version = "3.12", default_pyodide_version = "0.27.7", node_version = "v22" },
|
||||||
{ identifier = "cp313-pyodide_wasm32", version = "3.13", default_pyodide_version = "0.28.0", node_version = "v22" },
|
{ identifier = "cp313-pyodide_wasm32", version = "3.13", default_pyodide_version = "0.28.2", node_version = "v22" },
|
||||||
]
|
]
|
||||||
|
|
||||||
[android]
|
[android]
|
||||||
|
|||||||
@@ -2,20 +2,20 @@
|
|||||||
# nox -s update_constraints
|
# nox -s update_constraints
|
||||||
annotated-types==0.7.0
|
annotated-types==0.7.0
|
||||||
# via pydantic
|
# via pydantic
|
||||||
anyio==4.9.0
|
anyio==4.10.0
|
||||||
# via httpx
|
# via httpx
|
||||||
auditwheel-emscripten==0.1.0
|
auditwheel-emscripten==0.2.0
|
||||||
# via pyodide-build
|
# via pyodide-build
|
||||||
build==1.2.2.post1
|
build==1.2.2.post1
|
||||||
# via
|
# via
|
||||||
# -r .nox/update_constraints/tmp/constraints-pyodide.in
|
# -r .nox/update_constraints/tmp/constraints-pyodide.in
|
||||||
# pyodide-build
|
# pyodide-build
|
||||||
certifi==2025.7.14
|
certifi==2025.8.3
|
||||||
# via
|
# via
|
||||||
# httpcore
|
# httpcore
|
||||||
# httpx
|
# httpx
|
||||||
# requests
|
# requests
|
||||||
charset-normalizer==3.4.2
|
charset-normalizer==3.4.3
|
||||||
# via requests
|
# via requests
|
||||||
click==8.1.8
|
click==8.1.8
|
||||||
# via
|
# via
|
||||||
@@ -23,7 +23,7 @@ click==8.1.8
|
|||||||
# typer
|
# typer
|
||||||
distlib==0.4.0
|
distlib==0.4.0
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
filelock==3.18.0
|
filelock==3.19.1
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
h11==0.16.0
|
h11==0.16.0
|
||||||
# via httpcore
|
# via httpcore
|
||||||
@@ -38,7 +38,7 @@ idna==3.10
|
|||||||
# requests
|
# requests
|
||||||
leb128==1.0.8
|
leb128==1.0.8
|
||||||
# via auditwheel-emscripten
|
# via auditwheel-emscripten
|
||||||
markdown-it-py==3.0.0
|
markdown-it-py==4.0.0
|
||||||
# via rich
|
# via rich
|
||||||
mdurl==0.1.2
|
mdurl==0.1.2
|
||||||
# via markdown-it-py
|
# via markdown-it-py
|
||||||
@@ -48,7 +48,7 @@ packaging==25.0
|
|||||||
# build
|
# build
|
||||||
# pyodide-build
|
# pyodide-build
|
||||||
# unearth
|
# unearth
|
||||||
pip==25.1.1
|
pip==25.2
|
||||||
# via -r .nox/update_constraints/tmp/constraints-pyodide.in
|
# via -r .nox/update_constraints/tmp/constraints-pyodide.in
|
||||||
platformdirs==4.3.8
|
platformdirs==4.3.8
|
||||||
# via
|
# via
|
||||||
@@ -62,13 +62,13 @@ pydantic-core==2.33.2
|
|||||||
# via pydantic
|
# via pydantic
|
||||||
pygments==2.19.2
|
pygments==2.19.2
|
||||||
# via rich
|
# via rich
|
||||||
pyodide-build==0.30.5
|
pyodide-build==0.30.7
|
||||||
# via -r .nox/update_constraints/tmp/constraints-pyodide.in
|
# via -r .nox/update_constraints/tmp/constraints-pyodide.in
|
||||||
pyodide-cli==0.3.0
|
pyodide-cli==0.3.0
|
||||||
# via
|
# via
|
||||||
# auditwheel-emscripten
|
# auditwheel-emscripten
|
||||||
# pyodide-build
|
# pyodide-build
|
||||||
pyodide-lock==0.1.0a7
|
pyodide-lock==0.1.0
|
||||||
# via pyodide-build
|
# via pyodide-build
|
||||||
pyproject-hooks==1.2.0
|
pyproject-hooks==1.2.0
|
||||||
# via build
|
# via build
|
||||||
@@ -107,7 +107,7 @@ unearth==0.17.5
|
|||||||
# via pyodide-build
|
# via pyodide-build
|
||||||
urllib3==2.5.0
|
urllib3==2.5.0
|
||||||
# via requests
|
# via requests
|
||||||
virtualenv==20.32.0
|
virtualenv==20.34.0
|
||||||
# via
|
# via
|
||||||
# build
|
# build
|
||||||
# pyodide-build
|
# pyodide-build
|
||||||
|
|||||||
@@ -2,20 +2,20 @@
|
|||||||
# nox -s update_constraints
|
# nox -s update_constraints
|
||||||
annotated-types==0.7.0
|
annotated-types==0.7.0
|
||||||
# via pydantic
|
# via pydantic
|
||||||
anyio==4.9.0
|
anyio==4.10.0
|
||||||
# via httpx
|
# via httpx
|
||||||
auditwheel-emscripten==0.1.0
|
auditwheel-emscripten==0.2.0
|
||||||
# via pyodide-build
|
# via pyodide-build
|
||||||
build==1.2.2.post1
|
build==1.2.2.post1
|
||||||
# via
|
# via
|
||||||
# -r .nox/update_constraints/tmp/constraints-pyodide.in
|
# -r .nox/update_constraints/tmp/constraints-pyodide.in
|
||||||
# pyodide-build
|
# pyodide-build
|
||||||
certifi==2025.7.14
|
certifi==2025.8.3
|
||||||
# via
|
# via
|
||||||
# httpcore
|
# httpcore
|
||||||
# httpx
|
# httpx
|
||||||
# requests
|
# requests
|
||||||
charset-normalizer==3.4.2
|
charset-normalizer==3.4.3
|
||||||
# via requests
|
# via requests
|
||||||
click==8.1.8
|
click==8.1.8
|
||||||
# via
|
# via
|
||||||
@@ -23,7 +23,7 @@ click==8.1.8
|
|||||||
# typer
|
# typer
|
||||||
distlib==0.4.0
|
distlib==0.4.0
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
filelock==3.18.0
|
filelock==3.19.1
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
h11==0.16.0
|
h11==0.16.0
|
||||||
# via httpcore
|
# via httpcore
|
||||||
@@ -38,7 +38,7 @@ idna==3.10
|
|||||||
# requests
|
# requests
|
||||||
leb128==1.0.8
|
leb128==1.0.8
|
||||||
# via auditwheel-emscripten
|
# via auditwheel-emscripten
|
||||||
markdown-it-py==3.0.0
|
markdown-it-py==4.0.0
|
||||||
# via rich
|
# via rich
|
||||||
mdurl==0.1.2
|
mdurl==0.1.2
|
||||||
# via markdown-it-py
|
# via markdown-it-py
|
||||||
@@ -48,7 +48,7 @@ packaging==25.0
|
|||||||
# build
|
# build
|
||||||
# pyodide-build
|
# pyodide-build
|
||||||
# unearth
|
# unearth
|
||||||
pip==25.1.1
|
pip==25.2
|
||||||
# via -r .nox/update_constraints/tmp/constraints-pyodide.in
|
# via -r .nox/update_constraints/tmp/constraints-pyodide.in
|
||||||
platformdirs==4.3.8
|
platformdirs==4.3.8
|
||||||
# via
|
# via
|
||||||
@@ -62,13 +62,13 @@ pydantic-core==2.33.2
|
|||||||
# via pydantic
|
# via pydantic
|
||||||
pygments==2.19.2
|
pygments==2.19.2
|
||||||
# via rich
|
# via rich
|
||||||
pyodide-build==0.30.5
|
pyodide-build==0.30.7
|
||||||
# via -r .nox/update_constraints/tmp/constraints-pyodide.in
|
# via -r .nox/update_constraints/tmp/constraints-pyodide.in
|
||||||
pyodide-cli==0.3.0
|
pyodide-cli==0.3.0
|
||||||
# via
|
# via
|
||||||
# auditwheel-emscripten
|
# auditwheel-emscripten
|
||||||
# pyodide-build
|
# pyodide-build
|
||||||
pyodide-lock==0.1.0a7
|
pyodide-lock==0.1.0
|
||||||
# via pyodide-build
|
# via pyodide-build
|
||||||
pyproject-hooks==1.2.0
|
pyproject-hooks==1.2.0
|
||||||
# via build
|
# via build
|
||||||
@@ -106,7 +106,7 @@ unearth==0.17.5
|
|||||||
# via pyodide-build
|
# via pyodide-build
|
||||||
urllib3==2.5.0
|
urllib3==2.5.0
|
||||||
# via requests
|
# via requests
|
||||||
virtualenv==20.32.0
|
virtualenv==20.34.0
|
||||||
# via
|
# via
|
||||||
# build
|
# build
|
||||||
# pyodide-build
|
# pyodide-build
|
||||||
|
|||||||
@@ -2,13 +2,13 @@
|
|||||||
# nox -s update_constraints
|
# nox -s update_constraints
|
||||||
altgraph==0.17.4
|
altgraph==0.17.4
|
||||||
# via macholib
|
# via macholib
|
||||||
build==1.2.2.post1
|
build==1.3.0
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
delocate==0.13.0
|
delocate==0.13.0
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
distlib==0.4.0
|
distlib==0.4.0
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
filelock==3.18.0
|
filelock==3.19.1
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
importlib-metadata==8.7.0
|
importlib-metadata==8.7.0
|
||||||
# via build
|
# via build
|
||||||
@@ -18,7 +18,7 @@ packaging==25.0
|
|||||||
# via
|
# via
|
||||||
# build
|
# build
|
||||||
# delocate
|
# delocate
|
||||||
pip==25.1.1
|
pip==25.2
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
platformdirs==4.3.8
|
platformdirs==4.3.8
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
@@ -27,8 +27,10 @@ pyproject-hooks==1.2.0
|
|||||||
tomli==2.2.1
|
tomli==2.2.1
|
||||||
# via build
|
# via build
|
||||||
typing-extensions==4.14.1
|
typing-extensions==4.14.1
|
||||||
# via delocate
|
# via
|
||||||
virtualenv==20.32.0
|
# delocate
|
||||||
|
# virtualenv
|
||||||
|
virtualenv==20.34.0
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
zipp==3.23.0
|
zipp==3.23.0
|
||||||
# via importlib-metadata
|
# via importlib-metadata
|
||||||
|
|||||||
@@ -2,13 +2,13 @@
|
|||||||
# nox -s update_constraints
|
# nox -s update_constraints
|
||||||
altgraph==0.17.4
|
altgraph==0.17.4
|
||||||
# via macholib
|
# via macholib
|
||||||
build==1.2.2.post1
|
build==1.3.0
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
delocate==0.13.0
|
delocate==0.13.0
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
distlib==0.4.0
|
distlib==0.4.0
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
filelock==3.18.0
|
filelock==3.19.1
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
macholib==1.16.3
|
macholib==1.16.3
|
||||||
# via delocate
|
# via delocate
|
||||||
@@ -16,7 +16,7 @@ packaging==25.0
|
|||||||
# via
|
# via
|
||||||
# build
|
# build
|
||||||
# delocate
|
# delocate
|
||||||
pip==25.1.1
|
pip==25.2
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
platformdirs==4.3.8
|
platformdirs==4.3.8
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
@@ -24,5 +24,5 @@ pyproject-hooks==1.2.0
|
|||||||
# via build
|
# via build
|
||||||
typing-extensions==4.14.1
|
typing-extensions==4.14.1
|
||||||
# via delocate
|
# via delocate
|
||||||
virtualenv==20.32.0
|
virtualenv==20.34.0
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
|
|||||||
@@ -2,13 +2,13 @@
|
|||||||
# nox -s update_constraints
|
# nox -s update_constraints
|
||||||
altgraph==0.17.4
|
altgraph==0.17.4
|
||||||
# via macholib
|
# via macholib
|
||||||
build==1.2.2.post1
|
build==1.3.0
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
delocate==0.13.0
|
delocate==0.13.0
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
distlib==0.4.0
|
distlib==0.4.0
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
filelock==3.18.0
|
filelock==3.19.1
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
macholib==1.16.3
|
macholib==1.16.3
|
||||||
# via delocate
|
# via delocate
|
||||||
@@ -16,7 +16,7 @@ packaging==25.0
|
|||||||
# via
|
# via
|
||||||
# build
|
# build
|
||||||
# delocate
|
# delocate
|
||||||
pip==25.1.1
|
pip==25.2
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
platformdirs==4.3.8
|
platformdirs==4.3.8
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
@@ -24,5 +24,5 @@ pyproject-hooks==1.2.0
|
|||||||
# via build
|
# via build
|
||||||
typing-extensions==4.14.1
|
typing-extensions==4.14.1
|
||||||
# via delocate
|
# via delocate
|
||||||
virtualenv==20.32.0
|
virtualenv==20.34.0
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
|
|||||||
@@ -2,13 +2,13 @@
|
|||||||
# nox -s update_constraints
|
# nox -s update_constraints
|
||||||
altgraph==0.17.4
|
altgraph==0.17.4
|
||||||
# via macholib
|
# via macholib
|
||||||
build==1.2.2.post1
|
build==1.3.0
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
delocate==0.13.0
|
delocate==0.13.0
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
distlib==0.4.0
|
distlib==0.4.0
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
filelock==3.18.0
|
filelock==3.19.1
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
macholib==1.16.3
|
macholib==1.16.3
|
||||||
# via delocate
|
# via delocate
|
||||||
@@ -16,7 +16,7 @@ packaging==25.0
|
|||||||
# via
|
# via
|
||||||
# build
|
# build
|
||||||
# delocate
|
# delocate
|
||||||
pip==25.1.1
|
pip==25.2
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
platformdirs==4.3.8
|
platformdirs==4.3.8
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
@@ -24,5 +24,5 @@ pyproject-hooks==1.2.0
|
|||||||
# via build
|
# via build
|
||||||
typing-extensions==4.14.1
|
typing-extensions==4.14.1
|
||||||
# via delocate
|
# via delocate
|
||||||
virtualenv==20.32.0
|
virtualenv==20.34.0
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
|
|||||||
@@ -2,13 +2,13 @@
|
|||||||
# nox -s update_constraints
|
# nox -s update_constraints
|
||||||
altgraph==0.17.4
|
altgraph==0.17.4
|
||||||
# via macholib
|
# via macholib
|
||||||
build==1.2.2.post1
|
build==1.3.0
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
delocate==0.13.0
|
delocate==0.13.0
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
distlib==0.4.0
|
distlib==0.4.0
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
filelock==3.18.0
|
filelock==3.19.1
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
macholib==1.16.3
|
macholib==1.16.3
|
||||||
# via delocate
|
# via delocate
|
||||||
@@ -16,7 +16,7 @@ packaging==25.0
|
|||||||
# via
|
# via
|
||||||
# build
|
# build
|
||||||
# delocate
|
# delocate
|
||||||
pip==25.1.1
|
pip==25.2
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
platformdirs==4.3.8
|
platformdirs==4.3.8
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
@@ -24,5 +24,5 @@ pyproject-hooks==1.2.0
|
|||||||
# via build
|
# via build
|
||||||
typing-extensions==4.14.1
|
typing-extensions==4.14.1
|
||||||
# via delocate
|
# via delocate
|
||||||
virtualenv==20.32.0
|
virtualenv==20.34.0
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
|
|||||||
@@ -27,8 +27,10 @@ pyproject-hooks==1.2.0
|
|||||||
tomli==2.2.1
|
tomli==2.2.1
|
||||||
# via build
|
# via build
|
||||||
typing-extensions==4.13.2
|
typing-extensions==4.13.2
|
||||||
# via delocate
|
# via
|
||||||
virtualenv==20.32.0
|
# delocate
|
||||||
|
# virtualenv
|
||||||
|
virtualenv==20.34.0
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
zipp==3.20.2
|
zipp==3.20.2
|
||||||
# via importlib-metadata
|
# via importlib-metadata
|
||||||
|
|||||||
@@ -2,13 +2,13 @@
|
|||||||
# nox -s update_constraints
|
# nox -s update_constraints
|
||||||
altgraph==0.17.4
|
altgraph==0.17.4
|
||||||
# via macholib
|
# via macholib
|
||||||
build==1.2.2.post1
|
build==1.3.0
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
delocate==0.13.0
|
delocate==0.13.0
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
distlib==0.4.0
|
distlib==0.4.0
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
filelock==3.18.0
|
filelock==3.19.1
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
importlib-metadata==8.7.0
|
importlib-metadata==8.7.0
|
||||||
# via build
|
# via build
|
||||||
@@ -18,7 +18,7 @@ packaging==25.0
|
|||||||
# via
|
# via
|
||||||
# build
|
# build
|
||||||
# delocate
|
# delocate
|
||||||
pip==25.1.1
|
pip==25.2
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
platformdirs==4.3.8
|
platformdirs==4.3.8
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
@@ -27,8 +27,10 @@ pyproject-hooks==1.2.0
|
|||||||
tomli==2.2.1
|
tomli==2.2.1
|
||||||
# via build
|
# via build
|
||||||
typing-extensions==4.14.1
|
typing-extensions==4.14.1
|
||||||
# via delocate
|
# via
|
||||||
virtualenv==20.32.0
|
# delocate
|
||||||
|
# virtualenv
|
||||||
|
virtualenv==20.34.0
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
zipp==3.23.0
|
zipp==3.23.0
|
||||||
# via importlib-metadata
|
# via importlib-metadata
|
||||||
|
|||||||
@@ -2,13 +2,13 @@
|
|||||||
# nox -s update_constraints
|
# nox -s update_constraints
|
||||||
altgraph==0.17.4
|
altgraph==0.17.4
|
||||||
# via macholib
|
# via macholib
|
||||||
build==1.2.2.post1
|
build==1.3.0
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
delocate==0.13.0
|
delocate==0.13.0
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
distlib==0.4.0
|
distlib==0.4.0
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
filelock==3.18.0
|
filelock==3.19.1
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
macholib==1.16.3
|
macholib==1.16.3
|
||||||
# via delocate
|
# via delocate
|
||||||
@@ -16,7 +16,7 @@ packaging==25.0
|
|||||||
# via
|
# via
|
||||||
# build
|
# build
|
||||||
# delocate
|
# delocate
|
||||||
pip==25.1.1
|
pip==25.2
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
platformdirs==4.3.8
|
platformdirs==4.3.8
|
||||||
# via virtualenv
|
# via virtualenv
|
||||||
@@ -24,5 +24,5 @@ pyproject-hooks==1.2.0
|
|||||||
# via build
|
# via build
|
||||||
typing-extensions==4.14.1
|
typing-extensions==4.14.1
|
||||||
# via delocate
|
# via delocate
|
||||||
virtualenv==20.32.0
|
virtualenv==20.34.0
|
||||||
# via -r cibuildwheel/resources/constraints.in
|
# via -r cibuildwheel/resources/constraints.in
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
url = "https://nodejs.org/dist/"
|
url = "https://nodejs.org/dist/"
|
||||||
v22 = "v22.17.1"
|
v22 = "v22.18.0"
|
||||||
v20 = "v20.19.4"
|
v20 = "v20.19.4"
|
||||||
|
|||||||
@@ -1,53 +1,53 @@
|
|||||||
[x86_64]
|
[x86_64]
|
||||||
manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2025.07.27-1
|
manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2025.08.15-1
|
||||||
manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2025.07.27-1
|
manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2025.08.15-1
|
||||||
manylinux_2_34 = quay.io/pypa/manylinux_2_34_x86_64:2025.07.27-1
|
manylinux_2_34 = quay.io/pypa/manylinux_2_34_x86_64:2025.08.15-1
|
||||||
musllinux_1_2 = quay.io/pypa/musllinux_1_2_x86_64:2025.07.27-1
|
musllinux_1_2 = quay.io/pypa/musllinux_1_2_x86_64:2025.08.15-1
|
||||||
|
|
||||||
[i686]
|
[i686]
|
||||||
manylinux2014 = quay.io/pypa/manylinux2014_i686:2025.07.27-1
|
manylinux2014 = quay.io/pypa/manylinux2014_i686:2025.08.15-1
|
||||||
manylinux_2_28 = quay.io/pypa/manylinux_2_28_i686:2025.07.27-1
|
manylinux_2_28 = quay.io/pypa/manylinux_2_28_i686:2025.08.15-1
|
||||||
manylinux_2_34 = quay.io/pypa/manylinux_2_34_i686:2025.07.27-1
|
manylinux_2_34 = quay.io/pypa/manylinux_2_34_i686:2025.08.15-1
|
||||||
musllinux_1_2 = quay.io/pypa/musllinux_1_2_i686:2025.07.27-1
|
musllinux_1_2 = quay.io/pypa/musllinux_1_2_i686:2025.08.15-1
|
||||||
|
|
||||||
[aarch64]
|
[aarch64]
|
||||||
manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2025.07.27-1
|
manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2025.08.15-1
|
||||||
manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2025.07.27-1
|
manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2025.08.15-1
|
||||||
manylinux_2_34 = quay.io/pypa/manylinux_2_34_aarch64:2025.07.27-1
|
manylinux_2_34 = quay.io/pypa/manylinux_2_34_aarch64:2025.08.15-1
|
||||||
musllinux_1_2 = quay.io/pypa/musllinux_1_2_aarch64:2025.07.27-1
|
musllinux_1_2 = quay.io/pypa/musllinux_1_2_aarch64:2025.08.15-1
|
||||||
|
|
||||||
[ppc64le]
|
[ppc64le]
|
||||||
manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2025.07.27-1
|
manylinux2014 = quay.io/pypa/manylinux2014_ppc64le:2025.08.15-1
|
||||||
manylinux_2_28 = quay.io/pypa/manylinux_2_28_ppc64le:2025.07.27-1
|
manylinux_2_28 = quay.io/pypa/manylinux_2_28_ppc64le:2025.08.15-1
|
||||||
manylinux_2_34 = quay.io/pypa/manylinux_2_34_ppc64le:2025.07.27-1
|
manylinux_2_34 = quay.io/pypa/manylinux_2_34_ppc64le:2025.08.15-1
|
||||||
musllinux_1_2 = quay.io/pypa/musllinux_1_2_ppc64le:2025.07.27-1
|
musllinux_1_2 = quay.io/pypa/musllinux_1_2_ppc64le:2025.08.15-1
|
||||||
|
|
||||||
[s390x]
|
[s390x]
|
||||||
manylinux2014 = quay.io/pypa/manylinux2014_s390x:2025.07.27-1
|
manylinux2014 = quay.io/pypa/manylinux2014_s390x:2025.08.15-1
|
||||||
manylinux_2_28 = quay.io/pypa/manylinux_2_28_s390x:2025.07.27-1
|
manylinux_2_28 = quay.io/pypa/manylinux_2_28_s390x:2025.08.15-1
|
||||||
manylinux_2_34 = quay.io/pypa/manylinux_2_34_s390x:2025.07.27-1
|
manylinux_2_34 = quay.io/pypa/manylinux_2_34_s390x:2025.08.15-1
|
||||||
musllinux_1_2 = quay.io/pypa/musllinux_1_2_s390x:2025.07.27-1
|
musllinux_1_2 = quay.io/pypa/musllinux_1_2_s390x:2025.08.15-1
|
||||||
|
|
||||||
[pypy_x86_64]
|
[pypy_x86_64]
|
||||||
manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2025.07.27-1
|
manylinux2014 = quay.io/pypa/manylinux2014_x86_64:2025.08.15-1
|
||||||
manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2025.07.27-1
|
manylinux_2_28 = quay.io/pypa/manylinux_2_28_x86_64:2025.08.15-1
|
||||||
manylinux_2_34 = quay.io/pypa/manylinux_2_34_x86_64:2025.07.27-1
|
manylinux_2_34 = quay.io/pypa/manylinux_2_34_x86_64:2025.08.15-1
|
||||||
|
|
||||||
[pypy_i686]
|
[pypy_i686]
|
||||||
manylinux2014 = quay.io/pypa/manylinux2014_i686:2025.07.27-1
|
manylinux2014 = quay.io/pypa/manylinux2014_i686:2025.08.15-1
|
||||||
manylinux_2_28 = quay.io/pypa/manylinux_2_28_i686:2025.07.27-1
|
manylinux_2_28 = quay.io/pypa/manylinux_2_28_i686:2025.08.15-1
|
||||||
manylinux_2_34 = quay.io/pypa/manylinux_2_34_i686:2025.07.27-1
|
manylinux_2_34 = quay.io/pypa/manylinux_2_34_i686:2025.08.15-1
|
||||||
|
|
||||||
[pypy_aarch64]
|
[pypy_aarch64]
|
||||||
manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2025.07.27-1
|
manylinux2014 = quay.io/pypa/manylinux2014_aarch64:2025.08.15-1
|
||||||
manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2025.07.27-1
|
manylinux_2_28 = quay.io/pypa/manylinux_2_28_aarch64:2025.08.15-1
|
||||||
manylinux_2_34 = quay.io/pypa/manylinux_2_34_aarch64:2025.07.27-1
|
manylinux_2_34 = quay.io/pypa/manylinux_2_34_aarch64:2025.08.15-1
|
||||||
|
|
||||||
[armv7l]
|
[armv7l]
|
||||||
manylinux_2_31 = quay.io/pypa/manylinux_2_31_armv7l:2025.07.27-1
|
manylinux_2_31 = quay.io/pypa/manylinux_2_31_armv7l:2025.08.15-1
|
||||||
musllinux_1_2 = quay.io/pypa/musllinux_1_2_armv7l:2025.07.27-1
|
musllinux_1_2 = quay.io/pypa/musllinux_1_2_armv7l:2025.08.15-1
|
||||||
|
|
||||||
[riscv64]
|
[riscv64]
|
||||||
manylinux_2_39 = quay.io/pypa/manylinux_2_39_riscv64:2025.07.27-1
|
manylinux_2_39 = quay.io/pypa/manylinux_2_39_riscv64:2025.08.15-1
|
||||||
musllinux_1_2 = quay.io/pypa/musllinux_1_2_riscv64:2025.07.27-1
|
musllinux_1_2 = quay.io/pypa/musllinux_1_2_riscv64:2025.08.15-1
|
||||||
|
|
||||||
|
|||||||
@@ -1,455 +1,455 @@
|
|||||||
{
|
{
|
||||||
"releases": [
|
"releases": [
|
||||||
{
|
{
|
||||||
"tag": "20250723",
|
"tag": "20250814",
|
||||||
"assets": [
|
"assets": [
|
||||||
{
|
{
|
||||||
"name": "cpython-3.10.18+20250723-aarch64-apple-darwin-install_only.tar.gz",
|
"name": "cpython-3.10.18+20250814-aarch64-apple-darwin-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.10.18%2B20250723-aarch64-apple-darwin-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.10.18%2B20250814-aarch64-apple-darwin-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.10.18+20250723-aarch64-unknown-linux-gnu-install_only.tar.gz",
|
"name": "cpython-3.10.18+20250814-aarch64-unknown-linux-gnu-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.10.18%2B20250723-aarch64-unknown-linux-gnu-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.10.18%2B20250814-aarch64-unknown-linux-gnu-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.10.18+20250723-armv7-unknown-linux-gnueabi-install_only.tar.gz",
|
"name": "cpython-3.10.18+20250814-armv7-unknown-linux-gnueabi-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.10.18%2B20250723-armv7-unknown-linux-gnueabi-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.10.18%2B20250814-armv7-unknown-linux-gnueabi-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.10.18+20250723-armv7-unknown-linux-gnueabihf-install_only.tar.gz",
|
"name": "cpython-3.10.18+20250814-armv7-unknown-linux-gnueabihf-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.10.18%2B20250723-armv7-unknown-linux-gnueabihf-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.10.18%2B20250814-armv7-unknown-linux-gnueabihf-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.10.18+20250723-i686-pc-windows-msvc-install_only.tar.gz",
|
"name": "cpython-3.10.18+20250814-i686-pc-windows-msvc-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.10.18%2B20250723-i686-pc-windows-msvc-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.10.18%2B20250814-i686-pc-windows-msvc-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.10.18+20250723-ppc64le-unknown-linux-gnu-install_only.tar.gz",
|
"name": "cpython-3.10.18+20250814-ppc64le-unknown-linux-gnu-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.10.18%2B20250723-ppc64le-unknown-linux-gnu-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.10.18%2B20250814-ppc64le-unknown-linux-gnu-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.10.18+20250723-riscv64-unknown-linux-gnu-install_only.tar.gz",
|
"name": "cpython-3.10.18+20250814-riscv64-unknown-linux-gnu-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.10.18%2B20250723-riscv64-unknown-linux-gnu-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.10.18%2B20250814-riscv64-unknown-linux-gnu-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.10.18+20250723-s390x-unknown-linux-gnu-install_only.tar.gz",
|
"name": "cpython-3.10.18+20250814-s390x-unknown-linux-gnu-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.10.18%2B20250723-s390x-unknown-linux-gnu-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.10.18%2B20250814-s390x-unknown-linux-gnu-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.10.18+20250723-x86_64-apple-darwin-install_only.tar.gz",
|
"name": "cpython-3.10.18+20250814-x86_64-apple-darwin-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.10.18%2B20250723-x86_64-apple-darwin-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.10.18%2B20250814-x86_64-apple-darwin-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.10.18+20250723-x86_64-pc-windows-msvc-install_only.tar.gz",
|
"name": "cpython-3.10.18+20250814-x86_64-pc-windows-msvc-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.10.18%2B20250723-x86_64-pc-windows-msvc-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.10.18%2B20250814-x86_64-pc-windows-msvc-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.10.18+20250723-x86_64-unknown-linux-gnu-install_only.tar.gz",
|
"name": "cpython-3.10.18+20250814-x86_64-unknown-linux-gnu-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.10.18%2B20250723-x86_64-unknown-linux-gnu-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.10.18%2B20250814-x86_64-unknown-linux-gnu-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.10.18+20250723-x86_64-unknown-linux-musl-install_only.tar.gz",
|
"name": "cpython-3.10.18+20250814-x86_64-unknown-linux-musl-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.10.18%2B20250723-x86_64-unknown-linux-musl-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.10.18%2B20250814-x86_64-unknown-linux-musl-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.10.18+20250723-x86_64_v2-unknown-linux-gnu-install_only.tar.gz",
|
"name": "cpython-3.10.18+20250814-x86_64_v2-unknown-linux-gnu-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.10.18%2B20250723-x86_64_v2-unknown-linux-gnu-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.10.18%2B20250814-x86_64_v2-unknown-linux-gnu-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.10.18+20250723-x86_64_v2-unknown-linux-musl-install_only.tar.gz",
|
"name": "cpython-3.10.18+20250814-x86_64_v2-unknown-linux-musl-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.10.18%2B20250723-x86_64_v2-unknown-linux-musl-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.10.18%2B20250814-x86_64_v2-unknown-linux-musl-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.10.18+20250723-x86_64_v3-unknown-linux-gnu-install_only.tar.gz",
|
"name": "cpython-3.10.18+20250814-x86_64_v3-unknown-linux-gnu-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.10.18%2B20250723-x86_64_v3-unknown-linux-gnu-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.10.18%2B20250814-x86_64_v3-unknown-linux-gnu-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.10.18+20250723-x86_64_v3-unknown-linux-musl-install_only.tar.gz",
|
"name": "cpython-3.10.18+20250814-x86_64_v3-unknown-linux-musl-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.10.18%2B20250723-x86_64_v3-unknown-linux-musl-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.10.18%2B20250814-x86_64_v3-unknown-linux-musl-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.10.18+20250723-x86_64_v4-unknown-linux-gnu-install_only.tar.gz",
|
"name": "cpython-3.10.18+20250814-x86_64_v4-unknown-linux-gnu-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.10.18%2B20250723-x86_64_v4-unknown-linux-gnu-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.10.18%2B20250814-x86_64_v4-unknown-linux-gnu-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.10.18+20250723-x86_64_v4-unknown-linux-musl-install_only.tar.gz",
|
"name": "cpython-3.10.18+20250814-x86_64_v4-unknown-linux-musl-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.10.18%2B20250723-x86_64_v4-unknown-linux-musl-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.10.18%2B20250814-x86_64_v4-unknown-linux-musl-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.11.13+20250723-aarch64-apple-darwin-install_only.tar.gz",
|
"name": "cpython-3.11.13+20250814-aarch64-apple-darwin-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.11.13%2B20250723-aarch64-apple-darwin-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.11.13%2B20250814-aarch64-apple-darwin-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.11.13+20250723-aarch64-pc-windows-msvc-install_only.tar.gz",
|
"name": "cpython-3.11.13+20250814-aarch64-pc-windows-msvc-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.11.13%2B20250723-aarch64-pc-windows-msvc-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.11.13%2B20250814-aarch64-pc-windows-msvc-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.11.13+20250723-aarch64-unknown-linux-gnu-install_only.tar.gz",
|
"name": "cpython-3.11.13+20250814-aarch64-unknown-linux-gnu-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.11.13%2B20250723-aarch64-unknown-linux-gnu-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.11.13%2B20250814-aarch64-unknown-linux-gnu-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.11.13+20250723-armv7-unknown-linux-gnueabi-install_only.tar.gz",
|
"name": "cpython-3.11.13+20250814-armv7-unknown-linux-gnueabi-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.11.13%2B20250723-armv7-unknown-linux-gnueabi-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.11.13%2B20250814-armv7-unknown-linux-gnueabi-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.11.13+20250723-armv7-unknown-linux-gnueabihf-install_only.tar.gz",
|
"name": "cpython-3.11.13+20250814-armv7-unknown-linux-gnueabihf-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.11.13%2B20250723-armv7-unknown-linux-gnueabihf-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.11.13%2B20250814-armv7-unknown-linux-gnueabihf-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.11.13+20250723-i686-pc-windows-msvc-install_only.tar.gz",
|
"name": "cpython-3.11.13+20250814-i686-pc-windows-msvc-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.11.13%2B20250723-i686-pc-windows-msvc-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.11.13%2B20250814-i686-pc-windows-msvc-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.11.13+20250723-ppc64le-unknown-linux-gnu-install_only.tar.gz",
|
"name": "cpython-3.11.13+20250814-ppc64le-unknown-linux-gnu-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.11.13%2B20250723-ppc64le-unknown-linux-gnu-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.11.13%2B20250814-ppc64le-unknown-linux-gnu-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.11.13+20250723-riscv64-unknown-linux-gnu-install_only.tar.gz",
|
"name": "cpython-3.11.13+20250814-riscv64-unknown-linux-gnu-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.11.13%2B20250723-riscv64-unknown-linux-gnu-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.11.13%2B20250814-riscv64-unknown-linux-gnu-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.11.13+20250723-s390x-unknown-linux-gnu-install_only.tar.gz",
|
"name": "cpython-3.11.13+20250814-s390x-unknown-linux-gnu-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.11.13%2B20250723-s390x-unknown-linux-gnu-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.11.13%2B20250814-s390x-unknown-linux-gnu-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.11.13+20250723-x86_64-apple-darwin-install_only.tar.gz",
|
"name": "cpython-3.11.13+20250814-x86_64-apple-darwin-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.11.13%2B20250723-x86_64-apple-darwin-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.11.13%2B20250814-x86_64-apple-darwin-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.11.13+20250723-x86_64-pc-windows-msvc-install_only.tar.gz",
|
"name": "cpython-3.11.13+20250814-x86_64-pc-windows-msvc-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.11.13%2B20250723-x86_64-pc-windows-msvc-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.11.13%2B20250814-x86_64-pc-windows-msvc-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.11.13+20250723-x86_64-unknown-linux-gnu-install_only.tar.gz",
|
"name": "cpython-3.11.13+20250814-x86_64-unknown-linux-gnu-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.11.13%2B20250723-x86_64-unknown-linux-gnu-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.11.13%2B20250814-x86_64-unknown-linux-gnu-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.11.13+20250723-x86_64-unknown-linux-musl-install_only.tar.gz",
|
"name": "cpython-3.11.13+20250814-x86_64-unknown-linux-musl-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.11.13%2B20250723-x86_64-unknown-linux-musl-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.11.13%2B20250814-x86_64-unknown-linux-musl-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.11.13+20250723-x86_64_v2-unknown-linux-gnu-install_only.tar.gz",
|
"name": "cpython-3.11.13+20250814-x86_64_v2-unknown-linux-gnu-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.11.13%2B20250723-x86_64_v2-unknown-linux-gnu-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.11.13%2B20250814-x86_64_v2-unknown-linux-gnu-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.11.13+20250723-x86_64_v2-unknown-linux-musl-install_only.tar.gz",
|
"name": "cpython-3.11.13+20250814-x86_64_v2-unknown-linux-musl-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.11.13%2B20250723-x86_64_v2-unknown-linux-musl-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.11.13%2B20250814-x86_64_v2-unknown-linux-musl-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.11.13+20250723-x86_64_v3-unknown-linux-gnu-install_only.tar.gz",
|
"name": "cpython-3.11.13+20250814-x86_64_v3-unknown-linux-gnu-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.11.13%2B20250723-x86_64_v3-unknown-linux-gnu-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.11.13%2B20250814-x86_64_v3-unknown-linux-gnu-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.11.13+20250723-x86_64_v3-unknown-linux-musl-install_only.tar.gz",
|
"name": "cpython-3.11.13+20250814-x86_64_v3-unknown-linux-musl-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.11.13%2B20250723-x86_64_v3-unknown-linux-musl-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.11.13%2B20250814-x86_64_v3-unknown-linux-musl-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.11.13+20250723-x86_64_v4-unknown-linux-gnu-install_only.tar.gz",
|
"name": "cpython-3.11.13+20250814-x86_64_v4-unknown-linux-gnu-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.11.13%2B20250723-x86_64_v4-unknown-linux-gnu-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.11.13%2B20250814-x86_64_v4-unknown-linux-gnu-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.11.13+20250723-x86_64_v4-unknown-linux-musl-install_only.tar.gz",
|
"name": "cpython-3.11.13+20250814-x86_64_v4-unknown-linux-musl-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.11.13%2B20250723-x86_64_v4-unknown-linux-musl-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.11.13%2B20250814-x86_64_v4-unknown-linux-musl-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.12.11+20250723-aarch64-apple-darwin-install_only.tar.gz",
|
"name": "cpython-3.12.11+20250814-aarch64-apple-darwin-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.12.11%2B20250723-aarch64-apple-darwin-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.12.11%2B20250814-aarch64-apple-darwin-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.12.11+20250723-aarch64-pc-windows-msvc-install_only.tar.gz",
|
"name": "cpython-3.12.11+20250814-aarch64-pc-windows-msvc-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.12.11%2B20250723-aarch64-pc-windows-msvc-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.12.11%2B20250814-aarch64-pc-windows-msvc-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.12.11+20250723-aarch64-unknown-linux-gnu-install_only.tar.gz",
|
"name": "cpython-3.12.11+20250814-aarch64-unknown-linux-gnu-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.12.11%2B20250723-aarch64-unknown-linux-gnu-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.12.11%2B20250814-aarch64-unknown-linux-gnu-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.12.11+20250723-armv7-unknown-linux-gnueabi-install_only.tar.gz",
|
"name": "cpython-3.12.11+20250814-armv7-unknown-linux-gnueabi-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.12.11%2B20250723-armv7-unknown-linux-gnueabi-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.12.11%2B20250814-armv7-unknown-linux-gnueabi-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.12.11+20250723-armv7-unknown-linux-gnueabihf-install_only.tar.gz",
|
"name": "cpython-3.12.11+20250814-armv7-unknown-linux-gnueabihf-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.12.11%2B20250723-armv7-unknown-linux-gnueabihf-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.12.11%2B20250814-armv7-unknown-linux-gnueabihf-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.12.11+20250723-i686-pc-windows-msvc-install_only.tar.gz",
|
"name": "cpython-3.12.11+20250814-i686-pc-windows-msvc-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.12.11%2B20250723-i686-pc-windows-msvc-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.12.11%2B20250814-i686-pc-windows-msvc-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.12.11+20250723-ppc64le-unknown-linux-gnu-install_only.tar.gz",
|
"name": "cpython-3.12.11+20250814-ppc64le-unknown-linux-gnu-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.12.11%2B20250723-ppc64le-unknown-linux-gnu-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.12.11%2B20250814-ppc64le-unknown-linux-gnu-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.12.11+20250723-riscv64-unknown-linux-gnu-install_only.tar.gz",
|
"name": "cpython-3.12.11+20250814-riscv64-unknown-linux-gnu-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.12.11%2B20250723-riscv64-unknown-linux-gnu-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.12.11%2B20250814-riscv64-unknown-linux-gnu-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.12.11+20250723-s390x-unknown-linux-gnu-install_only.tar.gz",
|
"name": "cpython-3.12.11+20250814-s390x-unknown-linux-gnu-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.12.11%2B20250723-s390x-unknown-linux-gnu-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.12.11%2B20250814-s390x-unknown-linux-gnu-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.12.11+20250723-x86_64-apple-darwin-install_only.tar.gz",
|
"name": "cpython-3.12.11+20250814-x86_64-apple-darwin-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.12.11%2B20250723-x86_64-apple-darwin-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.12.11%2B20250814-x86_64-apple-darwin-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.12.11+20250723-x86_64-pc-windows-msvc-install_only.tar.gz",
|
"name": "cpython-3.12.11+20250814-x86_64-pc-windows-msvc-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.12.11%2B20250723-x86_64-pc-windows-msvc-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.12.11%2B20250814-x86_64-pc-windows-msvc-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.12.11+20250723-x86_64-unknown-linux-gnu-install_only.tar.gz",
|
"name": "cpython-3.12.11+20250814-x86_64-unknown-linux-gnu-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.12.11%2B20250723-x86_64-unknown-linux-gnu-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.12.11%2B20250814-x86_64-unknown-linux-gnu-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.12.11+20250723-x86_64-unknown-linux-musl-install_only.tar.gz",
|
"name": "cpython-3.12.11+20250814-x86_64-unknown-linux-musl-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.12.11%2B20250723-x86_64-unknown-linux-musl-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.12.11%2B20250814-x86_64-unknown-linux-musl-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.12.11+20250723-x86_64_v2-unknown-linux-gnu-install_only.tar.gz",
|
"name": "cpython-3.12.11+20250814-x86_64_v2-unknown-linux-gnu-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.12.11%2B20250723-x86_64_v2-unknown-linux-gnu-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.12.11%2B20250814-x86_64_v2-unknown-linux-gnu-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.12.11+20250723-x86_64_v2-unknown-linux-musl-install_only.tar.gz",
|
"name": "cpython-3.12.11+20250814-x86_64_v2-unknown-linux-musl-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.12.11%2B20250723-x86_64_v2-unknown-linux-musl-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.12.11%2B20250814-x86_64_v2-unknown-linux-musl-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.12.11+20250723-x86_64_v3-unknown-linux-gnu-install_only.tar.gz",
|
"name": "cpython-3.12.11+20250814-x86_64_v3-unknown-linux-gnu-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.12.11%2B20250723-x86_64_v3-unknown-linux-gnu-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.12.11%2B20250814-x86_64_v3-unknown-linux-gnu-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.12.11+20250723-x86_64_v3-unknown-linux-musl-install_only.tar.gz",
|
"name": "cpython-3.12.11+20250814-x86_64_v3-unknown-linux-musl-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.12.11%2B20250723-x86_64_v3-unknown-linux-musl-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.12.11%2B20250814-x86_64_v3-unknown-linux-musl-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.12.11+20250723-x86_64_v4-unknown-linux-gnu-install_only.tar.gz",
|
"name": "cpython-3.12.11+20250814-x86_64_v4-unknown-linux-gnu-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.12.11%2B20250723-x86_64_v4-unknown-linux-gnu-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.12.11%2B20250814-x86_64_v4-unknown-linux-gnu-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.12.11+20250723-x86_64_v4-unknown-linux-musl-install_only.tar.gz",
|
"name": "cpython-3.12.11+20250814-x86_64_v4-unknown-linux-musl-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.12.11%2B20250723-x86_64_v4-unknown-linux-musl-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.12.11%2B20250814-x86_64_v4-unknown-linux-musl-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.13.5+20250723-aarch64-apple-darwin-install_only.tar.gz",
|
"name": "cpython-3.13.6+20250814-aarch64-apple-darwin-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.13.5%2B20250723-aarch64-apple-darwin-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.13.6%2B20250814-aarch64-apple-darwin-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.13.5+20250723-aarch64-pc-windows-msvc-install_only.tar.gz",
|
"name": "cpython-3.13.6+20250814-aarch64-pc-windows-msvc-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.13.5%2B20250723-aarch64-pc-windows-msvc-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.13.6%2B20250814-aarch64-pc-windows-msvc-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.13.5+20250723-aarch64-unknown-linux-gnu-install_only.tar.gz",
|
"name": "cpython-3.13.6+20250814-aarch64-unknown-linux-gnu-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.13.5%2B20250723-aarch64-unknown-linux-gnu-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.13.6%2B20250814-aarch64-unknown-linux-gnu-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.13.5+20250723-armv7-unknown-linux-gnueabi-install_only.tar.gz",
|
"name": "cpython-3.13.6+20250814-armv7-unknown-linux-gnueabi-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.13.5%2B20250723-armv7-unknown-linux-gnueabi-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.13.6%2B20250814-armv7-unknown-linux-gnueabi-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.13.5+20250723-armv7-unknown-linux-gnueabihf-install_only.tar.gz",
|
"name": "cpython-3.13.6+20250814-armv7-unknown-linux-gnueabihf-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.13.5%2B20250723-armv7-unknown-linux-gnueabihf-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.13.6%2B20250814-armv7-unknown-linux-gnueabihf-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.13.5+20250723-i686-pc-windows-msvc-install_only.tar.gz",
|
"name": "cpython-3.13.6+20250814-i686-pc-windows-msvc-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.13.5%2B20250723-i686-pc-windows-msvc-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.13.6%2B20250814-i686-pc-windows-msvc-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.13.5+20250723-ppc64le-unknown-linux-gnu-install_only.tar.gz",
|
"name": "cpython-3.13.6+20250814-ppc64le-unknown-linux-gnu-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.13.5%2B20250723-ppc64le-unknown-linux-gnu-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.13.6%2B20250814-ppc64le-unknown-linux-gnu-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.13.5+20250723-riscv64-unknown-linux-gnu-install_only.tar.gz",
|
"name": "cpython-3.13.6+20250814-riscv64-unknown-linux-gnu-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.13.5%2B20250723-riscv64-unknown-linux-gnu-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.13.6%2B20250814-riscv64-unknown-linux-gnu-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.13.5+20250723-s390x-unknown-linux-gnu-install_only.tar.gz",
|
"name": "cpython-3.13.6+20250814-s390x-unknown-linux-gnu-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.13.5%2B20250723-s390x-unknown-linux-gnu-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.13.6%2B20250814-s390x-unknown-linux-gnu-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.13.5+20250723-x86_64-apple-darwin-install_only.tar.gz",
|
"name": "cpython-3.13.6+20250814-x86_64-apple-darwin-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.13.5%2B20250723-x86_64-apple-darwin-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.13.6%2B20250814-x86_64-apple-darwin-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.13.5+20250723-x86_64-pc-windows-msvc-install_only.tar.gz",
|
"name": "cpython-3.13.6+20250814-x86_64-pc-windows-msvc-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.13.5%2B20250723-x86_64-pc-windows-msvc-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.13.6%2B20250814-x86_64-pc-windows-msvc-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.13.5+20250723-x86_64-unknown-linux-gnu-install_only.tar.gz",
|
"name": "cpython-3.13.6+20250814-x86_64-unknown-linux-gnu-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.13.5%2B20250723-x86_64-unknown-linux-gnu-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.13.6%2B20250814-x86_64-unknown-linux-gnu-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.13.5+20250723-x86_64-unknown-linux-musl-install_only.tar.gz",
|
"name": "cpython-3.13.6+20250814-x86_64-unknown-linux-musl-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.13.5%2B20250723-x86_64-unknown-linux-musl-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.13.6%2B20250814-x86_64-unknown-linux-musl-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.13.5+20250723-x86_64_v2-unknown-linux-gnu-install_only.tar.gz",
|
"name": "cpython-3.13.6+20250814-x86_64_v2-unknown-linux-gnu-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.13.5%2B20250723-x86_64_v2-unknown-linux-gnu-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.13.6%2B20250814-x86_64_v2-unknown-linux-gnu-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.13.5+20250723-x86_64_v2-unknown-linux-musl-install_only.tar.gz",
|
"name": "cpython-3.13.6+20250814-x86_64_v2-unknown-linux-musl-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.13.5%2B20250723-x86_64_v2-unknown-linux-musl-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.13.6%2B20250814-x86_64_v2-unknown-linux-musl-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.13.5+20250723-x86_64_v3-unknown-linux-gnu-install_only.tar.gz",
|
"name": "cpython-3.13.6+20250814-x86_64_v3-unknown-linux-gnu-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.13.5%2B20250723-x86_64_v3-unknown-linux-gnu-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.13.6%2B20250814-x86_64_v3-unknown-linux-gnu-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.13.5+20250723-x86_64_v3-unknown-linux-musl-install_only.tar.gz",
|
"name": "cpython-3.13.6+20250814-x86_64_v3-unknown-linux-musl-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.13.5%2B20250723-x86_64_v3-unknown-linux-musl-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.13.6%2B20250814-x86_64_v3-unknown-linux-musl-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.13.5+20250723-x86_64_v4-unknown-linux-gnu-install_only.tar.gz",
|
"name": "cpython-3.13.6+20250814-x86_64_v4-unknown-linux-gnu-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.13.5%2B20250723-x86_64_v4-unknown-linux-gnu-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.13.6%2B20250814-x86_64_v4-unknown-linux-gnu-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.13.5+20250723-x86_64_v4-unknown-linux-musl-install_only.tar.gz",
|
"name": "cpython-3.13.6+20250814-x86_64_v4-unknown-linux-musl-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.13.5%2B20250723-x86_64_v4-unknown-linux-musl-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.13.6%2B20250814-x86_64_v4-unknown-linux-musl-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.14.0rc1+20250723-aarch64-apple-darwin-install_only.tar.gz",
|
"name": "cpython-3.14.0rc2+20250814-aarch64-apple-darwin-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.14.0rc1%2B20250723-aarch64-apple-darwin-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.14.0rc2%2B20250814-aarch64-apple-darwin-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.14.0rc1+20250723-aarch64-pc-windows-msvc-install_only.tar.gz",
|
"name": "cpython-3.14.0rc2+20250814-aarch64-pc-windows-msvc-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.14.0rc1%2B20250723-aarch64-pc-windows-msvc-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.14.0rc2%2B20250814-aarch64-pc-windows-msvc-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.14.0rc1+20250723-aarch64-unknown-linux-gnu-install_only.tar.gz",
|
"name": "cpython-3.14.0rc2+20250814-aarch64-unknown-linux-gnu-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.14.0rc1%2B20250723-aarch64-unknown-linux-gnu-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.14.0rc2%2B20250814-aarch64-unknown-linux-gnu-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.14.0rc1+20250723-armv7-unknown-linux-gnueabi-install_only.tar.gz",
|
"name": "cpython-3.14.0rc2+20250814-armv7-unknown-linux-gnueabi-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.14.0rc1%2B20250723-armv7-unknown-linux-gnueabi-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.14.0rc2%2B20250814-armv7-unknown-linux-gnueabi-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.14.0rc1+20250723-armv7-unknown-linux-gnueabihf-install_only.tar.gz",
|
"name": "cpython-3.14.0rc2+20250814-armv7-unknown-linux-gnueabihf-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.14.0rc1%2B20250723-armv7-unknown-linux-gnueabihf-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.14.0rc2%2B20250814-armv7-unknown-linux-gnueabihf-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.14.0rc1+20250723-i686-pc-windows-msvc-install_only.tar.gz",
|
"name": "cpython-3.14.0rc2+20250814-i686-pc-windows-msvc-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.14.0rc1%2B20250723-i686-pc-windows-msvc-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.14.0rc2%2B20250814-i686-pc-windows-msvc-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.14.0rc1+20250723-ppc64le-unknown-linux-gnu-install_only.tar.gz",
|
"name": "cpython-3.14.0rc2+20250814-ppc64le-unknown-linux-gnu-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.14.0rc1%2B20250723-ppc64le-unknown-linux-gnu-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.14.0rc2%2B20250814-ppc64le-unknown-linux-gnu-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.14.0rc1+20250723-riscv64-unknown-linux-gnu-install_only.tar.gz",
|
"name": "cpython-3.14.0rc2+20250814-riscv64-unknown-linux-gnu-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.14.0rc1%2B20250723-riscv64-unknown-linux-gnu-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.14.0rc2%2B20250814-riscv64-unknown-linux-gnu-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.14.0rc1+20250723-s390x-unknown-linux-gnu-install_only.tar.gz",
|
"name": "cpython-3.14.0rc2+20250814-s390x-unknown-linux-gnu-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.14.0rc1%2B20250723-s390x-unknown-linux-gnu-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.14.0rc2%2B20250814-s390x-unknown-linux-gnu-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.14.0rc1+20250723-x86_64-apple-darwin-install_only.tar.gz",
|
"name": "cpython-3.14.0rc2+20250814-x86_64-apple-darwin-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.14.0rc1%2B20250723-x86_64-apple-darwin-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.14.0rc2%2B20250814-x86_64-apple-darwin-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.14.0rc1+20250723-x86_64-pc-windows-msvc-install_only.tar.gz",
|
"name": "cpython-3.14.0rc2+20250814-x86_64-pc-windows-msvc-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.14.0rc1%2B20250723-x86_64-pc-windows-msvc-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.14.0rc2%2B20250814-x86_64-pc-windows-msvc-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.14.0rc1+20250723-x86_64-unknown-linux-gnu-install_only.tar.gz",
|
"name": "cpython-3.14.0rc2+20250814-x86_64-unknown-linux-gnu-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.14.0rc1%2B20250723-x86_64-unknown-linux-gnu-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.14.0rc2%2B20250814-x86_64-unknown-linux-gnu-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.14.0rc1+20250723-x86_64-unknown-linux-musl-install_only.tar.gz",
|
"name": "cpython-3.14.0rc2+20250814-x86_64-unknown-linux-musl-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.14.0rc1%2B20250723-x86_64-unknown-linux-musl-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.14.0rc2%2B20250814-x86_64-unknown-linux-musl-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.14.0rc1+20250723-x86_64_v2-unknown-linux-gnu-install_only.tar.gz",
|
"name": "cpython-3.14.0rc2+20250814-x86_64_v2-unknown-linux-gnu-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.14.0rc1%2B20250723-x86_64_v2-unknown-linux-gnu-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.14.0rc2%2B20250814-x86_64_v2-unknown-linux-gnu-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.14.0rc1+20250723-x86_64_v2-unknown-linux-musl-install_only.tar.gz",
|
"name": "cpython-3.14.0rc2+20250814-x86_64_v2-unknown-linux-musl-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.14.0rc1%2B20250723-x86_64_v2-unknown-linux-musl-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.14.0rc2%2B20250814-x86_64_v2-unknown-linux-musl-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.14.0rc1+20250723-x86_64_v3-unknown-linux-gnu-install_only.tar.gz",
|
"name": "cpython-3.14.0rc2+20250814-x86_64_v3-unknown-linux-gnu-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.14.0rc1%2B20250723-x86_64_v3-unknown-linux-gnu-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.14.0rc2%2B20250814-x86_64_v3-unknown-linux-gnu-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.14.0rc1+20250723-x86_64_v3-unknown-linux-musl-install_only.tar.gz",
|
"name": "cpython-3.14.0rc2+20250814-x86_64_v3-unknown-linux-musl-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.14.0rc1%2B20250723-x86_64_v3-unknown-linux-musl-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.14.0rc2%2B20250814-x86_64_v3-unknown-linux-musl-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.14.0rc1+20250723-x86_64_v4-unknown-linux-gnu-install_only.tar.gz",
|
"name": "cpython-3.14.0rc2+20250814-x86_64_v4-unknown-linux-gnu-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.14.0rc1%2B20250723-x86_64_v4-unknown-linux-gnu-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.14.0rc2%2B20250814-x86_64_v4-unknown-linux-gnu-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.14.0rc1+20250723-x86_64_v4-unknown-linux-musl-install_only.tar.gz",
|
"name": "cpython-3.14.0rc2+20250814-x86_64_v4-unknown-linux-musl-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.14.0rc1%2B20250723-x86_64_v4-unknown-linux-musl-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.14.0rc2%2B20250814-x86_64_v4-unknown-linux-musl-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.9.23+20250723-aarch64-apple-darwin-install_only.tar.gz",
|
"name": "cpython-3.9.23+20250814-aarch64-apple-darwin-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.9.23%2B20250723-aarch64-apple-darwin-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.9.23%2B20250814-aarch64-apple-darwin-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.9.23+20250723-aarch64-unknown-linux-gnu-install_only.tar.gz",
|
"name": "cpython-3.9.23+20250814-aarch64-unknown-linux-gnu-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.9.23%2B20250723-aarch64-unknown-linux-gnu-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.9.23%2B20250814-aarch64-unknown-linux-gnu-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.9.23+20250723-armv7-unknown-linux-gnueabi-install_only.tar.gz",
|
"name": "cpython-3.9.23+20250814-armv7-unknown-linux-gnueabi-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.9.23%2B20250723-armv7-unknown-linux-gnueabi-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.9.23%2B20250814-armv7-unknown-linux-gnueabi-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.9.23+20250723-armv7-unknown-linux-gnueabihf-install_only.tar.gz",
|
"name": "cpython-3.9.23+20250814-armv7-unknown-linux-gnueabihf-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.9.23%2B20250723-armv7-unknown-linux-gnueabihf-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.9.23%2B20250814-armv7-unknown-linux-gnueabihf-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.9.23+20250723-i686-pc-windows-msvc-install_only.tar.gz",
|
"name": "cpython-3.9.23+20250814-i686-pc-windows-msvc-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.9.23%2B20250723-i686-pc-windows-msvc-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.9.23%2B20250814-i686-pc-windows-msvc-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.9.23+20250723-ppc64le-unknown-linux-gnu-install_only.tar.gz",
|
"name": "cpython-3.9.23+20250814-ppc64le-unknown-linux-gnu-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.9.23%2B20250723-ppc64le-unknown-linux-gnu-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.9.23%2B20250814-ppc64le-unknown-linux-gnu-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.9.23+20250723-riscv64-unknown-linux-gnu-install_only.tar.gz",
|
"name": "cpython-3.9.23+20250814-riscv64-unknown-linux-gnu-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.9.23%2B20250723-riscv64-unknown-linux-gnu-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.9.23%2B20250814-riscv64-unknown-linux-gnu-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.9.23+20250723-s390x-unknown-linux-gnu-install_only.tar.gz",
|
"name": "cpython-3.9.23+20250814-s390x-unknown-linux-gnu-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.9.23%2B20250723-s390x-unknown-linux-gnu-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.9.23%2B20250814-s390x-unknown-linux-gnu-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.9.23+20250723-x86_64-apple-darwin-install_only.tar.gz",
|
"name": "cpython-3.9.23+20250814-x86_64-apple-darwin-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.9.23%2B20250723-x86_64-apple-darwin-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.9.23%2B20250814-x86_64-apple-darwin-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.9.23+20250723-x86_64-pc-windows-msvc-install_only.tar.gz",
|
"name": "cpython-3.9.23+20250814-x86_64-pc-windows-msvc-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.9.23%2B20250723-x86_64-pc-windows-msvc-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.9.23%2B20250814-x86_64-pc-windows-msvc-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.9.23+20250723-x86_64-unknown-linux-gnu-install_only.tar.gz",
|
"name": "cpython-3.9.23+20250814-x86_64-unknown-linux-gnu-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.9.23%2B20250723-x86_64-unknown-linux-gnu-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.9.23%2B20250814-x86_64-unknown-linux-gnu-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.9.23+20250723-x86_64-unknown-linux-musl-install_only.tar.gz",
|
"name": "cpython-3.9.23+20250814-x86_64-unknown-linux-musl-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.9.23%2B20250723-x86_64-unknown-linux-musl-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.9.23%2B20250814-x86_64-unknown-linux-musl-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.9.23+20250723-x86_64_v2-unknown-linux-gnu-install_only.tar.gz",
|
"name": "cpython-3.9.23+20250814-x86_64_v2-unknown-linux-gnu-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.9.23%2B20250723-x86_64_v2-unknown-linux-gnu-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.9.23%2B20250814-x86_64_v2-unknown-linux-gnu-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.9.23+20250723-x86_64_v2-unknown-linux-musl-install_only.tar.gz",
|
"name": "cpython-3.9.23+20250814-x86_64_v2-unknown-linux-musl-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.9.23%2B20250723-x86_64_v2-unknown-linux-musl-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.9.23%2B20250814-x86_64_v2-unknown-linux-musl-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.9.23+20250723-x86_64_v3-unknown-linux-gnu-install_only.tar.gz",
|
"name": "cpython-3.9.23+20250814-x86_64_v3-unknown-linux-gnu-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.9.23%2B20250723-x86_64_v3-unknown-linux-gnu-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.9.23%2B20250814-x86_64_v3-unknown-linux-gnu-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.9.23+20250723-x86_64_v3-unknown-linux-musl-install_only.tar.gz",
|
"name": "cpython-3.9.23+20250814-x86_64_v3-unknown-linux-musl-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.9.23%2B20250723-x86_64_v3-unknown-linux-musl-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.9.23%2B20250814-x86_64_v3-unknown-linux-musl-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.9.23+20250723-x86_64_v4-unknown-linux-gnu-install_only.tar.gz",
|
"name": "cpython-3.9.23+20250814-x86_64_v4-unknown-linux-gnu-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.9.23%2B20250723-x86_64_v4-unknown-linux-gnu-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.9.23%2B20250814-x86_64_v4-unknown-linux-gnu-install_only.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cpython-3.9.23+20250723-x86_64_v4-unknown-linux-musl-install_only.tar.gz",
|
"name": "cpython-3.9.23+20250814-x86_64_v4-unknown-linux-musl-install_only.tar.gz",
|
||||||
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250723/cpython-3.9.23%2B20250723-x86_64_v4-unknown-linux-musl-install_only.tar.gz"
|
"url": "https://github.com/astral-sh/python-build-standalone/releases/download/20250814/cpython-3.9.23%2B20250814-x86_64_v4-unknown-linux-musl-install_only.tar.gz"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
default = { version = "20.32.0", url = "https://github.com/pypa/get-virtualenv/blob/20.32.0/public/virtualenv.pyz?raw=true" }
|
default = { version = "20.34.0", url = "https://github.com/pypa/get-virtualenv/releases/download/20.34.0/virtualenv.pyz" }
|
||||||
|
|||||||
@@ -20,6 +20,26 @@ CIBW_CACHE_PATH: Final[Path] = Path(
|
|||||||
).resolve()
|
).resolve()
|
||||||
|
|
||||||
|
|
||||||
|
def ensure_cache_sentinel(cache_path: Path) -> None:
|
||||||
|
"""Create a sentinel file to mark a cibuildwheel cache directory.
|
||||||
|
|
||||||
|
We help prevent accidental deletion of non-cache directories with this.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
cache_path: The cache directory path where the sentinel should be created
|
||||||
|
"""
|
||||||
|
if cache_path.exists():
|
||||||
|
sentinel_file = cache_path / "CACHEDIR.TAG"
|
||||||
|
if not sentinel_file.exists():
|
||||||
|
sentinel_file.write_text(
|
||||||
|
"Signature: 8a477f597d28d172789f06886806bc55\n"
|
||||||
|
"# This file is a cache directory tag created by cibuildwheel.\n"
|
||||||
|
"# For information about cache directory tags, see:\n"
|
||||||
|
"# https://www.brynosaurus.com/cachedir/",
|
||||||
|
encoding="utf-8",
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def download(url: str, dest: Path) -> None:
|
def download(url: str, dest: Path) -> None:
|
||||||
print(f"+ Download {url} to {dest}")
|
print(f"+ Download {url} to {dest}")
|
||||||
dest_dir = dest.parent
|
dest_dir = dest.parent
|
||||||
|
|||||||
@@ -20,8 +20,8 @@ def format_safe(template: str, **kwargs: str | os.PathLike[str]) -> str:
|
|||||||
>>> format_safe('{a} {b[4]:3f}', a='123')
|
>>> format_safe('{a} {b[4]:3f}', a='123')
|
||||||
'123 {b[4]:3f}'
|
'123 {b[4]:3f}'
|
||||||
|
|
||||||
To avoid variable expansion, precede with a single backslash e.g.
|
To avoid variable expansion, precede with a single hash e.g.
|
||||||
>>> format_safe('\\{a} {b}', a='123')
|
>>> format_safe('#{a} {b}', a='123')
|
||||||
'{a} {b}'
|
'{a} {b}'
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|||||||
+22
-4
@@ -4,14 +4,32 @@ title: Changelog
|
|||||||
|
|
||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
### v3.1.4
|
||||||
|
|
||||||
|
_19 August 2025_
|
||||||
|
|
||||||
|
- ✨ Add a `--clean-cache` command to clean up our cache (#2489)
|
||||||
|
- 🛠 Update Python to 3.14rc2 and other patch version bumps (#2542, #2556)
|
||||||
|
- 🛠 Update Pyodide to 0.28.2 (#2562, #2558)
|
||||||
|
- 🐛 Fix resolution with `pyodide-build` when `dependency-versions` is set (#2548)
|
||||||
|
- 🐛 Set `CMAKE_FIND_ROOT_PATH_MODE_PACKAGE` to `BOTH` on Android (#2547)
|
||||||
|
- 🐛 Add `patchelf` dependency for platforms that can build Android wheels (#2552)
|
||||||
|
- 🐛 Ignore empty values for `CIBW_ARCHS` like most other environment variables (#2541)
|
||||||
|
- 💼 The `color` and `suggest_on_error` argparse options are now default in 3.14rc1+ (#2554)
|
||||||
|
- 💼 Use the virtualenv release URL instead of blob URL (should be more robust) (#2555)
|
||||||
|
- 🧪 For iOS, lowering to macos-14 is needed for now due to issues with GitHub's runner images (#2557)
|
||||||
|
- 🧪 Split out platforms iOS and Android in our tests (#2519)
|
||||||
|
- 🧪 Fix and enable doctests (#2546)
|
||||||
|
- 📚 Improve our docs on free-threading (#2549)
|
||||||
|
|
||||||
|
|
||||||
### v3.1.3
|
### v3.1.3
|
||||||
|
|
||||||
_1 August 2025_
|
_1 August 2025_
|
||||||
|
|
||||||
- 🐛 Fix bug where "latest" dependencies couldn't update to pip 25.2 on Windows (#2537)
|
- 🐛 Fix bug where "latest" dependencies couldn't update to pip 25.2 on Windows (#2537)
|
||||||
- 🛠 Use pytest-rerunfailures to improve some of our iOS/Android tests (#2527, #2539)
|
- 🧪 Use pytest-rerunfailures to improve some of our iOS/Android tests (#2527, #2539)
|
||||||
- 🛠 Remove some GraalPy Windows workarounds in our tests (#2501)
|
- 🧪 Remove some GraalPy Windows workarounds in our tests (#2501)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### v3.1.2
|
### v3.1.2
|
||||||
@@ -49,7 +67,7 @@ _23 July 2025_
|
|||||||
- 🛠 Fixed a typo in the 3.9 MUSL riscv64 identifier (`cp39-musllinux_ricv64` -> `cp39-musllinux_riscv64`) (#2490)
|
- 🛠 Fixed a typo in the 3.9 MUSL riscv64 identifier (`cp39-musllinux_ricv64` -> `cp39-musllinux_riscv64`) (#2490)
|
||||||
- 🛠 Mistyping `--only` now shows the correct possibilities, and even suggests near matches on Python 3.14+ (#2499)
|
- 🛠 Mistyping `--only` now shows the correct possibilities, and even suggests near matches on Python 3.14+ (#2499)
|
||||||
- 🛠 Only support one output from the repair step on linux like other platforms; auditwheel fixed this over four years ago! (#2478)
|
- 🛠 Only support one output from the repair step on linux like other platforms; auditwheel fixed this over four years ago! (#2478)
|
||||||
- 🛠 We now use pattern matching extensively (#2434)
|
- 💼 We now use pattern matching extensively (#2434)
|
||||||
- 📚 We now have platform maintainers for our special platforms and interpreters! (#2481)
|
- 📚 We now have platform maintainers for our special platforms and interpreters! (#2481)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ cibuildwheel to run tests, add the following YAML to your CI config file:
|
|||||||
You can configure cibuildwheel with a config file, such as `pyproject.toml`.
|
You can configure cibuildwheel with a config file, such as `pyproject.toml`.
|
||||||
Options have the same names as the environment variable overrides, but are
|
Options have the same names as the environment variable overrides, but are
|
||||||
placed in `[tool.cibuildwheel]` and are lower case, with dashes, following
|
placed in `[tool.cibuildwheel]` and are lower case, with dashes, following
|
||||||
common [TOML][https://toml.io] practice. Anything placed in subsections `linux`, `windows`,
|
common [TOML](https://toml.io) practice. Anything placed in subsections `linux`, `windows`,
|
||||||
`macos`, or `pyodide` will only affect those platforms. Lists can be used
|
`macos`, or `pyodide` will only affect those platforms. Lists can be used
|
||||||
instead of strings for items that are naturally a list. Multiline strings also
|
instead of strings for items that are naturally a list. Multiline strings also
|
||||||
work just like in the environment variables. Environment variables will take
|
work just like in the environment variables. Environment variables will take
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ GitHub actions has pipx in all the runners as a supported package manager, as we
|
|||||||
name: Make SDist
|
name: Make SDist
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v5
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0 # Optional, use if you use setuptools_scm
|
fetch-depth: 0 # Optional, use if you use setuptools_scm
|
||||||
submodules: true # Optional, use if you have submodules
|
submodules: true # Optional, use if you have submodules
|
||||||
@@ -54,7 +54,7 @@ Then, you need to publish the artifacts that the previous jobs have built. This
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
if: github.event_name == 'release' && github.event.action == 'published'
|
if: github.event_name == 'release' && github.event.action == 'published'
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/download-artifact@v4
|
- uses: actions/download-artifact@v5
|
||||||
with:
|
with:
|
||||||
pattern: cibw-*
|
pattern: cibw-*
|
||||||
path: dist
|
path: dist
|
||||||
|
|||||||
+3
-3
@@ -110,7 +110,7 @@ There are two suggested methods for keeping cibuildwheel up to date that instead
|
|||||||
If you use GitHub Actions for builds, you can use cibuildwheel as an action:
|
If you use GitHub Actions for builds, you can use cibuildwheel as an action:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
uses: pypa/cibuildwheel@v3.1.3
|
uses: pypa/cibuildwheel@v3.1.4
|
||||||
```
|
```
|
||||||
|
|
||||||
This is a composite step that just runs cibuildwheel using pipx. You can set command-line options as `with:` parameters, and use `env:` as normal.
|
This is a composite step that just runs cibuildwheel using pipx. You can set command-line options as `with:` parameters, and use `env:` as normal.
|
||||||
@@ -132,7 +132,7 @@ The second option, and the only one that supports other CI systems, is using a `
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
# requirements-cibw.txt
|
# requirements-cibw.txt
|
||||||
cibuildwheel==3.1.3
|
cibuildwheel==3.1.4
|
||||||
```
|
```
|
||||||
|
|
||||||
Then your install step would have `python -m pip install -r requirements-cibw.txt` in it. Your `.github/dependabot.yml` file could look like this:
|
Then your install step would have `python -m pip install -r requirements-cibw.txt` in it. Your `.github/dependabot.yml` file could look like this:
|
||||||
@@ -297,7 +297,7 @@ Solutions to this vary, but the simplest is to use pipx:
|
|||||||
# most runners have pipx preinstalled, but in case you don't
|
# most runners have pipx preinstalled, but in case you don't
|
||||||
python3 -m pip install pipx
|
python3 -m pip install pipx
|
||||||
|
|
||||||
pipx run cibuildwheel==3.1.3 --output-dir wheelhouse
|
pipx run cibuildwheel==3.1.4 --output-dir wheelhouse
|
||||||
pipx run twine upload wheelhouse/*.whl
|
pipx run twine upload wheelhouse/*.whl
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
+28
-22
@@ -74,7 +74,7 @@ Windows arm64 platform support is experimental.
|
|||||||
|
|
||||||
See the [cibuildwheel 2 documentation](https://cibuildwheel.pypa.io/en/2.x/) for past end-of-life versions of Python.
|
See the [cibuildwheel 2 documentation](https://cibuildwheel.pypa.io/en/2.x/) for past end-of-life versions of Python.
|
||||||
|
|
||||||
#### Examples
|
#### Examples {: #build-skip-examples }
|
||||||
|
|
||||||
!!! tab examples "pyproject.toml"
|
!!! tab examples "pyproject.toml"
|
||||||
|
|
||||||
@@ -106,6 +106,12 @@ See the [cibuildwheel 2 documentation](https://cibuildwheel.pypa.io/en/2.x/) for
|
|||||||
|
|
||||||
# Disable building PyPy wheels on all platforms
|
# Disable building PyPy wheels on all platforms
|
||||||
skip = "pp*"
|
skip = "pp*"
|
||||||
|
|
||||||
|
# Disable free-threading builds on all platforms
|
||||||
|
skip = "cp3??t-*"
|
||||||
|
|
||||||
|
# Disable free-threading builds on Windows
|
||||||
|
skip = "cp3??t-win*"
|
||||||
```
|
```
|
||||||
|
|
||||||
!!! tab examples "Environment variables"
|
!!! tab examples "Environment variables"
|
||||||
@@ -137,12 +143,16 @@ See the [cibuildwheel 2 documentation](https://cibuildwheel.pypa.io/en/2.x/) for
|
|||||||
|
|
||||||
# Disable building PyPy wheels on all platforms
|
# Disable building PyPy wheels on all platforms
|
||||||
CIBW_SKIP: pp*
|
CIBW_SKIP: pp*
|
||||||
|
|
||||||
|
# Disable free-threading builds on all platforms
|
||||||
|
CIBW_SKIP: "cp3??t-*"
|
||||||
|
|
||||||
|
# Disable free-threading builds on Windows
|
||||||
|
CIBW_SKIP: "cp3??t-win*"
|
||||||
```
|
```
|
||||||
|
|
||||||
Separate multiple selectors with a space.
|
Separate multiple selectors with a space.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
It is generally recommended to set `CIBW_BUILD` as an environment variable, though `skip`
|
It is generally recommended to set `CIBW_BUILD` as an environment variable, though `skip`
|
||||||
tends to be useful in a config file; you can statically declare that you don't
|
tends to be useful in a config file; you can statically declare that you don't
|
||||||
support a specific build, for example.
|
support a specific build, for example.
|
||||||
@@ -344,13 +354,9 @@ values are:
|
|||||||
|
|
||||||
- `cpython-prerelease`: Enables beta versions of Pythons if any are available
|
- `cpython-prerelease`: Enables beta versions of Pythons if any are available
|
||||||
(May-July, approximately).
|
(May-July, approximately).
|
||||||
- `cpython-freethreading`: [PEP 703](https://www.python.org/dev/peps/pep-0703)
|
- `cpython-freethreading`: Enable experimental free-threaded builds for CPython 3.13.
|
||||||
introduced variants of CPython that can be built without the Global
|
Free-threading wheels for 3.14+ are available without this flag, as it's [no
|
||||||
Interpreter Lock (GIL). Those variants are also known as free-threaded /
|
longer considered experimental](https://peps.python.org/pep-0779/).
|
||||||
no-gil. This will enable building these wheels for 3.13, which was considered
|
|
||||||
experimental. The build identifiers for those variants have a `t` suffix in
|
|
||||||
their `python_tag` (e.g. `cp313t-manylinux_x86_64`). Starting in 3.14,
|
|
||||||
free-threaded builds are no longer experimental, so this enable is not needed.
|
|
||||||
- `pypy`: Enable PyPy.
|
- `pypy`: Enable PyPy.
|
||||||
- `pypy-eol`: Enable PyPy versions that have passed end of life (if still available).
|
- `pypy-eol`: Enable PyPy versions that have passed end of life (if still available).
|
||||||
- `graalpy`: Enable GraalPy.
|
- `graalpy`: Enable GraalPy.
|
||||||
@@ -368,7 +374,15 @@ values are:
|
|||||||
that version of Python will become available without this flag.
|
that version of Python will become available without this flag.
|
||||||
|
|
||||||
!!! note
|
!!! note
|
||||||
Free threading was experimental in 3.13: [What’s New In Python 3.13](https://docs.python.org/3.13/whatsnew/3.13.html#free-threaded-cpython)
|
[PEP 703](https://www.python.org/dev/peps/pep-0703) introduced variants of
|
||||||
|
CPython that can be built without the Global Interpreter Lock (GIL). Those
|
||||||
|
variants are also known as free-threaded / no-gil. The build identifiers for
|
||||||
|
those variants have a `t` suffix in their `python_tag` (e.g.
|
||||||
|
`cp313t-manylinux_x86_64`).
|
||||||
|
|
||||||
|
Free threading was [experimental in 3.13](https://docs.python.org/3.13/whatsnew/3.13.html#free-threaded-cpython), so it required an explicit enable flag. But, as noted above, free-threading doesn't require an enable flag for 3.14+.
|
||||||
|
|
||||||
|
For more info on building for free-threading, see the [Python Free-Threading Guide](https://py-free-threading.github.io/).
|
||||||
|
|
||||||
Default: empty.
|
Default: empty.
|
||||||
|
|
||||||
@@ -392,13 +406,9 @@ without disabling your other enables.
|
|||||||
|
|
||||||
```toml
|
```toml
|
||||||
[tool.cibuildwheel]
|
[tool.cibuildwheel]
|
||||||
# Enable free-threaded support
|
# Enable free-threaded support for CPython 3.13
|
||||||
enable = ["cpython-freethreading"]
|
enable = ["cpython-freethreading"]
|
||||||
|
|
||||||
# Skip building free-threaded compatible wheels on Windows
|
|
||||||
enable = ["cpython-freethreading"]
|
|
||||||
skip = "*t-win*"
|
|
||||||
|
|
||||||
# Include all PyPy versions
|
# Include all PyPy versions
|
||||||
enable = ["pypy", "pypy-eol"]
|
enable = ["pypy", "pypy-eol"]
|
||||||
```
|
```
|
||||||
@@ -410,18 +420,14 @@ without disabling your other enables.
|
|||||||
# Include latest Python beta
|
# Include latest Python beta
|
||||||
CIBW_ENABLE: cpython-prerelease
|
CIBW_ENABLE: cpython-prerelease
|
||||||
|
|
||||||
# Include free-threaded support
|
# Include free-threaded support for CPython 3.13
|
||||||
CIBW_ENABLE: cpython-freethreading
|
CIBW_ENABLE: cpython-freethreading
|
||||||
|
|
||||||
# Include both
|
# Include both
|
||||||
CIBW_ENABLE: cpython-prerelease cpython-freethreading
|
CIBW_ENABLE: cpython-prerelease cpython-freethreading
|
||||||
|
|
||||||
# Skip building free-threaded compatible wheels on Windows
|
|
||||||
CIBW_ENABLE: cpython-freethreading
|
|
||||||
CIBW_SKIP: *t-win*
|
|
||||||
|
|
||||||
# Include all PyPy versions
|
# Include all PyPy versions
|
||||||
CIBW_ENABLE = pypy pypy-eol
|
CIBW_ENABLE: pypy pypy-eol
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+14
-12
@@ -9,8 +9,8 @@ title: Working examples
|
|||||||
| Name | CI | OS | Notes |
|
| Name | CI | OS | Notes |
|
||||||
|-----------------------------------|----|----|:------|
|
|-----------------------------------|----|----|:------|
|
||||||
| [scikit-learn][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | The machine learning library. A complex but clean config using many of cibuildwheel's features to build a large project with Cython and C++ extensions. |
|
| [scikit-learn][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | The machine learning library. A complex but clean config using many of cibuildwheel's features to build a large project with Cython and C++ extensions. |
|
||||||
| [pytorch-fairseq][] | ![github icon][] | ![apple icon][] ![linux icon][] | Facebook AI Research Sequence-to-Sequence Toolkit written in Python. |
|
|
||||||
| [duckdb][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | DuckDB is an analytical in-process SQL database management system |
|
| [duckdb][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | DuckDB is an analytical in-process SQL database management system |
|
||||||
|
| [pytorch-fairseq][] | ![github icon][] | ![apple icon][] ![linux icon][] | Facebook AI Research Sequence-to-Sequence Toolkit written in Python. |
|
||||||
| [NumPy][] | ![github icon][] ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | The fundamental package for scientific computing with Python. |
|
| [NumPy][] | ![github icon][] ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | The fundamental package for scientific computing with Python. |
|
||||||
| [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. |
|
| [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. |
|
||||||
| [NCNN][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | ncnn is a high-performance neural network inference framework optimized for the mobile platform |
|
| [NCNN][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | ncnn is a high-performance neural network inference framework optimized for the mobile platform |
|
||||||
@@ -22,6 +22,7 @@ title: Working examples
|
|||||||
| [MemRay][] | ![github icon][] | ![linux icon][] | Memray is a memory profiler for Python |
|
| [MemRay][] | ![github icon][] | ![linux icon][] | Memray is a memory profiler for Python |
|
||||||
| [uvloop][] | ![github icon][] | ![apple icon][] ![linux icon][] | Ultra fast asyncio event loop. |
|
| [uvloop][] | ![github icon][] | ![apple icon][] ![linux icon][] | Ultra fast asyncio event loop. |
|
||||||
| [psutil][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Cross-platform lib for process and system monitoring in Python |
|
| [psutil][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Cross-platform lib for process and system monitoring in Python |
|
||||||
|
| [falcon][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Falcon is a no-magic ASGI/WSGI API and microservices framework; it uses cibuildwheel for (optional) Cython extensions. |
|
||||||
| [Google Benchmark][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | A microbenchmark support library |
|
| [Google Benchmark][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | A microbenchmark support library |
|
||||||
| [vaex][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Out-of-Core hybrid Apache Arrow/NumPy DataFrame for Python, ML, visualization and exploration of big tabular data at a billion rows per second 🚀 |
|
| [vaex][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Out-of-Core hybrid Apache Arrow/NumPy DataFrame for Python, ML, visualization and exploration of big tabular data at a billion rows per second 🚀 |
|
||||||
| [Apache Beam][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Apache Beam is a unified programming model for Batch and Streaming data processing. |
|
| [Apache Beam][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Apache Beam is a unified programming model for Batch and Streaming data processing. |
|
||||||
@@ -40,8 +41,8 @@ title: Working examples
|
|||||||
| [OpenSpiel][] | ![github icon][] | ![apple icon][] ![linux icon][] | OpenSpiel is a collection of environments and algorithms for research in general reinforcement learning and search/planning in games. |
|
| [OpenSpiel][] | ![github icon][] | ![apple icon][] ![linux icon][] | OpenSpiel is a collection of environments and algorithms for research in general reinforcement learning and search/planning in games. |
|
||||||
| [Dependency Injector][] | ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Dependency injection framework for Python, uses Windows TravisCI |
|
| [Dependency Injector][] | ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Dependency injection framework for Python, uses Windows TravisCI |
|
||||||
| [UltraJSON][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Ultra fast JSON decoder and encoder written in C with Python bindings |
|
| [UltraJSON][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Ultra fast JSON decoder and encoder written in C with Python bindings |
|
||||||
| [pyzmq][] | ![github icon][] ![circleci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Python bindings for zeromq, the networking library. Uses Cython on CPython and CFFI on PyPy. ARM wheels for linux are built natively on CircleCI. |
|
|
||||||
| [CTranslate2][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Includes libraries from the [Intel oneAPI toolkit](https://www.intel.com/content/www/us/en/developer/tools/oneapi/base-toolkit.html) and CUDA kernels compiled for multiple GPU architectures. |
|
| [CTranslate2][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Includes libraries from the [Intel oneAPI toolkit](https://www.intel.com/content/www/us/en/developer/tools/oneapi/base-toolkit.html) and CUDA kernels compiled for multiple GPU architectures. |
|
||||||
|
| [pyzmq][] | ![github icon][] ![circleci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Python bindings for zeromq, the networking library. Uses Cython on CPython and CFFI on PyPy. ARM wheels for linux are built natively on CircleCI. |
|
||||||
| [Implicit][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Includes GPU support for linux wheels |
|
| [Implicit][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Includes GPU support for linux wheels |
|
||||||
| [tinyobjloader][] | ![azurepipelines icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Tiny but powerful single file wavefront obj loader |
|
| [tinyobjloader][] | ![azurepipelines icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Tiny but powerful single file wavefront obj loader |
|
||||||
| [vispy][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Main repository for Vispy |
|
| [vispy][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Main repository for Vispy |
|
||||||
@@ -64,8 +65,8 @@ title: Working examples
|
|||||||
| [PyTables][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A Python package to manage extremely large amounts of data |
|
| [PyTables][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A Python package to manage extremely large amounts of data |
|
||||||
| [google neuroglancer][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | WebGL-based viewer for volumetric data |
|
| [google neuroglancer][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | WebGL-based viewer for volumetric data |
|
||||||
| [Parselmouth][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A Python interface to the Praat software package, using pybind11, C++17 and CMake, with the core Praat static library built only once and shared between wheels. |
|
| [Parselmouth][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A Python interface to the Praat software package, using pybind11, C++17 and CMake, with the core Praat static library built only once and shared between wheels. |
|
||||||
| [DeepForest][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | An Efficient, Scalable and Optimized Python Framework for Deep Forest (2021.2.1) |
|
|
||||||
| [AutoPy][] | ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Includes a Windows Travis build. |
|
| [AutoPy][] | ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Includes a Windows Travis build. |
|
||||||
|
| [DeepForest][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | An Efficient, Scalable and Optimized Python Framework for Deep Forest (2021.2.1) |
|
||||||
| [H3-py][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Python bindings for H3, a hierarchical hexagonal geospatial indexing system |
|
| [H3-py][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Python bindings for H3, a hierarchical hexagonal geospatial indexing system |
|
||||||
| [time-machine][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Time mocking library using only the CPython C API. |
|
| [time-machine][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Time mocking library using only the CPython C API. |
|
||||||
| [mosec][] | ![github icon][] | ![linux icon][] ![apple icon][] | A machine learning model serving framework powered by Rust |
|
| [mosec][] | ![github icon][] | ![linux icon][] ![apple icon][] | A machine learning model serving framework powered by Rust |
|
||||||
@@ -76,24 +77,24 @@ title: Working examples
|
|||||||
| [KDEpy][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Kernel Density Estimation in Python |
|
| [KDEpy][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Kernel Density Estimation in Python |
|
||||||
| [dd-trace-py][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Uses custom alternate arch emulation on GitHub |
|
| [dd-trace-py][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Uses custom alternate arch emulation on GitHub |
|
||||||
| [tgcalls][] | ![github icon][] | ![apple icon][] ![windows icon][] | Python `pybind11` binding to Telegram's WebRTC library with third party dependencies like `OpenSSL`, `MozJPEG`, `FFmpeg`, etc. |
|
| [tgcalls][] | ![github icon][] | ![apple icon][] ![windows icon][] | Python `pybind11` binding to Telegram's WebRTC library with third party dependencies like `OpenSSL`, `MozJPEG`, `FFmpeg`, etc. |
|
||||||
| [python-rapidjson][] | ![travisci icon][] ![gitlab icon][] | ![windows icon][] ![linux icon][] | Python wrapper around rapidjson |
|
|
||||||
| [pybind11 python_example][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Example pybind11 module built with a Python-based build system |
|
| [pybind11 python_example][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Example pybind11 module built with a Python-based build system |
|
||||||
|
| [python-rapidjson][] | ![travisci icon][] ![gitlab icon][] | ![windows icon][] ![linux icon][] | Python wrapper around rapidjson |
|
||||||
| [sourmash][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Quickly search, compare, and analyze genomic and metagenomic data sets. |
|
| [sourmash][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Quickly search, compare, and analyze genomic and metagenomic data sets. |
|
||||||
| [abess][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A fast best-subset selection library. It uses cibuildwheel to build a large project with C++ extensions. |
|
| [abess][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A fast best-subset selection library. It uses cibuildwheel to build a large project with C++ extensions. |
|
||||||
| [python-snappy][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Python bindings for the snappy google library |
|
| [python-snappy][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Python bindings for the snappy google library |
|
||||||
| [cyvcf2][] | ![github icon][] | ![apple icon][] ![linux icon][] | cython + htslib == fast VCF and BCF processing |
|
| [cyvcf2][] | ![github icon][] | ![apple icon][] ![linux icon][] | cython + htslib == fast VCF and BCF processing |
|
||||||
| [jq.py][] | ![travisci icon][] | ![apple icon][] ![linux icon][] | Python bindings for jq |
|
| [jq.py][] | ![travisci icon][] | ![apple icon][] ![linux icon][] | Python bindings for jq |
|
||||||
| [matrixprofile][] | ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A Python 3 library making time series data mining tasks, utilizing matrix profile algorithms, accessible to everyone. |
|
| [matrixprofile][] | ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A Python 3 library making time series data mining tasks, utilizing matrix profile algorithms, accessible to everyone. |
|
||||||
| [Tokenizer][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Fast and customizable text tokenization library with BPE and SentencePiece support |
|
|
||||||
| [Confluent client for Kafka][] | ![travisci icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | setup in `tools/wheels/build-wheels.bat` |
|
| [Confluent client for Kafka][] | ![travisci icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | setup in `tools/wheels/build-wheels.bat` |
|
||||||
|
| [Tokenizer][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Fast and customizable text tokenization library with BPE and SentencePiece support |
|
||||||
| [iminuit][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Jupyter-friendly Python interface for C++ MINUIT2 |
|
| [iminuit][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Jupyter-friendly Python interface for C++ MINUIT2 |
|
||||||
| [pillow-heif][] | ![github icon][] ![cirrusci icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Bindings to libheif library with third party dependencies. Fully automated CI for tests and publishing including Apple Silicon builds. |
|
| [pillow-heif][] | ![github icon][] ![cirrusci icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Bindings to libheif library with third party dependencies. Fully automated CI for tests and publishing including Apple Silicon builds. |
|
||||||
| [keyvi][] | ![github icon][] | ![linux icon][] ![apple icon][] | FST based key value index highly optimized for size and lookup performance, utilizes ccache action for improved runtime |
|
| [keyvi][] | ![github icon][] | ![linux icon][] ![apple icon][] | FST based key value index highly optimized for size and lookup performance, utilizes ccache action for improved runtime |
|
||||||
| [PyGLM][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Fast OpenGL Mathematics (GLM) for Python |
|
| [PyGLM][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Fast OpenGL Mathematics (GLM) for Python |
|
||||||
| [TgCrypto][] | ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Includes a Windows Travis build. |
|
| [TgCrypto][] | ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Includes a Windows Travis build. |
|
||||||
| [iDynTree][] | ![github icon][] | ![linux icon][] | Uses manylinux_2_24 |
|
| [iDynTree][] | ![github icon][] | ![linux icon][] | Uses manylinux_2_24 |
|
||||||
| [streaming-form-data][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Streaming parser for multipart/form-data written in Cython |
|
|
||||||
| [power-grid-model][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Python/C++ library for distribution power system analysis |
|
| [power-grid-model][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Python/C++ library for distribution power system analysis |
|
||||||
|
| [streaming-form-data][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Streaming parser for multipart/form-data written in Cython |
|
||||||
| [pybase64][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Fast Base64 encoding/decoding in Python |
|
| [pybase64][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Fast Base64 encoding/decoding in Python |
|
||||||
| [bx-python][] | ![travisci icon][] | ![apple icon][] ![linux icon][] | A library that includes Cython extensions. |
|
| [bx-python][] | ![travisci icon][] | ![apple icon][] ![linux icon][] | A library that includes Cython extensions. |
|
||||||
| [boost-histogram][] | ![github icon][] ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Supports full range of wheels, including PyPy and alternate archs. |
|
| [boost-histogram][] | ![github icon][] ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Supports full range of wheels, including PyPy and alternate archs. |
|
||||||
@@ -119,8 +120,8 @@ title: Working examples
|
|||||||
| [pybind11 cross build example][] | ![github icon][] ![gitlab icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Same as pybind11 cmake_example but used to demo Linux ARM + Windows + macOS builds on GitLab |
|
| [pybind11 cross build example][] | ![github icon][] ![gitlab icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Same as pybind11 cmake_example but used to demo Linux ARM + Windows + macOS builds on GitLab |
|
||||||
|
|
||||||
[scikit-learn]: https://github.com/scikit-learn/scikit-learn
|
[scikit-learn]: https://github.com/scikit-learn/scikit-learn
|
||||||
[pytorch-fairseq]: https://github.com/facebookresearch/fairseq
|
|
||||||
[duckdb]: https://github.com/duckdb/duckdb
|
[duckdb]: https://github.com/duckdb/duckdb
|
||||||
|
[pytorch-fairseq]: https://github.com/facebookresearch/fairseq
|
||||||
[NumPy]: https://github.com/numpy/numpy
|
[NumPy]: https://github.com/numpy/numpy
|
||||||
[Tornado]: https://github.com/tornadoweb/tornado
|
[Tornado]: https://github.com/tornadoweb/tornado
|
||||||
[NCNN]: https://github.com/Tencent/ncnn
|
[NCNN]: https://github.com/Tencent/ncnn
|
||||||
@@ -132,6 +133,7 @@ title: Working examples
|
|||||||
[MemRay]: https://github.com/bloomberg/memray
|
[MemRay]: https://github.com/bloomberg/memray
|
||||||
[uvloop]: https://github.com/MagicStack/uvloop
|
[uvloop]: https://github.com/MagicStack/uvloop
|
||||||
[psutil]: https://github.com/giampaolo/psutil
|
[psutil]: https://github.com/giampaolo/psutil
|
||||||
|
[falcon]: https://github.com/falconry/falcon
|
||||||
[Google Benchmark]: https://github.com/google/benchmark
|
[Google Benchmark]: https://github.com/google/benchmark
|
||||||
[vaex]: https://github.com/vaexio/vaex
|
[vaex]: https://github.com/vaexio/vaex
|
||||||
[Apache Beam]: https://github.com/apache/beam
|
[Apache Beam]: https://github.com/apache/beam
|
||||||
@@ -150,8 +152,8 @@ title: Working examples
|
|||||||
[OpenSpiel]: https://github.com/google-deepmind/open_spiel
|
[OpenSpiel]: https://github.com/google-deepmind/open_spiel
|
||||||
[Dependency Injector]: https://github.com/ets-labs/python-dependency-injector
|
[Dependency Injector]: https://github.com/ets-labs/python-dependency-injector
|
||||||
[UltraJSON]: https://github.com/ultrajson/ultrajson
|
[UltraJSON]: https://github.com/ultrajson/ultrajson
|
||||||
[pyzmq]: https://github.com/zeromq/pyzmq
|
|
||||||
[CTranslate2]: https://github.com/OpenNMT/CTranslate2
|
[CTranslate2]: https://github.com/OpenNMT/CTranslate2
|
||||||
|
[pyzmq]: https://github.com/zeromq/pyzmq
|
||||||
[Implicit]: https://github.com/benfred/implicit
|
[Implicit]: https://github.com/benfred/implicit
|
||||||
[tinyobjloader]: https://github.com/tinyobjloader/tinyobjloader
|
[tinyobjloader]: https://github.com/tinyobjloader/tinyobjloader
|
||||||
[vispy]: https://github.com/vispy/vispy
|
[vispy]: https://github.com/vispy/vispy
|
||||||
@@ -174,8 +176,8 @@ title: Working examples
|
|||||||
[PyTables]: https://github.com/PyTables/PyTables
|
[PyTables]: https://github.com/PyTables/PyTables
|
||||||
[google neuroglancer]: https://github.com/google/neuroglancer
|
[google neuroglancer]: https://github.com/google/neuroglancer
|
||||||
[Parselmouth]: https://github.com/YannickJadoul/Parselmouth
|
[Parselmouth]: https://github.com/YannickJadoul/Parselmouth
|
||||||
[DeepForest]: https://github.com/LAMDA-NJU/Deep-Forest
|
|
||||||
[AutoPy]: https://github.com/autopilot-rs/autopy
|
[AutoPy]: https://github.com/autopilot-rs/autopy
|
||||||
|
[DeepForest]: https://github.com/LAMDA-NJU/Deep-Forest
|
||||||
[H3-py]: https://github.com/uber/h3-py
|
[H3-py]: https://github.com/uber/h3-py
|
||||||
[time-machine]: https://github.com/adamchainz/time-machine
|
[time-machine]: https://github.com/adamchainz/time-machine
|
||||||
[mosec]: https://github.com/mosecorg/mosec
|
[mosec]: https://github.com/mosecorg/mosec
|
||||||
@@ -186,24 +188,24 @@ title: Working examples
|
|||||||
[KDEpy]: https://github.com/tommyod/KDEpy
|
[KDEpy]: https://github.com/tommyod/KDEpy
|
||||||
[dd-trace-py]: https://github.com/DataDog/dd-trace-py
|
[dd-trace-py]: https://github.com/DataDog/dd-trace-py
|
||||||
[tgcalls]: https://github.com/MarshalX/tgcalls
|
[tgcalls]: https://github.com/MarshalX/tgcalls
|
||||||
[python-rapidjson]: https://github.com/python-rapidjson/python-rapidjson
|
|
||||||
[pybind11 python_example]: https://github.com/pybind/python_example
|
[pybind11 python_example]: https://github.com/pybind/python_example
|
||||||
|
[python-rapidjson]: https://github.com/python-rapidjson/python-rapidjson
|
||||||
[sourmash]: https://github.com/sourmash-bio/sourmash
|
[sourmash]: https://github.com/sourmash-bio/sourmash
|
||||||
[abess]: https://github.com/abess-team/abess
|
[abess]: https://github.com/abess-team/abess
|
||||||
[python-snappy]: https://github.com/intake/python-snappy
|
[python-snappy]: https://github.com/intake/python-snappy
|
||||||
[cyvcf2]: https://github.com/brentp/cyvcf2
|
[cyvcf2]: https://github.com/brentp/cyvcf2
|
||||||
[jq.py]: https://github.com/mwilliamson/jq.py
|
[jq.py]: https://github.com/mwilliamson/jq.py
|
||||||
[matrixprofile]: https://github.com/matrix-profile-foundation/matrixprofile
|
[matrixprofile]: https://github.com/matrix-profile-foundation/matrixprofile
|
||||||
[Tokenizer]: https://github.com/OpenNMT/Tokenizer
|
|
||||||
[Confluent client for Kafka]: https://github.com/confluentinc/confluent-kafka-python
|
[Confluent client for Kafka]: https://github.com/confluentinc/confluent-kafka-python
|
||||||
|
[Tokenizer]: https://github.com/OpenNMT/Tokenizer
|
||||||
[iminuit]: https://github.com/scikit-hep/iminuit
|
[iminuit]: https://github.com/scikit-hep/iminuit
|
||||||
[pillow-heif]: https://github.com/bigcat88/pillow_heif
|
[pillow-heif]: https://github.com/bigcat88/pillow_heif
|
||||||
[keyvi]: https://github.com/KeyviDev/keyvi
|
[keyvi]: https://github.com/KeyviDev/keyvi
|
||||||
[PyGLM]: https://github.com/Zuzu-Typ/PyGLM
|
[PyGLM]: https://github.com/Zuzu-Typ/PyGLM
|
||||||
[TgCrypto]: https://github.com/pyrogram/tgcrypto
|
[TgCrypto]: https://github.com/pyrogram/tgcrypto
|
||||||
[iDynTree]: https://github.com/robotology/idyntree
|
[iDynTree]: https://github.com/robotology/idyntree
|
||||||
[streaming-form-data]: https://github.com/siddhantgoel/streaming-form-data
|
|
||||||
[power-grid-model]: https://github.com/PowerGridModel/power-grid-model
|
[power-grid-model]: https://github.com/PowerGridModel/power-grid-model
|
||||||
|
[streaming-form-data]: https://github.com/siddhantgoel/streaming-form-data
|
||||||
[pybase64]: https://github.com/mayeut/pybase64
|
[pybase64]: https://github.com/mayeut/pybase64
|
||||||
[bx-python]: https://github.com/bxlab/bx-python
|
[bx-python]: https://github.com/bxlab/bx-python
|
||||||
[boost-histogram]: https://github.com/scikit-hep/boost-histogram
|
[boost-histogram]: https://github.com/scikit-hep/boost-histogram
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ jobs:
|
|||||||
- bash: |
|
- bash: |
|
||||||
set -o errexit
|
set -o errexit
|
||||||
python3 -m pip install --upgrade pip
|
python3 -m pip install --upgrade pip
|
||||||
pip3 install cibuildwheel==3.1.3
|
pip3 install cibuildwheel==3.1.4
|
||||||
displayName: Install dependencies
|
displayName: Install dependencies
|
||||||
- bash: cibuildwheel --output-dir wheelhouse .
|
- bash: cibuildwheel --output-dir wheelhouse .
|
||||||
displayName: Build wheels
|
displayName: Build wheels
|
||||||
@@ -20,7 +20,7 @@ jobs:
|
|||||||
- bash: |
|
- bash: |
|
||||||
set -o errexit
|
set -o errexit
|
||||||
python3 -m pip install --upgrade pip
|
python3 -m pip install --upgrade pip
|
||||||
python3 -m pip install cibuildwheel==3.1.3
|
python3 -m pip install cibuildwheel==3.1.4
|
||||||
displayName: Install dependencies
|
displayName: Install dependencies
|
||||||
- bash: cibuildwheel --output-dir wheelhouse .
|
- bash: cibuildwheel --output-dir wheelhouse .
|
||||||
displayName: Build wheels
|
displayName: Build wheels
|
||||||
@@ -34,7 +34,7 @@ jobs:
|
|||||||
- bash: |
|
- bash: |
|
||||||
set -o errexit
|
set -o errexit
|
||||||
python -m pip install --upgrade pip
|
python -m pip install --upgrade pip
|
||||||
pip install cibuildwheel==3.1.3
|
pip install cibuildwheel==3.1.4
|
||||||
displayName: Install dependencies
|
displayName: Install dependencies
|
||||||
- bash: cibuildwheel --output-dir wheelhouse .
|
- bash: cibuildwheel --output-dir wheelhouse .
|
||||||
displayName: Build wheels
|
displayName: Build wheels
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ jobs:
|
|||||||
- run:
|
- run:
|
||||||
name: Build the Linux wheels.
|
name: Build the Linux wheels.
|
||||||
command: |
|
command: |
|
||||||
python3 -m pip install --user cibuildwheel==3.1.3
|
python3 -m pip install --user cibuildwheel==3.1.4
|
||||||
cibuildwheel --output-dir wheelhouse
|
cibuildwheel --output-dir wheelhouse
|
||||||
- store_artifacts:
|
- store_artifacts:
|
||||||
path: wheelhouse/
|
path: wheelhouse/
|
||||||
@@ -28,7 +28,7 @@ jobs:
|
|||||||
- run:
|
- run:
|
||||||
name: Build the Linux aarch64 wheels.
|
name: Build the Linux aarch64 wheels.
|
||||||
command: |
|
command: |
|
||||||
python3 -m pip install --user cibuildwheel==3.1.3
|
python3 -m pip install --user cibuildwheel==3.1.4
|
||||||
python3 -m cibuildwheel --output-dir wheelhouse
|
python3 -m cibuildwheel --output-dir wheelhouse
|
||||||
- store_artifacts:
|
- store_artifacts:
|
||||||
path: wheelhouse/
|
path: wheelhouse/
|
||||||
@@ -44,7 +44,7 @@ jobs:
|
|||||||
name: Build the OS X wheels.
|
name: Build the OS X wheels.
|
||||||
command: |
|
command: |
|
||||||
sudo softwareupdate --install-rosetta --agree-to-license # for python<=3.8 or x86_64/universal2 tests
|
sudo softwareupdate --install-rosetta --agree-to-license # for python<=3.8 or x86_64/universal2 tests
|
||||||
pip3 install cibuildwheel==3.1.3
|
pip3 install cibuildwheel==3.1.4
|
||||||
cibuildwheel --output-dir wheelhouse
|
cibuildwheel --output-dir wheelhouse
|
||||||
- store_artifacts:
|
- store_artifacts:
|
||||||
path: wheelhouse/
|
path: wheelhouse/
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
build_and_store_wheels: &BUILD_AND_STORE_WHEELS
|
build_and_store_wheels: &BUILD_AND_STORE_WHEELS
|
||||||
install_cibuildwheel_script:
|
install_cibuildwheel_script:
|
||||||
- python -m pip install cibuildwheel==3.1.3
|
- python -m pip install cibuildwheel==3.1.4
|
||||||
run_cibuildwheel_script:
|
run_cibuildwheel_script:
|
||||||
- cibuildwheel
|
- cibuildwheel
|
||||||
wheels_artifacts:
|
wheels_artifacts:
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
build_and_store_wheels: &BUILD_AND_STORE_WHEELS
|
build_and_store_wheels: &BUILD_AND_STORE_WHEELS
|
||||||
install_cibuildwheel_script:
|
install_cibuildwheel_script:
|
||||||
- python -m pip install cibuildwheel==3.1.3
|
- python -m pip install cibuildwheel==3.1.4
|
||||||
run_cibuildwheel_script:
|
run_cibuildwheel_script:
|
||||||
- cibuildwheel
|
- cibuildwheel
|
||||||
wheels_artifacts:
|
wheels_artifacts:
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ jobs:
|
|||||||
platform: pyodide
|
platform: pyodide
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v5
|
||||||
|
|
||||||
# GitHub Actions can't currently run the Android emulator on macOS.
|
# GitHub Actions can't currently run the Android emulator on macOS.
|
||||||
- name: Skip Android tests on macOS
|
- name: Skip Android tests on macOS
|
||||||
@@ -61,7 +61,7 @@ jobs:
|
|||||||
sudo udevadm trigger --name-match=kvm
|
sudo udevadm trigger --name-match=kvm
|
||||||
|
|
||||||
- name: Build wheels
|
- name: Build wheels
|
||||||
uses: pypa/cibuildwheel@v3.1.3
|
uses: pypa/cibuildwheel@v3.1.4
|
||||||
env:
|
env:
|
||||||
CIBW_PLATFORM: ${{ matrix.platform || 'auto' }}
|
CIBW_PLATFORM: ${{ matrix.platform || 'auto' }}
|
||||||
# Can also be configured directly, using `with:`
|
# Can also be configured directly, using `with:`
|
||||||
@@ -79,7 +79,7 @@ jobs:
|
|||||||
name: Build source distribution
|
name: Build source distribution
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v5
|
||||||
|
|
||||||
- name: Build sdist
|
- name: Build sdist
|
||||||
run: pipx run build --sdist
|
run: pipx run build --sdist
|
||||||
@@ -99,7 +99,7 @@ jobs:
|
|||||||
# or, alternatively, upload to PyPI on every tag starting with 'v' (remove on: release above to use this)
|
# or, alternatively, upload to PyPI on every tag starting with 'v' (remove on: release above to use this)
|
||||||
# if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
|
# if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/download-artifact@v4
|
- uses: actions/download-artifact@v5
|
||||||
with:
|
with:
|
||||||
# unpacks all CIBW artifacts into dist/
|
# unpacks all CIBW artifacts into dist/
|
||||||
pattern: cibw-*
|
pattern: cibw-*
|
||||||
|
|||||||
@@ -12,10 +12,10 @@ jobs:
|
|||||||
os: [ubuntu-latest, ubuntu-24.04-arm, windows-latest, windows-11-arm, macos-13, macos-14]
|
os: [ubuntu-latest, ubuntu-24.04-arm, windows-latest, windows-11-arm, macos-13, macos-14]
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v5
|
||||||
|
|
||||||
- name: Build wheels
|
- name: Build wheels
|
||||||
uses: pypa/cibuildwheel@v3.1.3
|
uses: pypa/cibuildwheel@v3.1.4
|
||||||
# env:
|
# env:
|
||||||
# CIBW_SOME_OPTION: value
|
# CIBW_SOME_OPTION: value
|
||||||
# ...
|
# ...
|
||||||
|
|||||||
@@ -12,10 +12,10 @@ jobs:
|
|||||||
os: [ubuntu-latest, ubuntu-24.04-arm, windows-latest, windows-11-arm, macos-13, macos-14]
|
os: [ubuntu-latest, ubuntu-24.04-arm, windows-latest, windows-11-arm, macos-13, macos-14]
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v5
|
||||||
|
|
||||||
- name: Build wheels
|
- name: Build wheels
|
||||||
run: pipx run cibuildwheel==3.1.3
|
run: pipx run cibuildwheel==3.1.4
|
||||||
|
|
||||||
- uses: actions/upload-artifact@v4
|
- uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ jobs:
|
|||||||
os: [ubuntu-latest, ubuntu-24.04-arm, windows-latest, windows-11-arm, macos-13, macos-14]
|
os: [ubuntu-latest, ubuntu-24.04-arm, windows-latest, windows-11-arm, macos-13, macos-14]
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v5
|
||||||
|
|
||||||
- name: Set up QEMU
|
- name: Set up QEMU
|
||||||
if: runner.os == 'Linux' && runner.arch == 'X64'
|
if: runner.os == 'Linux' && runner.arch == 'X64'
|
||||||
@@ -21,7 +21,7 @@ jobs:
|
|||||||
platforms: all
|
platforms: all
|
||||||
|
|
||||||
- name: Build wheels
|
- name: Build wheels
|
||||||
uses: pypa/cibuildwheel@v3.1.3
|
uses: pypa/cibuildwheel@v3.1.4
|
||||||
env:
|
env:
|
||||||
# configure cibuildwheel on Linux to build native archs ('auto'),
|
# configure cibuildwheel on Linux to build native archs ('auto'),
|
||||||
# and to split the remaining architectures between the x86_64 and
|
# and to split the remaining architectures between the x86_64 and
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ linux:
|
|||||||
DOCKER_TLS_CERTDIR: ""
|
DOCKER_TLS_CERTDIR: ""
|
||||||
script:
|
script:
|
||||||
- curl -sSL https://get.docker.com/ | sh
|
- curl -sSL https://get.docker.com/ | sh
|
||||||
- python -m pip install cibuildwheel==3.1.3
|
- python -m pip install cibuildwheel==3.1.4
|
||||||
- cibuildwheel --output-dir wheelhouse
|
- cibuildwheel --output-dir wheelhouse
|
||||||
artifacts:
|
artifacts:
|
||||||
paths:
|
paths:
|
||||||
@@ -23,7 +23,7 @@ windows:
|
|||||||
before_script:
|
before_script:
|
||||||
- choco install python -y --allow-downgrade --version 3.12.4
|
- choco install python -y --allow-downgrade --version 3.12.4
|
||||||
- choco install git.install -y
|
- choco install git.install -y
|
||||||
- py -m pip install cibuildwheel==3.1.3
|
- py -m pip install cibuildwheel==3.1.4
|
||||||
script:
|
script:
|
||||||
- py -m cibuildwheel --output-dir wheelhouse --platform windows
|
- py -m cibuildwheel --output-dir wheelhouse --platform windows
|
||||||
artifacts:
|
artifacts:
|
||||||
@@ -35,7 +35,7 @@ windows:
|
|||||||
macos:
|
macos:
|
||||||
image: macos-14-xcode-15
|
image: macos-14-xcode-15
|
||||||
before_script:
|
before_script:
|
||||||
- python3 -m pip install cibuildwheel==3.1.3
|
- python3 -m pip install cibuildwheel==3.1.4
|
||||||
script:
|
script:
|
||||||
- python3 -m cibuildwheel --output-dir wheelhouse
|
- python3 -m cibuildwheel --output-dir wheelhouse
|
||||||
artifacts:
|
artifacts:
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ linux:
|
|||||||
- curl -sSL https://get.docker.com/ | sh
|
- curl -sSL https://get.docker.com/ | sh
|
||||||
# Warning: This is extremely slow, be careful with how many wheels you build
|
# Warning: This is extremely slow, be careful with how many wheels you build
|
||||||
- docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
|
- docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
|
||||||
- python -m pip install cibuildwheel==3.1.3
|
- python -m pip install cibuildwheel==3.1.4
|
||||||
# Assuming your CI runner's default architecture is x86_64...
|
# Assuming your CI runner's default architecture is x86_64...
|
||||||
- cibuildwheel --output-dir wheelhouse --platform linux --archs aarch64
|
- cibuildwheel --output-dir wheelhouse --platform linux --archs aarch64
|
||||||
artifacts:
|
artifacts:
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ jobs:
|
|||||||
- ln -s /c/Python312/python.exe /c/Python312/python3.exe
|
- ln -s /c/Python312/python.exe /c/Python312/python3.exe
|
||||||
|
|
||||||
install:
|
install:
|
||||||
- python3 -m pip install cibuildwheel==3.1.3
|
- python3 -m pip install cibuildwheel==3.1.4
|
||||||
|
|
||||||
script:
|
script:
|
||||||
# build the wheels, put them into './dist'
|
# build the wheels, put them into './dist'
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ jobs:
|
|||||||
- ln -s /c/Python312/python.exe /c/Python312/python3.exe
|
- ln -s /c/Python312/python.exe /c/Python312/python3.exe
|
||||||
|
|
||||||
install:
|
install:
|
||||||
- python3 -m pip install cibuildwheel==3.1.3
|
- python3 -m pip install cibuildwheel==3.1.4
|
||||||
|
|
||||||
script:
|
script:
|
||||||
# build the wheels, put them into './wheelhouse'
|
# build the wheels, put them into './wheelhouse'
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ jobs:
|
|||||||
- stage: deploy
|
- stage: deploy
|
||||||
name: Build and deploy Linux wheels
|
name: Build and deploy Linux wheels
|
||||||
services: docker
|
services: docker
|
||||||
install: python3 -m pip install cibuildwheel==3.1.3 twine
|
install: python3 -m pip install cibuildwheel==3.1.4 twine
|
||||||
script: python3 -m cibuildwheel --output-dir wheelhouse
|
script: python3 -m cibuildwheel --output-dir wheelhouse
|
||||||
after_success: python3 -m twine upload --skip-existing wheelhouse/*.whl
|
after_success: python3 -m twine upload --skip-existing wheelhouse/*.whl
|
||||||
# Deploy on windows
|
# Deploy on windows
|
||||||
@@ -60,7 +60,7 @@ jobs:
|
|||||||
name: Build and deploy Windows wheels
|
name: Build and deploy Windows wheels
|
||||||
os: windows
|
os: windows
|
||||||
language: shell
|
language: shell
|
||||||
install: python3 -m pip install cibuildwheel==3.1.3 twine
|
install: python3 -m pip install cibuildwheel==3.1.4 twine
|
||||||
script: python3 -m cibuildwheel --output-dir wheelhouse
|
script: python3 -m cibuildwheel --output-dir wheelhouse
|
||||||
after_success: python3 -m twine upload --skip-existing wheelhouse/*.whl
|
after_success: python3 -m twine upload --skip-existing wheelhouse/*.whl
|
||||||
|
|
||||||
|
|||||||
@@ -58,6 +58,7 @@ def tests(session: nox.Session) -> None:
|
|||||||
session.run("pytest", *session.posargs)
|
session.run("pytest", *session.posargs)
|
||||||
else:
|
else:
|
||||||
unit_test_args = ["--run-docker"] if sys.platform.startswith("linux") else []
|
unit_test_args = ["--run-docker"] if sys.platform.startswith("linux") else []
|
||||||
|
session.run("pytest", "cibuildwheel") # run doctests
|
||||||
session.run("pytest", "unit_test", *unit_test_args)
|
session.run("pytest", "unit_test", *unit_test_args)
|
||||||
session.run("pytest", "test", "-x", "--durations", "0", "--timeout=2400", "test")
|
session.run("pytest", "test", "-x", "--durations", "0", "--timeout=2400", "test")
|
||||||
|
|
||||||
|
|||||||
+5
-2
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|||||||
|
|
||||||
[project]
|
[project]
|
||||||
name = "cibuildwheel"
|
name = "cibuildwheel"
|
||||||
version = "3.1.3"
|
version = "3.1.4"
|
||||||
description = "Build Python wheels on CI with minimal configuration."
|
description = "Build Python wheels on CI with minimal configuration."
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
license = "BSD-2-Clause"
|
license = "BSD-2-Clause"
|
||||||
@@ -45,6 +45,8 @@ dependencies = [
|
|||||||
"filelock",
|
"filelock",
|
||||||
"humanize",
|
"humanize",
|
||||||
"packaging>=20.9",
|
"packaging>=20.9",
|
||||||
|
# patchelf is used for Android
|
||||||
|
"patchelf; (sys_platform == 'linux' or sys_platform == 'darwin') and (platform_machine == 'x86_64' or platform_machine == 'arm64' or platform_machine == 'aarch64')",
|
||||||
"platformdirs",
|
"platformdirs",
|
||||||
"pyelftools>=0.29",
|
"pyelftools>=0.29",
|
||||||
"wheel>=0.33.6",
|
"wheel>=0.33.6",
|
||||||
@@ -93,6 +95,7 @@ test = [
|
|||||||
"setuptools",
|
"setuptools",
|
||||||
"tomli_w",
|
"tomli_w",
|
||||||
"validate-pyproject",
|
"validate-pyproject",
|
||||||
|
"xdoctest",
|
||||||
]
|
]
|
||||||
dev = [
|
dev = [
|
||||||
{include-group = "bin"},
|
{include-group = "bin"},
|
||||||
@@ -103,7 +106,7 @@ dev = [
|
|||||||
|
|
||||||
[tool.pytest.ini_options]
|
[tool.pytest.ini_options]
|
||||||
minversion = "6.0"
|
minversion = "6.0"
|
||||||
addopts = ["-ra", "--showlocals", "--strict-markers", "--strict-config"]
|
addopts = ["-ra", "--showlocals", "--strict-markers", "--strict-config", "--xdoctest", "--ignore-glob=*venv*"]
|
||||||
junit_family = "xunit2"
|
junit_family = "xunit2"
|
||||||
xfail_strict = true
|
xfail_strict = true
|
||||||
filterwarnings = ["error"]
|
filterwarnings = ["error"]
|
||||||
|
|||||||
+10
-9
@@ -90,8 +90,17 @@ def test_android_home(tmp_path, capfd):
|
|||||||
assert "ANDROID_HOME environment variable is not set" in capfd.readouterr().err
|
assert "ANDROID_HOME environment variable is not set" in capfd.readouterr().err
|
||||||
|
|
||||||
|
|
||||||
# Can fail to setup
|
# the first build can fail to setup - mark as flaky, and serial to make sure it runs first
|
||||||
|
@pytest.mark.serial
|
||||||
@pytest.mark.flaky(reruns=2)
|
@pytest.mark.flaky(reruns=2)
|
||||||
|
def test_expected_wheels(tmp_path):
|
||||||
|
new_c_project().generate(tmp_path)
|
||||||
|
wheels = cibuildwheel_run(tmp_path, add_env={"CIBW_PLATFORM": "android"})
|
||||||
|
assert wheels == expected_wheels(
|
||||||
|
"spam", "0.1.0", platform="android", machine_arch=native_arch.android_abi
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def test_frontend_good(tmp_path):
|
def test_frontend_good(tmp_path):
|
||||||
new_c_project().generate(tmp_path)
|
new_c_project().generate(tmp_path)
|
||||||
wheels = cibuildwheel_run(
|
wheels = cibuildwheel_run(
|
||||||
@@ -112,14 +121,6 @@ def test_frontend_bad(frontend, tmp_path, capfd):
|
|||||||
assert "Android requires the build frontend to be 'build'" in capfd.readouterr().err
|
assert "Android requires the build frontend to be 'build'" in capfd.readouterr().err
|
||||||
|
|
||||||
|
|
||||||
def test_expected_wheels(tmp_path):
|
|
||||||
new_c_project().generate(tmp_path)
|
|
||||||
wheels = cibuildwheel_run(tmp_path, add_env={"CIBW_PLATFORM": "android"})
|
|
||||||
assert wheels == expected_wheels(
|
|
||||||
"spam", "0.1.0", platform="android", machine_arch=native_arch.android_abi
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
@needs_emulator
|
@needs_emulator
|
||||||
def test_archs(tmp_path, capfd):
|
def test_archs(tmp_path, capfd):
|
||||||
new_c_project().generate(tmp_path)
|
new_c_project().generate(tmp_path)
|
||||||
|
|||||||
@@ -0,0 +1,127 @@
|
|||||||
|
import errno
|
||||||
|
import shutil
|
||||||
|
import sys
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
import cibuildwheel.__main__ as main_module
|
||||||
|
from cibuildwheel.__main__ import main
|
||||||
|
|
||||||
|
|
||||||
|
def test_clean_cache_when_cache_exists(tmp_path, monkeypatch, capfd):
|
||||||
|
fake_cache_dir = (tmp_path / "cibw_cache").resolve()
|
||||||
|
monkeypatch.setattr(main_module, "CIBW_CACHE_PATH", fake_cache_dir)
|
||||||
|
|
||||||
|
fake_cache_dir.mkdir(parents=True, exist_ok=True)
|
||||||
|
assert fake_cache_dir.exists()
|
||||||
|
|
||||||
|
cibw_sentinel = fake_cache_dir / "CACHEDIR.TAG"
|
||||||
|
cibw_sentinel.write_text(
|
||||||
|
"Signature: 8a477f597d28d172789f06886806bc55\n"
|
||||||
|
"# This file is a cache directory tag created by cibuildwheel.\n"
|
||||||
|
"# For information about cache directory tags, see:\n"
|
||||||
|
"# https://www.brynosaurus.com/cachedir/",
|
||||||
|
encoding="utf-8",
|
||||||
|
)
|
||||||
|
|
||||||
|
dummy_file = fake_cache_dir / "dummy.txt"
|
||||||
|
dummy_file.write_text("hello")
|
||||||
|
|
||||||
|
monkeypatch.setattr(sys, "argv", ["cibuildwheel", "--clean-cache"])
|
||||||
|
|
||||||
|
with pytest.raises(SystemExit) as e:
|
||||||
|
main()
|
||||||
|
|
||||||
|
assert e.value.code == 0
|
||||||
|
|
||||||
|
out, err = capfd.readouterr()
|
||||||
|
assert f"Clearing cache directory: {fake_cache_dir}" in out
|
||||||
|
assert "Cache cleared successfully." in out
|
||||||
|
assert not fake_cache_dir.exists()
|
||||||
|
|
||||||
|
|
||||||
|
def test_clean_cache_when_cache_does_not_exist(tmp_path, monkeypatch, capfd):
|
||||||
|
fake_cache_dir = (tmp_path / "nonexistent_cache").resolve()
|
||||||
|
monkeypatch.setattr(main_module, "CIBW_CACHE_PATH", fake_cache_dir)
|
||||||
|
|
||||||
|
monkeypatch.setattr(sys, "argv", ["cibuildwheel", "--clean-cache"])
|
||||||
|
|
||||||
|
with pytest.raises(SystemExit) as e:
|
||||||
|
main()
|
||||||
|
|
||||||
|
assert e.value.code == 0
|
||||||
|
|
||||||
|
out, err = capfd.readouterr()
|
||||||
|
assert f"Cache directory does not exist: {fake_cache_dir}" in out
|
||||||
|
|
||||||
|
|
||||||
|
def test_clean_cache_with_error(tmp_path, monkeypatch, capfd):
|
||||||
|
fake_cache_dir = (tmp_path / "cibw_cache").resolve()
|
||||||
|
monkeypatch.setattr(main_module, "CIBW_CACHE_PATH", fake_cache_dir)
|
||||||
|
|
||||||
|
fake_cache_dir.mkdir(parents=True, exist_ok=True)
|
||||||
|
assert fake_cache_dir.exists()
|
||||||
|
|
||||||
|
cibw_sentinel = fake_cache_dir / "CACHEDIR.TAG"
|
||||||
|
cibw_sentinel.write_text(
|
||||||
|
"Signature: 8a477f597d28d172789f06886806bc55\n"
|
||||||
|
"# This file is a cache directory tag created by cibuildwheel.\n"
|
||||||
|
"# For information about cache directory tags, see:\n"
|
||||||
|
"# https://www.brynosaurus.com/cachedir/",
|
||||||
|
encoding="utf-8",
|
||||||
|
)
|
||||||
|
|
||||||
|
monkeypatch.setattr(sys, "argv", ["cibuildwheel", "--clean-cache"])
|
||||||
|
|
||||||
|
def fake_rmtree(path): # noqa: ARG001
|
||||||
|
raise OSError(errno.EACCES, "Permission denied")
|
||||||
|
|
||||||
|
monkeypatch.setattr(shutil, "rmtree", fake_rmtree)
|
||||||
|
|
||||||
|
with pytest.raises(SystemExit) as e:
|
||||||
|
main()
|
||||||
|
|
||||||
|
assert e.value.code == 1
|
||||||
|
|
||||||
|
out, err = capfd.readouterr()
|
||||||
|
assert f"Clearing cache directory: {fake_cache_dir}" in out
|
||||||
|
assert "Error clearing cache:" in err
|
||||||
|
|
||||||
|
|
||||||
|
def test_clean_cache_without_sentinel(tmp_path, monkeypatch, capfd):
|
||||||
|
fake_cache_dir = (tmp_path / "not_a_cache").resolve()
|
||||||
|
monkeypatch.setattr(main_module, "CIBW_CACHE_PATH", fake_cache_dir)
|
||||||
|
|
||||||
|
fake_cache_dir.mkdir(parents=True, exist_ok=True)
|
||||||
|
|
||||||
|
monkeypatch.setattr(sys, "argv", ["cibuildwheel", "--clean-cache"])
|
||||||
|
|
||||||
|
with pytest.raises(SystemExit) as e:
|
||||||
|
main()
|
||||||
|
|
||||||
|
assert e.value.code == 1
|
||||||
|
|
||||||
|
out, err = capfd.readouterr()
|
||||||
|
assert "does not appear to be a cibuildwheel cache directory" in err
|
||||||
|
assert fake_cache_dir.exists()
|
||||||
|
|
||||||
|
|
||||||
|
def test_clean_cache_with_invalid_signature(tmp_path, monkeypatch, capfd):
|
||||||
|
fake_cache_dir = (tmp_path / "fake_cache").resolve()
|
||||||
|
monkeypatch.setattr(main_module, "CIBW_CACHE_PATH", fake_cache_dir)
|
||||||
|
|
||||||
|
fake_cache_dir.mkdir(parents=True, exist_ok=True)
|
||||||
|
|
||||||
|
cibw_sentinel = fake_cache_dir / "CACHEDIR.TAG"
|
||||||
|
cibw_sentinel.write_text("Invalid signature\n# This is not a real cache directory tag")
|
||||||
|
|
||||||
|
monkeypatch.setattr(sys, "argv", ["cibuildwheel", "--clean-cache"])
|
||||||
|
|
||||||
|
with pytest.raises(SystemExit) as e:
|
||||||
|
main()
|
||||||
|
|
||||||
|
assert e.value.code == 1
|
||||||
|
|
||||||
|
out, err = capfd.readouterr()
|
||||||
|
assert "does not contain a valid cache directory signature" in err
|
||||||
|
assert fake_cache_dir.exists()
|
||||||
@@ -278,3 +278,12 @@ def test_pyodide_on_windows(monkeypatch, capsys):
|
|||||||
|
|
||||||
assert exit.value.code == 2
|
assert exit.value.code == 2
|
||||||
assert "Building for pyodide is not supported on Windows" in err
|
assert "Building for pyodide is not supported on Windows" in err
|
||||||
|
|
||||||
|
|
||||||
|
def test_empty_archs_platform(platform, intercepted_build_args, monkeypatch):
|
||||||
|
monkeypatch.setenv("CIBW_ARCHS", "")
|
||||||
|
|
||||||
|
main()
|
||||||
|
|
||||||
|
options = intercepted_build_args.args[0]
|
||||||
|
assert options.globals.architectures == Architecture.auto_archs(platform)
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
import platform
|
|
||||||
import random
|
import random
|
||||||
import shutil
|
import shutil
|
||||||
import subprocess
|
import subprocess
|
||||||
@@ -29,16 +28,7 @@ from cibuildwheel.oci_container import (
|
|||||||
# for these tests we use manylinux2014 images, because they're available on
|
# for these tests we use manylinux2014 images, because they're available on
|
||||||
# multi architectures and include python3.8
|
# multi architectures and include python3.8
|
||||||
DEFAULT_IMAGE = "quay.io/pypa/manylinux2014:2025.03.08-1"
|
DEFAULT_IMAGE = "quay.io/pypa/manylinux2014:2025.03.08-1"
|
||||||
pm = platform.machine()
|
DEFAULT_OCI_PLATFORM = OCIPlatform.native()
|
||||||
DEFAULT_OCI_PLATFORM = {
|
|
||||||
"AMD64": OCIPlatform.AMD64,
|
|
||||||
"x86_64": OCIPlatform.AMD64,
|
|
||||||
"ppc64le": OCIPlatform.PPC64LE,
|
|
||||||
"s390x": OCIPlatform.S390X,
|
|
||||||
"aarch64": OCIPlatform.ARM64,
|
|
||||||
"arm64": OCIPlatform.ARM64,
|
|
||||||
"ARM64": OCIPlatform.ARM64,
|
|
||||||
}[pm]
|
|
||||||
|
|
||||||
PODMAN = OCIContainerEngineConfig(name="podman")
|
PODMAN = OCIContainerEngineConfig(name="podman")
|
||||||
|
|
||||||
@@ -494,7 +484,7 @@ def test_parse_engine_config(config, name, create_args, capsys):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.skipif(pm != "x86_64", reason="Only runs on x86_64")
|
@pytest.mark.skipif(DEFAULT_OCI_PLATFORM != OCIPlatform.AMD64, reason="Only runs on x86_64")
|
||||||
def test_enforce_32_bit(container_engine):
|
def test_enforce_32_bit(container_engine):
|
||||||
with OCIContainer(
|
with OCIContainer(
|
||||||
engine=container_engine, image=DEFAULT_IMAGE, oci_platform=OCIPlatform.i386
|
engine=container_engine, image=DEFAULT_IMAGE, oci_platform=OCIPlatform.i386
|
||||||
@@ -551,7 +541,7 @@ def test_local_image(
|
|||||||
) -> None:
|
) -> None:
|
||||||
if (
|
if (
|
||||||
detect_ci_provider() == CIProvider.travis_ci
|
detect_ci_provider() == CIProvider.travis_ci
|
||||||
and pm != "x86_64"
|
and DEFAULT_OCI_PLATFORM != OCIPlatform.AMD64
|
||||||
and platform != DEFAULT_OCI_PLATFORM
|
and platform != DEFAULT_OCI_PLATFORM
|
||||||
):
|
):
|
||||||
pytest.skip("Skipping test because docker on this platform does not support QEMU")
|
pytest.skip("Skipping test because docker on this platform does not support QEMU")
|
||||||
@@ -581,7 +571,7 @@ def test_local_image(
|
|||||||
def test_multiarch_image(container_engine, platform):
|
def test_multiarch_image(container_engine, platform):
|
||||||
if (
|
if (
|
||||||
detect_ci_provider() == CIProvider.travis_ci
|
detect_ci_provider() == CIProvider.travis_ci
|
||||||
and pm != "x86_64"
|
and DEFAULT_OCI_PLATFORM != OCIPlatform.AMD64
|
||||||
and platform != DEFAULT_OCI_PLATFORM
|
and platform != DEFAULT_OCI_PLATFORM
|
||||||
):
|
):
|
||||||
pytest.skip("Skipping test because docker on this platform does not support QEMU")
|
pytest.skip("Skipping test because docker on this platform does not support QEMU")
|
||||||
|
|||||||
Reference in New Issue
Block a user