Make rate_limited use cvs.
[python_utils.git] / id_generator.py
index 4e650dca9f13662a1ace7013d4f00bcd3a0082e2..bcd3a833270ffcd8f69f9c53f5a036d2c711566e 100644 (file)
@@ -10,7 +10,7 @@ logger = logging.getLogger(__name__)
 generators = {}
 
 
-def get(name: str) -> int:
+def get(name: str, *, start=0) -> int:
     """
     Returns a thread safe monotonically increasing id suitable for use
     as a globally unique identifier.
@@ -20,9 +20,13 @@ def get(name: str) -> int:
     0
     >>> id_generator.get('student_id')
     1
+    >>> id_generator.get('employee_id', start=10000)
+    10000
+    >>> id_generator.get('employee_id', start=10000)
+    10001
     """
     if name not in generators:
-        generators[name] = itertools.count()
+        generators[name] = itertools.count(start, 1)
     x = next(generators[name])
     logger.debug(f"Generated next id {x}")
     return x