code: def deserialize_basic(self, attr, data_type):
          
          # If we're here, data is supposed to be a basic type.
          # If it's still an XML node, take the text
          if isinstance(attr, ET.Element):
              attr = attr.text
              if not attr:
                  if data_type == "str":
                      # None or '', node <a/> is empty string.
                      return ''
                  else:
                      # None or '', node <a/> with a strong type is None.
                      # Don't try to model "empty bool" or "empty int"
                      return None
  
          if data_type == 'bool':
              if attr in [True, False, 1, 0]:
                  return bool(attr)
              elif isinstance(attr, basestring):
                  if attr.lower() in ['true', '1']:
                      return True
                  elif attr.lower() in ['false', '0']:
                      return False
              raise TypeError("Invalid boolean value: {}".format(attr))
  
          if data_type == 'str':
              return self.deserialize_unicode(attr)
          return eval(data_type)(attr)
docs: Deserialize baisc builtin data type from string.
          Will attempt to convert to str, int, float and bool.
          This function will also accept '1', '0', 'true' and 'false' as
          valid bool values.
  
          :param str attr: response string to be deserialized.
          :param str data_type: deserialization data type.
          :rtype: str, int, float or bool
          :raises: TypeError if string format is not valid.