DOC: Fix docstring of window.Expanding/Rolling.apply and document *args and **kwargs
State: closed

This pull request will 

- Fix docstring formatting for ```pandas.core.window.Expanding.apply``` and ```pandas.core.window.Rolling.apply```

- Document ```*args``` and ```**kwargs``` parameters:
The following functions had ```*args``` and ```**kwargs``` added to their docstring:
```Rolling.max``` 
```Expanding.max```  
```EWM.mean``` 
```EWM.std``` 
```EWM.var``` 
The following functions had ```**kwargs``` added to their docstring:
```Rolling.skew```                          
```Expanding.skew```                        
```Rolling.cov``` 
```Expanding.cov```  
```EWM.cov``` 
```EWM.corr```



Labels:
name: Docs

Comments:
Hello @LJArendse! Thanks for updating the PR.



Cheers ! There are no PEP8 issues in this Pull Request. :beers: 

##### Comment last updated on January 07, 2019 at 11:30 Hours UTC
# [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/24184?src=pr&el=h1) Report
> Merging [#24184](https://codecov.io/gh/pandas-dev/pandas/pull/24184?src=pr&el=desc) into [master](https://codecov.io/gh/pandas-dev/pandas/commit/3dbb137f5eaba5f31a2c39862a144f31d6a2f4a4?src=pr&el=desc) will **decrease** coverage by `49.17%`.
> The diff coverage is `n/a`.

[![Impacted file tree graph](https://codecov.io/gh/pandas-dev/pandas/pull/24184/graphs/tree.svg?width=650&token=eZ4WkYLtcO&height=150&src=pr)](https://codecov.io/gh/pandas-dev/pandas/pull/24184?src=pr&el=tree)

```diff
@@             Coverage Diff             @@
##           master   #24184       +/-   ##
===========================================
- Coverage   92.21%   43.03%   -49.18%     
===========================================
  Files         162      162               
  Lines       51723    51723               
===========================================
- Hits        47695    22261    -25434     
- Misses       4028    29462    +25434
```

| Flag | Coverage Δ | |
|---|---|---|
| #multiple | `?` | |
| #single | `43.03% <ø> (ø)` | :arrow_up: |

| [Impacted Files](https://codecov.io/gh/pandas-dev/pandas/pull/24184?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pandas/core/window.py](https://codecov.io/gh/pandas-dev/pandas/pull/24184/diff?src=pr&el=tree#diff-cGFuZGFzL2NvcmUvd2luZG93LnB5) | `28.93% <ø> (-67.47%)` | :arrow_down: |
| [pandas/io/formats/latex.py](https://codecov.io/gh/pandas-dev/pandas/pull/24184/diff?src=pr&el=tree#diff-cGFuZGFzL2lvL2Zvcm1hdHMvbGF0ZXgucHk=) | `0% <0%> (-100%)` | :arrow_down: |
| [pandas/core/categorical.py](https://codecov.io/gh/pandas-dev/pandas/pull/24184/diff?src=pr&el=tree#diff-cGFuZGFzL2NvcmUvY2F0ZWdvcmljYWwucHk=) | `0% <0%> (-100%)` | :arrow_down: |
| [pandas/io/sas/sas\_constants.py](https://codecov.io/gh/pandas-dev/pandas/pull/24184/diff?src=pr&el=tree#diff-cGFuZGFzL2lvL3Nhcy9zYXNfY29uc3RhbnRzLnB5) | `0% <0%> (-100%)` | :arrow_down: |
| [pandas/tseries/plotting.py](https://codecov.io/gh/pandas-dev/pandas/pull/24184/diff?src=pr&el=tree#diff-cGFuZGFzL3RzZXJpZXMvcGxvdHRpbmcucHk=) | `0% <0%> (-100%)` | :arrow_down: |
| [pandas/tseries/converter.py](https://codecov.io/gh/pandas-dev/pandas/pull/24184/diff?src=pr&el=tree#diff-cGFuZGFzL3RzZXJpZXMvY29udmVydGVyLnB5) | `0% <0%> (-100%)` | :arrow_down: |
| [pandas/io/formats/html.py](https://codecov.io/gh/pandas-dev/pandas/pull/24184/diff?src=pr&el=tree#diff-cGFuZGFzL2lvL2Zvcm1hdHMvaHRtbC5weQ==) | `0% <0%> (-98.62%)` | :arrow_down: |
| [pandas/core/groupby/categorical.py](https://codecov.io/gh/pandas-dev/pandas/pull/24184/diff?src=pr&el=tree#diff-cGFuZGFzL2NvcmUvZ3JvdXBieS9jYXRlZ29yaWNhbC5weQ==) | `0% <0%> (-95.46%)` | :arrow_down: |
| [pandas/io/sas/sas7bdat.py](https://codecov.io/gh/pandas-dev/pandas/pull/24184/diff?src=pr&el=tree#diff-cGFuZGFzL2lvL3Nhcy9zYXM3YmRhdC5weQ==) | `0% <0%> (-91.17%)` | :arrow_down: |
| [pandas/io/sas/sas\_xport.py](https://codecov.io/gh/pandas-dev/pandas/pull/24184/diff?src=pr&el=tree#diff-cGFuZGFzL2lvL3Nhcy9zYXNfeHBvcnQucHk=) | `0% <0%> (-90.15%)` | :arrow_down: |
| ... and [120 more](https://codecov.io/gh/pandas-dev/pandas/pull/24184/diff?src=pr&el=tree-more) | |

------

[Continue to review full report at Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/24184?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/24184?src=pr&el=footer). Last update [3dbb137...764f8a8](https://codecov.io/gh/pandas-dev/pandas/pull/24184?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).

# [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/24184?src=pr&el=h1) Report
> Merging [#24184](https://codecov.io/gh/pandas-dev/pandas/pull/24184?src=pr&el=desc) into [master](https://codecov.io/gh/pandas-dev/pandas/commit/62506ca3c37b6b0d84833a8329e50c000316250e?src=pr&el=desc) will **decrease** coverage by `0.01%`.
> The diff coverage is `100%`.

[![Impacted file tree graph](https://codecov.io/gh/pandas-dev/pandas/pull/24184/graphs/tree.svg?width=650&token=eZ4WkYLtcO&height=150&src=pr)](https://codecov.io/gh/pandas-dev/pandas/pull/24184?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master   #24184      +/-   ##
==========================================
- Coverage   92.38%   92.37%   -0.02%     
==========================================
  Files         166      166              
  Lines       52478    52382      -96     
==========================================
- Hits        48483    48389      -94     
+ Misses       3995     3993       -2
```

| Flag | Coverage Δ | |
|---|---|---|
| #multiple | `90.8% <100%> (-0.02%)` | :arrow_down: |
| #single | `43.01% <100%> (-0.03%)` | :arrow_down: |

| [Impacted Files](https://codecov.io/gh/pandas-dev/pandas/pull/24184?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pandas/core/window.py](https://codecov.io/gh/pandas-dev/pandas/pull/24184/diff?src=pr&el=tree#diff-cGFuZGFzL2NvcmUvd2luZG93LnB5) | `96.4% <100%> (-0.01%)` | :arrow_down: |
| [pandas/core/internals/construction.py](https://codecov.io/gh/pandas-dev/pandas/pull/24184/diff?src=pr&el=tree#diff-cGFuZGFzL2NvcmUvaW50ZXJuYWxzL2NvbnN0cnVjdGlvbi5weQ==) | `95.93% <0%> (-0.73%)` | :arrow_down: |
| [pandas/core/nanops.py](https://codecov.io/gh/pandas-dev/pandas/pull/24184/diff?src=pr&el=tree#diff-cGFuZGFzL2NvcmUvbmFub3BzLnB5) | `94.36% <0%> (-0.55%)` | :arrow_down: |
| [pandas/core/internals/concat.py](https://codecov.io/gh/pandas-dev/pandas/pull/24184/diff?src=pr&el=tree#diff-cGFuZGFzL2NvcmUvaW50ZXJuYWxzL2NvbmNhdC5weQ==) | `96.45% <0%> (-0.37%)` | :arrow_down: |
| [pandas/core/arrays/datetimes.py](https://codecov.io/gh/pandas-dev/pandas/pull/24184/diff?src=pr&el=tree#diff-cGFuZGFzL2NvcmUvYXJyYXlzL2RhdGV0aW1lcy5weQ==) | `97.68% <0%> (-0.34%)` | :arrow_down: |
| [pandas/core/indexes/datetimelike.py](https://codecov.io/gh/pandas-dev/pandas/pull/24184/diff?src=pr&el=tree#diff-cGFuZGFzL2NvcmUvaW5kZXhlcy9kYXRldGltZWxpa2UucHk=) | `98.52% <0%> (-0.32%)` | :arrow_down: |
| [pandas/core/internals/blocks.py](https://codecov.io/gh/pandas-dev/pandas/pull/24184/diff?src=pr&el=tree#diff-cGFuZGFzL2NvcmUvaW50ZXJuYWxzL2Jsb2Nrcy5weQ==) | `94.3% <0%> (-0.2%)` | :arrow_down: |
| [pandas/core/indexes/period.py](https://codecov.io/gh/pandas-dev/pandas/pull/24184/diff?src=pr&el=tree#diff-cGFuZGFzL2NvcmUvaW5kZXhlcy9wZXJpb2QucHk=) | `92.06% <0%> (-0.06%)` | :arrow_down: |
| [pandas/core/arrays/categorical.py](https://codecov.io/gh/pandas-dev/pandas/pull/24184/diff?src=pr&el=tree#diff-cGFuZGFzL2NvcmUvYXJyYXlzL2NhdGVnb3JpY2FsLnB5) | `95.43% <0%> (-0.05%)` | :arrow_down: |
| [pandas/core/indexes/category.py](https://codecov.io/gh/pandas-dev/pandas/pull/24184/diff?src=pr&el=tree#diff-cGFuZGFzL2NvcmUvaW5kZXhlcy9jYXRlZ29yeS5weQ==) | `98.61% <0%> (-0.04%)` | :arrow_down: |
| ... and [27 more](https://codecov.io/gh/pandas-dev/pandas/pull/24184/diff?src=pr&el=tree-more) | |

------

[Continue to review full report at Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/24184?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/24184?src=pr&el=footer). Last update [62506ca...8bedb9d](https://codecov.io/gh/pandas-dev/pandas/pull/24184?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).

And if you can please provide the output of the validation script in the description, as mentioned before, that would be helpful.
@datapythonista 
will take a look at why the pandas-dev.pandas check is failing at line 2275. Could be the changes to _doc_template used in the decorator @Appender(_doc_template) ...? 

```
2018-12-09T21:02:08.3673583Z ##[error]pandas/core/window.py(2275,): error SS04: pandas.core.window.EWM.mean: Summary contains heading whitespaces
2018-12-09T21:02:09.3424503Z Validate docstrings (GL06, SS04, PR03, PR05, EX04) DONE
2018-12-09T21:02:09.3426271Z ##[error]Bash exited with code '1'.
```
can you run `./scripts/validate_docstrings.py pandas.core.window.EWM.mean` and see how the docstring looks like? that should give you an idea of the problem.

I think the problem it's indeed removing the indentation `_doc_template`.
Fixed Summary contains heading whitespace for **pandas.core.window.EWM.mean**
Maintained fixes to **pandas.core.window.Expanding.apply** and **pandas.core.window.Rolling.apply** 
(see below)

**pandas.core.window.EWM.mean**
```
python scripts/validate_docstrings.py pandas.core.window.EWM.mean

################################################################################
################### Docstring (pandas.core.window.EWM.mean)  ###################
################################################################################

Exponential weighted moving average.

Returns
-------
same type as input

See Also
--------
Series.ewm
DataFrame.ewm

################################################################################
################################## Validation ##################################
################################################################################

3 Errors found:
        Parameters {*args, **kwargs} not documented
        Missing description for See Also "Series.ewm" reference
        Missing description for See Also "DataFrame.ewm" reference
2 Warnings found:
        No extended summary found
        No examples section found
```

**pandas.core.window.Expanding.apply** 
```
################################################################################
################ Docstring (pandas.core.window.Expanding.apply) ################
################################################################################

The expanding function apply.

Parameters
----------
func : function
    Must produce a single value from an ndarray input if ``raw=True``
    or a Series if ``raw=False``.
raw : bool, default None
    * ``False`` : passes each row or column as a Series to the
      function.
    * ``True`` or ``None`` : the passed function will receive ndarray
      objects instead.
      If you are just applying a NumPy reduction function this will
      achieve much better performance.

    The `raw` parameter is required and will show a FutureWarning if
    not passed. In the future `raw` will default to False.

    .. versionadded:: 0.23.0
*args, **kwargs :
    Arguments and keyword arguments to be passed into func.

Returns
-------
Same type as input

See Also
--------
Series.expanding : Series expanding.
DataFrame.expanding : DataFrame expanding.

################################################################################
################################## Validation ##################################
################################################################################

3 Errors found:
        Parameters {kwargs, args} not documented
        Unknown parameters {*args, **kwargs :}
        Parameter "raw" description should start with a capital letter
2 Warnings found:
        No extended summary found
        No examples section found
```

**pandas.core.window.Rolling.apply**
```
################################################################################
################# Docstring (pandas.core.window.Rolling.apply) #################
################################################################################

The rolling function apply.

Parameters
----------
func : function
    Must produce a single value from an ndarray input if ``raw=True``
    or a Series if ``raw=False``.
raw : bool, default None
    * ``False`` : passes each row or column as a Series to the
      function.
    * ``True`` or ``None`` : the passed function will receive ndarray
      objects instead.
      If you are just applying a NumPy reduction function this will
      achieve much better performance.

    The `raw` parameter is required and will show a FutureWarning if
    not passed. In the future `raw` will default to False.

    .. versionadded:: 0.23.0
*args, **kwargs :
    Arguments and keyword arguments to be passed into func.

Returns
-------
Same type as input

See Also
--------
Series.rolling : Series rolling.
DataFrame.rolling : DataFrame rolling.

################################################################################
################################## Validation ##################################
################################################################################

3 Errors found:
        Parameters {args, kwargs} not documented
        Unknown parameters {*args, **kwargs :}
        Parameter "raw" description should start with a capital letter
2 Warnings found:
        No extended summary found
        No examples section found
```
@datapythonista looks like the fixes have passed the checks :)  
Yea I think that should work more universally. If you can try and check tenderer output would be preferable if it works 

Sent from my iPhone

> On Dec 11, 2018, at 12:34 PM, LJ <notifications@github.com> wrote:
> 
> @LJArendse commented on this pull request.
> 
> In pandas/core/window.py:
> 
> >  
> -    \*args and \*\*kwargs are passed to the function""")
> +    Returns
> Hey @WillAyd,
> I did it in the _shared_docs['apply'] because the @Appender(_doc_template) decorator on the window.Expanding/Rolling.apply methods is what threw the original validation error No Returns section found. I was also not sure whether my changes, for window.Expanding/Rolling.apply, are relevant for the other functions wrapped with @Appender(_doc_template).
> 
> I see your point though, I am happy to update the _doc_template
> From:
> 
> _doc_template = """
>         Returns
>         -------
>         same type as input
> 
>         See Also
>         --------
>         Series.%(name)s
>         DataFrame.%(name)s
> """
> To:
> 
> _doc_template = """
>         Returns
>         -------
>         Series or DataFrame
>                 Return type is determined by the caller.
> 
>         See Also
>         --------
>         Series.%(name)s : Series %(name)s.
>         DataFrame.%(name)s : DataFrame %(name)s.
> """
> . . . if you agree with my modification to _doc_template ?
> 
> —
> You are receiving this because you were mentioned.
> Reply to this email directly, view it on GitHub, or mute the thread.

@WillAyd Sounds good, will give it a try and push through my findings
Just an update, the following methods make use of the ```_doc_template``` with```@Appender(_doc_template)```:

- python scripts/validate_docstrings.py pandas.core.window.Rolling.max
- python scripts/validate_docstrings.py pandas.core.window.Rolling.skew 
- python scripts/validate_docstrings.py pandas.core.window.Rolling.cov
- python scripts/validate_docstrings.py pandas.core.window.Expanding.max
- python scripts/validate_docstrings.py pandas.core.window.Expanding.skew 
- python scripts/validate_docstrings.py pandas.core.window.Expanding.cov
- python scripts/validate_docstrings.py pandas.core.window.EWN.mean
- python scripts/validate_docstrings.py pandas.core.window.EWN.std
- python scripts/validate_docstrings.py pandas.core.window.EWN.var
- python scripts/validate_docstrings.py pandas.core.window.EWN.cov
- python scripts/validate_docstrings.py pandas.core.window.EWN.corr

Busy validating that the generic ```_doc_template``` makes sense for each. At a glance though, it may be better to write out specific docstrings for each operation (e.g. have a _shared_docs['max'] for the max operation)? What do you think @WillAyd? Or do you think the generic ```_doc_template``` is sufficient?


The doc template only controls the See Also and Returns sections which I think are fine to use a shared template for. If you think they are better separate may be fine as well but better in a follow up PR

Sent from my iPhone

> On Dec 12, 2018, at 8:58 AM, LJ <notifications@github.com> wrote:
> 
> Just an update, the following methods make use of the _doc_template with@Appender(_doc_template):
> 
> python scripts/validate_docstrings.py pandas.core.window.Rolling.max
> python scripts/validate_docstrings.py pandas.core.window.Rolling.skew
> python scripts/validate_docstrings.py pandas.core.window.Rolling.cov
> python scripts/validate_docstrings.py pandas.core.window.Expanding.max
> python scripts/validate_docstrings.py pandas.core.window.Expanding.skew
> python scripts/validate_docstrings.py pandas.core.window.Expanding.cov
> python scripts/validate_docstrings.py pandas.core.window.EWN.mean
> python scripts/validate_docstrings.py pandas.core.window.EWN.std
> python scripts/validate_docstrings.py pandas.core.window.EWN.var
> python scripts/validate_docstrings.py pandas.core.window.EWN.cov
> python scripts/validate_docstrings.py pandas.core.window.EWN.corr
> Busy validating that the generic _doc_template makes sense for each. At a glance though, it may be better to write out specific docstrings for each operation (e.g. have a _shared_docs['max'] for the max operation)? What do you think @WillAyd?
> 
> —
> You are receiving this because you were mentioned.
> Reply to this email directly, view it on GitHub, or mute the thread.

@WillAyd I agree, updated the _doc_template as discussed.
what is the status of this? anything pending? @LJArendse @WillAyd 
Hi @datapythonista 
The work for fixing the docstring of window.Expanding/Rolling.apply is done. 

Additional to this, from what I understand, I will be investigating the best way to add ```*args```, ```**kwargs``` to ```_doc_template```. For the moment it is looking like I will add ```*args```, ```**kwargs``` to ```_doc_template``` and then modify the docstrings of _skew_, _cov_, and _corr_. If you still want me to do this investigation, should the title of the pull request be modified to reflect these additional changes being made?

I will only be able to work on this after the 2nd of Jan.
In the progress of adding the *args and **kwargs parameters to the following:
```
rolling.max - *args and **kwargs
expanding.max - *args and **kwargs

rolling.cov - **kwargs
expanding.cov - **kwargs
EWM.cov - **kwargs

EWM.mean - *args and **kwargs
EWM.std - *args and **kwargs
EWM.var - *args and **kwargs
EWM.corr - **kwargs
```
lgtm, let us know when you're done.

And feel free to leave some of the docstring fixes to other PRs, in general it's better to have smaller PRs, than a large one.

@WillAyd if you can take a look.
Done. I am busy uploading the before and after validation output for each updated docstring. 

### Expanding.apply 

**Before**:
python scripts/validate_docstrings.py pandas.core.window.Expanding.apply
```
################################################################################
################ Docstring (pandas.core.window.Expanding.apply) ################
################################################################################

expanding function apply.

Parameters
----------
func : function
    Must produce a single value from an ndarray input if ``raw=True``
    or a Series if ``raw=False``
raw : bool, default None
    * ``False`` : passes each row or column as a Series to the
      function.
    * ``True`` or ``None`` : the passed function will receive ndarray
      objects instead.
      If you are just applying a NumPy reduction function this will
      achieve much better performance.

    The `raw` parameter is required and will show a FutureWarning if
    not passed. In the future `raw` will default to False.

    .. versionadded:: 0.23.0

\*args and \*\*kwargs are passed to the function
        Returns
        -------
        same type as input

        See Also
        --------
        Series.expanding
        DataFrame.expanding

################################################################################
################################## Validation ##################################
################################################################################

8 Errors found:
        Summary does not start with a capital letter
        Parameters {kwargs, args} not documented
        Unknown parameters {\*args and \*\*kwargs are passed to the function}
        Parameter "func" description should finish with "."
        Parameter "raw" description should start with a capital letter
        Parameter "\*args and \*\*kwargs are passed to the function" has no type
        Parameter "\*args and \*\*kwargs are passed to the function" description should finish with "."
        No Returns section found
3 Warnings found:
        No extended summary found
        See Also section not found
        No examples section found

```

**After**:
```
################################################################################
################ Docstring (pandas.core.window.Expanding.apply) ################
################################################################################

The expanding function's apply function.

Parameters
----------
func : function
    Must produce a single value from an ndarray input if ``raw=True``
    or a Series if ``raw=False``.
raw : bool, default None
    * ``False`` : passes each row or column as a Series to the
      function.
    * ``True`` or ``None`` : the passed function will receive ndarray
      objects instead.
      If you are just applying a NumPy reduction function this will
      achieve much better performance.

    The `raw` parameter is required and will show a FutureWarning if
    not passed. In the future `raw` will default to False.

    .. versionadded:: 0.23.0
*args, **kwargs
    Arguments and keyword arguments to be passed into func.

Returns
-------
Series or DataFrame
    Return type is determined by the caller.

See Also
--------
Series.expanding : Series expanding.
DataFrame.expanding : DataFrame expanding.

################################################################################
################################## Validation ##################################
################################################################################

3 Errors found:
        Parameters {kwargs, args} not documented
        Unknown parameters {*args, **kwargs}
        Parameter "raw" description should start with a capital letter
2 Warnings found:
        No extended summary found
        No examples section found
```

Final output:
![expanding_apply](https://user-images.githubusercontent.com/13453134/50767968-7687b180-1287-11e9-844a-ad6a2861a26a.PNG)


### Rolling.apply

**Before**:
python scripts/validate_docstrings.py pandas.core.window.Rolling.apply
```
################################################################################
################# Docstring (pandas.core.window.Rolling.apply) #################
################################################################################

rolling function apply.

Parameters
----------
func : function
    Must produce a single value from an ndarray input if ``raw=True``
    or a Series if ``raw=False``
raw : bool, default None
    * ``False`` : passes each row or column as a Series to the
      function.
    * ``True`` or ``None`` : the passed function will receive ndarray
      objects instead.
      If you are just applying a NumPy reduction function this will
      achieve much better performance.

    The `raw` parameter is required and will show a FutureWarning if
    not passed. In the future `raw` will default to False.

    .. versionadded:: 0.23.0

\*args and \*\*kwargs are passed to the function
        Returns
        -------
        same type as input

        See Also
        --------
        Series.rolling
        DataFrame.rolling

################################################################################
################################## Validation ##################################
################################################################################

8 Errors found:
        Summary does not start with a capital letter
        Parameters {args, kwargs} not documented
        Unknown parameters {\*args and \*\*kwargs are passed to the function}
        Parameter "func" description should finish with "."
        Parameter "raw" description should start with a capital letter
        Parameter "\*args and \*\*kwargs are passed to the function" has no type
        Parameter "\*args and \*\*kwargs are passed to the function" description should finish with "."
        No Returns section found
3 Warnings found:
        No extended summary found
        See Also section not found
        No examples section found
```

**After**:
```
################################################################################
################# Docstring (pandas.core.window.Rolling.apply) #################
################################################################################

The rolling function's apply function.

Parameters
----------
func : function
    Must produce a single value from an ndarray input if ``raw=True``
    or a Series if ``raw=False``.
raw : bool, default None
    * ``False`` : passes each row or column as a Series to the
      function.
    * ``True`` or ``None`` : the passed function will receive ndarray
      objects instead.
      If you are just applying a NumPy reduction function this will
      achieve much better performance.

    The `raw` parameter is required and will show a FutureWarning if
    not passed. In the future `raw` will default to False.

    .. versionadded:: 0.23.0
*args, **kwargs
    Arguments and keyword arguments to be passed into func.

Returns
-------
Series or DataFrame
    Return type is determined by the caller.

See Also
--------
Series.rolling : Series rolling.
DataFrame.rolling : DataFrame rolling.

################################################################################
################################## Validation ##################################
################################################################################

3 Errors found:
        Parameters {args, kwargs} not documented
        Unknown parameters {*args, **kwargs}
        Parameter "raw" description should start with a capital letter
2 Warnings found:
        No extended summary found
        No examples section found
```

Final output: 
![rolling_apply](https://user-images.githubusercontent.com/13453134/50767937-5821b600-1287-11e9-8775-903d070ec5e5.PNG)

The following functions had ```*args``` and ```**kwargs``` added to their docstring:
```Rolling.max``` 
```Expanding.max```  
```EWM.mean``` 
```EWM.std``` 
```EWM.var``` 

I can upload the full before and after validation output if you want (I did not want to upload for each as it will make this thread extra long - unless you are okay with that?). 

The final output for each looks as follows:
![rolling_max](https://user-images.githubusercontent.com/13453134/50768300-91a6f100-1288-11e9-9e54-b49b5e370842.PNG)
![expanding_max](https://user-images.githubusercontent.com/13453134/50768309-98356880-1288-11e9-8a7c-9ac5ad3ec246.PNG)
![ewm_mean](https://user-images.githubusercontent.com/13453134/50768314-9d92b300-1288-11e9-8d3d-777d09895c48.PNG)
![ewm_std](https://user-images.githubusercontent.com/13453134/50768317-a3889400-1288-11e9-99ea-fd5bf62912e7.PNG)
![ewm_var](https://user-images.githubusercontent.com/13453134/50768325-a84d4800-1288-11e9-9a8d-44a13b48987f.PNG)


The following functions had ```**kwargs``` added to their docstring:
```Rolling.skew```                          
```Expanding.skew```                        
```Rolling.cov``` 
```Expanding.cov```  
```EWM.cov``` 
```EWM.corr``` 

I can upload the full before and after validation output if you want (I did not want to upload for each as it will make the thread extra long - unless you are okay with that?). 

The final output for each looks as follows:
![rolling_skew](https://user-images.githubusercontent.com/13453134/50768512-607af080-1289-11e9-8691-5754249be236.PNG)
![expanding_skew](https://user-images.githubusercontent.com/13453134/50768526-67096800-1289-11e9-9dc1-a15b06ab4da0.PNG)
![rolling_cov](https://user-images.githubusercontent.com/13453134/50768553-7f798280-1289-11e9-9d78-53de64b202d1.PNG)
![expanding_cov](https://user-images.githubusercontent.com/13453134/50768564-886a5400-1289-11e9-9e91-7b7d45ada033.PNG)
![ewm_cov](https://user-images.githubusercontent.com/13453134/50768574-9029f880-1289-11e9-8a4e-256bb6de0808.PNG)
![ewm_corr](https://user-images.githubusercontent.com/13453134/50768588-99b36080-1289-11e9-8f68-fd6e795c529c.PNG)



Thanks @LJArendse