def add_path_delta(path, delta):
    """
    Add delta to pathrent path, with some cleaning by the way.
    :param path: pathrent path
    :param delta: delta
    :return: new path or raises ValueError

    >>> add_path_delta('/a/b/c', 'd/e')
    '/a/b/c/d/e'
    >>> add_path_delta('a/b/c', 'd/e')
    'a/b/c/d/e'
    >>> add_path_delta('a/b/c', '/d/e')
    '/d/e'
    >>> add_path_delta('/a/b/c', '../d/./e')
    '/a/b/d/e'
    >>> add_path_delta('/a/..//c', 'd/e')
    '/c/d/e'
    >>> add_path_delta('////', '')
    '/'
    >>> add_path_delta('a/b', '../..')
    ''
    >>> add_path_delta('/a/b', '../../..')
    Traceback (most recent call last):
        ...
    ValueError: Path delta out of bound: /a/b + ../../..
    """
    if delta.startswith('/'):
        absolute = True
        steps = delta[1:].split('/')
    else:
        absolute = path.startswith('/')
        steps = path.split('/') + delta.split('/')
    parts = []
    for step in steps:
        if step in ('.', ''):
            continue
        elif step == '..':
            try:
                parts.pop()
            except IndexError:
                raise ValueError(u'Path delta out of bound: {} + {}'.format
                    (path, delta))
        else:
            parts.append(step)
    res_path = '/'.join(parts)
    if absolute:
        res_path = '/' + res_path
    return res_path
