python / python/mypy

[numpy] mypy does not raise `type-var` when `NDArray` with incompatible dtype is used as a generic.

Offen
#17,228 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

To Reproduce

import numpy as np
from numpy.typing import NDArray

class A: ...

def foo() -> NDArray[A]:  # ✅ raises type-var (true positive)
    return np.array([A()])

def bar() -> list[NDArray[A]]:  # ❌ does not raise type-var (false negative)
    return [np.array([A()])]

Expected Behavior

mypy should raise error: Type argument "A" of "NDArray" must be a subtype of "generic" [type-var] in both instances.

Your Environment

  • Mypy version used: 1.10
  • numpy version: 1.26.4
  • Mypy configuration options: plugins = ["numpy.typing.mypy_plugin"]
  • Python version used: 3.11.7

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

Reproduziere das Problem mit den foo- und bar-Beispielen unter Verwendung von mypy 1.10, NumPy 1.26.4, Python 3.11.7 und aktiviertem numpy.typing.mypy_plugin. Vergleiche die Diagnosen für die direkte und verschachtelte Verwendung von NDArray[A]; erledigt bedeutet, dass mypy in beiden Fällen den angegebenen type-var-Fehler ausgibt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
numpy, python
Bereich
devtools
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Klar beschrieben
Anfängerfreundlichkeit
42/100

Neue Issues direkt in Ihr Postfach

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