Python met à jour ses modules et compte les inclure dans l’itération 3.13. Certains seront remplacés par des versions plus pratiques et modernes. D’autres, en revanche, seront tout simplement oubliés. L’évolution actuelle de la technologie permet d’ailleurs de se passer de certains modules autrefois importants. Le PEP 594 annonce les modules obsolètes et leurs alternatives dans la programmation.
Le langage Python est utilisé dans différentes technologies, dont la programmation web. Certains modules sont actuellement obsolètes puisqu’ils sont utilisés pour des anciennes technologies. Autrefois puissants, ils sont de moins en moins utiles avec les fonctionnalités des applications modernes. Python prévoit ainsi d’assainir sa bibliothèque standard en écartant les fonctions qui n’ont plus lieu d’être. Les experts de l’entreprise ont pris la peine d’expliquer les changements à travers le Python Enhancement Proposals PEP 594. Bien que vieux, certains modules comme le CGI sont encore en utilisation lorsqu’ils sont compatibles avec des applications web modernes. Ci-après les modules dépréciés ainsi que les alternatives à leur utilisation actuelle.
La diversité du langage Python
Le langage python est très répandu dans la programmation web, mais pas seulement. Il connait différentes utilisations : mail, connexion réseau, lecture de fichiers images et audio, etc. Au cours de ses trente années d’existence, le langage de programmation a eu le temps d’enrichir sa bibliothèque. Quelques modules sont cependant vieux et ne correspondent plus aux exigences d’utilisation actuelles. Mais certains d’entre eux sont encore utilisés dans les activités courantes et la gestion administrative.
Le standard CGI utilisé depuis longtemps pour les applications web est obsolète depuis un certain temps déjà. Il en existe différentes versions : cgi.parse, cgi.parse_header, cgi.parse_multipart. D’ailleurs, même s’ils sont désuets, les versions cgi et cgitb restent encore opérationnels.
Parmi les modules impopulaires :
- smtpd dédié à la gestion de mails SMTP ;
- nntp pour la gestion de news USENET ;
- telnetlib utilisé dans la connectivité Telnet ;
- msilib spécialement conçu pour Microsoft Windows, notamment pour Microsoft Installer (MSI) ;
- pipes utilisant la technologie os.popen pour relier deux commandes ;
- asynchat/asyncore dédié aux opérations réseau en différé ;
- imghdr/sndhdr pour le traitement de fichiers images ou de son à travers leurs en-têtes ;
- uu pour le traitement de données basées sur le protocole uuencode ;
- mailcap pour la lecture de fichiers dans les courriers électroniques.
Suppression et remplacement
Les modules obsolètes de Python ont été dépréciés dans la dernière version Python 3.12. Pour la future version 3.13, ils seront tout simplement absents. En effet, de nouveaux modules ont été développés pour remplacer ces technologies en fin de vie. D’autres comme le mailcap (devenant inutile) et msilib (trop peu utilisé) vont tout simplement disparaître.
Le PEP 594 prévoit de nombreux remplacements au sein de la programmation Python. On retrouve :
- parse.parse_qs à la place du cgi.parse ;
- message.EmailMessage à la place du cgi.parse_header et du cgi.parse_multipart ;
- aiosmtpd, asynchrone, au lieu de smtpd ;
- pynntp le nouveau nntp ;
- Telnetlib 3, compatible avec asyncio, pour la connexion réseau.
La fonction urllib.parse.parse_qsl sera utilisée pour les requêtes HEAD et GET. Pour les requêtes POST et PUT, cgi.FieldStorage sera remplacé par un module tiers tel que multipart. Dans le cas de charges utiles moins importantes, la fonction sera tout simplement assurée par le parsing dans email.message. Pour la gestion des commandes, subprocess a remplacé le module pipes.
Autrefois pratiques dans la gestion administrative, ces modules sont désormais écartés. Les développeurs ont également moins de chances de les intégrer dans la programmation.
Les modules asynchat et asyncore ont déjà été remplacés par asyncio dans le Python 3.6.
Les bibliothèques tierces remplaceront les modules imghdr et sndhdr. On retrouve Pillow ou une bibliothèque équivalente pour le contenu image et python-magic pour tout type de fichier.
Enfin, l’apparition du format MIME a rendu le module uu obsolète. Pour ceux qui en ont encore besoin, l’alternative est le module binascii de la stdlib.
Cet article vous a-t-il été utile ?
Note moyenne 0 / 5. Nombre de votes 0