<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def set_value(self, value, force=False):
 """ Set the value. :param String|Integer value: The value to set. Must be in the enum list. :param Boolean force: Set the value without checking it :raises ValueError: If value name given but it isn't available :raises TypeError: If value is not String or Integer """

        if force:
            self._value = value
            return

        if value is None:
            self._value = value
            return

        if isinstance(value, six.integer_types):
            self._value = value
            return

        if isinstance(value, six.string_types):
            for v, n in self.enums.items():
                if n == value:
                    self._value = v
                    return
            raise ValueError("Unable to find value name in enum list")

        raise TypeError(
            "Value for '%s' must by of type String or Integer not '%s'" % (
                self.name,
                type(value)
            )
        )