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

Prevent an implementation for `int` class from operating on `bool` values

Offen
#310 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Anfängerfreundlichkeit
45/100
Issue-Typ
Bug
Klarheit
Größtenteils klar
Aktivitätsstatus
Veraltet
Tech-Stack
python
Bereich
backend

Rechercherichtung

Beginne damit, das Beispiel mit classes 0.4.0 zu reproduzieren, und verfolge dann den Dispatch von der Typeclass-Deklaration und der Registrierung von render.instance(int) aus. Als abgeschlossen gilt es, wenn render(True) nicht mehr die int-Implementierung verwendet, sondern stattdessen für den nicht spezifizierten bool-Fall NotImplementedError auslöst.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

Context. Consider the following piece of code.

from classes import typeclass

@typeclass
def render(data_value) -> str:
    """Pretty-print a value."""

@render.instance(int)
def _render_int(data_value: int) -> str:
    return f'🔢 {data_value}'

render(True) == '🔢 True'

(this should be runnable as-is on classes 0.4.0.)

I would have expected this code to fail with a NotImplementedError because the bool case wasn't specified; but instead, that case is handled by the int implementation because

In [3]: issubclass(bool, int)
Out[3]: True

Decision. In an int implementation, recognize if the provided value is actually a bool and refuse to process that value.

Consequences. I have been writing in Python for quite a few years now and I might even have encountered this relationship between int and bool types before, but that is not quite a type of thing that I keep in my short-term memory to be able to instantly recognize.

I believe this change can help avert bugs which might be hard to trace otherwise.

Vorherrschende Sprache
Python
Sterne
730
Forks
30
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

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/classes

Alle Issues in dry-python/classes

Ähnliche Issues

Weitere Issues zu Python

Neue Issues direkt in Ihr Postfach

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