'Return colorbar data coordinates for the boundaries of
a proportional colorbar.'

def _proportional_y(self):

    if isinstance(self.norm, colors.BoundaryNorm):
        y = (self._boundaries - self._boundaries[0])
        y = (y / (self._boundaries[(-1)] - self._boundaries[0]))
    else:
        y = self.norm(self._boundaries.copy())
        y = np.ma.filled(y, np.nan)
    if (self.extend == u'min'):
        clen = (y[(-1)] - y[1])
        automin = ((y[2] - y[1]) / clen)
        automax = ((y[(-1)] - y[(-2)]) / clen)
    elif (self.extend == u'max'):
        clen = (y[(-2)] - y[0])
        automin = ((y[1] - y[0]) / clen)
        automax = ((y[(-2)] - y[(-3)]) / clen)
    elif (self.extend == u'both'):
        clen = (y[(-2)] - y[1])
        automin = ((y[2] - y[1]) / clen)
        automax = ((y[(-2)] - y[(-3)]) / clen)
    if (self.extend in (u'both', u'min', u'max')):
        extendlength = self._get_extension_lengths(self.extendfrac, automin, automax, default=0.05)
    if (self.extend in (u'both', u'min')):
        y[0] = (0.0 - extendlength[0])
    if (self.extend in (u'both', u'max')):
        y[(-1)] = (1.0 + extendlength[1])
    yi = y[self._inside]
    norm = colors.Normalize(yi[0], yi[(-1)])
    y[self._inside] = np.ma.filled(norm(yi), np.nan)
    return y
