# Functions to trace
# ==================
def baz():
pass
def baz2():
pass
def bar():
baz()
baz2()
def log():
pass
def foo():
bar()
log()
def finish():
pass
def insertVideoEntry():
foo()
finish()
# Names to trace
# ==============
names = list(locals())
# Machinery for tracing
# =====================
import os
import sys
def trace(start, *names):
def tracefunc(frame, event, arg):
if event == 'call':
code = frame.f_code
name = code.co_name
if name in names:
level = -start
while frame:
frame = frame.f_back
level += 1
print('{}{}.{}()'.format(
' ' * level,
os.path.splitext(os.path.basename(code.co_filename))[0],
name))
return tracefunc
sys.settrace(tracefunc)
# Demonstration of tracing
# ========================
trace(2, *names)
insertVideoEntry()
IyBGdW5jdGlvbnMgdG8gdHJhY2UKIyA9PT09PT09PT09PT09PT09PT0KCmRlZiBiYXooKToKICAgIHBhc3MKCmRlZiBiYXoyKCk6CiAgICBwYXNzCgpkZWYgYmFyKCk6CiAgICBiYXooKQogICAgYmF6MigpCgpkZWYgbG9nKCk6CiAgICBwYXNzCgpkZWYgZm9vKCk6CiAgICBiYXIoKQogICAgbG9nKCkKCmRlZiBmaW5pc2goKToKICAgIHBhc3MKCmRlZiBpbnNlcnRWaWRlb0VudHJ5KCk6CiAgICBmb28oKQogICAgZmluaXNoKCkKCiMgTmFtZXMgdG8gdHJhY2UKIyA9PT09PT09PT09PT09PQoKbmFtZXMgPSBsaXN0KGxvY2FscygpKQoKIyBNYWNoaW5lcnkgZm9yIHRyYWNpbmcKIyA9PT09PT09PT09PT09PT09PT09PT0KCmltcG9ydCBvcwppbXBvcnQgc3lzCgpkZWYgdHJhY2Uoc3RhcnQsICpuYW1lcyk6CiAgICBkZWYgdHJhY2VmdW5jKGZyYW1lLCBldmVudCwgYXJnKToKICAgICAgICBpZiBldmVudCA9PSAnY2FsbCc6CiAgICAgICAgICAgIGNvZGUgPSBmcmFtZS5mX2NvZGUKICAgICAgICAgICAgbmFtZSA9IGNvZGUuY29fbmFtZQogICAgICAgICAgICBpZiBuYW1lIGluIG5hbWVzOgogICAgICAgICAgICAgICAgbGV2ZWwgPSAtc3RhcnQKICAgICAgICAgICAgICAgIHdoaWxlIGZyYW1lOgogICAgICAgICAgICAgICAgICAgIGZyYW1lID0gZnJhbWUuZl9iYWNrCiAgICAgICAgICAgICAgICAgICAgbGV2ZWwgKz0gMQogICAgICAgICAgICAgICAgcHJpbnQoJ3t9e30ue30oKScuZm9ybWF0KAogICAgICAgICAgICAgICAgICAgICcgICAgJyAqIGxldmVsLAogICAgICAgICAgICAgICAgICAgIG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZShjb2RlLmNvX2ZpbGVuYW1lKSlbMF0sCiAgICAgICAgICAgICAgICAgICAgbmFtZSkpCiAgICAgICAgICAgICAgICByZXR1cm4gdHJhY2VmdW5jCiAgICBzeXMuc2V0dHJhY2UodHJhY2VmdW5jKQoKIyBEZW1vbnN0cmF0aW9uIG9mIHRyYWNpbmcKIyA9PT09PT09PT09PT09PT09PT09PT09PT0KCnRyYWNlKDIsICpuYW1lcykKCmluc2VydFZpZGVvRW50cnkoKQ==