mirror of
https://github.com/3b1b/manim.git
synced 2025-04-13 09:47:07 +00:00

* Comment tweak * Directly print traceback Since the shell.showtraceback is giving some issues * Make InteracrtiveSceneEmbed into a class This way it can keep track of it's internal shell; use of get_ipython has a finicky relationship with reloading. * Move remaining checkpoint_paste logic into scene_embed.py This involved making a few context managers for Scene: temp_record, temp_skip, temp_progress_bar, which seem useful in and of themselves. * Change null key to be the empty string * Ensure temporary svg paths for Text are deleted * Remove unused dict_ops.py functions * Remove break_into_partial_movies from file_writer configuration * Rewrite guarantee_existence using Path * Clean up SceneFileWriter It had a number of vestigial functions no longer used, and some setup that could be made more organized. * Remove --save_pngs CLI arg (which did nothing) * Add --subdivide CLI arg * Remove add_extension_if_not_present * Remove get_sorted_integer_files * Have find_file return Path * Minor clean up * Clean up num_tex_symbols * Fix find_file * Minor cleanup for extract_scene.py * Add preview_frame_while_skipping option to scene config * Use shell.showtraceback function * Move keybindings to config, instead of in-place constants * Replace DEGREES -> DEG
22 lines
699 B
Python
22 lines
699 B
Python
import itertools as it
|
|
import numpy as np
|
|
|
|
|
|
def merge_dicts_recursively(*dicts):
|
|
"""
|
|
Creates a dict whose keyset is the union of all the
|
|
input dictionaries. The value for each key is based
|
|
on the first dict in the list with that key.
|
|
|
|
dicts later in the list have higher priority
|
|
|
|
When values are dictionaries, it is applied recursively
|
|
"""
|
|
result = dict()
|
|
all_items = it.chain(*[d.items() for d in dicts])
|
|
for key, value in all_items:
|
|
if key in result and isinstance(result[key], dict) and isinstance(value, dict):
|
|
result[key] = merge_dicts_recursively(result[key], value)
|
|
else:
|
|
result[key] = value
|
|
return result
|