1
0

- update to modern python on sle15

* Small docstring fixes for release by @murrayrm in #832
- Update to version 0.9.1
- Update to version 0.8.4
  * Improved default time vector for time response
  * New use_legacy_defaults function to allow compatibility
  * Allow creation of non-proper transfer functions
    (bnavigator, rlegnain)
  * Added ability to set arrow head length and width option
  * Added ability to 'prewarp' the conversion of continuous to
  * Added rlocus capability for discrete-time systems
  * Updated pzmap grid to be compatible with matplotlib updates
  * Implement loadable string representation (repr) for tf, ss,
  * Fixed margin computation for discrete time systems
  * Fixed InterconnectedSystem naming bugs, improved
  * Fixed LinearIOSystem output bug in output function
  * Fixed bug in forced_response that overrode squeeze
  * Use rad/sec for Bode plot in MATLAB bode (was erroneously
  * Removed deprecated scipy calls and updated to latest numpy
  * Updated unit tests + switch to pytest (bnavigator,
  * Return type for eigenvalues in lqe changed to 1D array
- Skip a test family on Leap because of segfaults in numpy
- moved Pillow requirement to matplotlib package
- add pr430-numpy119delete.patch to fix test failures with new numpy
- remove ppc workaround
  and matrix type during tests gh#python-control/python-control#423
- skip mixsyn test on PowerPC boo#1172555
  duplicated array test
- remove python-devel from BuildRequires
- add slycot to BuildRequires for tests

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:numeric/python-control?expand=0&rev=56
This commit is contained in:
2024-08-14 15:14:05 +00:00
committed by Git OBS Bridge
commit 353f5f2bad
7 changed files with 856 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
.osc

3
control-0.10.0.tar.gz Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2c18b767537f45c7fd07b2e4afe8fbe5964019499b5f52f888edb5d8560bab53
size 8956376

205
control-pr994-numpy2.patch Normal file
View File

@@ -0,0 +1,205 @@
From 03df7185bc8a44a345fb926effb38ed6aeb817cc Mon Sep 17 00:00:00 2001
From: Ben Greiner <code@bnavigator.de>
Date: Sat, 20 Apr 2024 16:25:33 +0200
Subject: [PATCH 1/4] Replace np.NaN removed in numpy 2
---
control/tests/timeresp_test.py | 14 +++++++-------
control/timeresp.py | 14 +++++++-------
2 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/control/tests/timeresp_test.py b/control/tests/timeresp_test.py
index fb21180b..441f4a7b 100644
--- a/control/tests/timeresp_test.py
+++ b/control/tests/timeresp_test.py
@@ -173,15 +173,15 @@ def tsystem(self, request):
# System Type 1 - Step response not stationary: G(s)=1/s(s+1)
siso_tf_type1 = TSys(TransferFunction(1, [1, 1, 0]))
siso_tf_type1.step_info = {
- 'RiseTime': np.NaN,
- 'SettlingTime': np.NaN,
- 'SettlingMin': np.NaN,
- 'SettlingMax': np.NaN,
- 'Overshoot': np.NaN,
- 'Undershoot': np.NaN,
+ 'RiseTime': np.nan,
+ 'SettlingTime': np.nan,
+ 'SettlingMin': np.nan,
+ 'SettlingMax': np.nan,
+ 'Overshoot': np.nan,
+ 'Undershoot': np.nan,
'Peak': np.Inf,
'PeakTime': np.Inf,
- 'SteadyStateValue': np.NaN}
+ 'SteadyStateValue': np.nan}
# SISO under shoot response and positive final value
# G(s)=(-s+1)/(s²+s+1)
diff --git a/control/timeresp.py b/control/timeresp.py
index 58207e88..843ae3a8 100644
--- a/control/timeresp.py
+++ b/control/timeresp.py
@@ -1590,15 +1590,15 @@ def step_info(sysdata, T=None, T_num=None, yfinal=None, params=None,
InfValue = InfValues[i, j]
sgnInf = np.sign(InfValue.real)
- rise_time: float = np.NaN
- settling_time: float = np.NaN
- settling_min: float = np.NaN
- settling_max: float = np.NaN
+ rise_time: float = np.nan
+ settling_time: float = np.nan
+ settling_min: float = np.nan
+ settling_max: float = np.nan
peak_value: float = np.Inf
peak_time: float = np.Inf
- undershoot: float = np.NaN
- overshoot: float = np.NaN
- steady_state_value: complex = np.NaN
+ undershoot: float = np.nan
+ overshoot: float = np.nan
+ steady_state_value: complex = np.nan
if not np.isnan(InfValue) and not np.isinf(InfValue):
# RiseTime
From 38188fbd6d8b95ef0ed5d76e396db43f95bbf488 Mon Sep 17 00:00:00 2001
From: Ben Greiner <code@bnavigator.de>
Date: Sat, 20 Apr 2024 16:35:21 +0200
Subject: [PATCH 2/4] Replace np.Inf removed in numpy 2
---
control/tests/timeresp_test.py | 4 ++--
control/timeresp.py | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/control/tests/timeresp_test.py b/control/tests/timeresp_test.py
index 441f4a7b..bdbbb3e8 100644
--- a/control/tests/timeresp_test.py
+++ b/control/tests/timeresp_test.py
@@ -179,8 +179,8 @@ def tsystem(self, request):
'SettlingMax': np.nan,
'Overshoot': np.nan,
'Undershoot': np.nan,
- 'Peak': np.Inf,
- 'PeakTime': np.Inf,
+ 'Peak': np.inf,
+ 'PeakTime': np.inf,
'SteadyStateValue': np.nan}
# SISO under shoot response and positive final value
diff --git a/control/timeresp.py b/control/timeresp.py
index 843ae3a8..428baf23 100644
--- a/control/timeresp.py
+++ b/control/timeresp.py
@@ -1594,8 +1594,8 @@ def step_info(sysdata, T=None, T_num=None, yfinal=None, params=None,
settling_time: float = np.nan
settling_min: float = np.nan
settling_max: float = np.nan
- peak_value: float = np.Inf
- peak_time: float = np.Inf
+ peak_value: float = np.inf
+ peak_time: float = np.inf
undershoot: float = np.nan
overshoot: float = np.nan
steady_state_value: complex = np.nan
From 0b5332bfa9580df81ba2ebc6f9d8f54975fa9cd6 Mon Sep 17 00:00:00 2001
From: Ben Greiner <code@bnavigator.de>
Date: Sat, 20 Apr 2024 16:44:45 +0200
Subject: [PATCH 3/4] replace deprecated numpy.linalg.linalg.LinAlgError with
numpy.linalg.LinAlgError and isort
---
control/statesp.py | 30 ++++++++++++++++--------------
1 file changed, 16 insertions(+), 14 deletions(-)
diff --git a/control/statesp.py b/control/statesp.py
index e14a8358..0c2856b1 100644
--- a/control/statesp.py
+++ b/control/statesp.py
@@ -48,26 +48,27 @@
"""
import math
+from copy import deepcopy
+from warnings import warn
+
import numpy as np
-from numpy import any, asarray, concatenate, cos, delete, \
- empty, exp, eye, isinf, ones, pad, sin, zeros, squeeze
-from numpy.random import rand, randn
-from numpy.linalg import solve, eigvals, matrix_rank
-from numpy.linalg.linalg import LinAlgError
import scipy as sp
import scipy.linalg
-from scipy.signal import cont2discrete
+from numpy import (any, asarray, concatenate, cos, delete, empty, exp, eye,
+ isinf, ones, pad, sin, squeeze, zeros)
+from numpy.linalg import LinAlgError, eigvals, matrix_rank, solve
+from numpy.random import rand, randn
from scipy.signal import StateSpace as signalStateSpace
-from warnings import warn
+from scipy.signal import cont2discrete
-from .exception import ControlSlycot, slycot_check, ControlMIMONotImplemented
+from . import config
+from .exception import ControlMIMONotImplemented, ControlSlycot, slycot_check
from .frdata import FrequencyResponseData
+from .iosys import (InputOutputSystem, _process_dt_keyword,
+ _process_iosys_keywords, _process_signal_list,
+ common_timebase, isdtime, issiso)
from .lti import LTI, _process_frequency_response
-from .iosys import InputOutputSystem, common_timebase, isdtime, issiso, \
- _process_iosys_keywords, _process_dt_keyword, _process_signal_list
-from .nlsys import NonlinearIOSystem, InterconnectedSystem
-from . import config
-from copy import deepcopy
+from .nlsys import InterconnectedSystem, NonlinearIOSystem
try:
from slycot import ab13dd
@@ -2221,9 +2222,10 @@ def _convert_to_statespace(sys, use_prefix_suffix=False, method=None):
by the calling function.
"""
- from .xferfcn import TransferFunction
import itertools
+ from .xferfcn import TransferFunction
+
if isinstance(sys, StateSpace):
return sys
From ebb8a5284c8c4e58ef8efdae656f1e4748b3ba68 Mon Sep 17 00:00:00 2001
From: Ben Greiner <code@bnavigator.de>
Date: Sat, 20 Apr 2024 16:49:11 +0200
Subject: [PATCH 4/4] Replace deprecated numpy row_stack with vstack
---
control/rlocus.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/control/rlocus.py b/control/rlocus.py
index 631185cc..281fed08 100644
--- a/control/rlocus.py
+++ b/control/rlocus.py
@@ -21,7 +21,7 @@
import matplotlib.pyplot as plt
import numpy as np
import scipy.signal # signal processing toolbox
-from numpy import array, imag, poly1d, real, row_stack, zeros_like
+from numpy import array, imag, poly1d, real, vstack, zeros_like
from . import config
from .exception import ControlMIMONotImplemented
@@ -421,7 +421,7 @@ def _RLFindRoots(nump, denp, kvect):
curroots.sort()
roots.append(curroots)
- return row_stack(roots)
+ return vstack(roots)
def _RLSortRoots(roots):

1
python-control-rpmlintrc Normal file
View File

@@ -0,0 +1 @@
addFilter("explicit-lib-dependency.*matplotlib")

531
python-control.changes Normal file
View File

@@ -0,0 +1,531 @@
-------------------------------------------------------------------
Wed Aug 14 15:13:55 UTC 2024 - Dirk Müller <dmueller@suse.com>
- update to modern python on sle15
-------------------------------------------------------------------
Mon Apr 29 06:41:41 UTC 2024 - Ben Greiner <code@bnavigator.de>
- Skip a flaky plot test
-------------------------------------------------------------------
Sat Apr 20 15:20:30 UTC 2024 - Ben Greiner <code@bnavigator.de>
- Add control-pr994-numpy2.patch
gh#python-control/python-control#994
-------------------------------------------------------------------
Fri Apr 5 14:22:32 UTC 2024 - Ben Greiner <code@bnavigator.de>
- Update to 0.10.0
* Multivariable interconnect functionality by @murrayrm in #881
* Remove NumPy matrix class by @murrayrm in #913
* I/O system class restructuring by @murrayrm in #916
* Documentation fixes by @KybernetikJo in #919, #921, #922, #923
* Add two MRAC siso examples by @KybernetikJo in #914
* Time response plots by @murrayrm in #920
* Print a connection table for interconnected systems by
@sawyerbfuller in #925
* Update frequency response plots to use _response/_plot pattern
by @murrayrm in #924
* create_statefbk_iosystem and optimal control enhancements by
@murrayrm in #930
* Add unit test illustrating issue #935 + add method keyword for
tf2ss by @murrayrm in #937
* Vectorize optimal control cost calculation by @urpok23 in #940
* Improved speed of ctrb and obsv functions by @Jpickard1 in #941
* Fix sphinx bug (erroneous use of class template) by @murrayrm
in #943
* Fix bug in matched transformation + address other issues in
#950 by @murrayrm in #951
* Fix typo in header of Hinf example by @jrforbes in #946
* Fix typo in stochresp.py by @alex-damjanovic in #945
* Fix TimeResponseData.to_pandas() to handle zero state case by
@murrayrm in #958
* Update pole/zero and root locus plots to use _map/_plot pattern
by @murrayrm in #953
* Fix CI warnings by @murrayrm in #955
* Support Python 3.12, bump minimum support according to SPEC 0
by @bnavigator in #961
* Fix typos in pzmap.py by @matejkarasek in #962
* Fix examples to work with SciPy 1.12 by @bnavigator in #965
* Fix config test for missing old key warning by @bnavigator in
#972
* Implementation of system norms by @henriks76 in #971, #976
* Updated gram() to support discrete-time systems by @billtubbs
in #969
* Update unit test infrastructure by @murrayrm in #981, #986
* Remove external/ directory by @murrayrm in #983
* Reimplementation of 2D phase plots by @murrayrm in #980
* Update readthedocs to Python 3.12 by @murrayrm in #985
* Fix warning messages in tests; update rlocus/pzmap limits by
@murrayrm in #984
* Allow passing and saving of params in time responses by
@murrayrm in #982
- Drop python-control-pr961-py312.patch
-------------------------------------------------------------------
Sun Feb 4 10:46:16 UTC 2024 - Ben Greiner <code@bnavigator.de>
- Add python-control-pr961-py312.patch for python 312 support
gh#python-control/python-control#961
- Use python-xdist: The tests grew over time and we have 4 flavors
at the moment
-------------------------------------------------------------------
Mon Jan 29 08:42:53 UTC 2024 - Ben Greiner <code@bnavigator.de>
- Use PyQt5 for tests with matplotlib-qt5 (Avoid choice with
unsupported pyside6)
-------------------------------------------------------------------
Sun Jun 11 15:06:25 UTC 2023 - Ben Greiner <code@bnavigator.de>
- Update to 0.9.4
* Sisotool: Fix Matplotlib deprecation of axis share handling by
@bnavigator in #834
* Fix Interconnect name clobbering by @henklaak in #857
* Solve #862 and #864: bode_plot phase wrapping incorrect for
multiple systems by @henklaak in #863
* Fix root_locus() handling of ax parameter by @henklaak in #871
* Small fixes based on Caltech CDS 112 course by @murrayrm in
#849
* Feature print zpk by @henklaak in #869
* Feature enable doctest by @henklaak in #868
* Optimization-based and moving horizon estimation by @murrayrm
in #877
* new examples for Simulink-like interconnection of digital and
nonlinear systems by @sawyerbfuller in #882
* fix blank bode plot in rootlocus_pid_designer by @sawyerbfuller
in #883
* bandwidth feature by @SCLiao47 in #889
* update nyquist_plot for DT transfer functions with poles at 0
and 1 by @sawyerbfuller in #885
* Add missing labels when returning TimeResponseData by
@joaoantoniocardoso in #892
* fix damp command natural frequency printout for discrete poles
on real axis by @sawyerbfuller in #894
* Add H2 and Hinf synthesis examples by @jrforbes in #895
* warn if prewarp-frequency is not used by @sawyerbfuller in #900
* make _convert_to_statespace properly pass signal and system
names by @sawyerbfuller in #884
* Change name of converted LinearIOSystems by @murrayrm in #903
* add/cleanup documentation on simulation functions by @murrayrm
in #905
* fix up some warning messages due to converted systems by
@murrayrm in #907
* fix bdschur (see issue #911) by @murrayrm in #912
-------------------------------------------------------------------
Thu Jan 26 09:40:27 UTC 2023 - Ben Greiner <code@bnavigator.de>
- Avoid i586 segfaults with Qt5/Matplotlib:
* Remove i586 malloc workarounds for memory allocation
* Don't test balanced model reduction on 32-bit
-------------------------------------------------------------------
Sat Dec 31 19:48:37 UTC 2022 - Ben Greiner <code@bnavigator.de>
- Update to 0.9.3.post2
* Improvements in optimal and flatsys modules, updated passivity
module, gain scheduling support, bug fixes
* Handle t_eval for static systems in input_output_response by
@murrayrm in #743
* add GitHub URL for PyPi by @andriyor in #708
* Remove Deprecated API calls to Pytest, SciPy <1.3, Python 2 by
@bnavigator in #745
* Add passivity module, ispassive function, and passivity_test.
Introduces optional dependency cvxopt. by @Mark-Yeatman in #739
* Slycot source uses setuptools_scm now by @bnavigator in #751
* Passivity indices and support for discrete time systems. by
@Mark-Yeatman in #750
* Switch CI to mambaforge and conda-forge channel by @bnavigator
in #757
* Fix timebase bug in InterconnectedSystem (issue #754) by
@murrayrm in #755
* fix issue with slycot balred change in state by @bnavigator in
#762
* Build system and test suite update by @bnavigator in #759
* fix control.matlab.lsim bug for discrete time system by
@murrayrm in #765
* Add B-splines and solve_flat_ocp to flatsys by @murrayrm in
#763
* CI: switch slycot and cvxopt installation order by @murrayrm in
#769
* Fixed a couple of typos in documentation by @fredrhen in #775
* Allow new matplotlib 3.6 error message in kwargs tests by
@bnavigator in #777
* Move sys._update_params(params) before TimeResponseData return
when nstate == 0 by @hyumo in #774
* Update MANIFEST.in by @bnavigator in #779
* Improve compatibility of state space representation using LaTeX
by @gonmolina in #780
* Fix interconnect type conversion bug for StateSpace systems by
@murrayrm in #788
* fix _isstatic() to use nstates==0 by @murrayrm in #790
* fix error when an IOSystem is combined with a TransferFunction
system by @sawyerbfuller in #793
* check for and fix mutable keyword defaults by @murrayrm in #794
* Fixes for bugs found by pylint by @roryyorke in #795
* Support Python 3.11 and drop Python 3.7 by @bnavigator in #796
* Fix find_eqpt when y0 is None by @adswid in #798
* Preserve signal names upon conversion to discrete-time by
@sawyerbfuller in #797
* Update benchmarks to help with optimal control tuning by
@murrayrm in #800
* Update optimal.rst by @htadashi in #802
* Add collocation method for optimal control problems by
@murrayrm in #799
* Update README.rst by @sawyerbfuller in #810
* Update docstring for impulse for discrete sys by @sawyerbfuller
in #812
* Enable scalar division of state-space objects by @roryyorke in
#811
* fix gain handling in rlocus and sisotool by @sawyerbfuller in
#809
* Removed epsilon perturbation value in solve_passivity_LMI. Fix
associated unit test. by @Mark-Yeatman in #814
* docstring improvements by @sawyerbfuller in #804
* add zpk() function by @murrayrm in #816
* Fix readthedocs to use pip-based install by @murrayrm in #817
* Relax comparison of floats in tests by @bnavigator in #818
* Add test matrix against operating environments by @murrayrm in
#821
* Update find_eqpts to handle discrete time systems by @murrayrm
in #824
* Small fixes and tweaks by @murrayrm in #826
* update docs to use use numpydoc + linkcode by @murrayrm in #828
* Add gain scheduling to create_statefbk_iosystem() by @murrayrm
in #827
* continuous time system support for create_estimator_iosystem by
@murrayrm in #829
* Small docstring fixes for release by @murrayrm in #832
- Drop control-pr777-mpl36.patch, upstreamed
-------------------------------------------------------------------
Fri Dec 23 20:09:25 UTC 2022 - Ben Greiner <code@bnavigator.de>
- Add control-pr777-mpl36.patch
gh#python-control/python-control#777
-------------------------------------------------------------------
Sun May 29 10:07:56 UTC 2022 - Ben Greiner <code@bnavigator.de>
- Update to 0.9.2
* Improvements in I/O systems, stochastic systems,
optimization-based control, Nyquist plots
* Round to nearest integer decade for default omega vector by
@bnavigator in #688
* Fix in documentation of ss2tf by @miroslavfikar in #695
* Interpret str-type args to interconnect as non-sequence by
@roryyorke in #698
* Fixes to various optimization-based control functions by
@murrayrm in #709
* I/O system enhancements by @murrayrm in #710
* Optimal control enhancements by @murrayrm in #712
* Keyword argument checking by @murrayrm in #713
* Stochastic systems additions by @murrayrm in #714
* Updated system class functionality by @murrayrm in #721
* Bug fix and improvements to Nyquist plots by @murrayrm in #722
* Add linform to compute linear system L-infinity norm by
@roryyorke in #729
* Improvements to Nichols chart plotting by @roryyorke in #723
* Add envs to gitignore by @s35t in #731
* Fix README.rst for twine by @murrayrm in #738
- Drop 688.patch fixed upstream
-------------------------------------------------------------------
Sat Feb 12 18:42:24 UTC 2022 - Ben Greiner <code@bnavigator.de>
- skip segfaulting test on i586
-------------------------------------------------------------------
Thu Feb 10 10:27:34 UTC 2022 - Guillaume GARDET <guillaume.gardet@opensuse.org>
- Backport patch to fix build on aarch64:
* 688.patch
-------------------------------------------------------------------
Fri Dec 31 19:31:35 UTC 2021 - Ben Greiner <code@bnavigator.de>
- Require Python >= 3.7: Disable Leap backport build. It keeps
failing due to unresolvable PyVirtualDisplay. We officially do
not support Python 3.6 in upstream anymore.
-------------------------------------------------------------------
Fri Dec 31 18:27:11 UTC 2021 - Ben Greiner <code@bnavigator.de>
- Update to version 0.9.1
* Version 0.9.1 is a minor release that includes new
functionality for discrete time systems (dlqr, dlqe, drss),
flat systems (optimization and constraints), a new time
response data class, and many individual improvements and bug
fixes.
**New features:**
* Add optimization to flat systems trajectory generation (#569 by
murrayrm)
* Return a discrete time system with drss() (#589 by bnavigator)
* A first implementation of the singular value plot (#593 by
forgi86)
* Include InfValue into settling min/max calculation for
step_info (#600 by bnavigator)
* New time response data class (#649 by murrayrm)
* Check for unused subsystem signals in InterconnectedSystem
(#652 by roryyorke)
* New PID design function built on sisotool (#662 by
sawyerbfuller)
* Modify discrete-time contour for Nyquist plots to indent around
poles (#668 by sawyerbfuller)
* Additional I/O system type conversions (#672 by murrayrm)
* Remove Python 2.7 support and leverage @ operator (#679 by
bnavigator)
* Discrete time LQR and LQE (#670 by sawyerbfuller, murrayrm)
**Improvements, bug fixes:**
* Change step_info undershoot percentage calculation (#590 by
juanodecc)
* IPython LaTeX output only generated for small systems (#607 by
roryyorke)
* Fix warnings generated by sisotool (#608 by roryyorke)
* Discrete time LaTeX repr of StateSpace systems (#609 by
bnavigator)
* Updated rlocus.py to remove warning by sisotool() with
rlocus_grid=True (#616 by nirjhar-das)
* Refine automatic contour determination in Nyquist plot (#620 by
bnavigator)
* Fix damp method for discrete time systems with a negative
real-valued pole (#647 by vincentchoqueuse)
* Plot Nyquist frequency correctly in Bode plot in Hz (#651 by
murrayrm)
* Return frequency response for 0 and 1-state systems directly
(#663 by bnavigator)
* Fixed prewarp not working in c2d and sample_system, margin
docstring improvements (#669 by sawyerbfuller)
* Improved lqe calling functionality (#673 by murrayrm)
* Vectorize FRD feedback function (#680 by bnavigator)
* BUG: extrapolation in ufun throwing errors (#682 by
miroslavfikar)
* Allow use of SciPy for LQR, LQE (#683 by murrayrm)
* Improve forced_response and its documentation (#588 by
bnavigator)
* Add documentation about use of axis('equal') in pzmap, rlocus
(#685 by murrayrm)
**Additional changes:**
* Replace Travis badge with GHA workflows, add PyPI and conda
badges (#584 by bnavigator)
* Don't install toplevel benchmarks package (#585 by bnavigator)
* LTI squeeze: ndarray.ndim == 0 is also a scalar (#595 by
bnavigator)
* xfail testmarkovResults until #588 is merged (#601 by
bnavigator)
* Remove from readme.rst that you need a fortran compiler (#602
by sawyerbfuller)
* Remove statement that slycot only on linux (#603 by
sawyerbfuller)
* Allow float precision in result assertions (#615 by bnavigator)
* Improved unit test coverage for root_locus: dtime and sisotool
(#617 by bnavigator)
* Add DefaultDict for deprecation handling (#619 by bnavigator)
* Documentation updates (#633 by murrayrm)
* Various docstring edits + fixed plot legends on cruise control
example (#643 by billtubbs)
* Ease test tolerance on timeseries (#659 by bnavigator)
* Use conda-forge for numpy (CI fix) (#667 by bnavigator)
* Fix doc escape (#674 by bnavigator)
* Remove duplicate Slycot error handling, require Slycot >=0.4
(#678 by bnavigator)
-------------------------------------------------------------------
Sun Mar 21 10:13:42 UTC 2021 - Ben Greiner <code@bnavigator.de>
- Update to version 0.9.0
* Version 0.9.0 of the Python Control Toolbox
(python-control) contains a number of enhanced features
and changes to functions. Some of these changes may
require modifications to existing user code and, in
addition, some default settings have changed that may
affect the appearance of plots or operation of certain
functions.
* Significant new additions including improvements in the
I/O systems modules that allow automatic interconnection
of signals having the same name (via the interconnect
function), generation and plotting of describing functions
for closed loop systems with static nonlinearities, and a
new optimal control module that allows basic computation
of optimal controls (including model predictive
controllers). Some of the changes that may break use code
include the deprecation of the NumPy matrix type (2D NumPy
arrays are used instead), changes in the return value for
Nyquist plots (now returns number of encirclements rather
than the frequency response), switching the default
timebase of systems to be 0 rather than None (no
timebase), and changes in the processing of return values
for time and frequency responses (to make them more
consistent). In many cases, the earlier behavior can be
restored by calling use_legacy_defaults('0.8.4').
New Features:
* Optimal control module, including rudimentary MPC
control (#549 by murrayrm)
* Describing functions plots (#521 by murrayrm)
* MIMO impulse and step response (#514 by murrayrm)
* I/O system improvements:
* linearize() retains signal names plus new interconnect()
function (#497 by murrayrm)
* Add summing junction + implicit signal interconnection (#517
by murrayrm)
* Implementation of initial_phase, wrap_phase keywords for
bode_plot (#494 by murrayrm)
* Added IPython LaTeX representation method for StateSpace
objects (#450 by roryyorke)
* New dynamics() and output() methods in StateSpace (#566 by
sawyerbfuller)
* FRD systems can now be created from a discrete time LTI system
(#568 by bnavigator)
* Cost and constraints are now allowed for
flatsys.point_to_point() (#569 by murrayrm)
------------------------------------------------------------------
Thu Jan 21 23:09:04 UTC 2021 - Benjamin Greiner <code@bnavigator.de>
- Skip python36 because of scipy 1.6.0
-------------------------------------------------------------------
Mon Dec 28 20:31:00 UTC 2020 - Benjamin Greiner <code@bnavigator.de>
- Update to version 0.8.4
* Improved default time vector for time response
functions (bnavigator, sawyerbfuller)
* New use_legacy_defaults function to allow compatibility
with previous versions (sawyerbfuller)
* Allow creation of non-proper transfer functions
(bnavigator, rlegnain)
* Added ability to set arrow head length and width option
in nyquist_plot (geekonloose)
* Added ability to 'prewarp' the conversion of continuous to
discrete-time systems (sawyerbfuller)
* Added rlocus capability for discrete-time systems
(sawyerbfuller)
* Updated pzmap grid to be compatible with matplotlib updates
(bnavigator)
* Implement loadable string representation (repr) for tf, ss,
and frd (repagh)
* Fixed margin computation for discrete time systems
(bnavigator)
* Fixed indexing bug in bdalg.connect (sawyerbfuller)
* Fixed InterconnectedSystem naming bugs, improved
conventions (samlaf)
* Fixed LinearIOSystem output bug in output function
(francescoseccamonte)
* Fixed bug in forced_response that overrode squeeze
parameter (bnavigator)
* Use rad/sec for Bode plot in MATLAB bode (was erroneously
defaulting to Hertz) (paulvicioso)
* Removed deprecated scipy calls and updated to latest numpy
(bnavigator)
* Multiple documentation updates (bnavigator, laurensvalk)
* New and improved examples for sisotool, pvtol (repagh, samlaf)
* The rlocus function no longer automatically creates a new
figure
* Updated unit tests + switch to pytest (bnavigator,
sawyerbfuller)
* Return type for eigenvalues in lqe changed to 1D array
(matches lqr)
* Small fixes + documentation updates to markov
- Remove forbidden arch macros in noarch package
- Drop patches merged upstream
* pr365-copy-PR-320-for-robust_array_test.patch
* pr366-ease-precision-tolerance.patch
* pr380-fix-pytest-discovery.patch
* pr430-numpy119delete.patch
-------------------------------------------------------------------
Sun Oct 11 18:39:38 UTC 2020 - Benjamin Greiner <code@bnavigator.de>
- Skip a test family on Leap because of segfaults in numpy
-------------------------------------------------------------------
Thu Jul 23 09:56:18 UTC 2020 - Benjamin Greiner <code@bnavigator.de>
- moved Pillow requirement to matplotlib package
-------------------------------------------------------------------
Mon Jul 20 17:48:34 UTC 2020 - Benjamin Greiner <code@bnavigator.de>
- explicitely require Pillow for tests because of matplotlib
-------------------------------------------------------------------
Thu Jul 9 18:56:06 UTC 2020 - Benjamin Greiner <code@bnavigator.de>
- add pr430-numpy119delete.patch to fix test failures with new numpy
-------------------------------------------------------------------
Tue Jun 30 12:21:40 UTC 2020 - Benjamin Greiner <code@bnavigator.de>
- remove ppc workaround
- remove _service file
-------------------------------------------------------------------
Fri Jun 26 15:29:50 UTC 2020 - Benjamin Greiner <code@bnavigator.de>
- move to pytest, ignore deprecation warnings for scipy functions
and matrix type during tests gh#python-control/python-control#423
- fix invalid test discovery by pr380-fix-pytest-discovery.patch
gh#python-control/python-control#380
- skip mixsyn test on PowerPC boo#1172555
-------------------------------------------------------------------
Sat Jan 18 01:18:39 UTC 2020 - Benjamin Greiner <code@bnavigator.de>
- 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
-------------------------------------------------------------------
Wed Nov 27 18:13:20 UTC 2019 - Benjamin Greiner <code@bnavigator.de>
- python-control-pr345.patch: PR#345 to fix fails on some
architectures because of machine precision
-------------------------------------------------------------------
Mon Nov 4 13:25:48 UTC 2019 - Benjamin Greiner <code@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 <code@bnavigator.de>
- remove python-devel from BuildRequires
-------------------------------------------------------------------
Tue Jun 25 15:41:59 UTC 2019 - Benjamin Greiner <code@bnavigator.de>
- add slycot to BuildRequires for tests
-------------------------------------------------------------------
Wed Jun 19 12:48:24 UTC 2019 - Benjamin Greiner <code@bnavigator.de>
- switch to xvfb-run
-------------------------------------------------------------------
Wed Jun 19 11:05:31 UTC 2019 - Benjamin Greiner <code@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 <code@bnavigator.de>
update to version 0.8.2
-

92
python-control.spec Normal file
View File

@@ -0,0 +1,92 @@
#
# spec file for package python-control
#
# Copyright (c) 2024 SUSE LLC
#
# 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/
#
%{?sle15_python_module_pythons}
Name: python-control
Version: 0.10.0
Release: 0
Summary: Python control systems library
License: BSD-3-Clause
URL: https://python-control.org
Source: https://files.pythonhosted.org/packages/source/c/control/control-%{version}.tar.gz
Source1: %{name}-rpmlintrc
# PATCH-FIX-UPSTREAM control-pr994-numpy2.patch gh#python-control/python-control#994
Patch1: control-pr994-numpy2.patch
BuildRequires: %{python_module base >= 3.8}
BuildRequires: %{python_module pip}
BuildRequires: %{python_module setuptools_scm}
BuildRequires: %{python_module setuptools}
BuildRequires: %{python_module wheel}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
Requires: python-matplotlib
Requires: python-numpy
Requires: python-scipy >= 1.3
Recommends: python-slycot
BuildArch: noarch
# SECTION test requirements
BuildRequires: %{python_module matplotlib-qt}
BuildRequires: %{python_module matplotlib}
BuildRequires: %{python_module numpy}
BuildRequires: %{python_module pytest-timeout}
BuildRequires: %{python_module pytest-xdist}
BuildRequires: %{python_module pytest-xvfb}
BuildRequires: %{python_module pytest}
BuildRequires: %{python_module qt5}
BuildRequires: %{python_module scipy >= 1.3}
BuildRequires: %{python_module slycot}
# /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
%autosetup -p1 -n control-%{version}
# remove shebang from testfiles which could be theoretically run standalone, but we don't do this
sed -i '1{\@^#!/usr/bin/env@ d}' control/tests/*.py
%build
%pyproject_wheel
%install
%pyproject_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 the tests with the Qt5 backend
export MPLBACKEND="Qt5Agg"
# precision issues
donttest="test_lti_nlsys_response"
# flaky precision issues
donttest="$donttest or test_response_plot_kwargs"
# gh#python-control/python-control#838
[ "${RPM_ARCH}" != "x86_64" ] && donttest="$donttest or (test_optimal_doc and shooting-3-u0-None)"
# causes i586 segfaults in matplotlib after successful balanced model reduction tests
[ $(getconf LONG_BIT) -eq 32 ] && donttest="$donttest or testBalredMatchDC"
%pytest -n auto -k "not (${donttest})"
%files %{python_files}
%doc ChangeLog README.rst
%license LICENSE
%{python_sitelib}/control
%{python_sitelib}/control-%{version}.dist-info
%changelog