def watch(self, handler, eternal=False):
if eternal:<EOL><INDENT>thread = threading.Thread(<EOL>name=self.label + '<STR_LIT>',<EOL>target=self._spawn_and_watch,<EOL>args=(handler,)<EOL>)<EOL>thread.setDaemon(True)<EOL><DEDENT>else:<EOL><INDENT>thread = self._spawn_watcher(handler)<EOL><DEDENT>thread.start()<EOL>return thread<EOL>
Watch a source for changes. When changes occur, call the handler.

        By default, watches a dictionary that is in memory.

        Args:
            handler: Must respond to handle_config_change
            eternal: Spawn eternal watch, or just a single watch.

        Returns:
            The daemon thread that was spawned.