|
1 | | -# This module contains POC compatibility annotations |
| 1 | +from typing import Any, Callable, Iterable, List, NewType, Optional, Tuple, Type, TypeVar, Union |
| 2 | +from typing_extensions import Protocol, Literal |
| 3 | +from types import FunctionType |
| 4 | + |
| 5 | +from pyspark.sql._typing import LiteralType |
| 6 | +from pyspark.sql.pandas._typing.protocols.frame import DataFrameLike as DataFrameLike |
| 7 | +from pyspark.sql.pandas._typing.protocols.series import SeriesLike as SeriesLike |
2 | 8 |
|
3 | 9 | import pandas.core.frame # type: ignore[import] |
4 | 10 | import pandas.core.series # type: ignore[import] |
5 | 11 |
|
6 | | -from .protocols.frame import DataFrameLike as DataFrameLike |
7 | | -from .protocols.series import SeriesLike as SeriesLike |
8 | | - |
9 | | -from typing import Type |
10 | | - |
| 12 | +# POC compatibility annotations |
11 | 13 | PandasDataFrame: Type[DataFrameLike] = pandas.core.frame.DataFrame |
12 | 14 | PandasSeries: Type[SeriesLike] = pandas.core.series.Series |
| 15 | + |
| 16 | +# UDF annotations |
| 17 | +PandasScalarUDFType = Literal[200] |
| 18 | +PandasScalarIterUDFType = Literal[204] |
| 19 | +PandasGroupedMapUDFType = Literal[201] |
| 20 | +PandasCogroupedMapUDFType = Literal[206] |
| 21 | +PandasGroupedAggUDFType = Literal[202] |
| 22 | +PandasMapIterUDFType = Literal[205] |
| 23 | + |
| 24 | +class PandasVariadicScalarToScalarFunction(Protocol): |
| 25 | + def __call__(self, *_: SeriesLike) -> SeriesLike: |
| 26 | + ... |
| 27 | + |
| 28 | +PandasScalarToScalarFunction = Union[PandasVariadicScalarToScalarFunction, Callable[[SeriesLike], SeriesLike], Callable[[SeriesLike, SeriesLike], SeriesLike], Callable[[SeriesLike, SeriesLike, SeriesLike], SeriesLike], Callable[[SeriesLike, SeriesLike, SeriesLike, SeriesLike], SeriesLike], Callable[[SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike], SeriesLike], Callable[[SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike], SeriesLike], Callable[[SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike], SeriesLike], Callable[[SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike], SeriesLike], Callable[[SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike], SeriesLike], Callable[[SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike], SeriesLike]] |
| 29 | + |
| 30 | +class PandasVariadicScalarToStructFunction(Protocol): |
| 31 | + def __call__(self, *_: SeriesLike) -> DataFrameLike: |
| 32 | + ... |
| 33 | + |
| 34 | +PandasScalarToStructFunction = Union[PandasVariadicScalarToStructFunction, Callable[[SeriesLike], DataFrameLike], Callable[[SeriesLike, SeriesLike], DataFrameLike], Callable[[SeriesLike, SeriesLike, SeriesLike], DataFrameLike], Callable[[SeriesLike, SeriesLike, SeriesLike, SeriesLike], DataFrameLike], Callable[[SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike], DataFrameLike], Callable[[SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike], DataFrameLike], Callable[[SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike], DataFrameLike], Callable[[SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike], DataFrameLike], Callable[[SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike], DataFrameLike], Callable[[SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike], DataFrameLike]] |
| 35 | + |
| 36 | +PandasScalarIterFunction = Callable[[Iterable[Union[SeriesLike, Tuple[SeriesLike, ...], DataFrameLike]]], Iterable[SeriesLike]] |
| 37 | + |
| 38 | +PandasGroupedMapFunction = Union[Callable[[DataFrameLike], DataFrameLike], Callable[[Any, DataFrameLike], DataFrameLike]] |
| 39 | + |
| 40 | +class PandasVariadicGroupedAggFunction(Protocol): |
| 41 | + def __call__(self, *_: SeriesLike) -> LiteralType: |
| 42 | + ... |
| 43 | + |
| 44 | +PandasGroupedAggFunction = Union[Callable[[SeriesLike], LiteralType], Callable[[SeriesLike, SeriesLike], LiteralType], Callable[[SeriesLike, SeriesLike, SeriesLike], LiteralType], Callable[[SeriesLike, SeriesLike, SeriesLike, SeriesLike], LiteralType], Callable[[SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike], LiteralType], Callable[[SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike], LiteralType], Callable[[SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike], LiteralType], Callable[[SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike], LiteralType], Callable[[SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike], LiteralType], Callable[[SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike, SeriesLike], LiteralType], PandasVariadicGroupedAggFunction] |
| 45 | + |
| 46 | +PandasMapIterFunction = Callable[[Iterable[DataFrameLike]], Iterable[DataFrameLike]] |
| 47 | + |
| 48 | +PandasCogroupedMapFunction = Callable[[DataFrameLike, DataFrameLike], DataFrameLike] |
| 49 | + |
| 50 | +MapIterPandasUserDefinedFunction = NewType("MapIterPandasUserDefinedFunction", FunctionType) |
| 51 | +GroupedMapPandasUserDefinedFunction = NewType("GroupedMapPandasUserDefinedFunction", FunctionType) |
| 52 | +CogroupedMapPandasUserDefinedFunction = NewType("CogroupedMapPandasUserDefinedFunction", FunctionType) |
0 commit comments