@@ -40,9 +40,11 @@ from pandas._libs.tslibs import (
4040 Timedelta ,
4141)
4242from pandas ._typing import (
43+ ShapeT ,
4344 TimestampNonexistent ,
4445 TimeUnit ,
45- np_ndarray_bool ,
46+ np_1darray ,
47+ np_ndarray ,
4648 npt ,
4749)
4850
@@ -180,40 +182,48 @@ class Timestamp(datetime, SupportsIndex):
180182 @overload # type: ignore[override]
181183 def __le__ (self , other : Timestamp | datetime | np .datetime64 ) -> bool : ... # type: ignore[misc]
182184 @overload
185+ def __le__ (self , other : DatetimeIndex ) -> np_1darray [np .bool ]: ...
186+ @overload
183187 def __le__ (
184- self , other : DatetimeIndex | npt . NDArray [ np .datetime64 ]
185- ) -> np_ndarray_bool : ...
188+ self , other : np_ndarray [ ShapeT , np .datetime64 ]
189+ ) -> np_ndarray [ ShapeT , np . bool ] : ...
186190 @overload
187191 def __le__ (self , other : TimestampSeries ) -> Series [bool ]: ...
188192 @overload # type: ignore[override]
189193 def __lt__ (self , other : Timestamp | datetime | np .datetime64 ) -> bool : ... # type: ignore[misc]
190194 @overload
195+ def __lt__ (self , other : DatetimeIndex ) -> np_1darray [np .bool ]: ...
196+ @overload
191197 def __lt__ (
192- self , other : DatetimeIndex | npt . NDArray [ np .datetime64 ]
193- ) -> np_ndarray_bool : ...
198+ self , other : np_ndarray [ ShapeT , np .datetime64 ]
199+ ) -> np_ndarray [ ShapeT , np . bool ] : ...
194200 @overload
195201 def __lt__ (self , other : TimestampSeries ) -> Series [bool ]: ...
196202 @overload # type: ignore[override]
197203 def __ge__ (self , other : Timestamp | datetime | np .datetime64 ) -> bool : ... # type: ignore[misc]
198204 @overload
205+ def __ge__ (self , other : DatetimeIndex ) -> np_1darray [np .bool ]: ...
206+ @overload
199207 def __ge__ (
200- self , other : DatetimeIndex | npt . NDArray [ np .datetime64 ]
201- ) -> np_ndarray_bool : ...
208+ self , other : np_ndarray [ ShapeT , np .datetime64 ]
209+ ) -> np_ndarray [ ShapeT , np . bool ] : ...
202210 @overload
203211 def __ge__ (self , other : TimestampSeries ) -> Series [bool ]: ...
204212 @overload # type: ignore[override]
205213 def __gt__ (self , other : Timestamp | datetime | np .datetime64 ) -> bool : ... # type: ignore[misc]
206214 @overload
215+ def __gt__ (self , other : DatetimeIndex ) -> np_1darray [np .bool ]: ...
216+ @overload
207217 def __gt__ (
208- self , other : DatetimeIndex | npt . NDArray [ np .datetime64 ]
209- ) -> np_ndarray_bool : ...
218+ self , other : np_ndarray [ ShapeT , np .datetime64 ]
219+ ) -> np_ndarray [ ShapeT , np . bool ] : ...
210220 @overload
211221 def __gt__ (self , other : TimestampSeries ) -> Series [bool ]: ...
212222 # error: Signature of "__add__" incompatible with supertype "date"/"datetime"
213223 @overload # type: ignore[override]
214224 def __add__ (
215- self , other : npt . NDArray [ np .timedelta64 ]
216- ) -> npt . NDArray [ np .datetime64 ]: ...
225+ self , other : np_ndarray [ ShapeT , np .timedelta64 ]
226+ ) -> np_ndarray [ ShapeT , np .datetime64 ]: ...
217227 @overload
218228 def __add__ (self , other : timedelta | np .timedelta64 | Tick ) -> Self : ...
219229 @overload
@@ -226,8 +236,8 @@ class Timestamp(datetime, SupportsIndex):
226236 def __radd__ (self , other : TimedeltaIndex ) -> DatetimeIndex : ...
227237 @overload
228238 def __radd__ (
229- self , other : npt . NDArray [ np .timedelta64 ]
230- ) -> npt . NDArray [ np .datetime64 ]: ...
239+ self , other : np_ndarray [ ShapeT , np .timedelta64 ]
240+ ) -> np_ndarray [ ShapeT , np .datetime64 ]: ...
231241 # TODO: test dt64
232242 @overload # type: ignore[override]
233243 def __sub__ (self , other : Timestamp | datetime | np .datetime64 ) -> Timedelta : ...
@@ -241,22 +251,26 @@ class Timestamp(datetime, SupportsIndex):
241251 def __sub__ (self , other : TimestampSeries ) -> TimedeltaSeries : ...
242252 @overload
243253 def __sub__ (
244- self , other : npt . NDArray [ np .timedelta64 ]
245- ) -> npt . NDArray [ np .datetime64 ]: ...
254+ self , other : np_ndarray [ ShapeT , np .timedelta64 ]
255+ ) -> np_ndarray [ ShapeT , np .datetime64 ]: ...
246256 @overload
247257 def __eq__ (self , other : Timestamp | datetime | np .datetime64 ) -> bool : ... # type: ignore[overload-overlap] # pyright: ignore[reportOverlappingOverload]
248258 @overload
249259 def __eq__ (self , other : TimestampSeries ) -> Series [bool ]: ... # type: ignore[overload-overlap]
250260 @overload
251- def __eq__ (self , other : npt .NDArray [np .datetime64 ] | Index ) -> np_ndarray_bool : ... # type: ignore[overload-overlap]
261+ def __eq__ (self , other : Index ) -> np_1darray [np .bool ]: ... # type: ignore[overload-overlap]
262+ @overload # TODO: using shape-aware arrays similar to other methods doesn't work in mypy
263+ def __eq__ (self , other : npt .NDArray [np .datetime64 ]) -> npt .NDArray [np .bool ]: ... # type: ignore[overload-overlap]
252264 @overload
253265 def __eq__ (self , other : object ) -> Literal [False ]: ...
254266 @overload
255267 def __ne__ (self , other : Timestamp | datetime | np .datetime64 ) -> bool : ... # type: ignore[overload-overlap] # pyright: ignore[reportOverlappingOverload]
256268 @overload
257269 def __ne__ (self , other : TimestampSeries ) -> Series [bool ]: ... # type: ignore[overload-overlap]
258270 @overload
259- def __ne__ (self , other : npt .NDArray [np .datetime64 ] | Index ) -> np_ndarray_bool : ... # type: ignore[overload-overlap]
271+ def __ne__ (self , other : Index ) -> np_1darray [np .bool ]: ... # type: ignore[overload-overlap]
272+ @overload # TODO: using shape-aware arrays similar to other methods doesn't work in mypy
273+ def __ne__ (self , other : npt .NDArray [np .datetime64 ]) -> npt .NDArray [np .bool ]: ... # type: ignore[overload-overlap]
260274 @overload
261275 def __ne__ (self , other : object ) -> Literal [True ]: ...
262276 def __hash__ (self ) -> int : ...
0 commit comments