Skip to content

Commit b9e042e

Browse files
authored
Use __qualname__ to make ids unique for settings and sensors (#1589)
Split out from #1586 set the id to the qualified_name instead of only the function name (in order to prevent unique_id collisions in HomeAssistant for example with DNDStatus.start and CleaningDetails.start)
1 parent b5a2940 commit b9e042e

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

miio/devicestatus.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,8 @@ def sensor(name: str, *, unit: str = "", **kwargs):
143143
"""
144144

145145
def decorator_sensor(func):
146-
property_name = func.__name__
146+
property_name = str(func.__name__)
147+
qualified_name = str(func.__qualname__)
147148

148149
def _sensor_type_for_return_type(func):
149150
rtype = get_type_hints(func).get("return")
@@ -157,8 +158,8 @@ def _sensor_type_for_return_type(func):
157158

158159
sensor_type = _sensor_type_for_return_type(func)
159160
descriptor = SensorDescriptor(
160-
id=str(property_name),
161-
property=str(property_name),
161+
id=qualified_name,
162+
property=property_name,
162163
name=name,
163164
unit=unit,
164165
type=sensor_type,
@@ -196,14 +197,15 @@ def setting(
196197
"""
197198

198199
def decorator_setting(func):
199-
property_name = func.__name__
200+
property_name = str(func.__name__)
201+
qualified_name = str(func.__qualname__)
200202

201203
if setter is None and setter_name is None:
202204
raise Exception("Either setter or setter_name needs to be defined")
203205

204206
common_values = {
205-
"id": str(property_name),
206-
"property": str(property_name),
207+
"id": qualified_name,
208+
"property": property_name,
207209
"name": name,
208210
"unit": unit,
209211
"setter": setter,

0 commit comments

Comments
 (0)