2022-04-19 05:45:41 +00:00
|
|
|
"""Helpers to generate ulids."""
|
2022-05-14 19:12:08 +00:00
|
|
|
from __future__ import annotations
|
2022-04-19 05:45:41 +00:00
|
|
|
|
|
|
|
import time
|
|
|
|
|
2023-03-09 00:51:45 +00:00
|
|
|
from ulid_transform import bytes_to_ulid, ulid_at_time, ulid_hex, ulid_to_bytes
|
2022-04-19 05:45:41 +00:00
|
|
|
|
2023-03-09 00:51:45 +00:00
|
|
|
__all__ = ["ulid", "ulid_hex", "ulid_at_time", "ulid_to_bytes", "bytes_to_ulid"]
|
2022-05-02 04:44:54 +00:00
|
|
|
|
|
|
|
|
2022-05-14 19:12:08 +00:00
|
|
|
def ulid(timestamp: float | None = None) -> str:
|
2022-05-02 04:44:54 +00:00
|
|
|
"""Generate a ULID.
|
2022-04-19 05:45:41 +00:00
|
|
|
|
|
|
|
This ulid should not be used for cryptographically secure
|
|
|
|
operations.
|
|
|
|
|
|
|
|
01AN4Z07BY 79KA1307SR9X4MV3
|
|
|
|
|----------| |----------------|
|
|
|
|
Timestamp Randomness
|
|
|
|
48bits 80bits
|
|
|
|
|
2022-05-02 04:44:54 +00:00
|
|
|
This string can be loaded directly with https://github.com/ahawker/ulid
|
2022-04-19 05:45:41 +00:00
|
|
|
|
2022-05-02 04:44:54 +00:00
|
|
|
import homeassistant.util.ulid as ulid_util
|
|
|
|
import ulid
|
|
|
|
ulid.parse(ulid_util.ulid())
|
2022-04-19 05:45:41 +00:00
|
|
|
"""
|
2023-03-01 02:09:47 +00:00
|
|
|
return ulid_at_time(timestamp or time.time())
|