def missing_whitespace(logical_line):
    line = logical_line
    for index in range(len(line) - 1):
        char = line[index]
        if char in ',;:' and line[index + 1] not in WHITESPACE:
            before = line[:index]
            if char == ':' and before.count('[') > before.count(']'):
                continue  # Slice syntax, no space required
            if char == ',' and line[index + 1] == ')':
                continue  # Allow tuple with only one element: (3,)
            yield index, "E231 missing whitespace after '%s'" % char
JCR: Each comma, semicolon or colon should be followed by whitespace.
dataset/ETHPy150Open kivy/plyer/plyer/tools/pep8checker/pep8.py/missing_whitespace