code: def _broadcast_shape(*args):
      """Returns the shape of the arrays that would result from broadcasting the
      supplied arrays against each other.
      """
      if not args:
          return ()
      # use the old-iterator because np.nditer does not handle size 0 arrays
      # consistently
      b = np.broadcast(*args[:32])
      # unfortunately, it cannot handle 32 or more arguments directly
      for pos in range(32, len(args), 31):
          # ironically, np.broadcast does not properly handle np.broadcast
          # objects (it treats them as scalars)
          # use broadcasting to avoid allocating the full array
          b = broadcast_to(0, b.shape)
          b = np.broadcast(b, *args[pos : (pos + 31)])
      return b.shape
  
file_path: catboost/contrib/python/numpy/py2/numpy/lib/stride_tricks.py
imports: from __future__ import division, absolute_import, print_function
  import numpy
  from numpy.core.overrides import array_function_dispatch
label_desc: Use image node_id 6 for calling a global function with example usage: _broadcast_shape() and returns: b, 