Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bump version to 0.5.0 #84

Merged
merged 9 commits into from
Oct 22, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
83 changes: 68 additions & 15 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,30 +18,33 @@ Author: Fredrik Johansson <[email protected]>
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

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:

Expand All @@ -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

Expand Down Expand Up @@ -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
Expand All @@ -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
------------
Expand Down
4 changes: 2 additions & 2 deletions bin/build_mingw64_wheel.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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")'

Expand Down Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions bin/pip_install_ubuntu.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions doc/source/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -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='[email protected]',
Expand Down
2 changes: 1 addition & 1 deletion src/flint/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,4 @@
from .types.dirichlet import *
from .functions.showgood import showgood

__version__ = '0.4.4'
__version__ = '0.5.0'
2 changes: 1 addition & 1 deletion src/flint/test/test.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Loading