- parts = name.split(".")
- obj = self._state
- for p in parts[:-1]:
- if isinstance(obj, dict):
- obj = obj[p]
- elif isinstance(obj, list):
- obj = obj[int(p)]
- else:
- raise KeyError("%r not found in world" % (name,))
- obj[parts[-1]] = value
+ obj, key = self._get_obj(name)
+ obj[key] = value
+
+ def _apply_append(self, action, updates):
+ for name, value in updates.items():
+ obj, key = self._get_obj(name)
+ obj.append(value)
+
+ def _apply_pop(self, action, updates):
+ for name, pos in updates.items():
+ obj, key = self._get_obj(name)
+ obj.pop(pos)