Skip to content

Commit 7517db5

Browse files
author
Sven ten Raa
committed
Resolve dataclass issue by forcing default of None which will always get overriden and resolve setting deprecated property step on numberentitydescription
1 parent d15abb6 commit 7517db5

File tree

1 file changed

+9
-8
lines changed

1 file changed

+9
-8
lines changed

custom_components/victron/number.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -71,15 +71,13 @@ async def async_setup_entry(
7171
name=register_name.replace('_', ' '),
7272
slave=slave,
7373
native_unit_of_measurement=registerInfo.unit,
74-
# native_min_value=registerInfo.writeType.lowerLimit,
75-
# native_max_value=registerInfo.writeType.upperLimit,
7674
mode=NumberMode.SLIDER if config_entry.options[CONF_USE_SLIDERS] else NumberMode.BOX,
7775
native_min_value=determine_min_value(registerInfo.unit, config_entry.options, registerInfo.entityType.powerType, registerInfo.entityType.negative),
7876
native_max_value=determine_max_value(registerInfo.unit, config_entry.options, registerInfo.entityType.powerType),
7977
entity_category=EntityCategory.CONFIG,
8078
address=registerInfo.register,
8179
scale = registerInfo.scale,
82-
step = registerInfo.step
80+
native_step = registerInfo.step
8381
))
8482

8583
entities = []
@@ -145,14 +143,17 @@ def determine_max_value(unit, config_entry:config_entries.ConfigEntry, powerType
145143
@dataclass
146144
class VictronNumberMixin:
147145
"""A class that describes number entities."""
148-
scale: int
149-
mode: bool
146+
scale: int | None = None
147+
mode: bool | None = None
150148

149+
@dataclass
151150
class VictronNumberStep:
152-
step: float = 0
151+
native_step: float = 0
153152

154153
@dataclass
155154
class VictronEntityDescription(NumberEntityDescription, VictronWriteBaseEntityDescription, VictronNumberMixin, VictronNumberStep):
155+
#Overwrite base entitydescription property to resolve automatic property ordering issues when a mix of non-default and default properties are used
156+
key: str | None = None
156157
"""Describes victron number entity."""
157158

158159
class VictronNumber(NumberEntity):
@@ -207,8 +208,8 @@ def native_value(self) -> float:
207208
def native_step(self) -> float | None:
208209
if not self.description.mode == NumberMode.SLIDER: # allow users to skip stepping in case of box mode
209210
return None
210-
if self.description.step > 0:
211-
return self.description.step
211+
if self.description.native_step > 0:
212+
return self.description.native_step
212213
max = self.native_max_value
213214
min = self.native_min_value
214215
gap = len(list(range(int(min), int(max), 1)))

0 commit comments

Comments
 (0)