`@deprecated` doesn't work with non-overloaded constructors
Nessuno ha ancora preso questa issue.
- Lingua principale
- Python
- Stelle
- 20.6k
- Fork
- 3.3k
- Metriche di merge delle PR
- Metriche PR in attesa
Descrizione
Bug Report, To Reproduce, & Actual Behaviour
This is similar to #19588, but that was fixed on master for the case when __init__ is overloaded.
In the non-overloaded case, @deprecated still doesn't report anything (mypy Playground):
To Reproduce
from typing import overload
from typing_extensions import deprecated, Self
class Some:
@deprecated("reason")
def __new__(cls, x: str) -> Self: ...
Some('test') # No reports here
class Some2:
@deprecated("reason")
def __init__(self, x: str) -> None: ...
Some2('test') # No reports here
Expected Behavior
Some('test') # E: function Some.__new__ is deprecated: reason [deprecated]
Some2('test') # E: function Some.__init__ is deprecated: reason [deprecated]
Your Environment
- Mypy version used: 1.18.2, master
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 riproducendo i casi non sovraccaricati di Some.new e Some2.init nel mypy Playground collegato, quindi confronta il loro trattamento con il caso sovraccaricato di #19588. Il lavoro è completato quando entrambe le chiamate al costruttore emettono le diagnosi [deprecated] previste mostrate nell'issue.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- python
- Ambito
- devtools
- Tipo di issue
- Bug
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 48/100