code: def _MergeEntities(self, a, b):
      
      if a.shape_id != b.shape_id:
        raise MergeError('shape_id must be the same')
  
      distance = max(ApproximateDistanceBetweenPoints(a.points[0][:2],
                                                      b.points[0][:2]),
                     ApproximateDistanceBetweenPoints(a.points[-1][:2],
                                                      b.points[-1][:2]))
      if distance > self.largest_shape_distance:
        raise MergeError('The shape endpoints are too far away: %.1fm '
                         '(largest_shape_distance is %.1fm)' %
                         (distance, self.largest_shape_distance))
  
      return self._Migrate(b, self.feed_merger.b_schedule, False)
docs: Merges the shapes by taking the new shape.
  
      Args:
        a: The first transitfeed.Shape instance.
        b: The second transitfeed.Shape instance.
  
      Returns:
        The merged shape.
  
      Raises:
        MergeError: If the ids are different or if the endpoints are further
                    than largest_shape_distance apart.