forked from pool/python-control
- 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:
23
.gitattributes
vendored
Normal file
23
.gitattributes
vendored
Normal 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
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.osc
|
||||
3
control-0.10.0.tar.gz
Normal file
3
control-0.10.0.tar.gz
Normal 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
205
control-pr994-numpy2.patch
Normal 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
1
python-control-rpmlintrc
Normal file
@@ -0,0 +1 @@
|
||||
addFilter("explicit-lib-dependency.*matplotlib")
|
||||
531
python-control.changes
Normal file
531
python-control.changes
Normal 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
92
python-control.spec
Normal 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
|
||||
Reference in New Issue
Block a user