Should dict() constructor overloads be more permissive?
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
Current constructor overloads are here:
Someone took care to allow specific positive case, and to block specific negative case.
Many potential valid uses have fallen through the cracks:
dict([[1, 2]])
dict("AT TA GC CG".split())
dict([["str", b"bytes"]])
My understanding of the issue is that there's no way to specify sequence length (other than a tuple) in a type hint, that is there's no syntax to hint ["a", "b"] vs ["a", "b", "c"].
This brings a philosophical question: what side should typeshed err on when type hint syntax is not precise enough?
- type whatever Python may accept run time, or
- restrict users to what Python is guaranteed to accept at run time?
It was mentioned at https://github.com/microsoft/pyright/issues/7382 that type checkers trust typeshed, and thus the question belongs here.
My personal preference would be for permissive type hints in these cases.
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 stdlib/builtins.pyi, au niveau des surcharges liées du constructeur dict(), et comparez-les aux appels d’exemple de l’issue. Vérifiez comment les vérificateurs de types concernés traitent ces cas, puis déterminez si la politique prévue consiste à accepter des entrées plus larges valides à l’exécution ; la finalisation nécessite une conception des surcharges approuvée et la validation correspondante.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- tooling
- Type d'issue
- Fonctionnalité
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 25/100