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: Constructs the IntervalTrigger.
  
  Args:
    interval: The triggering interval.
    fn: callable with no arguments that gets triggered.
    start: An initial value for the trigger.
docstr_tok: ["Constructs","the","IntervalTrigger",".","Args",":","interval",":","The","triggering","interval",".","fn",":","callable","with","no","arguments","that","gets","triggered",".","start",":","An","initial","value","for","the","trigger","."]
code: def __init__(
      self, interval: int, fn: Callable[[], None], start: int = 0
  ):
      """Constructs the IntervalTrigger.
  
      Args:
        interval: The triggering interval.
        fn: callable with no arguments that gets triggered.
        start: An initial value for the trigger.
      """
      self._interval = interval
      self._original_start_value = start
      self._last_trigger_value = start
      self._fn = fn
  
      if self._interval <= 0:
          logging.info(
              "IntervalTrigger will not be triggered because interval is set to %d",
              self._interval,
          )
  
imports: from typing import Callable
  from absl import logging
label_desc: Use image node_id 1 to create a new IntervalTrigger object from inherited base classes: object with example: obj = IntervalTrigger(interval, fn, start)