Version 0.23.1 on PyPI has two sets of wheels uploaded ~17 months apart, and the later set ships a different grammar language version than the
earlier set. Because pip/uv on Python 3.10+ prefer the higher cpXY-abi3 tag, environments that pip install after the second upload silently receive
a wheel whose ABI is incompatible with py-tree-sitter < 0.25, causing a segmentation fault inside Language.query() with no Python-level error.
Two linux-x86_64 wheels co-exist under the same version string:
| Upload time (UTC) |
Filename |
Language.version |
| 2024-11-11 05:25:24 |
...-cp39-abi3-manylinux_2_5_x86_64...whl |
14 |
| 2026-04-14 15:11:16 |
...-cp310-abi3-manylinux1_x86_64...whl |
15 |
The same pattern exists for macOS and Windows wheels. Because pip/uv pick the highest compatible cpXY tag, any fresh install on Python 3.10+ now resolves to the cp310-abi3 wheel (grammar v15).
Installs done before 2026-04-14 — or Python 3.9 environments — still get the cp39-abi3 wheel (grammar v14).
Version
0.23.1on PyPI has two sets of wheels uploaded ~17 months apart, and the later set ships a different grammar language version than theearlier set. Because
pip/uvon Python 3.10+ prefer the highercpXY-abi3tag, environments thatpip installafter the second upload silently receivea wheel whose ABI is incompatible with
py-tree-sitter < 0.25, causing a segmentation fault insideLanguage.query()with no Python-level error.Evidence (from PyPI JSON metadata)
Two linux-x86_64 wheels co-exist under the same version string:
Language.version...-cp39-abi3-manylinux_2_5_x86_64...whl...-cp310-abi3-manylinux1_x86_64...whlThe same pattern exists for macOS and Windows wheels. Because
pip/uvpick the highest compatiblecpXYtag, any fresh install on Python 3.10+ now resolves to the cp310-abi3 wheel (grammar v15).Installs done before 2026-04-14 — or Python 3.9 environments — still get the cp39-abi3 wheel (grammar v14).