"pipes" — Interface au *pipelines* shell
****************************************

**Code source :** Lib/pipes.py

======================================================================

Le module "pipes" définit une classe permettant d'abstraire le concept
de *pipeline* --- une séquence de convertisseurs d'un fichier vers un
autre.

Du fait que le module utilise les lignes de commandes **/bin/sh**, un
shell POSIX ou compatible est requis pour "os.system()" et
"os.popen()".

Le module "pipes" définit la classe suivante :

class pipes.Template

   Une abstraction d'un *pipeline*.

Exemple :

   >>> import pipes
   >>> t = pipes.Template()
   >>> t.append('tr a-z A-Z', '--')
   >>> f = t.open('pipefile', 'w')
   >>> f.write('hello world')
   >>> f.close()
   >>> open('pipefile').read()
   'HELLO WORLD'


L'Objet *Template*
==================

Les méthodes de l'objet *Template* :

Template.reset()

   Réinitialise un modèle de *pipeline* à son état initial.

Template.clone()

   Renvoie un nouveau modèle de *pipeline*, équivalent.

Template.debug(flag)

   Si *flag* est vrai, active le débogage. Sinon, le désactive. Quand
   le débogage est actif, les commandes à exécuter seront affichée et
   le shell est pourvu de la commande "set -x" afin d'être plus
   verbeux.

Template.append(cmd, kind)

   Ajoute une nouvelle action à la fin. La variable *cmd* doit être
   une commande *bourne shell* valide. La variable *kind* est composée
   de deux lettres.

   La première lettre peut soit être "'-'" (qui signifie que la
   commande lit sa sortie standard), soit "'f'" (qui signifie que la
   commande lit un fichier donné par la ligne de commande), soit "'.'"
   (qui signifie que la commande ne lit pas d'entrée, et donc doit
   être la première.)

   De même, la seconde lettre peut soit être "'-'" (qui signifie que
   la commande écrit sur la sortie standard), soit "'f'" (qui signifie
   que la commande écrit sur un fichier donné par la ligne de
   commande), soit "'.'" (qui signifie que la commande n'écrit rien,
   et donc doit être la dernière.)

Template.prepend(cmd, kind)

   Ajoute une nouvelle action au début. Voir "append()" pour plus
   d'explications sur les arguments.

Template.open(file, mode)

   Renvoie un objet *file-like*, ouvert à *file*, mais permettant
   d'écrire vers le *pipeline* ou de lire depuis celui-ci. À noter que
   seulement un des deux ('r' ou 'w') peut être donné.

Template.copy(infile, outfile)

   Copie *infile* vers *outfile* au travers du *pipe*.
