parameters: (*args)
return_statement: return b.shape
docstring: Returns the shape of the arrays that would result from broadcasting the
      supplied arrays against each other.
docstring_summary: Returns the shape of the arrays that would result from broadcasting the
      supplied arrays against each other.
docstring_tokens: Returns the shape of the arrays that would result from broadcasting the supplied arrays against each other .
function: def _broadcast_shape(*args):
      """Returns the shape of the arrays that would result from broadcasting the
      supplied arrays against each other.
      """
      # 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
function_tokens: def _broadcast_shape ( * args ) : # 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