###############################################
|
|
#
|
|
# Odds and ends for debugging
|
|
#
|
|
###############################################
|
|
|
|
def print_call_chain(*args):
|
|
import sys
|
|
print(" ".join(map(str, args)))
|
|
f = sys._getframe(1)
|
|
while f:
|
|
name = f.f_code.co_name
|
|
s = f.f_locals.get('self', None)
|
|
if s:
|
|
c = getattr(s, "__class__", None)
|
|
if c:
|
|
name = "%s.%s" % (c.__name__, name)
|
|
print("Called from: %s %s" % (name, f.f_lineno))
|
|
f = f.f_back
|
|
print("-" * 70)
|