v1.5.0
-
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-binarymay 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 newrng
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
rngis a quasi-global Generator
instance ineuphonic.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.
-