message_length returns visual length of message.
    Ascii chars are counted as 1, non-asciis are 2.

    :param str message: random unicode mixed text
    :rtype: int

def message_length(message):
    '''
    message_length returns visual length of message.
    Ascii chars are counted as 1, non-asciis are 2.

    :param str message: random unicode mixed text
    :rtype: int
    '''
    length = 0
    for char in map(east_asian_width, message):
        if char == 'W':
            length += 2
        elif char == 'Na':
            length += 1

    return length