from datetime import datetime, timedelta from typing import Union from pyrmv.classes.Board import BoardDeparture from pyrmv.classes.Stop import Stop, StopTrip from pyrmv.enums.board_type import BoardDepartureType from pyrmv.errors.not_ready import NotReadyYetError from pyrmv.raw import board_departure as raw_board_departure from pyrmv.utility.find_exception import find_exception try: from typing import Literal except ImportError: from typing_extensions import Literal def board_departure( access_id: str, id: str = None, id_ext: str = None, direction: Union[str, Stop, StopTrip] = None, date: Union[str, datetime] = None, time: Union[str, datetime] = None, duration: Union[int, timedelta] = 60, journeys_max: int = -1, operators: Union[str, list] = None, lines: Union[str, list] = None, passlist: bool = False, board_type: Literal[BoardDepartureType.DEP, BoardDepartureType.DEP_EQUIVS, BoardDepartureType.DEP_MAST, BoardDepartureType.DEP_STATION] = BoardDepartureType.DEP, ) -> BoardDeparture: """Method returns a board with departing transport. More detailed request is available as `raw.board_departure()`, however returns `dict` instead of `Board`. ### Args: * access_id (`str`): Access ID for identifying the requesting client. Get your key on [RMV website](https://opendata.rmv.de/site/start.html). * id (`str`, **optional**): Specifies the station/stop ID. Such ID can be retrieved from stop_by_name() or stop_by_coords(). Defaults to `None`. * id_ext (`str`, **optional**): Deprecated. Please use `id` as it supports external IDs. Specifies the external station/stop ID. Such ID can be retrieved from stop_by_name() or stop_by_coords(). Defaults to `None`. * direction (`Union[str, Stop, StopTrip]`, **optional**): If only vehicles departing or arriving from a certain direction shall be returned, specify the direction by giving the station/stop ID of the last stop on the journey or the Stop object itself. Defaults to `None`. * date (`Union[str, datetime]`, **optional**): Sets the start date for which the departures shall be retrieved. Represented in the format YYYY-MM-DD or as a datetime object. By default the current server date is used. Defaults to `None`. * time (`Union[str, datetime]`, **optional**): Sets the start time for which the departures shall be retrieved. Represented in the format hh:mm[:ss] in 24h nomenclature or as a datetime object. Seconds will be ignored for requests. By default the current server time is used. Defaults to `None`. * duration (`Union[int, timedelta]`, **optional**): Set the interval size in minutes. Can also be provided as a timedelta. Defaults to `60`. * journeys_max (`int`, **optional**): Maximum number of journeys to be returned. If no value is defined or -1, all departing/arriving services within the duration sized period are returned. Defaults to `-1`. * operators (`Union[str, list]`, **optional**): Only journeys provided by the given operators are part of the result. To filter multiple operators, separate the codes by comma or provide a list. If the operator should not be part of the be trip, negate it by putting ! in front of it. Example: Filter for operator A and B: `operators=[A,B]`. Defaults to `None`. * lines (`Union[str, list]`, **optional**): Only journeys running the given line are part of the result. To filter multiple lines, provide a list or separate the codes by comma or provide a list. If the line should not be part of the be trip, negate it by putting ! in front of it. Defaults to `None`. * passlist (`bool`, **optional**): Include a list of all passed waystops. Defaults to `False`. * board_type (`Union[BoardDepartureType.DEP, BoardDepartureType.DEP_EQUIVS, BoardDepartureType.DEP_MAST, BoardDepartureType.DEP_STATION]`, optional): Set the station departure board type to be used. Defaults to `BoardDepartureType.DEP`. ### Returns: * BoardDeparture: Instance of BoardDeparture object. """ board_raw = raw_board_departure( accessId=access_id, id=id, extId=id_ext, direction=direction, date=date, time=time, duration=duration, maxJourneys=journeys_max, operators=operators, lines=lines, passlist=passlist, boardType=board_type.code ) find_exception(board_raw) # raise NotReadyYetError() return BoardDeparture(board_raw, access_id)