From a1d68f5caafc34251464fc1ae6440c0a03440db0 Mon Sep 17 00:00:00 2001 From: Oscar Benjamin Date: Thu, 1 Feb 2024 21:21:13 +0000 Subject: [PATCH 1/5] Add note about rebuilding with coverage --- bin/coverage.sh | 3 +++ 1 file changed, 3 insertions(+) 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 $@ From dcbdd4a34c8e4cbe5cdfbd6feca7a97015529acf Mon Sep 17 00:00:00 2001 From: Oscar Benjamin Date: Thu, 1 Feb 2024 21:21:29 +0000 Subject: [PATCH 2/5] Add changelog for 0.6.0 --- README.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/README.md b/README.md index e5546b88..dae17ae9 100644 --- a/README.md +++ b/README.md @@ -128,6 +128,20 @@ To do CHANGELOG ------------- +0.6.0 + +- gh-112, gh-111, gh-110, gh-108: Add pyproject.toml and build dependencies. + This means that python-flint can be built from source without + `--no-build-isolation`. +- gh-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: Add `fmpz_mod_mat` for matrices of integers mod `n` where `n` is + larger than word sized. +- gh-104: Bump Flint from 3.0.0 to 3.0.1 + 0.5.0 Important compatibility changes: From f82efcde2724d5880be1c6b3fc2b88aa2d81afed Mon Sep 17 00:00:00 2001 From: Oscar Benjamin Date: Thu, 1 Feb 2024 21:28:11 +0000 Subject: [PATCH 3/5] Reformat hyperlinks in README --- README.md | 87 +++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 56 insertions(+), 31 deletions(-) diff --git a/README.md b/README.md index dae17ae9..46f09432 100644 --- a/README.md +++ b/README.md @@ -130,70 +130,95 @@ CHANGELOG 0.6.0 -- gh-112, gh-111, gh-110, gh-108: Add pyproject.toml and build dependencies. - This means that python-flint can be built from source without - `--no-build-isolation`. -- gh-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: Add `fmpz_mod_mat` for matrices of integers mod `n` where `n` is - larger than word sized. -- gh-104: Bump Flint from 3.0.0 to 3.0.1 +- [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 ------------ From aff0e1a1a93df7e44fa54f643bf03d8e1afd4859 Mon Sep 17 00:00:00 2001 From: Oscar Benjamin Date: Thu, 1 Feb 2024 21:34:57 +0000 Subject: [PATCH 4/5] Bump version to 0.6.0 --- README.md | 8 +++----- bin/build_mingw64_wheel.sh | 4 ++-- doc/source/conf.py | 4 ++-- pyproject.toml | 2 +- src/flint/__init__.py | 2 +- src/flint/test/test.py | 2 +- 6 files changed, 10 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 46f09432..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: 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/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 From eab16c32a37e580166a4a40a991b464fbc2699ee Mon Sep 17 00:00:00 2001 From: Oscar Benjamin Date: Thu, 1 Feb 2024 22:38:54 +0000 Subject: [PATCH 5/5] Bump to pypa/cibuildwheel@v2.16.5 in GA --- .github/workflows/buildwheel.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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_*"