Support for Union[*TypeVarTuple]
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
(Forwarded from https://github.com/python/typing/issues/1523)
I'm trying to annotate a method that only accepts a union of specific types, with the types specified via variadic generic. Although mypy supports variadic unpacking like Tuple[*Ts], unpacking Union[*Ts] doesn't seem to work yet:
import typing
Ts = typing.TypeVarTuple("Ts")
class Accepts(typing.Generic[*Ts]):
# error: Unpack is only valid in a variadic position [valid-type]
def foo(self, x: typing.Union[*Ts]): ...
class A: ...
class B: ...
class C: ...
class Test(Accepts[A, B]): ...
Test().foo(A()) # ok
Test().foo(B()) # ok
Test().foo(C()) # should raise [arg-type] error
Mypy 1.7.1, Python 3.11
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
Beginne damit, das Beispiel mit mypy 1.7.1 unter Python 3.11 zu reproduzieren, und bestätige die aktuelle Diagnose für Union[*Ts]. Verfolge die bestehende Unterstützung für Variadic Unpacking ausgehend vom gemeldeten valid-type-Fehler. Als abgeschlossen gilt die Änderung, wenn Union[*Ts] akzeptiert wird und das Beispiel A und B zulässt, während C mit einem arg-type-Fehler abgelehnt wird.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- devtools
- Issue-Typ
- Feature
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 25/100