python / python/mypy

`--warn-return-any` not applied to generics

Offen
#10,487 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

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

Beschreibung

Bug Report

When a function annotated to return tuple[T] returns tuple[Any] no error is raised. Same with list.

To Reproduce

from __future__ import annotations
from typing import Any

def passes() -> tuple[str]:
    a: Any
    return (a,)

def fails_1() -> tuple[str]:
    a: int
    return (a,)
    # error: Incompatible return value type (got "Tuple[int]", expected "Tuple[str]")

def fails_2() -> str:
    a: Any
    return a
    # error: Returning Any from function declared to return "str"

Expected Behavior

I'd expect passes() to fail with error: Returning Tuple[Any] from function declared to return "Tuple[str]" when using mypy with --strict

Actual Behavior

Tuple[Any] is inferred to Tuple[str]

Your Environment

  • Mypy version used: 0.812
  • Mypy command-line flags: none
  • Mypy configuration options from mypy.ini (and other config files):
# setup.cfg
[mypy]
python_version = 3.8
strict = true
warn_unreachable = true
implicit_reexport = true
ignore_missing_imports = true
  • Python version used: 3.9.1
  • Operating system and version: macOS 10.13.6

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 bereitgestellten Python-Reproduktionsbeispiel, das Rückgaben vom Typ tuple[str], tuple[Any], list und Any enthält, und führe es mit der gemeldeten strikten Konfiguration aus. Verfolge, wie generische Rückgabetypen abgeleitet und geprüft werden, ergänze dann Abdeckung für den Tupel-Fall und bestätige, dass die erwartete Returning Tuple[Any]-Diagnose erzeugt wird.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

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

Neue Issues direkt in Ihr Postfach

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