Mercurial > libervia-backend
comparison sat_frontends/tools/css_color.py @ 3028:ab2696e34d29
Python 3 port:
/!\ this is a huge commit
/!\ starting from this commit, SàT is needs Python 3.6+
/!\ SàT maybe be instable or some feature may not work anymore, this will improve with time
This patch port backend, bridge and frontends to Python 3.
Roughly this has been done this way:
- 2to3 tools has been applied (with python 3.7)
- all references to python2 have been replaced with python3 (notably shebangs)
- fixed files not handled by 2to3 (notably the shell script)
- several manual fixes
- fixed issues reported by Python 3 that where not handled in Python 2
- replaced "async" with "async_" when needed (it's a reserved word from Python 3.7)
- replaced zope's "implements" with @implementer decorator
- temporary hack to handle data pickled in database, as str or bytes may be returned,
to be checked later
- fixed hash comparison for password
- removed some code which is not needed anymore with Python 3
- deactivated some code which needs to be checked (notably certificate validation)
- tested with jp, fixed reported issues until some basic commands worked
- ported Primitivus (after porting dependencies like urwid satext)
- more manual fixes
author | Goffi <goffi@goffi.org> |
---|---|
date | Tue, 13 Aug 2019 19:08:41 +0200 |
parents | 003b8b4b56a7 |
children | 9d0df638c8b4 |
comparison
equal
deleted
inserted
replaced
3027:ff5bcb12ae60 | 3028:ab2696e34d29 |
---|---|
21 | 21 |
22 log = getLogger(__name__) | 22 log = getLogger(__name__) |
23 | 23 |
24 | 24 |
25 CSS_COLORS = { | 25 CSS_COLORS = { |
26 u"black": u"000000", | 26 "black": "000000", |
27 u"silver": u"c0c0c0", | 27 "silver": "c0c0c0", |
28 u"gray": u"808080", | 28 "gray": "808080", |
29 u"white": u"ffffff", | 29 "white": "ffffff", |
30 u"maroon": u"800000", | 30 "maroon": "800000", |
31 u"red": u"ff0000", | 31 "red": "ff0000", |
32 u"purple": u"800080", | 32 "purple": "800080", |
33 u"fuchsia": u"ff00ff", | 33 "fuchsia": "ff00ff", |
34 u"green": u"008000", | 34 "green": "008000", |
35 u"lime": u"00ff00", | 35 "lime": "00ff00", |
36 u"olive": u"808000", | 36 "olive": "808000", |
37 u"yellow": u"ffff00", | 37 "yellow": "ffff00", |
38 u"navy": u"000080", | 38 "navy": "000080", |
39 u"blue": u"0000ff", | 39 "blue": "0000ff", |
40 u"teal": u"008080", | 40 "teal": "008080", |
41 u"aqua": u"00ffff", | 41 "aqua": "00ffff", |
42 u"orange": u"ffa500", | 42 "orange": "ffa500", |
43 u"aliceblue": u"f0f8ff", | 43 "aliceblue": "f0f8ff", |
44 u"antiquewhite": u"faebd7", | 44 "antiquewhite": "faebd7", |
45 u"aquamarine": u"7fffd4", | 45 "aquamarine": "7fffd4", |
46 u"azure": u"f0ffff", | 46 "azure": "f0ffff", |
47 u"beige": u"f5f5dc", | 47 "beige": "f5f5dc", |
48 u"bisque": u"ffe4c4", | 48 "bisque": "ffe4c4", |
49 u"blanchedalmond": u"ffebcd", | 49 "blanchedalmond": "ffebcd", |
50 u"blueviolet": u"8a2be2", | 50 "blueviolet": "8a2be2", |
51 u"brown": u"a52a2a", | 51 "brown": "a52a2a", |
52 u"burlywood": u"deb887", | 52 "burlywood": "deb887", |
53 u"cadetblue": u"5f9ea0", | 53 "cadetblue": "5f9ea0", |
54 u"chartreuse": u"7fff00", | 54 "chartreuse": "7fff00", |
55 u"chocolate": u"d2691e", | 55 "chocolate": "d2691e", |
56 u"coral": u"ff7f50", | 56 "coral": "ff7f50", |
57 u"cornflowerblue": u"6495ed", | 57 "cornflowerblue": "6495ed", |
58 u"cornsilk": u"fff8dc", | 58 "cornsilk": "fff8dc", |
59 u"crimson": u"dc143c", | 59 "crimson": "dc143c", |
60 u"darkblue": u"00008b", | 60 "darkblue": "00008b", |
61 u"darkcyan": u"008b8b", | 61 "darkcyan": "008b8b", |
62 u"darkgoldenrod": u"b8860b", | 62 "darkgoldenrod": "b8860b", |
63 u"darkgray": u"a9a9a9", | 63 "darkgray": "a9a9a9", |
64 u"darkgreen": u"006400", | 64 "darkgreen": "006400", |
65 u"darkgrey": u"a9a9a9", | 65 "darkgrey": "a9a9a9", |
66 u"darkkhaki": u"bdb76b", | 66 "darkkhaki": "bdb76b", |
67 u"darkmagenta": u"8b008b", | 67 "darkmagenta": "8b008b", |
68 u"darkolivegreen": u"556b2f", | 68 "darkolivegreen": "556b2f", |
69 u"darkorange": u"ff8c00", | 69 "darkorange": "ff8c00", |
70 u"darkorchid": u"9932cc", | 70 "darkorchid": "9932cc", |
71 u"darkred": u"8b0000", | 71 "darkred": "8b0000", |
72 u"darksalmon": u"e9967a", | 72 "darksalmon": "e9967a", |
73 u"darkseagreen": u"8fbc8f", | 73 "darkseagreen": "8fbc8f", |
74 u"darkslateblue": u"483d8b", | 74 "darkslateblue": "483d8b", |
75 u"darkslategray": u"2f4f4f", | 75 "darkslategray": "2f4f4f", |
76 u"darkslategrey": u"2f4f4f", | 76 "darkslategrey": "2f4f4f", |
77 u"darkturquoise": u"00ced1", | 77 "darkturquoise": "00ced1", |
78 u"darkviolet": u"9400d3", | 78 "darkviolet": "9400d3", |
79 u"deeppink": u"ff1493", | 79 "deeppink": "ff1493", |
80 u"deepskyblue": u"00bfff", | 80 "deepskyblue": "00bfff", |
81 u"dimgray": u"696969", | 81 "dimgray": "696969", |
82 u"dimgrey": u"696969", | 82 "dimgrey": "696969", |
83 u"dodgerblue": u"1e90ff", | 83 "dodgerblue": "1e90ff", |
84 u"firebrick": u"b22222", | 84 "firebrick": "b22222", |
85 u"floralwhite": u"fffaf0", | 85 "floralwhite": "fffaf0", |
86 u"forestgreen": u"228b22", | 86 "forestgreen": "228b22", |
87 u"gainsboro": u"dcdcdc", | 87 "gainsboro": "dcdcdc", |
88 u"ghostwhite": u"f8f8ff", | 88 "ghostwhite": "f8f8ff", |
89 u"gold": u"ffd700", | 89 "gold": "ffd700", |
90 u"goldenrod": u"daa520", | 90 "goldenrod": "daa520", |
91 u"greenyellow": u"adff2f", | 91 "greenyellow": "adff2f", |
92 u"grey": u"808080", | 92 "grey": "808080", |
93 u"honeydew": u"f0fff0", | 93 "honeydew": "f0fff0", |
94 u"hotpink": u"ff69b4", | 94 "hotpink": "ff69b4", |
95 u"indianred": u"cd5c5c", | 95 "indianred": "cd5c5c", |
96 u"indigo": u"4b0082", | 96 "indigo": "4b0082", |
97 u"ivory": u"fffff0", | 97 "ivory": "fffff0", |
98 u"khaki": u"f0e68c", | 98 "khaki": "f0e68c", |
99 u"lavender": u"e6e6fa", | 99 "lavender": "e6e6fa", |
100 u"lavenderblush": u"fff0f5", | 100 "lavenderblush": "fff0f5", |
101 u"lawngreen": u"7cfc00", | 101 "lawngreen": "7cfc00", |
102 u"lemonchiffon": u"fffacd", | 102 "lemonchiffon": "fffacd", |
103 u"lightblue": u"add8e6", | 103 "lightblue": "add8e6", |
104 u"lightcoral": u"f08080", | 104 "lightcoral": "f08080", |
105 u"lightcyan": u"e0ffff", | 105 "lightcyan": "e0ffff", |
106 u"lightgoldenrodyellow": u"fafad2", | 106 "lightgoldenrodyellow": "fafad2", |
107 u"lightgray": u"d3d3d3", | 107 "lightgray": "d3d3d3", |
108 u"lightgreen": u"90ee90", | 108 "lightgreen": "90ee90", |
109 u"lightgrey": u"d3d3d3", | 109 "lightgrey": "d3d3d3", |
110 u"lightpink": u"ffb6c1", | 110 "lightpink": "ffb6c1", |
111 u"lightsalmon": u"ffa07a", | 111 "lightsalmon": "ffa07a", |
112 u"lightseagreen": u"20b2aa", | 112 "lightseagreen": "20b2aa", |
113 u"lightskyblue": u"87cefa", | 113 "lightskyblue": "87cefa", |
114 u"lightslategray": u"778899", | 114 "lightslategray": "778899", |
115 u"lightslategrey": u"778899", | 115 "lightslategrey": "778899", |
116 u"lightsteelblue": u"b0c4de", | 116 "lightsteelblue": "b0c4de", |
117 u"lightyellow": u"ffffe0", | 117 "lightyellow": "ffffe0", |
118 u"limegreen": u"32cd32", | 118 "limegreen": "32cd32", |
119 u"linen": u"faf0e6", | 119 "linen": "faf0e6", |
120 u"mediumaquamarine": u"66cdaa", | 120 "mediumaquamarine": "66cdaa", |
121 u"mediumblue": u"0000cd", | 121 "mediumblue": "0000cd", |
122 u"mediumorchid": u"ba55d3", | 122 "mediumorchid": "ba55d3", |
123 u"mediumpurple": u"9370db", | 123 "mediumpurple": "9370db", |
124 u"mediumseagreen": u"3cb371", | 124 "mediumseagreen": "3cb371", |
125 u"mediumslateblue": u"7b68ee", | 125 "mediumslateblue": "7b68ee", |
126 u"mediumspringgreen": u"00fa9a", | 126 "mediumspringgreen": "00fa9a", |
127 u"mediumturquoise": u"48d1cc", | 127 "mediumturquoise": "48d1cc", |
128 u"mediumvioletred": u"c71585", | 128 "mediumvioletred": "c71585", |
129 u"midnightblue": u"191970", | 129 "midnightblue": "191970", |
130 u"mintcream": u"f5fffa", | 130 "mintcream": "f5fffa", |
131 u"mistyrose": u"ffe4e1", | 131 "mistyrose": "ffe4e1", |
132 u"moccasin": u"ffe4b5", | 132 "moccasin": "ffe4b5", |
133 u"navajowhite": u"ffdead", | 133 "navajowhite": "ffdead", |
134 u"oldlace": u"fdf5e6", | 134 "oldlace": "fdf5e6", |
135 u"olivedrab": u"6b8e23", | 135 "olivedrab": "6b8e23", |
136 u"orangered": u"ff4500", | 136 "orangered": "ff4500", |
137 u"orchid": u"da70d6", | 137 "orchid": "da70d6", |
138 u"palegoldenrod": u"eee8aa", | 138 "palegoldenrod": "eee8aa", |
139 u"palegreen": u"98fb98", | 139 "palegreen": "98fb98", |
140 u"paleturquoise": u"afeeee", | 140 "paleturquoise": "afeeee", |
141 u"palevioletred": u"db7093", | 141 "palevioletred": "db7093", |
142 u"papayawhip": u"ffefd5", | 142 "papayawhip": "ffefd5", |
143 u"peachpuff": u"ffdab9", | 143 "peachpuff": "ffdab9", |
144 u"peru": u"cd853f", | 144 "peru": "cd853f", |
145 u"pink": u"ffc0cb", | 145 "pink": "ffc0cb", |
146 u"plum": u"dda0dd", | 146 "plum": "dda0dd", |
147 u"powderblue": u"b0e0e6", | 147 "powderblue": "b0e0e6", |
148 u"rosybrown": u"bc8f8f", | 148 "rosybrown": "bc8f8f", |
149 u"royalblue": u"4169e1", | 149 "royalblue": "4169e1", |
150 u"saddlebrown": u"8b4513", | 150 "saddlebrown": "8b4513", |
151 u"salmon": u"fa8072", | 151 "salmon": "fa8072", |
152 u"sandybrown": u"f4a460", | 152 "sandybrown": "f4a460", |
153 u"seagreen": u"2e8b57", | 153 "seagreen": "2e8b57", |
154 u"seashell": u"fff5ee", | 154 "seashell": "fff5ee", |
155 u"sienna": u"a0522d", | 155 "sienna": "a0522d", |
156 u"skyblue": u"87ceeb", | 156 "skyblue": "87ceeb", |
157 u"slateblue": u"6a5acd", | 157 "slateblue": "6a5acd", |
158 u"slategray": u"708090", | 158 "slategray": "708090", |
159 u"slategrey": u"708090", | 159 "slategrey": "708090", |
160 u"snow": u"fffafa", | 160 "snow": "fffafa", |
161 u"springgreen": u"00ff7f", | 161 "springgreen": "00ff7f", |
162 u"steelblue": u"4682b4", | 162 "steelblue": "4682b4", |
163 u"tan": u"d2b48c", | 163 "tan": "d2b48c", |
164 u"thistle": u"d8bfd8", | 164 "thistle": "d8bfd8", |
165 u"tomato": u"ff6347", | 165 "tomato": "ff6347", |
166 u"turquoise": u"40e0d0", | 166 "turquoise": "40e0d0", |
167 u"violet": u"ee82ee", | 167 "violet": "ee82ee", |
168 u"wheat": u"f5deb3", | 168 "wheat": "f5deb3", |
169 u"whitesmoke": u"f5f5f5", | 169 "whitesmoke": "f5f5f5", |
170 u"yellowgreen": u"9acd32", | 170 "yellowgreen": "9acd32", |
171 u"rebeccapurple": u"663399", | 171 "rebeccapurple": "663399", |
172 } | 172 } |
173 DEFAULT = u"000000" | 173 DEFAULT = "000000" |
174 | 174 |
175 | 175 |
176 def parse(raw_value, as_string=True): | 176 def parse(raw_value, as_string=True): |
177 """parse CSS color value and return normalised value | 177 """parse CSS color value and return normalised value |
178 | 178 |
184 else value is a 3 or 4 tuple of int (e.g.: (255, 0, 170, 187)). | 184 else value is a 3 or 4 tuple of int (e.g.: (255, 0, 170, 187)). |
185 If present, the 4th value is the alpha channel | 185 If present, the 4th value is the alpha channel |
186 If value can't be parsed, a warning message is logged, and DEFAULT is returned | 186 If value can't be parsed, a warning message is logged, and DEFAULT is returned |
187 """ | 187 """ |
188 raw_value = raw_value.strip().lower() | 188 raw_value = raw_value.strip().lower() |
189 if raw_value.startswith(u"#"): | 189 if raw_value.startswith("#"): |
190 # we have a hexadecimal value | 190 # we have a hexadecimal value |
191 str_value = raw_value[1:] | 191 str_value = raw_value[1:] |
192 if len(raw_value) in (3, 4): | 192 if len(raw_value) in (3, 4): |
193 str_value = u"".join([2 * v for v in str_value]) | 193 str_value = "".join([2 * v for v in str_value]) |
194 elif raw_value.startswith(u"rgb"): | 194 elif raw_value.startswith("rgb"): |
195 left_p = raw_value.find(u"(") | 195 left_p = raw_value.find("(") |
196 right_p = raw_value.find(u")") | 196 right_p = raw_value.find(")") |
197 rgb_values = [v.strip() for v in raw_value[left_p + 1 : right_p].split(",")] | 197 rgb_values = [v.strip() for v in raw_value[left_p + 1 : right_p].split(",")] |
198 expected_len = 4 if raw_value.startswith(u"rgba") else 3 | 198 expected_len = 4 if raw_value.startswith("rgba") else 3 |
199 if len(rgb_values) != expected_len: | 199 if len(rgb_values) != expected_len: |
200 log.warning(u"incorrect value: {}".format(raw_value)) | 200 log.warning("incorrect value: {}".format(raw_value)) |
201 str_value = DEFAULT | 201 str_value = DEFAULT |
202 else: | 202 else: |
203 int_values = [] | 203 int_values = [] |
204 for rgb_v in rgb_values: | 204 for rgb_v in rgb_values: |
205 p_idx = rgb_v.find(u"%") | 205 p_idx = rgb_v.find("%") |
206 if p_idx == -1: | 206 if p_idx == -1: |
207 # base 10 value | 207 # base 10 value |
208 try: | 208 try: |
209 int_v = int(rgb_v) | 209 int_v = int(rgb_v) |
210 if int_v > 255: | 210 if int_v > 255: |
211 raise ValueError(u"value exceed 255") | 211 raise ValueError("value exceed 255") |
212 int_values.append(int_v) | 212 int_values.append(int_v) |
213 except ValueError: | 213 except ValueError: |
214 log.warning(u"invalid int: {}".format(rgb_v)) | 214 log.warning("invalid int: {}".format(rgb_v)) |
215 int_values.append(0) | 215 int_values.append(0) |
216 else: | 216 else: |
217 # percentage | 217 # percentage |
218 try: | 218 try: |
219 int_v = int(int(rgb_v[:p_idx]) / 100.0 * 255) | 219 int_v = int(int(rgb_v[:p_idx]) / 100.0 * 255) |
220 if int_v > 255: | 220 if int_v > 255: |
221 raise ValueError(u"value exceed 255") | 221 raise ValueError("value exceed 255") |
222 int_values.append(int_v) | 222 int_values.append(int_v) |
223 except ValueError: | 223 except ValueError: |
224 log.warning(u"invalid percent value: {}".format(rgb_v)) | 224 log.warning("invalid percent value: {}".format(rgb_v)) |
225 int_values.append(0) | 225 int_values.append(0) |
226 str_value = u"".join([u"{:02x}".format(v) for v in int_values]) | 226 str_value = "".join(["{:02x}".format(v) for v in int_values]) |
227 elif raw_value.startswith(u"hsl"): | 227 elif raw_value.startswith("hsl"): |
228 log.warning(u"hue-saturation-lightness not handled yet") # TODO | 228 log.warning("hue-saturation-lightness not handled yet") # TODO |
229 str_value = DEFAULT | 229 str_value = DEFAULT |
230 else: | 230 else: |
231 try: | 231 try: |
232 str_value = CSS_COLORS[raw_value] | 232 str_value = CSS_COLORS[raw_value] |
233 except KeyError: | 233 except KeyError: |
234 log.warning(u"unrecognised format: {}".format(raw_value)) | 234 log.warning("unrecognised format: {}".format(raw_value)) |
235 str_value = DEFAULT | 235 str_value = DEFAULT |
236 | 236 |
237 if as_string: | 237 if as_string: |
238 return str_value | 238 return str_value |
239 else: | 239 else: |
240 return tuple( | 240 return tuple( |
241 [ | 241 [ |
242 int(str_value[i] + str_value[i + 1], 16) | 242 int(str_value[i] + str_value[i + 1], 16) |
243 for i in xrange(0, len(str_value), 2) | 243 for i in range(0, len(str_value), 2) |
244 ] | 244 ] |
245 ) | 245 ) |