Found while reviewing the release/3.0.0 branch. Severity: medium. Verified.
The integer widget renders NumberSelector(NumberSelectorConfig(mode=BOX, step=1)) with no vol.Coerce(int) (config_flow.py ~287), so it yields a float. A source using config_params.integer("count") receives count=5.0 and stores it, which breaks range(count), slicing, and similar. Compare CONF_COUNT in get_sensor_schema, which wraps vol.All(vol.Coerce(int), vol.Range(min=1)).
Found while reviewing the release/3.0.0 branch. Severity: medium. Verified.
The
integerwidget rendersNumberSelector(NumberSelectorConfig(mode=BOX, step=1))with novol.Coerce(int)(config_flow.py~287), so it yields a float. A source usingconfig_params.integer("count")receivescount=5.0and stores it, which breaksrange(count), slicing, and similar. CompareCONF_COUNTinget_sensor_schema, which wrapsvol.All(vol.Coerce(int), vol.Range(min=1)).