This graph illustrates the core components responsible for Manim's system configuration, module loading, scene extraction, and overall application execution. The `ApplicationCore` acts as the central orchestrator, initiating the configuration process through the `ConfigurationManager`, utilizing `SharedUtilities` for common tasks like cache clearing, and delegating scene processing to the `SceneExtractor`. The `SceneExtractor`, in turn, relies on the `ModuleLoader` to dynamically load user-defined Python modules containing Manim scenes. The `ConfigurationManager` is crucial for parsing command-line arguments and loading settings from YAML files, ensuring the application runs with the correct parameters.
Components
ModuleLoader
This component is responsible for dynamically loading and reloading Python modules, which is essential for Manim's ability to update scenes without a full application restart. It tracks imported modules and performs deep reloads to ensure consistency.
SceneExtractor
This component handles the process of identifying, extracting, and preparing Manim scene classes from a given Python module. It manages user interaction for scene selection, calculates rendering parameters, and can inject interactive debugging features.
ConfigurationManager
This component is the central authority for managing Manim's operational settings. It parses command-line arguments, loads configuration from default and custom YAML files, and updates various application-wide settings related to directories, window display, camera properties, file output, scene behavior, and runtime options.
ApplicationCore
This component serves as the main entry point and orchestrator of the Manim application. It initiates the configuration process, manages cache clearing, and drives the execution of selected Manim scenes.
SharedUtilities
This component provides a collection of general-purpose utility functions that are utilized across various parts of the Manim system. These include operations for recursively merging dictionaries and managing application-level caches.