@@ -25,6 +25,7 @@ from pandas.core.indexes.base import Index
2525from pandas .core .indexes .datetimes import DatetimeIndex
2626from pandas .core .indexes .timedeltas import TimedeltaIndex
2727from pandas .core .series import Series
28+ from typing_extensions import override
2829
2930from pandas ._libs .tslibs import (
3031 Period ,
@@ -78,65 +79,91 @@ class Timestamp(datetime, SupportsIndex):
7879 # While Timestamp can return pd.NaT, having the constructor return
7980 # a Union with NaTType makes things awkward for users of pandas
8081 @property
82+ @override
8183 def year (self ) -> int : ...
8284 @property
85+ @override
8386 def month (self ) -> int : ...
8487 @property
88+ @override
8589 def day (self ) -> int : ...
8690 @property
91+ @override
8792 def hour (self ) -> int : ...
8893 @property
94+ @override
8995 def minute (self ) -> int : ...
9096 @property
97+ @override
9198 def second (self ) -> int : ...
9299 @property
100+ @override
93101 def microsecond (self ) -> int : ...
94102 @property
95103 def nanosecond (self ) -> int : ...
96104 @property
105+ @override
97106 def tzinfo (self ) -> _tzinfo | None : ...
98107 @property
99108 def tz (self ) -> _tzinfo | None : ...
100109 @property
110+ @override
101111 def fold (self ) -> int : ...
102112 if sys .version_info >= (3 , 12 ):
103113 @classmethod
114+ @override
104115 # TODO: reduce the double unused-ignore-comment when astral-sh/ty#2681 is resolved
105116 def fromtimestamp ( # pyright: ignore[reportIncompatibleMethodOverride] # pyrefly: ignore[bad-override-param-name] # ty: ignore[invalid-method-override,unused-ignore-comment,unused-ignore-comment]
106117 cls , t : float , tz : _tzinfo | str | None = None
107118 ) -> Self : ...
108119 else :
109120 @classmethod
121+ @override
110122 def fromtimestamp (cls , t : float , tz : _tzinfo | str | None = None ) -> Self : ...
111123
112124 @classmethod
125+ @override
113126 def today (cls , tz : _tzinfo | str | None = None ) -> Self : ...
114127 @classmethod
128+ @override
115129 def fromordinal (
116130 cls ,
117131 ordinal : int ,
118132 tz : _tzinfo | str | None = None ,
119133 ) -> Self : ...
120134 @classmethod
135+ @override
121136 def now (cls , tz : _tzinfo | str | None = None ) -> Self : ...
122137 # error: Signature of "combine" incompatible with supertype "datetime"
123138 @classmethod
139+ @override
124140 def combine (cls , date : _date , time : _time ) -> Self : ... # type: ignore[override] # pyright: ignore[reportIncompatibleMethodOverride] # pyrefly: ignore[bad-override] # ty: ignore[invalid-method-override]
125141 @classmethod
142+ @override
126143 def fromisoformat (cls , date_string : str ) -> Self : ...
144+ @override
127145 def strftime (self , format : str ) -> str : ...
146+ @override
128147 def __format__ (self , fmt : str ) -> str : ...
148+ @override
129149 def toordinal (self ) -> int : ...
150+ @override
130151 def timetuple (self ) -> struct_time : ...
152+ @override
131153 def timestamp (self ) -> float : ...
154+ @override
132155 def utctimetuple (self ) -> struct_time : ...
156+ @override
133157 def date (self ) -> _date : ...
158+ @override
134159 def time (self ) -> _time : ...
160+ @override
135161 def timetz (self ) -> _time : ...
136162 # Override since fold is more precise than datetime.replace(fold:int)
137163 # Here it is restricted to be 0 or 1 using a Literal
138164 # Violation of Liskov substitution principle
139- def replace ( # type: ignore[override] # pyright: ignore[reportIncompatibleMethodOverride] # pyrefly: ignore # ty: ignore[invalid-method-override]
165+ @override
166+ def replace ( # type: ignore[override] # pyright: ignore[reportIncompatibleMethodOverride] # pyrefly: ignore[bad-override] # ty: ignore[invalid-method-override]
140167 self ,
141168 year : int | None = None ,
142169 month : int | None = None ,
@@ -148,8 +175,11 @@ class Timestamp(datetime, SupportsIndex):
148175 tzinfo : _tzinfo | None = None ,
149176 fold : Literal [0 , 1 ] | None = None ,
150177 ) -> Timestamp : ...
178+ @override
151179 def astimezone (self , tz : _tzinfo | None = None ) -> Self : ...
180+ @override
152181 def ctime (self ) -> str : ...
182+ @override
153183 def isoformat ( # type: ignore[override] # pyright: ignore[reportIncompatibleMethodOverride] # pyrefly: ignore[bad-override] # ty: ignore[invalid-method-override]
154184 self ,
155185 sep : str = "T" ,
@@ -164,13 +194,18 @@ class Timestamp(datetime, SupportsIndex):
164194 ] = "auto" ,
165195 ) -> str : ...
166196 @classmethod
197+ @override
167198 def strptime (cls , date_string : Never , format : Never ) -> Never : ... # type: ignore[override] # pyright: ignore[reportIncompatibleMethodOverride] # pyrefly: ignore[bad-override] # ty: ignore[invalid-method-override]
199+ @override
168200 def utcoffset (self ) -> timedelta | None : ...
201+ @override
169202 def tzname (self ) -> str | None : ...
203+ @override
170204 def dst (self ) -> timedelta | None : ...
171205 # Mypy complains Forward operator "<inequality op>" is not callable, so ignore misc
172206 # for le, lt ge and gt
173207 @overload # type: ignore[override]
208+ @override
174209 def __le__ (self , other : datetime | np .datetime64 | Self ) -> bool : ...
175210 @overload
176211 def __le__ (self , other : DatetimeIndex ) -> np_1darray_bool : ...
@@ -179,6 +214,7 @@ class Timestamp(datetime, SupportsIndex):
179214 @overload
180215 def __le__ (self , other : Series [Timestamp ]) -> Series [bool ]: ...
181216 @overload # type: ignore[override]
217+ @override
182218 def __lt__ (self , other : datetime | np .datetime64 | Self ) -> bool : ...
183219 @overload
184220 def __lt__ (self , other : DatetimeIndex ) -> np_1darray_bool : ...
@@ -187,6 +223,7 @@ class Timestamp(datetime, SupportsIndex):
187223 @overload
188224 def __lt__ (self , other : Series [Timestamp ]) -> Series [bool ]: ...
189225 @overload # type: ignore[override]
226+ @override
190227 def __ge__ (self , other : datetime | np .datetime64 | Self ) -> bool : ...
191228 @overload
192229 def __ge__ (self , other : DatetimeIndex ) -> np_1darray_bool : ...
@@ -195,6 +232,7 @@ class Timestamp(datetime, SupportsIndex):
195232 @overload
196233 def __ge__ (self , other : Series [Timestamp ]) -> Series [bool ]: ...
197234 @overload # type: ignore[override]
235+ @override
198236 def __gt__ (self , other : datetime | np .datetime64 | Self ) -> bool : ...
199237 @overload
200238 def __gt__ (self , other : DatetimeIndex ) -> np_1darray_bool : ...
@@ -204,19 +242,22 @@ class Timestamp(datetime, SupportsIndex):
204242 def __gt__ (self , other : Series [Timestamp ]) -> Series [bool ]: ...
205243 # error: Signature of "__add__" incompatible with supertype "date"/"datetime"
206244 @overload # type: ignore[override]
245+ @override
207246 def __add__ (self , other : np_ndarray_td [ShapeT ]) -> np_ndarray_dt [ShapeT ]: ...
208247 @overload
209248 def __add__ (self , other : timedelta | np .timedelta64 | Tick ) -> Self : ...
210249 @overload
211250 def __add__ (self , other : TimedeltaIndex ) -> DatetimeIndex : ...
212251 @overload
252+ @override
213253 def __radd__ (self , other : timedelta ) -> Self : ...
214254 @overload
215255 def __radd__ (self , other : TimedeltaIndex ) -> DatetimeIndex : ...
216256 @overload
217257 def __radd__ (self , other : np_ndarray_td [ShapeT ]) -> np_ndarray_dt [ShapeT ]: ...
218258 def __rsub__ (self , other : datetime | np .datetime64 ) -> Timedelta : ...
219259 @overload # type: ignore[override]
260+ @override
220261 def __sub__ (self , other : datetime | np .datetime64 ) -> Timedelta : ...
221262 @overload
222263 def __sub__ (self , other : timedelta | np .timedelta64 | Tick ) -> Self : ...
@@ -225,28 +266,38 @@ class Timestamp(datetime, SupportsIndex):
225266 @overload
226267 def __sub__ (self , other : np_ndarray_td [ShapeT ]) -> np_ndarray_dt [ShapeT ]: ...
227268 @overload
228- def __eq__ (self , other : datetime | np .datetime64 | Self ) -> bool : ... # type: ignore[overload-overlap] # pyright: ignore[reportOverlappingOverload]
269+ @override
270+ def __eq__ (self , other : datetime | np .datetime64 | Self ) -> bool : ... # type: ignore[overload-overlap]
229271 @overload
230272 def __eq__ (self , other : Series [Timestamp ]) -> Series [bool ]: ... # type: ignore[overload-overlap]
231273 @overload
232274 def __eq__ (self , other : Index ) -> np_1darray_bool : ... # type: ignore[overload-overlap]
233275 @overload
234276 def __eq__ (self , other : np_ndarray_dt [ShapeT ]) -> np_ndarray_bool [ShapeT ]: ... # type: ignore[overload-overlap]
235277 @overload
236- def __eq__ (self , other : object ) -> Literal [False ]: ...
278+ def __eq__ ( # pyright: ignore[reportOverlappingOverload]
279+ self , other : object
280+ ) -> Literal [False ]: ...
237281 @overload
238- def __ne__ (self , other : datetime | np .datetime64 | Self ) -> bool : ... # type: ignore[overload-overlap] # pyright: ignore[reportOverlappingOverload]
282+ @override
283+ def __ne__ (self , other : datetime | np .datetime64 | Self ) -> bool : ... # type: ignore[overload-overlap]
239284 @overload
240285 def __ne__ (self , other : Series [Timestamp ]) -> Series [bool ]: ... # type: ignore[overload-overlap]
241286 @overload
242287 def __ne__ (self , other : Index ) -> np_1darray_bool : ... # type: ignore[overload-overlap]
243288 @overload
244289 def __ne__ (self , other : np_ndarray_dt [ShapeT ]) -> np_ndarray_bool [ShapeT ]: ... # type: ignore[overload-overlap]
245290 @overload
246- def __ne__ (self , other : object ) -> Literal [True ]: ...
291+ def __ne__ ( # pyright: ignore[reportOverlappingOverload]
292+ self , other : object
293+ ) -> Literal [True ]: ...
294+ @override
247295 def __hash__ (self ) -> int : ...
296+ @override
248297 def weekday (self ) -> int : ...
298+ @override
249299 def isoweekday (self ) -> int : ...
300+ @override
250301 def isocalendar (self ) -> _IsoCalendarDate : ...
251302 @property
252303 def is_leap_year (self ) -> bool : ...
@@ -328,4 +379,5 @@ class Timestamp(datetime, SupportsIndex):
328379 def unit (self ) -> TimeUnit : ...
329380 def as_unit (self , unit : TimeUnit , round_ok : bool = True ) -> Self : ...
330381 # To support slicing
382+ @override
331383 def __index__ (self ) -> int : ...
0 commit comments