Source code for president.repeater

# This file is placed in the Public Domain.
#
# pylint: disable=C,I,R,W0212,W0718,E0402


"rrepeater"


import threading
import time


from .object import Object
from .thread import launch


[docs]class Timer: def __init__(self, sleep, func, *args, thrname=None): super().__init__() self.args = args self.func = func self.sleep = sleep self.name = thrname or str(self.func).split()[2] self.state = Object self.timer = None
[docs] def run(self) -> None: self.state.latest = time.time() launch(self.func, *self.args)
[docs] def start(self) -> None: timer = threading.Timer(self.sleep, self.run) timer.name = self.name timer.daemon = True timer.sleep = self.sleep timer.state = self.state timer.state.starttime = time.time() timer.state.latest = time.time() timer.func = self.func timer.start() self.timer = timer
[docs] def stop(self) -> None: if self.timer: self.timer.cancel()
[docs]class Repeater(Timer):
[docs] def run(self): thr = launch(self.start) super().run() return thr