Support `@deprecated` on overloaded property setters
Aperta
Nessuno ha ancora preso questa issue.
feature
topic-overloads
- Lingua principale
- Python
- Stelle
- 20.6k
- Fork
- 3.3k
- Metriche di merge delle PR
- Metriche PR in attesa
Descrizione
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
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia con la riproduzione in Mypy playground presente nell’issue e confronta come vengono gestiti il setter singolo deprecato e il setter sovraccarico. Traccia il punto di ingresso del controllo dei tipi per le assegnazioni alle proprietà; il lavoro è completo quando l’assegnazione di None a t2 segnala l’avviso di deprecazione senza modificare il comportamento esistente di t1.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- python
- Ambito
- tooling
- Tipo di issue
- Bug
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Stato di attività
- Tranquilla
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 56/100