'Parameters
func: callable
The function to decorate
cachedir: string
The path of the base directory to use as a data store
ignore: list or None
List of variable names to ignore.
mmap_mode: {None, \'r+\', \'r\', \'w+\', \'c\'}, optional
The memmapping mode used when loading from cache
numpy arrays. See numpy.load for the meaning of the
arguments.
compress : boolean, or integer
Whether to zip the stored data on disk. If an integer is
given, it should be between 1 and 9, and sets the amount
of compression. Note that compressed arrays cannot be
read by memmapping.
verbose: int, optional
Verbosity flag, controls the debug messages that are issued
as functions are evaluated. The higher, the more verbose
timestamp: float, optional
The reference time from which times in tracing messages
are reported.'

def __init__(self, func, cachedir, ignore=None, mmap_mode=None, compress=False, verbose=1, timestamp=None):

    Logger.__init__(self)
    self.mmap_mode = mmap_mode
    self.func = func
    if (ignore is None):
        ignore = []
    self.ignore = ignore
    self._verbose = verbose
    self.cachedir = cachedir
    self.compress = compress
    if (compress and (self.mmap_mode is not None)):
        warnings.warn('Compressed    results    cannot    be    memmapped', stacklevel=2)
    if (timestamp is None):
        timestamp = time.time()
    self.timestamp = timestamp
    mkdirp(self.cachedir)
    try:
        functools.update_wrapper(self, func)
    except:
        "    Objects    like    ufunc    don't    like    that    "
    if inspect.isfunction(func):
        doc = pydoc.TextDoc().document(func)
        doc = doc.replace('\n', '\n\n', 1)
        doc = re.sub('\x08.', '', doc)
    else:
        doc = func.__doc__
    self.__doc__ = ('Memoized    version    of    %s' % doc)
