python / python/mypy

Using TypeVar as typing for a function argument disables the --strict-equality check

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

Dieses Issue hat noch niemand übernommen.

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

Beschreibung

Bug Report

When using a TypeVar as typing for a function parameter, the --strict-equality checks are no longer executed.

To Reproduce

from typing import TypeVar

T = TypeVar("T", int, str)


def a(x: T) -> None:
    1 == "a"


def b(x: int | str) -> None:
    1 == "a"

a(1)
b(1)

Playground: https://mypy-play.net/?mypy=master&python=3.10&flags=strict&gist=60fa0e9e47a0ed5683357b1fa2611477

Expected Behavior

I would expect both functions a() and b() to raise the comparison-overlap error.

Actual Behavior

Only function b() where there is no TypeVar used raises the comparison-overlap error.

Note that other, standard, mypy checks are executed and flagged in both functions.

Your Environment

  • Mypy version used: Checked with multiple (1.4.1, 1.7.0, master branch)
  • Mypy command-line flags: --strict or --strict-equality
  • Mypy configuration options from mypy.ini (and other config files): -
  • Python version used: 3.10, 3.11

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ühren Sie den bereitgestellten Reproducer mit --strict-equality aus und vergleichen Sie die Diagnosen für die Funktionen a() und b(). Verfolgen Sie mypy’s Behandlung von constrained TypeVar-Parametern; als erledigt gilt die Aufgabe, wenn beide Vergleiche comparison-overlap melden und die Regressionstestabdeckung das Verhalten bestätigt.

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
42/100

Neue Issues direkt in Ihr Postfach

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