Browse Source

Issue #17487: The result of the wave getparams method now is pickleable again.

Patch by Claudiu Popa.
pull/224/head
Serhiy Storchaka 13 years ago
parent
commit
4c6a020a2d
  1. 13
      Lib/test/test_wave.py
  2. 6
      Lib/wave.py
  3. 3
      Misc/NEWS

13
Lib/test/test_wave.py

@ -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.

6
Lib/wave.py

@ -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):

3
Misc/NEWS

@ -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…
Cancel
Save