Skip to content

v1.5.0

Choose a tag to compare

@github-actions github-actions released this 15 Dec 16:10
· 65 commits to master since this release
  • Requirements

    • Python 3.10-3.14 is supported

    • Test requirements

      • Migrated from pytest 7 to pytest 8

      • Migrated from pytest-lazy-fixture (which appears to be
        unmaintained and incompatible) to pytest-lazy-fixtures, an
        active project with similar functionality.

  • Bug fixes

    • Added defences at runtime against OpenMP library conflicts. This
      scenario is most commonly encounted when using PyPI wheels for
      Euphonic and Brille on MacOS. If multiple OpenMP libraries are
      loaded, Euphonic will raise a warning and fallback to serial
      operation to reduce the risk of a deadlock or other unpleasant
      interaction.

      This is a known problem with OpenMP distributed in Python wheels,
      cited as a reason to avoid use of OpenMP in SciPy. See e.g.
      https://pypackaging-native.github.io/key-issues/native-dependencies/blas_openmp/

      To get high performance of Euphonic Fourier interpolation while
      loading another OpenMP-using library (such as brille) it may be
      necessary for users to build the software from source. (Pip
      install with --no-binary may be sufficient.) Compatibility can
      also be ensured when programs are distributed with a beyond-python
      package manager such as Conda or apt.

  • Improvements

    • Improved error message when C extension import fails due to
      missing dynamic libraries.

    • Random sampling functions (including deterministic sampling
      functions with a random jitter option) accept a new rng
      parameter for a numpy.random Generator (generally preferred) or
      RandomState (used for testing). This allows the user to manipulate
      the random seed and bit generator to ensure reproducible or
      independent calculations.

    • The default argument to rng is a quasi-global Generator
      instance in euphonic.util. This avoids the computational
      overhead of creating a new generator every time a random function
      is called.

  • Maintenance

    • Bumped cibuildwheel to v3.3.0

    • Bumped github action versions: actions/checkout@v6, actions/setup-python@v6

    • Started testing with Python 3.15 pre-release. (Currently there are
      Numpy build problems, this is ok.)

    • On Mac, unit tests with and without brille are run separately. This
      enables full OpenMP parallelism for tests that don't require
      brille to be loaded.