-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtermcolor.py
151 lines (124 loc) · 4.46 KB
/
termcolor.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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
# Copyright (C) 2008-2009 Konstantin Lepa <[email protected]>.
#
# This file is part of termcolor.
#
# termcolor is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the Free
# Software Foundation; either version 3, or (at your option) any later
# version.
#
# termcolor is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
# more details.
#
# You should have received a copy of the GNU General Public License
# along with termcolor. If not, see <http://www.gnu.org/licenses/>.
"""ANSII Color formatting for output in terminal."""
import os
__ALL__ = [ 'colored' ]
ATTRIBUTES = dict(
list(zip([
'bold',
'dark',
'',
'underline',
'blink',
'',
'reverse',
'concealed'
],
list(range(1, 9))
))
)
del ATTRIBUTES['']
HIGHLIGHTS = dict(
list(zip([
'on_grey',
'on_red',
'on_green',
'on_yellow',
'on_blue',
'on_magenta',
'on_cyan',
'on_white'
],
list(range(40, 48))
))
)
COLORS = dict(
list(zip([
'grey',
'red',
'green',
'yellow',
'blue',
'magenta',
'cyan',
'white',
],
list(range(30, 38))
))
)
RESET = '\033[0m'
def colored(text, color=None, on_color=None, attrs=None):
"""Colorize text.
Available text colors:
red, green, yellow, blue, magenta, cyan, white.
Available text highlights:
on_red, on_green, on_yellow, on_blue, on_magenta, on_cyan, on_white.
Available attributes:
bold, dark, underline, blink, reverse, concealed.
Example:
colored('Hello, World!', 'red', 'on_grey', ['blue', 'blink'])
colored('Hello, World!', 'green')
"""
if os.getenv('ANSI_COLORS_DISABLED') is None:
fmt_str = '\033[%dm%s'
if color is not None:
text = fmt_str % (COLORS[color], text)
if on_color is not None:
text = fmt_str % (HIGHLIGHTS[on_color], text)
if attrs is not None:
for attr in attrs:
text = fmt_str % (ATTRIBUTES[attr], text)
text += RESET
return text
if __name__ == '__main__':
print(('Current terminal type: ', os.getenv('TERM')))
print('Test basic colors:')
print((colored('Grey color', 'grey')))
print((colored('Red color', 'red')))
print((colored('Green color', 'green')))
print((colored('Yellow color', 'yellow')))
print((colored('Blue color', 'blue')))
print((colored('Magenta color', 'magenta')))
print((colored('Cyan color', 'cyan')))
print((colored('White color', 'white')))
print(('-' * 78))
print('Test highlights:')
print((colored('On grey color', on_color='on_grey')))
print((colored('On red color', on_color='on_red')))
print((colored('On green color', on_color='on_green')))
print((colored('On yellow color', on_color='on_yellow')))
print((colored('On blue color', on_color='on_blue')))
print((colored('On magenta color', on_color='on_magenta')))
print((colored('On cyan color', on_color='on_cyan')))
print((colored('On white color', color='grey', on_color='on_white')))
print(('-' * 78))
print('Test attributes:')
print((colored('Bold grey color', 'grey', attrs=['bold'])))
print((colored('Dark red color', 'red', attrs=['dark'])))
print((colored('Underline green color', 'green', attrs=['underline'])))
print((colored('Blink yellow color', 'yellow', attrs=['blink'])))
print((colored('Reversed blue color', 'blue', attrs=['reverse'])))
print((colored('Concealed Magenta color', 'magenta', attrs=['concealed'])))
print((colored('Bold underline reverse cyan color', 'cyan',
attrs=['bold', 'underline', 'reverse'])))
print((colored('Dark blink concealed white color', 'white',
attrs=['dark', 'blink', 'concealed'])))
print(('-' * 78))
print('Test mixing:')
print((colored('Underline red on grey color', 'red', 'on_grey',
['underline'])))
print((colored('Reversed green on red color', 'green', 'on_red', ['reverse'])))