sys.monitoring `PY_YIELD` leaks internal `async_generator_wrapped_value` object
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Python
- Estrellas
- 77.2k
- Forks
- 35.9k
- Métricas de merge de PR
- Métricas de PR pendientes
Descripción
Bug report
Bug description:
Rather than the actual value, sys.monitoring's PY_YIELD event passes in to the callback the internal async_generator_wrapped_value.
I imagine this is a bug... it's inconsistent with what it does for non-async generators.
import sys
import types
import typing
import asyncio
async def gen():
yield 42
async def main():
async for _ in gen():
pass
def handle_yield(code: types.CodeType, offset: int, value: object) -> typing.Any:
if code.co_filename == __file__:
print(f"yield name={code.co_qualname} {type(value)=}")
sysmon = sys.monitoring
sysmon.use_tool_id(4, "r")
sysmon.register_callback(4, sysmon.events.PY_YIELD, handle_yield)
sysmon.set_events(4, sysmon.events.PY_YIELD)
asyncio.run(main())
This prints out:
yield name=gen type(value)=<class 'async_generator_wrapped_value'>
CPython versions tested on:
3.12, 3.13, 3.14
Operating systems tested on:
macOS, Linux
Linked PRs
- gh-129031
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Empieza ejecutando la reproducción proporcionada de sys.monitoring PY_YIELD en las versiones de CPython afectadas e inspecciona el comportamiento del callback para async generators. Revisa el PR enlazado gh-129031 para conocer la dirección actual de la implementación; se considera terminado cuando el callback recibe el yielded value en lugar del objeto interno async_generator_wrapped_value, con cobertura para este caso.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- python
- Área
- tooling
- Tipo de issue
- Error
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 35/100