Merge 3.5 + document CO_ASYNC_GENERATOR; issue #26010

This commit is contained in:
Yury Selivanov 2016-10-20 13:11:34 -04:00
commit e20fed9182
1 changed files with 66 additions and 3 deletions

View File

@ -152,9 +152,9 @@ attributes:
| | co_firstlineno | number of first line in |
| | | Python source code |
+-----------+-----------------+---------------------------+
| | co_flags | bitmap: 1=optimized ``|`` |
| | | 2=newlocals ``|`` 4=\*arg |
| | | ``|`` 8=\*\*arg |
| | co_flags | bitmap of ``CO_*`` flags, |
| | | read more :ref:`here |
| | | <inspect-module-co-flags>`|
+-----------+-----------------+---------------------------+
| | co_lnotab | encoded mapping of line |
| | | numbers to bytecode |
@ -1221,6 +1221,69 @@ updated as expected:
.. versionadded:: 3.5
.. _inspect-module-co-flags:
Code Objects Bit Flags
----------------------
Python code objects have a ``co_flags`` attribute, which is a bitmap of
the following flags:
.. data:: CO_NEWLOCALS
If set, a new dict will be created for the frame's ``f_locals`` when
the code object is executed.
.. data:: CO_VARARGS
The code object has a variable positional parameter (``*args``-like).
.. data:: CO_VARKEYWORDS
The code object has a variable keyword parameter (``**kwargs``-like).
.. data:: CO_GENERATOR
The flag is set when the code object is a generator function, i.e.
a generator object is returned when the code object is executed.
.. data:: CO_NOFREE
The flag is set if there are no free or cell variables.
.. data:: CO_COROUTINE
The flag is set when the code object is a coroutine function, i.e.
a coroutine object is returned when the code object is executed. See
:pep:`492` for more details.
.. versionadded:: 3.5
.. data:: CO_ITERABLE_COROUTINE
Used to turn generators into generator-based coroutines. Generator
objects with this flag can be used in ``await`` expression, and can
``yield from`` coroutine objects. See :pep:`492` for more details.
.. versionadded:: 3.5
.. data:: CO_ASYNC_GENERATOR
The flag is set when the code object is a asynchronous generator
function, i.e. an asynchronous generator object is returned when the
code object is executed. See :pep:`525` for more details.
.. versionadded:: 3.6
.. note::
The flags are specific to CPython, and may not be defined in other
Python implementations. Furthermore, the flags are an implementation
detail, and can be removed or deprecated in future Python releases.
It's recommended to use public APIs from the :mod:`inspect` module
for any introspection needs.
.. _inspect-module-cli:
Command Line Interface