Skip to content

Commit effc252

Browse files
committed
fix(comment): with unwanted ignores #1314 (comment) #1314 (comment) #1314 (comment)
1 parent d91bebb commit effc252

File tree

4 files changed

+96
-20
lines changed

4 files changed

+96
-20
lines changed

pandas-stubs/core/series.pyi

Lines changed: 42 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,7 @@ from pandas.core.dtypes.dtypes import CategoricalDtype
188188

189189
from pandas.plotting import PlotAccessor
190190

191+
_T_NUM_NON_BOOL = TypeVar("_T_NUM_NON_BOOL", int, float, complex)
191192
_T_INT = TypeVar("_T_INT", bound=int)
192193
_T_COMPLEX = TypeVar("_T_COMPLEX", bound=complex)
193194

@@ -2100,17 +2101,22 @@ class Series(IndexOpsMixin[S1], NDFrame):
21002101
self: Series[Never], other: complex | _ListLike | Series
21012102
) -> Series: ...
21022103
@overload
2103-
def __truediv__(self, other: Series[Never]) -> Series: ...
2104+
def __truediv__(self, other: Series[Never]) -> Series: ... # type: ignore[overload-overlap]
2105+
@overload
2106+
def __truediv__(
2107+
self: Series[bool],
2108+
other: bool | np_ndarray_bool | Series[bool],
2109+
) -> Never: ...
21042110
@overload
21052111
def __truediv__(
21062112
self: Series[bool],
21072113
other: int | Sequence[int] | np_ndarray_anyint | np_ndarray_float | Series[int],
21082114
) -> Series[float]: ...
21092115
@overload
2110-
def __truediv__(
2116+
def __truediv__( # type: ignore[overload-overlap]
21112117
self: Series[bool],
2112-
other: _T_COMPLEX | Sequence[_T_COMPLEX] | Series[_T_COMPLEX],
2113-
) -> Series[_T_COMPLEX]: ...
2118+
other: _T_NUM_NON_BOOL | Sequence[_T_NUM_NON_BOOL] | Series[_T_NUM_NON_BOOL],
2119+
) -> Series[_T_NUM_NON_BOOL]: ...
21142120
@overload
21152121
def __truediv__(
21162122
self: Series[int],
@@ -2172,14 +2178,22 @@ class Series(IndexOpsMixin[S1], NDFrame):
21722178
axis: AxisIndex = 0,
21732179
) -> Series: ...
21742180
@overload
2175-
def truediv(
2181+
def truediv( # type: ignore[overload-overlap]
21762182
self,
21772183
other: Series[Never],
21782184
level: Level | None = None,
21792185
fill_value: float | None = None,
21802186
axis: AxisIndex = 0,
21812187
) -> Series: ...
21822188
@overload
2189+
def truediv(
2190+
self: Series[bool],
2191+
other: bool | np_ndarray_bool | Series[bool],
2192+
level: Level | None = None,
2193+
fill_value: float | None = None,
2194+
axis: AxisIndex = 0,
2195+
) -> Never: ...
2196+
@overload
21832197
def truediv(
21842198
self: Series[bool],
21852199
other: int | Sequence[int] | np_ndarray_anyint | np_ndarray_float | Series[int],
@@ -2188,13 +2202,13 @@ class Series(IndexOpsMixin[S1], NDFrame):
21882202
axis: AxisIndex = 0,
21892203
) -> Series[float]: ...
21902204
@overload
2191-
def truediv(
2205+
def truediv( # type: ignore[overload-overlap]
21922206
self: Series[bool],
2193-
other: _T_COMPLEX | Sequence[_T_COMPLEX] | Series[_T_COMPLEX],
2207+
other: _T_NUM_NON_BOOL | Sequence[_T_NUM_NON_BOOL] | Series[_T_NUM_NON_BOOL],
21942208
level: Level | None = None,
21952209
fill_value: float | None = None,
21962210
axis: AxisIndex = 0,
2197-
) -> Series[_T_COMPLEX]: ...
2211+
) -> Series[_T_NUM_NON_BOOL]: ...
21982212
@overload
21992213
def truediv(
22002214
self: Series[int],
@@ -2271,12 +2285,17 @@ class Series(IndexOpsMixin[S1], NDFrame):
22712285
@overload
22722286
def __rtruediv__(
22732287
self: Series[bool],
2274-
other: _T_INT | Sequence[_T_INT] | np_ndarray_anyint | np_ndarray_float,
2275-
) -> Series[float]: ...
2288+
other: bool | np_ndarray_bool,
2289+
) -> Never: ...
22762290
@overload
22772291
def __rtruediv__(
2278-
self: Series[bool], other: _T_COMPLEX | Sequence[_T_COMPLEX]
2279-
) -> Series[_T_COMPLEX]: ...
2292+
self: Series[bool],
2293+
other: int | Sequence[int] | np_ndarray_anyint | np_ndarray_float,
2294+
) -> Series[float]: ...
2295+
@overload
2296+
def __rtruediv__( # type: ignore[overload-overlap]
2297+
self: Series[bool], other: _T_NUM_NON_BOOL | Sequence[_T_NUM_NON_BOOL]
2298+
) -> Series[_T_NUM_NON_BOOL]: ...
22802299
@overload
22812300
def __rtruediv__(
22822301
self: Series[int],
@@ -2327,6 +2346,14 @@ class Series(IndexOpsMixin[S1], NDFrame):
23272346
axis: AxisIndex = 0,
23282347
) -> Series: ...
23292348
@overload
2349+
def rtruediv(
2350+
self: Series[bool],
2351+
other: bool | np_ndarray_bool | Series[bool],
2352+
level: Level | None = None,
2353+
fill_value: float | None = None,
2354+
axis: AxisIndex = 0,
2355+
) -> Never: ...
2356+
@overload
23302357
def rtruediv(
23312358
self: Series[bool],
23322359
other: int | Sequence[int] | np_ndarray_anyint | np_ndarray_float | Series[int],
@@ -2335,13 +2362,13 @@ class Series(IndexOpsMixin[S1], NDFrame):
23352362
axis: AxisIndex = 0,
23362363
) -> Series[float]: ...
23372364
@overload
2338-
def rtruediv(
2365+
def rtruediv( # type: ignore[overload-overlap]
23392366
self: Series[bool],
2340-
other: _T_COMPLEX | Sequence[_T_COMPLEX] | Series[_T_COMPLEX],
2367+
other: _T_NUM_NON_BOOL | Sequence[_T_NUM_NON_BOOL] | Series[_T_NUM_NON_BOOL],
23412368
level: Level | None = None,
23422369
fill_value: float | None = None,
23432370
axis: AxisIndex = 0,
2344-
) -> Series[_T_COMPLEX]: ...
2371+
) -> Series[_T_NUM_NON_BOOL]: ...
23452372
@overload
23462373
def rtruediv(
23472374
self: Series[int],

tests/series/arithmetic/bool/test_truediv.py

Lines changed: 52 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,36 @@
1+
from typing import Never
2+
13
import numpy as np
24
from numpy import typing as npt # noqa: F401
35
import pandas as pd
46
from typing_extensions import assert_type
57

6-
from tests import check
8+
from tests import (
9+
TYPE_CHECKING_INVALID_USAGE,
10+
check,
11+
)
712

813
left = pd.Series([True, False, True]) # left operand
914

1015

1116
def test_truediv_py_scalar() -> None:
1217
"""Test pd.Series[bool] / Python native scalars"""
13-
i, f, c = 1, 1.0, 1j
18+
b, i, f, c = True, 1, 1.0, 1j
1419

20+
if TYPE_CHECKING_INVALID_USAGE:
21+
assert_type(left / b, Never)
1522
check(assert_type(left / i, "pd.Series[float]"), pd.Series, np.floating)
1623
check(assert_type(left / f, "pd.Series[float]"), pd.Series, np.floating)
1724
check(assert_type(left / c, "pd.Series[complex]"), pd.Series, np.complexfloating)
1825

26+
if TYPE_CHECKING_INVALID_USAGE:
27+
assert_type(b / left, Never)
1928
check(assert_type(i / left, "pd.Series[float]"), pd.Series, np.floating)
2029
check(assert_type(f / left, "pd.Series[float]"), pd.Series, np.floating)
2130
check(assert_type(c / left, "pd.Series[complex]"), pd.Series, np.complexfloating)
2231

32+
if TYPE_CHECKING_INVALID_USAGE:
33+
assert_type(left.truediv(b), Never)
2334
check(assert_type(left.truediv(i), "pd.Series[float]"), pd.Series, np.floating)
2435
check(assert_type(left.truediv(f), "pd.Series[float]"), pd.Series, np.floating)
2536
check(
@@ -28,10 +39,14 @@ def test_truediv_py_scalar() -> None:
2839
np.complexfloating,
2940
)
3041

42+
if TYPE_CHECKING_INVALID_USAGE:
43+
assert_type(left.div(b), Never)
3144
check(assert_type(left.div(i), "pd.Series[float]"), pd.Series, np.floating)
3245
check(assert_type(left.div(f), "pd.Series[float]"), pd.Series, np.floating)
3346
check(assert_type(left.div(c), "pd.Series[complex]"), pd.Series, np.complexfloating)
3447

48+
if TYPE_CHECKING_INVALID_USAGE:
49+
assert_type(left.rtruediv(b), Never)
3550
check(assert_type(left.rtruediv(i), "pd.Series[float]"), pd.Series, np.floating)
3651
check(assert_type(left.rtruediv(f), "pd.Series[float]"), pd.Series, np.floating)
3752
check(
@@ -40,6 +55,8 @@ def test_truediv_py_scalar() -> None:
4055
np.complexfloating,
4156
)
4257

58+
if TYPE_CHECKING_INVALID_USAGE:
59+
assert_type(left.rdiv(b), Never)
4360
check(assert_type(left.rdiv(i), "pd.Series[float]"), pd.Series, np.floating)
4461
check(assert_type(left.rdiv(f), "pd.Series[float]"), pd.Series, np.floating)
4562
check(
@@ -49,16 +66,19 @@ def test_truediv_py_scalar() -> None:
4966

5067
def test_truediv_py_sequence() -> None:
5168
"""Test pd.Series[bool] / Python native sequence"""
52-
i, f, c = [2, 3, 5], [1.0, 2.0, 3.0], [1j, 1j, 4j]
69+
b, i, f, c = [True, False, True], [2, 3, 5], [1.0, 2.0, 3.0], [1j, 1j, 4j]
5370

71+
check(assert_type(left / b, "pd.Series[float]"), pd.Series, np.floating)
5472
check(assert_type(left / i, "pd.Series[float]"), pd.Series, np.floating)
5573
check(assert_type(left / f, "pd.Series[float]"), pd.Series, np.floating)
5674
check(assert_type(left / c, "pd.Series[complex]"), pd.Series, np.complexfloating)
5775

76+
check(assert_type(b / left, "pd.Series[float]"), pd.Series, np.floating)
5877
check(assert_type(i / left, "pd.Series[float]"), pd.Series, np.floating)
5978
check(assert_type(f / left, "pd.Series[float]"), pd.Series, np.floating)
6079
check(assert_type(c / left, "pd.Series[complex]"), pd.Series, np.complexfloating)
6180

81+
check(assert_type(left.truediv(b), "pd.Series[float]"), pd.Series, np.floating)
6282
check(assert_type(left.truediv(i), "pd.Series[float]"), pd.Series, np.floating)
6383
check(assert_type(left.truediv(f), "pd.Series[float]"), pd.Series, np.floating)
6484
check(
@@ -67,10 +87,12 @@ def test_truediv_py_sequence() -> None:
6787
np.complexfloating,
6888
)
6989

90+
check(assert_type(left.div(b), "pd.Series[float]"), pd.Series, np.floating)
7091
check(assert_type(left.div(i), "pd.Series[float]"), pd.Series, np.floating)
7192
check(assert_type(left.div(f), "pd.Series[float]"), pd.Series, np.floating)
7293
check(assert_type(left.div(c), "pd.Series[complex]"), pd.Series, np.complexfloating)
7394

95+
check(assert_type(left.rtruediv(b), "pd.Series[float]"), pd.Series, np.floating)
7496
check(assert_type(left.rtruediv(i), "pd.Series[float]"), pd.Series, np.floating)
7597
check(assert_type(left.rtruediv(f), "pd.Series[float]"), pd.Series, np.floating)
7698
check(
@@ -79,6 +101,7 @@ def test_truediv_py_sequence() -> None:
79101
np.complexfloating,
80102
)
81103

104+
check(assert_type(left.rdiv(b), "pd.Series[float]"), pd.Series, np.floating)
82105
check(assert_type(left.rdiv(i), "pd.Series[float]"), pd.Series, np.floating)
83106
check(assert_type(left.rdiv(f), "pd.Series[float]"), pd.Series, np.floating)
84107
check(
@@ -88,17 +111,22 @@ def test_truediv_py_sequence() -> None:
88111

89112
def test_truediv_numpy_array() -> None:
90113
"""Test pd.Series[bool] / numpy array"""
114+
b = np.array([True, False, True], np.bool_)
91115
i = np.array([2, 3, 5], np.int64)
92116
f = np.array([1.0, 2.0, 3.0], np.float64)
93117
c = np.array([1.1j, 2.2j, 4.1j], np.complex128)
94118

119+
if TYPE_CHECKING_INVALID_USAGE:
120+
assert_type(left / b, Never)
95121
check(assert_type(left / i, "pd.Series[float]"), pd.Series, np.floating)
96122
check(assert_type(left / f, "pd.Series[float]"), pd.Series, np.floating)
97123
check(assert_type(left / c, "pd.Series[complex]"), pd.Series, np.complexfloating)
98124

99125
# `numpy` typing gives the corresponding `ndarray`s in the static type
100126
# checking, where our `__rtruediv__` cannot override. At runtime, they return
101127
# `Series`s with the correct element type.
128+
if TYPE_CHECKING_INVALID_USAGE:
129+
assert_type(b / left, "npt.NDArray[np.float64]")
102130
check(assert_type(i / left, "npt.NDArray[np.float64]"), pd.Series, np.floating)
103131
check(assert_type(f / left, "npt.NDArray[np.float64]"), pd.Series, np.floating)
104132
check(
@@ -107,6 +135,8 @@ def test_truediv_numpy_array() -> None:
107135
np.complexfloating,
108136
)
109137

138+
if TYPE_CHECKING_INVALID_USAGE:
139+
assert_type(left.truediv(b), Never)
110140
check(assert_type(left.truediv(i), "pd.Series[float]"), pd.Series, np.floating)
111141
check(assert_type(left.truediv(f), "pd.Series[float]"), pd.Series, np.floating)
112142
check(
@@ -115,10 +145,14 @@ def test_truediv_numpy_array() -> None:
115145
np.complexfloating,
116146
)
117147

148+
if TYPE_CHECKING_INVALID_USAGE:
149+
assert_type(left.div(b), Never)
118150
check(assert_type(left.div(i), "pd.Series[float]"), pd.Series, np.floating)
119151
check(assert_type(left.div(f), "pd.Series[float]"), pd.Series, np.floating)
120152
check(assert_type(left.div(c), "pd.Series[complex]"), pd.Series, np.complexfloating)
121153

154+
if TYPE_CHECKING_INVALID_USAGE:
155+
assert_type(left.rtruediv(b), Never)
122156
check(assert_type(left.rtruediv(i), "pd.Series[float]"), pd.Series, np.floating)
123157
check(assert_type(left.rtruediv(f), "pd.Series[float]"), pd.Series, np.floating)
124158
check(
@@ -127,6 +161,8 @@ def test_truediv_numpy_array() -> None:
127161
np.complexfloating,
128162
)
129163

164+
if TYPE_CHECKING_INVALID_USAGE:
165+
assert_type(left.rdiv(b), Never)
130166
check(assert_type(left.rdiv(i), "pd.Series[float]"), pd.Series, np.floating)
131167
check(assert_type(left.rdiv(f), "pd.Series[float]"), pd.Series, np.floating)
132168
check(
@@ -136,18 +172,25 @@ def test_truediv_numpy_array() -> None:
136172

137173
def test_truediv_pd_series() -> None:
138174
"""Test pd.Series[bool] / pandas series"""
175+
b = pd.Series([True, False, True])
139176
i = pd.Series([2, 3, 5])
140177
f = pd.Series([1.0, 2.0, 3.0])
141178
c = pd.Series([1.1j, 2.2j, 4.1j])
142179

180+
if TYPE_CHECKING_INVALID_USAGE:
181+
assert_type(left / b, Never)
143182
check(assert_type(left / i, "pd.Series[float]"), pd.Series, np.floating)
144183
check(assert_type(left / f, "pd.Series[float]"), pd.Series, np.floating)
145184
check(assert_type(left / c, "pd.Series[complex]"), pd.Series, np.complexfloating)
146185

186+
if TYPE_CHECKING_INVALID_USAGE:
187+
assert_type(b / left, Never)
147188
check(assert_type(i / left, "pd.Series[float]"), pd.Series, np.floating)
148189
check(assert_type(f / left, "pd.Series[float]"), pd.Series, np.floating)
149190
check(assert_type(c / left, "pd.Series[complex]"), pd.Series, np.complexfloating)
150191

192+
if TYPE_CHECKING_INVALID_USAGE:
193+
assert_type(left.truediv(b), Never)
151194
check(assert_type(left.truediv(i), "pd.Series[float]"), pd.Series, np.floating)
152195
check(assert_type(left.truediv(f), "pd.Series[float]"), pd.Series, np.floating)
153196
check(
@@ -156,10 +199,14 @@ def test_truediv_pd_series() -> None:
156199
np.complexfloating,
157200
)
158201

202+
if TYPE_CHECKING_INVALID_USAGE:
203+
assert_type(left.div(b), Never)
159204
check(assert_type(left.div(i), "pd.Series[float]"), pd.Series, np.floating)
160205
check(assert_type(left.div(f), "pd.Series[float]"), pd.Series, np.floating)
161206
check(assert_type(left.div(c), "pd.Series[complex]"), pd.Series, np.complexfloating)
162207

208+
if TYPE_CHECKING_INVALID_USAGE:
209+
assert_type(left.rtruediv(b), Never)
163210
check(assert_type(left.rtruediv(i), "pd.Series[float]"), pd.Series, np.floating)
164211
check(assert_type(left.rtruediv(f), "pd.Series[float]"), pd.Series, np.floating)
165212
check(
@@ -168,6 +215,8 @@ def test_truediv_pd_series() -> None:
168215
np.complexfloating,
169216
)
170217

218+
if TYPE_CHECKING_INVALID_USAGE:
219+
assert_type(left.rdiv(b), Never)
171220
check(assert_type(left.rdiv(i), "pd.Series[float]"), pd.Series, np.floating)
172221
check(assert_type(left.rdiv(f), "pd.Series[float]"), pd.Series, np.floating)
173222
check(

tests/series/arithmetic/test_truediv.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ def test_truediv_pd_series() -> None:
145145
check(assert_type(left / f, pd.Series), pd.Series)
146146
check(assert_type(left / c, pd.Series), pd.Series)
147147

148-
check(assert_type(b / left, pd.Series), pd.Series)
148+
check(assert_type(b / left, pd.Series), pd.Series) # type: ignore[assert-type]
149149
check(assert_type(i / left, pd.Series), pd.Series)
150150
check(assert_type(f / left, pd.Series), pd.Series)
151151
check(assert_type(c / left, pd.Series), pd.Series)

tests/series/test_series.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1607,7 +1607,7 @@ def test_series_min_max_sub_axis() -> None:
16071607
check(assert_type(sa, pd.Series), pd.Series)
16081608
check(assert_type(ss, pd.Series), pd.Series)
16091609
check(assert_type(sm, pd.Series), pd.Series)
1610-
check(assert_type(sd, pd.Series), pd.Series)
1610+
check(assert_type(sd, pd.Series), pd.Series) # type: ignore[assert-type]
16111611

16121612

16131613
def test_series_index_isin() -> None:

0 commit comments

Comments
 (0)