def __init__(self, *, section_proxy: Callable[([], List[SectionMsg])], lane_proxy: Callable[([int], LaneMsg)], obstacle_proxy: Callable[([int], List[LabeledPolygonMsg])], surface_marking_proxy: Callable[([int], List[LabeledPolygonMsg])], parking_proxy: Callable[([int], Any)], intersection_proxy: Callable[([int], Any)], overtaking_buffer: float=2, start_zone_buffer: float=1, end_zone_buffer: float=1.5, yield_distance: Tuple[(float, float)]=((- 0.6), (- 0.2))):
    'Initialize zone speaker.\n\n        Args:\n            section_proxy: Returns all sections when called.\n            lane_proxy: Returns a LaneMsg for each section.\n            obstacle_proxy: function which returns obstacles in a section.\n            surface_marking_proxy: function which returns surface_markings in a section.\n            parking_proxy: function which returns parking msg in a section.\n            intersection_proxy: function which returns intersection msg in a section.\n            parking_spot_buffer: buffer around parking spots in which a parking attempt\n                is also accepted\n            overtaking_buffer: buffer around obstacles that the car is allowed to overtake\n            start_zone_buffer: beginning of the road that is considered as a start zone\n            end_zone_buffer: end of the road that is considered as the end\n            yield_distance: interval before intersections that the vehicle must yield in\n        '
    super().__init__(section_proxy=section_proxy, lane_proxy=lane_proxy, obstacle_proxy=obstacle_proxy, surface_marking_proxy=surface_marking_proxy, intersection_proxy=intersection_proxy)
    self.get_parking_msgs = parking_proxy
    self.overtaking_buffer = overtaking_buffer
    self.start_zone_buffer = start_zone_buffer
    self.end_zone_buffer = end_zone_buffer
    self.yield_distance = yield_distance
    self.total_length = self.middle_line.length
Initialize zone speaker.

Args:
    section_proxy: Returns all sections when called.
    lane_proxy: Returns a LaneMsg for each section.
    obstacle_proxy: function which returns obstacles in a section.
    surface_marking_proxy: function which returns surface_markings in a section.
    parking_proxy: function which returns parking msg in a section.
    intersection_proxy: function which returns intersection msg in a section.
    parking_spot_buffer: buffer around parking spots in which a parking attempt
        is also accepted
    overtaking_buffer: buffer around obstacles that the car is allowed to overtake
    start_zone_buffer: beginning of the road that is considered as a start zone
    end_zone_buffer: end of the road that is considered as the end
    yield_distance: interval before intersections that the vehicle must yield in
def __init__(self, *, section_proxy: Callable[([], List[SectionMsg])], lane_proxy: Callable[([int], LaneMsg)], obstacle_proxy: Callable[([int], List[LabeledPolygonMsg])], surface_marking_proxy: Callable[([int], List[LabeledPolygonMsg])], parking_proxy: Callable[([int], Any)], intersection_proxy: Callable[([int], Any)], overtaking_buffer: float=2, start_zone_buffer: float=1, end_zone_buffer: float=1.5, yield_distance: Tuple[(float, float)]=((- 0.6), (- 0.2))):
    'Initialize zone speaker.\n\n        Args:\n            section_proxy: Returns all sections when called.\n            lane_proxy: Returns a LaneMsg for each section.\n            obstacle_proxy: function which returns obstacles in a section.\n            surface_marking_proxy: function which returns surface_markings in a section.\n            parking_proxy: function which returns parking msg in a section.\n            intersection_proxy: function which returns intersection msg in a section.\n            parking_spot_buffer: buffer around parking spots in which a parking attempt\n                is also accepted\n            overtaking_buffer: buffer around obstacles that the car is allowed to overtake\n            start_zone_buffer: beginning of the road that is considered as a start zone\n            end_zone_buffer: end of the road that is considered as the end\n            yield_distance: interval before intersections that the vehicle must yield in\n        '
    super().__init__(section_proxy=section_proxy, lane_proxy=lane_proxy, obstacle_proxy=obstacle_proxy, surface_marking_proxy=surface_marking_proxy, intersection_proxy=intersection_proxy)
    self.get_parking_msgs = parking_proxy
    self.overtaking_buffer = overtaking_buffer
    self.start_zone_buffer = start_zone_buffer
    self.end_zone_buffer = end_zone_buffer
    self.yield_distance = yield_distance
    self.total_length = self.middle_line.length