[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