Skip to content

Commit b982107

Browse files
committed
Use a constant for sensor statistics issues
1 parent 1cb4332 commit b982107

File tree

2 files changed

+26
-20
lines changed

2 files changed

+26
-20
lines changed

homeassistant/components/sensor/recorder.py

+6-4
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,8 @@
7878
WARN_UNSTABLE_UNIT: HassKey[set[str]] = HassKey(f"{DOMAIN}_warn_unstable_unit")
7979
# Link to dev statistics where issues around LTS can be fixed
8080
LINK_DEV_STATISTICS = "https://my.home-assistant.io/redirect/developer_statistics"
81+
STATE_CLASS_REMOVED_ISSUE = "state_class_removed"
82+
UNITS_CHANGED_ISSUE = "units_changed"
8183

8284

8385
def _get_sensor_states(hass: HomeAssistant) -> list[State]:
@@ -697,7 +699,7 @@ def _update_issues(
697699
if numeric and state_class is None:
698700
# Sensor no longer has a valid state class
699701
report_issue(
700-
"state_class_removed",
702+
STATE_CLASS_REMOVED_ISSUE,
701703
entity_id,
702704
{"statistic_id": entity_id},
703705
)
@@ -708,7 +710,7 @@ def _update_issues(
708710
if numeric and not _equivalent_units({state_unit, metadata_unit}):
709711
# The unit has changed, and it's not possible to convert
710712
report_issue(
711-
"units_changed",
713+
UNITS_CHANGED_ISSUE,
712714
entity_id,
713715
{
714716
"statistic_id": entity_id,
@@ -722,7 +724,7 @@ def _update_issues(
722724
valid_units = (unit or "<None>" for unit in converter.VALID_UNITS)
723725
valid_units_str = ", ".join(sorted(valid_units))
724726
report_issue(
725-
"units_changed",
727+
UNITS_CHANGED_ISSUE,
726728
entity_id,
727729
{
728730
"statistic_id": entity_id,
@@ -754,7 +756,7 @@ def get_sensor_statistics_issues(hass: HomeAssistant) -> set[str]:
754756
issue.domain != DOMAIN
755757
or not (issue_data := issue.data)
756758
or issue_data.get("issue_type")
757-
not in ("state_class_removed", "units_changed")
759+
not in (STATE_CLASS_REMOVED_ISSUE, UNITS_CHANGED_ISSUE)
758760
):
759761
continue
760762
issues.add(issue.issue_id)

tests/components/sensor/test_recorder.py

+20-16
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,10 @@
3636
)
3737
from homeassistant.components.recorder.util import get_instance, session_scope
3838
from homeassistant.components.sensor import ATTR_OPTIONS, DOMAIN, SensorDeviceClass
39+
from homeassistant.components.sensor.recorder import (
40+
STATE_CLASS_REMOVED_ISSUE,
41+
UNITS_CHANGED_ISSUE,
42+
)
3943
from homeassistant.const import ATTR_FRIENDLY_NAME, STATE_UNAVAILABLE
4044
from homeassistant.core import HomeAssistant, State
4145
from homeassistant.helpers import issue_registry as ir
@@ -4428,11 +4432,11 @@ async def test_validate_unit_change_convertible(
44284432
"statistic_id": "sensor.test",
44294433
"supported_unit": supported_unit,
44304434
},
4431-
"type": "units_changed",
4435+
"type": UNITS_CHANGED_ISSUE,
44324436
}
44334437
],
44344438
}
4435-
await assert_validation_result(hass, client, expected, {"units_changed"})
4439+
await assert_validation_result(hass, client, expected, {UNITS_CHANGED_ISSUE})
44364440

44374441
# Unavailable state - empty response
44384442
hass.states.async_set(
@@ -4653,11 +4657,11 @@ async def test_validate_statistics_unit_change_no_device_class(
46534657
"statistic_id": "sensor.test",
46544658
"supported_unit": supported_unit,
46554659
},
4656-
"type": "units_changed",
4660+
"type": UNITS_CHANGED_ISSUE,
46574661
}
46584662
],
46594663
}
4660-
await assert_validation_result(hass, client, expected, {"units_changed"})
4664+
await assert_validation_result(hass, client, expected, {UNITS_CHANGED_ISSUE})
46614665

46624666
# Unavailable state - empty response
46634667
hass.states.async_set(
@@ -4769,11 +4773,11 @@ async def test_validate_statistics_state_class_removed(
47694773
"sensor.test": [
47704774
{
47714775
"data": {"statistic_id": "sensor.test"},
4772-
"type": "state_class_removed",
4776+
"type": STATE_CLASS_REMOVED_ISSUE,
47734777
}
47744778
],
47754779
}
4776-
await assert_validation_result(hass, client, expected, {"state_class_removed"})
4780+
await assert_validation_result(hass, client, expected, {STATE_CLASS_REMOVED_ISSUE})
47774781

47784782
# Unavailable state - empty response
47794783
hass.states.async_set(
@@ -4837,11 +4841,11 @@ async def test_validate_statistics_state_class_removed_issue_cleaned_up(
48374841
"sensor.test": [
48384842
{
48394843
"data": {"statistic_id": "sensor.test"},
4840-
"type": "state_class_removed",
4844+
"type": STATE_CLASS_REMOVED_ISSUE,
48414845
}
48424846
],
48434847
}
4844-
await assert_validation_result(hass, client, expected, {"state_class_removed"})
4848+
await assert_validation_result(hass, client, expected, {STATE_CLASS_REMOVED_ISSUE})
48454849

48464850
# Remove the statistics - empty response
48474851
get_instance(hass).async_clear_statistics(["sensor.test"])
@@ -5086,11 +5090,11 @@ async def test_validate_statistics_unit_change_no_conversion(
50865090
"statistic_id": "sensor.test",
50875091
"supported_unit": unit1,
50885092
},
5089-
"type": "units_changed",
5093+
"type": UNITS_CHANGED_ISSUE,
50905094
}
50915095
],
50925096
}
5093-
await assert_validation_result(hass, client, expected, {"units_changed"})
5097+
await assert_validation_result(hass, client, expected, {UNITS_CHANGED_ISSUE})
50945098

50955099
# Unavailable state - empty response
50965100
hass.states.async_set(
@@ -5267,11 +5271,11 @@ async def test_validate_statistics_unit_change_equivalent_units_2(
52675271
"statistic_id": "sensor.test",
52685272
"supported_unit": supported_unit,
52695273
},
5270-
"type": "units_changed",
5274+
"type": UNITS_CHANGED_ISSUE,
52715275
}
52725276
],
52735277
}
5274-
await assert_validation_result(hass, client, expected, {"units_changed"})
5278+
await assert_validation_result(hass, client, expected, {UNITS_CHANGED_ISSUE})
52755279

52765280
# Run statistics one hour later, metadata will not be updated
52775281
await async_recorder_block_till_done(hass)
@@ -5280,7 +5284,7 @@ async def test_validate_statistics_unit_change_equivalent_units_2(
52805284
await assert_statistic_ids(
52815285
hass, [{"statistic_id": "sensor.test", "unit_of_measurement": unit1}]
52825286
)
5283-
await assert_validation_result(hass, client, expected, {"units_changed"})
5287+
await assert_validation_result(hass, client, expected, {UNITS_CHANGED_ISSUE})
52845288

52855289

52865290
async def test_validate_statistics_other_domain(
@@ -5369,7 +5373,7 @@ async def one_hour_stats(start: datetime) -> datetime:
53695373
now = await one_hour_stats(now)
53705374
expected = {
53715375
"state_class_removed_sensor.test": {
5372-
"issue_type": "state_class_removed",
5376+
"issue_type": STATE_CLASS_REMOVED_ISSUE,
53735377
"statistic_id": "sensor.test",
53745378
}
53755379
}
@@ -5573,8 +5577,8 @@ def create_issue(domain: str, issue_id: str, data: dict | None) -> None:
55735577
create_issue("test", "test_issue", None)
55745578
create_issue(DOMAIN, "test_issue_1", None)
55755579
create_issue(DOMAIN, "test_issue_2", {"issue_type": "another_issue"})
5576-
create_issue(DOMAIN, "test_issue_3", {"issue_type": "state_class_removed"})
5577-
create_issue(DOMAIN, "test_issue_4", {"issue_type": "units_changed"})
5580+
create_issue(DOMAIN, "test_issue_3", {"issue_type": STATE_CLASS_REMOVED_ISSUE})
5581+
create_issue(DOMAIN, "test_issue_4", {"issue_type": UNITS_CHANGED_ISSUE})
55785582

55795583
# Check the issues
55805584
assert set(issue_registry.issues) == {

0 commit comments

Comments
 (0)