Coverage for auttcomp/quicklog.py: 74%

39 statements  

« prev     ^ index     » next       coverage.py v7.6.12, created at 2025-02-24 12:00 -0600

1import sys 

2 

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' 

13 

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" 

20 

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 

31 

32logProxy = log_factory(False) 

33 

34def log(message): 

35 logProxy(message) 

36 

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