def METHOD_NAME(self):
    """Computes the minimum and maximum values of self._data.
    Overrides ArrayDataSource.
    """
    if len(self._data) == 0:
        self._cached_bounds = ((0.0, 0.0), (0.0, 0.0))
    elif len(self._data) == 1:
        x, y = self._data[0]
        self._cached_bounds = ((x, y), (x, y))
    else:
        # calculate the X and Y values independently
        x = self._data[:, 0]
        min_x = min(x)
        max_x = max(x)
        y = self._data[:, 1]
        min_y = min(y)
        max_y = max(y)
        self._cached_bounds = ((min_x, min_y), (max_x, max_y))