import random from functools import lru_cache from synthesis.random import rnd from synthesis.segment.content_rectangle import ContentRectangle class RandomContentRectangle(ContentRectangle): def __init__(self, x1, y1, x2, y2, content=None, seed=None): super().__init__(x1, y1, x2, y2, content) self.seed = seed or get_random_seed() self.random = random.Random(self.seed) @lru_cache(maxsize=None) def get_random_seed(): return rnd.randint(0, 2**32 - 1)