diff -r 267e09700978 Doc/library/sunau.rst --- a/Doc/library/sunau.rst Sun Sep 01 19:52:08 2013 +0200 +++ b/Doc/library/sunau.rst Sun Sep 01 22:10:33 2013 +0300 @@ -150,7 +150,7 @@ .. method:: AU_read.getparams() - Returns a tuple ``(nchannels, sampwidth, framerate, nframes, comptype, + Returns a :func:`~collections.namedtuple` ``(nchannels, sampwidth, framerate, nframes, comptype, compname)``, equivalent to output of the :meth:`get\*` methods. diff -r 267e09700978 Lib/sunau.py --- a/Lib/sunau.py Sun Sep 01 19:52:08 2013 +0200 +++ b/Lib/sunau.py Sun Sep 01 22:10:33 2013 +0300 @@ -51,7 +51,7 @@ getcomptype() -- returns compression type ('NONE' or 'ULAW') getcompname() -- returns human-readable version of compression type ('not compressed' matches 'NONE') - getparams() -- returns a tuple consisting of all of the + getparams() -- returns a namedtuple consisting of all of the above in the above order getmarkers() -- returns None (for compatibility with the aifc module) @@ -103,6 +103,11 @@ is destroyed. """ +from collections import namedtuple + +_sunau_params = namedtuple('_sunau_params', + 'nchannels sampwidth framerate nframes comptype compname') + # from AUDIO_FILE_MAGIC = 0x2e736e64 AUDIO_FILE_ENCODING_MULAW_8 = 1 @@ -242,9 +247,9 @@ return 'not compressed' def getparams(self): - return self.getnchannels(), self.getsampwidth(), \ - self.getframerate(), self.getnframes(), \ - self.getcomptype(), self.getcompname() + return _sunau_params(self.getnchannels(), self.getsampwidth(), + self.getframerate(), self.getnframes(), + self.getcomptype(), self.getcompname()) def getmarkers(self): return None @@ -381,9 +386,9 @@ self.setcomptype(comptype, compname) def getparams(self): - return self.getnchannels(), self.getsampwidth(), \ - self.getframerate(), self.getnframes(), \ - self.getcomptype(), self.getcompname() + return _sunau_getparams(self.getnchannels(), self.getsampwidth(), + self.getframerate(), self.getnframes(), + self.getcomptype(), self.getcompname()) def tell(self): return self._nframeswritten diff -r 267e09700978 Lib/test/test_sunau.py --- a/Lib/test/test_sunau.py Sun Sep 01 19:52:08 2013 +0200 +++ b/Lib/test/test_sunau.py Sun Sep 01 22:10:33 2013 +0300 @@ -1,5 +1,6 @@ from test.support import run_unittest, TESTFN import unittest +import pickle import os import sunau @@ -60,6 +61,27 @@ self.assertEqual(nframes, self.f.getnframes()) self.assertEqual('ULAW', self.f.getcomptype()) self.assertEqual(self.f.readframes(nframes), output) + + def test_getparams(self): + self.f = sunau.open(TESTFN, 'w') + self.f.setnchannels(nchannels) + self.f.setsampwidth(sampwidth) + self.f.setframerate(framerate) + self.f.setcomptype('ULAW', '') + output = b'\0' * nframes * nchannels * sampwidth + self.f.writeframes(output) + self.f.close() + + self.f = sunau.open(TESTFN, 'rb') + params = self.f.getparams() + self.assertEqual(params.nchannels, nchannels) + self.assertEqual(params.sampwidth, sampwidth) + self.assertEqual(params.framerate, framerate) + self.assertEqual(params.nframes, nframes) + self.assertEqual(params.comptype, 'ULAW') + + dump = pickle.dumps(params) + self.assertEqual(pickle.loads(dump), params) self.f.close()