diff --git a/pandas-stubs/_libs/tslibs/offsets.pyi b/pandas-stubs/_libs/tslibs/offsets.pyi index a18187c81..b703ba62c 100644 --- a/pandas-stubs/_libs/tslibs/offsets.pyi +++ b/pandas-stubs/_libs/tslibs/offsets.pyi @@ -205,7 +205,7 @@ class _CustomBusinessMonth(SingleConstructorOffset): n: int = ..., normalize: bool = ..., offset: timedelta = ..., - holidays: list | None = ..., + holidays: list[Any] | None = ..., ) -> None: ... class CustomBusinessDay(BusinessDay): @@ -213,7 +213,7 @@ class CustomBusinessDay(BusinessDay): self, n: int = ..., normalize: bool = ..., - holidays: list = ..., + holidays: list[Any] = ..., calendar: AbstractHolidayCalendar | np.busdaycalendar = ..., ) -> None: ... @@ -225,7 +225,7 @@ class CustomBusinessHour(BusinessHour): start: str | time | Collection[str | time] = ..., end: str | time | Collection[str | time] = ..., offset: timedelta = ..., - holidays: list | None = ..., + holidays: list[Any] | None = ..., ) -> None: ... class CustomBusinessMonthEnd(_CustomBusinessMonth): ... diff --git a/pandas-stubs/_typing.pyi b/pandas-stubs/_typing.pyi index 6f4d94f6d..794923014 100644 --- a/pandas-stubs/_typing.pyi +++ b/pandas-stubs/_typing.pyi @@ -182,7 +182,7 @@ Level: TypeAlias = Hashable Shape: TypeAlias = tuple[int, ...] Suffixes: TypeAlias = tuple[str | None, str | None] | list[str | None] Ordered: TypeAlias = bool | None -JSONSerializable: TypeAlias = PythonScalar | list | dict +JSONSerializable: TypeAlias = PythonScalar | list[Any] | dict Frequency: TypeAlias = str | BaseOffset PeriodFrequency: TypeAlias = ( str @@ -966,7 +966,7 @@ ListLikeT = TypeVar("ListLikeT", bound=ListLike) ListLikeExceptSeriesAndStr: TypeAlias = ( MutableSequence[Any] | np_1darray | tuple[Any, ...] | Index ) -ListLikeU: TypeAlias = Sequence | np_1darray | Series | Index +ListLikeU: TypeAlias = Sequence[Any] | np_1darray | Series | Index ListLikeHashable: TypeAlias = ( MutableSequence[HashableT] | np_1darray | tuple[HashableT, ...] | range ) diff --git a/pandas-stubs/core/frame.pyi b/pandas-stubs/core/frame.pyi index a4d25ed56..aaaa8461a 100644 --- a/pandas-stubs/core/frame.pyi +++ b/pandas-stubs/core/frame.pyi @@ -552,7 +552,7 @@ class DataFrame(NDFrame, OpsMixin, _GetItemHack): *, into: MutableMapping | type[MutableMapping], index: bool = ..., - ) -> MutableMapping[str, list]: ... + ) -> MutableMapping[str, list[Any]]: ... @overload def to_dict( self, @@ -560,7 +560,7 @@ class DataFrame(NDFrame, OpsMixin, _GetItemHack): *, into: type[dict] = ..., index: bool = ..., - ) -> dict[str, list]: ... + ) -> dict[str, list[Any]]: ... @classmethod def from_records( cls, @@ -1256,7 +1256,7 @@ class DataFrame(NDFrame, OpsMixin, _GetItemHack): keep: NsmallestNlargestKeep = "first", ) -> Self: ... def swaplevel(self, i: Level = ..., j: Level = ..., axis: Axis = 0) -> Self: ... - def reorder_levels(self, order: list, axis: Axis = 0) -> Self: ... + def reorder_levels(self, order: list[int] | list[str], axis: Axis = 0) -> Self: ... def compare( self, other: DataFrame, @@ -1796,7 +1796,7 @@ class DataFrame(NDFrame, OpsMixin, _GetItemHack): def hist( self, by: _str | ListLike | None = None, - bins: int | list = 10, + bins: int | Sequence[int] = 10, *, grid: _bool = True, xlabelsize: float | str | None = None, diff --git a/pandas-stubs/core/groupby/generic.pyi b/pandas-stubs/core/groupby/generic.pyi index eb2a1982b..8b14017c4 100644 --- a/pandas-stubs/core/groupby/generic.pyi +++ b/pandas-stubs/core/groupby/generic.pyi @@ -219,7 +219,7 @@ _TT = TypeVar("_TT", bound=Literal[True, False]) class DFCallable1(Protocol[P]): # ty: ignore[invalid-argument-type] def __call__( self, df: DataFrame, /, *args: P.args, **kwargs: P.kwargs - ) -> Scalar | list | dict: ... + ) -> Scalar | list[Any] | dict: ... class DFCallable2(Protocol[P]): # ty: ignore[invalid-argument-type] def __call__( @@ -227,7 +227,9 @@ class DFCallable2(Protocol[P]): # ty: ignore[invalid-argument-type] ) -> DataFrame | Series: ... class DFCallable3(Protocol[P]): # ty: ignore[invalid-argument-type] - def __call__(self, df: Iterable, /, *args: P.args, **kwargs: P.kwargs) -> float: ... + def __call__( + self, df: Iterable[Any], /, *args: P.args, **kwargs: P.kwargs + ) -> float: ... class DataFrameGroupBy(GroupBy[DataFrame], Generic[ByT, _TT]): # error: Overload 3 for "apply" will never be used because its parameters overlap overload 1 diff --git a/pandas-stubs/core/groupby/groupby.pyi b/pandas-stubs/core/groupby/groupby.pyi index 242dcd38f..75d3265b0 100644 --- a/pandas-stubs/core/groupby/groupby.pyi +++ b/pandas-stubs/core/groupby/groupby.pyi @@ -334,7 +334,7 @@ class GroupBy(BaseGroupBy[NDFrameT]): n: int | None = None, frac: float | None = None, replace: bool = False, - weights: Sequence | Series | None = ..., + weights: Sequence[float] | Series | None = ..., random_state: RandomState | None = ..., ) -> NDFrameT: ... diff --git a/pandas-stubs/core/indexes/base.pyi b/pandas-stubs/core/indexes/base.pyi index c53ffda84..3f3332940 100644 --- a/pandas-stubs/core/indexes/base.pyi +++ b/pandas-stubs/core/indexes/base.pyi @@ -477,7 +477,7 @@ class Index(IndexOpsMixin[S1], ElementOpsMixin[S1]): def intersection( self, other: list[S1] | Self, sort: bool | None = False ) -> Self: ... - def difference(self, other: list | Self, sort: bool | None = None) -> Self: ... + def difference(self, other: list[Any] | Self, sort: bool | None = None) -> Self: ... def symmetric_difference( self, other: list[S1] | Self, diff --git a/pandas-stubs/core/indexes/multi.pyi b/pandas-stubs/core/indexes/multi.pyi index 9b0293038..9f77b5e5e 100644 --- a/pandas-stubs/core/indexes/multi.pyi +++ b/pandas-stubs/core/indexes/multi.pyi @@ -1,5 +1,4 @@ from collections.abc import ( - Callable, Collection, Hashable, Iterable, @@ -91,16 +90,6 @@ class MultiIndex(Index): def memory_usage(self, deep: bool = False) -> int: ... @property def nbytes(self) -> int: ... - def format( - self, - name: bool | None = ..., - formatter: Callable[..., Any] | None = ..., - na_rep: str | None = ..., - names: bool = ..., - space: int = ..., - sparsify: bool | None = ..., - adjoin: bool = ..., - ) -> list: ... def __len__(self) -> int: ... @property def values(self): ... diff --git a/pandas-stubs/core/reshape/pivot.pyi b/pandas-stubs/core/reshape/pivot.pyi index c7ea8fbd2..b88deca97 100644 --- a/pandas-stubs/core/reshape/pivot.pyi +++ b/pandas-stubs/core/reshape/pivot.pyi @@ -28,6 +28,7 @@ from pandas._typing import ( Label, Scalar, ScalarT, + SequenceNotStr, np_ndarray, ) @@ -61,6 +62,7 @@ _PivotTableColumnsTypes: TypeAlias = ( _PivotTableValuesTypes: TypeAlias = Label | Sequence[HashableT3] | None _ExtendedAnyArrayLike: TypeAlias = AnyArrayLike | ArrayLike +_Values: TypeAlias = SequenceNotStr[Any] | _ExtendedAnyArrayLike @overload def pivot_table( @@ -123,9 +125,9 @@ def pivot( ) -> DataFrame: ... @overload def crosstab( - index: list | _ExtendedAnyArrayLike | list[Sequence | _ExtendedAnyArrayLike], - columns: list | _ExtendedAnyArrayLike | list[Sequence | _ExtendedAnyArrayLike], - values: list | _ExtendedAnyArrayLike, + index: _Values | list[_Values], + columns: _Values | list[_Values], + values: _Values, rownames: list[HashableT1] | None = ..., colnames: list[HashableT2] | None = ..., *, @@ -137,8 +139,8 @@ def crosstab( ) -> DataFrame: ... @overload def crosstab( - index: list | _ExtendedAnyArrayLike | list[Sequence | _ExtendedAnyArrayLike], - columns: list | _ExtendedAnyArrayLike | list[Sequence | _ExtendedAnyArrayLike], + index: _Values | list[_Values], + columns: _Values | list[_Values], values: None = None, rownames: list[HashableT1] | None = ..., colnames: list[HashableT2] | None = ..., diff --git a/pandas-stubs/core/series.pyi b/pandas-stubs/core/series.pyi index 5ce55142b..54b224e5c 100644 --- a/pandas-stubs/core/series.pyi +++ b/pandas-stubs/core/series.pyi @@ -11,6 +11,7 @@ from collections.abc import ( Mapping, MutableMapping, Sequence, + Set as AbstractSet, ValuesView, ) from datetime import ( @@ -564,8 +565,6 @@ class Series(IndexOpsMixin[S1], ElementOpsMixin[S1], NDFrame): def __array__( # ty: ignore[invalid-method-override] self, dtype: _str | np.dtype = ..., copy: bool | None = ... ) -> np_1darray: ... - @property - def axes(self) -> list: ... @final def __getattr__(self, name: _str) -> S1: ... @@ -1171,7 +1170,7 @@ class Series(IndexOpsMixin[S1], ElementOpsMixin[S1], NDFrame): def apply( self, func: Callable[ - ..., Scalar | Sequence | set | Mapping | NAType | frozenset | None + ..., Scalar | Sequence[Any] | AbstractSet[Any] | Mapping | NAType | None ], convertDType: _bool = ..., args: tuple[Any, ...] = ..., @@ -1373,7 +1372,7 @@ class Series(IndexOpsMixin[S1], ElementOpsMixin[S1], NDFrame): ylabelsize: float | _str | None = None, yrot: float | None = None, figsize: tuple[float, float] | None = None, - bins: int | Sequence = 10, + bins: int | Sequence[int] = 10, backend: _str | None = None, legend: _bool = False, **kwargs: Any, diff --git a/pandas-stubs/io/formats/style.pyi b/pandas-stubs/io/formats/style.pyi index b79c708f0..d72df10c0 100644 --- a/pandas-stubs/io/formats/style.pyi +++ b/pandas-stubs/io/formats/style.pyi @@ -1,5 +1,6 @@ from collections.abc import ( Callable, + Hashable, MutableMapping, Sequence, ) @@ -50,7 +51,7 @@ from pandas.io.formats.style_render import ( class _SeriesFunc(Protocol): def __call__( self, series: Series, /, *args: Any, **kwargs: Any - ) -> list | Series: ... + ) -> list[Any] | Series: ... class _DataFrameFunc(Protocol): def __call__( @@ -84,13 +85,13 @@ class Styler(StylerRenderer): def map( self, func: Callable[[Scalar], str | None], - subset: Subset | None = ..., + subset: Subset[Hashable] | None = ..., ) -> Styler: ... @overload def map( self, func: _MapCallable, - subset: Subset | None = ..., + subset: Subset[Hashable] | None = ..., **kwargs: Any, ) -> Styler: ... def set_tooltips( @@ -233,9 +234,9 @@ class Styler(StylerRenderer): @overload def apply( self, - func: _SeriesFunc | Callable[[Series], list | Series], + func: _SeriesFunc | Callable[[Series], list[Any] | Series], axis: Axis = ..., - subset: Subset | None = ..., + subset: Subset[Hashable] | None = ..., **kwargs: Any, ) -> Styler: ... @overload @@ -243,7 +244,7 @@ class Styler(StylerRenderer): self, func: _DataFrameFunc | Callable[[DataFrame], np_ndarray | DataFrame], axis: None, - subset: Subset | None = ..., + subset: Subset[Hashable] | None = ..., **kwargs: Any, ) -> Styler: ... def apply_index( @@ -280,7 +281,7 @@ class Styler(StylerRenderer): ) -> Styler: ... def hide( self, - subset: Subset | None = ..., + subset: Subset[Hashable] | None = ..., axis: Axis = ..., level: Level | list[Level] | None = ..., names: bool = ..., @@ -291,7 +292,7 @@ class Styler(StylerRenderer): low: float = 0, high: float = 0, axis: Axis | None = 0, - subset: Subset | None = None, + subset: Subset[Hashable] | None = None, text_color_threshold: float = 0.408, vmin: float | None = None, vmax: float | None = None, @@ -310,7 +311,7 @@ class Styler(StylerRenderer): low: float = 0, high: float = 0, axis: Axis | None = 0, - subset: Subset | None = None, + subset: Subset[Hashable] | None = None, vmin: float | None = None, vmax: float | None = None, gmap: ( @@ -323,11 +324,11 @@ class Styler(StylerRenderer): ) = None, ) -> Styler: ... def set_properties( - self, subset: Subset | None = ..., **kwargs: str | int + self, subset: Subset[Hashable] | None = ..., **kwargs: str | int ) -> Styler: ... def bar( self, - subset: Subset | None = None, + subset: Subset[Hashable] | None = None, axis: Axis | None = 0, *, color: str | list[str] | tuple[str, str] | None = None, @@ -346,26 +347,26 @@ class Styler(StylerRenderer): def highlight_null( self, color: str | None = "red", - subset: Subset | None = None, + subset: Subset[Hashable] | None = None, props: str | None = None, ) -> Styler: ... def highlight_max( self, - subset: Subset | None = None, + subset: Subset[Hashable] | None = None, color: str = "yellow", axis: Axis | None = 0, props: str | None = None, ) -> Styler: ... def highlight_min( self, - subset: Subset | None = None, + subset: Subset[Hashable] | None = None, color: str = "yellow", axis: Axis | None = 0, props: str | None = None, ) -> Styler: ... def highlight_between( self, - subset: Subset | None = None, + subset: Subset[Hashable] | None = None, color: str = "yellow", axis: Axis | None = 0, left: Scalar | list[Scalar] | None = None, @@ -375,7 +376,7 @@ class Styler(StylerRenderer): ) -> Styler: ... def highlight_quantile( self, - subset: Subset | None = None, + subset: Subset[Hashable] | None = None, color: str = "yellow", axis: Axis | None = 0, q_left: float = 0, diff --git a/pandas-stubs/io/formats/style_render.pyi b/pandas-stubs/io/formats/style_render.pyi index fec6219c1..1edcc916b 100644 --- a/pandas-stubs/io/formats/style_render.pyi +++ b/pandas-stubs/io/formats/style_render.pyi @@ -1,5 +1,6 @@ from collections.abc import ( Callable, + Hashable, Sequence, ) from typing import ( @@ -57,7 +58,7 @@ class StylerRenderer: def format( self, formatter: ExtFormatter | None = None, - subset: Subset | None = None, + subset: Subset[Hashable] | None = None, na_rep: str | None = None, precision: int | None = None, decimal: str = ".", diff --git a/pandas-stubs/io/json/_normalize.pyi b/pandas-stubs/io/json/_normalize.pyi index 828cedefc..254be890f 100644 --- a/pandas-stubs/io/json/_normalize.pyi +++ b/pandas-stubs/io/json/_normalize.pyi @@ -4,7 +4,7 @@ from pandas._typing import IgnoreRaise def json_normalize( data: dict | list[dict], - record_path: str | list | None = None, + record_path: str | list[str] | None = None, meta: str | list[str | list[str]] | None = None, meta_prefix: str | None = None, record_prefix: str | None = None, diff --git a/pandas-stubs/io/parsers/readers.pyi b/pandas-stubs/io/parsers/readers.pyi index 17f2ced8e..8d0d4d8c4 100644 --- a/pandas-stubs/io/parsers/readers.pyi +++ b/pandas-stubs/io/parsers/readers.pyi @@ -460,7 +460,7 @@ class TextFileReader(abc.Iterator): squeeze: bool def __init__( self, - f: FilePath | ReadCsvBuffer[bytes] | ReadCsvBuffer[str] | list, + f: FilePath | ReadCsvBuffer[bytes] | ReadCsvBuffer[str] | list[str], engine: CSVEngine | None = ..., **kwds: Any, ) -> None: ... diff --git a/pandas-stubs/io/pytables.pyi b/pandas-stubs/io/pytables.pyi index 7070d55e2..6578a451b 100644 --- a/pandas-stubs/io/pytables.pyi +++ b/pandas-stubs/io/pytables.pyi @@ -220,10 +220,10 @@ class HDFStore: "namereplace", ] = "strict", ) -> None: ... - def groups(self) -> list: ... + def groups(self) -> list[object]: ... def walk( self, where: str = "/" - ) -> Generator[tuple[str, list, list[str]], None, None]: ... + ) -> Generator[tuple[str, list[str], list[str]], None, None]: ... def info(self) -> str: ... class TableIterator: diff --git a/pandas-stubs/plotting/_core.pyi b/pandas-stubs/plotting/_core.pyi index c5f4453a4..2e0adf728 100644 --- a/pandas-stubs/plotting/_core.pyi +++ b/pandas-stubs/plotting/_core.pyi @@ -454,7 +454,7 @@ class PlotAccessor: x: Hashable, y: Hashable, C: Hashable | None = ..., - reduce_C_function: Callable[[list], float] | None = ..., + reduce_C_function: Callable[[list[Any]], float] | None = ..., gridsize: int | tuple[int, int] | None = ..., *, subplots: Literal[False] | None = ..., @@ -466,7 +466,7 @@ class PlotAccessor: x: Hashable, y: Hashable, C: Hashable | None = ..., - reduce_C_function: Callable[[list], float] | None = ..., + reduce_C_function: Callable[[list[Any]], float] | None = ..., gridsize: int | tuple[int, int] | None = ..., *, subplots: Literal[True], diff --git a/tests/series/test_series.py b/tests/series/test_series.py index 6a41e339b..33eee7915 100644 --- a/tests/series/test_series.py +++ b/tests/series/test_series.py @@ -900,7 +900,7 @@ def retseries(x: float) -> float: check(assert_type(s.apply(retseries).tolist(), list), list) - def retlist(x: float) -> list: + def retlist(x: float) -> list[float]: return [x] check(assert_type(s.apply(retlist), pd.Series), pd.Series, list) diff --git a/tests/test_pandas.py b/tests/test_pandas.py index 242c4aac8..9e2e87949 100644 --- a/tests/test_pandas.py +++ b/tests/test_pandas.py @@ -1611,7 +1611,7 @@ def test_merge_asof() -> None: def test_crosstab_args() -> None: a = [1, 2, 3, 4, 1, 2, 3, 4, 1, 2] - b: list = [4, 5, 6, 3, 4, 3, 5, 6, 5, 5] + b: list[Any] = [4, 5, 6, 3, 4, 3, 5, 6, 5, 5] c = [1, 3, 2, 3, 1, 2, 3, 1, 3, 2] check(assert_type(pd.crosstab(a, b), pd.DataFrame), pd.DataFrame) check(assert_type(pd.crosstab(a, [b, c]), pd.DataFrame), pd.DataFrame)