python / python/mypy

Allow to register new class/dataclass/attribute makers in attrs plugin

Offen
#5,406 6 Kommentare 10 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

This is a feature request.

attrs is very much intended to be composable (e.g. https://github.com/hynek/environ_config) but currently the attrs plugin only works on the core library's functions: https://github.com/python/mypy/blob/b2d61741623f2a0573f2b1bdb8391ceed862cf69/mypy/plugins/attrs.py#L24-L37

I would like to be able to signal somehow to mypy, that some function is a wrapper around @attr.s/@attr.ib/@attr.dataclass. Not only would third-party applications benefit, but I could really use it while experimenting on https://github.com/python-attrs/attrs/issues/408.

Any ideas/plans how we could achieve that?

cc also @euresti & @chadrik

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 mit mypy/plugins/attrs.py, insbesondere mit den Kernbibliotheksfunktionen, die ungefähr in den Zeilen 24–37 aufgeführt sind, und verfolge, wie das attrs-Plugin @attr.s, @attr.ib und @attr.dataclass erkennt. Sieh dir das verknüpfte attrs-Issue für den zugrunde liegenden Wrapper-Anwendungsfall an. Als abgeschlossen gilt die Aufgabe, wenn es eine dokumentierte und getestete Möglichkeit für Wrapper von Drittanbietern gibt, ein gleichwertiges Verhalten für Klassen, Dataclasses oder Attribut-Ersteller zu registrieren.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

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

Neue Issues direkt in Ihr Postfach

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