diff --git a/README.md b/README.md index 0ef8de85..0448771a 100644 --- a/README.md +++ b/README.md @@ -18,9 +18,10 @@ Author: Fredrik Johansson Installation ------------ -For Windows (x86-64) or OSX (x86-64 or arm64) or Linux (x86-64 -`manylinux_2_17`) there are binary wheels for python-flint on PyPI. For these -platforms python-flint can be installed simply with `pip` +Currently python-flint supports CPython versions 3.9-3.12. For Windows (x86-64) +or OSX (x86-64 or arm64) or Linux (x86-64 `manylinux_2_17`) there are CPython +binary wheels for python-flint on PyPI. For these platforms python-flint can be +installed simply with `pip` pip install python-flint @@ -28,20 +29,22 @@ Alternatively python-flint can be installed using `conda` conda install -c conda-forge python-flint +It is also possible to use python-flint with some PyPy versions. Binary wheels +are not provided for this on PyPI but can be installed with conda. + Build from source ----------------- For other platforms or architectures installation needs to build from source. -First install both FLINT 2.9.0 and Arb 2.23. Note that for python-flint 0.4 -only these *exact* versions of FLINT and Arb will work. While some Linux -distributions may provide FLINT and Arb it is unlikely that they will provide -the exact versions required (e.g. for Ubuntu only Ubuntu 23.04 provides these -versions at the time of writing). +First install FLINT 3.0.0. Note that as of python-flint 0.5.0 only this *exact* +version of FLINT will work. In future it is hoped that the version requirement +for python-flint will be FLINT >= 3.0.0 but at the time of writing 3.0.0 is the +newest version of FLINT that has only been released recently and is the only +version that is supported by python-flint. -See here for instructions on building FLINT and Arb: +See here for instructions on building FLINT: * http://flintlib.org/ -* http://arblib.org/ The latest release of Python-FLINT can then be built and installed using: @@ -54,13 +57,13 @@ as follows: pip install 'cython>=3' numpy wheel pip install --no-build-isolation . -A script that builds and installs FLINT, Arb and Python-FLINT that is tested on +A script that builds and installs FLINT and python-flint that is tested on Ubuntu can be found in the git repo here: * https://github.com/flintlib/python-flint/blob/master/bin/pip_install_ubuntu.sh See the documentation for further notes on building and installing -Python-FLINT: +python-flint: * https://fredrikj.net/python-flint/setup.html @@ -112,11 +115,12 @@ To do ------------------------------------- * Write more tests and add missing docstrings -* Wrap missing flint types: finite fields, p-adic numbers, multiprecision integer mods, rational functions +* Wrap missing flint types: finite fields, p-adic numbers, rational functions * Vector or array types (maybe) * Many convenience methods * Write generic implementations of functions missing for specific FLINT types -* Proper handling of special values in various places (throwing Python exceptions instead of aborting, etc.) +* Proper handling of special values in various places (throwing Python + exceptions instead of aborting, etc.) * Various automatic conversions * Conversions to and from external types (numpy, sage, sympy, mpmath, gmpy) * Improved printing and string input/output @@ -127,7 +131,56 @@ CHANGELOG 0.5.0 -- gh-63: The `roots` method of `arb_poly`, and `nmod_poly` is no longer supported. Use `acb_roots(p).roots()` to get the old behaviour of returning the roots as `acb`. Note that the `roots` method of `fmpz_poly` and `fmpq_poly` currently returns the complex roots of the polynomial. +Important compatibility changes: + +- gh-80, gh-94, gh-98: Switch from Flint 2.9 to Flint 3. +- gh-100: Supports Python 3.12 by using setuptools instead of numpy.distutils. + +New features: + +- gh-87: Adds `fmpz_mod_poly` type for polynomials over `fmpz_mod`. +- gh-85: Adds discrete logarithms to `fmpz_mod`. +- gh-83: Introduces the `fmpz_mod` type for multi-precision integer mods. + +Bug fixes: + +- gh-93: Fixes a bug with `pow(int, int, fmpz)` which previously gave incorrect + results. +- gh-78, gh-79: minor fixes for the `nmod` type. + +0.4.4 + +- gh-75, gh-77: finish bulk of the work in refactoring `python-flint` into + submodules +- gh-72: The roots method of `arb_poly` is not supported. Use either the + `complex_roots` method or `acb_roots(p).roots()` to get the old behaviour of + returning the complex roots. The `roots` method on `fmpz_poly` and + `fmpq_poly` now return integer and rational roots respectively. To access + complex roots on these types, use the `complex_roots` method. For `acb_poly`, + both `roots` and `complex_roots` behave the same +- gh-71: Include files in sdist and fix issue gh-70 +- gh-67: Continue refactoring job to introduce submodules into `python-flint` + +0.4.3 + +- gh-63: The `roots` method of `arb_poly`, and `nmod_poly` is no longer + supported. Use `acb_roots(p).roots()` to get the old behaviour of returning + the roots as `acb`. Note that the `roots` method of `fmpz_poly` and + `fmpq_poly` currently returns the complex roots of the polynomial. +- gh-61: Start refactoring job to introduce submodules into `python-flint` + +0.4.2 + +- gh-57: Adds manylinux wheels + +0.4.1 + +- gh-47: Removes Linux wheels, updates instructions for building from source. + +0.4.0 + +- gh-45: Adds wheels for Windows, OSX and manylinux but the Linux wheels are + broken. License ------------ diff --git a/bin/build_mingw64_wheel.sh b/bin/build_mingw64_wheel.sh index bcce1b82..4b38f59b 100755 --- a/bin/build_mingw64_wheel.sh +++ b/bin/build_mingw64_wheel.sh @@ -44,7 +44,7 @@ fi PYTHON=$PYTHONDIR/python VER="${PYTHONVER//./}" -WHEELNAME=python_flint-0.4.4-cp$VER-cp$VER-win_amd64.whl +WHEELNAME=python_flint-0.5.0-cp$VER-cp$VER-win_amd64.whl $PYTHON -c 'print("hello world")' @@ -90,7 +90,7 @@ wheel pack python_flint-* cd .. # Make the wheel relocatable -delvewheel repair dist/python_flint-0.4.4-cp$VER-cp$VER-win_amd64.whl \ +delvewheel repair dist/python_flint-0.5.0-cp$VER-cp$VER-win_amd64.whl \ --add-path .local/bin:.local/lib/ # Make a virtual enironment to test the wheel diff --git a/bin/pip_install_ubuntu.sh b/bin/pip_install_ubuntu.sh index 070e4261..ac9d9491 100755 --- a/bin/pip_install_ubuntu.sh +++ b/bin/pip_install_ubuntu.sh @@ -19,12 +19,12 @@ sudo apt-get update sudo apt-get install libgmp-dev libmpfr-dev xz-utils # Only Flint 3 or newer will work. -FLINTVER=3.0.0-alpha1 +FLINTVER=3.0.0 # This will default to installing in /usr/local. If you want to install in a # non-standard location then configure flint with # ./configure --disable-static --prefix=$PREFIX -# If $PREFIX is no in default search paths, then at build time set +# If $PREFIX is not in default search paths, then at build time set # export C_INCLUDE_PATH=$PREFIX/include # and at runtime set # export LD_LIBRARY_PATH=$PREFIX/lib diff --git a/doc/source/conf.py b/doc/source/conf.py index a12026ce..dfcddb90 100644 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -51,9 +51,9 @@ # built documents. # # The short X.Y version. -version = '0.4.4' +version = '0.5.0' # The full version, including alpha/beta/rc tags. -release = '0.4.4' +release = '0.5.0' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/setup.py b/setup.py index 84746161..60b2d04b 100644 --- a/setup.py +++ b/setup.py @@ -133,7 +133,7 @@ description='Bindings for FLINT and Arb', long_description=open('README.md').read(), long_description_content_type='text/markdown', - version='0.4.4', + version='0.5.0', url='https://github.com/flintlib/python-flint', author='Fredrik Johansson', author_email='fredrik.johansson@gmail.com', diff --git a/src/flint/__init__.py b/src/flint/__init__.py index e545556c..de90e314 100644 --- a/src/flint/__init__.py +++ b/src/flint/__init__.py @@ -26,4 +26,4 @@ from .types.dirichlet import * from .functions.showgood import showgood -__version__ = '0.4.4' +__version__ = '0.5.0' diff --git a/src/flint/test/test.py b/src/flint/test/test.py index 0631e769..2d82e821 100644 --- a/src/flint/test/test.py +++ b/src/flint/test/test.py @@ -35,7 +35,7 @@ def raises(f, exception): def test_pyflint(): - assert flint.__version__ == "0.4.4" + assert flint.__version__ == "0.5.0" ctx = flint.ctx assert str(ctx) == repr(ctx) == _default_ctx_string