filyb.info carnet web de florian birée

Aller au contenu | Aller au menu | Aller à la recherche

vendredi 30 juillet 2010

Orange in the sky (3)

jeudi 29 juillet 2010

Naviguons dans le code

Je viens d'installer webbzr sur TheFool, une interface web qui permet d'afficher élégament et simplement le contenu des dépôts bazaar publics.

Certes, webbzr est en php, mais il est léger et simple à installer, alors que demander d'autres ? Après tout, simple is beautiful.

J'avais certes déjà une plateforme Trac d'installée, mais tous les dépôts n'ont pas besoin d'autant.

On y trouvera notamment :

  • le dépôt de RstWiki, le moteur de wiki minimaliste qui fait tourner mes pages perso (et qui pour le coup mériterait peut-être un Trac...) ;
  • mes fichiers de configuration, tellement c'est pratique de les récupérer sur n'importe quelle machine qu'ils sont versionnés, et tellement c'est pratique de lire ceux des autres que je partage les miens.

Orange in the sky (2)

mardi 13 juillet 2010

Now, in the dark

lundi 12 juillet 2010

Python 3 en Python 2

Un de mes objectifs pour la prochaine version de Bristoledit est de pouvoir faire fonctionner l'éditeur aussi bien avec Python 2 que Python 3, voir même avec Pypy. Pourquoi ? Parce que Python 3, c'est l'avenir, le language est plus propre, plus agréable. Mais Python 2 reste encore très utilisé, et certaines bibliothèques (PyGTK) ne sont pas encore compatibles avec la version 3. Et Pypy, parce qu'avoir un interpréteur plus rapide que CPython, c'est la classe.

La manière traditionnelle pour avoir du code compatible entre Python 2 et Python 3 consiste à l'écrire en Python 2, puis à le convertir avec 2to3. Mais c'est tout de même relativement contraignant.

Aussi, je me suis dit que j'allais essayer d'avoir un code fonctionnel avec ces trois interpréteurs, sans traduction préalable, comme l'a fait Ryan Kelly pour PyEnchant.

Voici donc upy (pour universal python), un module qui permet de s'approcher de la sémantique de Python 3, mais avec du code fonctionnel quelque soit l'interpréteur.

Exemples :

from upy import *    # oui, normalement ça ne se fait pas. Ici, on écrase sans
# discuter les fonctions internes de Python 2 par des
# équivalents de Python 3

spam = str() # hop, une chaîne *unicode* vide
eggs = bytes() # hop, un tableau d'octets (attention cependant, la
# sémantique de eggs[i] n'est pas la même entre Python 2
# et Python 3

spamspam = u('Hêllo Wôrld') # u("") remplace u"", qui n'est valide qu'en
# Python 2
eggseggs = b("que d'octets !") # de même, b("") remplace le b"" de Python 3

uprint(spamspam) # le print de Python 2 ne se remplace pas facilement...
# uprint a la même sémantique que le print de Python 3
# il est possible d'importer du __future__ le print de
# Python 3 dans Python 2.6, mais on perd alors la
# compatibilité avec Python 2.5 et Pypy.

D'autres objets sont disponibles, voir la documentation du module. Il est aussi possible de ne pas écraser les versions originelles, et d'utiliser juste des ustr, ubytes, etc.

Maintenant, il n'y a plus qu'à réécrire Bristoledit pour profiter de tout ça !

- page 2 de 145 -