From ce8865b5c5482ca4660b1630f0c96eada56013db Mon Sep 17 00:00:00 2001 From: Chip Kent <5250374+chipkent@users.noreply.github.com> Date: Wed, 20 Mar 2024 16:03:17 -0600 Subject: [PATCH] Only support zoneinfo for python 3.9+ (#5271) --- py/server/deephaven/time.py | 8 +++++--- py/server/tests/test_time.py | 12 +++++++----- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/py/server/deephaven/time.py b/py/server/deephaven/time.py index 12731f20738..160c6deffd9 100644 --- a/py/server/deephaven/time.py +++ b/py/server/deephaven/time.py @@ -5,7 +5,7 @@ """ This module defines functions for handling Deephaven date/time data. """ import datetime -import zoneinfo +import sys import pytz from typing import Union, Optional, Literal @@ -186,8 +186,10 @@ def _tzinfo_to_j_time_zone(tzi: datetime.tzinfo) -> TimeZone: # Handle zoneinfo time zones - if isinstance(tzi, zoneinfo.ZoneInfo): - return _JDateTimeUtils.parseTimeZone(tzi.key) + if sys.version_info >= (3, 9): + import zoneinfo + if isinstance(tzi, zoneinfo.ZoneInfo): + return _JDateTimeUtils.parseTimeZone(tzi.key) # Handle constant UTC offset time zones (datetime.timezone) diff --git a/py/server/tests/test_time.py b/py/server/tests/test_time.py index b04a8da5506..18598eb43a3 100644 --- a/py/server/tests/test_time.py +++ b/py/server/tests/test_time.py @@ -5,7 +5,7 @@ import unittest from time import sleep import datetime -import zoneinfo +import sys import pandas as pd import numpy as np @@ -119,10 +119,12 @@ def test_to_j_time_zone(self): to_j_time_zone(dt) self.fail("Expected DHError") - dttz = zoneinfo.ZoneInfo("America/New_York") - dt = datetime.datetime(2022, 7, 7, 14, 21, 17, 123456, tzinfo=dttz) - self.assertEqual(to_j_time_zone(dttz), to_j_time_zone("America/New_York")) - self.assertEqual(to_j_time_zone(dt), to_j_time_zone("America/New_York")) + if sys.version_info >= (3, 9): + import zoneinfo + dttz = zoneinfo.ZoneInfo("America/New_York") + dt = datetime.datetime(2022, 7, 7, 14, 21, 17, 123456, tzinfo=dttz) + self.assertEqual(to_j_time_zone(dttz), to_j_time_zone("America/New_York")) + self.assertEqual(to_j_time_zone(dt), to_j_time_zone("America/New_York")) with self.assertRaises(TypeError): to_j_time_zone(False)