diff options
Diffstat (limited to '.venv/lib/python3.12/site-packages/pdf2image/generators.py')
-rw-r--r-- | .venv/lib/python3.12/site-packages/pdf2image/generators.py | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/pdf2image/generators.py b/.venv/lib/python3.12/site-packages/pdf2image/generators.py new file mode 100644 index 00000000..5d79a3ce --- /dev/null +++ b/.venv/lib/python3.12/site-packages/pdf2image/generators.py @@ -0,0 +1,46 @@ +""" + pdf2image filename generators +""" + +import uuid +import threading + + +class ThreadSafeGenerator(object): + """Wrapper around generator that protects concurrent access""" + + def __init__(self, gen): + self.gen = gen + self.lock = threading.Lock() + + def __iter__(self): + return self + + def __next__(self): + with self.lock: + return next(self.gen) + + +def threadsafe(f): + """Decorator to make generator threadsafe. Fix #125""" + + def g(*a, **kw): + return ThreadSafeGenerator(f(*a, **kw)) + + return g + + +@threadsafe +def uuid_generator(): + """Returns a UUID4""" + while True: + yield str(uuid.uuid4()) + + +@threadsafe +def counter_generator(prefix="", suffix="", padding_goal=4): + """Returns a joined prefix, iteration number, and suffix""" + i = 0 + while True: + i += 1 + yield str(prefix) + str(i).zfill(padding_goal) + str(suffix) |