diff --git a/pandas/core/indexes/base.py b/pandas/core/indexes/base.py index f5f793c507480..22ba317e78e63 100644 --- a/pandas/core/indexes/base.py +++ b/pandas/core/indexes/base.py @@ -505,9 +505,8 @@ def _get_attributes_dict(self): """ return {k: getattr(self, k, None) for k in self._attributes} - _index_shared_docs[ - "_shallow_copy" - ] = """ + def _shallow_copy(self, values=None, **kwargs): + """ Create a new Index with the same class as the caller, don't copy the data, use the same object attributes with passed in attributes taking precedence. @@ -519,9 +518,6 @@ def _get_attributes_dict(self): values : the values to create the new Index, optional kwargs : updates the default attributes for this Index """ - - @Appender(_index_shared_docs["_shallow_copy"]) - def _shallow_copy(self, values=None, **kwargs): if values is None: values = self.values @@ -659,9 +655,8 @@ def view(self, cls=None): result._id = self._id return result - _index_shared_docs[ - "astype" - ] = """ + def astype(self, dtype, copy=True): + """ Create an Index with values cast to dtypes. The class of a new Index is determined by dtype. When conversion is impossible, a ValueError exception is raised. @@ -683,9 +678,6 @@ def view(self, cls=None): Index Index with values cast to specified dtype. """ - - @Appender(_index_shared_docs["astype"]) - def astype(self, dtype, copy=True): if is_dtype_equal(self.dtype, dtype): return self.copy() if copy else self @@ -823,9 +815,8 @@ def repeat(self, repeats, axis=None): # -------------------------------------------------------------------- # Copying Methods - _index_shared_docs[ - "copy" - ] = """ + def copy(self, name=None, deep=False, dtype=None, **kwargs): + """ Make a copy of this object. Name and dtype sets those attributes on the new object. @@ -844,9 +835,6 @@ def repeat(self, repeats, axis=None): In most cases, there should be no functional difference from using ``deep``, but if ``deep`` is passed it will attempt to deepcopy. """ - - @Appender(_index_shared_docs["copy"]) - def copy(self, name=None, deep=False, dtype=None, **kwargs): if deep: new_index = self._shallow_copy(self._data.copy()) else: @@ -1537,9 +1525,8 @@ def droplevel(self, level=0): verify_integrity=False, ) - _index_shared_docs[ - "_get_grouper_for_level" - ] = """ + def _get_grouper_for_level(self, mapper, level=None): + """ Get index grouper corresponding to an index level Parameters @@ -1558,9 +1545,6 @@ def droplevel(self, level=0): uniques : Index or None Index of unique values for level. """ - - @Appender(_index_shared_docs["_get_grouper_for_level"]) - def _get_grouper_for_level(self, mapper, level=None): assert level is None or level == 0 if mapper is None: grouper = self @@ -2156,9 +2140,8 @@ def notna(self): notnull = notna - _index_shared_docs[ - "fillna" - ] = """ + def fillna(self, value=None, downcast=None): + """ Fill NA/NaN values with the specified value. Parameters @@ -2175,9 +2158,6 @@ def notna(self): ------- filled : Index """ - - @Appender(_index_shared_docs["fillna"]) - def fillna(self, value=None, downcast=None): self._assert_can_do_op(value) if self.hasnans: result = self.putmask(self._isnan, value) @@ -2187,9 +2167,8 @@ def fillna(self, value=None, downcast=None): return Index(result, name=self.name) return self._shallow_copy() - _index_shared_docs[ - "dropna" - ] = """ + def dropna(self, how="any"): + """ Return Index without NA/NaN values. Parameters @@ -2202,9 +2181,6 @@ def fillna(self, value=None, downcast=None): ------- valid : Index """ - - @Appender(_index_shared_docs["dropna"]) - def dropna(self, how="any"): if how not in ("any", "all"): raise ValueError(f"invalid how option: {how}") @@ -2215,9 +2191,8 @@ def dropna(self, how="any"): # -------------------------------------------------------------------- # Uniqueness Methods - _index_shared_docs[ - "index_unique" - ] = """ + def unique(self, level=None): + """ Return unique values in the index. Uniques are returned in order of appearance, this does NOT sort. @@ -2237,9 +2212,6 @@ def dropna(self, how="any"): unique Series.unique """ - - @Appender(_index_shared_docs["index_unique"] % _index_doc_kwargs) - def unique(self, level=None): if level is not None: self._validate_index_level(level) result = super().unique() @@ -2625,9 +2597,9 @@ def _union(self, other, sort): def _wrap_setop_result(self, other, result): return self._constructor(result, name=get_op_result_name(self, other)) - _index_shared_docs[ - "intersection" - ] = """ + # TODO: standardize return type of non-union setops type(self vs other) + def intersection(self, other, sort=False): + """ Form the intersection of two Index objects. This returns a new Index with elements common to the index and `other`. @@ -2661,10 +2633,6 @@ def _wrap_setop_result(self, other, result): >>> idx1.intersection(idx2) Int64Index([3, 4], dtype='int64') """ - - # TODO: standardize return type of non-union setops type(self vs other) - @Appender(_index_shared_docs["intersection"]) - def intersection(self, other, sort=False): self._validate_sort_keyword(sort) self._assert_can_do_setop(other) other = ensure_index(other) @@ -2868,9 +2836,8 @@ def _convert_can_do_setop(self, other): # -------------------------------------------------------------------- # Indexing Methods - _index_shared_docs[ - "get_loc" - ] = """ + def get_loc(self, key, method=None, tolerance=None): + """ Get integer location, slice or boolean mask for requested label. Parameters @@ -2907,9 +2874,6 @@ def _convert_can_do_setop(self, other): >>> non_monotonic_index.get_loc('b') array([False, True, False, True], dtype=bool) """ - - @Appender(_index_shared_docs["get_loc"]) - def get_loc(self, key, method=None, tolerance=None): if method is None: if tolerance is not None: raise ValueError( @@ -3121,19 +3085,15 @@ def _filter_indexer_tolerance( # -------------------------------------------------------------------- # Indexer Conversion Methods - _index_shared_docs[ - "_convert_scalar_indexer" - ] = """ + def _convert_scalar_indexer(self, key, kind=None): + """ Convert a scalar indexer. Parameters ---------- key : label of the slice bound kind : {'loc', 'getitem', 'iloc'} or None - """ - - @Appender(_index_shared_docs["_convert_scalar_indexer"]) - def _convert_scalar_indexer(self, key, kind=None): + """ assert kind in ["loc", "getitem", "iloc", None] if kind == "iloc": @@ -3171,9 +3131,8 @@ def _convert_scalar_indexer(self, key, kind=None): return key - _index_shared_docs[ - "_convert_slice_indexer" - ] = """ + def _convert_slice_indexer(self, key: slice, kind=None): + """ Convert a slice indexer. By definition, these are labels unless 'iloc' is passed in. @@ -3183,10 +3142,7 @@ def _convert_scalar_indexer(self, key, kind=None): ---------- key : label of the slice bound kind : {'loc', 'getitem', 'iloc'} or None - """ - - @Appender(_index_shared_docs["_convert_slice_indexer"]) - def _convert_slice_indexer(self, key: slice, kind=None): + """ assert kind in ["loc", "getitem", "iloc", None] # validate iloc @@ -3266,9 +3222,8 @@ def _convert_listlike_indexer(self, keyarr, kind=None): indexer = self._convert_list_indexer(keyarr, kind=kind) return indexer, keyarr - _index_shared_docs[ - "_convert_arr_indexer" - ] = """ + def _convert_arr_indexer(self, keyarr): + """ Convert an array-like indexer to the appropriate dtype. Parameters @@ -3279,16 +3234,12 @@ def _convert_listlike_indexer(self, keyarr, kind=None): Returns ------- converted_keyarr : array-like - """ - - @Appender(_index_shared_docs["_convert_arr_indexer"]) - def _convert_arr_indexer(self, keyarr): + """ keyarr = com.asarray_tuplesafe(keyarr) return keyarr - _index_shared_docs[ - "_convert_index_indexer" - ] = """ + def _convert_index_indexer(self, keyarr): + """ Convert an Index indexer to the appropriate dtype. Parameters @@ -3299,15 +3250,11 @@ def _convert_arr_indexer(self, keyarr): Returns ------- converted_keyarr : Index (or sub-class) - """ - - @Appender(_index_shared_docs["_convert_index_indexer"]) - def _convert_index_indexer(self, keyarr): + """ return keyarr - _index_shared_docs[ - "_convert_list_indexer" - ] = """ + def _convert_list_indexer(self, keyarr, kind=None): + """ Convert a list-like indexer to the appropriate dtype. Parameters @@ -3319,10 +3266,7 @@ def _convert_index_indexer(self, keyarr): Returns ------- positional indexer or None - """ - - @Appender(_index_shared_docs["_convert_list_indexer"]) - def _convert_list_indexer(self, keyarr, kind=None): + """ if ( kind in [None, "iloc"] and is_integer_dtype(keyarr) @@ -3502,9 +3446,8 @@ def _reindex_non_unique(self, target): # -------------------------------------------------------------------- # Join Methods - _index_shared_docs[ - "join" - ] = """ + def join(self, other, how="left", level=None, return_indexers=False, sort=False): + """ Compute join_index and indexers to conform data structures to the new index. @@ -3522,9 +3465,6 @@ def _reindex_non_unique(self, target): ------- join_index, (left_indexer, right_indexer) """ - - @Appender(_index_shared_docs["join"]) - def join(self, other, how="left", level=None, return_indexers=False, sort=False): self_is_mi = isinstance(self, ABCMultiIndex) other_is_mi = isinstance(other, ABCMultiIndex) @@ -4033,9 +3973,8 @@ def memory_usage(self, deep: bool = False) -> int: result += self._engine.sizeof(deep=deep) return result - _index_shared_docs[ - "where" - ] = """ + def where(self, cond, other=None): + """ Return an Index of same shape as self and whose corresponding entries are from self where cond is True and otherwise are from other. @@ -4049,9 +3988,6 @@ def memory_usage(self, deep: bool = False) -> int: ------- Index """ - - @Appender(_index_shared_docs["where"]) - def where(self, cond, other=None): if other is None: other = self._na_value @@ -4146,9 +4082,8 @@ def is_type_compatible(self, kind) -> bool: """ return kind == self.inferred_type - _index_shared_docs[ - "contains" - ] = """ + def __contains__(self, key: Any) -> bool: + """ Return a boolean indicating whether the provided key is in the index. Parameters @@ -4177,9 +4112,6 @@ def is_type_compatible(self, kind) -> bool: >>> 6 in idx False """ - - @Appender(_index_shared_docs["contains"] % _index_doc_kwargs) - def __contains__(self, key: Any) -> bool: hash(key) try: return key in self._engine @@ -5020,9 +4952,8 @@ def _validate_indexer(self, form: str_t, key, kind: str_t): else: self._invalid_indexer(form, key) - _index_shared_docs[ - "_maybe_cast_slice_bound" - ] = """ + def _maybe_cast_slice_bound(self, label, side: str_t, kind): + """ This function should be overloaded in subclasses that allow non-trivial casting on label-slice bounds, e.g. datetime-like indices allowing strings containing formatted datetimes. @@ -5041,9 +4972,6 @@ def _validate_indexer(self, form: str_t, key, kind: str_t): ----- Value of `side` parameter should be validated in caller. """ - - @Appender(_index_shared_docs["_maybe_cast_slice_bound"]) - def _maybe_cast_slice_bound(self, label, side: str_t, kind): assert kind in ["loc", "getitem", None] # We are a plain index here (sub-class override this method if they diff --git a/pandas/core/indexes/category.py b/pandas/core/indexes/category.py index 235d1856a2d0b..d556c014467cf 100644 --- a/pandas/core/indexes/category.py +++ b/pandas/core/indexes/category.py @@ -277,7 +277,7 @@ def _simple_new(cls, values, name=None, dtype=None): # -------------------------------------------------------------------- - @Appender(_index_shared_docs["_shallow_copy"]) + @Appender(Index._shallow_copy.__doc__) def _shallow_copy(self, values=None, dtype=None, **kwargs): if dtype is None: dtype = self.dtype @@ -392,7 +392,7 @@ def _wrap_setop_result(self, other, result): # (which uses _constructor) in order to preserve dtype. return self._shallow_copy(result, name=name) - @Appender(_index_shared_docs["contains"] % _index_doc_kwargs) + @Appender(Index.__contains__.__doc__) 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): @@ -405,7 +405,7 @@ def __array__(self, dtype=None) -> np.ndarray: """ the array interface, return my values """ return np.array(self._data, dtype=dtype) - @Appender(_index_shared_docs["astype"]) + @Appender(Index.astype.__doc__) def astype(self, dtype, copy=True): if is_interval_dtype(dtype): from pandas import IntervalIndex @@ -424,7 +424,7 @@ def _isnan(self): """ return if each value is nan""" return self._data.codes == -1 - @Appender(ibase._index_shared_docs["fillna"]) + @Appender(Index.fillna.__doc__) def fillna(self, value, downcast=None): self._assert_can_do_op(value) return CategoricalIndex(self._data.fillna(value), name=self.name) @@ -437,7 +437,7 @@ def _engine(self): codes = self.codes return self._engine_type(lambda: codes, len(self)) - @Appender(_index_shared_docs["index_unique"] % _index_doc_kwargs) + @Appender(Index.unique.__doc__) def unique(self, level=None): if level is not None: self._validate_index_level(level) @@ -523,7 +523,7 @@ def get_value(self, series: AnyArrayLike, key: Any): # we might be a positional inexer return super().get_value(series, key) - @Appender(_index_shared_docs["where"]) + @Appender(Index.where.__doc__) def where(self, cond, other=None): # TODO: Investigate an alternative implementation with # 1. copy the underlying Categorical @@ -673,7 +673,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_shared_docs["_convert_scalar_indexer"]) + @Appender(Index._convert_scalar_indexer.__doc__) def _convert_scalar_indexer(self, key, kind=None): if kind == "loc": try: @@ -682,7 +682,7 @@ def _convert_scalar_indexer(self, key, kind=None): self._invalid_indexer("label", key) return super()._convert_scalar_indexer(key, kind=kind) - @Appender(_index_shared_docs["_convert_list_indexer"]) + @Appender(Index._convert_list_indexer.__doc__) def _convert_list_indexer(self, keyarr, kind=None): # Return our indexer or raise if all of the values are not included in # the categories @@ -699,7 +699,7 @@ def _convert_list_indexer(self, keyarr, kind=None): return self.get_indexer(keyarr) - @Appender(_index_shared_docs["_convert_arr_indexer"]) + @Appender(Index._convert_arr_indexer.__doc__) def _convert_arr_indexer(self, keyarr): keyarr = com.asarray_tuplesafe(keyarr) @@ -708,7 +708,7 @@ def _convert_arr_indexer(self, keyarr): return self._shallow_copy(keyarr) - @Appender(_index_shared_docs["_convert_index_indexer"]) + @Appender(Index._convert_index_indexer.__doc__) def _convert_index_indexer(self, keyarr): return self._shallow_copy(keyarr) @@ -721,7 +721,7 @@ def take_nd(self, *args, **kwargs): ) return self.take(*args, **kwargs) - @Appender(_index_shared_docs["_maybe_cast_slice_bound"]) + @Appender(Index._maybe_cast_slice_bound.__doc__) def _maybe_cast_slice_bound(self, label, side, kind): if kind == "loc": return label diff --git a/pandas/core/indexes/datetimelike.py b/pandas/core/indexes/datetimelike.py index 0f385d9aba9c5..dd15b6e09f354 100644 --- a/pandas/core/indexes/datetimelike.py +++ b/pandas/core/indexes/datetimelike.py @@ -153,7 +153,7 @@ def equals(self, other) -> bool: return np.array_equal(self.asi8, other.asi8) - @Appender(_index_shared_docs["contains"] % _index_doc_kwargs) + @Appender(Index.__contains__.__doc__) def __contains__(self, key: Any) -> bool: hash(key) try: @@ -443,7 +443,7 @@ def isin(self, values, level=None): return algorithms.isin(self.asi8, values.asi8) - @Appender(_index_shared_docs["where"] % _index_doc_kwargs) + @Appender(Index.where.__doc__) def where(self, cond, other=None): values = self.view("i8") diff --git a/pandas/core/indexes/interval.py b/pandas/core/indexes/interval.py index fd812b17fb37c..6a3e808ab9821 100644 --- a/pandas/core/indexes/interval.py +++ b/pandas/core/indexes/interval.py @@ -349,7 +349,7 @@ def from_tuples( # -------------------------------------------------------------------- - @Appender(_index_shared_docs["_shallow_copy"]) + @Appender(Index._shallow_copy.__doc__) def _shallow_copy(self, left=None, right=None, **kwargs): result = self._data._shallow_copy(left=left, right=right) attributes = self._get_attributes_dict() @@ -419,7 +419,7 @@ def __reduce__(self): d.update(self._get_attributes_dict()) return _new_IntervalIndex, (type(self), d), None - @Appender(_index_shared_docs["astype"]) + @Appender(Index.astype.__doc__) def astype(self, dtype, copy=True): with rewrite_exception("IntervalArray", type(self).__name__): new_values = self.values.astype(dtype, copy=copy) @@ -527,7 +527,7 @@ def is_overlapping(self) -> bool: # GH 23309 return self._engine.is_overlapping - @Appender(_index_shared_docs["_convert_scalar_indexer"]) + @Appender(Index._convert_scalar_indexer.__doc__) def _convert_scalar_indexer(self, key, kind=None): if kind == "iloc": return super()._convert_scalar_indexer(key, kind=kind) @@ -536,7 +536,7 @@ def _convert_scalar_indexer(self, key, kind=None): def _maybe_cast_slice_bound(self, label, side, kind): return getattr(self, side)._maybe_cast_slice_bound(label, side, kind) - @Appender(_index_shared_docs["_convert_list_indexer"]) + @Appender(Index._convert_list_indexer.__doc__) def _convert_list_indexer(self, keyarr, kind=None): """ we are passed a list-like indexer. Return the @@ -894,7 +894,7 @@ def _convert_slice_indexer(self, key: slice, kind=None): raise ValueError("cannot support not-default step in a slice") return super()._convert_slice_indexer(key, kind) - @Appender(_index_shared_docs["where"]) + @Appender(Index.where.__doc__) def where(self, cond, other=None): if other is None: other = self._na_value @@ -1055,7 +1055,7 @@ def equals(self, other) -> bool: and self.closed == other.closed ) - @Appender(_index_shared_docs["intersection"]) + @Appender(Index.intersection.__doc__) @SetopCheck(op_name="intersection") def intersection( self, other: "IntervalIndex", sort: bool = False diff --git a/pandas/core/indexes/multi.py b/pandas/core/indexes/multi.py index 02db7be1ddf41..889622f44bbb7 100644 --- a/pandas/core/indexes/multi.py +++ b/pandas/core/indexes/multi.py @@ -972,7 +972,7 @@ def _shallow_copy_with_infer(self, values, **kwargs): ) return self._shallow_copy(values, **kwargs) - @Appender(_index_shared_docs["contains"] % _index_doc_kwargs) + @Appender(Index.__contains__.__doc__) def __contains__(self, key: Any) -> bool: hash(key) try: @@ -981,7 +981,7 @@ def __contains__(self, key: Any) -> bool: except (LookupError, TypeError, ValueError): return False - @Appender(_index_shared_docs["_shallow_copy"]) + @Appender(Index._shallow_copy.__doc__) def _shallow_copy(self, values=None, **kwargs): if values is not None: names = kwargs.pop("names", kwargs.pop("name", self.names)) @@ -1231,7 +1231,7 @@ def _set_names(self, names, level=None, validate=True): fset=_set_names, fget=_get_names, doc="""\nNames of levels in MultiIndex.\n""" ) - @Appender(_index_shared_docs["_get_grouper_for_level"]) + @Appender(Index._get_grouper_for_level.__doc__) def _get_grouper_for_level(self, mapper, level): indexer = self.codes[level] level_index = self.levels[level] @@ -1448,7 +1448,7 @@ def fillna(self, value=None, downcast=None): """ raise NotImplementedError("isna is not defined for MultiIndex") - @Appender(_index_shared_docs["dropna"]) + @Appender(Index.dropna.__doc__) def dropna(self, how="any"): nans = [level_codes == -1 for level_codes in self.codes] if how == "any": @@ -1585,7 +1585,7 @@ def get_level_values(self, level): values = self._get_level_values(level) return values - @Appender(_index_shared_docs["index_unique"] % _index_doc_kwargs) + @Appender(Index.unique.__doc__) def unique(self, level=None): if level is None: @@ -3310,7 +3310,7 @@ def difference(self, other, sort=None): else: return MultiIndex.from_tuples(difference, sortorder=0, names=result_names) - @Appender(_index_shared_docs["astype"]) + @Appender(Index.astype.__doc__) def astype(self, dtype, copy=True): dtype = pandas_dtype(dtype) if is_categorical_dtype(dtype): diff --git a/pandas/core/indexes/numeric.py b/pandas/core/indexes/numeric.py index f7af82920adb1..4d3d560aaa688 100644 --- a/pandas/core/indexes/numeric.py +++ b/pandas/core/indexes/numeric.py @@ -32,12 +32,7 @@ from pandas.core import algorithms import pandas.core.common as com -from pandas.core.indexes.base import ( - Index, - InvalidIndexError, - _index_shared_docs, - maybe_extract_name, -) +from pandas.core.indexes.base import Index, InvalidIndexError, maybe_extract_name from pandas.core.ops import get_op_result_name if TYPE_CHECKING: @@ -103,14 +98,14 @@ def _validate_dtype(cls, dtype: Dtype) -> None: f"Incorrect `dtype` passed: expected {expected}, received {dtype}" ) - @Appender(_index_shared_docs["_maybe_cast_slice_bound"]) + @Appender(Index._maybe_cast_slice_bound.__doc__) def _maybe_cast_slice_bound(self, label, side, kind): assert kind in ["loc", "getitem", None] # we will try to coerce to integers return self._maybe_cast_indexer(label) - @Appender(_index_shared_docs["_shallow_copy"]) + @Appender(Index._shallow_copy.__doc__) def _shallow_copy(self, values=None, **kwargs): if values is not None and not self._can_hold_na: # Ensure we are not returning an Int64Index with float data: @@ -257,7 +252,7 @@ def asi8(self) -> np.ndarray: # do not cache or you'll create a memory leak return self.values.view(self._default_dtype) - @Appender(_index_shared_docs["_convert_scalar_indexer"]) + @Appender(Index._convert_scalar_indexer.__doc__) def _convert_scalar_indexer(self, key, kind=None): assert kind in ["loc", "getitem", "iloc", None] @@ -311,7 +306,7 @@ class UInt64Index(IntegerIndex): _engine_type = libindex.UInt64Engine _default_dtype = np.dtype(np.uint64) - @Appender(_index_shared_docs["_convert_arr_indexer"]) + @Appender(Index._convert_arr_indexer.__doc__) def _convert_arr_indexer(self, keyarr): # Cast the indexer to uint64 if possible so that the values returned # from indexing are also uint64. @@ -323,7 +318,7 @@ def _convert_arr_indexer(self, keyarr): return com.asarray_tuplesafe(keyarr, dtype=dtype) - @Appender(_index_shared_docs["_convert_index_indexer"]) + @Appender(Index._convert_index_indexer.__doc__) def _convert_index_indexer(self, keyarr): # Cast the indexer to uint64 if possible so # that the values returned from indexing are @@ -373,7 +368,7 @@ def inferred_type(self) -> str: """ return "floating" - @Appender(_index_shared_docs["astype"]) + @Appender(Index.astype.__doc__) def astype(self, dtype, copy=True): dtype = pandas_dtype(dtype) if needs_i8_conversion(dtype): @@ -388,7 +383,7 @@ def astype(self, dtype, copy=True): return Int64Index(arr) return super().astype(dtype, copy=copy) - @Appender(_index_shared_docs["_convert_scalar_indexer"]) + @Appender(Index._convert_scalar_indexer.__doc__) def _convert_scalar_indexer(self, key, kind=None): assert kind in ["loc", "getitem", "iloc", None] @@ -397,7 +392,7 @@ def _convert_scalar_indexer(self, key, kind=None): return key - @Appender(_index_shared_docs["_convert_slice_indexer"]) + @Appender(Index._convert_slice_indexer.__doc__) def _convert_slice_indexer(self, key: slice, kind=None): if kind == "iloc": @@ -460,7 +455,7 @@ def __contains__(self, other: Any) -> bool: return is_float(other) and np.isnan(other) and self.hasnans - @Appender(_index_shared_docs["get_loc"]) + @Appender(Index.get_loc.__doc__) def get_loc(self, key, method=None, tolerance=None): if is_bool(key): # Catch this to avoid accidentally casting to 1.0 diff --git a/pandas/core/indexes/period.py b/pandas/core/indexes/period.py index 4438573cb9067..75c100c9d2c08 100644 --- a/pandas/core/indexes/period.py +++ b/pandas/core/indexes/period.py @@ -355,7 +355,7 @@ def _engine(self): period = weakref.ref(self) return self._engine_type(period, len(self)) - @Appender(_index_shared_docs["contains"]) + @Appender(Index.__contains__.__doc__) def __contains__(self, key: Any) -> bool: if isinstance(key, Period): if key.freq != self.freq: @@ -440,7 +440,7 @@ def asof_locs(self, where, mask): return result - @Appender(_index_shared_docs["astype"]) + @Appender(Index.astype.__doc__) def astype(self, dtype, copy=True, how="start"): dtype = pandas_dtype(dtype) diff --git a/pandas/core/indexes/range.py b/pandas/core/indexes/range.py index 340397b69c624..d6752da6bc58f 100644 --- a/pandas/core/indexes/range.py +++ b/pandas/core/indexes/range.py @@ -340,7 +340,7 @@ def __contains__(self, key: Any) -> bool: return False return key in self._range - @Appender(_index_shared_docs["get_loc"]) + @Appender(Int64Index.get_loc.__doc__) def get_loc(self, key, method=None, tolerance=None): if method is None and tolerance is None: if is_integer(key) or (is_float(key) and key.is_integer()): @@ -384,7 +384,7 @@ def get_indexer(self, target, method=None, limit=None, tolerance=None): def tolist(self): return list(self._range) - @Appender(_index_shared_docs["_shallow_copy"]) + @Appender(Int64Index._shallow_copy.__doc__) def _shallow_copy(self, values=None, **kwargs): if values is None: name = kwargs.get("name", self.name) @@ -393,7 +393,7 @@ def _shallow_copy(self, values=None, **kwargs): kwargs.setdefault("name", self.name) return self._int64index._shallow_copy(values, **kwargs) - @Appender(ibase._index_shared_docs["copy"]) + @Appender(Int64Index.copy.__doc__) def copy(self, name=None, deep=False, dtype=None, **kwargs): self._validate_dtype(dtype) if name is None: @@ -615,7 +615,7 @@ def _union(self, other, sort): return type(self)(start_r, end_r + step_o, step_o) return self._int64index._union(other, sort=sort) - @Appender(_index_shared_docs["join"]) + @Appender(Int64Index.join.__doc__) def join(self, other, how="left", level=None, return_indexers=False, sort=False): if how == "outer" and self is not other: # note: could return RangeIndex in more circumstances diff --git a/pandas/core/indexes/timedeltas.py b/pandas/core/indexes/timedeltas.py index 8691f0a2a1178..08a07e8d30348 100644 --- a/pandas/core/indexes/timedeltas.py +++ b/pandas/core/indexes/timedeltas.py @@ -19,12 +19,7 @@ from pandas.core.arrays import datetimelike as dtl from pandas.core.arrays.timedeltas import TimedeltaArray import pandas.core.common as com -from pandas.core.indexes.base import ( - Index, - InvalidIndexError, - _index_shared_docs, - maybe_extract_name, -) +from pandas.core.indexes.base import Index, InvalidIndexError, maybe_extract_name from pandas.core.indexes.datetimelike import ( DatetimeIndexOpsMixin, DatetimeTimedeltaMixin, @@ -212,7 +207,7 @@ def _formatter_func(self): # ------------------------------------------------------------------- - @Appender(_index_shared_docs["astype"]) + @Appender(Index.astype.__doc__) def astype(self, dtype, copy=True): dtype = pandas_dtype(dtype) if is_timedelta64_dtype(dtype) and not is_timedelta64_ns_dtype(dtype):