From e6f3a74991ffd79f49fde12463ea8158ae0fed87 Mon Sep 17 00:00:00 2001 From: 03darius <170000906+03darius@users.noreply.github.com> Date: Tue, 4 Jun 2024 07:37:55 +0800 Subject: [PATCH 1/2] Fixed false negative PR01, PR02 errors in Series --- ci/code_checks.sh | 20 -------------------- scripts/validate_docstrings.py | 26 ++++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 20 deletions(-) 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..543cb0de2d1e6 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__) From 01ad3f9543e7253eaba283c2e1d089afa35324cc Mon Sep 17 00:00:00 2001 From: 03darius <170000906+03darius@users.noreply.github.com> Date: Tue, 4 Jun 2024 07:38:30 +0800 Subject: [PATCH 2/2] Fixed false negative PR01, PR02 errors in Series --- scripts/validate_docstrings.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/validate_docstrings.py b/scripts/validate_docstrings.py index 543cb0de2d1e6..425028e085d73 100755 --- a/scripts/validate_docstrings.py +++ b/scripts/validate_docstrings.py @@ -247,7 +247,7 @@ def _get_delegated_func_name(func_name: str) -> str: 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",]: + if method_name in ["as_unit", "ceil", "floor", "round"]: return "pandas.core.arrays.datetimelike.TimelikeOps." + method_name if method_name in [ "day_name", @@ -255,12 +255,12 @@ def _get_delegated_func_name(func_name: str) -> str: "normalize", "to_period", "tz_convert", - "tz_localize", + "tz_localize" ]: return "pandas.core.arrays.datetimes.DatetimeArray." + method_name - if method_name in ["strftime",]: + if method_name in ["strftime"]: return "pandas.core.arrays.datetimelike.DatelikeOps." + method_name - if method_name in ["total_seconds",]: + if method_name in ["total_seconds"]: return "pandas.core.arrays.timedeltas.TimedeltaArray." + method_name return func_name