Sujet : typing
-
Les classes Protocol : typage structurel pour le duck typing en Python
Une classe typing.Protocol déclare les méthodes et attributs dont une partie appelante a besoin ; tout objet qui les possède satisfait le type sans en hériter. Définir les protocoles à proximité du code qui en dépend, les garder minimaux, et n'utiliser runtime_checkable que là où isinstance est réellement nécessaire.
-
Itérables et itérateurs : le protocole derrière les boucles for
Un itérable retourne un nouvel itérateur depuis __iter__ ; un itérateur retourne des éléments depuis __next__, lève StopIteration une fois terminé et doit continuer de la lever ensuite. Une boucle for appelle iter une fois et next de façon répétée, si bien qu'un itérateur épuisé passé à une seconde boucle paraît vide. Annoter Iterable pour un seul passage, Sequence ou Collection quand plusieurs sont nécessaires.
-
Fonctions génériques et décorateurs avec TypeVar, ParamSpec et la syntaxe de la PEP 695
Une variable de type relie les types des paramètres et de la valeur de retour ; les crochets de la PEP 695 (def f[T](...)) remplacent les déclarations manuelles de TypeVar, les bornes et les contraintes ont des sémantiques différentes, et ParamSpec permet à un décorateur de conserver la signature de la fonction qu'il enveloppe au lieu de l'effacer en Callable[..., Any].
Lisible par machine : JSON