Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
e2e4313
MAINT: require scipy_doctest>=1.8.0
ev-br May 29, 2025
4f2a870
Merge pull request #805 from ev-br/scipy-doctest-1.8
rgommers May 29, 2025
ddf27d7
BLD/CI: Use cibuildwheel v3 (#810)
agriyakhetarpal Jul 27, 2025
26fe03d
CI: pin setup-python action
rgommers Jul 27, 2025
44464b2
CI: add cp314/cp314t wheel builds; improve cp313t builds
rgommers Jul 27, 2025
3f456b4
DOC: fix typo in a wavelet name (#812)
rgommers Jul 27, 2025
9011ae9
CI: add cp314/cp314t wheel builds; improve cp313t builds (#811)
rgommers Jul 27, 2025
6c84e23
DOC: update copyright end date in license file
rgommers Oct 26, 2024
2e16d28
BLD: require meson-python >=0.18.0 for PEP 639 support
rgommers Oct 26, 2024
546d6c0
MAINT: update license metadata to use PEP 639 style license and SPDX …
rgommers Oct 26, 2024
576a8f1
MAINT: minor tweak to build requirement for Python 3.14
rgommers Jul 27, 2025
6ddffce
Merge pull request #813 from rgommers/ci-cleanup
rgommers Jul 27, 2025
fefa805
Merge pull request #772 from rgommers/pep-639
rgommers Jul 29, 2025
a30ff33
Bump the github-actions group with 2 updates
dependabot[bot] Aug 1, 2025
e0dc00c
Merge pull request #814 from PyWavelets/dependabot/github_actions/git…
rgommers Aug 1, 2025
7f4f74a
DOC: `cwt`: log `scales` in docstring example (#802)
OverLordGoldDragon Aug 3, 2025
4122c7c
ENH: allow user to set `precision` in CWT, increase default to 12 (#570)
OverLordGoldDragon Aug 3, 2025
ee0e24b
CI: test Python 3.14 and 3.14t in regular CI jobs (#815)
rgommers Aug 3, 2025
20d2af4
Merge branch 'phandangthoai-optimal-scalogram' into 2-merge-main-into…
phandangthoai Aug 4, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/emscripten.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ jobs:
uses: actions/checkout@v4

- name: Build and test PyWavelets
uses: pypa/cibuildwheel@faf86a6ed7efa889faf6996aa23820831055001a # v2.23.3
uses: pypa/cibuildwheel@9e4e50bd76b3190f55304387e333f6234823ea9b # v3.1.2
env:
CIBW_PLATFORM: pyodide
CIBW_TEST_REQUIRES: pytest matplotlib
Expand Down
44 changes: 14 additions & 30 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ jobs:
- runs-on: ubuntu-latest
python-version: "3.11"
- runs-on: ubuntu-latest
python-version: "3.11"
python-version: "3.14-dev"
USE_SDIST: 1
OPTIONS_NAME: "install-from-sdist"
- runs-on: ubuntu-latest
Expand All @@ -62,11 +62,8 @@ jobs:
python-version: "3.13"
OPTIONS_NAME: "editable-install"
steps:
- name: Checkout PyWavelets
uses: actions/checkout@v4

- name: Setup Python
uses: actions/setup-python@v5
- uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2
- uses: actions/setup-python@8d9ed9ac5c53483de85588cdf95a591a75ab9f55 # v5.5.0
with:
python-version: ${{ matrix.python-version}}
allow-prereleases: true
Expand Down Expand Up @@ -140,35 +137,25 @@ jobs:
popd

test_pywavelets_linux_free_threaded:
name: linux-cp313t-default
name: linux-cp${{ matrix.python-version }}-default
runs-on: ubuntu-latest
strategy:
# Ensure that a wheel builder finishes even if another fails
fail-fast: false

matrix:
python-version: ["3.13t", "3.14t-dev"]
steps:
- name: Checkout PyWavelets
uses: actions/checkout@v4

# TODO: replace with setup-python when there is support
- uses: deadsnakes/action@e640ac8743173a67cca4d7d77cd837e514bf98e8 # v3.2.0
- uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2
- uses: actions/setup-python@8d9ed9ac5c53483de85588cdf95a591a75ab9f55 # v5.5.0
with:
python-version: "3.13-dev"
nogil: true
python-version: ${{ matrix.python-version}}

- name: Build package
run: |
which python
python --version
pip install --upgrade pip build
# We need nightly wheels for free-threaded support and latest fixes
pip install --pre -i https://pypi.anaconda.org/scientific-python-nightly-wheels/simple cython numpy
pip install pytest meson-python ninja
pip install cython numpy meson-python ninja pytest
pip install . -v --no-build-isolation

- name: Run tests
env:
PYTHON_GIL: 0
run: |
# Move out of source directory to avoid finding local pywt
cd demo
Expand Down Expand Up @@ -196,11 +183,8 @@ jobs:
OPTIONS_NAME: "pre-releases"

steps:
- name: Checkout PyWavelets
uses: actions/checkout@v4

- name: Setup Python
uses: actions/setup-python@v5
- uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2
- uses: actions/setup-python@8d9ed9ac5c53483de85588cdf95a591a75ab9f55 # v5.5.0
with:
python-version: ${{ matrix.python-version}}
allow-prereleases: true
Expand Down Expand Up @@ -253,8 +237,8 @@ jobs:
python ../pywt/tests/test_doc.py
elif [ "${REFGUIDE_CHECK}" == "1" ]; then
# doctests docstrings
pytest --doctest-modules --pyargs pywt -v --doctest-collect=api
pytest --doctest-modules --pyargs pywt.data -v
pytest --doctest-modules --doctest-only-doctests=true --pyargs pywt -v --doctest-collect=api
pytest --doctest-modules --doctest-only-doctests=true --pyargs pywt.data -v
else
pytest --pyargs pywt
fi
Expand Down
79 changes: 20 additions & 59 deletions .github/workflows/wheel_tests_and_release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,38 +34,25 @@ jobs:
fail-fast: false
matrix:
os: [ubuntu-latest]
cibw_python: ["cp311", "cp312", "cp313", "cp313t"]
cibw_python: ["cp311", "cp312", "cp313", "cp313t", "cp314", "cp314t"]
cibw_arch: ["x86_64"]
steps:
- uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2
with:
fetch-depth: 0
- uses: actions/setup-python@v5
- uses: actions/setup-python@8d9ed9ac5c53483de85588cdf95a591a75ab9f55 # v5.5.0
name: Install Python
with:
python-version: "3.12"

- name: Install build deps; set CIBW environment variables
if: ${{ matrix.cibw_python }} == "cp313t"
run: |
PYPI_URL="https://pypi.anaconda.org/scientific-python-nightly-wheels/simple"
CIBW_DEPS="pip install --pre -i $PYPI_URL cython &&\
pip install numpy pytest meson-python ninja"
NO_BUILD_ISOLATION="pip; args: --no-build-isolation"
echo "CIBW_BEFORE_BUILD=$CIBW_DEPS" >> "$GITHUB_ENV"
echo "CIBW_BEFORE_TEST=$CIBW_DEPS" >> "$GITHUB_ENV"
echo "CIBW_BUILD_FRONTEND=$NO_BUILD_ISOLATION" >> "$GITHUB_ENV"

- name: Build the wheel
uses: pypa/cibuildwheel@faf86a6ed7efa889faf6996aa23820831055001a # v2.23.3
uses: pypa/cibuildwheel@9e4e50bd76b3190f55304387e333f6234823ea9b # v3.1.2
with:
output-dir: dist
env:
CIBW_BUILD: ${{ matrix.cibw_python }}-*
CIBW_ARCHS_LINUX: ${{ matrix.cibw_arch }}
CIBW_MANYLINUX_X86_64_IMAGE: manylinux2014
CIBW_MUSLLINUX_X86_64_IMAGE: musllinux_1_2
CIBW_FREE_THREADED_SUPPORT: True
CIBW_ENABLE: cpython-freethreading
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: wheels_linux_${{ matrix.cibw_arch }}_${{ matrix.cibw_python }}
Expand All @@ -79,26 +66,25 @@ jobs:
fail-fast: false
matrix:
os: [ubuntu-22.04-arm]
cibw_python: ["cp311", "cp312", "cp313"]
cibw_python: ["cp311", "cp312", "cp313", "cp313t", "cp314", "cp314t"]
cibw_arch: ["aarch64"]
steps:
- uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2
with:
fetch-depth: 0
- uses: actions/setup-python@v5
- uses: actions/setup-python@8d9ed9ac5c53483de85588cdf95a591a75ab9f55 # v5.5.0
name: Install Python
with:
python-version: "3.12"

- name: Build the wheel
uses: pypa/cibuildwheel@faf86a6ed7efa889faf6996aa23820831055001a # v2.23.3
uses: pypa/cibuildwheel@9e4e50bd76b3190f55304387e333f6234823ea9b # v3.1.2
with:
output-dir: dist
env:
CIBW_BUILD: ${{ matrix.cibw_python }}-*
CIBW_ARCHS_LINUX: ${{ matrix.cibw_arch }}
CIBW_MANYLINUX_AARCH64_IMAGE: manylinux2014
CIBW_MUSLLINUX_AARCH64_IMAGE: musllinux_1_2
CIBW_ENABLE: cpython-freethreading
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: wheels_linux_${{ matrix.cibw_arch }}_${{ matrix.cibw_python }}
Expand All @@ -112,55 +98,42 @@ jobs:
matrix:
# macos-13 is the last runner that supports Intel (x86_64) architecture
os: [macos-13, macos-14]
cibw_python: ["cp311", "cp312", "cp313", "cp313t"]
cibw_python: ["cp311", "cp312", "cp313", "cp313t", "cp314", "cp314t"]
cibw_arch: ["x86_64", "arm64"]
exclude:
- os: macos-14
cibw_arch: "x86_64"
- os: macos-13
cibw_arch: "arm64"
- os: macos-13
cibw_arch: "x86_64"
cibw_python: "cp313t"
steps:
- uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2
with:
fetch-depth: 0

- uses: actions/setup-python@v5
- uses: actions/setup-python@8d9ed9ac5c53483de85588cdf95a591a75ab9f55 # v5.5.0
name: Install Python
with:
python-version: "3.12"

- name: Install build deps; set CIBW environment variables
if: ${{ matrix.cibw_python }} == "cp313t"
run: |
PYPI_URL="https://pypi.anaconda.org/scientific-python-nightly-wheels/simple"
CIBW_DEPS="pip install --pre -i $PYPI_URL cython &&\
pip install numpy pytest meson-python ninja"
NO_BUILD_ISOLATION="pip; args: --no-build-isolation"
echo "CIBW_BEFORE_BUILD=$CIBW_DEPS" >> "$GITHUB_ENV"
echo "CIBW_BEFORE_TEST=$CIBW_DEPS" >> "$GITHUB_ENV"
echo "CIBW_BUILD_FRONTEND=$NO_BUILD_ISOLATION" >> "$GITHUB_ENV"

- name: Build wheels for CPython (macOS) (x86_64)
if: matrix.cibw_arch == 'x86_64'
uses: pypa/cibuildwheel@faf86a6ed7efa889faf6996aa23820831055001a # v2.23.3
uses: pypa/cibuildwheel@9e4e50bd76b3190f55304387e333f6234823ea9b # v3.1.2
with:
output-dir: dist
env:
CIBW_BUILD: ${{ matrix.cibw_python }}-*
CIBW_ARCHS_MACOS: ${{ matrix.cibw_arch }}
CIBW_ENABLE: cpython-freethreading

- name: Build wheels for CPython (macOS) (arm64)
if: matrix.cibw_arch == 'arm64'
uses: pypa/cibuildwheel@faf86a6ed7efa889faf6996aa23820831055001a # v2.23.3
uses: pypa/cibuildwheel@9e4e50bd76b3190f55304387e333f6234823ea9b # v3.1.2
with:
output-dir: dist
env:
CIBW_BUILD: ${{ matrix.cibw_python }}-*
CIBW_ARCHS_MACOS: ${{ matrix.cibw_arch }}
CIBW_FREE_THREADED_SUPPORT: True
CIBW_ENABLE: cpython-freethreading

- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
Expand All @@ -176,13 +149,13 @@ jobs:
matrix:
os: [windows-latest]
cibw_arch: ["AMD64", "x86"]
cibw_python: ["cp311", "cp312", "cp313", "cp313t"]
cibw_python: ["cp311", "cp312", "cp313", "cp313t", "cp314", "cp314t"]
steps:
- uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2
with:
fetch-depth: 0

- uses: actions/setup-python@v5
- uses: actions/setup-python@8d9ed9ac5c53483de85588cdf95a591a75ab9f55 # v5.5.0
name: Install Python
with:
python-version: "3.12"
Expand All @@ -199,26 +172,14 @@ jobs:
with:
architecture: x64

- name: Install build deps; set CIBW environment variables
if: ${{ matrix.cibw_python }} == "cp313t"
shell: bash -el {0}
run: |
PYPI_URL="https://pypi.anaconda.org/scientific-python-nightly-wheels/simple"
CIBW_DEPS="pip install --pre -i $PYPI_URL cython numpy &&\
pip install pytest meson-python ninja"
NO_BUILD_ISOLATION="pip; args: --no-build-isolation"
echo "CIBW_BEFORE_BUILD=$CIBW_DEPS" >> "$GITHUB_ENV"
echo "CIBW_BEFORE_TEST=$CIBW_DEPS" >> "$GITHUB_ENV"
echo "CIBW_BUILD_FRONTEND=$NO_BUILD_ISOLATION" >> "$GITHUB_ENV"

- name: Build Windows wheels for CPython
uses: pypa/cibuildwheel@faf86a6ed7efa889faf6996aa23820831055001a # v2.23.3
uses: pypa/cibuildwheel@9e4e50bd76b3190f55304387e333f6234823ea9b # v3.1.2
with:
output-dir: dist
env:
CIBW_BUILD: ${{ matrix.cibw_python }}-*
CIBW_ARCHS_WINDOWS: ${{ matrix.cibw_arch }}
CIBW_FREE_THREADED_SUPPORT: True
CIBW_ENABLE: cpython-freethreading

- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
Expand All @@ -243,7 +204,7 @@ jobs:
with:
fetch-depth: 0

- uses: actions/setup-python@v5
- uses: actions/setup-python@8d9ed9ac5c53483de85588cdf95a591a75ab9f55 # v5.5.0
name: Install Python
with:
python-version: "3.12"
Expand Down Expand Up @@ -275,7 +236,7 @@ jobs:
TWINE_PASSWORD: ${{ secrets.TWINE_TOKEN }}

- name: Github release
uses: softprops/action-gh-release@da05d552573ad5aba039eaac05058a918a7bf631 # v2.2.2
uses: softprops/action-gh-release@72f2c25fcb47643c292f7107632f7a47c1df5cd8 # v2.3.2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_REPOSITORY: ${{ github.repository }}
Expand Down
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Copyright (c) 2006-2012 Filip Wasilewski <http://en.ig.ma/>
Copyright (c) 2012-2020 The PyWavelets Developers <https://github.com/PyWavelets/pywt>
Copyright (c) 2012- The PyWavelets Developers <https://github.com/PyWavelets/pywt>

Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
Expand Down
10 changes: 0 additions & 10 deletions LICENSES_bundled.txt

This file was deleted.

2 changes: 1 addition & 1 deletion doc/source/ref/cwt.rst
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ where :math:`B` is the bandwidth and :math:`C` is the center frequency.

Frequency B-Spline Wavelets
^^^^^^^^^^^^^^^^^^^^^^^^^^^
The frequency B-spline wavelets (``"fpspM-B-C"`` with integer M and floating
The frequency B-spline wavelets (``"fbspM-B-C"`` with integer M and floating
point B, C) correspond to the following wavelets:

.. math::
Expand Down
30 changes: 30 additions & 0 deletions licenses_bundled/LICENSE_numpy.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
Copyright (c) 2005-2024, NumPy Developers.
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:

* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.

* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided
with the distribution.

* Neither the name of the NumPy Developers nor the names of any
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 changes: 30 additions & 0 deletions licenses_bundled/LICENSE_scipy.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
Copyright (c) 2001-2002 Enthought, Inc. 2003-2024, SciPy Developers.
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:

1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided
with the distribution.

3. Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Loading