mirror of
https://github.com/python/cpython.git
synced 2025-10-09 16:34:44 +00:00
#17487: wave.getparams now returns a namedtuple.
Patch by Claudiu Popa.
This commit is contained in:
parent
3f5ffbee23
commit
671cd3290b
5 changed files with 38 additions and 8 deletions
|
@ -98,8 +98,9 @@ Wave_read objects, as returned by :func:`.open`, have the following methods:
|
||||||
|
|
||||||
.. method:: Wave_read.getparams()
|
.. method:: Wave_read.getparams()
|
||||||
|
|
||||||
Returns a tuple ``(nchannels, sampwidth, framerate, nframes, comptype,
|
Returns a :func:`~collections.namedtuple` ``(nchannels, sampwidth,
|
||||||
compname)``, equivalent to output of the :meth:`get\*` methods.
|
framerate, nframes, comptype, compname)``, equivalent to output of the
|
||||||
|
:meth:`get\*` methods.
|
||||||
|
|
||||||
|
|
||||||
.. method:: Wave_read.readframes(n)
|
.. method:: Wave_read.readframes(n)
|
||||||
|
|
|
@ -157,6 +157,12 @@ doctest
|
||||||
Added ``FAIL_FAST`` flag to halt test running as soon as the first failure is
|
Added ``FAIL_FAST`` flag to halt test running as soon as the first failure is
|
||||||
detected. (Contributed by R. David Murray and Daniel Urban in :issue:`16522`.)
|
detected. (Contributed by R. David Murray and Daniel Urban in :issue:`16522`.)
|
||||||
|
|
||||||
|
wave
|
||||||
|
----
|
||||||
|
|
||||||
|
The :meth:`~wave.getparams` method now returns a namedtuple rather than a
|
||||||
|
plain tuple. (Contributed by Claudiu Popa in :issue:`17487`.)
|
||||||
|
|
||||||
|
|
||||||
Optimizations
|
Optimizations
|
||||||
=============
|
=============
|
||||||
|
|
|
@ -58,6 +58,22 @@ class TestWave(unittest.TestCase):
|
||||||
output = b'\0' * nframes * nchannels * sampwidth
|
output = b'\0' * nframes * nchannels * sampwidth
|
||||||
self.f.writeframes(output)
|
self.f.writeframes(output)
|
||||||
|
|
||||||
|
def test_getparams(self):
|
||||||
|
self.f = wave.open(TESTFN, 'wb')
|
||||||
|
self.f.setnchannels(nchannels)
|
||||||
|
self.f.setsampwidth(sampwidth)
|
||||||
|
self.f.setframerate(framerate)
|
||||||
|
self.f.close()
|
||||||
|
|
||||||
|
self.f = wave.open(TESTFN, 'rb')
|
||||||
|
params = self.f.getparams()
|
||||||
|
self.assertEqual(params.nchannels, self.f.getnchannels())
|
||||||
|
self.assertEqual(params.nframes, self.f.getnframes())
|
||||||
|
self.assertEqual(params.sampwidth, self.f.getsampwidth())
|
||||||
|
self.assertEqual(params.framerate, self.f.getframerate())
|
||||||
|
self.assertEqual(params.comptype, self.f.getcomptype())
|
||||||
|
self.assertEqual(params.compname, self.f.getcompname())
|
||||||
|
|
||||||
|
|
||||||
def test_main():
|
def test_main():
|
||||||
run_unittest(TestWave)
|
run_unittest(TestWave)
|
||||||
|
|
16
Lib/wave.py
16
Lib/wave.py
|
@ -18,7 +18,7 @@ This returns an instance of a class with the following public methods:
|
||||||
getcomptype() -- returns compression type ('NONE' for linear samples)
|
getcomptype() -- returns compression type ('NONE' for linear samples)
|
||||||
getcompname() -- returns human-readable version of
|
getcompname() -- returns human-readable version of
|
||||||
compression type ('not compressed' linear samples)
|
compression type ('not compressed' linear samples)
|
||||||
getparams() -- returns a tuple consisting of all of the
|
getparams() -- returns a namedtuple consisting of all of the
|
||||||
above in the above order
|
above in the above order
|
||||||
getmarkers() -- returns None (for compatibility with the
|
getmarkers() -- returns None (for compatibility with the
|
||||||
aifc module)
|
aifc module)
|
||||||
|
@ -90,6 +90,10 @@ else:
|
||||||
big_endian = 0
|
big_endian = 0
|
||||||
|
|
||||||
from chunk import Chunk
|
from chunk import Chunk
|
||||||
|
from collections import namedtuple
|
||||||
|
|
||||||
|
_result = namedtuple('params',
|
||||||
|
'nchannels sampwidth framerate nframes comptype compname')
|
||||||
|
|
||||||
class Wave_read:
|
class Wave_read:
|
||||||
"""Variables used in this class:
|
"""Variables used in this class:
|
||||||
|
@ -206,9 +210,9 @@ class Wave_read:
|
||||||
return self._compname
|
return self._compname
|
||||||
|
|
||||||
def getparams(self):
|
def getparams(self):
|
||||||
return self.getnchannels(), self.getsampwidth(), \
|
return _result(self.getnchannels(), self.getsampwidth(),
|
||||||
self.getframerate(), self.getnframes(), \
|
self.getframerate(), self.getnframes(),
|
||||||
self.getcomptype(), self.getcompname()
|
self.getcomptype(), self.getcompname())
|
||||||
|
|
||||||
def getmarkers(self):
|
def getmarkers(self):
|
||||||
return None
|
return None
|
||||||
|
@ -398,8 +402,8 @@ class Wave_write:
|
||||||
def getparams(self):
|
def getparams(self):
|
||||||
if not self._nchannels or not self._sampwidth or not self._framerate:
|
if not self._nchannels or not self._sampwidth or not self._framerate:
|
||||||
raise Error('not all parameters set')
|
raise Error('not all parameters set')
|
||||||
return self._nchannels, self._sampwidth, self._framerate, \
|
return _result(self._nchannels, self._sampwidth, self._framerate,
|
||||||
self._nframes, self._comptype, self._compname
|
self._nframes, self._comptype, self._compname)
|
||||||
|
|
||||||
def setmark(self, id, pos, name):
|
def setmark(self, id, pos, name):
|
||||||
raise Error('setmark() not supported')
|
raise Error('setmark() not supported')
|
||||||
|
|
|
@ -32,6 +32,9 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #17487: The wave getparams method now returns a namedtuple rather than
|
||||||
|
a plain tuple.
|
||||||
|
|
||||||
- Issue #17675: socket repr() provides local and remote addresses (if any).
|
- Issue #17675: socket repr() provides local and remote addresses (if any).
|
||||||
Patch by Giampaolo Rodola'
|
Patch by Giampaolo Rodola'
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue