mirror of
https://github.com/home-assistant/core.git
synced 2025-08-09 23:55:07 +02:00
Speed up fetching statistics by using attrgetter
Uses the faster native code vs a lambda
4aeae28671/Modules/_operator.c (L1406)
This commit is contained in:
@@ -10,6 +10,7 @@ from functools import lru_cache, partial
|
|||||||
from itertools import chain, groupby
|
from itertools import chain, groupby
|
||||||
import json
|
import json
|
||||||
import logging
|
import logging
|
||||||
|
from operator import attrgetter
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
from statistics import mean
|
from statistics import mean
|
||||||
@@ -2020,10 +2021,8 @@ def _sorted_statistics_to_dict(
|
|||||||
# Identify metadata IDs for which no data was available at the requested start time
|
# Identify metadata IDs for which no data was available at the requested start time
|
||||||
stats_by_meta_id: dict[int, list[Row]] = {}
|
stats_by_meta_id: dict[int, list[Row]] = {}
|
||||||
seen_statistic_ids: set[str] = set()
|
seen_statistic_ids: set[str] = set()
|
||||||
for meta_id, group in groupby(
|
key_func = attrgetter("metadata_id")
|
||||||
stats,
|
for meta_id, group in groupby(stats, key_func):
|
||||||
lambda stat: stat.metadata_id, # type: ignore[no-any-return]
|
|
||||||
):
|
|
||||||
stats_list = stats_by_meta_id[meta_id] = list(group)
|
stats_list = stats_by_meta_id[meta_id] = list(group)
|
||||||
seen_statistic_ids.add(metadata[meta_id]["statistic_id"])
|
seen_statistic_ids.add(metadata[meta_id]["statistic_id"])
|
||||||
first_start_time_ts = stats_list[0].start_ts
|
first_start_time_ts = stats_list[0].start_ts
|
||||||
|
Reference in New Issue
Block a user