code: def parse_slice(s, size):
      """
      Helper to determine nonnegative integers (start, stop, step) of a slice.
  
      :param slice s: A slice.
      :param int size: The size of the array being indexed into.
      :returns: A tuple of nonnegative integers ``start, stop, step``.
      :rtype: tuple
      """
      start = s.start
      if start is None:
          start = 0
      assert isinstance(start, int)
      if start >= 0:
          start = min(size, start)
      else:
          start = max(0, size + start)
  
      stop = s.stop
      if stop is None:
          stop = size
      assert isinstance(stop, int)
      if stop >= 0:
          stop = min(size, stop)
      else:
          stop = max(0, size + stop)
  
      step = s.step
      if step is None:
          step = 1
      assert isinstance(step, int)
  
      return start, stop, step
  
imports: import math
  import operator
  from numbers import Number
  from .op import BINARY_INVERSES, DISTRIBUTIVE_OPS, PRODUCT_TO_POWER, SAFE_BINARY_INVERSES, UNARY_INVERSES, UNITS, BinaryOp, Op, OpMeta, TransformOp, UnaryOp, declare_op_types
label_desc: Use image node_id 6 for calling a global function with example usage: parse_slice(s, size) and returns: start,  stop,  step