def spawn_watcher(self, label, target=None, eternal=False):
if label not in self._sources:<EOL><INDENT>raise YapconfSourceError(<EOL>'<STR_LIT>' % (label, label)<EOL>)<EOL><DEDENT>current_config = self._sources[label].get_data()<EOL>handler = ConfigChangeHandler(current_config, self, target)<EOL>return self._sources[label].watch(handler, eternal)<EOL>
Spawns a config watcher in a separate daemon thread.

        If a particular config value changes, and the item has a
        ``watch_target`` defined, then that method will be called.

        If a ``target`` is passed in, then it will call the ``target``
        anytime the config changes.

        Args:
            label (str): Should match a label added through ``add_source``
            target (func): Should be a function that takes two arguments,
            the old configuration and the new configuration.
            eternal (bool): Determines if watcher threads should be restarted
            if they die.

        Returns:
            The thread that was spawned.