def _cache_key_base(fun, obj, *args, **kwargs):
    """  
    Generic cache key
    """
    s_args = str(args)
    li = kwargs.items()
    li.sort()
    s_kwargs = str(li)
    return '%s%s%s%s' % (fun.func_name, str(obj.context.getPhysicalPath()),
        s_args, s_kwargs)
