human
Complete the below
def make_pass_decorator(object_type, ensure=False):

    ''''Given an object type this creates a decorator that will work
    similar to :func:`pass_obj` but instead of passing the object of the
    current context, it will find the innermost context of type
    :func:`object_type`.
    This generates a decorator that works roughly like this::
    from functools import update_wrapper
    def decorator(f):
    @pass_context
    def new_func(ctx, *args, **kwargs):
    obj = ctx.find_object(object_type)
    return ctx.invoke(f, obj, *args, **kwargs)
    return update_wrapper(new_func, f)
    return decorator
    :param object_type: the type of the object to pass.
    :param ensure: if set to `True`, a new object will be created and
    remembered on the context if it\'s not there yet.'
    '''
 Write me a Python code to find the innermost context of type?
assistant
#Here is Python code to find the innermost context of type
.
    def decorator(f):
        def new_func(*args, **kwargs):
            ctx = get_current_context()
            if ensure:
                obj = ctx.ensure_object(object_type)
            else:
                obj = ctx.find_object(object_type)
            if (obj is None):
                raise RuntimeError(('Managed    to    invoke    callback    without    a    context    object    of    type    %r    existing' % object_type.__name__))
            return ctx.invoke(f, obj, *args[1:], **kwargs)
        return update_wrapper(new_func, f)
    return decorator