Coverage for auttcomp/quicklog.py: 74%
39 statements
« prev ^ index » next coverage.py v7.6.12, created at 2025-02-24 12:00 -0600
« prev ^ index » next coverage.py v7.6.12, created at 2025-02-24 12:00 -0600
1import sys
3class ConsoleColor:
4 HEADER = '\033[95m'
5 BLUE = '\033[94m'
6 CYAN = '\033[96m'
7 GREEN = '\033[92m'
8 WARNING = '\033[93m'
9 FAIL = '\033[91m'
10 BOLD = '\033[1m'
11 UNDERLINE = '\033[4m'
12 END = '\033[0m'
14def source(frame):
15 target = frame.f_back.f_back.f_locals
16 if isinstance(target, dict) and 'self' in target.keys() and isinstance(target['self'], object):
17 return target['self'].__class__.__qualname__
18 else:
19 return f"global"
21def log_factory(enabled, prefix=""):
22 def invoke(message):
23 if enabled:
24 source_class = source(sys._getframe())
25 scm = f"[{ source_class }]"
26 bold = f"{ConsoleColor.BOLD}" if source_class == "global" else ""
27 whole_prefix = f"{ConsoleColor.CYAN}{prefix} {bold}{scm}".ljust(30, " ")
28 col = ConsoleColor.CYAN + bold
29 print(f"\n{col}{whole_prefix}{len(col) * " "} > {ConsoleColor.END} {str(message)}", end="")
30 return invoke
32logProxy = log_factory(False)
34def log(message):
35 logProxy(message)
37def tracelog(prefix, enable=False):
38 def func_wrap(func):
39 def logging_wrapper(*args, **kargs):
40 global logProxy
41 logProxy = log_factory(enable, prefix)
42 logProxy(f"{ConsoleColor.GREEN}START{ConsoleColor.END}")
43 try:
44 func(*args, **kargs)
45 finally:
46 logProxy(f"{ConsoleColor.GREEN}END{ConsoleColor.END}")
47 return logging_wrapper
48 return func_wrap