[visitor] Don't recurse on private or TTFont attributes

This commit is contained in:
Behdad Esfahbod 2022-08-15 13:42:42 -06:00
parent 24d63d068e
commit 8213c58a38
2 changed files with 7 additions and 0 deletions

View File

@ -70,6 +70,8 @@ class Visitor(object):
_visitors = self._visitorsFor(obj)
defaultVisitor = _visitors.get("*", None)
for key in keys:
if key[0] == "_":
continue
value = getattr(obj, key)
visitorFunc = _visitors.get(key, defaultVisitor)
if visitorFunc is not None:

View File

@ -5,6 +5,11 @@ from fontTools.ttLib import TTFont
class TTVisitor(Visitor):
def visitAttr(self, obj, attr, value, *args, **kwargs):
if isinstance(value, TTFont):
return False
super().visitAttr(obj, attr, value, *args, **kwargs)
def visit(self, obj, *args, **kwargs):
if hasattr(obj, "ensureDecompiled"):
obj.ensureDecompiled(recurse=False)