Function used to not take the square root as the distances will stay proportionally the same. This is to speed up the sorting process.

def _distance_squared(self, p2: "Point2") -> Union[int, float]:
        """ Function used to not take the square root as the distances will stay proportionally the same. This is to speed up the sorting process. """
        return (self[0] - p2[0]) ** 2 + (self[1] - p2[1]) ** 2