diff --git a/Include/genobject.h b/Include/genobject.h index 25f6c33d1cc..ed451baf3cb 100644 --- a/Include/genobject.h +++ b/Include/genobject.h @@ -34,7 +34,7 @@ PyAPI_DATA(PyTypeObject) PyGen_Type; PyAPI_FUNC(PyObject *) PyGen_New(struct _frame *); PyAPI_FUNC(int) PyGen_NeedsFinalizing(PyGenObject *); -PyAPI_FUNC(int) PyGen_FetchStopIterationValue(PyObject **); +PyAPI_FUNC(int) _PyGen_FetchStopIterationValue(PyObject **); PyObject *_PyGen_Send(PyGenObject *, PyObject *); #ifdef __cplusplus diff --git a/Include/pyerrors.h b/Include/pyerrors.h index cfae92232f2..2c145ada358 100644 --- a/Include/pyerrors.h +++ b/Include/pyerrors.h @@ -400,9 +400,6 @@ PyAPI_FUNC(int) PyUnicodeTranslateError_SetReason( const char *reason /* UTF-8 encoded string */ ); -/* create a StopIteration exception with the given value */ -PyAPI_FUNC(PyObject *) PyStopIteration_Create(PyObject *); - /* These APIs aren't really part of the error implementation, but often needed to format error messages; the native C lib APIs are not available on all platforms, which is why we provide emulations diff --git a/Misc/NEWS b/Misc/NEWS index 6c587af1e25..5a5813b6444 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -111,6 +111,12 @@ Library - Issue #14963: Convert contextlib.ExitStack.__exit__ to use an iterative algorithm (Patch by Alon Horev) +C-API +----- + +- Issue #13783: Inadvertent additions to the public C API in the PEP 380 + implementation have either been removed or marked as private interfaces. + Extension Modules ----------------- diff --git a/Objects/exceptions.c b/Objects/exceptions.c index 9e10b7e3076..f7066984999 100644 --- a/Objects/exceptions.c +++ b/Objects/exceptions.c @@ -516,12 +516,6 @@ StopIteration_traverse(PyStopIterationObject *self, visitproc visit, void *arg) return BaseException_traverse((PyBaseExceptionObject *)self, visit, arg); } -PyObject * -PyStopIteration_Create(PyObject *value) -{ - return PyObject_CallFunctionObjArgs(PyExc_StopIteration, value, NULL); -} - ComplexExtendsException( PyExc_Exception, /* base */ StopIteration, /* name */ diff --git a/Objects/genobject.c b/Objects/genobject.c index 8c70b5ca100..6018e5b1a0c 100644 --- a/Objects/genobject.c +++ b/Objects/genobject.c @@ -97,7 +97,8 @@ gen_send_ex(PyGenObject *gen, PyObject *arg, int exc) /* Delay exception instantiation if we can */ PyErr_SetNone(PyExc_StopIteration); } else { - PyObject *e = PyStopIteration_Create(result); + PyObject *e = PyObject_CallFunctionObjArgs( + PyExc_StopIteration, result, NULL); if (e != NULL) { PyErr_SetObject(PyExc_StopIteration, e); Py_DECREF(e); @@ -339,7 +340,7 @@ gen_throw(PyGenObject *gen, PyObject *args) Py_DECREF(ret); /* Termination repetition of YIELD_FROM */ gen->gi_frame->f_lasti++; - if (PyGen_FetchStopIterationValue(&val) == 0) { + if (_PyGen_FetchStopIterationValue(&val) == 0) { ret = gen_send_ex(gen, val, 0); Py_DECREF(val); } else { @@ -428,7 +429,7 @@ gen_iternext(PyGenObject *gen) */ int -PyGen_FetchStopIterationValue(PyObject **pvalue) { +_PyGen_FetchStopIterationValue(PyObject **pvalue) { PyObject *et, *ev, *tb; PyObject *value = NULL; diff --git a/Python/ceval.c b/Python/ceval.c index b3ec013e171..7e9318bc0b3 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -1852,7 +1852,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag) PyObject *val; x = POP(); /* Remove iter from stack */ Py_DECREF(x); - err = PyGen_FetchStopIterationValue(&val); + err = _PyGen_FetchStopIterationValue(&val); if (err < 0) { x = NULL; break;