code: def list_pop(list_, i, opts):
      """The list pop function.
  
      Note: it is unspecified where list_ will be mutated or not. If list_ is
      a TensorFlow entity, it will not be typically mutated. If list_ is a plain
      list, it will be. In general, if the list is mutated then the return value
      should point to the original entity.
  
      Args:
        list_: An entity that supports pop semantics.
        i: Optional index to pop from. May be None.
        opts: A ListPopOpts.
  
      Returns:
        Tuple (x, out_list_):
          out_list_: same as list_, after the removal was performed.
          x: the removed element value.
  
      Raises:
        ValueError: if list_ is not of a known list-like type or the operation is
        not supported for that type.
      """
      assert isinstance(opts, ListPopOpts)
  
      if hooks._DISPATCH.detect_overload_list_pop(list_):
          return hooks._DISPATCH.list_pop(list_, i)
      else:
          return _py_list_pop(list_, i)
  
file_path: DALI/dali/python/nvidia/dali/_autograph/operators/data_structures.py
imports: import collections
  from nvidia.dali._autograph.utils import hooks
label_desc: Use image node_id 5 for calling a global function with example usage: list_pop(list_, i, opts) and returns: hooks, _py_list_pop