Entry 3633

Spyndex

   

Submitted by anonymous on April 23, 2010 at 10:35 p.m.
Language: Python 3. Code size: 863 bytes.

import sys, os
import linecache

def fileNameOf(moduleName):
  return os.path.abspath(sys.modules[moduleName].__file__)


def typeof(value):
  try:
    return value.__class__.__name__
  except:
    return type(value).__name__

def argtypes(funcLocals):
  return dict((k, typeof(v)) for (k, v) in funcLocals.items())

def traceit(frame, event, arg):
    if event == "call":
        lineno = frame.f_lineno
        try:
          filename = frame.f_globals["__file__"]
        except:
          return traceit
        if (filename.endswith(".pyc") or
            filename.endswith(".pyo")):
            filename = filename[:-1]
        name = fileNameOf(frame.f_globals["__name__"])
        line = linecache.getline(filename, lineno)
        print("%s:%s: %s, %s" % (name, lineno, line.rstrip(), argtypes(frame.f_locals)))
    return traceit

sys.settrace(traceit)

This snippet took 0.01 seconds to highlight.

Back to the Entry List or Home.

Delete this entry (admin only).