docs: def get_storage(self, name='main', file_format='pickle', TTL=None):
          '''Returns a storage for the given name. The returned storage is a
          fully functioning python dictionary and is designed to be used that
          way. It is usually not necessary for the caller to load or save the
          storage manually. If the storage does not already exist, it will be
          created.
  
          .. seealso:: :class:`xbmcswift2.TimedStorage` for more details.
  
          :param name: The name  of the storage to retrieve.
          :param file_format: Choices are 'pickle', 'csv', and 'json'. Pickle is
                              recommended as it supports python objects.
  
                              .. note:: If a storage already exists for the given
                                        name, the file_format parameter is
                                        ignored. The format will be determined by
                                        the existing storage file.
          :param TTL: The time to live for storage items specified in minutes or None
                      for no expiration. Since storage items aren't expired until a
                      storage is loaded form disk, it is possible to call
                      get_storage() with a different TTL than when the storage was
                      created. The currently specified TTL is always honored.
          '''
  
          if not hasattr(self, '_unsynced_storages'):
              self._unsynced_storages = {}
          filename = os.path.join(self.storage_path, name)
          try:
              storage = self._unsynced_storages[filename]
              log.debug('Loaded storage "%s" from memory', name)
          except KeyError:
              if TTL:
                  TTL = timedelta(minutes=TTL)
  
              try:
                  storage = TimedStorage(filename, file_format, TTL)
              except ValueError:
                  # Thrown when the storage file is corrupted and can't be read.
                  # Prompt user to delete storage.
                  choices = ['Clear storage', 'Cancel']
                  ret = xbmcgui.Dialog().select('A storage file is corrupted. It'
                                                ' is recommended to clear it.',
                                                choices)
                  if ret == 0:
                      os.remove(filename)
                      storage = TimedStorage(filename, file_format, TTL)
                  else:
                      raise Exception('Corrupted storage file at %s' % filename)
  
              self._unsynced_storages[filename] = storage
              log.debug('Loaded storage "%s" from disk', name)
          return storage