[pypy-svn] r26564 - in pypy/dist/pypy: interpreter/test module/__builtin__
ericvrp at codespeak.net
ericvrp at codespeak.net
Sat Apr 29 10:28:51 CEST 2006
Author: ericvrp
Date: Sat Apr 29 10:28:44 2006
New Revision: 26564
Modified:
pypy/dist/pypy/interpreter/test/test_pickle.py
pypy/dist/pypy/module/__builtin__/__init__.py
pypy/dist/pypy/module/__builtin__/app_functional.py
Log:
pickling support for reversed_iterator
Modified: pypy/dist/pypy/interpreter/test/test_pickle.py
==============================================================================
--- pypy/dist/pypy/interpreter/test/test_pickle.py (original)
+++ pypy/dist/pypy/interpreter/test/test_pickle.py Sat Apr 29 10:28:44 2006
@@ -123,9 +123,6 @@
result = pickle.loads(pckl)
assert mod is result
- def test_pickle_iter(self):
- skip("work in progress")
-
def test_pickle_method(self):
skip("work in progress")
class myclass(object):
@@ -179,7 +176,7 @@
#def test_pickle_enumfactory(self):
# skip("work in progress")
-
+
def test_pickle_sequenceiter(self):
'''
In PyPy there is no distinction here between listiterator and
@@ -203,6 +200,16 @@
assert type(riter) is type(result)
assert list(result) == [2,3,4]
+ def test_pickle_reversed_iterator(self):
+ import pickle
+ i = reversed(xrange(5))
+ i.next()
+ i.next()
+ pckl = pickle.dumps(i)
+ result = pickle.loads(pckl)
+ assert type(i) is type(result)
+ assert list(result) == [2,1,0]
+
def test_pickle_generator(self):
skip("work in progress")
import pickle
Modified: pypy/dist/pypy/module/__builtin__/__init__.py
==============================================================================
--- pypy/dist/pypy/module/__builtin__/__init__.py (original)
+++ pypy/dist/pypy/module/__builtin__/__init__.py Sat Apr 29 10:28:44 2006
@@ -35,6 +35,8 @@
'app_functional._install_pickle_support_for_xrange_iterator',
'sorted' : 'app_functional.sorted',
'reversed' : 'app_functional.reversed',
+ '_install_pickle_support_for_reversed_iterator':
+ 'app_functional._install_pickle_support_for_reversed_iterator',
'issubclass' : 'app_inspect.issubclass',
'isinstance' : 'app_inspect.isinstance',
Modified: pypy/dist/pypy/module/__builtin__/app_functional.py
==============================================================================
--- pypy/dist/pypy/module/__builtin__/app_functional.py (original)
+++ pypy/dist/pypy/module/__builtin__/app_functional.py Sat Apr 29 10:28:44 2006
@@ -418,3 +418,21 @@
if self.remaining > len(self.seq):
self.remaining = 0
return self.remaining
+
+ def __reduce__(self):
+ tup = (self.seq, self.remaining)
+ return (make_reversed_iterator, tup)
+
+def make_reversed_iterator(seq, remaining):
+ ri = reversed_iterator.__new__(reversed_iterator)
+ ri.seq = seq
+ #or "ri = reversed_iterator(seq)" but that executes len(seq)
+ ri.remaining = remaining
+ return ri
+
+def _install_pickle_support_for_reversed_iterator():
+ import _pickle_support
+ make_reversed_iterator.__module__ = '_pickle_support'
+ _pickle_support.make_reversed_iterator = make_reversed_iterator
+
+
More information about the Pypy-commit
mailing list