Skip to content

Module exec leads to crash #2307

Open
Open
@Splines

Description

@Splines

The following scene fails on startup:

from dataclasses import dataclass
from manimlib import *


@dataclass
class Coordinates2D:
    x: float
    y: float


class MyScene(Scene):
    def construct(self):
        print("Hello, world!")

Start it via

manimgl "./path/to/bug-test-file.py" MyScene -e 13

and you get the following traceback (Python version: 3.12.8):

Traceback (most recent call last):
  File "/home/dominic/dev/splience-manim-videos/venv/bin/manimgl", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/home/dominic/dev/manim-fork/manimlib/__main__.py", line 26, in main
    reload_manager.run()
  File "/home/dominic/dev/manim-fork/manimlib/reload_manager.py", line 47, in run
    self.retrieve_scenes_and_run()
  File "/home/dominic/dev/manim-fork/manimlib/reload_manager.py", line 81, in retrieve_scenes_and_run
    scenes = manimlib.extract_scene.main(scene_config, run_config)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/dominic/dev/manim-fork/manimlib/extract_scene.py", line 173, in main
    module = get_scene_module(
             ^^^^^^^^^^^^^^^^^
  File "/home/dominic/dev/manim-fork/manimlib/extract_scene.py", line 168, in get_scene_module
    insert_embed_line_to_module(module, embed_line)
  File "/home/dominic/dev/manim-fork/manimlib/extract_scene.py", line 162, in insert_embed_line_to_module
    exec(code_object, module.__dict__)
  File ".home.dominic.dev.splience-manim-videos.manimbug", line 5, in <module>
  File "/usr/lib/python3.12/dataclasses.py", line 1275, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "/usr/lib/python3.12/dataclasses.py", line 1265, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/dataclasses.py", line 983, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/dataclasses.py", line 749, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'. Did you mean: '__dir__'?

The latest commit where it works correctly is df1e067. Then, in the next commit 1a14a6b it doesn't work anymore. Thus, #2262 has introduced this bug. It's not by chance that this PR is called "Refactor scene creation".

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions