{"record":{"id":"8afb7c3045a9417f","repo":"3b1b/manim","slug":"no-scene-named-name-found","errorCode":null,"errorMessage":"No scene named {name} found","messagePattern":"No scene named (.+?) found","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"manimlib/extract_scene.py","lineNumber":91,"sourceCode":"    pre_config[\"file_writer_config\"][\"quiet\"] = True\n    pre_config[\"skip_animations\"] = True\n    pre_scene = scene_class(**pre_config)\n    pre_scene.run()\n    total_time = pre_scene.time - pre_scene.skip_time\n    return int(total_time * manim_config.camera.fps)\n\n\ndef scene_from_class(scene_class, scene_config: Dict, run_config: Dict):\n    fw_config = manim_config.file_writer\n    if fw_config.write_to_movie and run_config.prerun:\n        scene_config.file_writer_config.total_frames = compute_total_frames(scene_class, scene_config)\n    return scene_class(**scene_config)\n\n\ndef note_missing_scenes(arg_names, module_names):\n    for name in arg_names:\n        if name not in module_names:\n            log.error(f\"No scene named {name} found\")\n\n\ndef get_scenes_to_render(all_scene_classes: list, scene_config: Dict, run_config: Dict):\n    if run_config[\"write_all\"] or len(all_scene_classes) == 1:\n        classes_to_run = all_scene_classes\n    else:\n        name_to_class = {sc.__name__: sc for sc in all_scene_classes}\n        classes_to_run = [name_to_class.get(name) for name in run_config.scene_names]\n        classes_to_run = list(filter(lambda x: x, classes_to_run))  # Remove Nones\n        note_missing_scenes(run_config.scene_names, name_to_class.keys())\n\n    if len(classes_to_run) == 0:\n        classes_to_run = prompt_user_for_choice(all_scene_classes)\n\n    return [\n        scene_from_class(scene_class, scene_config, run_config)\n        for scene_class in classes_to_run\n    ]","sourceCodeStart":73,"sourceCodeEnd":109,"githubUrl":"https://github.com/3b1b/manim/blob/dee01804d47b9f94402d71472674710dcac125b8/manimlib/extract_scene.py#L73-L109","documentation":"note_missing_scenes runs after name-based scene filtering in get_scenes_to_render: for each name requested via the CLI that has no matching scene class in the loaded module(s), it logs 'No scene named {name} found'. Unlike errors 55/56 this only logs — it does not itself exit; but if no requested scene matched at all, classes_to_run is empty and manim falls into the empty-selection path (typically the interactive menu or an abort).","triggerScenarios":"manim file.py Typpo instead of Typo; scene names gathered from multiple files where one file lacks the class; using --save_as or config that carries stale scene_names.","commonSituations":"Renamed or deleted scene classes; copy-pasting a render command from a project where the class was named differently; expecting snake_case file names to select scenes.","solutions":["Check the scene class names in the file and pass the exact __name__","Run with no scene name to see the printed list of available scenes","If the module failed to import the class (ImportError swallowed at module load), fix the import — the class then appears in the list"],"exampleFix":"# before\n$ manim file.py MyScnee\n# after\n$ manim file.py MyScene","handlingStrategy":"validation","validationCode":"import inspect, importlib\nmod = importlib.import_module(\"your_module\")\navailable = {n for n, o in inspect.getmembers(mod, inspect.isclass) if issubclass(o, object)}\nmissing = [n for n in requested_names if n not in available]\nassert not missing, f\"unknown scenes: {missing}\"","typeGuard":"def scene_exists(name: str, module) -> bool:\n    import inspect\n    return name in {n for n, _ in inspect.getmembers(module, inspect.isclass)}","tryCatchPattern":null,"preventionTips":["After renaming or deleting a Scene subclass, update every render command and CI script that names it","Run once with no scene name to list what manim actually sees in the module"],"tags":["cli","scene-selection","startup","logging"],"backgroundTag":null,"analyzedSha":"dee01804d47b9f94402d71472674710dcac125b8","analyzedAt":"2026-08-14T19:53:44.241Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}