Get the value of a key in the given section. It will automatically
            translate the paramter type if the parameter has a type specified
            with the description.

            @param section: the section where the key can be found.
            @param key: the key the value is stored under.
            @return the value as a string or the specified type.
            @exception: if the type is specified and the value could not be
                    translated to the given type.

def get(self, section, key):
        ''' Get the value of a key in the given section. It will automatically
            translate the paramter type if the parameter has a type specified
            with the description.

            @param section: the section where the key can be found.
            @param key: the key the value is stored under.
            @return the value as a string or the specified type.
            @exception: if the type is specified and the value could not be
                    translated to the given type.
        '''
        section = section.lower()
        key = key.lower()
        descr, value_type, default = self.get_description(section, key)
        value = ConfigParser.get(self, section, key)
        if value_type == bool:
            if PY2:
                if value.lower() not in self._boolean_states:
                    raise AppConfigValueException('Not a boolean: {0}'.
                            format(value))
                return self._boolean_states[value.lower()]
            else:
                try:
                    return self._convert_to_boolean(value)
                except ValueError:
                    raise AppConfigValueException('Not a boolean: {0}'.
                            format(value))

        return value_type(value)