python / python/mypy

__set_name__ isn't checked

Offen
#8,057 1 Kommentar 3 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

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

Beschreibung

from typing import Type

class Foo:
	def __set_name__(self, owner: Type['Bar'], name: str) -> None:
		...

class Bar:
	foo_bar = Foo() # correctly passes

class Baz:
	foo_baz = Foo() # should fail

mypy correctly accepts Bar.foo_var, but incorrectly accepts Baz.foo_baz

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, das bereitgestellte Beispiel mit mypy zu reproduzieren, und untersuche, wie Annotationen für Descriptor-set_name geprüft werden. Die Korrektur ist abgeschlossen, wenn Bar.foo_bar weiterhin akzeptiert wird, während Baz.foo_baz abgelehnt wird, mit Abdeckung für beide Fälle.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
devtools
Issue-Typ
Bug
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.