[pypy-svn] r5094 - in pypy/trunk/src/pypy: interpreter interpreter/test objspace/std

hpk at codespeak.net hpk at codespeak.net
Wed Jun 16 00:19:25 CEST 2004


Author: hpk
Date: Wed Jun 16 00:18:41 2004
New Revision: 5094

Added:
   pypy/trunk/src/pypy/interpreter/special.py
   pypy/trunk/src/pypy/interpreter/test/test_special.py
Modified:
   pypy/trunk/src/pypy/interpreter/typedef.py
   pypy/trunk/src/pypy/objspace/std/objspace.py
Log:
a go at eliminating cpythonobject-wrapping for Ellipsis and NotImplemented. 

would be nice to put the "Wrappable/BaseWrappable" classes into their 
own file to reduce import dependencies. 



Added: pypy/trunk/src/pypy/interpreter/special.py
==============================================================================
--- (empty file)
+++ pypy/trunk/src/pypy/interpreter/special.py	Wed Jun 16 00:18:41 2004
@@ -0,0 +1,15 @@
+
+from pypy.interpreter.baseobjspace import Wrappable
+
+class Ellipsis(Wrappable):
+    def __init__(self, space):
+        self.space = space 
+    def descr__repr__(self):
+        return self.space.wrap('Ellipsis')
+
+class NotImplemented(Wrappable): 
+    def __init__(self, space):
+        self.space = space 
+    def descr__repr__(self):
+        return self.space.wrap('NotImplemented')
+

Added: pypy/trunk/src/pypy/interpreter/test/test_special.py
==============================================================================
--- (empty file)
+++ pypy/trunk/src/pypy/interpreter/test/test_special.py	Wed Jun 16 00:18:41 2004
@@ -0,0 +1,18 @@
+
+import autopath 
+from pypy.tool import testit 
+
+class SpecialTestCase(testit.AppTestCase):
+    def test_Ellipsis(self):
+        self.assertEquals(Ellipsis, Ellipsis)
+        self.assertEquals(repr(Ellipsis), 'Ellipsis')
+    
+    def test_NotImplemented(self):
+        def f():
+            return NotImplemented
+        self.assertEquals(f(), NotImplemented) 
+        self.assertEquals(repr(NotImplemented), 'NotImplemented')
+
+if __name__ == '__main__':
+    testit.main()
+

Modified: pypy/trunk/src/pypy/interpreter/typedef.py
==============================================================================
--- pypy/trunk/src/pypy/interpreter/typedef.py	(original)
+++ pypy/trunk/src/pypy/interpreter/typedef.py	Wed Jun 16 00:18:41 2004
@@ -135,6 +135,7 @@
 from pypy.interpreter.pytraceback import PyTraceback
 from pypy.interpreter.generator import GeneratorIterator 
 from pypy.interpreter.nestedscope import Cell
+from pypy.interpreter.special import NotImplemented, Ellipsis
 
 def descr_get_dict(space, w_obj):
     obj = space.unwrap_builtin(w_obj)
@@ -237,4 +238,12 @@
 
 Cell.typedef = TypeDef("Cell")
 
+Ellipsis.typedef = TypeDef("Ellipsis", 
+    __repr__   = interp2app(Ellipsis.descr__repr__.im_func),
+)
+
+NotImplemented.typedef = TypeDef("NotImplemented", 
+    __repr__   = interp2app(NotImplemented.descr__repr__.im_func), 
+)
+
 ControlFlowException.typedef = TypeDef("ControlFlowException")

Modified: pypy/trunk/src/pypy/objspace/std/objspace.py
==============================================================================
--- pypy/trunk/src/pypy/objspace/std/objspace.py	(original)
+++ pypy/trunk/src/pypy/objspace/std/objspace.py	Wed Jun 16 00:18:41 2004
@@ -177,8 +177,9 @@
         self.w_None  = W_NoneObject(self)
         self.w_False = W_BoolObject(self, False)
         self.w_True  = W_BoolObject(self, True)
-        self.w_NotImplemented = self.wrap(NotImplemented)  # XXX do me
-        self.w_Ellipsis = self.wrap(Ellipsis)  # XXX do me too
+        from pypy.interpreter.special import NotImplemented, Ellipsis 
+        self.w_NotImplemented = self.wrap(NotImplemented(self))  
+        self.w_Ellipsis = self.wrap(Ellipsis(self))  
 
         for_builtins = {"False": self.w_False,
                         "True" : self.w_True,



More information about the Pypy-commit mailing list