def update(self, data={}, options={}):
<EOL>for key in options:<EOL><INDENT>self[key] = options[key]<EOL><DEDENT>if isinstance(data, ConfigNode):<EOL><INDENT>data = data._get_value()<EOL><DEDENT>update_dict(self._get_value(), data)<EOL>
Update the configuration with new data.

This can be passed either or both `data` and `options`.

`options` is a dict of keypath/value pairs like this (similar to
CherryPy's config mechanism:

    >>> c.update(options={
    ...     'server.port': 8080,
    ...     'server.host': 'localhost',
    ...     'admin.email': 'admin@lol'
    ... })

`data` is a dict of actual config data, like this:

    >>> c.update(data={
    ...     'server': {
    ...         'port': 8080,
    ...         'host': 'localhost'
    ...     },
    ...     'admin': {
    ...         'email': 'admin@lol'
    ...     }
    ... })