docs: def append(self, symbol, data, metadata=None, prune_previous_version=True, upsert=True, **kwargs):
          """
          Append 'data' under the specified 'symbol' name to this library.
          The exact meaning of 'append' is left up to the underlying store implementation.
  
          Parameters
          ----------
          symbol : `str`
              symbol name for the item
          data :
              to be persisted
          metadata : `dict`
              an optional dictionary of metadata to persist along with the symbol.
          prune_previous_version : `bool`
              Removes previous (non-snapshotted) versions from the database.
              Default: True
          upsert : `bool`
              Write 'data' if no previous version exists.
          """
          self._arctic_lib.check_quota()
          version = {'_id': bson.ObjectId()}
          version['arctic_version'] = ARCTIC_VERSION_NUMERICAL
          version['symbol'] = symbol
          spec = {'symbol': symbol}
          previous_version = self._versions.find_one(spec,
                                                     sort=[('version', pymongo.DESCENDING)])
  
          if len(data) == 0 and previous_version is not None:
              return VersionedItem(symbol=symbol, library=self._arctic_lib.get_name(), version=previous_version['version'],
                                   metadata=version.pop('metadata', None), data=None,
                                   host=self._arctic_lib.arctic.mongo_host)
  
          if upsert and previous_version is None:
              return self.write(symbol=symbol, data=data, prune_previous_version=prune_previous_version, metadata=metadata)
  
          assert previous_version is not None
          dirty_append = False
  
          # Take a version number for this append.
          # If the version numbers of this and the previous version aren't sequential,
          # then we've either had a failed append in the past,
          # we're in the midst of a concurrent update, we've deleted a version in-between
          # or are somehow 'forking' history
          next_ver = self._version_nums.find_one_and_update({'symbol': symbol, },
                                                            {'$inc': {'version': 1}},
                                                            upsert=False, new=True)['version']
  
          # This is a very important check, do not remove/modify as it is a guard-dog preventing potential data corruption
          if next_ver != previous_version['version'] + 1:
              dirty_append = True
              logger.debug('''version_nums is out of sync with previous version document.
              This probably means that either a version document write has previously failed, or the previous version has been deleted.''')
  
          # if the symbol has previously been deleted then overwrite
          previous_metadata = previous_version.get('metadata', None)
          if upsert and previous_metadata is not None and previous_metadata.get('deleted', False) is True:
              return self.write(symbol=symbol, data=data, prune_previous_version=prune_previous_version,
                                metadata=metadata)
  
          handler = self._read_handler(previous_version, symbol)
  
          if metadata is not None:
              version['metadata'] = metadata
          elif 'metadata' in previous_version:
              version['metadata'] = previous_version['metadata']
  
          if handler and hasattr(handler, 'append') and callable(handler.append):
              handler.append(self._arctic_lib, version, symbol, data,
                             previous_version, dirty_append=dirty_append, **kwargs)
          else:
              raise Exception("Append not implemented for handler %s" % handler)
  
          if prune_previous_version and previous_version:
              # Does not allow prune to remove the base of the new version
              self._prune_previous_versions(symbol, keep_version=version.get('base_version_id'),
                                            new_version_shas=version.get(FW_POINTERS_REFS_KEY))
  
          # Insert the new version into the version DB
          version['version'] = next_ver
          self._insert_version(version)
  
          return VersionedItem(symbol=symbol, library=self._arctic_lib.get_name(), version=version['version'],
                               metadata=version.pop('metadata', None), data=None,
                               host=self._arctic_lib.arctic.mongo_host)