Author: Brian Kearns <bdkea...@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)") _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit