Author: Ronan Lamy <ronan.l...@gmail.com> Branch: unicode-utf8 Changeset: r93383:b8d6b2298b9b Date: 2017-12-12 05:37 +0000 http://bitbucket.org/pypy/pypy/changeset/b8d6b2298b9b/
Log: hg merge default diff --git a/pypy/doc/build.rst b/pypy/doc/build.rst --- a/pypy/doc/build.rst +++ b/pypy/doc/build.rst @@ -149,7 +149,7 @@ xz-devel # For lzma on PyPy3. (XXX plus the SLES11 version of libgdbm-dev and tk-dev) -On Mac OS X:: +On Mac OS X: Most of these build-time dependencies are installed alongside the Developer Tools. However, note that in order for the installation to diff --git a/pypy/doc/cpython_differences.rst b/pypy/doc/cpython_differences.rst --- a/pypy/doc/cpython_differences.rst +++ b/pypy/doc/cpython_differences.rst @@ -355,7 +355,11 @@ containers (as list items or in sets for example), the exact rule of equality used is "``if x is y or x == y``" (on both CPython and PyPy); as a consequence, because all ``nans`` are identical in PyPy, you -cannot have several of them in a set, unlike in CPython. (Issue `#1974`__) +cannot have several of them in a set, unlike in CPython. (Issue `#1974`__). +Another consequence is that ``cmp(float('nan'), float('nan')) == 0``, because +``cmp`` checks with ``is`` first whether the arguments are identical (there is +no good value to return from this call to ``cmp``, because ``cmp`` pretends +that there is a total order on floats, but that is wrong for NaNs). .. __: https://bitbucket.org/pypy/pypy/issue/1974/different-behaviour-for-collections-of 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 @@ -5,26 +5,33 @@ .. this is a revision shortly after release-pypy2.7-v5.9.0 .. startrev:d56dadcef996 + .. branch: cppyy-packaging + Cleanup and improve cppyy packaging .. branch: docs-osx-brew-openssl .. branch: keep-debug-symbols + Add a smartstrip tool, which can optionally keep the debug symbols in a separate file, instead of just stripping them away. Use it in packaging .. branch: bsd-patches + Fix failures on FreeBSD, contributed by David Naylor as patches on the issue tracker (issues 2694, 2695, 2696, 2697) .. branch: run-extra-tests + Run extra_tests/ in buildbot .. branch: vmprof-0.4.10 + Upgrade the _vmprof backend to vmprof 0.4.10 .. branch: fix-vmprof-stacklet-switch + Fix a vmprof+continulets (i.e. greenelts, eventlet, gevent, ...) .. branch: win32-vcvars diff --git a/pypy/doc/whatsnew-pypy2-5.6.0.rst b/pypy/doc/whatsnew-pypy2-5.6.0.rst --- a/pypy/doc/whatsnew-pypy2-5.6.0.rst +++ b/pypy/doc/whatsnew-pypy2-5.6.0.rst @@ -101,7 +101,7 @@ .. branch: newinitwarn -Match CPython's stricter handling of __new/init__ arguments +Match CPython's stricter handling of ``__new__``/``__init__`` arguments .. branch: openssl-1.1 diff --git a/pypy/doc/windows.rst b/pypy/doc/windows.rst --- a/pypy/doc/windows.rst +++ b/pypy/doc/windows.rst @@ -11,7 +11,7 @@ To build pypy-c you need a working python environment, and a C compiler. It is possible to translate with a CPython 2.6 or later, but this is not -the preferred way, because it will take a lot longer to run � depending +the preferred way, because it will take a lot longer to run – depending on your architecture, between two and three times as long. So head to `our downloads`_ and get the latest stable version. @@ -103,6 +103,7 @@ must also copy the ``vcvarsall.bat`` file fron the ``...\9.0`` directory to the ``...\9.0\VC`` directory, and edit it, changing the lines that set ``VCINSTALLDIR`` and ``WindowsSdkDir``:: + set VCINSTALLDIR=%~dp0\ set WindowsSdkDir=%~dp0\..\WinSDK\ diff --git a/pypy/module/__builtin__/test/test_builtin.py b/pypy/module/__builtin__/test/test_builtin.py --- a/pypy/module/__builtin__/test/test_builtin.py +++ b/pypy/module/__builtin__/test/test_builtin.py @@ -404,6 +404,7 @@ def test_cmp(self): + assert cmp(float('nan'), float('nan')) == 0 assert cmp(9,9) == 0 assert cmp(0,9) < 0 assert cmp(9,0) > 0 diff --git a/pypy/module/posix/test/test_posix2.py b/pypy/module/posix/test/test_posix2.py --- a/pypy/module/posix/test/test_posix2.py +++ b/pypy/module/posix/test/test_posix2.py @@ -31,9 +31,15 @@ pdir.join('file2').write("test2") pdir.join('another_longer_file_name').write("test3") mod.pdir = pdir - unicode_dir = udir.ensure('fi\xc5\x9fier.txt', dir=True) + if sys.platform == 'darwin': + # see issue https://bugs.python.org/issue31380 + unicode_dir = udir.ensure('fixc5x9fier.txt', dir=True) + file_name = 'cafxe9' + else: + unicode_dir = udir.ensure('fi\xc5\x9fier.txt', dir=True) + file_name = 'caf\xe9' unicode_dir.join('somefile').write('who cares?') - unicode_dir.join('caf\xe9').write('who knows?') + unicode_dir.join(file_name).write('who knows?') mod.unicode_dir = unicode_dir # in applevel tests, os.stat uses the CPython os.stat. diff --git a/pypy/module/time/interp_time.py b/pypy/module/time/interp_time.py --- a/pypy/module/time/interp_time.py +++ b/pypy/module/time/interp_time.py @@ -310,12 +310,19 @@ errno = rposix.get_saved_errno() return os.strerror(errno) +def _check_sleep_arg(space, secs): + from rpython.rlib.rfloat import isinf, isnan + if secs < 0: + raise oefmt(space.w_IOError, + "Invalid argument: negative time in sleep") + if isinf(secs) or isnan(secs): + raise oefmt(space.w_IOError, + "Invalid argument: inf or nan") + if sys.platform != 'win32': @unwrap_spec(secs=float) def sleep(space, secs): - if secs < 0: - raise oefmt(space.w_IOError, - "Invalid argument: negative time in sleep") + _check_sleep_arg(space, secs) rtime.sleep(secs) else: from rpython.rlib import rwin32 @@ -336,9 +343,7 @@ OSError(EINTR, "sleep() interrupted")) @unwrap_spec(secs=float) def sleep(space, secs): - if secs < 0: - raise oefmt(space.w_IOError, - "Invalid argument: negative time in sleep") + _check_sleep_arg(space, secs) # as decreed by Guido, only the main thread can be # interrupted. main_thread = space.fromcache(State).main_thread diff --git a/pypy/module/time/test/test_time.py b/pypy/module/time/test/test_time.py --- a/pypy/module/time/test/test_time.py +++ b/pypy/module/time/test/test_time.py @@ -19,6 +19,8 @@ raises(TypeError, time.sleep, "foo") time.sleep(0.12345) raises(IOError, time.sleep, -1.0) + raises(IOError, time.sleep, float('nan')) + raises(IOError, time.sleep, float('inf')) def test_clock(self): import time diff --git a/rpython/rlib/debug.py b/rpython/rlib/debug.py --- a/rpython/rlib/debug.py +++ b/rpython/rlib/debug.py @@ -288,6 +288,9 @@ def mark_dict_non_null(d): """ Mark dictionary as having non-null keys and values. A warning would be emitted (not an error!) in case annotation disagrees. + + This doesn't work for r_dicts. For them, pass + r_dict(..., force_non_null=True) to the constructor. """ assert isinstance(d, dict) return d _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit