Skip to content

Commit 3466be5

Browse files
committed
fix: #718 make pyright happy, suppress pyrefly
1 parent 79ae3a9 commit 3466be5

File tree

3 files changed

+59
-99
lines changed

3 files changed

+59
-99
lines changed

pandas-stubs/core/indexes/accessors.pyi

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ from pandas.core.series import (
3636
from pandas._libs.tslibs import BaseOffset
3737
from pandas._libs.tslibs.offsets import DateOffset
3838
from pandas._typing import (
39+
S1,
3940
TimeAmbiguous,
4041
TimeNonexistent,
4142
TimestampConvention,
@@ -429,7 +430,7 @@ class TimedeltaIndexProperties(
429430
_DatetimeRoundingMethods[TimedeltaIndex],
430431
): ...
431432

432-
class _dtDescriptor(CombinedDatetimelikeProperties):
433+
class _dtDescriptor(CombinedDatetimelikeProperties, Generic[S1]):
433434
@overload
434435
def __get__(
435436
self, instance: Series[Timestamp], owner: Any
@@ -440,5 +441,36 @@ class _dtDescriptor(CombinedDatetimelikeProperties):
440441
) -> TimedeltaProperties: ...
441442
@overload
442443
def __get__(
443-
self, instance: Series, owner: Any
444+
self, instance: Series[S1], owner: Any
444445
) -> CombinedDatetimelikeProperties: ...
446+
def round(
447+
self,
448+
freq: str | BaseOffset | None,
449+
ambiguous: Literal["raise", "infer", "NaT"] | bool | np_ndarray_bool = ...,
450+
nonexistent: (
451+
Literal["shift_forward", "shift_backward", "NaT", "raise"]
452+
| timedelta
453+
| Timedelta
454+
) = ...,
455+
) -> Series[S1]: ...
456+
def floor(
457+
self,
458+
freq: str | BaseOffset | None,
459+
ambiguous: Literal["raise", "infer", "NaT"] | bool | np_ndarray_bool = ...,
460+
nonexistent: (
461+
Literal["shift_forward", "shift_backward", "NaT", "raise"]
462+
| timedelta
463+
| Timedelta
464+
) = ...,
465+
) -> Series[S1]: ...
466+
def ceil(
467+
self,
468+
freq: str | BaseOffset | None,
469+
ambiguous: Literal["raise", "infer", "NaT"] | bool | np_ndarray_bool = ...,
470+
nonexistent: (
471+
Literal["shift_forward", "shift_backward", "NaT", "raise"]
472+
| timedelta
473+
| Timedelta
474+
) = ...,
475+
) -> Series[S1]: ...
476+
def as_unit(self, unit: TimeUnit) -> Series[S1]: ...

pandas-stubs/core/series.pyi

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1201,7 +1201,7 @@ class Series(IndexOpsMixin[S1], NDFrame):
12011201
Series[type[object]],
12021202
]: ...
12031203
@property
1204-
def dt(self) -> _dtDescriptor: ...
1204+
def dt(self) -> _dtDescriptor[S1]: ...
12051205
@property
12061206
def plot(self) -> PlotAccessor: ...
12071207
sparse = ...
@@ -2328,7 +2328,7 @@ class OffsetSeries(Series[BaseOffset]):
23282328
def __radd__( # pyright: ignore[reportIncompatibleMethodOverride]
23292329
self, other: BaseOffset
23302330
) -> OffsetSeries: ...
2331-
def cumprod(
2331+
def cumprod( # pyrefly: ignore
23322332
self,
23332333
axis: AxisIndex = ...,
23342334
skipna: _bool = ...,
@@ -2339,4 +2339,4 @@ class OffsetSeries(Series[BaseOffset]):
23392339
class IntervalSeries(Series[Interval[_OrderableT]], Generic[_OrderableT]):
23402340
@property
23412341
def array(self) -> IntervalArray: ...
2342-
def diff(self, periods: int = ...) -> Never: ...
2342+
def diff(self, periods: int = ...) -> Never: ... # pyrefly: ignore

tests/test_timefuncs.py

Lines changed: 22 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -464,96 +464,60 @@ def test_series_dt_accessors() -> None:
464464
check(assert_type(s0.dt.strftime("%Y"), "pd.Series[str]"), pd.Series, str)
465465
check(
466466
assert_type(
467-
s0.dt.round( # pyright: ignore[reportAssertTypeFailure]
468-
"D", nonexistent=dt.timedelta(1)
469-
),
470-
"pd.Series[pd.Timestamp]",
467+
s0.dt.round("D", nonexistent=dt.timedelta(1)), "pd.Series[pd.Timestamp]"
471468
),
472469
pd.Series,
473470
pd.Timestamp,
474471
)
475472
check(
476-
assert_type(
477-
s0.dt.round( # pyright: ignore[reportAssertTypeFailure]
478-
"D", ambiguous=False
479-
),
480-
"pd.Series[pd.Timestamp]",
481-
),
473+
assert_type(s0.dt.round("D", ambiguous=False), "pd.Series[pd.Timestamp]"),
482474
pd.Series,
483475
pd.Timestamp,
484476
)
485477
check(
486478
assert_type(
487-
s0.dt.floor( # pyright: ignore[reportAssertTypeFailure]
488-
"D", nonexistent=dt.timedelta(1)
489-
),
490-
"pd.Series[pd.Timestamp]",
479+
s0.dt.floor("D", nonexistent=dt.timedelta(1)), "pd.Series[pd.Timestamp]"
491480
),
492481
pd.Series,
493482
pd.Timestamp,
494483
)
495484
check(
496-
assert_type(
497-
s0.dt.floor( # pyright: ignore[reportAssertTypeFailure]
498-
"D", ambiguous=False
499-
),
500-
"pd.Series[pd.Timestamp]",
501-
),
485+
assert_type(s0.dt.floor("D", ambiguous=False), "pd.Series[pd.Timestamp]"),
502486
pd.Series,
503487
pd.Timestamp,
504488
)
505489
check(
506490
assert_type(
507-
s0.dt.ceil( # pyright: ignore[reportAssertTypeFailure]
508-
"D", nonexistent=dt.timedelta(1)
509-
),
510-
"pd.Series[pd.Timestamp]",
491+
s0.dt.ceil("D", nonexistent=dt.timedelta(1)), "pd.Series[pd.Timestamp]"
511492
),
512493
pd.Series,
513494
pd.Timestamp,
514495
)
515496
check(
516-
assert_type(
517-
s0.dt.ceil( # pyright: ignore[reportAssertTypeFailure]
518-
"D", ambiguous=False
519-
),
520-
"pd.Series[pd.Timestamp]",
521-
),
497+
assert_type(s0.dt.ceil("D", ambiguous=False), "pd.Series[pd.Timestamp]"),
522498
pd.Series,
523499
pd.Timestamp,
524500
)
525501
check(assert_type(s0.dt.month_name(), "pd.Series[str]"), pd.Series, str)
526502
check(assert_type(s0.dt.day_name(), "pd.Series[str]"), pd.Series, str)
527503
check(assert_type(s0.dt.unit, TimeUnit), str)
528504
check(
529-
assert_type(
530-
s0.dt.as_unit("s"), # pyright: ignore[reportAssertTypeFailure]
531-
"pd.Series[pd.Timestamp]",
532-
),
505+
assert_type(s0.dt.as_unit("s"), "pd.Series[pd.Timestamp]"),
533506
pd.Series,
534507
pd.Timestamp,
535508
)
536509
check(
537-
assert_type(
538-
s0.dt.as_unit("ms"), # pyright: ignore[reportAssertTypeFailure]
539-
"pd.Series[pd.Timestamp]",
540-
),
510+
assert_type(s0.dt.as_unit("ms"), "pd.Series[pd.Timestamp]"),
541511
pd.Series,
542512
pd.Timestamp,
543513
)
544514
check(
545-
assert_type(
546-
s0.dt.as_unit("us"), # pyright: ignore[reportAssertTypeFailure]
547-
"pd.Series[pd.Timestamp]",
548-
),
515+
assert_type(s0.dt.as_unit("us"), "pd.Series[pd.Timestamp]"),
549516
pd.Series,
550517
pd.Timestamp,
551518
)
552519
check(
553-
assert_type(
554-
s0.dt.as_unit("ns"), # pyright: ignore[reportAssertTypeFailure]
555-
"pd.Series[pd.Timestamp]",
556-
),
520+
assert_type(s0.dt.as_unit("ns"), "pd.Series[pd.Timestamp]"),
557521
pd.Series,
558522
pd.Timestamp,
559523
)
@@ -599,34 +563,22 @@ def test_series_dt_accessors() -> None:
599563
check(assert_type(s2.dt.total_seconds(), "pd.Series[float]"), pd.Series, float)
600564
check(assert_type(s2.dt.unit, TimeUnit), str)
601565
check(
602-
assert_type(
603-
s2.dt.as_unit("s"), # pyright: ignore[reportAssertTypeFailure]
604-
"pd.Series[pd.Timedelta]",
605-
),
566+
assert_type(s2.dt.as_unit("s"), "pd.Series[pd.Timedelta]"),
606567
pd.Series,
607568
pd.Timedelta,
608569
)
609570
check(
610-
assert_type(
611-
s2.dt.as_unit("ms"), # pyright: ignore[reportAssertTypeFailure]
612-
"pd.Series[pd.Timedelta]",
613-
),
571+
assert_type(s2.dt.as_unit("ms"), "pd.Series[pd.Timedelta]"),
614572
pd.Series,
615573
pd.Timedelta,
616574
)
617575
check(
618-
assert_type(
619-
s2.dt.as_unit("us"), # pyright: ignore[reportAssertTypeFailure]
620-
"pd.Series[pd.Timedelta]",
621-
),
576+
assert_type(s2.dt.as_unit("us"), "pd.Series[pd.Timedelta]"),
622577
pd.Series,
623578
pd.Timedelta,
624579
)
625580
check(
626-
assert_type(
627-
s2.dt.as_unit("ns"), # pyright: ignore[reportAssertTypeFailure]
628-
"pd.Series[pd.Timedelta]",
629-
),
581+
assert_type(s2.dt.as_unit("ns"), "pd.Series[pd.Timedelta]"),
630582
pd.Series,
631583
pd.Timedelta,
632584
)
@@ -637,34 +589,22 @@ def test_series_dt_accessors() -> None:
637589

638590
check(assert_type(s4.dt.unit, TimeUnit), str)
639591
check(
640-
assert_type(
641-
s4.dt.as_unit("s"), # pyright: ignore[reportAssertTypeFailure]
642-
"pd.Series[pd.Timestamp]",
643-
),
592+
assert_type(s4.dt.as_unit("s"), "pd.Series[pd.Timestamp]"),
644593
pd.Series,
645594
pd.Timestamp,
646595
)
647596
check(
648-
assert_type(
649-
s4.dt.as_unit("ms"), # pyright: ignore[reportAssertTypeFailure]
650-
"pd.Series[pd.Timestamp]",
651-
),
597+
assert_type(s4.dt.as_unit("ms"), "pd.Series[pd.Timestamp]"),
652598
pd.Series,
653599
pd.Timestamp,
654600
)
655601
check(
656-
assert_type(
657-
s4.dt.as_unit("us"), # pyright: ignore[reportAssertTypeFailure]
658-
"pd.Series[pd.Timestamp]",
659-
),
602+
assert_type(s4.dt.as_unit("us"), "pd.Series[pd.Timestamp]"),
660603
pd.Series,
661604
pd.Timestamp,
662605
)
663606
check(
664-
assert_type(
665-
s4.dt.as_unit("ns"), # pyright: ignore[reportAssertTypeFailure]
666-
"pd.Series[pd.Timestamp]",
667-
),
607+
assert_type(s4.dt.as_unit("ns"), "pd.Series[pd.Timestamp]"),
668608
pd.Series,
669609
pd.Timestamp,
670610
)
@@ -673,34 +613,22 @@ def test_series_dt_accessors() -> None:
673613

674614
check(assert_type(s5.dt.unit, TimeUnit), str)
675615
check(
676-
assert_type(
677-
s5.dt.as_unit("s"), # pyright: ignore[reportAssertTypeFailure]
678-
"pd.Series[pd.Timedelta]",
679-
),
616+
assert_type(s5.dt.as_unit("s"), "pd.Series[pd.Timedelta]"),
680617
pd.Series,
681618
pd.Timedelta,
682619
)
683620
check(
684-
assert_type(
685-
s5.dt.as_unit("ms"), # pyright: ignore[reportAssertTypeFailure]
686-
"pd.Series[pd.Timedelta]",
687-
),
621+
assert_type(s5.dt.as_unit("ms"), "pd.Series[pd.Timedelta]"),
688622
pd.Series,
689623
pd.Timedelta,
690624
)
691625
check(
692-
assert_type(
693-
s5.dt.as_unit("us"), # pyright: ignore[reportAssertTypeFailure]
694-
"pd.Series[pd.Timedelta]",
695-
),
626+
assert_type(s5.dt.as_unit("us"), "pd.Series[pd.Timedelta]"),
696627
pd.Series,
697628
pd.Timedelta,
698629
)
699630
check(
700-
assert_type(
701-
s5.dt.as_unit("ns"), # pyright: ignore[reportAssertTypeFailure]
702-
"pd.Series[pd.Timedelta]",
703-
),
631+
assert_type(s5.dt.as_unit("ns"), "pd.Series[pd.Timedelta]"),
704632
pd.Series,
705633
pd.Timedelta,
706634
)

0 commit comments

Comments
 (0)