Author: Carl Friedrich Bolz-Tereick <cfb...@gmx.de>
Branch: py3.6
Changeset: r96169:ff451dfc00d9
Date: 2019-02-26 15:57 +0100
http://bitbucket.org/pypy/pypy/changeset/ff451dfc00d9/

Log:    merge default

diff --git a/pypy/conftest.py b/pypy/conftest.py
--- a/pypy/conftest.py
+++ b/pypy/conftest.py
@@ -19,11 +19,12 @@
 except ImportError:
     pass
 else:
-    if __version__[:3] < '3.6':
-        s = settings(deadline=None)
-        settings.register_profile('default', s)
-    else:
+    try:
         settings.register_profile('default', deadline=None)
+    except Exception:
+        import warnings
+        warnings.warn("Version of hypothesis too old, "
+                      "cannot set the deadline to None")
     settings.load_profile('default')
 
 # PyPy's command line extra options (these are added
diff --git a/pypy/module/cpyext/dictobject.py b/pypy/module/cpyext/dictobject.py
--- a/pypy/module/cpyext/dictobject.py
+++ b/pypy/module/cpyext/dictobject.py
@@ -73,7 +73,7 @@
              result_borrowed=True)
 def PyDict_GetItem(space, w_dict, w_key):
     if not isinstance(w_dict, W_DictMultiObject):
-        raise PyErr_BadInternalCall(space)
+        return None
     # NOTE: this works so far because all our dict strategies store
     # *values* as full objects, which stay alive as long as the dict is
     # alive and not modified.  So we can return a borrowed ref.
@@ -83,14 +83,14 @@
 @cpython_api([PyObject, PyObject, PyObject], rffi.INT_real, error=-1)
 def PyDict_SetItem(space, w_dict, w_key, w_obj):
     if not isinstance(w_dict, W_DictMultiObject):
-        raise PyErr_BadInternalCall(space)
+        PyErr_BadInternalCall(space)
     w_dict.setitem(w_key, w_obj)
     return 0
 
 @cpython_api([PyObject, PyObject], rffi.INT_real, error=-1)
 def PyDict_DelItem(space, w_dict, w_key):
     if not isinstance(w_dict, W_DictMultiObject):
-        raise PyErr_BadInternalCall(space)
+        PyErr_BadInternalCall(space)
     w_dict.descr_delitem(space, w_key)
     return 0
 
@@ -98,7 +98,7 @@
 def PyDict_SetItemString(space, w_dict, key_ptr, w_obj):
     w_key = space.newtext(rffi.charp2str(key_ptr))
     if not isinstance(w_dict, W_DictMultiObject):
-        raise PyErr_BadInternalCall(space)
+        PyErr_BadInternalCall(space)
     w_dict.setitem(w_key, w_obj)
     return 0
 
@@ -109,7 +109,7 @@
     char*, rather than a PyObject*."""
     w_key = space.newtext(rffi.charp2str(key))
     if not isinstance(w_dict, W_DictMultiObject):
-        raise PyErr_BadInternalCall(space)
+        return None
     # NOTE: this works so far because all our dict strategies store
     # *values* as full objects, which stay alive as long as the dict is
     # alive and not modified.  So we can return a borrowed ref.
diff --git a/pypy/module/pypyjit/test_pypy_c/test_micronumpy.py 
b/pypy/module/pypyjit/test_pypy_c/test_micronumpy.py
--- a/pypy/module/pypyjit/test_pypy_c/test_micronumpy.py
+++ b/pypy/module/pypyjit/test_pypy_c/test_micronumpy.py
@@ -1,12 +1,14 @@
 import py
 import sys
+import platform
 from pypy.module.pypyjit.test_pypy_c.test_00_model import BaseTestPyPyC
 from rpython.rlib.rawstorage import misaligned_is_fine
 
 def no_vector_backend():
-    import platform
     if platform.machine().startswith('x86'):
         from rpython.jit.backend.x86.detect_feature import detect_sse4_2
+        if sys.maxsize < 2**31:
+            return True    
         return not detect_sse4_2()
     if platform.machine().startswith('ppc'):
         from rpython.jit.backend.ppc.detect_feature import detect_vsx
diff --git a/rpython/rlib/rutf8.py b/rpython/rlib/rutf8.py
--- a/rpython/rlib/rutf8.py
+++ b/rpython/rlib/rutf8.py
@@ -153,6 +153,7 @@
     """Gives the position of the previous codepoint.
     'pos' must not be zero.
     """
+    assert pos != 0
     pos -= 1
     if pos >= len(code):     # for the case where pos - 1 == len(code):
         assert pos >= 0
@@ -811,6 +812,18 @@
                    (0xF0   << 18) + (0x80   << 12) + (0x80   << 6) + 0x80     )
         assert False, "unreachable"
 
+class Utf8StringPosIterator(object):
+    def __init__(self, utf8s):
+        self.it = Utf8StringIterator(utf8s)
+
+    def __iter__(self):
+        return self
+
+    @always_inline
+    def next(self):
+        pos = self.it.get_pos()
+        return (self.it.next(), pos)
+
 
 def decode_latin_1(s):
     if len(s) == 0:
diff --git a/rpython/rlib/test/test_rsocket.py 
b/rpython/rlib/test/test_rsocket.py
--- a/rpython/rlib/test/test_rsocket.py
+++ b/rpython/rlib/test/test_rsocket.py
@@ -416,7 +416,7 @@
     assert isinstance(lst, list)
     found = False
     for family, socktype, protocol, canonname, addr in lst:
-        if addr.get_host() in ('104.130.43.121', '23.253.135.79'):
+        if addr.get_host() in ('104.130.43.121', '23.253.135.79', 
'45.55.99.72'):
             found = True
         elif family == AF_INET:
             print 'pydotorg changed to', addr.get_host()
diff --git a/rpython/rlib/test/test_rutf8.py b/rpython/rlib/test/test_rutf8.py
--- a/rpython/rlib/test/test_rutf8.py
+++ b/rpython/rlib/test/test_rutf8.py
@@ -212,3 +212,16 @@
     for c in u:
         l.append(unichr(c))
     assert list(arg) == l
+
+@given(strategies.text())
+def test_utf8_iterator_pos(arg):
+    utf8s = arg.encode('utf8')
+    u = rutf8.Utf8StringPosIterator(utf8s)
+    l = []
+    i = 0
+    for c, pos in u:
+        l.append(unichr(c))
+        assert c == rutf8.codepoint_at_pos(utf8s, pos)
+        assert pos == i
+        i = rutf8.next_codepoint_pos(utf8s, i)
+    assert list(arg) == l
diff --git a/rpython/translator/sandbox/test/test_sandlib.py 
b/rpython/translator/sandbox/test/test_sandlib.py
--- a/rpython/translator/sandbox/test/test_sandlib.py
+++ b/rpython/translator/sandbox/test/test_sandlib.py
@@ -114,7 +114,7 @@
 
     proc = SocketProc([exe])
     output, error = proc.communicate("")
-    assert output.startswith('HTTP/1.1 301 Moved Permanently')
+    assert output.startswith('HTTP/1.0 400 Bad request')
 
 def test_oserror():
     def entry_point(argv):
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to