NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #930 most downloaded on PyPI
PyWavelets, wavelet transform module
Last release 27 days ago
07 Sep 2026
Release timing varies
gaps range from 3 weeks to 2.1 years
Most releases are documented
notes for 20 of 26 stable releases
1 version withdrawn
withdrawn after publishing
21 years old
28 releases · first in 2006
…: TST: remove usages of deprecated \numpy.testing.assert_warns\ * #835 < https://github.com/PyWavelets/pywt/pull/835>__ : DEV/MAINT: fix benchmarks fo…
PyWavelets 1.10.0 release
We are very pleased to announce the release of PyWavelets 1.10.0. This release
adds unconditional support for complex-valued input and improves the performance
of ``pywt.cwt`` for real-valued input by using real-valued FFTs.
This release also fixes handling of read-only input arrays, zero-width padding,
and reconstruction of wavelet packets with non-power-of-two sizes. Support for
Python 3.15 is added, support for Python 3.11 is dropped, and the minimum
supported NumPy version is now 1.26.4.
Authors
=======
* Aman Atman +
* ChS-YHWH +
* Green Committer +
* Achraf Ez +
* Clément Fauchereau +
* Bing Gao +
* Ralf Gommers
* Veit Heller +
* Filip Jankovic +
* Julian Hoßbach +
* Vineet Kumar +
* Kevin Lee +
* Dang Thoai Phan +
A total of 13 people contributed to this release.
People with a "+" by their names contributed a patch for the first time.
This list of names is automatically generated, and may not be fully complete.
Issues closed for v1.10.0
-------------------------
* `#589 <https://github.com/PyWavelets/pywt/issues/589>`__: Padding error when padding width is 0 for antisymmetric and smooth
* `#776 <https://github.com/PyWavelets/pywt/issues/776>`__: cwt always fails with the message AttributeError: 'pywt._extensions._pywt.Wavelet' object has no attribute 'complex_cwt'
* `#801 <https://github.com/PyWavelets/pywt/issues/801>`__: Scaling mismatch between PyWavelets CWT and my implementation
* `#838 <https://github.com/PyWavelets/pywt/issues/838>`__: swt documentation mistake
* `#839 <https://github.com/PyWavelets/pywt/issues/839>`__: DWT of read-only numpy arrays fails
* `#856 <https://github.com/PyWavelets/pywt/issues/856>`__: WaveletPacketND.reconstruct() raises IndexError for non-power-of-two...
Pull requests for v1.10.0
-------------------------
* `#790 <https://github.com/PyWavelets/pywt/pull/790>`__: ENH: enable complex dtype support unconditionally
* `#816 <https://github.com/PyWavelets/pywt/pull/816>`__: DOC: add note at top of \`cwt\` docs referring to \`ssqueezepy\`
* `#818 <https://github.com/PyWavelets/pywt/pull/818>`__: MAINT: a tiny edit rewording a single code code comment
* `#819 <https://github.com/PyWavelets/pywt/pull/819>`__: CI: Add support for building pywt wheels for windows arm64
* `#821 <https://github.com/PyWavelets/pywt/pull/821>`__: Bump the github-actions group with 3 updates
* `#824 <https://github.com/PyWavelets/pywt/pull/824>`__: Bump the github-actions group with 3 updates
* `#825 <https://github.com/PyWavelets/pywt/pull/825>`__: MAINT: drop Python 3.11, NumPy 1.25 and Cython 3.0.x support
* `#826 <https://github.com/PyWavelets/pywt/pull/826>`__: TST: fix CI failures in Matlab test generation files
* `#827 <https://github.com/PyWavelets/pywt/pull/827>`__: CI: use macos-15-intel image for macOS x86-64 wheel builds
* `#829 <https://github.com/PyWavelets/pywt/pull/829>`__: Bump the github-actions group with 4 updates
* `#830 <https://github.com/PyWavelets/pywt/pull/830>`__: MAINT: move away from numpy.fix in favor of numpy.trunc
* `#833 <https://github.com/PyWavelets/pywt/pull/833>`__: TST: remove usages of deprecated \`numpy.testing.assert_warns\`
* `#835 <https://github.com/PyWavelets/pywt/pull/835>`__: DEV/MAINT: fix benchmarks for latest \`asv\`, and add a \`spin...
* `#836 <https://github.com/PyWavelets/pywt/pull/836>`__: CI/MAINT: add a CI job with ASan and UBSan on macOS, fix one...
* `#840 <https://github.com/PyWavelets/pywt/pull/840>`__: fix: Read-only arrays in dwt (Issue #839)
* `#842 <https://github.com/PyWavelets/pywt/pull/842>`__: DOC: clarify CWT normalization details around sampling_period...
* `#845 <https://github.com/PyWavelets/pywt/pull/845>`__: Build(deps): Bump the github-actions group with 3 updates
* `#849 <https://github.com/PyWavelets/pywt/pull/849>`__: BUG: raise a clear error when cwt() is given a discrete wavelet...
* `#851 <https://github.com/PyWavelets/pywt/pull/851>`__: DOC: update terminology from 'multiple-overlap' to 'maximal-overlap'
* `#854 <https://github.com/PyWavelets/pywt/pull/854>`__: BUG: fix pywt.pad for a zero pad width in 'smooth' and 'antisymmetric'...
* `#855 <https://github.com/PyWavelets/pywt/pull/855>`__: MAINT: fix pytest deprecation warning
* `#857 <https://github.com/PyWavelets/pywt/pull/857>`__: BUG: fix indexing in WaveletPacketND.reconstruct for data_size
* `#858 <https://github.com/PyWavelets/pywt/pull/858>`__: CI: drop all 3.13t free-threading jobs
* `#859 <https://github.com/PyWavelets/pywt/pull/859>`__: MAINT: fix two more issues with padding length 0 and size-0 axis...
* `#860 <https://github.com/PyWavelets/pywt/pull/860>`__: BUG: fix indexing in \`reconstruct\` method of 1-D/2-D wavelet...
* `#861 <https://github.com/PyWavelets/pywt/pull/861>`__: CI: revert change to cibuildwheel version for Emscripten job
* `#862 <https://github.com/PyWavelets/pywt/pull/862>`__: CI: run the ASan/UBSan job in a container instead of on macOS
* `#863 <https://github.com/PyWavelets/pywt/pull/863>`__: DOC: fix the swt/swt2 \`start_level\` coefficient ranges
* `#864 <https://github.com/PyWavelets/pywt/pull/864>`__: ENH: use real FFTs for real-valued CWT convolution
* `#869 <https://github.com/PyWavelets/pywt/pull/869>`__: CI: update nightly wheel build cron job from 2x to 3x per month
* `#870 <https://github.com/PyWavelets/pywt/pull/870>`__: BLD: define _USE_MATH_DEFINES in c_args
* `#872 <https://github.com/PyWavelets/pywt/pull/872>`__: CI/BLD: add Python 3.15 support
One column per quarter.
#589 <https://github.com/PyWavelets/pywt/issues/589>__: Padding error when padding width is 0 for antisymmetric and smooth#776 <https://github.com/PyWavelets/pywt/issues/776>__: cwt always fails with the message AttributeError: 'pywt._extensions._pywt.Wavelet' object has no attribute 'complex_cwt'#801 <https://github.com/PyWavelets/pywt/issues/801>__: Scaling mismatch between PyWavelets CWT and my implementation#838 <https://github.com/PyWavelets/pywt/issues/838>__: swt documentation mistake#839 <https://github.com/PyWavelets/pywt/issues/839>__: DWT of read-only numpy arrays fails#856 <https://github.com/PyWavelets/pywt/issues/856>__: WaveletPacketND.reconstruct() raises IndexError for non-power-of-two...We are very pleased to announce the release of PyWavelets 1.9.0. This release contains a fix for a long-standing problem with pywt.cwt, adding a preci
PyWavelets 1.9.0 release
We are very pleased to announce the release of PyWavelets 1.9.0. This release
contains a fix for a long-standing problem with ``pywt.cwt``, adding a
``precision`` keyword and increasing the default precision used.
This release makes a number of changes to the versions of dependencies that are
supported:
- Support for Python 3.14 is added, and support for Python 3.10 dropped,
- The minimum supported NumPy version is now 1.25.0,
- The optional dependency on SciPy has been removed,
Authors
=======
* Evgeni Burovski
* gabalafou +
* Ralf Gommers
* Agriya Khetarpal
* John Muradeli +
A total of 7 people contributed to this release.
People with a "+" by their names contributed a patch for the first time.
This list of names is automatically generated, and may not be fully complete.
Issues closed for v1.9.0
------------------------
* `#531 <https://github.com/PyWavelets/pywt/issues/531>`__: precision of CWT
* `#784 <https://github.com/PyWavelets/pywt/issues/784>`__: Spikes in wavelet after cwt
* `#799 <https://github.com/PyWavelets/pywt/issues/799>`__: Wavelet name typo in documentation
Pull requests for v1.9.0
------------------------
* `#570 <https://github.com/PyWavelets/pywt/pull/570>`__: ENH: allow user to set \`precision\` in CWT, increase default...
* `#741 <https://github.com/PyWavelets/pywt/pull/741>`__: DOC: Add interactive notebooks to pages in the "Usage Examples"...
* `#772 <https://github.com/PyWavelets/pywt/pull/772>`__: MAINT: update handling of license files to use PEP 639
* `#788 <https://github.com/PyWavelets/pywt/pull/788>`__: CI: Build Linux AArch64 wheels natively, and add Arm runners...
* `#789 <https://github.com/PyWavelets/pywt/pull/789>`__: Bump the github-actions group with 2 updates
* `#791 <https://github.com/PyWavelets/pywt/pull/791>`__: MAINT: remove optional dependence on SciPy for FFT operations
* `#793 <https://github.com/PyWavelets/pywt/pull/793>`__: Bump the github-actions group with 2 updates
* `#794 <https://github.com/PyWavelets/pywt/pull/794>`__: MAINT: bump minimum Python version to 3.10 and NumPy to 1.25
* `#802 <https://github.com/PyWavelets/pywt/pull/802>`__: \`cwt\`: log \`scales\` in docstring example
* `#803 <https://github.com/PyWavelets/pywt/pull/803>`__: Bump the github-actions group with 3 updates
* `#805 <https://github.com/PyWavelets/pywt/pull/805>`__: MAINT: require scipy_doctest>=1.8.0
* `#810 <https://github.com/PyWavelets/pywt/pull/810>`__: BLD/CI: Use cibuildwheel v3
* `#811 <https://github.com/PyWavelets/pywt/pull/811>`__: CI: add cp314/cp314t wheel builds; improve cp313t builds
* `#812 <https://github.com/PyWavelets/pywt/pull/812>`__: DOC: fix typo in a wavelet name
* `#813 <https://github.com/PyWavelets/pywt/pull/813>`__: CI: clean up free-threading job, and pin actions in tests.yml
* `#814 <https://github.com/PyWavelets/pywt/pull/814>`__: Bump the github-actions group with 2 updates
* `#815 <https://github.com/PyWavelets/pywt/pull/815>`__: CI: test Python 3.14 and 3.14t in regular CI jobs
#531 <https://github.com/PyWavelets/pywt/issues/531>__: precision of CWT#784 <https://github.com/PyWavelets/pywt/issues/784>__: Spikes in wavelet after cwt#799 <https://github.com/PyWavelets/pywt/issues/799>__: Wavelet name typo in documentation…: DOC: highlighted deprecations with backward compatibility information * #779 < https://github.com/PyWavelets/pywt/pull/779>__ : Bump the github-acti…
PyWavelets 1.8.0 release
We are very pleased to announce the release of PyWavelets 1.8.0. This release
is a minor update to 1.7.x. It adds support for free-threaded Python 3.13 on
Windows. The supported Python, NumPy and Cython versions are unchanged from
1.7.x.
Note that building from source with free-threaded CPython requires a recent
development version of Cython (>=3.1.0a0).
Authors
=======
* Ralf Gommers
* Marco Meyer-Conde +
* Omer Sayli +
A total of 3 people contributed to this release.
People with a "+" by their names contributed a patch for the first time.
Issues closed for v1.8.0
------------------------
* `#780 <https://github.com/PyWavelets/pywt/issues/780>`__: Pip install PyWavelets does not work with GIL disabled version...
Pull requests for v1.8.0
------------------------
* `#766 <https://github.com/PyWavelets/pywt/pull/766>`__: Bump actions/upload-artifact from 4.3.4 to 4.4.0 in the github-actions...
* `#769 <https://github.com/PyWavelets/pywt/pull/769>`__: DOC: improve figures in \`demo/wp_scalogram.py\`
* `#771 <https://github.com/PyWavelets/pywt/pull/771>`__: CI: build free-threaded Windows wheels
* `#775 <https://github.com/PyWavelets/pywt/pull/775>`__: CI: fix Windows wheels, clean up cp313/cp313t build config
* `#778 <https://github.com/PyWavelets/pywt/pull/778>`__: DOC: highlighted deprecations with backward compatibility information
* `#779 <https://github.com/PyWavelets/pywt/pull/779>`__: Bump the github-actions group with 2 updates
#780 <https://github.com/PyWavelets/pywt/issues/780>__: Pip install PyWavelets does not work with GIL disabled version...We are very pleased to announce the release of PyWavelets 1.7.0. This release is a minor update to 1.6.x. It adds support for Python 3.13, including f
PyWavelets 1.7.0 release
We are very pleased to announce the release of PyWavelets 1.7.0. This release
is a minor update to 1.6.x. It adds support for Python 3.13, including for
free-threaded CPython. The supported NumPy and Cython versions are unchanged
from 1.6.x.
Note that building from source with free-threaded CPython requires a recent
development version of Cython (>=3.1.0a0).
Other noteworthy improvements:
- Most examples in the documentation are now interactive, powered by
JupyterLite and Pyodide.
- The ``musllinux`` wheels were upgraded from ``musllinux_1_1`` to
``musllinux_1_2`` (for both x86-64 and aarch64).
Authors
=======
* Evgeni Burovski +
* Ralf Gommers
* Agriya Khetarpal
* Jarrod Millman
* Edgar Andrés Margffoy Tuay +
A total of 5 people contributed to this release.
People with a "+" by their names contributed a patch for the first time.
This list of names is automatically generated, and may not be fully complete.
Issues closed for v1.7.0
------------------------
* `#742 <https://github.com/PyWavelets/pywt/issues/742>`__: Start building WASM wheels against newer Pyodide (version 0.26.0)
Pull requests for v1.7.0
------------------------
* `#702 <https://github.com/PyWavelets/pywt/pull/702>`__: BLD: Test editable installations for PyWavelets in CI
* `#722 <https://github.com/PyWavelets/pywt/pull/722>`__: Drop support for older dependencies (see SPEC 0)
* `#726 <https://github.com/PyWavelets/pywt/pull/726>`__: MAINT: set version to 1.7.0.dev0
* `#734 <https://github.com/PyWavelets/pywt/pull/734>`__: DOC: Fix incorrect indentations for a few interactive examples
* `#737 <https://github.com/PyWavelets/pywt/pull/737>`__: DOC, DEP: Remove custom \`:button_text\` directive option, bump...
* `#739 <https://github.com/PyWavelets/pywt/pull/739>`__: DEP: Remove \`docutils\` upper-pin, bump \`sphinx\`
* `#743 <https://github.com/PyWavelets/pywt/pull/743>`__: FIX, CI: Temporarily disable \`pytest\`'s caching in Pyodide...
* `#744 <https://github.com/PyWavelets/pywt/pull/744>`__: CI, BLD: Use \`cibuildwheel\` to build and test Pyodide/WASM...
* `#745 <https://github.com/PyWavelets/pywt/pull/745>`__: Bump the github-actions group with 2 updates
* `#747 <https://github.com/PyWavelets/pywt/pull/747>`__: Use \`scipy-doctest\` instead of \`refguide-check\`
* `#748 <https://github.com/PyWavelets/pywt/pull/748>`__: DOC: easy_install is no longer a thing
* `#753 <https://github.com/PyWavelets/pywt/pull/753>`__: CI: Add CI to test on free-threaded Python
* `#756 <https://github.com/PyWavelets/pywt/pull/756>`__: CI: Add CI to release nightly wheels against free-threaded Python...
* `#757 <https://github.com/PyWavelets/pywt/pull/757>`__: CI: add macOS nightly wheels for free-threaded CPython
* `#759 <https://github.com/PyWavelets/pywt/pull/759>`__: Bump softprops/action-gh-release from 2.0.5 to 2.0.6 in the github-actions...
* `#761 <https://github.com/PyWavelets/pywt/pull/761>`__: BLD: mark extension modules as compatible to run without the...
* `#762 <https://github.com/PyWavelets/pywt/pull/762>`__: BLD: fix a few install tags for generated .py files
* `#763 <https://github.com/PyWavelets/pywt/pull/763>`__: Bump the github-actions group with 4 updates
* `#764 <https://github.com/PyWavelets/pywt/pull/764>`__: BLD/CI: support Python 3.13 (cp313/cp313t) in pyproject.toml...
* #720 < https://github.com/PyWavelets/pywt/pull/720>__ : BLD: avoid warnings from including deprecated NumPy API * #721 < https://github.com/PyWavele…
PyWavelets 1.6.0 release
We are very pleased to announce the release of PyWavelets 1.6.0. This release
is a minor update to 1.6.x. It adds support for NumPy 2.0, which also keeping
compatibility with NumPy 1.22-1.26. It requires Cython 3.0; support for 0.29.x
is dropped.
Other noteworthy improvements:
- Improved documentation for ``pywt.cwt``
- The documentation was migrated to the PyData Sphinx Theme and the content
organization improved
- Releases on PyPI now include wheels for ``musllinux`` (x86-64 and aarch64)
- The test suite is now passing and tested in CI with Emscripten/Pyodide
- Nightly builds will be available at
https://anaconda.org/scientific-python-nightly-wheels/PyWavelets/ going
forward
Authors
=======
* Christian Clauss
* Ralf Gommers
* Agriya Khetarpal +
* Jarrod Millman
* Cora Schneck +
* Daniel Stephan +
A total of 6 people contributed to this release.
People with a "+" by their names contributed a patch for the first time.
This list of names is automatically generated, and may not be fully complete.
Issues closed for v1.6.0
------------------------
* `#623 <https://github.com/PyWavelets/pywt/issues/623>`__: pywavelets fails to install on Alpine Linux v3.15 ARM
* `#676 <https://github.com/PyWavelets/pywt/issues/676>`__: Enhanced documentation for CWT
* `#712 <https://github.com/PyWavelets/pywt/issues/712>`__: Upload dev builds for all supported platforms to anaconda.org
* `#718 <https://github.com/PyWavelets/pywt/issues/718>`__: Publish musllinux wheels again, and natively compile macOS arm64...
Pull requests for v1.6.0
------------------------
* `#678 <https://github.com/PyWavelets/pywt/pull/678>`__: Additional documentation for cwt (issue #676)
* `#684 <https://github.com/PyWavelets/pywt/pull/684>`__: Rename master branch to main
* `#687 <https://github.com/PyWavelets/pywt/pull/687>`__: Add linter
* `#701 <https://github.com/PyWavelets/pywt/pull/701>`__: Build and test PyWavelets Pyodide wheels in CI
* `#703 <https://github.com/PyWavelets/pywt/pull/703>`__: MAINT: add input validation to \`scales\` argument to \`cwt\`
* `#704 <https://github.com/PyWavelets/pywt/pull/704>`__: DOC: Migrate to \`pydata-sphinx-theme\`
* `#708 <https://github.com/PyWavelets/pywt/pull/708>`__: Keep GitHub Actions up to date with GitHub's Dependabot
* `#709 <https://github.com/PyWavelets/pywt/pull/709>`__: mymindstorm/setup-emscripten --> mymindstorm/setup-emsdk
* `#711 <https://github.com/PyWavelets/pywt/pull/711>`__: CI: tweaks to CI job triggers and names
* `#713 <https://github.com/PyWavelets/pywt/pull/713>`__: Bump the github-actions group with 5 updates
* `#714 <https://github.com/PyWavelets/pywt/pull/714>`__: Upload dev wheels to Anaconda.org + revamp wheels publishing...
* `#715 <https://github.com/PyWavelets/pywt/pull/715>`__: BLD: update build and runtime dependencies for numpy 2.0
* `#716 <https://github.com/PyWavelets/pywt/pull/716>`__: TST/CI: mark some tests as slow and avoid running them in wheel...
* `#717 <https://github.com/PyWavelets/pywt/pull/717>`__: CI: fix patterns for artifact downloads in Anaconda nightly wheels...
* `#719 <https://github.com/PyWavelets/pywt/pull/719>`__: CI: Build \`musllinux\` aarch64 and x86_64 wheels, and native...
* `#720 <https://github.com/PyWavelets/pywt/pull/720>`__: BLD: avoid warnings from including deprecated NumPy API
* `#721 <https://github.com/PyWavelets/pywt/pull/721>`__: Bump the github-actions group with 1 update
* `#723 <https://github.com/PyWavelets/pywt/pull/723>`__: MAINT: use \`numpy-config\` and fix support for numpy 2.0
#623 <https://github.com/PyWavelets/pywt/issues/623>__: pywavelets fails to install on Alpine Linux v3.15 ARM#676 <https://github.com/PyWavelets/pywt/issues/676>__: Enhanced documentation for CWT#712 <https://github.com/PyWavelets/pywt/issues/712>__: Upload dev builds for all supported platforms to anaconda.org#718 <https://github.com/PyWavelets/pywt/issues/718>__: Publish musllinux wheels again, and natively compile macOS arm64...* #720 < https://github.com/PyWavelets/pywt/pull/720>__ : BLD: avoid warnings from including deprecated NumPy API * #721 < https://github.com/PyWavele…
PyWavelets 1.6.0rc1
This release is a minor update to 1.6.x. It adds support for NumPy 2.0,
which also keeping compatibility with NumPy 1.22-1.26. It requires
Cython 3.0; support for 0.29.x is dropped.
Other noteworthy improvements:
- Improved documentation for ``pywt.cwt``
- The documentation was migrated to the PyData Sphinx Theme and the content
organization improved
- Releases on PyPI now include wheels for ``musllinux`` (x86-64 and aarch64)
- The test suite is now passing and tested in CI with Emscripten/Pyodide
- Nightly builds will be available at
https://anaconda.org/scientific-python-nightly-wheels/PyWavelets/ going
forward
Authors
=======
* Christian Clauss
* Ralf Gommers
* Agriya Khetarpal +
* Jarrod Millman
* Cora Schneck +
* Daniel Stephan +
A total of 6 people contributed to this release.
People with a "+" by their names contributed a patch for the first time.
This list of names is automatically generated, and may not be fully complete.
Issues closed for v1.6.0
------------------------
* `#623 <https://github.com/PyWavelets/pywt/issues/623>`__: pywavelets fails to install on Alpine Linux v3.15 ARM
* `#676 <https://github.com/PyWavelets/pywt/issues/676>`__: Enhanced documentation for CWT
* `#712 <https://github.com/PyWavelets/pywt/issues/712>`__: Upload dev builds for all supported platforms to anaconda.org
* `#718 <https://github.com/PyWavelets/pywt/issues/718>`__: Publish musllinux wheels again, and natively compile macOS arm64...
Pull requests for v1.6.0
------------------------
* `#678 <https://github.com/PyWavelets/pywt/pull/678>`__: Additional documentation for cwt (issue #676)
* `#684 <https://github.com/PyWavelets/pywt/pull/684>`__: Rename master branch to main
* `#687 <https://github.com/PyWavelets/pywt/pull/687>`__: Add linter
* `#701 <https://github.com/PyWavelets/pywt/pull/701>`__: Build and test PyWavelets Pyodide wheels in CI
* `#703 <https://github.com/PyWavelets/pywt/pull/703>`__: MAINT: add input validation to \`scales\` argument to \`cwt\`
* `#704 <https://github.com/PyWavelets/pywt/pull/704>`__: DOC: Migrate to \`pydata-sphinx-theme\`
* `#708 <https://github.com/PyWavelets/pywt/pull/708>`__: Keep GitHub Actions up to date with GitHub's Dependabot
* `#709 <https://github.com/PyWavelets/pywt/pull/709>`__: mymindstorm/setup-emscripten --> mymindstorm/setup-emsdk
* `#711 <https://github.com/PyWavelets/pywt/pull/711>`__: CI: tweaks to CI job triggers and names
* `#713 <https://github.com/PyWavelets/pywt/pull/713>`__: Bump the github-actions group with 5 updates
* `#714 <https://github.com/PyWavelets/pywt/pull/714>`__: Upload dev wheels to Anaconda.org + revamp wheels publishing...
* `#715 <https://github.com/PyWavelets/pywt/pull/715>`__: BLD: update build and runtime dependencies for numpy 2.0
* `#716 <https://github.com/PyWavelets/pywt/pull/716>`__: TST/CI: mark some tests as slow and avoid running them in wheel...
* `#717 <https://github.com/PyWavelets/pywt/pull/717>`__: CI: fix patterns for artifact downloads in Anaconda nightly wheels...
* `#719 <https://github.com/PyWavelets/pywt/pull/719>`__: CI: Build \`musllinux\` aarch64 and x86_64 wheels, and native...
* `#720 <https://github.com/PyWavelets/pywt/pull/720>`__: BLD: avoid warnings from including deprecated NumPy API
* `#721 <https://github.com/PyWavelets/pywt/pull/721>`__: Bump the github-actions group with 1 update
* `#723 <https://github.com/PyWavelets/pywt/pull/723>`__: MAINT: use \`numpy-config\` and fix support for numpy 2.0
* #621 < https://github.com/PyWavelets/pywt/issues/621>__ : distutils was deprecated in Python 3.10
PyWavelets 1.5.0
This release is a minor update to 1.4.x. It adds support for Python 3.12
and drops support for Python 3.8. It also adds support for Cython 3.0.
PyWavelets now uses Meson as its build system, and meson-python
as the build backend. This requires no changes from users, a
``pip install pywavelets`` will now use ``meson-python`` under
the hood.
Authors
=======
* Christian Clauss
* Ralf Gommers
* Gregory R. Lee
* Jarrod Millman +
* Evans Doe Ocansey +
* Ahmet Can Solak +
* Stefan van der Walt +
A total of 7 people contributed to this release.
People with a "+" by their names contributed a patch for the first time.
This list of names is automatically generated, and may not be fully complete.
Issues closed for v1.5
-----------------------
* `#621 <https://github.com/PyWavelets/pywt/issues/621>`__: distutils was deprecated in Python 3.10
Pull requests for v1.5
----------------------
* `#667 <https://github.com/PyWavelets/pywt/pull/667>`__: BLD: switch to using Meson as the build system for PyWavelets
* `#669 <https://github.com/PyWavelets/pywt/pull/669>`__: DOC: update docs for setup.py removal, and fix ReadTheDocs build
* `#679 <https://github.com/PyWavelets/pywt/pull/679>`__: MAINT: fix warnings emitted by loading npy/npz data files
* `#680 <https://github.com/PyWavelets/pywt/pull/680>`__: CI: limit contourpy to <1.1, to avoid building win32 from source
* `#681 <https://github.com/PyWavelets/pywt/pull/681>`__: Update dependencies per SPEC 0
* `#682 <https://github.com/PyWavelets/pywt/pull/682>`__: Remove old travis references
* `#683 <https://github.com/PyWavelets/pywt/pull/683>`__: Test on Python 3.12
* `#685 <https://github.com/PyWavelets/pywt/pull/685>`__: Add spin as developer UI to meson
* `#688 <https://github.com/PyWavelets/pywt/pull/688>`__: AppVeyor: Upgrade to Visual Studio 2022 and use python-launcher
* `#690 <https://github.com/PyWavelets/pywt/pull/690>`__: Build Python 3.12 wheels
* `#691 <https://github.com/PyWavelets/pywt/pull/691>`__: Test on final releases on Python 3.12
release v1.4.1, updating classifiers and python_requires in setup.py ( #…
release v1.4.1, updating classifiers and python_requires in setup.py (#…
…657)
* release v1.4.1, fixing python_requires and classiers in setup.py
* drop Python 3.7 test cases
* Drop Python 3.7 tests from Appveyor as well
* Remove Python 3.7 entries in pyproject.toml
Co-authored-by: Ralf Gommers <ralf.gommers@gmail.com>
Nothing published for this version
We are very pleased to announce the release of PyWavelets 1.3. This release is functionally the same as 1.2.0, but we have updated the set of binary w
We are very pleased to announce the release of PyWavelets 1.3. This release is functionally the same as 1.2.0, but we have updated the set of binary wheels provided. Specifically we have added aarch64 wheels for Python 3.7 that were missing in 1.2.0 and have updated the versions of manylinux used for the linux wheels in a manner consistent with NumPy and SciPy. We have also dropped musllinux wheels which were present for some architectures in 1.2.0. We may add them again in the future if they are adopted by NumPy and there is a demand for this architecture.
Removed deprecated import from imp.
We are very pleased to announce the release of PyWavelets 1.2.
This release has new discrete wavelet transforms features incleading a series of multiresolution analysis functions (details below).
PyWavelets has dropped support for Python 3.5 and 3.6 and now supports Python 3.7-3.10.
We also now provide aarch64 linux wheels as well as universal2 and arm64 wheels that are compatible with Apple's M1 processors.
There is a new series of multilevel stationary wavelet transforms (mra, mra2 and mran) suited for multiresolution analysis of 1D, 2D or nD signals, respectively. This MRA analysis is also known as the additive wavelet decomposition because the corresponding inverse functions (imra, imra2 or imran) reconstruct the original signal by simple addition of the components. These are a good alternative to the use of the existing SWT functions when it is important to have features aligned across wavelet scales (see the new demo in demo/mra_vs_swt.py).
There is now an n-dimensional implementation available for the wavelet packet transforms (see class WaveletPacketND).
pywt.data.camera has been replaced by a similar, CC0-licensed image because the original image was determined to only be licensed for non-commercial use. Any users who still need the prior camera image for non-commercial use can find it many places online by performing a web search for "cameraman test image".dwt_single for reflect modes.imp.A total of 6 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.
This release is functionally identical to 1.1.0.
This release is functionally identical to 1.1.0.
This release modified setup.py to mark the package as Python 3.5+ only so pip will not try to install 1.1.1 on older Python versions. To prevent pip from trying to install 1.1.0 on older Python, the source tarball for 1.1.0 was removed from PyPI.
We are very pleased to announce the release of PyWavelets 1.1.
We are very pleased to announce the release of PyWavelets 1.1.
This release includes enhanced functionality for both the stationary wavelet transforms (swt, swt2, swtn) as well as the continuous wavelet transform (cwt). In addition, there are a handful of bug fixes as described in more detail below.
This release has dropped Python 2.7 support and now requires Python >= 3.5.
In addition to these changes to the software itself, a paper describing PyWavelets was recently published in The Journal of Open Source Software: https://joss.theoj.org/papers/10.21105/joss.01237
All swt functions now have a new trim_approx option that can be used to exclude the approximation coefficients from all but the final level of decomposition. This mode makes the output of these functions consistent with the format of the output from the corresponding wavedec functions.
All swt functions also now have a new norm option that, when set to True and used in combination with trim_approx=True, gives a partition of variance across the transform coefficients. In other words, the sum of the variances of all coefficients is equal to the variance of the original data. This partitioning of variance makes the swt transform more similar to the multiple-overlap DWT (MODWT) described in Percival and Walden's book, "Wavelet Methods for Time Series Analysis". (#476)
A demo of this new swt functionality is available at https://github.com/PyWavelets/pywt/blob/master/demo/swt_variance.py
The continuous wavelet transform (cwt) now offers an FFT-based implementation in addition to the previous convolution based one. The new method argument can be set to either 'conv' or 'fft' to select between these two implementations. (#490).
The cwt now also has axis support so that CWTs can be applied in batch along any axis of an n-dimensional array. This enables faster batch transformation of signals. (#509)
When the input to cwt is single precision, the computations are now performed in single precision. This was done both for efficiency and to make cwt handle dtypes consistently with the discrete transforms in PyWavelets. This is a change from the prior behaviour of always performing the cwt in double precision. (#507)
When using complex-valued wavelets with the cwt, the output will now be
the complex conjugate of the result that was produced by PyWavelets 1.0.x. This was done to account for a bug described below. The magnitude of the cwt coefficients will still match those from previous releases. (#439)
For a cwt with complex wavelets, the results in PyWavelets 1.0.x releases
matched the output of Matlab R2012a's cwt. Howveer, older Matlab releases like R2012a had a phase that was of opposite sign to that given in textbook definitions of the CWT (Eq. 2 of Torrence and Compo's review article, "A Practical Guide to Wavelet Analysis"). Consequently, the wavelet coefficients were the complex conjugates of the expected result. This was validated by comparing the results of a transform using cmor1.0-1.0 as compared to the cwt implementation available in Matlab R2017b as well as the function wt.m from the Lancaster University Physics department's MODA toolbox. (#439)
For some boundary modes and data sizes, round-trip dwt/idwt can result in an output that has one additional coefficient. Prior to this relese, this could cause a failure during WaveletPacket or WaveletPacket2D reconstruction. These wavelet packet transforms have now been fixed and round-trip wavelet packet transforms always preserve the original data shape. (#448)
All inverse transforms now handle mixed precision coefficients consistently. Prior to this release some inverse transform raised an error upon encountering mixed precision dtypes in the wavelet subbands. In release 1.1, when the user-provided coefficients are a mixture of single and double precision, all coefficients will be promoted to double precision. (#450)
A bug that caused a failure for iswtn when using user-provided axes with non-uniform shape along the transformed axes has been fixed. (#462)
The PyWavelet test suite now uses pytest rather than nose. (#477)
Cython code has been updated to use language_level=3. (#435)
PyWavelets has adopted the SciPy Code of Conduct. (#521)
PyWavelets 1.0.3 is functionally equivalent to the 1.0.2 release. It was made to archive the JOSS paper about PyWavelets to the 1.0.x branch and serve
PyWavelets 1.0.3 is functionally equivalent to the 1.0.2 release. It was made to archive the JOSS paper about PyWavelets to the 1.0.x branch and serve as a reference corresponding to the version that was peer reviewed.
A deprecated import of Iterable was fixed.
PyWavelets 1.0.2 is a bug-fix and maintenance release with no new features compared to 1.0.1.
A bug in iswtn when using some combinations of user-specified axes was fixed.
A potential error related to coefficient shape mismatch during WaveletPacket or WaveletPacket2D reconstruction was fixed.
A deprecated import of Iterable was fixed.
The spelling of "Garrote" was fixed in the wavelet thresholding documentation. For backwards compatibility with 1.0.0, the incorrect ("garotte") spelling is also accepted for the mode parameter of pywt.threshold.
The spelling of "supported" was fixed in one of the ValueError messages that can be returned by pywt.cwt.
Cython language compatibility has been pinned to language_level = '2'. This is in contrast to the master branch which is now using language_level = '3'. To support this, the minimum supported Cython version
has been raised to 0.23.5.
PyWavelets 1.0.1 is a bug-fix release with no new features compared to 1.0.0.
PyWavelets 1.0.1 is a bug-fix release with no new features compared to 1.0.0.
Key-based assignment of coefficients to a FswavedecnResult object (i.e. via
its setitem method) has been fixed.
The order that the individual subband coefficients were stacked by the
function pywt.ravel_coeffs is now guaranteed to be consistent across all
supported Python versions. Explicit alphabetic ordering of subband coefficient
names is used for consitent ordering regardless of Python version.
See more on this in the section on deprecated features.
We are very pleased to announce the release of PyWavelets 1.0. We view this version number as a milestone in the project's now more than a decade long history. It reflects that PyWavelets has stabilized over the past few years, and is now a mature package which a lot of other important packages depend on. A listing of those package won't be complete, but some we are aware of are:
This release requires Python 2.7 or >=3.5 and NumPy 1.9.1 or greater. The 1.0 release will be the last release supporting Python 2.7. It will be a Long Term Support (LTS) release, meaning that we will backport critical bug fixes to 1.0.x for as long as Python itself does so (i.e. until 1 Jan 2020).
Many common synthetic 1D test signals have been implemented in the new function pywt.data.demo_signals to encourage reproducible research. To get a list of the available signals, call pywt.data.demo_signals('list').
These signals have been validated to match the test signals of the same name from the Wavelab toolbox (with the kind permission of Dr. David Donoho).
The Cython modules and underlying C library can now be built with C99 complex support when supported by the compiler. Doing so improves performance when running wavelet transforms on complex-valued data. On POSIX systems (Linux, Mac OS X), C99 complex support is enabled by default at build time. The user can set the environment variable USE_C99_COMPLEX to 0 or 1 to manually disable or enable C99 support at compile time.
The continuous wavelet transform, cwt, now also accepts complex-valued data.
The continous wavelets "cmor", "shan" and "fbsp" now let the user specify attributes such as their center frequency and bandwidth that were previously fixed. See more on this in the section on deprecated features.
A new variant of the multilevel n-dimensional DWT has been implemented. It is known as the fully separable wavelet transform (FSWT). The functions fswavedecn fswaverecn correspond to the forward and inverse transforms, respectively. This differs from the existing wavedecn and waverecn in dimensions >= 2 in that all levels of decomposition are performed along a single axis prior to moving on to the next.
pywt.threshold now supports non-negative Garotte thresholding (mode='garotte'). There is also a new function pywt.threshold_firm that implements firm (semi-soft) thresholding. Both of the these new thresholding methods are intermediate between soft and hard thresholding.
Two new boundary handling modes for the discrete wavelet transforms have been implemented. These correspond to whole-sample and half-sample anti-symmetric boundary conditions (antisymmetric and antireflect).
The function ravel_coeffs can be used to ravel all coefficients from wavedec, wavedec2 or wavedecn into a single 1D array. Unraveling back into a list of individual n-dimensional coefficients can be performed by
unravel_coeffs.
The new function wavedecn_size outputs the total number of coefficients that will be produced by a wavedecn decomposition. The function wavedecn_shapes returns full shape information for all coefficient arrays produced by wavedecn. These functions provide the size/shape information without having to explicitly compute a transform.
The continous wavelets with names "cmor", "shan" and "fbsp" should now be modified to include formerly hard-coded attributes such as their center frequency and bandwidth. Use of the bare names "cmor". "shan" and "fbsp" is now deprecated. For "cmor" (and "shan"), the form of the wavelet name is now "cmorB-C" ("shanB-C") where B and C are floats representing the bandwidth frequency and center frequency. For "fbsp" the form should now incorporate three floats as in "fbspM-B-C" where M is the spline order and B and C are the bandwidth and center frequencies.
Python 2.6, 3.3 and 3.4 are no longer supported.
The order of coefficients returned by swt2 and input to iswt2 have been reversed so that the decomposition levels are now returned in descending rather than ascending order. This makes these 2D stationary wavelet functions consistent with all of the other multilevel discrete transforms in PyWavelets.
For wavedec, wavedec2 and wavedecn, the ability for the user to specify a level that is greater than the value returned by dwt_max_level has been restored. A UserWarning is raised instead of a ValueError in this case.
Assigning new data to the Node or Node2D no longer forces a cast to float64 when the data is one of the other dtypes supported by the dwt (float32, complex64, complex128).
Calling pywt.threshold with mode='soft' now works properly for complex-valued inputs.
A segfault when running multiple swt2 or swtn transforms concurrently has been fixed.
Several instances of deprecated numpy multi-indexing that caused warnings in numpy >=1.15 have been resolved.
The 2d inverse stationary wavelet transform, iswt2, now supports non-square inputs (an unnecessary check for square inputs was removed).
Wavelet packets no longer convert float32 to float64 upon assignment to nodes.
Doctests have been updated to also work with NumPy >= 1.14,
Indexing conventions have been updated to avoid FutureWarnings in NumPy 1.15.
Python 3.7 is now officially supported.
A total of 16 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.
PyWavelets 0.5.2 is a bug-fix release with no new features compared to 0.5.1.
PyWavelets 0.5.2 is a bug-fix release with no new features compared to 0.5.1.
The pywt.data.nino data reader is now compatible with numpy 1.12. (#273)
The wp_scalogram.py demo is now compatibile with matplotlib 2.0. (#276)
Fixed a sporadic segmentation fault affecting stationary wavelet transforms of multi-dimensional data. (#289)
idwtn now treats coefficients set to None to be treated as zeros (#291).
This makes the behavior consistent with its docstring as well as idwt2.
Previously this raised an error.
The tests are now included when installing from wheels or when running
python setup.py install. (#292)
A bug leading to a potential RuntimeError was fixed in waverec.
This bug only affected transforms where the data was >1D and the transformed
axis was not the first axis of the array. (#294).
In release 0.5.0 the wrong edge mode was used for the following three deprecated modes: ppd, sp1, and per. All deprecated edge mode names are now corr…
PyWavelets 0.5.1 is a bug-fix release with no new features compared to 0.5.0
In release 0.5.0 the wrong edge mode was used for the following three
deprecated modes: ppd, sp1, and per. All deprecated edge mode
names are now correctly converted to the corresponding new names.
One-dimensional discrete wavelet transforms did not properly respect the
axis argument for complex-valued data. Prior to this release, the last
axis was always transformed for arrays with complex dtype. This fix affects
dwt, idwt, wavedec, waverec.
A FutureWarning was added to swt2 and iswt2 to warn about a pending backwards incompatible change to the order of the coefficients in the list returne…
PyWavelets is a Python toolbox implementing both discrete and continuous wavelet transforms (mathematical time-frequency transforms) with a wide range of built-in wavelets. C/Cython are used for the low-level routines, enabling high performance. Key Features of PyWavelets are:
PyWavelets 0.5.0 is the culmination of 1 year of work. In addition to several new features, substantial refactoring of the underlying C and Cython code have been made.
This release requires Python 2.6, 2.7 or 3.3-3.5 and NumPy 1.9.1 or greater. This will be the final release supporting Python 2.6 and 3.3.
Highlights of this release include:
A wide range of continous wavelets are now available. These include the following:
gaus1...gaus8)mexh)morl)cgau1...cgau8)shan)fbsp)cmor)Also, see the new CWT-related demo: demo/cwt_analysis.py
Additional Debauchies wavelets (db20...db38) and Coiflets
(coif6...coif17) have been added.
Discrete wavelet transforms support a new extension mode, reflect. This
mode pads an array symmetrically, but without repeating the edge value. As an
example::
pad array pad
4 3 2 | 1 2 3 4 5 | 4 3 2
This differs from symmetric, which repeats the values at the boundaries::
pad array pad
3 2 1 | 1 2 3 4 5 | 5 4 3
New routines to convert the coefficients returned by multilevel DWT routines
to and from a single n-dimensional array have been added.
pywt.coeffs_to_array concatenates the output of wavedec, wavedec2
or wavedecn into a single numpy array. pywt.array_to_coeffs can be
used to transform back from a single coefficient array to a format appropriate
for waverec, waverec2 or waverecn.
Cython code calling the wavelet filtering routines (DWT and SWT) now releases the global interpreter lock (GIL) where possible. A potential use case is in speeding up the batch computation of several large DWTs using multi-threading (e.g. via concurrent.futures).
The axis specific transform support introduced in the prior release was
extended to the multilevel DWT transforms. All wavedec* and waverec*
routines have a new axis (1D) or axes (2D, nD) keyword argument. If
unspecified the default behaviour is to transform all axes of the input.
Stationary wavelet transforms are now faster when the number of levels is greater than one. The improvement can be very large (multiple orders of magnitude) for transforms with a large number of levels.
A FutureWarning was added to swt2 and iswt2 to warn about a pending
backwards incompatible change to the order of the coefficients in the list
returned by these routines. The actual change will not occur until the next
release. Transform coefficients will be returned in descending rather than
ascending order. This change is being made for consistency with all other
existing multi-level transforms in PyWavelets.
demo/image_blender.py was updated to support the new api of Pillow 3.x
A bug related to size of assumed size_t on some platforms/compilers
(e.g. Windows with mingw64) was fixed.
Fix to memory leak in (i)dwt_axis
Fix to a performance regression in idwt and iswt that was introduced
in v0.4.0.
Fixed a bug in dwtn and idwtn for data with complex dtype when
axes != None.
The minimum supported numpy version has been increased to 1.9.1.
Test coverage (including for the Cython and C code) via
Codecov <https://codecov.io/>_ was added and the overall test coverage has
been improved.
A substantial overhaul of the C extension code has been performed. Custom templating is no longer used. The intention is to make this code easier to maintain and expand in the future.
The Cython code has been split out into a multiple files to hopefully make relevant portions of the wrappers easier to find for future developers.
setup.py now relies on setuptools in all cases (rather than distutils).
A total of 10 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.
Issues closed in this release: see here
Pull requests merged in this release: see here
PyWavelets 0.4.0 is the culmination of 6 months of work. In addition to several new features, some changes and deprecations have been made to streamli…
PyWavelets 0.4.0 is the culmination of 6 months of work. In addition to several new features, some changes and deprecations have been made to streamline the API.
This release requires Python 2.6, 2.7 or 3.3-3.5 and NumPy 1.6.2 or greater.
Highlights of this release include:
1D (iswt) and 2D (iswt2) inverse stationary wavelet transforms were
added. These currently only support even length inputs.
The multidimensional DWT and IDWT code was refactored and is now an order of
magnitude faster than in previous releases. The following functions benefit:
dwt2, idwt2, dwtn, idwtn.
64 and 128-bit complex data types are now supported by all wavelet transforms.
The existing 1D and 2D multilevel transforms were supplemented with an nD implementation.
All wavelet transform functions now support explicit specification of the axis or axes upon which to perform the transform.
Two additional 2D grayscale images were added (camera, ascent). The
previously existing 1D ECG data (ecg) and the 2D aerial image (aero)
used in the demos can also now be imported via functions defined in
pywt.data (e.g. camera = pywt.data.camera())
A number of functions have been renamed, the old names are deprecated and will be removed in a future release:
intwave, renamed to integrate_waveletcentrfrq, renamed to central_frequencyscal2frq, renamed to scale2frequencyorthfilt, renamed to orthogonal_filter_bankIntegration of general signals (i.e. not wavelets) with integrate_wavelet
is deprecated.
The MODES object and its attributes are deprecated. The new name is
Modes, and the attribute names are expanded:
zpd, renamed to zerocpd, renamed to constantsp1, renamed to smoothsym, renamed to symmetricppd, renamed to periodicper, renamed to periodizationidwt no longer takes a correct_size parameter. As a consequence,
idwt2 inputs must match exactly in length. For multilevel transforms, where
arrays differing in size by one element may be produced, use the waverec
functions from the multilevel module instead.
float32 inputs were not always respected. All transforms now return float32 outputs when called using float32 inputs.
Incorrect detail coefficients were returned by downcoef when level > 1.
Much of the API documentation is now autogenerated from the corresponding function docstrings. The numpydoc sphinx extension is now needed to build the documentation.
A total of 8 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.
Issues closed in this release: see here
Pull requests merged in this release: see here
A 0.4.0 release will follow shortly, and will contain more significant new features as well as changes/deprecations to streamline the API.
PyWavelets 0.3.0 is the first release of the package in 3 years. It is the result of a significant effort of a growing development team to modernize the package, to provide Python 3.x support and to make a start with providing new features as well as improved performance. A 0.4.0 release will follow shortly, and will contain more significant new features as well as changes/deprecations to streamline the API.
This release requires Python 2.6, 2.7 or 3.3-3.5 and NumPy 1.6.2 or greater.
Highlights of this release include:
The test suite can be run with nosetests pywt or with::
>>> import pywt
>>> pywt.test()
The function pywt.idwtn, which provides n-dimensional inverse DWT, has been
added. It complements idwt, idwt2 and dwtn.
The function pywt.threshold has been added. It unifies the four thresholding
functions that are still provided in the pywt.thresholding namespace.
None in this release.
Development has moved to a new repo <https://github.com/PyWavelets/pywt>_.
Everyone with an interest in wavelets is welcome to contribute!
Building wheels, building with python setup.py develop and many other
standard ways to build and install PyWavelets are supported now.
A total of 9 people contributed to this release. People with a "+" by their names contributed a patch for the first time. This list of names is automatically generated, and may not be fully complete.
Issues closed in this release: see here
Pull requests merged in this release: see here
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →