]> SALOME platform Git repositories - tools/eficas.git/blob - Misc/traced.py
Salome HOME
CCAR: merge de la version 1.14 dans la branche principale
[tools/eficas.git] / Misc / traced.py
1 indent = 0
2 indStr = '  '
3
4 def srepr(*argl,**argd):
5   #parse the arguments and create a string representation
6   args = []
7   for item in argl:
8       args.append('%s' % str(item))
9   for key,item in argd.items():
10       args.append('%s=%s' % (key,str(item)))
11   argstr = ','.join(args)   
12   return argstr
13
14 def logfunc(f):
15   def _method(*argl,**argd):
16     global indent
17     print indStr*indent+f.__module__+"."+f.__name__+"("+srepr(*argl,**argd)+")"
18     indent += 1
19     r=f(*argl,**argd)
20     indent -= 1
21     print indStr*indent+str(r)
22     return r
23   return _method
24
25 def logmeth(f):
26   def _method(self,*argl,**argd):
27     global indent
28     print indStr*indent+str(self)+"."+f.__name__+"("+srepr(*argl,**argd)+")"
29     indent += 1
30     r=f(self,*argl,**argd)
31     indent -= 1
32     print indStr*indent+str(r)
33     return r
34   return _method
35
36 if __name__ == "__main__":
37   @logfunc
38   def g(a,b):
39     return a
40   class A:
41     @logmeth
42     def h(self,a):
43       return g(a,a)
44
45   g(1,2)
46   a=A()
47   a.h(1)