python / python/mypy

False positive error "incompatible type" calling super() on a generic class with TypeVar constraints

Aperta
#14,774 1 commento 2 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Lingua principale
Python
Stelle
20.6k
Fork
3.3k
Merge medio
1g 18h
PR unite (30g)
54

Descrizione

Reduced test case (mypy-playground):

from typing import Generic, TypeVar

T = TypeVar("T", float, int)


class C(Generic[T]):
    def __init__(self, i: T) -> None:
        self.i: T = i


class B(C[T]):
    def __init__(self, i: T) -> None:
        super().__init__(i)
main.py: note: In member "__init__" of class "B":
main.py:13:26: error: Argument 1 to "__init__" of "C" has incompatible type "float"; expected "T"  [arg-type]
main.py:13:26: error: Argument 1 to "__init__" of "C" has incompatible type "int"; expected "T"  [arg-type]
Found 2 errors in 1 file (checked 1 source file)

Originally posted by @leandro-lucarella-frequenz in https://github.com/python/mypy/issues/13566#issuecomment-1443582479 (this is a very similar issue but not exactly the same)

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia eseguendo con mypy l’esempio Python ridotto dell’issue e confronta le relative diagnosi con il comportamento previsto per il TypeVar vincolato. Traccia la gestione delle classi base generiche e della chiamata a super(), quindi aggiungi o aggiorna un test di regressione in modo che questo esempio non segnali più tipi incompatibili, mentre gli errori effettivi continuino a essere diagnosticati.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
python
Ambito
devtools
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Tranquilla
Chiarezza
Abbastanza chiara
Idoneità per principianti
55/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.