Le debug par la force du Q 4


D’abord ça commence avec des print() puis du pdb… Puis le code se retrouve en background, ou on a des threads, des sous-processes, des proxies, son serveur WSGI qui tourne, etc. Et là, il faut sortir les outils de logging, la massue, le truc qui demande 3 ans à config.

Il n’y a pas de juste milieu.

Alors un mec nous a donné son Q pour changer tout ça.

pip install q

Q est typiquement un lib de feignasse :

def bip():
    a = 1
 
    import q
    q(a)
    q(a + 1)
 
bip()

Et pouf, tout est loggé dans /tmp/q :

     0.0s bip: a=1
     0.0s bip: a + 1=2

On peut aussi l’utiliser en décorateur pour tracer l’exécution d’une fonction :

import q
 
@q
def bip():
    a = 1
bip()

Ce qui donne :

 0.0s bip()
 0.0s -> None

Ce n’est bien entendu pas fait pour être laissé dans le code, mais uniquement pour le debug. Néamoins c’est fort pratique :

  • Le fichier de log est setup automatiquement. On peut quand même choisir le dossier avec la variable d’environnement $TMPDIR
  • Le contenu de l’expression est logguée magiquement avec le résultat.
  • En prime on a le temps d’exécution.
  • Le fichier de sortie contient de la coloration syntaxique, s’il vous plait !

Avec Joe, qui génère des .gitignores, c’est ma petite découverte sympa de la rentrée.

4 thoughts on “Le debug par la force du Q

Leave a comment

Des questions Python sans rapport avec l'article ? Posez-les sur IndexError.