def METHOD_NAME(self, keep_attrs: bool | None = None) -> T_DataWithCoords:
    """
    Exponentially weighted moving average.
    Parameters
    ----------
    keep_attrs : bool, default: None
        If True, the attributes (``attrs``) will be copied from the original
        object to the new one. If False, the new object will be returned
        without attributes. If None uses the global default.
    Examples
    --------
    >>> da = xr.DataArray([1, 1, 2, 2, 2], dims="x")
    >>> da.rolling_exp(x=2, window_type="span").mean()
    <xarray.DataArray (x: 5)>
    array([1.        , 1.        , 1.69230769, 1.9       , 1.96694215])
    Dimensions without coordinates: x
    """
    if keep_attrs is None:
        keep_attrs = _get_keep_attrs(default=True)
    return self.obj.reduce(
        move_exp_nanmean, dim=self.dim, alpha=self.alpha, keep_attrs=keep_attrs
    )