@@ -1153,41 +1153,6 @@ def _custom_serializer(schema: Any, *, allow_section: bool) -> Any:
11531153 return voluptuous_serialize .UNSUPPORTED
11541154
11551155
1156- def expand_condition_shorthand (value : Any | None ) -> Any :
1157- """Expand boolean condition shorthand notations."""
1158-
1159- if not isinstance (value , dict ) or CONF_CONDITIONS in value :
1160- return value
1161-
1162- for key , schema in (
1163- ("and" , AND_CONDITION_SHORTHAND_SCHEMA ),
1164- ("or" , OR_CONDITION_SHORTHAND_SCHEMA ),
1165- ("not" , NOT_CONDITION_SHORTHAND_SCHEMA ),
1166- ):
1167- try :
1168- schema (value )
1169- return {
1170- CONF_CONDITION : key ,
1171- CONF_CONDITIONS : value [key ],
1172- ** {k : value [k ] for k in value if k != key },
1173- }
1174- except vol .MultipleInvalid :
1175- pass
1176-
1177- if isinstance (value .get (CONF_CONDITION ), list ):
1178- try :
1179- CONDITION_SHORTHAND_SCHEMA (value )
1180- return {
1181- CONF_CONDITION : "and" ,
1182- CONF_CONDITIONS : value [CONF_CONDITION ],
1183- ** {k : value [k ] for k in value if k != CONF_CONDITION },
1184- }
1185- except vol .MultipleInvalid :
1186- pass
1187-
1188- return value
1189-
1190-
11911156# Schemas
11921157def empty_config_schema (domain : str ) -> Callable [[dict ], dict ]:
11931158 """Return a config schema which logs if there are configuration parameters."""
@@ -1683,7 +1648,43 @@ def STATE_CONDITION_SCHEMA(value: Any) -> dict[str, Any]:
16831648
16841649DEVICE_CONDITION_SCHEMA = DEVICE_CONDITION_BASE_SCHEMA .extend ({}, extra = vol .ALLOW_EXTRA )
16851650
1686- dynamic_template_condition_action = vol .All (
1651+
1652+ def expand_condition_shorthand (value : Any | None ) -> Any :
1653+ """Expand boolean condition shorthand notations."""
1654+
1655+ if not isinstance (value , dict ) or CONF_CONDITIONS in value :
1656+ return value
1657+
1658+ for key , schema in (
1659+ ("and" , AND_CONDITION_SHORTHAND_SCHEMA ),
1660+ ("or" , OR_CONDITION_SHORTHAND_SCHEMA ),
1661+ ("not" , NOT_CONDITION_SHORTHAND_SCHEMA ),
1662+ ):
1663+ try :
1664+ schema (value )
1665+ return {
1666+ CONF_CONDITION : key ,
1667+ CONF_CONDITIONS : value [key ],
1668+ ** {k : value [k ] for k in value if k != key },
1669+ }
1670+ except vol .MultipleInvalid :
1671+ pass
1672+
1673+ if isinstance (value .get (CONF_CONDITION ), list ):
1674+ try :
1675+ CONDITION_SHORTHAND_SCHEMA (value )
1676+ return {
1677+ CONF_CONDITION : "and" ,
1678+ CONF_CONDITIONS : value [CONF_CONDITION ],
1679+ ** {k : value [k ] for k in value if k != CONF_CONDITION },
1680+ }
1681+ except vol .MultipleInvalid :
1682+ pass
1683+
1684+ return value
1685+
1686+
1687+ dynamic_template_condition = vol .All (
16871688 # Wrap a shorthand template condition in a template condition
16881689 dynamic_template ,
16891690 lambda config : {
@@ -1724,7 +1725,7 @@ def STATE_CONDITION_SCHEMA(value: Any) -> dict[str, Any]:
17241725 },
17251726 ),
17261727 ),
1727- dynamic_template_condition_action ,
1728+ dynamic_template_condition ,
17281729 )
17291730)
17301731
@@ -1873,12 +1874,8 @@ def _base_trigger_validator(value: Any) -> Any:
18731874 vol .Exclusive (CONF_FOR_EACH , "repeat" ): vol .Any (
18741875 dynamic_template , vol .All (list , template_complex )
18751876 ),
1876- vol .Exclusive (CONF_WHILE , "repeat" ): vol .All (
1877- ensure_list , [CONDITION_SCHEMA ]
1878- ),
1879- vol .Exclusive (CONF_UNTIL , "repeat" ): vol .All (
1880- ensure_list , [CONDITION_SCHEMA ]
1881- ),
1877+ vol .Exclusive (CONF_WHILE , "repeat" ): CONDITIONS_SCHEMA ,
1878+ vol .Exclusive (CONF_UNTIL , "repeat" ): CONDITIONS_SCHEMA ,
18821879 vol .Required (CONF_SEQUENCE ): SCRIPT_SCHEMA ,
18831880 },
18841881 has_at_least_one_key (CONF_COUNT , CONF_FOR_EACH , CONF_WHILE , CONF_UNTIL ),
@@ -1894,9 +1891,7 @@ def _base_trigger_validator(value: Any) -> Any:
18941891 [
18951892 {
18961893 vol .Optional (CONF_ALIAS ): string ,
1897- vol .Required (CONF_CONDITIONS ): vol .All (
1898- ensure_list , [CONDITION_SCHEMA ]
1899- ),
1894+ vol .Required (CONF_CONDITIONS ): CONDITIONS_SCHEMA ,
19001895 vol .Required (CONF_SEQUENCE ): SCRIPT_SCHEMA ,
19011896 }
19021897 ],
@@ -1917,7 +1912,7 @@ def _base_trigger_validator(value: Any) -> Any:
19171912_SCRIPT_IF_SCHEMA = vol .Schema (
19181913 {
19191914 ** SCRIPT_ACTION_BASE_SCHEMA ,
1920- vol .Required (CONF_IF ): vol . All ( ensure_list , [ CONDITION_SCHEMA ]) ,
1915+ vol .Required (CONF_IF ): CONDITIONS_SCHEMA ,
19211916 vol .Required (CONF_THEN ): SCRIPT_SCHEMA ,
19221917 vol .Optional (CONF_ELSE ): SCRIPT_SCHEMA ,
19231918 }
0 commit comments