python / python/mypy

`isinstance(_, Callable)` reports `[arg-type]`

Offen
#18,796 2 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

isinstance(_, collections.abc.Callable) is allowed at runtime, but is reported

(A clear and concise description of what the bug is.)

To Reproduce

from collections.abc import Callable
assert isinstance(int, Callable)

Expected Behavior

for isinstance(_, collections.abc.Callable) to behave identically to callable(_):

  • no error
  • _: T is narrowed to _: <callable subtype of T>

Actual Behavior

main.py:2: error: Argument 2 to "isinstance" has incompatible type "<typing special form>"; expected "_ClassInfo"  [arg-type]

https://mypy-play.net/?mypy=latest&python=3.13&gist=463e1edfbfc8cefc268fce8544b0b49b

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 mit dem Reproducer main.py und dem verlinkten mypy-play-Beispiel, unter Verwendung von Python 3.13 und der neuesten mypy-Version. Verfolge, wie isinstance() collections.abc.Callable behandelt, und vergleiche dies mit der Typ-Eingrenzung durch callable(). Als abgeschlossen gilt die Aufgabe, wenn das Beispiel keinen arg-type-Fehler erzeugt und den Wert auf einen aufrufbaren Subtyp eingrenzt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
compilers, 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.