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

Support `Any` as an alias for `object` to describe a default typeclass implementation

Offen
#307 0 Kommentare 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
38/100
Issue-Typ
Feature
Klarheit
Größtenteils klar
Aktivitätsstatus
Veraltet
Tech-Stack
python
Bereich
tooling

Rechercherichtung

Das Issue nennt keine Implementierungsdateien oder Tests. Beginne damit, die Verarbeitung hinter @render.instance(object) und die vorhandenen Tests für Typeclass-Instanzen zu finden, und verfolge dann, wie der object-Default erkannt wird. Als erledigt gilt, dass @render.instance(Any) sich äquivalent zu @render.instance(object) verhält, während das Beispiel die Fallback-Implementierung verwendet.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

Context. In order to define a default implementation (the one used if no other implementation matches), we currently have to write something like this:

from classes import typeclass

@typeclass
def render(data_value) -> str:
    """Render a data value nicely."""

@render.instance(int)
def _render_int(data_value: int) -> str:
    return f'This is an integer: {data_value}'


@render.instance(object)
def _render_int(data_value: object) -> str:
    return f'No idea what this is: {data_value}'


assert render('BADOOM') == 'No idea what this is: BADOOM'

(this script should be runnable as-is.)

Decision. Support Any as a special case to replace object:

@render.instance(Any)
def _render_int(data_value: Any) -> str:    # type: ignore
    return f'No idea what this is: {data_value}'

Consequences.

  • Pro: The code will look a little bit more straightforward;
  • Contra: mypy with common settings might be unhappy about Any being used, but that can be silenced with type: ignore I suppose.
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.