code: def unpack_single_value(self, data, cimtype):
          
          if cimtype == 'string':
              return data
  
          if cimtype == 'boolean':
              return self.unpack_boolean(data)
  
          if cimtype is None or NUMERIC_CIMTYPE_PATTERN.match(cimtype):
              return self.unpack_numeric(data, cimtype)
  
          if cimtype == 'datetime':
              return self.unpack_datetime(data)
  
          if cimtype == 'char16':
              return self.unpack_char16(data)
  
          # Note that 'reference' is not allowed for this function.
          raise CIMXMLParseError(
              _format("Invalid CIM type found: {0!A}", cimtype),
              conn_id=self.conn_id)
docs: Unpack a single (non-array) CIM typed string value of any CIM type
          except 'reference' and return it as a CIM data type object, or Python
          int/long/float, or None.
  
          data (unicode string): CIM-XML string value, or None (in which case
            None is returned).
  
          cimtype (string): CIM data type name (e.g. 'datetime') except
            'reference', or None (in which case a numeric value is assumed).