old_contents: import numpy
  import six
  
  from cupy import core
  
  
  def copyto(dst, src, casting='same_kind', where=None):
      """Copies values from one array to another with broadcasting.
  
      This function can be called for arrays on different devices. In this case,
      casting, ``where``, and broadcasting is not supported, and an exception is
      raised if these are used.
  
      Args:
          dst (cupy.ndarray): Target array.
          src (cupy.ndarray): Source array.
          casting (str): Casting rule. See :func:`numpy.can_cast` for detail.
          where (cupy.ndarray of bool): If specified, this array acts as a mask,
              and an element is copied only if the corresponding element of
              ``where`` is True.
  
      .. seealso:: :func:`numpy.copyto`
  
      """
  
      src_type = type(src)
      src_is_python_scalar = (src_type in six.integer_types or
                              src_type in (bool, float, complex))
      if src_is_python_scalar:
          src_dtype = numpy.dtype(type(src))
          can_cast = numpy.can_cast(src, dst.dtype, casting)
      else:
          src_dtype = src.dtype
          can_cast = numpy.can_cast(src_dtype, dst.dtype, casting)
  
      if not can_cast:
          raise TypeError('Cannot cast %s to %s in %s casting mode' %
                          (src_dtype, dst.dtype, casting))
      if dst.size == 0:
          return
  
      if src_is_python_scalar:
          dst[...] = src
          return
  
      if where is None:
          if _can_memcpy(dst, src):
              dst.data.copy_from(src.data, src.nbytes)
          else:
              core.elementwise_copy(src, dst)
      else:
          core.elementwise_copy_where(src, where, dst)
  
  
  def _can_memcpy(dst, src):
      c_contiguous = dst.flags.c_contiguous and src.flags.c_contiguous
      f_contiguous = dst.flags.f_contiguous and src.flags.f_contiguous
      return (c_contiguous or f_contiguous) and dst.dtype == src.dtype and \
          dst.size == src.size
  
new_contents: import numpy
  import six
  
  from cupy import core
  
  
  def copyto(dst, src, casting='same_kind', where=None):
      """Copies values from one array to another with broadcasting.
  
      This function can be called for arrays on different devices. In this case,
      casting, ``where``, and broadcasting is not supported, and an exception is
      raised if these are used.
  
      Args:
          dst (cupy.ndarray): Target array.
          src (cupy.ndarray): Source array.
          casting (str): Casting rule. See :func:`numpy.can_cast` for detail.
          where (cupy.ndarray of bool): If specified, this array acts as a mask,
              and an element is copied only if the corresponding element of
              ``where`` is True.
  
      .. seealso:: :func:`numpy.copyto`
  
      """
  
      src_type = type(src)
      src_is_python_scalar = (src_type in six.integer_types or
                              src_type in (bool, float, complex))
      if src_is_python_scalar:
          src_dtype = numpy.dtype(type(src))
          can_cast = numpy.can_cast(src, dst.dtype, casting)
      else:
          src_dtype = src.dtype
          can_cast = numpy.can_cast(src_dtype, dst.dtype, casting)
  
      if not can_cast:
          raise TypeError('Cannot cast %s to %s in %s casting mode' %
                          (src_dtype, dst.dtype, casting))
      if dst.size == 0:
          return
  
      if src_is_python_scalar:
          dst.fill(src)
          return
  
      if where is None:
          if _can_memcpy(dst, src):
              dst.data.copy_from(src.data, src.nbytes)
          else:
              core.elementwise_copy(src, dst)
      else:
          core.elementwise_copy_where(src, where, dst)
  
  
  def _can_memcpy(dst, src):
      c_contiguous = dst.flags.c_contiguous and src.flags.c_contiguous
      f_contiguous = dst.flags.f_contiguous and src.flags.f_contiguous
      return (c_contiguous or f_contiguous) and dst.dtype == src.dtype and \
          dst.size == src.size
  
subject: Use ndarray.fill instead of __setitem__