1717import datetime
1818from typing import List , Optional
1919
20- import pytz
21-
2220from .. import convert , utils
2321from ..client_base import DEFAULT
2422from ..client_default import Client
@@ -99,7 +97,6 @@ def directions(
9997 profile : Optional [str ] = "WALK,TRANSIT" ,
10098 date : Optional [datetime .date ] = datetime .datetime .now ().date (),
10199 time : Optional [datetime .time ] = datetime .datetime .now ().time (),
102- timezone : Optional [str ] = "UTC" ,
103100 arrive_by : Optional [bool ] = False ,
104101 num_itineraries : Optional [int ] = 3 ,
105102 dry_run : Optional [bool ] = None ,
@@ -121,10 +118,6 @@ def directions(
121118 :param time: Time of departure or arrival. Default value: current time.
122119 :type time: datetime.time
123120
124- :param timezone: Timezone used to transform output departure and arrival timestamps to naive
125- datetimes. Default value: UTC.
126- :type time: str
127-
128121 :arrive_by: Whether the itinerary should depart at the specified time (False), or arrive to
129122 the destination at the specified time (True). Default value: False.
130123 :type arrive_by: bool
@@ -172,22 +165,21 @@ def directions(
172165 response = self .client ._request (
173166 "/otp/routers/default/index/graphql" , post_params = params , dry_run = dry_run
174167 )
175- return self ._parse_directions_response (response , num_itineraries , timezone )
168+ return self ._parse_directions_response (response , num_itineraries )
176169
177- def _timestamp_to_naive_datetime (self , timestamp , timezone ):
170+ def _timestamp_to_utc_datetime (self , timestamp ):
178171 dt = datetime .datetime .fromtimestamp (timestamp / 1000 )
179- aware_dt = dt .astimezone (pytz .timezone (timezone ))
180- return aware_dt .replace (tzinfo = None )
172+ return dt .astimezone (datetime .timezone .utc )
181173
182- def _parse_directions_response (self , response , num_itineraries , timezone ):
174+ def _parse_directions_response (self , response , num_itineraries ):
183175 if response is None : # pragma: no cover
184176 return Directions () if num_itineraries > 1 else Direction ()
185177
186178 directions = []
187179 for itinerary in response ["data" ]["plan" ]["itineraries" ]:
188180 distance , geometry = self ._parse_legs (itinerary ["legs" ])
189- departure_datetime = self ._timestamp_to_naive_datetime (itinerary ["startTime" ], timezone )
190- arrival_datetime = self ._timestamp_to_naive_datetime (itinerary ["endTime" ], timezone )
181+ departure_datetime = self ._timestamp_to_utc_datetime (itinerary ["startTime" ])
182+ arrival_datetime = self ._timestamp_to_utc_datetime (itinerary ["endTime" ])
191183 directions .append (
192184 Direction (
193185 geometry = geometry ,
@@ -210,7 +202,7 @@ def _parse_legs(self, legs):
210202 geometry = []
211203 for leg in legs :
212204 points = utils .decode_polyline5 (leg ["legGeometry" ]["points" ])
213- geometry .extend (points )
205+ geometry .extend (list ( reversed ( points )) )
214206 distance += int (leg ["distance" ])
215207
216208 return distance , geometry
@@ -233,7 +225,7 @@ def isochrones(
233225 use. Default: "WALK,TRANSIT"
234226 :type profile: str
235227
236- :time: Departure date and time (timezone aware). The default value is now (UTC).
228+ :time: Departure datetime (timezone aware). The default value is now (UTC).
237229 :type time: datetime.datetime
238230
239231 :cutoff: The maximum travel duration in seconds. The default value is one hour.
@@ -298,7 +290,7 @@ def raster(
298290 use. Default: "WALK,TRANSIT"
299291 :type profile: str
300292
301- :time: Departure date and time (timezone aware). The default value is now (UTC).
293+ :time: Departure datetime (timezone aware). The default value is now (UTC).
302294 :type time: datetime.datetime
303295
304296 :cutoff: The maximum travel duration in seconds. The default value is one hour.
0 commit comments