code: def setTimer(self, start, interval = None):
          '''
          Generate a TimerEvent on specified time
          
          :param start: offset for time from now (seconds), or datetime for a fixed time
          
          :param interval: if not None, the timer is regenerated by interval seconds.
          
          :returns: a timer handle to wait or cancel the timer
          '''
          if isinstance(start, datetime):
              timestamp = (start - datetime.fromtimestamp(0)).total_seconds()
          else:
              timestamp = self.current_time + start
          if interval is not None:
              if not (interval > 0):
                  raise ValueError('interval must be positive.')
          th = self.TimerHandle(timestamp, interval)
          self.timers.push(th, timestamp)
          return tf setTimer(self, start, interval = None):
          '''
          Generate a TimerEvent on specified time
          
          :param start: offset for time from now (seconds), or datetime for a fixed time
          
          :param interval: if not None, the timer is regenerated by interval seconds.
          
          :returns: a timer handle to wait or cancel the timer
          '''
          if isinstance(start, datetime):
              timestamp = (start - datetime.fromtimestamp(0)).total_seconds()
          else:
              timestamp = self.current_time + start
          if interval is not None:
              if not (interval > 0):
                  raise ValueError('interval must be positive.')
          th = self.TimerHandle(timestamp, interval)
          self.timers.push(th, timestamp)
          return th
docs: Generate a TimerEvent on specified time
          
          :param start: offset for time from now (seconds), or datetime for a fixed time
          
          :param interval: if not None, the timer is regenerated by interval seconds.
          
          :returns: a timer handle to wait or cancel the timer