def unset_value(self, key):
if key.endswith("<STR_LIT:.>"):<EOL><INDENT>key = key[:-<NUM_LIT:1>]<EOL><DEDENT>path = key.split("<STR_LIT:.>")<EOL>curr = self.settings<EOL>for p in path[:-<NUM_LIT:1>]:<EOL><INDENT>if p not in curr:<EOL><INDENT>raise ConfigurationError("<STR_LIT>".format(key, p))<EOL><DEDENT>curr = curr[p]<EOL><DEDENT>if not isinstance(curr, dict):<EOL><INDENT>raise ConfigurationError("<STR_LIT>".format(path[-<NUM_LIT:1>], key))<EOL><DEDENT>if path[-<NUM_LIT:1>] not in curr:<EOL><INDENT>raise ConfigurationError("<STR_LIT>".format(key, path[-<NUM_LIT:1>]))<EOL><DEDENT>del curr[path[-<NUM_LIT:1>]]<EOL>
Remove a value at the given key -- and any nested values --
from the configuration.
*Note*: In order to write changes to the file, ensure that
:meth:`~giraffez.config.Config.write` is called prior to exit.

:param str key: A path to the value destination, with nested levels joined by '.'
:raises `giraffez.errors.ConfigurationError`: if the key specifies an invalid path, or does not exist