diff --git a/ci/code_checks.sh b/ci/code_checks.sh index 230b4d3daf243..195659645b7c6 100755 --- a/ci/code_checks.sh +++ b/ci/code_checks.sh @@ -130,31 +130,11 @@ if [[ -z "$CHECK" || "$CHECK" == "docstrings" ]]; then -i "pandas.RangeIndex.start SA01" \ -i "pandas.RangeIndex.step SA01" \ -i "pandas.RangeIndex.stop SA01" \ - -i "pandas.Series.cat.add_categories PR01,PR02" \ - -i "pandas.Series.cat.as_ordered PR01" \ - -i "pandas.Series.cat.as_unordered PR01" \ - -i "pandas.Series.cat.remove_categories PR01,PR02" \ - -i "pandas.Series.cat.remove_unused_categories PR01" \ - -i "pandas.Series.cat.rename_categories PR01,PR02" \ - -i "pandas.Series.cat.reorder_categories PR01,PR02" \ - -i "pandas.Series.cat.set_categories PR01,PR02" \ - -i "pandas.Series.dt.as_unit PR01,PR02" \ - -i "pandas.Series.dt.ceil PR01,PR02" \ - -i "pandas.Series.dt.day_name PR01,PR02" \ - -i "pandas.Series.dt.floor PR01,PR02" \ -i "pandas.Series.dt.freq GL08" \ -i "pandas.Series.dt.microseconds SA01" \ - -i "pandas.Series.dt.month_name PR01,PR02" \ -i "pandas.Series.dt.nanoseconds SA01" \ - -i "pandas.Series.dt.normalize PR01" \ -i "pandas.Series.dt.qyear GL08" \ - -i "pandas.Series.dt.round PR01,PR02" \ -i "pandas.Series.dt.seconds SA01" \ - -i "pandas.Series.dt.strftime PR01,PR02" \ - -i "pandas.Series.dt.to_period PR01,PR02" \ - -i "pandas.Series.dt.total_seconds PR01" \ - -i "pandas.Series.dt.tz_convert PR01,PR02" \ - -i "pandas.Series.dt.tz_localize PR01,PR02" \ -i "pandas.Series.dt.unit GL08" \ -i "pandas.Series.ge SA01" \ -i "pandas.Series.gt SA01" \ diff --git a/scripts/validate_docstrings.py b/scripts/validate_docstrings.py index 55acfaac4d843..425028e085d73 100755 --- a/scripts/validate_docstrings.py +++ b/scripts/validate_docstrings.py @@ -240,6 +240,32 @@ def pandas_validate(func_name: str): dict Information about the docstring and the errors found. """ + + def _get_delegated_func_name(func_name: str) -> str: + method_name = func_name.rsplit(".", 1)[-1] + + if "Series.cat" in func_name: + return "pandas.core.arrays.categorical.Categorical." + method_name + if "Series.dt" in func_name: + if method_name in ["as_unit", "ceil", "floor", "round"]: + return "pandas.core.arrays.datetimelike.TimelikeOps." + method_name + if method_name in [ + "day_name", + "month_name", + "normalize", + "to_period", + "tz_convert", + "tz_localize" + ]: + return "pandas.core.arrays.datetimes.DatetimeArray." + method_name + if method_name in ["strftime"]: + return "pandas.core.arrays.datetimelike.DatelikeOps." + method_name + if method_name in ["total_seconds"]: + return "pandas.core.arrays.timedeltas.TimedeltaArray." + method_name + + return func_name + + func_name = _get_delegated_func_name(func_name) func_obj = Validator._load_obj(func_name) # Some objects are instances, e.g. IndexSlice, which numpydoc can't validate doc_obj = get_doc_object(func_obj, doc=func_obj.__doc__)