URL: https://linuxfr.org/users/linuxcode/journaux/python-25-beta-2 Title: Python 2.5 beta 2 Authors: alexissoft Date: 2006年06月22日T16:41:11+02:00 Tags: uuid et python Score: 0 Python 2.5 beta 2 est sorti il y a peu, le 20 juin. D'après le planning, la beta 2 sortira le 12 juillet, la rc1 le 1 août, et pour finir il sera dévoilé au monde entier dans sa version finale le 8 août 2006. Dans le lot des nouveautés : * Ajout des expressions conditionnelles ( [http://docs.python.org/dev/whatsnew/pep-308.html](http://docs.python.org/dev/whatsnew/pep-308.html) ) >>> import os >>> a = "ERROR" if os.system("ls") != 0 else "OK" >>> print a OK * Ajout de la possibilité de faire des fonctions partielles [http://docs.python.org/dev/whatsnew/pep-309.html](http://docs.python.org/dev/whatsnew/pep-309.html) (functools comprend des outils pour faire de la programmation fonctionnelle) : >>> import functools >>> def log(message, subsystem): ... print "%s: %s" % (subsystem, message) ... >>> log("plop", "linuxfr") linuxfr: plop >>> linuxfr_log = functools.partial(log, subsystem="linuxfr") >>> linuxfr_log("coin") linuxfr: coin * Changement des metadata pour setup.py ( [http://docs.python.org/dev/whatsnew/pep-314.html)](http://docs.python.org/dev/whatsnew/pep-314.html)) : champs Classifier, Download-URL, Requires, Provides, Obsoletes ajoutés et changement de sémantique pour les champs License et Platform qui doivent être utilisés en fonction de Classifier (si j'ai bien compris la PEP) * Imports relatifs/absolus ( [http://docs.python.org/dev/whatsnew/pep-328.html](http://docs.python.org/dev/whatsnew/pep-328.html) ) : ça permettra à l'avenir d'importer un module comme ça from ..test import machin. Pour l'activer dans Python 2.5 : from __future__ import absolute_import * Exécuter des modules comme des scripts : [http://docs.python.org/dev/whatsnew/pep-338.html](http://docs.python.org/dev/whatsnew/pep-338.html) * Unification de "except" et "finally" : [http://docs.python.org/dev/whatsnew/pep-341.html](http://docs.python.org/dev/whatsnew/pep-341.html) et [http://www.python.org/dev/peps/pep-0341/](http://www.python.org/dev/peps/pep-0341/) * yield est maintenant une expression qui retourne une valeur : [http://docs.python.org/dev/whatsnew/pep-342.html](http://docs.python.org/dev/whatsnew/pep-342.html) * Ajout du mot clef "with" qui est TRES pratique ( [http://docs.python.org/dev/whatsnew/pep-343.html](http://docs.python.org/dev/whatsnew/pep-343.html) ) : au lieu de >>> f = open("/etc/fstab", "r") >>> f.readline() '# /etc/fstab - see man 8 mount\n' où on a une variable _f_ qui se balade un peu partout, on utilise >>> with open("/etc/fstab", "r") as f: ... print f.readline(). Je précise qu'il faut, pour le faire tourner sous Python 2.5 : from __future__ import with_statement * ASCII devient l'encodage par défaut (ça génère des SyntaxError à la place des Warning) * quit() et exit() quitteront l'interpréteur * class C(): pass est maintenant autorisé (on devait faire _class C:_ obligatoirement) * Quelques améliorations du language : [http://docs.python.org/dev/whatsnew/other-lang.html#SECTION0(...)](http://docs.python.org/dev/whatsnew/other-lang.html#SECTION0001310000000000000000) * Optimisations ( [http://docs.python.org/dev/whatsnew/other-lang.html#SECTION0(...)](http://docs.python.org/dev/whatsnew/other-lang.html#SECTION0001320000000000000000) ) * Apparition de l'objet "Exception" ce qui permet de faciliter le except : [http://docs.python.org/dev/whatsnew/pep-352.html](http://docs.python.org/dev/whatsnew/pep-352.html) * Ajout de la méthode __index__ : [http://docs.python.org/dev/whatsnew/pep-357.html](http://docs.python.org/dev/whatsnew/pep-357.html) * Le module audioop supporte le codec a-LAW et le codec u-LAW a été amélioré * Le module codec possède le support des codecs incrémentaux, de plus la fonction codec.lookup() retourne une instance de l'objet CodecInfo au lieu d'un tuple. * Ajout du type "defaultdict" qui est comme un dict sauf qu'il retourne une valeur quand un objet n'est pas présent * Ajout du module cProfile, qui est comme profile, mais en C * Bugfixes et améliorations du module CSV * datetime possède ENFIN un strptime, comme son voisin time, ça évite les hacks * Le paquet email a été mis à jour en version 4.0 * Le paquet fileinput est bien plus flexible (noms de fichier unicode, et d'autres) * Dans le module gc (garbage collector) ajout de la fonction new_count() renvoyant un tuple du rammassage pour les 3 générations (oula je traduis mal) * Le module mailbox permet l'écriture et non plus la lecture seulement * Ajout du module msilib permettant la créations d'installateurs au format MSI (gloups) et de fichiers CAB. Un support basique de la lecture des installateurs MSI est assuré. * Le module nis permet aussi de naviguer sur d'autres domaines que le sien * Mise à jour de optparse, ajout de epilog (qui ajoute un message après le --help) et un destroy() * Ajout du benchmark pybench * pyexpat utilise maintenant la version 2.0 du parseur Expat * Les modules regex, regsub, statcache, tzparse et whrandom ont été supprimés. De même est supprimé le répertoire lib-old (n'affecte personne si le programme ne touche pas à sys.path pour forcer son inclusion) * Le module rlcompleter ne nécessite pas l'inclusion de readline et donc tourne sur des plateformes non-Unix * SimpleXMLRPCServer et DocXMLRPCServer ont un attribut rpc_path qui restreint les opérations RPC dans certains répertoires (/ et /RPC2 par défaut) * Le module socket supporte AF_NETLINK (pour plus d'info sur netlink : [http://www.linuxjournal.com/article/7356](http://www.linuxjournal.com/article/7356) ) * Ajout du module spwd pour accéder à /etc/shadow * Ajout de la fonction extractall() dans le module TarFile * Le module unicodedata a été mis à jour à la version 4.1.0 de la base de charactères unicode (pour des raisons de compatibilité l'ancien est disponible sous unicodedata.ucd_3_2_0) * Ajout du module UUID permettant de générer des identifiants universels, conformément à la RFC 4122 ( [http://www.faqs.org/rfcs/rfc4122.html](http://www.faqs.org/rfcs/rfc4122.html) ) >>> uuid.uuid1() UUID('a8098c1a-f86e-11da-bd1a-00112444be1e') * Améliorations du module webbrowser, prise en charge de la PEP 0338, ajout de open_new(), open_new_tab(), et ajout d'un paramètre autoraise dans open() * La librairie standard Python n'a plus de module xml, elle a été renommée en xmlcore ce qui fait qu'il est toujours possible d'appeller la librairie standard XML même si on a PyXML * xmlrpclib permet maintenant de retourner des objets datetime * zipfile supporte la version ZIP64 de ce format, et donc permet d'avoir un fichier zip supérieur à 4GiB et peut contenir des fichiers supérieurs à 4GiB chaqu'un. * Ajout du paquet ctypes ( [http://docs.python.org/dev/whatsnew/modules.html#SECTION0001(...)](http://docs.python.org/dev/whatsnew/modules.html#SECTION0001410000000000000000) ) qui permet d'utiliser des librairies externes plus facilement qu'avec dl : import ctypes libc = ctypes.CDLL('libc.so.6') result = libc.printf("Line of output\n") * ElementTree est livré de base : [http://docs.python.org/dev/whatsnew/modules.html#SECTION0001(...)](http://docs.python.org/dev/whatsnew/modules.html#SECTION0001420000000000000000) et ça c'est une très bonne nouvelle (c'est sur lui que se base lxml par exemple) * Ajout de hashlib qui permet de hasher en ce qu'on veut : [http://docs.python.org/dev/whatsnew/modules.html#SECTION0001(...)](http://docs.python.org/dev/whatsnew/modules.html#SECTION0001430000000000000000) * Ajout d'une implémentation WSGI : [http://docs.python.org/dev/whatsnew/modules.html#SECTION0001(...)](http://docs.python.org/dev/whatsnew/modules.html#SECTION0001450000000000000000) * Quelques modifications de l'API C : [http://docs.python.org/dev/whatsnew/ports.html](http://docs.python.org/dev/whatsnew/ports.html) comme la possibilité de récupérer la version complète de Python depuis C, la possibilité de compiler CPython avec un compilateur C++ (que celui qui sait en quoi c'est utile me le dise, à part nettoyer le code), et d'autres ... * Et pour finir, quelque chose de magnifique : sqlite3 est fourni en standard avec Python !! Voila, vous pouvez le télécharger ici : [http://www.python.org/download/releases/2.5/](http://www.python.org/download/releases/2.5/) La PEP356 montrant le planning de Python 2.5 : [http://www.python.org/dev/peps/pep-0356/](http://www.python.org/dev/peps/pep-0356/) "What is new in Python 2.5" : [http://docs.python.org/dev/whatsnew/whatsnew25.html](http://docs.python.org/dev/whatsnew/whatsnew25.html) Documentation de Python 2.5 : [http://docs.python.org/dev/](http://docs.python.org/dev/)