From 0e02530a798807db572968ba914ae3694d71eb91 Mon Sep 17 00:00:00 2001 From: "Michael W. Hudson" Date: Wed, 6 Mar 2002 17:11:18 +0000 Subject: Special support for pickling os.stat and os.stat_vfs results portably (the types come from different modules on different platforms). Added tests for pickling these types. May be a bugfix candidate. --- Lib/os.py | 20 ++++++++++++++++++++ Lib/test/pickletester.py | 11 +++++++++++ 2 files changed, 31 insertions(+) diff --git a/Lib/os.py b/Lib/os.py index 42812aa..f411f1f 100644 --- a/Lib/os.py +++ b/Lib/os.py @@ -602,3 +602,23 @@ if _exists("fork"): 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 e2d2580..e16428f 100644 --- a/Lib/test/pickletester.py +++ b/Lib/test/pickletester.py @@ -254,6 +254,17 @@ class AbstractPickleTests(unittest.TestCase): 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): -- cgit v0.12