docs: def persisted(cls, seconds=0, minutes=0, hours=0, days=0, weeks=0):
          """ Cache the return of the function for given time.
  
          Default to 1 day.
          :param weeks: as name
          :param seconds: as name
          :param minutes: as name
          :param hours: as name
          :param days: as name
          :return: return of the function decorated
          """
          days += weeks * 7
          hours += days * 24
          minutes += hours * 60
          seconds += minutes * 60
  
          if seconds == 0:
              # default to 1 day
              seconds = 24 * 60 * 60
  
          def get_persisted_file(hash_number):
              folder = cls.get_persist_folder()
              if not os.path.exists(folder):
                  os.makedirs(folder)
              return os.path.join(folder, '{}.pickle'.format(hash_number))
  
          def is_expired(filename):
              if os.path.exists(filename):
                  file_age = cls.get_file_age(filename)
                  if file_age > seconds:
                      log.debug('persisted cache expired: {}'.format(filename))
                      ret = True
                  else:
                      ret = False
              else:
                  ret = True
              return ret
  
          def decorator(func):
  
              def func_wrapper(*args, **kwargs):
                  def _key_gen():
                      string = '{}-{}-{}-{}'.format(
                          func.__module__,
                          func.__name__,
                          args,
                          kwargs.items()
                      )
                      return hashlib.sha256(string.encode('utf-8')).hexdigest()
  
                  key = _key_gen()
                  persisted_file = get_persisted_file(key)
                  if is_expired(persisted_file):
                      ret = func(*args, **kwargs)
                      with open(persisted_file, 'wb') as f:
                          pickle.dump(ret, f)
                  else:
                      with open(persisted_file, 'rb') as f:
                          ret = pickle.load(f)
                  return ret
  
              return func_wrapper
  
          return decorator