Kaydet (Commit) 671cd329 authored tarafından R David Murray's avatar R David Murray

#17487: wave.getparams now returns a namedtuple.

Patch by Claudiu Popa.
üst 3f5ffbee
...@@ -98,8 +98,9 @@ Wave_read objects, as returned by :func:`.open`, have the following methods: ...@@ -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 ...@@ -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): ...@@ -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)
......
...@@ -18,7 +18,7 @@ This returns an instance of a class with the following public methods: ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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 ...@@ -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'
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment