From 0bb9216c14cdfa0fc6c548199aeefa51879a8bab Mon Sep 17 00:00:00 2001 From: Bill Xi <86190295+TurkeyBilly@users.noreply.github.com> Date: Tue, 15 Feb 2022 21:50:14 +0800 Subject: [PATCH] Update hash_obj method --- manimlib/mobject/numbers.py | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/manimlib/mobject/numbers.py b/manimlib/mobject/numbers.py index 7481e0d7..a56353ae 100644 --- a/manimlib/mobject/numbers.py +++ b/manimlib/mobject/numbers.py @@ -2,6 +2,7 @@ from manimlib.constants import * from manimlib.mobject.svg.tex_mobject import SingleStringTex from manimlib.mobject.svg.text_mobject import Text from manimlib.mobject.types.vectorized_mobject import VMobject +from manimlib.utils.iterables import hash_obj string_to_mob_map = {} @@ -86,20 +87,9 @@ class DecimalNumber(VMobject): return self.data["font_size"][0] def string_to_mob(self, string, mob_class=Text, **kwargs): - def make_hash(o): - if isinstance(o, (set, tuple, list)): - return tuple([make_hash(e) for e in o]) - elif not isinstance(o, dict): - return hash(o) - from copy import deepcopy as _deepcopy - new_o = _deepcopy(o) - for k, v in new_o.items(): - new_o[k] = make_hash(v) - return hash(tuple(frozenset(sorted(new_o.items())))) - - if (string, make_hash(kwargs)) not in string_to_mob_map: - string_to_mob_map[(string, make_hash(kwargs))] = mob_class(string, font_size=1, **kwargs) - mob = string_to_mob_map[(string, make_hash(kwargs))].copy() + if (string, hash_obj(kwargs)) not in string_to_mob_map: + string_to_mob_map[(string, hash_obj(kwargs))] = mob_class(string, font_size=1, **kwargs) + mob = string_to_mob_map[(string, hash_obj(kwargs))].copy() mob.scale(self.get_font_size()) return mob