Transform version string into comparable list
    :param version: version string, e.g. 0.11.23rc1
    :return: list of version chunks, e.g. [0, 11, 23, 'rc1']

    >>> parse("1")
    [1]
    >>> parse("0.0.1")
    [0, 0, 1]
    >>> parse("0.11.23rc1")
    [0, 11, 23, 'rc1']

def parse(version):
    # type: (Union[str, unicode]) -> list
    """ Transform version string into comparable list
    :param version: version string, e.g. 0.11.23rc1
    :return: list of version chunks, e.g. [0, 11, 23, 'rc1']

    >>> parse("1")
    [1]
    >>> parse("0.0.1")
    [0, 0, 1]
    >>> parse("0.11.23rc1")
    [0, 11, 23, 'rc1']
    """
    chunks = []
    for chunk in re.findall(r"(\d+|[A-Za-z]\w*)", version):
        try:
            chunk = int(chunk)
        except ValueError:
            pass
        chunks.append(chunk)
    return chunks