dmg-builder 26.0.16 → 26.0.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,14 +1,13 @@
1
- # -*- coding: utf-8 -*-
2
- from __future__ import unicode_literals
3
-
4
- import re
5
1
  import math
2
+ import re
3
+
6
4
 
7
- class Color (object):
5
+ class Color:
8
6
  def to_rgb(self):
9
- raise Exception('Must implement to_rgb() in subclasses')
7
+ raise Exception("Must implement to_rgb() in subclasses")
10
8
 
11
- class RGB (Color):
9
+
10
+ class RGB:
12
11
  def __init__(self, r, g, b):
13
12
  self.r = r
14
13
  self.g = g
@@ -16,12 +15,13 @@ class RGB (Color):
16
15
 
17
16
  def to_rgb(self):
18
17
  return self
19
-
20
- class HSL (Color):
21
- def __init__(self, h, s, l):
18
+
19
+
20
+ class HSL(Color):
21
+ def __init__(self, h, s, l): # noqa; E741
22
22
  self.h = h
23
23
  self.s = s
24
- self.l = l
24
+ self.l = l # noqa; E741
25
25
 
26
26
  @staticmethod
27
27
  def _hue_to_rgb(t1, t2, hue):
@@ -38,10 +38,10 @@ class HSL (Color):
38
38
  return (t2 - t1) * (4 - hue) + t1
39
39
  else:
40
40
  return t1
41
-
41
+
42
42
  def to_rgb(self):
43
43
  hue = self.h / 60.0
44
- if self.l <= 0.5:
44
+ if self.l <= 0.5: # noqa; E741
45
45
  t2 = self.l * (self.s + 1)
46
46
  else:
47
47
  t2 = self.l + self.s - (self.l * self.s)
@@ -50,8 +50,9 @@ class HSL (Color):
50
50
  g = self._hue_to_rgb(t1, t2, hue)
51
51
  b = self._hue_to_rgb(t1, t2, hue - 2)
52
52
  return RGB(r, g, b)
53
-
54
- class HWB (Color):
53
+
54
+
55
+ class HWB(Color):
55
56
  def __init__(self, h, w, b):
56
57
  self.h = h
57
58
  self.w = w
@@ -69,10 +70,10 @@ class HWB (Color):
69
70
  elif hue < 3:
70
71
  return 1
71
72
  elif hue < 4:
72
- return (4 - hue)
73
+ return 4 - hue
73
74
  else:
74
75
  return 0
75
-
76
+
76
77
  def to_rgb(self):
77
78
  hue = self.h / 60.0
78
79
  t1 = 1 - self.w - self.b
@@ -80,8 +81,9 @@ class HWB (Color):
80
81
  g = self._hue_to_rgb(hue) * t1 + self.w
81
82
  b = self._hue_to_rgb(hue - 2) * t1 + self.w
82
83
  return RGB(r, g, b)
83
-
84
- class CMYK (Color):
84
+
85
+
86
+ class CMYK(Color):
85
87
  def __init__(self, c, m, y, k):
86
88
  self.c = c
87
89
  self.m = m
@@ -93,170 +95,173 @@ class CMYK (Color):
93
95
  g = 1.0 - min(1.0, self.m + self.k)
94
96
  b = 1.0 - min(1.0, self.y + self.k)
95
97
  return RGB(r, g, b)
96
-
97
- class Gray (Color):
98
+
99
+
100
+ class Gray(Color):
98
101
  def __init__(self, g):
99
102
  self.g = g
100
103
 
101
104
  def to_rgb(self):
102
- return RGB(g, g, g)
103
-
105
+ return RGB(self.g, self.g, self.g)
106
+
107
+
104
108
  _x11_colors = {
105
- 'aliceblue': (240, 248, 255),
106
- 'antiquewhite': (250, 235, 215),
107
- 'aqua': ( 0, 255, 255),
108
- 'aquamarine': (127, 255, 212),
109
- 'azure': (240, 255, 255),
110
- 'beige': (245, 245, 220),
111
- 'bisque': (255, 228, 196),
112
- 'black': ( 0, 0, 0),
113
- 'blanchedalmond': (255, 235, 205),
114
- 'blue': ( 0, 0, 255),
115
- 'blueviolet': (138, 43, 226),
116
- 'brown': (165, 42, 42),
117
- 'burlywood': (222, 184, 135),
118
- 'cadetblue': ( 95, 158, 160),
119
- 'chartreuse': (127, 255, 0),
120
- 'chocolate': (210, 105, 30),
121
- 'coral': (255, 127, 80),
122
- 'cornflowerblue': (100, 149, 237),
123
- 'cornsilk': (255, 248, 220),
124
- 'crimson': (220, 20, 60),
125
- 'cyan': ( 0, 255, 255),
126
- 'darkblue': ( 0, 0, 139),
127
- 'darkcyan': ( 0, 139, 139),
128
- 'darkgoldenrod': (184, 134, 11),
129
- 'darkgray': (169, 169, 169),
130
- 'darkgreen': ( 0, 100, 0),
131
- 'darkgrey': (169, 169, 169),
132
- 'darkkhaki': (189, 183, 107),
133
- 'darkmagenta': (139, 0, 139),
134
- 'darkolivegreen': ( 85, 107, 47),
135
- 'darkorange': (255, 140, 0),
136
- 'darkorchid': (153, 50, 204),
137
- 'darkred': (139, 0, 0),
138
- 'darksalmon': (233, 150, 122),
139
- 'darkseagreen': (143, 188, 143),
140
- 'darkslateblue': ( 72, 61, 139),
141
- 'darkslategray': ( 47, 79, 79),
142
- 'darkslategrey': ( 47, 79, 79),
143
- 'darkturquoise': ( 0, 206, 209),
144
- 'darkviolet': (148, 0, 211),
145
- 'deeppink': (255, 20, 147),
146
- 'deepskyblue': ( 0, 191, 255),
147
- 'dimgray': (105, 105, 105),
148
- 'dimgrey': (105, 105, 105),
149
- 'dodgerblue': ( 30, 144, 255),
150
- 'firebrick': (178, 34, 34),
151
- 'floralwhite': (255, 250, 240),
152
- 'forestgreen': ( 34, 139, 34),
153
- 'fuchsia': (255, 0, 255),
154
- 'gainsboro': (220, 220, 220),
155
- 'ghostwhite': (248, 248, 255),
156
- 'gold': (255, 215, 0),
157
- 'goldenrod': (218, 165, 32),
158
- 'gray': (128, 128, 128),
159
- 'grey': (128, 128, 128),
160
- 'green': ( 0, 128, 0),
161
- 'greenyellow': (173, 255, 47),
162
- 'honeydew': (240, 255, 240),
163
- 'hotpink': (255, 105, 180),
164
- 'indianred': (205, 92, 92),
165
- 'indigo': ( 75, 0, 130),
166
- 'ivory': (255, 255, 240),
167
- 'khaki': (240, 230, 140),
168
- 'lavender': (230, 230, 250),
169
- 'lavenderblush': (255, 240, 245),
170
- 'lawngreen': (124, 252, 0),
171
- 'lemonchiffon': (255, 250, 205),
172
- 'lightblue': (173, 216, 230),
173
- 'lightcoral': (240, 128, 128),
174
- 'lightcyan': (224, 255, 255),
175
- 'lightgoldenrodyellow': (250, 250, 210),
176
- 'lightgray': (211, 211, 211),
177
- 'lightgreen': (144, 238, 144),
178
- 'lightgrey': (211, 211, 211),
179
- 'lightpink': (255, 182, 193),
180
- 'lightsalmon': (255, 160, 122),
181
- 'lightseagreen': ( 32, 178, 170),
182
- 'lightskyblue': (135, 206, 250),
183
- 'lightslategray': (119, 136, 153),
184
- 'lightslategrey': (119, 136, 153),
185
- 'lightsteelblue': (176, 196, 222),
186
- 'lightyellow': (255, 255, 224),
187
- 'lime': ( 0, 255, 0),
188
- 'limegreen': ( 50, 205, 50),
189
- 'linen': (250, 240, 230),
190
- 'magenta': (255, 0, 255),
191
- 'maroon': (128, 0, 0),
192
- 'mediumaquamarine': (102, 205, 170),
193
- 'mediumblue': ( 0, 0, 205),
194
- 'mediumorchid': (186, 85, 211),
195
- 'mediumpurple': (147, 112, 219),
196
- 'mediumseagreen': ( 60, 179, 113),
197
- 'mediumslateblue': (123, 104, 238),
198
- 'mediumspringgreen': ( 0, 250, 154),
199
- 'mediumturquoise': ( 72, 209, 204),
200
- 'mediumvioletred': (199, 21, 133),
201
- 'midnightblue': ( 25, 25, 112),
202
- 'mintcream': (245, 255, 250),
203
- 'mistyrose': (255, 228, 225),
204
- 'moccasin': (255, 228, 181),
205
- 'navajowhite': (255, 222, 173),
206
- 'navy': ( 0, 0, 128),
207
- 'oldlace': (253, 245, 230),
208
- 'olive': (128, 128, 0),
209
- 'olivedrab': (107, 142, 35),
210
- 'orange': (255, 165, 0),
211
- 'orangered': (255, 69, 0),
212
- 'orchid': (218, 112, 214),
213
- 'palegoldenrod': (238, 232, 170),
214
- 'palegreen': (152, 251, 152),
215
- 'paleturquoise': (175, 238, 238),
216
- 'palevioletred': (219, 112, 147),
217
- 'papayawhip': (255, 239, 213),
218
- 'peachpuff': (255, 218, 185),
219
- 'peru': (205, 133, 63),
220
- 'pink': (255, 192, 203),
221
- 'plum': (221, 160, 221),
222
- 'powderblue': (176, 224, 230),
223
- 'purple': (128, 0, 128),
224
- 'red': (255, 0, 0),
225
- 'rosybrown': (188, 143, 143),
226
- 'royalblue': ( 65, 105, 225),
227
- 'saddlebrown': (139, 69, 19),
228
- 'salmon': (250, 128, 114),
229
- 'sandybrown': (244, 164, 96),
230
- 'seagreen': ( 46, 139, 87),
231
- 'seashell': (255, 245, 238),
232
- 'sienna': (160, 82, 45),
233
- 'silver': (192, 192, 192),
234
- 'skyblue': (135, 206, 235),
235
- 'slateblue': (106, 90, 205),
236
- 'slategray': (112, 128, 144),
237
- 'slategrey': (112, 128, 144),
238
- 'snow': (255, 250, 250),
239
- 'springgreen': ( 0, 255, 127),
240
- 'steelblue': ( 70, 130, 180),
241
- 'tan': (210, 180, 140),
242
- 'teal': ( 0, 128, 128),
243
- 'thistle': (216, 191, 216),
244
- 'tomato': (255, 99, 71),
245
- 'turquoise': ( 64, 224, 208),
246
- 'violet': (238, 130, 238),
247
- 'wheat': (245, 222, 179),
248
- 'white': (255, 255, 255),
249
- 'whitesmoke': (245, 245, 245),
250
- 'yellow': (255, 255, 0),
251
- 'yellowgreen': (154, 205, 50)
252
- }
253
-
254
- _ws_re = re.compile('\s+')
255
- _token_re = re.compile('[A-Za-z_][A-Za-z0-9_]*')
256
- _hex_re = re.compile('#([0-9a-f]{3}(?:[0-9a-f]{3})?)$')
257
- _number_re = re.compile('[0-9]*(\.[0-9]*)')
258
-
259
- class ColorParser (object):
109
+ "aliceblue": (240, 248, 255),
110
+ "antiquewhite": (250, 235, 215),
111
+ "aqua": (0, 255, 255),
112
+ "aquamarine": (127, 255, 212),
113
+ "azure": (240, 255, 255),
114
+ "beige": (245, 245, 220),
115
+ "bisque": (255, 228, 196),
116
+ "black": (0, 0, 0),
117
+ "blanchedalmond": (255, 235, 205),
118
+ "blue": (0, 0, 255),
119
+ "blueviolet": (138, 43, 226),
120
+ "brown": (165, 42, 42),
121
+ "burlywood": (222, 184, 135),
122
+ "cadetblue": (95, 158, 160),
123
+ "chartreuse": (127, 255, 0),
124
+ "chocolate": (210, 105, 30),
125
+ "coral": (255, 127, 80),
126
+ "cornflowerblue": (100, 149, 237),
127
+ "cornsilk": (255, 248, 220),
128
+ "crimson": (220, 20, 60),
129
+ "cyan": (0, 255, 255),
130
+ "darkblue": (0, 0, 139),
131
+ "darkcyan": (0, 139, 139),
132
+ "darkgoldenrod": (184, 134, 11),
133
+ "darkgray": (169, 169, 169),
134
+ "darkgreen": (0, 100, 0),
135
+ "darkgrey": (169, 169, 169),
136
+ "darkkhaki": (189, 183, 107),
137
+ "darkmagenta": (139, 0, 139),
138
+ "darkolivegreen": (85, 107, 47),
139
+ "darkorange": (255, 140, 0),
140
+ "darkorchid": (153, 50, 204),
141
+ "darkred": (139, 0, 0),
142
+ "darksalmon": (233, 150, 122),
143
+ "darkseagreen": (143, 188, 143),
144
+ "darkslateblue": (72, 61, 139),
145
+ "darkslategray": (47, 79, 79),
146
+ "darkslategrey": (47, 79, 79),
147
+ "darkturquoise": (0, 206, 209),
148
+ "darkviolet": (148, 0, 211),
149
+ "deeppink": (255, 20, 147),
150
+ "deepskyblue": (0, 191, 255),
151
+ "dimgray": (105, 105, 105),
152
+ "dimgrey": (105, 105, 105),
153
+ "dodgerblue": (30, 144, 255),
154
+ "firebrick": (178, 34, 34),
155
+ "floralwhite": (255, 250, 240),
156
+ "forestgreen": (34, 139, 34),
157
+ "fuchsia": (255, 0, 255),
158
+ "gainsboro": (220, 220, 220),
159
+ "ghostwhite": (248, 248, 255),
160
+ "gold": (255, 215, 0),
161
+ "goldenrod": (218, 165, 32),
162
+ "gray": (128, 128, 128),
163
+ "grey": (128, 128, 128),
164
+ "green": (0, 128, 0),
165
+ "greenyellow": (173, 255, 47),
166
+ "honeydew": (240, 255, 240),
167
+ "hotpink": (255, 105, 180),
168
+ "indianred": (205, 92, 92),
169
+ "indigo": (75, 0, 130),
170
+ "ivory": (255, 255, 240),
171
+ "khaki": (240, 230, 140),
172
+ "lavender": (230, 230, 250),
173
+ "lavenderblush": (255, 240, 245),
174
+ "lawngreen": (124, 252, 0),
175
+ "lemonchiffon": (255, 250, 205),
176
+ "lightblue": (173, 216, 230),
177
+ "lightcoral": (240, 128, 128),
178
+ "lightcyan": (224, 255, 255),
179
+ "lightgoldenrodyellow": (250, 250, 210),
180
+ "lightgray": (211, 211, 211),
181
+ "lightgreen": (144, 238, 144),
182
+ "lightgrey": (211, 211, 211),
183
+ "lightpink": (255, 182, 193),
184
+ "lightsalmon": (255, 160, 122),
185
+ "lightseagreen": (32, 178, 170),
186
+ "lightskyblue": (135, 206, 250),
187
+ "lightslategray": (119, 136, 153),
188
+ "lightslategrey": (119, 136, 153),
189
+ "lightsteelblue": (176, 196, 222),
190
+ "lightyellow": (255, 255, 224),
191
+ "lime": (0, 255, 0),
192
+ "limegreen": (50, 205, 50),
193
+ "linen": (250, 240, 230),
194
+ "magenta": (255, 0, 255),
195
+ "maroon": (128, 0, 0),
196
+ "mediumaquamarine": (102, 205, 170),
197
+ "mediumblue": (0, 0, 205),
198
+ "mediumorchid": (186, 85, 211),
199
+ "mediumpurple": (147, 112, 219),
200
+ "mediumseagreen": (60, 179, 113),
201
+ "mediumslateblue": (123, 104, 238),
202
+ "mediumspringgreen": (0, 250, 154),
203
+ "mediumturquoise": (72, 209, 204),
204
+ "mediumvioletred": (199, 21, 133),
205
+ "midnightblue": (25, 25, 112),
206
+ "mintcream": (245, 255, 250),
207
+ "mistyrose": (255, 228, 225),
208
+ "moccasin": (255, 228, 181),
209
+ "navajowhite": (255, 222, 173),
210
+ "navy": (0, 0, 128),
211
+ "oldlace": (253, 245, 230),
212
+ "olive": (128, 128, 0),
213
+ "olivedrab": (107, 142, 35),
214
+ "orange": (255, 165, 0),
215
+ "orangered": (255, 69, 0),
216
+ "orchid": (218, 112, 214),
217
+ "palegoldenrod": (238, 232, 170),
218
+ "palegreen": (152, 251, 152),
219
+ "paleturquoise": (175, 238, 238),
220
+ "palevioletred": (219, 112, 147),
221
+ "papayawhip": (255, 239, 213),
222
+ "peachpuff": (255, 218, 185),
223
+ "peru": (205, 133, 63),
224
+ "pink": (255, 192, 203),
225
+ "plum": (221, 160, 221),
226
+ "powderblue": (176, 224, 230),
227
+ "purple": (128, 0, 128),
228
+ "red": (255, 0, 0),
229
+ "rosybrown": (188, 143, 143),
230
+ "royalblue": (65, 105, 225),
231
+ "saddlebrown": (139, 69, 19),
232
+ "salmon": (250, 128, 114),
233
+ "sandybrown": (244, 164, 96),
234
+ "seagreen": (46, 139, 87),
235
+ "seashell": (255, 245, 238),
236
+ "sienna": (160, 82, 45),
237
+ "silver": (192, 192, 192),
238
+ "skyblue": (135, 206, 235),
239
+ "slateblue": (106, 90, 205),
240
+ "slategray": (112, 128, 144),
241
+ "slategrey": (112, 128, 144),
242
+ "snow": (255, 250, 250),
243
+ "springgreen": (0, 255, 127),
244
+ "steelblue": (70, 130, 180),
245
+ "tan": (210, 180, 140),
246
+ "teal": (0, 128, 128),
247
+ "thistle": (216, 191, 216),
248
+ "tomato": (255, 99, 71),
249
+ "turquoise": (64, 224, 208),
250
+ "violet": (238, 130, 238),
251
+ "wheat": (245, 222, 179),
252
+ "white": (255, 255, 255),
253
+ "whitesmoke": (245, 245, 245),
254
+ "yellow": (255, 255, 0),
255
+ "yellowgreen": (154, 205, 50),
256
+ }
257
+
258
+ _ws_re = re.compile(r"\s+")
259
+ _token_re = re.compile(r"[A-Za-z_][A-Za-z0-9_]*")
260
+ _hex_re = re.compile(r"#([0-9a-f]{3}(?:[0-9a-f]{3})?)$")
261
+ _number_re = re.compile(r"[0-9]*(\.[0-9]*)")
262
+
263
+
264
+ class ColorParser:
260
265
  def __init__(self, s):
261
266
  self._string = s
262
267
  self._pos = 0
@@ -265,12 +270,13 @@ class ColorParser (object):
265
270
  m = _ws_re.match(self._string, self._pos)
266
271
  if m:
267
272
  self._pos = m.end(0)
268
-
269
- def expect(self, s, context=''):
270
- if len(self._string) - self._pos < len(s) \
271
- or self._string[self._pos:self._pos + len(s)] != s:
272
- raise ValueError('bad color "%s" - expected "%s"%s'
273
- % (self._string, s, context))
273
+
274
+ def expect(self, s, context=""):
275
+ if (
276
+ len(self._string) - self._pos < len(s)
277
+ or self._string[self._pos : self._pos + len(s)] != s
278
+ ):
279
+ raise ValueError(f'bad color "{self._string}" - expected "{s}"{context}')
274
280
  self._pos += len(s)
275
281
 
276
282
  def expectEnd(self):
@@ -285,29 +291,28 @@ class ColorParser (object):
285
291
  self._pos = m.end(0)
286
292
  return token
287
293
  return None
288
-
289
- def parseNumber(self, context=''):
294
+
295
+ def parseNumber(self, context=""):
290
296
  m = _number_re.match(self._string, self._pos)
291
297
  if m:
292
298
  self._pos = m.end(0)
293
299
  return float(m.group(0))
294
- raise ValueError('bad color "%s" - expected a number%s'
295
- % (self._string, context))
296
-
300
+ raise ValueError(f'bad color "{self._string}" - expected a number{context}')
301
+
297
302
  def parseColor(self):
298
303
  self.skipws()
299
304
 
300
305
  token = self.getToken()
301
306
  if token:
302
- if token == 'rgb':
307
+ if token == "rgb":
303
308
  return self.parseRGB()
304
- elif token == 'hsl':
309
+ elif token == "hsl":
305
310
  return self.parseHSL()
306
- elif token == 'hwb':
311
+ elif token == "hwb":
307
312
  return self.parseHWB()
308
- elif token == 'cmyk':
313
+ elif token == "cmyk":
309
314
  return self.parseCMYK()
310
- elif token == 'gray' or token == 'grey':
315
+ elif token == "gray" or token == "grey":
311
316
  return self.parseGray()
312
317
 
313
318
  try:
@@ -318,19 +323,19 @@ class ColorParser (object):
318
323
  self.expectEnd()
319
324
 
320
325
  return RGB(r / 255.0, g / 255.0, b / 255.0)
321
-
326
+
322
327
  m = _hex_re.match(self._string, self._pos)
323
328
  if m:
324
329
  hrgb = m.group(1)
325
330
 
326
331
  if len(hrgb) == 3:
327
- r = int('0x' + 2 * hrgb[0], 16)
328
- g = int('0x' + 2 * hrgb[1], 16)
329
- b = int('0x' + 2 * hrgb[2], 16)
332
+ r = int("0x" + 2 * hrgb[0], 16)
333
+ g = int("0x" + 2 * hrgb[1], 16)
334
+ b = int("0x" + 2 * hrgb[2], 16)
330
335
  else:
331
- r = int('0x' + hrgb[0:2], 16)
332
- g = int('0x' + hrgb[2:4], 16)
333
- b = int('0x' + hrgb[4:6], 16)
336
+ r = int("0x" + hrgb[0:2], 16)
337
+ g = int("0x" + hrgb[2:4], 16)
338
+ b = int("0x" + hrgb[4:6], 16)
334
339
 
335
340
  self._pos = m.end(0)
336
341
  self.skipws()
@@ -342,51 +347,51 @@ class ColorParser (object):
342
347
  raise ValueError('bad color syntax "%s"' % self._string)
343
348
 
344
349
  def parseRGB(self):
345
- self.expect('(', 'after "rgb"')
350
+ self.expect("(", 'after "rgb"')
346
351
  self.skipws()
347
352
 
348
353
  r = self.parseValue()
349
354
 
350
355
  self.skipws()
351
- self.expect(',', 'in "rgb"')
356
+ self.expect(",", 'in "rgb"')
352
357
  self.skipws()
353
358
 
354
359
  g = self.parseValue()
355
360
 
356
361
  self.skipws()
357
- self.expect(',', 'in "rgb"')
362
+ self.expect(",", 'in "rgb"')
358
363
  self.skipws()
359
364
 
360
365
  b = self.parseValue()
361
366
 
362
367
  self.skipws()
363
- self.expect(')', 'at end of "rgb"')
368
+ self.expect(")", 'at end of "rgb"')
364
369
 
365
370
  self.skipws()
366
371
  self.expectEnd()
367
372
 
368
373
  return RGB(r, g, b)
369
-
374
+
370
375
  def parseHSL(self):
371
- self.expect('(', 'after "hsl"')
376
+ self.expect("(", 'after "hsl"')
372
377
  self.skipws()
373
378
 
374
379
  h = self.parseAngle()
375
380
 
376
381
  self.skipws()
377
- self.expect(',', 'in "hsl"')
382
+ self.expect(",", 'in "hsl"')
378
383
  self.skipws()
379
384
 
380
385
  s = self.parseValue()
381
386
 
382
387
  self.skipws()
383
- self.expect(',', 'in "hsl"')
388
+ self.expect(",", 'in "hsl"')
384
389
  self.skipws()
385
390
 
386
- l = self.parseValue()
391
+ l = self.parseValue() # noqa; E741
387
392
 
388
393
  self.skipws()
389
- self.expect(')', 'at end of "hsl"')
394
+ self.expect(")", 'at end of "hsl"')
390
395
 
391
396
  self.skipws()
392
397
  self.expectEnd()
@@ -394,25 +399,25 @@ class ColorParser (object):
394
399
  return HSL(h, s, l)
395
400
 
396
401
  def parseHWB(self):
397
- self.expect('(', 'after "hwb"')
402
+ self.expect("(", 'after "hwb"')
398
403
  self.skipws()
399
404
 
400
405
  h = self.parseAngle()
401
406
 
402
407
  self.skipws()
403
- self.expect(',', 'in "hwb"')
408
+ self.expect(",", 'in "hwb"')
404
409
  self.skipws()
405
410
 
406
411
  w = self.parseValue()
407
412
 
408
413
  self.skipws()
409
- self.expect(',', 'in "hwb"')
414
+ self.expect(",", 'in "hwb"')
410
415
  self.skipws()
411
416
 
412
417
  b = self.parseValue()
413
418
 
414
419
  self.skipws()
415
- self.expect(')', 'at end of "hwb"')
420
+ self.expect(")", 'at end of "hwb"')
416
421
 
417
422
  self.skipws()
418
423
  self.expectEnd()
@@ -420,31 +425,31 @@ class ColorParser (object):
420
425
  return HWB(h, w, b)
421
426
 
422
427
  def parseCMYK(self):
423
- self.expect('(', 'after "cmyk"')
428
+ self.expect("(", 'after "cmyk"')
424
429
  self.skipws()
425
430
 
426
431
  c = self.parseValue()
427
432
 
428
433
  self.skipws()
429
- self.expect(',', 'in "cmyk"')
434
+ self.expect(",", 'in "cmyk"')
430
435
  self.skipws()
431
436
 
432
437
  m = self.parseValue()
433
438
 
434
439
  self.skipws()
435
- self.expect(',', 'in "cmyk"')
440
+ self.expect(",", 'in "cmyk"')
436
441
  self.skipws()
437
442
 
438
443
  y = self.parseValue()
439
444
 
440
445
  self.skipws()
441
- self.expect(',', 'in "cmyk"')
446
+ self.expect(",", 'in "cmyk"')
442
447
  self.skipws()
443
448
 
444
449
  k = self.parseValue()
445
450
 
446
451
  self.skipws()
447
- self.expect(')', 'at end of "cmyk"')
452
+ self.expect(")", 'at end of "cmyk"')
448
453
 
449
454
  self.skipws()
450
455
  self.expectEnd()
@@ -452,13 +457,13 @@ class ColorParser (object):
452
457
  return CMYK(c, m, y, k)
453
458
 
454
459
  def parseGray(self):
455
- self.expect('(', 'after "gray"')
460
+ self.expect("(", 'after "gray"')
456
461
  self.skipws()
457
462
 
458
463
  g = self.parseValue()
459
464
 
460
465
  self.skipws()
461
- self.expect(')', 'at end of "gray')
466
+ self.expect(")", 'at end of "gray')
462
467
 
463
468
  self.skipws()
464
469
  self.expectEnd()
@@ -468,27 +473,32 @@ class ColorParser (object):
468
473
  def parseValue(self):
469
474
  n = self.parseNumber()
470
475
  self.skipws()
471
- if self._string[self._pos] == '%':
476
+ if self._string[self._pos] == "%":
472
477
  n = n / 100.0
473
478
  self.pos += 1
474
479
  return n
475
-
480
+
476
481
  def parseAngle(self):
477
482
  n = self.parseNumber()
478
483
  self.skipws()
479
484
  tok = self.getToken()
480
- if tok == 'rad':
485
+ if tok == "rad":
481
486
  n = n * 180.0 / math.pi
482
- elif tok == 'grad' or tok == 'gon':
487
+ elif tok == "grad" or tok == "gon":
483
488
  n = n * 0.9
484
- elif tok != 'deg':
489
+ elif tok != "deg":
485
490
  raise ValueError('bad angle unit "%s"' % tok)
486
491
  return n
487
492
 
488
- _color_re = re.compile('\s*(#|rgb|hsl|hwb|cmyk|gray|grey|%s)'
489
- % '|'.join(_x11_colors.keys()))
493
+
494
+ _color_re = re.compile(
495
+ r"\s*(#|rgb|hsl|hwb|cmyk|gray|grey|%s)" % "|".join(_x11_colors.keys())
496
+ )
497
+
498
+
490
499
  def isAColor(s):
491
500
  return _color_re.match(s)
492
501
 
502
+
493
503
  def parseColor(s):
494
504
  return ColorParser(s).parseColor()