History

Merge branch 'master' into feature/timestretch

Paul Brossier committed 7 years ago

Commit 08d07ce2 parents 9279ba0 2244f0013 files · +97 −29Browse files

Showing the changes to python (10 of 13 files). Show all

Unified · Split

10 files
  1. python/ext/aubio-docstrings.h +1 −1
  2. python/ext/py-fft.c +1 −1
  3. python/ext/py-filter.c +36 −6
  4. python/ext/py-filterbank.c +24 −6
  5. python/ext/py-sink.c +1 −1
  6. python/lib/gen_code.py +4 −1
  7. python/lib/gen_external.py +5 −4
  8. python/tests/test_hztomel.py +14 −5
  9. python/tests/test_phasevoc.py +2 −2
  10. python/tests/utils.py +4 −0
python/ext/aubio-docstrings.h+1−1
@@ -1,7 +1,7 @@
11 #define PYAUBIO_dct_doc \
22 "dct(size=1024)\n"\
33 "\n"\
4− "Compute Discrete Fourier Transorms of Type-II.\n"\
4+ "Compute Discrete Fourier Transforms of Type-II.\n"\
55 "\n"\
66 "Parameters\n"\
77 "----------\n"\
python/ext/py-fft.c+1−1
@@ -3,7 +3,7 @@ · 2 unmodified lines
33 static char Py_fft_doc[] = ""
44 "fft(size=1024)\n"
55 "\n"
6−"Compute Fast Fourier Transorms.\n"
6+"Compute Fast Fourier Transforms.\n"
77 "\n"
88 "Parameters\n"
99 "----------\n"
python/ext/py-filter.c+36−6
@@ -156,8 +156,18 @@ Py_filter_set_c_weighting (Py_filter * self, PyObject *args) · 155 unmodified lines
156156
157157 err = aubio_filter_set_c_weighting (self->o, samplerate);
158158 if (err > 0) {
159− PyErr_SetString (PyExc_ValueError,
160− "error when setting filter to C-weighting");
159+ if (PyErr_Occurred() == NULL) {
160+ PyErr_SetString (PyExc_ValueError,
161+ "error when setting filter to C-weighting");
162+ } else {
163+ // change the RuntimeError into ValueError
164+ PyObject *type, *value, *traceback;
165+ PyErr_Fetch(&type, &value, &traceback);
166+ Py_XDECREF(type);
167+ type = PyExc_ValueError;
168+ Py_XINCREF(type);
169+ PyErr_Restore(type, value, traceback);
170+ }
161171 return NULL;
162172 }
163173 Py_RETURN_NONE;
@@ -174,8 +184,18 @@ Py_filter_set_a_weighting (Py_filter * self, PyObject *args) · 10 unmodified lines
174184
175185 err = aubio_filter_set_a_weighting (self->o, samplerate);
176186 if (err > 0) {
177− PyErr_SetString (PyExc_ValueError,
178− "error when setting filter to A-weighting");
187+ if (PyErr_Occurred() == NULL) {
188+ PyErr_SetString (PyExc_ValueError,
189+ "error when setting filter to A-weighting");
190+ } else {
191+ // change the RuntimeError into ValueError
192+ PyObject *type, *value, *traceback;
193+ PyErr_Fetch(&type, &value, &traceback);
194+ Py_XDECREF(type);
195+ type = PyExc_ValueError;
196+ Py_XINCREF(type);
197+ PyErr_Restore(type, value, traceback);
198+ }
179199 return NULL;
180200 }
181201 Py_RETURN_NONE;
@@ -192,8 +212,18 @@ Py_filter_set_biquad(Py_filter * self, PyObject *args) · 10 unmodified lines
192212
193213 err = aubio_filter_set_biquad (self->o, b0, b1, b2, a1, a2);
194214 if (err > 0) {
195− PyErr_SetString (PyExc_ValueError,
196− "error when setting filter with biquad coefficients");
215+ if (PyErr_Occurred() == NULL) {
216+ PyErr_SetString (PyExc_ValueError,
217+ "error when setting filter with biquad coefficients");
218+ } else {
219+ // change the RuntimeError into ValueError
220+ PyObject *type, *value, *traceback;
221+ PyErr_Fetch(&type, &value, &traceback);
222+ Py_XDECREF(type);
223+ type = PyExc_ValueError;
224+ Py_XINCREF(type);
225+ PyErr_Restore(type, value, traceback);
226+ }
197227 return NULL;
198228 }
199229 Py_RETURN_NONE;
python/ext/py-filterbank.c+24−6
@@ -326,7 +326,10 @@ Py_filterbank_set_triangle_bands (Py_filterbank * self, PyObject *args) · 325 unmodified lines
326326 // change the RuntimeError into ValueError
327327 PyObject *type, *value, *traceback;
328328 PyErr_Fetch(&type, &value, &traceback);
329− PyErr_Restore(PyExc_ValueError, value, traceback);
329+ Py_XDECREF(type);
330+ type = PyExc_ValueError;
331+ Py_XINCREF(type);
332+ PyErr_Restore(type, value, traceback);
330333 }
331334 return NULL;
332335 }
@@ -351,7 +354,10 @@ Py_filterbank_set_mel_coeffs_slaney (Py_filterbank * self, PyObject *args) · 18 unmodified lines
351354 // change the RuntimeError into ValueError
352355 PyObject *type, *value, *traceback;
353356 PyErr_Fetch(&type, &value, &traceback);
354− PyErr_Restore(PyExc_ValueError, value, traceback);
357+ Py_XDECREF(type);
358+ type = PyExc_ValueError;
359+ Py_XINCREF(type);
360+ PyErr_Restore(type, value, traceback);
355361 }
356362 return NULL;
357363 }
@@ -380,7 +386,10 @@ Py_filterbank_set_mel_coeffs (Py_filterbank * self, PyObject *args) · 22 unmodified lines
380386 // change the RuntimeError into ValueError
381387 PyObject *type, *value, *traceback;
382388 PyErr_Fetch(&type, &value, &traceback);
383− PyErr_Restore(PyExc_ValueError, value, traceback);
389+ Py_XDECREF(type);
390+ type = PyExc_ValueError;
391+ Py_XINCREF(type);
392+ PyErr_Restore(type, value, traceback);
384393 }
385394 return NULL;
386395 }
@@ -409,7 +418,10 @@ Py_filterbank_set_mel_coeffs_htk (Py_filterbank * self, PyObject *args) · 22 unmodified lines
409418 // change the RuntimeError into ValueError
410419 PyObject *type, *value, *traceback;
411420 PyErr_Fetch(&type, &value, &traceback);
412− PyErr_Restore(PyExc_ValueError, value, traceback);
421+ Py_XDECREF(type);
422+ type = PyExc_ValueError;
423+ Py_XINCREF(type);
424+ PyErr_Restore(type, value, traceback);
413425 }
414426 return NULL;
415427 }
@@ -463,7 +475,10 @@ Py_filterbank_set_power(Py_filterbank *self, PyObject *args) · 47 unmodified lines
463475 // change the RuntimeError into ValueError
464476 PyObject *type, *value, *traceback;
465477 PyErr_Fetch(&type, &value, &traceback);
466− PyErr_Restore(PyExc_ValueError, value, traceback);
478+ Py_XDECREF(type);
479+ type = PyExc_ValueError;
480+ Py_XINCREF(type);
481+ PyErr_Restore(type, value, traceback);
467482 }
468483 return NULL;
469484 }
@@ -493,7 +508,10 @@ Py_filterbank_set_norm(Py_filterbank *self, PyObject *args) · 23 unmodified lines
493508 // change the RuntimeError into ValueError
494509 PyObject *type, *value, *traceback;
495510 PyErr_Fetch(&type, &value, &traceback);
496− PyErr_Restore(PyExc_ValueError, value, traceback);
511+ Py_XDECREF(type);
512+ type = PyExc_ValueError;
513+ Py_XINCREF(type);
514+ PyErr_Restore(type, value, traceback);
497515 }
498516 return NULL;
499517 }
python/ext/py-sink.c+1−1
@@ -81,7 +81,7 @@ static char Py_sink_close_doc[] = "" · 80 unmodified lines
8181 "Close this sink now.\n"
8282 "\n"
8383 "By default, the sink will be closed before being deleted.\n"
84−"Explicitely closing a sink can be useful to control the number\n"
84+"Explicitly closing a sink can be useful to control the number\n"
8585 "of files simultaneously opened.\n"
8686 "";
8787
python/lib/gen_code.py+4−1
@@ -523,7 +523,10 @@ Pyaubio_{shortname}_set_{param} (Py_{shortname} *self, PyObject *args) · 522 unmodified lines
523523 // change the RuntimeError into ValueError
524524 PyObject *type, *value, *traceback;
525525 PyErr_Fetch(&type, &value, &traceback);
526− PyErr_Restore(PyExc_ValueError, value, traceback);
526+ Py_XDECREF(type);
527+ type = PyExc_ValueError;
528+ Py_XINCREF(type);
529+ PyErr_Restore(type, value, traceback);
527530 }}
528531 return NULL;
529532 }}
python/lib/gen_external.py+5−4
@@ -121,23 +121,24 @@ def get_cpp_output(header=header, usedouble=False): · 120 unmodified lines
121121 print("Running command: {:s}".format(" ".join(cpp_cmd)))
122122 proc = subprocess.Popen(cpp_cmd,
123123 stderr=subprocess.PIPE,
124− stdout=subprocess.PIPE)
124+ stdout=subprocess.PIPE,
125+ universal_newlines=True)
125126 assert proc, 'Proc was none'
126127 cpp_output = proc.stdout.read()
127128 err_output = proc.stderr.read()
128129 if err_output:
129130 print("Warning: preprocessor produced errors or warnings:\n%s" \
130− % err_output.decode('utf8'))
131+ % err_output)
131132 if not cpp_output:
132133 raise_msg = "preprocessor output is empty! Running command " \
133134 + "\"%s\" failed" % " ".join(cpp_cmd)
134135 if err_output:
135− raise_msg += " with stderr: \"%s\"" % err_output.decode('utf8')
136+ raise_msg += " with stderr: \"%s\"" % err_output
136137 else:
137138 raise_msg += " with no stdout or stderr"
138139 raise Exception(raise_msg)
139140 if not isinstance(cpp_output, list):
140− cpp_output = [l.strip() for l in cpp_output.decode('utf8').split('\n')]
141+ cpp_output = [l.strip() for l in cpp_output.split('\n')]
141142
142143 return cpp_output
143144
python/tests/test_hztomel.py+14−5
@@ -4,23 +4,28 @@ from unittest import main · 3 unmodified lines
44 from numpy.testing import TestCase
55 from numpy.testing import assert_equal, assert_almost_equal
66 from _tools import assert_warns
7+from utils import is32bit
78 import numpy as np
89 import aubio
910
1011 from aubio import hztomel, meltohz
1112 from aubio import hztomel_htk, meltohz_htk
1213
13−
1414 class aubio_hztomel_test_case(TestCase):
1515
1616 def test_hztomel(self):
1717 assert_equal(hztomel(0.), 0.)
1818 assert_almost_equal(hztomel(400. / 3.), 2., decimal=5)
1919 assert_almost_equal(hztomel(1000. / 3), 5.)
20− assert_equal(hztomel(200.), 3.)
20+ # on 32bit, some of these tests fails unless compiling with -ffloat-store
21+ try:
22+ assert_equal(hztomel(200.), 3.)
23+ except AssertionError:
24+ if not is32bit(): raise
25+ assert_almost_equal(hztomel(200.), 3., decimal=5)
2126 assert_almost_equal(hztomel(1000.), 15)
22− assert_almost_equal(hztomel(6400), 42)
23− assert_almost_equal(hztomel(40960), 69)
27+ assert_almost_equal(hztomel(6400), 42, decimal=5)
28+ assert_almost_equal(hztomel(40960), 69, decimal=5)
2429
2530 for m in np.linspace(0, 1000, 100):
2631 assert_almost_equal(hztomel(meltohz(m)) - m, 0, decimal=3)
@@ -28,7 +33,11 @@ class aubio_hztomel_test_case(TestCase): · 1 unmodified line
2833 def test_meltohz(self):
2934 assert_equal(meltohz(0.), 0.)
3035 assert_almost_equal(meltohz(2), 400. / 3., decimal=4)
31− assert_equal(meltohz(3.), 200.)
36+ try:
37+ assert_equal(meltohz(3.), 200.)
38+ except AssertionError:
39+ if not is32bit(): raise
40+ assert_almost_equal(meltohz(3.), 200., decimal=5)
3241 assert_almost_equal(meltohz(5), 1000. / 3., decimal=4)
3342 assert_almost_equal(meltohz(15), 1000., decimal=4)
3443 assert_almost_equal(meltohz(42), 6400., decimal=2)
python/tests/test_phasevoc.py+2−2
@@ -1,7 +1,7 @@
11 #! /usr/bin/env python
22
33 from numpy.testing import TestCase, assert_equal, assert_array_less
4−from _tools import parametrize
4+from _tools import parametrize, skipTest
55 from aubio import fvec, cvec, pvoc, float_type
66 import numpy as np
77
@@ -51,7 +51,7 @@ class Test_aubio_pvoc_test_case(object): · 43 unmodified lines
5151 assert_equal (s.phas[s.phas > 0], +np.pi)
5252 assert_equal (s.phas[s.phas < 0], -np.pi)
5353 assert_equal (np.abs(s.phas[np.abs(s.phas) != np.pi]), 0)
54− self.skipTest('pvoc(fvec(%d)).phas != +0, ' % win_s \
54+ skipTest('pvoc(fvec(%d)).phas != +0, ' % win_s \
5555 + 'This is expected when using fftw3 on powerpc.')
5656 assert_equal ( r, 0.)
5757
python/tests/utils.py+4−0
@@ -3,11 +3,15 @@ · 2 unmodified lines
33 import os
44 import re
55 import glob
6+import struct
67 import numpy as np
78 from tempfile import mkstemp
89
910 DEFAULT_SOUND = '22050Hz_5s_brownnoise.wav'
1011
12+def is32bit():
13+ return struct.calcsize("P") * 8 == 32
14+
1115 def array_from_text_file(filename, dtype = 'float'):
1216 realpathname = os.path.join(os.path.dirname(__file__), filename)
1317 return np.loadtxt(realpathname, dtype = dtype)

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t