docs: def get_description(self, section, key):
          ''' Get the description of a config key. If it does not exist an
              Exception will be thrown.
  
              @param section: the section where the key is stored.
              @param key:     the key to get the description for.
              @return: A tuple with three elements (description, type, default)
          '''
          if section in self.config_description:
              if key in self.config_description[section]:
                  desc, value_type, default = \
                          self.config_description[section][key]
                  return (desc, value_type, default)
              else:
                  if self.has_option(section, key):
                      # return an empty string since it is possible that a
                      # section is not initialized, this happens if a plugin
                      # that has some config values but is not initialized.
                      return "", str, ""
                  else:
                      raise AppConfigValueException('Key ({0}) does not exist '
                              'in section: {1}'.format(key, section))
          else:
              if self.has_section(section):
                  # return an empty string since it is possible that a section
                  # is not initialized, this happens if a plugin that has some
                  # config values but is not initialized.
                  return "", str, ""
              else:
                  raise AppConfigValueException('Section does not exist '
                          '[{0}]'.format(section))