Drop support for CPython 3.8

Closes #910
This commit is contained in:
Sergey B Kirpichev
2025-01-29 06:00:58 +03:00
parent 049321c80e
commit 5c719770ae
7 changed files with 6 additions and 22 deletions
+1 -1
View File
@@ -15,7 +15,7 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: [3.8, 3.9, '3.10', 3.11, 3.12, 3.13, 3.14, pypy3.10-nightly]
python-version: [3.9, '3.10', 3.11, 3.12, 3.13, 3.14, pypy3.10-nightly]
env:
PYTEST_ADDOPTS: -n auto
steps:
+2 -2
View File
@@ -113,8 +113,8 @@ Release history:
1. Download & installation
--------------------------
Mpmath requires Python 3.8 or later versions. It has been tested with CPython
3.8 through 3.14 and for PyPy 3.10.
Mpmath requires Python 3.9 or later versions. It has been tested with CPython
3.9 through 3.14 and for PyPy 3.10.
The latest release of mpmath can be downloaded from the mpmath
website and from https://github.com/mpmath/mpmath/releases
+1 -1
View File
@@ -1,7 +1,7 @@
Setting up mpmath
=================
Mpmath requires at least Python 3.8. It has been tested with CPython 3.8
Mpmath requires at least Python 3.9. It has been tested with CPython 3.9
through 3.14 and for PyPy 3.10
Download and installation
+1 -9
View File
@@ -271,18 +271,10 @@ else:
_gcd2 = math.gcd
if sys.version_info >= (3, 9) and BACKEND == 'python':
if BACKEND == 'python':
gcd = math.gcd
elif BACKEND == 'gmpy':
gcd = gmpy.gcd
else:
def gcd(*args):
res = MPZ_ZERO
for a in args:
a = MPZ(a)
if res != MPZ_ONE:
res = _gcd2(res, a)
return res
@lru_cache(maxsize=250)
-4
View File
@@ -477,8 +477,6 @@ def test_mpf_floats_bulk(fmt, x):
if not x and math.copysign(1, x) == -1:
return # skip negative zero
spec = read_format_spec(fmt)
if sys.version_info < (3, 9) and spec['type'] in ('g', 'G'):
pytest.skip("CPython has incompatible g/G formatting in 3.8 and 3.9+")
if not spec['type'] and spec['precision'] < 0 and math.isfinite(x):
# The mpmath could choose a different decimal
# representative (wrt CPython) for same binary
@@ -500,8 +498,6 @@ def test_mpc_complexes(fmt, z):
or (not z.imag and math.copysign(1, z.imag) == -1)):
return # skip negative zero
spec = read_format_spec(fmt)
if sys.version_info < (3, 9) and spec['type'] in ('g', 'G'):
pytest.skip("CPython has incompatible g/G formatting in 3.8 and 3.9+")
if spec['precision'] < 0 and any(math.isfinite(_) for _ in [z.real, z.imag]):
# The mpmath could choose a different decimal
# representative (wrt CPython) for same binary
-3
View File
@@ -244,9 +244,6 @@ def test_matrix_numpy():
assert matrix(l) == matrix(a)
assert (numpy.array(matrix(l)) == numpy.array(matrix(l).tolist(),
dtype=object)).all()
if sys.version_info < (3, 9):
pytest.skip("latest numpy dropped support for CPython 3.8")
if numpy.__version__ >= '2':
pytest.raises(ValueError, lambda: numpy.array(matrix(l), copy=False))
+1 -2
View File
@@ -12,7 +12,6 @@ classifiers = ['License :: OSI Approved :: BSD License',
'Programming Language :: Python',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3 :: Only',
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: 3.9',
'Programming Language :: Python :: 3.10',
'Programming Language :: Python :: 3.11',
@@ -22,7 +21,7 @@ classifiers = ['License :: OSI Approved :: BSD License',
'Programming Language :: Python :: Implementation :: CPython',
'Programming Language :: Python :: Implementation :: PyPy']
dynamic = ['version']
requires-python = '>=3.8'
requires-python = '>=3.9'
[project.readme]
file = 'README.rst'
content-type = 'text/x-rst'