Package teamwork :: Package utils :: Module Debugger
[hide private]
[frames] | no frames]

Source Code for Module teamwork.utils.Debugger

  1  import copy 
  2  import string 
  3  import sys 
  4  import time 
  5   
6 -class Debugger:
7 """Generic debugger class 8 @ivar level: attribute, representing debug level (higher means more messages) 9 """
10 - def __init__(self,level=0):
11 self.level = level
12
13 - def message(self,level=1,str=''):
14 """Sends debug messages to the appropriate medium. Override 15 the L{display} method to use different medium 16 """ 17 if level > 10 - self.level: 18 self.display(str)
19
20 - def display(self,str):
21 """Output method. If not overridden, uses standard output""" 22 print str 23 sys.stdout.flush()
24
25 - def __add__(self,delta):
26 debug = copy.copy(self) 27 debug.level = debug.level + delta 28 if debug.level < 0: 29 debug.level = 0 30 return debug
31
32 - def __sub__(self,delta):
33 return self + (-delta)
34
35 - def __cmp__(self,other):
36 if isinstance(other,Debugger): 37 return self.level.__cmp__(other.level) 38 else: 39 return self.level.__cmp__(other)
40
41 - def __repr__(self):
42 return 'Debugger ('+`self.level`+')'
43
44 - def __copy__(self):
45 return self.__class__(self.level)
46
47 -class AccumulateDebugger(Debugger):
48 - def __init__(self,level=0):
49 Debugger.__init__(self,level) 50 self.reset()
51
52 - def display(self,str):
53 self.results.append(str)
54 ## Debugger.display(self,str) 55
56 - def reset(self):
57 self.results = []
58
59 - def __repr__(self):
60 self.reset 61 return string.join(self.results,'\n')
62
63 - def __copy__(self):
64 debug = self.__class__(self.level) 65 debug.results = self.results 66 return debug
67
68 -class TimedDebugger(AccumulateDebugger):
69 - def __init__(self,level=0):
70 AccumulateDebugger.__init__(self,level)
71
72 - def display(self,str):
73 newTime = time.time() 74 diff = int((newTime-self.lastTime)*1000.0) 75 if diff > 0: 76 newStr = str + ' ('+`diff`+' ms)' 77 else: 78 newStr = str 79 self.lastTime = time.time() 80 AccumulateDebugger.display(self,newStr)
81
82 - def reset(self):
83 AccumulateDebugger.reset(self) 84 self.lastTime = time.time()
85
86 - def __copy__(self):
87 debug = self.__class__(self.level) 88 debug.results = self.results 89 debug.lastTime = self.lastTime 90 return debug
91
92 -def quickProfile(cmd,args):
93 import hotshot,hotshot.stats 94 filename = '/tmp/stats' 95 prof = hotshot.Profile(filename) 96 prof.start() 97 apply(cmd,args) 98 prof.stop() 99 prof.close() 100 stats = hotshot.stats.load(filename) 101 stats.strip_dirs() 102 stats.sort_stats('time', 'calls') 103 stats.print_stats()
104