La sezione descrive i passaggi per creare un nuovo comando Distutils.
Un nuovo comando vive in un modulo nel package
distutils.command. C'è un semplice template nella directory
chiamata command_template. Si copi questo file in un nuovo
modulo con lo stesso nome del nuovo comando che si sta implementando.
Questo modulo dovrebbe implementare una classe con lo stesso nome del
modulo (e del comando). Così, per esempio, per creare il comando
peel_banana
(cosicché gli utenti possano eseguire
"setup.py peel_banana"), si deve copiare command_template
in distutils/command/peel_banana.py, quindi lo si deve editare
in modo da implementare la classe peel_banana, una sotto
classe di distutils.cmd.Command.
Sottoclassi di Command definiranno i seguenti metodi.
I) |
) |
) |
sub_commands formalizza la notazione di una ``famiglia'' di
comandi, per esempio install
come padre con sotto comandi
install_lib
, install_headers
, etc.. Il padre di una
famiglia di comandi definisce sub_commands come un attributo di
classe; è una lista di tuple doppie "(nome comando, predicato)",
con command_name una stringa e predicate un metodo non
legato, una stringa o None.
predicate è un metodo di un comando di base che determina quale
tra i corrispondenti comandi è applicabile nella situazione corrente
(per esempio install_headers
è applicabile solo se ci sono file
di intestazioni C da installare). Se predicate ha il valore
None, quel comando è sempre applicabile.
sub_commands è solitamente definito alla *fine* di una classe,
perché i predicati possono essere metodi non legati, che devono essere
già stati definiti. L'esempio canonico è il comando
install
.
Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.