class_docstr: Triggers on every fixed interval.
  
  Note that as long as the >= `interval` number of steps have passed since the
  last trigger, the event gets triggered. The current value is not necessarily
  `interval` steps away from the last triggered value.
docstr: Maybe trigger the event based on the interval.
  
  Args:
    value: the value for triggering.
    force_trigger: If True, the trigger will be forced triggered unless the
      last trigger value is equal to `value`.
docstr_tok: ["Maybe","trigger","the","event","based","on","the","interval",".","Args",":","value",":","the","value","for","triggering",".","force_trigger",":","If","True",",","the","trigger","will","be","forced","triggered","unless","the","last","trigger","value","is","equal","to","`","value","`","."]
code: def __call__(self, value: int, force_trigger: bool = False) -> None:
      """Maybe trigger the event based on the interval.
  
      Args:
        value: the value for triggering.
        force_trigger: If True, the trigger will be forced triggered unless the
          last trigger value is equal to `value`.
      """
      if self._interval <= 0:
          return
  
      if (force_trigger and value != self._last_trigger_value) or (
          value >= self._last_trigger_value + self._interval
      ):
          self._last_trigger_value = value
          self._fn()
  
imports: from typing import Callable
  from absl import logging
label_desc: Use image node_id 2 for calling the IntervalTrigger obj's underlying member method code with example usage: obj.__call__(value, force_trigger) without return types