[pypy-commit] pypy default: Fixes. Now micronumpy passes :-)

arigo noreply at buildbot.pypy.org
Wed Dec 7 17:40:14 CET 2011


Author: Armin Rigo <arigo at tunes.org>
Branch: 
Changeset: r50269:b1a1441f2980
Date: 2011-12-07 17:18 +0100
http://bitbucket.org/pypy/pypy/changeset/b1a1441f2980/

Log:	Fixes. Now micronumpy passes :-)

diff --git a/pypy/objspace/fake/objspace.py b/pypy/objspace/fake/objspace.py
--- a/pypy/objspace/fake/objspace.py
+++ b/pypy/objspace/fake/objspace.py
@@ -1,7 +1,7 @@
 from pypy.interpreter.baseobjspace import W_Root, ObjSpace
 from pypy.interpreter.baseobjspace import Wrappable, SpaceCache
 from pypy.interpreter import argument, gateway
-from pypy.interpreter.typedef import TypeDef
+from pypy.interpreter.typedef import TypeDef, GetSetProperty
 from pypy.annotation.model import SomeInstance, s_None
 from pypy.rpython.extregistry import ExtRegistryEntry
 from pypy.rpython.lltypesystem import lltype
@@ -113,11 +113,13 @@
         return w_some_obj()
 
     def newtuple(self, list_w):
-        is_root(list_w[NonConstant(0)])
+        for w_x in list_w:
+            is_root(w_x)
         return w_some_obj()
 
     def newlist(self, list_w):
-        is_root(list_w[NonConstant(0)])
+        for w_x in list_w:
+            is_root(w_x)
         return w_some_obj()
 
     def newslice(self, w_start, w_end, w_step):
@@ -131,8 +133,11 @@
         raise NotImplementedError
 
     def wrap(self, x):
-        if isinstance(x, gateway.interp2app):
-            self._see_interp2app(x)
+        if not we_are_translated():
+            if isinstance(x, gateway.interp2app):
+                self._see_interp2app(x)
+            if isinstance(x, GetSetProperty):
+                self._see_getsetproperty(x)
         return w_some_obj()
     wrap._annspecialcase_ = "specialize:argtype(1)"
 
@@ -146,6 +151,21 @@
         check = func_with_new_name(check, 'check__' + interp2app.name)
         self._seen_extras.append(check)
 
+    def _see_getsetproperty(self, getsetproperty):
+        "NOT_RPYTHON"
+        space = self
+        def checkprop():
+            getsetproperty.fget(getsetproperty, space, w_some_obj())
+            if getsetproperty.fset is not None:
+                getsetproperty.fset(getsetproperty, space, w_some_obj(),
+                                    w_some_obj())
+            if getsetproperty.fdel is not None:
+                getsetproperty.fdel(getsetproperty, space, w_some_obj())
+        if not getsetproperty.name.startswith('<'):
+            checkprop = func_with_new_name(checkprop,
+                                           'checkprop__' + getsetproperty.name)
+        self._seen_extras.append(checkprop)
+
     def call_obj_args(self, w_callable, w_obj, args):
         is_root(w_callable)
         is_root(w_obj)
@@ -187,6 +207,18 @@
         return instantiate(cls)
     allocate_instance._annspecialcase_ = "specialize:arg(1)"
 
+    def decode_index(self, w_index_or_slice, seqlength):
+        is_root(w_index_or_slice)
+        return (NonConstant(42), NonConstant(42), NonConstant(42))
+
+    def decode_index4(self, w_index_or_slice, seqlength):
+        is_root(w_index_or_slice)
+        return (NonConstant(42), NonConstant(42),
+                NonConstant(42), NonConstant(42))
+
+    def exec_(self, *args, **kwds):
+        pass
+
     # ----------
 
     def translates(self, func=None, argtypes=None):
@@ -225,7 +257,8 @@
     for name in (ObjSpace.ConstantTable +
                  ObjSpace.ExceptionTable +
                  ['int', 'str', 'float', 'long', 'tuple', 'list',
-                  'dict', 'unicode']):
+                  'dict', 'unicode', 'complex', 'slice', 'bool',
+                  'type']):
         setattr(FakeObjSpace, 'w_' + name, w_some_obj())
     #
     for (name, _, arity, _) in ObjSpace.MethodTable:
@@ -254,3 +287,13 @@
         for value in typedef.rawdict.values():
             cache.space.wrap(value)
         return w_some_obj()
+
+class FakeCompiler(object):
+    pass
+FakeObjSpace.default_compiler = FakeCompiler()
+
+class FakeModule(object):
+    def get(self, name):
+        name + "xx"   # check that it's a string
+        return w_some_obj()
+FakeObjSpace.sys = FakeModule()
diff --git a/pypy/objspace/fake/test/test_checkmodule.py b/pypy/objspace/fake/test/test_checkmodule.py
--- a/pypy/objspace/fake/test/test_checkmodule.py
+++ b/pypy/objspace/fake/test/test_checkmodule.py
@@ -1,8 +1,7 @@
 import py
-from pypy.objspace.fake.checkmodule import checkmodule
 from pypy.objspace.fake.objspace import FakeObjSpace, is_root
 from pypy.interpreter.baseobjspace import Wrappable
-from pypy.interpreter.typedef import TypeDef
+from pypy.interpreter.typedef import TypeDef, GetSetProperty
 from pypy.interpreter.gateway import interp2app, W_Root, ObjSpace
 
 
@@ -35,6 +34,17 @@
     space.translates()
     assert check
 
+def test_wrap_GetSetProperty():
+    see, check = make_checker()
+    def foobar(w_obj, space):
+        is_root(w_obj)
+        see()
+        return space.w_None
+    space = FakeObjSpace()
+    space.wrap(GetSetProperty(foobar))
+    space.translates()
+    assert check
+
 
 def test_gettypefor_untranslated():
     see, check = make_checker()
@@ -51,7 +61,3 @@
     assert not check
     space.translates()
     assert check
-
-
-def test_itertools_module():
-    checkmodule('itertools')
diff --git a/pypy/objspace/fake/test/test_objspace.py b/pypy/objspace/fake/test/test_objspace.py
--- a/pypy/objspace/fake/test/test_objspace.py
+++ b/pypy/objspace/fake/test/test_objspace.py
@@ -69,3 +69,6 @@
         space = self.space
         space.translates(lambda: (space.unpackiterable(W_Root()),
                                   space.unpackiterable(W_Root(), 42)))
+
+    def test_newlist(self):
+        self.space.newlist([W_Root(), W_Root()])
diff --git a/pypy/objspace/fake/test/test_zmodules.py b/pypy/objspace/fake/test/test_zmodules.py
new file mode 100644
--- /dev/null
+++ b/pypy/objspace/fake/test/test_zmodules.py
@@ -0,0 +1,10 @@
+from pypy.config.pypyoption import working_modules
+from pypy.objspace.fake.checkmodule import checkmodule
+from pypy.tool.sourcetools import compile2
+
+
+for name in sorted(working_modules):
+    exec compile2("""\
+        def test_module_%s():
+            checkmodule(%r)
+    """ % (name, name))
diff --git a/pypy/translator/translator.py b/pypy/translator/translator.py
--- a/pypy/translator/translator.py
+++ b/pypy/translator/translator.py
@@ -150,11 +150,11 @@
         from pypy.translator.tool.graphpage import FlowGraphPage
         FlowGraphPage(self).display()
 
-    def viewcg(self, center_graph=None):
+    def viewcg(self, center_graph=None, huge=100):
         """Shows the whole call graph and the class hierarchy, based on
         the computed annotations."""
         from pypy.translator.tool.graphpage import TranslatorPage
-        TranslatorPage(self, center_graph=center_graph).display()
+        TranslatorPage(self, center_graph=center_graph, huge=huge).display()
 
 
 


More information about the pypy-commit mailing list