def get_pickup_route(self, user_status): start_point = { "arrow_code": user_status.trip_schedules[0].route.arrow_codes[0], "waypoint_id": user_status.trip_schedules[0].route.start_waypoint_id, } vehicle_ids = self.get_dispatchable_vehicle_ids(user_status) if len(vehicle_ids) == 0: logger.warning("no dispatchable vehicles") return None, None goal_points = [] for vehicle_id, goal_waypoint_id, goal_arrow_code in map( lambda x: (x, self.vehicle_schedules[x][-1].route.goal_waypoint_id, self. vehicle_schedules[x][-1].route.arrow_codes[-1]), vehicle_ids): goal_points.append({ "goal_id": vehicle_id, "arrow_code": goal_arrow_code, "waypoint_id": goal_waypoint_id, }) routes = self.route.get_shortest_routes(start_point, goal_points, reverse=True) if len(routes) == 0: logger.warning("no pickup_route") return None, None pickup_route = min(routes.items(), key=lambda x: x[1]["cost"] + self.vehicle_schedules[ x[0]][-1].period.end)[1] vehicle_id = pickup_route.pop("goal_id") pickup_route.pop("cost") return pickup_route, vehicle_id
def get_carry_route(self, user_status): start_point = { "arrow_code": user_status.trip_schedules[0].route.arrow_codes[0], "waypoint_id": user_status.trip_schedules[0].route.start_waypoint_id, } goal_points = [{ "goal_id": None, "arrow_code": user_status.trip_schedules[0].route.arrow_codes[-1], "waypoint_id": user_status.trip_schedules[0].route.goal_waypoint_id, }] routes = self.route.get_shortest_routes(start_point, goal_points, reverse=False) if len(routes) == 0: logger.warning("cant carry_route") return None carry_route = routes[None] carry_route.pop("cost") carry_route.pop("goal_id") return carry_route
def split_route_code(route_code): logger.warning( logger.deprecation_warning_message("decode_route_code", "split_route_code")) return Route.decode_route_code(route_code)
def get_route_code(route): logger.warning( logger.deprecation_warning_message("encode_route", "get_route_code")) return Route.encode_route(route)
def get_route_waypoint_ids(self, route): logger.warning( logger.deprecation_warning_message("get_waypoint_ids", "get_route_waypoint_ids")) return self.get_waypoint_ids(route)
def get_arrow_waypoint_array(self, route): logger.warning( logger.deprecation_warning_message("get_locations", "get_arrow_waypoint_array")) return self.get_locations(route)
def __on_connect(self, _client, _userdata, _flags, response_code): if response_code == 0: self.subscribe() else: logger.warning('connect status {0}'.format(response_code))