<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:

def construct_re(url_template, match_whole_str=False, converters=None,
                 default_converter='string', anonymous=False):
    '''
    url_template - str or unicode representing template

    Constructed pattern expects urlencoded string!

    returns  (compiled re pattern, 
              dict {url param name: [converter name, converter args (str)]},
              list of (variable name, converter name, converter args name))

    If anonymous=True is set, regexp will be compiled without names of variables.
    This is handy for example, if you want to dump an url map to JSON.
    '''
    # needed for reverse url building (or not needed?)
    builder_params = []
    # found url params and their converters
    url_params = {}
    result = r'^'
    parts = _split_pattern.split(url_template)
    for i, part in enumerate(parts):
        is_url_pattern = _static_url_pattern.match(part)
        if is_url_pattern:
            #NOTE: right order:
            #      - make part str if it was unicode
            #      - urlquote part
            #      - escape all specific for re chars in part
            result += re.escape(urlquote(part))
            builder_params.append(part)
            continue
        is_converter = _converter_pattern.match(part)
        if is_converter:
            groups = is_converter.groupdict()
            converter_name = groups['converter'] or default_converter
            conv_object = init_converter(converters[converter_name],
                                         groups['args'])
            variable = groups['variable']
            builder_params.append((variable, conv_object))
            url_params[variable] = conv_object
            if anonymous:
                result += conv_object.regex
            else:
                result += '(?P<{}>{})'.format(variable, conv_object.regex)
            continue
        raise ValueError('Incorrect url template {!r}'.format(url_template))
    if match_whole_str:
        result += '$'
    return re.compile(result), url_params, builder_params