mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 11:17:21 +00:00
Reduce modbus validator by using table (#103488)
This commit is contained in:
parent
8e9528d34d
commit
40dc6d8191
@ -98,27 +98,22 @@ def struct_validator(config: dict[str, Any]) -> dict[str, Any]:
|
|||||||
data_type = config[CONF_DATA_TYPE] = DataType.INT16
|
data_type = config[CONF_DATA_TYPE] = DataType.INT16
|
||||||
count = config.get(CONF_COUNT, None)
|
count = config.get(CONF_COUNT, None)
|
||||||
structure = config.get(CONF_STRUCTURE, None)
|
structure = config.get(CONF_STRUCTURE, None)
|
||||||
slave_count = config.get(CONF_SLAVE_COUNT, None)
|
slave_count = config.get(CONF_SLAVE_COUNT, config.get(CONF_VIRTUAL_COUNT, 0))
|
||||||
slave_name = CONF_SLAVE_COUNT
|
|
||||||
if not slave_count:
|
|
||||||
slave_count = config.get(CONF_VIRTUAL_COUNT, 0)
|
|
||||||
slave_name = CONF_VIRTUAL_COUNT
|
|
||||||
swap_type = config.get(CONF_SWAP, CONF_SWAP_NONE)
|
swap_type = config.get(CONF_SWAP, CONF_SWAP_NONE)
|
||||||
validator = DEFAULT_STRUCT_FORMAT[data_type].validate_parm
|
validator = DEFAULT_STRUCT_FORMAT[data_type].validate_parm
|
||||||
if count and not validator.count:
|
for entry in (
|
||||||
error = f"{name}: `{CONF_COUNT}: {count}` cannot be combined with `{CONF_DATA_TYPE}: {data_type}`"
|
(count, validator.count, CONF_COUNT),
|
||||||
raise vol.Invalid(error)
|
(structure, validator.structure, CONF_STRUCTURE),
|
||||||
if not count and validator.count:
|
):
|
||||||
error = f"{name}: `{CONF_COUNT}:` missing, demanded with `{CONF_DATA_TYPE}: {data_type}`"
|
if bool(entry[0]) != entry[1]:
|
||||||
raise vol.Invalid(error)
|
error = "cannot be combined" if not entry[1] else "missing, demanded"
|
||||||
if structure and not validator.structure:
|
error = (
|
||||||
error = f"{name}: `{CONF_STRUCTURE}: {structure}` cannot be combined with `{CONF_DATA_TYPE}: {data_type}`"
|
f"{name}: `{entry[2]}:` {error} with `{CONF_DATA_TYPE}: {data_type}`"
|
||||||
raise vol.Invalid(error)
|
)
|
||||||
if not structure and validator.structure:
|
|
||||||
error = f"{name}: `{CONF_STRUCTURE}` missing or empty, demanded with `{CONF_DATA_TYPE}: {data_type}`"
|
|
||||||
raise vol.Invalid(error)
|
raise vol.Invalid(error)
|
||||||
|
|
||||||
if slave_count and not validator.slave_count:
|
if slave_count and not validator.slave_count:
|
||||||
error = f"{name}: `{slave_name}: {slave_count}` cannot be combined with `{CONF_DATA_TYPE}: {data_type}`"
|
error = f"{name}: `{CONF_VIRTUAL_COUNT} / {CONF_SLAVE_COUNT}:` cannot be combined with `{CONF_DATA_TYPE}: {data_type}`"
|
||||||
raise vol.Invalid(error)
|
raise vol.Invalid(error)
|
||||||
if swap_type != CONF_SWAP_NONE:
|
if swap_type != CONF_SWAP_NONE:
|
||||||
swap_type_validator = {
|
swap_type_validator = {
|
||||||
|
@ -247,7 +247,7 @@ async def test_config_sensor(hass: HomeAssistant, mock_modbus) -> None:
|
|||||||
},
|
},
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
f"{TEST_ENTITY_NAME}: `{CONF_STRUCTURE}` missing or empty, demanded with `{CONF_DATA_TYPE}: {DataType.CUSTOM}`",
|
f"{TEST_ENTITY_NAME}: `{CONF_STRUCTURE}:` missing, demanded with `{CONF_DATA_TYPE}: {DataType.CUSTOM}`",
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user