With a new syntax generic function, `T` cannot be used to set a default value to a parameter with `cast()` while `T` can be used for a parameter and return type
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
*Memo:
mypy --strict test.py
mypy 1.19.0
Python 3.14.0
Windows 11
With a new syntax generic function, T cannot be used to set a default value to a parameter with cast() while T can be used for a parameter and return type as shown below:
from typing import cast
# ↓ Error
def func[T](x: T = cast(T, 100)) -> T:
return x # ↑ No error # ↑ No error
error: Name "T" is not defined
If I don't use T with cast(), other error occurs as shown below:
# ↓↓↓ Error
def func[T](x: T = 100) -> T:
return x
error: Incompatible default for argument "x" (default has type "int", argument has type "T")
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 mit dem test.py-Reproducer und führe ihn mit mypy --strict unter den gemeldeten Versionen mypy 1.19.0 und Python 3.14.0 aus. Verfolge, wie die neue Syntax für generische Funktionen T im an cast() übergebenen Standardausdruck verarbeitet. Als erledigt gilt die Aufgabe, wenn das Beispiel den auf cast basierenden Standardwert akzeptiert und dabei das bestehende Verhalten von Parameter- und Rückgabetyp beibehält.
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
- 35/100