projects
/
python_utils.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Cleanup
[python_utils.git]
/
id_generator.py
diff --git
a/id_generator.py
b/id_generator.py
index 4e650dca9f13662a1ace7013d4f00bcd3a0082e2..dc2ac9cc810a4e1d588d60231371e873d9d31966 100644
(file)
--- a/
id_generator.py
+++ b/
id_generator.py
@@
-1,5
+1,8
@@
#!/usr/bin/env python3
#!/usr/bin/env python3
+"""A helper class for generating thread safe monotonically increasing
+id numbers."""
+
import itertools
import logging
import itertools
import logging
@@
-10,7
+13,7
@@
logger = logging.getLogger(__name__)
generators = {}
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.
"""
Returns a thread safe monotonically increasing id suitable for use
as a globally unique identifier.
@@
-20,14
+23,19
@@
def get(name: str) -> int:
0
>>> id_generator.get('student_id')
1
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:
"""
if name not in generators:
- generators[name] = itertools.count()
+ generators[name] = itertools.count(
start, 1
)
x = next(generators[name])
x = next(generators[name])
- logger.debug(
f"Generated next id {x}"
)
+ logger.debug(
"Generated next id %d", x
)
return x
if __name__ == '__main__':
import doctest
return x
if __name__ == '__main__':
import doctest
+
doctest.testmod()
doctest.testmod()