diff --git a/.github/workflows/buildwheel.yml b/.github/workflows/buildwheel.yml index 64252e59..4d7ce6c8 100644 --- a/.github/workflows/buildwheel.yml +++ b/.github/workflows/buildwheel.yml @@ -32,7 +32,7 @@ jobs: if: ${{ matrix.os == 'windows-2019' }} - name: Build wheels - uses: pypa/cibuildwheel@v2.16.2 + uses: pypa/cibuildwheel@v2.16.5 env: CIBW_BUILD: cp39-* cp310-* cp311-* cp312-* CIBW_SKIP: "*-win32 *-manylinux_i686 *-musllinux_*" diff --git a/README.md b/README.md index e5546b88..4a555f6c 100644 --- a/README.md +++ b/README.md @@ -36,11 +36,9 @@ Build from source ----------------- For other platforms or architectures installation needs to build from source. -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. +First install FLINT 3. Starting with python-flint 0.5.0 older versions of Flint +such as 2.9 are not supported any more. Note that as of Flint 3 Arb no longer +needs to be built separately as it is now merged into Flint. See here for instructions on building FLINT: @@ -128,58 +126,97 @@ To do CHANGELOG ------------- +0.6.0 + +- [gh-112](https://github.com/flintlib/python-flint/issues/112), + [gh-111](https://github.com/flintlib/python-flint/issues/111), + [gh-110](https://github.com/flintlib/python-flint/issues/110), + [gh-108](https://github.com/flintlib/python-flint/issues/108): + Add pyproject.toml and build dependencies. This means that python-flint can + be built from source without `--no-build-isolation`. +- [gh-109](https://github.com/flintlib/python-flint/issues/109): + Use exact division for non-field domains. Now `fmpz(6)/fmpz(3)` returns an + exact result `fmpz(2)` or raises an error if an exact result is not possible. + Similar changes for `fmpz_poly/fmpz`, `fmpz_mat/fmpz`, and for polynomial + division with `fmpz_poly`, `fmpq_poly`, `nmod_poly` and `fmpz_mod_poly`. +- [gh-106](https://github.com/flintlib/python-flint/issues/106): + Add `fmpz_mod_mat` for matrices of integers mod `n` where `n` is larger than + word sized. +- [gh-104](https://github.com/flintlib/python-flint/issues/104): + Bump Flint from 3.0.0 to 3.0.1 + 0.5.0 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. +- [gh-80](https://github.com/flintlib/python-flint/issues/80), + [gh-94](https://github.com/flintlib/python-flint/issues/94), + [gh-98](https://github.com/flintlib/python-flint/issues/98): + Switch from Flint 2.9 to Flint 3. +- [gh-100](https://github.com/flintlib/python-flint/issues/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. +- [gh-87](https://github.com/flintlib/python-flint/issues/87): + Adds `fmpz_mod_poly` type for polynomials over `fmpz_mod`. +- [gh-85](https://github.com/flintlib/python-flint/issues/85): + Adds discrete logarithms to `fmpz_mod`. +- [gh-83](https://github.com/flintlib/python-flint/issues/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 +- [gh-93](https://github.com/flintlib/python-flint/issues/93): + Fixes a bug with `pow(int, int, fmpz)` which previously gave incorrect results. -- gh-78, gh-79: minor fixes for the `nmod` type. +- [gh-78](https://github.com/flintlib/python-flint/issues/78), + [gh-79](https://github.com/flintlib/python-flint/issues/79): + minor fixes for the `nmod` type. 0.4.4 -- gh-75, gh-77: finish bulk of the work in refactoring `python-flint` into +- [gh-75](https://github.com/flintlib/python-flint/issues/75), + [gh-77](https://github.com/flintlib/python-flint/issues/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 +- [gh-72](https://github.com/flintlib/python-flint/issues/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` +- [gh-71](https://github.com/flintlib/python-flint/issues/71): + Include files in sdist and fix issue + [gh-70](https://github.com/flintlib/python-flint/issues/70) +- [gh-67](https://github.com/flintlib/python-flint/issues/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` +- [gh-63](https://github.com/flintlib/python-flint/issues/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](https://github.com/flintlib/python-flint/issues/61): + Start refactoring job to introduce submodules into `python-flint` 0.4.2 -- gh-57: Adds manylinux wheels +- [gh-57](https://github.com/flintlib/python-flint/issues/57): + Adds manylinux wheels 0.4.1 -- gh-47: Removes Linux wheels, updates instructions for building from source. +- [gh-47](https://github.com/flintlib/python-flint/issues/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. +- [gh-45](https://github.com/flintlib/python-flint/issues/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 4b38f59b..d609150b 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.5.0-cp$VER-cp$VER-win_amd64.whl +WHEELNAME=python_flint-0.6.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.5.0-cp$VER-cp$VER-win_amd64.whl \ +delvewheel repair dist/python_flint-0.6.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/coverage.sh b/bin/coverage.sh index eeb30f96..65f189a8 100755 --- a/bin/coverage.sh +++ b/bin/coverage.sh @@ -31,6 +31,9 @@ source bin/activate export PYTHON_FLINT_COVERAGE=true +# Force a rebuild of everything with coverage tracing enabled: +# touch src/flint/flintlib/* + python setup.py build_ext --inplace coverage run -m flint.test $@ diff --git a/doc/source/conf.py b/doc/source/conf.py index dfcddb90..00012c82 100644 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -51,9 +51,9 @@ # built documents. # # The short X.Y version. -version = '0.5.0' +version = '0.6.0' # The full version, including alpha/beta/rc tags. -release = '0.5.0' +release = '0.6.0' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/pyproject.toml b/pyproject.toml index 66af8e92..e5bd0307 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,7 +7,7 @@ build-backend = "setuptools.build_meta" [project] name = "python-flint" description = "Bindings for FLINT and Arb" -version = "0.5.0" +version = "0.6.0" urls = {Homepage = "https://github.com/flintlib/python-flint"} authors = [ {name = "Fredrik Johansson", email = "fredrik.johansson@gmail.com"}, diff --git a/src/flint/__init__.py b/src/flint/__init__.py index d13ba26e..fcb62cf3 100644 --- a/src/flint/__init__.py +++ b/src/flint/__init__.py @@ -33,4 +33,4 @@ from .types.dirichlet import * from .functions.showgood import good, showgood -__version__ = '0.5.0' +__version__ = '0.6.0' diff --git a/src/flint/test/test.py b/src/flint/test/test.py index db19f623..7f6d5cd0 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.5.0" + assert flint.__version__ == "0.6.0" ctx = flint.ctx assert str(ctx) == repr(ctx) == _default_ctx_string