[issue47191] inspect - getasyncgeneratorstate, getasyncgeneratorlocals
Animatea Animatea
report at bugs.python.org
Fri Apr 1 14:40:34 EDT 2022
New submission from Animatea Animatea <animatea.programming at gmail.com>:
Create inspect introspection functions for asyncgen.
```py
ASYNCGEN_CREATED = 'ASYNCGEN_CREATED'
ASYNCGEN_RUNNING = 'ASYNCGEN_RUNNING'
ASYNCGEN_SUSPENDED = 'ASYNCGEN_SUSPENDED'
ASYNCGEN_CLOSED = 'ASYNCGEN_CLOSED'
def getasyncgeneratorstate(asyncgenerator):
"""Get current state of a async generator-iterator.
Possible states are:
ASYNCGEN_CREATED: Waiting to start execution.
ASYNCGEN_RUNNING: Currently being executed by the interpreter.
ASYNCGEN_SUSPENDED: Currently suspended at a yield expression.
ASYNCGEN_CLOSED: Execution has completed.
"""
if asyncgenerator.ag_running:
return ASYNCGEN_RUNNING
if asyncgenerator.ag_frame is None:
return ASYNCGEN_CLOSED
if asyncgenerator.ag_frame.f_lasti == -1:
return ASYNCGEN_CREATED
return ASYNCGEN_SUSPENDED
def getasyncgeneratorlocals(asyncgenerator):
"""
Get the mapping of async generator local variables to their current values.
A dict is returned, with the keys the local variable names and values the
bound values."""
if not isasyncgen(asyncgenerator):
raise TypeError("{!r} is not a Python generator".format(asyncgenerator))
frame = getattr(asyncgenerator, "ag_frame", None)
if frame is not None:
return asyncgenerator.ag_frame.f_locals
else:
return {}
```
----------
components: Library (Lib)
messages: 416505
nosy: animatea.programming
priority: normal
severity: normal
status: open
title: inspect - getasyncgeneratorstate, getasyncgeneratorlocals
type: enhancement
versions: Python 3.10, Python 3.11
_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue47191>
_______________________________________
More information about the Python-bugs-list
mailing list