PyQt v4 et Python 2.5 beta 1

Posté par . Modéré par Benoît Sibaud.
Tags :
0
25
juin
2006
Python
PyQt, développé par la société Riverbank, est un ensemble de bindings Python pour la bibliothèque multi-plateforme Qt. Développée par Trolltech, cette bibliothèque fournit des outils pour le développement d'interfaces graphiques mais également pour le développement rapide d'applications utilisant XML, HTTP, et bien d'autres. Elle est célèbre principalement pour son utilisation dans l'environnement de bureau KDE.
PyQt a donc suivi la récente évolution de Qt et permet dans cette version 4 aux développeurs Python d'utiliser les différents composants fournis par Qt4. PyQt4 peut être installé conjointement à PyQt3 sans aucun problème, ce qui facilitera les migrations de Qt3 vers vers Qt4.
Riverbank est active en ce qui concerne le développement autour de Python et Qt puisqu'elle fournit également PyKDE, un ensemble de bindings pour le développement autour de KESIP - un outil permettant de créer facilement des bindings Python pour une bibliothèque C/C++. Pour les scientifiques, est également disponible la version 4.2.1 de PyQwt et PyQwt3D qui permettent de créer des objets graphiques tels que des courbes en 2D et 3D en utilisant les objets Qwt et Qwt3D de Qt.

Par ailleurs, Alexis Robert nous a signalé dans un journal la sortie de Python 2.5 beta 1 :
Le 20 juin 2006, Python 2.5 beta 1 est sorti. C'est l'occasion d'observer les nouveautés de cette version majeure du célèbre langage de Guido Van Rossum. D'après le planning, la beta 2 sortira le 12 juillet, la rc1 sortira le 1er août et la version finale le 8 août 2006, suivant la PEP 356. Les changements de Python 2.5 beta 1 comprennent un mélange intéressant d'amélioration côté langage et bibliothèque. À part les améliorations des bibliothèques qui seront très utiles et assez visibles, les changements au niveau du langage sont assez sympa même si ce n'est pas des fonctionnalités qui seront utilisées tous les jours.

Il faut aussi rappeler que ce sera la première version de Python qui bénéficiera de son nouveau logo, depuis que son site internet a été refait.

Côté langage
Côté modules
  • Changement des metadata pour setup.py: 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.
  • 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 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 ramassage 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éation 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'information sur netlink : 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 caractè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
    >>> 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 bibliothèque standard Python n'a plus de module xml, elle a été renommée en xmlcore ce qui fait qu'il est toujours possible d'appeler la bibliothèque 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 chacun.
  • Ajout du paquet ctypes qui permet d'utiliser des bibliothèques 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 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.
  • Ajout d'une implémentation WSGI.
  • Quelques modifications de l'API C 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 !

Améliorations diverses
  • # Ouah

    Posté par . Évalué à 4.

    Un joli merge :)

    J'ai commis une petite erreur (ou c'est à la modération ?) :

    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()
    li>La bibliothèque standard Python n'a plus de module xml, elle a été renommée en xmlcore ce qui fait qu'il est toujours possible d'appeler la bibliothèque standard XML même si on a PyXML.
    • [^] # Re: Ouah

      Posté par . Évalué à 2.

      nan coquille de relecture (lourde sur cette dépêche)

      un modo pour corriger plize ?
  • # Licence

    Posté par (page perso) . Évalué à 7.

    Il faut également souligner pour PyQT que la société Riverbank à décidé de suivre trolltech pour les licence puisque la Pyqt4 est disponible sous licence libre pour windows également.
    • [^] # Re: Licence

      Posté par (page perso) . Évalué à 6.

      A noter que Riverbank computing, c'est une personne : Phil Thompson. C'est lui qui fait les binding de PyQt depuis Qt 1.4 et il assure par mal.
  • # Thème python aux RMLL

    Posté par (page perso) . Évalué à 1.

    A tous ceux qui aiment python ou veulent découvrir ce fabuleux language, rendez vous aux RMLL les deux derniers jours (Jeudi 6 au Vendredi 8 juillet 2006).

    Le programme du thème python s'affine avec au menu (ca peut encore changer):

    Jeudi :

    - Initiation à Python
    - Documentation de projet avec ReST et gestion de la qualité
    - Programmer avec les tests
    - Packager un projet python avec distutils et setuptools (les python eggs)
    - Programmation XML simple et efficace : applications avec le format ODF et écriture d'un plugin inkscape
    - Étendre Python avec ctypes et pyrex
    - Zope-cookbook et ligthing talks

    Vendredi :

    - Initiation Zope 3 component architecture
    - Présentation du moteur d'inférence bayesienne CPSBayes
    - Ajax State of the art
    - Mailwoman, un controlleur XML-RPC Zope 3
    - Introduction à TurboGears
    - Utilisation du framework Twisted

    La page du wiki pour organiser ce thème python :

    http://www.afpy.org/groups/gr_adherents/wikis/ReunionJuillet(...)

    En plus on devrait avoir recu les nouveaux tshirts de l'Afpy qui seront en vente sur le stand de l'assoce.
    • [^] # Re: Thème python aux RMLL

      Posté par . Évalué à 2.

      Est-ce que le contenu python des RMLL sera disponible sous forme numérique, pour ceux qui ne peuvent pas y assister ? vidéos ? tutoriels ?
      • [^] # Re: Thème python aux RMLL

        Posté par (page perso) . Évalué à 2.

        Les slides seront publiés sur le site de l'afpy des qu'il seront prets. Pour les videos, on aura probablement pas le matos mais si y en a qui veulent filmer ils sont les bienvenus :)

        En attendant, je bosse sur le svn de l'afpy pour suivre le work in progress si y'en a que ca interesse (y a pas encore grand chose mais bon ...) :

        http://trac.afpy.org/browser/rmll_workshops
    • [^] # Re: Thème python aux RMLL

      Posté par . Évalué à 2.

      mortel !

      C'est bien vu de ne pas empieter sur Europython, j'espere qu'il y aura du monde
      • [^] # Expressions conditionnelles

        Posté par . Évalué à 2.

        "Ajout des expressions conditionnelles :
        >>> import os
        >>> a = "ERROR" if os.system("ls") != 0 else "OK"
        >>> print a
        OK
        "

        Cet exemple est mauvais car les expressions conditionnelles ont été conçues pour être le plus souvent comme suit :

        contents = ((doc + '\n') if doc else '')

        C'est à dire :
        "Le cas le plus probable est 'doc est vrai' et dans ce cas, contents = ((doc + '\n') . Execptionnllement , ce sera faux et on exécutera ce qu'il y a après le else."

        Dans l'esprit, c'est donc plutôt:

        "OK" if os.system("ls") else a="ERROR" en supposant qu'on n'a peu de chance que ls ne fonctionne pas.

        C'est façon de voir justifie cette syntaxe qui peut sembler assez étrange.
        • [^] # Re: Expressions conditionnelles

          Posté par . Évalué à 1.

          Oups désolé, vous aurez corrigé :
          a= ("OK" if os.system("ls") = 0 else "ERROR")

          Ca doit être correct cette fois...
  • # C et C++

    Posté par . Évalué à 2.


    la possibilité de compiler CPython avec un compilateur C++

    Peut-être pour intégrer plus facilement l'interpréteur dans un projet en C++ pur ?

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.