Salome HOME
AY a ajouté l'interception de l'exception levée lorsque la chaine passée
[tools/eficas.git] / Utilites / ici.py
index fdfa8c9c4af25f3a101452ecaca5f5b06f87126d..cd79c6aca3a617cbadf9e12e99c90ae9c1aa59bc 100644 (file)
@@ -5,52 +5,67 @@ Module ici
     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" )
+try :
+       from developpeur import DEVELOPPEUR
+except :
+       DEVELOPPEUR=None
 
-def ICI(offset=1) :
+def NULL( *l_args, **d_args  ) : pass
 
-    """
-    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.
+if DEVELOPPEUR :
 
-    Usage :
-        from ici import ICI
-        ICI()
-        filename,lineno=ICI()
-    """
+    import developpeur
+    developpeur.sortie.write( "import de "+__name__+" : $Id$" )
+    developpeur.sortie.write( "\n" )
 
-    sortie=sys.stderr
+    import sys
 
-    sys.stdout.flush()
-    sys.stderr.flush()
-    try :
-        1/0
-    except :
+    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()
 
-        ###f=sys.exc_info()[2].tb_frame.f_back
-        ###lineno=f.f_lineno
-        ###code=f.f_code
-        ###filename=code.co_filename
+        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( indice<len(trace) ),"valeur de offset INVALIDE : "+str(offset)+" taille de la table "+len(trace)
+            file_name, lineno, func_name, dummytxt = trace[ indice ]
+    
+            assert( (indice>0) 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
 
-        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
+else :
+       ICI = NULL