code: def get(self, section, option, default=NoDefault):
          
          section = self._check_section_option(section, option)
  
          if not self.has_section(section):
              if default is NoDefault:
                  raise cp.NoSectionError(section)
              else:
                  self.add_section(section)
          
          if not self.has_option(section, option):
              if default is NoDefault:
                  raise cp.NoOptionError(option, section)
              else:
                  self.set(section, option, default)
                  return default
              
          value = cp.ConfigParser.get(self, section, option, raw=self.raw)
          # Use type of default_value to parse value correctly
          default_value = self.get_default(section, option)
          if isinstance(default_value, bool):
              value = ast.literal_eval(value)
          elif isinstance(default_value, float):
              value = float(value)
          elif isinstance(default_value, int):
              value = int(value)
          elif is_text_string(default_value):
              if PY2:
                  try:
                      value = value.decode('utf-8')
                      try:
                          # Some str config values expect to be eval after decoding
                          new_value = ast.literal_eval(value)
                          if is_text_string(new_value):
                              value = new_value
                      except (SyntaxError, ValueError):
                          pass
                  except (UnicodeEncodeError, UnicodeDecodeError):
                      pass
          else:
              try:
                  # lists, tuples, ...
                  value = ast.literal_eval(value)
              except (SyntaxError, ValueError):
                  pass
          return value
docs: Get an option
          section=None: attribute a default section name
          default: default value (if not specified, an exception
          will be raised if option doesn't exist)