Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-slycot for openSUSE:Factory checked in at 2025-11-21 16:56:06 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-slycot (Old) and /work/SRC/openSUSE:Factory/.python-slycot.new.2061 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-slycot" Fri Nov 21 16:56:06 2025 rev:20 rq:1318917 version:0.6.1 Changes: -------- --- /work/SRC/openSUSE:Factory/python-slycot/python-slycot.changes 2024-04-07 22:12:59.485951624 +0200 +++ /work/SRC/openSUSE:Factory/.python-slycot.new.2061/python-slycot.changes 2025-11-21 16:56:57.255057871 +0100 @@ -1,0 +2,7 @@ +Thu Nov 20 17:33:56 UTC 2025 - Ben Greiner <[email protected]> + +- Update to 0.6.1 + * Fixed a segmentation fault in ab09nd (gh-243). + * Updated licensing data format; Slycot had deprecated format. + +------------------------------------------------------------------- Old: ---- slycot-0.6.0.tar.gz New: ---- slycot-0.6.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-slycot.spec ++++++ --- /var/tmp/diff_new_pack.wCoXhe/_old 2025-11-21 16:56:57.931086358 +0100 +++ /var/tmp/diff_new_pack.wCoXhe/_new 2025-11-21 16:56:57.931086358 +0100 @@ -1,7 +1,7 @@ # # spec file for package python-slycot # -# Copyright (c) 2024 SUSE LLC +# Copyright (c) 2025 SUSE LLC and contributors # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,7 +17,7 @@ Name: python-slycot -Version: 0.6.0 +Version: 0.6.1 Release: 0 Summary: A wrapper for the SLICOT control and systems library License: BSD-3-Clause AND GPL-2.0-only ++++++ slycot-0.6.0.tar.gz -> slycot-0.6.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/slycot-0.6.0/.github/conda-env/build-env.yml new/slycot-0.6.1/.github/conda-env/build-env.yml --- old/slycot-0.6.0/.github/conda-env/build-env.yml 2024-03-05 12:26:36.000000000 +0100 +++ new/slycot-0.6.1/.github/conda-env/build-env.yml 1970-01-01 01:00:00.000000000 +0100 @@ -1,4 +0,0 @@ -name: build-env -dependencies: - - boa - - numpy diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/slycot-0.6.0/.github/scripts/run-tests.sh new/slycot-0.6.1/.github/scripts/run-tests.sh --- old/slycot-0.6.0/.github/scripts/run-tests.sh 2024-03-05 12:26:36.000000000 +0100 +++ new/slycot-0.6.1/.github/scripts/run-tests.sh 2025-11-15 13:17:39.000000000 +0100 @@ -16,8 +16,10 @@ # don't care about deprecation warnings here donttest="$donttest or test_default_deprecation" pytest control/tests \ + -m slycot \ --cov=$slycot_libdir \ --cov-config=${slycot_srcdir}/.coveragerc \ + --ignore=control/tests/docstrings_test.py \ -k "not ($donttest)" mv .coverage ${slycot_srcdir}/.coverage.control popd diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/slycot-0.6.0/.github/scripts/set-conda-test-matrix.py new/slycot-0.6.1/.github/scripts/set-conda-test-matrix.py --- old/slycot-0.6.0/.github/scripts/set-conda-test-matrix.py 2023-10-20 21:54:44.000000000 +0200 +++ new/slycot-0.6.1/.github/scripts/set-conda-test-matrix.py 2025-11-15 13:17:39.000000000 +0100 @@ -10,15 +10,13 @@ 'win': 'windows', } -blas_implementations = ['unset', 'Generic', 'OpenBLAS', 'Intel10_64lp'] - -combinations = {'ubuntu': blas_implementations, - 'macos': blas_implementations, +combinations = {'ubuntu': ['unset', 'Generic', 'OpenBLAS', 'Intel10_64lp'], + 'macos': ['unset', 'Generic', 'OpenBLAS'], 'windows': ['unset', 'Intel10_64lp'], } conda_jobs = [] -for conda_pkg_file in Path("slycot-conda-pkgs").glob("*/*.tar.bz2"): +for conda_pkg_file in Path("slycot-conda-pkgs").glob("*/*.conda"): cos = osmap[conda_pkg_file.parent.name.split("-")[0]] m = re.search(r'py(\d)(\d+)_', conda_pkg_file.name) pymajor, pyminor = int(m[1]), int(m[2]) @@ -30,5 +28,8 @@ 'blas_lib': cbl} conda_jobs.append(cjob) +if not conda_jobs: + raise SystemExit("No conda packages found") + matrix = { 'include': conda_jobs } print(json.dumps(matrix)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/slycot-0.6.0/.github/workflows/slycot-build-and-test.yml new/slycot-0.6.1/.github/workflows/slycot-build-and-test.yml --- old/slycot-0.6.0/.github/workflows/slycot-build-and-test.yml 2024-04-05 16:03:05.000000000 +0200 +++ new/slycot-0.6.1/.github/workflows/slycot-build-and-test.yml 2025-11-15 13:17:39.000000000 +0100 @@ -12,6 +12,24 @@ jobs: + ruff-lint: + name: Static lint checks with ruff + runs-on: ubuntu-latest + steps: + - name: Checkout Slycot + uses: actions/checkout@v3 + with: + fetch-depth: 0 + submodules: 'recursive' + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.11' + - name: Run ruff check + run: | + pip install ruff + ruff check slycot + build-sdist: # Super fast sniff build. If this fails, don't start the other jobs name: Build sdist on Ubuntu @@ -106,14 +124,14 @@ unset | Generic | Apple ) ;; # Found in system OpenBLAS ) brew install openblas - echo "BLAS_ROOT=/usr/local/opt/openblas/" >> $GITHUB_ENV - echo "LAPACK_ROOT=/usr/local/opt/openblas/" >> $GITHUB_ENV + echo "LDFLAGS=-L/opt/homebrew/opt/openblas/lib" >> $GITHUB_ENV + echo "CPPFLAGS=-I/opt/homebrew/opt/openblas/include" >> $GITHUB_ENV ;; *) echo "bla_vendor option ${{ matrix.bla_vendor }} not supported" exit 1 ;; esac - echo "FC=gfortran-11" >> $GITHUB_ENV + echo "FC=gfortran-14" >> $GITHUB_ENV - name: Build wheel env: BLA_VENDOR: ${{ matrix.bla_vendor }} @@ -126,13 +144,14 @@ mkdir -p ${wheeldir} cp ./slycot*.whl ${wheeldir}/ - name: Save wheel - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: - name: slycot-wheels + name: slycot-wheels-${{ matrix.os }}-${{ matrix.python }}-${{ matrix.bla_vendor }} path: slycot-wheels + retention-days: 5 build-conda: - name: Build conda, ${{ matrix.os }} + name: Build conda, ${{ matrix.os }} ${{ matrix.python }} runs-on: ${{ matrix.os }}-latest needs: build-sdist strategy: @@ -143,8 +162,7 @@ - 'macos' - 'windows' python: - # this is not the packaged version, just the version conda-build runs on. - - '3.11' + - '3.13' steps: - name: Checkout Slycot @@ -153,33 +171,34 @@ fetch-depth: 0 submodules: 'recursive' - name: Setup Conda - uses: conda-incubator/setup-miniconda@v2 + uses: conda-incubator/setup-miniconda@v3 with: + auto-update-conda: true python-version: ${{ matrix.python }} activate-environment: build-env - environment-file: .github/conda-env/build-env.yml miniforge-version: latest - miniforge-variant: Mambaforge + conda-build-version: 25.7.0 channel-priority: strict - auto-update-conda: false - auto-activate-base: false - name: Conda build - shell: bash -l {0} + shell: bash -el {0} run: | set -e - conda mambabuild conda-recipe + conda build conda-recipe --python ${{ matrix.python }} # preserve directory structure for custom conda channel - find "${CONDA_PREFIX}/conda-bld" -maxdepth 2 -name 'slycot*.tar.bz2' | while read -r conda_pkg; do + CONDA_ROOT=$(conda info --base) + find "${CONDA_ROOT}/conda-bld" -maxdepth 2 -name 'slycot*.conda' | while read -r conda_pkg; do conda_platform=$(basename $(dirname "${conda_pkg}")) mkdir -p "slycot-conda-pkgs/${conda_platform}" cp "${conda_pkg}" "slycot-conda-pkgs/${conda_platform}/" done - python -m conda_index ./slycot-conda-pkgs + conda index ./slycot-conda-pkgs - name: Save to local conda pkg channel - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: - name: slycot-conda-pkgs + name: slycot-conda-pkgs-${{ matrix.os }}-${{ matrix.python }} path: slycot-conda-pkgs + retention-days: 5 + create-wheel-test-matrix: name: Create wheel test matrix @@ -189,15 +208,23 @@ outputs: matrix: ${{ steps.set-matrix.outputs.matrix }} steps: + - name: Merge artifacts + uses: actions/upload-artifact/merge@v4 + with: + name: slycot-wheels + pattern: slycot-wheels-* - name: Checkout Slycot uses: actions/checkout@v3 - name: Download wheels (if any) - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: slycot-wheels path: slycot-wheels - id: set-matrix - run: echo "matrix=$(python3 .github/scripts/set-pip-test-matrix.py)" >> $GITHUB_OUTPUT + run: | + TEMPFILE="$(mktemp)" + python3 .github/scripts/set-pip-test-matrix.py | tee $TEMPFILE + echo "matrix=$(cat $TEMPFILE)" >> $GITHUB_OUTPUT create-conda-test-matrix: name: Create conda test matrix @@ -207,15 +234,23 @@ outputs: matrix: ${{ steps.set-matrix.outputs.matrix }} steps: + - name: Merge artifacts + uses: actions/upload-artifact/merge@v4 + with: + name: slycot-conda-pkgs + pattern: slycot-conda-pkgs-* - name: Checkout Slycot uses: actions/checkout@v3 - name: Download conda packages - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: slycot-conda-pkgs path: slycot-conda-pkgs - id: set-matrix - run: echo "matrix=$(python3 .github/scripts/set-conda-test-matrix.py)" >> $GITHUB_OUTPUT + run: | + TEMPFILE="$(mktemp)" + python3 .github/scripts/set-conda-test-matrix.py | tee $TEMPFILE + echo "matrix=$(cat $TEMPFILE)" >> $GITHUB_OUTPUT test-wheel: @@ -249,7 +284,7 @@ sudo apt-get -y update case ${{ matrix.blas_lib }} in Generic ) sudo apt-get -y install libblas3 liblapack3 ;; - unset | OpenBLAS ) sudo apt-get -y install libopenblas-base ;; + unset | OpenBLAS ) sudo apt-get -y install libopenblas0 ;; *) echo "BLAS ${{ matrix.blas_lib }} not supported for wheels on Ubuntu" exit 1 ;; @@ -272,7 +307,7 @@ exit 1 ;; esac - name: Download wheels - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: slycot-wheels path: slycot-wheels @@ -305,7 +340,7 @@ defaults: run: - shell: bash -l {0} + shell: bash -el {0} steps: - name: Checkout Slycot @@ -321,17 +356,17 @@ if: matrix.os == 'macos' run: brew install coreutils - name: Setup Conda - uses: conda-incubator/setup-miniconda@v2 + uses: conda-incubator/setup-miniconda@v3 with: python-version: ${{ matrix.python }} miniforge-version: latest - miniforge-variant: Mambaforge activate-environment: test-env environment-file: slycot-src/.github/conda-env/test-env.yml + channels: conda-forge,defaults channel-priority: strict auto-activate-base: false - name: Download conda packages - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: slycot-conda-pkgs path: slycot-conda-pkgs @@ -340,25 +375,25 @@ set -e case ${{ matrix.blas_lib }} in unset ) # the conda-forge default (os dependent) - mamba install libblas libcblas liblapack + conda install libblas libcblas liblapack ;; Generic ) - mamba install 'libblas=*=*netlib' 'libcblas=*=*netlib' 'liblapack=*=*netlib' + conda install 'libblas=*=*netlib' 'libcblas=*=*netlib' 'liblapack=*=*netlib' echo "libblas * *netlib" >> $CONDA_PREFIX/conda-meta/pinned ;; OpenBLAS ) - mamba install 'libblas=*=*openblas' openblas + conda install 'libblas=*=*openblas' openblas echo "libblas * *openblas" >> $CONDA_PREFIX/conda-meta/pinned ;; Intel10_64lp ) - mamba install 'libblas=*=*mkl' mkl + conda install 'libblas=*=*mkl' mkl echo "libblas * *mkl" >> $CONDA_PREFIX/conda-meta/pinned ;; esac - mamba install -c ./slycot-conda-pkgs slycot + conda install -c ./slycot-conda-pkgs slycot conda list - name: Slycot and python-control tests - run: JOBNAME="$JOBNAME" bash slycot-src/.github/scripts/run-tests.sh + run: JOBNAME="$JOBNAME" bash -el slycot-src/.github/scripts/run-tests.sh env: JOBNAME: conda ${{ matrix.packagekey }} ${{ matrix.blas_lib }} - name: report coverage @@ -368,6 +403,7 @@ parallel: true file: slycot-src/coverage.xml + coveralls-final: name: Finalize parallel coveralls if: always() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/slycot-0.6.0/PKG-INFO new/slycot-0.6.1/PKG-INFO --- old/slycot-0.6.0/PKG-INFO 2024-04-05 16:03:25.813995100 +0200 +++ new/slycot-0.6.1/PKG-INFO 2025-11-16 06:46:15.501143000 +0100 @@ -1,17 +1,14 @@ -Metadata-Version: 2.1 +Metadata-Version: 2.4 Name: slycot -Version: 0.6.0 +Version: 0.6.1 Summary: A wrapper for the SLICOT control and systems library Author: Enrico Avventi et al. Maintainer-email: Slycot developers <[email protected]> -License: GPL-2.0 AND BSD-3-Clause +License-Expression: GPL-2.0 AND BSD-3-Clause Project-URL: homepage, https://github.com/python-control/Slycot Classifier: Development Status :: 4 - Beta Classifier: Intended Audience :: Science/Research Classifier: Intended Audience :: Developers -Classifier: License :: OSI Approved -Classifier: License :: OSI Approved :: GNU General Public License v2 (GPLv2) -Classifier: License :: OSI Approved :: BSD License Classifier: Programming Language :: C Classifier: Programming Language :: Fortran Classifier: Programming Language :: Python @@ -29,6 +26,7 @@ License-File: COPYING License-File: AUTHORS Requires-Dist: numpy>=1.23.1 +Dynamic: license-file Slycot ====== diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/slycot-0.6.0/conda-recipe/bld.bat new/slycot-0.6.1/conda-recipe/bld.bat --- old/slycot-0.6.0/conda-recipe/bld.bat 2024-01-07 17:15:54.000000000 +0100 +++ new/slycot-0.6.1/conda-recipe/bld.bat 2025-11-15 13:17:39.000000000 +0100 @@ -1,5 +1,3 @@ -:: correct FC, apparently pointed to host prefix?? -set FC=%BUILD_PREFIX%\Library\bin\flang.exe set BLAS_ROOT=%PREFIX% set LAPACK_ROOT=%PREFIX% diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/slycot-0.6.0/conda-recipe/conda_build_config.yaml new/slycot-0.6.1/conda-recipe/conda_build_config.yaml --- old/slycot-0.6.0/conda-recipe/conda_build_config.yaml 2024-03-05 12:26:36.000000000 +0100 +++ new/slycot-0.6.1/conda-recipe/conda_build_config.yaml 2025-11-15 13:17:39.000000000 +0100 @@ -1,46 +1,47 @@ -# https://github.com/conda-forge/blas-feedstock/issues/106#issuecomment-1771747983 -# https://github.com/conda-forge/conda-forge-pinning-feedstock/blob/main/recipe/conda_build_config.yaml -# https://github.com/conda-forge/conda-forge-pinning-feedstock/blob/main/recipe/migrations/python312.yaml - -# zip_keys Python/Numpy matrix to build for -python: - - 3.10.* *_cpython - - 3.12.* *_cpython -numpy: - - 1.23 - - 1.26 - -zip_keys: - - - - python - - numpy - -# Compiler selection +MACOSX_DEPLOYMENT_TARGET: +- '11.0' # [osx] +MACOSX_SDK_VERSION: +- '11.0' # [osx] c_compiler: - - gcc # [linux] - - clang # [osx] - - vs2019 # [win and x86_64] - - vs2022 # [win and arm64] -c_compiler_version: # [unix] - - 12 # [linux] - - 16 # [osx] -fortran_compiler: # [unix or win64] - - gfortran # [linux64 or (osx and x86_64)] - - gfortran # [aarch64 or ppc64le or armv7l or s390x] - - flang # [win64] -fortran_compiler_version: # [unix or win64] - - 12 # [linux] - - 12 # [osx] - - 5 # [win64] - -# Pinning - -# blas +- vs2022 # [win64] +- gcc # [linux] +- clang # [osx] +c_compiler_version: +- '14' # [linux] +- '19' # [osx] +c_stdlib: +- vs # [win64] +- sysroot #[linux] +- macosx_deployment_target # [osx] +c_stdlib_version: +- '2.17' # [linux] +- '11.0' # [osx] +cdt_name: +- conda # [linux] +channel_sources: +- conda-forge +channel_targets: +- conda-forge main +fortran_compiler: +- flang # [win64] +- gfortran # [linux or osx] +fortran_compiler_version: +- '5' # [win64] +- '14' # [linux or osx] libblas: - - 3.9 *netlib +- 3.9 *netlib libcblas: - - 3.9 *netlib +- 3.9 *netlib liblapack: - - 3.9 *netlib -liblapacke: - - 3.9 *netlib \ No newline at end of file +- 3.9 *netlib +numpy: +- '2' +pin_run_as_build: + python: + min_pin: x.x + max_pin: x.x +python: +- 3.10.* *_cpython +- 3.11.* *_cpython +- 3.12.* *_cpython +- 3.13.* *_cp313 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/slycot-0.6.0/conda-recipe/meta.yaml new/slycot-0.6.1/conda-recipe/meta.yaml --- old/slycot-0.6.0/conda-recipe/meta.yaml 2024-01-07 17:15:54.000000000 +0100 +++ new/slycot-0.6.1/conda-recipe/meta.yaml 2025-11-15 13:17:39.000000000 +0100 @@ -11,8 +11,13 @@ requirements: build: + - python # [build_platform != target_platform] + - cross-python_{{ target_platform }} # [build_platform != target_platform] + - numpy # [build_platform != target_platform] + - scikit-build >=0.15 # [build_platform != target_platform] - {{ compiler('fortran') }} - {{ compiler('c') }} + - {{ stdlib("c") }} - cmake >=3.14 - make # [linux] host: @@ -26,8 +31,7 @@ - setuptools >=45 - setuptools_scm >=7 run: - - python {{ PY_VER }} - - {{ pin_compatible('numpy') }} + - python test: requires: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/slycot-0.6.0/pyproject.toml new/slycot-0.6.1/pyproject.toml --- old/slycot-0.6.0/pyproject.toml 2024-03-05 12:26:36.000000000 +0100 +++ new/slycot-0.6.1/pyproject.toml 2025-11-16 06:45:01.000000000 +0100 @@ -14,14 +14,11 @@ readme = "README.rst" authors = [{ name = "Enrico Avventi et al." }] maintainers = [{ name = "Slycot developers", email = "[email protected]"}] -license = {text = "GPL-2.0 AND BSD-3-Clause"} +license = "GPL-2.0 AND BSD-3-Clause" classifiers = [ "Development Status :: 4 - Beta", "Intended Audience :: Science/Research", "Intended Audience :: Developers", - "License :: OSI Approved", - "License :: OSI Approved :: GNU General Public License v2 (GPLv2)", - "License :: OSI Approved :: BSD License", "Programming Language :: C", "Programming Language :: Fortran", "Programming Language :: Python", @@ -51,3 +48,6 @@ [tool.pytest.ini_options] # run the tests with compiled and installed package addopts = "--pyargs slycot" + +[tool.ruff.lint] +ignore = [ "E741" ] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/slycot-0.6.0/slycot/__init__.py new/slycot-0.6.1/slycot/__init__.py --- old/slycot-0.6.0/slycot/__init__.py 2024-04-05 16:02:23.000000000 +0200 +++ new/slycot-0.6.1/slycot/__init__.py 2025-11-02 17:28:35.000000000 +0100 @@ -79,6 +79,17 @@ from .version import __version__ + __all__ = [ + ab01nd, ab04md, ab05md, ab05nd, ab07nd, ab08nd, ab08nz, + ab09ad, ab09ax, ab09bd, ab09md, ab09nd, ab13bd, ab13dd, + ab13ed, ab13fd, ab13md, ag08bd, mb02ed, mb03rd, mb03vd, + mb03vy, mb03wd, mb05md, mb05nd, mc01td, sb01bd, sb02md, + sb02mt, sb02od, sb03md, sb03md57, sb03od, sb04md, sb04qd, + sb10ad, sb10dd, sb10fd, sb10hd, sb10jd, sb10yd, sg02ad, + sg03ad, sg03bd, tb01id, tb01pd, tb03ad, tb04ad, tb05ad, + tc01od, tc04ad, td04ad, tf01md, tf01rd, tg01ad, tg01fd, + __version__ + ] def test(): import pytest diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/slycot-0.6.0/slycot/analysis.py new/slycot-0.6.1/slycot/analysis.py --- old/slycot-0.6.0/slycot/analysis.py 2024-01-07 17:16:32.000000000 +0100 +++ new/slycot-0.6.1/slycot/analysis.py 2025-10-18 17:36:36.000000000 +0200 @@ -1827,7 +1827,7 @@ else: fact='F' if len(x) != m+mr-1: - raise ValueError(f'Require len(x)==m+mr-1, but' + raise ValueError('Require len(x)==m+mr-1, but' + f' len(x)={len(x)}, m={m}, mr={mr}') x = np.concatenate([x,np.zeros(2*m-1-len(x))]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/slycot-0.6.0/slycot/examples.py new/slycot-0.6.1/slycot/examples.py --- old/slycot-0.6.0/slycot/examples.py 2022-07-10 12:32:17.000000000 +0200 +++ new/slycot-0.6.1/slycot/examples.py 2025-10-18 17:36:36.000000000 +0200 @@ -33,7 +33,6 @@ print('rcond =', out[1]) def sb03md_example(): - from numpy import zeros A = array([ [3, 1, 1], [1, 3, 0], [0, 0, 3]]) @@ -47,7 +46,7 @@ print('scaling factor:', out[3]) def ab08nd_example(): - from numpy import zeros, size + from numpy import zeros from scipy.linalg import eigvals A = array([ [1, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0], @@ -153,7 +152,7 @@ print('The polynomial has', out[2], 'unstable zeros') def sb02od_example(): - from numpy import zeros, shape, dot, ones + from numpy import dot, ones A = array([ [0, 1], [0, 0]]) B = array([ [0], diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/slycot-0.6.0/slycot/src/SLICOT-Reference/.git new/slycot-0.6.1/slycot/src/SLICOT-Reference/.git --- old/slycot-0.6.0/slycot/src/SLICOT-Reference/.git 2021-02-07 21:42:18.000000000 +0100 +++ new/slycot-0.6.1/slycot/src/SLICOT-Reference/.git 2025-10-18 12:17:57.000000000 +0200 @@ -1 +1 @@ -gitdir: ../../../.git/modules/slycot/src/SLICOT-reference +gitdir: ../../../.git/modules/slycot/src/SLICOT-Reference diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/slycot-0.6.0/slycot/src/analysis.pyf new/slycot-0.6.1/slycot/src/analysis.pyf --- old/slycot-0.6.0/slycot/src/analysis.pyf 2023-08-26 12:32:53.000000000 +0200 +++ new/slycot-0.6.1/slycot/src/analysis.pyf 2025-11-15 12:43:59.000000000 +0100 @@ -315,7 +315,7 @@ double precision intent(out),dimension(n),depend(n) :: hsv double precision :: tol1 =0.0 double precision :: tol2 =0.0 - integer intent(hide,cache),dimension(max(m,p)) :: iwork + integer intent(hide,cache),dimension(max(1,2*n)) :: iwork double precision intent(hide,cache),dimension(ldwork) :: dwork integer optional :: ldwork = max(1,n*(2*n+max(n,max(m,p))+5)+n*(n+1)/2) integer intent(out) :: iwarn diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/slycot-0.6.0/slycot/tests/test_ab09nd.py new/slycot-0.6.1/slycot/tests/test_ab09nd.py --- old/slycot-0.6.0/slycot/tests/test_ab09nd.py 1970-01-01 01:00:00.000000000 +0100 +++ new/slycot-0.6.1/slycot/tests/test_ab09nd.py 2025-10-18 17:36:36.000000000 +0200 @@ -0,0 +1,93 @@ +# ab09nd - model order reduction + +import numpy as np +from slycot import ab09nd + +# SLICOT reference test; see SLICOT-Reference/examples/AB09ND.dat, AB09ND.res, TAB09ND.f +def test_slicot_ref(): + n = 7 + m = 2 + p = 3 + nr = None # Slycot uses None for ordsel = 'A' + alpha = -0.6 + tol1 = 1e-1 + tol2 = 1e-14 + dico = 'C' + job = 'N' + equil = 'N' + + a = np.array([[-0.04165, 0.0000, 4.9200, -4.9200, 0.0000, 0.0000, 0.0000], + [-5.2100, -12.500, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000], + [0.0000, 3.3300, -3.3300, 0.0000, 0.0000, 0.0000, 0.0000], + [0.5450, 0.0000, 0.0000, 0.0000, -0.5450, 0.0000, 0.0000], + [0.0000, 0.0000, 0.0000, 4.9200, -0.04165, 0.0000, 4.9200], + [0.0000, 0.0000, 0.0000, 0.0000, -5.2100, -12.500, 0.0000], + [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 3.3300, -3.3300]]) + + b = np.array([[0.0000, 0.0000], + [12.500, 0.0000], + [0.0000, 0.0000], + [0.0000, 0.0000], + [0.0000, 0.0000], + [0.0000, 12.500], + [0.0000, 0.0000]]) + + c = np.array([[1.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000], + [0.0000, 0.0000, 0.0000, 1.0000, 0.0000, 0.0000, 0.0000], + [0.0000, 0.0000, 0.0000, 0.0000, 1.0000, 0.0000, 0.0000]]) + + d = np.zeros((3,2)) + + nr, ar, br, cr, dr, ns, hsv = \ + ab09nd(dico, job, equil, n, m, p, a, b, c, d, alpha, nr, tol1, tol2) + + # reference values + ref_nr = 5 + ref_hsv = np.array([1.9178, 0.8621, 0.7666, 0.0336, 0.0246]) + ref_ar = np.array([[-0.5181, -1.1084, 0.0000, 0.0000, 0.0000], + [ 8.8157, -0.5181, 0.0000, 0.0000, 0.0000], + [ 0.0000, 0.0000, 0.5847, 0.0000, 1.9230], + [ 0.0000, 0.0000, 0.0000, -1.6606, 0.0000], + [ 0.0000, 0.0000, -4.3823, 0.0000, -3.2922]]) + + ref_br = np.array([[-1.2837, 1.2837], + [-0.7522, 0.7522], + [-0.6379, -0.6379], + [ 2.0656, -2.0656], + [-3.9315, -3.9315]]) + + ref_cr = np.array([[-0.1380, -0.6445, -0.6416, -0.6293, 0.2526], + [ 0.6246, 0.0196, 0.0000, 0.4107, 0.0000], + [ 0.1380, 0.6445, -0.6416, 0.6293, 0.2526]]) + + ref_dr = np.array([[ 0.0582, -0.0090], + [ 0.0015, -0.0015], + [-0.0090, 0.0582]]) + + assert nr == ref_nr + + np.testing.assert_array_almost_equal(hsv[:nr], ref_hsv, decimal=4) + np.testing.assert_array_almost_equal(ar, ref_ar, decimal=4) + np.testing.assert_array_almost_equal(br, ref_br, decimal=4) + np.testing.assert_array_almost_equal(cr, ref_cr, decimal=4) + np.testing.assert_array_almost_equal(dr, ref_dr, decimal=4) + + +# gh-242 regression test +# iwork was incorrectly sized +def test_gh242_regression(): + n = 67 + m = 1 + p = 1 + + a = -np.eye(n) + b = np.zeros((n, m)) + c = np.zeros((p, n)) + d = np.array([[42.24]]) + + nr, ar, br, cr, dr, ns, hsv = \ + ab09nd(dico='C', job='B', equil='S', n=a.shape[0], + m=b.shape[1], p=c.shape[0], A=a, B=b, C=c, D=d) + + assert nr == 0 + np.testing.assert_equal(d, dr) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/slycot-0.6.0/slycot/tests/test_ab13bd.py new/slycot-0.6.1/slycot/tests/test_ab13bd.py --- old/slycot-0.6.0/slycot/tests/test_ab13bd.py 2023-09-22 09:45:52.000000000 +0200 +++ new/slycot-0.6.1/slycot/tests/test_ab13bd.py 2025-10-18 17:36:36.000000000 +0200 @@ -2,7 +2,7 @@ # ab08n* tests import numpy as np -from numpy.testing import assert_allclose, assert_array_equal, assert_equal +from numpy.testing import assert_allclose, assert_array_equal from scipy import linalg, signal from slycot import analysis diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/slycot-0.6.0/slycot/tests/test_ab13md.py new/slycot-0.6.1/slycot/tests/test_ab13md.py --- old/slycot-0.6.0/slycot/tests/test_ab13md.py 2023-09-22 09:45:52.000000000 +0200 +++ new/slycot-0.6.1/slycot/tests/test_ab13md.py 2025-10-18 17:36:36.000000000 +0200 @@ -1,6 +1,6 @@ import numpy as np import pytest -from numpy.testing import assert_allclose, assert_array_less +from numpy.testing import assert_allclose from slycot import ab13md diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/slycot-0.6.0/slycot/tests/test_mb.py new/slycot-0.6.1/slycot/tests/test_mb.py --- old/slycot-0.6.0/slycot/tests/test_mb.py 2023-09-24 16:08:05.000000000 +0200 +++ new/slycot-0.6.1/slycot/tests/test_mb.py 2025-10-18 17:36:36.000000000 +0200 @@ -2,8 +2,6 @@ # test_mb.py - test suite for linear algebra commands # bnavigator <[email protected]>, Aug 2019 -import sys - import numpy as np import pytest from numpy.testing import assert_allclose @@ -96,19 +94,6 @@ [1.0000, 2.0000], ] ) - X = np.array( - [ - [0.2408, 0.4816], - [0.1558, 0.3116], - [0.1534, 0.3068], - [0.2302, 0.4603], - [0.1467, 0.2934], - [0.1537, 0.3075], - [0.2349, 0.4698], - [0.1498, 0.2995], - [0.1653, 0.3307], - ] - ) # Test for wrong parameter typet with pytest.raises(expected_exception=SlycotParameterError, match='typet must be either "R" or "C"') as cm: @@ -162,19 +147,6 @@ [1.0000, 2.0000], ] ) - X = np.array( - [ - [0.2408, 0.4816], - [0.1558, 0.3116], - [0.1534, 0.3068], - [0.2302, 0.4603], - [0.1467, 0.2934], - [0.1537, 0.3075], - [0.2349, 0.4698], - [0.1498, 0.2995], - [0.1653, 0.3307], - ] - ) with pytest.raises(SlycotArithmeticError, match = "The reduction algorithm failed. " diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/slycot-0.6.0/slycot/tests/test_sb.py new/slycot-0.6.1/slycot/tests/test_sb.py --- old/slycot-0.6.0/slycot/tests/test_sb.py 2023-09-22 09:45:52.000000000 +0200 +++ new/slycot-0.6.1/slycot/tests/test_sb.py 2025-10-18 17:36:36.000000000 +0200 @@ -7,7 +7,7 @@ from slycot import synthesis from slycot.exceptions import (SlycotArithmeticError, SlycotParameterError, - SlycotResultWarning, raise_if_slycot_error) + SlycotResultWarning) from .test_exceptions import assert_docstring_parse diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/slycot-0.6.0/slycot/tests/test_tb05ad.py new/slycot-0.6.1/slycot/tests/test_tb05ad.py --- old/slycot-0.6.0/slycot/tests/test_tb05ad.py 2023-09-22 09:45:52.000000000 +0200 +++ new/slycot-0.6.1/slycot/tests/test_tb05ad.py 2025-10-18 17:36:36.000000000 +0200 @@ -1,8 +1,6 @@ # =================================================== # tb05ad tests -import sys - import numpy as np import pytest from numpy.testing import assert_almost_equal diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/slycot-0.6.0/slycot/tests/test_tg01ad.py new/slycot-0.6.1/slycot/tests/test_tg01ad.py --- old/slycot-0.6.0/slycot/tests/test_tg01ad.py 2023-09-22 09:45:52.000000000 +0200 +++ new/slycot-0.6.1/slycot/tests/test_tg01ad.py 2025-10-18 17:36:36.000000000 +0200 @@ -2,7 +2,7 @@ # tg01ad tests import numpy as np -from numpy.testing import assert_almost_equal, assert_equal, assert_raises +from numpy.testing import assert_almost_equal from slycot import transform diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/slycot-0.6.0/slycot/tests/test_tg01fd.py new/slycot-0.6.1/slycot/tests/test_tg01fd.py --- old/slycot-0.6.0/slycot/tests/test_tg01fd.py 2023-09-22 09:45:52.000000000 +0200 +++ new/slycot-0.6.1/slycot/tests/test_tg01fd.py 2025-10-18 17:36:36.000000000 +0200 @@ -2,7 +2,7 @@ # tg01fd tests import numpy as np -from numpy.testing import assert_almost_equal, assert_equal, assert_raises +from numpy.testing import assert_almost_equal, assert_equal from slycot import transform diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/slycot-0.6.0/slycot/version.py new/slycot-0.6.1/slycot/version.py --- old/slycot-0.6.0/slycot/version.py 2024-04-05 16:03:24.000000000 +0200 +++ new/slycot-0.6.1/slycot/version.py 2025-11-16 06:46:15.000000000 +0100 @@ -1,16 +1,34 @@ -# file generated by setuptools_scm +# file generated by setuptools-scm # don't change, don't track in version control + +__all__ = [ + "__version__", + "__version_tuple__", + "version", + "version_tuple", + "__commit_id__", + "commit_id", +] + TYPE_CHECKING = False if TYPE_CHECKING: - from typing import Tuple, Union + from typing import Tuple + from typing import Union + VERSION_TUPLE = Tuple[Union[int, str], ...] + COMMIT_ID = Union[str, None] else: VERSION_TUPLE = object + COMMIT_ID = object version: str __version__: str __version_tuple__: VERSION_TUPLE version_tuple: VERSION_TUPLE +commit_id: COMMIT_ID +__commit_id__: COMMIT_ID + +__version__ = version = '0.6.1' +__version_tuple__ = version_tuple = (0, 6, 1) -__version__ = version = '0.6.0' -__version_tuple__ = version_tuple = (0, 6, 0) +__commit_id__ = commit_id = 'gf780ce243' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/slycot-0.6.0/slycot.egg-info/PKG-INFO new/slycot-0.6.1/slycot.egg-info/PKG-INFO --- old/slycot-0.6.0/slycot.egg-info/PKG-INFO 2024-04-05 16:03:24.000000000 +0200 +++ new/slycot-0.6.1/slycot.egg-info/PKG-INFO 2025-11-16 06:46:15.000000000 +0100 @@ -1,17 +1,14 @@ -Metadata-Version: 2.1 +Metadata-Version: 2.4 Name: slycot -Version: 0.6.0 +Version: 0.6.1 Summary: A wrapper for the SLICOT control and systems library Author: Enrico Avventi et al. Maintainer-email: Slycot developers <[email protected]> -License: GPL-2.0 AND BSD-3-Clause +License-Expression: GPL-2.0 AND BSD-3-Clause Project-URL: homepage, https://github.com/python-control/Slycot Classifier: Development Status :: 4 - Beta Classifier: Intended Audience :: Science/Research Classifier: Intended Audience :: Developers -Classifier: License :: OSI Approved -Classifier: License :: OSI Approved :: GNU General Public License v2 (GPLv2) -Classifier: License :: OSI Approved :: BSD License Classifier: Programming Language :: C Classifier: Programming Language :: Fortran Classifier: Programming Language :: Python @@ -29,6 +26,7 @@ License-File: COPYING License-File: AUTHORS Requires-Dist: numpy>=1.23.1 +Dynamic: license-file Slycot ====== diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/slycot-0.6.0/slycot.egg-info/SOURCES.txt new/slycot-0.6.1/slycot.egg-info/SOURCES.txt --- old/slycot-0.6.0/slycot.egg-info/SOURCES.txt 2024-04-05 16:03:24.000000000 +0200 +++ new/slycot-0.6.1/slycot.egg-info/SOURCES.txt 2025-11-16 06:46:15.000000000 +0100 @@ -9,7 +9,6 @@ gpl-2.0.txt pyproject.toml setup.py -.github/conda-env/build-env.yml .github/conda-env/test-env.yml .github/scripts/run-tests.sh .github/scripts/set-conda-test-matrix.py @@ -2042,6 +2041,7 @@ slycot/tests/test_ab01.py slycot/tests/test_ab04md.py slycot/tests/test_ab08n.py +slycot/tests/test_ab09nd.py slycot/tests/test_ab13bd.py slycot/tests/test_ab13md.py slycot/tests/test_ag08bd.py
