Skip to content

Commit 4d17588

Browse files
authored
CI: flake8-pyi (#47595)
1 parent b6d5e97 commit 4d17588

12 files changed

+44
-39
lines changed

.pre-commit-config.yaml

+8
Original file line numberDiff line numberDiff line change
@@ -229,3 +229,11 @@ repos:
229229
entry: python scripts/validate_min_versions_in_sync.py
230230
language: python
231231
files: ^(ci/deps/actions-.*-minimum_versions\.yaml|pandas/compat/_optional\.py)$
232+
- id: flake8-pyi
233+
name: flake8-pyi
234+
entry: flake8 --extend-ignore=E301,E302,E305,E701,E704
235+
types: [pyi]
236+
language: python
237+
additional_dependencies:
238+
- flake8==4.0.1
239+
- flake8-pyi==22.5.1

pandas/_libs/index.pyi

+1-1
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ class BaseMultiIndexCodesEngine:
6969
) -> npt.NDArray[np.intp]: ...
7070

7171
class ExtensionEngine:
72-
def __init__(self, values: "ExtensionArray"): ...
72+
def __init__(self, values: ExtensionArray): ...
7373
def __contains__(self, val: object) -> bool: ...
7474
def get_loc(self, val: object) -> int | slice | np.ndarray: ...
7575
def get_indexer(self, values: np.ndarray) -> npt.NDArray[np.intp]: ...

pandas/_libs/interval.pyi

+9-16
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ from typing import (
44
Any,
55
Generic,
66
TypeVar,
7-
Union,
87
overload,
98
)
109

@@ -81,11 +80,7 @@ class Interval(IntervalMixin, Generic[_OrderableT]):
8180
self: Interval[_OrderableTimesT], key: _OrderableTimesT
8281
) -> bool: ...
8382
@overload
84-
def __contains__(
85-
self: Interval[_OrderableScalarT], key: Union[int, float]
86-
) -> bool: ...
87-
def __repr__(self) -> str: ...
88-
def __str__(self) -> str: ...
83+
def __contains__(self: Interval[_OrderableScalarT], key: int | float) -> bool: ...
8984
@overload
9085
def __add__(
9186
self: Interval[_OrderableTimesT], y: Timedelta
@@ -95,7 +90,7 @@ class Interval(IntervalMixin, Generic[_OrderableT]):
9590
self: Interval[int], y: _OrderableScalarT
9691
) -> Interval[_OrderableScalarT]: ...
9792
@overload
98-
def __add__(self: Interval[float], y: Union[int, float]) -> Interval[float]: ...
93+
def __add__(self: Interval[float], y: int | float) -> Interval[float]: ...
9994
@overload
10095
def __radd__(
10196
self: Interval[_OrderableTimesT], y: Timedelta
@@ -105,7 +100,7 @@ class Interval(IntervalMixin, Generic[_OrderableT]):
105100
self: Interval[int], y: _OrderableScalarT
106101
) -> Interval[_OrderableScalarT]: ...
107102
@overload
108-
def __radd__(self: Interval[float], y: Union[int, float]) -> Interval[float]: ...
103+
def __radd__(self: Interval[float], y: int | float) -> Interval[float]: ...
109104
@overload
110105
def __sub__(
111106
self: Interval[_OrderableTimesT], y: Timedelta
@@ -115,7 +110,7 @@ class Interval(IntervalMixin, Generic[_OrderableT]):
115110
self: Interval[int], y: _OrderableScalarT
116111
) -> Interval[_OrderableScalarT]: ...
117112
@overload
118-
def __sub__(self: Interval[float], y: Union[int, float]) -> Interval[float]: ...
113+
def __sub__(self: Interval[float], y: int | float) -> Interval[float]: ...
119114
@overload
120115
def __rsub__(
121116
self: Interval[_OrderableTimesT], y: Timedelta
@@ -125,33 +120,31 @@ class Interval(IntervalMixin, Generic[_OrderableT]):
125120
self: Interval[int], y: _OrderableScalarT
126121
) -> Interval[_OrderableScalarT]: ...
127122
@overload
128-
def __rsub__(self: Interval[float], y: Union[int, float]) -> Interval[float]: ...
123+
def __rsub__(self: Interval[float], y: int | float) -> Interval[float]: ...
129124
@overload
130125
def __mul__(
131126
self: Interval[int], y: _OrderableScalarT
132127
) -> Interval[_OrderableScalarT]: ...
133128
@overload
134-
def __mul__(self: Interval[float], y: Union[int, float]) -> Interval[float]: ...
129+
def __mul__(self: Interval[float], y: int | float) -> Interval[float]: ...
135130
@overload
136131
def __rmul__(
137132
self: Interval[int], y: _OrderableScalarT
138133
) -> Interval[_OrderableScalarT]: ...
139134
@overload
140-
def __rmul__(self: Interval[float], y: Union[int, float]) -> Interval[float]: ...
135+
def __rmul__(self: Interval[float], y: int | float) -> Interval[float]: ...
141136
@overload
142137
def __truediv__(
143138
self: Interval[int], y: _OrderableScalarT
144139
) -> Interval[_OrderableScalarT]: ...
145140
@overload
146-
def __truediv__(self: Interval[float], y: Union[int, float]) -> Interval[float]: ...
141+
def __truediv__(self: Interval[float], y: int | float) -> Interval[float]: ...
147142
@overload
148143
def __floordiv__(
149144
self: Interval[int], y: _OrderableScalarT
150145
) -> Interval[_OrderableScalarT]: ...
151146
@overload
152-
def __floordiv__(
153-
self: Interval[float], y: Union[int, float]
154-
) -> Interval[float]: ...
147+
def __floordiv__(self: Interval[float], y: int | float) -> Interval[float]: ...
155148
def overlaps(self: Interval[_OrderableT], other: Interval[_OrderableT]) -> bool: ...
156149

157150
def intervals_to_interval_bounds(

pandas/_libs/lib.pyi

+1-1
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ def count_level_2d(
213213
def get_level_sorter(
214214
label: np.ndarray, # const int64_t[:]
215215
starts: np.ndarray, # const intp_t[:]
216-
) -> np.ndarray: ... # np.ndarray[np.intp, ndim=1]
216+
) -> np.ndarray: ... # np.ndarray[np.intp, ndim=1]
217217
def generate_bins_dt64(
218218
values: npt.NDArray[np.int64],
219219
binner: np.ndarray, # const int64_t[:]

pandas/_libs/sparse.pyi

+3-3
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import numpy as np
77

88
from pandas._typing import npt
99

10-
SparseIndexT = TypeVar("SparseIndexT", bound="SparseIndex")
10+
_SparseIndexT = TypeVar("_SparseIndexT", bound=SparseIndex)
1111

1212
class SparseIndex:
1313
length: int
@@ -24,8 +24,8 @@ class SparseIndex:
2424
def lookup_array(self, indexer: npt.NDArray[np.int32]) -> npt.NDArray[np.int32]: ...
2525
def to_int_index(self) -> IntIndex: ...
2626
def to_block_index(self) -> BlockIndex: ...
27-
def intersect(self: SparseIndexT, y_: SparseIndex) -> SparseIndexT: ...
28-
def make_union(self: SparseIndexT, y_: SparseIndex) -> SparseIndexT: ...
27+
def intersect(self: _SparseIndexT, y_: SparseIndex) -> _SparseIndexT: ...
28+
def make_union(self: _SparseIndexT, y_: SparseIndex) -> _SparseIndexT: ...
2929

3030
class IntIndex(SparseIndex):
3131
indices: npt.NDArray[np.int32]

pandas/_libs/tslibs/conversion.pyi

-2
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@ from datetime import (
55

66
import numpy as np
77

8-
from pandas._typing import npt
9-
108
DT64NS_DTYPE: np.dtype
119
TD64NS_DTYPE: np.dtype
1210

pandas/_libs/tslibs/nattype.pyi

+3-7
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,6 @@ from datetime import (
33
timedelta,
44
tzinfo as _tzinfo,
55
)
6-
from typing import (
7-
Any,
8-
Union,
9-
)
106

117
import numpy as np
128

@@ -18,7 +14,7 @@ nat_strings: set[str]
1814

1915
def is_null_datetimelike(val: object, inat_is_null: bool = ...) -> bool: ...
2016

21-
_NaTComparisonTypes = Union[datetime, timedelta, Period, np.datetime64, np.timedelta64]
17+
_NaTComparisonTypes = datetime | timedelta | Period | np.datetime64 | np.timedelta64
2218

2319
class _NatComparison:
2420
def __call__(self, other: _NaTComparisonTypes) -> bool: ...
@@ -117,8 +113,8 @@ class NaTType:
117113
# inject Period properties
118114
@property
119115
def qyear(self) -> float: ...
120-
def __eq__(self, other: Any) -> bool: ...
121-
def __ne__(self, other: Any) -> bool: ...
116+
def __eq__(self, other: object) -> bool: ...
117+
def __ne__(self, other: object) -> bool: ...
122118
__lt__: _NatComparison
123119
__le__: _NatComparison
124120
__gt__: _NatComparison

pandas/_libs/tslibs/offsets.pyi

+2-3
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ from .timedeltas import Timedelta
2121

2222
if TYPE_CHECKING:
2323
from pandas.core.indexes.datetimes import DatetimeIndex
24-
_BaseOffsetT = TypeVar("_BaseOffsetT", bound="BaseOffset")
24+
_BaseOffsetT = TypeVar("_BaseOffsetT", bound=BaseOffset)
2525
_DatetimeT = TypeVar("_DatetimeT", bound=datetime)
2626
_TimedeltaT = TypeVar("_TimedeltaT", bound=timedelta)
2727

@@ -76,13 +76,12 @@ class BaseOffset:
7676
def __rmul__(self: _BaseOffsetT, other: int) -> _BaseOffsetT: ...
7777
def __neg__(self: _BaseOffsetT) -> _BaseOffsetT: ...
7878
def copy(self: _BaseOffsetT) -> _BaseOffsetT: ...
79-
def __repr__(self) -> str: ...
8079
@property
8180
def name(self) -> str: ...
8281
@property
8382
def rule_code(self) -> str: ...
8483
def freqstr(self) -> str: ...
85-
def apply_index(self, dtindex: "DatetimeIndex") -> "DatetimeIndex": ...
84+
def apply_index(self, dtindex: DatetimeIndex) -> DatetimeIndex: ...
8685
def _apply_array(self, dtarr) -> None: ...
8786
def rollback(self, dt: datetime) -> datetime: ...
8887
def rollforward(self, dt: datetime) -> datetime: ...

pandas/_libs/tslibs/timedeltas.pyi

+1-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ from datetime import timedelta
22
from typing import (
33
ClassVar,
44
Literal,
5-
Type,
65
TypeVar,
76
overload,
87
)
@@ -84,7 +83,7 @@ class Timedelta(timedelta):
8483
resolution: ClassVar[Timedelta]
8584
value: int # np.int64
8685
def __new__(
87-
cls: Type[_S],
86+
cls: type[_S],
8887
value=...,
8988
unit: str = ...,
9089
**kwargs: int | float | np.integer | np.floating,

pandas/_libs/tslibs/timestamps.pyi

+3-1
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,9 @@ class Timestamp(datetime):
104104
def utcnow(cls: type[_DatetimeT]) -> _DatetimeT: ...
105105
# error: Signature of "combine" incompatible with supertype "datetime"
106106
@classmethod
107-
def combine(cls, date: _date, time: _time) -> datetime: ... # type: ignore[override]
107+
def combine( # type: ignore[override]
108+
cls, date: _date, time: _time
109+
) -> datetime: ...
108110
@classmethod
109111
def fromisoformat(cls: type[_DatetimeT], date_string: str) -> _DatetimeT: ...
110112
def strftime(self, format: str) -> str: ...

pandas/_libs/writers.pyi

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ def max_len_string_array(
1717
) -> int: ...
1818
def word_len(val: object) -> int: ...
1919
def string_array_replace_from_nan_rep(
20-
arr: np.ndarray, # np.ndarray[object, ndim=1]
20+
arr: np.ndarray, # np.ndarray[object, ndim=1]
2121
nan_rep: object,
2222
replace: object = ...,
2323
) -> None: ...

setup.cfg

+12-2
Original file line numberDiff line numberDiff line change
@@ -107,9 +107,19 @@ ignore =
107107
# false positives
108108
B301,
109109
# single-letter variables
110-
PDF023
110+
PDF023,
111111
# "use 'pandas._testing' instead" in non-test code
112-
PDF025
112+
PDF025,
113+
# If test must be a simple comparison against sys.platform or sys.version_info
114+
Y002,
115+
# Use "_typeshed.Self" instead of class-bound TypeVar
116+
Y019,
117+
# Docstrings should not be included in stubs
118+
Y021,
119+
# Use typing_extensions.TypeAlias for type aliases
120+
Y026,
121+
# Use "collections.abc.*" instead of "typing.*" (PEP 585 syntax)
122+
Y027
113123
exclude =
114124
doc/sphinxext/*.py,
115125
doc/build/*.py,

0 commit comments

Comments
 (0)