diff --git a/PyWavelets-0.5.2.tar.gz b/PyWavelets-0.5.2.tar.gz deleted file mode 100644 index 68ecea2..0000000 --- a/PyWavelets-0.5.2.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ce36e2f0648ea1781490b09515363f1f64446b0eac524603e5db5e180113bed9 -size 4430706 diff --git a/PyWavelets-1.0.1.tar.gz b/PyWavelets-1.0.1.tar.gz new file mode 100644 index 0000000..18fd266 --- /dev/null +++ b/PyWavelets-1.0.1.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c5cece36d4e17d395be6e9ac6b80ce7b774a1f71c251756c6163e63b6d878dc +size 4544487 diff --git a/add_default_to_switch_statement.patch b/add_default_to_switch_statement.patch deleted file mode 100644 index 2e2e7a4..0000000 --- a/add_default_to_switch_statement.patch +++ /dev/null @@ -1,72 +0,0 @@ -From 91b0a7bdbdd181bfb765246a9ec949b1cf2d12ad Mon Sep 17 00:00:00 2001 -From: "Gregory R. Lee" -Date: Sat, 10 Dec 2016 03:23:39 -0500 -Subject: [PATCH] MAINT: add default to switch statement for - is_discrete_wavelet - -on the Cython side, raise an error if is_discrete_wavelet returns -1 ---- - pywt/_extensions/_pywt.pyx | 15 ++++++++++++--- - pywt/_extensions/c/wavelets.c | 2 ++ - 2 files changed, 14 insertions(+), 3 deletions(-) - -diff --git a/pywt/_extensions/_pywt.pyx b/pywt/_extensions/_pywt.pyx -index 5928d9e7..c9b10a1f 100644 ---- a/pywt/_extensions/_pywt.pyx -+++ b/pywt/_extensions/_pywt.pyx -@@ -33,6 +33,15 @@ _attr_deprecation_msg = ('{old} has been renamed to {new} and will ' - 'of pywt.') - - -+# raises exception if the wavelet name is undefined -+cdef int is_discrete_wav(WAVELET_NAME name): -+ cdef int is_discrete -+ discrete = wavelet.is_discrete_wavelet(name) -+ if discrete == -1: -+ raise ValueError("unrecognized wavelet family name") -+ return discrete -+ -+ - class _Modes(object): - """ - Because the most common and practical way of representing digital signals -@@ -206,7 +215,7 @@ def wavelist(family=None, kind='all'): - return True - - family_code, family_number = wname_to_code(name) -- is_discrete = wavelet.is_discrete_wavelet(family_code) -+ is_discrete = is_discrete_wav(family_code) - if kind == 'discrete': - return is_discrete - else: -@@ -299,7 +308,7 @@ def DiscreteContinuousWavelet(name=u"", object filter_bank=None): - if filter_bank is None: - name = name.lower() - family_code, family_number = wname_to_code(name) -- if (wavelet.is_discrete_wavelet(family_code)): -+ if is_discrete_wav(family_code): - return Wavelet(name, filter_bank) - else: - return ContinuousWavelet(name) -@@ -334,7 +343,7 @@ cdef public class Wavelet [type WaveletType, object WaveletObject]: - # builtin wavelet - self.name = name.lower() - family_code, family_number = wname_to_code(self.name) -- if (wavelet.is_discrete_wavelet(family_code)): -+ if is_discrete_wav(family_code): - self.w = wavelet.discrete_wavelet(family_code, family_number) - if self.w is NULL: - raise ValueError("Invalid wavelet name.") -diff --git a/pywt/_extensions/c/wavelets.c b/pywt/_extensions/c/wavelets.c -index bc783af4..21b4c672 100644 ---- a/pywt/_extensions/c/wavelets.c -+++ b/pywt/_extensions/c/wavelets.c -@@ -42,6 +42,8 @@ int is_discrete_wavelet(WAVELET_NAME name) - return 0; - case CMOR: - return 0; -+ default: -+ return -1; - } - - } diff --git a/python-PyWavelets.changes b/python-PyWavelets.changes index 7d534a7..0e55822 100644 --- a/python-PyWavelets.changes +++ b/python-PyWavelets.changes @@ -1,3 +1,62 @@ +------------------------------------------------------------------- +Fri Jan 4 17:31:38 UTC 2019 - Todd R + +- Update to version 1.0.1 + * 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 +- Update to version 1.0.0 + + New features + * New 1D test signals + * C99 complex support + * complex-valued CWT + * More flexible specification of some continuous wavelets + * Fully Separable Discrete Wavelet Transfrom + * New thresholding methods + * New anti-symmetric boundary modes + * New functions to ravel and unravel wavedecn coefficients + * New functions to determine multilevel DWT coefficient shapes and sizes + + Deprecated features + * 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. + + Backwards incompatible changes + * 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. + + Bugs Fixed + * 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. + + Other changes + * Python 3.7 is now officially supported. +- Remove upstream-included add_default_to_switch_statement.patch + ------------------------------------------------------------------- Wed Jul 18 12:00:14 UTC 2018 - tchvatal@suse.com diff --git a/python-PyWavelets.spec b/python-PyWavelets.spec index 4ff6146..68efbbf 100644 --- a/python-PyWavelets.spec +++ b/python-PyWavelets.spec @@ -1,7 +1,7 @@ # # spec file for package python-PyWavelets # -# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -12,21 +12,21 @@ # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# Please submit bugfixes or comments via http://bugs.opensuse.org/ +# Please submit bugfixes or comments via https://bugs.opensuse.org/ # %{?!python_module:%define python_module() python-%{**} python3-%{**}} Name: python-PyWavelets -Version: 0.5.2 +Version: 1.0.1 Release: 0 Summary: PyWavelets is a Python wavelet transforms module License: MIT Group: Development/Libraries/Python URL: http://pypi.python.org/pypi/PyWavelets/ Source0: https://files.pythonhosted.org/packages/source/P/PyWavelets/PyWavelets-%{version}.tar.gz -# PATCH-FIX-UPSTREAM add_default_to_switch_statement.patch -- Fix no return in nonvoid function error -Patch0: add_default_to_switch_statement.patch +Source10: https://media.readthedocs.org/pdf/pywavelets/v%{version}/pywavelets.pdf +Source11: https://media.readthedocs.org/htmlzip/pywavelets/v%{version}/pywavelets.zip BuildRequires: %{python_module Cython} BuildRequires: %{python_module devel} BuildRequires: %{python_module nose} @@ -34,10 +34,7 @@ BuildRequires: %{python_module numpy-devel >= 1.9.1} BuildRequires: %{python_module setuptools} BuildRequires: fdupes BuildRequires: python-rpm-macros -# Documentation requirements -BuildRequires: python3-Pygments -BuildRequires: python3-Sphinx -BuildRequires: python3-numpydoc +BuildRequires: unzip Requires: python-numpy >= 1.9.1 %python_subpackages @@ -52,9 +49,9 @@ PyWavelets is a Python wavelet transforms module that can do: * Single and double precision calculations * Results compatibility with Matlab Wavelet Toolbox -%package -n %{name}-doc +%package -n %{name}-doc Summary: This package contains the HMTL documentation of %{name} -Group: Documentation/HTML +Group: Documentation/Other Provides: %{python_module PyWavelets-doc = %{version}} %description -n %{name}-doc @@ -68,15 +65,19 @@ PyWavelets is a Python wavelet transforms module that can do: * Single and double precision calculations * Results compatibility with Matlab Wavelet Toolbox -This Package contains the documentation of %{name} in HTML format. +This Package contains the documentation of %{name} in HTML and PDF formats. %prep %setup -q -n PyWavelets-%{version} -%patch0 -p1 +sed -i -e '/^#!\//, 1d' pywt/tests/*.py + +cp %{SOURCE10} . +unzip %{SOURCE11} -d docs +mv docs/pywavelets-* docs/html +rm docs/html/.buildinfo # Make docs non-executable chmod a-x *.rst -chmod a-x *.txt chmod a-x PyWavelets.egg-info/* # Fix wrong-script-interpreter @@ -107,23 +108,22 @@ $python -O -m compileall -d %{$python_sitearch} pywt/tests/ popd } -# Create docs. These need the package to already be built and installed -PYTHONPATH="$PYTHONPATH:%{buildroot}%{python3_sitearch}" make -C doc PAPER=letter html - -# Remove hiden files -find doc/build/html -name '.*' -exec rm {} \; - %check -export CFLAGS="%{optflags} -fno-strict-aliasing" -%python_exec setup.py test +mkdir test +pushd test +%{python_expand export PYTHONPATH=%{buildroot}%{$python_sitearch} +$python -B -c 'import pywt;pywt.test()' +} %files %{python_files} -%doc CHANGES.txt README.rst THANKS.txt +%doc README.rst +%license LICENSE %{python_sitearch}/pywt/ %{python_sitearch}/PyWavelets-%{version}-py*.egg-info %files -n %{name}-doc -%doc doc/build/html -%doc demo/ +%license LICENSE +%doc pywavelets.pdf +%doc docs/html %changelog diff --git a/pywavelets.pdf b/pywavelets.pdf new file mode 100644 index 0000000..840c0d4 --- /dev/null +++ b/pywavelets.pdf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0234c3e5ebb544e304088134a66f470889ac9f14f516c9873edffd9a8df8bea4 +size 514904 diff --git a/pywavelets.zip b/pywavelets.zip new file mode 100644 index 0000000..a448eb6 --- /dev/null +++ b/pywavelets.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:37eebdac36308059990b4b42fb14c63fb7cba3d5d2c631af929874461e57d8e1 +size 1891620