Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Consider adding decorators to work with generators

Abierto
#589 2 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
35/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
python

Línea de trabajo

Empieza reproduciendo los ejemplos con el decorador existente returns.result.safe e inspecciona cómo gestiona el generador numbers. Compara ese comportamiento con la salida propuesta de safe_iter; se considera terminado cuando se puede iterar sobre un generador decorado y este produce los objetos Success esperados.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

enhancement help wanted

After think a lot about #355 it will be great to provide the same mechanisms we have to "normal" functions to generators!
It is not uncommon to see generators in many Python code, we use it when reading a file, iterating over Query objects and so on!

Today is impossible to work with generators using our current set of decorators like @safe:

>>> from typing import Generator
>>> from returns.result import safe
>>>
>>> def numbers() -> Generator[int, None, None]:
...     for x in range(2):
...         yield x
...
>>> for number in numbers():
...     print(number)
...
0
1
>>> for number in safe(numbers)():
...     print(number)
...
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: '_Success' object is not iterable

Expected behavior:

>>> from returns.result import safe_iter
>>>
>>> for number in safe_iter(numbers)():
...     print(number)
...
<returns.result._Success object at X>
<returns.result._Success object at X>
Lenguaje dominante
Python
Estrellas
4.4k
Forks
154
Merge medio
3 h 5 min
PR fusionados (30 d)
22

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de dry-python/returns

Todos los issues de dry-python/returns

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.