docs: def storage(self, sf=None, args=None):
          """Common storage interface with :class:`~flask_pluginkit.LocalStorage` or :class:`~flask_pluginkit.RedisStorage`,
          sf is a custom storage interface classes, args is its parameters, highest priority.
  
          :param sf: class based :class:`~flask_pluginkit.BaseStorage`
  
          :param args: class init args
  
          :returns: class instance
          """
          from .utils import BaseStorage, LocalStorage, RedisStorage
          if sf and isinstance(sf, BaseStorage):
              return sf(args) if args else sf()
          if self.s3 == "local":
              return LocalStorage()
          elif self.s3 == "redis":
              return RedisStorage(self.s3_redis)