Olivier on blog


Commande Utilisateur pour Distutils ¶
13 octobre 2008, 16:33
Classé dans : Python | Mots-clefs: ,

Distutils, par défaut est relativement “trop” simple. Il ne possède, par défaut, que les commandes : build et install…

Il est cependant facile d’étendre son fonctionnement par l’enregistrement de commande supplémentaire (build_doc, test, install_doc, clean, compile_catalog …).

Ajout d’une nouvelle commande utilisateur :

setup(
    ...
    ...
    cmdclass  =  {'test' : Test}
    ...
)

Où test représente le nom de la cible, Test doit être une classe accessible par le script de setup.

Écriture de la classe liée à la nouvelle cible :

# La nouvelle classe doit hériter de la classe Command du module distutils.
from distutils import Command
class Test(Command):
    description = 'Automatically run the test suite for this module.'
    user_options = [] # Réclamé par distutils

    def initialize_options(self):
        # Réclamé par distutils.
        # Vous pouvez opérer ici des initialisations supplémentaires.
        # Dans la plupart des cas, à laisser vide.
        pass

    def finalize_options(self):
        # Réclamé par distutils.
        # Dans la plupart des cas, à laisser vide.
        pass

    def run(self)
        # Lancement de votre suite de test.
        ...
        ...

Sortie de Distutils :

Une fois ceci réalisé, si vous tapez :

python setup.py --help-commands

Dans la section Extra Commands apparait la nouvelle cible test.

Ainsi,

python setup.py test

exécutera le code décrit dans la méthode run de la classe Test de votre script setup.py

Il est ainsi possible d’étendre à l’infini le comportement de distutils.