Skip to content

Commit cc31d77

Browse files
authored
Use ulid_now instead of ulid_at_timestamp if no timestamp is passed (home-assistant#104226)
* Use ulid_now instead of ulid_at_timestamp if no timestamp is passed ulid_now is slightly faster than ulid_at_timestamp * tweak usage
1 parent 6ef194f commit cc31d77

File tree

7 files changed

+28
-17
lines changed

7 files changed

+28
-17
lines changed

homeassistant/components/assist_pipeline/pipeline.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -320,7 +320,7 @@ class Pipeline:
320320
wake_word_entity: str | None
321321
wake_word_id: str | None
322322

323-
id: str = field(default_factory=ulid_util.ulid)
323+
id: str = field(default_factory=ulid_util.ulid_now)
324324

325325
@classmethod
326326
def from_json(cls, data: dict[str, Any]) -> Pipeline:
@@ -482,7 +482,7 @@ class PipelineRun:
482482
wake_word_settings: WakeWordSettings | None = None
483483
audio_settings: AudioSettings = field(default_factory=AudioSettings)
484484

485-
id: str = field(default_factory=ulid_util.ulid)
485+
id: str = field(default_factory=ulid_util.ulid_now)
486486
stt_provider: stt.SpeechToTextEntity | stt.Provider = field(init=False, repr=False)
487487
tts_engine: str = field(init=False, repr=False)
488488
tts_options: dict | None = field(init=False, default=None)
@@ -1476,7 +1476,7 @@ async def _process_create_data(self, data: dict) -> dict:
14761476
@callback
14771477
def _get_suggested_id(self, info: dict) -> str:
14781478
"""Suggest an ID based on the config."""
1479-
return ulid_util.ulid()
1479+
return ulid_util.ulid_now()
14801480

14811481
async def _update_data(self, item: Pipeline, update_data: dict) -> Pipeline:
14821482
"""Return a new updated item."""
@@ -1664,7 +1664,7 @@ class DeviceAudioQueue:
16641664
queue: asyncio.Queue[bytes | None]
16651665
"""Queue of audio chunks (None = stop signal)"""
16661666

1667-
id: str = field(default_factory=ulid_util.ulid)
1667+
id: str = field(default_factory=ulid_util.ulid_now)
16681668
"""Unique id to ensure the correct audio queue is cleaned up in websocket API."""
16691669

16701670
overflow: bool = False

homeassistant/components/google_generative_ai_conversation/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ async def async_process(
8888
conversation_id = user_input.conversation_id
8989
messages = self.history[conversation_id]
9090
else:
91-
conversation_id = ulid.ulid()
91+
conversation_id = ulid.ulid_now()
9292
messages = []
9393

9494
try:

homeassistant/components/openai_conversation/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ async def async_process(
141141
conversation_id = user_input.conversation_id
142142
messages = self.history[conversation_id]
143143
else:
144-
conversation_id = ulid.ulid()
144+
conversation_id = ulid.ulid_now()
145145
try:
146146
prompt = self._async_generate_prompt(raw_prompt)
147147
except TemplateError as err:

homeassistant/components/thread/dataset_store.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ class DatasetEntry:
3838
tlv: str
3939

4040
created: datetime = dataclasses.field(default_factory=dt_util.utcnow)
41-
id: str = dataclasses.field(default_factory=ulid_util.ulid)
41+
id: str = dataclasses.field(default_factory=ulid_util.ulid_now)
4242

4343
@property
4444
def channel(self) -> int | None:

homeassistant/components/voip/voip.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
)
3838
from homeassistant.const import __version__
3939
from homeassistant.core import Context, HomeAssistant
40-
from homeassistant.util.ulid import ulid
40+
from homeassistant.util.ulid import ulid_now
4141

4242
from .const import CHANNELS, DOMAIN, RATE, RTP_AUDIO_SETTINGS, WIDTH
4343

@@ -219,7 +219,7 @@ async def _run_pipeline(
219219
) -> None:
220220
"""Forward audio to pipeline STT and handle TTS."""
221221
if self._session_id is None:
222-
self._session_id = ulid()
222+
self._session_id = ulid_now()
223223

224224
# Play listening tone at the start of each cycle
225225
if self.listening_tone_enabled:

homeassistant/core.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@
9191
from .util.json import JsonObjectType
9292
from .util.read_only_dict import ReadOnlyDict
9393
from .util.timeout import TimeoutManager
94-
from .util.ulid import ulid, ulid_at_time
94+
from .util.ulid import ulid_at_time, ulid_now
9595
from .util.unit_system import (
9696
_CONF_UNIT_SYSTEM_IMPERIAL,
9797
_CONF_UNIT_SYSTEM_US_CUSTOMARY,
@@ -930,7 +930,7 @@ def __init__(
930930
id: str | None = None, # pylint: disable=redefined-builtin
931931
) -> None:
932932
"""Init the context."""
933-
self.id = id or ulid()
933+
self.id = id or ulid_now()
934934
self.user_id = user_id
935935
self.parent_id = parent_id
936936
self.origin_event: Event | None = None

homeassistant/util/ulid.py

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,22 @@
11
"""Helpers to generate ulids."""
22
from __future__ import annotations
33

4-
import time
5-
6-
from ulid_transform import bytes_to_ulid, ulid_at_time, ulid_hex, ulid_to_bytes
7-
8-
__all__ = ["ulid", "ulid_hex", "ulid_at_time", "ulid_to_bytes", "bytes_to_ulid"]
4+
from ulid_transform import (
5+
bytes_to_ulid,
6+
ulid_at_time,
7+
ulid_hex,
8+
ulid_now,
9+
ulid_to_bytes,
10+
)
11+
12+
__all__ = [
13+
"ulid",
14+
"ulid_hex",
15+
"ulid_at_time",
16+
"ulid_to_bytes",
17+
"bytes_to_ulid",
18+
"ulid_now",
19+
]
920

1021

1122
def ulid(timestamp: float | None = None) -> str:
@@ -25,4 +36,4 @@ def ulid(timestamp: float | None = None) -> str:
2536
import ulid
2637
ulid.parse(ulid_util.ulid())
2738
"""
28-
return ulid_at_time(timestamp or time.time())
39+
return ulid_now() if timestamp is None else ulid_at_time(timestamp)

0 commit comments

Comments
 (0)