Skip to content

Docstring and method behaviour differ #20560

Closed
@tv3141

Description

@tv3141
    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.

def _validate_n(self, n):

_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:

def __init__(self, n=1, normalize=False, week=0, weekday=0):
self.n = self._validate_n(n)
self.normalize = normalize
self.weekday = weekday
self.week = week
if self.n == 0:
raise ValueError('N cannot be 0')

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions