Rename WakeWord.ww_id to WakeWord.id (#100903)

* Rename WakeWord.ww_id to WakeWord.wake_word_id

* Revert unrelated changes

* Rename to id

* Correct rebase
This commit is contained in:
Erik Montnemery 2023-09-26 19:12:16 +02:00 committed by GitHub
parent 074eb966dd
commit 734c4e8e32
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 21 additions and 22 deletions

View File

@ -6,7 +6,7 @@ from dataclasses import dataclass
class WakeWord: class WakeWord:
"""Wake word model.""" """Wake word model."""
ww_id: str id: str
name: str name: str
@ -14,7 +14,7 @@ class WakeWord:
class DetectionResult: class DetectionResult:
"""Result of wake word detection.""" """Result of wake word detection."""
ww_id: str wake_word_id: str
"""Id of detected wake word""" """Id of detected wake word"""
timestamp: int | None timestamp: int | None

View File

@ -46,8 +46,7 @@ class WyomingWakeWordProvider(wake_word.WakeWordDetectionEntity):
wake_service = service.info.wake[0] wake_service = service.info.wake[0]
self._supported_wake_words = [ self._supported_wake_words = [
wake_word.WakeWord(ww_id=ww.name, name=ww.name) wake_word.WakeWord(id=ww.name, name=ww.name) for ww in wake_service.models
for ww in wake_service.models
] ]
self._attr_name = wake_service.name self._attr_name = wake_service.name
self._attr_unique_id = f"{config_entry.entry_id}-wake_word" self._attr_unique_id = f"{config_entry.entry_id}-wake_word"
@ -111,7 +110,7 @@ class WyomingWakeWordProvider(wake_word.WakeWordDetectionEntity):
queued_audio = [audio_task.result()] queued_audio = [audio_task.result()]
return wake_word.DetectionResult( return wake_word.DetectionResult(
ww_id=detection.name, wake_word_id=detection.name,
timestamp=detection.timestamp, timestamp=detection.timestamp,
queued_audio=queued_audio, queued_audio=queued_audio,
) )

View File

@ -184,18 +184,18 @@ class MockWakeWordEntity(wake_word.WakeWordDetectionEntity):
@property @property
def supported_wake_words(self) -> list[wake_word.WakeWord]: def supported_wake_words(self) -> list[wake_word.WakeWord]:
"""Return a list of supported wake words.""" """Return a list of supported wake words."""
return [wake_word.WakeWord(ww_id="test_ww", name="Test Wake Word")] return [wake_word.WakeWord(id="test_ww", name="Test Wake Word")]
async def _async_process_audio_stream( async def _async_process_audio_stream(
self, stream: AsyncIterable[tuple[bytes, int]], wake_word_id: str | None self, stream: AsyncIterable[tuple[bytes, int]], wake_word_id: str | None
) -> wake_word.DetectionResult | None: ) -> wake_word.DetectionResult | None:
"""Try to detect wake word(s) in an audio stream with timestamps.""" """Try to detect wake word(s) in an audio stream with timestamps."""
if wake_word_id is None: if wake_word_id is None:
wake_word_id = self.supported_wake_words[0].ww_id wake_word_id = self.supported_wake_words[0].id
async for chunk, timestamp in stream: async for chunk, timestamp in stream:
if chunk.startswith(b"wake word"): if chunk.startswith(b"wake word"):
return wake_word.DetectionResult( return wake_word.DetectionResult(
ww_id=wake_word_id, wake_word_id=wake_word_id,
timestamp=timestamp, timestamp=timestamp,
queued_audio=[(b"queued audio", 0)], queued_audio=[(b"queued audio", 0)],
) )

View File

@ -292,7 +292,7 @@
'data': dict({ 'data': dict({
'wake_word_output': dict({ 'wake_word_output': dict({
'timestamp': 2000, 'timestamp': 2000,
'ww_id': 'test_ww', 'wake_word_id': 'test_ww',
}), }),
}), }),
'type': <PipelineEventType.WAKE_WORD_END: 'wake_word-end'>, 'type': <PipelineEventType.WAKE_WORD_END: 'wake_word-end'>,

View File

@ -281,7 +281,7 @@
'wake_word_output': dict({ 'wake_word_output': dict({
'queued_audio': None, 'queued_audio': None,
'timestamp': 1000, 'timestamp': 1000,
'ww_id': 'test_ww', 'wake_word_id': 'test_ww',
}), }),
}) })
# --- # ---
@ -379,7 +379,7 @@
dict({ dict({
'wake_word_output': dict({ 'wake_word_output': dict({
'timestamp': 0, 'timestamp': 0,
'ww_id': 'test_ww', 'wake_word_id': 'test_ww',
}), }),
}) })
# --- # ---

View File

@ -41,8 +41,8 @@ class MockProviderEntity(wake_word.WakeWordDetectionEntity):
def supported_wake_words(self) -> list[wake_word.WakeWord]: def supported_wake_words(self) -> list[wake_word.WakeWord]:
"""Return a list of supported wake words.""" """Return a list of supported wake words."""
return [ return [
wake_word.WakeWord(ww_id="test_ww", name="Test Wake Word"), wake_word.WakeWord(id="test_ww", name="Test Wake Word"),
wake_word.WakeWord(ww_id="test_ww_2", name="Test Wake Word 2"), wake_word.WakeWord(id="test_ww_2", name="Test Wake Word 2"),
] ]
async def _async_process_audio_stream( async def _async_process_audio_stream(
@ -50,12 +50,12 @@ class MockProviderEntity(wake_word.WakeWordDetectionEntity):
) -> wake_word.DetectionResult | None: ) -> wake_word.DetectionResult | None:
"""Try to detect wake word(s) in an audio stream with timestamps.""" """Try to detect wake word(s) in an audio stream with timestamps."""
if wake_word_id is None: if wake_word_id is None:
wake_word_id = self.supported_wake_words[0].ww_id wake_word_id = self.supported_wake_words[0].id
async for _chunk, timestamp in stream: async for _chunk, timestamp in stream:
if timestamp >= 2000: if timestamp >= 2000:
return wake_word.DetectionResult( return wake_word.DetectionResult(
ww_id=wake_word_id, timestamp=timestamp wake_word_id=wake_word_id, timestamp=timestamp
) )
# Not detected # Not detected
@ -157,7 +157,7 @@ async def test_config_entry_unload(
@freeze_time("2023-06-22 10:30:00+00:00") @freeze_time("2023-06-22 10:30:00+00:00")
@pytest.mark.parametrize( @pytest.mark.parametrize(
("ww_id", "expected_ww"), ("wake_word_id", "expected_ww"),
[ [
(None, "test_ww"), (None, "test_ww"),
("test_ww_2", "test_ww_2"), ("test_ww_2", "test_ww_2"),
@ -167,7 +167,7 @@ async def test_detected_entity(
hass: HomeAssistant, hass: HomeAssistant,
tmp_path: Path, tmp_path: Path,
setup: MockProviderEntity, setup: MockProviderEntity,
ww_id: str | None, wake_word_id: str | None,
expected_ww: str, expected_ww: str,
) -> None: ) -> None:
"""Test successful detection through entity.""" """Test successful detection through entity."""
@ -181,7 +181,7 @@ async def test_detected_entity(
# Need 2 seconds to trigger # Need 2 seconds to trigger
state = setup.state state = setup.state
assert state is None assert state is None
result = await setup.async_process_audio_stream(three_second_stream(), ww_id) result = await setup.async_process_audio_stream(three_second_stream(), wake_word_id)
assert result == wake_word.DetectionResult(expected_ww, 2048) assert result == wake_word.DetectionResult(expected_ww, 2048)
assert state != setup.state assert state != setup.state
@ -283,7 +283,7 @@ async def test_list_wake_words(
assert msg["success"] assert msg["success"]
assert msg["result"] == { assert msg["result"] == {
"wake_words": [ "wake_words": [
{"ww_id": "test_ww", "name": "Test Wake Word"}, {"id": "test_ww", "name": "Test Wake Word"},
{"ww_id": "test_ww_2", "name": "Test Wake Word 2"}, {"id": "test_ww_2", "name": "Test Wake Word 2"},
] ]
} }

View File

@ -8,6 +8,6 @@
), ),
]), ]),
'timestamp': 0, 'timestamp': 0,
'ww_id': 'Test Model', 'wake_word_id': 'Test Model',
}) })
# --- # ---

View File

@ -25,7 +25,7 @@ async def test_support(hass: HomeAssistant, init_wyoming_wake_word) -> None:
assert entity is not None assert entity is not None
assert entity.supported_wake_words == [ assert entity.supported_wake_words == [
wake_word.WakeWord(ww_id="Test Model", name="Test Model") wake_word.WakeWord(id="Test Model", name="Test Model")
] ]