Hello community, here is the log from the commit of package python-control for openSUSE:Factory checked in at 2020-01-18 12:18:30 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-control (Old) and /work/SRC/openSUSE:Factory/.python-control.new.26092 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-control" Sat Jan 18 12:18:30 2020 rev:3 rq:765399 version:0.8.3 Changes: -------- --- /work/SRC/openSUSE:Factory/python-control/python-control.changes 2019-12-04 14:20:23.994439139 +0100 +++ /work/SRC/openSUSE:Factory/.python-control.new.26092/python-control.changes 2020-01-18 12:19:11.859173226 +0100 @@ -1,0 +2,17 @@ +Sat Jan 18 01:18:39 UTC 2020 - Benjamin Greiner <[email protected]> + +- update to version 0.8.3 +- remove patches that were merged upstream: + python-control-fixtestaugw.patch + python-control-pr317.patch + python-control-pr345.patch +- pr365-copy-PR-320-for-robust_array_test.patch + upstream PR#365 the former fixtestaugw patch for the new + duplicated array test +- pr366-ease-precision-tolerance.patch + upstream PR#366 to pass the checks on more architectures +- remove Python 2 package +- run all tests in xvfb env and prealloc differently for i586 + architecture + +------------------------------------------------------------------- Old: ---- control-0.8.2.tar.gz python-control-fixtestaugw.patch python-control-pr317.patch python-control-pr345.patch New: ---- _service control-0.8.3.tar.gz pr365-copy-PR-320-for-robust_array_test.patch pr366-ease-precision-tolerance.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-control.spec ++++++ --- /var/tmp/diff_new_pack.aPiV8w/_old 2020-01-18 12:19:12.719173688 +0100 +++ /var/tmp/diff_new_pack.aPiV8w/_new 2020-01-18 12:19:12.723173689 +0100 @@ -1,7 +1,7 @@ # # spec file for package python-control # -# Copyright (c) 2019 SUSE LLC +# Copyright (c) 2020 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,16 +17,16 @@ %{?!python_module:%define python_module() python-%{**} python3-%{**}} +%define skip_python2 1 Name: python-control -Version: 0.8.2 +Version: 0.8.3 Release: 0 Summary: Python control systems library License: BSD-3-Clause URL: http://python-control.sourceforge.net Source: https://files.pythonhosted.org/packages/source/c/control/control-%{version}.tar.gz -Patch0: python-control-fixtestaugw.patch -Patch1: python-control-pr317.patch -Patch2: python-control-pr345.patch +Patch0: pr365-copy-PR-320-for-robust_array_test.patch +Patch1: pr366-ease-precision-tolerance.patch BuildRequires: %{python_module setuptools} BuildRequires: fdupes BuildRequires: python-rpm-macros @@ -37,12 +37,11 @@ # SECTION test requirements BuildRequires: %{python_module matplotlib-qt5} BuildRequires: %{python_module matplotlib} -BuildRequires: %{python_module nose-exclude} BuildRequires: %{python_module nose} BuildRequires: %{python_module numpy} BuildRequires: %{python_module scipy} BuildRequires: %{python_module slycot} -BuildRequires: libtcmalloc4 +BuildRequires: libjemalloc2 BuildRequires: xvfb-run # /SECTION %python_subpackages @@ -55,7 +54,6 @@ %setup -q -n control-%{version} %patch0 -p1 %patch1 -p1 -%patch2 -p1 %build %python_build @@ -66,21 +64,15 @@ %check # The default Agg backend does not define the toolbar attribute in the Figure -# Manager used by some tests, so we run those tests with the Qt5 backend in a +# Manager used by some tests, so we run the tests with the Qt5 backend in a # virtual X server environment %if %{_arch} == i386 - export LD_PRELOAD="%{_libdir}/libtcmalloc_minimal.so.4" + # preload malloc library to avoid free() error on i586 architecture + export LD_PRELOAD="%{_libdir}/libjemalloc.so.2" %endif %{python_expand export PYTHONPATH=%{buildroot}%{$python_sitelib} -export MPLBACKEND="Agg" -nosetests-%$python_bin_suffix \ - --exclude-test control.tests.sisotool_test \ - --exclude-test control.tests.rlocus_test export MPLBACKEND="Qt5Agg" -export LD_PRELOAD="%{_libdir}/libtcmalloc_minimal.so.4" -xvfb-run -a nosetests-%$python_bin_suffix \ - control.tests.sisotool_test \ - control.tests.rlocus_test +xvfb-run -a $python setup.py test } %files %{python_files} ++++++ _service ++++++ <services> <service name="download_files" mode="disabled" /> </services> ++++++ control-0.8.2.tar.gz -> control-0.8.3.tar.gz ++++++ ++++ 15087 lines of diff (skipped) ++++++ pr365-copy-PR-320-for-robust_array_test.patch ++++++ >From b4b3d10c1ab5ef1bbf4d992f045408f6f6e88de7 Mon Sep 17 00:00:00 2001 From: Benjamin Greiner <[email protected]> Date: Sat, 4 Jan 2020 22:30:42 -0800 Subject: [PATCH] copy PR 320 for robust_array_test --- control/tests/robust_array_test.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/control/tests/robust_array_test.py b/control/tests/robust_array_test.py index 51114f87..62cf8c6c 100644 --- a/control/tests/robust_array_test.py +++ b/control/tests/robust_array_test.py @@ -261,7 +261,7 @@ def testMimoW3(self): @unittest.skipIf(not slycot_check(), "slycot not installed") def testMimoW123(self): """MIMO plant with all weights""" - from control import augw, ss, append + from control import augw, ss, append, minreal g = ss([[-1., -2], [-3, -4]], [[1., 0.], [0., 1.]], [[1., 0.], [0., 1.]], @@ -311,10 +311,10 @@ def testMimoW123(self): self.siso_almost_equal(w2[1, 1], p[3, 3]) # u->z3 should be w3*g w3g = w3 * g; - self.siso_almost_equal(w3g[0, 0], p[4, 2]) - self.siso_almost_equal(w3g[0, 1], p[4, 3]) - self.siso_almost_equal(w3g[1, 0], p[5, 2]) - self.siso_almost_equal(w3g[1, 1], p[5, 3]) + self.siso_almost_equal(w3g[0, 0], minreal(p[4, 2])) + self.siso_almost_equal(w3g[0, 1], minreal(p[4, 3])) + self.siso_almost_equal(w3g[1, 0], minreal(p[5, 2])) + self.siso_almost_equal(w3g[1, 1], minreal(p[5, 3])) # u->v should be -g self.siso_almost_equal(-g[0, 0], p[6, 2]) self.siso_almost_equal(-g[0, 1], p[6, 3]) ++++++ pr366-ease-precision-tolerance.patch ++++++ >From f4915eb44c45b17a9ac271e7acec58470243b5fa Mon Sep 17 00:00:00 2001 From: Benjamin Greiner <[email protected]> Date: Mon, 6 Jan 2020 12:19:56 -0800 Subject: [PATCH] ease precision tolerenace for iosys tests --- control/tests/iosys_test.py | 42 ++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/control/tests/iosys_test.py b/control/tests/iosys_test.py index aaf2243c..9fdac09c 100644 --- a/control/tests/iosys_test.py +++ b/control/tests/iosys_test.py @@ -60,7 +60,7 @@ def test_linear_iosys(self): lti_t, lti_y, lti_x = ct.forced_response(linsys, T, U, X0) ios_t, ios_y = ios.input_output_response(iosys, T, U, X0) np.testing.assert_array_almost_equal(lti_t, ios_t) - np.testing.assert_array_almost_equal(lti_y, ios_y, decimal=3) + np.testing.assert_allclose(lti_y, ios_y,atol=0.002,rtol=0.) @unittest.skipIf(StrictVersion(sp.__version__) < "1.0", "requires SciPy 1.0 or greater") @@ -75,7 +75,7 @@ def test_tf2io(self): lti_t, lti_y, lti_x = ct.forced_response(linsys, T, U, X0) ios_t, ios_y = ios.input_output_response(iosys, T, U, X0) np.testing.assert_array_almost_equal(lti_t, ios_t) - np.testing.assert_array_almost_equal(lti_y, ios_y, decimal=3) + np.testing.assert_allclose(lti_y, ios_y,atol=0.002,rtol=0.) def test_ss2io(self): # Create an input/output system from the linear system @@ -161,7 +161,7 @@ def test_nonlinear_iosys(self): lti_t, lti_y, lti_x = ct.forced_response(linsys, T, U, X0) ios_t, ios_y = ios.input_output_response(nlsys, T, U, X0) np.testing.assert_array_almost_equal(lti_t, ios_t) - np.testing.assert_array_almost_equal(lti_y, ios_y, decimal=3) + np.testing.assert_allclose(lti_y, ios_y,atol=0.002,rtol=0.) def test_linearize(self): # Create a single input/single output linear system @@ -214,7 +214,7 @@ def test_connect(self): iosys_series, T, U, X0, return_x=True) lti_t, lti_y, lti_x = ct.forced_response(linsys_series, T, U, X0) np.testing.assert_array_almost_equal(lti_t, ios_t) - np.testing.assert_array_almost_equal(lti_y, ios_y, decimal=3) + np.testing.assert_allclose(lti_y, ios_y,atol=0.002,rtol=0.) # Connect systems with different timebases linsys2c = self.siso_linsys @@ -231,7 +231,7 @@ def test_connect(self): iosys_series, T, U, X0, return_x=True) lti_t, lti_y, lti_x = ct.forced_response(linsys_series, T, U, X0) np.testing.assert_array_almost_equal(lti_t, ios_t) - np.testing.assert_array_almost_equal(lti_y, ios_y, decimal=3) + np.testing.assert_allclose(lti_y, ios_y,atol=0.002,rtol=0.) # Feedback interconnection linsys_feedback = ct.feedback(linsys1, linsys2) @@ -246,7 +246,7 @@ def test_connect(self): iosys_feedback, T, U, X0, return_x=True) lti_t, lti_y, lti_x = ct.forced_response(linsys_feedback, T, U, X0) np.testing.assert_array_almost_equal(lti_t, ios_t) - np.testing.assert_array_almost_equal(lti_y, ios_y, decimal=3) + np.testing.assert_allclose(lti_y, ios_y,atol=0.002,rtol=0.) @unittest.skipIf(StrictVersion(sp.__version__) < "1.0", "requires SciPy 1.0 or greater") @@ -357,7 +357,7 @@ def test_summer(self): lin_t, lin_y, lin_x = ct.forced_response(linsys_parallel, T, U, X0) ios_t, ios_y = ios.input_output_response(iosys_parallel, T, U, X0) - np.testing.assert_array_almost_equal(ios_y, lin_y, decimal=3) + np.testing.assert_allclose(ios_y, lin_y,atol=0.002,rtol=0.) @unittest.skipIf(StrictVersion(sp.__version__) < "1.0", "requires SciPy 1.0 or greater") @@ -420,7 +420,7 @@ def test_feedback(self): ios_t, ios_y = ios.input_output_response(iosys, T, U, X0) lti_t, lti_y, lti_x = ct.forced_response(linsys, T, U, X0) - np.testing.assert_array_almost_equal(ios_y, lti_y, decimal=3) + np.testing.assert_allclose(ios_y, lti_y,atol=0.002,rtol=0.) @unittest.skipIf(StrictVersion(sp.__version__) < "1.0", "requires SciPy 1.0 or greater") @@ -442,7 +442,7 @@ def test_bdalg_functions(self): iosys_series = ct.series(linio1, linio2) lin_t, lin_y, lin_x = ct.forced_response(linsys_series, T, U, X0) ios_t, ios_y = ios.input_output_response(iosys_series, T, U, X0) - np.testing.assert_array_almost_equal(ios_y, lin_y, decimal=3) + np.testing.assert_allclose(ios_y, lin_y,atol=0.002,rtol=0.) # Make sure that systems don't commute linsys_series = ct.series(linsys2, linsys1) @@ -454,21 +454,21 @@ def test_bdalg_functions(self): iosys_parallel = ct.parallel(linio1, linio2) lin_t, lin_y, lin_x = ct.forced_response(linsys_parallel, T, U, X0) ios_t, ios_y = ios.input_output_response(iosys_parallel, T, U, X0) - np.testing.assert_array_almost_equal(ios_y, lin_y, decimal=3) + np.testing.assert_allclose(ios_y, lin_y,atol=0.002,rtol=0.) # Negation linsys_negate = ct.negate(linsys1) iosys_negate = ct.negate(linio1) lin_t, lin_y, lin_x = ct.forced_response(linsys_negate, T, U, X0) ios_t, ios_y = ios.input_output_response(iosys_negate, T, U, X0) - np.testing.assert_array_almost_equal(ios_y, lin_y, decimal=3) + np.testing.assert_allclose(ios_y, lin_y,atol=0.002,rtol=0.) # Feedback interconnection linsys_feedback = ct.feedback(linsys1, linsys2) iosys_feedback = ct.feedback(linio1, linio2) lin_t, lin_y, lin_x = ct.forced_response(linsys_feedback, T, U, X0) ios_t, ios_y = ios.input_output_response(iosys_feedback, T, U, X0) - np.testing.assert_array_almost_equal(ios_y, lin_y, decimal=3) + np.testing.assert_allclose(ios_y, lin_y,atol=0.002,rtol=0.) @unittest.skipIf(StrictVersion(sp.__version__) < "1.0", "requires SciPy 1.0 or greater") @@ -496,26 +496,26 @@ def test_nonsquare_bdalg(self): iosys_multiply = iosys_3i2o * iosys_2i3o lin_t, lin_y, lin_x = ct.forced_response(linsys_multiply, T, U2, X0) ios_t, ios_y = ios.input_output_response(iosys_multiply, T, U2, X0) - np.testing.assert_array_almost_equal(ios_y, lin_y, decimal=3) + np.testing.assert_allclose(ios_y, lin_y,atol=0.002,rtol=0.) linsys_multiply = linsys_2i3o * linsys_3i2o iosys_multiply = iosys_2i3o * iosys_3i2o lin_t, lin_y, lin_x = ct.forced_response(linsys_multiply, T, U3, X0) ios_t, ios_y = ios.input_output_response(iosys_multiply, T, U3, X0) - np.testing.assert_array_almost_equal(ios_y, lin_y, decimal=3) + np.testing.assert_allclose(ios_y, lin_y,atol=0.002,rtol=0.) # Right multiplication # TODO: add real tests once conversion from other types is supported iosys_multiply = ios.InputOutputSystem.__rmul__(iosys_3i2o, iosys_2i3o) ios_t, ios_y = ios.input_output_response(iosys_multiply, T, U3, X0) - np.testing.assert_array_almost_equal(ios_y, lin_y, decimal=3) + np.testing.assert_allclose(ios_y, lin_y,atol=0.002,rtol=0.) # Feedback linsys_multiply = ct.feedback(linsys_3i2o, linsys_2i3o) iosys_multiply = iosys_3i2o.feedback(iosys_2i3o) lin_t, lin_y, lin_x = ct.forced_response(linsys_multiply, T, U3, X0) ios_t, ios_y = ios.input_output_response(iosys_multiply, T, U3, X0) - np.testing.assert_array_almost_equal(ios_y, lin_y, decimal=3) + np.testing.assert_allclose(ios_y, lin_y,atol=0.002,rtol=0.) # Mismatch should generate exception args = (iosys_3i2o, iosys_3i2o) @@ -536,8 +536,8 @@ def test_discrete(self): # Simulate and compare to LTI output ios_t, ios_y = ios.input_output_response(lnios, T, U, X0) lin_t, lin_y, lin_x = ct.forced_response(linsys, T, U, X0) - np.testing.assert_array_almost_equal(ios_t, lin_t, decimal=3) - np.testing.assert_array_almost_equal(ios_y, lin_y, decimal=3) + np.testing.assert_allclose(ios_t, lin_t,atol=0.002,rtol=0.) + np.testing.assert_allclose(ios_y, lin_y,atol=0.002,rtol=0.) # Test MIMO system, converted to discrete time linsys = ct.StateSpace(self.mimo_linsys1) @@ -552,8 +552,8 @@ def test_discrete(self): # Simulate and compare to LTI output ios_t, ios_y = ios.input_output_response(lnios, T, U, X0) lin_t, lin_y, lin_x = ct.forced_response(linsys, T, U, X0) - np.testing.assert_array_almost_equal(ios_t, lin_t, decimal=3) - np.testing.assert_array_almost_equal(ios_y, lin_y, decimal=3) + np.testing.assert_allclose(ios_t, lin_t,atol=0.002,rtol=0.) + np.testing.assert_allclose(ios_y, lin_y,atol=0.002,rtol=0.) def test_find_eqpts(self): """Test find_eqpt function""" @@ -738,7 +738,7 @@ def test_params(self): # Check to make sure results are OK np.testing.assert_array_almost_equal(lti_t, ios_t) - np.testing.assert_array_almost_equal(lti_y, ios_y, decimal=3) + np.testing.assert_allclose(lti_y, ios_y,atol=0.002,rtol=0.) def test_named_signals(self): sys1 = ios.NonlinearIOSystem(
