65 lines
1.5 KiB
Python
65 lines
1.5 KiB
Python
|
import inspect
|
||
|
import time
|
||
|
|
||
|
try:
|
||
|
# Use colorama for nicer console output.
|
||
|
from colorama import Fore, init
|
||
|
init()
|
||
|
except ImportError:
|
||
|
class Fore(object):
|
||
|
RED = ''
|
||
|
GREEN = ''
|
||
|
YELLOW = ''
|
||
|
RESET = ''
|
||
|
|
||
|
NOTICE = object()
|
||
|
WARNING = object()
|
||
|
SPEED = object()
|
||
|
|
||
|
enable_speed = False
|
||
|
enable_warning = False
|
||
|
enable_notice = False
|
||
|
|
||
|
# callback, interface: level, str
|
||
|
debug_function = None
|
||
|
ignored_modules = ['parsing', 'builtin', 'jedi.builtin', 'jedi.parsing']
|
||
|
|
||
|
|
||
|
def reset_time():
|
||
|
global start_time
|
||
|
start_time = time.time()
|
||
|
|
||
|
|
||
|
def dbg(*args):
|
||
|
""" Looks at the stack, to see if a debug message should be printed. """
|
||
|
if debug_function and enable_notice:
|
||
|
frm = inspect.stack()[1]
|
||
|
mod = inspect.getmodule(frm[0])
|
||
|
if not (mod.__name__ in ignored_modules):
|
||
|
debug_function(NOTICE, 'dbg: ' + ', '.join(str(a) for a in args))
|
||
|
|
||
|
|
||
|
def warning(*args):
|
||
|
if debug_function and enable_warning:
|
||
|
debug_function(WARNING, 'warning: ' + ', '.join(str(a) for a in args))
|
||
|
|
||
|
|
||
|
def speed(name):
|
||
|
if debug_function and enable_speed:
|
||
|
now = time.time()
|
||
|
debug_function(SPEED, 'speed: ' + '%s %s' % (name, now - start_time))
|
||
|
|
||
|
|
||
|
def print_to_stdout(level, str_out):
|
||
|
""" The default debug function """
|
||
|
if level == NOTICE:
|
||
|
col = Fore.GREEN
|
||
|
elif level == WARNING:
|
||
|
col = Fore.RED
|
||
|
else:
|
||
|
col = Fore.YELLOW
|
||
|
print(col + str_out + Fore.RESET)
|
||
|
|
||
|
|
||
|
#debug_function = print_to_stdout
|