Issue #18901: The sunau getparams method now returns a namedtuple rather than
a plain tuple. Patch by Claudiu Popa.
This commit is contained in:
parent
4c6a020a2d
commit
e06a89655a
|
@ -150,8 +150,9 @@ AU_read objects, as returned by :func:`.open` above, have the following methods:
|
|||
|
||||
.. method:: AU_read.getparams()
|
||||
|
||||
Returns a tuple ``(nchannels, sampwidth, framerate, nframes, comptype,
|
||||
compname)``, equivalent to output of the :meth:`get\*` methods.
|
||||
Returns a :func:`~collections.namedtuple` ``(nchannels, sampwidth,
|
||||
framerate, nframes, comptype, compname)``, equivalent to output of the
|
||||
:meth:`get\*` methods.
|
||||
|
||||
|
||||
.. method:: AU_read.readframes(n)
|
||||
|
|
|
@ -365,6 +365,13 @@ Streaming struct unpacking using :func:`struct.iter_unpack`.
|
|||
(Contributed by Antoine Pitrou in :issue:`17804`.)
|
||||
|
||||
|
||||
sunau
|
||||
-----
|
||||
|
||||
The :meth:`~sunau.getparams` method now returns a namedtuple rather than a
|
||||
plain tuple. (Contributed by Claudiu Popa in :issue:`18901`.)
|
||||
|
||||
|
||||
urllib
|
||||
------
|
||||
|
||||
|
|
19
Lib/sunau.py
19
Lib/sunau.py
|
@ -51,7 +51,7 @@ This returns an instance of a class with the following public methods:
|
|||
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 @@ The close() method is called automatically when the class instance
|
|||
is destroyed.
|
||||
"""
|
||||
|
||||
from collections import namedtuple
|
||||
|
||||
_sunau_params = namedtuple('_sunau_params',
|
||||
'nchannels sampwidth framerate nframes comptype compname')
|
||||
|
||||
# from <multimedia/audio_filehdr.h>
|
||||
AUDIO_FILE_MAGIC = 0x2e736e64
|
||||
AUDIO_FILE_ENCODING_MULAW_8 = 1
|
||||
|
@ -242,9 +247,9 @@ class Au_read:
|
|||
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 @@ class Au_write:
|
|||
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
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
from test.support import run_unittest, TESTFN
|
||||
import unittest
|
||||
import pickle
|
||||
import os
|
||||
|
||||
import sunau
|
||||
|
@ -62,6 +63,27 @@ class SunAUTest(unittest.TestCase):
|
|||
self.assertEqual(self.f.readframes(nframes), output)
|
||||
self.f.close()
|
||||
|
||||
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)
|
||||
|
||||
|
||||
def test_main():
|
||||
run_unittest(SunAUTest)
|
||||
|
|
Loading…
Reference in New Issue