From f78f06f1b8275c4414922c2d7e41ca7799764358 Mon Sep 17 00:00:00 2001 From: cvs2git Date: Mon, 10 Mar 2003 15:36:24 +0000 Subject: [PATCH] This commit was manufactured by cvs2git to create tag 'ccar_merge_noyau_7_0_13'. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Sprout from master 2003-03-10 15:36:23 UTC eficas 'CCAR: Mise à jour de Noyau, Validation et Catalogue pour la version 7.0.13 d'Aster' Cherrypick from I26 2002-09-02 17:27:12 UTC eficas 'Version Aster 6.3.14': Aster/Cata/Macro/__init__.py Aster/Cata/Macro/ajout_quad_gmsh.py Aster/Cata/Macro/macro_cara_poutre_ops.py Aster/Cata/Macro/pre_gmsh_ops.py Aster/Cata/__init__.py Aster/Cata/asterexec.py Aster/Cata/cata.py Aster/Cata/cata_STA5.py Aster/__init__.py Aster/ahlv100a.comm Aster/totalmod.comm Editeur/faqs.txt Editeur/icons/About24.gif Editeur/icons/Copy24.gif Editeur/icons/Cut24.gif Editeur/icons/Delete24.gif Editeur/icons/Help24.gif Editeur/icons/New24.gif Editeur/icons/Open24.gif Editeur/icons/Paste24.gif Editeur/icons/Save24.gif Editeur/icons/Zoom24.gif Editeur/icons/arrow_left.gif Editeur/icons/arrow_right.gif Editeur/icons/ast-green-ball.gif Editeur/icons/ast-green-los.gif Editeur/icons/ast-green-percent.gif Editeur/icons/ast-green-square.gif Editeur/icons/ast-green-text.gif Editeur/icons/ast-red-ball.gif Editeur/icons/ast-red-los.gif Editeur/icons/ast-red-percent.gif Editeur/icons/ast-red-square.gif Editeur/icons/ast-red-text.gif Editeur/icons/ast-white-percent.gif Editeur/icons/ast-white-square.gif Editeur/icons/ast-white-text.gif Editeur/icons/ast-yel-ball.gif Editeur/icons/ast-yel-los.gif Editeur/icons/ast-yel-percent.gif Editeur/icons/ast-yel-square.gif Editeur/icons/ast-yellow-text.gif Editeur/icons/code_aster.gif Editeur/icons/code_descartes.gif Editeur/icons/code_saturne.gif Editeur/icons/logo_edf.gif Editeur/icons/minusnode.gif Editeur/icons/plusnode.gif Exemples/__init__.py Exemples/cyclops/__init__.py Exemples/cyclops/main.py Exemples/cyclops2/__init__.py Exemples/cyclops2/main.py Exemples/cyclops3/__init__.py Exemples/cyclops3/cata.py Exemples/cyclops3/main.py Exemples/eficas/__init__.py Exemples/eficas/cas.py Exemples/eficas/cata.py Exemples/eficas/fort.11 Exemples/eficas/main.py Exemples/ex1/__init__.py Exemples/ex1/main.py Exemples/ex10/__init__.py Exemples/ex10/main.py Exemples/ex11/__init__.py Exemples/ex12/__init__.py Exemples/ex12/cata.py Exemples/ex12/main.py Exemples/ex13/__init__.py Exemples/ex13/cata.py Exemples/ex13/main.py Exemples/ex14/__init__.py Exemples/ex14/cata.py Exemples/ex14/main.py Exemples/ex15/__init__.py Exemples/ex15/cata.py Exemples/ex15/cata1.py Exemples/ex15/main.py Exemples/ex18/__init__.py Exemples/ex18/totalmod.comm Exemples/ex19/__init__.py Exemples/ex19/ahlv100a.comm Exemples/ex19/main.py Exemples/ex19/titi.comm Exemples/ex2/__init__.py Exemples/ex2/main.py Exemples/ex20/__init__.py Exemples/ex20/ahlv100a.comm Exemples/ex20/main.py Exemples/ex20/prefs.py Exemples/ex21/__init__.py Exemples/ex21/ahlv100a.comm Exemples/ex21/check.py Exemples/ex22/README Exemples/ex22/__init__.py Exemples/ex22/main.py Exemples/ex22/main2.py Exemples/ex22/main3.py Exemples/ex22/titi.comm Exemples/ex22/totalmod.comm Exemples/ex22/toto.comm Exemples/ex22/tutu.comm Exemples/ex22/tyty.comm Exemples/ex23/__init__.py Exemples/ex23/ahlv100a.comm Exemples/ex23/main.py Exemples/ex23/main2.py Exemples/ex23/titi.comm Exemples/ex23/toto.comm Exemples/ex24/__init__.py Exemples/ex24/essai_saturne.py Exemples/ex24/essai_saturne2.py Exemples/ex24/essai_saturne4.py Exemples/ex24/include.py Exemples/ex24/kk.py Exemples/ex24/main.py Exemples/ex24/titi.comm Exemples/ex3/__init__.py Exemples/ex3/main.py Exemples/ex3/parse.py Exemples/ex3/toto.ini Exemples/ex4/__init__.py Exemples/ex4/main.py Exemples/ex4/toto.ini Exemples/ex4/toto.pyth Exemples/ex5/__init__.py Exemples/ex5/main.py Exemples/ex5/titi.ini Exemples/ex5/titi.pyth Exemples/ex5/toto.ini Exemples/ex5/toto.pyth Exemples/ex6/__init__.py Exemples/ex6/main.py Exemples/ex7/__init__.py Exemples/ex7/main.py Exemples/ex8/__init__.py Exemples/ex8/main.py Exemples/ex9/__init__.py Exemples/ex9/main.py Exemples/profile/__init__.py Exemples/profile/main.py Exemples/profile/resul Minicode/cata_saturne2.py Misc/Cyclops.py Misc/__init__.py Misc/timing.py Noyau/N_ASSD.py Noyau/N_BLOC.py Noyau/N_CO.py Noyau/N_ENTITE.py Noyau/N_EVAL.py Noyau/N_Exception.py Noyau/N_FACT.py Noyau/N_FONCTION.py Noyau/N_FORM.py Noyau/N_FORM_ETAPE.py Noyau/N_GEOM.py Noyau/N_JDC_CATA.py Noyau/N_OBJECT.py Noyau/N_REGLE.py Noyau/N_SIMP.py Noyau/N__F.py Noyau/N_utils.py Noyau/__init__.py Noyau/context.py Noyau/nommage.py README Saturne/cata_saturne.py Saturne/editeur.ini Saturne/eficas_saturne.py Saturne/essai_saturne.py Saturne/essai_saturne2.py Saturne/essai_saturne4.py Tools/foztools/__init__.py Tools/foztools/foztools.py Tools/foztools/slider.py Validation/V_AU_MOINS_UN.py Validation/V_A_CLASSER.py Validation/V_ENSEMBLE.py Validation/V_EXCLUS.py Validation/V_JDC.py Validation/V_MCBLOC.py Validation/V_MCFACT.py Validation/V_MCLIST.py Validation/V_PRESENT_ABSENT.py Validation/V_PRESENT_PRESENT.py Validation/V_PROC_ETAPE.py Validation/V_UN_PARMI.py Validation/__init__.py convert/Parserv5/Makefile convert/Parserv5/README Delete: Utilites/__init__.py Utilites/appels.py Utilites/developpeur.py Utilites/execute.py Utilites/funcname.py Utilites/ici.py Utilites/message.py Utilites/modification.py Utilites/pause.py Utilites/scrute.py --- Utilites/__init__.py | 31 ---------- Utilites/appels.py | 118 ----------------------------------- Utilites/developpeur.py | 36 ----------- Utilites/execute.py | 71 --------------------- Utilites/funcname.py | 100 ------------------------------ Utilites/ici.py | 71 --------------------- Utilites/message.py | 90 --------------------------- Utilites/modification.py | 46 -------------- Utilites/pause.py | 64 ------------------- Utilites/scrute.py | 130 --------------------------------------- 10 files changed, 757 deletions(-) delete mode 100644 Utilites/__init__.py delete mode 100644 Utilites/appels.py delete mode 100644 Utilites/developpeur.py delete mode 100644 Utilites/execute.py delete mode 100644 Utilites/funcname.py delete mode 100644 Utilites/ici.py delete mode 100644 Utilites/message.py delete mode 100644 Utilites/modification.py delete mode 100644 Utilites/pause.py delete mode 100644 Utilites/scrute.py diff --git a/Utilites/__init__.py b/Utilites/__init__.py deleted file mode 100644 index d109f6c8..00000000 --- a/Utilites/__init__.py +++ /dev/null @@ -1,31 +0,0 @@ -""" - $Id: __init__.py,v 1.3 2003/02/06 15:11:22 eficas Exp $ - - 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" , "appels" ] - -try : - from developpeur import * -except : - pass -from ici import * -from execute import * -from pause import * -from scrute import * -from message import * -from appels import * -from modification import * - - - -if __name__ == "__main__" : - MODIFICATION( "toto" ) - developpeur.write( dir()+'\n' ) - developpeur.write( "import du package effectué !" +'\n' ) diff --git a/Utilites/appels.py b/Utilites/appels.py deleted file mode 100644 index d4638a4a..00000000 --- a/Utilites/appels.py +++ /dev/null @@ -1,118 +0,0 @@ -""" -Module appels -------------- - le module appels ... -""" - -try : - from developpeur import DEVELOPPEUR -except : - DEVELOPPEUR=None - -def NULL( *l_args, **d_args ) : pass - -if DEVELOPPEUR : - - import developpeur - developpeur.sortie.write( "import de "+__name__+" : $Id$" ) - developpeur.sortie.write( "\n" ) - - import sys - import re - import ici - import funcname - - - def Alonge( chaine , longueur ) : - return chaine+' ' # provisoirement on ne complete pas la chaine - k=len(chaine) - while( k2 : - decalage += '\t' - - # Recherche du plus long nom de fichier pour la mise en forme - lmax=0 - for e in trace[2:-1] : - fic,numero,fonc,inst = e - position=fic+":"+str(numero)+":" - if len(position)>lmax : lmax=len(position) - lmax += 1 # Pour eloigner les informations du nom du fichier - - for e in trace[1:-1] : - fic,numero,fonc,inst = e - position = chaine=fic+":"+str(numero)+":" - position = Alonge( chaine=position , longueur=lmax ) - developpeur.sortie.write( decalage+position) - developpeur.sortie.flush() - fname=funcname.FUNCNAME(fic,numero) - developpeur.sortie.write( str(fname) ) - developpeur.sortie.write( ' : ' ) - developpeur.sortie.write( inst ) - developpeur.sortie.write( '\n' ) - developpeur.sortie.flush() - decalage += "" - - fic,numero,fonc,inst = trace[-1] - position = chaine=fic+":"+str(numero)+":" - position = Alonge( chaine=position , longueur=lmax ) - developpeur.sortie.write( decalage+position) - developpeur.sortie.flush() - fname="__main__" - developpeur.sortie.write( str(fname) ) - developpeur.sortie.write( ' : ' ) - developpeur.sortie.write( inst ) - developpeur.sortie.write( 3*'\n' ) - developpeur.sortie.flush() - - - return - -else : - APPELS = NULL - - - -if __name__ == "__main__" : - TOTO=NULL - TOTO( dec="" ) diff --git a/Utilites/developpeur.py b/Utilites/developpeur.py deleted file mode 100644 index 6fc7bf41..00000000 --- a/Utilites/developpeur.py +++ /dev/null @@ -1,36 +0,0 @@ -""" - Ce module permet de définir la variable DEVELOPPEUR indiquant - que l'utilisateur courant fait partie de la liste des développeurs. - Ce qui lui donne un accès aux versions actives des fonctions - ICI, MESSAGE, SCRUTE, ... définies dans le module Utilites - à condition qu'ils utilisent le module sur une station cli*. - - Pour ajouter un nouveau développeur, il faut modifier le dictionaire - d_dev ci-dessous -""" - - -DEVELOPPEUR=None - -import os -def hostname() : - return os.uname()[1] -group_eficas=108 -group_salome=107 - - -# Test pour identifier un utilisateur développeur d'Eficas -groups = os.getgroups() -test_devel = hostname()[0:3]=="cli" and ( group_eficas in groups or group_salome in groups ) -if test_devel : - d_dev = { 10618 : "antoine" , 10621 : "Pascale" , 20132 : "chris" , 10214 : "salome" } - if os.getuid() in d_dev.keys() : - DEVELOPPEUR=d_dev[ os.getuid() ] - import sys - sortie=sys.stderr - sortie.write( "import de "+__name__+" : $Id$" ) - sortie.write( "\n" ) - - -if __name__ == "__main__" : - print DEVELOPPEUR diff --git a/Utilites/execute.py b/Utilites/execute.py deleted file mode 100644 index 8e18e4d2..00000000 --- a/Utilites/execute.py +++ /dev/null @@ -1,71 +0,0 @@ -""" -Module exec ------------ - le module exec ... -""" - -try : - from developpeur import DEVELOPPEUR -except : - DEVELOPPEUR=None - -if DEVELOPPEUR : - - import message - import scrute - import types - import developpeur - developpeur.sortie.write( "import de "+__name__+" : $Id$" ) - developpeur.sortie.write( "\n" ) - developpeur.sortie.flush() - - - class EXEC : - - def __init__ ( self, texte, contexte=None, verbeux=1 ) : - - assert( type(texte) == types.StringType ) - if contexte == None : - contexte = globals() - - if verbeux : - message.MESSAGE( "execution de "+texte ) - try : - exec texte in contexte - except Exception,e : - if verbeux : - import traceback - traceback.print_exc() - developpeur.sortie.write( "\n\n\n" ) - message.MESSAGE( "Exception interceptee" ) - scrute.SCRUTE( texte ) - scrute.SCRUTE( contexte ) - scrute.SCRUTE( e.__class__.__name__ ) - scrute.SCRUTE( str(e) ) - developpeur.sortie.write( "\n\n\n" ) - developpeur.sortie.flush() - raise - - -else : - class EXEC : pass - - - - -if __name__ == "__main__" : - class Ex(Exception) : pass - def toto() : - print "toto" - raise Ex( "y a bel et bien un erreur" ) - - def tutu() : - s = "toto()" - EXEC( s , verbeux=1) - - try : - tutu() - except Exception,ee : - scrute.SCRUTE(str(ee)) - scrute.SCRUTE(ee.__class__) - pass diff --git a/Utilites/funcname.py b/Utilites/funcname.py deleted file mode 100644 index bd272912..00000000 --- a/Utilites/funcname.py +++ /dev/null @@ -1,100 +0,0 @@ -import re,types -import sys - -sortie=sys.stderr -sortie.write( "import de "+__name__+" : $Id$" ) -sortie.write( "\n" ) - -def get_nombre_de_blancs( str ) : - nombre_de_blancs=0 - if str : - nombre_de_blancs=len(re.sub( "[^ ].*$" , "" , str )) - return nombre_de_blancs - - - -def get_classname( filename, lineno ) : - """ - Cette méthode sert à trouver dans quelle classe (le cas échéant) - se trouve l'instruction numéro lineno dans le fichier filename. - """ - classname = "" - current_func = "" - assert(type(filename)==types.StringType) - ####print "RECHERCHE de la classe de "+filename+" ligne : ",lineno - if lineno>0 : - try : - f=open( filename , 'r' ) - except Exception,e : - print ">>>>",str(e) - sys.stdout.flush() - sys.exit(17) - - s = f.read() - f.close() - l_lines = s.split( '\n' ) - k=1 - inst = l_lines[lineno] - nb_blancs= get_nombre_de_blancs( inst ) - - for line in l_lines : - if k == lineno : - break - elif re.search( "^ *def ", line ) != None : - if get_nombre_de_blancs( line ) < nb_blancs : - current_func=re.sub( "^ *def *" , "" , line ) - current_func=re.sub( " *\(.*$" , "" , current_func ) - elif re.search( "^class ", line ) != None : - classname = re.sub( "^class *" , "" , line ) - classname = re.sub( " *[(:].*$" , "" , classname ) - current_func = "" - elif current_func != "" and re.search( "^[^ \t]", line ) != None : - current_func = "" - classname = "" - k = k+1 - if current_func == "" : current_func="__main__" - return classname ,current_func - - - - -class FUNCNAME : - - """ - Conversion des 3 informations nom de méthode, nom de fichier - numéro de ligne en un nom complet de méthode - """ - - def __init__ ( self , *args ) : - - # le premier argument est optionnel (c'est un nom de fonction - # qu'on peut reconstituer avec le nom du fichier et le numéro de ligne. - k=0 - self.name = None - if len(args)>2 : - if args[k] != "" : self.name = args[k] - k = k+1 - - assert(args[k]!=None) - assert(args[k]!="") - self.filename = args[k] # recuperation du nom du fichier source - - k = k+1 - assert(args[k]>0) - self.lineno = args[k] # recupération du numero de ligne - - self.classname,funcname = get_classname( self.filename, self.lineno ) - if self.name == None : self.name = funcname - ###assert(funcname==self.name or self.name=="main" or self.name=="" ), "attendue '"+self.name+"' - trouvee '"+funcname+"'" - - def __str__ ( self ) : - if self.classname != "" : - name=self.classname+"."+self.name - else : - name=self.name - return name - - -if __name__ == "__main__" : - print 'FUNCNAME("","funcname.py", 68)='+str(FUNCNAME("","funcname.py", 63) ) - print 'FUNCNAME("funcname.py", 68)='+str(FUNCNAME("funcname.py", 63) ) diff --git a/Utilites/ici.py b/Utilites/ici.py deleted file mode 100644 index cd79c6ac..00000000 --- a/Utilites/ici.py +++ /dev/null @@ -1,71 +0,0 @@ -""" -Module ici ----------- - le module ici propose la fonction ICI pour afficher - le fichier courant et le numéro de la ligne courante. -""" - -try : - from developpeur import DEVELOPPEUR -except : - DEVELOPPEUR=None - -def NULL( *l_args, **d_args ) : pass - -if DEVELOPPEUR : - - import developpeur - developpeur.sortie.write( "import de "+__name__+" : $Id$" ) - developpeur.sortie.write( "\n" ) - - import sys - - 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() - - N.B. : la fonction ICI n'est opérante que pour les développeurs - """ - - 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( indice0) or (func_name=="?") ) - if func_name=="?" : func_name = "main" - - if offset >= 0 : - import funcname - developpeur.sortie.write( file_name+':'+str(lineno)+': ('+str(funcname.FUNCNAME(func_name,file_name,lineno))+') : ' ) - developpeur.sortie.flush() - - return file_name,lineno - - -else : - ICI = NULL diff --git a/Utilites/message.py b/Utilites/message.py deleted file mode 100644 index fa94124a..00000000 --- a/Utilites/message.py +++ /dev/null @@ -1,90 +0,0 @@ -""" -Module message --------------- - le module message propose la fonction MESSAGE pour afficher - sur la stderr, le texte passé en argument. - N.B. : la fonction MESSAGE n'est opérante que pour les développeurs - (la variable DEVELOPPEUR doit être définie) -""" - -try : - from developpeur import DEVELOPPEUR -except : - DEVELOPPEUR=None - -def NULL( *l_args, **d_args ) : pass - -if DEVELOPPEUR : - - import developpeur - developpeur.sortie.write( "import de "+__name__+" : $Id$" ) - developpeur.sortie.write( "\n" ) - - import sys - import ici - - 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) ) - """ - - ici.ICI( offset ) - developpeur.sortie.write( str(text)+'\n' ) - developpeur.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() - N.B. : la fonction DEBUT n'est opérante que pour les développeurs - """ - - developpeur.sortie.write( '\n\n' ) - 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() - - N.B. : la fonction FIN n'est opérante que pour les développeurs - """ - - MESSAGE("] FIN du traitement",offset=2) - return - -else : - MESSAGE= NULL - DEBUT = NULL - FIN = NULL diff --git a/Utilites/modification.py b/Utilites/modification.py deleted file mode 100644 index f5f8e6b6..00000000 --- a/Utilites/modification.py +++ /dev/null @@ -1,46 +0,0 @@ -""" -Module intervention -------------------- - Permet aux développeurs de signer leur intervention à - destination des autres développeurs. -""" - -try : - from developpeur import DEVELOPPEUR -except : - DEVELOPPEUR=None - -def NULL( *l_args, **d_args ) : pass - - -if DEVELOPPEUR : - - import developpeur - developpeur.sortie.write( "import de "+__name__+" : $Id$" ) - developpeur.sortie.write( "\n" ) - import ici - - def MODIFICATION( text , offset=1 ) : - - """ - Fonction MODIFICATION - --------------------- - - Usage : - from utilites import MODIFICATION - - utilites.MODIFICATION("auteur,date et intention") - """ - - ici.ICI( offset ) - developpeur.sortie.write( "MODIFICATION "+str(text)+'\n' ) - developpeur.sortie.flush() - return - - -else : - MODIFICATION = NULL - - -if __name__ == "__main__" : - MODIFICATION( "baratin inutile" ) diff --git a/Utilites/pause.py b/Utilites/pause.py deleted file mode 100644 index d7dcafa8..00000000 --- a/Utilites/pause.py +++ /dev/null @@ -1,64 +0,0 @@ -""" -Module pause ------------- - le module pause propose la fonction PAUSE pour effectuer - une attente. -""" -try : - from developpeur import DEVELOPPEUR -except : - DEVELOPPEUR=None - -def NULL( *l_args, **d_args ) : pass - -if DEVELOPPEUR : - - import developpeur - developpeur.sortie.write( "import de "+__name__+" : $Id$" ) - developpeur.sortie.write( "\n" ) - - import sys - import ici - - 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 : - developpeur.sortie.write( "\n\n\n" ) - ici.ICI() - - developpeur.sortie.write( "pause de "+str(secondes)+" secondes" ) - developpeur.sortie.write( "\n\n\n" ) - developpeur.sortie.flush() - - import time - time.sleep( secondes ) - - developpeur.sortie.flush() - - return - -else : - PAUSE = NULL - - -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) diff --git a/Utilites/scrute.py b/Utilites/scrute.py deleted file mode 100644 index 90ade356..00000000 --- a/Utilites/scrute.py +++ /dev/null @@ -1,130 +0,0 @@ -""" -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. - Il propose également la fonction EXAMINE qui détaille sur - la stderr le contenu d'un objet - - N.B. : les fonctions SCRUTE e EXAMINE ne sont opérantes que pour les développeurs - (la variable DEVELOPPEUR doit être définie) -""" - -try : - from developpeur import DEVELOPPEUR -except : - DEVELOPPEUR=None - -def NULL( *l_args, **d_args ) : pass - -if DEVELOPPEUR : - - import developpeur - developpeur.sortie.write( "import de "+__name__+" : $Id$" ) - developpeur.sortie.write( "\n" ) - import re - import linecache - import ici - import sys - - 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 - """ - - - 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 : - developpeur.sortie.write( nom_objet+'=' ) - s=str(valeur) - developpeur.sortie.write( s ) - developpeur.sortie.write( " ("+str(type(valeur))+")" ) - except : pass - developpeur.sortie.write( '\n' ) - developpeur.sortie.flush() - - return - - def makeClassName( ob ) : - import types - if type(ob) == types.InstanceType : - return str(ob.__class__) - else : - return str(type(ob)) - - - def EXAMINE( ob ) : - """ - Affiche sur la developpeur.sortie le contenu d'un objet - - Usage : - class KLASS : pass - import Utilites - object=KLASS() - Utilites.EXAMINE(object) - """ - - appel_EXAMINE=1 - f = sys._getframe( appel_EXAMINE ) - context=f.f_locals - - filename,lineno=ici.ICI() - line = linecache.getline( filename, lineno ) - nom=re.sub( "^.*EXAMINE *\(", "" , line ) - nom=re.sub( " *[,\)].*$", "" , nom ) - nom=re.sub( "\n", "" , nom ) - developpeur.sortie.write( "Examen de "+nom+" de type "+makeClassName(ob)+"\n" ) - - for att in dir(ob) : - st=nom+'.'+att - developpeur.sortie.write( '\t'+st+' = ' ) - developpeur.sortie.flush() - commande="import developpeur;developpeur.sortie.write( str("+st+")+'\\n' )" - try : - exec commande in context - except : - commande="import sys; sys.stderr.write( str("+st+")+'\\n' )" - exec commande in context - - return - - -else : - - SCRUTE = NULL - EXAMINE = NULL -- 2.39.2