Skip to content

Typing scene#4191

Closed
henrikmidtiby wants to merge 12 commits intoManimCommunity:mainfrom
henrikmidtiby:Typing_scene
Closed

Typing scene#4191
henrikmidtiby wants to merge 12 commits intoManimCommunity:mainfrom
henrikmidtiby:Typing_scene

Conversation

@henrikmidtiby
Copy link
Copy Markdown
Contributor

Overview: What does this pull request change?

Added type annotations to the scene class and related files.

Motivation and Explanation: Why and how do your changes improve the library?

Links to added or changed documentation pages

Further Information and Comments

Reviewer Checklist

  • The PR title is descriptive enough for the changelog, and the PR is labeled correctly
  • If applicable: newly added non-private functions and classes have a docstring including a short summary and a PARAMETERS section
  • If applicable: newly added functions and classes are tested

# Conflicts:
#	manim/mobject/geometry/arc.py
# Conflicts:
#	manim/mobject/geometry/polygram.py
Further work on type hinting.

Avoid forwarding positional arguments from Arrow to Line in the constructor.

Revert "Avoid forwarding positional arguments from Arrow to Line in the constructor."

This reverts commit 80ae857.

Removed several type ignore statements and addressed comments from JasonGrace2282

Revert "Activate mypy check of mobject.geometry.*"

This reverts commit d477c9a.

Revert "Removed several type ignore statements and addressed comments from JasonGrace2282"

This reverts commit 07bbe3f.

Added type annotations to zoomed_scene.py

Error count: 308 -> 303

Adding type annotations to all methods in vector_space_scene.py

Error count: 303 -> 272

Get rid of no-untyped-call errors from my in the vector_space_scene.py file

Error count: 272 -> 343

Handle type issues related to ManimColor in vector_space_scene.py

Handle var-annotated issues in vector_space_scene.py

Error count: 332 -> 330

Handling has-type type errors in vector_space_scene.py

Error count: 330 -> 285

Handled name-defined type issues in vector_space_scene.py

Error count: 285 -> 282

Address type issue with calling an untyped method.

Error count: 282 -> 281

Fix some typing issues in transform_mathcing_parts.py

Change stroke_width to float in vector_space_scene.py

Handled a few type errors.

Error count: 267

Handled several typing issues in three_d_scene.py

Error count: 267 -> 248

Dealing with type errors in scene_file_writer.py

Error count: 248 -> 216

Ensured that all methods in scene.py have type declarations.

Error count: 216 -> 225

Handle type issues related to interactivity by asserting that the camera is the OpenGLCamera

Error count: 225 -> 182

Handle type issues in scene.py

Error count: 182 -> 167

Asserting that the renderer or camera is of the proper type to use certain methods.

This is mainly related to interactive elements and the 3D camera used in the ThreeDScene

Error count: 167 -> 143

Avoid cyclic import of dependencies

Error count: 143 -> 143

Handling no-untyped-call type errors in manim/scene/scene.py

Error count: 143 -> 131

Handling assignment type errors in manim/scene/*.py

Error count: 131 -> 121

Handling arg-type type errors in manim/scene/*.py

Error count: 121 -> 116

Handling arg-type type errors in manim/scene/*.py

Error count: 116 -> 112

Fixing various type errors

Error count: 112 -> 102

Fixing various type errors

Error count: 102 -> 97

Fixing various type errors

Error count: 97 -> 90

Some aggressive changes to silence a significant number of type errors.

Error count: 90 -> 66

Commented out an import (IPython) that makes the CI tests fail.

Fix various type errors.

More type annotations.

Code cleanup.

Remove the property mobject_updater_lists of the Scene class as it is not used anywhere.

Handle import-untyped typing issues.
Comment thread manim/gui/gui.py


from .. import __version__, config
from ..renderer.cairo_renderer import CairoRenderer

Check failure

Code scanning / CodeQL

Module-level cyclic import

'CairoRenderer' may not be defined if module [manim.renderer.cairo_renderer](1) is imported before module [manim.gui.gui](2), as the [definition](3) of CairoRenderer occurs after the cyclic [import](4) of manim.gui.gui. 'CairoRenderer' may not be defined if module [manim.renderer.cairo_renderer](1) is imported before module [manim.gui.gui](2), as the [definition](3) of CairoRenderer occurs after the cyclic [import](5) of manim.gui.gui. 'CairoRenderer' may not be defined if module [manim.renderer.cairo_renderer](1) is imported before module [manim.gui.gui](2), as the [definition](3) of CairoRenderer occurs after the cyclic [import](6) of manim.gui.gui. 'CairoRenderer' may not be defined if module [manim.renderer.cairo_renderer](1) is imported before module [manim.gui.gui](2), as the [definition](3) of CairoRenderer occurs after the cyclic [import](7) of manim.gui.gui. 'CairoRenderer' may not be defined if module [manim.renderer.cairo_renderer](1) is imported before module [manim.gui.gui](2), as the [definition](3) of CairoRenderer occurs after the cyclic [import](8) of manim.gui.gui. 'CairoRenderer' may not be defined if module [manim.renderer.cairo_renderer](1) is imported before module [manim.gui.gui](2), as the [definition](3) of CairoRenderer occurs after the cyclic [import](9) of manim.gui.gui.
Comment thread manim/gui/gui.py

from .. import __version__, config
from ..renderer.cairo_renderer import CairoRenderer
from ..renderer.opengl_renderer import OpenGLRenderer

Check failure

Code scanning / CodeQL

Module-level cyclic import

'OpenGLRenderer' may not be defined if module [manim.renderer.opengl_renderer](1) is imported before module [manim.gui.gui](2), as the [definition](3) of OpenGLRenderer occurs after the cyclic [import](4) of manim.gui.gui. 'OpenGLRenderer' may not be defined if module [manim.renderer.opengl_renderer](1) is imported before module [manim.gui.gui](2), as the [definition](3) of OpenGLRenderer occurs after the cyclic [import](5) of manim.gui.gui. 'OpenGLRenderer' may not be defined if module [manim.renderer.opengl_renderer](1) is imported before module [manim.gui.gui](2), as the [definition](3) of OpenGLRenderer occurs after the cyclic [import](6) of manim.gui.gui. 'OpenGLRenderer' may not be defined if module [manim.renderer.opengl_renderer](1) is imported before module [manim.gui.gui](2), as the [definition](3) of OpenGLRenderer occurs after the cyclic [import](7) of manim.gui.gui.
if TYPE_CHECKING:
import numpy.typing as npt
from typing_extensions import Self

Check failure

Code scanning / CodeQL

Module-level cyclic import

'Mobject' may not be defined if module [manim.mobject.mobject](1) is imported before module [manim.renderer.opengl_renderer](2), as the [definition](3) of Mobject occurs after the cyclic [import](4) of manim.renderer.opengl_renderer. 'Mobject' may not be defined if module [manim.mobject.mobject](1) is imported before module [manim.renderer.opengl_renderer](2), as the [definition](3) of Mobject occurs after the cyclic [import](5) of manim.renderer.opengl_renderer.
import numpy.typing as npt
from typing_extensions import Self

from manim.mobject.mobject import Mobject

Check failure

Code scanning / CodeQL

Module-level cyclic import

'Scene' may not be defined if module [manim.scene.scene](1) is imported before module [manim.renderer.opengl_renderer](2), as the [definition](3) of Scene occurs after the cyclic [import](4) of manim.renderer.opengl_renderer. 'Scene' may not be defined if module [manim.scene.scene](1) is imported before module [manim.renderer.opengl_renderer](2), as the [definition](3) of Scene occurs after the cyclic [import](5) of manim.renderer.opengl_renderer. 'Scene' may not be defined if module [manim.scene.scene](1) is imported before module [manim.renderer.opengl_renderer](2), as the [definition](3) of Scene occurs after the cyclic [import](6) of manim.renderer.opengl_renderer. 'Scene' may not be defined if module [manim.scene.scene](1) is imported before module [manim.renderer.opengl_renderer](2), as the [definition](3) of Scene occurs after the cyclic [import](7) of manim.renderer.opengl_renderer. 'Scene' may not be defined if module [manim.scene.scene](1) is imported before module [manim.renderer.opengl_renderer](2), as the [definition](3) of Scene occurs after the cyclic [import](8) of manim.renderer.opengl_renderer. 'Scene' may not be defined if module [manim.scene.scene](1) is imported before module [manim.renderer.opengl_renderer](2), as the [definition](3) of Scene occurs after the cyclic [import](9) of manim.renderer.opengl_renderer. 'Scene' may not be defined if module [manim.scene.scene](1) is imported before module [manim.renderer.opengl_renderer](2), as the [definition](3) of Scene occurs after the cyclic [import](10) of manim.renderer.opengl_renderer. 'Scene' may not be defined if module [manim.scene.scene](1) is imported before module [manim.renderer.opengl_renderer](2), as the [definition](3) of Scene occurs after the cyclic [import](11) of manim.renderer.opengl_renderer. 'Scene' may not be defined if module [manim.scene.scene](1) is imported before module [manim.renderer.opengl_renderer](2), as the [definition](3) of Scene occurs after the cyclic [import](12) of manim.renderer.opengl_renderer.
Comment thread manim/scene/scene.py
from ..renderer.opengl_renderer import OpenGLRenderer
from ..renderer.opengl_renderer import OpenGLCamera, OpenGLRenderer
from ..renderer.shader import Object3D
from ..utils import opengl, space_ops

Check failure

Code scanning / CodeQL

Module-level cyclic import

'OpenGLCamera' may not be defined if module [manim.renderer.opengl_renderer](1) is imported before module [manim.scene.scene](2), as the [definition](3) of OpenGLCamera occurs after the cyclic [import](4) of manim.scene.scene. 'OpenGLCamera' may not be defined if module [manim.renderer.opengl_renderer](1) is imported before module [manim.scene.scene](2), as the [definition](3) of OpenGLCamera occurs after the cyclic [import](5) of manim.scene.scene. 'OpenGLCamera' may not be defined if module [manim.renderer.opengl_renderer](1) is imported before module [manim.scene.scene](2), as the [definition](3) of OpenGLCamera occurs after the cyclic [import](6) of manim.scene.scene. 'OpenGLCamera' may not be defined if module [manim.renderer.opengl_renderer](1) is imported before module [manim.scene.scene](2), as the [definition](3) of OpenGLCamera occurs after the cyclic [import](7) of manim.scene.scene.
Comment thread manim/scene/scene.py
from ..renderer.opengl_renderer import OpenGLRenderer
from ..renderer.opengl_renderer import OpenGLCamera, OpenGLRenderer
from ..renderer.shader import Object3D
from ..utils import opengl, space_ops

Check failure

Code scanning / CodeQL

Module-level cyclic import

'OpenGLRenderer' may not be defined if module [manim.renderer.opengl_renderer](1) is imported before module [manim.scene.scene](2), as the [definition](3) of OpenGLRenderer occurs after the cyclic [import](4) of manim.scene.scene. 'OpenGLRenderer' may not be defined if module [manim.renderer.opengl_renderer](1) is imported before module [manim.scene.scene](2), as the [definition](3) of OpenGLRenderer occurs after the cyclic [import](5) of manim.scene.scene. 'OpenGLRenderer' may not be defined if module [manim.renderer.opengl_renderer](1) is imported before module [manim.scene.scene](2), as the [definition](3) of OpenGLRenderer occurs after the cyclic [import](6) of manim.scene.scene. 'OpenGLRenderer' may not be defined if module [manim.renderer.opengl_renderer](1) is imported before module [manim.scene.scene](2), as the [definition](3) of OpenGLRenderer occurs after the cyclic [import](7) of manim.scene.scene.
Comment thread manim/utils/family_ops.py
from typing import TYPE_CHECKING

if TYPE_CHECKING:
from manim.mobject.mobject import Mobject

Check failure

Code scanning / CodeQL

Module-level cyclic import

'Mobject' may not be defined if module [manim.mobject.mobject](1) is imported before module [manim.utils.family_ops](2), as the [definition](3) of Mobject occurs after the cyclic [import](4) of manim.utils.family_ops. 'Mobject' may not be defined if module [manim.mobject.mobject](1) is imported before module [manim.utils.family_ops](2), as the [definition](3) of Mobject occurs after the cyclic [import](5) of manim.utils.family_ops.
@henrikmidtiby
Copy link
Copy Markdown
Contributor Author

The work started in this pull request is continued in another pull request: #4260

@github-project-automation github-project-automation Bot moved this from 🆕 New to ❌ Rejected in Dev Board May 27, 2025
@henrikmidtiby henrikmidtiby deleted the Typing_scene branch August 14, 2025 11:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: ❌ Rejected

Development

Successfully merging this pull request may close these issues.

2 participants