diff --git a/Lib/os.py b/Lib/os.py index 42812aa55fc..f411f1fe09c 100644 --- a/Lib/os.py +++ b/Lib/os.py @@ -602,3 +602,23 @@ def popen4(cmd, mode="t", bufsize=-1): stdout, stdin = popen2.popen4(cmd, bufsize) return stdin, stdout __all__.append("popen4") + +import copy_reg as _copy_reg + +def _make_stat_result(tup, dict): + return stat_result(tup, dict) + +def _pickle_stat_result(sr): + (type, args) = sr.__reduce__() + return (_make_stat_result, args) + +_copy_reg.pickle(stat_result, _pickle_stat_result,_make_stat_result) + +def _make_statvfs_result(tup, dict): + return statvfs_result(tup, dict) + +def _pickle_statvfs_result(sr): + (type, args) = sr.__reduce__() + return (_make_statvfs_result, args) + +_copy_reg.pickle(statvfs_result, _pickle_statvfs_result,_make_statvfs_result) diff --git a/Lib/test/pickletester.py b/Lib/test/pickletester.py index e2d2580b8e5..e16428fa33a 100644 --- a/Lib/test/pickletester.py +++ b/Lib/test/pickletester.py @@ -254,6 +254,17 @@ def test_structseq(self): s = self.dumps(t) u = self.loads(s) self.assertEqual(t, u) + import os + if hasattr(os, "stat"): + t = os.stat(os.curdir) + s = self.dumps(t) + u = self.loads(s) + self.assertEqual(t, u) + if hasattr(os, "statvfs"): + t = os.statvfs(os.curdir) + s = self.dumps(t) + u = self.loads(s) + self.assertEqual(t, u) class AbstractPickleModuleTests(unittest.TestCase):