turn a string representing a version into a normalized version list.
    Version lists are directly comparable using standard operators such as
    >, <, ==, etc.

    Parameters:
      version_string - such as '3.5' or '3.6.3plugin3'
      max_version_parts - version strings are comprised of a series of 4 tuples.
                          This should be set to the maximum number of 4 tuples
                          in a version string.

def normalize(version_string, max_version_parts=4):
    """turn a string representing a version into a normalized version list.
    Version lists are directly comparable using standard operators such as
    >, <, ==, etc.

    Parameters:
      version_string - such as '3.5' or '3.6.3plugin3'
      max_version_parts - version strings are comprised of a series of 4 tuples.
                          This should be set to the maximum number of 4 tuples
                          in a version string.
    """
    version_list = []
    for part_count, version_part in enumerate(version_string.split('.')):
        try:
            groups = _version_part_re.match(version_part).groups()
        except Exception, x:
            raise NotAVersionException(version_string)
        version_list.extend(t(x) for x, t in zip(groups, _normalize_fn_list))
    version_list.extend(_padding_list * (max_version_parts - part_count - 1))
    return version_list