+ def _apply_set(self, updates):
+ for name, value in updates.items():
+ parts = name.split(".")
+ obj = self._state
+ for p in parts[:-1]:
+ obj = obj[p]
+ obj[parts[-1]] = value
+
+ def apply_event(self, action, *args, **kw):
+ if action == "set":
+ return self._apply_set(*args, **kw)
+ raise ValueError("Unknown world event action: %r" % (action,))