Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

Consider adding decorators to work with generators

Offen
#589 2 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Anfängerfreundlichkeit
35/100
Issue-Typ
Feature
Klarheit
Größtenteils klar
Aktivitätsstatus
Veraltet
Tech-Stack
python

Rechercherichtung

Beginne damit, die Beispiele mit dem vorhandenen Decorator returns.result.safe zu reproduzieren, und untersuche, wie er mit dem Generator numbers umgeht. Vergleiche dieses Verhalten mit der vorgeschlagenen Ausgabe von safe_iter; fertig ist die Aufgabe, wenn ein dekorierter Generator iteriert werden kann und die erwarteten Success-Objekte liefert.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

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>
Vorherrschende Sprache
Python
Sterne
4.4k
Forks
154
Ø Merge
3 Std. 5 Min.
Gemergte PRs (30 T.)
22

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus dry-python/returns

Alle Issues in dry-python/returns

Ähnliche Issues

Weitere Issues zu Python

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.