TypeVars should be allowed to be the same
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Two unbound TypeVars A and B can potentially be the same:
from typing import Callable, Iterable, TypeVar
A = TypeVar("A")
B = TypeVar("B")
def identity(x: A) -> A:
return x
# ok
def _map(queue: Iterable[B], function: Callable[[B], A]) -> Iterable[A]:
return map(function, queue)
# fails
def _map2(queue: Iterable[B], function: Callable[[B], A] = identity) -> Iterable[A]:
return map(function, queue)
The introduced default keyword argument leads to the following unexpected error:
error: Incompatible default for argument "function" (default has type "Callable[[A], A]", argument has type "Callable[[B], A]")
I'm using mypy 0.740.
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Führe zunächst die beiden _map-Beispiele aus dem Issue aus und vergleiche, wie mypy Callable[[A], A] mit Callable[[B], A] abgleicht. Verfolge die Kompatibilität der Typvariablen und die Überprüfung von Standardargumenten. Als erledigt gilt die Aufgabe, wenn _map2 akzeptiert wird und die gemeldete Inkompatibilität durch einen Regressionstest abgedeckt ist.
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
- 45/100