feat(v2): add validated runtime and metadata store
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import secrets
|
||||
import threading
|
||||
import time
|
||||
from uuid import UUID
|
||||
|
||||
_lock = threading.Lock()
|
||||
_last_millisecond = -1
|
||||
_last_random = 0
|
||||
_RANDOM_MASK = (1 << 74) - 1
|
||||
|
||||
|
||||
def new_uuid7() -> UUID:
|
||||
"""Return a process-monotonic RFC 9562 UUIDv7."""
|
||||
global _last_millisecond, _last_random
|
||||
with _lock:
|
||||
millisecond = time.time_ns() // 1_000_000
|
||||
if millisecond > _last_millisecond:
|
||||
_last_millisecond = millisecond
|
||||
_last_random = secrets.randbits(74)
|
||||
else:
|
||||
millisecond = _last_millisecond
|
||||
_last_random = (_last_random + 1) & _RANDOM_MASK
|
||||
if _last_random == 0:
|
||||
_last_millisecond += 1
|
||||
millisecond = _last_millisecond
|
||||
random_a = (_last_random >> 62) & 0xFFF
|
||||
random_b = _last_random & ((1 << 62) - 1)
|
||||
integer = (millisecond & ((1 << 48) - 1)) << 80
|
||||
integer |= 0x7 << 76
|
||||
integer |= random_a << 64
|
||||
integer |= 0b10 << 62
|
||||
integer |= random_b
|
||||
return UUID(int=integer)
|
||||
Reference in New Issue
Block a user