Recursively update values in dst from src.

    Unlike the builtin dict.update() function, this method will decend into
    nested dicts, updating all nested values.

    Arguments:
        dst (dict): Destination dict.
        src (dict): Source dict.

    Returns:
        dict: dst updated with entries from src.

def update(dst, src):
    """
    Recursively update values in dst from src.

    Unlike the builtin dict.update() function, this method will decend into
    nested dicts, updating all nested values.

    Arguments:
        dst (dict): Destination dict.
        src (dict): Source dict.

    Returns:
        dict: dst updated with entries from src.
    """
    for k, v in src.items():
        if isinstance(v, Mapping):
            r = update(dst.get(k, {}), v)
            dst[k] = r
        else:
            dst[k] = src[k]
    return dst