File size: 469 Bytes
7e55e53
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
"""Compact, monotonic lease-id generation without UUID overhead."""

import threading

_lock = threading.Lock()
_counter: int = 0


def next_id() -> int:
    """Return a process-local monotonically increasing integer id."""
    global _counter
    with _lock:
        _counter += 1
        return _counter


def next_hex(length: int = 12) -> str:
    """Return a zero-padded hex string derived from the monotonic counter."""
    return format(next_id(), f"0{length}x")