code: def sum(
      x: Array,
      /,
      *,
      axis: Optional[Union[int, Tuple[int, ...]]] = None,
      dtype: Optional[Dtype] = None,
      keepdims: bool = False,
  ) -> Array:
      if x.dtype not in _numeric_dtypes:
          raise TypeError("Only numeric dtypes are allowed in sum")
      # Note: sum() and prod() always upcast for dtype=None. `np.sum` does that
      # for integers, but not for float32 or complex64, so we need to
      # special-case it here
      if dtype is None:
          if x.dtype == float32:
              dtype = float64
          elif x.dtype == complex64:
              dtype = complex128
      return Array._new(
          np.sum(x._array, axis=axis, dtype=dtype, keepdims=keepdims)
      )
  
file_path: numpy/numpy/array_api/_statistical_functions.py
imports: from __future__ import annotations
  from ._dtypes import _real_floating_dtypes, _real_numeric_dtypes, _numeric_dtypes
  from ._array_object import Array
  from ._dtypes import float32, float64, complex64, complex128
  from typing import TYPE_CHECKING, Optional, Tuple, Union
  import numpy
label_desc: Use image node_id 6 for calling a global function with example usage: sum() and returns: Array