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

    kws = set([])
    try:
        if (not (ctype == 'text/plain')):
            return kws
        if (not index.config.prefs.get('experiment_para_kws')):
            return kws
        para = {'text': '', 'qlevel': 0}
        def end_para():
            txt = para.get('text', '')
            if ((len(txt) > 60) and (not (('unsubscribe' in txt) and ('http' in txt))) and (not (('@lists' in txt) or ('/mailman/' in txt))) and (not txt.endswith(':'))):
                txt = re.sub(RE_CLEANPARA, '', txt)[(-120):]
                kws.add(('%s:p' % md5_hex(txt)))
            para.update({'text': '', 'qlevel': 0})
        for line in textpart.splitlines():
            if (line in ('--    ', '-    --    ', '-    --')):
                return kws
            markers = re.match(RE_QUOTES, line)
            ql = len((markers.group(0) if markers else '').strip())
            if (((ql == 0) and line.endswith(':')) or (ql != para['qlevel']) or (ql == len(line)) or (line[:2] == '--')):
                end_para()
            para['qlevel'] = ql
            if (not (line[:2] in ('--',))):
                para['text'] += line
        end_para()
    except:
        import traceback
        traceback.print_exc()
        pass
    return kws

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

def paragraph_id_extractor(index, msg, ctype, textpart, **kwargs):