code: def putmask(a, /, mask, values):
      """
      putmask(a, mask, values)
  
      Changes elements of an array based on conditional and input values.
  
      Sets ``a.flat[n] = values[n]`` for each n where ``mask.flat[n]==True``.
  
      If `values` is not the same size as `a` and `mask` then it will repeat.
      This gives behavior different from ``a[mask] = values``.
  
      Parameters
      ----------
      a : ndarray
          Target array.
      mask : array_like
          Boolean mask array. It has to be the same shape as `a`.
      values : array_like
          Values to put into `a` where `mask` is True. If `values` is smaller
          than `a` it will be repeated.
  
      See Also
      --------
      place, put, take, copyto
  
      Examples
      --------
      >>> x = np.arange(6).reshape(2, 3)
      >>> np.putmask(x, x>2, x**2)
      >>> x
      array([[ 0,  1,  2],
             [ 9, 16, 25]])
  
      If `values` is smaller than `a` it is repeated:
  
      >>> x = np.arange(5)
      >>> np.putmask(x, x>1, [-33, -44])
      >>> x
      array([  0,   1, -33, -44, -33])
  
      """
      return (a, mask, values)
  
imports: import functools
  from .None import overrides
  from .None import _multiarray_umath
  from ._multiarray_umath import *
  from ._multiarray_umath import fastCopyAndTranspose, _flagdict, from_dlpack, _place, _reconstruct, _vec_string, _ARRAY_API, _monotonicity, _get_ndarray_c_version, _get_madvise_hugepage, _set_madvise_hugepage, _get_promotion_state, _set_promotion_state, _using_numpy2_behavior
label_desc: Use image node_id 15 for calling a global function with example usage: putmask(mask, values) and returns: a,  mask,  values