drawlib 0.2.3.dev2__py3-none-any.whl → 0.2.3.dev4__py3-none-any.whl

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.

Potentially problematic release.


This version of drawlib might be problematic. Click here for more details.

@@ -18,6 +18,7 @@ from typing import Callable, Dict, List, Literal, Optional, Tuple, Union
18
18
  from drawlib.v0_2.private.core.model import IconStyle, ImageStyle, LineStyle, ShapeStyle, TextStyle
19
19
  from drawlib.v0_2.private.core.theme import dtheme
20
20
  from drawlib.v0_2.private.core_canvas.canvas import line, text
21
+ from drawlib.v0_2.private.util import error_handler
21
22
 
22
23
 
23
24
  class TreeNode:
@@ -25,6 +26,7 @@ class TreeNode:
25
26
 
26
27
  _drawing_item_map: Dict[str, _TreeNodeDrawingItem] = {}
27
28
 
29
+ @error_handler
28
30
  def __init__(
29
31
  self,
30
32
  text: str,
@@ -73,6 +75,7 @@ class TreeNode:
73
75
  self._drawing_item_name: Optional[str] = None
74
76
 
75
77
  @classmethod
78
+ @error_handler
76
79
  def register_drawing_item(
77
80
  cls,
78
81
  name: str,
@@ -108,6 +111,7 @@ class TreeNode:
108
111
 
109
112
  cls._drawing_item_map[name] = item
110
113
 
114
+ @error_handler
111
115
  def set_drawing_item(
112
116
  self,
113
117
  name: str,
@@ -126,6 +130,7 @@ class TreeNode:
126
130
 
127
131
  return self
128
132
 
133
+ @error_handler
129
134
  def draw(self, xy: Tuple[float, float]) -> None:
130
135
  """Draw the tree node and its children.
131
136
 
@@ -136,15 +141,15 @@ class TreeNode:
136
141
  ValueError: If any of the default styles or margins are None.
137
142
  """
138
143
  if self._default_textstyle is None:
139
- raise ValueError()
144
+ raise ValueError('Root of TreeNode must be initialized with arg "default_textstyle".')
140
145
  if self._default_linestyle is None:
141
- raise ValueError()
146
+ raise ValueError('Root of TreeNode must be initialized with arg "default_linestyle".')
142
147
  if self._default_line_horizontal_margin is None:
143
- raise ValueError()
148
+ raise ValueError('Root of TreeNode must be initialized with arg "default_line_horizontal_margin".')
144
149
  if self._default_line_horizontal_length is None:
145
- raise ValueError()
150
+ raise ValueError('Root of TreeNode must be initialized with arg "default_line_horizontal_length".')
146
151
  if self._default_line_vertical_margin is None:
147
- raise ValueError()
152
+ raise ValueError('Root of TreeNode must be initialized with arg "default_line_vertical_margin".')
148
153
 
149
154
  self._draw(
150
155
  xy=xy,
@@ -19,7 +19,7 @@ import os.path
19
19
  import shutil
20
20
  import sys
21
21
  import traceback
22
- from typing import Any, Tuple
22
+ from typing import Any, List, Tuple, Union
23
23
 
24
24
  import drawlib.assets.v0_2.fonticons
25
25
  import drawlib.assets.v0_2.fonts
@@ -81,6 +81,121 @@ def error_handler(caller):
81
81
  return wrapper
82
82
 
83
83
 
84
+ @error_handler
85
+ def get_rotated_points(
86
+ xys: List[Tuple[float, float]],
87
+ center: Tuple[float, float],
88
+ angle: float,
89
+ ) -> List[Tuple[float, float]]:
90
+ """
91
+ Rotate a list of points around a given center by a given angle.
92
+
93
+ Args:
94
+ xys (list of tuples): List of (x, y) points to rotate.
95
+ center (tuple): The (x, y) coordinates of the center point.
96
+ angle (float): The angle to rotate the points by, in degrees.
97
+
98
+ Returns:
99
+ list of tuples: The rotated points.
100
+ """
101
+ angle = math.radians(angle)
102
+ cos_theta = math.cos(angle)
103
+ sin_theta = math.sin(angle)
104
+
105
+ rotated_points = []
106
+ cx, cy = center
107
+
108
+ for x, y in xys:
109
+ # Translate point to origin
110
+ translated_x = x - cx
111
+ translated_y = y - cy
112
+ # Rotate point
113
+ rotated_x = translated_x * cos_theta - translated_y * sin_theta
114
+ rotated_y = translated_x * sin_theta + translated_y * cos_theta
115
+ # Translate point back
116
+ final_x = rotated_x + cx
117
+ final_y = rotated_y + cy
118
+ rotated_points.append((final_x, final_y))
119
+
120
+ return rotated_points
121
+
122
+
123
+ @error_handler
124
+ def get_rotated_path_points(
125
+ path_points: List[
126
+ Union[
127
+ Tuple[float, float],
128
+ Tuple[Tuple[float, float], Tuple[float, float]],
129
+ Tuple[Tuple[float, float], Tuple[float, float], Tuple[float, float]],
130
+ ]
131
+ ],
132
+ center: Tuple[float, float],
133
+ angle: float,
134
+ ) -> List[
135
+ Union[
136
+ Tuple[float, float],
137
+ Tuple[Tuple[float, float], Tuple[float, float]],
138
+ Tuple[Tuple[float, float], Tuple[float, float], Tuple[float, float]],
139
+ ]
140
+ ]:
141
+ """
142
+ Rotate a list of points around a given center by a given angle.
143
+
144
+ Args:
145
+ path_points (list of tuples): List of (x, y) points to rotate.
146
+ center (tuple): The (x, y) coordinates of the center point.
147
+ angle (float): The angle to rotate the points by, in degrees.
148
+
149
+ Returns:
150
+ list of tuples: The rotated points.
151
+ """
152
+ angle = math.radians(angle)
153
+ cos_theta = math.cos(angle)
154
+ sin_theta = math.sin(angle)
155
+
156
+ rotated_path_points: List[
157
+ Union[
158
+ Tuple[float, float],
159
+ Tuple[Tuple[float, float], Tuple[float, float]],
160
+ Tuple[Tuple[float, float], Tuple[float, float], Tuple[float, float]],
161
+ ]
162
+ ] = []
163
+ cx, cy = center
164
+
165
+ for t in path_points:
166
+ # Translate point to origin
167
+ if not isinstance(t[0], tuple):
168
+ x: float = t[0] # type: ignore
169
+ y: float = t[1] # type: ignore
170
+ translated_x = x - cx
171
+ translated_y = y - cy
172
+ # Rotate point
173
+ rotated_x = translated_x * cos_theta - translated_y * sin_theta
174
+ rotated_y = translated_x * sin_theta + translated_y * cos_theta
175
+ # Translate point back
176
+ final_x = rotated_x + cx
177
+ final_y = rotated_y + cy
178
+ rotated_path_points.append((final_x, final_y))
179
+
180
+ else:
181
+ new_path_point = []
182
+ for xy in t:
183
+ x: float = xy[0] # type: ignore
184
+ y: float = xy[1] # type: ignore
185
+ translated_x = x - cx
186
+ translated_y = y - cy
187
+ # Rotate point
188
+ rotated_x = translated_x * cos_theta - translated_y * sin_theta
189
+ rotated_y = translated_x * sin_theta + translated_y * cos_theta
190
+ # Translate point back
191
+ final_x = rotated_x + cx
192
+ final_y = rotated_y + cy
193
+ new_path_point.append((final_x, final_y))
194
+ rotated_path_points.append(tuple(new_path_point))
195
+
196
+ return rotated_path_points
197
+
198
+
84
199
  @error_handler
85
200
  def get_angle(xy1: Tuple[float, float], xy2: Tuple[float, float]) -> float:
86
201
  """Calculate the angle in degrees between two points.
@@ -226,6 +226,15 @@ def validate_line_args(args: Dict[str, Any]) -> None: # noqa: C901
226
226
  elif "r" == arg_name:
227
227
  types_validator.validate_plus_float("r", value)
228
228
 
229
+ elif "radius" == arg_name:
230
+ types_validator.validate_plus_float("radius", value, is_0_ok=False)
231
+
232
+ elif "angle_start" == arg_name:
233
+ coordinate_validator.validate_angle("angle_start", value)
234
+
235
+ elif "angle_end" == arg_name:
236
+ coordinate_validator.validate_angle("angle_end", value)
237
+
229
238
  elif "style" == arg_name:
230
239
  style_validator.validate_linestyle("style", value)
231
240
 
@@ -255,6 +264,9 @@ def validate_shape_args( # noqa: C901
255
264
  if "self" == arg_name:
256
265
  continue
257
266
 
267
+ if "_" == arg_name:
268
+ continue
269
+
258
270
  # Check start from here
259
271
 
260
272
  if "xy" == arg_name:
@@ -285,13 +297,13 @@ def validate_shape_args( # noqa: C901
285
297
  types_validator.validate_plus_float("topedge_width", value, is_0_ok=False)
286
298
 
287
299
  elif "radius" == arg_name:
288
- types_validator.validate_plus_float("bottomedge_width", value, is_0_ok=False)
300
+ types_validator.validate_plus_float("radius", value, is_0_ok=False)
289
301
 
290
302
  elif "radius_ext" == arg_name:
291
- types_validator.validate_plus_float("bottomedge_width", value, is_0_ok=False)
303
+ types_validator.validate_plus_float("radius_ext", value, is_0_ok=False)
292
304
 
293
305
  elif "radius_int" == arg_name:
294
- types_validator.validate_plus_float("bottomedge_width", value, is_0_ok=False)
306
+ types_validator.validate_plus_float("radius_int", value, is_0_ok=False)
295
307
 
296
308
  elif "num_vertex" == arg_name:
297
309
  shape_validator.validate_num_vertex("num_vertex", value)
@@ -305,11 +317,11 @@ def validate_shape_args( # noqa: C901
305
317
  elif "r" == arg_name:
306
318
  types_validator.validate_plus_float("r", value)
307
319
 
308
- elif "from_angle" == arg_name:
309
- coordinate_validator.validate_angle("from_angle", value)
320
+ elif "angle_start" == arg_name:
321
+ coordinate_validator.validate_angle("angle_start", value)
310
322
 
311
- elif "to_angle" == arg_name:
312
- coordinate_validator.validate_angle("to_angle", value)
323
+ elif "angle_end" == arg_name:
324
+ coordinate_validator.validate_angle("angle_end", value)
313
325
 
314
326
  elif "corner_angle" == arg_name:
315
327
  coordinate_validator.validate_angle_max90("corner_angle", value)
@@ -326,6 +338,9 @@ def validate_shape_args( # noqa: C901
326
338
  elif "head_length" == arg_name:
327
339
  types_validator.validate_plus_float("head_length", value, is_0_ok=False)
328
340
 
341
+ elif "head_angle" == arg_name:
342
+ coordinate_validator.validate_angle("head_angle", value)
343
+
329
344
  elif "head" == arg_name:
330
345
  shape_validator.validate_head_style("head", value)
331
346
 
@@ -355,14 +370,14 @@ def validate_shape_args( # noqa: C901
355
370
  elif "tail_edge" == arg_name:
356
371
  smartart_validator.validate_tail_edge("tail_edge", value)
357
372
 
358
- elif "tail_from_ratio" == arg_name:
359
- types_validator.validate_float_0_to_1("tail_from_ratio", value)
373
+ elif "tail_start_ratio" == arg_name:
374
+ types_validator.validate_float_0_to_1("tail_start_ratio", value)
360
375
 
361
376
  elif "tail_vertex_xy" == arg_name:
362
377
  coordinate_validator.validate_xy("tail_vertex_xy", value)
363
378
 
364
- elif "tail_to_ratio" == arg_name:
365
- types_validator.validate_float_0_to_1("tail_to_ratio", value)
379
+ elif "tail_end_ratio" == arg_name:
380
+ types_validator.validate_float_0_to_1("tail_end_ratio", value)
366
381
 
367
382
  else:
368
383
  raise ValueError(f'Drawlib internal bug. Argument "{arg_name}" is not validated at arg validator.')
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: drawlib
3
- Version: 0.2.3.dev2
3
+ Version: 0.2.3.dev4
4
4
  Summary: Python drawing library. Illustration as Code.
5
5
  Home-page: https://www.drawlib.com
6
6
  Author: Yuichi Ito
@@ -1,4 +1,4 @@
1
- drawlib/__init__.py,sha256=TZW9ca9wt_x_j8XlnAxgIYRympx_Do7scU4BHSi46Ic,2678
1
+ drawlib/__init__.py,sha256=jXsDFzb9eWZYUjfkP43y1J-umimTxB5iXTEx201e0Ow,2678
2
2
  drawlib/__main__.py,sha256=UDsH6DiEIWBEwlClbYI10aWYBw_gOmaNCB0TSImWZ-c,604
3
3
  drawlib/apis.py,sha256=Q1Uz4U6IK63ZtjaV_UTWPZq7xDpxTz99qHfpGsL8SnI,531
4
4
  drawlib/assets/__init__.py,sha256=bYT4EWquLr0oyEziAuixlD9M4EPnMY6PyhknOxJjxqY,437
@@ -8,27 +8,27 @@ drawlib/assets/v0_2/fonts/__init__.py,sha256=PeL8idl5hfNNoqygvpDJyqj28ZCek7qxh5G
8
8
  drawlib/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
9
  drawlib/v0_2/__init__.py,sha256=dy_hxP-s7e-ZGXQKRYgjT02nwGKB5G0Qc6yrJD9M8Zg,729
10
10
  drawlib/v0_2/__main__.py,sha256=NHcSZyv4gK-Nh8NQTujSx396OK05IBjeVmaDKWKHJLU,549
11
- drawlib/v0_2/apis.py,sha256=Nbut7wVoFDcKQFE26WJrb5x8sVV2vjfiZmKWLjlkdJs,2077
11
+ drawlib/v0_2/apis.py,sha256=hOKuBUwR2i5DBOcEeUQ4AxiIXHIdotj27Cr5p-KIf0M,2152
12
12
  drawlib/v0_2/private/__init__.py,sha256=vPaj6RbUQj1xOBPRxcKkoOq3kSiOmOlNnY5JnjV_OiY,455
13
13
  drawlib/v0_2/private/command.py,sha256=m6yeuLJfUPbn4KVmchsRsCrtFRTbuCI_OUsYd0NoLEg,19471
14
14
  drawlib/v0_2/private/core/__init__.py,sha256=qzZ4oWmEnMaEAKuQU2x9NvuZLg06fJEOOpR1S31OTS8,454
15
15
  drawlib/v0_2/private/core/colors.py,sha256=N4Fpn3exzJvsa8hvl0oGfN7JF1fGAzHJpMjug2-26KU,12843
16
16
  drawlib/v0_2/private/core/dimage.py,sha256=Wb2HrFAZHK4VEi2T1ybQ3F2MIOPySTllWW6pZq9XjfY,21958
17
17
  drawlib/v0_2/private/core/fonts.py,sha256=r6ycR-GxItwnYgNeKsKOxtZ0bTcmrUObfci8h1et9lE,23217
18
- drawlib/v0_2/private/core/model.py,sha256=2AoipnwbZzci2jTXHC2-014EWJ8PeYCfB0zlNQyyPCY,54698
18
+ drawlib/v0_2/private/core/model.py,sha256=dAaEIuI-9pTlXj4eI6SpCgy12pXWlBYI-25WL8HsEuE,55344
19
19
  drawlib/v0_2/private/core/model_system_default.py,sha256=oK9WpeQVX_baJJmjwz4L23G1F9511_PzWb5li-toUk8,1938
20
20
  drawlib/v0_2/private/core/theme.py,sha256=QcuaCw615fRN0C753gjfay9cqCbHILERqBIDNpO1whQ,47118
21
21
  drawlib/v0_2/private/core/theme_officials.py,sha256=AeZdENE-B8kSTcDAnWLKU-b77PssjwqFa_D-42HWNjg,19832
22
22
  drawlib/v0_2/private/core/theme_style_caches.py,sha256=k22Jrm0nsZITg_Mv0qGyv5pMkivLOb-s-svnWqqm8xY,186385
23
- drawlib/v0_2/private/core/util.py,sha256=F9ctoj6UyCT85efJFLLnmCJjxX8vP_12RgeT97ElyKk,28274
23
+ drawlib/v0_2/private/core/util.py,sha256=FaOlxKnQPcJT2oHiy06ZtVq0ZNO3tppAL-8xvW9Un4c,28437
24
24
  drawlib/v0_2/private/core_canvas/__init__.py,sha256=6HANaWCLm6GjIU7cZGAOdUCrvIxbtQx3KTkQWK-nEhU,455
25
- drawlib/v0_2/private/core_canvas/base.py,sha256=hmCRe2MZdhS2nTQk3NIKb0wq13ya39DFDZZZ9hkEoHU,19125
26
- drawlib/v0_2/private/core_canvas/canvas.py,sha256=zzOVwWOrx-dEgS31RkutgVO0P1uYLBrbeeq83_f3SIY,9431
25
+ drawlib/v0_2/private/core_canvas/base.py,sha256=FipdPyX9M-JWL9FQpAT1r8hoo9o1wyCS1QGx3kINwLQ,20603
26
+ drawlib/v0_2/private/core_canvas/canvas.py,sha256=haDITKf-Wz2zA2zDC_NmrdH-QsSagukQ7LT7xEB2crY,9594
27
27
  drawlib/v0_2/private/core_canvas/image.py,sha256=1KoLmCTbr4VoTZi0rI_e1_HIYOmpGklygeq5ACgwVus,6958
28
- drawlib/v0_2/private/core_canvas/line.py,sha256=gaAFJ0d5Re8qzR05PXfItady7JJlN67yWEwMuDRJhWU,11829
29
- drawlib/v0_2/private/core_canvas/original_arrow.py,sha256=uJIZK9jFj40DlwF_5xyxWJohuFugS-EPBrfB9bmLRJU,4982
28
+ drawlib/v0_2/private/core_canvas/line.py,sha256=qp5IcQUTfLyH1hi4JOKa-h_8TVWRWCEthfSSEEErMgQ,17862
29
+ drawlib/v0_2/private/core_canvas/original_arrow.py,sha256=vTnL7krRxEtplF4CGF5pYnwI0T_YtuNaQ_5bI3zmvCU,21231
30
30
  drawlib/v0_2/private/core_canvas/original_polygon.py,sha256=uvBbfr72J3QEw9efxHdd5YXl1IKZhEA82qzEXdEK7Kc,14546
31
- drawlib/v0_2/private/core_canvas/patches.py,sha256=b1zrMlNUOPzIM9RngJqjGzUg2hS62MN--T9TO-p_MAA,15681
31
+ drawlib/v0_2/private/core_canvas/patches.py,sha256=uDRZMYqMnkh37lXVLGwTUmsb7XuNjNMNZBjP3Cgi5Eg,14211
32
32
  drawlib/v0_2/private/core_canvas/text.py,sha256=bqdiqptdXeV8HVjp0Fx2pl2eA0q29XHYtWcK4WSyCw8,3520
33
33
  drawlib/v0_2/private/download.py,sha256=JdrBsEecOHgRFTXRXszKc-Ak6kO2fhlNiOeXMkjInJU,3465
34
34
  drawlib/v0_2/private/dutil/__init__.py,sha256=D2Yvu1WGzI4kb306MlKKrRv6cDI0x7-B0tEUsVNK310,441
@@ -41,13 +41,16 @@ drawlib/v0_2/private/icons/phosphor.py,sha256=4xwcmDvFB6raCZZFQdrU2eR7l5QhYz9Bg_
41
41
  drawlib/v0_2/private/icons/util.py,sha256=9ZH67tRO1diuzwhENVki6exgNFJbKa1WDICYsxDbaWs,2367
42
42
  drawlib/v0_2/private/logging.py,sha256=tZT62wFfPbwY2JBQVtwoS2qf7HBvCjfB-oXdATEnupc,802
43
43
  drawlib/v0_2/private/smartarts/__init__.py,sha256=ii_xf3fXWPvP4SqSdcLO0gIbx643oRbVch58KlaYAnA,445
44
+ drawlib/v0_2/private/smartarts/boxlist.py,sha256=ymY5yAWhev3JpQi493_8mkTydYaqNMjohj7kpoMFnLw,6714
44
45
  drawlib/v0_2/private/smartarts/boxtree.py,sha256=f6EXkPMEkU8v4vvBxA2Bu2_vV6nJ1nIxppuj9UPhf2E,4655
45
- drawlib/v0_2/private/smartarts/bubblespeech.py,sha256=Fq-XDJmGNK4Yov_VnvbjIiIMW6FWSNaGQRE0dTUQUdE,4200
46
- drawlib/v0_2/private/smartarts/dsart.py,sha256=T-1pAdewcJjQllEl92dA1Ii4E0aOdRFEtYeeWn28I9I,835
47
- drawlib/v0_2/private/smartarts/gridlayout.py,sha256=hc2TrUZBlah2Clvj6O02Eip9Gga0AXfZqNp0OQiEH_g,10204
48
- drawlib/v0_2/private/smartarts/pyramid.py,sha256=kSQ2tDMtCiCbrB0sFCWolfZePqDL4ad6gC7EHpLPV0Y,6529
46
+ drawlib/v0_2/private/smartarts/bubblespeech.py,sha256=2ynQt0W5A0EGRpE1MX-1DQnd01NzM4zIjEUGunEWnIE,4219
47
+ drawlib/v0_2/private/smartarts/bulletpoints.py,sha256=2wOa5O7pq1qlrdagPaiA9t3UrSCKYAZ5HuVGgrG04u4,6039
48
+ drawlib/v0_2/private/smartarts/dsart.py,sha256=3wKpD4x_ZqZFG3QJAtD3NhKL7_lDlwJ3tY08sfUF02o,1245
49
+ drawlib/v0_2/private/smartarts/gridlayout.py,sha256=5gJGNa5uILFOl7DDPB-GBE-MrzaLq74aMFbDnJI4ZRc,11472
50
+ drawlib/v0_2/private/smartarts/pyramid.py,sha256=bVCkIo6w-9qDqRfOXShvOozxOzI6WlxR_dQMc4l5Q48,14314
49
51
  drawlib/v0_2/private/smartarts/sourcecode.py,sha256=VkPrmxNeYR_E0kyfFsezAKJE7dVNIdrIJUsq348iqyE,8922
50
- drawlib/v0_2/private/smartarts/tree.py,sha256=749gbZDjHj03PSLI_RpKICffjOlQAqoghYBhxBHLqxw,10725
52
+ drawlib/v0_2/private/smartarts/table.py,sha256=Fyji-xUt8JnZQPzbjt0GgibVB0qcr4zA2VgqDXddPmw,25407
53
+ drawlib/v0_2/private/smartarts/tree.py,sha256=BStMQ77yO26RufYwfAbc5H4PEhCynkv9QKD5DbDasUg,11230
51
54
  drawlib/v0_2/private/umls/activity.py,sha256=popFczuMoBcpUeB-KpLLY0wpTfwTknKoEM_e6JlAfUY,454
52
55
  drawlib/v0_2/private/umls/class_.py,sha256=Q8l8pWrxSTSulkUkClJNKjdR-RIgbAJ6AaAExQ5bEWk,451
53
56
  drawlib/v0_2/private/umls/communication.py,sha256=CRZBFlsBFM59THq0gG3bANxtCU_Vy8eC9OCKwD4W5Ng,459
@@ -59,9 +62,9 @@ drawlib/v0_2/private/umls/package.py,sha256=umvvXWLt311XFHmYsHZ4qTxcXwoXWy8vDZeL
59
62
  drawlib/v0_2/private/umls/sequence.py,sha256=0s5EQfSVEq_HpH2ph5Fq_BptFDhIaqS5wjHt4lHY0x8,454
60
63
  drawlib/v0_2/private/umls/state_machine.py,sha256=VSPH7jsOmuPeSV6UbD5-V4PIXd9-dBuCP0N4sdoSfgo,459
61
64
  drawlib/v0_2/private/umls/usecase.py,sha256=QiALmJV4lQyH1zaVUWt7S4_CJ3jgXfo1D3zaqnGC-xM,453
62
- drawlib/v0_2/private/util.py,sha256=1jr3MfpnNXVXv3F2Bex1yGhdxNZj2DtwUJqaskbk2eo,9772
65
+ drawlib/v0_2/private/util.py,sha256=edH_HTzjzMPhaCROkuT1BPD3lbWngbjcHIH2_AXssQg,13452
63
66
  drawlib/v0_2/private/validators/__init__.py,sha256=BYnkfTT0x65pmPpFhh6HKJEOzXvsTZsQcrtTVrq1uxw,444
64
- drawlib/v0_2/private/validators/args.py,sha256=UIqmqqql24OonvMWgl6Afup0u81uZNIiuOA4sl0yviM,13447
67
+ drawlib/v0_2/private/validators/args.py,sha256=fNrxU4GpGaQb-9jq0v1n24rsAVIAGe7R4KQxpayWUVU,13926
65
68
  drawlib/v0_2/private/validators/color.py,sha256=tUmY-6Cw1bPPmDqhWj7Vp85XlMSDon5lBvTaEgNV8YY,2353
66
69
  drawlib/v0_2/private/validators/coordinate.py,sha256=KtOB5VjoBRRVw4-SwFa6cfQEfrT2KFvsNUKsnfSwFpM,6078
67
70
  drawlib/v0_2/private/validators/icon.py,sha256=Q7FrnOy2IAEoMnysc4YNjMyi_TuCR4c-7HMVVMVwWkc,1067
@@ -72,8 +75,8 @@ drawlib/v0_2/private/validators/smartarts.py,sha256=fOAlC0syvZVk-GCLQgaPhhfWr3gc
72
75
  drawlib/v0_2/private/validators/style.py,sha256=R7aLlaVfzdo33L7GLQ3WVfzzD_EsgV2-Y7ERcbFq7QI,3308
73
76
  drawlib/v0_2/private/validators/text.py,sha256=ELT87nekr9hMx7m-wpVTku0QPxL3qCIX4cxI5RbFoIc,1126
74
77
  drawlib/v0_2/private/validators/types.py,sha256=KtiIgivuaFyFaxIGeqr5N8xpzqIk9soiacSzcFDdjSA,4155
75
- drawlib-0.2.3.dev2.dist-info/LICENSE.txt,sha256=h_ZiliCgEDqIYpxmUPmqGGP87VBcUHil1S4wUI48ZKg,11344
76
- drawlib-0.2.3.dev2.dist-info/METADATA,sha256=IcobHma08eUAidWj1U4qq1Wnvn1AGWBbp8AUJNSlqJo,4007
77
- drawlib-0.2.3.dev2.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
78
- drawlib-0.2.3.dev2.dist-info/entry_points.txt,sha256=Lp6mbrRMP-g6c7P6Iz21CEjceLITCWrma3b0ncP30oQ,49
79
- drawlib-0.2.3.dev2.dist-info/RECORD,,
78
+ drawlib-0.2.3.dev4.dist-info/LICENSE.txt,sha256=h_ZiliCgEDqIYpxmUPmqGGP87VBcUHil1S4wUI48ZKg,11344
79
+ drawlib-0.2.3.dev4.dist-info/METADATA,sha256=keuYahbx9v68956lsqVpKMBmY3l0G6rHq28VVvphFkc,4007
80
+ drawlib-0.2.3.dev4.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
81
+ drawlib-0.2.3.dev4.dist-info/entry_points.txt,sha256=Lp6mbrRMP-g6c7P6Iz21CEjceLITCWrma3b0ncP30oQ,49
82
+ drawlib-0.2.3.dev4.dist-info/RECORD,,