diff --git a/light9/effect/settings.py b/light9/effect/settings.py --- a/light9/effect/settings.py +++ b/light9/effect/settings.py @@ -64,8 +64,14 @@ class _Settings: def __init__(self, graph: GraphType, settingsList: List[Tuple[Any, Any, VTUnion]]): self.graph = graph # for looking up all possible attrs self._compiled: Dict[self.__class__.EntityType, Dict[self.__class__.AttrType, VTUnion]] = {} - for row in settingsList: - self._compiled.setdefault(row[0], {})[row[1]] = row[2] + for e, a, v in settingsList: + attrVals = self._compiled.setdefault(e, {}) + if a in attrVals: + v = resolve( + e, # Hey, this is supposed to be DeviceClass (which is not convenient for us), but so far resolve() doesn't use that arg + a, + [attrVals[a], v]) + attrVals[a] = v # self._compiled may not be final yet- see _fromCompiled self._delZeros()