Type Guide either in the Documentation or in a readme file. #2822
Replies: 2 comments
-
It would be very nice to have a dedicated In terms of the semantics between |
Beta Was this translation helpful? Give feedback.
-
Union types using the I've seen both solutions being used in several libraries, I think we can go for the "V2" syntax as it is less verbose. |
Beta Was this translation helpful? Give feedback.
-
Description of proposed feature
There should be a clear type guide for which types to prefer in manim. There are a lot of ways to type things for example
Optional[int]
andint | None
are the same thing when considering a linter like mypy, but they convey a different story when reading. For parameters if something has the typeOptional
it's very clear that this parameter can be left out safely and the rest is handled by the function itself.This also reflects itself inside the function when reading the typehints, where the error messages state that the type is
Optional
and thus things likex.something
don't work. This is also the case withint | None
(it translates toUnion[int, None]
but it suggests that this variable can be in general a None value and also might just be changed back to one during the lifetime of the Object.That's why i think we need to discuss a clear typeguide for manim and also have some kind of suggestions and help regarding typing.
I also would suggest the addition of a type module for Custom types needed in the future like the Color type which currently is
str | Color
, but this might be an addition for another day. But could also be discussed here if we need some standard types.Optional[T]
T | None
ndarray
NDArray[dtype]
List[T]
list[T]
Type[cls]
type[cls]
Union[T,K]
T | K
New Types in question
TimeBasedUpdater = Callable[["Mobject", float], None]
NonTimeUpdater = Callable[["Mobject"], None]
Updater = Union[TimeBasedUpdater, NonTimeUpdater]
ManimColor = Union[str, Color]
kwargs: dict[str, Any]
resolution: Tuple[int, int]
Types that return the class itself should return
Self
from thetyping_extensions
ModuleThis resolves conflicts with subclassing later on because the types of the subclass will automatically be inserted when overwriting which resolves the problem of conflicting return types
Use
TYPE_CHECKING
from thetyping
module to reduce import overhead for manim.Related to
ManimColor
as class andParsableManimColor
asTypeAlias
Beta Was this translation helpful? Give feedback.
All reactions