python-flint
python-flint copied to clipboard
Nightly wheels and WASM/pyodide builds
CC @agriyakhetarpal
See also: https://github.com/scientific-python/upload-nightly-action/issues/111
We should upload nightly wheels after each merge to main to the scientific-python nightly wheels index: https://anaconda.org/scientific-python-nightly-wheels
That is useful for downstream testing e.g. in SymPy. It would also make it possible to have the latest main branches of python-flint and SymPy available for testing in SymPy Live: https://live.sympy.org/
We should also build and test python-flint in WASM with pyodide in CI. There already are WASM builds of python-flint in pyodide: https://pyodide.org/en/stable/usage/packages-in-pyodide.html
Those can be used in the browser e.g. at: https://pyodide.org/en/stable/console.html
>>> import flint
>>> x = flint.fmpz_poly([0, 1])
>>> p = x**2 + 2*x + 1
>>> p
x^2 + 2*x + 1
>>> p.factor()
(1, [(x + 1, 2)])
It looks like cibuildwheel could build these with --platform pyodide:
https://cibuildwheel.pypa.io/en/stable/options/
We would first need emscripten builds of GMP, MPFR and FLINT. The build recipes for those can be found in the pyodide repo e.g.: https://github.com/pyodide/pyodide/tree/main/packages/flint
Probably a separate CI workflow should be used for making and testing pyodide wheels because we can't upload them to PyPI and the build commands and CI setup would be a bit different. We can upload the WASM wheels to the nightly wheels index though and the final release versions are already built in pyodide.