[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