From aa4ee0382cedb36dc1dc82cbd17c844e449e0736 Mon Sep 17 00:00:00 2001 From: Sean Breckenridge Date: Sun, 26 Feb 2023 16:52:09 -0800 Subject: [PATCH] annotate duration with Second type alias --- my/location/fallback/common.py | 4 +++- my/time/tz/via_location.py | 7 +++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/my/location/fallback/common.py b/my/location/fallback/common.py index 2fc02a1..fa1d4c5 100644 --- a/my/location/fallback/common.py +++ b/my/location/fallback/common.py @@ -6,12 +6,14 @@ from datetime import datetime, timedelta, timezone from ..common import LocationProtocol, Location DateExact = Union[datetime, float, int] # float/int as epoch timestamps +Second = float + @dataclass class FallbackLocation(LocationProtocol): lat: float lon: float dt: datetime - duration: Optional[float] = None # time in seconds for how long this is valid + duration: Optional[Second] = None accuracy: Optional[float] = None elevation: Optional[float] = None datasource: Optional[str] = None # which module provided this, useful for debugging diff --git a/my/time/tz/via_location.py b/my/time/tz/via_location.py index 343d30a..e111a4a 100644 --- a/my/time/tz/via_location.py +++ b/my/time/tz/via_location.py @@ -250,6 +250,13 @@ def _get_tz(dt: datetime) -> Optional[pytz.BaseTzInfo]: if res is not None: return res # fallback to home tz + # note: the fallback to fallback.via_home.estimate_location is still needed, since + # _iter_local_dates_fallback only returns days which we actually have a datetime for + # (e.g. there was an IP address within a day of that datetime) + # + # given a datetime, fallback.via_home.estimate_location will find which home location + # that datetime is between, else fallback on your first home location, so it acts + # as a last resort from my.location.fallback import via_home as home loc = list(home.estimate_location(dt)) assert len(loc) == 1, f"should only have one home location, received {loc}"