diff --git a/manim/_config/__init__.py b/manim/_config/__init__.py
index ebcca2d550..94bea642aa 100644
--- a/manim/_config/__init__.py
+++ b/manim/_config/__init__.py
@@ -49,7 +49,7 @@ def tempconfig(temp: ManimConfig | dict) -> _GeneratorContextManager:
 
     Parameters
     ----------
-    temp : Union[:class:`ManimConfig`, :class:`dict`]
+    temp
         Object whose keys will be used to temporarily update the global
         ``config``.
 
diff --git a/manim/_config/logger_utils.py b/manim/_config/logger_utils.py
index 64b341b7be..ca31b4fa54 100644
--- a/manim/_config/logger_utils.py
+++ b/manim/_config/logger_utils.py
@@ -56,10 +56,10 @@ def make_logger(
 
     Parameters
     ----------
-    parser : :class:`configparser.ConfigParser`
+    parser
         A parser containing any .cfg files in use.
 
-    verbosity : :class:`str`
+    verbosity
         The verbosity level of the logger.
 
     Returns
@@ -106,7 +106,7 @@ def parse_theme(parser: configparser.ConfigParser) -> Theme:
 
     Parameters
     ----------
-    parser : :class:`configparser.ConfigParser`
+    parser
         A parser containing any .cfg files in use.
 
     Returns
@@ -148,9 +148,12 @@ def set_file_logger(scene_name: str, module_name: str, log_dir: Path) -> None:
 
     Parameters
     ----------
-    config : :class:`ManimConfig`
-        The global config, used to determine the log file path.
-
+    scene_name
+        The name of the scene, used in the name of the log file.
+    module_name
+        The name of the module, used in the name of the log file.
+    log_dir
+        Path to the folder where log files are stored.
     """
     # Note: The log file name will be
     # <name_of_animation_file>_<name_of_scene>.log, gotten from config.  So it
diff --git a/manim/_config/utils.py b/manim/_config/utils.py
index 90210b9157..2786a57a74 100644
--- a/manim/_config/utils.py
+++ b/manim/_config/utils.py
@@ -342,7 +342,7 @@ def update(self, obj: ManimConfig | dict) -> None:
 
         Parameters
         ----------
-        obj : Union[:class:`ManimConfig`, :class:`dict`]
+        obj
             The object to copy values from.
 
         Returns
@@ -490,7 +490,7 @@ def digest_parser(self, parser: configparser.ConfigParser) -> ManimConfig:
 
         Parameters
         ----------
-        parser : :class:`ConfigParser`
+        parser
             An object reflecting the contents of one or many ``.cfg`` files.  In
             particular, it may reflect the contents of multiple files that have
             been parsed in a cascading fashion.
@@ -664,7 +664,7 @@ def digest_args(self, args: argparse.Namespace) -> ManimConfig:
 
         Parameters
         ----------
-        args : :class:`argparse.Namespace`
+        args
             An object returned by :func:`.main_utils.parse_args()`.
 
         Returns
@@ -1316,11 +1316,11 @@ def get_dir(self, key: str, **kwargs: str) -> Path:
 
         Parameters
         ----------
-        key : :class:`str`
+        key
             The config option to be resolved.  Must be an option ending in
             ``'_dir'``, for example ``'media_dir'`` or ``'video_dir'``.
 
-        kwargs : :class:`str`
+        kwargs
             Any strings to be used when resolving the directory.
 
         Returns
diff --git a/manim/animation/animation.py b/manim/animation/animation.py
index 65b45c3004..b35c67405a 100644
--- a/manim/animation/animation.py
+++ b/manim/animation/animation.py
@@ -415,9 +415,8 @@ def set_rate_func(
 
         Parameters
         ----------
-        run_time
-            The new time the animation should take in seconds.
-
+        rate_func
+            The new function defining the animation progress based on the relative runtime (see :mod:`~.rate_functions`).
 
         Returns
         -------
diff --git a/manim/animation/creation.py b/manim/animation/creation.py
index 46c5ad9fae..541a2afafa 100644
--- a/manim/animation/creation.py
+++ b/manim/animation/creation.py
@@ -138,7 +138,7 @@ class Create(ShowPartial):
 
     Parameters
     ----------
-    mobject : :class:`~.VMobject`
+    mobject
         The VMobject to animate.
 
     Raises
@@ -374,7 +374,7 @@ class Unwrite(Write):
 
     Parameters
     ----------
-    reverse : :class:`bool`
+    reverse
         Set True to have the animation start erasing from the last submobject first.
 
     Examples
@@ -542,7 +542,7 @@ class AddTextLetterByLetter(ShowIncreasingSubsets):
 
     Parameters
     ----------
-    time_per_char : :class:`float`
+    time_per_char
         Frequency of appearance of the letters.
 
     .. tip::
@@ -585,7 +585,7 @@ class RemoveTextLetterByLetter(AddTextLetterByLetter):
 
     Parameters
     ----------
-    time_per_char : :class:`float`
+    time_per_char
         Frequency of appearance of the letters.
 
     .. tip::
diff --git a/manim/animation/indication.py b/manim/animation/indication.py
index d320ec3a40..405581025d 100644
--- a/manim/animation/indication.py
+++ b/manim/animation/indication.py
@@ -77,7 +77,7 @@ class FocusOn(Transform):
         The color of the spotlight.
     run_time
         The duration of the animation.
-    kwargs : Any
+    kwargs
         Additional arguments to be passed to the :class:`~.Succession` constructor
 
     Examples
@@ -132,7 +132,7 @@ class Indicate(Transform):
         The color the mobject temporally takes.
     rate_func
         The function definig the animation progress at every point in time.
-    kwargs : Any
+    kwargs
         Additional arguments to be passed to the :class:`~.Succession` constructor
 
     Examples
@@ -186,7 +186,7 @@ class Flash(AnimationGroup):
         The time width used for the flash lines. See :class:`.~ShowPassingFlash` for more details.
     run_time
         The duration of the animation.
-    kwargs : Any
+    kwargs
         Additional arguments to be passed to the :class:`~.Succession` constructor
 
     Examples
@@ -486,7 +486,7 @@ class Wiggle(Animation):
 
     Parameters
     ----------
-    mobject : Mobject
+    mobject
         The mobject to wiggle.
     scale_value
         The factor by which the mobject will be temporarily scaled.
@@ -581,7 +581,7 @@ class Circumscribe(Succession):
         The color of the surrounding shape.
     run_time
         The duration of the entire animation.
-    kwargs : Any
+    kwargs
         Additional arguments to be passed to the :class:`~.Succession` constructor
 
     Examples
diff --git a/manim/camera/camera.py b/manim/camera/camera.py
index 81dfa78d0e..cdc625cc21 100644
--- a/manim/camera/camera.py
+++ b/manim/camera/camera.py
@@ -11,7 +11,7 @@
 import pathlib
 import time
 from functools import reduce
-from typing import Any
+from typing import Any, Callable, Iterable
 
 import cairo
 import numpy as np
@@ -36,42 +36,38 @@ class Camera:
 
     This is the object which takes care of what exactly is displayed
     on screen at any given moment.
-
-    Some important configuration values and local variables to note are:
-
-    background_image : :class:`str`, optional
-        The path to an image that should be the background image.
-        If not set, the background is filled with `self.background_color`
-
-    pixel_height : :class:`int`, optional
-        The height of the scene in pixels.
-
     """
 
     def __init__(
         self,
-        background_image=None,
-        frame_center=ORIGIN,
-        image_mode="RGBA",
-        n_channels=4,
-        pixel_array_dtype="uint8",
-        z_buff_func=lambda m: np.round(m.get_center()[2], 2),
-        cairo_line_width_multiple=0.01,
-        use_z_index=True,
-        background=None,
-        pixel_height=None,
-        pixel_width=None,
-        frame_height=None,
-        frame_width=None,
-        frame_rate=None,
+        background_image: str | None = None,
+        frame_center: np.ndarray = ORIGIN,
+        image_mode: str = "RGBA",
+        n_channels: int = 4,
+        pixel_array_dtype: str = "uint8",
+        cairo_line_width_multiple: float = 0.01,
+        use_z_index: bool = True,
+        background: np.ndarray | None = None,
+        pixel_height: int | None = None,
+        pixel_width: int | None = None,
+        frame_height: float | None = None,
+        frame_width: float | None = None,
+        frame_rate: float | None = None,
         **kwargs,
     ):
         """Initialises the Camera.
 
         Parameters
         ----------
-        background : optional
+        background_image
+            The path to an image that should be the background image.
+            If not set, the background is filled with `self.background_color`
+        background
             What self.background should be, by default None as will be set later.
+        pixel_height
+            The height of the scene in pixels.
+        pixel_width
+            The width of the scene in pixels.
         **kwargs
             Any local variables to be set.
         """
@@ -80,7 +76,6 @@ def __init__(
         self.image_mode = image_mode
         self.n_channels = n_channels
         self.pixel_array_dtype = pixel_array_dtype
-        self.z_buff_func = z_buff_func
         self.cairo_line_width_multiple = cairo_line_width_multiple
         self.use_z_index = use_z_index
         self.background = background
@@ -149,7 +144,7 @@ def background_opacity(self, alpha):
         self._background_opacity = alpha
         self.init_background()
 
-    def type_or_raise(self, mobject):
+    def type_or_raise(self, mobject: Mobject):
         """Return the type of mobject, if it is a type that can be rendered.
 
         If `mobject` is an instance of a class that inherits from a class that
@@ -159,7 +154,7 @@ def type_or_raise(self, mobject):
 
         Parameters
         ----------
-        mobject : :class:`~.Mobject`
+        mobject
             The object to take the type of.
 
         Notes
@@ -190,15 +185,15 @@ def type_or_raise(self, mobject):
                 return _type
         raise TypeError(f"Displaying an object of class {_type} is not supported")
 
-    def reset_pixel_shape(self, new_height, new_width):
+    def reset_pixel_shape(self, new_height: float, new_width: float):
         """This method resets the height and width
         of a single pixel to the passed new_height and new_width.
 
         Parameters
         ----------
-        new_height : int, float
+        new_height
             The new height of the entire scene in pixels
-        new_width : int, float
+        new_width
             The new width of the entire scene in pixels
         """
         self.pixel_width = new_width
@@ -207,7 +202,7 @@ def reset_pixel_shape(self, new_height, new_width):
         self.resize_frame_shape()
         self.reset()
 
-    def resize_frame_shape(self, fixed_dimension=0):
+    def resize_frame_shape(self, fixed_dimension: int = 0):
         """
         Changes frame_shape to match the aspect ratio
         of the pixels, where fixed_dimension determines
@@ -216,7 +211,7 @@ def resize_frame_shape(self, fixed_dimension=0):
 
         Parameters
         ----------
-        fixed_dimension : int
+        fixed_dimension
             If 0, height is scaled with respect to width
             else, width is scaled with respect to height.
         """
@@ -258,14 +253,14 @@ def init_background(self):
             )
             self.background[:, :] = background_rgba
 
-    def get_image(self, pixel_array=None):
+    def get_image(self, pixel_array: np.ndarray | list | tuple | None = None):
         """Returns an image from the passed
         pixel array, or from the current frame
         if the passed pixel array is none.
 
         Parameters
         ----------
-        pixel_array : np.array, list, tuple, optional
+        pixel_array
             The pixel array from which to get an image, by default None
 
         Returns
@@ -277,15 +272,17 @@ def get_image(self, pixel_array=None):
             pixel_array = self.pixel_array
         return Image.fromarray(pixel_array, mode=self.image_mode)
 
-    def convert_pixel_array(self, pixel_array, convert_from_floats=False):
+    def convert_pixel_array(
+        self, pixel_array: np.ndarray | list | tuple, convert_from_floats: bool = False
+    ):
         """Converts a pixel array from values that have floats in then
         to proper RGB values.
 
         Parameters
         ----------
-        pixel_array : np.array, list, tuple
+        pixel_array
             Pixel array to convert.
-        convert_from_floats : bool, optional
+        convert_from_floats
             Whether or not to convert float values to ints, by default False
 
         Returns
@@ -302,14 +299,16 @@ def convert_pixel_array(self, pixel_array, convert_from_floats=False):
             )
         return retval
 
-    def set_pixel_array(self, pixel_array, convert_from_floats=False):
+    def set_pixel_array(
+        self, pixel_array: np.ndarray | list | tuple, convert_from_floats: bool = False
+    ):
         """Sets the pixel array of the camera to the passed pixel array.
 
         Parameters
         ----------
-        pixel_array : np.array, list, tuple
+        pixel_array
             The pixel array to convert and then set as the camera's pixel array.
-        convert_from_floats : bool, optional
+        convert_from_floats
             Whether or not to convert float values to proper RGB values, by default False
         """
         converted_array = self.convert_pixel_array(pixel_array, convert_from_floats)
@@ -322,21 +321,25 @@ def set_pixel_array(self, pixel_array, convert_from_floats=False):
             # Set in place
             self.pixel_array[:, :, :] = converted_array[:, :, :]
 
-    def set_background(self, pixel_array, convert_from_floats=False):
+    def set_background(
+        self, pixel_array: np.ndarray | list | tuple, convert_from_floats: bool = False
+    ):
         """Sets the background to the passed pixel_array after converting
         to valid RGB values.
 
         Parameters
         ----------
-        pixel_array : np.array, list, tuple
+        pixel_array
             The pixel array to set the background to.
-        convert_from_floats : bool, optional
+        convert_from_floats
             Whether or not to convert floats values to proper RGB valid ones, by default False
         """
         self.background = self.convert_pixel_array(pixel_array, convert_from_floats)
 
     # TODO, this should live in utils, not as a method of Camera
-    def make_background_from_func(self, coords_to_colors_func):
+    def make_background_from_func(
+        self, coords_to_colors_func: Callable[[np.ndarray], np.ndarray]
+    ):
         """
         Makes a pixel array for the background by using coords_to_colors_func to determine each pixel's color. Each input
         pixel's color. Each input to coords_to_colors_func is an (x, y) pair in space (in ordinary space coordinates; not
@@ -344,7 +347,7 @@ def make_background_from_func(self, coords_to_colors_func):
 
         Parameters
         ----------
-        coords_to_colors_func : function
+        coords_to_colors_func
             The function whose input is an (x,y) pair of coordinates and
             whose return values must be the colors for that point
 
@@ -361,7 +364,9 @@ def make_background_from_func(self, coords_to_colors_func):
 
         return self.convert_pixel_array(new_background, convert_from_floats=True)
 
-    def set_background_from_func(self, coords_to_colors_func):
+    def set_background_from_func(
+        self, coords_to_colors_func: Callable[[np.ndarray], np.ndarray]
+    ):
         """
         Sets the background to a pixel array using coords_to_colors_func to determine each pixel's color. Each input
         pixel's color. Each input to coords_to_colors_func is an (x, y) pair in space (in ordinary space coordinates; not
@@ -369,7 +374,7 @@ def set_background_from_func(self, coords_to_colors_func):
 
         Parameters
         ----------
-        coords_to_colors_func : function
+        coords_to_colors_func
             The function whose input is an (x,y) pair of coordinates and
             whose return values must be the colors for that point
         """
@@ -383,7 +388,7 @@ def reset(self):
         -------
         Camera
             The camera object after setting the pixel array.
-        """ ""
+        """
         self.set_pixel_array(self.background)
         return self
 
@@ -394,20 +399,20 @@ def set_frame_to_background(self, background):
 
     def get_mobjects_to_display(
         self,
-        mobjects,
-        include_submobjects=True,
-        excluded_mobjects=None,
+        mobjects: Iterable[Mobject],
+        include_submobjects: bool = True,
+        excluded_mobjects: list | None = None,
     ):
         """Used to get the list of mobjects to display
         with the camera.
 
         Parameters
         ----------
-        mobjects : Mobject
+        mobjects
             The Mobjects
-        include_submobjects : bool, optional
+        include_submobjects
             Whether or not to include the submobjects of mobjects, by default True
-        excluded_mobjects : list, optional
+        excluded_mobjects
             Any mobjects to exclude, by default None
 
         Returns
@@ -427,15 +432,15 @@ def get_mobjects_to_display(
                     use_z_index=self.use_z_index,
                 )
                 mobjects = list_difference_update(mobjects, all_excluded)
-        return mobjects
+        return list(mobjects)
 
-    def is_in_frame(self, mobject):
+    def is_in_frame(self, mobject: Mobject):
         """Checks whether the passed mobject is in
         frame or not.
 
         Parameters
         ----------
-        mobject : Mobject
+        mobject
             The mobject for which the checking needs to be done.
 
         Returns
@@ -472,7 +477,7 @@ def capture_mobject(self, mobject: Mobject, **kwargs: Any):
         """
         return self.capture_mobjects([mobject], **kwargs)
 
-    def capture_mobjects(self, mobjects, **kwargs):
+    def capture_mobjects(self, mobjects: Iterable[Mobject], **kwargs):
         """Capture mobjects by printing them on :attr:`pixel_array`.
 
         This is the essential function that converts the contents of a Scene
@@ -480,10 +485,10 @@ def capture_mobjects(self, mobjects, **kwargs):
 
         Parameters
         ----------
-        mobjects : :class:`~.Mobject`
+        mobjects
             Mobjects to capture.
 
-        kwargs : Any
+        kwargs
             Keyword arguments to be passed to :meth:`get_mobjects_to_display`.
 
         Notes
@@ -507,13 +512,13 @@ def capture_mobjects(self, mobjects, **kwargs):
     # NOTE: None of the methods below have been mentioned outside of their definitions. Their DocStrings are not as
     # detailed as possible.
 
-    def get_cached_cairo_context(self, pixel_array):
+    def get_cached_cairo_context(self, pixel_array: np.ndarray):
         """Returns the cached cairo context of the passed
         pixel array if it exists, and None if it doesn't.
 
         Parameters
         ----------
-        pixel_array : np.array
+        pixel_array
             The pixel array to check.
 
         Returns
@@ -523,19 +528,19 @@ def get_cached_cairo_context(self, pixel_array):
         """
         return self.pixel_array_to_cairo_context.get(id(pixel_array), None)
 
-    def cache_cairo_context(self, pixel_array, ctx):
+    def cache_cairo_context(self, pixel_array: np.ndarray, ctx: cairo.Context):
         """Caches the passed Pixel array into a Cairo Context
 
         Parameters
         ----------
-        pixel_array : np.array
+        pixel_array
             The pixel array to cache
-        ctx : cairo.Context
+        ctx
             The context to cache it into.
         """
         self.pixel_array_to_cairo_context[id(pixel_array)] = ctx
 
-    def get_cairo_context(self, pixel_array):
+    def get_cairo_context(self, pixel_array: np.ndarray):
         """Returns the cairo context for a pixel array after
         caching it to self.pixel_array_to_cairo_context
         If that array has already been cached, it returns the
@@ -543,7 +548,7 @@ def get_cairo_context(self, pixel_array):
 
         Parameters
         ----------
-        pixel_array : np.array
+        pixel_array
             The Pixel array to get the cairo context of.
 
         Returns
@@ -580,14 +585,16 @@ def get_cairo_context(self, pixel_array):
         self.cache_cairo_context(pixel_array, ctx)
         return ctx
 
-    def display_multiple_vectorized_mobjects(self, vmobjects, pixel_array):
+    def display_multiple_vectorized_mobjects(
+        self, vmobjects: list, pixel_array: np.ndarray
+    ):
         """Displays multiple VMobjects in the pixel_array
 
         Parameters
         ----------
-        vmobjects : list
+        vmobjects
             list of VMobjects to display
-        pixel_array : np.array
+        pixel_array
             The pixel array
         """
         if len(vmobjects) == 0:
@@ -602,29 +609,31 @@ def display_multiple_vectorized_mobjects(self, vmobjects, pixel_array):
                     pixel_array,
                 )
 
-    def display_multiple_non_background_colored_vmobjects(self, vmobjects, pixel_array):
+    def display_multiple_non_background_colored_vmobjects(
+        self, vmobjects: list, pixel_array: np.ndarray
+    ):
         """Displays multiple VMobjects in the cairo context, as long as they don't have
         background colors.
 
         Parameters
         ----------
-        vmobjects : list
+        vmobjects
             list of the VMobjects
-        pixel_array : np.ndarray
+        pixel_array
             The Pixel array to add the VMobjects to.
         """
         ctx = self.get_cairo_context(pixel_array)
         for vmobject in vmobjects:
             self.display_vectorized(vmobject, ctx)
 
-    def display_vectorized(self, vmobject, ctx):
+    def display_vectorized(self, vmobject: VMobject, ctx: cairo.Context):
         """Displays a VMobject in the cairo context
 
         Parameters
         ----------
-        vmobject : VMobject
+        vmobject
             The Vectorized Mobject to display
-        ctx : cairo.Context
+        ctx
             The cairo context to use.
 
         Returns
@@ -638,14 +647,14 @@ def display_vectorized(self, vmobject, ctx):
         self.apply_stroke(ctx, vmobject)
         return self
 
-    def set_cairo_context_path(self, ctx, vmobject):
+    def set_cairo_context_path(self, ctx: cairo.Context, vmobject: VMobject):
         """Sets a path for the cairo context with the vmobject passed
 
         Parameters
         ----------
-        ctx : cairo.Context
+        ctx
             The cairo context
-        vmobject : VMobject
+        vmobject
             The VMobject
 
         Returns
@@ -672,16 +681,18 @@ def set_cairo_context_path(self, ctx, vmobject):
                 ctx.close_path()
         return self
 
-    def set_cairo_context_color(self, ctx, rgbas, vmobject):
+    def set_cairo_context_color(
+        self, ctx: cairo.Context, rgbas: np.ndarray, vmobject: VMobject
+    ):
         """Sets the color of the cairo context
 
         Parameters
         ----------
-        ctx : cairo.Context
+        ctx
             The cairo context
-        rgbas : np.ndarray
+        rgbas
             The RGBA array with which to color the context.
-        vmobject : VMobject
+        vmobject
             The VMobject with which to set the color.
 
         Returns
@@ -704,14 +715,14 @@ def set_cairo_context_color(self, ctx, rgbas, vmobject):
             ctx.set_source(pat)
         return self
 
-    def apply_fill(self, ctx, vmobject):
+    def apply_fill(self, ctx: cairo.Context, vmobject: VMobject):
         """Fills the cairo context
 
         Parameters
         ----------
-        ctx : cairo.Context
+        ctx
             The cairo context
-        vmobject : VMobject
+        vmobject
             The VMobject
 
         Returns
@@ -723,16 +734,18 @@ def apply_fill(self, ctx, vmobject):
         ctx.fill_preserve()
         return self
 
-    def apply_stroke(self, ctx, vmobject, background=False):
+    def apply_stroke(
+        self, ctx: cairo.Context, vmobject: VMobject, background: bool = False
+    ):
         """Applies a stroke to the VMobject in the cairo context.
 
         Parameters
         ----------
-        ctx : cairo.Context
+        ctx
             The cairo context
-        vmobject : VMobject
+        vmobject
             The VMobject
-        background : bool, optional
+        background
             Whether or not to consider the background when applying this
             stroke width, by default False
 
@@ -758,15 +771,15 @@ def apply_stroke(self, ctx, vmobject, background=False):
         ctx.stroke_preserve()
         return self
 
-    def get_stroke_rgbas(self, vmobject, background=False):
+    def get_stroke_rgbas(self, vmobject: VMobject, background: bool = False):
         """Gets the RGBA array for the stroke of the passed
         VMobject.
 
         Parameters
         ----------
-        vmobject : VMobject
+        vmobject
             The VMobject
-        background : bool, optional
+        background
             Whether or not to consider the background when getting the stroke
             RGBAs, by default False
 
@@ -777,12 +790,12 @@ def get_stroke_rgbas(self, vmobject, background=False):
         """
         return vmobject.get_stroke_rgbas(background)
 
-    def get_fill_rgbas(self, vmobject):
+    def get_fill_rgbas(self, vmobject: VMobject):
         """Returns the RGBA array of the fill of the passed VMobject
 
         Parameters
         ----------
-        vmobject : VMobject
+        vmobject
             The VMobject
 
         Returns
@@ -808,14 +821,16 @@ def get_background_colored_vmobject_displayer(self):
             setattr(self, bcvd, BackgroundColoredVMobjectDisplayer(self))
         return getattr(self, bcvd)
 
-    def display_multiple_background_colored_vmobjects(self, cvmobjects, pixel_array):
+    def display_multiple_background_colored_vmobjects(
+        self, cvmobjects: list, pixel_array: np.ndarray
+    ):
         """Displays multiple vmobjects that have the same color as the background.
 
         Parameters
         ----------
-        cvmobjects : list
+        cvmobjects
             List of Colored VMobjects
-        pixel_array : np.array
+        pixel_array
             The pixel array.
 
         Returns
@@ -833,14 +848,16 @@ def display_multiple_background_colored_vmobjects(self, cvmobjects, pixel_array)
     # NOTE: Out of the following methods, only `transform_points_pre_display` and `points_to_pixel_coords` have been mentioned outside of their definitions.
     # As a result, the other methods do not have as detailed docstrings as would be preferred.
 
-    def display_multiple_point_cloud_mobjects(self, pmobjects, pixel_array):
+    def display_multiple_point_cloud_mobjects(
+        self, pmobjects: list, pixel_array: np.ndarray
+    ):
         """Displays multiple PMobjects by modifying the passed pixel array.
 
         Parameters
         ----------
-        pmobjects : list
+        pmobjects
             List of PMobjects
-        pixel_array : np.array
+        pixel_array
             The pixel array to modify.
         """
         for pmobject in pmobjects:
@@ -852,20 +869,27 @@ def display_multiple_point_cloud_mobjects(self, pmobjects, pixel_array):
                 pixel_array,
             )
 
-    def display_point_cloud(self, pmobject, points, rgbas, thickness, pixel_array):
+    def display_point_cloud(
+        self,
+        pmobject: PMobject,
+        points: list,
+        rgbas: np.ndarray,
+        thickness: float,
+        pixel_array: np.ndarray,
+    ):
         """Displays a PMobject by modifying the Pixel array suitably..
         TODO: Write a description for the rgbas argument.
         Parameters
         ----------
-        pmobject : PMobject
+        pmobject
             Point Cloud Mobject
-        points : list
+        points
             The points to display in the point cloud mobject
-        rgbas : np.array
+        rgbas
 
-        thickness : int, float
+        thickness
             The thickness of each point of the PMobject
-        pixel_array : np.array
+        pixel_array
             The pixel array to modify.
 
         """
@@ -896,27 +920,31 @@ def display_point_cloud(self, pmobject, points, rgbas, thickness, pixel_array):
         new_pa[indices] = rgbas
         pixel_array[:, :] = new_pa.reshape((ph, pw, rgba_len))
 
-    def display_multiple_image_mobjects(self, image_mobjects, pixel_array):
+    def display_multiple_image_mobjects(
+        self, image_mobjects: list, pixel_array: np.ndarray
+    ):
         """Displays multiple image mobjects by modifying the passed pixel_array.
 
         Parameters
         ----------
-        image_mobjects : list
+        image_mobjects
             list of ImageMobjects
-        pixel_array : np.array
+        pixel_array
             The pixel array to modify.
         """
         for image_mobject in image_mobjects:
             self.display_image_mobject(image_mobject, pixel_array)
 
-    def display_image_mobject(self, image_mobject: AbstractImageMobject, pixel_array):
+    def display_image_mobject(
+        self, image_mobject: AbstractImageMobject, pixel_array: np.ndarray
+    ):
         """Displays an ImageMobject by changing the pixel_array suitably.
 
         Parameters
         ----------
-        image_mobject : ImageMobject
+        image_mobject
             The imageMobject to display
-        pixel_array : np.ndarray
+        pixel_array
             The Pixel array to put the imagemobject in.
         """
         corner_coords = self.points_to_pixel_coords(image_mobject, image_mobject.points)
@@ -966,26 +994,26 @@ def display_image_mobject(self, image_mobject: AbstractImageMobject, pixel_array
         # Paint on top of existing pixel array
         self.overlay_PIL_image(pixel_array, full_image)
 
-    def overlay_rgba_array(self, pixel_array, new_array):
+    def overlay_rgba_array(self, pixel_array: np.ndarray, new_array: np.ndarray):
         """Overlays an RGBA array on top of the given Pixel array.
 
         Parameters
         ----------
-        pixel_array : np.array
+        pixel_array
             The original pixel array to modify.
-        new_array : np.array
+        new_array
             The new pixel array to overlay.
         """
         self.overlay_PIL_image(pixel_array, self.get_image(new_array))
 
-    def overlay_PIL_image(self, pixel_array, image):
+    def overlay_PIL_image(self, pixel_array: np.ndarray, image: Image):
         """Overlays a PIL image on the passed pixel array.
 
         Parameters
         ----------
-        pixel_array : np.ndarray
+        pixel_array
             The Pixel array
-        image : PIL.Image
+        image
             The Image to overlay.
         """
         pixel_array[:, :] = np.array(
@@ -993,13 +1021,13 @@ def overlay_PIL_image(self, pixel_array, image):
             dtype="uint8",
         )
 
-    def adjust_out_of_range_points(self, points):
+    def adjust_out_of_range_points(self, points: np.ndarray):
         """If any of the points in the passed array are out of
         the viable range, they are adjusted suitably.
 
         Parameters
         ----------
-        points : np.array
+        points
             The points to adjust
 
         Returns
@@ -1061,13 +1089,13 @@ def points_to_pixel_coords(
         result[:, 1] = shifted_points[:, 1] * height_mult + height_add
         return result.astype("int")
 
-    def on_screen_pixels(self, pixel_coords):
+    def on_screen_pixels(self, pixel_coords: np.ndarray):
         """Returns array of pixels that are on the screen from a given
         array of pixel_coordinates
 
         Parameters
         ----------
-        pixel_coords : np.array
+        pixel_coords
             The pixel coords to check.
 
         Returns
@@ -1085,12 +1113,12 @@ def on_screen_pixels(self, pixel_coords):
             ],
         )
 
-    def adjusted_thickness(self, thickness):
+    def adjusted_thickness(self, thickness: float):
         """
 
         Parameters
         ----------
-        thickness : int, float
+        thickness
 
         Returns
         -------
@@ -1103,12 +1131,12 @@ def adjusted_thickness(self, thickness):
         factor = big_sum / this_sum
         return 1 + (thickness - 1) * factor
 
-    def get_thickening_nudges(self, thickness):
+    def get_thickening_nudges(self, thickness: float):
         """
 
         Parameters
         ----------
-        thickness : int, float
+        thickness
 
         Returns
         -------
@@ -1119,15 +1147,15 @@ def get_thickening_nudges(self, thickness):
         _range = list(range(-thickness // 2 + 1, thickness // 2 + 1))
         return np.array(list(it.product(_range, _range)))
 
-    def thickened_coordinates(self, pixel_coords, thickness):
+    def thickened_coordinates(self, pixel_coords: np.ndarray, thickness: float):
         """Returns thickened coordinates for a passed array of pixel coords and
         a thickness to thicken by.
 
         Parameters
         ----------
-        pixel_coords : np.array
+        pixel_coords
             Pixel coordinates
-        thickness : int, float
+        thickness
             Thickness
 
         Returns
@@ -1178,11 +1206,11 @@ def get_coords_of_all_pixels(self):
 # NOTE: The methods of the following class have not been mentioned outside of their definitions.
 # Their DocStrings are not as detailed as preferred.
 class BackgroundColoredVMobjectDisplayer:
-    def __init__(self, camera):
+    def __init__(self, camera: Camera):
         """
         Parameters
         ----------
-        camera : Camera
+        camera
             Camera object to use.
         """
         self.camera = camera
@@ -1195,22 +1223,22 @@ def reset_pixel_array(self):
 
     def resize_background_array(
         self,
-        background_array,
-        new_width,
-        new_height,
-        mode="RGBA",
+        background_array: np.ndarray,
+        new_width: float,
+        new_height: float,
+        mode: str = "RGBA",
     ):
         """Resizes the pixel array representing the background.
 
         Parameters
         ----------
-        background_array : np.array
+        background_array
             The pixel
-        new_width : int, float
+        new_width
             The new width of the background
-        new_height : int, float
+        new_height
             The new height of the background
-        mode : str, optional
+        mode
             The PIL image mode, by default "RGBA"
 
         Returns
@@ -1223,14 +1251,16 @@ def resize_background_array(
         resized_image = image.resize((new_width, new_height))
         return np.array(resized_image)
 
-    def resize_background_array_to_match(self, background_array, pixel_array):
+    def resize_background_array_to_match(
+        self, background_array: np.ndarray, pixel_array: np.ndarray
+    ):
         """Resizes the background array to match the passed pixel array.
 
         Parameters
         ----------
-        background_array : np.array
+        background_array
             The prospective pixel array.
-        pixel_array : np.array
+        pixel_array
             The pixel array whose width and height should be matched.
 
         Returns
@@ -1271,12 +1301,12 @@ def get_background_array(self, image: Image.Image | pathlib.Path | str):
         self.file_name_to_pixel_array_map[image_key] = back_array
         return back_array
 
-    def display(self, *cvmobjects):
+    def display(self, *cvmobjects: VMobject):
         """Displays the colored VMobjects.
 
         Parameters
         ----------
-        *cvmobjects : VMobject
+        *cvmobjects
             The VMobjects
 
         Returns
diff --git a/manim/camera/moving_camera.py b/manim/camera/moving_camera.py
index 22d6be22ed..1d01d01e22 100644
--- a/manim/camera/moving_camera.py
+++ b/manim/camera/moving_camera.py
@@ -10,6 +10,8 @@
 
 __all__ = ["MovingCamera"]
 
+import numpy as np
+
 from .. import config
 from ..camera.camera import Camera
 from ..constants import DOWN, LEFT, RIGHT, UP
@@ -87,34 +89,34 @@ def frame_center(self):
         return self.frame.get_center()
 
     @frame_height.setter
-    def frame_height(self, frame_height):
+    def frame_height(self, frame_height: float):
         """Sets the height of the frame in MUnits.
 
         Parameters
         ----------
-        frame_height : int, float
+        frame_height
             The new frame_height.
         """
         self.frame.stretch_to_fit_height(frame_height)
 
     @frame_width.setter
-    def frame_width(self, frame_width):
+    def frame_width(self, frame_width: float):
         """Sets the width of the frame in MUnits.
 
         Parameters
         ----------
-        frame_width : int, float
+        frame_width
             The new frame_width.
         """
         self.frame.stretch_to_fit_width(frame_width)
 
     @frame_center.setter
-    def frame_center(self, frame_center):
+    def frame_center(self, frame_center: np.ndarray | list | tuple | Mobject):
         """Sets the centerpoint of the frame.
 
         Parameters
         ----------
-        frame_center : np.array, list, tuple, Mobject
+        frame_center
             The point to which the frame must be moved.
             If is of type mobject, the frame will be moved to
             the center of that mobject.
diff --git a/manim/camera/multi_camera.py b/manim/camera/multi_camera.py
index a9eb74969b..a5202135e9 100644
--- a/manim/camera/multi_camera.py
+++ b/manim/camera/multi_camera.py
@@ -5,6 +5,8 @@
 __all__ = ["MultiCamera"]
 
 
+from manim.mobject.types.image_mobject import ImageMobject
+
 from ..camera.moving_camera import MovingCamera
 from ..utils.iterables import list_difference_update
 
@@ -14,7 +16,7 @@ class MultiCamera(MovingCamera):
 
     def __init__(
         self,
-        image_mobjects_from_cameras=None,
+        image_mobjects_from_cameras: ImageMobject | None = None,
         allow_cameras_to_capture_their_own_display=False,
         **kwargs,
     ):
@@ -22,7 +24,7 @@ def __init__(
 
         Parameters
         ----------
-        image_mobjects_from_cameras : ImageMobject
+        image_mobjects_from_cameras
 
         kwargs
             Any valid keyword arguments of MovingCamera.
@@ -36,13 +38,13 @@ def __init__(
         )
         super().__init__(**kwargs)
 
-    def add_image_mobject_from_camera(self, image_mobject_from_camera):
+    def add_image_mobject_from_camera(self, image_mobject_from_camera: ImageMobject):
         """Adds an ImageMobject that's been obtained from the camera
         into the list ``self.image_mobject_from_cameras``
 
         Parameters
         ----------
-        image_mobject_from_camera : ImageMobject
+        image_mobject_from_camera
             The ImageMobject to add to self.image_mobject_from_cameras
         """
         # A silly method to have right now, but maybe there are things
diff --git a/manim/camera/three_d_camera.py b/manim/camera/three_d_camera.py
index 863cf03e86..87b48f9fa0 100644
--- a/manim/camera/three_d_camera.py
+++ b/manim/camera/three_d_camera.py
@@ -5,8 +5,11 @@
 __all__ = ["ThreeDCamera"]
 
 
+from typing import Callable
+
 import numpy as np
 
+from manim.mobject.mobject import Mobject
 from manim.mobject.three_d.three_d_utils import (
     get_3d_vmob_end_corner,
     get_3d_vmob_end_corner_unit_normal,
@@ -43,8 +46,6 @@ def __init__(
 
         Parameters
         ----------
-        *args
-            Any argument of Camera
         *kwargs
             Any keyword argument of Camera.
         """
@@ -197,52 +198,52 @@ def get_zoom(self):
         """
         return self.zoom_tracker.get_value()
 
-    def set_phi(self, value):
+    def set_phi(self, value: float):
         """Sets the polar angle i.e the angle between Z_AXIS and Camera through ORIGIN in radians.
 
         Parameters
         ----------
-        value : int, float
+        value
             The new value of the polar angle in radians.
         """
         self.phi_tracker.set_value(value)
 
-    def set_theta(self, value):
+    def set_theta(self, value: float):
         """Sets the azimuthal angle i.e the angle that spins the camera around Z_AXIS in radians.
 
         Parameters
         ----------
-        value : int, float
+        value
             The new value of the azimuthal angle in radians.
         """
         self.theta_tracker.set_value(value)
 
-    def set_focal_distance(self, value):
+    def set_focal_distance(self, value: float):
         """Sets the focal_distance of the Camera.
 
         Parameters
         ----------
-        value : int, float
+        value
             The focal_distance of the Camera.
         """
         self.focal_distance_tracker.set_value(value)
 
-    def set_gamma(self, value):
+    def set_gamma(self, value: float):
         """Sets the angle of rotation of the camera about the vector from the ORIGIN to the Camera.
 
         Parameters
         ----------
-        value : int, float
+        value
             The new angle of rotation of the camera.
         """
         self.gamma_tracker.set_value(value)
 
-    def set_zoom(self, value):
+    def set_zoom(self, value: float):
         """Sets the zoom amount of the camera.
 
         Parameters
         ----------
-        value : int, float
+        value
             The zoom amount of the camera.
         """
         self.zoom_tracker.set_value(value)
@@ -284,13 +285,13 @@ def generate_rotation_matrix(self):
             result = np.dot(matrix, result)
         return result
 
-    def project_points(self, points):
+    def project_points(self, points: np.ndarray | list):
         """Applies the current rotation_matrix as a projection
         matrix to the passed array of points.
 
         Parameters
         ----------
-        points : np.array, list
+        points
             The list of points to project.
 
         Returns
@@ -321,13 +322,13 @@ def project_points(self, points):
             points[:, i] *= factor * zoom
         return points
 
-    def project_point(self, point):
+    def project_point(self, point: list | np.ndarray):
         """Applies the current rotation_matrix as a projection
         matrix to the passed point.
 
         Parameters
         ----------
-        point : list, np.array
+        point
             The point to project.
 
         Returns
@@ -357,7 +358,10 @@ def transform_points_pre_display(
             return self.project_points(points)
 
     def add_fixed_orientation_mobjects(
-        self, *mobjects, use_static_center_func=False, center_func=None
+        self,
+        *mobjects: Mobject,
+        use_static_center_func: bool = False,
+        center_func: Callable[[], np.ndarray] | None = None,
     ):
         """This method allows the mobject to have a fixed orientation,
         even when the camera moves around.
@@ -367,12 +371,12 @@ def add_fixed_orientation_mobjects(
 
         Parameters
         ----------
-        *mobjects : Mobject
+        *mobjects
             The mobject whose orientation must be fixed.
-        use_static_center_func : bool, optional
+        use_static_center_func
             Whether or not to use the function that takes the mobject's
             center as centerpoint, by default False
-        center_func : func, optional
+        center_func
             The function which returns the centerpoint
             with respect to which the mobject will be oriented, by default None
         """
@@ -392,7 +396,7 @@ def get_static_center_func(mobject):
             for submob in mobject.get_family():
                 self.fixed_orientation_mobjects[submob] = func
 
-    def add_fixed_in_frame_mobjects(self, *mobjects):
+    def add_fixed_in_frame_mobjects(self, *mobjects: Mobject):
         """This method allows the mobject to have a fixed position,
         even when the camera moves around.
         E.G If it was passed through this method, at the top of the frame, it
@@ -402,34 +406,34 @@ def add_fixed_in_frame_mobjects(self, *mobjects):
 
         Parameters
         ----------
-        **mobjects : Mobject
+        **mobjects
             The mobject to fix in frame.
         """
         for mobject in extract_mobject_family_members(mobjects):
             self.fixed_in_frame_mobjects.add(mobject)
 
-    def remove_fixed_orientation_mobjects(self, *mobjects):
+    def remove_fixed_orientation_mobjects(self, *mobjects: Mobject):
         """If a mobject was fixed in its orientation by passing it through
         :meth:`.add_fixed_orientation_mobjects`, then this undoes that fixing.
         The Mobject will no longer have a fixed orientation.
 
         Parameters
         ----------
-        mobjects : :class:`Mobject`
+        mobjects
             The mobjects whose orientation need not be fixed any longer.
         """
         for mobject in extract_mobject_family_members(mobjects):
             if mobject in self.fixed_orientation_mobjects:
                 del self.fixed_orientation_mobjects[mobject]
 
-    def remove_fixed_in_frame_mobjects(self, *mobjects):
+    def remove_fixed_in_frame_mobjects(self, *mobjects: Mobject):
         """If a mobject was fixed in frame by passing it through
         :meth:`.add_fixed_in_frame_mobjects`, then this undoes that fixing.
         The Mobject will no longer be fixed in frame.
 
         Parameters
         ----------
-        mobjects : :class:`Mobject`
+        mobjects
             The mobjects which need not be fixed in frame any longer.
         """
         for mobject in extract_mobject_family_members(mobjects):
diff --git a/manim/cli/cfg/group.py b/manim/cli/cfg/group.py
index 44fdff5ac6..bc04f66820 100644
--- a/manim/cli/cfg/group.py
+++ b/manim/cli/cfg/group.py
@@ -33,7 +33,7 @@ def value_from_string(value: str) -> str | int | bool:
     """Extracts the literal of proper datatype from a string.
     Parameters
     ----------
-    value : :class:`str`
+    value
         The value to check get the literal from.
 
     Returns
@@ -54,12 +54,12 @@ def _is_expected_datatype(value: str, expected: str, style: bool = False) -> boo
 
     Parameters
     ----------
-    value : :class:`str`
+    value
         The string of the value to check (obtained from reading the user input).
-    expected : :class:`str`
+    expected
         The string of the literal datatype must be matched by `value`. Obtained from
         reading the cfg file.
-    style : :class:`bool`, optional
+    style
         Whether or not to confirm if `value` is a style, by default False
 
     Returns
@@ -77,7 +77,7 @@ def is_valid_style(style: str) -> bool:
     """Checks whether the entered color is a valid color according to rich
     Parameters
     ----------
-    style : :class:`str`
+    style
         The style to check whether it is valid.
     Returns
     -------
@@ -95,7 +95,7 @@ def replace_keys(default: dict) -> dict:
     """Replaces _ to . and vice versa in a dictionary for rich
     Parameters
     ----------
-    default : :class:`dict`
+    default
         The dictionary to check and replace
     Returns
     -------
diff --git a/manim/cli/init/commands.py b/manim/cli/init/commands.py
index ef4a20188e..67dc751646 100644
--- a/manim/cli/init/commands.py
+++ b/manim/cli/init/commands.py
@@ -54,14 +54,14 @@ def select_resolution():
     return [res for res in resolution_options if f"{res[0]}p" == choice][0]
 
 
-def update_cfg(cfg_dict, project_cfg_path):
+def update_cfg(cfg_dict: dict, project_cfg_path: Path):
     """Updates the manim.cfg file after reading it from the project_cfg_path.
 
     Parameters
     ----------
-    cfg : :class:`dict`
+    cfg_dict
         values used to update manim.cfg found project_cfg_path.
-    project_cfg_path : :class:`Path`
+    project_cfg_path
         Path of manim.cfg file.
     """
     config = configparser.ConfigParser()
diff --git a/manim/cli/new/group.py b/manim/cli/new/group.py
index 8406982615..6058102695 100644
--- a/manim/cli/new/group.py
+++ b/manim/cli/new/group.py
@@ -47,14 +47,14 @@ def select_resolution():
     return [res for res in resolution_options if f"{res[0]}p" == choice][0]
 
 
-def update_cfg(cfg_dict, project_cfg_path):
+def update_cfg(cfg_dict: dict, project_cfg_path: Path):
     """Updates the manim.cfg file after reading it from the project_cfg_path.
 
     Parameters
     ----------
-    cfg : :class:`dict`
+    cfg_dict
         values used to update manim.cfg found project_cfg_path.
-    project_cfg_path : :class:`Path`
+    project_cfg_path
         Path of manim.cfg file.
     """
     config = configparser.ConfigParser()
diff --git a/manim/mobject/geometry/line.py b/manim/mobject/geometry/line.py
index cd9e60869d..4189813745 100644
--- a/manim/mobject/geometry/line.py
+++ b/manim/mobject/geometry/line.py
@@ -14,7 +14,7 @@
     "RightAngle",
 ]
 
-from typing import Sequence
+from typing import Any, Sequence
 
 import numpy as np
 from colour import Color
@@ -28,6 +28,7 @@
 from manim.mobject.opengl.opengl_mobject import OpenGLMobject
 from manim.mobject.types.vectorized_mobject import DashedVMobject, VGroup, VMobject
 from manim.utils.color import *
+from manim.utils.color import Colors
 from manim.utils.space_ops import angle_of_vector, line_intersection, normalize
 
 
@@ -190,13 +191,13 @@ class DashedLine(Line):
 
     Parameters
     ----------
-    args : Any
+    args
         Arguments to be passed to :class:`Line`
-    dash_length : :class:`float`, optional
+    dash_length
         The length of each individual dash of the line.
-    dashed_ratio : :class:`float`, optional
+    dashed_ratio
         The ratio of dash space to empty space. Range of 0-1.
-    kwargs : Any
+    kwargs
         Additional arguments to be passed to :class:`Line`
 
 
@@ -221,9 +222,9 @@ def construct(self):
 
     def __init__(
         self,
-        *args,
-        dash_length=DEFAULT_DASH_LENGTH,
-        dashed_ratio=0.5,
+        *args: Any,
+        dash_length: float = DEFAULT_DASH_LENGTH,
+        dashed_ratio: float = 0.5,
         **kwargs,
     ):
         self.dash_length = dash_length
@@ -318,15 +319,15 @@ class TangentLine(Line):
 
     Parameters
     ----------
-    vmob : :class:`~.VMobject`
+    vmob
         The VMobject on which the tangent line is drawn.
-    alpha : :class:`float`
+    alpha
         How far along the shape that the line will be constructed. range: 0-1.
-    length : :class:`float`, optional
+    length
         Length of the tangent line.
-    d_alpha: :class:`float`, optional
+    d_alpha
         The ``dx`` value
-    kwargs : Any
+    kwargs
         Additional arguments to be passed to :class:`Line`
 
 
@@ -346,7 +347,14 @@ def construct(self):
                 self.add(circle, line_1, line_2)
     """
 
-    def __init__(self, vmob, alpha, length=1, d_alpha=1e-6, **kwargs):
+    def __init__(
+        self,
+        vmob: VMobject,
+        alpha: float,
+        length: float = 1,
+        d_alpha: float = 1e-6,
+        **kwargs,
+    ):
         self.length = length
         self.d_alpha = d_alpha
         da = self.d_alpha
@@ -363,11 +371,11 @@ class Elbow(VMobject, metaclass=ConvertToOpenGL):
 
     Parameters
     ----------
-    width : :class:`float`, optional
+    width
         The length of the elbow's sides.
-    angle : :class:`float`, optional
+    angle
         The rotation of the elbow.
-    kwargs : Any
+    kwargs
         Additional arguments to be passed to :class:`~.VMobject`
 
     .. seealso::
@@ -388,7 +396,7 @@ def construct(self):
                 self.add(elbow_group)
     """
 
-    def __init__(self, width=0.2, angle=0, **kwargs):
+    def __init__(self, width: float = 0.2, angle: float = 0, **kwargs):
         self.angle = angle
         super().__init__(**kwargs)
         self.set_points_as_corners([UP, UP + RIGHT, RIGHT])
@@ -401,17 +409,17 @@ class Arrow(Line):
 
     Parameters
     ----------
-    args : Any
+    args
         Arguments to be passed to :class:`Line`.
-    stroke_width : :class:`float`, optional
+    stroke_width
         The thickness of the arrow. Influenced by :attr:`max_stroke_width_to_length_ratio`.
-    buff : :class:`float`, optional
+    buff
         The distance of the arrow from its start and end points.
-    max_tip_length_to_length_ratio : :class:`float`, optional
+    max_tip_length_to_length_ratio
         :attr:`tip_length` scales with the length of the arrow. Increasing this ratio raises the max value of :attr:`tip_length`.
-    max_stroke_width_to_length_ratio : :class:`float`, optional
+    max_stroke_width_to_length_ratio
         :attr:`stroke_width` scales with the length of the arrow. Increasing this ratio ratios the max value of :attr:`stroke_width`.
-    kwargs : Any
+    kwargs
         Additional arguments to be passed to :class:`Line`.
 
 
@@ -486,11 +494,11 @@ def construct(self):
 
     def __init__(
         self,
-        *args,
-        stroke_width=6,
-        buff=MED_SMALL_BUFF,
-        max_tip_length_to_length_ratio=0.25,
-        max_stroke_width_to_length_ratio=5,
+        *args: Any,
+        stroke_width: float = 6,
+        buff: float = MED_SMALL_BUFF,
+        max_tip_length_to_length_ratio: float = 0.25,
+        max_stroke_width_to_length_ratio: float = 5,
         **kwargs,
     ):
         self.max_tip_length_to_length_ratio = max_tip_length_to_length_ratio
@@ -608,11 +616,11 @@ class Vector(Arrow):
 
     Parameters
     ----------
-    direction : Union[:class:`list`, :class:`numpy.ndarray`]
+    direction
         The direction of the arrow.
-    buff : :class:`float`
+    buff
          The distance of the vector from its endpoints.
-    kwargs : Any
+    kwargs
         Additional arguments to be passed to :class:`Arrow`
 
     Examples
@@ -628,7 +636,7 @@ def construct(self):
                 self.add(plane, vector_1, vector_2)
     """
 
-    def __init__(self, direction=RIGHT, buff=0, **kwargs):
+    def __init__(self, direction: list | np.ndarray = RIGHT, buff: float = 0, **kwargs):
         self.buff = buff
         if len(direction) == 2:
             direction = np.hstack([direction, 0])
@@ -704,9 +712,9 @@ class DoubleArrow(Arrow):
 
     Parameters
     ----------
-    args : Any
+    args
         Arguments to be passed to :class:`Arrow`
-    kwargs : Any
+    kwargs
         Additional arguments to be passed to :class:`Arrow`
 
 
@@ -744,7 +752,7 @@ def construct(self):
                 self.add(box, d1, d2, d3)
     """
 
-    def __init__(self, *args, **kwargs):
+    def __init__(self, *args: Any, **kwargs):
         if "tip_shape_end" in kwargs:
             kwargs["tip_shape"] = kwargs.pop("tip_shape_end")
         tip_shape_start = kwargs.pop("tip_shape_start", ArrowTriangleFilledTip)
@@ -763,7 +771,7 @@ class Angle(VMobject, metaclass=ConvertToOpenGL):
         The second line.
     radius :
         The radius of the :class:`Arc`.
-    quadrant : Sequence[:class:`int`]
+    quadrant
         A sequence of two :class:`int` numbers determining which of the 4 quadrants should be used.
         The first value indicates whether to anchor the arc on the first line closer to the end point (1)
         or start point (-1), and the second value functions similarly for the
@@ -773,16 +781,16 @@ class Angle(VMobject, metaclass=ConvertToOpenGL):
         Toggles between the two possible angles defined by two points and an arc center. If set to
         False (default), the arc will always go counterclockwise from the point on line1 until
         the point on line2 is reached. If set to True, the angle will go clockwise from line1 to line2.
-    dot : :class:`bool`
+    dot
         Allows for a :class:`Dot` in the arc. Mainly used as an convention to indicate a right angle.
         The dot can be customized in the next three parameters.
-    dot_radius : :class:`float`
+    dot_radius
         The radius of the :class:`Dot`. If not specified otherwise, this radius will be 1/10 of the arc radius.
-    dot_distance : :class:`float`
+    dot_distance
         Relative distance from the center to the arc: 0 puts the dot in the center and 1 on the arc itself.
-    dot_color : :class:`~.Colors`
+    dot_color
         The color of the :class:`Dot`.
-    elbow : :class:`bool`
+    elbow
         Produces an elbow-type mobject indicating a right angle, see :class:`RightAngle` for more information
         and a shorthand.
     **kwargs
@@ -866,13 +874,13 @@ def __init__(
         line1: Line,
         line2: Line,
         radius: float = None,
-        quadrant=(1, 1),
+        quadrant: Sequence[int] = (1, 1),
         other_angle: bool = False,
-        dot=False,
-        dot_radius=None,
-        dot_distance=0.55,
-        dot_color=WHITE,
-        elbow=False,
+        dot: bool = False,
+        dot_radius: float | None = None,
+        dot_distance: float = 0.55,
+        dot_color: Colors = WHITE,
+        elbow: bool = False,
         **kwargs,
     ):
         super().__init__(**kwargs)
diff --git a/manim/mobject/geometry/polygram.py b/manim/mobject/geometry/polygram.py
index dbc1e77fae..f96557525e 100644
--- a/manim/mobject/geometry/polygram.py
+++ b/manim/mobject/geometry/polygram.py
@@ -478,7 +478,7 @@ class Triangle(RegularPolygon):
 
     Parameters
     ----------
-    kwargs : Any
+    kwargs
         Additional arguments to be passed to :class:`RegularPolygon`
 
     Examples
@@ -503,21 +503,21 @@ class Rectangle(Polygon):
 
     Parameters
     ----------
-    color : :class:`~.Colors`, optional
+    color
         The color of the rectangle.
-    height : :class:`float`, optional
+    height
         The vertical height of the rectangle.
-    width : :class:`float`, optional
+    width
         The horizontal width of the rectangle.
-    grid_xstep : :class:`float`, optional
+    grid_xstep
         Space between vertical grid lines.
-    grid_ystep : :class:`float`, optional
+    grid_ystep
         Space between horizontal grid lines.
-    mark_paths_closed : :class:`bool`, optional
+    mark_paths_closed
         No purpose.
-    close_new_points : :class:`bool`, optional
+    close_new_points
         No purpose.
-    kwargs : Any
+    kwargs
         Additional arguments to be passed to :class:`Polygon`
 
     Examples
@@ -541,8 +541,8 @@ def __init__(
         width: float = 4.0,
         grid_xstep: float | None = None,
         grid_ystep: float | None = None,
-        mark_paths_closed=True,
-        close_new_points=True,
+        mark_paths_closed: bool = True,
+        close_new_points: bool = True,
         **kwargs,
     ):
         super().__init__(UR, UL, DL, DR, color=color, **kwargs)
@@ -586,9 +586,9 @@ class Square(Rectangle):
 
     Parameters
     ----------
-    side_length : :class:`float`, optional
+    side_length
         The length of the sides of the square.
-    kwargs : Any
+    kwargs
         Additional arguments to be passed to :class:`Rectangle`.
 
     Examples
@@ -604,7 +604,7 @@ def construct(self):
                 self.add(square_1, square_2, square_3)
     """
 
-    def __init__(self, side_length=2.0, **kwargs):
+    def __init__(self, side_length: float = 2.0, **kwargs):
         self.side_length = side_length
         super().__init__(height=side_length, width=side_length, **kwargs)
 
@@ -614,9 +614,9 @@ class RoundedRectangle(Rectangle):
 
     Parameters
     ----------
-    corner_radius : :class:`float`, optional
+    corner_radius
         The curvature of the corners of the rectangle.
-    kwargs : Any
+    kwargs
         Additional arguments to be passed to :class:`Rectangle`
 
     Examples
@@ -633,7 +633,7 @@ def construct(self):
                 self.add(rect_group)
     """
 
-    def __init__(self, corner_radius=0.5, **kwargs):
+    def __init__(self, corner_radius: float = 0.5, **kwargs):
         super().__init__(**kwargs)
         self.corner_radius = corner_radius
         self.round_corners(self.corner_radius)
@@ -644,9 +644,9 @@ class Cutout(VMobject, metaclass=ConvertToOpenGL):
 
     Parameters
     ----------
-    main_shape : :class:`~.VMobject`
+    main_shape
         The primary shape from which cutouts are made.
-    mobjects : :class:`~.VMobject`
+    mobjects
         The smaller shapes which are to be cut out of the ``main_shape``.
     kwargs
         Further keyword arguments that are passed to the constructor of
@@ -674,7 +674,7 @@ def construct(self):
                 self.wait()
     """
 
-    def __init__(self, main_shape, *mobjects, **kwargs):
+    def __init__(self, main_shape: VMobject, *mobjects: VMobject, **kwargs):
         super().__init__(**kwargs)
         self.append_points(main_shape.points)
         if main_shape.get_direction() == "CW":
diff --git a/manim/mobject/geometry/shape_matchers.py b/manim/mobject/geometry/shape_matchers.py
index 4376213ef9..b2eec1c724 100644
--- a/manim/mobject/geometry/shape_matchers.py
+++ b/manim/mobject/geometry/shape_matchers.py
@@ -169,11 +169,6 @@ def __init__(
 class Underline(Line):
     """Creates an underline.
 
-    Parameters
-    ----------
-    Line
-        The underline.
-
     Examples
     --------
     .. manim:: UnderLine
diff --git a/manim/mobject/graphing/number_line.py b/manim/mobject/graphing/number_line.py
index cafea17c9b..aa56c9358a 100644
--- a/manim/mobject/graphing/number_line.py
+++ b/manim/mobject/graphing/number_line.py
@@ -592,14 +592,12 @@ def _create_label_tex(
         self, label_tex: str | float | VMobject, **kwargs
     ) -> VMobject:
         """Checks if the label is a :class:`~.VMobject`, otherwise, creates a
-        label according to the ``label_constructor``.
+        label according to :attr:`label_constructor`.
 
         Parameters
         ----------
         label_tex
             The label to be compared against the above types.
-        label_constructor
-            The VMobject class used to construct the label.
 
         Returns
         -------
diff --git a/manim/mobject/graphing/scale.py b/manim/mobject/graphing/scale.py
index 0e570a6a1a..bee130ffd2 100644
--- a/manim/mobject/graphing/scale.py
+++ b/manim/mobject/graphing/scale.py
@@ -122,7 +122,7 @@ def __init__(self, base: float = 10, custom_labels: bool = True):
         ----------
         base
             The base of the log, by default 10.
-        custom_labels : bool, optional
+        custom_labels
             For use with :class:`~.Axes`:
             Whetherer or not to include ``LaTeX`` axis labels, by default True.
 
diff --git a/manim/mobject/matrix.py b/manim/mobject/matrix.py
index f5aadf00e8..f8cc6b0af2 100644
--- a/manim/mobject/matrix.py
+++ b/manim/mobject/matrix.py
@@ -44,6 +44,7 @@ def construct(self):
 
 import numpy as np
 
+from manim.mobject.mobject import Mobject
 from manim.mobject.opengl.opengl_compatibility import ConvertToOpenGL
 from manim.mobject.text.numbers import DecimalNumber, Integer
 from manim.mobject.text.tex_mobject import MathTex, Tex
@@ -227,16 +228,16 @@ def _organize_mob_matrix(self, matrix):
                 )
         return self
 
-    def _add_brackets(self, left="[", right="]", **kwargs):
+    def _add_brackets(self, left: str = "[", right: str = "]", **kwargs):
         """Adds the brackets to the Matrix mobject.
 
         See Latex document for various bracket types.
 
         Parameters
         ----------
-        left : :class:`str`, optional
+        left
             the left bracket, by default "["
-        right : :class:`str`, optional
+        right
             the right bracket, by default "]"
 
         Returns
@@ -310,12 +311,12 @@ def construct(self):
             )
         )
 
-    def set_column_colors(self, *colors):
+    def set_column_colors(self, *colors: str):
         """Set individual colors for each columns of the matrix.
 
         Parameters
         ----------
-        colors : :class:`str`
+        colors
             The list of colors; each color specified corresponds to a column.
 
         Returns
@@ -362,12 +363,12 @@ def construct(self):
         """
         return VGroup(*(VGroup(*row) for row in self.mob_matrix))
 
-    def set_row_colors(self, *colors):
+    def set_row_colors(self, *colors: str):
         """Set individual colors for each row of the matrix.
 
         Parameters
         ----------
-        colors : :class:`str`
+        colors
             The list of colors; each color specified corresponds to a row.
 
         Returns
@@ -487,9 +488,9 @@ def construct(self):
 
     def __init__(
         self,
-        matrix,
-        element_to_mobject=DecimalNumber,
-        element_to_mobject_config={"num_decimal_places": 1},
+        matrix: Iterable,
+        element_to_mobject: Mobject = DecimalNumber,
+        element_to_mobject_config: dict[str, Mobject] = {"num_decimal_places": 1},
         **kwargs,
     ):
         """
@@ -497,11 +498,11 @@ def __init__(
 
         Parameters
         ----------
-        matrix : :class:`typing.Iterable`
+        matrix
             A numpy 2d array or list of lists
-        element_to_mobject : :class:`~.Mobject`, optional
+        element_to_mobject
             Mobject to use, by default DecimalNumber
-        element_to_mobject_config : Dict[:class:`str`, :class:`~.Mobject`], optional
+        element_to_mobject_config
             Config for the desired mobject, by default {"num_decimal_places": 1}
         """
         super().__init__(
@@ -530,15 +531,17 @@ def construct(self):
                 self.add(m0)
     """
 
-    def __init__(self, matrix, element_to_mobject=Integer, **kwargs):
+    def __init__(
+        self, matrix: Iterable, element_to_mobject: Mobject = Integer, **kwargs
+    ):
         """
         Will round if there are decimal entries in the matrix.
 
         Parameters
         ----------
-        matrix : :class:`typing.Iterable`
+        matrix
             A numpy 2d array or list of lists
-        element_to_mobject : :class:`~.Mobject`, optional
+        element_to_mobject
             Mobject to use, by default Integer
         """
         super().__init__(matrix, element_to_mobject=element_to_mobject, **kwargs)
@@ -568,25 +571,25 @@ def __init__(self, matrix, element_to_mobject=lambda m: m, **kwargs):
 
 
 def get_det_text(
-    matrix,
-    determinant=None,
-    background_rect=False,
-    initial_scale_factor=2,
+    matrix: Matrix,
+    determinant: int | str | None = None,
+    background_rect: bool = False,
+    initial_scale_factor: float = 2,
 ):
     r"""Helper function to create determinant.
 
     Parameters
     ----------
-    matrix : :class:`~.Matrix`
+    matrix
         The matrix whose determinant is to be created
 
-    determinant : :class:`int|str`
+    determinant
         The value of the determinant of the matrix
 
-    background_rect : :class:`bool`
+    background_rect
         The background rectangle
 
-    initial_scale_factor : :class:`float`
+    initial_scale_factor
         The scale of the text `det` w.r.t the matrix
 
     Returns
diff --git a/manim/mobject/opengl/opengl_vectorized_mobject.py b/manim/mobject/opengl/opengl_vectorized_mobject.py
index 112369110e..20a8e19d0f 100644
--- a/manim/mobject/opengl/opengl_vectorized_mobject.py
+++ b/manim/mobject/opengl/opengl_vectorized_mobject.py
@@ -184,7 +184,7 @@ def set_fill(
             Fill color of the :class:`OpenGLVMobject`.
         opacity
             Fill opacity of the :class:`OpenGLVMobject`.
-        family
+        recurse
             If ``True``, the fill color of all submobjects is also set.
 
         Returns
@@ -473,7 +473,7 @@ def add_line_to(self, point: Sequence[float]) -> OpenGLVMobject:
         Parameters
         ----------
 
-        point : Sequence[float]
+        point
             end of the straight line.
         """
         end = self.points[-1]
@@ -554,7 +554,7 @@ def set_points_as_corners(self, points: Iterable[float]) -> OpenGLVMobject:
 
         Parameters
         ----------
-        points : Iterable[float]
+        points
             Array of points that will be set as corners.
 
         Returns
@@ -656,13 +656,13 @@ def consider_points_equals(self, p0, p1):
         return np.linalg.norm(p1 - p0) < self.tolerance_for_point_equality
 
     # Information about the curve
-    def force_direction(self, target_direction):
+    def force_direction(self, target_direction: str):
         """Makes sure that points are either directed clockwise or
         counterclockwise.
 
         Parameters
         ----------
-        target_direction : :class:`str`
+        target_direction
             Either ``"CW"`` or ``"CCW"``.
         """
         if target_direction not in ("CW", "CCW"):
@@ -742,7 +742,7 @@ def get_nth_curve_points(self, n: int) -> np.ndarray:
 
         Parameters
         ----------
-        n : int
+        n
             index of the desired bezier curve.
 
         Returns
@@ -759,7 +759,7 @@ def get_nth_curve_function(self, n: int) -> Callable[[float], np.ndarray]:
 
         Parameters
         ----------
-        n : int
+        n
             index of the desired curve.
 
         Returns
@@ -1242,9 +1242,9 @@ def insert_n_curves_to_point_list(self, n: int, points: np.ndarray) -> np.ndarra
 
         Parameters
         ----------
-        n : int
+        n
             Number of desired curves.
-        points : np.ndarray
+        points
             Starting points.
 
         Returns
@@ -1301,13 +1301,13 @@ def pointwise_become_partial(
 
         Parameters
         ----------
-        vmobject : OpenGLVMobject
+        vmobject
             The vmobject that will serve as a model.
-        a : float
+        a
             upper-bound.
-        b : float
+        b
             lower-bound
-        remap : bool
+        remap
             if the point amount should be kept the same (True)
             This option should be manually set to False if keeping the number of points is not needed
         """
@@ -1698,12 +1698,12 @@ def __str__(self):
             f"submobject{'s' if len(self.submobjects) > 0 else ''}"
         )
 
-    def add(self, *vmobjects):
+    def add(self, *vmobjects: OpenGLVMobject):
         """Checks if all passed elements are an instance of OpenGLVMobject and then add them to submobjects
 
         Parameters
         ----------
-        vmobjects : :class:`~.OpenGLVMobject`
+        vmobjects
             List of OpenGLVMobject to add
 
         Returns
diff --git a/manim/mobject/svg/brace.py b/manim/mobject/svg/brace.py
index e39591235a..63267a5e05 100644
--- a/manim/mobject/svg/brace.py
+++ b/manim/mobject/svg/brace.py
@@ -12,6 +12,7 @@
 from manim._config import config
 from manim.mobject.geometry.arc import Arc
 from manim.mobject.geometry.line import Line
+from manim.mobject.mobject import Mobject
 from manim.mobject.opengl.opengl_compatibility import ConvertToOpenGL
 from manim.mobject.text.tex_mobject import MathTex, Tex
 
@@ -32,7 +33,7 @@ class Brace(VMobjectFromSVGPath):
 
     Parameters
     ----------
-    mobject : :class:`~.Mobject`
+    mobject
         The mobject adjacent to which the brace is placed.
     direction :
         The direction from which the brace faces the mobject.
@@ -61,7 +62,7 @@ def construct(self):
 
     def __init__(
         self,
-        mobject,
+        mobject: Mobject,
         direction: Sequence[float] | None = DOWN,
         buff=0.2,
         sharpness=2,
diff --git a/manim/mobject/table.py b/manim/mobject/table.py
index 731b7d1288..9898736448 100644
--- a/manim/mobject/table.py
+++ b/manim/mobject/table.py
@@ -206,7 +206,7 @@ def __init__(
             Dict passed to :meth:`~.Mobject.arrange_in_grid`, customizes the arrangement of the table.
         line_config
             Dict passed to :class:`~.Line`, customizes the lines of the table.
-        kwargs : Any
+        kwargs
             Additional arguments to be passed to :class:`~.VGroup`.
         """
 
@@ -773,7 +773,7 @@ def get_cell(self, pos: Sequence[int] = (1, 1), **kwargs) -> Polygon:
         pos
             The position of a specific entry on the table. ``(1,1)`` being the top left entry
             of the table.
-        kwargs : Any
+        kwargs
             Additional arguments to be passed to :class:`~.Polygon`.
 
         Returns
@@ -834,7 +834,7 @@ def get_highlighted_cell(
             of the table.
         color
             The color used to highlight the cell.
-        kwargs : Any
+        kwargs
             Additional arguments to be passed to :class:`~.BackgroundRectangle`.
 
         Examples
@@ -870,7 +870,7 @@ def add_highlighted_cell(
             of the table.
         color
             The color used to highlight the cell.
-        kwargs : Any
+        kwargs
             Additional arguments to be passed to :class:`~.BackgroundRectangle`.
 
         Examples
@@ -901,15 +901,13 @@ def create(
         line_animation: Callable[[VMobject | VGroup], Animation] = Create,
         label_animation: Callable[[VMobject | VGroup], Animation] = Write,
         element_animation: Callable[[VMobject | VGroup], Animation] = Create,
-        entry_animation=FadeIn,
+        entry_animation: Callable[[VMobject | VGroup], Animation] = FadeIn,
         **kwargs,
     ) -> AnimationGroup:
         """Customized create-type function for tables.
 
         Parameters
         ----------
-        run_time
-            The run time of the line creation and the writing of the elements.
         lag_ratio
             The lag ratio of the animation.
         line_animation
@@ -918,7 +916,9 @@ def create(
             The animation style of the table labels, see :mod:`~.creation` for examples.
         element_animation
             The animation style of the table elements, see :mod:`~.creation` for examples.
-        kwargs : Any
+        entry_animation
+            The entry animation of the table background, see :mod:`~.creation` for examples.
+        kwargs
             Further arguments passed to the creation animations.
 
         Returns
@@ -1015,7 +1015,7 @@ def __init__(
             for :class:`~.MathTex`.
         element_to_mobject
             The :class:`~.Mobject` class applied to the table entries. Set as :class:`~.MathTex`.
-        kwargs : Any
+        kwargs
             Additional arguments to be passed to :class:`~.Table`.
         """
         super().__init__(
@@ -1069,7 +1069,7 @@ def __init__(
             A 2D array or list of lists. Content of the table must be of type :class:`~.Mobject`.
         element_to_mobject
             The :class:`~.Mobject` class applied to the table entries. Set as ``lambda m : m`` to return itself.
-        kwargs : Any
+        kwargs
             Additional arguments to be passed to :class:`~.Table`.
         """
         super().__init__(table, element_to_mobject=element_to_mobject, **kwargs)
@@ -1118,7 +1118,7 @@ def __init__(
             for :class:`~.Integer`.
         element_to_mobject
             The :class:`~.Mobject` class applied to the table entries. Set as :class:`~.Integer`.
-        kwargs : Any
+        kwargs
             Additional arguments to be passed to :class:`~.Table`.
         """
         super().__init__(table, element_to_mobject=element_to_mobject, **kwargs)
@@ -1166,7 +1166,7 @@ def __init__(
             The :class:`~.Mobject` class applied to the table entries. Set as :class:`~.DecimalNumber`.
         element_to_mobject_config
             Element to mobject config, here set as {"num_decimal_places": 1}.
-        kwargs : Any
+        kwargs
             Additional arguments to be passed to :class:`~.Table`.
         """
         super().__init__(
diff --git a/manim/mobject/text/code_mobject.py b/manim/mobject/text/code_mobject.py
index fcb42150cd..41742a18ef 100644
--- a/manim/mobject/text/code_mobject.py
+++ b/manim/mobject/text/code_mobject.py
@@ -7,6 +7,7 @@
 ]
 
 import html
+import os
 import re
 from pathlib import Path
 
@@ -90,45 +91,45 @@ def construct(self):
     ----------
     file_name
         Name of the code file to display.
-    code : :class:`str`
+    code
         If ``file_name`` is not specified, a code string can be
         passed directly.
-    tab_width : :class:`int`, optional
+    tab_width
         Number of space characters corresponding to a tab character. Defaults to 3.
-    line_spacing : :class:`float`, optional
+    line_spacing
         Amount of space between lines in relation to font size. Defaults to 0.3, which means 30% of font size.
-    font_size : class:`float`, optional
+    font_size
         A number which scales displayed code. Defaults to 24.
-    font : :class:`str`, optional
+    font
          The name of the text font to be used. Defaults to ``"Monospac821 BT"``.
-    stroke_width : class:`float`, optional
+    stroke_width
         Stroke width for text. 0 is recommended, and the default.
-    margin: class :`float`, optional
+    margin
         Inner margin of text from the background. Defaults to 0.3.
-    indentation_chars : :class:`str`, optional
+    indentation_chars
         "Indentation chars" refers to the spaces/tabs at the beginning of a given code line. Defaults to ``"    "`` (spaces).
-    background : :class:`str`, optional
+    background
         Defines the background's type. Currently supports only ``"rectangle"`` (default) and ``"window"``.
-    background_stroke_width : class:`float`, optional
+    background_stroke_width
         Defines the stroke width of the background. Defaults to 1.
-    background_stroke_color : class:`str`, optional
+    background_stroke_color
         Defines the stroke color for the background. Defaults to ``WHITE``.
-    corner_radius : :class:`float`, optional
+    corner_radius
         Defines the corner radius for the background. Defaults to 0.2.
-    insert_line_no : :class:`bool`, optional
+    insert_line_no
         Defines whether line numbers should be inserted in displayed code. Defaults to ``True``.
-    line_no_from : :class:`int`, optional
+    line_no_from
         Defines the first line's number in the line count. Defaults to 1.
-    line_no_buff : :class:`float`, optional
+    line_no_buff
         Defines the spacing between line numbers and displayed code. Defaults to 0.4.
-    style : :class:`str`, optional
+    style
         Defines the style type of displayed code. You can see possible names of styles in with :attr:`styles_list`. Defaults to ``"vim"``.
-    language : Optional[:class:`str`], optional
+    language
         Specifies the programming language the given code was written in. If ``None``
         (the default), the language will be automatically detected. For the list of
         possible options, visit https://pygments.org/docs/lexers/ and look for
         'aliases or short names'.
-    generate_html_file : :class:`bool`, optional
+    generate_html_file
         Defines whether to generate highlighted html code to the folder `assets/codes/generated_html_files`. Defaults to `False`.
 
     Attributes
@@ -153,25 +154,25 @@ def construct(self):
 
     def __init__(
         self,
-        file_name: str | os.PathLike = None,
-        code=None,
-        tab_width=3,
-        line_spacing=0.3,
-        font_size=24,
-        font="Monospac821 BT",
-        stroke_width=0,
-        margin=0.3,
-        indentation_chars="    ",
-        background="rectangle",  # or window
-        background_stroke_width=1,
-        background_stroke_color=WHITE,
-        corner_radius=0.2,
-        insert_line_no=True,
-        line_no_from=1,
-        line_no_buff=0.4,
-        style="vim",
-        language=None,
-        generate_html_file=False,
+        file_name: str | os.PathLike | None = None,
+        code: str | None = None,
+        tab_width: int = 3,
+        line_spacing: float = 0.3,
+        font_size: float = 24,
+        font: str = "Monospac821 BT",
+        stroke_width: float = 0,
+        margin: float = 0.3,
+        indentation_chars: str = "    ",
+        background: str = "rectangle",  # or window
+        background_stroke_width: float = 1,
+        background_stroke_color: str = WHITE,
+        corner_radius: float = 0.2,
+        insert_line_no: bool = True,
+        line_no_from: int = 1,
+        line_no_buff: float = 0.4,
+        style: str = "vim",
+        language: str | None = None,
+        generate_html_file: bool = False,
         **kwargs,
     ):
         super().__init__(
@@ -472,12 +473,12 @@ def _gen_code_json(self):
                     self.code_json[code_json_line_index].append([text, color])
         # print(self.code_json)
 
-    def _correct_non_span(self, line_str):
+    def _correct_non_span(self, line_str: str):
         """Function put text color to those strings that don't have one according to background_color of displayed code.
 
         Parameters
         ---------
-        line_str : :class:`str`
+        line_str
             Takes a html element's string to put color to it according to background_color of displayed code.
 
         Returns
@@ -525,31 +526,31 @@ def _correct_non_span(self, line_str):
 
 
 def _hilite_me(
-    code,
-    language,
-    style,
-    insert_line_no,
-    divstyles,
-    file_path,
-    line_no_from,
+    code: str,
+    language: str,
+    style: str,
+    insert_line_no: bool,
+    divstyles: str,
+    file_path: Path,
+    line_no_from: int,
 ):
     """Function to highlight code from string to html.
 
     Parameters
     ---------
-    code : :class:`str`
+    code
         Code string.
-    language : :class:`str`
+    language
         The name of the programming language the given code was written in.
-    style : :class:`str`
+    style
         Code style name.
-    insert_line_no : :class:`bool`
+    insert_line_no
         Defines whether line numbers should be inserted in the html file.
-    divstyles : :class:`str`
+    divstyles
         Some html css styles.
-    file_path : :class:`pathlib.Path`
+    file_path
         Path of code file.
-    line_no_from : :class:`int`
+    line_no_from
         Defines the first line's number in the line count.
     """
     style = style or "colorful"
@@ -578,14 +579,14 @@ def _hilite_me(
     return html
 
 
-def _insert_line_numbers_in_html(html, line_no_from):
+def _insert_line_numbers_in_html(html: str, line_no_from: int):
     """Function that inserts line numbers in the highlighted HTML code.
 
     Parameters
     ---------
-    html : :class:`str`
+    html
         html string of highlighted code.
-    line_no_from : :class:`int`
+    line_no_from
         Defines the first line's number in the line count.
 
     Returns
diff --git a/manim/mobject/text/numbers.py b/manim/mobject/text/numbers.py
index 963c11dc06..5a0c8413f4 100644
--- a/manim/mobject/text/numbers.py
+++ b/manim/mobject/text/numbers.py
@@ -11,7 +11,8 @@
 from manim import config
 from manim.constants import *
 from manim.mobject.opengl.opengl_compatibility import ConvertToOpenGL
-from manim.mobject.text.tex_mobject import MathTex, SingleStringMathTex
+from manim.mobject.text.tex_mobject import MathTex, SingleStringMathTex, Tex
+from manim.mobject.text.text_mobject import Text
 from manim.mobject.types.vectorized_mobject import VMobject
 from manim.mobject.value_tracker import ValueTracker
 
@@ -299,16 +300,16 @@ class Variable(VMobject, metaclass=ConvertToOpenGL):
 
     Parameters
     ----------
-    var : Union[:class:`int`, :class:`float`]
+    var
         The initial value you need to keep track of and display.
-    label : Union[:class:`str`, :class:`~.Tex`, :class:`~.MathTex`, :class:`~.Text`, :class:`~.SingleStringMathTex`]
+    label
         The label for your variable. Raw strings are convertex to :class:`~.MathTex` objects.
-    var_type : Union[:class:`DecimalNumber`, :class:`Integer`], optional
+    var_type
         The class used for displaying the number. Defaults to :class:`DecimalNumber`.
-    num_decimal_places : :class:`int`, optional
+    num_decimal_places
         The number of decimal places to display in your variable. Defaults to 2.
         If `var_type` is an :class:`Integer`, this parameter is ignored.
-    kwargs : Any
+    kwargs
             Other arguments to be passed to `~.Mobject`.
 
     Attributes
@@ -397,7 +398,12 @@ def construct(self):
     """
 
     def __init__(
-        self, var, label, var_type=DecimalNumber, num_decimal_places=2, **kwargs
+        self,
+        var: float,
+        label: str | Tex | MathTex | Text | SingleStringMathTex,
+        var_type: DecimalNumber | Integer = DecimalNumber,
+        num_decimal_places: int = 2,
+        **kwargs,
     ):
 
         self.label = MathTex(label) if isinstance(label, str) else label
diff --git a/manim/mobject/three_d/three_dimensions.py b/manim/mobject/three_d/three_dimensions.py
index bbde7d7c76..a2ab19e8bb 100644
--- a/manim/mobject/three_d/three_dimensions.py
+++ b/manim/mobject/three_d/three_dimensions.py
@@ -31,6 +31,7 @@
 from manim.mobject.opengl.opengl_mobject import OpenGLMobject
 from manim.mobject.types.vectorized_mobject import VGroup, VMobject
 from manim.utils.color import *
+from manim.utils.color import Colors
 from manim.utils.deprecation import deprecated_params
 from manim.utils.iterables import tuplify
 from manim.utils.space_ops import normalize, perpendicular_bisector, z_to_vector
@@ -348,11 +349,11 @@ class Dot3D(Sphere):
 
     Parameters
     --------
-    point : Union[:class:`list`, :class:`numpy.ndarray`], optional
+    point
         The location of the dot.
-    radius : :class:`float`, optional
+    radius
         The radius of the dot.
-    color : :class:`~.Colors`, optional
+    color
         The color of the :class:`Dot3D`
 
     Examples
@@ -374,9 +375,9 @@ def construct(self):
 
     def __init__(
         self,
-        point=ORIGIN,
-        radius=DEFAULT_DOT_RADIUS,
-        color=WHITE,
+        point: list | np.ndarray = ORIGIN,
+        radius: float = DEFAULT_DOT_RADIUS,
+        color: Colors = WHITE,
         resolution=(8, 8),
         **kwargs,
     ):
@@ -464,31 +465,31 @@ def construct(self):
 
     Parameters
     --------
-    base_radius : :class:`float`
+    base_radius
         The base radius from which the cone tapers.
-    height : :class:`float`
+    height
         The height measured from the plane formed by the base_radius to the apex of the cone.
-    direction : :class:`numpy.array`
+    direction
         The direction of the apex.
-    show_base : :class:`bool`
+    show_base
         Whether to show the base plane or not.
-    v_range : :class:`Sequence[float]`
+    v_range
         The azimuthal angle to start and end at.
-    u_min : :class:`float`
+    u_min
         The radius at the apex.
-    checkerboard_colors : :class:`bool`
+    checkerboard_colors
         Show checkerboard grid texture on the cone.
     """
 
     def __init__(
         self,
-        base_radius=1,
-        height=1,
-        direction=Z_AXIS,
-        show_base=False,
-        v_range=[0, TAU],
-        u_min=0,
-        checkerboard_colors=False,
+        base_radius: float = 1,
+        height: float = 1,
+        direction: np.ndarray = Z_AXIS,
+        show_base: bool = False,
+        v_range: Sequence[float] = [0, TAU],
+        u_min: float = 0,
+        checkerboard_colors: bool = False,
         **kwargs,
     ):
         self.direction = direction
@@ -517,13 +518,13 @@ def __init__(
 
         self._rotate_to_direction()
 
-    def func(self, u, v):
+    def func(self, u: float, v: float):
         """Converts from spherical coordinates to cartesian.
         Parameters
         ---------
-        u : :class:`float`
+        u
             The radius.
-        v : :class:`float`
+        v
             The azimuthal angle.
         """
         r = u
@@ -594,25 +595,25 @@ def construct(self):
 
     Parameters
     ---------
-    radius : :class:`float`
+    radius
         The radius of the cylinder.
-    height : :class:`float`
+    height
         The height of the cylinder.
-    direction : :class:`numpy.array`
+    direction
         The direction of the central axis of the cylinder.
-    v_range : :class:`Sequence[float]`
+    v_range
         The height along the height axis (given by direction) to start and end on.
-    show_ends : :class:`bool`
+    show_ends
         Whether to show the end caps or not.
     """
 
     def __init__(
         self,
-        radius=1,
-        height=2,
-        direction=Z_AXIS,
-        v_range=[0, TAU],
-        show_ends=True,
+        radius: float = 1,
+        height: float = 2,
+        direction: np.ndarray = Z_AXIS,
+        v_range: Sequence[float] = [0, TAU],
+        show_ends: bool = True,
         resolution=(24, 24),
         **kwargs,
     ):
@@ -631,13 +632,13 @@ def __init__(
         self._current_theta = 0
         self.set_direction(direction)
 
-    def func(self, u, v):
+    def func(self, u: float, v: float):
         """Converts from cylindrical coordinates to cartesian.
         Parameters
         ---------
-        u : :class:`float`
+        u
             The height.
-        v : :class:`float`
+        v
             The azimuthal angle.
         """
         height = u
@@ -728,15 +729,22 @@ def construct(self):
 
     Parameters
     ---------
-    start : :class:`numpy.array`
+    start
         The start position of the line.
-    end : :class:`numpy.array`
+    end
         The end position of the line.
-    thickness : :class:`float`
+    thickness
         The thickness of the line.
     """
 
-    def __init__(self, start=LEFT, end=RIGHT, thickness=0.02, color=None, **kwargs):
+    def __init__(
+        self,
+        start: np.ndarray = LEFT,
+        end: np.ndarray = RIGHT,
+        thickness: float = 0.02,
+        color=None,
+        **kwargs,
+    ):
         self.thickness = thickness
         self.set_start_and_end_attrs(start, end, **kwargs)
         if color is not None:
@@ -882,25 +890,25 @@ def construct(self):
 
     Parameters
     ---------
-    start : :class:`numpy.array`
+    start
         The start position of the arrow.
-    end : :class:`numpy.array`
+    end
         The end position of the arrow.
-    thickness : :class:`float`
+    thickness
         The thickness of the arrow.
-    height : :class:`float`
+    height
         The height of the conical tip.
-    base_radius: :class:`float`
+    base_radius
         The base radius of the conical tip.
     """
 
     def __init__(
         self,
-        start=LEFT,
-        end=RIGHT,
-        thickness=0.02,
-        height=0.3,
-        base_radius=0.08,
+        start: np.ndarray = LEFT,
+        end: np.ndarray = RIGHT,
+        thickness: float = 0.02,
+        height: float = 0.3,
+        base_radius: float = 0.08,
         color=WHITE,
         **kwargs,
     ):
@@ -940,16 +948,16 @@ def construct(self):
 
     Parameters
     ---------
-    major_radius : :class:`float`
+    major_radius
         Distance from the center of the tube to the center of the torus.
-    minor_radius : :class:`float`
+    minor_radius
         Radius of the tube.
     """
 
     def __init__(
         self,
-        major_radius=3,
-        minor_radius=1,
+        major_radius: float = 3,
+        minor_radius: float = 1,
         u_range=(0, TAU),
         v_range=(0, TAU),
         resolution=None,
diff --git a/manim/mobject/types/image_mobject.py b/manim/mobject/types/image_mobject.py
index c245841596..c0eff69c2f 100644
--- a/manim/mobject/types/image_mobject.py
+++ b/manim/mobject/types/image_mobject.py
@@ -27,7 +27,7 @@ class AbstractImageMobject(Mobject):
 
     Parameters
     ----------
-    scale_to_resolution : :class:`int`
+    scale_to_resolution
         At this resolution the image is placed pixel by pixel onto the screen, so it
         will look the sharpest and best.
         This is a custom parameter of ImageMobject so that rendering a scene with
@@ -37,7 +37,7 @@ class AbstractImageMobject(Mobject):
 
     def __init__(
         self,
-        scale_to_resolution,
+        scale_to_resolution: int,
         pixel_array_dtype="uint8",
         resampling_algorithm=Resampling.BICUBIC,
         **kwargs,
@@ -54,7 +54,7 @@ def set_color(self, color, alpha=None, family=True):
         # Likely to be implemented in subclasses, but no obligation
         pass
 
-    def set_resampling_algorithm(self, resampling_algorithm):
+    def set_resampling_algorithm(self, resampling_algorithm: int):
         """
         Sets the interpolation method for upscaling the image. By default the image is
         interpolated using bicubic algorithm. This method lets you change it.
@@ -63,15 +63,16 @@ def set_resampling_algorithm(self, resampling_algorithm):
 
         Parameters
         ----------
-        resampling_algorithm : :class:`int`, an integer constant described in the
-        Pillow library, or one from the RESAMPLING_ALGORITHMS global dictionary, under
-        the following keys:
-         * 'bicubic' or 'cubic'
-         * 'nearest' or 'none'
-         * 'box'
-         * 'bilinear' or 'linear'
-         * 'hamming'
-         * 'lanczos' or 'antialias'
+        resampling_algorithm
+            An integer constant described in the Pillow library,
+            or one from the RESAMPLING_ALGORITHMS global dictionary,
+            under the following keys:
+            * 'bicubic' or 'cubic'
+            * 'nearest' or 'none'
+            * 'box'
+            * 'bilinear' or 'linear'
+            * 'hamming'
+            * 'lanczos' or 'antialias'
         """
         if isinstance(resampling_algorithm, int):
             self.resampling_algorithm = resampling_algorithm
@@ -107,7 +108,7 @@ class ImageMobject(AbstractImageMobject):
 
     Parameters
     ----------
-    scale_to_resolution : :class:`int`
+    scale_to_resolution
         At this resolution the image is placed pixel by pixel onto the screen, so it
         will look the sharpest and best.
         This is a custom parameter of ImageMobject so that rendering a scene with
@@ -167,7 +168,7 @@ def construct(self):
     def __init__(
         self,
         filename_or_array,
-        scale_to_resolution=QUALITIES[DEFAULT_QUALITY]["pixel_height"],
+        scale_to_resolution: int = QUALITIES[DEFAULT_QUALITY]["pixel_height"],
         invert=False,
         image_mode="RGBA",
         **kwargs,
@@ -205,12 +206,12 @@ def set_color(self, color, alpha=None, family=True):
         self.color = color
         return self
 
-    def set_opacity(self, alpha):
+    def set_opacity(self, alpha: float):
         """Sets the image's opacity.
 
         Parameters
         ----------
-        alpha : float
+        alpha
             The alpha value of the object, 1 being opaque and 0 being
             transparent.
         """
@@ -219,34 +220,36 @@ def set_opacity(self, alpha):
         self.stroke_opacity = alpha
         return self
 
-    def fade(self, darkness=0.5, family=True):
+    def fade(self, darkness: float = 0.5, family: bool = True):
         """Sets the image's opacity using a 1 - alpha relationship.
 
         Parameters
         ----------
-        darkness : float
+        darkness
             The alpha value of the object, 1 being transparent and 0 being
             opaque.
-        family : Boolean
+        family
             Whether the submobjects of the ImageMobject should be affected.
         """
         self.set_opacity(1 - darkness)
         super().fade(darkness, family)
         return self
 
-    def interpolate_color(self, mobject1, mobject2, alpha):
+    def interpolate_color(
+        self, mobject1: ImageMobject, mobject2: ImageMobject, alpha: float
+    ):
         """Interpolates the array of pixel color values from one ImageMobject
         into an array of equal size in the target ImageMobject.
 
         Parameters
         ----------
-        mobject1 : ImageMobject
+        mobject1
             The ImageMobject to transform from.
 
-        mobject2 : ImageMobject
+        mobject2
             The ImageMobject to transform into.
 
-        alpha : float
+        alpha
             Used to track the lerp relationship. Not opacity related.
         """
         assert mobject1.pixel_array.shape == mobject2.pixel_array.shape, (
diff --git a/manim/mobject/types/vectorized_mobject.py b/manim/mobject/types/vectorized_mobject.py
index 3a59d35287..44a816791f 100644
--- a/manim/mobject/types/vectorized_mobject.py
+++ b/manim/mobject/types/vectorized_mobject.py
@@ -68,7 +68,7 @@ class VMobject(Mobject):
     close_new_points
         Indicates that it will not be displayed, but
         that it should count in parent mobject's path
-    tolerance_point_for_equality
+    tolerance_for_point_equality
         This is within a pixel
     """
 
@@ -460,7 +460,7 @@ def set_sheen_direction(self, direction: np.ndarray, family=True):
 
         Parameters
         ----------
-        direction : :class:`numpy.ndarray`, optional
+        direction
             Direction from where the gradient is applied.
 
         Examples
@@ -483,14 +483,14 @@ def set_sheen_direction(self, direction: np.ndarray, family=True):
             self.sheen_direction = direction
         return self
 
-    def rotate_sheen_direction(self, angle: np.ndarray, axis: float = OUT, family=True):
+    def rotate_sheen_direction(self, angle: float, axis: np.ndarray = OUT, family=True):
         """Rotates the direction of the applied sheen.
 
         Parameters
         ----------
-        angle : :class:`float`
+        angle
             Angle by which the direction of sheen is rotated.
-        axis : :class:`numpy.ndarray`
+        axis
             Axis of rotation.
 
         Examples
@@ -514,16 +514,16 @@ def rotate_sheen_direction(self, angle: np.ndarray, axis: float = OUT, family=Tr
             self.sheen_direction = rotate_vector(self.sheen_direction, angle, axis)
         return self
 
-    def set_sheen(self, factor, direction: np.ndarray = None, family=True):
+    def set_sheen(self, factor: float, direction: np.ndarray = None, family=True):
         """Applies a color gradient from a direction.
 
         Parameters
         ----------
-        factor : :class:`float`
+        factor
             The extent of lustre/gradient to apply. If negative, the gradient
             starts from black, if positive the gradient starts from white and
             changes to the current color.
-        direction : :class:`numpy.ndarray`, optional
+        direction
             Direction from where the gradient is applied.
 
         Examples
@@ -668,11 +668,11 @@ def add_cubic_bezier_curve_to(
 
         Parameters
         ----------
-        handle1 : np.ndarray
+        handle1
             first handle
-        handle2 : np.ndarray
+        handle2
             second handle
-        anchor : np.ndarray
+        anchor
             anchor
 
         Returns
@@ -720,7 +720,7 @@ def add_line_to(self, point: np.ndarray):
         Parameters
         ----------
 
-        point : np.ndarray
+        point
             end of the straight line.
 
         Returns
@@ -743,7 +743,7 @@ def add_smooth_curve_to(self, *points: np.array):
 
         Parameters
         ----------
-        points: np.array
+        points
             Points (anchor and handle, or just anchor) to add a smooth curve from
 
         Returns
@@ -809,7 +809,7 @@ def set_points_as_corners(self, points: Sequence[float]):
 
         Parameters
         ----------
-        points : Iterable[float]
+        points
             Array of points that will be set as corners.
 
         Returns
@@ -947,9 +947,9 @@ def consider_points_equals_2d(self, p0: np.ndarray, p1: np.ndarray) -> bool:
         2D point case. NumPy is overkill for such a small question.
         Parameters
         ----------
-        p0 : np.ndarray
+        p0
             first point
-        p1 : np.ndarray
+        p1
             second point
 
         Returns
@@ -979,7 +979,7 @@ def gen_cubic_bezier_tuples_from_points(self, points: np.ndarray) -> typing.Tupl
 
         Parameters
         ----------
-        points : np.ndarray
+        points
             Points from which control points will be extracted.
 
         Returns
@@ -1011,9 +1011,9 @@ def _gen_subpaths_from_points(
 
         Parameters
         ----------
-        points : np.ndarray
+        points
             points defining the bezier curve.
-        filter_func : typing.Callable[int, bool]
+        filter_func
             Filter-func defining the relation.
 
         Returns
@@ -1061,7 +1061,7 @@ def get_nth_curve_points(self, n: int) -> np.ndarray:
 
         Parameters
         ----------
-        n : int
+        n
             index of the desired bezier curve.
 
         Returns
@@ -1078,7 +1078,7 @@ def get_nth_curve_function(self, n: int) -> typing.Callable[[float], np.ndarray]
 
         Parameters
         ----------
-        n : int
+        n
             index of the desired curve.
 
         Returns
@@ -1492,9 +1492,9 @@ def insert_n_curves_to_point_list(self, n: int, points: np.ndarray) -> np.ndarra
 
         Parameters
         ----------
-        n : int
+        n
             Number of desired curves.
-        points : np.ndarray
+        points
             Starting points.
 
         Returns
@@ -1592,11 +1592,11 @@ def pointwise_become_partial(
 
         Parameters
         ----------
-        vmobject : VMobject
+        vmobject
             The vmobject that will serve as a model.
-        a : float
+        a
             upper-bound.
-        b : float
+        b
             lower-bound
 
         Returns
@@ -1716,13 +1716,13 @@ def construct(self):
         self.points = self.points[::-1]
         return self
 
-    def force_direction(self, target_direction):
+    def force_direction(self, target_direction: str):
         """Makes sure that points are either directed clockwise or
         counterclockwise.
 
         Parameters
         ----------
-        target_direction : :class:`str`
+        target_direction
             Either ``"CW"`` or ``"CCW"``.
         """
         if target_direction not in ("CW", "CCW"):
@@ -1809,12 +1809,12 @@ def __str__(self):
             f"submobject{'s' if len(self.submobjects) > 0 else ''}"
         )
 
-    def add(self, *vmobjects):
+    def add(self, *vmobjects: VMobject):
         """Checks if all passed elements are an instance of VMobject and then add them to submobjects
 
         Parameters
         ----------
-        vmobjects : :class:`~.VMobject`
+        vmobjects
             List of VMobject to add
 
         Returns
@@ -1907,14 +1907,14 @@ class VDict(VMobject, metaclass=ConvertToOpenGL):
 
     Parameters
     ----------
-    mapping_or_iterable : Union[:class:`Mapping`, Iterable[Tuple[Hashable, :class:`~.VMobject`]]], optional
+    mapping_or_iterable
             The parameter specifying the key-value mapping of keys and mobjects.
-    show_keys : :class:`bool`, optional
+    show_keys
             Whether to also display the key associated with
             the mobject. This might be useful when debugging,
             especially when there are a lot of mobjects in the
             :class:`VDict`. Defaults to False.
-    kwargs : Any
+    kwargs
             Other arguments to be passed to `Mobject`.
 
     Attributes
@@ -1999,7 +1999,15 @@ def construct(self):
                 self.wait()
     """
 
-    def __init__(self, mapping_or_iterable={}, show_keys=False, **kwargs):
+    def __init__(
+        self,
+        mapping_or_iterable: Union[
+            typing.Mapping[typing.Hashable, VMobject],
+            typing.Iterable[typing.Tuple[typing.Hashable, VMobject]],
+        ] = {},
+        show_keys: bool = False,
+        **kwargs,
+    ):
         super().__init__(**kwargs)
         self.show_keys = show_keys
         self.submob_dict = {}
@@ -2008,7 +2016,13 @@ def __init__(self, mapping_or_iterable={}, show_keys=False, **kwargs):
     def __repr__(self):
         return __class__.__name__ + "(" + repr(self.submob_dict) + ")"
 
-    def add(self, mapping_or_iterable):
+    def add(
+        self,
+        mapping_or_iterable: Union[
+            typing.Mapping[typing.Hashable, VMobject],
+            typing.Iterable[typing.Tuple[typing.Hashable, VMobject]],
+        ],
+    ):
         """Adds the key-value pairs to the :class:`VDict` object.
 
         Also, it internally adds the value to the `submobjects` :class:`list`
@@ -2016,7 +2030,7 @@ def add(self, mapping_or_iterable):
 
         Parameters
         ---------
-        mapping_or_iterable : Union[:class:`Mapping`, Iterable[Tuple[Hashable, :class:`~.VMobject`]]], optional
+        mapping_or_iterable
             The parameter specifying the key-value mapping of keys and mobjects.
 
         Returns
@@ -2036,7 +2050,7 @@ def add(self, mapping_or_iterable):
 
         return self
 
-    def remove(self, key):
+    def remove(self, key: typing.Hashable):
         """Removes the mobject from the :class:`VDict` object having the key `key`
 
         Also, it internally removes the mobject from the `submobjects` :class:`list`
@@ -2044,7 +2058,7 @@ def remove(self, key):
 
         Parameters
         ----------
-        key : :class:`typing.Hashable`
+        key
             The key of the submoject to be removed.
 
         Returns
@@ -2064,12 +2078,12 @@ def remove(self, key):
         del self.submob_dict[key]
         return self
 
-    def __getitem__(self, key):
+    def __getitem__(self, key: typing.Hashable):
         """Override the [] operator for item retrieval.
 
         Parameters
         ----------
-        key : :class:`typing.Hashable`
+        key
            The key of the submoject to be accessed
 
         Returns
@@ -2086,14 +2100,14 @@ def __getitem__(self, key):
         submob = self.submob_dict[key]
         return submob
 
-    def __setitem__(self, key, value):
+    def __setitem__(self, key: typing.Hashable, value: VMobject):
         """Override the [] operator for item assignment.
 
         Parameters
         ----------
-        key : :class:`typing.Hashable`
+        key
             The key of the submoject to be assigned
-        value : :class:`VMobject`
+        value
             The submobject to bind the key to
 
         Returns
@@ -2111,12 +2125,12 @@ def __setitem__(self, key, value):
             self.remove(key)
         self.add([(key, value)])
 
-    def __delitem__(self, key):
+    def __delitem__(self, key: typing.Hashable):
         """Override the del operator for deleting an item.
 
         Parameters
         ----------
-        key : :class:`typing.Hashable`
+        key
             The key of the submoject to be deleted
 
         Returns
@@ -2143,12 +2157,12 @@ def __delitem__(self, key):
         """
         del self.submob_dict[key]
 
-    def __contains__(self, key):
+    def __contains__(self, key: typing.Hashable):
         """Override the in operator.
 
         Parameters
         ----------
-        key : :class:`typing.Hashable`
+        key
             The key to check membership of.
 
         Returns
@@ -2185,15 +2199,15 @@ def get_all_submobjects(self):
         submobjects = self.submob_dict.values()
         return submobjects
 
-    def add_key_value_pair(self, key, value):
+    def add_key_value_pair(self, key: typing.Hashable, value: VMobject):
         """A utility function used by :meth:`add` to add the key-value pair
         to :attr:`submob_dict`. Not really meant to be used externally.
 
         Parameters
         ----------
-        key : :class:`typing.Hashable`
+        key
             The key of the submobject to be added.
-        value : :class:`~.VMobject`
+        value
             The mobject associated with the key
 
         Returns
diff --git a/manim/mobject/vector_field.py b/manim/mobject/vector_field.py
index 16074017f6..75b0f2814c 100644
--- a/manim/mobject/vector_field.py
+++ b/manim/mobject/vector_field.py
@@ -58,7 +58,7 @@ class VectorField(VGroup):
         The value of the color_scheme function to be mapped to the last color in `colors`. Higher values also result in the last color of the gradient.
     colors
         The colors defining the color gradient of the vector field.
-    kwargs : Any
+    kwargs
         Additional arguments to be passed to the :class:`~.VGroup` constructor
 
     """
@@ -143,7 +143,7 @@ def scale_func(
         ----------
         func
             The function defining a vector field.
-        shift_vector
+        scalar
             The scalar to be applied to the vector field.
 
         Examples
@@ -486,7 +486,7 @@ class ArrowVectorField(VectorField):
         The opacity of the arrows.
     vector_config
         Additional arguments to be passed to the :class:`~.Vector` constructor
-    kwargs : Any
+    kwargs
         Additional arguments to be passed to the :class:`~.VGroup` constructor
 
     Examples
@@ -611,8 +611,6 @@ def get_vector(self, point: np.ndarray):
         ----------
         point
             The root point of the vector.
-        kwargs : Any
-            Additional arguments to be passed to the :class:`~.Vector` constructor
 
         """
         output = np.asarray(self.func(point))
@@ -907,7 +905,7 @@ def construct(self):
 
     def start_animation(
         self,
-        warm_up=True,
+        warm_up: bool = True,
         flow_speed: float = 1,
         time_width: float = 0.3,
         rate_func: Callable[[float], float] = linear,
@@ -920,7 +918,7 @@ def start_animation(
 
         Parameters
         ----------
-        warm_up : bool, optional
+        warm_up
             If `True` the animation is initialized line by line. Otherwise it starts with all lines shown.
         flow_speed
             At `flow_speed=1` the distance the flow moves per second is equal to the magnitude of the vector field along its path. The speed value scales the speed of this flow.
diff --git a/manim/renderer/cairo_renderer.py b/manim/renderer/cairo_renderer.py
index c491f2f930..f11b7ea7ca 100644
--- a/manim/renderer/cairo_renderer.py
+++ b/manim/renderer/cairo_renderer.py
@@ -14,6 +14,9 @@
 from ..utils.exceptions import EndSceneEarlyException
 from ..utils.iterables import list_update
 
+if typing.TYPE_CHECKING:
+    from manim.scene.scene import Scene
+
 
 class CairoRenderer:
     """A renderer using Cairo.
@@ -106,24 +109,23 @@ def play(self, scene, *args, **kwargs):
     def update_frame(  # TODO Description in Docstring
         self,
         scene,
-        mobjects=None,
-        include_submobjects=True,
-        ignore_skipping=True,
+        mobjects: typing.Iterable[Mobject] | None = None,
+        include_submobjects: bool = True,
+        ignore_skipping: bool = True,
         **kwargs,
     ):
         """Update the frame.
 
         Parameters
         ----------
-        mobjects: list, optional
-            list of mobjects
+        scene
 
-        background: np.ndarray, optional
-            Pixel Array for Background.
+        mobjects
+            list of mobjects
 
-        include_submobjects: bool, optional
+        include_submobjects
 
-        ignore_skipping : bool, optional
+        ignore_skipping
 
         **kwargs
 
@@ -159,15 +161,15 @@ def get_frame(self):
         """
         return np.array(self.camera.pixel_array)
 
-    def add_frame(self, frame, num_frames=1):
+    def add_frame(self, frame: np.ndarray, num_frames: int = 1):
         """
         Adds a frame to the video_file_stream
 
         Parameters
         ----------
-        frame : numpy.ndarray
+        frame
             The frame to add, as a pixel array.
-        num_frames: int
+        num_frames
             The number of times to add frame.
         """
         dt = 1 / self.camera.frame_rate
@@ -182,7 +184,7 @@ def freeze_current_frame(self, duration: float):
 
         Parameters
         ----------
-        duration : float
+        duration
             [description]
         """
         dt = 1 / self.camera.frame_rate
@@ -201,23 +203,23 @@ def show_frame(self):
 
     def save_static_frame_data(
         self,
-        scene,
+        scene: Scene,
         static_mobjects: typing.Iterable[Mobject],
     ) -> typing.Iterable[Mobject] | None:
-        """Compute and save the static frame, that will be reused at each frame to avoid to unecesseraly computer
-        static mobjects.
+        """Compute and save the static frame, that will be reused at each frame
+        to avoid unnecessarily computing static mobjects.
 
         Parameters
         ----------
-        scene : Scene
+        scene
             The scene played.
-        static_mobjects : typing.Iterable[Mobject]
+        static_mobjects
             Static mobjects of the scene. If None, self.static_image is set to None
 
         Returns
         -------
         typing.Iterable[Mobject]
-            the static image computed.
+            The static image computed.
         """
         self.static_image = None
         if not static_mobjects:
diff --git a/manim/scene/moving_camera_scene.py b/manim/scene/moving_camera_scene.py
index f68ca45865..3adef5fc78 100644
--- a/manim/scene/moving_camera_scene.py
+++ b/manim/scene/moving_camera_scene.py
@@ -70,6 +70,8 @@ def construct(self):
 
 __all__ = ["MovingCameraScene"]
 
+from manim.animation.animation import Animation
+
 from ..camera.moving_camera import MovingCamera
 from ..scene.scene import Scene
 from ..utils.family import extract_mobject_family_members
@@ -89,14 +91,14 @@ class MovingCameraScene(Scene):
     def __init__(self, camera_class=MovingCamera, **kwargs):
         super().__init__(camera_class=camera_class, **kwargs)
 
-    def get_moving_mobjects(self, *animations):
+    def get_moving_mobjects(self, *animations: Animation):
         """
         This method returns a list of all of the Mobjects in the Scene that
         are moving, that are also in the animations passed.
 
         Parameters
         ----------
-        *animations : Animation
+        *animations
             The Animations whose mobjects will be checked.
         """
         moving_mobjects = super().get_moving_mobjects(*animations)
diff --git a/manim/scene/scene.py b/manim/scene/scene.py
index ebb0a42cf4..63a718b087 100644
--- a/manim/scene/scene.py
+++ b/manim/scene/scene.py
@@ -30,6 +30,7 @@
 from watchdog.events import FileSystemEventHandler
 from watchdog.observers import Observer
 
+from manim.mobject.mobject import Mobject
 from manim.mobject.opengl.opengl_mobject import OpenGLPoint
 
 from .. import config, logger
@@ -208,13 +209,13 @@ def __deepcopy__(self, clone_from_id):
                 result.mobject_updater_lists.append((mobject_clone, cloned_updaters))
         return result
 
-    def render(self, preview=False):
+    def render(self, preview: bool = False):
         """
         Renders this Scene.
 
         Parameters
         ---------
-        preview : bool
+        preview
             If true, opens scene in a file viewer.
         """
         self.setup()
@@ -312,13 +313,13 @@ def next_section(
     def __str__(self):
         return self.__class__.__name__
 
-    def get_attrs(self, *keys):
+    def get_attrs(self, *keys: str):
         """
         Gets attributes of a scene given the attribute's identifier/name.
 
         Parameters
         ----------
-        *keys : str
+        *keys
             Name(s) of the argument(s) to return the attribute of.
 
         Returns
@@ -328,13 +329,13 @@ def get_attrs(self, *keys):
         """
         return [getattr(self, key) for key in keys]
 
-    def update_mobjects(self, dt):
+    def update_mobjects(self, dt: float):
         """
         Begins updating all mobjects in the Scene.
 
         Parameters
         ----------
-        dt: int or float
+        dt
             Change in time between updates. Defaults (mostly) to 1/frames_per_second
         """
         for mobject in self.mobjects:
@@ -434,14 +435,14 @@ def get_mobject_family_members(self):
                 use_z_index=self.renderer.camera.use_z_index,
             )
 
-    def add(self, *mobjects):
+    def add(self, *mobjects: Mobject):
         """
         Mobjects will be displayed, from background to
         foreground in the order with which they are added.
 
         Parameters
         ---------
-        *mobjects : Mobject
+        *mobjects
             Mobjects to add.
 
         Returns
@@ -486,7 +487,7 @@ def add_mobjects_from_animations(self, animations):
                 self.add(mob)
                 curr_mobjects += mob.get_family()
 
-    def remove(self, *mobjects):
+    def remove(self, *mobjects: Mobject):
         """
         Removes mobjects in the passed list of mobjects
         from the scene and the foreground, by removing them
@@ -494,7 +495,7 @@ def remove(self, *mobjects):
 
         Parameters
         ----------
-        *mobjects : Mobject
+        *mobjects
             The mobjects to remove.
         """
         if config.renderer == "opengl":
@@ -566,9 +567,9 @@ def remove_updater(self, func: Callable[[float], None]) -> None:
 
     def restructure_mobjects(
         self,
-        to_remove,
-        mobject_list_name="mobjects",
-        extract_families=True,
+        to_remove: Mobject,
+        mobject_list_name: str = "mobjects",
+        extract_families: bool = True,
     ):
         """
         tl:wr
@@ -583,13 +584,13 @@ def restructure_mobjects(
 
         Parameters
         ----------
-        to_remove : Mobject
+        to_remove
             The Mobject to remove.
 
-        mobject_list_name : str, optional
+        mobject_list_name
             The list of mobjects ("mobjects", "foreground_mobjects" etc) to remove from.
 
-        extract_families : bool, optional
+        extract_families
             Whether the mobject's families should be recursively extracted.
 
         Returns
@@ -607,7 +608,7 @@ def restructure_mobjects(
         setattr(self, mobject_list_name, new_list)
         return self
 
-    def get_restructured_mobject_list(self, mobjects, to_remove):
+    def get_restructured_mobject_list(self, mobjects: list, to_remove: list):
         """
         Given a list of mobjects and a list of mobjects to be removed, this
         filters out the removable mobjects from the list of mobjects.
@@ -615,10 +616,10 @@ def get_restructured_mobject_list(self, mobjects, to_remove):
         Parameters
         ----------
 
-        mobjects : list
+        mobjects
             The Mobjects to check.
 
-        to_remove : list
+        to_remove
             The list of mobjects to remove.
 
         Returns
@@ -643,14 +644,14 @@ def add_safe_mobjects_from_list(list_to_examine, set_to_remove):
         return new_mobjects
 
     # TODO, remove this, and calls to this
-    def add_foreground_mobjects(self, *mobjects):
+    def add_foreground_mobjects(self, *mobjects: Mobject):
         """
         Adds mobjects to the foreground, and internally to the list
         foreground_mobjects, and mobjects.
 
         Parameters
         ----------
-        *mobjects : Mobject
+        *mobjects
             The Mobjects to add to the foreground.
 
         Returns
@@ -662,14 +663,14 @@ def add_foreground_mobjects(self, *mobjects):
         self.add(*mobjects)
         return self
 
-    def add_foreground_mobject(self, mobject):
+    def add_foreground_mobject(self, mobject: Mobject):
         """
         Adds a single mobject to the foreground, and internally to the list
         foreground_mobjects, and mobjects.
 
         Parameters
         ----------
-        mobject : Mobject
+        mobject
             The Mobject to add to the foreground.
 
         Returns
@@ -679,14 +680,14 @@ def add_foreground_mobject(self, mobject):
         """
         return self.add_foreground_mobjects(mobject)
 
-    def remove_foreground_mobjects(self, *to_remove):
+    def remove_foreground_mobjects(self, *to_remove: Mobject):
         """
         Removes mobjects from the foreground, and internally from the list
         foreground_mobjects.
 
         Parameters
         ----------
-        *to_remove : Mobject
+        *to_remove
             The mobject(s) to remove from the foreground.
 
         Returns
@@ -697,14 +698,14 @@ def remove_foreground_mobjects(self, *to_remove):
         self.restructure_mobjects(to_remove, "foreground_mobjects")
         return self
 
-    def remove_foreground_mobject(self, mobject):
+    def remove_foreground_mobject(self, mobject: Mobject):
         """
         Removes a single mobject from the foreground, and internally from the list
         foreground_mobjects.
 
         Parameters
         ----------
-        mobject : Mobject
+        mobject
             The mobject to remove from the foreground.
 
         Returns
@@ -714,14 +715,14 @@ def remove_foreground_mobject(self, mobject):
         """
         return self.remove_foreground_mobjects(mobject)
 
-    def bring_to_front(self, *mobjects):
+    def bring_to_front(self, *mobjects: Mobject):
         """
         Adds the passed mobjects to the scene again,
         pushing them to he front of the scene.
 
         Parameters
         ----------
-        *mobjects : Mobject
+        *mobjects
             The mobject(s) to bring to the front of the scene.
 
         Returns
@@ -733,14 +734,14 @@ def bring_to_front(self, *mobjects):
         self.add(*mobjects)
         return self
 
-    def bring_to_back(self, *mobjects):
+    def bring_to_back(self, *mobjects: Mobject):
         """
         Removes the mobject from the scene and
         adds them to the back of the scene.
 
         Parameters
         ----------
-        *mobjects : Mobject
+        *mobjects
             The mobject(s) to push to the back of the scene.
 
         Returns
@@ -769,13 +770,13 @@ def clear(self):
         self.foreground_mobjects = []
         return self
 
-    def get_moving_mobjects(self, *animations):
+    def get_moving_mobjects(self, *animations: Animation):
         """
         Gets all moving mobjects in the passed animation(s).
 
         Parameters
         ----------
-        *animations : Animation
+        *animations
             The animations to check for moving mobjects.
 
         Returns
@@ -818,14 +819,14 @@ def get_moving_and_static_mobjects(self, animations):
         )
         return all_moving_mobject_families, static_mobjects
 
-    def compile_animations(self, *args, **kwargs):
+    def compile_animations(self, *args: Animation, **kwargs):
         """
         Creates _MethodAnimations from any _AnimationBuilders and updates animation
         kwargs with kwargs passed to play().
 
         Parameters
         ----------
-        *args : Tuple[:class:`Animation`]
+        *args
             Animations to be played.
         **kwargs
             Configuration for the call to play().
@@ -856,7 +857,9 @@ def compile_animations(self, *args, **kwargs):
 
         return animations
 
-    def _get_animation_time_progression(self, animations, duration):
+    def _get_animation_time_progression(
+        self, animations: list[Animation], duration: float
+    ):
         """
         You will hardly use this when making your own animations.
         This method is for Manim's internal use.
@@ -867,11 +870,11 @@ def _get_animation_time_progression(self, animations, duration):
 
         Parameters
         ----------
-        animations : List[:class:`~.Animation`, ...]
+        animations
             The list of animations to get
             the time progression for.
 
-        duration : int or float
+        duration
             duration of wait time
 
         Returns
@@ -908,10 +911,10 @@ def _get_animation_time_progression(self, animations, duration):
 
     def get_time_progression(
         self,
-        run_time,
+        run_time: float,
         description,
-        n_iterations=None,
-        override_skip_animations=False,
+        n_iterations: int | None = None,
+        override_skip_animations: bool = False,
     ):
         """
         You will hardly use this when making your own animations.
@@ -925,13 +928,13 @@ def get_time_progression(
 
         Parameters
         ----------
-        run_time : float
+        run_time
             The ``run_time`` of the animation.
 
-        n_iterations : int, optional
+        n_iterations
             The number of iterations in the animation.
 
-        override_skip_animations : bool, optional
+        override_skip_animations
             Whether or not to show skipped animations in the progress bar.
 
         Returns
@@ -954,13 +957,13 @@ def get_time_progression(
         )
         return time_progression
 
-    def get_run_time(self, animations):
+    def get_run_time(self, animations: list[Animation]):
         """
         Gets the total run time for a list of animations.
 
         Parameters
         ----------
-        animations : List[:class:`Animation`, ...]
+        animations
             A list of the animations whose total
             ``run_time`` is to be calculated.
 
@@ -1093,7 +1096,7 @@ def pause(self, duration: float = DEFAULT_WAIT_TIME):
         """
         self.wait(duration=duration, frozen_frame=True)
 
-    def wait_until(self, stop_condition, max_time=60):
+    def wait_until(self, stop_condition: Callable[[], bool], max_time: float = 60):
         """
         Like a wrapper for wait().
         You pass a function that determines whether to continue waiting,
@@ -1101,10 +1104,10 @@ def wait_until(self, stop_condition, max_time=60):
 
         Parameters
         ----------
-        stop_condition : function
+        stop_condition
             The function whose boolean return value determines whether to continue waiting
 
-        max_time : int or float, optional
+        max_time
             The maximum wait time in seconds, if the stop_condition is never fulfilled.
         """
         self.wait(max_time, stop_condition=stop_condition)
@@ -1117,8 +1120,11 @@ def compile_animation_data(self, *animations: Animation, **play_kwargs):
 
         Parameters
         ----------
-        skip_rendering : bool, optional
-            Whether the rendering should be skipped, by default False
+        animations
+            Animation or mobject with mobject method and params
+        play_kwargs
+            named parameters affecting what was passed in ``animations``,
+            e.g. ``run_time``, ``lag_ratio`` and so on.
 
         Returns
         -------
@@ -1172,7 +1178,7 @@ def is_current_animation_frozen_frame(self) -> bool:
             and self.animations[0].is_static_wait
         )
 
-    def play_internal(self, skip_rendering=False):
+    def play_internal(self, skip_rendering: bool = False):
         """
         This method is used to prep the animations for rendering,
         apply the arguments and parameters required to them,
@@ -1180,11 +1186,8 @@ def play_internal(self, skip_rendering=False):
 
         Parameters
         ----------
-        args
-            Animation or mobject with mobject method and params
-        kwargs
-            named parameters affecting what was passed in ``args``,
-            e.g. ``run_time``, ``lag_ratio`` and so on.
+        skip_rendering
+            Whether the rendering should be skipped, by default False
         """
         self.duration = self.get_run_time(self.animations)
         self.time_progression = self._get_animation_time_progression(
@@ -1479,19 +1482,25 @@ def construct(self):
         )
         self.renderer.file_writer.subcaptions.append(subtitle)
 
-    def add_sound(self, sound_file, time_offset=0, gain=None, **kwargs):
+    def add_sound(
+        self,
+        sound_file: str,
+        time_offset: float = 0,
+        gain: float | None = None,
+        **kwargs,
+    ):
         """
         This method is used to add a sound to the animation.
 
         Parameters
         ----------
 
-        sound_file : str
+        sound_file
             The path to the sound file.
-        time_offset : int,float, optional
+        time_offset
             The offset in the sound file after which
             the sound can be played.
-        gain : float
+        gain
             Amplification of the sound.
 
         Examples
diff --git a/manim/scene/scene_file_writer.py b/manim/scene/scene_file_writer.py
index 48131c7516..f03f78319c 100644
--- a/manim/scene/scene_file_writer.py
+++ b/manim/scene/scene_file_writer.py
@@ -10,7 +10,7 @@
 import subprocess
 import sys
 from pathlib import Path
-from typing import Any
+from typing import TYPE_CHECKING, Any
 
 import numpy as np
 import srt
@@ -36,6 +36,9 @@
 from ..utils.sounds import get_full_sound_file_path
 from .section import DefaultSectionType, Section
 
+if TYPE_CHECKING:
+    from manim.renderer.opengl_renderer import OpenGLRenderer
+
 
 class SceneFileWriter:
     """
@@ -200,13 +203,13 @@ def next_section(self, name: str, type: str, skip_animations: bool) -> None:
             ),
         )
 
-    def add_partial_movie_file(self, hash_animation):
+    def add_partial_movie_file(self, hash_animation: str):
         """Adds a new partial movie file path to `scene.partial_movie_files` and current section from a hash.
         This method will compute the path from the hash. In addition to that it adds the new animation to the current section.
 
         Parameters
         ----------
-        hash_animation : str
+        hash_animation
             Hash of the animation.
         """
         if not hasattr(self, "partial_movie_directory") or not write_to_movie():
@@ -267,21 +270,26 @@ def create_audio_segment(self):
         """
         self.audio_segment = AudioSegment.silent()
 
-    def add_audio_segment(self, new_segment, time=None, gain_to_background=None):
+    def add_audio_segment(
+        self,
+        new_segment: AudioSegment,
+        time: float | None = None,
+        gain_to_background: float | None = None,
+    ):
         """
         This method adds an audio segment from an
         AudioSegment type object and suitable parameters.
 
         Parameters
         ----------
-        new_segment : AudioSegment
+        new_segment
             The audio segment to add
 
-        time : int, float, optional
+        time
             the timestamp at which the
             sound should be added.
 
-        gain_to_background : optional
+        gain_to_background
             The gain of the segment from the background.
         """
         if not self.includes_sound:
@@ -307,19 +315,25 @@ def add_audio_segment(self, new_segment, time=None, gain_to_background=None):
             gain_during_overlay=gain_to_background,
         )
 
-    def add_sound(self, sound_file, time=None, gain=None, **kwargs):
+    def add_sound(
+        self,
+        sound_file: str,
+        time: float | None = None,
+        gain: float | None = None,
+        **kwargs,
+    ):
         """
         This method adds an audio segment from a sound file.
 
         Parameters
         ----------
-        sound_file : str
+        sound_file
             The path to the sound file.
 
-        time : float or int, optional
+        time
             The timestamp at which the audio should be added.
 
-        gain : optional
+        gain
             The gain of the given audio segment.
 
         **kwargs
@@ -334,40 +348,40 @@ def add_sound(self, sound_file, time=None, gain=None, **kwargs):
         self.add_audio_segment(new_segment, time, **kwargs)
 
     # Writers
-    def begin_animation(self, allow_write=False, file_path=None):
+    def begin_animation(self, allow_write: bool = False, file_path=None):
         """
         Used internally by manim to stream the animation to FFMPEG for
         displaying or writing to a file.
 
         Parameters
         ----------
-        allow_write : bool, optional
+        allow_write
             Whether or not to write to a video file.
         """
         if write_to_movie() and allow_write:
             self.open_movie_pipe(file_path=file_path)
 
-    def end_animation(self, allow_write=False):
+    def end_animation(self, allow_write: bool = False):
         """
         Internally used by Manim to stop streaming to
         FFMPEG gracefully.
 
         Parameters
         ----------
-        allow_write : bool, optional
+        allow_write
             Whether or not to write to a video file.
         """
         if write_to_movie() and allow_write:
             self.close_movie_pipe()
 
-    def write_frame(self, frame_or_renderer):
+    def write_frame(self, frame_or_renderer: np.ndarray | OpenGLRenderer):
         """
         Used internally by Manim to write a frame to
         the FFMPEG input buffer.
 
         Parameters
         ----------
-        frame : np.array
+        frame_or_renderer
             Pixel array of the frame.
         """
         if config.renderer == "opengl":
@@ -379,7 +393,7 @@ def write_frame(self, frame_or_renderer):
             if is_png_format() and not config["dry_run"]:
                 self.output_image_from_array(frame)
 
-    def write_opengl_frame(self, renderer):
+    def write_opengl_frame(self, renderer: OpenGLRenderer):
         if write_to_movie():
             self.writing_process.stdin.write(
                 renderer.get_raw_frame_buffer_object_data(),
@@ -411,14 +425,14 @@ def output_image(self, image: Image.Image, target_dir, ext, zero_pad: bool):
             image.save(f"{target_dir}{self.frame_count}{ext}")
         self.frame_count += 1
 
-    def save_final_image(self, image):
+    def save_final_image(self, image: np.ndarray):
         """
         The name is a misnomer. This method saves the image
         passed to it as an in the default image directory.
 
         Parameters
         ----------
-        image : np.array
+        image
             The pixel array of the image to save.
         """
         if config["dry_run"]:
@@ -516,12 +530,12 @@ def close_movie_pipe(self):
             {"path": f"'{self.partial_movie_file_path}'"},
         )
 
-    def is_already_cached(self, hash_invocation):
+    def is_already_cached(self, hash_invocation: str):
         """Will check if a file named with `hash_invocation` exists.
 
         Parameters
         ----------
-        hash_invocation : :class:`str`
+        hash_invocation
             The hash corresponding to an invocation to either `scene.play` or `scene.wait`.
 
         Returns
diff --git a/manim/scene/three_d_scene.py b/manim/scene/three_d_scene.py
index db49e663e1..258cdce1c3 100644
--- a/manim/scene/three_d_scene.py
+++ b/manim/scene/three_d_scene.py
@@ -67,22 +67,22 @@ def set_camera_orientation(
 
         Parameters
         ----------
-        phi : int or float, optional
+        phi
             The polar angle i.e the angle between Z_AXIS and Camera through ORIGIN in radians.
 
-        theta : int or float, optional
+        theta
             The azimuthal angle i.e the angle that spins the camera around the Z_AXIS.
 
-        focal_distance : int or float, optional
+        focal_distance
             The focal_distance of the Camera.
 
-        gamma : int or float, optional
+        gamma
             The rotation of the camera about the vector from the ORIGIN to the Camera.
 
-        zoom : float, optional
+        zoom
             The zoom factor of the scene.
 
-        frame_center : list, tuple or np.array, optional
+        frame_center
             The new center of the camera frame in cartesian coordinates.
 
         """
@@ -100,17 +100,17 @@ def set_camera_orientation(
         if frame_center is not None:
             self.renderer.camera._frame_center.move_to(frame_center)
 
-    def begin_ambient_camera_rotation(self, rate=0.02, about="theta"):
+    def begin_ambient_camera_rotation(self, rate: float = 0.02, about: str = "theta"):
         """
         This method begins an ambient rotation of the camera about the Z_AXIS,
         in the anticlockwise direction
 
         Parameters
         ----------
-        rate : int or float, optional
+        rate
             The rate at which the camera should rotate about the Z_AXIS.
             Negative rate means clockwise rotation.
-        about: (str)
+        about
             one of 3 options: ["theta", "phi", "gamma"]. defaults to theta.
         """
         # TODO, use a ValueTracker for rate, so that it
@@ -230,25 +230,25 @@ def move_camera(
 
         Parameters
         ----------
-        phi : int or float, optional
+        phi
             The polar angle i.e the angle between Z_AXIS and Camera through ORIGIN in radians.
 
-        theta : int or float, optional
+        theta
             The azimuthal angle i.e the angle that spins the camera around the Z_AXIS.
 
-        focal_distance : int or float, optional
+        focal_distance
             The radial focal_distance between ORIGIN and Camera.
 
-        gamma : int or float, optional
+        gamma
             The rotation of the camera about the vector from the ORIGIN to the Camera.
 
-        zoom : int or float, optional
+        zoom
             The zoom factor of the camera.
 
-        frame_center : list, tuple or np.array, optional
+        frame_center
             The new center of the camera frame in cartesian coordinates.
 
-        added_anims : list, optional
+        added_anims
             Any other animations to be played at the same time.
 
         """
@@ -315,14 +315,14 @@ def move_camera(
         if frame_center is not None and config.renderer != "opengl":
             self.remove(self.camera._frame_center)
 
-    def get_moving_mobjects(self, *animations):
+    def get_moving_mobjects(self, *animations: Animation):
         """
         This method returns a list of all of the Mobjects in the Scene that
         are moving, that are also in the animations passed.
 
         Parameters
         ----------
-        *animations : Animation
+        *animations
             The animations whose mobjects will be checked.
         """
         moving_mobjects = super().get_moving_mobjects(*animations)
@@ -333,7 +333,7 @@ def get_moving_mobjects(self, *animations):
             return self.mobjects
         return moving_mobjects
 
-    def add_fixed_orientation_mobjects(self, *mobjects, **kwargs):
+    def add_fixed_orientation_mobjects(self, *mobjects: Mobject, **kwargs):
         """
         This method is used to prevent the rotation and tilting
         of mobjects as the camera moves around. The mobject can
@@ -343,7 +343,7 @@ def add_fixed_orientation_mobjects(self, *mobjects, **kwargs):
 
         Parameters
         ----------
-        *mobjects : Mobject
+        *mobjects
             The Mobject(s) whose orientation must be fixed.
 
         **kwargs
@@ -360,7 +360,7 @@ def add_fixed_orientation_mobjects(self, *mobjects, **kwargs):
                 mob.fix_orientation()
                 self.add(mob)
 
-    def add_fixed_in_frame_mobjects(self, *mobjects):
+    def add_fixed_in_frame_mobjects(self, *mobjects: Mobject):
         """
         This method is used to prevent the rotation and movement
         of mobjects as the camera moves around. The mobject is
@@ -369,7 +369,7 @@ def add_fixed_in_frame_mobjects(self, *mobjects):
 
         Parameters
         ----------
-        *mobjects : Mobjects
+        *mobjects
             The Mobjects whose orientation must be fixed.
         """
         if config.renderer != "opengl":
@@ -382,7 +382,7 @@ def add_fixed_in_frame_mobjects(self, *mobjects):
                 mob.fix_in_frame()
                 self.add(mob)
 
-    def remove_fixed_orientation_mobjects(self, *mobjects):
+    def remove_fixed_orientation_mobjects(self, *mobjects: Mobject):
         """
         This method "unfixes" the orientation of the mobjects
         passed, meaning they will no longer be at the same angle
@@ -391,7 +391,7 @@ def remove_fixed_orientation_mobjects(self, *mobjects):
 
         Parameters
         ----------
-        *mobjects : Mobjects
+        *mobjects
             The Mobjects whose orientation must be unfixed.
         """
         if config.renderer != "opengl":
@@ -402,7 +402,7 @@ def remove_fixed_orientation_mobjects(self, *mobjects):
                 mob.unfix_orientation()
                 self.remove(mob)
 
-    def remove_fixed_in_frame_mobjects(self, *mobjects):
+    def remove_fixed_in_frame_mobjects(self, *mobjects: Mobject):
         """
          This method undoes what add_fixed_in_frame_mobjects does.
          It allows the mobject to be affected by the movement of
@@ -410,7 +410,7 @@ def remove_fixed_in_frame_mobjects(self, *mobjects):
 
         Parameters
         ----------
-        *mobjects : Mobjects
+        *mobjects
             The Mobjects whose position and orientation must be unfixed.
         """
         if config.renderer != "opengl":
diff --git a/manim/scene/vector_space_scene.py b/manim/scene/vector_space_scene.py
index aa4df4997b..f0bdd351b5 100644
--- a/manim/scene/vector_space_scene.py
+++ b/manim/scene/vector_space_scene.py
@@ -4,6 +4,8 @@
 
 __all__ = ["VectorScene", "LinearTransformationScene"]
 
+from typing import Callable
+
 import numpy as np
 from colour import Color
 
@@ -46,13 +48,13 @@ def __init__(self, basis_vector_stroke_width=6, **kwargs):
         super().__init__(**kwargs)
         self.basis_vector_stroke_width = basis_vector_stroke_width
 
-    def add_plane(self, animate=False, **kwargs):
+    def add_plane(self, animate: bool = False, **kwargs):
         """
         Adds a NumberPlane object to the background.
 
         Parameters
         ----------
-        animate : bool, optional
+        animate
             Whether or not to animate the addition of the plane via Create.
         **kwargs
             Any valid keyword arguments accepted by NumberPlane.
@@ -68,15 +70,15 @@ def add_plane(self, animate=False, **kwargs):
         self.add(plane)
         return plane
 
-    def add_axes(self, animate=False, color=WHITE, **kwargs):
+    def add_axes(self, animate: bool = False, color: bool = WHITE, **kwargs):
         """
         Adds a pair of Axes to the Scene.
 
         Parameters
         ----------
-        animate : bool, optional
+        animate
             Whether or not to animate the addition of the axes through Create.
-        color : bool, optional
+        color
             The color of the axes. Defaults to WHITE.
         """
         axes = Axes(color=color, axis_config={"unit_size": 1})
@@ -85,17 +87,17 @@ def add_axes(self, animate=False, color=WHITE, **kwargs):
         self.add(axes)
         return axes
 
-    def lock_in_faded_grid(self, dimness=0.7, axes_dimness=0.5):
+    def lock_in_faded_grid(self, dimness: float = 0.7, axes_dimness: float = 0.5):
         """
         This method freezes the NumberPlane and Axes that were already
         in the background, and adds new, manipulatable ones to the foreground.
 
         Parameters
         ----------
-        dimness : int, float, optional
+        dimness
             The required dimness of the NumberPlane
 
-        axes_dimness : int, float, optional
+        axes_dimness
             The required dimness of the Axes.
         """
         plane = self.add_plane()
@@ -109,13 +111,13 @@ def lock_in_faded_grid(self, dimness=0.7, axes_dimness=0.5):
         self.renderer.camera = Camera(self.renderer.get_frame())
         self.clear()
 
-    def get_vector(self, numerical_vector, **kwargs):
+    def get_vector(self, numerical_vector: np.ndarray | list | tuple, **kwargs):
         """
         Returns an arrow on the Plane given an input numerical vector.
 
         Parameters
         ----------
-        numerical_vector : np.array, list, tuple
+        numerical_vector
             The Vector to plot.
         **kwargs
             Any valid keyword argument of Arrow.
@@ -132,22 +134,28 @@ def get_vector(self, numerical_vector, **kwargs):
             **kwargs,
         )
 
-    def add_vector(self, vector, color=YELLOW, animate=True, **kwargs):
+    def add_vector(
+        self,
+        vector: Arrow | list | tuple | np.ndarray,
+        color: str = YELLOW,
+        animate: bool = True,
+        **kwargs,
+    ):
         """
         Returns the Vector after adding it to the Plane.
 
         Parameters
         ----------
-        vector : Arrow, list, tuple, np.array
+        vector
             It can be a pre-made graphical vector, or the
             coordinates of one.
 
-        color : str
+        color
             The string of the hex color of the vector.
             This is only taken into consideration if
             'vector' is not an Arrow. Defaults to YELLOW.
 
-        animate : bool
+        animate
             Whether or not to animate the addition of the vector
             by using GrowArrow
 
@@ -168,25 +176,18 @@ def add_vector(self, vector, color=YELLOW, animate=True, **kwargs):
         self.add(vector)
         return vector
 
-    def write_vector_coordinates(self, vector, **kwargs):
+    def write_vector_coordinates(self, vector: Arrow, **kwargs):
         """
         Returns a column matrix indicating the vector coordinates,
         after writing them to the screen.
 
         Parameters
         ----------
-        vector : :class:`.Arrow`
+        vector
             The arrow representing the vector.
 
         **kwargs
-            Any valid keyword arguments of :meth:`~.geometry.Vector.coordinate_label`:
-
-            integer_labels : :class:`bool`
-                Whether or not to round the coordinates to integers. Default: ``True``.
-            n_dim : :class:`int`
-                The number of dimensions of the vector. Default: ``2``.
-            color
-                The color of the label. Default: ``WHITE``.
+            Any valid keyword arguments of :meth:`~.Vector.coordinate_label`:
 
         Returns
         -------
@@ -197,16 +198,16 @@ def write_vector_coordinates(self, vector, **kwargs):
         self.play(Write(coords))
         return coords
 
-    def get_basis_vectors(self, i_hat_color=X_COLOR, j_hat_color=Y_COLOR):
+    def get_basis_vectors(self, i_hat_color: str = X_COLOR, j_hat_color: str = Y_COLOR):
         """
         Returns a VGroup of the Basis Vectors (1,0) and (0,1)
 
         Parameters
         ----------
-        i_hat_color : str
+        i_hat_color
             The hex colour to use for the basis vector in the x direction
 
-        j_hat_color : str
+        j_hat_color
             The hex colour to use for the basis vector in the y direction
 
         Returns
@@ -252,32 +253,32 @@ def get_basis_vector_labels(self, **kwargs):
 
     def get_vector_label(
         self,
-        vector,
+        vector: Vector,
         label,
-        at_tip=False,
-        direction="left",
-        rotate=False,
-        color=None,
-        label_scale_factor=LARGE_BUFF - 0.2,
+        at_tip: bool = False,
+        direction: str = "left",
+        rotate: bool = False,
+        color: str | None = None,
+        label_scale_factor: float = LARGE_BUFF - 0.2,
     ):
         """
         Returns naming labels for the passed vector.
 
         Parameters
         ----------
-        vector : Vector
+        vector
             Vector Object for which to get the label.
 
-        at_tip : bool
+        at_tip
             Whether or not to place the label at the tip of the vector.
 
-        direction : {"left"}
+        direction
             If the label should be on the "left" or right of the vector.
-        rotate : bool
+        rotate
             Whether or not to rotate it to align it with the vector.
-        color : str
+        color
             The color to give the label.
-        label_scale_factor (Union[int,float])
+        label_scale_factor
             How much to scale the label by.
 
         Returns
@@ -311,20 +312,22 @@ def get_vector_label(
             label.shift((vector.get_end() - vector.get_start()) / 2)
         return label
 
-    def label_vector(self, vector, label, animate=True, **kwargs):
+    def label_vector(
+        self, vector: Vector, label: MathTex | str, animate: bool = True, **kwargs
+    ):
         """
         Shortcut method for creating, and animating the addition of
         a label for the vector.
 
         Parameters
         ----------
-        vector : Vector
+        vector
             The vector for which the label must be added.
 
-        label : MathTex, str
+        label
             The MathTex/string of the label.
 
-        animate : bool, optional
+        animate
             Whether or not to animate the labelling w/ Write
 
         **kwargs
@@ -361,7 +364,12 @@ def position_y_coordinate(
         y_coord.set_color(Y_COLOR)
         return y_coord
 
-    def coords_to_vector(self, vector, coords_start=2 * RIGHT + 2 * UP, clean_up=True):
+    def coords_to_vector(
+        self,
+        vector: np.ndarray | list | tuple,
+        coords_start: np.ndarray | list | tuple = 2 * RIGHT + 2 * UP,
+        clean_up: bool = True,
+    ):
         """
         This method writes the vector as a column matrix (henceforth called the label),
         takes the values in it one by one, and form the corresponding
@@ -370,16 +378,16 @@ def coords_to_vector(self, vector, coords_start=2 * RIGHT + 2 * UP, clean_up=Tru
 
         Parameters
         ----------
-        vector : np.ndarray, list, tuple
+        vector
             The vector to show.
 
-        coords_start : np.ndarray,list,tuple, optional
+        coords_start
             The starting point of the location of
             the label of the vector that shows it
             numerically.
             Defaults to 2 * RIGHT + 2 * UP or (2,2)
 
-        clean_up : bool, optional
+        clean_up
             Whether or not to remove whatever
             this method did after it's done.
 
@@ -419,7 +427,12 @@ def coords_to_vector(self, vector, coords_start=2 * RIGHT + 2 * UP, clean_up=Tru
             self.clear()
             self.add(*starting_mobjects)
 
-    def vector_to_coords(self, vector, integer_labels=True, clean_up=True):
+    def vector_to_coords(
+        self,
+        vector: np.ndarray | list | tuple,
+        integer_labels: bool = True,
+        clean_up: bool = True,
+    ):
         """
         This method displays vector as a Vector() based vector, and then shows
         the corresponding lines that make up the x and y components of the vector.
@@ -428,14 +441,14 @@ def vector_to_coords(self, vector, integer_labels=True, clean_up=True):
 
         Parameters
         ----------
-        vector : np.ndarray, list, tuple
+        vector
             The vector to show.
 
-        integer_label : bool, optional
+        integer_labels
             Whether or not to round the value displayed.
             in the vector's label to the nearest integer
 
-        clean_up : bool, optional
+        clean_up
             Whether or not to remove whatever
             this method did after it's done.
 
@@ -477,7 +490,7 @@ def vector_to_coords(self, vector, integer_labels=True, clean_up=True):
             self.add(*starting_mobjects)
         return array, x_line, y_line
 
-    def show_ghost_movement(self, vector):
+    def show_ghost_movement(self, vector: Arrow | list | tuple | np.ndarray):
         """
         This method plays an animation that partially shows the entire plane moving
         in the direction of a particular vector. This is useful when you wish to
@@ -486,7 +499,7 @@ def show_ghost_movement(self, vector):
 
         Parameters
         ----------
-        vector : Arrow, list, tuple, np.ndarray
+        vector
             The vector which indicates the direction of movement.
         """
         if isinstance(vector, Arrow):
@@ -641,18 +654,18 @@ def setup(self):
             self.i_hat, self.j_hat = self.basis_vectors
             self.add(self.basis_vectors)
 
-    def add_special_mobjects(self, mob_list, *mobs_to_add):
+    def add_special_mobjects(self, mob_list: list, *mobs_to_add: Mobject):
         """
         Adds mobjects to a separate list that can be tracked,
         if these mobjects have some extra importance.
 
         Parameters
         ----------
-        mob_list : list
+        mob_list
             The special list to which you want to add
             these mobjects.
 
-        *mobs_to_add : Mobject
+        *mobs_to_add
             The mobjects to add.
 
         """
@@ -661,44 +674,46 @@ def add_special_mobjects(self, mob_list, *mobs_to_add):
                 mob_list.append(mobject)
                 self.add(mobject)
 
-    def add_background_mobject(self, *mobjects):
+    def add_background_mobject(self, *mobjects: Mobject):
         """
         Adds the mobjects to the special list
         self.background_mobjects.
 
         Parameters
         ----------
-        *mobjects : Mobject
+        *mobjects
             The mobjects to add to the list.
         """
         self.add_special_mobjects(self.background_mobjects, *mobjects)
 
     # TODO, this conflicts with Scene.add_fore
-    def add_foreground_mobject(self, *mobjects):
+    def add_foreground_mobject(self, *mobjects: Mobject):
         """
         Adds the mobjects to the special list
         self.foreground_mobjects.
 
         Parameters
         ----------
-        *mobjects : Mobject
+        *mobjects
             The mobjects to add to the list
         """
         self.add_special_mobjects(self.foreground_mobjects, *mobjects)
 
-    def add_transformable_mobject(self, *mobjects):
+    def add_transformable_mobject(self, *mobjects: Mobject):
         """
         Adds the mobjects to the special list
         self.transformable_mobjects.
 
         Parameters
         ----------
-        *mobjects : Mobject
+        *mobjects
             The mobjects to add to the list.
         """
         self.add_special_mobjects(self.transformable_mobjects, *mobjects)
 
-    def add_moving_mobject(self, mobject, target_mobject=None):
+    def add_moving_mobject(
+        self, mobject: Mobject, target_mobject: Mobject | None = None
+    ):
         """
         Adds the mobject to the special list
         self.moving_mobject, and adds a property
@@ -708,28 +723,30 @@ def add_moving_mobject(self, mobject, target_mobject=None):
 
         Parameters
         ----------
-        mobject : Mobject
+        mobject
             The mobjects to add to the list
 
-        target_mobject : Mobject, optional
+        target_mobject
             What the moving_mobject goes to, etc.
         """
         mobject.target = target_mobject
         self.add_special_mobjects(self.moving_mobjects, mobject)
 
-    def get_unit_square(self, color=YELLOW, opacity=0.3, stroke_width=3):
+    def get_unit_square(
+        self, color: str = YELLOW, opacity: float = 0.3, stroke_width: float = 3
+    ):
         """
         Returns a unit square for the current NumberPlane.
 
         Parameters
         ----------
-        color : str, optional
+        color
             The string of the hex color code of the color wanted.
 
-        opacity : float, int, optional
+        opacity
             The opacity of the square
 
-        stroke_width : int, float, optional
+        stroke_width
             The stroke_width in pixels of the border of the square
 
         Returns
@@ -748,14 +765,14 @@ def get_unit_square(self, color=YELLOW, opacity=0.3, stroke_width=3):
         square.move_to(self.plane.coords_to_point(0, 0), DL)
         return square
 
-    def add_unit_square(self, animate=False, **kwargs):
+    def add_unit_square(self, animate: bool = False, **kwargs):
         """
         Adds a unit square to the scene via
         self.get_unit_square.
 
         Parameters
         ----------
-        animate (bool)
+        animate
             Whether or not to animate the addition
             with DrawBorderThenFill.
         **kwargs
@@ -778,18 +795,20 @@ def add_unit_square(self, animate=False, **kwargs):
         self.square = square
         return self
 
-    def add_vector(self, vector, color=YELLOW, **kwargs):
+    def add_vector(
+        self, vector: Arrow | list | tuple | np.ndarray, color: str = YELLOW, **kwargs
+    ):
         """
         Adds a vector to the scene, and puts it in the special
         list self.moving_vectors.
 
         Parameters
         ----------
-        vector : Arrow,list,tuple,np.ndarray
+        vector
             It can be a pre-made graphical vector, or the
             coordinates of one.
 
-        color : str
+        color
             The string of the hex color of the vector.
             This is only taken into consideration if
             'vector' is not an Arrow. Defaults to YELLOW.
@@ -806,7 +825,7 @@ def add_vector(self, vector, color=YELLOW, **kwargs):
         self.moving_vectors.append(vector)
         return vector
 
-    def write_vector_coordinates(self, vector, **kwargs):
+    def write_vector_coordinates(self, vector: Arrow, **kwargs):
         """
         Returns a column matrix indicating the vector coordinates,
         after writing them to the screen, and adding them to the
@@ -814,7 +833,7 @@ def write_vector_coordinates(self, vector, **kwargs):
 
         Parameters
         ----------
-        vector : Arrow
+        vector
             The arrow representing the vector.
 
         **kwargs
@@ -830,7 +849,12 @@ def write_vector_coordinates(self, vector, **kwargs):
         return coords
 
     def add_transformable_label(
-        self, vector, label, transformation_name="L", new_label=None, **kwargs
+        self,
+        vector: Vector,
+        label: MathTex | str,
+        transformation_name: str | MathTex = "L",
+        new_label: str | MathTex | None = None,
+        **kwargs,
     ):
         """
         Method for creating, and animating the addition of
@@ -838,16 +862,16 @@ def add_transformable_label(
 
         Parameters
         ----------
-        vector : Vector
+        vector
             The vector for which the label must be added.
 
-        label : Union[:class:`~.MathTex`, :class:`str`]
+        label
             The MathTex/string of the label.
 
-        transformation_name : Union[:class:`str`, :class:`~.MathTex`], optional
+        transformation_name
             The name to give the transformation as a label.
 
-        new_label : Union[:class:`str`, :class:`~.MathTex`], optional
+        new_label
             What the label should display after a Linear Transformation
 
         **kwargs
@@ -873,7 +897,12 @@ def add_transformable_label(
         self.transformable_labels.append(label_mob)
         return label_mob
 
-    def add_title(self, title, scale_factor=1.5, animate=False):
+    def add_title(
+        self,
+        title: str | MathTex | Tex,
+        scale_factor: float = 1.5,
+        animate: bool = False,
+    ):
         """
         Adds a title, after scaling it, adding a background rectangle,
         moving it to the top and adding it to foreground_mobjects adding
@@ -881,13 +910,13 @@ def add_title(self, title, scale_factor=1.5, animate=False):
 
         Parameters
         ----------
-        title : Union[:class:`str`, :class:`~.MathTex`, :class:`~.Tex`]
+        title
             What the title should be.
 
-        scale_factor : int, float, optional
+        scale_factor
             How much the title should be scaled by.
 
-        animate : bool
+        animate
             Whether or not to animate the addition.
 
         Returns
@@ -905,19 +934,21 @@ def add_title(self, title, scale_factor=1.5, animate=False):
         self.title = title
         return self
 
-    def get_matrix_transformation(self, matrix):
+    def get_matrix_transformation(self, matrix: np.ndarray | list | tuple):
         """
         Returns a function corresponding to the linear
         transformation represented by the matrix passed.
 
         Parameters
         ----------
-        matrix : np.ndarray, list, tuple
+        matrix
             The matrix.
         """
         return self.get_transposed_matrix_transformation(np.array(matrix).T)
 
-    def get_transposed_matrix_transformation(self, transposed_matrix):
+    def get_transposed_matrix_transformation(
+        self, transposed_matrix: np.ndarray | list | tuple
+    ):
         """
         Returns a function corresponding to the linear
         transformation represented by the transposed
@@ -925,7 +956,7 @@ def get_transposed_matrix_transformation(self, transposed_matrix):
 
         Parameters
         ----------
-        matrix : np.ndarray, list, tuple
+        transposed_matrix
             The matrix.
         """
         transposed_matrix = np.array(transposed_matrix)
@@ -937,7 +968,7 @@ def get_transposed_matrix_transformation(self, transposed_matrix):
             raise ValueError("Matrix has bad dimensions")
         return lambda point: np.dot(point, transposed_matrix)
 
-    def get_piece_movement(self, pieces):
+    def get_piece_movement(self, pieces: list | tuple | np.ndarray):
         """
         This method returns an animation that moves an arbitrary
         mobject in "pieces" to its corresponding .target value.
@@ -946,7 +977,7 @@ def get_piece_movement(self, pieces):
 
         Parameters
         ----------
-        pieces : list, tuple, np.array
+        pieces
             The pieces for which the movement must be shown.
 
         Returns
@@ -960,7 +991,7 @@ def get_piece_movement(self, pieces):
             self.add(start.copy().fade(0.7))
         return Transform(start, target, lag_ratio=0)
 
-    def get_moving_mobject_movement(self, func):
+    def get_moving_mobject_movement(self, func: Callable[[np.ndarray], np.ndarray]):
         """
         This method returns an animation that moves a mobject
         in "self.moving_mobjects"  to its corresponding .target value.
@@ -969,7 +1000,7 @@ def get_moving_mobject_movement(self, func):
         Parameters
         ----------
 
-        func : function
+        func
             The function that determines where the .target of
             the moving mobject goes.
 
@@ -985,7 +1016,7 @@ def get_moving_mobject_movement(self, func):
             m.target.move_to(target_point)
         return self.get_piece_movement(self.moving_mobjects)
 
-    def get_vector_movement(self, func):
+    def get_vector_movement(self, func: Callable[[np.ndarray], np.ndarray]):
         """
         This method returns an animation that moves a mobject
         in "self.moving_vectors"  to its corresponding .target value.
@@ -994,7 +1025,7 @@ def get_vector_movement(self, func):
         Parameters
         ----------
 
-        func : function
+        func
             The function that determines where the .target of
             the moving mobject goes.
 
@@ -1026,7 +1057,7 @@ def get_transformable_label_movement(self):
             )
         return self.get_piece_movement(self.transformable_labels)
 
-    def apply_matrix(self, matrix, **kwargs):
+    def apply_matrix(self, matrix: np.ndarray | list | tuple, **kwargs):
         """
         Applies the transformation represented by the
         given matrix to the number plane, and each vector/similar
@@ -1034,14 +1065,14 @@ def apply_matrix(self, matrix, **kwargs):
 
         Parameters
         ----------
-        matrix : np.ndarray, list, tuple
+        matrix
             The matrix.
         **kwargs
             Any valid keyword argument of self.apply_transposed_matrix()
         """
         self.apply_transposed_matrix(np.array(matrix).T, **kwargs)
 
-    def apply_inverse(self, matrix, **kwargs):
+    def apply_inverse(self, matrix: np.ndarray | list | tuple, **kwargs):
         """
         This method applies the linear transformation
         represented by the inverse of the passed matrix
@@ -1049,14 +1080,16 @@ def apply_inverse(self, matrix, **kwargs):
 
         Parameters
         ----------
-        matrix : np.ndarray, list, tuple
+        matrix
             The matrix whose inverse is to be applied.
         **kwargs
             Any valid keyword argument of self.apply_matrix()
         """
         self.apply_matrix(np.linalg.inv(matrix), **kwargs)
 
-    def apply_transposed_matrix(self, transposed_matrix, **kwargs):
+    def apply_transposed_matrix(
+        self, transposed_matrix: np.ndarray | list | tuple, **kwargs
+    ):
         """
         Applies the transformation represented by the
         given transposed matrix to the number plane,
@@ -1064,7 +1097,7 @@ def apply_transposed_matrix(self, transposed_matrix, **kwargs):
 
         Parameters
         ----------
-        matrix : np.ndarray, list, tuple
+        transposed_matrix
             The matrix.
         **kwargs
             Any valid keyword argument of self.apply_function()
@@ -1077,7 +1110,7 @@ def apply_transposed_matrix(self, transposed_matrix, **kwargs):
             kwargs["path_arc"] = net_rotation
         self.apply_function(func, **kwargs)
 
-    def apply_inverse_transpose(self, t_matrix, **kwargs):
+    def apply_inverse_transpose(self, t_matrix: np.ndarray | list | tuple, **kwargs):
         """
         Applies the inverse of the transformation represented
         by the given transposed matrix to the number plane and each
@@ -1085,7 +1118,7 @@ def apply_inverse_transpose(self, t_matrix, **kwargs):
 
         Parameters
         ----------
-        matrix : np.ndarray, list, tuple
+        t_matrix
             The matrix.
         **kwargs
             Any valid keyword argument of self.apply_transposed_matrix()
@@ -1093,7 +1126,9 @@ def apply_inverse_transpose(self, t_matrix, **kwargs):
         t_inv = np.linalg.inv(np.array(t_matrix).T).T
         self.apply_transposed_matrix(t_inv, **kwargs)
 
-    def apply_nonlinear_transformation(self, function, **kwargs):
+    def apply_nonlinear_transformation(
+        self, function: Callable[[np.ndarray], np.ndarray], **kwargs
+    ):
         """
         Applies the non-linear transformation represented
         by the given function to the number plane and each
@@ -1101,7 +1136,7 @@ def apply_nonlinear_transformation(self, function, **kwargs):
 
         Parameters
         ----------
-        function : Function
+        function
             The function.
         **kwargs
             Any valid keyword argument of self.apply_function()
@@ -1109,7 +1144,12 @@ def apply_nonlinear_transformation(self, function, **kwargs):
         self.plane.prepare_for_nonlinear_transform()
         self.apply_function(function, **kwargs)
 
-    def apply_function(self, function, added_anims=[], **kwargs):
+    def apply_function(
+        self,
+        function: Callable[[np.ndarray], np.ndarray],
+        added_anims: list = [],
+        **kwargs,
+    ):
         """
         Applies the given function to each of the mobjects in
         self.transformable_mobjects, and plays the animation showing
@@ -1117,11 +1157,11 @@ def apply_function(self, function, added_anims=[], **kwargs):
 
         Parameters
         ----------
-        function : Function
+        function
             The function that affects each point
             of each mobject in self.transformable_mobjects.
 
-        added_anims : list, optional
+        added_anims
             Any other animations that need to be played
             simultaneously with this.
 
diff --git a/manim/scene/zoomed_scene.py b/manim/scene/zoomed_scene.py
index 06bc2213ee..361c4eaf55 100644
--- a/manim/scene/zoomed_scene.py
+++ b/manim/scene/zoomed_scene.py
@@ -132,14 +132,14 @@ def setup(self):
         self.zoomed_camera = zoomed_camera
         self.zoomed_display = zoomed_display
 
-    def activate_zooming(self, animate=False):
+    def activate_zooming(self, animate: bool = False):
         """
         This method is used to activate the zooming for
         the zoomed_camera.
 
         Parameters
         ----------
-        animate : bool, optional
+        animate
             Whether or not to animate the activation
             of the zoomed camera.
         """
@@ -153,13 +153,13 @@ def activate_zooming(self, animate=False):
             self.zoomed_display,
         )
 
-    def get_zoom_in_animation(self, run_time=2, **kwargs):
+    def get_zoom_in_animation(self, run_time: float = 2, **kwargs):
         """
         Returns the animation of camera zooming in.
 
         Parameters
         ----------
-        run_time : int or float, optional
+        run_time
             The run_time of the animation of the camera zooming in.
         **kwargs
             Any valid keyword arguments of ApplyMethod()
diff --git a/manim/utils/bezier.py b/manim/utils/bezier.py
index adf40bba09..79d93f764b 100644
--- a/manim/utils/bezier.py
+++ b/manim/utils/bezier.py
@@ -38,7 +38,7 @@ def bezier(
 
     Parameters
     ----------
-    points : np.ndarray
+    points
         points defining the desired bezier curve.
 
     Returns
@@ -78,11 +78,11 @@ def partial_bezier_points(points: np.ndarray, a: float, b: float) -> np.ndarray:
 
     Parameters
     ----------
-    points : np.ndarray
+    points
         set of points defining the bezier curve.
-    a : float
+    a
         lower bound of the desired partial bezier curve.
-    b : float
+    b
         upper bound of the desired partial bezier curve.
 
     Returns
@@ -353,7 +353,7 @@ def get_smooth_handle_points(
 
     Parameters
     ----------
-    points : np.ndarray
+    points
         Anchors.
 
     Returns
diff --git a/manim/utils/caching.py b/manim/utils/caching.py
index 4e776d9777..cabecd6567 100644
--- a/manim/utils/caching.py
+++ b/manim/utils/caching.py
@@ -1,10 +1,12 @@
 from __future__ import annotations
 
+from typing import Callable
+
 from .. import config, logger
 from ..utils.hashing import get_hash_from_play_call
 
 
-def handle_caching_play(func):
+def handle_caching_play(func: Callable[..., None]):
     """Decorator that returns a wrapped version of func that will compute
     the hash of the play invocation.
 
@@ -14,7 +16,7 @@ def handle_caching_play(func):
 
     Parameters
     ----------
-    func : Callable[[...], None]
+    func
         The play like function that has to be written to the video file stream.
         Take the same parameters as `scene.play`.
     """
diff --git a/manim/utils/family.py b/manim/utils/family.py
index d4f31fbb32..3669ed2036 100644
--- a/manim/utils/family.py
+++ b/manim/utils/family.py
@@ -1,15 +1,16 @@
 from __future__ import annotations
 
 import itertools as it
+from typing import Iterable
 
 from ..mobject.mobject import Mobject
 from ..utils.iterables import remove_list_redundancies
 
 
 def extract_mobject_family_members(
-    mobjects,
+    mobjects: Iterable[Mobject],
     use_z_index=False,
-    only_those_with_points=False,
+    only_those_with_points: bool = False,
 ):
     """Returns a list of the types of mobjects and their family members present.
     A "family" in this context refers to a mobject, its submobjects, and their
@@ -17,9 +18,9 @@ def extract_mobject_family_members(
 
     Parameters
     ----------
-    mobjects : Mobject
+    mobjects
         The Mobjects currently in the Scene
-    only_those_with_points : bool, optional
+    only_those_with_points
         Whether or not to only do this for
         those mobjects that have points. By default False
 
diff --git a/manim/utils/file_ops.py b/manim/utils/file_ops.py
index 6a5a7f1f77..1bbb048214 100644
--- a/manim/utils/file_ops.py
+++ b/manim/utils/file_ops.py
@@ -175,12 +175,12 @@ def seek_full_path_from_defaults(
     raise OSError(error)
 
 
-def modify_atime(file_path) -> None:
+def modify_atime(file_path: str) -> None:
     """Will manually change the accessed time (called `atime`) of the file, as on a lot of OS the accessed time refresh is disabled by default.
 
     Parameters
     ----------
-    file_path : :class:`str`
+    file_path
         The path of the file.
     """
     os.utime(file_path, times=(time.time(), os.path.getmtime(file_path)))
@@ -248,12 +248,12 @@ def get_template_path() -> Path:
     return Path.resolve(Path(__file__).parent.parent / "templates")
 
 
-def add_import_statement(file):
+def add_import_statement(file: Path):
     """Prepends an import statement in a file
 
     Parameters
     ----------
-        file : :class:`Path`
+        file
     """
     with file.open("r+") as f:
         import_line = "from manim import *"
@@ -269,9 +269,9 @@ def copy_template_files(
 
     Parameters
     ----------
-        project_dir : :class:`Path`
+        project_dir
             Path to project directory.
-        template_name : :class:`str`
+        template_name
             Name of template.
     """
     template_cfg_path = Path.resolve(
diff --git a/manim/utils/hashing.py b/manim/utils/hashing.py
index f84f2770d3..60e4422f15 100644
--- a/manim/utils/hashing.py
+++ b/manim/utils/hashing.py
@@ -14,8 +14,15 @@
 
 import numpy as np
 
+from manim.animation.animation import Animation
+from manim.camera.camera import Camera
+from manim.mobject.mobject import Mobject
+
 from .. import config, logger
 
+if typing.TYPE_CHECKING:
+    from manim.scene.scene import Scene
+
 # Sometimes there are elements that are not suitable for hashing (too long or
 # run-dependent).  This is used to filter them out.
 KEYS_TO_FILTER_OUT = {
@@ -50,14 +57,14 @@ def reset_already_processed(cls):
         cls._already_processed.clear()
 
     @classmethod
-    def check_already_processed_decorator(cls: _Memoizer, is_method=False):
+    def check_already_processed_decorator(cls: _Memoizer, is_method: bool = False):
         """Decorator to handle the arguments that goes through the decorated function.
         Returns _ALREADY_PROCESSED_PLACEHOLDER if the obj has been processed, or lets
         the decorated function call go ahead.
 
         Parameters
         ----------
-        is_method : bool, optional
+        is_method
             Whether the function passed is a method, by default False.
         """
 
@@ -81,7 +88,7 @@ def check_already_processed(cls, obj: Any) -> Any:
 
         Parameters
         ----------
-        obj : Any
+        obj
             The object to check.
 
         Returns
@@ -98,7 +105,7 @@ def mark_as_processed(cls, obj: Any) -> None:
 
         Parameters
         ----------
-        obj : Any
+        obj
             The object to mark as processed.
         """
         cls._handle_already_processed(obj, lambda x: x)
@@ -164,7 +171,7 @@ def _return(
 
 
 class _CustomEncoder(json.JSONEncoder):
-    def default(self, obj):
+    def default(self, obj: Any):
         """
         This method is used to serialize objects to JSON format.
 
@@ -178,7 +185,7 @@ def default(self, obj):
 
         Parameters
         ----------
-        obj : Any
+        obj
             Arbitrary object to convert
 
         Returns
@@ -225,7 +232,7 @@ def default(self, obj):
         # Serialize it with only the type of the object. You can change this to whatever string when debugging the serialization process.
         return str(type(obj))
 
-    def _cleaned_iterable(self, iterable):
+    def _cleaned_iterable(self, iterable: typing.Iterable[Any]):
         """Check for circular reference at each iterable that will go through the JSONEncoder, as well as key of the wrong format.
 
         If a key with a bad format is found (i.e not a int, string, or float), it gets replaced byt its hash using the same process implemented here.
@@ -233,7 +240,7 @@ def _cleaned_iterable(self, iterable):
 
         Parameters
         ----------
-        iterable : Iterable[Any]
+        iterable
             The iterable to check.
         """
 
@@ -278,12 +285,12 @@ def _iter_check_dict(dct):
         elif isinstance(iterable, dict):
             return _iter_check_dict(iterable)
 
-    def encode(self, obj):
+    def encode(self, obj: Any):
         """Overriding of :meth:`JSONEncoder.encode`, to make our own process.
 
         Parameters
         ----------
-        obj: Any
+        obj
             The object to encode in JSON.
 
         Returns
@@ -297,12 +304,12 @@ def encode(self, obj):
         return super().encode(obj)
 
 
-def get_json(obj):
+def get_json(obj: dict):
     """Recursively serialize `object` to JSON using the :class:`CustomEncoder` class.
 
     Parameters
     ----------
-    dict_config : :class:`dict`
+    obj
         The dict to flatten
 
     Returns
@@ -314,25 +321,25 @@ def get_json(obj):
 
 
 def get_hash_from_play_call(
-    scene_object,
-    camera_object,
-    animations_list,
-    current_mobjects_list,
+    scene_object: Scene,
+    camera_object: Camera,
+    animations_list: typing.Iterable[Animation],
+    current_mobjects_list: typing.Iterable[Mobject],
 ) -> str:
     """Take the list of animations and a list of mobjects and output their hashes. This is meant to be used for `scene.play` function.
 
     Parameters
     -----------
-    scene_object : :class:`~.Scene`
+    scene_object
         The scene object.
 
-    camera_object : :class:`~.Camera`
+    camera_object
         The camera object used in the scene.
 
-    animations_list : Iterable[:class:`~.Animation`]
+    animations_list
         The list of animations.
 
-    current_mobjects_list : Iterable[:class:`~.Mobject`]
+    current_mobjects_list
         The list of mobjects.
 
     Returns
diff --git a/manim/utils/space_ops.py b/manim/utils/space_ops.py
index 3932e5bd70..fe5fb8f13b 100644
--- a/manim/utils/space_ops.py
+++ b/manim/utils/space_ops.py
@@ -114,7 +114,7 @@ def quaternion_from_angle_axis(
         The angle for the quaternion.
     axis
         The axis for the quaternion
-    axis_normalized : bool, optional
+    axis_normalized
         Checks whether the axis is normalized, by default False
 
     Returns
@@ -267,7 +267,7 @@ def rotation_about_z(angle: float) -> np.ndarray:
 
     Parameters
     ----------
-    angle : float
+    angle
         Angle for the rotation matrix.
 
     Returns
diff --git a/manim/utils/testing/frames_comparison.py b/manim/utils/testing/frames_comparison.py
index 775219a87c..e20e1a2a56 100644
--- a/manim/utils/testing/frames_comparison.py
+++ b/manim/utils/testing/frames_comparison.py
@@ -45,10 +45,6 @@ def frames_comparison(
 
     Parameters
     ----------
-    test_name
-        The name of the test.
-    module_name
-        The module which the test belongs to.
     last_frame
         whether the test should test the last frame, by default True.
     renderer_class
@@ -161,7 +157,7 @@ def _make_test_comparing_frames(
     file_path: Path,
     base_scene: type[Scene],
     construct: Callable[[Scene], None],
-    renderer_class,  # Renderer type, there is no superclass renderer yet .....
+    renderer_class: type,  # Renderer type, there is no superclass renderer yet .....
     is_set_test_data_test: bool,
     last_frame: bool,
     show_diff: bool,
@@ -171,15 +167,15 @@ def _make_test_comparing_frames(
 
     Parameters
     ----------
-    file_path : Path
+    file_path
         The path of the control frames.
-    base_scene : Type[Scene]
+    base_scene
         The base scene class.
-    construct : Callable[[Scene], None]
+    construct
         The construct method (= the test function)
-    renderer_class : [type]
+    renderer_class
         The renderer base class.
-    show_diff : bool
+    show_diff
         whether to visually show_diff (see --show_diff)
 
     Returns
diff --git a/manim/utils/tex.py b/manim/utils/tex.py
index 6e881ecfa0..d8751e091f 100644
--- a/manim/utils/tex.py
+++ b/manim/utils/tex.py
@@ -18,17 +18,17 @@ class TexTemplate:
 
     Parameters
     ----------
-    tex_compiler : Optional[:class:`str`], optional
+    tex_compiler
         The TeX compiler to be used, e.g. ``latex``, ``pdflatex`` or ``lualatex``
-    output_format : Optional[:class:`str`], optional
+    output_format
         The output format resulting from compilation, e.g. ``.dvi`` or ``.pdf``
-    documentclass : Optional[:class:`str`], optional
+    documentclass
         The command defining the documentclass, e.g. ``\\documentclass[preview]{standalone}``
-    preamble : Optional[:class:`str`], optional
+    preamble
         The document's preamble, i.e. the part between ``\\documentclass`` and ``\\begin{document}``
-    placeholder_text : Optional[:class:`str`], optional
+    placeholder_text
         Text in the document that will be replaced by the expression to be rendered
-    post_doc_commands : Optional[:class:`str`], optional
+    post_doc_commands
         Text (definitions, commands) to be inserted at right after ``\\begin{document}``, e.g. ``\\boldmath``
 
     Attributes
@@ -60,12 +60,12 @@ class TexTemplate:
 
     def __init__(
         self,
-        tex_compiler=None,
-        output_format=None,
-        documentclass=None,
-        preamble=None,
-        placeholder_text=None,
-        post_doc_commands=None,
+        tex_compiler: str | None = None,
+        output_format: str | None = None,
+        documentclass: str | None = None,
+        preamble: str | None = None,
+        placeholder_text: str | None = None,
+        post_doc_commands: str | None = None,
         **kwargs,
     ):
         self.tex_compiler = (
@@ -124,14 +124,14 @@ def _rebuild(self):
             + "\n"
         )
 
-    def add_to_preamble(self, txt, prepend=False):
+    def add_to_preamble(self, txt: str, prepend: bool = False):
         """Adds stuff to the TeX template's preamble (e.g. definitions, packages). Text can be inserted at the beginning or at the end of the preamble.
 
         Parameters
         ----------
-        txt : :class:`string`
+        txt
             String containing the text to be added, e.g. ``\\usepackage{hyperref}``
-        prepend : Optional[:class:`bool`], optional
+        prepend
             Whether the text should be added at the beginning of the preamble, i.e. right after ``\\documentclass``. Default is to add it at the end of the preamble, i.e. right before ``\\begin{document}``
         """
         if prepend:
@@ -140,23 +140,23 @@ def add_to_preamble(self, txt, prepend=False):
             self.preamble += "\n" + txt
         self._rebuild()
 
-    def add_to_document(self, txt):
+    def add_to_document(self, txt: str):
         """Adds txt to the TeX template just after \\begin{document}, e.g. ``\\boldmath``
 
         Parameters
         ----------
-        txt : :class:`str`
+        txt
             String containing the text to be added.
         """
         self.post_doc_commands += "\n" + txt + "\n"
         self._rebuild()
 
-    def get_texcode_for_expression(self, expression):
+    def get_texcode_for_expression(self, expression: str):
         """Inserts expression verbatim into TeX template.
 
         Parameters
         ----------
-        expression : :class:`str`
+        expression
             The string containing the expression to be typeset, e.g. ``$\\sqrt{2}$``
 
         Returns
@@ -166,13 +166,13 @@ def get_texcode_for_expression(self, expression):
         """
         return self.body.replace(self.placeholder_text, expression)
 
-    def _texcode_for_environment(self, environment):
+    def _texcode_for_environment(self, environment: str):
         """Processes the tex_environment string to return the correct ``\\begin{environment}[extra]{extra}`` and
         ``\\end{environment}`` strings
 
         Parameters
         ----------
-        environment : :class:`str`
+        environment
             The tex_environment as a string. Acceptable formats include:
             ``{align*}``, ``align*``, ``{tabular}[t]{cccl}``, ``tabular}{cccl``, ``\\begin{tabular}[t]{cccl}``.
 
@@ -204,14 +204,14 @@ def _texcode_for_environment(self, environment):
 
         return begin, end
 
-    def get_texcode_for_expression_in_env(self, expression, environment):
+    def get_texcode_for_expression_in_env(self, expression: str, environment: str):
         r"""Inserts expression into TeX template wrapped in \begin{environment} and \end{environment}
 
         Parameters
         ----------
-        expression : :class:`str`
+        expression
             The string containing the expression to be typeset, e.g. ``$\\sqrt{2}$``
-        environment : :class:`str`
+        environment
             The string containing the environment in which the expression should be typeset, e.g. ``align*``
 
         Returns
@@ -231,25 +231,10 @@ class TexTemplateFromFile(TexTemplate):
 
     Parameters
     ----------
-    tex_compiler : Optional[:class:`str`], optional
-        The TeX compiler to be used, e.g. ``latex``, ``pdflatex`` or ``lualatex``
-    output_format : Optional[:class:`str`], optional
-        The output format resulting from compilation, e.g. ``.dvi`` or ``.pdf``
-    documentclass : Optional[:class:`str`], optional
-        The command defining the documentclass, e.g. ``\\documentclass[preview]{standalone}``
-    preamble : Optional[:class:`str`], optional
-        The document's preamble, i.e. the part between ``\\documentclass`` and ``\\begin{document}``
-    placeholder_text : Optional[:class:`str`], optional
-        Text in the document that will be replaced by the expression to be rendered
-    post_doc_commands : Optional[:class:`str`], optional
-        Text (definitions, commands) to be inserted at right after ``\\begin{document}``, e.g. ``\\boldmath``
-    kwargs : :class:`str`
-        The kwargs specified can only be strings.
-
-    Other Parameters
-    ----------------
     tex_filename
         Path to a valid TeX template file
+    kwargs
+        Arguments for :class:`~.TexTemplate`.
 
     Attributes
     ----------
diff --git a/manim/utils/tex_file_writing.py b/manim/utils/tex_file_writing.py
index d53acbe0a6..5423c80c8b 100644
--- a/manim/utils/tex_file_writing.py
+++ b/manim/utils/tex_file_writing.py
@@ -14,6 +14,8 @@
 import unicodedata
 from pathlib import Path
 
+from manim.utils.tex import TexTemplate
+
 from .. import config, logger
 
 
@@ -25,16 +27,20 @@ def tex_hash(expression):
     return hasher.hexdigest()[:16]
 
 
-def tex_to_svg_file(expression, environment=None, tex_template=None):
+def tex_to_svg_file(
+    expression: str,
+    environment: str | None = None,
+    tex_template: TexTemplate | None = None,
+):
     """Takes a tex expression and returns the svg version of the compiled tex
 
     Parameters
     ----------
-    expression : :class:`str`
+    expression
         String containing the TeX expression to be rendered, e.g. ``\\sqrt{2}`` or ``foo``
-    environment : Optional[:class:`str`], optional
+    environment
         The string containing the environment in which the expression should be typeset, e.g. ``align*``
-    tex_template : Optional[:class:`~.TexTemplate`], optional
+    tex_template
         Template class used to typesetting. If not set, use default template set via `config["tex_template"]`
 
     Returns
@@ -53,17 +59,21 @@ def tex_to_svg_file(expression, environment=None, tex_template=None):
     return convert_to_svg(dvi_file, tex_template.output_format)
 
 
-def generate_tex_file(expression, environment=None, tex_template=None):
+def generate_tex_file(
+    expression: str,
+    environment: str | None = None,
+    tex_template: TexTemplate | None = None,
+):
     """Takes a tex expression (and an optional tex environment),
     and returns a fully formed tex file ready for compilation.
 
     Parameters
     ----------
-    expression : :class:`str`
+    expression
         String containing the TeX expression to be rendered, e.g. ``\\sqrt{2}`` or ``foo``
-    environment : Optional[:class:`str`], optional
+    environment
         The string containing the environment in which the expression should be typeset, e.g. ``align*``
-    tex_template : Optional[:class:`~.TexTemplate`], optional
+    tex_template
         Template class used to typesetting. If not set, use default template set via `config["tex_template"]`
 
     Returns
@@ -196,16 +206,16 @@ def compile_tex(tex_file: Path, tex_compiler: str, output_format: str) -> Path:
     return result
 
 
-def convert_to_svg(dvi_file, extension, page=1):
+def convert_to_svg(dvi_file: Path, extension: str, page: int = 1):
     """Converts a .dvi, .xdv, or .pdf file into an svg using dvisvgm.
 
     Parameters
     ----------
-    dvi_file : :class:`Path`
+    dvi_file
         File name of the input file to be converted.
-    extension : :class:`str`
+    extension
         String containing the file extension and thus indicating the file type, e.g. ``.dvi`` or ``.pdf``
-    page : Optional[:class:`int`], optional
+    page
         Page to be converted if input file is multi-page.
 
     Returns
diff --git a/scripts/template_docsting_with_example.py b/scripts/template_docsting_with_example.py
index 4a8621b5eb..ce2466dbdc 100644
--- a/scripts/template_docsting_with_example.py
+++ b/scripts/template_docsting_with_example.py
@@ -13,7 +13,7 @@ class SomeClass:
 
     Parameters
     ----------
-    scale_factor : :class:`float`
+    scale_factor
         The factor used for scaling.
 
     Returns
diff --git a/tests/helpers/graphical_units.py b/tests/helpers/graphical_units.py
index f6568d6ff7..b202217b05 100644
--- a/tests/helpers/graphical_units.py
+++ b/tests/helpers/graphical_units.py
@@ -9,17 +9,18 @@
 import numpy as np
 
 from manim import config, logger
+from manim.scene.scene import Scene
 
 
-def set_test_scene(scene_object, module_name):
+def set_test_scene(scene_object: type[Scene], module_name: str):
     """Function used to set up the test data for a new feature. This will basically set up a pre-rendered frame for a scene. This is meant to be used only
     when setting up tests. Please refer to the wiki.
 
     Parameters
     ----------
-    scene_object : :class:`~.Scene`
+    scene_object
         The scene with which we want to set up a new test.
-    module_name : :class:`str`
+    module_name
         The name of the module in which the functionality tested is contained. For example, ``Write`` is contained in the module ``creation``. This will be used in the folder architecture
         of ``/tests_data``.
 
diff --git a/tests/utils/GraphicalUnitTester.py b/tests/utils/GraphicalUnitTester.py
index 18fe373c56..02128221c9 100644
--- a/tests/utils/GraphicalUnitTester.py
+++ b/tests/utils/GraphicalUnitTester.py
@@ -8,6 +8,7 @@
 
 from manim import config, tempconfig
 from manim.renderer.opengl_renderer import OpenGLRenderer
+from manim.scene.scene import Scene
 
 
 class GraphicalUnitTester:
@@ -15,11 +16,9 @@ class GraphicalUnitTester:
 
     Parameters
     ----------
-    scene_class : :class:`~.Scene`
+    scene_class
         The scene to be tested
-    config_scene : :class:`dict`
-        The configuration of the scene
-    module_tested : :class:`str`
+    module_tested
         The name of the module tested. i.e if we are testing functions of creation.py, the module will be "creation"
 
     Attributes
@@ -32,7 +31,9 @@ class GraphicalUnitTester:
         The scene tested
     """
 
-    def __init__(self, scene_class, module_tested, tmpdir, rgb_atol=0):
+    def __init__(
+        self, scene_class: type[Scene], module_tested: str, tmpdir, rgb_atol=0
+    ):
         # Disable the the logs, (--quiet is broken) TODO
         logging.disable(logging.CRITICAL)
         tests_directory = Path(__file__).absolute().parent.parent
diff --git a/tests/utils/testing_utils.py b/tests/utils/testing_utils.py
index 8c4729742f..f87dda4d7e 100644
--- a/tests/utils/testing_utils.py
+++ b/tests/utils/testing_utils.py
@@ -4,12 +4,12 @@
 import sys
 
 
-def get_scenes_to_test(module_name):
+def get_scenes_to_test(module_name: str):
     """Get all Test classes of the module from which it is called. Used to fetch all the SceneTest of the module.
 
     Parameters
     ----------
-    module_name : :class:`str`
+    module_name
         The name of the module tested.
 
     Returns