code: def mergeSingle(self, key, value, mergeType=""):
      givenType = determineEdt(value)
  
      # if we've seen this key before, determine the type
      if self.containsKey(key):
          goalType = self.cppPool.__keyType__(key)
  
      # if we haven't seen this type before, we will have to guess its type
      else:
          if givenType in (Edt.REAL, Edt.STRING, Edt.VECTOR_REAL):
              goalType = givenType
  
          # some exceptions
          elif givenType == Edt.INTEGER:
              goalType = Edt(Edt.REAL)
          elif givenType == Edt.VECTOR_INTEGER:
              goalType = Edt(Edt.VECTOR_REAL)
          elif givenType == Edt.NUMPY_FLOAT:
              goalType = Edt(Edt.REAL)
  
          else:
              raise TypeError(
                  "Pool.mergeSingle does not support the type: "
                  + str(givenType)
              )
  
      # try to convert the type
      try:
          convertedVal = convertData(value, goalType)
      except TypeError:
          raise KeyError(
              "Pool.mergeSingle could not convert given data to the type already in the Pool under the key '"
              + key
              + "'"
          )
  
      return self.cppPool.__mergeSingle__(
          key, str(goalType), convertedVal, mergeType
      )
  
imports: import numpy
  from six import iteritems
  from .None import _essentia
label_desc: Use image node_id 5 for calling the Pool obj's underlying member method code with example usage: obj.mergeSingle(key, value, mergeType) and returns: self