diff --git a/pandas-stubs/__init__.pyi b/pandas-stubs/__init__.pyi index 62d205812..395be2b48 100644 --- a/pandas-stubs/__init__.pyi +++ b/pandas-stubs/__init__.pyi @@ -94,7 +94,6 @@ from pandas._config import ( ) from pandas.util._print_versions import show_versions as show_versions -from pandas.util._tester import test as test from pandas.io.api import ( ExcelFile as ExcelFile, diff --git a/pandas-stubs/core/arrays/arrow/__init__.pyi b/pandas-stubs/core/arrays/arrow/__init__.pyi new file mode 100644 index 000000000..e69de29bb diff --git a/pandas-stubs/core/indexers/__init__.pyi b/pandas-stubs/core/indexers/__init__.pyi new file mode 100644 index 000000000..b3d832a36 --- /dev/null +++ b/pandas-stubs/core/indexers/__init__.pyi @@ -0,0 +1,2 @@ +from pandas.core.indexers.objects import BaseIndexer as BaseIndexer +from pandas.core.indexers.utils import check_array_indexer as check_array_indexer diff --git a/pandas-stubs/core/indexers/objects.pyi b/pandas-stubs/core/indexers/objects.pyi new file mode 100644 index 000000000..2187cf885 --- /dev/null +++ b/pandas-stubs/core/indexers/objects.pyi @@ -0,0 +1,31 @@ +from typing import Any + +import numpy as np +from pandas import DatetimeIndex + +from pandas._libs.tslibs import BaseOffset + +class BaseIndexer: + def __init__( + self, index_array: np.ndarray | None = None, window_size: int = 0, **kwargs: Any + ) -> None: ... + def get_window_bounds( + self, + num_values: int, + min_periods: int | None, + center: bool | None, + closed: str | None = None, + step: int | None = None, + ) -> tuple[np.ndarray, np.ndarray]: ... + +class FixedForwardWindowIndexer(BaseIndexer): ... + +class VariableOffsetWindowIndexer(BaseIndexer): + def __init__( + self, + index_array: np.ndarray | None = None, + window_size: int = 0, + index: DatetimeIndex | None = None, + offset: BaseOffset | None = None, + **kwargs: Any, + ) -> None: ... diff --git a/pandas-stubs/core/indexers/utils.pyi b/pandas-stubs/core/indexers/utils.pyi new file mode 100644 index 000000000..60f1eb760 --- /dev/null +++ b/pandas-stubs/core/indexers/utils.pyi @@ -0,0 +1,15 @@ +from typing import overload + +from pandas._typing import ( + AnyArrayLike, + ListLike, + np_ndarray_int, +) + +# Docs may not be right. See pandas-dev/pandas#62562 +@overload +def check_array_indexer(array: AnyArrayLike, indexer: int) -> int: ... +@overload +def check_array_indexer(array: AnyArrayLike, indexer: slice) -> slice: ... +@overload +def check_array_indexer(array: AnyArrayLike, indexer: ListLike) -> np_ndarray_int: ... diff --git a/pandas-stubs/io/api.pyi b/pandas-stubs/io/api.pyi index dc41ede2f..8da2a7a40 100644 --- a/pandas-stubs/io/api.pyi +++ b/pandas-stubs/io/api.pyi @@ -5,7 +5,6 @@ from pandas.io.excel import ( read_excel as read_excel, ) from pandas.io.feather_format import read_feather as read_feather -from pandas.io.gbq import read_gbq as read_gbq from pandas.io.html import read_html as read_html from pandas.io.json import read_json as read_json from pandas.io.orc import read_orc as read_orc diff --git a/pandas-stubs/io/excel/_base.pyi b/pandas-stubs/io/excel/_base.pyi index 33ce34814..fdd1a03c4 100644 --- a/pandas-stubs/io/excel/_base.pyi +++ b/pandas-stubs/io/excel/_base.pyi @@ -12,10 +12,10 @@ from typing import ( overload, ) -from odf.opendocument import OpenDocument +from odf.opendocument import OpenDocument # pyright: ignore[reportMissingTypeStubs] from openpyxl.workbook.workbook import Workbook from pandas.core.frame import DataFrame -import pyxlsb.workbook +import pyxlsb.workbook # pyright: ignore[reportMissingTypeStubs] from typing_extensions import Self from xlrd.book import Book diff --git a/pandas-stubs/io/parsers/readers.pyi b/pandas-stubs/io/parsers/readers.pyi index 227e69f0d..c3ad7f391 100644 --- a/pandas-stubs/io/parsers/readers.pyi +++ b/pandas-stubs/io/parsers/readers.pyi @@ -34,8 +34,6 @@ from pandas._typing import ( UsecolsArgType, ) -from pandas.io.common import IOHandles - @overload def read_csv( filepath_or_buffer: FilePath | ReadCsvBuffer[bytes] | ReadCsvBuffer[str], @@ -472,7 +470,6 @@ class TextFileReader(abc.Iterator): chunksize: int | None nrows: int | None squeeze: bool - handles: IOHandles | None def __init__( self, f: FilePath | ReadCsvBuffer[bytes] | ReadCsvBuffer[str] | list, diff --git a/pyproject.toml b/pyproject.toml index a9f5bda73..48d2c42f0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -68,6 +68,7 @@ types-python-dateutil = ">=2.8.19" beautifulsoup4 = ">=4.14.2" html5lib = ">=1.1" python-calamine = ">=0.2.0" +pyarrow-stubs = { version = ">=20.0.0.20250928", python = "<4" } [build-system] requires = ["poetry-core>=1.0.0"] @@ -240,7 +241,6 @@ enableTypeIgnoreComments = false # use pyright-specific ignores # disable subset of strict reportMissingParameterType = false reportMissingTypeArgument = false -reportMissingTypeStubs = false reportUnnecessaryTypeIgnoreComment = true reportUnknownArgumentType = false reportUnknownLambdaType = false diff --git a/tests/extension/decimal/array.py b/tests/extension/decimal/array.py index 60cfe3fb7..92f59c081 100644 --- a/tests/extension/decimal/array.py +++ b/tests/extension/decimal/array.py @@ -6,7 +6,6 @@ import sys import numpy as np -import pandas as pd from pandas.api.extensions import ( no_default, register_extension_dtype, @@ -165,7 +164,7 @@ def __getitem__(self, item): return self._data[item] else: # array, slice. - item = pd.api.indexers.check_array_indexer(self, item) + item = check_array_indexer(self, item) return type(self)(self._data[item]) def take(