mirror of
https://github.com/3b1b/manim.git
synced 2025-08-05 16:49:03 +00:00
add error codes to exits
This commit is contained in:
parent
e7aff666bd
commit
2942485e4c
2 changed files with 16 additions and 7 deletions
|
@ -76,8 +76,12 @@ def get_module(file_name):
|
||||||
if file_name == "-":
|
if file_name == "-":
|
||||||
module = types.ModuleType("InputModule")
|
module = types.ModuleType("InputModule")
|
||||||
code = "from big_ol_pile_of_manim_imports import *\n\n" + sys.stdin.read()
|
code = "from big_ol_pile_of_manim_imports import *\n\n" + sys.stdin.read()
|
||||||
exec(code, module.__dict__)
|
try:
|
||||||
return module
|
exec(code, module.__dict__)
|
||||||
|
return module
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Failed to render scene: {str(e)}")
|
||||||
|
sys.exit(2)
|
||||||
else:
|
else:
|
||||||
module_name = file_name.replace(".py", "").replace(os.sep, ".")
|
module_name = file_name.replace(".py", "").replace(os.sep, ".")
|
||||||
return importlib.import_module(module_name)
|
return importlib.import_module(module_name)
|
||||||
|
|
|
@ -49,13 +49,15 @@ def handle_scene(scene, **config):
|
||||||
sys.stdout = curr_stdout
|
sys.stdout = curr_stdout
|
||||||
|
|
||||||
|
|
||||||
def is_scene(obj):
|
def is_child_scene(obj, module):
|
||||||
if not inspect.isclass(obj):
|
if not inspect.isclass(obj):
|
||||||
return False
|
return False
|
||||||
if not issubclass(obj, Scene):
|
if not issubclass(obj, Scene):
|
||||||
return False
|
return False
|
||||||
if obj == Scene:
|
if obj == Scene:
|
||||||
return False
|
return False
|
||||||
|
if not obj.__module__.startswith(module.__name__):
|
||||||
|
return False
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
@ -73,20 +75,20 @@ def prompt_user_for_choice(name_to_obj):
|
||||||
]
|
]
|
||||||
except KeyError:
|
except KeyError:
|
||||||
print(manimlib.constants.INVALID_NUMBER_MESSAGE)
|
print(manimlib.constants.INVALID_NUMBER_MESSAGE)
|
||||||
sys.exit()
|
sys.exit(2)
|
||||||
user_input = input(manimlib.constants.CHOOSE_NUMBER_MESSAGE)
|
user_input = input(manimlib.constants.CHOOSE_NUMBER_MESSAGE)
|
||||||
return [
|
return [
|
||||||
name_to_obj[num_to_name[int(num_str)]]
|
name_to_obj[num_to_name[int(num_str)]]
|
||||||
for num_str in user_input.split(",")
|
for num_str in user_input.split(",")
|
||||||
]
|
]
|
||||||
|
except EOFError:
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
|
||||||
def get_scene_classes(scene_names_to_classes, config):
|
def get_scene_classes(scene_names_to_classes, config):
|
||||||
if len(scene_names_to_classes) == 0:
|
if len(scene_names_to_classes) == 0:
|
||||||
print(manimlib.constants.NO_SCENE_MESSAGE)
|
print(manimlib.constants.NO_SCENE_MESSAGE)
|
||||||
return []
|
return []
|
||||||
if len(scene_names_to_classes) == 1:
|
|
||||||
return list(scene_names_to_classes.values())
|
|
||||||
if config["scene_name"] in scene_names_to_classes:
|
if config["scene_name"] in scene_names_to_classes:
|
||||||
return [scene_names_to_classes[config["scene_name"]]]
|
return [scene_names_to_classes[config["scene_name"]]]
|
||||||
if config["scene_name"] != "":
|
if config["scene_name"] != "":
|
||||||
|
@ -99,7 +101,8 @@ def get_scene_classes(scene_names_to_classes, config):
|
||||||
|
|
||||||
def main(config):
|
def main(config):
|
||||||
module = config["module"]
|
module = config["module"]
|
||||||
scene_names_to_classes = dict(inspect.getmembers(module, is_scene))
|
scene_names_to_classes = dict(
|
||||||
|
inspect.getmembers(module, lambda x: is_child_scene(x, module)))
|
||||||
|
|
||||||
scene_kwargs = dict([
|
scene_kwargs = dict([
|
||||||
(key, config[key])
|
(key, config[key])
|
||||||
|
@ -125,11 +128,13 @@ def main(config):
|
||||||
try:
|
try:
|
||||||
handle_scene(SceneClass(**scene_kwargs), **config)
|
handle_scene(SceneClass(**scene_kwargs), **config)
|
||||||
play_finish_sound()
|
play_finish_sound()
|
||||||
|
sys.exit(0)
|
||||||
except Exception:
|
except Exception:
|
||||||
print("\n\n")
|
print("\n\n")
|
||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
print("\n\n")
|
print("\n\n")
|
||||||
play_error_sound()
|
play_error_sound()
|
||||||
|
sys.exit(2)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|
Loading…
Add table
Reference in a new issue