Docstring and method behaviour differ
```python
    def _validate_n(self, n):
        """
        Require that `n` be a nonzero integer.
        Parameters
        ----------
        n : int
        Returns
        -------
        nint : int
        Raises
        ------
        TypeError if `int(n)` raises
        ValueError if n != int(n)
        """
        try:
            nint = int(n)
        except (ValueError, TypeError):
            raise TypeError('`n` argument must be an integer, '
                            'got {ntype}'.format(ntype=type(n)))
        if n != nint:
            raise ValueError('`n` argument must be an integer, '
                             'got {n}'.format(n=n))
        return nint
```
`_validate_n` does not test whether `n` is nonzero.

https://github.com/pandas-dev/pandas/blob/601b8c9c45b3cb06ee4ceaf34456bbfd3f5e5d1d/pandas/_libs/tslibs/offsets.pyx#L355

`_validate_n` is only used in https://github.com/pandas-dev/pandas/blob/601b8c9c45b3cb06ee4ceaf34456bbfd3f5e5d1d/pandas/tseries/offsets.py

It may be that `n` does not have to be nonzero. Issue #20517 investigates whether `n` actually has to be nonzero in a case where `n` is tested again to be nonzero after calling `_validate_n`:

https://github.com/pandas-dev/pandas/blob/601b8c9c45b3cb06ee4ceaf34456bbfd3f5e5d1d/pandas/tseries/offsets.py#L1458-L1465

