Objetos Geradores
*****************

Objetos geradores são o que o Python usa para implementar iteradores
geradores. Eles são normalmente criados por iteração sobre uma função
que produz valores, em vez de invocar explicitamente "PyGen_New()" ou
"PyGen_NewWithQualName()".

type PyGenObject

   A estrutura C usada para objetos geradores.

PyTypeObject PyGen_Type

   O objeto de tipo correspondendo a objetos geradores.

int PyGen_Check(PyObject *ob)

   Retorna verdadeiro se *ob* for um objeto gerador; *ob* não deve ser
   "NULL". Esta função sempre tem sucesso.

int PyGen_CheckExact(PyObject *ob)

   Retorna verdadeiro se o tipo do *ob* é "PyGen_Type"; *ob* não deve
   ser "NULL". Esta função sempre tem sucesso.

PyObject *PyGen_New(PyFrameObject *frame)
    *Retorna valor: Nova referência.*

   Cria e retorna um novo objeto gerador com base no objeto *frame*.
   Uma referência a *quadro* é roubada por esta função. O argumento
   não deve ser "NULL".

PyObject *PyGen_NewWithQualName(PyFrameObject *frame, PyObject *name, PyObject *qualname)
    *Retorna valor: Nova referência.*

   Cria e retorna um novo objeto gerador com base no objeto *frame*,
   com "__name__" e "__qualname__" definidos como *name* e *qualname*.
   Uma referência a *frame* é roubada por esta função. O argumento
   *frame* não deve ser "NULL".

PyCodeObject *PyGen_GetCode(PyGenObject *gen)

   Retorna uma nova *referência forte* ao objeto de código encapsulado
   por *gen*. Esta função sempre tem sucesso.


Objetos geradores assíncronos
=============================

Ver também: **PEP 525**

PyTypeObject PyAsyncGen_Type

   O objeto de tipo correspondente aos objetos geradores assíncronos.
   Está disponível como "types.AsyncGeneratorType" na camada Python.

   Adicionado na versão 3.6.

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

   Cria um novo gerador assíncrono que encapsule *frame*, com
   "__name__" e "__qualname__" definidos como *name* e *qualname*.
   *frame* é apropriado por esta função e não deve ser "NULL".

   Em caso de sucesso, esta função retorna uma *referência forte* ao
   novo gerador assíncrono. Em caso de falha, esta função retorna
   "NULL" com uma exceção definida.

   Adicionado na versão 3.6.

int PyAsyncGen_CheckExact(PyObject *op)

   Retorna verdadeiro se *op* for um objeto gerador assíncrono, falso
   caso contrário. Esta função sempre tem sucesso.

   Adicionado na versão 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.
