Skip to content

TYP/CLN: Use futures annotations in apply #39026

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
Changes from all commits
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
48 changes: 25 additions & 23 deletions pandas/core/apply.py
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -33,7 +35,7 @@


def frame_apply(
obj: "DataFrame",
obj: DataFrame,
how: str,
func: AggFuncType,
axis: Axis = 0,
Expand Down Expand Up @@ -69,30 +71,30 @@ 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

# ---------------------------------------------------------------

def __init__(
self,
obj: "DataFrame",
obj: DataFrame,
how: str,
func,
raw: bool,
Expand Down Expand Up @@ -131,27 +133,27 @@ 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
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):
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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
Expand All @@ -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
Expand All @@ -392,23 +394,23 @@ 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
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 """

Expand Down Expand Up @@ -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

Expand Down Expand Up @@ -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
Expand All @@ -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
Expand Down