Skip to content

Commit 8e60a9a

Browse files
authored
Merge pull request #220 from GrandMoff100/217-get_domains-fails-with-validationerror-after-home-assistant-202511-release
Fix Pydantic validation error for `ServiceField.selector.media.multiple`
2 parents d85e6e6 + 12c826b commit 8e60a9a

2 files changed

Lines changed: 49 additions & 4 deletions

File tree

homeassistant_api/models/domains.py

Lines changed: 47 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -341,6 +341,7 @@ class ServiceFieldSelectorLocation(BaseModel):
341341

342342
class ServiceFieldSelectorMedia(BaseModel):
343343
accept: Optional[List[str]] = None
344+
multiple: bool = False
344345

345346

346347
class ServiceFieldSelectorNavigation(BaseModel):
@@ -483,6 +484,52 @@ class ServiceFieldSelectorUIStateContext(BaseModel):
483484
allow_name: Optional[bool] = None
484485

485486

487+
# fields.file.ServiceField.selector.media.multiple
488+
# Extra inputs are not permitted [type=extra_forbidden, input_value=False, input_type=bool]
489+
# For further information visit https://errors.pydantic.dev/2.12/v/extra_forbidden
490+
# fields.file.ServiceFieldCollection.fields
491+
# Field required [type=missing, input_value={'required': True, 'selec...'], 'multiple': False}}}, input_type=dict]
492+
# For further information visit https://errors.pydantic.dev/2.12/v/missing
493+
# fields.file.ServiceFieldCollection.required
494+
# Extra inputs are not permitted [type=extra_forbidden, input_value=True, input_type=bool]
495+
# For further information visit https://errors.pydantic.dev/2.12/v/extra_forbidden
496+
# fields.file.ServiceFieldCollection.selector
497+
# Extra inputs are not permitted [type=extra_forbidden, input_value={'media': {'accept': ['im...*'], 'multiple': False}}, input_type=dict]
498+
# For further information visit https://errors.pydantic.dev/2.12/v/extra_forbidden
499+
500+
# fields.media.ServiceField.selector.media.multiple
501+
# Extra inputs are not permitted [type=extra_forbidden, input_value=False, input_type=bool]
502+
# For further information visit https://errors.pydantic.dev/2.12/v/extra_forbidden
503+
504+
# fields.media.ServiceFieldCollection.fields
505+
# Field required [type=missing, input_value={'required': True, 'selec...ontent_type": "music"}'}, input_type=dict]
506+
# For further information visit https://errors.pydantic.dev/2.12/v/missing
507+
# fields.media.ServiceFieldCollection.required
508+
# Extra inputs are not permitted [type=extra_forbidden, input_value=True, input_type=bool]
509+
# For further information visit https://errors.pydantic.dev/2.12/v/extra_forbidden
510+
# fields.media.ServiceFieldCollection.selector
511+
# Extra inputs are not permitted [type=extra_forbidden, input_value={'media': {'multiple': False}}, input_type=dict]
512+
# For further information visit https://errors.pydantic.dev/2.12/v/extra_forbidden
513+
# fields.media.ServiceFieldCollection.example
514+
# Extra inputs are not permitted [type=extra_forbidden, input_value='{"media_content_id": "ht...content_type": "music"}', input_type=str]
515+
# For further information visit https://errors.pydantic.dev/2.12/v/extra_forbidden
516+
517+
# fields.media.ServiceField.selector.media.multiple
518+
# Extra inputs are not permitted [type=extra_forbidden, input_value=False, input_type=bool]
519+
# For further information visit https://errors.pydantic.dev/2.12/v/extra_forbidden
520+
# fields.media.ServiceFieldCollection.fields
521+
# Field required [type=missing, input_value={'required': True, 'selec...ontent_type": "music"}'}, input_type=dict]
522+
# For further information visit https://errors.pydantic.dev/2.12/v/missing
523+
# fields.media.ServiceFieldCollection.required
524+
# Extra inputs are not permitted [type=extra_forbidden, input_value=True, input_type=bool]
525+
# For further information visit https://errors.pydantic.dev/2.12/v/extra_forbidden
526+
# fields.media.ServiceFieldCollection.selector
527+
# Extra inputs are not permitted [type=extra_forbidden, input_value={'media': {'multiple': False}}, input_type=dict]
528+
# For further information visit https://errors.pydantic.dev/2.12/v/extra_forbidden
529+
# fields.media.ServiceFieldCollection.example
530+
# Extra inputs are not permitted [type=extra_forbidden, input_value='{"media_content_id": "ht...content_type": "music"}', input_type=str]
531+
# For further information visit https://errors.pydantic.dev/2.12/v/extra_forbidden```
532+
486533
class ServiceFieldSelector(BaseModel):
487534
action: Optional[ServiceFieldSelectorAction] = None
488535
addon: Optional[ServiceFieldSelectorAddon] = None
@@ -541,8 +588,6 @@ class ServiceFieldSelector(BaseModel):
541588

542589

543590
# Service bases
544-
545-
546591
class ServiceFieldFilter(BaseModel):
547592
supported_features: Optional[Union[List[int], int]] = (
548593
None # Bitset (any needs to be supported [or all within specified list])

tests/conftest.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import asyncio
22
import logging
33
import os
4-
from typing import AsyncGenerator, Generator, Literal
4+
from typing import AsyncGenerator, Generator, Literal, cast
55

66
import pytest
77
import pytest_asyncio
@@ -32,7 +32,7 @@ def setup_cached_client(wait_for_server) -> Generator[Client, None, None]:
3232
os.environ["HOMEASSISTANTAPI_URL"],
3333
os.environ["HOMEASSISTANTAPI_TOKEN"],
3434
) as client:
35-
yield client
35+
yield cast(Client, client)
3636

3737

3838
@pytest.fixture(scope="session")

0 commit comments

Comments
 (0)