pytries / marisa-trie

Static memory-efficient Trie-like structures for Python based on marisa-trie C++ library.
https://marisa-trie.readthedocs.io/en/latest/
MIT License
1.02k stars 91 forks source link

Build not working with Python 3.13.0b1 #104

Closed Dunedan closed 1 month ago

Dunedan commented 1 month ago

Building a wheel for marisa-trie with Python 3.13.0b1 doesn't work, because there are no _PyLong_AsByteArray() and _PyLong_FromByteArray() functions anymore.

The is a CPython issue on this topic (https://github.com/python/cpython/issues/111140), which resulted in alternative public functions being available, so I guess supporting Python 3.13 with marisa-trie should be pretty straight-forward.

Here is a log of a failed build with Python 3.13.0b1: build-log-marisa-trie-python-3.13.txt

BoboTiG commented 1 month ago

Hello @Dunedan!

Thanks for the report, I'll see to add Python 3.13 support 👍🏻

BoboTiG commented 1 month ago

With v1.2.0 you can now build marisa-trie on Python 3.13 beta 1!

But Python 3.13 wheels won't be published as of now since it is not recommanded by cibuildwheel:

This option is provided for testing purposes only. It is not recommended to distribute wheels built when CIBW_PRERELEASE_PYTHONS is set, such as uploading to PyPI. Please do not upload these wheels to PyPI, as they are not guaranteed to work with the final Python release. Once Python is ABI stable and enters the release candidate phase, that version of Python will become available without this flag.

I am now following Cython releases to keep up-to-date C code here, and improve Python 3.13 (and newer versions) support.