docs: 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)
              )
          )