Return a new Variable with paddings.

        Parameters
        ----------
        pad_width: Mapping of the form {dim: (before, after)}
            Number of values padded to the edges of each dimension.
        **pad_widths_kwargs:
            Keyword argument for pad_widths

def pad_with_fill_value(self, pad_widths=None, fill_value=dtypes.NA,
                            **pad_widths_kwargs):
        """
        Return a new Variable with paddings.

        Parameters
        ----------
        pad_width: Mapping of the form {dim: (before, after)}
            Number of values padded to the edges of each dimension.
        **pad_widths_kwargs:
            Keyword argument for pad_widths
        """
        pad_widths = either_dict_or_kwargs(pad_widths, pad_widths_kwargs,
                                           'pad')

        if fill_value is dtypes.NA:
            dtype, fill_value = dtypes.maybe_promote(self.dtype)
        else:
            dtype = self.dtype

        if isinstance(self.data, dask_array_type):
            array = self.data

            # Dask does not yet support pad. We manually implement it.
            # https://github.com/dask/dask/issues/1926
            for d, pad in pad_widths.items():
                axis = self.get_axis_num(d)
                before_shape = list(array.shape)
                before_shape[axis] = pad[0]
                before_chunks = list(array.chunks)
                before_chunks[axis] = (pad[0], )
                after_shape = list(array.shape)
                after_shape[axis] = pad[1]
                after_chunks = list(array.chunks)
                after_chunks[axis] = (pad[1], )

                arrays = []
                if pad[0] > 0:
                    arrays.append(da.full(before_shape, fill_value,
                                          dtype=dtype, chunks=before_chunks))
                arrays.append(array)
                if pad[1] > 0:
                    arrays.append(da.full(after_shape, fill_value,
                                          dtype=dtype, chunks=after_chunks))
                if len(arrays) > 1:
                    array = da.concatenate(arrays, axis=axis)
        else:
            pads = [(0, 0) if d not in pad_widths else pad_widths[d]
                    for d in self.dims]
            array = np.pad(self.data.astype(dtype, copy=False), pads,
                           mode='constant', constant_values=fill_value)
        return type(self)(self.dims, array)