[pypy-commit] pypy py3k-update: fix fix fix
rlamy
pypy.commits at gmail.com
Fri Apr 29 19:38:36 EDT 2016
Author: Ronan Lamy <ronan.lamy at gmail.com>
Branch: py3k-update
Changeset: r84048:7c8c1f693f28
Date: 2016-04-30 00:37 +0100
http://bitbucket.org/pypy/pypy/changeset/7c8c1f693f28/
Log: fix fix fix
diff --git a/pypy/module/cpyext/slotdefs.py b/pypy/module/cpyext/slotdefs.py
--- a/pypy/module/cpyext/slotdefs.py
+++ b/pypy/module/cpyext/slotdefs.py
@@ -461,7 +461,7 @@
api_func = slot_tp_iter.api_func
elif name == 'tp_iternext':
- iternext_fn = w_type.getdictvalue(space, 'next')
+ iternext_fn = w_type.getdictvalue(space, '__next__')
if iternext_fn is None:
return
diff --git a/pypy/module/cpyext/test/test_typeobject.py b/pypy/module/cpyext/test/test_typeobject.py
--- a/pypy/module/cpyext/test/test_typeobject.py
+++ b/pypy/module/cpyext/test/test_typeobject.py
@@ -545,11 +545,6 @@
return type->tp_call(obj, c_args, NULL);
''')])
- class C:
- def __call__(self, *args):
- return args
- assert module.tp_call(type(C()), C(), ('x', 2)) == ('x', 2)
-
class D(type):
def __call__(self, *args):
return "foo! %r" % (args,)
@@ -601,10 +596,6 @@
'''
)
])
- class C:
- def __str__(self):
- return "text"
- assert module.tp_str(type(C()), C()) == "text"
class D(int):
def __str__(self):
return "more text"
@@ -683,9 +674,7 @@
PyErr_SetNone(PyExc_ValueError);
return NULL;
}
- return type->tp_iter(obj);
- '''
- ),
+ return type->tp_iter(obj);'''),
("tp_iternext", "METH_VARARGS",
'''
PyTypeObject *type = (PyTypeObject *)PyTuple_GET_ITEM(args, 0);
@@ -697,17 +686,16 @@
return NULL;
}
result = type->tp_iternext(obj);
+ /* In py3, returning NULL from tp_iternext means the iterator
+ * is exhausted */
if (!result && !PyErr_Occurred())
result = PyBytes_FromString("stop!");
- return result;
- '''
- )
- ])
+ return result;''')])
l = [1]
it = module.tp_iter(list, l)
assert type(it) is type(iter([]))
assert module.tp_iternext(type(it), it) == 1
- raises(StopIteration, module.tp_iternext, type(it), it)
+ assert module.tp_iternext(type(it), it) == b'stop!'
#
class LL(list):
def __iter__(self):
More information about the pypy-commit
mailing list