dry-python / dry-python/returns

Consider adding LazyIO and friends

Offen
#525 4 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
enhancement
Vorherrschende Sprache
Python
Sterne
4.4k
Forks
155
Ø Merge
2 Std. 27 Min.
Gemergte PRs (30 T.)
22

Beschreibung

The thing about `IO` in multiple languages / libraries is that it is lazy.

Our `IO` is not lazy by design. It is done, so Python developers can use it like so: `impure(print)(1) # prints "1"`
But, we also need to think about other problems as well:
1. Retries, with proper lazy `IO` one can retry an operation as many times as one wishes: `p = impure_lazy(print)(1); p(); p() # prints "1" twice`
2. Semantical identity to `Future`, currently it is not similar to regular `IO`, because `Future`s are lazy: they don't run until they are executed properly
3. New users will find the similar data-type they already know from other languages / libraries

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Beginne damit, die vorhandenen Implementierungen von IO und Future sowie die impure API zu lesen; im Issue werden keine bestimmten Dateien genannt. Vergleiche ihr Auswertungsverhalten und definiere anschließend die vorgesehene LazyIO API einschließlich der Retry-Semantik und der Interaktion mit Future. Als abgeschlossen gilt die Aufgabe, wenn ein abgestimmtes Design und Tests vorhanden sind, die verzögerte Ausführung und wiederholte Aufrufe demonstrieren.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
backend
Issue-Typ
Feature
Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Aktivitätsstatus
Veraltet
Klarheit
Muss geklärt werden
Anfängerfreundlichkeit
25/100

Neue Issues direkt in Ihr Postfach

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