python / python/mypy

(🐞) False 'Any expression' error in assignment to `Any` when super expression is cast

Offen
#16,098 0 Kommentare 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

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

Beschreibung

# mypy: disallow_any_expr

from typing import Any, Generic, cast, _T as T
from dataclasses import dataclass

def f(a: Any): ...

a: Any = cast(dict[object, object], {
    1:  # Expression type contains "Any" (has type "tuple[int, list[Any]]")
        []  # Expression type contains "Any" (has type "list[Any]")
})

@dataclass
class Box(Generic[T]):
    it: T

f(cast(object, Box(Box(1)))  # Expression type contains "Any" (has type "Box[Any]")

I would not expect Any of these errors to appear.

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

Führe zunächst den bereitgestellten mypy-Reproduzierer mit disallow_any_expr aus und bestätige, welche Diagnosen für die gecasteten Zuweisungen und den generischen Box-Ausdruck gemeldet werden. Verfolge den Typprüfpfad für Casts und inferierte Any-Typen; abgeschlossen ist die Aufgabe, wenn diese falsch-positiven Fehler nicht mehr erscheinen, während echte Any-Ausdruck-Diagnosen weiterhin gemeldet werden.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

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

Neue Issues direkt in Ihr Postfach

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