Planète Python RSS Note

Planète Python RSS

Le site web Planet Python est un site de planète qui agrège des contenus liés à Python provenant de diverses sources, y compris des blogs, des sites de nouvelles et d'autres publications en ligne. Le site offre un lieu unique pour que les gens puissent rester au courant des derniers développements dans le monde de la programmation Python. Le contenu du site comprend des tutoriels, des actualités, des annonces de projet et des discussions sur divers sujets liés à Python. Les utilisateurs peuvent visiter le site pour rester informés sur la communauté Python, les nouvelles versions, les conférences et les meilleures pratiques en matière d'utilisation du langage de programmation Python. Le but du site est d'aider à promouvoir et à diffuser des contenus liés à Python, contribuant ainsi à la croissance et au développement de la communauté Python.

Fil de notes

Le parcours pour établir un format de fichier de verrouillage Python standardisé, pylock.toml, s'est étendu sur plus de quatre ans, impliquant des discussions et des itérations approfondies. Un fichier de verrouillage vise à enregistrer précisément toutes les dépendances et leurs méthodes d'installation spécifiques, en tenant compte de divers formats de paquets tels que les roues et les distributions sources. Définir quelles dépendances sont nécessaires et quand elles s'appliquent, en particulier avec les dépendances optionnelles et les spécificateurs de version, s'est avéré complexe. Cette complexité découle du fait que la résolution des dépendances est un problème NP-complet, aggravé par le désir d'un format lisible par l'homme, sécurisé et efficace.Le processus a commencé par des discussions informelles en 2019, évoluant vers des propositions plus formelles comme la PEP 665 en 2021, qui a finalement échoué en raison de son exclusivité des roues. Des efforts solitaires ultérieurs en 2023 ont conduit au développement d'outils nécessaires et d'une preuve de concept. L'émergence d'outils comme uv en 2024 a présenté de nouveaux défis et exigences, nécessitant des révisions supplémentaires des brouillons de la PEP 751.Les désaccords sur les fichiers de verrouillage multi-usages par rapport aux fichiers à usage unique et sur des fonctionnalités spécifiques ont causé des retards importants et ont nécessité un respect strict des délais de retour d'information. Après de nombreuses discussions et compromis entre des projets clés comme uv, Poetry et PDM, la PEP 751 a finalement été acceptée le 31 mars 2025. Cette réalisation marque l'aboutissement d'années de débats intenses, avec une adoption précoce par PDM, uv et pip démontrant la viabilité du format. L'auteur exprime le désir de passer à d'autres domaines du développement Python après des contributions importantes aux normes d'empaquetage.
CdXz5zHNQW_zjIPgB1naX.png
Le prix commémoratif Malcolm Tredinnick 2025 a été décerné à Tim Schilling, un leader communautaire infatigable qui incarne les valeurs de la communauté Django. Tim est cofondateur de Djangonaut Space, où il a encouragé de nombreuses personnes à faire leurs premiers pas en tant que contributeurs. Il siège au conseil d'administration de Django et est l'un des fondateurs de Django Commons, et est un membre actif de DEFNA, soutenant DjangoCon US. Tim est connu pour ses commentaires réfléchis, pour amplifier le travail des autres et pour encourager les gens à assumer des rôles de leadership. Il a reçu des éloges de membres de la communauté pour sa nature solidaire et respectueuse, et pour la création d'espaces où les nouveaux arrivants peuvent s'épanouir. Les citations de membres de la communauté, notamment Felipe Villegas, Raffaella, Abe Hanoka et Lilian, soulignent le dévouement, le respect et le soutien de Tim envers les autres. Le travail de Tim au sein de la communauté a eu un impact significatif, et il est largement considéré comme un leader naturel qui incarne les valeurs de la communauté Django. Le prix commémoratif Malcolm Tredinnick est décerné chaque année pour récompenser les personnes qui ont apporté des contributions importantes à la communauté Django. Le prix témoigne de l'héritage de Malcolm Tredinnick, qui a favorisé un sentiment de communauté et de générosité au sein du projet Django. La communauté Django est heureuse de reconnaître les réalisations de Tim et lui est reconnaissante de ses contributions à la communauté.
CdXz5zHNQW_oGBXealCqC.jpeg
La présentation de David Guillot à DjangoCon Europe a mis en évidence la capacité de HTMX à créer des applications web dynamiques avec un code considérablement réduit. Cette observation a suscité une tendance où les équipes ont constaté que la conversion d'applications monopages en applications hypermédia multipages réduisait considérablement la taille de la base de code et améliorait l'expérience utilisateur. L'auteur a connu des avantages similaires après être passé de HTMX et AlpineJS à Datastar. Un point de douleur clé auquel l'auteur a été confronté était la gestion de la synchronisation de bibliothèques distinctes comme HTMX et AlpineJS, ce qui entraînait un débogage complexe et une augmentation du code. Datastar a offert une solution unifiée, gérant la synchronisation des composants avec une empreinte plus petite et un code plus facile à comprendre. L'auteur apprécie l'API plus légère de Datastar, qui nécessite moins d'attributs pour les résultats souhaités par rapport à HTMX. Datastar est une bibliothèque pilotée côté serveur qui vise à mettre à jour en direct les applications web en laissant le serveur dicter les changements, contrairement à HTMX qui intègre la logique front-end dans les attributs HTML. Cette approche centrée sur le serveur maintient la logique de mise à jour consolidée, améliorant la maintenabilité. Datastar permet des mises à jour simultanées de plusieurs composants, même au sein d'une fonction synchrone, simplifiant les interactions complexes de l'interface utilisateur. La bibliothèque défend les fonctionnalités natives du web comme les événements envoyés par le serveur (SSE) pour les mises à jour en temps réel, basées sur la poussée, éliminant le besoin de WebSockets ou d'interrogation complexes. La philosophie de Datastar met l'accent sur la réduction de la complexité et l'utilisation d'outils comme les composants web pour un comportement localisé. L'auteur est enthousiasmé par le potentiel de Datastar pour des projets ambitieux, citant des exemples d'applications en temps réel et hautes performances construites avec. Bien qu'il soit encore en phase de découverte, l'auteur trouve Datastar puissant pour les mises à jour en temps réel et estime avoir gagné considérablement depuis qu'il est passé de HTMX.
Python 3.14 est sorti, apportant de nouvelles fonctionnalités et des améliorations significatives. La compatibilité ascendante est en grande partie maintenue, bien que certains composants de la bibliothèque standard aient été supprimés ou dépréciés. Un point fort majeur est la version officiellement prise en charge, bien qu'optionnelle, de Python à threads libres, qui était expérimentale en 3.13. De plus, un compilateur juste-à-temps (JIT) expérimental est désormais disponible pour les binaires MacOS et Windows, bien qu'il ne soit pas encore recommandé pour la production et ne fonctionne pas avec les versions à threads libres. Les signatures GPG ne sont plus fournies ; les utilisateurs doivent désormais utiliser les matériaux de vérification Sigstore.L'interpréteur lui-même bénéficie d'améliorations telles que l'évaluation différée des annotations, permettant de meilleures performances et une meilleure utilisabilité pour les indications de type. Plusieurs interpréteurs peuvent désormais être utilisés via le module concurrent.interpreters de la bibliothèque standard, offrant un modèle de concurrence convivial et un véritable parallélisme multi-cœurs. Les littéraux de chaîne de modèles, ou t-strings, ont été introduits pour le traitement personnalisé des chaînes, renvoyant des objets représentant des parties statiques et interpolées.La bibliothèque standard comprend désormais la prise en charge de la compression Zstandard, aux côtés des capacités d'archive zip et tar existantes. L'introspection Asyncio est désormais possible grâce à de nouveaux outils en ligne de commande, ce qui facilite le débogage des programmes asynchrones. Le shell interactif par défaut propose une mise en évidence de la syntaxe et une amélioration de l'auto-complétion des importations. Dans l'ensemble, Python 3.14 promet des gains de performances et fournit un cadre pour de futures améliorations de la vitesse.
Python 3.14, sorti le 7 octobre 2025, introduit des améliorations des outils, de l'ergonomie et des capacités. La nouvelle version améliore le REPL avec la coloration syntaxique et l'autocomplétion pour une meilleure expérience de codage. Les messages d'erreur sont désormais plus informatifs pour guider les utilisateurs vers les solutions. Les nouvelles fonctionnalités incluent des hooks de débogage plus sûrs, des chaînes de modèles et une évaluation différée des annotations pour une meilleure typage. La mise à jour offre également de nouvelles options de concurrence telles que les sous-interpréteurs et une construction sans thread.Le shell interactif (REPL) a été amélioré avec la coloration syntaxique qui utilise des codes de couleur. La coloration syntaxique et l'autocomplétion améliorent considérablement l'expérience REPL. Les modules de la bibliothèque standard comme argparse et unittest présentent désormais également une sortie colorée. La nouvelle version vise à améliorer la productivité des développeurs et à faciliter le débogage. Python 3.14 s'appuie sur les améliorations de la version 3.13, qui a introduit l'édition multiligne. Les utilisateurs sont encouragés à essayer les nouvelles fonctionnalités en utilisant Python 3.14 et en essayant les exemples. Il y a un quiz pour tester les connaissances des nouvelles fonctionnalités. Un clin d'œil subtil à la constante mathématique π est inclus dans l'alias de la nouvelle version.
CdXz5zHNQW_vg9N64QZvD.jpeg
Nintendo Classics offre un accès à des centaines de jeux rétro de diverses consoles Nintendo et Sega. Cette collection est incluse dans un abonnement Nintendo Switch Online. La proposition de valeur est significative, surtout comparée au coût d'acquisition des copies physiques de ces jeux.Un ensemble de données a été compilé à partir de Wikipédia, en lien avec Pricecharting pour une estimation de la valeur marchande physique de ces titres rétro. Ces données fournissent des informations agrégées sur les prix plutôt que des prix de jeux individuels et sont mises à jour à mesure que de nouveaux jeux sont ajoutés. Huit plateformes distinctes sont représentées dans Nintendo Classics, chacune avec sa propre collection de jeux et sa valeur totale. Toutes plateformes confondues, la valeur estimée des jeux dans Nintendo Classics dépasse quinze mille dollars.Il existe différents niveaux de Nintendo Classics, avec des exigences matérielles et d'abonnement Nintendo Switch Online variables. Certaines collections nécessitent du matériel supplémentaire comme un casque Virtual Boy ou une console Switch 2. Les jeux sont généralement ajoutés à Nintendo Classics par lots, avec une première sortie importante pour une plateforme suivie d'un flux plus lent au fil du temps. Un nombre important de jeux précieux et rares sont disponibles dans la collection. Des éditeurs autres que Nintendo et Sega contribuent à des jeux pour Nintendo Classics, offrant des indices sur d'éventuels ajouts futurs. Un seul jeu a été retiré de la collection à ce jour, mais d'autres retraits pourraient survenir à l'avenir.
Les outils de qualité logicielle de Python évoluent avec une consolidation rapide et une spécialisation approfondie. Ruff a réussi à unifier de nombreux linters et formateurs, fournissant une norme de haute performance pour le style de code. Cependant, d'autres outils essentiels restent dans des silos isolés, se concentrant sur l'architecture et les métriques structurelles. Ces outils spécialisés comme import-linter, tach et les calculateurs de complexité abordent la maintenabilité du code et la dette architecturale au-delà du simple linting. Le succès de Ruff permet désormais une discussion plus large sur la structure du code, pas seulement sur la syntaxe. Les outils spécialisés sont cruciaux pour identifier et atténuer les risques techniques, prévenir la dégradation et réduire les coûts de maintenance. Les métriques provenant des outils de complexité et de cohésion agissent comme des systèmes d'alerte précoce pour la dette technique. La combinaison des données de ces outils peut créer des scores de risque multidimensionnels, mettant en évidence les composants de code problématiques. Cette évaluation prédictive des risques, validée par rapport aux données historiques, peut prioriser les efforts de refactoring. Connecter les mainteneurs de ces divers outils peut accroître leur visibilité et leur durabilité. Une discussion partagée peut favoriser une adoption plus large et attirer de nouveaux contributeurs, assurant la longévité de ces projets précieux.
CdXz5zHNQW_NqUVTOcpDB.png
L'auteur a testé des implémentations "prouvablement correctes" de la fonction leftpad avec diverses entrées, y compris des caractères Unicode et des caractères avec des diacritiques. L'objectif était de voir si ces implémentations formellement vérifiées correspondraient aux sorties attendues par l'auteur. La méthodologie impliquait la sélection d'entrées aléatoires et la détermination manuelle de la sortie souhaitée.Les implémentations testées comprenaient Liquid Haskell, Java, Lean4 et Rust. À titre de comparaison, une implémentation Swift "codée à l'instinct" générée par ChatGPT a également été incluse. La mise en place et l'exécution de certaines de ces implémentations se sont avérées difficiles en raison des différences dans la manière dont elles traitaient les entrées de chaînes de caractères.Les résultats ont révélé des divergences importantes entre les implémentations et les attentes de l'auteur, Rust étant particulièrement performant. Plusieurs implémentations n'ont pas réussi à compléter correctement les entrées contenant des caractères Unicode complexes ou des caractères formés par la combinaison de plusieurs points de code. L'auteur note que même parmi les implémentations "prouvablement correctes", une seule entrée (résumé) a été traitée correctement par toutes, à l'exception de Rust.Le cœur du problème réside dans la définition d'un "caractère" et la manière dont les langages de programmation gèrent les chaînes de caractères. Unicode définit des points de code, mais ceux-ci ne correspondent pas toujours directement à ce qu'un utilisateur perçoit comme un seul caractère. Des concepts tels que les caractères combinés et les différentes représentations Unicode (pré-composées ou décomposées) ajoutent de la complexité.De plus, différents langages de programmation utilisent des représentations et des abstractions de chaînes de caractères internes variées. Des langages comme Java et Javascript utilisent UTF-16, ce qui peut entraîner des problèmes lorsque des points de code en dehors du Basic Multilingual Plane sont rencontrés. Haskell, Lean et Python traitent généralement les chaînes de caractères comme des séquences de points de code.Les chaînes de caractères Rust sont des points de code encodés en UTF-8, et Swift abstrait les chaînes de caractères en caractères perçus par l'utilisateur. Ces différences dans la gestion de l'Unicode et des représentations internes expliquent pourquoi les implémentations de leftpad ont produit des sorties différentes. L'auteur conclut que les complexités proviennent de l'ambiguïté de la "longueur de caractère" et des diverses manières dont les langages de programmation implémentent la gestion des chaînes de caractères.