Skip to content
Merged
1 change: 1 addition & 0 deletions pandas-stubs/_libs/tslibs/strptime.pyi
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# pyright
from typing import Any

def array_strptime(*args, **kwargs) -> Any: ...
5 changes: 4 additions & 1 deletion pandas-stubs/_libs/tslibs/timedeltas.pyi
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# pyright: strict
import datetime as dt
from datetime import timedelta
from typing import (
Expand Down Expand Up @@ -241,7 +242,9 @@ class Timedelta(timedelta):
@overload
def __rmul__(self, other: float) -> Timedelta: ...
@overload
def __rmul__(self, other: np.ndarray) -> np.ndarray: ...
def __rmul__(
self, other: npt.NDArray[np.floating] | npt.NDArray[np.integer]
) -> npt.NDArray[np.timedelta64]: ...
@overload
def __rmul__(self, other: Series[int]) -> TimedeltaSeries: ...
@overload
Expand Down
23 changes: 16 additions & 7 deletions pandas-stubs/_libs/tslibs/timestamps.pyi
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
# pyright: strict
from datetime import (
_IsoCalendarDate,
date as _date,
datetime,
time as _time,
timedelta,
tzinfo as _tzinfo,
)
from datetime import _IsoCalendarDate # pyright: ignore[reportPrivateUsage]
import sys
from time import struct_time
from typing import (
Expand Down Expand Up @@ -166,25 +167,33 @@ class Timestamp(datetime, SupportsIndex):
@overload # type: ignore[override]
def __le__(self, other: Timestamp | datetime | np.datetime64) -> bool: ... # type: ignore[misc]
@overload
def __le__(self, other: Index | npt.NDArray[np.datetime64]) -> np_ndarray_bool: ...
def __le__(
self, other: Index[Timestamp] | npt.NDArray[np.datetime64]
) -> np_ndarray_bool: ...
@overload
def __le__(self, other: TimestampSeries) -> Series[bool]: ...
@overload # type: ignore[override]
def __lt__(self, other: Timestamp | datetime | np.datetime64) -> bool: ... # type: ignore[misc]
@overload
def __lt__(self, other: Index | npt.NDArray[np.datetime64]) -> np_ndarray_bool: ...
def __lt__(
self, other: Index[Timestamp] | npt.NDArray[np.datetime64]
) -> np_ndarray_bool: ...
@overload
def __lt__(self, other: TimestampSeries) -> Series[bool]: ...
@overload # type: ignore[override]
def __ge__(self, other: Timestamp | datetime | np.datetime64) -> bool: ... # type: ignore[misc]
@overload
def __ge__(self, other: Index | npt.NDArray[np.datetime64]) -> np_ndarray_bool: ...
def __ge__(
self, other: Index[Timestamp] | npt.NDArray[np.datetime64]
) -> np_ndarray_bool: ...
@overload
def __ge__(self, other: TimestampSeries) -> Series[bool]: ...
@overload # type: ignore[override]
def __gt__(self, other: Timestamp | datetime | np.datetime64) -> bool: ... # type: ignore[misc]
@overload
def __gt__(self, other: Index | npt.NDArray[np.datetime64]) -> np_ndarray_bool: ...
def __gt__(
self, other: Index[Timestamp] | npt.NDArray[np.datetime64]
) -> np_ndarray_bool: ...
@overload
def __gt__(self, other: TimestampSeries) -> Series[bool]: ...
# error: Signature of "__add__" incompatible with supertype "date"/"datetime"
Expand Down Expand Up @@ -224,15 +233,15 @@ class Timestamp(datetime, SupportsIndex):
@overload
def __eq__(self, other: TimestampSeries) -> Series[bool]: ... # type: ignore[overload-overlap]
@overload
def __eq__(self, other: npt.NDArray[np.datetime64] | Index) -> np_ndarray_bool: ... # type: ignore[overload-overlap]
def __eq__(self, other: npt.NDArray[np.datetime64] | Index[Timestamp]) -> np_ndarray_bool: ... # type: ignore[overload-overlap]
@overload
def __eq__(self, other: object) -> Literal[False]: ...
@overload
def __ne__(self, other: Timestamp | datetime | np.datetime64) -> bool: ... # type: ignore[overload-overlap] # pyright: ignore[reportOverlappingOverload]
@overload
def __ne__(self, other: TimestampSeries) -> Series[bool]: ... # type: ignore[overload-overlap]
@overload
def __ne__(self, other: npt.NDArray[np.datetime64] | Index) -> np_ndarray_bool: ... # type: ignore[overload-overlap]
def __ne__(self, other: npt.NDArray[np.datetime64] | Index[Timestamp]) -> np_ndarray_bool: ... # type: ignore[overload-overlap]
@overload
def __ne__(self, other: object) -> Literal[True]: ...
def __hash__(self) -> int: ...
Expand Down
12 changes: 10 additions & 2 deletions tests/test_scalars.py
Original file line number Diff line number Diff line change
Expand Up @@ -713,8 +713,16 @@ def test_timedelta_mul_div() -> None:

check(assert_type(md_int * td, pd.Timedelta), pd.Timedelta)
check(assert_type(md_float * td, pd.Timedelta), pd.Timedelta)
check(assert_type(md_ndarray_intp * td, np.ndarray), np.ndarray, np.timedelta64)
check(assert_type(md_ndarray_float * td, np.ndarray), np.ndarray, np.timedelta64)
check(
assert_type(md_ndarray_intp * td, npt.NDArray[np.timedelta64]),
np.ndarray,
np.timedelta64,
)
check(
assert_type(md_ndarray_float * td, npt.NDArray[np.timedelta64]),
np.ndarray,
np.timedelta64,
)
check(assert_type(mp_series_int * td, TimedeltaSeries), pd.Series, pd.Timedelta)
check(assert_type(md_series_float * td, TimedeltaSeries), pd.Series, pd.Timedelta)
check(assert_type(md_int64_index * td, pd.TimedeltaIndex), pd.TimedeltaIndex)
Expand Down
Loading