@@ -64,10 +64,14 @@ def varmap(func, var, context=None, name=None, **kwargs):
64
64
return func (name , "<...>" , ** kwargs )
65
65
context .add (objid )
66
66
if isinstance (var , dict ):
67
+ # Apply func() before recursion, so that `shorten()` doesn't have to iterate over all the trimmed values
68
+ ret = func (name , var , ** kwargs )
67
69
# iterate over a copy of the dictionary to avoid "dictionary changed size during iteration" issues
68
- ret = func ( name , dict ((k , varmap (func , v , context , k , ** kwargs )) for k , v in var .copy ().items ()), ** kwargs )
70
+ ret = dict ((k , varmap (func , v , context , k , ** kwargs )) for k , v in ret .copy ().items ())
69
71
elif isinstance (var , (list , tuple )):
70
- ret = func (name , [varmap (func , f , context , name , ** kwargs ) for f in var ], ** kwargs )
72
+ # Apply func() before recursion, so that `shorten()` doesn't have to iterate over all the trimmed values
73
+ ret = func (name , var , ** kwargs )
74
+ ret = [varmap (func , f , context , name , ** kwargs ) for f in ret ]
71
75
else :
72
76
ret = func (name , var , ** kwargs )
73
77
context .remove (objid )
0 commit comments