Skip to content

Commit 5dab881

Browse files
committed
Merge branch 'main' into feature/cmp0xff/arithmetic-sub
2 parents 672009e + fe3b81a commit 5dab881

File tree

16 files changed

+1147
-554
lines changed

16 files changed

+1147
-554
lines changed

pandas-stubs/core/frame.pyi

Lines changed: 44 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ from pandas.core.indexes.multi import MultiIndex
4545
from pandas.core.indexes.period import PeriodIndex
4646
from pandas.core.indexes.timedeltas import TimedeltaIndex
4747
from pandas.core.indexing import (
48+
_AtIndexer,
49+
_iAtIndexer,
4850
_iLocIndexer,
4951
_IndexSliceTuple,
5052
_LocIndexer,
@@ -285,6 +287,44 @@ class _LocIndexerFrame(_LocIndexer, Generic[_T]):
285287
value: Scalar | NAType | NaTType | ArrayLike | Series | list | dict | None,
286288
) -> None: ...
287289

290+
class _iAtIndexerFrame(_iAtIndexer):
291+
def __getitem__(self, idx: tuple[int, int]) -> Scalar: ...
292+
def __setitem__(
293+
self,
294+
idx: tuple[int, int],
295+
value: Scalar | NAType | NaTType | None,
296+
) -> None: ...
297+
298+
class _AtIndexerFrame(_AtIndexer):
299+
def __getitem__(
300+
self,
301+
idx: tuple[
302+
int
303+
| StrLike
304+
| Timestamp
305+
| tuple[Scalar, ...]
306+
| Callable[[DataFrame], ScalarT],
307+
int | StrLike | tuple[Scalar, ...],
308+
],
309+
) -> Scalar: ...
310+
def __setitem__(
311+
self,
312+
idx: (
313+
MaskType | StrLike | _IndexSliceTuple | list[ScalarT] | IndexingInt | slice
314+
),
315+
value: (
316+
Scalar
317+
| NAType
318+
| NaTType
319+
| ArrayLike
320+
| Series
321+
| DataFrame
322+
| list
323+
| Mapping[Hashable, Scalar | NAType | NaTType]
324+
| None
325+
),
326+
) -> None: ...
327+
288328
# With mypy 1.14.1 and python 3.12, the second overload needs a type-ignore statement
289329
if sys.version_info >= (3, 12):
290330
class _GetItemHack:
@@ -1108,7 +1148,6 @@ class DataFrame(NDFrame, OpsMixin, _GetItemHack):
11081148
def groupby( # pyright: ignore reportOverlappingOverload
11091149
self,
11101150
by: Scalar,
1111-
axis: AxisIndex | _NoDefaultDoNotUse = ...,
11121151
level: IndexLabel | None = ...,
11131152
as_index: Literal[True] = True,
11141153
sort: _bool = ...,
@@ -1120,7 +1159,6 @@ class DataFrame(NDFrame, OpsMixin, _GetItemHack):
11201159
def groupby(
11211160
self,
11221161
by: Scalar,
1123-
axis: AxisIndex | _NoDefaultDoNotUse = ...,
11241162
level: IndexLabel | None = ...,
11251163
as_index: Literal[False] = ...,
11261164
sort: _bool = ...,
@@ -1132,7 +1170,6 @@ class DataFrame(NDFrame, OpsMixin, _GetItemHack):
11321170
def groupby( # pyright: ignore reportOverlappingOverload
11331171
self,
11341172
by: DatetimeIndex,
1135-
axis: AxisIndex | _NoDefaultDoNotUse = ...,
11361173
level: IndexLabel | None = ...,
11371174
as_index: Literal[True] = True,
11381175
sort: _bool = ...,
@@ -1144,7 +1181,6 @@ class DataFrame(NDFrame, OpsMixin, _GetItemHack):
11441181
def groupby( # pyright: ignore reportOverlappingOverload
11451182
self,
11461183
by: DatetimeIndex,
1147-
axis: AxisIndex | _NoDefaultDoNotUse = ...,
11481184
level: IndexLabel | None = ...,
11491185
as_index: Literal[False] = ...,
11501186
sort: _bool = ...,
@@ -1156,7 +1192,6 @@ class DataFrame(NDFrame, OpsMixin, _GetItemHack):
11561192
def groupby( # pyright: ignore reportOverlappingOverload
11571193
self,
11581194
by: TimedeltaIndex,
1159-
axis: AxisIndex | _NoDefaultDoNotUse = ...,
11601195
level: IndexLabel | None = ...,
11611196
as_index: Literal[True] = True,
11621197
sort: _bool = ...,
@@ -1168,7 +1203,6 @@ class DataFrame(NDFrame, OpsMixin, _GetItemHack):
11681203
def groupby(
11691204
self,
11701205
by: TimedeltaIndex,
1171-
axis: AxisIndex | _NoDefaultDoNotUse = ...,
11721206
level: IndexLabel | None = ...,
11731207
as_index: Literal[False] = ...,
11741208
sort: _bool = ...,
@@ -1180,7 +1214,6 @@ class DataFrame(NDFrame, OpsMixin, _GetItemHack):
11801214
def groupby( # pyright: ignore reportOverlappingOverload
11811215
self,
11821216
by: PeriodIndex,
1183-
axis: AxisIndex | _NoDefaultDoNotUse = ...,
11841217
level: IndexLabel | None = ...,
11851218
as_index: Literal[True] = True,
11861219
sort: _bool = ...,
@@ -1192,7 +1225,6 @@ class DataFrame(NDFrame, OpsMixin, _GetItemHack):
11921225
def groupby(
11931226
self,
11941227
by: PeriodIndex,
1195-
axis: AxisIndex | _NoDefaultDoNotUse = ...,
11961228
level: IndexLabel | None = ...,
11971229
as_index: Literal[False] = ...,
11981230
sort: _bool = ...,
@@ -1204,7 +1236,6 @@ class DataFrame(NDFrame, OpsMixin, _GetItemHack):
12041236
def groupby( # pyright: ignore reportOverlappingOverload
12051237
self,
12061238
by: IntervalIndex[IntervalT],
1207-
axis: AxisIndex | _NoDefaultDoNotUse = ...,
12081239
level: IndexLabel | None = ...,
12091240
as_index: Literal[True] = True,
12101241
sort: _bool = ...,
@@ -1216,7 +1247,6 @@ class DataFrame(NDFrame, OpsMixin, _GetItemHack):
12161247
def groupby(
12171248
self,
12181249
by: IntervalIndex[IntervalT],
1219-
axis: AxisIndex | _NoDefaultDoNotUse = ...,
12201250
level: IndexLabel | None = ...,
12211251
as_index: Literal[False] = ...,
12221252
sort: _bool = ...,
@@ -1228,7 +1258,6 @@ class DataFrame(NDFrame, OpsMixin, _GetItemHack):
12281258
def groupby( # type: ignore[overload-overlap] # pyright: ignore reportOverlappingOverload
12291259
self,
12301260
by: MultiIndex | GroupByObjectNonScalar | None = ...,
1231-
axis: AxisIndex | _NoDefaultDoNotUse = ...,
12321261
level: IndexLabel | None = ...,
12331262
as_index: Literal[True] = True,
12341263
sort: _bool = ...,
@@ -1240,7 +1269,6 @@ class DataFrame(NDFrame, OpsMixin, _GetItemHack):
12401269
def groupby( # type: ignore[overload-overlap]
12411270
self,
12421271
by: MultiIndex | GroupByObjectNonScalar | None = ...,
1243-
axis: AxisIndex | _NoDefaultDoNotUse = ...,
12441272
level: IndexLabel | None = ...,
12451273
as_index: Literal[False] = ...,
12461274
sort: _bool = ...,
@@ -1252,7 +1280,6 @@ class DataFrame(NDFrame, OpsMixin, _GetItemHack):
12521280
def groupby( # pyright: ignore reportOverlappingOverload
12531281
self,
12541282
by: Series[SeriesByT],
1255-
axis: AxisIndex | _NoDefaultDoNotUse = ...,
12561283
level: IndexLabel | None = ...,
12571284
as_index: Literal[True] = True,
12581285
sort: _bool = ...,
@@ -1264,7 +1291,6 @@ class DataFrame(NDFrame, OpsMixin, _GetItemHack):
12641291
def groupby(
12651292
self,
12661293
by: Series[SeriesByT],
1267-
axis: AxisIndex | _NoDefaultDoNotUse = ...,
12681294
level: IndexLabel | None = ...,
12691295
as_index: Literal[False] = ...,
12701296
sort: _bool = ...,
@@ -1276,7 +1302,6 @@ class DataFrame(NDFrame, OpsMixin, _GetItemHack):
12761302
def groupby(
12771303
self,
12781304
by: CategoricalIndex | Index | Series,
1279-
axis: AxisIndex | _NoDefaultDoNotUse = ...,
12801305
level: IndexLabel | None = ...,
12811306
as_index: Literal[True] = True,
12821307
sort: _bool = ...,
@@ -1288,7 +1313,6 @@ class DataFrame(NDFrame, OpsMixin, _GetItemHack):
12881313
def groupby(
12891314
self,
12901315
by: CategoricalIndex | Index | Series,
1291-
axis: AxisIndex | _NoDefaultDoNotUse = ...,
12921316
level: IndexLabel | None = ...,
12931317
as_index: Literal[False] = ...,
12941318
sort: _bool = ...,
@@ -1591,13 +1615,13 @@ class DataFrame(NDFrame, OpsMixin, _GetItemHack):
15911615
axis: Axis = 0,
15921616
skipna: _bool = True,
15931617
numeric_only: _bool = False,
1594-
) -> Series: ...
1618+
) -> Series[int]: ...
15951619
def idxmin(
15961620
self,
15971621
axis: Axis = 0,
15981622
skipna: _bool = True,
15991623
numeric_only: _bool = False,
1600-
) -> Series: ...
1624+
) -> Series[int]: ...
16011625
def mode(
16021626
self,
16031627
axis: Axis = 0,
@@ -1683,7 +1707,7 @@ class DataFrame(NDFrame, OpsMixin, _GetItemHack):
16831707
def __iter__(self) -> Iterator[Hashable]: ...
16841708
# properties
16851709
@property
1686-
def at(self): ... # Not sure what to do with this yet; look at source
1710+
def at(self) -> _AtIndexerFrame: ...
16871711
@property
16881712
def columns(self) -> Index[str]: ...
16891713
@columns.setter # setter needs to be right next to getter; otherwise mypy complains
@@ -1695,7 +1719,7 @@ class DataFrame(NDFrame, OpsMixin, _GetItemHack):
16951719
@property
16961720
def empty(self) -> _bool: ...
16971721
@property
1698-
def iat(self): ... # Not sure what to do with this yet; look at source
1722+
def iat(self) -> _iAtIndexerFrame: ...
16991723
@property
17001724
def iloc(self) -> _iLocIndexerFrame[Self]: ...
17011725
@property

pandas-stubs/core/indexes/datetimes.pyi

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@ from pandas.core.dtypes.dtypes import DatetimeTZDtype
4444
from pandas.tseries.offsets import BaseOffset
4545

4646
class DatetimeIndex(DatetimeTimedeltaMixin[Timestamp], DatetimeIndexProperties):
47-
def __init__(
48-
self,
47+
def __new__(
48+
cls,
4949
data: AxesData,
5050
freq: Frequency = ...,
5151
tz: TimeZones = ...,
@@ -55,7 +55,7 @@ class DatetimeIndex(DatetimeTimedeltaMixin[Timestamp], DatetimeIndexProperties):
5555
dtype: Dtype = ...,
5656
copy: bool = ...,
5757
name: Hashable = ...,
58-
) -> None: ...
58+
) -> Self: ...
5959
def __reduce__(self): ...
6060
# various ignores needed for mypy, as we do want to restrict what can be used in
6161
# arithmetic for these types

pandas-stubs/core/indexes/interval.pyi

Lines changed: 6 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -310,59 +310,17 @@ class IntervalIndex(ExtensionIndex[IntervalT], IntervalMixin):
310310
# int gets hit first and so the correct type is returned
311311
@overload
312312
def interval_range( # pyright: ignore[reportOverlappingOverload]
313-
start: int = ...,
314-
end: int = ...,
315-
periods: int | None = ...,
316-
freq: int | None = ...,
317-
name: Hashable = ...,
318-
closed: IntervalClosedType = ...,
319-
) -> IntervalIndex[Interval[int]]: ...
320-
321-
# Overlaps since int is a subclass of float
322-
@overload
323-
def interval_range( # pyright: ignore[reportOverlappingOverload]
324-
start: int,
325-
*,
326-
end: None = ...,
327-
periods: int | None = ...,
328-
freq: int | None = ...,
329-
name: Hashable = ...,
330-
closed: IntervalClosedType = ...,
331-
) -> IntervalIndex[Interval[int]]: ...
332-
@overload
333-
def interval_range( # pyright: ignore[reportOverlappingOverload]
334-
*,
335-
start: None = ...,
336-
end: int,
313+
start: int | None = ...,
314+
end: int | None = ...,
337315
periods: int | None = ...,
338316
freq: int | None = ...,
339317
name: Hashable = ...,
340318
closed: IntervalClosedType = ...,
341319
) -> IntervalIndex[Interval[int]]: ...
342320
@overload
343321
def interval_range(
344-
start: float = ...,
345-
end: float = ...,
346-
periods: int | None = ...,
347-
freq: int | None = ...,
348-
name: Hashable = ...,
349-
closed: IntervalClosedType = ...,
350-
) -> IntervalIndex[Interval[float]]: ...
351-
@overload
352-
def interval_range(
353-
start: float,
354-
*,
355-
end: None = ...,
356-
periods: int | None = ...,
357-
freq: int | None = ...,
358-
name: Hashable = ...,
359-
closed: IntervalClosedType = ...,
360-
) -> IntervalIndex[Interval[float]]: ...
361-
@overload
362-
def interval_range(
363-
*,
364-
start: None = ...,
365-
end: float,
322+
start: float | None = ...,
323+
end: float | None = ...,
366324
periods: int | None = ...,
367325
freq: int | None = ...,
368326
name: Hashable = ...,
@@ -371,7 +329,7 @@ def interval_range(
371329
@overload
372330
def interval_range(
373331
start: _TimestampLike,
374-
end: _TimestampLike = ...,
332+
end: _TimestampLike | None = ...,
375333
periods: int | None = ...,
376334
freq: str | BaseOffset | pd.Timedelta | dt.timedelta | None = ...,
377335
name: Hashable = ...,
@@ -388,19 +346,9 @@ def interval_range(
388346
closed: IntervalClosedType = ...,
389347
) -> IntervalIndex[Interval[pd.Timestamp]]: ...
390348
@overload
391-
def interval_range(
392-
start: _TimestampLike,
393-
*,
394-
end: None = ...,
395-
periods: int | None = ...,
396-
freq: str | BaseOffset | pd.Timedelta | dt.timedelta | None = ...,
397-
name: Hashable = ...,
398-
closed: IntervalClosedType = ...,
399-
) -> IntervalIndex[Interval[pd.Timestamp]]: ...
400-
@overload
401349
def interval_range(
402350
start: _TimedeltaLike,
403-
end: _TimedeltaLike = ...,
351+
end: _TimedeltaLike | None = ...,
404352
periods: int | None = ...,
405353
freq: str | BaseOffset | pd.Timedelta | dt.timedelta | None = ...,
406354
name: Hashable = ...,
@@ -416,13 +364,3 @@ def interval_range(
416364
name: Hashable = ...,
417365
closed: IntervalClosedType = ...,
418366
) -> IntervalIndex[Interval[pd.Timedelta]]: ...
419-
@overload
420-
def interval_range(
421-
start: _TimedeltaLike,
422-
*,
423-
end: None = ...,
424-
periods: int | None = ...,
425-
freq: str | BaseOffset | pd.Timedelta | dt.timedelta | None = ...,
426-
name: Hashable = ...,
427-
closed: IntervalClosedType = ...,
428-
) -> IntervalIndex[Interval[pd.Timedelta]]: ...

0 commit comments

Comments
 (0)