From Anthony, btw, for debugging purposes, I recommend the following snippet:
import traceback
def compact_stack():
stack = traceback.extract_stack()
stack = [ '%s:%d'%(x[0], x[1]) for x in stack ]
return "Stack\n" + "\n".join(stack)
I've also used the following as a generic debug() call in Zope code (though any logging package could replace zLOG here):
def debug(*args):
module, line, function, info = traceback.extract_stack()[-2]
if len(args) == 1:
s = pprint.pformat(args[0])
else:
s = pprint.pformat(args)
file = os.path.split(module)
LOG('\n%s\n in %s, line %s, debug info:'%(module, function, line),
INFO, '\n'+s)
That traceback.extract_stack function is so useful :)