python / python/mypy

dmypy suggest should not suggest for abstract methods?

Aperta
#18,965 1 commento 1 reazione 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

bug topic-daemon
Lingua principale
Python
Stelle
20.6k
Fork
3.3k
Metriche di merge delle PR
Metriche PR in attesa

Descrizione

Bug Report

with --no-errors the suggestions from dmypy suggest for abstract methods can lead to type errors

To Reproduce

import abc

class C:
    @abc.abstractmethod
    def get_key(self): pass

class D(C):
    def get_key(self):
        return 'key'

Expected Behavior

either no suggestion or () -> str for t.C.get_key

Actual Behavior

$ dmypy run t.py
...
$ dmypy suggest t.D.get_key
() -> str
$ dmypy suggest t.C.get_key
() -> None

applying both of these suggestions results in a type error:

$ mypy t.py
t.py:8: error: Return type "str" of "get_key" incompatible with return type "None" in supertype "C"  [override]
Found 1 error in 1 file (checked 1 source file)

Your Environment

  • Mypy version used: 1.15.0
  • Mypy command-line flags: see above
  • Mypy configuration options from mypy.ini (and other config files): n/a
  • Python version used: 3.13.1

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 dal punto di ingresso di dmypy suggest e riproduci l’esempio usando dmypy run t.py, quindi confronta i suggerimenti per t.D.get_key e t.C.get_key. La correzione è completata quando un metodo astratto non produce un suggerimento di ritorno None in conflitto e l’esempio supera mypy senza un errore di override.

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à
Ferma
Chiarezza
Specificata chiaramente
Idoneità per principianti
50/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.