human
I wrote the below code

    def is_binary_operator(token_type, text):
        return (((token_type == tokenize.OP) or (text in ['and', 'or'])) and (text not in '()[]{},:.;@=%~'))
    line_break = False
    unary_context = True
    previous_token_type = None
    previous_text = None
    for (token_type, text, start, end, line) in tokens:
        if (token_type == tokenize.COMMENT):
            continue
        if ((('\n' in text) or ('\r' in text)) and (token_type != tokenize.STRING)):
            line_break = True
        else:
            if (is_binary_operator(token_type, text) and line_break and (not unary_context) and (not is_binary_operator(previous_token_type, previous_text))):
                (yield (start, 'W503    line    break    before    binary    operator'))
            unary_context = (text in '([{,;')
            line_break = False
            previous_token_type = token_type
            previous_text = text

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

def break_around_binary_operator(logical_line, tokens):