human
Here's a good function header given the following:
I wrote the below code

    if (colorCodes is None):
        colorCodes = default_colorCodes
    if (outfile is None):
        outfile = os.path.join(config.compiledir, ((('theano.pydotprint.' + config.device) + '.') + format))
    if isinstance(fct, Function):
        profile = getattr(fct, 'profile', None)
        outputs = fct.maker.fgraph.outputs
        topo = fct.maker.fgraph.toposort()
    elif isinstance(fct, gof.FunctionGraph):
        profile = None
        outputs = fct.outputs
        topo = fct.toposort()
    else:
        if isinstance(fct, gof.Variable):
            fct = [fct]
        elif isinstance(fct, gof.Apply):
            fct = fct.outputs
        assert isinstance(fct, (list, tuple))
        assert all((isinstance(v, gof.Variable) for v in fct))
        fct = gof.FunctionGraph(inputs=gof.graph.inputs(fct), outputs=fct)
        profile = None
        outputs = fct.outputs
        topo = fct.toposort()
    if (not pydot_imported):
        raise RuntimeError('Failed    to    import    pydot.    You    must    install    graphviz    and    either    pydot    or    pydot-ng    for    `pydotprint`    to    work.', pydot_imported_msg)
    g = pd.Dot()
    if (cond_highlight is not None):
        c1 = pd.Cluster('Left')
        c2 = pd.Cluster('Right')
        c3 = pd.Cluster('Middle')
        cond = None
        for node in topo:
            if ((node.op.__class__.__name__ == 'IfElse') and (node.op.name == cond_highlight)):
                cond = node
        if (cond is None):
            _logger.warn('pydotprint:    cond_highlight    is    set    but    there    is    no    IfElse    node    in    the    graph')
            cond_highlight = None
    if (cond_highlight is not None):
        def recursive_pass(x, ls):
            if (not x.owner):
                return ls
            else:
                ls += [x.owner]
                for inp in x.inputs:
                    ls += recursive_pass(inp, ls)
                return ls
        left = set(recursive_pass(cond.inputs[1], []))
        right =...

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

def pydotprint(fct, outfile=None, compact=True, format='png', with_ids=False, high_contrast=True, cond_highlight=None, colorCodes=None, max_label_size=70, scan_graphs=False, var_with_name_simple=False, print_output_file=True, return_image=False):