#17818: aifc.getparams now returns a namedtuple.
Patch by Claudiu Popa.
This commit is contained in:
parent
840c310a25
commit
4d35e75ca0
|
@ -96,7 +96,9 @@ following methods:
|
||||||
|
|
||||||
.. method:: aifc.getparams()
|
.. 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()
|
.. method:: aifc.getmarkers()
|
||||||
|
|
|
@ -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`
|
FAIL_FAST`` (to parallel the similar option supported by the :mod:`unittest`
|
||||||
CLI). (Contributed by R. David Murray in :issue:`11390`.)
|
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
|
functools
|
||||||
---------
|
---------
|
||||||
|
|
17
Lib/aifc.py
17
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)
|
getcomptype() -- returns compression type ('NONE' for AIFF files)
|
||||||
getcompname() -- returns human-readable version of
|
getcompname() -- returns human-readable version of
|
||||||
compression type ('not compressed' for AIFF files)
|
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
|
above in the above order
|
||||||
getmarkers() -- get the list of marks in the audio file or None
|
getmarkers() -- get the list of marks in the audio file or None
|
||||||
if there are no marks
|
if there are no marks
|
||||||
|
@ -252,6 +252,11 @@ def _write_float(f, x):
|
||||||
_write_ulong(f, lomant)
|
_write_ulong(f, lomant)
|
||||||
|
|
||||||
from chunk import Chunk
|
from chunk import Chunk
|
||||||
|
from collections import namedtuple
|
||||||
|
|
||||||
|
_aifc_params = namedtuple('_aifc_params',
|
||||||
|
'nchannels sampwidth framerate nframes comptype compname')
|
||||||
|
|
||||||
|
|
||||||
class Aifc_read:
|
class Aifc_read:
|
||||||
# Variables used in this class:
|
# Variables used in this class:
|
||||||
|
@ -378,9 +383,9 @@ class Aifc_read:
|
||||||
## return self._version
|
## return self._version
|
||||||
|
|
||||||
def getparams(self):
|
def getparams(self):
|
||||||
return self.getnchannels(), self.getsampwidth(), \
|
return _aifc_params(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):
|
||||||
if len(self._markers) == 0:
|
if len(self._markers) == 0:
|
||||||
|
@ -658,8 +663,8 @@ class Aifc_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 _aifc_params(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):
|
||||||
if id <= 0:
|
if id <= 0:
|
||||||
|
|
|
@ -3,6 +3,7 @@ import unittest
|
||||||
import os
|
import os
|
||||||
import io
|
import io
|
||||||
import struct
|
import struct
|
||||||
|
import pickle
|
||||||
|
|
||||||
import aifc
|
import aifc
|
||||||
|
|
||||||
|
@ -31,6 +32,7 @@ class AIFCTest(unittest.TestCase):
|
||||||
|
|
||||||
def test_params(self):
|
def test_params(self):
|
||||||
f = self.f = aifc.open(self.sndfilepath)
|
f = self.f = aifc.open(self.sndfilepath)
|
||||||
|
params = f.getparams()
|
||||||
self.assertEqual(f.getfp().name, self.sndfilepath)
|
self.assertEqual(f.getfp().name, self.sndfilepath)
|
||||||
self.assertEqual(f.getnchannels(), 2)
|
self.assertEqual(f.getnchannels(), 2)
|
||||||
self.assertEqual(f.getsampwidth(), 2)
|
self.assertEqual(f.getsampwidth(), 2)
|
||||||
|
@ -43,6 +45,36 @@ class AIFCTest(unittest.TestCase):
|
||||||
(2, 2, 48000, 14400, b'NONE', b'not compressed'),
|
(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):
|
def test_context_manager(self):
|
||||||
with open(self.sndfilepath, 'rb') as testfile:
|
with open(self.sndfilepath, 'rb') as testfile:
|
||||||
with aifc.open(testfile) as f:
|
with aifc.open(testfile) as f:
|
||||||
|
|
|
@ -158,7 +158,7 @@ class PyclbrTest(TestCase):
|
||||||
cm('random', ignore=('Random',)) # from _random import Random as CoreGenerator
|
cm('random', ignore=('Random',)) # from _random import Random as CoreGenerator
|
||||||
cm('cgi', ignore=('log',)) # set with = in module
|
cm('cgi', ignore=('log',)) # set with = in module
|
||||||
cm('pickle')
|
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('sre_parse', ignore=('dump',)) # from sre_constants import *
|
||||||
cm('pdb')
|
cm('pdb')
|
||||||
cm('pydoc')
|
cm('pydoc')
|
||||||
|
|
|
@ -166,6 +166,8 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #17818: aifc.getparams now returns a namedtuple.
|
||||||
|
|
||||||
- Issue #18549: Eliminate dead code in socket_ntohl()
|
- Issue #18549: Eliminate dead code in socket_ntohl()
|
||||||
|
|
||||||
- Issue #18530: Remove additional stat call from posixpath.ismount.
|
- Issue #18530: Remove additional stat call from posixpath.ismount.
|
||||||
|
|
Loading…
Reference in New Issue