h2o-py/h2o/utils/shared_utils.py
def normalize_slice(s, total):
    """
    Return a "canonical" version of slice ``s``.

    :param slice s: the original slice expression
    :param total int: total number of elements in the collection sliced by ``s``
    :return slice: a slice equivalent to ``s`` but not containing any negative indices or Nones.
    """
    newstart = 0 if s.start is None else max(0, s.start + total) if s.start < 0 else min(s.start, total)
    newstop = total if s.stop is None else max(0, s.stop + total) if s.stop < 0 else min(s.stop, total)
    newstep = 1 if s.step is None else s.step
    return slice(newstart, newstop, newstep)
def normalize_slice(s, total):
    newstart = 0 if s.start is None else max(0, s.start + total) if s.start < 0 else min(s.start, total)
    newstop = total if s.stop is None else max(0, s.stop + total) if s.stop < 0 else min(s.stop, total)
    newstep = 1 if s.step is None else s.step
    return slice(newstart, newstop, newstep)
def normalize_slice ( s , total ) : newstart = 0 if s . start is None else max ( 0 , s . start + total ) if s . start < 0 else min ( s . start , total ) newstop = total if s . stop is None else max ( 0 , s . stop + total ) if s . stop < 0 else min ( s . stop , total ) newstep = 1 if s . step is None else s . step return slice ( newstart , newstop , newstep )
Return a "canonical" version of slice ``s``.

    :param slice s: the original slice expression
    :param total int: total number of elements in the collection sliced by ``s``
    :return slice: a slice equivalent to ``s`` but not containing any negative indices or Nones.
Return a canonical version of slice s .