Hello community,

here is the log from the commit of package python-control for openSUSE:Factory 
checked in at 2019-11-06 14:07:02
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-control (Old)
 and      /work/SRC/openSUSE:Factory/.python-control.new.2990 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-control"

Wed Nov  6 14:07:02 2019 rev:1 rq:745475 version:0.8.2

Changes:
--------
New Changes file:

--- /dev/null   2019-10-24 10:19:07.066239389 +0200
+++ /work/SRC/openSUSE:Factory/.python-control.new.2990/python-control.changes  
2019-11-06 14:07:07.736850276 +0100
@@ -0,0 +1,34 @@
+-------------------------------------------------------------------
+Mon Nov  4 13:25:48 UTC 2019 - Benjamin Greiner <c...@bnavigator.de>
+
+- fix segfault: run only those tests that require xvfb with xvfb-run
+- fix i586 build fail: add upstream PR#317 to replace float128
+
+-------------------------------------------------------------------
+Thu Jun 27 13:12:31 UTC 2019 - Benjamin Greiner <c...@bnavigator.de>
+
+- remove python-devel from BuildRequires 
+
+-------------------------------------------------------------------
+Tue Jun 25 15:41:59 UTC 2019 - Benjamin Greiner <c...@bnavigator.de>
+
+- add slycot to BuildRequires for tests 
+
+-------------------------------------------------------------------
+Wed Jun 19 12:48:24 UTC 2019 - Benjamin Greiner <c...@bnavigator.de>
+
+- switch to xvfb-run 
+
+-------------------------------------------------------------------
+Wed Jun 19 11:05:31 UTC 2019 - Benjamin Greiner <c...@bnavigator.de>
+
+make v0.8.2 spec test suite compliant
+- specify Qt5Agg as Matplotlib backend
+- add X11 to build system so that Qt5 tests pass
+- reorganize spec file
+
+-------------------------------------------------------------------
+Mon May 13 19:16:19 UTC 2019 - Benjamin Greiner <c...@bnavigator.de>
+
+update to version 0.8.2
+- 

New:
----
  control-0.8.2.tar.gz
  python-control-fixtestaugw.patch
  python-control-pr317.patch
  python-control.changes
  python-control.spec

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-control.spec ++++++
#
# spec file for package python-control
#
# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.

# Please submit bugfixes or comments via https://bugs.opensuse.org/
#


%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name:           python-control
Version:        0.8.2
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
BuildRequires:  %{python_module setuptools}
BuildRequires:  fdupes
BuildRequires:  python-rpm-macros
Requires:       python-numpy
Requires:       python-scipy
Recommends:     python-slycot
BuildArch:      noarch
# 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:  xvfb-run
# /SECTION
%python_subpackages

%description
The Python Control Systems Library is a Python module that implements basic
operations for analysis and design of feedback control systems.

%prep
%setup -q -n control-%{version}
%patch0 -p1
%patch1 -p1

%build
%python_build

%install
%python_install
%python_expand %fdupes %{buildroot}%{$python_sitelib}

%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
# virtual X server environment
%if %{_arch} == i386
    export LD_PRELOAD="%{_libdir}/libtcmalloc_minimal.so.4"
%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
}

%files %{python_files}
%doc ChangeLog README.rst
%license LICENSE
%{python_sitelib}/control
%{python_sitelib}/control-*-py*.egg-info

%changelog
++++++ python-control-fixtestaugw.patch ++++++
diff --git a/control/tests/robust_test.py b/control/tests/robust_test.py
index 9a3419f..b23f06c 100644
--- a/control/tests/robust_test.py
+++ b/control/tests/robust_test.py
@@ -245,7 +245,7 @@ class TestAugw(unittest.TestCase):
     @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.]],
@@ -295,10 +295,10 @@ class TestAugw(unittest.TestCase):
         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])
++++++ python-control-pr317.patch ++++++
>From e1e319f844edb2e6a22aa815ca42806d47c6cf5f Mon Sep 17 00:00:00 2001
From: Rory Yorke <rory.yo...@gmail.com>
Date: Sun, 23 Jun 2019 14:46:23 +0200
Subject: [PATCH] Use numpy.longdouble instead of numpy.float128 in testing

numpy.float128 doesn't exist on all platforms, e.g., Windows 64-bit.

When numpy.float128 does exist (e.g., Linux 64-bit), it's typically an
alias for numpy.longdouble.
---
 control/tests/xferfcn_input_test.py | 28 ++++++++++++++--------------
 1 file changed, 14 insertions(+), 14 deletions(-)

diff --git a/control/tests/xferfcn_input_test.py 
b/control/tests/xferfcn_input_test.py
index 0471e885..0d6ca56f 100644
--- a/control/tests/xferfcn_input_test.py
+++ b/control/tests/xferfcn_input_test.py
@@ -7,7 +7,7 @@
 import numpy as np
 
 from numpy import int, int8, int16, int32, int64
-from numpy import float, float16, float32, float64, float128
+from numpy import float, float16, float32, float64, longdouble
 from numpy import all, ndarray, array
 
 from control.xferfcn import _clean_part
@@ -73,7 +73,7 @@ def test_clean_part_tuple(self):
 
     def test_clean_part_all_scalar_types(self):
         """Test single scalar value for all valid data types."""
-        for dtype in [int, int8, int16, int32, int64, float, float16, float32, 
float64, float128]:
+        for dtype in [int, int8, int16, int32, int64, float, float16, float32, 
float64, longdouble]:
             num = dtype(1)
             num_ = _clean_part(num)
 
@@ -92,7 +92,7 @@ def test_clean_part_np_array(self):
 
     def test_clean_part_all_np_array_types(self):
         """Test scalar value in numpy array of ndim=0 for all data types."""
-        for dtype in [int, int8, int16, int32, int64, float, float16, float32, 
float64, float128]:
+        for dtype in [int, int8, int16, int32, int64, float, float16, float32, 
float64, longdouble]:
             num = np.array(1, dtype=dtype)
             num_ = _clean_part(num)
 
@@ -102,7 +102,7 @@ def test_clean_part_all_np_array_types(self):
 
     def test_clean_part_all_np_array_types2(self):
         """Test numpy array for all types."""
-        for dtype in [int, int8, int16, int32, int64, float, float16, float32, 
float64, float128]:
+        for dtype in [int, int8, int16, int32, int64, float, float16, float32, 
float64, longdouble]:
             num = np.array([1, 2], dtype=dtype)
             num_ = _clean_part(num)
 
@@ -112,7 +112,7 @@ def test_clean_part_all_np_array_types2(self):
 
     def test_clean_part_list_all_types(self):
         """Test list of a single value for all data types."""
-        for dtype in [int, int8, int16, int32, int64, float, float16, float32, 
float64, float128]:
+        for dtype in [int, int8, int16, int32, int64, float, float16, float32, 
float64, longdouble]:
             num = [dtype(1)]
             num_ = _clean_part(num)
             assert isinstance(num_, list)
@@ -121,7 +121,7 @@ def test_clean_part_list_all_types(self):
 
     def test_clean_part_list_all_types2(self):
         """List of list of numbers of all data types."""
-        for dtype in [int, int8, int16, int32, int64, float, float16, float32, 
float64, float128]:
+        for dtype in [int, int8, int16, int32, int64, float, float16, float32, 
float64, longdouble]:
             num = [dtype(1), dtype(2)]
             num_ = _clean_part(num)
             assert isinstance(num_, list)
@@ -130,7 +130,7 @@ def test_clean_part_list_all_types2(self):
 
     def test_clean_part_tuple_all_types(self):
         """Test tuple of a single value for all data types."""
-        for dtype in [int, int8, int16, int32, int64, float, float16, float32, 
float64, float128]:
+        for dtype in [int, int8, int16, int32, int64, float, float16, float32, 
float64, longdouble]:
             num = (dtype(1),)
             num_ = _clean_part(num)
             assert isinstance(num_, list)
@@ -139,7 +139,7 @@ def test_clean_part_tuple_all_types(self):
 
     def test_clean_part_tuple_all_types2(self):
         """Test tuple of a single value for all data types."""
-        for dtype in [int, int8, int16, int32, int64, float, float16, float32, 
float64, float128]:
+        for dtype in [int, int8, int16, int32, int64, float, float16, float32, 
float64, longdouble]:
             num = (dtype(1), dtype(2))
             num_ = _clean_part(num)
             assert isinstance(num_, list)
@@ -184,7 +184,7 @@ def test_clean_part_list_list_list_floats(self):
 
     def test_clean_part_list_list_array(self):
         """List of list of numpy arrays for all valid types."""
-        for dtype in int, int8, int16, int32, int64, float, float16, float32, 
float64, float128:
+        for dtype in int, int8, int16, int32, int64, float, float16, float32, 
float64, longdouble:
             num = [[array([1, 1], dtype=dtype), array([2, 2], dtype=dtype)]]
             num_ = _clean_part(num)
 
@@ -195,7 +195,7 @@ def test_clean_part_list_list_array(self):
 
     def test_clean_part_tuple_list_array(self):
         """Tuple of list of numpy arrays for all valid types."""
-        for dtype in int, int8, int16, int32, int64, float, float16, float32, 
float64, float128:
+        for dtype in int, int8, int16, int32, int64, float, float16, float32, 
float64, longdouble:
             num = ([array([1, 1], dtype=dtype), array([2, 2], dtype=dtype)],)
             num_ = _clean_part(num)
 
@@ -206,7 +206,7 @@ def test_clean_part_tuple_list_array(self):
 
     def test_clean_part_list_tuple_array(self):
         """List of tuple of numpy array for all valid types."""
-        for dtype in int, int8, int16, int32, int64, float, float16, float32, 
float64, float128:
+        for dtype in int, int8, int16, int32, int64, float, float16, float32, 
float64, longdouble:
             num = [(array([1, 1], dtype=dtype), array([2, 2], dtype=dtype))]
             num_ = _clean_part(num)
 
@@ -217,7 +217,7 @@ def test_clean_part_list_tuple_array(self):
 
     def test_clean_part_tuple_tuples_arrays(self):
         """Tuple of tuples of numpy arrays for all valid types."""
-        for dtype in int, int8, int16, int32, int64, float, float16, float32, 
float64, float128:
+        for dtype in int, int8, int16, int32, int64, float, float16, float32, 
float64, longdouble:
             num = ((array([1, 1], dtype=dtype), array([2, 2], dtype=dtype)),
                    (array([3, 4], dtype=dtype), array([4, 4], dtype=dtype)))
             num_ = _clean_part(num)
@@ -229,7 +229,7 @@ def test_clean_part_tuple_tuples_arrays(self):
 
     def test_clean_part_list_tuples_arrays(self):
         """List of tuples of numpy arrays for all valid types."""
-        for dtype in int, int8, int16, int32, int64, float, float16, float32, 
float64, float128:
+        for dtype in int, int8, int16, int32, int64, float, float16, float32, 
float64, longdouble:
             num = [(array([1, 1], dtype=dtype), array([2, 2], dtype=dtype)),
                    (array([3, 4], dtype=dtype), array([4, 4], dtype=dtype))]
             num_ = _clean_part(num)
@@ -241,7 +241,7 @@ def test_clean_part_list_tuples_arrays(self):
 
     def test_clean_part_list_list_arrays(self):
         """List of list of numpy arrays for all valid types."""
-        for dtype in int, int8, int16, int32, int64, float, float16, float32, 
float64, float128:
+        for dtype in int, int8, int16, int32, int64, float, float16, float32, 
float64, longdouble:
             num = [[array([1, 1], dtype=dtype), array([2, 2], dtype=dtype)],
                    [array([3, 3], dtype=dtype), array([4, 4], dtype=dtype)]]
             num_ = _clean_part(num)

Reply via email to