if entry.type == ConfigEntryType.LABEL:
result.value = result.label
if not isinstance(result.value, expected_type):
- # value type does not match
- try:
- # try to simply convert it
- result.value = expected_type(result.value)
- return result
- except ValueError:
- pass
# handle common conversions/mistakes
if expected_type == float and isinstance(result.value, int):
result.value = float(result.value)
if expected_type == int and isinstance(result.value, float):
result.value = int(result.value)
return result
+ if expected_type == int and isinstance(result.value, str) and result.value.isnumeric():
+ result.value = int(result.value)
+ return result
+ if (
+ expected_type == float
+ and isinstance(result.value, str)
+ and result.value.isnumeric()
+ ):
+ result.value = float(result.value)
+ return result
# fallback to default
if result.value is None and allow_none:
# In some cases we allow this (e.g. create default config)
- result.value = result.default_value
+ result.value = None
return result
if entry.default_value:
LOGGER.warning(
result.key,
type(result.value),
)
+ result.value = entry.default_value
return result
raise ValueError(f"{result.key} has unexpected type: {type(result.value)}")
return result