@cached_property
def _pivot_legal_shifts(self):
    '\n        The max decrement and min increment along each Dimension such that the\n        Group pivot does not go OOB.\n        '
    c = self.pivot
    ret = defaultdict((lambda : ((- np.inf), np.inf)))
    for (i, ofs) in zip(c.indexeds, c.offsets):
        f = i.function
        for l in ofs.labels:
            hsize = sum(f._size_halo[l])
            (lower, upper) = c.shifts[l].offsets
            try:
                maxd = min(0, max(ret[l][0], ((- ofs[l]) - lower)))
                mini = max(0, min(ret[l][1], ((hsize - ofs[l]) - upper)))
                ret[l] = (maxd, mini)
            except TypeError:
                ret[l] = (0, 0)
    return ret
The max decrement and min increment along each Dimension such that the
Group pivot does not go OOB.
@cached_property
def _pivot_legal_shifts(self):
    '\n        The max decrement and min increment along each Dimension such that the\n        Group pivot does not go OOB.\n        '
    c = self.pivot
    ret = defaultdict((lambda : ((- np.inf), np.inf)))
    for (i, ofs) in zip(c.indexeds, c.offsets):
        f = i.function
        for l in ofs.labels:
            hsize = sum(f._size_halo[l])
            (lower, upper) = c.shifts[l].offsets
            try:
                maxd = min(0, max(ret[l][0], ((- ofs[l]) - lower)))
                mini = max(0, min(ret[l][1], ((hsize - ofs[l]) - upper)))
                ret[l] = (maxd, mini)
            except TypeError:
                ret[l] = (0, 0)
    return ret