]> granicus.if.org Git - python/commitdiff
Issue #17487: The result of the wave getparams method now is pickleable again.
authorSerhiy Storchaka <storchaka@gmail.com>
Tue, 3 Sep 2013 21:28:43 +0000 (00:28 +0300)
committerSerhiy Storchaka <storchaka@gmail.com>
Tue, 3 Sep 2013 21:28:43 +0000 (00:28 +0300)
Patch by Claudiu Popa.

Lib/test/test_wave.py
Lib/wave.py
Misc/NEWS

index b70f917ec644439a7e1c38412a01e1c78fee20d8..30dca90bc0320c5b46ef27bcc6acde7f4bbe800a 100644 (file)
@@ -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.
index f43569e69e911a358e866cc05c56796ed311772a..1c6380eee6538ec43340424b2ec5d0bf9b9919e6 100644 (file)
@@ -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):
index 41e430fad6bfe63080ec24db1f9d02698b93d5c1..328f3fe0cef68f6df2724bafd98c537689e4bc50 100644 (file)
--- a/Misc/NEWS
+++ b/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.