Skip to content

Releases: Technologicat/python-wlsqm

wlsqm 1.0.0

15 Apr 07:23

Choose a tag to compare

v1.0.0 (15 April 2026)

First release under modern Python and modern packaging.

Python 2.7 and 3.4 are no longer supported.

New

  • Python 3.11 – 3.14 supported.
    • Pre-built wheels on PyPI for Linux, macOS, and Windows, with OpenMP
      parallelism enabled in every wheel.

Fixed

  • 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.
  • rescale_dgeequ no longer silently accepts singular matrices.

    • It now checks LAPACK's info return and raises numpy.linalg.LinAlgError
      when a row or column is exactly zero.

Changed

  • Installation is now pip install wlsqm.

    • The old python setup.py install path is gone; setup.py has been removed.
    • The build system is meson-python,
      and dev environments are managed with PDM.
  • 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/3D are kept for backwards
      compatibility of downstream cimports — see
      wlsqm/fitter/polyeval.pyx.

Internal

  • Port from Cython 0.29 to Cython 3.x.

  • Comprehensive pytest suite. 57 tests, covering:

    • polynomial recovery across dimensions and orders,
    • ExpertSolver prepare/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
    • .pxd installability for downstream cimport users.
  • ScalingAlgo is now a proper enum.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.

wlsqm v0.1.6

27 Apr 12:37

Choose a tag to compare

  • improve README

wlsqm v0.1.5

25 Apr 13:00

Choose a tag to compare

  • support both Python 3.4 and 2.7

wlsqm v0.1.4

24 Apr 13:50

Choose a tag to compare

  • actually use the shorter short description (oops)

wlsqm v0.1.3

24 Apr 13:42

Choose a tag to compare

  • setup.py is now Python 3 compatible (but wlsqm itself is not yet!)
  • fixed sdist: package also CHANGELOG.md

wlsqm v0.1.2

11 Apr 16:25

Choose a tag to compare

  • set zip_safe to False to better work with Cython (important for libs that depend on this one)

wlsqm v0.1.1

04 Apr 12:18

Choose a tag to compare

First actually released version.

  • Distribution system changed from distutils to setuptools.
  • Added to PyPI to support pip install.

wlsqm v0.1.0

04 Apr 12:21

Choose a tag to compare

wlsqm v0.1.0 Pre-release
Pre-release

This release is for historical interest only.

  • The initial complete and cleaned up version.
  • This is the last version to use distutils.