code: def _update_datasource(self, source, data):
          
          if not self.document:
              return
  
          data = self._postprocess_data(data)
          empty = all(len(v) == 0 for v in data.values())
          if (self.streaming and self.streaming[0].data is self.current_frame.data
              and self._stream_data and not empty):
              stream = self.streaming[0]
              if stream._triggering:
                  data = {k: v[-stream._chunk_length:] for k, v in data.items()}
                  source.stream(data, stream.length)
              return
  
          if cds_column_replace(source, data):
              source.data = data
          else:
              source.data.update(data)
docs: Update datasource with data for a new frame.