def split_range_str()

in function/python_3_9/src/response/range_mapper.py [0:0]


def split_range_str(range_str):
    """
    Split the range string to bytes, start and end.
    :param range_str: Range request string
    :return: tuple of (bytes, start, end) or None
    """
    re_matcher = re.fullmatch(r'([a-z]+)=(\d+)?-(\d+)?', range_str)
    if not re_matcher or len(re_matcher.groups()) != 3:
        return None
    unit, start, end = re_matcher.groups()
    start = int(start) if type(start) == str else None
    end = int(end) if type(end) == str else None
    return unit, start, end