Objetos generadores
*******************

Los objetos generadores son lo que Python usa para implementar
iteradores generadores. Normalmente se crean iterando sobre una
función que produce valores, en lugar de llamar explícitamente
"PyGen_New()" o "PyGen_NewWithQualName()".

type PyGenObject

   La estructura en C utilizada para los objetos generadores.

PyTypeObject PyGen_Type

   El objeto tipo correspondiente a los objetos generadores.

int PyGen_Check(PyObject *ob)

   Retorna verdadero si *ob* es un objeto generador; *ob* no debe ser
   "NULL". Esta función siempre finaliza con éxito.

int PyGen_CheckExact(PyObject *ob)

   Retorna verdadero si el tipo de *ob* es "PyGen_Type"; *ob* no debe
   ser "NULL". Esta función siempre finaliza con éxito.

PyObject *PyGen_New(PyFrameObject *frame)
    *Return value: New reference.*

   Crea y retorna un nuevo objeto generador basado en el objeto
   *frame*. Una referencia a *frame* es robada por esta función. El
   argumento no debe ser "NULL".

PyObject *PyGen_NewWithQualName(PyFrameObject *frame, PyObject *name, PyObject *qualname)
    *Return value: New reference.*

   Crea y retorna un nuevo objeto generador basado en el objeto
   *frame*, con "__name__" y "__qualname__" establecido en *name* y
   *qualname*. Una referencia a *frame* es robada por esta función. El
   argumento *frame* no debe ser "NULL".

PyCodeObject *PyGen_GetCode(PyGenObject *gen)

   Return a new *strong reference* to the code object wrapped by
   *gen*. This function always succeeds.


Asynchronous Generator Objects
==============================

Ver también: **PEP 525**

PyTypeObject PyAsyncGen_Type

   The type object corresponding to asynchronous generator objects.
   This is available as "types.AsyncGeneratorType" in the Python
   layer.

   Added in version 3.6.

PyObject *PyAsyncGen_New(PyFrameObject *frame, PyObject *name, PyObject *qualname)

   Create a new asynchronous generator wrapping *frame*, with
   "__name__" and "__qualname__" set to *name* and *qualname*. *frame*
   is stolen by this function and must not be "NULL".

   On success, this function returns a *strong reference* to the new
   asynchronous generator. On failure, this function returns "NULL"
   with an exception set.

   Added in version 3.6.

int PyAsyncGen_CheckExact(PyObject *op)

   Return true if *op* is an asynchronous generator object, false
   otherwise. This function always succeeds.

   Added in version 3.6.


Deprecated API
==============

PyAsyncGenASend_CheckExact(op)

   This is a *soft deprecated* API that was included in Python's C API
   by mistake.

   It is solely here for completeness; do not use this API.
