python / python/mypy

Add support for classmethod converters in attrs plugin

Offen
#7,912 4 Kommentare 8 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

feature priority-1-normal topic-attrs
Vorherrschende Sprache
Python
Sterne
20.6k
Forks
3.3k
PR-Merge-Kennzahlen
PR-Kennzahlen ausstehend

Beschreibung

import attr

@attr.s
class Bar:
    b = attr.ib()

    @classmethod
    def make(cls, one: int) -> 'Bar':
        return cls(one)


@attr.s
class Foo:
    a = attr.ib(converter=Bar.make)

error: Unsupported converter, only named functions and types are currently supported

Attrs is perfectly happy with make

>>> Foo(1)
Foo(a=Bar(b=1))

Granted the converter limitations are a known issue, I couldn't find this use-case covered anywhere.

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne damit, den gemeldeten Fehler mit dem Beispiel für den classmethod-Konverter aus dem Issue zu reproduzieren, und verfolge anschließend die Behandlung von Konvertern durch das attrs plugin. Fertig ist die Aufgabe, wenn classmethod-Konverter wie Bar.make ohne den Fehler unsupported-converter akzeptiert werden und das Beispiel weiterhin korrekt typgeprüft wird.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

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

Neue Issues direkt in Ihr Postfach

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