Skip to content

Commit 6c0eed6

Browse files
authored
close out a few first issues (#670)
1 parent 159b497 commit 6c0eed6

File tree

6 files changed

+85
-9
lines changed

6 files changed

+85
-9
lines changed

pandas-stubs/core/indexes/interval.pyi

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -371,7 +371,7 @@ def interval_range(
371371
start: _TimestampLike,
372372
end: _TimestampLike = ...,
373373
periods: int | None = ...,
374-
freq: str | BaseOffset | None = ...,
374+
freq: str | BaseOffset | pd.Timedelta | dt.timedelta | None = ...,
375375
name: Hashable = ...,
376376
closed: IntervalClosedType = ...,
377377
) -> IntervalIndex[Interval[pd.Timestamp]]: ...
@@ -381,7 +381,7 @@ def interval_range(
381381
start: None = ...,
382382
end: _TimestampLike,
383383
periods: int | None = ...,
384-
freq: str | BaseOffset | None = ...,
384+
freq: str | BaseOffset | pd.Timedelta | dt.timedelta | None = ...,
385385
name: Hashable = ...,
386386
closed: IntervalClosedType = ...,
387387
) -> IntervalIndex[Interval[pd.Timestamp]]: ...
@@ -391,7 +391,7 @@ def interval_range(
391391
*,
392392
end: None = ...,
393393
periods: int | None = ...,
394-
freq: str | BaseOffset | None = ...,
394+
freq: str | BaseOffset | pd.Timedelta | dt.timedelta | None = ...,
395395
name: Hashable = ...,
396396
closed: IntervalClosedType = ...,
397397
) -> IntervalIndex[Interval[pd.Timestamp]]: ...
@@ -400,7 +400,7 @@ def interval_range(
400400
start: _TimedeltaLike,
401401
end: _TimedeltaLike = ...,
402402
periods: int | None = ...,
403-
freq: str | BaseOffset | None = ...,
403+
freq: str | BaseOffset | pd.Timedelta | dt.timedelta | None = ...,
404404
name: Hashable = ...,
405405
closed: IntervalClosedType = ...,
406406
) -> IntervalIndex[Interval[pd.Timedelta]]: ...
@@ -410,7 +410,7 @@ def interval_range(
410410
start: None = ...,
411411
end: _TimedeltaLike,
412412
periods: int | None = ...,
413-
freq: str | BaseOffset | None = ...,
413+
freq: str | BaseOffset | pd.Timedelta | dt.timedelta | None = ...,
414414
name: Hashable = ...,
415415
closed: IntervalClosedType = ...,
416416
) -> IntervalIndex[Interval[pd.Timedelta]]: ...
@@ -420,7 +420,7 @@ def interval_range(
420420
*,
421421
end: None = ...,
422422
periods: int | None = ...,
423-
freq: str | BaseOffset | None = ...,
423+
freq: str | BaseOffset | pd.Timedelta | dt.timedelta | None = ...,
424424
name: Hashable = ...,
425425
closed: IntervalClosedType = ...,
426426
) -> IntervalIndex[Interval[pd.Timedelta]]: ...

pandas-stubs/core/indexes/timedeltas.pyi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ def timedelta_range(
7272
start: TimedeltaConvertibleTypes = ...,
7373
end: TimedeltaConvertibleTypes = ...,
7474
periods: int | None = ...,
75-
freq: str | DateOffset | None = ...,
75+
freq: str | DateOffset | Timedelta | dt.timedelta | None = ...,
7676
name: Hashable | None = ...,
7777
closed: Literal["left", "right"] | None = ...,
7878
) -> TimedeltaIndex: ...

pandas-stubs/core/series.pyi

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,13 @@ class _LocIndexerSeries(_LocIndexer, Generic[S1]):
179179
@overload
180180
def __getitem__(
181181
self,
182-
idx: MaskType | Index | Sequence[float] | list[str] | slice | _IndexSliceTuple,
182+
idx: MaskType
183+
| Index
184+
| Sequence[float]
185+
| list[str]
186+
| slice
187+
| _IndexSliceTuple
188+
| Callable,
183189
# _IndexSliceTuple is when having a tuple that includes a slice. Could just
184190
# be s.loc[1, :], or s.loc[pd.IndexSlice[1, :]]
185191
) -> Series[S1]: ...
@@ -775,7 +781,7 @@ class Series(IndexOpsMixin, NDFrame, Generic[S1]):
775781
@overload
776782
def apply(
777783
self,
778-
func: Callable[..., Scalar | Sequence | set | Mapping],
784+
func: Callable[..., Scalar | Sequence | set | Mapping | None],
779785
convertDType: _bool = ...,
780786
args: tuple = ...,
781787
**kwds,

tests/test_indexes.py

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,30 @@ def test_interval_range():
291291
pd.IntervalIndex,
292292
pd.Interval,
293293
)
294+
check(
295+
assert_type(
296+
pd.interval_range(
297+
pd.Timestamp(2000, 1, 1),
298+
pd.Timestamp(2010, 1, 1),
299+
freq=pd.Timedelta(days=30),
300+
),
301+
"pd.IntervalIndex[pd.Interval[pd.Timestamp]]",
302+
),
303+
pd.IntervalIndex,
304+
pd.Interval,
305+
)
306+
check(
307+
assert_type(
308+
pd.interval_range(
309+
pd.Timestamp(2000, 1, 1),
310+
pd.Timestamp(2010, 1, 1),
311+
freq=dt.timedelta(days=30),
312+
),
313+
"pd.IntervalIndex[pd.Interval[pd.Timestamp]]",
314+
),
315+
pd.IntervalIndex,
316+
pd.Interval,
317+
)
294318
check(
295319
assert_type(
296320
pd.interval_range(pd.Timestamp(2000, 1, 1), dt.datetime(2010, 1, 1), 5),
@@ -308,6 +332,26 @@ def test_interval_range():
308332
pd.IntervalIndex,
309333
pd.Interval,
310334
)
335+
check(
336+
assert_type(
337+
pd.interval_range(
338+
pd.Timedelta("1D"), pd.Timedelta("10D"), freq=pd.Timedelta("2D")
339+
),
340+
"pd.IntervalIndex[pd.Interval[pd.Timedelta]]",
341+
),
342+
pd.IntervalIndex,
343+
pd.Interval,
344+
)
345+
check(
346+
assert_type(
347+
pd.interval_range(
348+
pd.Timedelta("1D"), pd.Timedelta("10D"), freq=dt.timedelta(days=2)
349+
),
350+
"pd.IntervalIndex[pd.Interval[pd.Timedelta]]",
351+
),
352+
pd.IntervalIndex,
353+
pd.Interval,
354+
)
311355
check(
312356
assert_type(
313357
pd.interval_range(end=pd.Timedelta("10D"), periods=10, freq="D"),

tests/test_series.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1820,3 +1820,15 @@ def test_convert_dtypes_dtype_backend() -> None:
18201820
s = pd.Series([1, 2, 3, 4])
18211821
s1 = s.convert_dtypes(dtype_backend="numpy_nullable")
18221822
check(assert_type(s1, pd.Series), pd.Series)
1823+
1824+
1825+
def test_apply_returns_none() -> None:
1826+
# GH 557
1827+
s = pd.Series([1, 2, 3])
1828+
check(assert_type(s.apply(lambda x: None), pd.Series), pd.Series)
1829+
1830+
1831+
def test_loc_callable() -> None:
1832+
# GH 586
1833+
s = pd.Series([1, 2])
1834+
check(assert_type(s.loc[lambda x: x > 1], pd.Series), pd.Series)

tests/test_timefuncs.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1071,6 +1071,20 @@ def test_timedelta_range() -> None:
10711071
),
10721072
pd.TimedeltaIndex,
10731073
)
1074+
check(
1075+
assert_type(
1076+
pd.timedelta_range("1 day", "10 days", freq=pd.Timedelta("2 days")),
1077+
pd.TimedeltaIndex,
1078+
),
1079+
pd.TimedeltaIndex,
1080+
)
1081+
check(
1082+
assert_type(
1083+
pd.timedelta_range("1 day", "10 days", freq=dt.timedelta(days=2)),
1084+
pd.TimedeltaIndex,
1085+
),
1086+
pd.TimedeltaIndex,
1087+
)
10741088

10751089

10761090
def test_dateoffset_freqstr() -> None:

0 commit comments

Comments
 (0)