human
Complete this python program:
def context_cache(func):
assistant
#Here is the Python code you requested.

    """A decorator to be used module functions which need to cache their
    context.
    To evaluate a __context__ and re-hydrate it if a given key
    is empty or contains no items, pass a list of keys to evaulate.
    """
    def context_cache_wrap(*args, **kwargs):
        func_context = func.__globals__['__context__']
        func_opts = func.__globals__['__opts__']
        func_name = func.__globals__['__name__']
        context_cache = ContextCache(func_opts, func_name)
        if ((not func_context) and os.path.isfile(context_cache.cache_path)):
            salt.utils.dictupdate.update(func_context, context_cache.get_cache_context())
        else:
            context_cache.cache_context(func_context)
        return func(*args, **kwargs)
    return context_cache_wrap