Salome HOME
PN : correction du point 1 de la fiche de bug A02003-188
[tools/eficas.git] / Utilites / appels.py
1 """
2 Module appels
3 -------------
4     le module appels ...
5 """
6
7 try :
8         from developpeur import DEVELOPPEUR
9 except :
10         DEVELOPPEUR=None
11
12 def NULL( *l_args, **d_args  ) : pass
13
14 if DEVELOPPEUR :
15
16     import developpeur
17     developpeur.sortie.write( "import de "+__name__+" : $Id$" )
18     developpeur.sortie.write( "\n" )
19
20     import sys
21     import re
22     import ici
23     import funcname
24     
25     
26     def Alonge( chaine , longueur ) :
27         return chaine+' ' # provisoirement on ne complete pas la chaine
28         k=len(chaine)
29         while( k<longueur ) :
30             chaine = chaine + ' '
31             k+=1
32         return chaine
33     
34     def APPELS( dec="" ) :
35     
36         """
37         Fonction APPELS
38         ---------------
39         La fonction APPELS ...
40         ..
41     
42     
43         Usage :
44             from appels import APPELS
45             APPELS()
46         """
47     
48     ### try :
49     ###     1/0
50     ### except :
51     ###     import traceback
52     ###     trace=traceback.extract_stack()
53     ###     print trace
54     
55         nombre_de_blancs=None
56     
57         import traceback
58         trace=traceback.extract_stack()
59     
60         trace.reverse()
61     
62         decalage=dec
63         sys.stderr.flush()
64         sys.stdout.flush()
65     
66         developpeur.sortie.write( 3*'\n' )
67         developpeur.sortie.write( decalage )
68         developpeur.sortie.write( "LISTE des appels" )
69         developpeur.sortie.write( '\n' )
70         developpeur.sortie.flush()
71         if len(trace)>2 :
72             decalage += '\t'
73     
74             # Recherche du plus long nom de fichier pour la mise en forme
75             lmax=0
76             for e in trace[2:-1] :
77                 fic,numero,fonc,inst = e
78                 position=fic+":"+str(numero)+":"
79             if len(position)>lmax : lmax=len(position)
80             lmax += 1 # Pour eloigner les informations du nom du fichier
81     
82             for e in trace[1:-1] :
83                 fic,numero,fonc,inst = e
84                 position = chaine=fic+":"+str(numero)+":"
85                 position = Alonge( chaine=position , longueur=lmax )
86                 developpeur.sortie.write( decalage+position)
87                 developpeur.sortie.flush()
88                 fname=funcname.FUNCNAME(fic,numero)
89                 developpeur.sortie.write( str(fname) )
90                 developpeur.sortie.write( ' : ' )
91                 developpeur.sortie.write( inst )
92                 developpeur.sortie.write( '\n' )
93                 developpeur.sortie.flush()
94                 decalage += ""
95     
96         fic,numero,fonc,inst = trace[-1]
97         position = chaine=fic+":"+str(numero)+":"
98         position = Alonge( chaine=position , longueur=lmax )
99         developpeur.sortie.write( decalage+position)
100         developpeur.sortie.flush()
101         fname="__main__"
102         developpeur.sortie.write( str(fname) )
103         developpeur.sortie.write( ' : ' )
104         developpeur.sortie.write( inst )
105         developpeur.sortie.write( 3*'\n' )
106         developpeur.sortie.flush()
107     
108     
109         return
110
111 else :
112         APPELS = NULL
113
114
115
116 if __name__ == "__main__" :
117     TOTO=NULL
118     TOTO(  dec="" )