mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
Merged revisions 70931 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r70931 | jack.diederich | 2009-03-31 19:46:48 -0400 (Tue, 31 Mar 2009) | 1 line #5228: add pickle support to functools.partial ........
This commit is contained in:
parent
e59482ec9a
commit
e0cbd69659
4 changed files with 64 additions and 2 deletions
|
@ -2,6 +2,7 @@ import functools
|
|||
import unittest
|
||||
from test import support
|
||||
from weakref import proxy
|
||||
import pickle
|
||||
|
||||
@staticmethod
|
||||
def PythonPartial(func, *args, **keywords):
|
||||
|
@ -19,6 +20,9 @@ def capture(*args, **kw):
|
|||
"""capture all positional and keyword arguments"""
|
||||
return args, kw
|
||||
|
||||
def signature(part):
|
||||
""" return the signature of a partial object """
|
||||
return (part.func, part.args, part.keywords, part.__dict__)
|
||||
|
||||
class TestPartial(unittest.TestCase):
|
||||
|
||||
|
@ -141,6 +145,12 @@ class TestPartial(unittest.TestCase):
|
|||
join = self.thetype(''.join)
|
||||
self.assertEqual(join(data), '0123456789')
|
||||
|
||||
def test_pickle(self):
|
||||
f = self.thetype(signature, 'asdf', bar=True)
|
||||
f.add_something_to__dict__ = True
|
||||
f_copy = pickle.loads(pickle.dumps(f))
|
||||
self.assertEqual(signature(f), signature(f_copy))
|
||||
|
||||
class PartialSubclass(functools.partial):
|
||||
pass
|
||||
|
||||
|
@ -148,11 +158,13 @@ class TestPartialSubclass(TestPartial):
|
|||
|
||||
thetype = PartialSubclass
|
||||
|
||||
|
||||
class TestPythonPartial(TestPartial):
|
||||
|
||||
thetype = PythonPartial
|
||||
|
||||
# the python version isn't picklable
|
||||
def test_pickle(self): pass
|
||||
|
||||
class TestUpdateWrapper(unittest.TestCase):
|
||||
|
||||
def check_wrapper(self, wrapper, wrapped,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue