From 07a004dad0eb512f3c4555310a4e8c33162f3e91 Mon Sep 17 00:00:00 2001 From: HH-MWB Date: Sun, 29 Mar 2020 00:27:24 -0400 Subject: [PATCH 1/6] use doc decorator for __doc__ in pandas/core/arrays/datetimelike.py --- pandas/core/arrays/datetimelike.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pandas/core/arrays/datetimelike.py b/pandas/core/arrays/datetimelike.py index a153b4e06157b..d8f08f6c585f1 100644 --- a/pandas/core/arrays/datetimelike.py +++ b/pandas/core/arrays/datetimelike.py @@ -14,7 +14,7 @@ from pandas.compat import set_function_name from pandas.compat.numpy import function as nv from pandas.errors import AbstractMethodError, NullFrequencyError, PerformanceWarning -from pandas.util._decorators import Appender, Substitution +from pandas.util._decorators import Appender, Substitution, doc from pandas.util._validators import validate_fillna_kwargs from pandas.core.dtypes.common import ( @@ -770,7 +770,7 @@ def _from_factorized(cls, values, original): def _values_for_argsort(self): return self._data - @Appender(ExtensionArray.shift.__doc__) + @doc(ExtensionArray.shift) def shift(self, periods=1, fill_value=None, axis=0): if not self.size or periods == 0: return self.copy() From e702be8c7c0c45d6e58c742aa5be9e0178b3d4d1 Mon Sep 17 00:00:00 2001 From: HH-MWB Date: Sun, 29 Mar 2020 00:48:30 -0400 Subject: [PATCH 2/6] Revert "use doc decorator for __doc__ in pandas/core/arrays/datetimelike.py" This reverts commit 07a004dad0eb512f3c4555310a4e8c33162f3e91. --- pandas/core/arrays/datetimelike.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pandas/core/arrays/datetimelike.py b/pandas/core/arrays/datetimelike.py index d8f08f6c585f1..a153b4e06157b 100644 --- a/pandas/core/arrays/datetimelike.py +++ b/pandas/core/arrays/datetimelike.py @@ -14,7 +14,7 @@ from pandas.compat import set_function_name from pandas.compat.numpy import function as nv from pandas.errors import AbstractMethodError, NullFrequencyError, PerformanceWarning -from pandas.util._decorators import Appender, Substitution, doc +from pandas.util._decorators import Appender, Substitution from pandas.util._validators import validate_fillna_kwargs from pandas.core.dtypes.common import ( @@ -770,7 +770,7 @@ def _from_factorized(cls, values, original): def _values_for_argsort(self): return self._data - @doc(ExtensionArray.shift) + @Appender(ExtensionArray.shift.__doc__) def shift(self, periods=1, fill_value=None, axis=0): if not self.size or periods == 0: return self.copy() From d53dd8dd98197758bf37e3a5f1ad48dc2ac52cf7 Mon Sep 17 00:00:00 2001 From: HH-MWB Date: Sun, 29 Mar 2020 00:49:26 -0400 Subject: [PATCH 3/6] User doc decorator for __doc__ in pandas/core/groupby/generic.py --- pandas/core/groupby/generic.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pandas/core/groupby/generic.py b/pandas/core/groupby/generic.py index b7c071a8dfbbf..093c925acbc49 100644 --- a/pandas/core/groupby/generic.py +++ b/pandas/core/groupby/generic.py @@ -31,7 +31,7 @@ from pandas._libs import Timestamp, lib from pandas._typing import FrameOrSeries -from pandas.util._decorators import Appender, Substitution +from pandas.util._decorators import Appender, Substitution, doc from pandas.core.dtypes.cast import ( maybe_cast_result, @@ -633,7 +633,7 @@ def nunique(self, dropna: bool = True) -> Series: result = Series(res, index=ri, name=self._selection_name) return self._reindex_output(result, fill_value=0) - @Appender(Series.describe.__doc__) + @doc(Series.describe) def describe(self, **kwargs): result = self.apply(lambda x: x.describe(**kwargs)) if self.axis == 1: From 9d3c80f9e53c1e8c75fd9f7fec36d8bcb6ce2b06 Mon Sep 17 00:00:00 2001 From: HH-MWB Date: Sun, 29 Mar 2020 01:32:39 -0400 Subject: [PATCH 4/6] User doc decorator for __doc__ in pandas/core/groupby/groupby.py --- pandas/core/groupby/groupby.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pandas/core/groupby/groupby.py b/pandas/core/groupby/groupby.py index 86171944d0c78..ebdb0062491be 100644 --- a/pandas/core/groupby/groupby.py +++ b/pandas/core/groupby/groupby.py @@ -37,7 +37,7 @@ class providing the base-class of operations. from pandas.compat import set_function_name from pandas.compat.numpy import function as nv from pandas.errors import AbstractMethodError -from pandas.util._decorators import Appender, Substitution, cache_readonly +from pandas.util._decorators import Appender, Substitution, cache_readonly, doc from pandas.core.dtypes.cast import maybe_cast_result from pandas.core.dtypes.common import ( @@ -1420,7 +1420,7 @@ def ohlc(self) -> DataFrame: """ return self._apply_to_column_groupbys(lambda x: x._cython_agg_general("ohlc")) - @Appender(DataFrame.describe.__doc__) + @doc(DataFrame.describe) def describe(self, **kwargs): with _group_selection_context(self): result = self.apply(lambda x: x.describe(**kwargs)) @@ -2509,7 +2509,7 @@ def _reindex_output( GroupBy._add_numeric_operations() -@Appender(GroupBy.__doc__) +@doc(GroupBy) def get_groupby( obj: NDFrame, by: Optional[_KeysArgType] = None, From e025db4d6d594409046a88aa4acec8571f24f313 Mon Sep 17 00:00:00 2001 From: HH-MWB Date: Sun, 29 Mar 2020 11:54:51 -0400 Subject: [PATCH 5/6] User doc decorator for __doc__ in pandas/core/indexes/base.py --- pandas/core/indexes/base.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pandas/core/indexes/base.py b/pandas/core/indexes/base.py index f6a422180b0df..2a5dfff35e4a5 100644 --- a/pandas/core/indexes/base.py +++ b/pandas/core/indexes/base.py @@ -15,7 +15,7 @@ from pandas._typing import Label from pandas.compat import set_function_name from pandas.compat.numpy import function as nv -from pandas.util._decorators import Appender, Substitution, cache_readonly +from pandas.util._decorators import Appender, Substitution, cache_readonly, doc from pandas.core.dtypes import concat as _concat from pandas.core.dtypes.cast import ( @@ -3835,7 +3835,7 @@ def values(self) -> np.ndarray: return self._data.view(np.ndarray) @cache_readonly - @Appender(IndexOpsMixin.array.__doc__) # type: ignore + @doc(IndexOpsMixin.array) # type: ignore def array(self) -> ExtensionArray: array = self._data if isinstance(array, np.ndarray): @@ -3876,7 +3876,7 @@ def _get_engine_target(self) -> np.ndarray: """ return self._values - @Appender(IndexOpsMixin.memory_usage.__doc__) + @doc(IndexOpsMixin.memory_usage) def memory_usage(self, deep: bool = False) -> int: result = super().memory_usage(deep=deep) From 14be1e6a0c3f808425b8b1f92f1a7607f2ba0439 Mon Sep 17 00:00:00 2001 From: HH-MWB Date: Sun, 29 Mar 2020 12:57:52 -0400 Subject: [PATCH 6/6] User doc decorator for __doc__ in pandas/core/indexes/category.py --- pandas/core/indexes/category.py | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/pandas/core/indexes/category.py b/pandas/core/indexes/category.py index 2cae09ed08f36..77c4e9e7a3330 100644 --- a/pandas/core/indexes/category.py +++ b/pandas/core/indexes/category.py @@ -9,7 +9,7 @@ from pandas._libs.hashtable import duplicated_int64 from pandas._libs.lib import no_default from pandas._typing import Label -from pandas.util._decorators import Appender, cache_readonly +from pandas.util._decorators import Appender, cache_readonly, doc from pandas.core.dtypes.common import ( ensure_platform_int, @@ -241,7 +241,7 @@ def _simple_new(cls, values: Categorical, name: Label = None): # -------------------------------------------------------------------- - @Appender(Index._shallow_copy.__doc__) + @doc(Index._shallow_copy) def _shallow_copy(self, values=None, name: Label = no_default): name = self.name if name is no_default else name @@ -354,7 +354,7 @@ def _has_complex_internals(self) -> bool: # used to avoid libreduction code paths, which raise or require conversion return True - @Appender(Index.__contains__.__doc__) + @doc(Index.__contains__) def __contains__(self, key: Any) -> bool: # if key is a NaN, check if any NaN is in self. if is_scalar(key) and isna(key): @@ -363,7 +363,7 @@ def __contains__(self, key: Any) -> bool: hash(key) return contains(self, key, container=self._engine) - @Appender(Index.astype.__doc__) + @doc(Index.astype) def astype(self, dtype, copy=True): if is_interval_dtype(dtype): from pandas import IntervalIndex @@ -382,7 +382,7 @@ def _isnan(self): """ return if each value is nan""" return self._data.codes == -1 - @Appender(Index.fillna.__doc__) + @doc(Index.fillna) def fillna(self, value, downcast=None): self._assert_can_do_op(value) return CategoricalIndex(self._data.fillna(value), name=self.name) @@ -395,7 +395,7 @@ def _engine(self): codes = self.codes return self._engine_type(lambda: codes, len(self)) - @Appender(Index.unique.__doc__) + @doc(Index.unique) def unique(self, level=None): if level is not None: self._validate_index_level(level) @@ -404,7 +404,7 @@ def unique(self, level=None): # of result, not self. return type(self)._simple_new(result, name=self.name) - @Appender(Index.duplicated.__doc__) + @doc(Index.duplicated) def duplicated(self, keep="first"): codes = self.codes.astype("i8") return duplicated_int64(codes, keep) @@ -418,7 +418,7 @@ def _maybe_cast_indexer(self, key): code = self.codes.dtype.type(code) return code - @Appender(Index.where.__doc__) + @doc(Index.where) def where(self, cond, other=None): # TODO: Investigate an alternative implementation with # 1. copy the underlying Categorical @@ -569,7 +569,7 @@ def get_indexer_non_unique(self, target): indexer, missing = self._engine.get_indexer_non_unique(codes) return ensure_platform_int(indexer), missing - @Appender(Index._convert_list_indexer.__doc__) + @doc(Index._convert_list_indexer) def _convert_list_indexer(self, keyarr): # Return our indexer or raise if all of the values are not included in # the categories @@ -586,7 +586,7 @@ def _convert_list_indexer(self, keyarr): return self.get_indexer(keyarr) - @Appender(Index._convert_arr_indexer.__doc__) + @doc(Index._convert_arr_indexer) def _convert_arr_indexer(self, keyarr): keyarr = com.asarray_tuplesafe(keyarr) @@ -595,7 +595,7 @@ def _convert_arr_indexer(self, keyarr): return self._shallow_copy(keyarr) - @Appender(Index._convert_index_indexer.__doc__) + @doc(Index._convert_index_indexer) def _convert_index_indexer(self, keyarr): return self._shallow_copy(keyarr) @@ -608,7 +608,7 @@ def take_nd(self, *args, **kwargs): ) return self.take(*args, **kwargs) - @Appender(Index._maybe_cast_slice_bound.__doc__) + @doc(Index._maybe_cast_slice_bound) def _maybe_cast_slice_bound(self, label, side, kind): if kind == "loc": return label