Author: Philip Jenvey <pjen...@underboss.org> Branch: py3k Changeset: r74306:72fb7148be52 Date: 2014-10-30 12:21 -0700 http://bitbucket.org/pypy/pypy/changeset/72fb7148be52/
Log: merge default diff --git a/pypy/module/array/interp_array.py b/pypy/module/array/interp_array.py --- a/pypy/module/array/interp_array.py +++ b/pypy/module/array/interp_array.py @@ -1,5 +1,3 @@ -from __future__ import with_statement - from rpython.rlib import jit from rpython.rlib.buffer import Buffer from rpython.rlib.objectmodel import keepalive_until_here diff --git a/pypy/objspace/std/complexobject.py b/pypy/objspace/std/complexobject.py --- a/pypy/objspace/std/complexobject.py +++ b/pypy/objspace/std/complexobject.py @@ -1,19 +1,20 @@ import math +from rpython.rlib import jit, rcomplex +from rpython.rlib.rarithmetic import intmask, r_ulonglong +from rpython.rlib.rbigint import rbigint +from rpython.rlib.rfloat import ( + DTSF_STR_PRECISION, copysign, formatd, isinf, isnan, string_to_float) +from rpython.rlib.rstring import ParseStringError +from rpython.tool.sourcetools import func_with_new_name + from pypy.interpreter.baseobjspace import W_Root from pypy.interpreter.error import OperationError, oefmt -from pypy.interpreter.gateway import interp2app, unwrap_spec, WrappedDefault +from pypy.interpreter.gateway import WrappedDefault, interp2app, unwrap_spec from pypy.interpreter.typedef import GetSetProperty, TypeDef from pypy.objspace.std import newformat from pypy.objspace.std.floatobject import _hash_float from pypy.objspace.std.unicodeobject import unicode_to_decimal_w -from rpython.rlib import jit, rcomplex -from rpython.rlib.rarithmetic import intmask, r_ulonglong -from rpython.rlib.rbigint import rbigint -from rpython.rlib.rfloat import ( - formatd, DTSF_STR_PRECISION, isinf, isnan, copysign, string_to_float) -from rpython.rlib.rstring import ParseStringError -from rpython.tool.sourcetools import func_with_new_name HASH_IMAG = 1000003 diff --git a/pypy/objspace/std/dictproxyobject.py b/pypy/objspace/std/dictproxyobject.py --- a/pypy/objspace/std/dictproxyobject.py +++ b/pypy/objspace/std/dictproxyobject.py @@ -1,8 +1,9 @@ -from pypy.objspace.std.dictmultiobject import DictStrategy, create_iterator_classes +from rpython.rlib import rerased + +from pypy.interpreter.error import OperationError, oefmt +from pypy.objspace.std.dictmultiobject import ( + DictStrategy, create_iterator_classes) from pypy.objspace.std.typeobject import unwrap_cell -from pypy.interpreter.error import OperationError, oefmt - -from rpython.rlib import rerased class DictProxyStrategy(DictStrategy): diff --git a/pypy/objspace/std/floatobject.py b/pypy/objspace/std/floatobject.py --- a/pypy/objspace/std/floatobject.py +++ b/pypy/objspace/std/floatobject.py @@ -2,9 +2,20 @@ import operator import sys +from rpython.rlib import rarithmetic, rfloat +from rpython.rlib.rarithmetic import LONG_BIT, intmask, ovfcheck_float_to_int +from rpython.rlib.rbigint import rbigint +from rpython.rlib.rfloat import ( + DTSF_ADD_DOT_0, INFINITY, NAN, copysign, + float_as_rbigint_ratio, formatd, isfinite, isinf, isnan) +from rpython.rlib.rstring import ParseStringError +from rpython.rlib.unroll import unrolling_iterable +from rpython.rtyper.lltypesystem.module.ll_math import math_fmod +from rpython.tool.sourcetools import func_with_new_name + from pypy.interpreter.baseobjspace import W_Root from pypy.interpreter.error import OperationError, oefmt -from pypy.interpreter.gateway import interp2app, unwrap_spec, WrappedDefault +from pypy.interpreter.gateway import WrappedDefault, interp2app, unwrap_spec from pypy.interpreter.typedef import GetSetProperty, TypeDef from pypy.objspace.std import newformat from pypy.objspace.std.intobject import HASH_BITS, HASH_MODULUS, W_IntObject @@ -13,15 +24,6 @@ from rpython.rlib.rarithmetic import ( LONG_BIT, intmask, ovfcheck_float_to_int, r_uint) from pypy.objspace.std.util import wrap_parsestringerror -from rpython.rlib import rarithmetic, rfloat -from rpython.rlib.rbigint import rbigint -from rpython.rlib.rfloat import ( - isinf, isnan, isfinite, INFINITY, NAN, copysign, formatd, - DTSF_ADD_DOT_0, float_as_rbigint_ratio) -from rpython.rlib.rstring import ParseStringError -from rpython.tool.sourcetools import func_with_new_name -from rpython.rlib.unroll import unrolling_iterable -from rpython.rtyper.lltypesystem.module.ll_math import math_fmod HASH_INF = 314159 HASH_NAN = 0 diff --git a/pypy/objspace/std/listobject.py b/pypy/objspace/std/listobject.py --- a/pypy/objspace/std/listobject.py +++ b/pypy/objspace/std/listobject.py @@ -10,27 +10,28 @@ import operator import sys +from rpython.rlib import debug, jit, rerased +from rpython.rlib.listsort import make_timsort_class +from rpython.rlib.objectmodel import ( + import_from_mixin, instantiate, newlist_hint, resizelist_hint, specialize) +from rpython.tool.sourcetools import func_with_new_name + from pypy.interpreter.baseobjspace import W_Root from pypy.interpreter.error import OperationError, oefmt -from pypy.interpreter.gateway import (WrappedDefault, unwrap_spec, applevel, - interp2app) +from pypy.interpreter.gateway import ( + WrappedDefault, applevel, interp2app, unwrap_spec) from pypy.interpreter.generator import GeneratorIterator from pypy.interpreter.signature import Signature from pypy.interpreter.typedef import TypeDef from pypy.objspace.std.bytesobject import W_BytesObject from pypy.objspace.std.floatobject import W_FloatObject from pypy.objspace.std.intobject import W_IntObject -from pypy.objspace.std.iterobject import (W_FastListIterObject, - W_ReverseSeqIterObject) +from pypy.objspace.std.iterobject import ( + W_FastListIterObject, W_ReverseSeqIterObject) from pypy.objspace.std.sliceobject import W_SliceObject, unwrap_start_stop from pypy.objspace.std.tupleobject import W_AbstractTupleObject from pypy.objspace.std.unicodeobject import W_UnicodeObject from pypy.objspace.std.util import get_positive_index, negate -from rpython.rlib import debug, jit, rerased -from rpython.rlib.listsort import make_timsort_class -from rpython.rlib.objectmodel import ( - instantiate, newlist_hint, resizelist_hint, specialize, import_from_mixin) -from rpython.tool.sourcetools import func_with_new_name __all__ = ['W_ListObject', 'make_range_list', 'make_empty_list_with_size'] diff --git a/pypy/objspace/std/test/test_complexobject.py b/pypy/objspace/std/test/test_complexobject.py --- a/pypy/objspace/std/test/test_complexobject.py +++ b/pypy/objspace/std/test/test_complexobject.py @@ -1,6 +1,4 @@ # -*- encoding: utf-8 -*- -from __future__ import print_function - import py from pypy.objspace.std.complexobject import W_ComplexObject, _split_complex diff --git a/rpython/rlib/streamio.py b/rpython/rlib/streamio.py --- a/rpython/rlib/streamio.py +++ b/rpython/rlib/streamio.py @@ -238,7 +238,14 @@ bufsize = 8192 result = [] while True: - data = self.read(bufsize) + try: + data = self.read(bufsize) + except OSError: + # like CPython < 3.4, partial results followed by an error + # are returned as data + if not result: + raise + break if not data: break result.append(data) @@ -657,8 +664,8 @@ try: data = self.do_read(bufsize) except OSError, o: - if o.errno != errno.EAGAIN: - raise + # like CPython < 3.4, partial results followed by an error + # are returned as data if not chunks: raise break diff --git a/rpython/rlib/test/test_streamio.py b/rpython/rlib/test/test_streamio.py --- a/rpython/rlib/test/test_streamio.py +++ b/rpython/rlib/test/test_streamio.py @@ -1136,6 +1136,24 @@ assert x.tell() == 0 # detected in this case. not always. # the point of the test is that we don't crash in an assert. + def test_ignore_ioerror_in_readall_if_nonempty_result(self): + # this is the behavior of regular files in CPython 2.7, as + # well as of _io.FileIO at least in CPython 3.3. This is + # *not* the behavior of _io.FileIO in CPython 3.4 or 3.5; + # see CPython's issue #21090. + try: + from os import openpty + except ImportError: + pytest.skip('no openpty on this platform') + read_fd, write_fd = openpty() + os.write(write_fd, 'Abc\n') + os.close(write_fd) + x = streamio.DiskFile(read_fd) + s = x.readall() + assert s == 'Abc\r\n' + pytest.raises(OSError, x.readall) + x.close() + # Speed test diff --git a/rpython/translator/c/src/precommondefs.h b/rpython/translator/c/src/precommondefs.h --- a/rpython/translator/c/src/precommondefs.h +++ b/rpython/translator/c/src/precommondefs.h @@ -44,8 +44,10 @@ #ifdef __GNUC__ # define RPY_EXPORTED __attribute__((visibility("default"))) +# define RPY_HIDDEN __attribute__((visibility("hidden"))) #else # define RPY_EXPORTED __declspec(dllexport) +# define RPY_HIDDEN /* nothing */ #endif #ifndef RPY_EXPORTED_FOR_TESTS # define RPY_EXPORTED_FOR_TESTS /* nothing */ diff --git a/rpython/translator/c/support.py b/rpython/translator/c/support.py --- a/rpython/translator/c/support.py +++ b/rpython/translator/c/support.py @@ -38,6 +38,8 @@ if is_exported: assert not is_thread_local prefix = "RPY_EXPORTED " + elif standalone: + prefix += "RPY_HIDDEN " cdecl_str = prefix + cdecl(ctype, cname) if standalone: _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit