drawlib 0.2.3.dev3__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.
- drawlib/__init__.py +1 -1
- drawlib/v0_2/apis.py +3 -1
- drawlib/v0_2/private/core_canvas/base.py +53 -1
- drawlib/v0_2/private/core_canvas/canvas.py +7 -3
- drawlib/v0_2/private/core_canvas/line.py +29 -23
- drawlib/v0_2/private/core_canvas/original_arrow.py +247 -268
- drawlib/v0_2/private/core_canvas/patches.py +19 -69
- drawlib/v0_2/private/smartarts/bubblespeech.py +16 -16
- drawlib/v0_2/private/util.py +116 -1
- drawlib/v0_2/private/validators/args.py +13 -13
- {drawlib-0.2.3.dev3.dist-info → drawlib-0.2.3.dev4.dist-info}/METADATA +1 -1
- {drawlib-0.2.3.dev3.dist-info → drawlib-0.2.3.dev4.dist-info}/RECORD +15 -15
- {drawlib-0.2.3.dev3.dist-info → drawlib-0.2.3.dev4.dist-info}/LICENSE.txt +0 -0
- {drawlib-0.2.3.dev3.dist-info → drawlib-0.2.3.dev4.dist-info}/WHEEL +0 -0
- {drawlib-0.2.3.dev3.dist-info → drawlib-0.2.3.dev4.dist-info}/entry_points.txt +0 -0
|
@@ -16,7 +16,6 @@ from matplotlib.patches import (
|
|
|
16
16
|
Arc,
|
|
17
17
|
Circle,
|
|
18
18
|
Ellipse,
|
|
19
|
-
Polygon,
|
|
20
19
|
RegularPolygon,
|
|
21
20
|
Wedge,
|
|
22
21
|
)
|
|
@@ -26,7 +25,7 @@ from drawlib.v0_2.private.core.model import ShapeStyle, ShapeTextStyle
|
|
|
26
25
|
from drawlib.v0_2.private.core.theme import dtheme
|
|
27
26
|
from drawlib.v0_2.private.core.util import ShapeUtil
|
|
28
27
|
from drawlib.v0_2.private.core_canvas.base import CanvasBase
|
|
29
|
-
from drawlib.v0_2.private.util import error_handler
|
|
28
|
+
from drawlib.v0_2.private.util import error_handler
|
|
30
29
|
|
|
31
30
|
|
|
32
31
|
class CanvasPatchesFeature(CanvasBase):
|
|
@@ -46,8 +45,8 @@ class CanvasPatchesFeature(CanvasBase):
|
|
|
46
45
|
xy: Tuple[float, float],
|
|
47
46
|
width: float,
|
|
48
47
|
height: float,
|
|
49
|
-
|
|
50
|
-
|
|
48
|
+
angle_start: Union[int, float] = 0.0,
|
|
49
|
+
angle_end: Union[int, float] = 360.0,
|
|
51
50
|
angle: Union[int, float] = 0.0,
|
|
52
51
|
style: Union[ShapeStyle, str, None] = None,
|
|
53
52
|
text: str = "",
|
|
@@ -60,8 +59,8 @@ class CanvasPatchesFeature(CanvasBase):
|
|
|
60
59
|
xy: Center of the arc.
|
|
61
60
|
width: Width of the arc.
|
|
62
61
|
height: Height of the arc.
|
|
63
|
-
|
|
64
|
-
|
|
62
|
+
angle_start (optional): Starting angle of the arc (default is 0.0).
|
|
63
|
+
angle_end (optional): Ending angle of the arc (default is 360.0).
|
|
65
64
|
angle (optional): Rotation angle of the arc.
|
|
66
65
|
style (optional): Style of the arc.
|
|
67
66
|
text (optional): Text shown at the center of the arc.
|
|
@@ -90,8 +89,8 @@ class CanvasPatchesFeature(CanvasBase):
|
|
|
90
89
|
width=width,
|
|
91
90
|
height=height,
|
|
92
91
|
angle=angle,
|
|
93
|
-
theta1=
|
|
94
|
-
theta2=
|
|
92
|
+
theta1=angle_start,
|
|
93
|
+
theta2=angle_end,
|
|
95
94
|
**options,
|
|
96
95
|
)
|
|
97
96
|
)
|
|
@@ -227,55 +226,6 @@ class CanvasPatchesFeature(CanvasBase):
|
|
|
227
226
|
),
|
|
228
227
|
)
|
|
229
228
|
|
|
230
|
-
@error_handler
|
|
231
|
-
def polygon(
|
|
232
|
-
self,
|
|
233
|
-
xys: List[Tuple[float, float]],
|
|
234
|
-
style: Union[ShapeStyle, str, None] = None,
|
|
235
|
-
text: str = "",
|
|
236
|
-
textsize: Optional[float] = None,
|
|
237
|
-
textstyle: Union[ShapeTextStyle, str, None] = None,
|
|
238
|
-
) -> None:
|
|
239
|
-
"""Draw a polygon on the canvas.
|
|
240
|
-
|
|
241
|
-
Args:
|
|
242
|
-
xys: List of vertices [(x1, y1), ...(x_n, y_n)].
|
|
243
|
-
style (optional): Style of the polygon.
|
|
244
|
-
text (optional): Text shown at the center of the polygon.
|
|
245
|
-
textsize (optional): Font size of the text.
|
|
246
|
-
textstyle (optional): Style of the text.
|
|
247
|
-
|
|
248
|
-
Returns:
|
|
249
|
-
None
|
|
250
|
-
"""
|
|
251
|
-
style, textstyle = ShapeUtil.format_styles(
|
|
252
|
-
style,
|
|
253
|
-
textstyle,
|
|
254
|
-
dtheme.polygonstyles.get,
|
|
255
|
-
dtheme.polygontextstyles.get,
|
|
256
|
-
)
|
|
257
|
-
validator.validate_shape_args(locals())
|
|
258
|
-
|
|
259
|
-
if textsize is not None:
|
|
260
|
-
textstyle.size = textsize
|
|
261
|
-
|
|
262
|
-
style.halign = None
|
|
263
|
-
style.valign = None
|
|
264
|
-
options = ShapeUtil.get_shape_options(style)
|
|
265
|
-
self._artists.append(Polygon(xy=xys, closed=True, **options))
|
|
266
|
-
|
|
267
|
-
if not text:
|
|
268
|
-
return
|
|
269
|
-
center, (_, _) = get_center_and_size(xys)
|
|
270
|
-
self._artists.append(
|
|
271
|
-
ShapeUtil.get_shape_text(
|
|
272
|
-
center,
|
|
273
|
-
text=text,
|
|
274
|
-
angle=0,
|
|
275
|
-
style=textstyle,
|
|
276
|
-
),
|
|
277
|
-
)
|
|
278
|
-
|
|
279
229
|
@error_handler
|
|
280
230
|
def regularpolygon(
|
|
281
231
|
self,
|
|
@@ -345,8 +295,8 @@ class CanvasPatchesFeature(CanvasBase):
|
|
|
345
295
|
xy: Tuple[float, float],
|
|
346
296
|
radius: float,
|
|
347
297
|
width: Optional[float] = None,
|
|
348
|
-
|
|
349
|
-
|
|
298
|
+
angle_start: float = 0,
|
|
299
|
+
angle_end: float = 360,
|
|
350
300
|
angle: Union[int, float] = 0.0,
|
|
351
301
|
style: Union[ShapeStyle, str, None] = None,
|
|
352
302
|
text: str = "",
|
|
@@ -360,8 +310,8 @@ class CanvasPatchesFeature(CanvasBase):
|
|
|
360
310
|
radius: Radius of the wedge.
|
|
361
311
|
width (optional): Length from outer to inner circumference.
|
|
362
312
|
Default is same as radius.
|
|
363
|
-
|
|
364
|
-
|
|
313
|
+
angle_start (optional): Starting angle of the wedge (default is 0).
|
|
314
|
+
angle_end (optional): Ending angle of the wedge (default is 360).
|
|
365
315
|
angle (optional): Rotation angle of the wedge.
|
|
366
316
|
style (optional): Style of the wedge.
|
|
367
317
|
text (optional): Text shown at the center of the wedge.
|
|
@@ -391,8 +341,8 @@ class CanvasPatchesFeature(CanvasBase):
|
|
|
391
341
|
center=xy,
|
|
392
342
|
r=radius,
|
|
393
343
|
width=width, # None makes no hole
|
|
394
|
-
theta1=
|
|
395
|
-
theta2=
|
|
344
|
+
theta1=angle_start + angle,
|
|
345
|
+
theta2=angle_end + angle,
|
|
396
346
|
**options,
|
|
397
347
|
)
|
|
398
348
|
)
|
|
@@ -459,8 +409,8 @@ class CanvasPatchesFeature(CanvasBase):
|
|
|
459
409
|
self,
|
|
460
410
|
xy: Tuple[float, float],
|
|
461
411
|
radius: float,
|
|
462
|
-
|
|
463
|
-
|
|
412
|
+
angle_start: float = 0,
|
|
413
|
+
angle_end: float = 180,
|
|
464
414
|
angle: Union[int, float] = 0.0,
|
|
465
415
|
style: Union[ShapeStyle, str, None] = None,
|
|
466
416
|
text: str = "",
|
|
@@ -472,8 +422,8 @@ class CanvasPatchesFeature(CanvasBase):
|
|
|
472
422
|
Args:
|
|
473
423
|
xy: Center of the fan.
|
|
474
424
|
radius: Radius of the fan.
|
|
475
|
-
|
|
476
|
-
|
|
425
|
+
angle_start (optional): Starting angle of the fan (default is 0).
|
|
426
|
+
angle_end (optional): Ending angle of the fan (default is 180).
|
|
477
427
|
angle (optional): Rotation angle of the fan.
|
|
478
428
|
style (optional): Style of the fan.
|
|
479
429
|
text (optional): Text shown at the center of the fan.
|
|
@@ -495,8 +445,8 @@ class CanvasPatchesFeature(CanvasBase):
|
|
|
495
445
|
xy=xy,
|
|
496
446
|
radius=radius,
|
|
497
447
|
width=None,
|
|
498
|
-
|
|
499
|
-
|
|
448
|
+
angle_start=angle_start,
|
|
449
|
+
angle_end=angle_end,
|
|
500
450
|
angle=angle,
|
|
501
451
|
style=style,
|
|
502
452
|
text=text,
|
|
@@ -28,9 +28,9 @@ def bubblespeech(
|
|
|
28
28
|
width: float,
|
|
29
29
|
height: float,
|
|
30
30
|
tail_edge: Literal["left", "top", "right", "bottom"],
|
|
31
|
-
|
|
31
|
+
tail_start_ratio: float,
|
|
32
32
|
tail_vertex_xy: Tuple[float, float],
|
|
33
|
-
|
|
33
|
+
tail_end_ratio: float,
|
|
34
34
|
style: Union[ShapeStyle, str, None] = None,
|
|
35
35
|
text: str = "",
|
|
36
36
|
textsize: Optional[float] = None,
|
|
@@ -43,9 +43,9 @@ def bubblespeech(
|
|
|
43
43
|
width (float): The width of the bubble.
|
|
44
44
|
height (float): The height of the bubble.
|
|
45
45
|
tail_edge (Literal["left", "top", "right", "bottom"]): The edge on which the tail will be positioned.
|
|
46
|
-
|
|
46
|
+
tail_start_ratio (float): The ratio along the edge where the tail starts.
|
|
47
47
|
tail_vertex_xy (Tuple[float, float]): The (x, y) coordinates of the tail's vertex.
|
|
48
|
-
|
|
48
|
+
tail_end_ratio (float): The ratio along the edge where the tail ends.
|
|
49
49
|
style (Union[ShapeStyle, str, None], optional): The style of the bubble. Defaults to None.
|
|
50
50
|
text (str, optional): The text to display inside the bubble. Defaults to an empty string.
|
|
51
51
|
textsize (Optional[float], optional): The size of the text. Defaults to None.
|
|
@@ -66,33 +66,33 @@ def bubblespeech(
|
|
|
66
66
|
if textsize is not None:
|
|
67
67
|
textstyle.size = textsize
|
|
68
68
|
|
|
69
|
-
if
|
|
70
|
-
raise ValueError("
|
|
71
|
-
if
|
|
72
|
-
raise ValueError("
|
|
69
|
+
if tail_start_ratio > tail_end_ratio:
|
|
70
|
+
raise ValueError("tail_start_ratio must be smaller than tail_end_ratio.")
|
|
71
|
+
if tail_end_ratio > 1.0:
|
|
72
|
+
raise ValueError("tail_start_ratio and tail_end_ratio must be smaller than 1.0")
|
|
73
73
|
|
|
74
74
|
x, y = xy
|
|
75
75
|
xys = []
|
|
76
76
|
xys.append((x, y)) # left bottom
|
|
77
77
|
if tail_edge == "left":
|
|
78
|
-
xys.append((x, y + height *
|
|
78
|
+
xys.append((x, y + height * tail_start_ratio))
|
|
79
79
|
xys.append(tail_vertex_xy)
|
|
80
|
-
xys.append((x, y + height *
|
|
80
|
+
xys.append((x, y + height * tail_end_ratio))
|
|
81
81
|
xys.append((x, y + height)) # left top
|
|
82
82
|
if tail_edge == "top":
|
|
83
|
-
xys.append((x + width *
|
|
83
|
+
xys.append((x + width * tail_start_ratio, y + height))
|
|
84
84
|
xys.append(tail_vertex_xy)
|
|
85
|
-
xys.append((x + width *
|
|
85
|
+
xys.append((x + width * tail_end_ratio, y + height))
|
|
86
86
|
xys.append((x + width, y + height)) # right top
|
|
87
87
|
if tail_edge == "right":
|
|
88
|
-
xys.append((x + width, y + height *
|
|
88
|
+
xys.append((x + width, y + height * tail_end_ratio))
|
|
89
89
|
xys.append(tail_vertex_xy)
|
|
90
|
-
xys.append((x + width, y + height *
|
|
90
|
+
xys.append((x + width, y + height * tail_start_ratio))
|
|
91
91
|
xys.append((x + width, y)) # right bottom
|
|
92
92
|
if tail_edge == "bottom":
|
|
93
|
-
xys.append((x + width *
|
|
93
|
+
xys.append((x + width * tail_end_ratio, y))
|
|
94
94
|
xys.append(tail_vertex_xy)
|
|
95
|
-
xys.append((x + width *
|
|
95
|
+
xys.append((x + width * tail_start_ratio, y))
|
|
96
96
|
|
|
97
97
|
options = ShapeUtil.get_shape_options(style)
|
|
98
98
|
canvas._artists.append(Polygon(xy=xys, closed=True, **options))
|
drawlib/v0_2/private/util.py
CHANGED
|
@@ -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.
|
|
@@ -229,11 +229,11 @@ def validate_line_args(args: Dict[str, Any]) -> None: # noqa: C901
|
|
|
229
229
|
elif "radius" == arg_name:
|
|
230
230
|
types_validator.validate_plus_float("radius", value, is_0_ok=False)
|
|
231
231
|
|
|
232
|
-
elif "
|
|
233
|
-
coordinate_validator.validate_angle("
|
|
232
|
+
elif "angle_start" == arg_name:
|
|
233
|
+
coordinate_validator.validate_angle("angle_start", value)
|
|
234
234
|
|
|
235
|
-
elif "
|
|
236
|
-
coordinate_validator.validate_angle("
|
|
235
|
+
elif "angle_end" == arg_name:
|
|
236
|
+
coordinate_validator.validate_angle("angle_end", value)
|
|
237
237
|
|
|
238
238
|
elif "style" == arg_name:
|
|
239
239
|
style_validator.validate_linestyle("style", value)
|
|
@@ -317,11 +317,11 @@ def validate_shape_args( # noqa: C901
|
|
|
317
317
|
elif "r" == arg_name:
|
|
318
318
|
types_validator.validate_plus_float("r", value)
|
|
319
319
|
|
|
320
|
-
elif "
|
|
321
|
-
coordinate_validator.validate_angle("
|
|
320
|
+
elif "angle_start" == arg_name:
|
|
321
|
+
coordinate_validator.validate_angle("angle_start", value)
|
|
322
322
|
|
|
323
|
-
elif "
|
|
324
|
-
coordinate_validator.validate_angle("
|
|
323
|
+
elif "angle_end" == arg_name:
|
|
324
|
+
coordinate_validator.validate_angle("angle_end", value)
|
|
325
325
|
|
|
326
326
|
elif "corner_angle" == arg_name:
|
|
327
327
|
coordinate_validator.validate_angle_max90("corner_angle", value)
|
|
@@ -339,7 +339,7 @@ def validate_shape_args( # noqa: C901
|
|
|
339
339
|
types_validator.validate_plus_float("head_length", value, is_0_ok=False)
|
|
340
340
|
|
|
341
341
|
elif "head_angle" == arg_name:
|
|
342
|
-
coordinate_validator.validate_angle("
|
|
342
|
+
coordinate_validator.validate_angle("head_angle", value)
|
|
343
343
|
|
|
344
344
|
elif "head" == arg_name:
|
|
345
345
|
shape_validator.validate_head_style("head", value)
|
|
@@ -370,14 +370,14 @@ def validate_shape_args( # noqa: C901
|
|
|
370
370
|
elif "tail_edge" == arg_name:
|
|
371
371
|
smartart_validator.validate_tail_edge("tail_edge", value)
|
|
372
372
|
|
|
373
|
-
elif "
|
|
374
|
-
types_validator.validate_float_0_to_1("
|
|
373
|
+
elif "tail_start_ratio" == arg_name:
|
|
374
|
+
types_validator.validate_float_0_to_1("tail_start_ratio", value)
|
|
375
375
|
|
|
376
376
|
elif "tail_vertex_xy" == arg_name:
|
|
377
377
|
coordinate_validator.validate_xy("tail_vertex_xy", value)
|
|
378
378
|
|
|
379
|
-
elif "
|
|
380
|
-
types_validator.validate_float_0_to_1("
|
|
379
|
+
elif "tail_end_ratio" == arg_name:
|
|
380
|
+
types_validator.validate_float_0_to_1("tail_end_ratio", value)
|
|
381
381
|
|
|
382
382
|
else:
|
|
383
383
|
raise ValueError(f'Drawlib internal bug. Argument "{arg_name}" is not validated at arg validator.')
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
drawlib/__init__.py,sha256=
|
|
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,7 +8,7 @@ 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=
|
|
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
|
|
@@ -22,13 +22,13 @@ drawlib/v0_2/private/core/theme_officials.py,sha256=AeZdENE-B8kSTcDAnWLKU-b77Pss
|
|
|
22
22
|
drawlib/v0_2/private/core/theme_style_caches.py,sha256=k22Jrm0nsZITg_Mv0qGyv5pMkivLOb-s-svnWqqm8xY,186385
|
|
23
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=
|
|
26
|
-
drawlib/v0_2/private/core_canvas/canvas.py,sha256=
|
|
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=
|
|
29
|
-
drawlib/v0_2/private/core_canvas/original_arrow.py,sha256=
|
|
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=
|
|
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
|
|
@@ -43,7 +43,7 @@ drawlib/v0_2/private/logging.py,sha256=tZT62wFfPbwY2JBQVtwoS2qf7HBvCjfB-oXdATEnu
|
|
|
43
43
|
drawlib/v0_2/private/smartarts/__init__.py,sha256=ii_xf3fXWPvP4SqSdcLO0gIbx643oRbVch58KlaYAnA,445
|
|
44
44
|
drawlib/v0_2/private/smartarts/boxlist.py,sha256=ymY5yAWhev3JpQi493_8mkTydYaqNMjohj7kpoMFnLw,6714
|
|
45
45
|
drawlib/v0_2/private/smartarts/boxtree.py,sha256=f6EXkPMEkU8v4vvBxA2Bu2_vV6nJ1nIxppuj9UPhf2E,4655
|
|
46
|
-
drawlib/v0_2/private/smartarts/bubblespeech.py,sha256=
|
|
46
|
+
drawlib/v0_2/private/smartarts/bubblespeech.py,sha256=2ynQt0W5A0EGRpE1MX-1DQnd01NzM4zIjEUGunEWnIE,4219
|
|
47
47
|
drawlib/v0_2/private/smartarts/bulletpoints.py,sha256=2wOa5O7pq1qlrdagPaiA9t3UrSCKYAZ5HuVGgrG04u4,6039
|
|
48
48
|
drawlib/v0_2/private/smartarts/dsart.py,sha256=3wKpD4x_ZqZFG3QJAtD3NhKL7_lDlwJ3tY08sfUF02o,1245
|
|
49
49
|
drawlib/v0_2/private/smartarts/gridlayout.py,sha256=5gJGNa5uILFOl7DDPB-GBE-MrzaLq74aMFbDnJI4ZRc,11472
|
|
@@ -62,9 +62,9 @@ drawlib/v0_2/private/umls/package.py,sha256=umvvXWLt311XFHmYsHZ4qTxcXwoXWy8vDZeL
|
|
|
62
62
|
drawlib/v0_2/private/umls/sequence.py,sha256=0s5EQfSVEq_HpH2ph5Fq_BptFDhIaqS5wjHt4lHY0x8,454
|
|
63
63
|
drawlib/v0_2/private/umls/state_machine.py,sha256=VSPH7jsOmuPeSV6UbD5-V4PIXd9-dBuCP0N4sdoSfgo,459
|
|
64
64
|
drawlib/v0_2/private/umls/usecase.py,sha256=QiALmJV4lQyH1zaVUWt7S4_CJ3jgXfo1D3zaqnGC-xM,453
|
|
65
|
-
drawlib/v0_2/private/util.py,sha256=
|
|
65
|
+
drawlib/v0_2/private/util.py,sha256=edH_HTzjzMPhaCROkuT1BPD3lbWngbjcHIH2_AXssQg,13452
|
|
66
66
|
drawlib/v0_2/private/validators/__init__.py,sha256=BYnkfTT0x65pmPpFhh6HKJEOzXvsTZsQcrtTVrq1uxw,444
|
|
67
|
-
drawlib/v0_2/private/validators/args.py,sha256=
|
|
67
|
+
drawlib/v0_2/private/validators/args.py,sha256=fNrxU4GpGaQb-9jq0v1n24rsAVIAGe7R4KQxpayWUVU,13926
|
|
68
68
|
drawlib/v0_2/private/validators/color.py,sha256=tUmY-6Cw1bPPmDqhWj7Vp85XlMSDon5lBvTaEgNV8YY,2353
|
|
69
69
|
drawlib/v0_2/private/validators/coordinate.py,sha256=KtOB5VjoBRRVw4-SwFa6cfQEfrT2KFvsNUKsnfSwFpM,6078
|
|
70
70
|
drawlib/v0_2/private/validators/icon.py,sha256=Q7FrnOy2IAEoMnysc4YNjMyi_TuCR4c-7HMVVMVwWkc,1067
|
|
@@ -75,8 +75,8 @@ drawlib/v0_2/private/validators/smartarts.py,sha256=fOAlC0syvZVk-GCLQgaPhhfWr3gc
|
|
|
75
75
|
drawlib/v0_2/private/validators/style.py,sha256=R7aLlaVfzdo33L7GLQ3WVfzzD_EsgV2-Y7ERcbFq7QI,3308
|
|
76
76
|
drawlib/v0_2/private/validators/text.py,sha256=ELT87nekr9hMx7m-wpVTku0QPxL3qCIX4cxI5RbFoIc,1126
|
|
77
77
|
drawlib/v0_2/private/validators/types.py,sha256=KtiIgivuaFyFaxIGeqr5N8xpzqIk9soiacSzcFDdjSA,4155
|
|
78
|
-
drawlib-0.2.3.
|
|
79
|
-
drawlib-0.2.3.
|
|
80
|
-
drawlib-0.2.3.
|
|
81
|
-
drawlib-0.2.3.
|
|
82
|
-
drawlib-0.2.3.
|
|
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,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|