code: def append_update_buffer(self, agent_id, key_list=None, batch_size=None, training_length=None):
          
          if key_list is None:
              key_list = self[agent_id].keys()
          if not self[agent_id].check_length(key_list):
              raise BufferException("The length of the fields {0} for agent {1} where not of same length"
                                    .format(key_list, agent_id))
          for field_key in key_list:
              self.update_buffer[field_key].extend(
                  self[agent_id][field_key].get_batch(batch_size=batch_size, training_length=training_length)
              )
docs: Appends the buffer of an agent to the update buffer.
          :param agent_id: The id of the agent which data will be appended
          :param key_list: The fields that must be added. If None: all fields will be appended.
          :param batch_size: The number of elements that must be appended. If None: All of them will be.
          :param training_length: The length of the samples that must be appended. If None: only takes one element.