code: def persist(self, ttl=None, **kwargs):
          
          from ..container import container_map
          from ..container.persist import PersistStore
          import time
          if 'original_tok' in self.metadata:
              raise ValueError('Cannot persist a source taken from the persist '
                               'store')
          method = container_map[self.container]._persist
          store = PersistStore()
          out = method(self, path=store.getdir(self), **kwargs)
          out.description = self.description
          metadata = {'timestamp': time.time(),
                      'original_metadata': self.metadata,
                      'original_source': self.__getstate__(),
                      'original_name': self.name,
                      'original_tok': self._tok,
                      'persist_kwargs': kwargs,
                      'ttl': ttl,
                      'cat': {} if self.cat is None else self.cat.__getstate__()}
          out.metadata = metadata
          out.name = self.name
          store.add(self._tok, out)
          return out
docs: Save data from this source to local persistent storage