nodes: 0, module; 1, function_definition; 2, function_name:is_uniform_spaced; 3, parameters; 4, type; 5, block; 6, identifier:arr; 7, dictionary_splat_pattern; 8, identifier:bool; 9, expression_statement; 10, expression_statement; 11, expression_statement; 12, return_statement; 13, identifier:kwargs; 14, comment:"""Return True if values of an array are uniformly spaced and sorted.
  
      >>> is_uniform_spaced(range(5))
      True
      >>> is_uniform_spaced([-4, 0, 100])
      False
  
      kwargs are additional arguments to ``np.isclose``
      """; 15, assignment; 16, assignment; 17, call; 18, identifier:arr; 19, call; 20, identifier:diffs; 21, call; 22, identifier:bool; 23, argument_list; 24, attribute; 25, argument_list; 26, attribute; 27, argument_list; 28, call; 29, identifier:np; 30, identifier:array; 31, identifier:arr; 32, keyword_argument; 33, identifier:np; 34, identifier:diff; 35, identifier:arr; 36, attribute; 37, argument_list; 38, identifier:dtype; 39, identifier:float; 40, identifier:np; 41, identifier:isclose; 42, call; 43, call; 44, dictionary_splat; 45, attribute; 46, argument_list; 47, attribute; 48, argument_list; 49, identifier:kwargs; 50, identifier:diffs; 51, identifier:min; 52, identifier:diffs; 53, identifier:max
code: def is_uniform_spaced(arr, **kwargs) -> bool:
      """Return True if values of an array are uniformly spaced and sorted.
  
      >>> is_uniform_spaced(range(5))
      True
      >>> is_uniform_spaced([-4, 0, 100])
      False
  
      kwargs are additional arguments to ``np.isclose``
      """
      arr = np.array(arr, dtype=float)
      diffs = np.diff(arr)
      return bool(np.isclose(diffs.min(), diffs.max(), **kwargs))