mirror of https://github.com/python/cpython
Issue #13783: the PEP 380 implementation no longer expands the public C API
This commit is contained in:
parent
8d5c0b8c19
commit
c40bc09942
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
-----------------
|
||||
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue