[match-case] mypy ignores missing `@runtime_checkable` in class-pattern
Aperta
Nessuno ha ancora preso questa issue.
bug
topic-match-statement
topic-runtime-semantics
- Lingua principale
- Python
- Stelle
- 20.6k
- Fork
- 3.3k
- Metriche di merge delle PR
- Metriche PR in attesa
Descrizione
from typing import Any, Callable, Protocol, runtime_checkable
class Proto(Protocol):
def foo(self, x: int, /) -> object: ...
def test_object(x: object) -> None:
match x:
case Proto() as y: # No Error
reveal_type(y) # N: Revealed type is "__main__.Proto"
if isinstance(x, Proto): # E: Only @runtime_checkable protocols ...
reveal_type(x) # N: Revealed type is "__main__.Proto"
https://mypy-play.net/?mypy=latest&python=3.12&gist=6e3f280e71d3cb4d6131e51496370f97
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
Riproduci l’esempio minimo in Python 3.12 dell’issue nel mypy-playground collegato, confrontando il comportamento del pattern di classe con il controllo isinstance. Traccia l’analisi match-case di mypy per i pattern di protocollo; il lavoro è completato quando un protocollo @runtime_checkable mancante viene diagnosticato in modo coerente con isinstance.
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
- 45/100