[pypy-commit] pypy release-2.3.x: merge default
bdkearns
noreply at buildbot.pypy.org
Sat May 3 03:21:32 CEST 2014
Author: Brian Kearns <bdkearns at gmail.com>
Branch: release-2.3.x
Changeset: r71214:16b7931bb487
Date: 2014-05-02 21:20 -0400
http://bitbucket.org/pypy/pypy/changeset/16b7931bb487/
Log: merge default
diff --git a/pypy/doc/whatsnew-2.3.0.rst b/pypy/doc/whatsnew-2.3.0.rst
--- a/pypy/doc/whatsnew-2.3.0.rst
+++ b/pypy/doc/whatsnew-2.3.0.rst
@@ -154,7 +154,7 @@
Improve optimization of small allocation-heavy loops in the JIT
.. branch: reflex-support
-
+
.. branch: asmosoinio/fixed-pip-installation-url-github-githu-1398674840188
.. branch: lexer_token_position_class
@@ -164,4 +164,3 @@
.. branch: issue1430
Add a lock for unsafe calls to gethostbyname and gethostbyaddr
-
diff --git a/pypy/doc/whatsnew-head.rst b/pypy/doc/whatsnew-head.rst
--- a/pypy/doc/whatsnew-head.rst
+++ b/pypy/doc/whatsnew-head.rst
@@ -3,5 +3,5 @@
=======================
.. this is a revision shortly after release-2.3.x
-.. startrev: 0f75ad4d14ce
+.. startrev: 773fc6275c69
diff --git a/pypy/interpreter/gateway.py b/pypy/interpreter/gateway.py
--- a/pypy/interpreter/gateway.py
+++ b/pypy/interpreter/gateway.py
@@ -1074,7 +1074,9 @@
return x+y
''')
"""
+ prefix = ""
if not isinstance(source, str):
+ flags = source.__code__.co_flags
source = py.std.inspect.getsource(source).lstrip()
while source.startswith(('@py.test.mark.', '@pytest.mark.')):
# these decorators are known to return the same function
@@ -1083,12 +1085,21 @@
source = source[source.find('\n') + 1:].lstrip()
assert source.startswith("def "), "can only transform functions"
source = source[4:]
+ import __future__
+ if flags & __future__.CO_FUTURE_DIVISION:
+ prefix += "from __future__ import division\n"
+ if flags & __future__.CO_FUTURE_ABSOLUTE_IMPORT:
+ prefix += "from __future__ import absolute_import\n"
+ if flags & __future__.CO_FUTURE_PRINT_FUNCTION:
+ prefix += "from __future__ import print_function\n"
+ if flags & __future__.CO_FUTURE_UNICODE_LITERALS:
+ prefix += "from __future__ import unicode_literals\n"
p = source.find('(')
assert p >= 0
funcname = source[:p].strip()
source = source[p:]
assert source.strip()
- funcsource = "def %s%s\n" % (funcname, source)
+ funcsource = prefix + "def %s%s\n" % (funcname, source)
#for debugging of wrong source code: py.std.parser.suite(funcsource)
a = applevel(funcsource, filename=filename)
return a.interphook(funcname)
diff --git a/pypy/interpreter/test/test_gateway.py b/pypy/interpreter/test/test_gateway.py
--- a/pypy/interpreter/test/test_gateway.py
+++ b/pypy/interpreter/test/test_gateway.py
@@ -1,18 +1,20 @@
-
# -*- coding: utf-8 -*-
+from __future__ import division, print_function # for test_app2interp_future
from pypy.interpreter import gateway, argument
from pypy.interpreter.gateway import ObjSpace, W_Root, WrappedDefault
from pypy.interpreter.signature import Signature
import py
import sys
+
class FakeFunc(object):
def __init__(self, space, name):
self.space = space
self.name = name
self.defs_w = []
+
class TestBuiltinCode:
def test_signature(self):
def c(space, w_x, w_y, hello_w):
@@ -89,8 +91,8 @@
w_result = code.funcrun(FakeFunc(self.space, "c"), args)
assert self.space.eq_w(w_result, w(1020))
+
class TestGateway:
-
def test_app2interp(self):
w = self.space.wrap
def app_g3(a, b):
@@ -117,6 +119,14 @@
args = gateway.Arguments(self.space, [w(6)], ['hello', 'world'], [w(7), w(8)])
assert self.space.int_w(gg(self.space, w(3), args)) == 213
+ def test_app2interp_future(self):
+ w = self.space.wrap
+ def app_g3(a, b):
+ print(end='')
+ return a / b
+ g3 = gateway.app2interp_temp(app_g3)
+ assert self.space.eq_w(g3(self.space, w(1), w(4),), w(0.25))
+
def test_interp2app(self):
space = self.space
w = space.wrap
@@ -616,7 +626,7 @@
w_app_f = self.space.wrap(app_f)
assert isinstance(w_app_f.code, gateway.BuiltinCode2)
-
+
called = []
fastcall_2 = w_app_f.code.fastcall_2
def witness_fastcall_2(space, w_func, w_a, w_b):
@@ -736,7 +746,6 @@
class TestPassThroughArguments:
-
def test_pass_trough_arguments0(self):
space = self.space
@@ -834,7 +843,6 @@
class AppTestKeywordsToBuiltinSanity(object):
-
def test_type(self):
class X(object):
def __init__(self, **kw):
@@ -873,4 +881,3 @@
d.update(**{clash: 33})
dict.update(d, **{clash: 33})
-
diff --git a/pypy/module/_lsprof/test/test_cprofile.py b/pypy/module/_lsprof/test/test_cprofile.py
--- a/pypy/module/_lsprof/test/test_cprofile.py
+++ b/pypy/module/_lsprof/test/test_cprofile.py
@@ -43,7 +43,7 @@
)
by_id = set()
for entry in stats:
- if entry.code == f1.func_code:
+ if entry.code == f1.__code__:
assert len(entry.calls) == 2
for subentry in entry.calls:
assert subentry.code in expected
@@ -144,8 +144,8 @@
entries = {}
for entry in stats:
entries[entry.code] = entry
- efoo = entries[foo.func_code]
- ebar = entries[bar.func_code]
+ efoo = entries[foo.__code__]
+ ebar = entries[bar.__code__]
assert 0.9 < efoo.totaltime < 2.9
# --- cannot test .inlinetime, because it does not include
# --- the time spent doing the call to time.time()
@@ -219,12 +219,12 @@
lines.remove(line)
break
else:
- print 'NOT FOUND:', pattern.rstrip('\n')
- print '--- GOT ---'
- print got
- print
- print '--- EXPECTED ---'
- print expected
+ print('NOT FOUND: %s' % pattern.rstrip('\n'))
+ print('--- GOT ---')
+ print(got)
+ print('')
+ print('--- EXPECTED ---')
+ print(expected)
assert False
assert not lines
finally:
diff --git a/pypy/module/cppyy/capi/capi_types.py b/pypy/module/cppyy/capi/capi_types.py
--- a/pypy/module/cppyy/capi/capi_types.py
+++ b/pypy/module/cppyy/capi/capi_types.py
@@ -1,8 +1,8 @@
from rpython.rtyper.lltypesystem import rffi, lltype
# shared ll definitions
-_C_OPAQUE_PTR = rffi.LONG
-_C_OPAQUE_NULL = lltype.nullptr(rffi.LONGP.TO)# ALT: _C_OPAQUE_PTR.TO
+_C_OPAQUE_PTR = rffi.ULONG
+_C_OPAQUE_NULL = lltype.nullptr(rffi.ULONGP.TO)# ALT: _C_OPAQUE_PTR.TO
C_SCOPE = _C_OPAQUE_PTR
C_NULL_SCOPE = rffi.cast(C_SCOPE, _C_OPAQUE_NULL)
diff --git a/pypy/module/cppyy/capi/cint_capi.py b/pypy/module/cppyy/capi/cint_capi.py
--- a/pypy/module/cppyy/capi/cint_capi.py
+++ b/pypy/module/cppyy/capi/cint_capi.py
@@ -249,7 +249,7 @@
def activate_branch(space, w_branch):
w_branches = space.call_method(w_branch, "GetListOfBranches")
- for i in range(space.int_w(space.call_method(w_branches, "GetEntriesFast"))):
+ for i in range(space.r_longlong_w(space.call_method(w_branches, "GetEntriesFast"))):
w_b = space.call_method(w_branches, "At", space.wrap(i))
activate_branch(space, w_b)
space.call_method(w_branch, "SetStatus", space.wrap(1))
@@ -292,7 +292,7 @@
activate_branch(space, w_branch)
# figure out from where we're reading
- entry = space.int_w(space.call_method(w_self, "GetReadEntry"))
+ entry = space.r_longlong_w(space.call_method(w_self, "GetReadEntry"))
if entry == -1:
entry = 0
@@ -341,7 +341,7 @@
self.w_tree = w_tree
self.current = 0
- self.maxentry = space.int_w(space.call_method(w_tree, "GetEntriesFast"))
+ self.maxentry = space.r_longlong_w(space.call_method(w_tree, "GetEntriesFast"))
space = self.space = tree.space # holds the class cache in State
space.call_method(w_tree, "SetBranchStatus", space.wrap("*"), space.wrap(0))
diff --git a/pypy/module/cppyy/capi/loadable_capi.py b/pypy/module/cppyy/capi/loadable_capi.py
--- a/pypy/module/cppyy/capi/loadable_capi.py
+++ b/pypy/module/cppyy/capi/loadable_capi.py
@@ -91,7 +91,7 @@
# TODO: the following need to match up with the globally defined C_XYZ low-level
# types (see capi/__init__.py), but by using strings here, that isn't guaranteed
- c_opaque_ptr = nt.new_primitive_type(space, 'long')
+ c_opaque_ptr = nt.new_primitive_type(space, 'unsigned long')
c_scope = c_opaque_ptr
c_type = c_scope
@@ -259,10 +259,10 @@
return c_call.ctype.rcall(c_call._cdata, args)
def _cdata_to_cobject(space, w_cdata):
- return rffi.cast(C_OBJECT, space.int_w(w_cdata))
+ return rffi.cast(C_OBJECT, space.uint_w(w_cdata))
def _cdata_to_size_t(space, w_cdata):
- return rffi.cast(rffi.SIZE_T, space.int_w(w_cdata))
+ return rffi.cast(rffi.SIZE_T, space.uint_w(w_cdata))
def _cdata_to_ptr(space, w_cdata): # TODO: this is both a hack and dreadfully slow
return rffi.cast(rffi.VOIDP,
@@ -281,12 +281,12 @@
def c_resolve_name(space, name):
return charp2str_free(space, call_capi(space, 'resolve_name', [_Arg(s=name)]))
def c_get_scope_opaque(space, name):
- return rffi.cast(C_SCOPE, space.int_w(call_capi(space, 'get_scope', [_Arg(s=name)])))
+ return rffi.cast(C_SCOPE, space.uint_w(call_capi(space, 'get_scope', [_Arg(s=name)])))
def c_get_template(space, name):
- return rffi.cast(C_TYPE, space.int_w(call_capi(space, 'get_template', [_Arg(s=name)])))
+ return rffi.cast(C_TYPE, space.uint_w(call_capi(space, 'get_template', [_Arg(s=name)])))
def c_actual_class(space, cppclass, cppobj):
args = [_Arg(l=cppclass.handle), _Arg(l=cppobj)]
- return rffi.cast(C_TYPE, space.int_w(call_capi(space, 'actual_class', args)))
+ return rffi.cast(C_TYPE, space.uint_w(call_capi(space, 'actual_class', args)))
# memory management ----------------------------------------------------------
def c_allocate(space, cppclass):
@@ -302,7 +302,7 @@
call_capi(space, 'call_v', args)
def c_call_b(space, cppmethod, cppobject, nargs, cargs):
args = [_Arg(l=cppmethod), _Arg(l=cppobject), _Arg(l=nargs), _Arg(vp=cargs)]
- return rffi.cast(rffi.UCHAR, space.c_int_w(call_capi(space, 'call_b', args)))
+ return rffi.cast(rffi.UCHAR, space.c_uint_w(call_capi(space, 'call_b', args)))
def c_call_c(space, cppmethod, cppobject, nargs, cargs):
args = [_Arg(l=cppmethod), _Arg(l=cppobject), _Arg(l=nargs), _Arg(vp=cargs)]
return rffi.cast(rffi.CHAR, space.str_w(call_capi(space, 'call_c', args))[0])
@@ -452,7 +452,7 @@
def c_get_method(space, cppscope, index):
args = [_Arg(l=cppscope.handle), _Arg(l=index)]
- return rffi.cast(C_METHOD, space.int_w(call_capi(space, 'get_method', args)))
+ return rffi.cast(C_METHOD, space.uint_w(call_capi(space, 'get_method', args)))
def c_get_global_operator(space, nss, lc, rc, op):
if nss is not None:
args = [_Arg(l=nss.handle), _Arg(l=lc.handle), _Arg(l=rc.handle), _Arg(s=op)]
diff --git a/pypy/module/cppyy/converter.py b/pypy/module/cppyy/converter.py
--- a/pypy/module/cppyy/converter.py
+++ b/pypy/module/cppyy/converter.py
@@ -386,7 +386,7 @@
try:
# TODO: accept a 'capsule' rather than naked int
# (do accept int(0), though)
- obj = rffi.cast(rffi.VOIDP, space.int_w(w_obj))
+ obj = rffi.cast(rffi.VOIDP, space.uint_w(w_obj))
except Exception:
obj = rffi.cast(rffi.VOIDP, get_rawobject(space, w_obj))
return obj
diff --git a/pypy/module/cppyy/include/capi.h b/pypy/module/cppyy/include/capi.h
--- a/pypy/module/cppyy/include/capi.h
+++ b/pypy/module/cppyy/include/capi.h
@@ -7,10 +7,10 @@
extern "C" {
#endif // ifdef __cplusplus
- typedef long cppyy_scope_t;
+ typedef unsigned long cppyy_scope_t;
typedef cppyy_scope_t cppyy_type_t;
- typedef long cppyy_object_t;
- typedef long cppyy_method_t;
+ typedef unsigned long cppyy_object_t;
+ typedef unsigned long cppyy_method_t;
typedef long cppyy_index_t;
typedef void* (*cppyy_methptrgetter_t)(cppyy_object_t);
diff --git a/pypy/module/cppyy/interp_cppyy.py b/pypy/module/cppyy/interp_cppyy.py
--- a/pypy/module/cppyy/interp_cppyy.py
+++ b/pypy/module/cppyy/interp_cppyy.py
@@ -593,7 +593,7 @@
@unwrap_spec(args_w='args_w')
def call(self, w_cppinstance, args_w):
w_result = W_CPPOverload.call(self, w_cppinstance, args_w)
- newthis = rffi.cast(capi.C_OBJECT, self.space.int_w(w_result))
+ newthis = rffi.cast(capi.C_OBJECT, self.space.uint_w(w_result))
cppinstance = self.space.interp_w(W_CPPInstance, w_cppinstance, can_be_None=True)
if cppinstance is not None:
cppinstance._rawobject = newthis
diff --git a/pypy/module/cppyy/test/test_datatypes.py b/pypy/module/cppyy/test/test_datatypes.py
--- a/pypy/module/cppyy/test/test_datatypes.py
+++ b/pypy/module/cppyy/test/test_datatypes.py
@@ -7,8 +7,6 @@
def setup_module(mod):
if sys.platform == 'win32':
py.test.skip("win32 not supported so far")
- if sys.maxsize < 2 ** 31:
- py.test.skip("32 bit not supported so far")
err = os.system("cd '%s' && make datatypesDict.so" % currpath)
if err:
raise OSError("'make' failed (see stderr)")
More information about the pypy-commit
mailing list