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

Adding some utility methods to Maybe/Result

Offen
#1,114 20 Kommentare 7 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 1 Tag

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Anfängerfreundlichkeit
35/100
Issue-Typ
Feature
Klarheit
Größtenteils klar
Aktivitätsstatus
Veraltet
Tech-Stack
python
Bereich
backend

Rechercherichtung

Beginne mit der Überprüfung der Implementierungen der Maybe- und Result-Container sowie der Diskussion im zugehörigen Issue #1091. Bestimme, welche der vorgeschlagenen Methoden setdefault, zip, filter, and_, und or_ im Umfang enthalten sind, und bestätige ihr Verhalten für erfolgreiche und leere Container mit Tests; abgeschlossen bedeutet, dass die vereinbarten Hilfsfunktionen und Beispiele konsistent implementiert sind.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

enhancement

Have you considered adding some handy utility functions to Maybe and Result?
In using returns I'm missing many helpful methods you can find in Rust, for example.
Adding a few of these could increase the usability of the containers of returns.

Related: #1091

Here they are, in my subjective order of usefulness:

Setdefault

Set a value if one is not yet present.
The name setdefault would be consistent with the python dict method.
(Although it might be good to choose another name to make clear that
the method doesn't mutate.)

>>> Some(6).setdefault(7)
Some(6)
>>> Nothing.setdefault(3)
Some(3)

Zip

Combine the values from two containers into a tuple, if both are successful.

>>> Some(8).zip(Some(2))
Some((8, 2))
>>> Some(7).zip(Nothing)
Nothing
>>> Nothing.zip(Some(3))
Nothing
>>> Nothing.zip(Nothing)
Nothing

Filter

Keep a value based on a predicate

>>> Some("9").filter(str.isdigit)
Some("9")
>>> Some("foo3").filter(str.isdigit)
Nothing
>>> Nothing.filter(str.isdigit)
Nothing

And

AND logic operation

>>> Some(5).and_(Some(9))
Some(9)
>>> Some(9).and_(Nothing)
Nothing
>>> Nothing.and_(Some(8))
Nothing

Or

OR logic operation

>>> Some(5).or_(Some(9))
Some(5)
>>> Some(9).or_(Nothing)
Some(9)
>>> Nothing.or_(Some(8))
Some(8)
>>> Nothing.or_(Nothing)
Nothing
Vorherrschende Sprache
Python
Sterne
4.4k
Forks
156
Ø Merge
3 Std. 44 Min.
Gemergte PRs (30 T.)
22

Entwicklungsumgebung

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.