Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-samplerate for openSUSE:Factory checked in at 2026-04-01 19:52:21 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-samplerate (Old) and /work/SRC/openSUSE:Factory/.python-samplerate.new.21863 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-samplerate" Wed Apr 1 19:52:21 2026 rev:4 rq:1344071 version:0.2.4 Changes: -------- --- /work/SRC/openSUSE:Factory/python-samplerate/python-samplerate.changes 2024-02-18 20:23:39.635073867 +0100 +++ /work/SRC/openSUSE:Factory/.python-samplerate.new.21863/python-samplerate.changes 2026-04-01 19:54:00.685561144 +0200 @@ -1,0 +2,17 @@ +Wed Mar 25 08:28:10 UTC 2026 - Dirk Müller <[email protected]> + +- update to 0.2.4 + * Updated pybind11 to 3.0.1. + * Updated GitHub Actions CI to use cibuildwheel, adding support + for Linux (x86_64, aarch64) wheels. + * Fixed array resizing in C++ extension by returning new array + views to avoid potential issues. + * Added cmake to build-system requirements in pyproject.toml. + * Switched to Python_EXECUTABLE for pybind11 compatibility in + CMake. + * Set CMAKE_POSITION_INDEPENDENT_CODE to ON and -fPIC in + CMakeLists.txt. + * Added support for MACOSX_DEPLOYMENT_TARGET in setup.py. + * Updated metadata to use License-Expression: MIT. + +------------------------------------------------------------------- Old: ---- samplerate-0.2.1.tar.gz New: ---- samplerate-0.2.4.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-samplerate.spec ++++++ --- /var/tmp/diff_new_pack.tW51OC/_old 2026-04-01 19:54:01.521595869 +0200 +++ /var/tmp/diff_new_pack.tW51OC/_new 2026-04-01 19:54:01.537596534 +0200 @@ -1,7 +1,7 @@ # # spec file for package python-samplerate # -# Copyright (c) 2024 SUSE LLC +# Copyright (c) 2026 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-samplerate -Version: 0.2.1 +Version: 0.2.4 Release: 0 License: MIT Summary: Python bindings for libsamplerate @@ -28,8 +28,8 @@ BuildRequires: %{python_module numpy-devel} BuildRequires: %{python_module pip} BuildRequires: %{python_module pybind11-devel} -BuildRequires: %{python_module setuptools_scm} -BuildRequires: %{python_module setuptools} +BuildRequires: %{python_module setuptools >= 61} +BuildRequires: %{python_module setuptools_scm >= 6.2} BuildRequires: %{python_module wheel} BuildRequires: c++_compiler BuildRequires: cmake ++++++ samplerate-0.2.1.tar.gz -> samplerate-0.2.4.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/samplerate-0.2.1/.github/workflows/pythonpackage.yml new/samplerate-0.2.4/.github/workflows/pythonpackage.yml --- old/samplerate-0.2.1/.github/workflows/pythonpackage.yml 2024-01-24 00:51:19.000000000 +0100 +++ new/samplerate-0.2.4/.github/workflows/pythonpackage.yml 2026-03-22 19:12:56.000000000 +0100 @@ -1,75 +1,136 @@ name: samplerate -on: [push, pull_request] +on: + push: + branches: [master] + tags: ["v*", "test-*"] + pull_request: + types: [opened, synchronize, reopened, labeled] + workflow_dispatch: jobs: - build: + build_sdist: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 + with: + submodules: recursive + fetch-depth: 0 + - name: Set up Python + uses: actions/setup-python@v6 + with: + python-version: "3.9" + - name: Build sdist + run: | + python -m pip install --upgrade pip + pip install -U setuptools setuptools_scm build twine + python -m build --sdist + twine check dist/* + - uses: actions/upload-artifact@v6 + with: + name: sdist + path: dist/*.tar.gz + + build_wheels_pr: + if: github.event_name == 'pull_request' && !contains(github.event.pull_request.labels.*.name, 'full-build') + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + include: + - os: ubuntu-latest + cibw_build: "cp314-manylinux_x86_64" + cibw_archs: "x86_64" + - os: macos-latest + cibw_build: "cp314-macosx_universal2" + cibw_archs: "universal2" + - os: windows-latest + cibw_build: "cp314-win_amd64" + cibw_archs: "AMD64" + steps: + - uses: actions/checkout@v6 + with: + submodules: recursive + fetch-depth: 0 + - uses: pypa/[email protected] + env: + CIBW_BUILD: ${{ matrix.cibw_build }} + CIBW_ARCHS: ${{ matrix.cibw_archs }} + CIBW_MANYLINUX_X86_64_IMAGE: manylinux_2_28 + CIBW_TEST_REQUIRES: "pytest numpy" + CIBW_TEST_COMMAND: "pytest {project}/tests" + build_wheels: + if: >- + github.event_name == 'push' || + github.event_name == 'workflow_dispatch' || + (github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'full-build')) runs-on: ${{ matrix.os }} strategy: fail-fast: false - max-parallel: 12 matrix: os: [ubuntu-latest, macos-latest, windows-latest] - python-version: [3.8, 3.9, "3.10", "3.11", "3.12"] steps: - - uses: actions/checkout@v3 - - name: Checkout submodules - shell: bash - run: | - auth_header="$(git config --local --get http.https://github.com/.extraheader)" - git submodule sync --recursive - git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1 - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v4 + - uses: actions/checkout@v6 with: - python-version: ${{ matrix.python-version }} - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U setuptools setuptools_scm wheel build twine - pip install -r requirements.txt - - name: Build package - run: | - python -m pip install -e . - - name: Test with pytest - run: | - pytest - - name: Test the universal wheels - if: matrix.os == 'ubuntu-latest' - run: | - # do not build binary wheels on linux - python -m build --sdist - twine check dist/* - - name: Test the binary wheels - if: matrix.os != 'ubuntu-latest' - run: | - python -m build - twine check dist/* - - name: Publish sdist to pypi - if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags/v') && matrix.os == 'ubuntu-latest' + submodules: recursive + fetch-depth: 0 + - name: Set up QEMU + if: runner.os == 'Linux' + uses: docker/setup-qemu-action@v3 + with: + platforms: all + - uses: pypa/[email protected] env: - TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }} - TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }} + CIBW_BUILD: "cp39-* cp310-* cp311-* cp312-* cp313-* cp314-*" + CIBW_SKIP: "*-musllinux_* cp39-*aarch64 cp310-*aarch64" + CIBW_ARCHS_LINUX: "x86_64 aarch64" + CIBW_ARCHS_MACOS: "universal2" + CIBW_ARCHS_WINDOWS: "AMD64" + CIBW_MANYLINUX_X86_64_IMAGE: manylinux_2_28 + CIBW_MANYLINUX_AARCH64_IMAGE: manylinux_2_28 + CIBW_TEST_REQUIRES: "pytest numpy" + CIBW_TEST_COMMAND: "pytest {project}/tests" + CIBW_TEST_SKIP: "cp314-*" + - uses: actions/upload-artifact@v6 + with: + name: wheels-${{ matrix.os }} + path: wheelhouse/*.whl + + publish: + needs: [build_sdist, build_wheels] + runs-on: ubuntu-latest + if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags/v') + steps: + - uses: actions/download-artifact@v8 + with: + path: dist + merge-multiple: true + - name: Validate wheels run: | - twine upload --skip-existing dist/* - - name: Publish bdist to pypi - if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags/v') && matrix.os != 'ubuntu-latest' + pip install --upgrade twine packaging + twine check dist/* + - name: Publish to PyPI env: TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }} TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }} run: | twine upload --skip-existing dist/* - - name: Publish sdist to pypi-test - if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags/test-') && matrix.os == 'ubuntu-latest' - env: - TWINE_USERNAME: ${{ secrets.PYPITEST_USERNAME }} - TWINE_PASSWORD: ${{ secrets.PYPITEST_PASSWORD }} - TWINE_REPOSITORY_URL: https://test.pypi.org/legacy/ + + publish-test: + needs: [build_sdist, build_wheels] + runs-on: ubuntu-latest + if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags/test-') + steps: + - uses: actions/download-artifact@v8 + with: + path: dist + merge-multiple: true + - name: Validate wheels run: | - twine upload --skip-existing dist/* - - name: Publish bdist to pypi-test - if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags/test-') && matrix.os != 'ubuntu-latest' + pip install --upgrade twine packaging + twine check dist/* + - name: Publish to PyPI Test env: TWINE_USERNAME: ${{ secrets.PYPITEST_USERNAME }} TWINE_PASSWORD: ${{ secrets.PYPITEST_PASSWORD }} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/samplerate-0.2.1/CMakeLists.txt new/samplerate-0.2.4/CMakeLists.txt --- old/samplerate-0.2.1/CMakeLists.txt 2024-01-24 00:51:19.000000000 +0100 +++ new/samplerate-0.2.4/CMakeLists.txt 2026-03-22 19:12:56.000000000 +0100 @@ -1,14 +1,12 @@ # https://stackoverflow.com/questions/51907755/building-a-pybind11-module-with-cpp-and-cuda-sources-using-cmake cmake_minimum_required(VERSION 3.15) - -message(STATUS "Found Python prefix ${PYTHON_PREFIX}") -list(PREPEND CMAKE_PREFIX_PATH "${PYTHON_PREFIX}") +set(CMAKE_POLICY_VERSION_MINIMUM 3.5) project(python-samplerate) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) -cmake_policy(SET CMP0094 NEW) +set(PYBIND11_FINDPYTHON ON) # adds the external dependencies add_subdirectory(external) @@ -25,7 +23,7 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR (CMAKE_CXX_COMPILER_ID MATCHES "Intel" AND NOT WIN32)) - target_compile_options(python-samplerate PRIVATE -std=c++14 -O3 -Wall -Wextra) + target_compile_options(python-samplerate PRIVATE -std=c++14 -O3 -Wall -Wextra -fPIC) endif() ### stick the package and libsamplerate version into the module diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/samplerate-0.2.1/PKG-INFO new/samplerate-0.2.4/PKG-INFO --- old/samplerate-0.2.1/PKG-INFO 2024-01-24 00:52:02.806748600 +0100 +++ new/samplerate-0.2.4/PKG-INFO 2026-03-22 19:13:15.426764700 +0100 @@ -1,15 +1,14 @@ -Metadata-Version: 2.1 +Metadata-Version: 2.4 Name: samplerate -Version: 0.2.1 +Version: 0.2.4 Summary: Monolithic python wrapper for libsamplerate based on pybind11 and NumPy Author-email: Robin Scheibler <[email protected]>, Tino Wagner <[email protected]> -License: MIT +License-Expression: MIT Keywords: samplerate,converter,signal processing,audio Classifier: Development Status :: 3 - Alpha Classifier: Environment :: Console Classifier: Intended Audience :: Developers Classifier: Intended Audience :: Science/Research -Classifier: License :: OSI Approved :: MIT License Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python :: 3 Classifier: Topic :: Scientific/Engineering @@ -18,6 +17,7 @@ Description-Content-Type: text/x-rst License-File: LICENSE.rst Requires-Dist: numpy +Dynamic: license-file python-samplerate ================= @@ -62,8 +62,9 @@ $ pip install samplerate -Binary wheels of `libsamplerate`_ for macOS and Windows (64 bit) are available. -For other systems, a C++ 14 or above compiler is required to build the package. +Binary wheels of `libsamplerate`_ are available for macOS (x86_64, arm64), Linux +(x86_64, aarch64), and Windows (x86_64). Building from source on other platforms +requires a C++14 or later compiler. Usage diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/samplerate-0.2.1/README.rst new/samplerate-0.2.4/README.rst --- old/samplerate-0.2.1/README.rst 2024-01-24 00:51:19.000000000 +0100 +++ new/samplerate-0.2.4/README.rst 2026-03-22 19:12:56.000000000 +0100 @@ -41,8 +41,9 @@ $ pip install samplerate -Binary wheels of `libsamplerate`_ for macOS and Windows (64 bit) are available. -For other systems, a C++ 14 or above compiler is required to build the package. +Binary wheels of `libsamplerate`_ are available for macOS (x86_64, arm64), Linux +(x86_64, aarch64), and Windows (x86_64). Building from source on other platforms +requires a C++14 or later compiler. Usage diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/samplerate-0.2.1/external/CMakeLists.txt new/samplerate-0.2.4/external/CMakeLists.txt --- old/samplerate-0.2.1/external/CMakeLists.txt 2024-01-24 00:51:19.000000000 +0100 +++ new/samplerate-0.2.4/external/CMakeLists.txt 2026-03-22 19:12:56.000000000 +0100 @@ -4,12 +4,13 @@ FetchContent_Declare( pybind11 GIT_REPOSITORY https://github.com/pybind/pybind11 - GIT_TAG 5b0a6fc2017fcc176545afe3e09c9f9885283242 # 2.10.4 + GIT_TAG f5fbe867d2d26e4a0a9177a51f6e568868ad3dc8 # 3.0.1 ) FetchContent_MakeAvailable(pybind11) # libsamplerate +set(CMAKE_POSITION_INDEPENDENT_CODE ON) set(BUILD_TESTING OFF CACHE BOOL "Disable libsamplerate test build") FetchContent_Declare( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/samplerate-0.2.1/pyproject.toml new/samplerate-0.2.4/pyproject.toml --- old/samplerate-0.2.1/pyproject.toml 2024-01-24 00:51:19.000000000 +0100 +++ new/samplerate-0.2.4/pyproject.toml 2026-03-22 19:12:56.000000000 +0100 @@ -1,5 +1,5 @@ [build-system] -requires = ["setuptools>=61", "setuptools_scm[toml]>=6.2"] +requires = ["setuptools>=61", "setuptools_scm[toml]>=6.2", "cmake"] build-backend = "setuptools.build_meta" [project] @@ -16,14 +16,13 @@ "Environment :: Console", "Intended Audience :: Developers", "Intended Audience :: Science/Research", - "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Topic :: Scientific/Engineering", "Topic :: Multimedia :: Sound/Audio", ] keywords=["samplerate", "converter", "signal processing", "audio"] -license = {text = "MIT"} +license = "MIT" dependencies = ["numpy"] [tool.setuptools.dynamic] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/samplerate-0.2.1/setup.py new/samplerate-0.2.4/setup.py --- old/samplerate-0.2.1/setup.py 2024-01-24 00:51:19.000000000 +0100 +++ new/samplerate-0.2.4/setup.py 2026-03-22 19:12:56.000000000 +0100 @@ -46,12 +46,11 @@ # Can be set with Conda-Build, for example. cmake_generator = os.environ.get("CMAKE_GENERATOR", "") - # Set Python_EXECUTABLE instead if you use PYBIND11_FINDPYTHON # EXAMPLE_VERSION_INFO shows you how to pass a value into the C++ code # from Python. cmake_args = [ f"-DCMAKE_LIBRARY_OUTPUT_DIRECTORY={extdir}{os.sep}", - f"-DPYTHON_EXECUTABLE={sys.executable}", + f"-DPython_EXECUTABLE={sys.executable}", f"-DCMAKE_BUILD_TYPE={cfg}", # not used on MSVC, but no harm ] build_args = [] @@ -105,6 +104,14 @@ if "universal2" in self.plat_name: cmake_args += ["-DCMAKE_OSX_ARCHITECTURES=arm64;x86_64"] + # Set MACOSX_DEPLOYMENT_TARGET for macOS builds. + if ( + self.plat_name.startswith("macosx-") + and "MACOSX_DEPLOYMENT_TARGET" not in os.environ + ): + target_version = self.plat_name.split("-")[1] + os.environ["MACOSX_DEPLOYMENT_TARGET"] = target_version + # Set CMAKE_BUILD_PARALLEL_LEVEL to control the parallel build level # across all generators. if "CMAKE_BUILD_PARALLEL_LEVEL" not in os.environ: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/samplerate-0.2.1/src/samplerate.cpp new/samplerate-0.2.4/src/samplerate.cpp --- old/samplerate-0.2.1/src/samplerate.cpp 2024-01-24 00:51:19.000000000 +0100 +++ new/samplerate-0.2.4/src/samplerate.cpp 2026-03-22 19:12:56.000000000 +0100 @@ -184,7 +184,9 @@ // create a shorter view of the array if ((size_t)src_data.output_frames_gen < new_size) { out_shape[0] = src_data.output_frames_gen; - output.resize(out_shape); + return py::array_t<float, py::array::c_style>( + out_shape, outbuf.strides, static_cast<float *>(outbuf.ptr), + output); } return output; @@ -313,7 +315,10 @@ // create a shorter view of the array if (output_frames_gen < frames) { out_shape[0] = output_frames_gen; - output.resize(out_shape); + auto strides = std::vector<py::ssize_t>(output.strides(), + output.strides() + output.ndim()); + return py::array_t<float, py::array::c_style>( + out_shape, strides, static_cast<float *>(outbuf.ptr), output); } return output; @@ -414,7 +419,9 @@ // create a shorter view of the array if ((size_t)src_data.output_frames_gen < new_size) { out_shape[0] = src_data.output_frames_gen; - output.resize(out_shape); + auto base = output; + output = py::array_t<float, py::array::c_style>( + out_shape, outbuf.strides, static_cast<float *>(outbuf.ptr), base); } if (verbose) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/samplerate-0.2.1/src/samplerate.egg-info/PKG-INFO new/samplerate-0.2.4/src/samplerate.egg-info/PKG-INFO --- old/samplerate-0.2.1/src/samplerate.egg-info/PKG-INFO 2024-01-24 00:52:02.000000000 +0100 +++ new/samplerate-0.2.4/src/samplerate.egg-info/PKG-INFO 2026-03-22 19:13:15.000000000 +0100 @@ -1,15 +1,14 @@ -Metadata-Version: 2.1 +Metadata-Version: 2.4 Name: samplerate -Version: 0.2.1 +Version: 0.2.4 Summary: Monolithic python wrapper for libsamplerate based on pybind11 and NumPy Author-email: Robin Scheibler <[email protected]>, Tino Wagner <[email protected]> -License: MIT +License-Expression: MIT Keywords: samplerate,converter,signal processing,audio Classifier: Development Status :: 3 - Alpha Classifier: Environment :: Console Classifier: Intended Audience :: Developers Classifier: Intended Audience :: Science/Research -Classifier: License :: OSI Approved :: MIT License Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python :: 3 Classifier: Topic :: Scientific/Engineering @@ -18,6 +17,7 @@ Description-Content-Type: text/x-rst License-File: LICENSE.rst Requires-Dist: numpy +Dynamic: license-file python-samplerate ================= @@ -62,8 +62,9 @@ $ pip install samplerate -Binary wheels of `libsamplerate`_ for macOS and Windows (64 bit) are available. -For other systems, a C++ 14 or above compiler is required to build the package. +Binary wheels of `libsamplerate`_ are available for macOS (x86_64, arm64), Linux +(x86_64, aarch64), and Windows (x86_64). Building from source on other platforms +requires a C++14 or later compiler. Usage
