Python persistant cache for non-pythonic objects
It seems rather inefficient to reload the cache file on every cache miss. The last part of wrapper() saves the file whenever the cache is updated, so the cache and file should always be in synch.  Loading the file could be moved into outer().