TypeIs for isinstance
Personne n'a encore pris cette issue.
- Langage dominant
- Python
- Étoiles
- 5.1k
- Forks
- 2.1k
- Merge moyen
- 1 j 19 h
- PR mergées (30 j)
- 82
Description
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.
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par l’exemple lié scripts/check_docstrings.py et le comportement demandé pour isinstance/TypeIs. Clarifiez comment les vérifications simples et multiples devraient restreindre les types, puis identifiez les stubs et les tests de typeshed nécessaires pour valider ce comportement ; le travail est terminé lorsque la proposition comporte un résultat de typage défini et la couverture correspondante.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- devtools
- Type d'issue
- Fonctionnalité
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Activité
- Calme
- Clarté
- À clarifier
- Accessibilité débutants
- 35/100