Author: Matti Picus <[email protected]>
Branch: py3.6
Changeset: r98426:d6c463879012
Date: 2019-12-31 10:38 +0200
http://bitbucket.org/pypy/pypy/changeset/d6c463879012/
Log: merge default into py3.6
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
@@ -8,3 +8,11 @@
.. branch: cpyext-speedup-tests
Make cpyext test faster, especially on py3.6
+
+.. branch: array-and-nan
+
+Handle ``NAN`` more correctly in ``array.array`` for ``__eq__`` and ``count``
+
+.. branch: bpo-16055
+
+Fixes incorrect error text for ``int('1', base=1000)``
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
@@ -97,7 +97,7 @@
w_elem1 = arr1.w_getitem(space, i, integer_instead_of_char=True)
w_elem2 = arr2.w_getitem(space, i, integer_instead_of_char=True)
if comp_op == EQ:
- res = space.eq_w(w_elem1, w_elem2)
+ res = space.is_true(space.eq(w_elem1, w_elem2))
if not res:
return space.w_False
elif comp_op == NE:
@@ -111,7 +111,7 @@
res = space.is_true(space.gt(w_elem1, w_elem2))
if res:
return space.w_True
- elif not space.eq_w(w_elem1, w_elem2):
+ elif not space.is_true(space.eq(w_elem1, w_elem2)):
return space.w_False
else:
if comp_op == LE:
@@ -120,7 +120,7 @@
res = space.is_true(space.ge(w_elem1, w_elem2))
if not res:
return space.w_False
- elif not space.eq_w(w_elem1, w_elem2):
+ elif not space.is_true(space.eq(w_elem1, w_elem2)):
return space.w_True
# we have some leftovers
if comp_op == EQ:
@@ -153,7 +153,7 @@
tp_item=tp_item, count=count,
arrclass=arrclass)
w_item = arr.w_getitem(space, i)
- if space.eq_w(w_item, w_val):
+ if space.is_true(space.eq(w_item, w_val)):
if count:
cnt += 1
else:
diff --git a/pypy/module/array/test/test_array.py
b/pypy/module/array/test/test_array.py
--- a/pypy/module/array/test/test_array.py
+++ b/pypy/module/array/test/test_array.py
@@ -114,6 +114,18 @@
assert a[2] == 2.5
assert len(a) == len(values)
+ def test_nan(self):
+ for tc in 'fd':
+ a = self.array(tc, [float('nan')])
+ b = self.array(tc, [float('nan')])
+ assert not a == b
+ assert a != b
+ assert not a > b
+ assert not a >= b
+ assert not a < b
+ assert not a <= b
+ assert a.count(float('nan')) == 0
+
def test_itemsize(self):
for t in 'bB':
assert(self.array(t).itemsize >= 1)
diff --git a/rpython/rlib/rstring.py b/rpython/rlib/rstring.py
--- a/rpython/rlib/rstring.py
+++ b/rpython/rlib/rstring.py
@@ -534,7 +534,7 @@
else:
base = 10
elif base < 2 or base > 36:
- raise InvalidBaseError("%s() base must be >= 2 and <= 36" % fname)
+ raise InvalidBaseError("%s() base must be >= 2 and <= 36, or 0" %
fname)
self.base = base
# Leading underscores are not allowed
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit