Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Typing scene #4191

Open
wants to merge 12 commits into
base: main
Choose a base branch
from
Open

Conversation

henrikmidtiby
Copy link
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.
@@ -11,6 +11,8 @@


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

Check failure

Code scanning / CodeQL

Module-level cyclic import Error

'CairoRenderer' may not be defined if module
manim.renderer.cairo_renderer
is imported before module
manim.gui.gui
, as the
definition
of CairoRenderer occurs after the cyclic
import
of manim.gui.gui.
'CairoRenderer' may not be defined if module
manim.renderer.cairo_renderer
is imported before module
manim.gui.gui
, as the
definition
of CairoRenderer occurs after the cyclic
import
of manim.gui.gui.
'CairoRenderer' may not be defined if module
manim.renderer.cairo_renderer
is imported before module
manim.gui.gui
, as the
definition
of CairoRenderer occurs after the cyclic
import
of manim.gui.gui.
'CairoRenderer' may not be defined if module
manim.renderer.cairo_renderer
is imported before module
manim.gui.gui
, as the
definition
of CairoRenderer occurs after the cyclic
import
of manim.gui.gui.
'CairoRenderer' may not be defined if module
manim.renderer.cairo_renderer
is imported before module
manim.gui.gui
, as the
definition
of CairoRenderer occurs after the cyclic
import
of manim.gui.gui.
'CairoRenderer' may not be defined if module
manim.renderer.cairo_renderer
is imported before module
manim.gui.gui
, as the
definition
of CairoRenderer occurs after the cyclic
import
of manim.gui.gui.
@@ -11,6 +11,8 @@


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 Error

'OpenGLRenderer' may not be defined if module
manim.renderer.opengl_renderer
is imported before module
manim.gui.gui
, as the
definition
of OpenGLRenderer occurs after the cyclic
import
of manim.gui.gui.
'OpenGLRenderer' may not be defined if module
manim.renderer.opengl_renderer
is imported before module
manim.gui.gui
, as the
definition
of OpenGLRenderer occurs after the cyclic
import
of manim.gui.gui.
'OpenGLRenderer' may not be defined if module
manim.renderer.opengl_renderer
is imported before module
manim.gui.gui
, as the
definition
of OpenGLRenderer occurs after the cyclic
import
of manim.gui.gui.
'OpenGLRenderer' may not be defined if module
manim.renderer.opengl_renderer
is imported before module
manim.gui.gui
, as the
definition
of OpenGLRenderer occurs after the cyclic
import
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 Error

'Mobject' may not be defined if module
manim.mobject.mobject
is imported before module
manim.renderer.opengl_renderer
, as the
definition
of Mobject occurs after the cyclic
import
of manim.renderer.opengl_renderer.
'Mobject' may not be defined if module
manim.mobject.mobject
is imported before module
manim.renderer.opengl_renderer
, as the
definition
of Mobject occurs after the cyclic
import
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 Error

'Scene' may not be defined if module
manim.scene.scene
is imported before module
manim.renderer.opengl_renderer
, as the
definition
of Scene occurs after the cyclic
import
of manim.renderer.opengl_renderer.
'Scene' may not be defined if module
manim.scene.scene
is imported before module
manim.renderer.opengl_renderer
, as the
definition
of Scene occurs after the cyclic
import
of manim.renderer.opengl_renderer.
'Scene' may not be defined if module
manim.scene.scene
is imported before module
manim.renderer.opengl_renderer
, as the
definition
of Scene occurs after the cyclic
import
of manim.renderer.opengl_renderer.
'Scene' may not be defined if module
manim.scene.scene
is imported before module
manim.renderer.opengl_renderer
, as the
definition
of Scene occurs after the cyclic
import
of manim.renderer.opengl_renderer.
'Scene' may not be defined if module
manim.scene.scene
is imported before module
manim.renderer.opengl_renderer
, as the
definition
of Scene occurs after the cyclic
import
of manim.renderer.opengl_renderer.
'Scene' may not be defined if module
manim.scene.scene
is imported before module
manim.renderer.opengl_renderer
, as the
definition
of Scene occurs after the cyclic
import
of manim.renderer.opengl_renderer.
'Scene' may not be defined if module
manim.scene.scene
is imported before module
manim.renderer.opengl_renderer
, as the
definition
of Scene occurs after the cyclic
import
of manim.renderer.opengl_renderer.
'Scene' may not be defined if module
manim.scene.scene
is imported before module
manim.renderer.opengl_renderer
, as the
definition
of Scene occurs after the cyclic
import
of manim.renderer.opengl_renderer.
'Scene' may not be defined if module
manim.scene.scene
is imported before module
manim.renderer.opengl_renderer
, as the
definition
of Scene occurs after the cyclic
import
of manim.renderer.opengl_renderer.
from ..constants import *
from ..gui.gui import configure_pygui
from ..renderer.cairo_renderer import CairoRenderer
from ..renderer.opengl_renderer import OpenGLRenderer
from ..renderer.opengl_renderer import OpenGLCamera, OpenGLRenderer

Check failure

Code scanning / CodeQL

Module-level cyclic import Error

'OpenGLCamera' may not be defined if module
manim.renderer.opengl_renderer
is imported before module
manim.scene.scene
, as the
definition
of OpenGLCamera occurs after the cyclic
import
of manim.scene.scene.
'OpenGLCamera' may not be defined if module
manim.renderer.opengl_renderer
is imported before module
manim.scene.scene
, as the
definition
of OpenGLCamera occurs after the cyclic
import
of manim.scene.scene.
'OpenGLCamera' may not be defined if module
manim.renderer.opengl_renderer
is imported before module
manim.scene.scene
, as the
definition
of OpenGLCamera occurs after the cyclic
import
of manim.scene.scene.
'OpenGLCamera' may not be defined if module
manim.renderer.opengl_renderer
is imported before module
manim.scene.scene
, as the
definition
of OpenGLCamera occurs after the cyclic
import
of manim.scene.scene.
from ..constants import *
from ..gui.gui import configure_pygui
from ..renderer.cairo_renderer import CairoRenderer
from ..renderer.opengl_renderer import OpenGLRenderer
from ..renderer.opengl_renderer import OpenGLCamera, OpenGLRenderer

Check failure

Code scanning / CodeQL

Module-level cyclic import Error

'OpenGLRenderer' may not be defined if module
manim.renderer.opengl_renderer
is imported before module
manim.scene.scene
, as the
definition
of OpenGLRenderer occurs after the cyclic
import
of manim.scene.scene.
'OpenGLRenderer' may not be defined if module
manim.renderer.opengl_renderer
is imported before module
manim.scene.scene
, as the
definition
of OpenGLRenderer occurs after the cyclic
import
of manim.scene.scene.
'OpenGLRenderer' may not be defined if module
manim.renderer.opengl_renderer
is imported before module
manim.scene.scene
, as the
definition
of OpenGLRenderer occurs after the cyclic
import
of manim.scene.scene.
'OpenGLRenderer' may not be defined if module
manim.renderer.opengl_renderer
is imported before module
manim.scene.scene
, as the
definition
of OpenGLRenderer occurs after the cyclic
import
of manim.scene.scene.
from typing import TYPE_CHECKING

if TYPE_CHECKING:
from manim.mobject.mobject import Mobject

Check failure

Code scanning / CodeQL

Module-level cyclic import Error

'Mobject' may not be defined if module
manim.mobject.mobject
is imported before module
manim.utils.family_ops
, as the
definition
of Mobject occurs after the cyclic
import
of manim.utils.family_ops.
'Mobject' may not be defined if module
manim.mobject.mobject
is imported before module
manim.utils.family_ops
, as the
definition
of Mobject occurs after the cyclic
import
of manim.utils.family_ops.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: 🆕 New
Development

Successfully merging this pull request may close these issues.

1 participant