This repository has been archived by the owner on Dec 4, 2018. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathcommon.py
61 lines (46 loc) · 1.41 KB
/
common.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import re
def color_log(log):
color_red = '\033[91m'
color_green = '\033[92m'
color_yellow = '\033[93m'
color_blue = '\033[94m'
color_end = '\033[0m'
level_colors = (
("error", color_red),
("warning", color_yellow),
("info", color_green),
("debug", color_blue),
)
safe = None
color = None
def xor(a, b):
return bool(a) ^ bool(b)
def _format(value):
if isinstance(value, float):
return "%0.3f"
else:
return "%s"
def message_args(args):
if not args:
return "", []
if (
not isinstance(args[0], str) or
xor(len(args) > 1, "%" in args[0])
):
return " ".join([_format(v) for v in args]), args
return args[0], args[1:]
def _message(args, color):
message, args = message_args(args)
return "".join([color, message, color_end])
def _args(args):
args = message_args(args)[1]
return args
def build_lambda(safe, color):
return lambda *args, **kwargs: getattr(log, safe)(
_message(args, color), *_args(args), **kwargs)
for (level, color) in level_colors:
safe = "%s_" % level
setattr(log, safe, getattr(log, level))
setattr(log, level, build_lambda(safe, color))
def clean_whitespace(text):
return re.sub(r"[\s]+", " ", text).strip()