Skip to content

Commit 3d6df61

Browse files
committed
@override in Timestamp
1 parent 2d0fa7e commit 3d6df61

1 file changed

Lines changed: 56 additions & 5 deletions

File tree

pandas-stubs/_libs/tslibs/timestamps.pyi

Lines changed: 56 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ from pandas.core.indexes.base import Index
2525
from pandas.core.indexes.datetimes import DatetimeIndex
2626
from pandas.core.indexes.timedeltas import TimedeltaIndex
2727
from pandas.core.series import Series
28+
from typing_extensions import override
2829

2930
from pandas._libs.tslibs import (
3031
Period,
@@ -78,26 +79,35 @@ 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
@@ -107,36 +117,52 @@ class Timestamp(datetime, SupportsIndex):
107117
) -> Self: ...
108118
else:
109119
@classmethod
120+
@override
110121
def fromtimestamp(cls, t: float, tz: _tzinfo | str | None = None) -> Self: ...
111122

112123
@classmethod
124+
@override
113125
def today(cls, tz: _tzinfo | str | None = None) -> Self: ...
114126
@classmethod
127+
@override
115128
def fromordinal(
116129
cls,
117130
ordinal: int,
118131
tz: _tzinfo | str | None = None,
119132
) -> Self: ...
120133
@classmethod
134+
@override
121135
def now(cls, tz: _tzinfo | str | None = None) -> Self: ...
122136
# error: Signature of "combine" incompatible with supertype "datetime"
123137
@classmethod
138+
@override
124139
def combine(cls, date: _date, time: _time) -> Self: ... # type: ignore[override] # pyright: ignore[reportIncompatibleMethodOverride] # pyrefly: ignore[bad-override] # ty: ignore[invalid-method-override]
125140
@classmethod
141+
@override
126142
def fromisoformat(cls, date_string: str) -> Self: ...
143+
@override
127144
def strftime(self, format: str) -> str: ...
145+
@override
128146
def __format__(self, fmt: str) -> str: ...
147+
@override
129148
def toordinal(self) -> int: ...
149+
@override
130150
def timetuple(self) -> struct_time: ...
151+
@override
131152
def timestamp(self) -> float: ...
153+
@override
132154
def utctimetuple(self) -> struct_time: ...
155+
@override
133156
def date(self) -> _date: ...
157+
@override
134158
def time(self) -> _time: ...
159+
@override
135160
def timetz(self) -> _time: ...
136161
# Override since fold is more precise than datetime.replace(fold:int)
137162
# Here it is restricted to be 0 or 1 using a Literal
138163
# Violation of Liskov substitution principle
139-
def replace( # type: ignore[override] # pyright: ignore[reportIncompatibleMethodOverride] # pyrefly: ignore # ty: ignore[invalid-method-override]
164+
@override
165+
def replace( # type: ignore[override] # pyright: ignore[reportIncompatibleMethodOverride] # pyrefly: ignore[bad-override] # ty: ignore[invalid-method-override]
140166
self,
141167
year: int | None = None,
142168
month: int | None = None,
@@ -148,8 +174,11 @@ class Timestamp(datetime, SupportsIndex):
148174
tzinfo: _tzinfo | None = None,
149175
fold: Literal[0, 1] | None = None,
150176
) -> Timestamp: ...
177+
@override
151178
def astimezone(self, tz: _tzinfo | None = None) -> Self: ...
179+
@override
152180
def ctime(self) -> str: ...
181+
@override
153182
def isoformat( # type: ignore[override] # pyright: ignore[reportIncompatibleMethodOverride] # pyrefly: ignore[bad-override] # ty: ignore[invalid-method-override]
154183
self,
155184
sep: str = "T",
@@ -164,13 +193,18 @@ class Timestamp(datetime, SupportsIndex):
164193
] = "auto",
165194
) -> str: ...
166195
@classmethod
196+
@override
167197
def strptime(cls, date_string: Never, format: Never) -> Never: ... # type: ignore[override] # pyright: ignore[reportIncompatibleMethodOverride] # pyrefly: ignore[bad-override] # ty: ignore[invalid-method-override]
198+
@override
168199
def utcoffset(self) -> timedelta | None: ...
200+
@override
169201
def tzname(self) -> str | None: ...
202+
@override
170203
def dst(self) -> timedelta | None: ...
171204
# Mypy complains Forward operator "<inequality op>" is not callable, so ignore misc
172205
# for le, lt ge and gt
173206
@overload # type: ignore[override]
207+
@override
174208
def __le__(self, other: datetime | np.datetime64 | Self) -> bool: ...
175209
@overload
176210
def __le__(self, other: DatetimeIndex) -> np_1darray_bool: ...
@@ -179,6 +213,7 @@ class Timestamp(datetime, SupportsIndex):
179213
@overload
180214
def __le__(self, other: Series[Timestamp]) -> Series[bool]: ...
181215
@overload # type: ignore[override]
216+
@override
182217
def __lt__(self, other: datetime | np.datetime64 | Self) -> bool: ...
183218
@overload
184219
def __lt__(self, other: DatetimeIndex) -> np_1darray_bool: ...
@@ -187,6 +222,7 @@ class Timestamp(datetime, SupportsIndex):
187222
@overload
188223
def __lt__(self, other: Series[Timestamp]) -> Series[bool]: ...
189224
@overload # type: ignore[override]
225+
@override
190226
def __ge__(self, other: datetime | np.datetime64 | Self) -> bool: ...
191227
@overload
192228
def __ge__(self, other: DatetimeIndex) -> np_1darray_bool: ...
@@ -195,6 +231,7 @@ class Timestamp(datetime, SupportsIndex):
195231
@overload
196232
def __ge__(self, other: Series[Timestamp]) -> Series[bool]: ...
197233
@overload # type: ignore[override]
234+
@override
198235
def __gt__(self, other: datetime | np.datetime64 | Self) -> bool: ...
199236
@overload
200237
def __gt__(self, other: DatetimeIndex) -> np_1darray_bool: ...
@@ -204,19 +241,22 @@ class Timestamp(datetime, SupportsIndex):
204241
def __gt__(self, other: Series[Timestamp]) -> Series[bool]: ...
205242
# error: Signature of "__add__" incompatible with supertype "date"/"datetime"
206243
@overload # type: ignore[override]
244+
@override
207245
def __add__(self, other: np_ndarray_td[ShapeT]) -> np_ndarray_dt[ShapeT]: ...
208246
@overload
209247
def __add__(self, other: timedelta | np.timedelta64 | Tick) -> Self: ...
210248
@overload
211249
def __add__(self, other: TimedeltaIndex) -> DatetimeIndex: ...
212250
@overload
251+
@override
213252
def __radd__(self, other: timedelta) -> Self: ...
214253
@overload
215254
def __radd__(self, other: TimedeltaIndex) -> DatetimeIndex: ...
216255
@overload
217256
def __radd__(self, other: np_ndarray_td[ShapeT]) -> np_ndarray_dt[ShapeT]: ...
218257
def __rsub__(self, other: datetime | np.datetime64) -> Timedelta: ...
219258
@overload # type: ignore[override]
259+
@override
220260
def __sub__(self, other: datetime | np.datetime64) -> Timedelta: ...
221261
@overload
222262
def __sub__(self, other: timedelta | np.timedelta64 | Tick) -> Self: ...
@@ -225,28 +265,38 @@ class Timestamp(datetime, SupportsIndex):
225265
@overload
226266
def __sub__(self, other: np_ndarray_td[ShapeT]) -> np_ndarray_dt[ShapeT]: ...
227267
@overload
228-
def __eq__(self, other: datetime | np.datetime64 | Self) -> bool: ... # type: ignore[overload-overlap] # pyright: ignore[reportOverlappingOverload]
268+
@override
269+
def __eq__(self, other: datetime | np.datetime64 | Self) -> bool: ... # type: ignore[overload-overlap]
229270
@overload
230271
def __eq__(self, other: Series[Timestamp]) -> Series[bool]: ... # type: ignore[overload-overlap]
231272
@overload
232273
def __eq__(self, other: Index) -> np_1darray_bool: ... # type: ignore[overload-overlap]
233274
@overload
234275
def __eq__(self, other: np_ndarray_dt[ShapeT]) -> np_ndarray_bool[ShapeT]: ... # type: ignore[overload-overlap]
235276
@overload
236-
def __eq__(self, other: object) -> Literal[False]: ...
277+
def __eq__( # pyright: ignore[reportOverlappingOverload]
278+
self, other: object
279+
) -> Literal[False]: ...
237280
@overload
238-
def __ne__(self, other: datetime | np.datetime64 | Self) -> bool: ... # type: ignore[overload-overlap] # pyright: ignore[reportOverlappingOverload]
281+
@override
282+
def __ne__(self, other: datetime | np.datetime64 | Self) -> bool: ... # type: ignore[overload-overlap]
239283
@overload
240284
def __ne__(self, other: Series[Timestamp]) -> Series[bool]: ... # type: ignore[overload-overlap]
241285
@overload
242286
def __ne__(self, other: Index) -> np_1darray_bool: ... # type: ignore[overload-overlap]
243287
@overload
244288
def __ne__(self, other: np_ndarray_dt[ShapeT]) -> np_ndarray_bool[ShapeT]: ... # type: ignore[overload-overlap]
245289
@overload
246-
def __ne__(self, other: object) -> Literal[True]: ...
290+
def __ne__( # pyright: ignore[reportOverlappingOverload]
291+
self, other: object
292+
) -> Literal[True]: ...
293+
@override
247294
def __hash__(self) -> int: ...
295+
@override
248296
def weekday(self) -> int: ...
297+
@override
249298
def isoweekday(self) -> int: ...
299+
@override
250300
def isocalendar(self) -> _IsoCalendarDate: ...
251301
@property
252302
def is_leap_year(self) -> bool: ...
@@ -328,4 +378,5 @@ class Timestamp(datetime, SupportsIndex):
328378
def unit(self) -> TimeUnit: ...
329379
def as_unit(self, unit: TimeUnit, round_ok: bool = True) -> Self: ...
330380
# To support slicing
381+
@override
331382
def __index__(self) -> int: ...

0 commit comments

Comments
 (0)