From 05122db620ba63631d5c5d76eed82e85455128ca Mon Sep 17 00:00:00 2001 From: Peter Sobolewski <76622105+psobolewskiPhD@users.noreply.github.com> Date: Wed, 19 Jul 2023 16:06:54 -0400 Subject: [PATCH] do key/value comparisons for dict --- napari_animation/viewer_state.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/napari_animation/viewer_state.py b/napari_animation/viewer_state.py index 32dbbbf..3d6d19e 100644 --- a/napari_animation/viewer_state.py +++ b/napari_animation/viewer_state.py @@ -54,8 +54,14 @@ def apply(self, viewer: napari.viewer.Viewer): layer_attributes = layer.as_layer_data_tuple()[1] for attribute_name, value in layer_state.items(): original_value = layer_attributes[attribute_name] - # Only set if value differs to avoid expensive redraws - if not np.array_equal(original_value, value): + # Only setattr if value differs to avoid expensive redraws + # dicts can hold arrays, e.g. `color`, requiring comparisons of key/value pairs + if type(value) is dict: + for key, val in value.items(): + if not np.array_equal(val, original_value.get(key)): + setattr(layer, attribute_name, value) + break + elif not np.array_equal(original_value, value): setattr(layer, attribute_name, value) def render(