[pypy-svn] r78489 - in pypy/branch/fast-forward/pypy/interpreter: . test

afa at codespeak.net afa at codespeak.net
Fri Oct 29 23:05:43 CEST 2010


Author: afa
Date: Fri Oct 29 23:05:41 2010
New Revision: 78489

Modified:
   pypy/branch/fast-forward/pypy/interpreter/generator.py
   pypy/branch/fast-forward/pypy/interpreter/test/test_generator.py
   pypy/branch/fast-forward/pypy/interpreter/typedef.py
Log:
add a __repr__ to generators


Modified: pypy/branch/fast-forward/pypy/interpreter/generator.py
==============================================================================
--- pypy/branch/fast-forward/pypy/interpreter/generator.py	(original)
+++ pypy/branch/fast-forward/pypy/interpreter/generator.py	Fri Oct 29 23:05:41 2010
@@ -13,6 +13,12 @@
         self.frame = frame
         self.running = False
 
+    def descr__repr__(self, space):
+        code_name = self.frame.pycode.co_name
+        addrstring = self.getaddrstring(space)
+        return space.wrap("<generator object %s at 0x%s>" %
+                          (code_name, addrstring))
+
     def descr__reduce__(self, space):
         from pypy.interpreter.mixedmodule import MixedModule
         w_mod    = space.getbuiltinmodule('_pickle_support')

Modified: pypy/branch/fast-forward/pypy/interpreter/test/test_generator.py
==============================================================================
--- pypy/branch/fast-forward/pypy/interpreter/test/test_generator.py	(original)
+++ pypy/branch/fast-forward/pypy/interpreter/test/test_generator.py	Fri Oct 29 23:05:41 2010
@@ -241,3 +241,8 @@
 res = f()
 """ in d
         assert d['res'] == (10, 7)
+
+    def test_repr(self):
+        def myFunc():
+            yield 1
+        assert repr(myFunc()).startswith("<generator object myFunc at 0x")

Modified: pypy/branch/fast-forward/pypy/interpreter/typedef.py
==============================================================================
--- pypy/branch/fast-forward/pypy/interpreter/typedef.py	(original)
+++ pypy/branch/fast-forward/pypy/interpreter/typedef.py	Fri Oct 29 23:05:41 2010
@@ -885,6 +885,8 @@
 PyTraceback.typedef.acceptable_as_base_class = False
 
 GeneratorIterator.typedef = TypeDef("generator",
+    __repr__   = interp2app(GeneratorIterator.descr__repr__,
+                            unwrap_spec=['self', ObjSpace]),
     __reduce__   = interp2app(GeneratorIterator.descr__reduce__,
                               unwrap_spec=['self', ObjSpace]),
     next       = interp2app(GeneratorIterator.descr_next,



More information about the Pypy-commit mailing list