Type inference into function
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 20.6k
- Forks
- 3.3k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Feature
I tried to search using some keywords and couldn't find anything obvious. But I was trying to do type validation of a class that I don't control (external sdk) and it has a class with optional fields. I'd like to write a function to validate that the instance I am passed as the correct field types, instead of doing it all in one.
Pitch
Ability to do type validation of objects you don't have control of in a subfunction, instead of in a main function.
import typing as t
class Test:
opt: t.Optional[str]
def validate_test(t: Test) -> None:
assert (t.opt)
def check_test_not_working() -> None:
t = Test()
validate_test(t)
# Expect str, get Union[str, None]
reveal_type(t.opt)
def check_test_working() -> None:
t = Test()
assert (t.opt)
# Expect str, get str
reveal_type(t.opt)
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 Problem mit den gezeigten Beispielen für Test, validate_test und reveal_type zu reproduzieren, und untersuche dann, wie mypy die Typverengung über Funktionsaufrufe hinweg propagiert. Als abgeschlossen gilt die Arbeit, wenn ein unterstützter Ansatz ermöglicht, dass die Assertion der Hilfsfunktion t.opt beim Aufrufer verengt, während das bestehende Verhalten von Optional erhalten bleibt.
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