33"""
44
55from datetime import datetime
6-
6+ from zoneinfo import ZoneInfo
77
88from dateutil import tz
9- from timezonefinder import TimezoneFinder
9+ from tzfpy import get_tz
1010
1111from coordinate_projector .projector import Projector
1212
1313projector = Projector ()
1414
15- _time_zone_finder : TimezoneFinder | None = None
16-
1715
1816def ensure_tz (
1917 dt : datetime | None ,
@@ -32,13 +30,11 @@ def ensure_tz(
3230 If no location or timezone is provided, then assume the passed datetime is
3331 recorded in the norwegian timezone.
3432 """
35- global _time_zone_finder
36-
3733 if not dt :
3834 return dt
3935
4036 if not isinstance (dt , datetime ):
41- raise Exception ("Got unexpected type for datetime!" )
37+ raise TypeError ("Got unexpected type for datetime!" )
4238
4339 if dt .tzinfo is None or dt .tzinfo .utcoffset (dt ) is None :
4440 # timezone naive (no time zone in dt)
@@ -47,15 +43,12 @@ def ensure_tz(
4743 longitude , latitude = projector .transform (from_srid = srid , to_srid = 4326 , east = longitude , north = latitude )
4844
4945 # find timezone from position
50- if not _time_zone_finder :
51- _time_zone_finder = TimezoneFinder ()
52-
53- input_timezone = tz .gettz (_time_zone_finder .timezone_at (lng = longitude , lat = latitude ))
46+ input_timezone = get_tz (lng = longitude , lat = latitude )
5447 else :
5548 # Assume Norway
56- input_timezone = tz . gettz ( "Europe/Oslo" )
49+ input_timezone = "Europe/Oslo"
5750
58- dt = dt .replace (tzinfo = input_timezone )
51+ dt = dt .replace (tzinfo = ZoneInfo ( input_timezone ) )
5952
6053 return dt
6154
0 commit comments