old_contents: import numpy
  
  import chainer
  
  # import classes and functions
  from chainer.initializers.constant import Constant
  from chainer.initializers.constant import Identity  # NOQA
  from chainer.initializers.constant import NaN  # NOQA
  from chainer.initializers.constant import One  # NOQA
  from chainer.initializers.constant import Zero  # NOQA
  from chainer.initializers.normal import GlorotNormal  # NOQA
  from chainer.initializers.normal import HeNormal  # NOQA
  from chainer.initializers.normal import LeCunNormal
  from chainer.initializers.normal import Normal  # NOQA
  from chainer.initializers.orthogonal import Orthogonal  # NOQA
  from chainer.initializers.uniform import GlorotUniform  # NOQA
  from chainer.initializers.uniform import HeUniform  # NOQA
  from chainer.initializers.uniform import LeCunUniform  # NOQA
  from chainer.initializers.uniform import Uniform  # NOQA
  
  
  def generate_array(initializer, shape, xp, dtype=None):
      """Return initialized array.
  
      The algorithms used to make the new values depend on the
      concrete derived classes. If the initializer has the ``dtype`` attribute,
      it is used to construct the array. Otherwise, ``chainer.config.dtype`` is
      used instead. See :ref:`configuration` for the dtype config.
  
      Args:
          initializer: A callable object that takes :class:`numpy.ndarray`
               or :class:`cupy.ndarray` and edits its value.
          shape (tuple): Shape of a return array.
          xp (module): :mod:`cupy` or :mod:`numpy`.
          dtype: Dtype specifier. If omitted, ``initializer.dtype`` is used.
  
      Returns:
          numpy.ndarray or cupy.ndarray: An initialized array.
  
      """
  <<<<<<< HEAD
      if dtype is None:
          dtype = getattr(initializer, 'dtype', numpy.float32)
  =======
      dtype = chainer.get_dtype(getattr(initializer, 'dtype', None))
  >>>>>>> master
      array = xp.empty(shape, dtype=dtype)
      initializer(array)
      return array
  
  
  def _get_initializer(initializer):
      if initializer is None:
          return LeCunNormal()
      if numpy.isscalar(initializer):
          return Constant(initializer)
      if isinstance(initializer, numpy.ndarray):
          return Constant(initializer)
  
      if not callable(initializer):
          raise TypeError('invalid type of initializer: %s' % type(initializer))
      return initializer
  
new_contents: import numpy
  
  import chainer
  
  # import classes and functions
  from chainer.initializers.constant import Constant
  from chainer.initializers.constant import Identity  # NOQA
  from chainer.initializers.constant import NaN  # NOQA
  from chainer.initializers.constant import One  # NOQA
  from chainer.initializers.constant import Zero  # NOQA
  from chainer.initializers.normal import GlorotNormal  # NOQA
  from chainer.initializers.normal import HeNormal  # NOQA
  from chainer.initializers.normal import LeCunNormal
  from chainer.initializers.normal import Normal  # NOQA
  from chainer.initializers.orthogonal import Orthogonal  # NOQA
  from chainer.initializers.uniform import GlorotUniform  # NOQA
  from chainer.initializers.uniform import HeUniform  # NOQA
  from chainer.initializers.uniform import LeCunUniform  # NOQA
  from chainer.initializers.uniform import Uniform  # NOQA
  
  
  def generate_array(initializer, shape, xp, dtype=None):
      """Return initialized array.
  
      The algorithms used to make the new values depend on the
      concrete derived classes. If the initializer has the ``dtype`` attribute,
      it is used to construct the array. Otherwise, ``chainer.config.dtype`` is
      used instead. See :ref:`configuration` for the dtype config.
  
      Args:
          initializer: A callable object that takes :class:`numpy.ndarray`
               or :class:`cupy.ndarray` and edits its value.
          shape (tuple): Shape of a return array.
          xp (module): :mod:`cupy` or :mod:`numpy`.
          dtype: Dtype specifier. If omitted, ``initializer.dtype`` is used.
  
      Returns:
          numpy.ndarray or cupy.ndarray: An initialized array.
  
      """
      dtype_attr = getattr(initializer, 'dtype', None)
      if dtype is not None and dtype_attr is not None \
              and numpy.dtype(dtype) != numpy.dtype(dtype_attr):
          raise ValueError(
              'dtype mismatch: {} != {}'.format(dtype, dtype_attr))
      if dtype is None:
          dtype = dtype_attr
      dtype = chainer.get_dtype(dtype)
      array = xp.empty(shape, dtype=dtype)
      initializer(array)
      return array
  
  
  def _get_initializer(initializer):
      if initializer is None:
          return LeCunNormal()
      if numpy.isscalar(initializer):
          return Constant(initializer)
      if isinstance(initializer, numpy.ndarray):
          return Constant(initializer)
  
      if not callable(initializer):
          raise TypeError('invalid type of initializer: %s' % type(initializer))
      return initializer
  
subject: Fix as reviewed