• [^] # Re: Pourquoi SCons ?

    Posté par . En réponse à la dépêche SCons 1.0. Évalué à 3.

    Bon, 2to3 ne permet pas d'effectuer toutes les modifications nécessaires automatiquement. Il traite seulement celles qui peuvent être raisonnablement automatisées sans risque d'erreur. De plus, le code produit ne sera pas du code Python 3.0 idiomatique. Exemple, là ou vous utilisiez l.keys() pour récupérer la liste des clés d'un dictionnaire, 2to3 le remplacera par list(l.keys()) car la méthode keys() dans Python 3.0 renvoie une vue (une sorte d'itérateur) plutôt qu'une liste. Cependant, dans beaucoup de cas la vue est suffisante et l'appel à list() ne sera pas nécessaire : vous pourrez l'enlever à la main après le passage de 2to3.

    De toute façon, il n'est pas nécessaire de redévelopper une application from scratch pour qu'elle fonctionne sous Python 3.0 (sauf peut-être si elle est très très mal écrite...). Le langage change sur des points importants, mais la syntaxe et les constructions sémantiques restent quasiment identiques. Le point le plus délicat est probablement la séparation rigoureuse entre chaînes 8 bits (bytes) et chaînes unicode (str), ce qui impose une spécification beaucoup plus claire de vos APIs (sous Python 2.x, il y a des conversions implicites des unes aux autres sous certaines conditions).