| 12345678910111213141516171819202122232425262728293031323334353637383940 | # SPDX-License-Identifier: AGPL-3.0-or-laterimport threadingfrom typing import Optionalfrom . import shared_abstractclass SimpleSharedDict(shared_abstract.SharedDict):    __slots__ = ('d',)    def __init__(self):        self.d = {}    def get_int(self, key: str) -> Optional[int]:        return self.d.get(key, None)    def set_int(self, key: str, value: int):        self.d[key] = value    def get_str(self, key: str) -> Optional[str]:        return self.d.get(key, None)    def set_str(self, key: str, value: str):        self.d[key] = valuedef schedule(delay, func, *args):    def call_later():        t = threading.Timer(delay, wrapper)        t.daemon = True        t.start()    def wrapper():        call_later()        func(*args)    call_later()    return True
 |