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
|
import codecs
import sys
# https://docs.python.org/3/library/codecs.html#standard-encodings
ENCODING = None
ERROR = 31
WARNING = 33
STATUS = 32
NORMAL = 0
ALT = 90
def enc_value(value, enc):
if type(value) is bytes:
if enc is not None:
value = codecs.encode(value, enc)
elif ENCODING is not None:
value = codecs.encode(value, ENCODING)
value = str(value)[2:-1] # strip b''
return str(value)
def generic_log(*values, sep, end, file, flush, enc, color):
string = sep.join([ enc_value(x, enc) for x in values ])
print(f'\033[{color}m{string}\033[0m', end=end, file=file, flush=flush)
# For library internal use
def ilog(*values, sep=' ', end='\n', file=sys.stderr, flush=True, enc=None, color=STATUS):
generic_log(*values, sep=sep, end=end, file=file, flush=flush, enc=enc, color=color)
# For external use in user script (via print = elog)
def elog(*values, sep=' ', end='\n', file=sys.stdout, flush=True, enc=None, color=ALT):
generic_log(*values, sep=sep, end=end, file=file, flush=flush, enc=enc, color=color)
|