No user-visible changes yet.
First release under modern Python and modern packaging.
Python 2.7 and 3.4 are no longer supported.
- Python 3.11 – 3.14 supported.
- Pre-built wheels on PyPI for Linux, macOS, and Windows, with OpenMP parallelism enabled in every wheel.
-
Data race in
fit_1D_many_parallel, pre-existing from 2016.- Every OpenMP worker clobbered thread-0's work buffer, producing silently
wrong fits whenever the parallel 1D many-case path ran with
ntasks > 1. The 2D/3D branch, the iterative parallel variant, and the serial variant were always correct.
- Every OpenMP worker clobbered thread-0's work buffer, producing silently
wrong fits whenever the parallel 1D many-case path ran with
-
rescale_dgeequno longer silently accepts singular matrices.- It now checks LAPACK's
inforeturn and raisesnumpy.linalg.LinAlgErrorwhen a row or column is exactly zero.
- It now checks LAPACK's
-
Installation is now
pip install wlsqm.- The old
python setup.py installpath is gone;setup.pyhas been removed. - The build system is meson-python, and dev environments are managed with PDM.
- The old
-
Language change on "Taylor series."
- The storage layout still uses the same slots a Taylor expansion would (e.g.
in 2D,
f,∂f/∂x,∂f/∂y,∂²f/∂x²,∂²f/∂x∂y,∂²f/∂y², …), but the comments and docstrings no longer call the polynomial model a "Taylor series." - In the WLSQM method, the coefficients actually come from a least-squares fit, not from analytic differentiation. The error behavior is much better than the truncation of a Taylor series would predict.
- The internal C-API function names
taylor_1D/2D/3Dare kept for backwards compatibility of downstreamcimports — seewlsqm/fitter/polyeval.pyx.
- The storage layout still uses the same slots a Taylor expansion would (e.g.
in 2D,
-
Port from Cython 0.29 to Cython 3.x.
-
Comprehensive pytest suite. 57 tests, covering:
- polynomial recovery across dimensions and orders,
ExpertSolverprepare/solve round-trips,- interpolation accuracy at interior points,
- parallel ≡ serial implementation equivalence,
- finite-difference stencil reproduction,
- first-derivative robustness to Gaussian noise,
- edge cases,
- the LAPACK driver layer, and
.pxdinstallability for downstreamcimportusers.
-
ScalingAlgois now a properenum.IntEnum, replacing the old bare-class Python 2 workaround. -
GitHub Actions CI: lint (ruff + cython-lint), test matrix (3 OSes × 4 Python versions), cibuildwheel for Linux/macOS/Windows wheels, meson-python sdist, and auto-publishing of releases on PyPI.
- support both Python 3.4 and 2.7
- actually use the shorter short description (oops)
- setup.py is now Python 3 compatible (but wlsqm itself is not yet!)
- fixed sdist: package also CHANGELOG.md
- set zip_safe to False to better work with Cython (important for libs that depend on this one)
- change distribution system from distutils to setuptools
- initial version