Skip to content

Commit a701388

Browse files
committed
Rename _PyIter_GetBuiltin to _PyObject_GetBuiltin, and do not include it in the stable ABI.
1 parent d4dc6dc commit a701388

File tree

13 files changed

+38
-35
lines changed

13 files changed

+38
-35
lines changed

Include/iterobject.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@ PyAPI_FUNC(PyObject *) PySeqIter_New(PyObject *);
1818

1919
PyAPI_FUNC(PyObject *) PyCallIter_New(PyObject *, PyObject *);
2020

21-
PyAPI_FUNC(PyObject *) _PyIter_GetBuiltin(const char *iter);
22-
2321
#ifdef __cplusplus
2422
}
2523
#endif

Include/object.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -535,6 +535,11 @@ PyAPI_FUNC(int)
535535
_PyObject_GenericSetAttrWithDict(PyObject *, PyObject *,
536536
PyObject *, PyObject *);
537537

538+
/* Helper to look up a builtin object */
539+
#ifndef Py_LIMITED_API
540+
PyAPI_FUNC(PyObject *)
541+
_PyObject_GetBuiltin(const char *name);
542+
#endif
538543

539544
/* PyObject_Dir(obj) acts like Python builtins.dir(obj), returning a
540545
list of strings. PyObject_Dir(NULL) is like builtins.dir(),

Modules/arraymodule.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2756,7 +2756,7 @@ arrayiter_traverse(arrayiterobject *it, visitproc visit, void *arg)
27562756
static PyObject *
27572757
arrayiter_reduce(arrayiterobject *it)
27582758
{
2759-
return Py_BuildValue("N(O)n", _PyIter_GetBuiltin("iter"),
2759+
return Py_BuildValue("N(O)n", _PyObject_GetBuiltin("iter"),
27602760
it->ao, it->index);
27612761
}
27622762

Objects/bytearrayobject.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3018,13 +3018,13 @@ static PyObject *
30183018
bytearrayiter_reduce(bytesiterobject *it)
30193019
{
30203020
if (it->it_seq != NULL) {
3021-
return Py_BuildValue("N(O)n", _PyIter_GetBuiltin("iter"),
3021+
return Py_BuildValue("N(O)n", _PyObject_GetBuiltin("iter"),
30223022
it->it_seq, it->it_index);
30233023
} else {
30243024
PyObject *u = PyUnicode_FromUnicode(NULL, 0);
30253025
if (u == NULL)
30263026
return NULL;
3027-
return Py_BuildValue("N(N)", _PyIter_GetBuiltin("iter"), u);
3027+
return Py_BuildValue("N(N)", _PyObject_GetBuiltin("iter"), u);
30283028
}
30293029
}
30303030

Objects/bytesobject.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3078,13 +3078,13 @@ static PyObject *
30783078
striter_reduce(striterobject *it)
30793079
{
30803080
if (it->it_seq != NULL) {
3081-
return Py_BuildValue("N(O)n", _PyIter_GetBuiltin("iter"),
3081+
return Py_BuildValue("N(O)n", _PyObject_GetBuiltin("iter"),
30823082
it->it_seq, it->it_index);
30833083
} else {
30843084
PyObject *u = PyUnicode_FromUnicode(NULL, 0);
30853085
if (u == NULL)
30863086
return NULL;
3087-
return Py_BuildValue("N(N)", _PyIter_GetBuiltin("iter"), u);
3087+
return Py_BuildValue("N(N)", _PyObject_GetBuiltin("iter"), u);
30883088
}
30893089
}
30903090

Objects/dictobject.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2610,7 +2610,7 @@ dictiter_reduce(dictiterobject *di)
26102610
Py_DECREF(list);
26112611
return NULL;
26122612
}
2613-
return Py_BuildValue("N(N)", _PyIter_GetBuiltin("iter"), list);
2613+
return Py_BuildValue("N(N)", _PyObject_GetBuiltin("iter"), list);
26142614
}
26152615

26162616
/***********************************************/

Objects/iterobject.c

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,6 @@
22

33
#include "Python.h"
44

5-
/* Convenience function to get builtins.iter or builtins.reversed */
6-
PyObject *
7-
_PyIter_GetBuiltin(const char *iter)
8-
{
9-
PyObject *mod, *attr;
10-
mod = PyImport_ImportModule("builtins");
11-
if (mod == NULL)
12-
return NULL;
13-
attr = PyObject_GetAttrString(mod, iter);
14-
Py_DECREF(mod);
15-
return attr;
16-
}
17-
185
typedef struct {
196
PyObject_HEAD
207
long it_index;
@@ -105,10 +92,10 @@ static PyObject *
10592
iter_reduce(seqiterobject *it)
10693
{
10794
if (it->it_seq != NULL)
108-
return Py_BuildValue("N(O)n", _PyIter_GetBuiltin("iter"),
95+
return Py_BuildValue("N(O)n", _PyObject_GetBuiltin("iter"),
10996
it->it_seq, it->it_index);
11097
else
111-
return Py_BuildValue("N(())", _PyIter_GetBuiltin("iter"));
98+
return Py_BuildValue("N(())", _PyObject_GetBuiltin("iter"));
11299
}
113100

114101
PyDoc_STRVAR(reduce_doc, "Return state information for pickling.");
@@ -242,10 +229,10 @@ static PyObject *
242229
calliter_reduce(calliterobject *it)
243230
{
244231
if (it->it_callable != NULL && it->it_sentinel != NULL)
245-
return Py_BuildValue("N(OO)", _PyIter_GetBuiltin("iter"),
232+
return Py_BuildValue("N(OO)", _PyObject_GetBuiltin("iter"),
246233
it->it_callable, it->it_sentinel);
247234
else
248-
return Py_BuildValue("N(())", _PyIter_GetBuiltin("iter"));
235+
return Py_BuildValue("N(())", _PyObject_GetBuiltin("iter"));
249236
}
250237

251238
static PyMethodDef calliter_methods[] = {

Objects/listobject.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2949,17 +2949,17 @@ listiter_reduce_general(void *_it, int forward)
29492949
if (forward) {
29502950
listiterobject *it = (listiterobject *)_it;
29512951
if (it->it_seq)
2952-
return Py_BuildValue("N(O)l", _PyIter_GetBuiltin("iter"),
2952+
return Py_BuildValue("N(O)l", _PyObject_GetBuiltin("iter"),
29532953
it->it_seq, it->it_index);
29542954
} else {
29552955
listreviterobject *it = (listreviterobject *)_it;
29562956
if (it->it_seq)
2957-
return Py_BuildValue("N(O)n", _PyIter_GetBuiltin("reversed"),
2957+
return Py_BuildValue("N(O)n", _PyObject_GetBuiltin("reversed"),
29582958
it->it_seq, it->it_index);
29592959
}
29602960
/* empty iterator, create an empty list */
29612961
list = PyList_New(0);
29622962
if (list == NULL)
29632963
return NULL;
2964-
return Py_BuildValue("N(N)", _PyIter_GetBuiltin("iter"), list);
2964+
return Py_BuildValue("N(N)", _PyObject_GetBuiltin("iter"), list);
29652965
}

Objects/object.c

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1026,6 +1026,19 @@ PyObject_SelfIter(PyObject *obj)
10261026
return obj;
10271027
}
10281028

1029+
/* Convenience function to get a builtin from its name */
1030+
PyObject *
1031+
_PyObject_GetBuiltin(const char *name)
1032+
{
1033+
PyObject *mod, *attr;
1034+
mod = PyImport_ImportModule("builtins");
1035+
if (mod == NULL)
1036+
return NULL;
1037+
attr = PyObject_GetAttrString(mod, name);
1038+
Py_DECREF(mod);
1039+
return attr;
1040+
}
1041+
10291042
/* Helper used when the __next__ method is removed from a type:
10301043
tp_iternext is never NULL and can be safely called without checking
10311044
on every iteration.

Objects/rangeobject.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -985,7 +985,7 @@ rangeiter_reduce(rangeiterobject *r)
985985
if (range == NULL)
986986
goto err;
987987
/* return the result */
988-
return Py_BuildValue("N(N)i", _PyIter_GetBuiltin("iter"), range, r->index);
988+
return Py_BuildValue("N(N)i", _PyObject_GetBuiltin("iter"), range, r->index);
989989
err:
990990
Py_XDECREF(start);
991991
Py_XDECREF(stop);
@@ -1171,7 +1171,7 @@ longrangeiter_reduce(longrangeiterobject *r)
11711171
}
11721172

11731173
/* return the result */
1174-
return Py_BuildValue("N(N)O", _PyIter_GetBuiltin("iter"), range, r->index);
1174+
return Py_BuildValue("N(N)O", _PyObject_GetBuiltin("iter"), range, r->index);
11751175
}
11761176

11771177
static PyObject *

0 commit comments

Comments
 (0)