add type annotations and docstrings for opengl_renderer.py (#4537)

* type annotations and docs for opengl_renderer.py

* add missing self

* Fix RTD build: move Window import to TYPE_CHECKING block

The Window import was moved to module-level in a recent type annotation
commit, but this causes opengl_renderer_window.py to be imported at
load time, triggering pyglet which fails on headless systems (RTD) when
it tries to create a shadow window. Moving the import into TYPE_CHECKING
preserves type hints for mypy while avoiding runtime display dependency.

* Fix mypy errors in opengl_renderer.py

- Cast np.linalg.inv() result to correct type
- Convert quaternion list to ndarray before passing to rotation_matrix_transpose_from_quaternion
- Cast get_center return value
- Fix return type for pixel_coords_to_space_coords (ensure float dtype)
- Add type: ignore for moderngl.create_context backend arg (incorrect stubs)
- Add type: ignore for blend_func assignment (incorrect stubs)

* Fix mypy errors and runtime import issues in opengl_renderer.py

- Import MatrixMN and Point3D at runtime (needed for typing.cast)
- Cast np.linalg.inv() result to correct MatrixMN type
- Convert quaternion list to ndarray before passing to rotation_matrix_transpose_from_quaternion
- Cast get_center and pixel_coords_to_space_coords return values to Point3D
- Ensure float dtype in np.array literals for type consistency

* Add runtime import of Window in init_scene

The Window class is imported inside TYPE_CHECKING for type hints, but
needs to be imported at runtime when actually creating a window. This
import is deferred to avoid triggering pyglet display initialization
on headless systems (RTD build).

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

---------

Co-authored-by: Benjamin Hackl <devel@benjamin-hackl.at>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
This commit is contained in:
Arnaud 2026-01-25 21:24:16 +01:00 committed by GitHub
commit bbdcda1ff5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 732 additions and 141 deletions

File diff suppressed because it is too large Load diff

View file

@ -142,9 +142,6 @@ ignore_errors = True
[mypy-manim.mobject.vector_field]
ignore_errors = True
[mypy-manim.renderer.opengl_renderer]
ignore_errors = True
[mypy-manim.renderer.shader_wrapper]
ignore_errors = True