Sam & Max » yapf http://sametmax.com Du code, du cul Sat, 07 Nov 2015 10:56:13 +0000 en-US hourly 1 http://wordpress.org/?v=4.1 Reformater son code avec yapf 16 http://sametmax.com/reformater-son-code-avec-yapf/ http://sametmax.com/reformater-son-code-avec-yapf/#comments Wed, 08 Apr 2015 08:47:21 +0000 http://sametmax.com/?p=16039 En ce moment un outil fait son petit buzz sur hackernews, mais je n’en avais pas parlé jusqu’ici car il n’était pas encore uploadé sur pypi. C’est chose faite :

pip install yapf

Yapf est un reformateur de code, vous lui filez un fichier (ou un dossier à parcourir récursivement), et il reformate le code pour qu’il soit plus lisible, et plus proche du PEP8.

On en parle en ce moment car le code appartient à Google et que le projet est comparé à gofmt le formatteur intégré à la stack Goland dont les Golois nous ventent les mérites avec moult regards condescendant vers tous les autres langages depuis qu’ils l’ont.

Yapf est loin des features de gofmt pour le moment, mais c’est cool d’avoir un point de départ, car c’est vrai que ça manquait. Non pas que ça n’existait pas déjà, mais les tentatives précédentes n’avaient soulevé aucun enthousiasme, et donc pas beaucoup de contrib. Il a fallut, comme d’hab, qu’un concours de celui qui a la plus grosse motive tout ça à coup d’éGOs, si vous voyez ce que je veux dire. On a bien eu pip intégré à Python parce que les codeurs JS se foutaient de notre gueule avec npm installé par défaut.

Bref, pour le moment yapf s’occupe surtout des espaces et de l’indentation, mais il le fait bien.

Soit le programme suivant :

from __future__ import (unicode_literals, absolute_import, print_function,
    division)
 
    def yolo(a,b =None) :
        print ( "Ca fait mal aux yeux hein ?")
 
        a= 1
 
        if a==b :
            return(b)
 
        if True and      False:# c'est chiant n'est-il pas ?
          return "bob"
 
 
 
    WOLOLO = {
        [1, 2, 3, 4],
        [5, 6, 7, 8],
        [9, 10, 11, 12]
    }
 
    OYOOYO = {
        [1, 2, 3, 4],
        [5, 6, 7, 8],
        [9, 10, 11, 12]
    }  # yapf: disable

Un petit coup de :

yapf programme.py

Et pouf, il vous sort :

from __future__ import (unicode_literals, absolute_import, print_function,
                        division)
 
 
def yolo(a, b=None):
  print("Ca fait mal aux yeux hein ?")
 
  a = 1
 
  if a == b:
    return (b)
 
  if True and False:  # c'est chiant n'est-il pas ?
    return "bob"
 
 
WOLOLO = {[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]}
 
OYOOYO = {
    [1, 2, 3, 4],
    [5, 6, 7, 8],
    [9, 10, 11, 12]
}  # yapf: disable

Yapf existe en ligne de commande, mais peut être utilisé comme une lib. En prime, avec -i, il peut modifier le fichier sur place au lieu de juste faire l’output dans le terminal.

J’espère vraiment qu’il va gagner en traction histoire de pouvoir mettre ça dans tous mes hook git et oublier une bonne fois pour toute les guéguerres de formatage, on a d’autres chattes à coder.

]]>
http://sametmax.com/reformater-son-code-avec-yapf/feed/ 16