docs: def set(self, section, key, value):
          ''' Set the value for a key in the given section. It will check the
              type of the value if it is available. If the value is not from
              the given type it will be transformed to the type.
              An exception will be thrown if there is a problem with the
              conversion.
  
              @param section: the section of the key
              @param key: the key where to store the valu
              @param value: the value to store
              @exception: If there is a problem with the conversation of the
                      value type.
          '''
          value_type = str
          if self.has_option(section, key):
              descr, value_type, default = self.get_description(section, key)
  
          if value_type != type(value):
              if value_type == bool:
                  if ((type(value) in string_types and
                          value.lower() in ('true', 't')) or
                          (type(value) == int and value > 0)):
                      value = True
                  elif ((type(value) in string_types and
                          value.lower() in ('false', 'f')) or
                          (type(value) == int and value == 0)):
                      value = False
                  else:
                      raise AppConfigValueException('Could not convert '
                              'boolean type: {0}'.format(value))
              else:
                  value = value_type(value)
  
          if not self.has_section(section):
              self.add_section(section)
  
          ConfigParser.set(self, section, key, str(value))