[pypy-svn] r76284 - in pypy/branch/interplevel-array/pypy: module/_demo module/_demo/test objspace/std
fijal at codespeak.net
fijal at codespeak.net
Mon Jul 19 20:41:54 CEST 2010
Author: fijal
Date: Mon Jul 19 20:41:52 2010
New Revision: 76284
Added:
pypy/branch/interplevel-array/pypy/module/_demo/test/test_demo.py
Modified:
pypy/branch/interplevel-array/pypy/module/_demo/__init__.py
pypy/branch/interplevel-array/pypy/module/_demo/interp_demo.py
pypy/branch/interplevel-array/pypy/objspace/std/model.py
Log:
Necessary changes for multimethods to work here
Modified: pypy/branch/interplevel-array/pypy/module/_demo/__init__.py
==============================================================================
--- pypy/branch/interplevel-array/pypy/module/_demo/__init__.py (original)
+++ pypy/branch/interplevel-array/pypy/module/_demo/__init__.py Mon Jul 19 20:41:52 2010
@@ -1,4 +1,9 @@
-from pypy.interpreter.mixedmodule import MixedModule
+from pypy.interpreter.mixedmodule import MixedModule
+from pypy.module._demo.interp_demo import W_Zero, W_One
+from pypy.objspace.std.model import registerimplementation
+
+registerimplementation(W_Zero)
+registerimplementation(W_One)
class Module(MixedModule):
"""A demo built-in module based on ctypes."""
Modified: pypy/branch/interplevel-array/pypy/module/_demo/interp_demo.py
==============================================================================
--- pypy/branch/interplevel-array/pypy/module/_demo/interp_demo.py (original)
+++ pypy/branch/interplevel-array/pypy/module/_demo/interp_demo.py Mon Jul 19 20:41:52 2010
@@ -2,12 +2,13 @@
from pypy.interpreter.baseobjspace import ObjSpace, W_Root, Wrappable
from pypy.objspace.std.stdtypedef import SMM, StdTypeDef
from pypy.objspace.std.register_all import register_all
+from pypy.objspace.std.model import W_Object
def w_type(space, arg):
if arg == 0:
- return space.wrap(W_Zero())
+ return W_Zero()
else:
- return space.wrap(W_One())
+ return W_One()
w_type.unwrap_spec = [ObjSpace, int]
type_repr = SMM('__repr__', 1, 'a docstring')
@@ -16,10 +17,18 @@
__new__ = w_type)
type_typedef.registermethods(globals())
-class W_Zero(Wrappable):
+class W_Zero(W_Object):
+ @staticmethod
+ def register(typeorder):
+ typeorder[W_Zero] = []
+
typedef = type_typedef
-class W_One(Wrappable):
+class W_One(W_Object):
+ @staticmethod
+ def register(typeorder):
+ typeorder[W_One] = []
+
typedef = type_typedef
def repr__Zero(space, w_zero):
Added: pypy/branch/interplevel-array/pypy/module/_demo/test/test_demo.py
==============================================================================
--- (empty file)
+++ pypy/branch/interplevel-array/pypy/module/_demo/test/test_demo.py Mon Jul 19 20:41:52 2010
@@ -0,0 +1,11 @@
+
+from pypy.conftest import gettestobjspace
+
+class AppTestDemo(object):
+ def setup_class(cls):
+ cls.space = gettestobjspace(usemodules = ['_demo'])
+
+ def test_one(self):
+ import _demo
+ assert repr(_demo.tp(1)) == 'one'
+ assert repr(_demo.tp(0)) == 'zero'
Modified: pypy/branch/interplevel-array/pypy/objspace/std/model.py
==============================================================================
--- pypy/branch/interplevel-array/pypy/objspace/std/model.py (original)
+++ pypy/branch/interplevel-array/pypy/objspace/std/model.py Mon Jul 19 20:41:52 2010
@@ -140,6 +140,8 @@
# check if we missed implementations
for implcls in _registered_implementations:
+ if hasattr(implcls, 'register'):
+ implcls.register(self.typeorder)
assert (implcls in self.typeorder or
implcls in self.imported_but_not_registered), (
"please add %r in StdTypeModel.typeorder" % (implcls,))
More information about the Pypy-commit
mailing list