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