[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