Search
 
SCRIPT & CODE EXAMPLE
 

PYTHON

python function guts

import sys
import threading

def show_guts(f):
    sentinel = object()
    gutsdata = threading.local()
    gutsdata.captured_locals = None
    gutsdata.tracing = False

    def trace_locals(frame, event, arg):
        if event.startswith('c_'):  # C code traces, no new hook
            return 
        if event == 'call':  # start tracing only the first call
            if gutsdata.tracing:
                return None
            gutsdata.tracing = True
            return trace_locals
        if event == 'line':  # continue tracing
            return trace_locals

        # event is either exception or return, capture locals, end tracing
        gutsdata.captured_locals = frame.f_locals.copy()
        return None

    def wrapper(*args, **kw):
        # preserve existing tracer, start our trace
        old_trace = sys.gettrace()
        sys.settrace(trace_locals)

        retval = sentinel
        try:
            retval = f(*args, **kw)
        finally:
            # reinstate existing tracer, report, clean up
            sys.settrace(old_trace)
            for key, val in gutsdata.captured_locals.items():
                print '{}: {!r}'.format(key, val)
            if retval is not sentinel:
                print 'Returned: {!r}'.format(retval)
            gutsdata.captured_locals = None
            gutsdata.tracing = False

        return retval

    return wrapper
Comment

PREVIOUS NEXT
Code Example
Python :: python tf.maximum 
Python :: pyplot common labels 
Python :: code suggestion html not working in django-html 
Python :: Which function is used to read single line from file? 
Python :: pyubx 
Python :: pandas increment value on condition 
Python :: how to read comment before the root element of xml python 
Python :: pandas iat 0 
Python :: how to get key stroke pygame 
Python :: python import problem fix 
Python :: python groupby 1d array 
Python :: python loop increment by 2 
Python :: custom save method django 
Python :: python ListObjectsV2 over 1000 
Python :: Different ways to test multiple 
Python :: c vs python speed 
Python :: postgtres settings.py setup with django 
Python :: remot mouce use python 
Python :: python math.factorial algorithm 
Python :: when to register app in django 
Python :: django not configured pylint error fix 
Python :: python print list of keywords 
Python :: Reading Excel and other Microsoft Office files 
Python :: slice all elements from list 
Python :: data structures in python 
Python :: python two list into dictinaray list comprehension 
Python :: python round function 
Python :: spotify meist gespielte lieder sehen 
Python :: split column in exact spot python 
Python :: python selenium firefox handle ssl bypass 
ADD CONTENT
Topic
Content
Source link
Name
7+5 =