[pypy-commit] pypy py3.5: merge default into py3.5
mattip
pypy.commits at gmail.com
Mon Apr 30 12:27:58 EDT 2018
Author: Matti Picus <matti.picus at gmail.com>
Branch: py3.5
Changeset: r94457:8a3e586cc749
Date: 2018-04-29 20:56 +0300
http://bitbucket.org/pypy/pypy/changeset/8a3e586cc749/
Log: merge default into py3.5
diff --git a/.hgtags b/.hgtags
--- a/.hgtags
+++ b/.hgtags
@@ -51,3 +51,5 @@
0000000000000000000000000000000000000000 release-pypy3.5-v5.10.0
09f9160b643e3f02ccb8c843b2fbb4e5cbf54082 release-pypy3.5-v5.10.0
3f6eaa010fce78cc7973bdc1dfdb95970f08fed2 release-pypy3.5-v5.10.1
+ab0b9caf307db6592905a80b8faffd69b39005b8 release-pypy2.7-v6.0.0
+fdd60ed87e941677e8ea11acf9f1819466521bf2 release-pypy3.5-v6.0.0
diff --git a/dotviewer/font/NOTICE b/dotviewer/font/COPYING.txt
rename from dotviewer/font/NOTICE
rename to dotviewer/font/COPYING.txt
diff --git a/lib_pypy/_ctypes/array.py b/lib_pypy/_ctypes/array.py
--- a/lib_pypy/_ctypes/array.py
+++ b/lib_pypy/_ctypes/array.py
@@ -81,8 +81,11 @@
def _CData_output(self, resarray, base=None, index=-1):
from _rawffi.alt import types
# If a char_p or unichar_p is received, skip the string interpretation
- if base._ffiargtype != types.Pointer(types.char_p) and \
- base._ffiargtype != types.Pointer(types.unichar_p):
+ try:
+ deref = type(base)._deref_ffiargtype()
+ except AttributeError:
+ deref = None
+ if deref != types.char_p and deref != types.unichar_p:
# this seems to be a string if we're array of char, surprise!
from ctypes import c_char, c_wchar
if self._type_ is c_char:
@@ -127,6 +130,12 @@
value = self(*value)
return _CDataMeta.from_param(self, value)
+ def _build_ffiargtype(self):
+ return _ffi.types.Pointer(self._type_.get_ffi_argtype())
+
+ def _deref_ffiargtype(self):
+ return self._type_.get_ffi_argtype()
+
def array_get_slice_params(self, index):
if hasattr(self, '_length_'):
start, stop, step = index.indices(self._length_)
@@ -254,6 +263,5 @@
_type_ = base
)
cls = ArrayMeta(name, (Array,), tpdict)
- cls._ffiargtype = _ffi.types.Pointer(base.get_ffi_argtype())
ARRAY_CACHE[key] = cls
return cls
diff --git a/lib_pypy/_ctypes/basics.py b/lib_pypy/_ctypes/basics.py
--- a/lib_pypy/_ctypes/basics.py
+++ b/lib_pypy/_ctypes/basics.py
@@ -49,10 +49,13 @@
else:
return self.from_param(as_parameter)
+ def _build_ffiargtype(self):
+ return _shape_to_ffi_type(self._ffiargshape_)
+
def get_ffi_argtype(self):
if self._ffiargtype:
return self._ffiargtype
- self._ffiargtype = _shape_to_ffi_type(self._ffiargshape_)
+ self._ffiargtype = self._build_ffiargtype()
return self._ffiargtype
def _CData_output(self, resbuffer, base=None, index=-1):
diff --git a/lib_pypy/_ctypes/pointer.py b/lib_pypy/_ctypes/pointer.py
--- a/lib_pypy/_ctypes/pointer.py
+++ b/lib_pypy/_ctypes/pointer.py
@@ -70,7 +70,12 @@
self._ffiarray = ffiarray
self.__init__ = __init__
self._type_ = TP
- self._ffiargtype = _ffi.types.Pointer(TP.get_ffi_argtype())
+
+ def _build_ffiargtype(self):
+ return _ffi.types.Pointer(self._type_.get_ffi_argtype())
+
+ def _deref_ffiargtype(self):
+ return self._type_.get_ffi_argtype()
from_address = cdata_from_address
diff --git a/lib_pypy/_ctypes/structure.py b/lib_pypy/_ctypes/structure.py
--- a/lib_pypy/_ctypes/structure.py
+++ b/lib_pypy/_ctypes/structure.py
@@ -160,6 +160,10 @@
raise AttributeError("_fields_ is final")
if self in [f[1] for f in value]:
raise AttributeError("Structure or union cannot contain itself")
+ if self._ffiargtype is not None:
+ raise NotImplementedError("Too late to set _fields_: we already "
+ "said to libffi that the structure type %s is opaque"
+ % (self,))
names_and_fields(
self,
value, self.__bases__[0],
diff --git a/pypy/doc/gc_info.rst b/pypy/doc/gc_info.rst
--- a/pypy/doc/gc_info.rst
+++ b/pypy/doc/gc_info.rst
@@ -152,7 +152,7 @@
to wait until it reaches a point in which the interpreter is in a known state
and calling user-defined code is harmless. It might happen that multiple
events occur before the hook is invoked: in this case, you can inspect the
-value ``stats.count`` to know how many times the event occured since the last
+value ``stats.count`` to know how many times the event occurred since the last
time the hook was called. Similarly, ``stats.duration`` contains the
**total** time spent by the GC for this specific event since the last time the
hook was called.
@@ -163,7 +163,7 @@
The attributes for ``GcMinorStats`` are:
``count``
- The number of minor collections occured since the last hook call.
+ The number of minor collections occurred since the last hook call.
``duration``
The total time spent inside minor collections since the last hook
diff --git a/pypy/doc/release-v6.0.0.rst b/pypy/doc/release-v6.0.0.rst
--- a/pypy/doc/release-v6.0.0.rst
+++ b/pypy/doc/release-v6.0.0.rst
@@ -8,13 +8,18 @@
the dual release.
This release is a feature release following our previous 5.10 incremental
-release in late December 2017. Our C-API compatability layer ``cpyext`` is
+release in late December 2017. Our C-API compatibility layer ``cpyext`` is
now much faster (see the `blog post`_) as well as more complete. We have made
many other improvements in speed and CPython compatibility. Since the changes
affect the included python development header files, all c-extension modules must
be recompiled for this version.
-First-time python users are often stumped by silly typos and emissions when
+Until we can work with downstream providers to distribute builds with PyPy, we
+have made packages for some common packages `available as wheels`_. You may
+compile yourself using ``pip install --no-build-isolation <package>``, the
+``no-build-isolation`` is currently needed for pip v10.
+
+First-time python users are often stumped by silly typos and omissions when
getting started writing code. We have improved our parser to emit more friendly
`syntax errors`_, making PyPy not only faster but more friendly.
@@ -60,6 +65,7 @@
.. _`hooks`: gc_info.html#gc-hooks
.. _`cffi`: http://cffi.readthedocs.io
.. _`cppyy`: https://cppyy.readthedocs.io
+.. _`available as wheels`: https://github.com/antocuni/pypy-wheels
What is PyPy?
=============
@@ -110,7 +116,7 @@
* Fix JIT bugs exposed in the sre module
* Improve speed of Python parser, improve ParseError messages and SyntaxError
* Handle JIT hooks more efficiently
-* Fix a rare GC bug exposed by intensive use of cpyext `Buffer` s
+* Fix a rare GC bug exposed by intensive use of cpyext ``Buffer`` s
We also refactored many parts of the JIT bridge optimizations, as well as cpyext
internals, and together with new contributors fixed issues, added new
diff --git a/pypy/module/__builtin__/operation.py b/pypy/module/__builtin__/operation.py
--- a/pypy/module/__builtin__/operation.py
+++ b/pypy/module/__builtin__/operation.py
@@ -137,7 +137,7 @@
"""iter(collection) -> iterator over the elements of the collection.
iter(callable, sentinel) -> iterator calling callable() until it returns
- the sentinal.
+ the sentinel.
"""
if w_sentinel is None:
return space.iter(w_collection_or_callable)
diff --git a/pypy/module/_codecs/interp_codecs.py b/pypy/module/_codecs/interp_codecs.py
--- a/pypy/module/_codecs/interp_codecs.py
+++ b/pypy/module/_codecs/interp_codecs.py
@@ -556,7 +556,7 @@
to the default encoding. errors may be given to set a different error
handling scheme. Default is 'strict' meaning that encoding errors raise
a ValueError. Other possible values are 'ignore' and 'replace'
- as well as any other name registerd with codecs.register_error that is
+ as well as any other name registered with codecs.register_error that is
able to handle ValueErrors.
"""
if w_encoding is None:
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
@@ -476,7 +476,7 @@
assert c.get_valid_string('aap') == 'aap'
#assert c.get_invalid_string() == ''
- def test12_copy_contructor(self):
+ def test12_copy_constructor(self):
"""Test copy constructor"""
import _cppyy as cppyy
diff --git a/pypy/module/itertools/interp_itertools.py b/pypy/module/itertools/interp_itertools.py
--- a/pypy/module/itertools/interp_itertools.py
+++ b/pypy/module/itertools/interp_itertools.py
@@ -538,7 +538,7 @@
def chain_from_iterable(space, w_cls, w_arg):
"""chain.from_iterable(iterable) --> chain object
- Alternate chain() contructor taking a single iterable argument
+ Alternate chain() constructor taking a single iterable argument
that evaluates lazily."""
r = space.allocate_instance(W_Chain, w_cls)
r.__init__(space, space.iter(w_arg))
diff --git a/pypy/module/micronumpy/ndarray.py b/pypy/module/micronumpy/ndarray.py
--- a/pypy/module/micronumpy/ndarray.py
+++ b/pypy/module/micronumpy/ndarray.py
@@ -820,7 +820,7 @@
if (axis1 < 0 or axis2 < 0 or axis1 >= self.ndims() or
axis2 >= self.ndims()):
raise oefmt(space.w_ValueError,
- "axis1(=%d) and axis2(=%d) must be withing range "
+ "axis1(=%d) and axis2(=%d) must be within range "
"(ndim=%d)", axis1, axis2, self.ndims())
if axis1 == axis2:
raise oefmt(space.w_ValueError,
diff --git a/pypy/module/test_lib_pypy/ctypes_tests/test_numbers.py b/pypy/module/test_lib_pypy/ctypes_tests/test_numbers.py
--- a/pypy/module/test_lib_pypy/ctypes_tests/test_numbers.py
+++ b/pypy/module/test_lib_pypy/ctypes_tests/test_numbers.py
@@ -62,7 +62,7 @@
assert t(h).value == h
def test_typeerror(self):
- # Only numbers are allowed in the contructor,
+ # Only numbers are allowed in the constructor,
# otherwise TypeError is raised
for t in signed_types + unsigned_types + float_types:
with pytest.raises(TypeError):
diff --git a/pypy/module/test_lib_pypy/ctypes_tests/test_pointers.py b/pypy/module/test_lib_pypy/ctypes_tests/test_pointers.py
--- a/pypy/module/test_lib_pypy/ctypes_tests/test_pointers.py
+++ b/pypy/module/test_lib_pypy/ctypes_tests/test_pointers.py
@@ -272,3 +272,18 @@
base = cast(d, c_void_p).value
for i in [0, 1, 4, 1444, -10293]:
assert cast(byref(c, i), c_void_p).value == base + i
+
+ def test_issue2813_fix(self):
+ class C(Structure):
+ pass
+ POINTER(C)
+ C._fields_ = [('x', c_int)]
+ ffitype = C.get_ffi_argtype()
+ assert C.get_ffi_argtype() is ffitype
+ assert ffitype.sizeof() == sizeof(c_int)
+
+ def test_issue2813_cant_change_fields_after_get_ffi_argtype(self):
+ class C(Structure):
+ pass
+ ffitype = C.get_ffi_argtype()
+ raises(NotImplementedError, "C._fields_ = [('x', c_int)]")
diff --git a/rpython/jit/backend/llsupport/rewrite.py b/rpython/jit/backend/llsupport/rewrite.py
--- a/rpython/jit/backend/llsupport/rewrite.py
+++ b/rpython/jit/backend/llsupport/rewrite.py
@@ -63,7 +63,7 @@
def remember_known_length(self, op, val):
self._known_lengths[op] = val
- def remember_setarrayitem_occured(self, op, index):
+ def remember_setarrayitem_occurred(self, op, index):
op = self.get_box_replacement(op)
try:
subs = self._setarrayitems_occurred[op]
@@ -456,7 +456,7 @@
array_box = op.getarg(0)
index_box = op.getarg(1)
if not isinstance(array_box, ConstPtr) and index_box.is_constant():
- self.remember_setarrayitem_occured(array_box, index_box.getint())
+ self.remember_setarrayitem_occurred(array_box, index_box.getint())
def clear_varsize_gc_fields(self, kind, descr, result, v_length, opnum):
if self.gc_ll_descr.malloc_zero_filled:
diff --git a/rpython/jit/backend/zarch/opassembler.py b/rpython/jit/backend/zarch/opassembler.py
--- a/rpython/jit/backend/zarch/opassembler.py
+++ b/rpython/jit/backend/zarch/opassembler.py
@@ -74,7 +74,7 @@
mc.MLGR(lr, l1)
mc.LGHI(r.SCRATCH, l.imm(-1))
mc.RISBG(r.SCRATCH, r.SCRATCH, l.imm(0), l.imm(0x80 | 0), l.imm(0))
- # is the value greater than 2**63 ? then an overflow occured
+ # is the value greater than 2**63 ? then an overflow occurred
jmp_xor_lq_overflow = mc.get_relative_pos()
mc.reserve_cond_jump() # CLGRJ lq > 0x8000 ... 00 -> (label_overflow)
jmp_xor_lr_overflow = mc.get_relative_pos()
diff --git a/rpython/rlib/rvmprof/src/shared/vmp_stack.c b/rpython/rlib/rvmprof/src/shared/vmp_stack.c
--- a/rpython/rlib/rvmprof/src/shared/vmp_stack.c
+++ b/rpython/rlib/rvmprof/src/shared/vmp_stack.c
@@ -214,7 +214,7 @@
ret = unw_getcontext(&uc);
if (ret < 0) {
// could not initialize lib unwind cursor and context
- fprintf(stderr, "WARNING: unw_getcontext did not retreive context, switching to python profiling mode \n");
+ fprintf(stderr, "WARNING: unw_getcontext did not retrieve context, switching to python profiling mode \n");
vmp_native_disable();
return vmp_walk_and_record_python_stack_only(frame, result, max_depth, 0, pc);
}
diff --git a/rpython/rtyper/rpbc.py b/rpython/rtyper/rpbc.py
--- a/rpython/rtyper/rpbc.py
+++ b/rpython/rtyper/rpbc.py
@@ -999,7 +999,7 @@
classdef.has_no_attrs()):
# special case for instanciating simple built-in
# exceptions: always return the same prebuilt instance,
- # and ignore any arguments passed to the contructor.
+ # and ignore any arguments passed to the constructor.
r_instance = rclass.getinstancerepr(hop.rtyper, classdef)
example = r_instance.get_reusable_prebuilt_instance()
hop.exception_cannot_occur()
diff --git a/rpython/translator/c/extfunc.py b/rpython/translator/c/extfunc.py
--- a/rpython/translator/c/extfunc.py
+++ b/rpython/translator/c/extfunc.py
@@ -17,7 +17,7 @@
yield ('RPYTHON_EXCEPTION_MATCH', exceptiondata.fn_exception_match)
yield ('RPYTHON_TYPE_OF_EXC_INST', exceptiondata.fn_type_of_exc_inst)
- yield ('RPyExceptionOccurred1', exctransformer.rpyexc_occured_ptr.value)
+ yield ('RPyExceptionOccurred1', exctransformer.rpyexc_occurred_ptr.value)
yield ('RPyFetchExceptionType', exctransformer.rpyexc_fetch_type_ptr.value)
yield ('RPyFetchExceptionValue', exctransformer.rpyexc_fetch_value_ptr.value)
yield ('RPyClearException', exctransformer.rpyexc_clear_ptr.value)
diff --git a/rpython/translator/exceptiontransform.py b/rpython/translator/exceptiontransform.py
--- a/rpython/translator/exceptiontransform.py
+++ b/rpython/translator/exceptiontransform.py
@@ -66,7 +66,7 @@
assertion_error_ll_exc_type)
self.c_n_i_error_ll_exc_type = constant_value(n_i_error_ll_exc_type)
- def rpyexc_occured():
+ def rpyexc_occurred():
exc_type = exc_data.exc_type
return bool(exc_type)
@@ -109,9 +109,9 @@
exc_data.exc_type = ll_inst_type(evalue)
exc_data.exc_value = evalue
- self.rpyexc_occured_ptr = self.build_func(
+ self.rpyexc_occurred_ptr = self.build_func(
"RPyExceptionOccurred",
- rpyexc_occured,
+ rpyexc_occurred,
[], lltype.Bool)
self.rpyexc_fetch_type_ptr = self.build_func(
More information about the pypy-commit
mailing list