Issue #17487: The result of the wave getparams method now is pickleable again.
Patch by Claudiu Popa.
This commit is contained in:
parent
c6171e49ab
commit
4c6a020a2d
|
@ -1,5 +1,6 @@
|
||||||
from test.support import TESTFN, unlink
|
from test.support import TESTFN, unlink
|
||||||
import wave
|
import wave
|
||||||
|
import pickle
|
||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
nchannels = 2
|
nchannels = 2
|
||||||
|
@ -69,6 +70,18 @@ class TestWave(unittest.TestCase):
|
||||||
self.assertEqual(params.comptype, self.f.getcomptype())
|
self.assertEqual(params.comptype, self.f.getcomptype())
|
||||||
self.assertEqual(params.compname, self.f.getcompname())
|
self.assertEqual(params.compname, self.f.getcompname())
|
||||||
|
|
||||||
|
def test_getparams_picklable(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()
|
||||||
|
dump = pickle.dumps(params)
|
||||||
|
self.assertEqual(pickle.loads(dump), params)
|
||||||
|
|
||||||
def test_wave_write_context_manager_calls_close(self):
|
def test_wave_write_context_manager_calls_close(self):
|
||||||
# Close checks for a minimum header and will raise an error
|
# Close checks for a minimum header and will raise an error
|
||||||
# if it is not set, so this proves that close is called.
|
# if it is not set, so this proves that close is called.
|
||||||
|
|
|
@ -87,7 +87,7 @@ import sys
|
||||||
from chunk import Chunk
|
from chunk import Chunk
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
_result = namedtuple('params',
|
_wave_params = namedtuple('_wave_params',
|
||||||
'nchannels sampwidth framerate nframes comptype compname')
|
'nchannels sampwidth framerate nframes comptype compname')
|
||||||
|
|
||||||
class Wave_read:
|
class Wave_read:
|
||||||
|
@ -212,7 +212,7 @@ class Wave_read:
|
||||||
return self._compname
|
return self._compname
|
||||||
|
|
||||||
def getparams(self):
|
def getparams(self):
|
||||||
return _result(self.getnchannels(), self.getsampwidth(),
|
return _wave_params(self.getnchannels(), self.getsampwidth(),
|
||||||
self.getframerate(), self.getnframes(),
|
self.getframerate(), self.getnframes(),
|
||||||
self.getcomptype(), self.getcompname())
|
self.getcomptype(), self.getcompname())
|
||||||
|
|
||||||
|
@ -410,7 +410,7 @@ 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 _result(self._nchannels, self._sampwidth, self._framerate,
|
return _wave_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):
|
||||||
|
|
|
@ -54,6 +54,9 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #17487: The result of the wave getparams method now is pickleable again.
|
||||||
|
Patch by Claudiu Popa.
|
||||||
|
|
||||||
- Issue #18756: os.urandom() now uses a lazily-opened persistent file
|
- Issue #18756: os.urandom() now uses a lazily-opened persistent file
|
||||||
descriptor, so as to avoid using many file descriptors when run in
|
descriptor, so as to avoid using many file descriptors when run in
|
||||||
parallel from multiple threads.
|
parallel from multiple threads.
|
||||||
|
|
Loading…
Reference in New Issue