From 257ca843c83bbf78a61f38b7131d89f3452a88b7 Mon Sep 17 00:00:00 2001 From: Richard Shadrach Date: Thu, 7 Jan 2021 16:37:11 -0500 Subject: [PATCH 1/2] TYP/CLN: Use futures annotations in apply --- pandas/core/apply.py | 50 +++++++++++++++++++++++--------------------- 1 file changed, 26 insertions(+), 24 deletions(-) diff --git a/pandas/core/apply.py b/pandas/core/apply.py index edb6b97a73e7f..3cc180aa3071c 100644 --- a/pandas/core/apply.py +++ b/pandas/core/apply.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import abc import inspect from typing import TYPE_CHECKING, Any, Dict, Iterator, List, Optional, Tuple, Type, cast @@ -33,7 +35,7 @@ def frame_apply( - obj: "DataFrame", + obj: DataFrame, how: str, func: AggFuncType, axis: Axis = 0, @@ -69,22 +71,22 @@ class FrameApply(metaclass=abc.ABCMeta): @property @abc.abstractmethod - def result_index(self) -> "Index": + def result_index(self) -> Index: pass @property @abc.abstractmethod - def result_columns(self) -> "Index": + def result_columns(self) -> Index: pass @property @abc.abstractmethod - def series_generator(self) -> Iterator["Series"]: + def series_generator(self) -> Iterator[Series]: pass @abc.abstractmethod def wrap_results_for_axis( - self, results: ResType, res_index: "Index" + self, results: ResType, res_index: Index ) -> FrameOrSeriesUnion: pass @@ -92,7 +94,7 @@ def wrap_results_for_axis( def __init__( self, - obj: "DataFrame", + obj: DataFrame, how: str, func, raw: bool, @@ -131,15 +133,15 @@ def f(x): self.f: AggFuncType = f @property - def res_columns(self) -> "Index": + def res_columns(self) -> Index: return self.result_columns @property - def columns(self) -> "Index": + def columns(self) -> Index: return self.obj.columns @property - def index(self) -> "Index": + def index(self) -> Index: return self.obj.index @cache_readonly @@ -147,11 +149,11 @@ def values(self): return self.obj.values @cache_readonly - def dtypes(self) -> "Series": + def dtypes(self) -> Series: return self.obj.dtypes @property - def agg_axis(self) -> "Index": + def agg_axis(self) -> Index: return self.obj._get_agg_axis(self.axis) def get_result(self): @@ -206,7 +208,7 @@ def apply(self) -> FrameOrSeriesUnion: """ compute the results """ # dispatch to agg if is_list_like(self.f) or is_dict_like(self.f): - # pandas\core\apply.py:144: error: "aggregate" of "DataFrame" gets + # pandas\core\apply.py:144: error: "aggregate" of DataFrame gets # multiple values for keyword argument "axis" return self.obj.aggregate( # type: ignore[misc] self.f, axis=self.axis, *self.args, **self.kwds @@ -311,7 +313,7 @@ def wrapper(*args, **kwargs): else: return self.obj._constructor_sliced(result, index=self.agg_axis) - def apply_broadcast(self, target: "DataFrame") -> "DataFrame": + def apply_broadcast(self, target: DataFrame) -> DataFrame: assert callable(self.f) result_values = np.empty_like(target.values) @@ -346,7 +348,7 @@ def apply_standard(self): # wrap results return self.wrap_results(results, res_index) - def apply_series_generator(self) -> Tuple[ResType, "Index"]: + def apply_series_generator(self) -> Tuple[ResType, Index]: assert callable(self.f) series_gen = self.series_generator @@ -365,7 +367,7 @@ def apply_series_generator(self) -> Tuple[ResType, "Index"]: return results, res_index - def wrap_results(self, results: ResType, res_index: "Index") -> FrameOrSeriesUnion: + def wrap_results(self, results: ResType, res_index: Index) -> FrameOrSeriesUnion: from pandas import Series # see if we can infer the results @@ -392,7 +394,7 @@ def wrap_results(self, results: ResType, res_index: "Index") -> FrameOrSeriesUni class FrameRowApply(FrameApply): axis = 0 - def apply_broadcast(self, target: "DataFrame") -> "DataFrame": + def apply_broadcast(self, target: DataFrame) -> DataFrame: return super().apply_broadcast(target) @property @@ -400,15 +402,15 @@ def series_generator(self): return (self.obj._ixs(i, axis=1) for i in range(len(self.columns))) @property - def result_index(self) -> "Index": + def result_index(self) -> Index: return self.columns @property - def result_columns(self) -> "Index": + def result_columns(self) -> Index: return self.index def wrap_results_for_axis( - self, results: ResType, res_index: "Index" + self, results: ResType, res_index: Index ) -> FrameOrSeriesUnion: """ return the results for the rows """ @@ -452,7 +454,7 @@ def wrap_results_for_axis( class FrameColumnApply(FrameApply): axis = 1 - def apply_broadcast(self, target: "DataFrame") -> "DataFrame": + def apply_broadcast(self, target: DataFrame) -> DataFrame: result = super().apply_broadcast(target.T) return result.T @@ -483,15 +485,15 @@ def series_generator(self): yield ser @property - def result_index(self) -> "Index": + def result_index(self) -> Index: return self.index @property - def result_columns(self) -> "Index": + def result_columns(self) -> Index: return self.columns def wrap_results_for_axis( - self, results: ResType, res_index: "Index" + self, results: ResType, res_index: Index ) -> FrameOrSeriesUnion: """ return the results for the columns """ result: FrameOrSeriesUnion @@ -511,7 +513,7 @@ def wrap_results_for_axis( return result - def infer_to_same_shape(self, results: ResType, res_index: "Index") -> "DataFrame": + def infer_to_same_shape(self, results: ResType, res_index: Index) -> DataFrame: """ infer the results to the same shape as the input object """ result = self.obj._constructor(data=results) result = result.T From e5a0780e61b1b9341db1719f2e075b9a1c9466ba Mon Sep 17 00:00:00 2001 From: Richard Shadrach Date: Thu, 7 Jan 2021 16:39:25 -0500 Subject: [PATCH 2/2] Revert comment --- pandas/core/apply.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandas/core/apply.py b/pandas/core/apply.py index 3cc180aa3071c..ac98f3736be6d 100644 --- a/pandas/core/apply.py +++ b/pandas/core/apply.py @@ -208,7 +208,7 @@ def apply(self) -> FrameOrSeriesUnion: """ compute the results """ # dispatch to agg if is_list_like(self.f) or is_dict_like(self.f): - # pandas\core\apply.py:144: error: "aggregate" of DataFrame gets + # pandas\core\apply.py:144: error: "aggregate" of "DataFrame" gets # multiple values for keyword argument "axis" return self.obj.aggregate( # type: ignore[misc] self.f, axis=self.axis, *self.args, **self.kwds