def get_filters_from_request_params(request_params, limit_top_level=None):
    def _decode(thing):
        try:
            return urllib.unquote(thing)
        except Exception:
            return thing
    
    # super weird hack: force decoding keys because sometimes (only seen in 
    # production) django doesn't do this for us.
    filters = dict((_decode(k), v) for k, v in request_params.items())
    if limit_top_level is not None:
        filters = dict([(key, val) for key, val in filters.items() if '/' in key or key in limit_top_level])

    for system_property in ['user_id', 'closed', 'format', 'footprint',
                            'ids_only', 'use_cache', 'hsph_hack']:
        if system_property in filters:
            del filters[system_property]
    return filters
A callback to begin a GetInfoAction after arguments are parsed.
dataset/ETHPy150Open dimagi/commcare-hq/corehq/apps/cloudcare/api.py/get_filters_from_request_params--crossover with--dataset/ETHPy150Open googlearchive/git-rv/getinfo.py/GetInfoAction.callback