TypeIs for isinstance
Nessuno ha ancora preso questa issue.
- Lingua principale
- Python
- Stelle
- 5.1k
- Fork
- 2.1k
- Merge medio
- 1g 19h
- PR unite (30g)
- 82
Descrizione
Apologies if I'm missing something obvious, but I checked issues and PR's and haven't seen this mentioned explicitly.
Could isinstance use TypeIs?
With multiples checks it could return an union, with one type T a TypeIs[T].
I often find myself writing one-liner helpers functions that just call isinstance, see this script for example:
https://github.com/OutSquareCapital/pyochain/blob/master/scripts/check_docstrings.py
This both add boilerplate and a performance tax due to a double function call overhead.
I'm very often using lambdas with fluent interfaces, e.g
res = (
my_iterator
.map(lambda x: ...)
.filter(lambda x: isinstance(x, int)
)
Assuming my_iterator is an Iterator[Any], it would be fantastic if it could be narrowed to Iterator[int] without having to define a separate TypeIs function.
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia con l’esempio collegato scripts/check_docstrings.py e con il comportamento richiesto di isinstance/TypeIs. Chiarisci come i controlli singoli e multipli dovrebbero restringere i tipi, quindi individua gli stub e i test di typeshed necessari per convalidare tale comportamento; il lavoro è completato quando la proposta definisce un risultato di tipizzazione e la relativa copertura.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- python
- Ambito
- devtools
- Tipo di issue
- Funzionalità
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Stato di attività
- Tranquilla
- Chiarezza
- Da chiarire
- Idoneità per principianti
- 35/100