Salome HOME
Ajout du package Utilites contenant les modules :
[tools/eficas.git] / Utilites / ici.py
1 """
2 Module ici
3 ----------
4     le module ici propose la fonction ICI pour afficher
5     le fichier courant et le numéro de la ligne courante.
6 """
7
8 import sys
9 sortie=sys.stderr
10 sortie.write( "import de "+__name__+" : $Id$" )
11 sortie.write( "\n" )
12
13 def ICI(offset=1) :
14
15     """
16     Fonction ICI
17     ------------
18     La fonction ICI affiche sur la stderr, le nom du fichier qui l'appelle,
19     le numéro de la ligne ou elle est appelée et retourne ces deux informations.
20
21     Usage :
22         from ici import ICI
23         ICI()
24         filename,lineno=ICI()
25     """
26
27     sortie=sys.stderr
28
29     sys.stdout.flush()
30     sys.stderr.flush()
31     try :
32         1/0
33     except :
34
35         ###f=sys.exc_info()[2].tb_frame.f_back
36         ###lineno=f.f_lineno
37         ###code=f.f_code
38         ###filename=code.co_filename
39
40         import traceback
41         trace=traceback.extract_stack()
42
43         indice = len(trace)-(2+offset)
44         if indice<0 : indice=0
45
46
47         assert( indice<len(trace) ),"valeur de offset INVALIDE : "+str(offset)+" taille de la table "+len(trace)
48         file, lineno, funcname, dummytxt = trace[ indice ]
49
50         assert( (indice>0) or (funcname=="?") )
51         if funcname=="?" : funcname = "main"
52
53         sortie.write( file+':'+str(lineno)+': ('+funcname+') : ' )
54         sortie.flush()
55
56     return file,lineno