File add_default_to_switch_statement.patch of Package python-PyWavelets

From 91b0a7bdbdd181bfb765246a9ec949b1cf2d12ad Mon Sep 17 00:00:00 2001
From: "Gregory R. Lee" <grlee77@gmail.com>
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.DiscreteWavelet*> 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;
     }
 
 }
openSUSE Build Service is sponsored by