def coerce(self, value):
        """Convert text values into boolean values.

        True values are (case insensitive): 'yes', 'true', '1'. False values
        are (case insensitive): 'no', 'false', '0'.

        Args:
            value (str or bool): The value to coerce.

        Raises:
            TypeError: If the value is not a bool or string.
            ValueError: If the value is not bool or an acceptable value.

        Returns:
            bool: The True/False value represented.
        """
        if isinstance(value, bool):

            return value

        if not hasattr(value, 'lower'):

            raise TypeError('Value is not bool or string.')

        if value.lower() in ('yes', 'true', '1'):

            return True

        if value.lower() in ('no', 'false', '0'):

            return False

        raise ValueError('Could not coerce {0} to a bool.'.format(value))