From 703731735646f7f04039613fbdafe0a50a28119c Mon Sep 17 00:00:00 2001 From: Jerry James Date: Oct 08 2021 20:57:59 +0000 Subject: Version 1.9. - Drop theano support due to incompatibility with the Fedora version. - Add -tests, -distutils, -gmpy2-mpq, and -rational-exponent patches to work around test failures. --- diff --git a/README.md b/README.md new file mode 100644 index 0000000..7f6285c --- /dev/null +++ b/README.md @@ -0,0 +1,8 @@ +# sympy + +SymPy is a Python library for symbolic mathematics. It aims to become a +full-featured computer algebra system (CAS) while keeping the code as +simple as possible in order to be comprehensible and easily extensible. +SymPy is written entirely in Python. + +See [the home page](https://www.sympy.org/) for more information. diff --git a/sources b/sources index dc3055c..ca737ae 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (sympy-1.8.tar.gz) = 61141e1d0a6105e725fb415edbdf981b3aa95debcfe73f9da5ca36afc7a70e91b5c28ed45454054c1b9a8d45e42bfe724e5b20da717746c301fd095da17f4db7 +SHA512 (sympy-1.9.tar.gz) = 139712219ba6bf420ba89b3f8d086ab8883c5ab965e9308ba9ee665ac3ac69a9b16fa30c6f5dfbc77dd34873ff3ff95c0d058954d7f9d853f5e9537efc24dd3c diff --git a/sympy-distutils.patch b/sympy-distutils.patch new file mode 100644 index 0000000..af0f0ba --- /dev/null +++ b/sympy-distutils.patch @@ -0,0 +1,10 @@ +--- a/sympy/testing/runtests.py 2021-09-30 16:23:28.000000000 -0600 ++++ b/sympy/testing/runtests.py 2021-10-08 11:27:24.434239376 -0600 +@@ -184,6 +184,7 @@ def raise_on_deprecated(): + """ + with warnings.catch_warnings(): + warnings.filterwarnings('error', '.*', DeprecationWarning, module='sympy.*') ++ warnings.filterwarnings('ignore', '.*', DeprecationWarning, module='sympy.utilities.*') + yield + + diff --git a/sympy-gmpy2-mpq.patch b/sympy-gmpy2-mpq.patch new file mode 100644 index 0000000..b7e6b05 --- /dev/null +++ b/sympy-gmpy2-mpq.patch @@ -0,0 +1,11 @@ +--- a/sympy/external/tests/test_pythonmpq.py 2021-09-30 16:23:28.000000000 -0600 ++++ b/sympy/external/tests/test_pythonmpq.py 2021-10-08 11:06:59.453830335 -0600 +@@ -42,7 +42,7 @@ def test_PythonMPQ(): + assert check_Q(Q(Q(3, 5))) == (3, 5) + assert check_Q(Q(0.5)) == (1, 2) + assert check_Q(Q('0.5')) == (1, 2) +- assert check_Q(Q(Decimal('0.6'))) == (3, 5) ++ assert check_Q(Q(str(Decimal('0.6')))) == (3, 5) + assert check_Q(Q(Fraction(3, 5))) == (3, 5) + + # Invalid types diff --git a/sympy-rational-exponent.patch b/sympy-rational-exponent.patch new file mode 100644 index 0000000..74a49a0 --- /dev/null +++ b/sympy-rational-exponent.patch @@ -0,0 +1,14 @@ +--- a/sympy/polys/ring_series.py 2021-09-30 16:23:28.000000000 -0600 ++++ b/sympy/polys/ring_series.py 2021-10-08 13:43:30.746068783 -0600 +@@ -989,6 +989,11 @@ def rs_nth_root(p, n, x, prec): + except ValueError: # as exponent + raise DomainError("The given series can't be expanded in " + "this domain.") ++ except TypeError: ++ try: ++ const = R(c**QQ(1, n)) ++ except ValueError: ++ raise DomainError("The given series can't be expanded in this domain.") + res = rs_nth_root(p/c, n, x, prec)*const + else: + res = _nth_root1(p, n, x, prec) diff --git a/sympy-tests.patch b/sympy-tests.patch new file mode 100644 index 0000000..f80122f --- /dev/null +++ b/sympy-tests.patch @@ -0,0 +1,61 @@ +--- a/sympy/physics/control/tests/test_control_plots.py 2021-09-30 16:23:28.000000000 -0600 ++++ b/sympy/physics/control/tests/test_control_plots.py 2021-10-07 16:39:20.605755393 -0600 +@@ -97,12 +97,12 @@ def test_pole_zero(): + assert _to_tuple(*pole_zero_numerical_data(tf2)) == \ + ((0.0,), ((-0.25+0.3227486121839514j), (-0.25-0.3227486121839514j))) + assert _to_tuple(*pole_zero_numerical_data(tf3)) == \ +- ((0.0,), ((-0.5000000000000004+0.8660254037844395j), +- (-0.5000000000000004-0.8660254037844395j), (0.9999999999999998+0j))) ++ ((0.0,), ((-0.5+0.8660254037844389j), ++ (-0.5-0.8660254037844389j), (0.9999999999999998+0j))) + assert _to_tuple(*pole_zero_numerical_data(tf7)) == \ + (((-0.6722222222222222+0.8776898690157247j), (-0.6722222222222222-0.8776898690157247j)), +- ((2.220446049250313e-16+1.2797182176061541j), (2.220446049250313e-16-1.2797182176061541j), +- (-0.7657146670186428+0.5744385024099056j), (-0.7657146670186428-0.5744385024099056j), ++ ((6.210310043996969e-16+1.2797182176061548j), (6.210310043996969e-16-1.2797182176061548j), ++ (-0.7657146670186425+0.5744385024099056j), (-0.7657146670186425-0.5744385024099056j), + (0.7657146670186427+0.5744385024099052j), (0.7657146670186427-0.5744385024099052j))) + assert _to_tuple(*pole_zero_numerical_data(ser1)) == \ + ((), (5.0, 0.0, 0.0, 0.0)) +@@ -166,8 +166,8 @@ def test_impulse_response(): + -0.037658628907103885, -0.030149507719590022, -0.021162090730736834, -0.012721292737437523)) + exp3 = ((0.0, 1.1111111111111112, 2.2222222222222223, 3.3333333333333335, 4.444444444444445, 5.555555555555555, + 6.666666666666667, 7.777777777777779, 8.88888888888889, 10.0), (4.369893391586999e-09, 1.1750333000630964, +- 3.2922404058312473, 9.432290008148343, 28.37098083007151, 86.18577464367974, 261.90356653762115, +- 795.6538758627842, 2416.9920942096983, 7342.159505206647)) ++ 3.2922404058312478, 9.432290008148340, 28.37098083007151, 86.18577464367974, 261.90356653762110, ++ 795.6538758627843, 2416.9920942096987, 7342.159505206649)) + exp4 = ((0.0, 1.1111111111111112, 2.2222222222222223, 3.3333333333333335, 4.444444444444445, 5.555555555555555, + 6.666666666666667, 7.777777777777779, 8.88888888888889, 10.0), (0.0, 6.17283950617284, 24.69135802469136, + 55.555555555555564, 98.76543209876544, 154.320987654321, 222.22222222222226, 302.46913580246917, +@@ -184,7 +184,7 @@ def test_impulse_response(): + exp7 = ((0.0, 1.1111111111111112, 2.2222222222222223, 3.3333333333333335, + 4.444444444444445, 5.555555555555555, 6.666666666666667, 7.777777777777779, + 8.88888888888889, 10.0), (0.0, 18.934638095560974, 5346.93244680907, 1384609.8718249386, +- 358161126.65801865, 92645770015.70108, 23964739753087.42, 6198974342083139.0, 1.603492601616059e+18, ++ 358161126.65801877, 92645770015.70108, 23964739753087.418, 6198974342083139.0, 1.603492601616059e+18, + 4.147764422869658e+20)) + + assert impulse_res_tester(tf1, exp1) +@@ -219,8 +219,8 @@ def test_step_response(): + -0.003636420058445484)) + exp3 = ((0.0, 1.1111111111111112, 2.2222222222222223, 3.3333333333333335, 4.444444444444445, + 5.555555555555555, 6.666666666666667, 7.777777777777779, 8.88888888888889, 10.0), +- (0.0, 0.6314542141914303, 2.9356520038101035, 9.37731009663807, 28.452300356688376, +- 86.25721933273988, 261.9236645044672, 795.6435410577224, 2416.9786984578764, 7342.154119725917)) ++ (0.0, 0.6314542141914303, 2.935652003810104, 9.377310096638068, 28.452300356688376, ++ 86.25721933273988, 261.9236645044671, 795.6435410577225, 2416.978698457877, 7342.1541197259185)) + exp4 = ((0.0, 1.1111111111111112, 2.2222222222222223, 3.3333333333333335, 4.444444444444445, + 5.555555555555555, 6.666666666666667, 7.777777777777779, 8.88888888888889, 10.0), + (0.0, 2.286236899862826, 18.28989519890261, 61.72839629629631, 146.31916159122088, 285.7796124828532, +@@ -264,8 +264,8 @@ def test_ramp_response(): + 1.304684417610106)) + exp3 = ((0.0, 1.1111111111111112, 2.2222222222222223, 3.3333333333333335, 4.444444444444445, 5.555555555555555, + 6.666666666666667, 7.777777777777779, 8.88888888888889, 10.0), (-3.9329040468771836e-08, +- 0.34686634635794555, 2.9998828170537903, 12.33303690737476, 40.993913948137795, 127.84145222317912, +- 391.41713691996, 1192.0006858708389, 3623.9808672503405, 11011.728034546572)) ++ 0.34686634635794555, 2.9998828170537912, 12.333036907374758, 40.993913948137795, 127.84145222317912, ++ 391.41713691995994, 1192.000685870839, 3623.980867250341, 11011.728034546573)) + exp4 = ((0.0, 1.1111111111111112, 2.2222222222222223, 3.3333333333333335, 4.444444444444445, 5.555555555555555, + 6.666666666666667, 7.777777777777779, 8.88888888888889, 10.0), (0.0, 1.9051973784484078, 30.483158055174524, + 154.32098765432104, 487.7305288827924, 1190.7483615302544, 2469.1358024691367, 4574.3789056546275, diff --git a/sympy-theano-pymc.patch b/sympy-theano-pymc.patch deleted file mode 100644 index 0741612..0000000 --- a/sympy-theano-pymc.patch +++ /dev/null @@ -1,22 +0,0 @@ ---- sympy-sympy-1.6.2/sympy/printing/tests/test_theanocode.py.orig 2020-08-07 09:17:07.000000000 -0600 -+++ sympy-sympy-1.6.2/sympy/printing/tests/test_theanocode.py 2020-11-26 07:36:24.900389599 -0700 -@@ -350,7 +350,7 @@ def test_theano_function_scalar(): - f = theano_function_(inputs, outputs, dims=in_dims, scalar=scalar) - - # Check the theano_function attribute is set whether wrapped or not -- assert isinstance(f.theano_function, theano.compile.function_module.Function) -+ assert isinstance(f.theano_function, theano.compile.function.types.Function) - - # Feed in inputs of the appropriate size and get outputs - in_values = [ ---- sympy-sympy-1.6.2/sympy/printing/theanocode.py.orig 2020-08-07 09:17:07.000000000 -0600 -+++ sympy-sympy-1.6.2/sympy/printing/theanocode.py 2020-11-26 07:35:55.667441366 -0700 -@@ -442,7 +442,7 @@ def theano_function(inputs, outputs, sca - function will return a list of arrays. See description of the ``squeeze`` - argument above for the behavior when a single output is passed in a list. - The returned object will either be an instance of -- ``theano.compile.function_module.Function`` or a Python wrapper -+ ``theano.compile.function.types.Function`` or a Python wrapper - function around one. In both cases, the returned value will have a - ``theano_function`` attribute which points to the return value of - ``theano.function``. diff --git a/sympy.spec b/sympy.spec index b462670..2827196 100644 --- a/sympy.spec +++ b/sympy.spec @@ -1,21 +1,29 @@ -%bcond_without bootstrap +# We used to build with Theano support. However, we no longer have a compatible +# version of Theano in Fedora. If aesara is ever packaged for Fedora, we can +# use it instead. Name: sympy -Version: 1.8 -Release: 3%{?dist} +Version: 1.9 +Release: 1%{?dist} Summary: A Python library for symbolic mathematics License: BSD -URL: http://sympy.org/ +URL: https://sympy.org/ Source0: https://github.com/%{name}/%{name}/archive/%{name}-%{version}.tar.gz # Skip tests that require a display Patch0: %{name}-circuitplot.patch # Default to python3 in the Cython backend Patch1: %{name}-python3.patch -# Adapt to Theano-PyMC -Patch2: %{name}-theano-pymc.patch # Work around Fedora pyglet not including PNGImageDecoder # https://github.com/sympy/sympy/pull/20600 -Patch3: %{name}-png-decoder.patch +Patch2: %{name}-png-decoder.patch +# Account for possible rounding error in some physics tests +Patch3: %{name}-tests.patch +# Don't let deprecation warnings from distutils cause test failures +Patch4: %{name}-distutils.patch +# gmpy2 2.1.0 no longer converts Decimal directly to mpq +Patch5: %{name}-gmpy2-mpq.patch +# gmpy2 2.1.0 no longer accepts Rational as an exponent +Patch6: %{name}-rational-exponent.patch BuildArch: noarch @@ -28,7 +36,6 @@ BuildRequires: ImageMagick BuildRequires: librsvg2-tools BuildRequires: make BuildRequires: parallel -BuildRequires: procps BuildRequires: python3-devel BuildRequires: %{py3_dist cython} BuildRequires: %{py3_dist docutils} @@ -39,19 +46,17 @@ BuildRequires: %{py3_dist mpmath} BuildRequires: %{py3_dist numexpr} BuildRequires: %{py3_dist numpy} BuildRequires: python3-numpy-f2py +BuildRequires: %{py3_dist pip} BuildRequires: %{py3_dist scipy} BuildRequires: %{py3_dist setuptools} BuildRequires: %{py3_dist sphinx-math-dollar} +BuildRequires: %{py3_dist wheel} BuildRequires: %{py3_dist wurlitzer} BuildRequires: tex(latex) BuildRequires: tex-dvipng BuildRequires: xorg-x11-fonts-Type1 BuildRequires: xorg-x11-server-Xvfb -%if %{without bootstrap} -BuildRequires: %{py3_dist theano-pymc} -%endif - %global _description\ SymPy aims to become a full-featured computer algebra system (CAS)\ while keeping the code as simple as possible in order to be\ @@ -114,7 +119,7 @@ for fil in $(grep -rl "^#\![[:blank:]]*%{_bindir}/env" .); do done %build -%py3_build +%pyproject_wheel # Build the documentation pushd doc @@ -123,7 +128,7 @@ make cheatsheet popd %install -%py3_install +%pyproject_install ## Remove extra files rm -f %{buildroot}%{_bindir}/{,doc}test @@ -147,6 +152,7 @@ find examples/ -name '*.py[co]' -print -delete # numpy float64 values (but produce float32 values on some architectures). I # used to try to keep the test suite working on all architectures, but it has # become too much of a burden. Only run tests if we happen to build on x86_64. +# We cannot use %%ifarch here because this is a noarch package. if [ "$(uname -p)" = "x86_64" ]; then # Split into many small chunks to reduce waiting in the end-game jobs=%{?_smp_mflags}; jobs=${jobs#-j}; jobs=$((jobs * 3)) @@ -164,7 +170,7 @@ fi %{python3_sitelib}/isympy.* %{python3_sitelib}/__pycache__/isympy.* %{python3_sitelib}/sympy/ -%{python3_sitelib}/sympy-%{version}-*.egg-info +%{python3_sitelib}/sympy-%{version}.dist-info %{_bindir}/isympy %{_mandir}/man1/isympy.1* @@ -176,6 +182,12 @@ fi %{_docdir}/%{name}-doc/html %changelog +* Fri Oct 8 2021 Jerry James - 1.9-1 +- Version 1.9 +- Drop theano support due to incompatibility with the Fedora version +- Add -tests, -distutils, -gmpy2-mpq, and -rational-exponent patches to + work around test failures + * Fri Jul 23 2021 Fedora Release Engineering - 1.8-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild