Files
PythonRMV/src/pyrmv/classes/trip.py

33 lines
1.3 KiB
Python

from datetime import timedelta
from typing import List, Union
from isodate import Duration, parse_duration
from ..classes.leg import Leg
from ..classes.stop import StopTrip
class Trip:
"""Trip object."""
def __init__(self, data: dict):
self.origin: StopTrip = StopTrip(data["Origin"])
self.destination: StopTrip = StopTrip(data["Destination"])
self.legs: List[Leg] = []
self.legs.extend(Leg(leg) for leg in data["LegList"]["Leg"])
self.calculation: str = data["calculation"]
self.index: int = data["idx"]
self.id: str = data["tripId"]
self.ctx_recon: str = data["ctxRecon"]
self.duration: Union[Duration, timedelta, None] = (
None if "duration" not in data else parse_duration(data["duration"])
)
self.real_time_duration: Union[Duration, timedelta, None] = (
None if "rtDuration" not in data else parse_duration(data["rtDuration"])
)
self.checksum: str = data["checksum"]
self.transfer_count: int = data.get("transferCount", 0)
def __str__(self) -> str:
return f"Trip from {self.origin.name} to {self.destination.name} lasting {self.duration} ({self.real_time_duration}) with {len(self.legs)} legs and {self.transfer_count} transfers"