Blob Blame History Raw
Name:           python-mpmath
Version:        1.3.0
Release:        %autorelease
Summary:        A pure Python library for multiprecision floating-point arithmetic
License:        BSD-3-Clause
URL:            https://mpmath.org
# Source code
Source0:        https://github.com/fredrik-johansson/mpmath/archive/%{version}/%{name}-%{version}.tar.gz

# Switch to 'traditional' theme in RHEL since 'classic' isn't available
Patch0:         python-mpmath-1.0.0-sphinx.patch

BuildRequires:  python3-devel
BuildRequires:  python3-setuptools
BuildRequires:  xorg-x11-server-Xvfb

# For building documentation
BuildRequires:  dvipng
BuildRequires:  latexmk
BuildRequires:  make
BuildRequires:  tex(latex)
BuildRequires:  tex(capt-of.sty)
BuildRequires:  tex(ellipse.sty)
BuildRequires:  tex(fncychap.sty)
BuildRequires:  tex(framed.sty)
BuildRequires:  tex(needspace.sty)
BuildRequires:  tex(pict2e.sty)
BuildRequires:  tex(tabulary.sty)
BuildRequires:  tex(tgtermes.sty)
BuildRequires:  tex(txtt.tfm)
BuildRequires:  tex(upquote.sty)
BuildRequires:  tex(wrapfig.sty)

BuildArch:      noarch

%global _description %{expand:
Mpmath is a pure-Python library for multiprecision floating-point
arithmetic. It provides an extensive set of transcendental functions,
unlimited exponent sizes, complex numbers, interval arithmetic,
numerical integration and differentiation, root-finding, linear
algebra, and much more. Almost any calculation can be performed just
as well at 10-digit or 1000-digit precision, and in many cases mpmath
implements asymptotically fast algorithms that scale well for
extremely high precision work. If available, mpmath will (optionally)
use gmpy to speed up high precision operations.}

%description %_description

%package -n python3-mpmath
Summary:        A pure Python library for multiprecision floating-point arithmetic
%if 0%{?fedora} || 0%{?rhel} > 7
Recommends:     python3-matplotlib
%endif

%description -n python3-mpmath %_description

If you require plotting capabilities in mpmath, install python3-matplotlib.

%package doc
Summary:        HTML documentation for %{name}
Requires:       python3-mpmath = %{version}-%{release}

# BSD-3-Clause: the content
# BSD-2-Clause: files in html/_static and html/searchindex.js, added by Sphinx
License:        BSD-3-Clause AND BSD-2-Clause

%description doc
This package contains the HTML documentation for %{name}.

%pyproject_extras_subpkg -n python3-mpmath gmpy

%prep
%setup -q -n mpmath-%{version}
%if 0%{?rhel} == 7
%patch -P0 -p1 -b .sphinx
%endif

shebangs="mpmath/matrices/eigen.py mpmath/matrices/eigen_symmetric.py mpmath/tests/runtests.py mpmath/tests/test_eigen.py mpmath/tests/test_eigen_symmetric.py mpmath/tests/test_levin.py"
# Get rid of unnecessary shebangs
for lib in $shebangs; do
 sed '/^#!.*/d; 1q' $lib > $lib.new && \
 touch -r $lib $lib.new && \
 mv $lib.new $lib
done

%generate_buildrequires
%pyproject_buildrequires -x docs,gmpy,tests

%build
%pyproject_wheel

# Build documentation
export PYTHONPATH=$PWD/build/lib
mkdir -p docs/latex
sphinx-build -b latex %{?_smp_mflags} docs docs/latex
%make_build -C docs/latex
mkdir -p docs/html
sphinx-build -b html %{?_smp_mflags} docs docs/html
rm -rf docs/html/.{buildinfo,doctrees}

%install
%pyproject_install
%pyproject_save_files mpmath

%check
cd build/lib/mpmath/tests/
xvfb-run -a pytest-3 -v

%files -n python3-mpmath -f %{pyproject_files}
%doc CHANGES README.rst

%files doc
%doc docs/latex/mpmath.pdf docs/html

%changelog
%autochangelog