From a701388de1135241b5a8e4c970e06c0e83a66dc0 Mon Sep 17 00:00:00 2001 From: Antoine Pitrou Date: Thu, 5 Apr 2012 00:04:20 +0200 Subject: Rename _PyIter_GetBuiltin to _PyObject_GetBuiltin, and do not include it in the stable ABI. --- Include/iterobject.h | 2 -- Include/object.h | 5 +++++ Modules/arraymodule.c | 2 +- Objects/bytearrayobject.c | 4 ++-- Objects/bytesobject.c | 4 ++-- Objects/dictobject.c | 2 +- Objects/iterobject.c | 21 ++++----------------- Objects/listobject.c | 6 +++--- Objects/object.c | 13 +++++++++++++ Objects/rangeobject.c | 4 ++-- Objects/setobject.c | 2 +- Objects/tupleobject.c | 4 ++-- Objects/unicodeobject.c | 4 ++-- 13 files changed, 38 insertions(+), 35 deletions(-) diff --git a/Include/iterobject.h b/Include/iterobject.h index 86abb25..f61726f 100644 --- a/Include/iterobject.h +++ b/Include/iterobject.h @@ -18,8 +18,6 @@ PyAPI_FUNC(PyObject *) PySeqIter_New(PyObject *); PyAPI_FUNC(PyObject *) PyCallIter_New(PyObject *, PyObject *); -PyAPI_FUNC(PyObject *) _PyIter_GetBuiltin(const char *iter); - #ifdef __cplusplus } #endif diff --git a/Include/object.h b/Include/object.h index 9b3055d..4024306 100644 --- a/Include/object.h +++ b/Include/object.h @@ -535,6 +535,11 @@ PyAPI_FUNC(int) _PyObject_GenericSetAttrWithDict(PyObject *, PyObject *, PyObject *, PyObject *); +/* Helper to look up a builtin object */ +#ifndef Py_LIMITED_API +PyAPI_FUNC(PyObject *) +_PyObject_GetBuiltin(const char *name); +#endif /* PyObject_Dir(obj) acts like Python builtins.dir(obj), returning a list of strings. PyObject_Dir(NULL) is like builtins.dir(), diff --git a/Modules/arraymodule.c b/Modules/arraymodule.c index af5d183..b0921c8 100644 --- a/Modules/arraymodule.c +++ b/Modules/arraymodule.c @@ -2756,7 +2756,7 @@ arrayiter_traverse(arrayiterobject *it, visitproc visit, void *arg) static PyObject * arrayiter_reduce(arrayiterobject *it) { - return Py_BuildValue("N(O)n", _PyIter_GetBuiltin("iter"), + return Py_BuildValue("N(O)n", _PyObject_GetBuiltin("iter"), it->ao, it->index); } diff --git a/Objects/bytearrayobject.c b/Objects/bytearrayobject.c index be022a4..5b7083d 100644 --- a/Objects/bytearrayobject.c +++ b/Objects/bytearrayobject.c @@ -3018,13 +3018,13 @@ static PyObject * bytearrayiter_reduce(bytesiterobject *it) { if (it->it_seq != NULL) { - return Py_BuildValue("N(O)n", _PyIter_GetBuiltin("iter"), + return Py_BuildValue("N(O)n", _PyObject_GetBuiltin("iter"), it->it_seq, it->it_index); } else { PyObject *u = PyUnicode_FromUnicode(NULL, 0); if (u == NULL) return NULL; - return Py_BuildValue("N(N)", _PyIter_GetBuiltin("iter"), u); + return Py_BuildValue("N(N)", _PyObject_GetBuiltin("iter"), u); } } diff --git a/Objects/bytesobject.c b/Objects/bytesobject.c index 0b95fdf..2e6be43 100644 --- a/Objects/bytesobject.c +++ b/Objects/bytesobject.c @@ -3078,13 +3078,13 @@ static PyObject * striter_reduce(striterobject *it) { if (it->it_seq != NULL) { - return Py_BuildValue("N(O)n", _PyIter_GetBuiltin("iter"), + return Py_BuildValue("N(O)n", _PyObject_GetBuiltin("iter"), it->it_seq, it->it_index); } else { PyObject *u = PyUnicode_FromUnicode(NULL, 0); if (u == NULL) return NULL; - return Py_BuildValue("N(N)", _PyIter_GetBuiltin("iter"), u); + return Py_BuildValue("N(N)", _PyObject_GetBuiltin("iter"), u); } } diff --git a/Objects/dictobject.c b/Objects/dictobject.c index 1924282..3db7a5e 100644 --- a/Objects/dictobject.c +++ b/Objects/dictobject.c @@ -2610,7 +2610,7 @@ dictiter_reduce(dictiterobject *di) Py_DECREF(list); return NULL; } - return Py_BuildValue("N(N)", _PyIter_GetBuiltin("iter"), list); + return Py_BuildValue("N(N)", _PyObject_GetBuiltin("iter"), list); } /***********************************************/ diff --git a/Objects/iterobject.c b/Objects/iterobject.c index bd0544c..3cfbeaf 100644 --- a/Objects/iterobject.c +++ b/Objects/iterobject.c @@ -2,19 +2,6 @@ #include "Python.h" -/* Convenience function to get builtins.iter or builtins.reversed */ -PyObject * -_PyIter_GetBuiltin(const char *iter) -{ - PyObject *mod, *attr; - mod = PyImport_ImportModule("builtins"); - if (mod == NULL) - return NULL; - attr = PyObject_GetAttrString(mod, iter); - Py_DECREF(mod); - return attr; -} - typedef struct { PyObject_HEAD long it_index; @@ -105,10 +92,10 @@ static PyObject * iter_reduce(seqiterobject *it) { if (it->it_seq != NULL) - return Py_BuildValue("N(O)n", _PyIter_GetBuiltin("iter"), + return Py_BuildValue("N(O)n", _PyObject_GetBuiltin("iter"), it->it_seq, it->it_index); else - return Py_BuildValue("N(())", _PyIter_GetBuiltin("iter")); + return Py_BuildValue("N(())", _PyObject_GetBuiltin("iter")); } PyDoc_STRVAR(reduce_doc, "Return state information for pickling."); @@ -242,10 +229,10 @@ static PyObject * calliter_reduce(calliterobject *it) { if (it->it_callable != NULL && it->it_sentinel != NULL) - return Py_BuildValue("N(OO)", _PyIter_GetBuiltin("iter"), + return Py_BuildValue("N(OO)", _PyObject_GetBuiltin("iter"), it->it_callable, it->it_sentinel); else - return Py_BuildValue("N(())", _PyIter_GetBuiltin("iter")); + return Py_BuildValue("N(())", _PyObject_GetBuiltin("iter")); } static PyMethodDef calliter_methods[] = { diff --git a/Objects/listobject.c b/Objects/listobject.c index c8a75f5..e59c9b1 100644 --- a/Objects/listobject.c +++ b/Objects/listobject.c @@ -2949,17 +2949,17 @@ listiter_reduce_general(void *_it, int forward) if (forward) { listiterobject *it = (listiterobject *)_it; if (it->it_seq) - return Py_BuildValue("N(O)l", _PyIter_GetBuiltin("iter"), + return Py_BuildValue("N(O)l", _PyObject_GetBuiltin("iter"), it->it_seq, it->it_index); } else { listreviterobject *it = (listreviterobject *)_it; if (it->it_seq) - return Py_BuildValue("N(O)n", _PyIter_GetBuiltin("reversed"), + return Py_BuildValue("N(O)n", _PyObject_GetBuiltin("reversed"), it->it_seq, it->it_index); } /* empty iterator, create an empty list */ list = PyList_New(0); if (list == NULL) return NULL; - return Py_BuildValue("N(N)", _PyIter_GetBuiltin("iter"), list); + return Py_BuildValue("N(N)", _PyObject_GetBuiltin("iter"), list); } diff --git a/Objects/object.c b/Objects/object.c index 1b7f609..5bafbc0 100644 --- a/Objects/object.c +++ b/Objects/object.c @@ -1026,6 +1026,19 @@ PyObject_SelfIter(PyObject *obj) return obj; } +/* Convenience function to get a builtin from its name */ +PyObject * +_PyObject_GetBuiltin(const char *name) +{ + PyObject *mod, *attr; + mod = PyImport_ImportModule("builtins"); + if (mod == NULL) + return NULL; + attr = PyObject_GetAttrString(mod, name); + Py_DECREF(mod); + return attr; +} + /* Helper used when the __next__ method is removed from a type: tp_iternext is never NULL and can be safely called without checking on every iteration. diff --git a/Objects/rangeobject.c b/Objects/rangeobject.c index 660de84..99544d6 100644 --- a/Objects/rangeobject.c +++ b/Objects/rangeobject.c @@ -985,7 +985,7 @@ rangeiter_reduce(rangeiterobject *r) if (range == NULL) goto err; /* return the result */ - return Py_BuildValue("N(N)i", _PyIter_GetBuiltin("iter"), range, r->index); + return Py_BuildValue("N(N)i", _PyObject_GetBuiltin("iter"), range, r->index); err: Py_XDECREF(start); Py_XDECREF(stop); @@ -1171,7 +1171,7 @@ longrangeiter_reduce(longrangeiterobject *r) } /* return the result */ - return Py_BuildValue("N(N)O", _PyIter_GetBuiltin("iter"), range, r->index); + return Py_BuildValue("N(N)O", _PyObject_GetBuiltin("iter"), range, r->index); } static PyObject * diff --git a/Objects/setobject.c b/Objects/setobject.c index 7cd87d3..b903fbee 100644 --- a/Objects/setobject.c +++ b/Objects/setobject.c @@ -856,7 +856,7 @@ setiter_reduce(setiterobject *si) Py_DECREF(list); return NULL; } - return Py_BuildValue("N(N)", _PyIter_GetBuiltin("iter"), list); + return Py_BuildValue("N(N)", _PyObject_GetBuiltin("iter"), list); } PyDoc_STRVAR(reduce_doc, "Return state information for pickling."); diff --git a/Objects/tupleobject.c b/Objects/tupleobject.c index 4af4a49..d103b9b 100644 --- a/Objects/tupleobject.c +++ b/Objects/tupleobject.c @@ -971,10 +971,10 @@ static PyObject * tupleiter_reduce(tupleiterobject *it) { if (it->it_seq) - return Py_BuildValue("N(O)l", _PyIter_GetBuiltin("iter"), + return Py_BuildValue("N(O)l", _PyObject_GetBuiltin("iter"), it->it_seq, it->it_index); else - return Py_BuildValue("N(())", _PyIter_GetBuiltin("iter")); + return Py_BuildValue("N(())", _PyObject_GetBuiltin("iter")); } static PyObject * diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c index aee832a..1d8a176 100644 --- a/Objects/unicodeobject.c +++ b/Objects/unicodeobject.c @@ -14386,13 +14386,13 @@ static PyObject * unicodeiter_reduce(unicodeiterobject *it) { if (it->it_seq != NULL) { - return Py_BuildValue("N(O)n", _PyIter_GetBuiltin("iter"), + return Py_BuildValue("N(O)n", _PyObject_GetBuiltin("iter"), it->it_seq, it->it_index); } else { PyObject *u = PyUnicode_FromUnicode(NULL, 0); if (u == NULL) return NULL; - return Py_BuildValue("N(N)", _PyIter_GetBuiltin("iter"), u); + return Py_BuildValue("N(N)", _PyObject_GetBuiltin("iter"), u); } } -- cgit v0.12