human
Complete the below
def linkify(text, nofollow=True, target=None, filter_url=identity, filter_text=identity, skip_pre=False, parse_email=False):

    ''''Convert URL-like strings in an HTML fragment to links.
    linkify() converts strings that look like URLs or domain names in a
    blob of text that may be an HTML fragment to links, while preserving
    (a) links already in the string, (b) urls found in attributes, and
    (c) email addresses.
    If the nofollow argument is True (the default) then rel="nofollow"
    will be added to links created by linkify() as well as links already
    found in the text.
    The target argument will optionally add a target attribute with the
    given value to links created by linkify() as well as links already
    found in the text.
    linkify() uses up to two filters on each link. For links created by
    linkify(), the href attribute is passed through filter_url()
    and the text of the link is passed through filter_text(). For links
    already found in the document, the href attribute is passed through
    filter_url(), but the text is untouched.'
    '''

What is a the Python program you requested?
assistant
#Here is the Python program you requested.
    text = force_unicode(text)
    if (not text):
        return u''
    parser = html5lib.HTMLParser(tokenizer=HTMLSanitizer)
    forest = parser.parseFragment(text)
    if nofollow:
        rel = u'rel="nofollow"'
    else:
        rel = u''
    def replace_nodes(tree, new_frag, node):
        new_tree = parser.parseFragment(new_frag)
        for n in new_tree.childNodes:
            tree.insertBefore(n, node)
        tree.removeChild(node)
    def strip_wrapping_parentheses(fragment):
        'Strips    wrapping    parentheses.\n\n                                Returns    a    tuple    of    the    following    format::\n\n                                                (string    stripped    from    wrapping    parentheses,\n                                                    count    of    stripped    opening    parentheses,\n                                                    count    of    stripped    closing    parentheses)\n                                '
        opening_parentheses = closing_parentheses = 0
        for char in fragment:
            if (char == '('):
                opening_parentheses += 1
            else:
                break
        if opening_parentheses:
            newer_frag = ''
            fragment = fragment[opening_parentheses:]
            reverse_fragment = fragment[::(-1)]
            skip = False
            for char in reverse_fragment:
                if ((char == ')') and (closing_parentheses < opening_parentheses) and (not skip)):
                    closing_parentheses += 1
                    continue
                elif (char != ')'):
                    skip = True
                newer_frag += char
            fragment = newer_frag[::(-1)]
        return (fragment, opening_parentheses, closing_parentheses)
    def linkify_nodes(tree, parse_text=True):
        for node in tree.childNodes:
            if ((node.type == NODE_TEXT) and parse_text):
                new_frag = node.toxml()
                if parse_email:
                    new_frag =...