python / python/mypy

`--untyped-calls-exclude` should consider inheritance

Offen
#16,651 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

bug
Vorherrschende Sprache
Python
Sterne
20.6k
Forks
3.3k
PR-Merge-Kennzahlen
PR-Kennzahlen ausstehend

Beschreibung

Bug Report

I think it would make sense to use --untyped-calls-exclude based on the defining class of an untyped function. However, that is not currently possible.

Related: https://github.com/python/mypy/issues/16653

To Reproduce

class Super:
    def draw(self):
        ...

class Class(Super):
    ...

Class().draw()

Expected Behavior

mypy --no-incremental --disallow-untyped-calls --untyped-calls-exclude=bug.Super bug.py

gives no error.

Actual Behavior

bug.py:8: error: Call to untyped function "draw" in typed context  [no-untyped-call]
Found 1 error in 1 file (checked 1 source file)

I can use --untyped-calls-exclude=bug.Class to work around this, but when inheriting from a class from an untyped library, it makes more sense to exclude the actual culprit and avoid false negatives (namely, other functions correctly typed in Class).

Your Environment

  • Mypy version used: 1.7.1.
  • Mypy command-line flags: see above
  • Mypy configuration options from mypy.ini (and other config files): none
  • Python version used: 3.12.1

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne damit, den im Issue genannten Befehl mit bug.py zu reproduzieren, wobei du dich darauf konzentrierst, wie --disallow-untyped-calls und --untyped-calls-exclude die geerbte draw-Methode behandeln. Verfolge die Prüfung auf untypisierte Aufrufe und die Methodenauflösung; überprüfe anschließend, dass das Ausschließen von bug.Super diesen Fehler unterdrückt, ohne korrekt typisierte Methoden in Class generell auszuschließen.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
devtools
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
45/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.