[Python-checkins] cpython: #17818: aifc.getparams now returns a namedtuple.
r.david.murray
python-checkins at python.org
Thu Jul 25 22:12:23 CEST 2013
http://hg.python.org/cpython/rev/560c6e9d1beb
changeset: 84825:560c6e9d1beb
user: R David Murray <rdmurray at bitdance.com>
date: Thu Jul 25 16:12:01 2013 -0400
summary:
#17818: aifc.getparams now returns a namedtuple.
Patch by Claudiu Popa.
files:
Doc/library/aifc.rst | 4 ++-
Doc/whatsnew/3.4.rst | 6 +++++
Lib/aifc.py | 17 +++++++++-----
Lib/test/test_aifc.py | 32 +++++++++++++++++++++++++++++
Lib/test/test_pyclbr.py | 2 +-
Misc/NEWS | 2 +
6 files changed, 55 insertions(+), 8 deletions(-)
diff --git a/Doc/library/aifc.rst b/Doc/library/aifc.rst
--- a/Doc/library/aifc.rst
+++ b/Doc/library/aifc.rst
@@ -96,7 +96,9 @@
.. 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
--- a/Doc/whatsnew/3.4.rst
+++ b/Doc/whatsnew/3.4.rst
@@ -173,6 +173,12 @@
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
--- a/Lib/aifc.py
+++ b/Lib/aifc.py
@@ -69,7 +69,7 @@
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 @@
_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 @@
## 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 @@
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
--- a/Lib/test/test_aifc.py
+++ b/Lib/test/test_aifc.py
@@ -3,6 +3,7 @@
import os
import io
import struct
+import pickle
import aifc
@@ -31,6 +32,7 @@
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 @@
(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
--- a/Lib/test/test_pyclbr.py
+++ b/Lib/test/test_pyclbr.py
@@ -158,7 +158,7 @@
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')
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -166,6 +166,8 @@
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.
--
Repository URL: http://hg.python.org/cpython
More information about the Python-checkins
mailing list