Support `@deprecated` on overloaded property setters
Offen
Dieses Issue hat noch niemand übernommen.
feature
topic-overloads
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Code sample in Mypy playground
from typing import overload
from warnings import deprecated
class A:
@property
def t1(self) -> int:
...
@t1.setter
@deprecated("Setting t is deprecated")
def t1(self, value: int) -> None:
...
@property
def t2(self) -> int:
...
@t2.setter
@overload
@deprecated("Setting t to None is deprecated")
def t2(self, value: None) -> None:
...
@t2.setter
@overload
def t2(self, value: int) -> None:
...
@t2.setter
def t2(self, value: int | None) -> None:
...
a = A()
a.t1 = 1 # reported
a.t2 = None # not reported
See also: https://discuss.python.org/t/107604
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne mit der Mypy-Playground-Reproduktion im Issue und vergleiche, wie der veraltete einzelne Setter und der überladene Setter behandelt werden. Verfolge den Einstiegspunkt der Typprüfung für Property-Zuweisungen; fertig ist es, wenn die Zuweisung von None an t2 die veraltete Warnung meldet, ohne das bestehende Verhalten von t1 zu ändern.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- tooling
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Ruhig
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 56/100