human
I wrote the below code

    if isinstance(outputs, tuple):
        outputs = list(outputs)
    clone_d = {}
    update_d = {}
    update_expr = []
    shared_inputs = []
    def clone_v_get_shared_updates(v, copy_inputs_over):
        '\n                                Clones    a    variable    and    its    inputs    recursively    until    all    are    in    clone_d.\n                                Also    appends    all    shared    variables    met    along    the    way    to    shared    inputs,\n                                and    their    default_update    (if    applicable)    to    update_d    and    update_expr.\n\n                                v    can    have    an    fgraph    attached    to    it,    case    in    which    we    want    to    clone\n                                constants    (to    avoid    having    a    constant    belonging    to    two    fgraphs).\n\n                                '
        assert (v is not None)
        if (v in clone_d):
            return clone_d[v]
        if v.owner:
            owner = v.owner
            if (owner not in clone_d):
                for i in owner.inputs:
                    clone_v_get_shared_updates(i, copy_inputs_over)
                clone_d[owner] = owner.clone_with_new_inputs([clone_d[i] for i in owner.inputs], strict=rebuild_strict)
                for (old_o, new_o) in zip(owner.outputs, clone_d[owner].outputs):
                    clone_d.setdefault(old_o, new_o)
            return clone_d.setdefault(v, v)
        elif isinstance(v, SharedVariable):
            if (v not in shared_inputs):
                shared_inputs.append(v)
            if hasattr(v, 'default_update'):
                if ((no_default_updates is False) or (isinstance(no_default_updates, list) and (v not in no_default_updates))):
                    if (v not in update_d):
                        v_update = v.type.filter_variable(v.default_update, allow_convert=False)
                        if (v_update.type != v.type):
                            raise TypeError('an   ...

What's a good function header?

=====
Here's a good function header?
assistant
#Here's a good function header.

def rebuild_collect_shared(outputs, inputs=None, replace=None, updates=None, rebuild_strict=True, copy_inputs_over=True, no_default_updates=False):