Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adjust step documentation for NumberSelector #2442

Open
wants to merge 5 commits into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 59 additions & 0 deletions blog/2024-11-08-number_selector.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
---
author: epenet
authorURL: https://github.com/epenet
title: "Number selector adds integer return value support"
---

### Summary of changes
Passing an integer step to a [Number selector](https://www.home-assistant.io/docs/blueprint/selectors/#number-selector) will now validate the user input as an integer.

Set this parameter in [config flows](/docs/data_entry_flow_index#show-form) to eliminate the extra schema validation step.

New implementation (using an integer step):

```python
vol.Optional(CONF_ADDRESS): NumberSelector(
NumberSelectorConfig(
min=1, max=255, mode=NumberSelectorMode.BOX, step=1
)
)
```

Previous implementation (with explicit integer conversion):

```python
vol.Optional(CONF_ADDRESS): vol.All(
NumberSelector(
NumberSelectorConfig(
min=1, max=255, mode=NumberSelectorMode.BOX
)
),
vol.Coerce(int),
)
```

### Backwards compatibility

To improve backwards compatibility, the default value has been adjust from `step=1` to `step=1.0`.

However, integrations that set the step explicitly to an integer value may need to adjust the step to the corresponding float to allow float values.

New implementation (using an float step) to ensure a float is accepted:

```python
NumberSelector(
NumberSelectorConfig(
min=0, max=100, mode=NumberSelectorMode.BOX, step=5.0
)
)
```

Previous implementation:

```python
NumberSelector(
NumberSelectorConfig(
min=0, max=100, mode=NumberSelectorMode.BOX, step=5
)
)
```