summaryrefslogtreecommitdiff
path: root/Objects/abstract.c
diff options
context:
space:
mode:
Diffstat (limited to 'Objects/abstract.c')
-rw-r--r--Objects/abstract.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/Objects/abstract.c b/Objects/abstract.c
index 3ccac7140e..8a6df76fc3 100644
--- a/Objects/abstract.c
+++ b/Objects/abstract.c
@@ -1738,3 +1738,20 @@ PyObject_IsSubclass(PyObject *derived, PyObject *cls)
return retval;
}
+
+PyObject *
+PyObject_GetIter(PyObject *o)
+{
+ PyTypeObject *t = o->ob_type;
+ getiterfunc f = NULL;
+ if (PyType_HasFeature(t, Py_TPFLAGS_HAVE_ITER))
+ f = t->tp_iter;
+ if (f == NULL) {
+ if (PySequence_Check(o))
+ return PyIter_New(o);
+ PyErr_SetString(PyExc_TypeError, "iter() of non-sequence");
+ return NULL;
+ }
+ else
+ return (*f)(o);
+}