Reduce modbus validator for "swap" (remove special handling) (#105021)

This commit is contained in:
jan iversen 2023-12-11 16:12:32 +01:00 committed by GitHub
parent 44e54e11d8
commit 3963f59121
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -120,34 +120,30 @@ def struct_validator(config: dict[str, Any]) -> dict[str, Any]:
slave_count = config.get(CONF_SLAVE_COUNT, config.get(CONF_VIRTUAL_COUNT)) slave_count = config.get(CONF_SLAVE_COUNT, config.get(CONF_VIRTUAL_COUNT))
validator = DEFAULT_STRUCT_FORMAT[data_type].validate_parm validator = DEFAULT_STRUCT_FORMAT[data_type].validate_parm
swap_type = config.get(CONF_SWAP) swap_type = config.get(CONF_SWAP)
swap_dict = {
CONF_SWAP_BYTE: validator.swap_byte,
CONF_SWAP_WORD: validator.swap_word,
CONF_SWAP_WORD_BYTE: validator.swap_word,
}
swap_type_validator = swap_dict[swap_type] if swap_type else OPTIONAL
for entry in ( for entry in (
(count, validator.count, CONF_COUNT), (count, validator.count, CONF_COUNT),
(structure, validator.structure, CONF_STRUCTURE), (structure, validator.structure, CONF_STRUCTURE),
( (
slave_count, slave_count,
validator.slave_count, validator.slave_count,
f"{CONF_VIRTUAL_COUNT} / {CONF_SLAVE_COUNT}", f"{CONF_VIRTUAL_COUNT} / {CONF_SLAVE_COUNT}:",
), ),
(swap_type, swap_type_validator, f"{CONF_SWAP}:{swap_type}"),
): ):
if entry[0] is None: if entry[0] is None:
if entry[1] == DEMANDED: if entry[1] == DEMANDED:
error = f"{name}: `{entry[2]}:` missing, demanded with `{CONF_DATA_TYPE}: {data_type}`" error = f"{name}: `{entry[2]}` missing, demanded with `{CONF_DATA_TYPE}: {data_type}`"
raise vol.Invalid(error) raise vol.Invalid(error)
elif entry[1] == ILLEGAL: elif entry[1] == ILLEGAL:
error = ( error = f"{name}: `{entry[2]}` illegal with `{CONF_DATA_TYPE}: {data_type}`"
f"{name}: `{entry[2]}:` illegal with `{CONF_DATA_TYPE}: {data_type}`"
)
raise vol.Invalid(error) raise vol.Invalid(error)
if swap_type:
swap_type_validator = {
CONF_SWAP_BYTE: validator.swap_byte,
CONF_SWAP_WORD: validator.swap_word,
CONF_SWAP_WORD_BYTE: validator.swap_word,
}[swap_type]
if swap_type_validator == ILLEGAL:
error = f"{name}: `{CONF_SWAP}:{swap_type}` illegal with `{CONF_DATA_TYPE}: {data_type}`"
raise vol.Invalid(error)
if config[CONF_DATA_TYPE] == DataType.CUSTOM: if config[CONF_DATA_TYPE] == DataType.CUSTOM:
try: try:
size = struct.calcsize(structure) size = struct.calcsize(structure)