Sortie de Python 3.9 avec plusieurs nouvelles fonctionnalités majeures :
- Une aide à la gestion des “timezones” grâce Paul Ganssle le créateur de la fameuse librairie dateutil. Un nouveau module zoneinfo a été ajouté pour cette fonctionnalité.
- Une nouvelle façon de mettre à jour un dict pour pratiquer des fusions entre deux dictionnaires. On peut maintenant utiliser l’opérateur | pour fusionner ensemble deux dictionnaires (ce qui renvoie un nouveau dictionnaire) ou bien l’opérateur |= qui fusionne en place un dictionnaire B dans un dictionnaire A (la fusion se fait directement dans le dictionnaire A).
- Une meilleure flexibilité sur la déclaration des décorateurs, il y avait auparavant une limitation qui empêchait par exemple l’usage d’un élément d’un dictionnaire avec l’écriture entre crochets, c’est maintenant possible et l’on peut définir un décorateur tel que @mydecoratorset["foo"].oneattribute.otherattribute.
- Annotation plus lisible du typage d’arguments avec l’objet typing.Annotated qui permet de faire des annotations de typage plus évoluées et plus accessibles en introspection.
- Amélioration du module d’analyse grammaticale (parser) pour se reposer sur un nouveau type d’analyse grammaticale (le PEG au lieu du LL) qui va permettre une gestion plus aisée pour des cas complexes sans recourir à de nombreux hack. Pour l’instant les deux types de parser sont disponibles et à terme dans Python 3.10 le parser LL devrait disparaître.
- L’ajout de nouvelles méthodes d’un String qui sont removesuffix et removeprefix pour pallier au comportement parfois troublant de String.split lorsqu’on lui donne une chaîne de plusieurs caractères comme argument de séparation.
- Un nouveau module graphlib pour aider à faire du Tri topologique dont on se sert par exemple pour tracer les dépendances entres certains packages ou modules.
- La gestion de nouveaux statuts HTTP récents dans le module http.
- Un grand nettoyage de code de compatibilité de comportement avec Python2. Python3.10 continuera aussi à faire encore un peu plus de nettoyage à ce niveau.
- Des cycles de “release” plus courts pour amener des correctifs et améliorations plus rapidement. À noter que Python 3.9 continuera à recevoir des correctifs de sécurité jusqu’en 2025.