New date and time behavior, improved typing

This commit is contained in:
2023-11-27 21:44:17 +01:00
parent 5690080a6a
commit 3ee90c7a41
17 changed files with 598 additions and 415 deletions

View File

@@ -1,6 +1,7 @@
from typing import Any, Mapping
from datetime import timedelta
from typing import Any, List, Mapping, Union
from isodate import parse_duration
from isodate import Duration, parse_duration
from pyrmv.classes.gis import Gis
from pyrmv.classes.message import Message
@@ -11,19 +12,19 @@ class Leg:
"""Trip leg object."""
def __init__(self, data: Mapping[str, Any]):
self.origin = StopTrip(data["Origin"])
self.destination = StopTrip(data["Destination"])
self.origin: StopTrip = StopTrip(data["Origin"])
self.destination: StopTrip = StopTrip(data["Destination"])
self.gis = (
None if "GisRef" not in data else Gis(data["GisRef"]["ref"], data["GisRoute"])
)
self.messages = []
self.index = data["idx"]
self.name = data["name"]
self.type = data["type"]
self.direction = data.get("direction")
self.number = data.get("number")
self.duration = parse_duration(data["duration"])
self.distance = data.get("dist")
self.messages: List[Message] = []
self.index: Union[int, None] = data.get("idx")
self.name: str = data["name"]
self.type: Union[str, None] = data.get("type")
self.direction: Union[str, None] = data.get("direction")
self.number: Union[str, None] = data.get("number")
self.duration: Union[Duration, timedelta] = parse_duration(data["duration"])
self.distance: Union[int, None] = data.get("dist")
if "Messages" in data:
self.messages.extend(Message(message) for message in data["Messages"]["Message"])