python / python/typeshed

TypeIs for isinstance

Aperta
#15,844 14 commenti 0 reazioni 0 assegnatari Vedi su GitHub

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

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. 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

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.