from asyncio import sleep from random import uniform from rich import print from rich.text import Text from .static import INFO def retry(function): async def inner(self, *args, **kwargs): if result := await function(self, *args, **kwargs): return result for _ in range(self.retry): if result := await function(self, *args, **kwargs): return result return result return inner def logging(log, text, style=INFO): string = Text(text, style=style) if log: log.write(string, animate=True, scroll_end=True, ) else: print(string) async def sleep_time( min_time: int | float = 0.5, max_time: int | float = 1.5, ): await sleep(uniform(min_time, max_time))