manim 0.17.0__py3-none-any.whl → 0.19.1__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.
- manim/__init__.py +11 -6
- manim/__main__.py +62 -19
- manim/_config/__init__.py +10 -9
- manim/_config/cli_colors.py +26 -9
- manim/_config/default.cfg +1 -3
- manim/_config/logger_utils.py +23 -13
- manim/_config/utils.py +662 -468
- manim/animation/animation.py +164 -18
- manim/animation/changing.py +34 -23
- manim/animation/composition.py +265 -67
- manim/animation/creation.py +208 -26
- manim/animation/fading.py +16 -18
- manim/animation/growing.py +35 -15
- manim/animation/indication.py +150 -76
- manim/animation/movement.py +56 -22
- manim/animation/numbers.py +64 -6
- manim/animation/rotation.py +78 -7
- manim/animation/specialized.py +6 -7
- manim/animation/speedmodifier.py +13 -10
- manim/animation/transform.py +14 -11
- manim/animation/transform_matching_parts.py +3 -4
- manim/animation/updaters/mobject_update_utils.py +152 -30
- manim/animation/updaters/update.py +10 -7
- manim/camera/camera.py +182 -118
- manim/camera/mapping_camera.py +34 -3
- manim/camera/moving_camera.py +95 -74
- manim/camera/multi_camera.py +23 -15
- manim/camera/three_d_camera.py +70 -52
- manim/cli/__init__.py +17 -0
- manim/cli/cfg/group.py +76 -44
- manim/cli/checkhealth/checks.py +192 -0
- manim/cli/checkhealth/commands.py +90 -0
- manim/cli/default_group.py +158 -25
- manim/cli/init/commands.py +33 -25
- manim/cli/plugins/commands.py +16 -3
- manim/cli/render/commands.py +72 -60
- manim/cli/render/ease_of_access_options.py +4 -3
- manim/cli/render/global_options.py +59 -17
- manim/cli/render/output_options.py +6 -5
- manim/cli/render/render_options.py +98 -33
- manim/constants.py +109 -59
- manim/data_structures.py +31 -0
- manim/mobject/frame.py +8 -5
- manim/mobject/geometry/__init__.py +1 -0
- manim/mobject/geometry/arc.py +277 -135
- manim/mobject/geometry/boolean_ops.py +32 -31
- manim/mobject/geometry/labeled.py +376 -0
- manim/mobject/geometry/line.py +192 -87
- manim/mobject/geometry/polygram.py +224 -58
- manim/mobject/geometry/shape_matchers.py +61 -25
- manim/mobject/geometry/tips.py +122 -48
- manim/mobject/graph.py +1027 -419
- manim/mobject/graphing/coordinate_systems.py +533 -278
- manim/mobject/graphing/functions.py +53 -32
- manim/mobject/graphing/number_line.py +123 -65
- manim/mobject/graphing/probability.py +88 -62
- manim/mobject/graphing/scale.py +33 -19
- manim/mobject/logo.py +118 -28
- manim/mobject/matrix.py +87 -83
- manim/mobject/mobject.py +912 -442
- manim/mobject/opengl/dot_cloud.py +16 -5
- manim/mobject/opengl/opengl_compatibility.py +4 -2
- manim/mobject/opengl/opengl_geometry.py +254 -153
- manim/mobject/opengl/opengl_image_mobject.py +3 -1
- manim/mobject/opengl/opengl_mobject.py +779 -482
- manim/mobject/opengl/opengl_point_cloud_mobject.py +41 -14
- manim/mobject/opengl/opengl_surface.py +14 -92
- manim/mobject/opengl/opengl_three_dimensions.py +12 -8
- manim/mobject/opengl/opengl_vectorized_mobject.py +98 -100
- manim/mobject/svg/brace.py +173 -41
- manim/mobject/svg/svg_mobject.py +139 -53
- manim/mobject/table.py +61 -68
- manim/mobject/text/code_mobject.py +193 -539
- manim/mobject/text/numbers.py +81 -34
- manim/mobject/text/tex_mobject.py +130 -78
- manim/mobject/text/text_mobject.py +288 -164
- manim/mobject/three_d/polyhedra.py +111 -13
- manim/mobject/three_d/three_d_utils.py +17 -8
- manim/mobject/three_d/three_dimensions.py +239 -106
- manim/mobject/types/image_mobject.py +50 -30
- manim/mobject/types/point_cloud_mobject.py +120 -75
- manim/mobject/types/vectorized_mobject.py +841 -408
- manim/mobject/value_tracker.py +105 -38
- manim/mobject/vector_field.py +50 -31
- manim/opengl/__init__.py +3 -3
- manim/plugins/__init__.py +14 -1
- manim/plugins/plugins_flags.py +10 -14
- manim/renderer/cairo_renderer.py +65 -50
- manim/renderer/opengl_renderer.py +89 -69
- manim/renderer/opengl_renderer_window.py +39 -18
- manim/renderer/shader.py +123 -87
- manim/renderer/shader_wrapper.py +44 -28
- manim/renderer/vectorized_mobject_rendering.py +38 -10
- manim/scene/moving_camera_scene.py +32 -3
- manim/scene/scene.py +507 -242
- manim/scene/scene_file_writer.py +371 -220
- manim/scene/section.py +20 -16
- manim/scene/three_d_scene.py +14 -22
- manim/scene/vector_space_scene.py +223 -129
- manim/scene/zoomed_scene.py +46 -41
- manim/typing.py +990 -0
- manim/utils/bezier.py +1823 -371
- manim/utils/caching.py +12 -5
- manim/utils/color/AS2700.py +236 -0
- manim/utils/color/BS381.py +318 -0
- manim/utils/color/DVIPSNAMES.py +96 -0
- manim/utils/color/SVGNAMES.py +179 -0
- manim/utils/color/X11.py +533 -0
- manim/utils/color/XKCD.py +952 -0
- manim/utils/color/__init__.py +61 -0
- manim/utils/color/core.py +1667 -0
- manim/utils/color/manim_colors.py +218 -0
- manim/utils/commands.py +48 -20
- manim/utils/config_ops.py +39 -19
- manim/utils/debug.py +8 -7
- manim/utils/deprecation.py +86 -39
- manim/utils/docbuild/__init__.py +17 -0
- manim/utils/docbuild/autoaliasattr_directive.py +236 -0
- manim/utils/docbuild/autocolor_directive.py +99 -0
- manim/utils/docbuild/manim_directive.py +94 -41
- manim/utils/docbuild/module_parsing.py +245 -0
- manim/utils/exceptions.py +6 -0
- manim/utils/family.py +5 -3
- manim/utils/family_ops.py +17 -4
- manim/utils/file_ops.py +27 -17
- manim/utils/hashing.py +55 -45
- manim/utils/images.py +13 -7
- manim/utils/ipython_magic.py +13 -7
- manim/utils/iterables.py +163 -120
- manim/utils/module_ops.py +66 -24
- manim/utils/opengl.py +77 -24
- manim/utils/parameter_parsing.py +32 -0
- manim/utils/paths.py +30 -33
- manim/utils/polylabel.py +235 -0
- manim/utils/qhull.py +218 -0
- manim/utils/rate_functions.py +98 -32
- manim/utils/simple_functions.py +25 -33
- manim/utils/sounds.py +7 -1
- manim/utils/space_ops.py +188 -115
- manim/utils/testing/__init__.py +17 -0
- manim/utils/testing/_frames_testers.py +13 -8
- manim/utils/testing/_show_diff.py +5 -3
- manim/utils/testing/_test_class_makers.py +34 -18
- manim/utils/testing/frames_comparison.py +37 -19
- manim/utils/tex.py +130 -198
- manim/utils/tex_file_writing.py +77 -47
- manim/utils/tex_templates.py +2 -1
- manim/utils/unit.py +6 -5
- {manim-0.17.0.dist-info → manim-0.19.1.dist-info}/METADATA +64 -65
- manim-0.19.1.dist-info/RECORD +220 -0
- {manim-0.17.0.dist-info → manim-0.19.1.dist-info}/WHEEL +1 -1
- manim-0.19.1.dist-info/entry_points.txt +3 -0
- {manim-0.17.0.dist-info → manim-0.19.1.dist-info/licenses}/LICENSE.community +1 -1
- manim/cli/new/group.py +0 -189
- manim/communitycolors.py +0 -9
- manim/gui/__init__.py +0 -0
- manim/gui/gui.py +0 -82
- manim/plugins/import_plugins.py +0 -43
- manim/utils/color.py +0 -552
- manim-0.17.0.dist-info/RECORD +0 -206
- manim-0.17.0.dist-info/entry_points.txt +0 -4
- /manim/cli/{new → checkhealth}/__init__.py +0 -0
- {manim-0.17.0.dist-info → manim-0.19.1.dist-info/licenses}/LICENSE +0 -0
manim/mobject/geometry/tips.py
CHANGED
|
@@ -8,8 +8,13 @@ __all__ = [
|
|
|
8
8
|
"ArrowCircleTip",
|
|
9
9
|
"ArrowSquareTip",
|
|
10
10
|
"ArrowSquareFilledTip",
|
|
11
|
+
"ArrowTriangleTip",
|
|
12
|
+
"ArrowTriangleFilledTip",
|
|
13
|
+
"StealthTip",
|
|
11
14
|
]
|
|
12
15
|
|
|
16
|
+
from typing import TYPE_CHECKING, Any
|
|
17
|
+
|
|
13
18
|
import numpy as np
|
|
14
19
|
|
|
15
20
|
from manim.constants import *
|
|
@@ -19,6 +24,9 @@ from manim.mobject.opengl.opengl_compatibility import ConvertToOpenGL
|
|
|
19
24
|
from manim.mobject.types.vectorized_mobject import VMobject
|
|
20
25
|
from manim.utils.space_ops import angle_of_vector
|
|
21
26
|
|
|
27
|
+
if TYPE_CHECKING:
|
|
28
|
+
from manim.typing import Point3D, Vector3D
|
|
29
|
+
|
|
22
30
|
|
|
23
31
|
class ArrowTip(VMobject, metaclass=ConvertToOpenGL):
|
|
24
32
|
r"""Base class for arrow tips.
|
|
@@ -30,6 +38,7 @@ class ArrowTip(VMobject, metaclass=ConvertToOpenGL):
|
|
|
30
38
|
:class:`ArrowCircleFilledTip`
|
|
31
39
|
:class:`ArrowSquareTip`
|
|
32
40
|
:class:`ArrowSquareFilledTip`
|
|
41
|
+
:class:`StealthTip`
|
|
33
42
|
|
|
34
43
|
Examples
|
|
35
44
|
--------
|
|
@@ -51,8 +60,9 @@ class ArrowTip(VMobject, metaclass=ConvertToOpenGL):
|
|
|
51
60
|
... RegularPolygon.__init__(self, n=5, **kwargs)
|
|
52
61
|
... self.width = length
|
|
53
62
|
... self.stretch_to_fit_height(length)
|
|
54
|
-
>>> arr = Arrow(
|
|
55
|
-
...
|
|
63
|
+
>>> arr = Arrow(
|
|
64
|
+
... np.array([-2, -2, 0]), np.array([2, 2, 0]), tip_shape=MyCustomArrowTip
|
|
65
|
+
... )
|
|
56
66
|
>>> isinstance(arr.tip, RegularPolygon)
|
|
57
67
|
True
|
|
58
68
|
>>> from manim import Scene, Create
|
|
@@ -72,30 +82,41 @@ class ArrowTip(VMobject, metaclass=ConvertToOpenGL):
|
|
|
72
82
|
.. manim:: ArrowTipsShowcase
|
|
73
83
|
:save_last_frame:
|
|
74
84
|
|
|
75
|
-
from manim.mobject.geometry.tips import ArrowTriangleTip,\
|
|
76
|
-
ArrowSquareTip, ArrowSquareFilledTip,\
|
|
77
|
-
ArrowCircleTip, ArrowCircleFilledTip
|
|
78
85
|
class ArrowTipsShowcase(Scene):
|
|
79
86
|
def construct(self):
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
87
|
+
tip_names = [
|
|
88
|
+
'Default (YELLOW)', 'ArrowTriangleTip', 'Default', 'ArrowSquareTip',
|
|
89
|
+
'ArrowSquareFilledTip', 'ArrowCircleTip', 'ArrowCircleFilledTip', 'StealthTip'
|
|
90
|
+
]
|
|
91
|
+
|
|
92
|
+
big_arrows = [
|
|
93
|
+
Arrow(start=[-4, 3.5, 0], end=[2, 3.5, 0], color=YELLOW),
|
|
94
|
+
Arrow(start=[-4, 2.5, 0], end=[2, 2.5, 0], tip_shape=ArrowTriangleTip),
|
|
95
|
+
Arrow(start=[-4, 1.5, 0], end=[2, 1.5, 0]),
|
|
96
|
+
Arrow(start=[-4, 0.5, 0], end=[2, 0.5, 0], tip_shape=ArrowSquareTip),
|
|
97
|
+
|
|
98
|
+
Arrow([-4, -0.5, 0], [2, -0.5, 0], tip_shape=ArrowSquareFilledTip),
|
|
99
|
+
Arrow([-4, -1.5, 0], [2, -1.5, 0], tip_shape=ArrowCircleTip),
|
|
100
|
+
Arrow([-4, -2.5, 0], [2, -2.5, 0], tip_shape=ArrowCircleFilledTip),
|
|
101
|
+
Arrow([-4, -3.5, 0], [2, -3.5, 0], tip_shape=StealthTip)
|
|
102
|
+
]
|
|
103
|
+
|
|
104
|
+
small_arrows = (
|
|
105
|
+
arrow.copy().scale(0.5, scale_tips=True).next_to(arrow, RIGHT) for arrow in big_arrows
|
|
106
|
+
)
|
|
107
|
+
|
|
108
|
+
labels = (
|
|
109
|
+
Text(tip_names[i], font='monospace', font_size=20, color=BLUE).next_to(big_arrows[i], LEFT) for i in range(len(big_arrows))
|
|
110
|
+
)
|
|
111
|
+
|
|
112
|
+
self.add(*big_arrows, *small_arrows, *labels)
|
|
92
113
|
"""
|
|
93
114
|
|
|
94
|
-
def __init__(self, *args, **kwargs):
|
|
115
|
+
def __init__(self, *args: Any, **kwargs: Any) -> None:
|
|
95
116
|
raise NotImplementedError("Has to be implemented in inheriting subclasses.")
|
|
96
117
|
|
|
97
118
|
@property
|
|
98
|
-
def base(self):
|
|
119
|
+
def base(self) -> Point3D:
|
|
99
120
|
r"""The base point of the arrow tip.
|
|
100
121
|
|
|
101
122
|
This is the point connecting to the arrow line.
|
|
@@ -113,7 +134,7 @@ class ArrowTip(VMobject, metaclass=ConvertToOpenGL):
|
|
|
113
134
|
return self.point_from_proportion(0.5)
|
|
114
135
|
|
|
115
136
|
@property
|
|
116
|
-
def tip_point(self):
|
|
137
|
+
def tip_point(self) -> Point3D:
|
|
117
138
|
r"""The tip point of the arrow tip.
|
|
118
139
|
|
|
119
140
|
Examples
|
|
@@ -126,10 +147,14 @@ class ArrowTip(VMobject, metaclass=ConvertToOpenGL):
|
|
|
126
147
|
array([2., 0., 0.])
|
|
127
148
|
|
|
128
149
|
"""
|
|
129
|
-
|
|
150
|
+
# Type inference of extracting an element from a list, is not
|
|
151
|
+
# supported by numpy, see this numpy issue
|
|
152
|
+
# https://github.com/numpy/numpy/issues/16544
|
|
153
|
+
tip_point: Point3D = self.points[0]
|
|
154
|
+
return tip_point
|
|
130
155
|
|
|
131
156
|
@property
|
|
132
|
-
def vector(self):
|
|
157
|
+
def vector(self) -> Vector3D:
|
|
133
158
|
r"""The vector pointing from the base point to the tip point.
|
|
134
159
|
|
|
135
160
|
Examples
|
|
@@ -145,7 +170,7 @@ class ArrowTip(VMobject, metaclass=ConvertToOpenGL):
|
|
|
145
170
|
return self.tip_point - self.base
|
|
146
171
|
|
|
147
172
|
@property
|
|
148
|
-
def tip_angle(self):
|
|
173
|
+
def tip_angle(self) -> float:
|
|
149
174
|
r"""The angle of the arrow tip.
|
|
150
175
|
|
|
151
176
|
Examples
|
|
@@ -154,14 +179,14 @@ class ArrowTip(VMobject, metaclass=ConvertToOpenGL):
|
|
|
154
179
|
|
|
155
180
|
>>> from manim import Arrow
|
|
156
181
|
>>> arrow = Arrow(np.array([0, 0, 0]), np.array([1, 1, 0]), buff=0)
|
|
157
|
-
>>> round(arrow.tip.tip_angle, 5) == round(PI/4, 5)
|
|
182
|
+
>>> bool(round(arrow.tip.tip_angle, 5) == round(PI/4, 5))
|
|
158
183
|
True
|
|
159
184
|
|
|
160
185
|
"""
|
|
161
186
|
return angle_of_vector(self.vector)
|
|
162
187
|
|
|
163
188
|
@property
|
|
164
|
-
def length(self):
|
|
189
|
+
def length(self) -> float:
|
|
165
190
|
r"""The length of the arrow tip.
|
|
166
191
|
|
|
167
192
|
Examples
|
|
@@ -174,7 +199,50 @@ class ArrowTip(VMobject, metaclass=ConvertToOpenGL):
|
|
|
174
199
|
0.35
|
|
175
200
|
|
|
176
201
|
"""
|
|
177
|
-
return np.linalg.norm(self.vector)
|
|
202
|
+
return float(np.linalg.norm(self.vector))
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
class StealthTip(ArrowTip):
|
|
206
|
+
r"""'Stealth' fighter / kite arrow shape.
|
|
207
|
+
|
|
208
|
+
Naming is inspired by the corresponding
|
|
209
|
+
`TikZ arrow shape <https://tikz.dev/tikz-arrows#sec-16.3>`__.
|
|
210
|
+
"""
|
|
211
|
+
|
|
212
|
+
def __init__(
|
|
213
|
+
self,
|
|
214
|
+
fill_opacity: float = 1,
|
|
215
|
+
stroke_width: float = 3,
|
|
216
|
+
length: float = DEFAULT_ARROW_TIP_LENGTH / 2,
|
|
217
|
+
start_angle: float = PI,
|
|
218
|
+
**kwargs: Any,
|
|
219
|
+
):
|
|
220
|
+
self.start_angle = start_angle
|
|
221
|
+
VMobject.__init__(
|
|
222
|
+
self, fill_opacity=fill_opacity, stroke_width=stroke_width, **kwargs
|
|
223
|
+
)
|
|
224
|
+
self.set_points_as_corners(
|
|
225
|
+
np.array(
|
|
226
|
+
[
|
|
227
|
+
[2, 0, 0], # tip
|
|
228
|
+
[-1.2, 1.6, 0],
|
|
229
|
+
[0, 0, 0], # base
|
|
230
|
+
[-1.2, -1.6, 0],
|
|
231
|
+
[2, 0, 0], # close path, back to tip
|
|
232
|
+
]
|
|
233
|
+
)
|
|
234
|
+
)
|
|
235
|
+
self.scale(length / self.length)
|
|
236
|
+
|
|
237
|
+
@property
|
|
238
|
+
def length(self) -> float:
|
|
239
|
+
"""The length of the arrow tip.
|
|
240
|
+
|
|
241
|
+
In this case, the length is computed as the height of
|
|
242
|
+
the triangle encompassing the stealth tip (otherwise,
|
|
243
|
+
the tip is scaled too large).
|
|
244
|
+
"""
|
|
245
|
+
return float(np.linalg.norm(self.vector) * 1.6)
|
|
178
246
|
|
|
179
247
|
|
|
180
248
|
class ArrowTriangleTip(ArrowTip, Triangle):
|
|
@@ -182,13 +250,13 @@ class ArrowTriangleTip(ArrowTip, Triangle):
|
|
|
182
250
|
|
|
183
251
|
def __init__(
|
|
184
252
|
self,
|
|
185
|
-
fill_opacity=0,
|
|
186
|
-
stroke_width=3,
|
|
187
|
-
length=DEFAULT_ARROW_TIP_LENGTH,
|
|
188
|
-
width=DEFAULT_ARROW_TIP_LENGTH,
|
|
189
|
-
start_angle=PI,
|
|
190
|
-
**kwargs,
|
|
191
|
-
):
|
|
253
|
+
fill_opacity: float = 0,
|
|
254
|
+
stroke_width: float = 3,
|
|
255
|
+
length: float = DEFAULT_ARROW_TIP_LENGTH,
|
|
256
|
+
width: float = DEFAULT_ARROW_TIP_LENGTH,
|
|
257
|
+
start_angle: float = PI,
|
|
258
|
+
**kwargs: Any,
|
|
259
|
+
) -> None:
|
|
192
260
|
Triangle.__init__(
|
|
193
261
|
self,
|
|
194
262
|
fill_opacity=fill_opacity,
|
|
@@ -208,7 +276,9 @@ class ArrowTriangleFilledTip(ArrowTriangleTip):
|
|
|
208
276
|
This is the default arrow tip shape.
|
|
209
277
|
"""
|
|
210
278
|
|
|
211
|
-
def __init__(
|
|
279
|
+
def __init__(
|
|
280
|
+
self, fill_opacity: float = 1, stroke_width: float = 0, **kwargs: Any
|
|
281
|
+
) -> None:
|
|
212
282
|
super().__init__(fill_opacity=fill_opacity, stroke_width=stroke_width, **kwargs)
|
|
213
283
|
|
|
214
284
|
|
|
@@ -217,12 +287,12 @@ class ArrowCircleTip(ArrowTip, Circle):
|
|
|
217
287
|
|
|
218
288
|
def __init__(
|
|
219
289
|
self,
|
|
220
|
-
fill_opacity=0,
|
|
221
|
-
stroke_width=3,
|
|
222
|
-
length=DEFAULT_ARROW_TIP_LENGTH,
|
|
223
|
-
start_angle=PI,
|
|
224
|
-
**kwargs,
|
|
225
|
-
):
|
|
290
|
+
fill_opacity: float = 0,
|
|
291
|
+
stroke_width: float = 3,
|
|
292
|
+
length: float = DEFAULT_ARROW_TIP_LENGTH,
|
|
293
|
+
start_angle: float = PI,
|
|
294
|
+
**kwargs: Any,
|
|
295
|
+
) -> None:
|
|
226
296
|
self.start_angle = start_angle
|
|
227
297
|
Circle.__init__(
|
|
228
298
|
self, fill_opacity=fill_opacity, stroke_width=stroke_width, **kwargs
|
|
@@ -234,7 +304,9 @@ class ArrowCircleTip(ArrowTip, Circle):
|
|
|
234
304
|
class ArrowCircleFilledTip(ArrowCircleTip):
|
|
235
305
|
r"""Circular arrow tip with filled tip."""
|
|
236
306
|
|
|
237
|
-
def __init__(
|
|
307
|
+
def __init__(
|
|
308
|
+
self, fill_opacity: float = 1, stroke_width: float = 0, **kwargs: Any
|
|
309
|
+
) -> None:
|
|
238
310
|
super().__init__(fill_opacity=fill_opacity, stroke_width=stroke_width, **kwargs)
|
|
239
311
|
|
|
240
312
|
|
|
@@ -243,12 +315,12 @@ class ArrowSquareTip(ArrowTip, Square):
|
|
|
243
315
|
|
|
244
316
|
def __init__(
|
|
245
317
|
self,
|
|
246
|
-
fill_opacity=0,
|
|
247
|
-
stroke_width=3,
|
|
248
|
-
length=DEFAULT_ARROW_TIP_LENGTH,
|
|
249
|
-
start_angle=PI,
|
|
250
|
-
**kwargs,
|
|
251
|
-
):
|
|
318
|
+
fill_opacity: float = 0,
|
|
319
|
+
stroke_width: float = 3,
|
|
320
|
+
length: float = DEFAULT_ARROW_TIP_LENGTH,
|
|
321
|
+
start_angle: float = PI,
|
|
322
|
+
**kwargs: Any,
|
|
323
|
+
) -> None:
|
|
252
324
|
self.start_angle = start_angle
|
|
253
325
|
Square.__init__(
|
|
254
326
|
self,
|
|
@@ -264,5 +336,7 @@ class ArrowSquareTip(ArrowTip, Square):
|
|
|
264
336
|
class ArrowSquareFilledTip(ArrowSquareTip):
|
|
265
337
|
r"""Square arrow tip with filled tip."""
|
|
266
338
|
|
|
267
|
-
def __init__(
|
|
339
|
+
def __init__(
|
|
340
|
+
self, fill_opacity: float = 1, stroke_width: float = 0, **kwargs: Any
|
|
341
|
+
) -> None:
|
|
268
342
|
super().__init__(fill_opacity=fill_opacity, stroke_width=stroke_width, **kwargs)
|