11# see https://stackoverflow.com/questions/287871/how-do-i-print-colored-text-to-the-terminal
2+ # and https://stackoverflow.com/questions/2048509/how-to-echo-with-different-colors-in-the-windows-command-line
23import os
34from functools import wraps
45
78 os .system ("" )
89
910class Colors :
10- HEADER = '\033 [95m'
11- OKBLUE = '\033 [94m'
12- OKCYAN = '\033 [96m'
13- OKGREEN = '\033 [92m'
14- WARNING = '\033 [93m'
15- FAIL = '\033 [91m'
16- END = '\033 [0m'
11+ WHITE = '\033 [97m'
12+ CYAN = '\033 [96m'
13+ MAGENTA = '\033 [95m'
14+ BLUE = '\033 [94m'
15+ YELLOW = '\033 [93m'
16+ GREEN = '\033 [92m'
17+ RED = '\033 [91m'
18+ BLACK = '\033 [90m'
19+
20+ class Styles :
1721 BOLD = '\033 [1m'
22+ DIM = '\033 [2m'
23+ ITALIC = '\033 [3m'
1824 UNDERLINE = '\033 [4m'
1925
26+ END = '\033 [0m'
27+
28+ class Modify :
29+ def __init__ (self , color = '' , style = '' ):
30+ self .color = color
31+ self .style = style
32+
33+ def __enter__ (self ):
34+ print (self .color + self .style , end = "" )
35+ return self
36+
37+ def __exit__ (self , exc_type , exc_val , exc_tb ):
38+ print (END , end = "" )
39+ return False
40+
2041def guard (f ):
2142 @wraps (f )
2243 def g (* args , ** kwargs ):
2344 try :
2445 f (* args , ** kwargs )
25- # we want to catch SystemExit and KeyboardInterrupt too
26- except BaseException as e :
27- print (Colors .END , end = "" )
28- raise e
46+ finally :
47+ print (END , end = "" )
2948 return g
3049
31- @guard
50+ def with_modifiers (* modifiers ):
51+ def util (f ):
52+ @wraps (f )
53+ @guard
54+ def g (* args , ** kwargs ):
55+ print (* modifiers , sep = "" , end = "" )
56+ f (* args , ** kwargs )
57+ return g
58+ return util
59+
60+ @with_modifiers (Colors .RED )
3261def error (* args , ** kwargs ):
33- print (Colors .FAIL , end = "" )
3462 print (* args , ** kwargs )
35- print (Colors .END , end = "" )
3663
37- @guard
64+ @with_modifiers ( Colors . GREEN )
3865def success (* args , ** kwargs ):
39- print (Colors .OKGREEN , end = "" )
4066 print (* args , ** kwargs )
41- print (Colors .END , end = "" )
4267
43- @guard
68+ @with_modifiers ( Colors . YELLOW )
4469def warning (* args , ** kwargs ):
45- print (Colors .WARNING , end = "" )
4670 print (* args , ** kwargs )
47- print (Colors .END , end = "" )
71+
72+ @with_modifiers (Styles .BOLD )
73+ def bold (* args , ** kwargs ):
74+ print (* args , ** kwargs )
75+
76+ @with_modifiers (Colors .MAGENTA )
77+ def header (* args , ** kwargs ):
78+ print (* args , ** kwargs )
79+
80+ if __name__ == "__main__" :
81+ with Modify (Colors .CYAN , Styles .ITALIC ):
82+ print ("asd" )
0 commit comments