def parse_iso_time(value):
    #NEEDS-TEST
    match = ISO_TIME_RE.match(value)
    if not match:
        raise InvalidFormat('invalid ISO-8601 time: "{}"'.format(value))

    # split out into time, secs, usecs, and tz
    tmstr = match.group(1)
    secs = match.group(3)
    usecs = match.group(4)
    tzstr = match.group(5)

    try:
        dt_args = time.strptime(tmstr, '%H:%M')[3:5]
    except ValueError:
        raise InvalidDate('invalid time: "{}"'.format(value))

    # append seconds, usecs, and tz
    dt_args += (int(secs) if secs else 0,)
    dt_args += (int(usecs) if usecs else 0,)
    dt_args += (parse_tz(tzstr),)

    try:
        return dt_time(*dt_args)
    except __HOLE__:
        raise InvalidDate('invalid date: "{}"'.format(value))
dataset/ETHPy150Open bendavis78/python-gitmodel/gitmodel/utils/isodate.py/parse_iso_time