]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-106320: Move private _PyGen API to the internal C API (#107032)
authorVictor Stinner <vstinner@python.org>
Sat, 22 Jul 2023 14:21:16 +0000 (16:21 +0200)
committerGitHub <noreply@github.com>
Sat, 22 Jul 2023 14:21:16 +0000 (14:21 +0000)
Move private _PyGen API to internal C API:

* _PyAsyncGenAThrow_Type
* _PyAsyncGenWrappedValue_Type
* _PyCoroWrapper_Type
* _PyGen_FetchStopIterationValue()
* _PyGen_Finalize()
* _PyGen_SetStopIterationValue()

No longer these symbols, except of the ones by the _asyncio shared
extensions.

Include/cpython/genobject.h
Include/internal/pycore_genobject.h

index 7856481b5db3002b8e51ae6ea86415bacc98456e..49e46c277d75ae8bc96580c9adeb96e41dae2ae8 100644 (file)
@@ -41,9 +41,6 @@ PyAPI_DATA(PyTypeObject) PyGen_Type;
 PyAPI_FUNC(PyObject *) PyGen_New(PyFrameObject *);
 PyAPI_FUNC(PyObject *) PyGen_NewWithQualName(PyFrameObject *,
     PyObject *name, PyObject *qualname);
-PyAPI_FUNC(int) _PyGen_SetStopIterationValue(PyObject *);
-PyAPI_FUNC(int) _PyGen_FetchStopIterationValue(PyObject **);
-PyAPI_FUNC(void) _PyGen_Finalize(PyObject *self);
 PyAPI_FUNC(PyCodeObject *) PyGen_GetCode(PyGenObject *gen);
 
 
@@ -54,7 +51,6 @@ typedef struct {
 } PyCoroObject;
 
 PyAPI_DATA(PyTypeObject) PyCoro_Type;
-PyAPI_DATA(PyTypeObject) _PyCoroWrapper_Type;
 
 #define PyCoro_CheckExact(op) Py_IS_TYPE((op), &PyCoro_Type)
 PyAPI_FUNC(PyObject *) PyCoro_New(PyFrameObject *,
@@ -69,8 +65,6 @@ typedef struct {
 
 PyAPI_DATA(PyTypeObject) PyAsyncGen_Type;
 PyAPI_DATA(PyTypeObject) _PyAsyncGenASend_Type;
-PyAPI_DATA(PyTypeObject) _PyAsyncGenWrappedValue_Type;
-PyAPI_DATA(PyTypeObject) _PyAsyncGenAThrow_Type;
 
 PyAPI_FUNC(PyObject *) PyAsyncGen_New(PyFrameObject *,
     PyObject *name, PyObject *qualname);
index dc60b4ca705112b4d7042b1c735a4fbc437eeacc..fb63d9c3537a67451ab9c1d5f363f1a0638df42a 100644 (file)
@@ -9,9 +9,20 @@ extern "C" {
 #endif
 
 extern PyObject *_PyGen_yf(PyGenObject *);
+extern void _PyGen_Finalize(PyObject *self);
+
+// _asyncio shared extensions uses _PyGen_SetStopIterationValue() and
+// _PyGen_FetchStopIterationValue()
+PyAPI_FUNC(int) _PyGen_SetStopIterationValue(PyObject *);
+PyAPI_FUNC(int) _PyGen_FetchStopIterationValue(PyObject **);
+
 extern PyObject *_PyCoro_GetAwaitableIter(PyObject *o);
 extern PyObject *_PyAsyncGenValueWrapperNew(PyThreadState *state, PyObject *);
 
+extern PyTypeObject _PyCoroWrapper_Type;
+extern PyTypeObject _PyAsyncGenWrappedValue_Type;
+extern PyTypeObject _PyAsyncGenAThrow_Type;
+
 /* runtime lifecycle */
 
 extern void _PyAsyncGen_Fini(PyInterpreterState *);