From b42ceb6555b1610c0f588d1296b2dbe1d53205d6 Mon Sep 17 00:00:00 2001 From: Joakim Plate Date: Tue, 4 Jun 2024 15:51:03 +0200 Subject: [PATCH] Avoid loading timezone at runtime (#157) * Avoid loading timezone at runtime Pytz will load timezone info from files in a lazy fashion on first access. This triggers warnings in HA due to it blocking the event loop. Pre-load the needed timezone info at module import instead, which will run in executor in HA. * Update value_types.py --- dsmr_parser/value_types.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/dsmr_parser/value_types.py b/dsmr_parser/value_types.py index 487e98c..faf10b9 100644 --- a/dsmr_parser/value_types.py +++ b/dsmr_parser/value_types.py @@ -2,6 +2,10 @@ import datetime import pytz +# TODO : Use system timezone +# Preload timezone to avoid loading in event loop later +local_tz = pytz.timezone('Europe/Amsterdam') + def timestamp(value): try: @@ -20,8 +24,6 @@ def timestamp(value): else: is_dst = False - # TODO : Use system timezone - local_tz = pytz.timezone('Europe/Amsterdam') localized_datetime = local_tz.localize(naive_datetime, is_dst=is_dst) return localized_datetime.astimezone(pytz.utc)