Skip to content

DOC/CLN: clean-up shared_docs in generic.py #20074

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions pandas/core/frame.py
Original file line number Diff line number Diff line change
Expand Up @@ -3011,7 +3011,7 @@ def align(self, other, join='outer', axis=None, level=None, copy=True,
fill_axis=fill_axis,
broadcast_axis=broadcast_axis)

@Appender(_shared_docs['reindex'] % _shared_doc_kwargs)
@Appender(NDFrame.reindex.__doc__ % _shared_doc_kwargs)
@rewrite_axis_style_signature('labels', [('method', None),
('copy', True),
('level', None),
Expand Down Expand Up @@ -3691,7 +3691,7 @@ def f(vals):
# ----------------------------------------------------------------------
# Sorting

@Appender(_shared_docs['sort_values'] % _shared_doc_kwargs)
@Appender(NDFrame.sort_values.__doc__ % _shared_doc_kwargs)
def sort_values(self, by, axis=0, ascending=True, inplace=False,
kind='quicksort', na_position='last'):
inplace = validate_bool_kwarg(inplace, 'inplace')
Expand Down Expand Up @@ -3736,7 +3736,7 @@ def sort_values(self, by, axis=0, ascending=True, inplace=False,
else:
return self._constructor(new_data).__finalize__(self)

@Appender(_shared_docs['sort_index'] % _shared_doc_kwargs)
@Appender(NDFrame.sort_index.__doc__ % _shared_doc_kwargs)
def sort_index(self, axis=0, level=None, ascending=True, inplace=False,
kind='quicksort', na_position='last', sort_remaining=True,
by=None):
Expand Down
92 changes: 28 additions & 64 deletions pandas/core/generic.py
Original file line number Diff line number Diff line change
Expand Up @@ -487,7 +487,8 @@ def _expand_axes(self, key):

return new_axes

_shared_docs['set_axis'] = """Assign desired index to given axis
def set_axis(self, labels, axis=0, inplace=None):
"""Assign desired index to given axis

Parameters
----------
Expand Down Expand Up @@ -547,9 +548,6 @@ def _expand_axes(self, key):
2 3 6

"""

@Appender(_shared_docs['set_axis'] % dict(klass='NDFrame'))
def set_axis(self, labels, axis=0, inplace=None):
if is_scalar(labels):
warnings.warn(
'set_axis now takes "labels" as first argument, and '
Expand Down Expand Up @@ -577,7 +575,8 @@ def _set_axis(self, axis, labels):
self._data.set_axis(axis, labels)
self._clear_item_cache()

_shared_docs['transpose'] = """
def transpose(self, *args, **kwargs):
"""
Permute the dimensions of the %(klass)s

Parameters
Expand All @@ -597,9 +596,6 @@ def _set_axis(self, axis, labels):
y : same as input
"""

@Appender(_shared_docs['transpose'] % _shared_doc_kwargs)
def transpose(self, *args, **kwargs):

# construct the args
axes, kwargs = self._construct_axes_from_arguments(args, kwargs,
require_all=True)
Expand Down Expand Up @@ -749,23 +745,20 @@ def swaplevel(self, i=-2, j=-1, axis=0):
# ----------------------------------------------------------------------
# Rename

# TODO: define separate funcs for DataFrame, Series and Panel so you can
# get completion on keyword arguments.
_shared_docs['rename'] = """
def rename(self, *args, **kwargs):
"""
Alter axes input function or functions. Function / dict values must be
unique (1-to-1). Labels not contained in a dict / Series will be left
as-is. Extra labels listed don't throw an error. Alternatively, change
``Series.name`` with a scalar value (Series only).

Parameters
----------
%(optional_mapper)s
%(axes)s : scalar, list-like, dict-like or function, optional
Scalar or list-like will alter the ``Series.name`` attribute,
and raise on DataFrame or Panel.
dict-like or functions are transformations to apply to
that axis' values
%(optional_axis)s
copy : boolean, default True
Also copy underlying data
inplace : boolean, default False
Expand Down Expand Up @@ -853,12 +846,6 @@ def swaplevel(self, i=-2, j=-1, axis=0):

See the :ref:`user guide <basics.rename>` for more.
"""

@Appender(_shared_docs['rename'] % dict(axes='axes keywords for this'
' object', klass='NDFrame',
optional_mapper='',
optional_axis=''))
def rename(self, *args, **kwargs):
axes, kwargs = self._construct_axes_from_arguments(args, kwargs)
copy = kwargs.pop('copy', True)
inplace = kwargs.pop('inplace', False)
Expand Down Expand Up @@ -910,8 +897,6 @@ def f(x):
else:
return result.__finalize__(self)

rename.__doc__ = _shared_docs['rename']

def rename_axis(self, mapper, axis=0, copy=True, inplace=False):
"""Alter the name of the index or columns.

Expand Down Expand Up @@ -2060,7 +2045,13 @@ def to_xarray(self):
coords=coords,
)

_shared_docs['to_latex'] = r"""
def to_latex(self, buf=None, columns=None, col_space=None, header=True,
index=True, na_rep='NaN', formatters=None, float_format=None,
sparsify=None, index_names=True, bold_rows=False,
column_format=None, longtable=None, escape=None,
encoding=None, decimal='.', multicolumn=None,
multicolumn_format=None, multirow=None):
r"""
Render an object to a tabular environment table. You can splice
this into a LaTeX document. Requires \\usepackage{booktabs}.

Expand Down Expand Up @@ -2111,18 +2102,7 @@ def to_xarray(self):
The default will be read from the pandas config module.

.. versionadded:: 0.20.0
"""

@Substitution(header='Write out the column names. If a list of strings '
'is given, it is assumed to be aliases for the '
'column names.')
@Appender(_shared_docs['to_latex'] % _shared_doc_kwargs)
def to_latex(self, buf=None, columns=None, col_space=None, header=True,
index=True, na_rep='NaN', formatters=None, float_format=None,
sparsify=None, index_names=True, bold_rows=False,
column_format=None, longtable=None, escape=None,
encoding=None, decimal='.', multicolumn=None,
multicolumn_format=None, multirow=None):
"""
# Get defaults from the pandas config
if self.ndim == 1:
self = self.to_frame()
Expand Down Expand Up @@ -2454,7 +2434,8 @@ def __delitem__(self, key):
except KeyError:
pass

_shared_docs['_take'] = """
def _take(self, indices, axis=0, convert=True, is_copy=True):
"""
Return the elements in the given *positional* indices along an axis.

This means that we are not indexing according to actual values in
Expand Down Expand Up @@ -2490,9 +2471,6 @@ def __delitem__(self, key):
numpy.ndarray.take
numpy.take
"""

@Appender(_shared_docs['_take'])
def _take(self, indices, axis=0, convert=True, is_copy=True):
self._consolidate_inplace()

if convert:
Expand All @@ -2510,7 +2488,8 @@ def _take(self, indices, axis=0, convert=True, is_copy=True):

return result

_shared_docs['take'] = """
def take(self, indices, axis=0, convert=None, is_copy=True, **kwargs):
"""
Return the elements in the given *positional* indices along an axis.

This means that we are not indexing according to actual values in
Expand Down Expand Up @@ -2587,9 +2566,6 @@ class max_speed
numpy.ndarray.take
numpy.take
"""

@Appender(_shared_docs['take'])
def take(self, indices, axis=0, convert=None, is_copy=True, **kwargs):
if convert is not None:
msg = ("The 'convert' parameter is deprecated "
"and will be removed in a future version.")
Expand Down Expand Up @@ -2991,7 +2967,9 @@ def add_suffix(self, suffix):
new_data = self._data.add_suffix(suffix)
return self._constructor(new_data).__finalize__(self)

_shared_docs['sort_values'] = """
def sort_values(self, by=None, axis=0, ascending=True, inplace=False,
kind='quicksort', na_position='last'):
"""
Sort by the values along either axis

Parameters
Expand Down Expand Up @@ -3076,17 +3054,12 @@ def add_suffix(self, suffix):
0 A 2 0
1 A 1 1
"""

def sort_values(self, by=None, axis=0, ascending=True, inplace=False,
kind='quicksort', na_position='last'):
"""
NOT IMPLEMENTED: do not call this method, as sorting values is not
supported for Panel objects and will raise an error.
"""
raise NotImplementedError("sort_values has not been implemented "
"on Panel or Panel4D objects.")

_shared_docs['sort_index'] = """
def sort_index(self, axis=0, level=None, ascending=True, inplace=False,
kind='quicksort', na_position='last', sort_remaining=True):
"""
Sort object by labels (along an axis)

Parameters
Expand Down Expand Up @@ -3114,10 +3087,6 @@ def sort_values(self, by=None, axis=0, ascending=True, inplace=False,
-------
sorted_obj : %(klass)s
"""

@Appender(_shared_docs['sort_index'] % dict(axes="axes", klass="NDFrame"))
def sort_index(self, axis=0, level=None, ascending=True, inplace=False,
kind='quicksort', na_position='last', sort_remaining=True):
inplace = validate_bool_kwarg(inplace, 'inplace')
axis = self._get_axis_number(axis)
axis_name = self._get_axis_name(axis)
Expand All @@ -3135,7 +3104,8 @@ def sort_index(self, axis=0, level=None, ascending=True, inplace=False,
new_axis = labels.take(sort_index)
return self.reindex(**{axis_name: new_axis})

_shared_docs['reindex'] = """
def reindex(self, *args, **kwargs):
"""
Conform %(klass)s to new index with optional filling logic, placing
NA/NaN in locations having no value in the previous index. A new object
is produced unless the new index is equivalent to the current one and
Expand Down Expand Up @@ -3331,14 +3301,8 @@ def sort_index(self, axis=0, level=None, ascending=True, inplace=False,
-------
reindexed : %(klass)s
"""

# TODO: Decide if we care about having different examples for different
# kinds

@Appender(_shared_docs['reindex'] % dict(axes="axes", klass="NDFrame",
optional_labels="",
optional_axis=""))
def reindex(self, *args, **kwargs):
# TODO: Decide if we care about having different examples for different
# kinds

# construct the args
axes, kwargs = self._construct_axes_from_arguments(args, kwargs)
Expand Down
13 changes: 10 additions & 3 deletions pandas/core/panel.py
Original file line number Diff line number Diff line change
Expand Up @@ -1198,7 +1198,7 @@ def _wrap_result(self, result, axis):

return self._construct_return_type(result, axes)

@Appender(_shared_docs['reindex'] % _shared_doc_kwargs)
@Appender(NDFrame.reindex.__doc__ % _shared_doc_kwargs)
def reindex(self, *args, **kwargs):
major = kwargs.pop("major", None)
minor = kwargs.pop('minor', None)
Expand All @@ -1219,7 +1219,7 @@ def reindex(self, *args, **kwargs):
kwargs.pop('labels', None)
return super(Panel, self).reindex(**kwargs)

@Appender(_shared_docs['rename'] % _shared_doc_kwargs)
@Appender(NDFrame.rename.__doc__ % _shared_doc_kwargs)
def rename(self, items=None, major_axis=None, minor_axis=None, **kwargs):
major_axis = (major_axis if major_axis is not None else
kwargs.pop('major', None))
Expand All @@ -1236,7 +1236,7 @@ def reindex_axis(self, labels, axis=0, method=None, level=None, copy=True,
copy=copy, limit=limit,
fill_value=fill_value)

@Appender(_shared_docs['transpose'] % _shared_doc_kwargs)
@Appender(NDFrame.transpose.__doc__ % _shared_doc_kwargs)
def transpose(self, *args, **kwargs):
# check if a list of axes was passed in instead as a
# single *args element
Expand Down Expand Up @@ -1518,6 +1518,13 @@ def _extract_axis(self, data, axis=0, intersect=False):

return _ensure_index(index)

def sort_values(self, *args, **kwargs):
"""
NOT IMPLEMENTED: do not call this method, as sorting values is not
supported for Panel objects and will raise an error.
"""
super(Panel, self).sort_values(*args, **kwargs)


Panel._setup_axes(axes=['items', 'major_axis', 'minor_axis'], info_axis=0,
stat_axis=1, aliases={'major': 'major_axis',
Expand Down
8 changes: 4 additions & 4 deletions pandas/core/series.py
Original file line number Diff line number Diff line change
Expand Up @@ -1885,7 +1885,7 @@ def update(self, other):
# ----------------------------------------------------------------------
# Reindexing, sorting

@Appender(generic._shared_docs['sort_values'] % _shared_doc_kwargs)
@Appender(generic.NDFrame.sort_values.__doc__ % _shared_doc_kwargs)
def sort_values(self, axis=0, ascending=True, inplace=False,
kind='quicksort', na_position='last'):

Expand Down Expand Up @@ -1947,7 +1947,7 @@ def _try_kind_sort(arr):
else:
return result.__finalize__(self)

@Appender(generic._shared_docs['sort_index'] % _shared_doc_kwargs)
@Appender(generic.NDFrame.sort_index.__doc__ % _shared_doc_kwargs)
def sort_index(self, axis=0, level=None, ascending=True, inplace=False,
kind='quicksort', na_position='last', sort_remaining=True):

Expand Down Expand Up @@ -2656,7 +2656,7 @@ def rename(self, index=None, **kwargs):
return self._set_name(index, inplace=kwargs.get('inplace'))
return super(Series, self).rename(index=index, **kwargs)

@Appender(generic._shared_docs['reindex'] % _shared_doc_kwargs)
@Appender(generic.NDFrame.reindex.__doc__ % _shared_doc_kwargs)
def reindex(self, index=None, **kwargs):
return super(Series, self).reindex(index=index, **kwargs)

Expand Down Expand Up @@ -2724,7 +2724,7 @@ def memory_usage(self, index=True, deep=False):
v += self.index.memory_usage(deep=deep)
return v

@Appender(generic._shared_docs['_take'])
@Appender(generic.NDFrame._take.__doc__)
def _take(self, indices, axis=0, convert=True, is_copy=False):
if convert:
indices = maybe_convert_indices(indices, len(self._get_axis(axis)))
Expand Down
4 changes: 2 additions & 2 deletions pandas/core/sparse/series.py
Original file line number Diff line number Diff line change
Expand Up @@ -562,7 +562,7 @@ def copy(self, deep=True):
return self._constructor(new_data, sparse_index=self.sp_index,
fill_value=self.fill_value).__finalize__(self)

@Appender(generic._shared_docs['reindex'] % _shared_doc_kwargs)
@Appender(generic.NDFrame.reindex.__doc__ % _shared_doc_kwargs)
def reindex(self, index=None, method=None, copy=True, limit=None,
**kwargs):

Expand Down Expand Up @@ -591,7 +591,7 @@ def sparse_reindex(self, new_index):
sparse_index=new_index,
fill_value=self.fill_value).__finalize__(self)

@Appender(generic._shared_docs['take'])
@Appender(generic.NDFrame.take.__doc__)
def take(self, indices, axis=0, convert=None, *args, **kwargs):
if convert is not None:
msg = ("The 'convert' parameter is deprecated "
Expand Down