diff --git a/manim/animation/animation.py b/manim/animation/animation.py index cb8fcaddfe..90290eee3e 100644 --- a/manim/animation/animation.py +++ b/manim/animation/animation.py @@ -18,6 +18,8 @@ from copy import deepcopy from typing import TYPE_CHECKING, Callable, Iterable, Sequence +from typing_extensions import Self + if TYPE_CHECKING: from manim.scene.scene import Scene @@ -112,7 +114,7 @@ def __new__( *args, use_override=True, **kwargs, - ): + ) -> Self: if isinstance(mobject, Mobject) and use_override: func = mobject.animation_override_for(cls) if func is not None: diff --git a/manim/typing.py b/manim/typing.py index a6c3e2e1d5..6f16bad905 100644 --- a/manim/typing.py +++ b/manim/typing.py @@ -561,7 +561,9 @@ # Due to current limitations # (see https://github.com/python/mypy/issues/14656 / 8263), # we don't specify the first argument type (Mobject). -FunctionOverride: TypeAlias = Callable[..., None] +# Nor are we able to specify the return type (Animation) since we cannot import +# that here. +FunctionOverride: TypeAlias = Callable """Function type returning an :class:`~.Animation` for the specified :class:`~.Mobject`. """