HPI/my/location/common.py
2023-02-21 01:28:53 -08:00

34 lines
1 KiB
Python

from datetime import date, datetime
from typing import Union, Tuple, Optional
from dataclasses import dataclass
from my.core import __NOT_HPI_MODULE__
from my.core.compat import Protocol
DateIsh = Union[datetime, date, str]
LatLon = Tuple[float, float]
class LocationProtocol(Protocol):
lat: float
lon: float
dt: datetime
accuracy: Optional[float]
elevation: Optional[float]
datasource: Optional[str] = None # which module provided this, useful for debugging
# TODO: add timezone to this? can use timezonefinder in tz provider instead though
# converted from namedtuple to a dataclass so datasource field can be added optionally
# if we want, can eventually be converted back to a namedtuple when all datasources are compliant
@dataclass(frozen=True, eq=True)
class Location(LocationProtocol):
lat: float
lon: float
dt: datetime
accuracy: Optional[float]
elevation: Optional[float]
datasource: Optional[str] = None # which module provided this, useful for debugging