[build-system]
requires = ['setuptools>=77', 'setuptools-scm>=8']
build-backend = 'setuptools.build_meta'

[project]
name = 'mpmath'
description = 'Python library for arbitrary-precision floating-point arithmetic'
authors = [{name = 'Fredrik Johansson', email = 'fredrik.johansson@gmail.com'}]
license = 'BSD-3-Clause'
classifiers = ['Topic :: Scientific/Engineering :: Mathematics',
               'Topic :: Software Development :: Libraries :: Python Modules',
               'Programming Language :: Python',
               'Programming Language :: Python :: 3',
               'Programming Language :: Python :: 3 :: Only',
               'Programming Language :: Python :: 3.10',
               'Programming Language :: Python :: 3.11',
               'Programming Language :: Python :: 3.12',
               'Programming Language :: Python :: 3.13',
               'Programming Language :: Python :: 3.14',
               'Programming Language :: Python :: 3.15',
               'Programming Language :: Python :: Free Threading :: 2 - Beta',
               'Programming Language :: Python :: Implementation :: CPython',
               'Programming Language :: Python :: Implementation :: PyPy']
dynamic = ['version']
requires-python = '>=3.10'
readme = 'README.rst'

[project.urls]
Homepage = 'https://mpmath.org/'
'Source Code' = 'https://github.com/mpmath/mpmath'
'Bug Tracker' = 'https://github.com/mpmath/mpmath/issues'
Documentation = 'http://mpmath.org/doc/current/'

[project.optional-dependencies]
tests = ['pytest>=6', 'numpy; python_version<"3.15"', 'packaging', 'pytest-timeout',
         'matplotlib; python_version<"3.15"', 'pexpect', 'ipython', 'hypothesis']
develop = ['mpmath[tests]', 'flake518>=1.5', 'pytest-cov>=7', 'wheel', 'build']
gmpy2 = ['gmpy2>=2.3']
gmpy = ['mpmath[gmpy2]']
gmp = ['python-gmp']
docs = ['sphinx', 'matplotlib', 'sphinxcontrib-autoprogram']
ci = ['pytest-xdist', 'diff_cover']

[tool.setuptools]
zip-safe = true

[tool.setuptools.packages]
find = {namespaces = false}

[tool.flake8]
select = ['E101', 'E111', 'E112', 'E113', 'E501', 'E703', 'E712', 'E713',
          'W191', 'W291', 'W292', 'W293', 'W391']
exclude = ['.eggs', '.git']
max_line_length = 200

[tool.setuptools_scm]
version_file = "mpmath/_version.py"

[tool.pytest.ini_options]
testpaths = ['mpmath', 'docs']
doctest_optionflags = ['IGNORE_EXCEPTION_DETAIL', 'ELLIPSIS']
addopts = "--doctest-modules --doctest-glob='*.rst'"
norecursedirs = ['docs/plots', 'demo', '.eggs', '.git', '.hypothesis']
filterwarnings = ['error::DeprecationWarning']
xfail_strict = true
timeout = 600

[tool.coverage.run]
branch = true
omit = ['mpmath/tests/*', 'mpmath/_version.py']
patch = ["subprocess"]

[tool.coverage.html]
directory = 'build/coverage/html'
[tool.coverage.report]
exclude_lines = ['pragma: no cover',
                 'raise NotImplementedError',
                 'return NotImplemented',
                 'if __name__ == .__main__.:']
show_missing = true

[tool.isort]
lines_after_imports = 2
atomic = true
