3b1b-manim/manimlib/__main__.py

64 lines
1.6 KiB
Python
Raw Normal View History

2021-02-07 17:43:05 +08:00
#!/usr/bin/env python
2022-04-12 19:19:59 +08:00
from manimlib import __version__
from manimlib.config import get_global_config
from manimlib.config import parse_cli
2021-02-07 17:45:18 +08:00
import manimlib.utils.init_config
import manimlib.extract_scene
from manimlib.window import Window
from IPython.terminal.embed import KillEmbedded
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from argparse import Namespace
def run_scenes():
"""
Runs the scenes in a loop and detects when a scene reload is requested.
"""
global_config = get_global_config()
scene_config = global_config["scene"]
run_config = global_config["run"]
if run_config["show_in_window"]:
# Create a reusable window
window = Window(**global_config["window"])
scene_config.update(window=window)
while True:
try:
# Blocking call since a scene may init an IPython shell()
scenes = manimlib.extract_scene.main(scene_config, run_config)
for scene in scenes:
scene.run()
return
except KillEmbedded:
# Requested via the `exit_raise` IPython runline magic
# by means of the reload_scene() command
pass
except KeyboardInterrupt:
break
2021-02-07 17:43:05 +08:00
def main():
"""
Main entry point for ManimGL.
"""
2021-10-07 17:42:23 +08:00
print(f"ManimGL \033[32mv{__version__}\033[0m")
args = parse_cli()
2021-11-30 11:28:26 -08:00
if args.version and args.file is None:
2021-10-07 17:42:23 +08:00
return
2021-02-07 17:45:18 +08:00
if args.config:
manimlib.utils.init_config.init_customization()
return
2021-02-25 08:48:50 -08:00
run_scenes()
2021-04-09 20:17:21 +08:00
2021-11-30 11:28:26 -08:00
if __name__ == "__main__":
2021-04-09 20:17:21 +08:00
main()