Releases: python-control/Slycot
v0.6.0
Almost a year has passed since the last version. We feel that it is time to forge the changes accumulated during the past months into a new release.
Slycot 0.6.0 supports Python 3.10 through 3.12
New and updated wrappers
- Bugfix ab13bd by @KybernetikJo in #200
- Add ab04md by @KybernetikJo in #201
- Add sb10yd by @KybernetikJo in #203
- Implement MB02ED by @saasaa in #214
Maintenance and upkeep improvements
- Refactor init.py by @KybernetikJo in #205
- Check if likely-to-be-used Numpy include directory is from virtual env by @roryyorke in #197
- Replace unittest calls with pytest by @bnavigator in #207
- Remove use_scm_version by @bnavigator in #216
- Use conda-build for build matrix and pin like conda-forge by @bnavigator in #221
- Change analysis.py to numpydoc style by @KybernetikJo in #206
- Change synthesis.py to numpydoc style by @KybernetikJo in #212
- Change math.py to numpydoc style by @KybernetikJo in #211
- Change transform.py to numpydoc style by @KybernetikJo in #213
- Enable Python 3.12, drop Python <3.9 by @bnavigator in #227
- Clean CMake install python files directives by @bnavigator in #229
- Cover docstring parser standard :info = -i: cases by @bnavigator in #226
- Update to SLICOT v5.9 by @bnavigator in #231
- Update conda index command by @bnavigator in #234
New Contributors
- @KybernetikJo made their first contribution in #205
- @saasaa made their first contribution in #214
Full Changelog: v0.5.4...v0.6.0
v0.5.4
This release updates the build system to be compatible with scikit-build 0.17. We also updated the SLICOT Fortran sources to 5.8 Update 1.
Relevant changes from the SLICOT 5.8 Update 1 release notes
MB03VY:
Set A( ILO, ILO, J )
to 1 if IHI = ILO
in the loop labelled 20.
What's Changed
- update workflow to pass jobname to python-control pytest by @murrayrm in #190
- Add lower numpy bound by @bnavigator in #192
- Don't include package data by @bnavigator in #194
- Update SLICOT to 5.8 Update 1 by @bnavigator in #195
Full Changelog: v0.5.3...v0.5.4
v0.5.3
Highlights and important notes
This patch release updates the build system to be compatible with NumPy 1.24.0
Pull requests and issues associated with the release
- Bump setuptools_scm to 7 by @bnavigator in #185
- pin numpy to <1.24 during build due to gh-187 by @bnavigator in #188
- remove -m argument from f2py .pyf generation by @bnavigator in #189
- this reverts #188 and ensures compatibility with numpy >= 1.24
PRs merged: #185 #188 #189
Issues fixed: #187
Full Changelog: v0.5.2...v0.5.3
v0.5.2: Drop Support for Python 3.7
Highlights and important notes
This patch release removes the classifier metadata for Python 3.7. With the Slycot v0.5.1 release earlier today, conda-forge did not create packages for py37. We do not want to mislead users into thinking that you can install it with conda.
Slycot currently officially supports installation on Python 3.8 through 3.11.
Pull requests and issues associated with the release
PRs merged: #184
Issues fixed: None
Issues closed ("wont-fix"): None
Full Changelog: v0.5.1...v0.5.2
v0.5.1: Changes in the build system
Highlights and important notes
This release is a minor change in the build system. There are no new wrappers or code changes of existing SLICOT wrappers.
Build
- Use FindPython instead of deprecated FindPythonLibs by @bnavigator in #181
- Use setuptools_scm instead of custom version determination code by @bnavigator in #180
Other changes
- Support Python 3.11 by @bnavigator in #182
Pull requests and issues associated with the release
Full Changelog: v0.5.0...v0.5.1
v0.5.0
Highlights and important notes
We've switched our Fortran SLICOT base from the older, GPL-licensed version 5.0 to the now BSD-licensed version of SLICOT hosted on Github. This specific version of Slycot is based on SLICOT v5.8.
Slycot itself remains GPL-licensed for the time being.
The minimum supported Python version is 3.7; support for Python 2, 3.5, and 3.6 has been dropped. We have tested this release against Python versions 3.7 to 3.10.
Slycot does not build against Numpy v1.23.0 due to numpy/numpy#21889; however, this is a build-time only bug which was fixed in NumPy v1.23.1, and Slycot v0.5.0 can be installed and used with any NumPy which supports the supported Python versions.
New features and updates
We've added a wrapper for SLICOT AB13MD (#171), which computes the upper bound for the structured singular value of a system and given uncertainty structure.
SB03OD used to raise an error if the Schur factor supplied in array A was unstable; now, a warning is raised, and the eigenvalues are still returned (via #176, which updates to SLICOT v5.8).
Fixes
MB03RD correctly handles X=None, the default (#139).
In SB03MD, the LDWORK value computed for discrete-time case was corrected (#166).
Build
There have been improvements and fixes to the setup.py, CMakeLists.txt, and MANIFEST.in.
Testing
AG08BD testing was made more numerically robust.
A test for XERBLA behaviour was fixed.
In continuous integration:
-
we've moved from Travis CI to Github Action for continuous
integration (Github Actions added in #140, Travis CI removed in #150) -
we use pip for building, instead of invoking setup.py directly
Pull requests and issues associated with the release
PRs merged: #135, #136, #139, #140, #141, #142, #145, #147, #149, #150, #151, #152, #158, #159, #160, #161, #166, #167, #171, #173, #174, #175, #176, #178
Issues fixed: #134, #138, #95, #108, #137, #144, #146, #154, #123, #156, #157, #162, #155, #165, #46, #163, #172
Issues closed ("wont-fix"): none
Contributors
Contributors to this release are:
- Art J. R. Pelling (@artpelling)
- Ben Greiner (@bnavigator)
- Rory Yorke (@roryyorke)
v0.4.0: 6 new SLICOT wrappers, many fixes, and much clean-up
New features
Added periodic Schur decomposition functions mb03vd
, mb03vy
, and mb03wd
Contributed by @bnavigator via pull request #88.
Added ab08nz
, allowing one to find zeros of complex-valued state-space models
Contributed by @lytex and @bnavigator via pull request #96.
Added mb03rd
, Schur to block-diagonal transform
Contributed by @bnavigator and @repagh via pull request #116.
Added sb01fd
H-infinity solver
Contributed by @repagh via #118. Already present sb10ad
searches for a minimum gamma value for a given H-infinity problem; sb10fd, by contrast, only attempts to solve for a given gamma value. This can be used to test for admissible gamma values, which could be useful for problems like python-control/python-control#367.
New Slycot exception hierarchy
@bnavigator, with support from @repagh, greatly improved Slycot error handling.
Slycot routines now raise SlycotValueError
where they would previously have raised ValueError
, and SlycotArithmeticError
where they would have raised ArithmeticError
.
These changes are backwardly compatible: SlycotValueError
is a subclasss of ValueError
, and SlycotArithmeticError
is a subclass of ArithmeticError
.
As part of this, many of the Slycot function docstrings were changed to conform to numpydoc conventions.
This supersedes an earlier fix for python-control#347 made during 0.4.0 development.
Override XERBLA
In #128, with extra testing in #130, @bnavigator overrode the BLAS error function XERBLA
that SLICOT routines use to report errors; the BLAS-provided XERBLA
can terminate the whole Python process.
Fixes
Correct application of DGEBAL in TB01TD and TB05AD
@repagh fixed long-standing #11 with PR #122.
Fixed ab01nd for jobz='N' case
@bnavigator contributed this fix in #129.
Build
Contributed by @bnavigator, @repagh, and @rabraker:
- conda build recipes no longer use pip
- added conda recipes for MKL and Apple
- removed conda recipes for Windows; no developer is using them, and they weren't working
- general simplifications and improvements of build
- the signature files (
.pyf
files) are now a dependency of wrapper generation
Testing
Contributed by @bnavigator and @lytex:
- Tests added for
mb05nd
,mc01td
,ab08nd
,ab08nz
,mb03vd
,mb03vy
,mb03wd
. - Tests fixed or expanded for
mb05md
,sg03ad
,td04ad
. - Switched to pytest; Slycot CI now uses pytest for both the Slycot and python-control test suites.
- CI now builds and tests for Linux and macOS. The Linux builds include OpenBLAS and MKL variants.
- Examples are run as part of tests. Outputs are not checked, but errors and warnings are.
- CI coveralls.io integration fixed.
- General test clean-up.
- Test files are no longer executable.
Other changes
@bnavigator contributed many other code improvements:
- Fix for
mb05nd
. - Lots of clean-up: removal of unused mathematical.pyf, many docstring fixes, and some PEP 8 conformance changes to Python code.
- Fix for Fortran-compiler dependence on machine value used to represent logical values
.TRUE.
and.FALSE.
@repagh fired up his time machine and ensured punch-card compatibility of the SLICOT Fortran code by limiting line lengths to 72 characters.
Pull requests and issues associated with the release
PRs merged: #71, #72, #75, #78, #91, #93, #79, #82, #83, #84, #87, #88, #96, #97, #101 , #103, #104, #105, #110, #114, #115, #116, #117, #118, #120, #121, #122, #124, #125, #128, #129, #130, #132, #133
Issues fixed: #11, #76, #86, #44, #102, #106, #119, #126
Issues closed ("wont-fix"): #46, #94, #99, #111
v0.3.5: fix PyPI installability
This is a build bug-fix release: v0.3.4 was not installable from pip, but v0.3.5 should be.
Build
Jason K. Moore, Joris Geysens, and Jake Vanderplas all made various fixes to the build, from setup.py the CMake config files.
Pull requests and issues associated with the release
PRs merged: #58, #60, #62, #64, #66, #67
Issues fixed: #59, #61, #63, #65, #68
0.3.4: added ag08bd, sb10jd, tg01ad, and tg01fd; switched to scikit-build.
New features
Support for four SLICOT routines was added by Marcus Liljedahl.
ag08bd Process system pencil to find multivariable zeros
ag08bd takes a system pencil (E,A,B,C,D) and returns a matrix pair (Af, Ef) which can be used to find the finite multivariable ("Smith") zeros. The orders of infinite zeros, right and left Kronecker indices, and multiplicities of infinite eigenvalues are also returned.
sb10jd Convert descriptor to non-descriptor form
sb10jd converts a descriptor state-space system (E,A,B,C,D) to a regular state-space system (Ad, Bd, Cd, Dd).
tg01ad Balance system pencil
tg01ad balances system pencils (E,A,B,C,D), with D=0, such that the rows and columns of the resulting pencil are as close in norm as possible.
tg01fd SVD-like coordinate form of system pencil
tg01fd finds the orthogonal transformation matrices for a system pencil (E,A,B,C,D), with D=0, such that the result is in SVD-like coordinate form.
Build
Rene van Paassen switched the build over to scikit-build, which allows for flang to be used to build SLICOT on Windows, and improves the build output for developers.
Testing
Python 3.7 was added to the Travis CI build set.
The tests no longer use the deprecated np.matrix type.
Added a regression test for #6, for td04ad.
Pull requests and issues associated with the release
PRs merged: #32, #34, #36, #38, #43, #45, #51, #52, #53, #56, #57
Issues fixed: #35, #37, #47, #55
Issues closed ("wont-fix"): #40, #41, #48
REL: Version 0.3.3 with working conda build + TD04AD fixes
This release of the Slycot library contains a working conda build process plus fixes to the TD04AD
function (including fixes issues with edge cases). The README.rst
file has also been updated to reflect the current build process. See PR #26, PR #27 (based on PR #25), and PR #28 for details.
Note: the current Travis CI build process intermittently fails due to issues in python-control
(to be corrected in the next release of that package).