--- /dev/null
+"""
+ Le package UTILITES contient les fonctions permettant
+ d'instrumenter un script :
+ - MESSAGE (module message)
+ - SCRUTE (module scrute)
+ - PAUSE (module pause)
+"""
+
+__all__ = [ "ici" , "message" , "scrute" , "pause" ]
+from pause import *
+from ici import *
+from scrute import *
+from message import *
+
+
+
+if __name__ == "__main__" :
+ print dir()
+ print "import du package effectué !"
--- /dev/null
+"""
+Module ici
+----------
+ le module ici propose la fonction ICI pour afficher
+ le fichier courant et le numéro de la ligne courante.
+"""
+
+import sys
+sortie=sys.stderr
+sortie.write( "import de "+__name__+" : $Id$" )
+sortie.write( "\n" )
+
+def ICI(offset=1) :
+
+ """
+ Fonction ICI
+ ------------
+ La fonction ICI affiche sur la stderr, le nom du fichier qui l'appelle,
+ le numéro de la ligne ou elle est appelée et retourne ces deux informations.
+
+ Usage :
+ from ici import ICI
+ ICI()
+ filename,lineno=ICI()
+ """
+
+ sortie=sys.stderr
+
+ sys.stdout.flush()
+ sys.stderr.flush()
+ try :
+ 1/0
+ except :
+
+ ###f=sys.exc_info()[2].tb_frame.f_back
+ ###lineno=f.f_lineno
+ ###code=f.f_code
+ ###filename=code.co_filename
+
+ import traceback
+ trace=traceback.extract_stack()
+
+ indice = len(trace)-(2+offset)
+ if indice<0 : indice=0
+
+
+ assert( indice<len(trace) ),"valeur de offset INVALIDE : "+str(offset)+" taille de la table "+len(trace)
+ file, lineno, funcname, dummytxt = trace[ indice ]
+
+ assert( (indice>0) or (funcname=="?") )
+ if funcname=="?" : funcname = "main"
+
+ sortie.write( file+':'+str(lineno)+': ('+funcname+') : ' )
+ sortie.flush()
+
+ return file,lineno
--- /dev/null
+"""
+Module message
+--------------
+ le module message propose la fonction MESSAGE pour afficher
+ sur la stderr, le texte passé en argument.
+"""
+
+import sys
+sortie=sys.stderr
+sortie.write( "import de "+__name__+" : $Id$" )
+sortie.write( "\n" )
+
+def MESSAGE( text , offset=1 ) :
+
+ """
+ Fonction MESSAGE
+ ----------------
+ La fonction MESSAGE affiche sur la stderr, le texte passé en argument.
+ Elle précise également le nom du fichier et le numéro de la ligne où
+ elle a été appelée.
+
+ Usage :
+ from message import MESSAGE
+
+ MESSAGE("debut du traitement")
+ MESSAGE( "Exception interceptée "+str(e) )
+ """
+
+ sortie=sys.stderr
+
+ import ici
+ ici.ICI( offset )
+ sortie.write( str(text)+'\n' )
+ sortie.flush()
+ return
+
+
+
+def DEBUT() :
+
+ """
+ Fonction DEBUT
+ --------------
+ La fonction DEBUT affiche sur la stderr, le texte signalant le début
+ d'un traitement
+
+ Usage :
+ from message import *
+ DEBUT()
+ """
+
+ MESSAGE("DEBUT du traitement",offset=2)
+ return
+
+
+
+def FIN() :
+
+ """
+ Fonction FIN
+ ------------
+ La fonction FIN affiche sur la stderr, le texte signalant la fin
+ d'un traitement
+
+ Usage :
+ from message import *
+ FIN()
+ """
+
+ print
+ MESSAGE("FIN du traitement",offset=2)
+ return
--- /dev/null
+"""
+Module pause
+------------
+ le module pause propose la fonction PAUSE pour effectuer
+ une attente.
+"""
+
+import sys
+sortie=sys.stderr
+sortie.write( "import de "+__name__+" : $Id$" )
+sortie.write( "\n" )
+
+def PAUSE( secondes ) :
+
+ """
+
+ Fonction PAUSE
+ ----------------
+ La fonction PAUSE permet d'interrompre le traitement pendant un délai
+ passé en argument. La localisation de l'appel est tracée sur la stderr
+
+ Usage :
+ from pause import PAUSE
+
+ PAUSE(secondes=5)
+ """
+
+ if secondes > 0 :
+ sortie.write( "\n\n\n" )
+ import ici
+ ici.ICI()
+
+ sortie.write( "pause de "+str(secondes)+" secondes" )
+ sortie.write( "\n\n\n" )
+ sortie.flush()
+
+ import time
+ time.sleep( secondes )
+
+ sortie.flush()
+
+ return
+
+
+if __name__ == "__main__" :
+ print
+ print "PAUSE(secondes=-1)"
+ PAUSE(secondes=-1)
+ print "PAUSE(secondes=0)"
+ PAUSE(secondes=0)
+ print "PAUSE(secondes=2)"
+ PAUSE(secondes=2)
--- /dev/null
+"""
+Module scrute
+-------------
+ le module scrute propose la fonction SCRUTE qui affiche sur
+ la stderr, la valeur de l'objet (passé en argument)
+ précédée le nom de l'objet.
+"""
+
+import sys
+sortie=sys.stderr
+sortie.write( "import de "+__name__+" : $Id$" )
+sortie.write( "\n" )
+
+
+def SCRUTE( valeur ) :
+
+ """
+ Fonction SCRUTE
+ ---------------
+ La fonction SCRUTE affiche sur la stderr, la valeur (passée en argument)
+ d'une variable précédée de son nom.
+ L'affichage précise également le nom du fichier et le numéro
+ de la ligne où la fonction SCRUTE a été appelée.
+
+ N.B. : le type de la variable doit posséder de préférence une méthode __str__
+
+ Usage :
+ from scrute import SCRUTE
+ r=1.0
+ SCRUTE(r)
+ SCRUTE(r+1)
+ SCRUTE(f(r))
+ Erreur :
+ SCRUTE(r) ; SCRUTE(f(r)) # ==> ERREUR
+ """
+
+ import re
+ import linecache
+ import ici
+
+ filename,lineno=ici.ICI()
+
+ line = linecache.getline( filename, lineno )
+
+ ll=re.sub( "\s*#.*$" , '' ,line)
+ l_occurrences=[]
+ l_occurrences=re.findall( "SCRUTE" , ll )
+ assert(len(l_occurrences)>0),__name__+" : pas de SCRUTE trouvé !"
+ assert(len(l_occurrences)<=1),\
+ __name__+" : "+str(len(l_occurrences))+" SCRUTE sur la même ligne ; c'est LIMITE à 1 !"
+
+ ll=re.sub( "\s*;.*$" , '' ,line)
+ regex='^.*SCRUTE[^(]*\('
+ l=re.sub( regex , '' ,ll)
+ regex='\)[^)]*$'
+ nom_objet=re.sub( regex , '' ,l)
+
+ try :
+ sortie.write( nom_objet+'=' )
+ sortie.write( str(valeur) )
+ sortie.write( " ("+str(type(valeur))+")" )
+ except : pass
+ sortie.write( '\n' )
+ sortie.flush()
+
+ return