mirror of
https://github.com/python/cpython.git
synced 2024-11-25 10:54:51 +08:00
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
|
||||
import wave
|
||||
import pickle
|
||||
import unittest
|
||||
|
||||
nchannels = 2
|
||||
@ -69,6 +70,18 @@ class TestWave(unittest.TestCase):
|
||||
self.assertEqual(params.comptype, self.f.getcomptype())
|
||||
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):
|
||||
# Close checks for a minimum header and will raise an error
|
||||
# if it is not set, so this proves that close is called.
|
||||
|
@ -87,7 +87,7 @@ import sys
|
||||
from chunk import Chunk
|
||||
from collections import namedtuple
|
||||
|
||||
_result = namedtuple('params',
|
||||
_wave_params = namedtuple('_wave_params',
|
||||
'nchannels sampwidth framerate nframes comptype compname')
|
||||
|
||||
class Wave_read:
|
||||
@ -212,7 +212,7 @@ class Wave_read:
|
||||
return self._compname
|
||||
|
||||
def getparams(self):
|
||||
return _result(self.getnchannels(), self.getsampwidth(),
|
||||
return _wave_params(self.getnchannels(), self.getsampwidth(),
|
||||
self.getframerate(), self.getnframes(),
|
||||
self.getcomptype(), self.getcompname())
|
||||
|
||||
@ -410,7 +410,7 @@ class Wave_write:
|
||||
def getparams(self):
|
||||
if not self._nchannels or not self._sampwidth or not self._framerate:
|
||||
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)
|
||||
|
||||
def setmark(self, id, pos, name):
|
||||
|
@ -54,6 +54,9 @@ Core and Builtins
|
||||
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
|
||||
descriptor, so as to avoid using many file descriptors when run in
|
||||
parallel from multiple threads.
|
||||
|
Loading…
Reference in New Issue
Block a user