mirror of
https://github.com/home-assistant/core.git
synced 2025-11-12 20:40:18 +00:00
Fix mysensors validation for composite entities (#26666)
* Composite entities require multiple value types to be present in child values to function. Any of those value types should trigger an entity update if updated. * Always write platform v names as sets. * Run black.
This commit is contained in:
committed by
Paulus Schoutsen
parent
39edc45e4e
commit
c17057de4b
@@ -121,20 +121,23 @@ def validate_child(gateway, node_id, child, value_type=None):
|
||||
child_type_name = next(
|
||||
(member.name for member in pres if member.value == child.type), None
|
||||
)
|
||||
value_types = [value_type] if value_type else [*child.values]
|
||||
value_type_names = [
|
||||
value_types = {value_type} if value_type else {*child.values}
|
||||
value_type_names = {
|
||||
member.name for member in set_req if member.value in value_types
|
||||
]
|
||||
}
|
||||
platforms = TYPE_TO_PLATFORMS.get(child_type_name, [])
|
||||
if not platforms:
|
||||
_LOGGER.warning("Child type %s is not supported", child.type)
|
||||
return validated
|
||||
|
||||
for platform in platforms:
|
||||
v_names = FLAT_PLATFORM_TYPES[platform, child_type_name]
|
||||
if not isinstance(v_names, list):
|
||||
v_names = [v_names]
|
||||
v_names = [v_name for v_name in v_names if v_name in value_type_names]
|
||||
platform_v_names = FLAT_PLATFORM_TYPES[platform, child_type_name]
|
||||
v_names = platform_v_names & value_type_names
|
||||
if not v_names:
|
||||
child_value_names = {
|
||||
member.name for member in set_req if member.value in child.values
|
||||
}
|
||||
v_names = platform_v_names & child_value_names
|
||||
|
||||
for v_name in v_names:
|
||||
child_schema_gen = SCHEMAS.get((platform, v_name), default_schema)
|
||||
|
||||
Reference in New Issue
Block a user