diff options
author | R David Murray <rdmurray@bitdance.com> | 2013-07-25 20:12:01 (GMT) |
---|---|---|
committer | R David Murray <rdmurray@bitdance.com> | 2013-07-25 20:12:01 (GMT) |
commit | 4d35e75ca069b51ffdac7b34dad4ffb77e72a598 (patch) | |
tree | 0b5cbaf639fc047ed4fd464371fcef2f8ccdcf13 | |
parent | 840c310a2577459dd9f6ac9f5f9b136d7f4829f8 (diff) | |
download | cpython-4d35e75ca069b51ffdac7b34dad4ffb77e72a598.zip cpython-4d35e75ca069b51ffdac7b34dad4ffb77e72a598.tar.gz cpython-4d35e75ca069b51ffdac7b34dad4ffb77e72a598.tar.bz2 |
#17818: aifc.getparams now returns a namedtuple.
Patch by Claudiu Popa.
-rw-r--r-- | Doc/library/aifc.rst | 4 | ||||
-rw-r--r-- | Doc/whatsnew/3.4.rst | 6 | ||||
-rw-r--r-- | Lib/aifc.py | 17 | ||||
-rw-r--r-- | Lib/test/test_aifc.py | 32 | ||||
-rw-r--r-- | Lib/test/test_pyclbr.py | 2 | ||||
-rw-r--r-- | Misc/NEWS | 2 |
6 files changed, 55 insertions, 8 deletions
diff --git a/Doc/library/aifc.rst b/Doc/library/aifc.rst index f8a6ab7..c1cd215 100644 --- a/Doc/library/aifc.rst +++ b/Doc/library/aifc.rst @@ -96,7 +96,9 @@ following methods: .. method:: aifc.getparams() - Return a tuple consisting of all of the above values in the above order. + Returns a :func:`~collections.namedtuple` ``(nchannels, sampwidth, + framerate, nframes, comptype, compname)``, equivalent to output of the + :meth:`get\*` methods. .. method:: aifc.getmarkers() diff --git a/Doc/whatsnew/3.4.rst b/Doc/whatsnew/3.4.rst index 2b114f1..40b8243 100644 --- a/Doc/whatsnew/3.4.rst +++ b/Doc/whatsnew/3.4.rst @@ -173,6 +173,12 @@ be specified on the command line, and ``-f`` is a shorthand for ``-o FAIL_FAST`` (to parallel the similar option supported by the :mod:`unittest` CLI). (Contributed by R. David Murray in :issue:`11390`.) +aifc +---- + +The :meth:`~aifc.getparams` method now returns a namedtuple rather than a +plain tuple. (Contributed by Claudiu Popa in :issue:`17818`.) + functools --------- diff --git a/Lib/aifc.py b/Lib/aifc.py index 67ea5da..ae5fd6d 100644 --- a/Lib/aifc.py +++ b/Lib/aifc.py @@ -69,7 +69,7 @@ This returns an instance of a class with the following public methods: getcomptype() -- returns compression type ('NONE' for AIFF files) getcompname() -- returns human-readable version of compression type ('not compressed' for AIFF files) - getparams() -- returns a tuple consisting of all of the + getparams() -- returns a namedtuple consisting of all of the above in the above order getmarkers() -- get the list of marks in the audio file or None if there are no marks @@ -252,6 +252,11 @@ def _write_float(f, x): _write_ulong(f, lomant) from chunk import Chunk +from collections import namedtuple + +_aifc_params = namedtuple('_aifc_params', + 'nchannels sampwidth framerate nframes comptype compname') + class Aifc_read: # Variables used in this class: @@ -378,9 +383,9 @@ class Aifc_read: ## return self._version def getparams(self): - return self.getnchannels(), self.getsampwidth(), \ - self.getframerate(), self.getnframes(), \ - self.getcomptype(), self.getcompname() + return _aifc_params(self.getnchannels(), self.getsampwidth(), + self.getframerate(), self.getnframes(), + self.getcomptype(), self.getcompname()) def getmarkers(self): if len(self._markers) == 0: @@ -658,8 +663,8 @@ class Aifc_write: def getparams(self): if not self._nchannels or not self._sampwidth or not self._framerate: raise Error('not all parameters set') - return self._nchannels, self._sampwidth, self._framerate, \ - self._nframes, self._comptype, self._compname + return _aifc_params(self._nchannels, self._sampwidth, self._framerate, + self._nframes, self._comptype, self._compname) def setmark(self, id, pos, name): if id <= 0: diff --git a/Lib/test/test_aifc.py b/Lib/test/test_aifc.py index 98d43e4..05e4ca0 100644 --- a/Lib/test/test_aifc.py +++ b/Lib/test/test_aifc.py @@ -3,6 +3,7 @@ import unittest import os import io import struct +import pickle import aifc @@ -31,6 +32,7 @@ class AIFCTest(unittest.TestCase): def test_params(self): f = self.f = aifc.open(self.sndfilepath) + params = f.getparams() self.assertEqual(f.getfp().name, self.sndfilepath) self.assertEqual(f.getnchannels(), 2) self.assertEqual(f.getsampwidth(), 2) @@ -43,6 +45,36 @@ class AIFCTest(unittest.TestCase): (2, 2, 48000, 14400, b'NONE', b'not compressed'), ) + params = f.getparams() + self.assertEqual(params.nchannels, 2) + self.assertEqual(params.sampwidth, 2) + self.assertEqual(params.framerate, 48000) + self.assertEqual(params.nframes, 14400) + self.assertEqual(params.comptype, b'NONE') + self.assertEqual(params.compname, b'not compressed') + + def test_params_added(self): + f = self.f = aifc.open(TESTFN, 'wb') + f.aiff() + f.setparams((1, 1, 1, 1, b'NONE', b'')) + f.close() + + f = self.f = aifc.open(TESTFN, 'rb') + params = f.getparams() + self.assertEqual(params.nchannels, f.getnchannels()) + self.assertEqual(params.sampwidth, f.getsampwidth()) + self.assertEqual(params.framerate, f.getframerate()) + self.assertEqual(params.nframes, f.getnframes()) + self.assertEqual(params.comptype, f.getcomptype()) + self.assertEqual(params.compname, f.getcompname()) + + def test_getparams_picklable(self): + self.f = aifc.open(self.sndfilepath) + params = self.f.getparams() + dump = pickle.dumps(params) + self.assertEqual(pickle.loads(dump), params) + self.f.close() + def test_context_manager(self): with open(self.sndfilepath, 'rb') as testfile: with aifc.open(testfile) as f: diff --git a/Lib/test/test_pyclbr.py b/Lib/test/test_pyclbr.py index e83989e..c094455 100644 --- a/Lib/test/test_pyclbr.py +++ b/Lib/test/test_pyclbr.py @@ -158,7 +158,7 @@ class PyclbrTest(TestCase): cm('random', ignore=('Random',)) # from _random import Random as CoreGenerator cm('cgi', ignore=('log',)) # set with = in module cm('pickle') - cm('aifc', ignore=('openfp',)) # set with = in module + cm('aifc', ignore=('openfp', '_aifc_params')) # set with = in module cm('sre_parse', ignore=('dump',)) # from sre_constants import * cm('pdb') cm('pydoc') @@ -166,6 +166,8 @@ Core and Builtins Library ------- +- Issue #17818: aifc.getparams now returns a namedtuple. + - Issue #18549: Eliminate dead code in socket_ntohl() - Issue #18530: Remove additional stat call from posixpath.ismount. |