-
-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Closed
Description
Currently, the overload order is:
Lines 319 to 323 in 40caa05
if sys.version_info >= (3, 8): | |
@overload # type: ignore[override] | |
def __sub__(self, __value: timedelta) -> Self: ... | |
@overload | |
def __sub__(self: _D, __value: _D) -> timedelta: ... |
However, both the c-module and the fallback pydatetime
first check if other is a datetime
:
def __sub__(self, other):
"Subtract two datetimes, or a datetime and a timedelta."
if not isinstance(other, datetime):
if isinstance(other, timedelta):
return self + -other
return NotImplemented
So shouldn't the overload order be vice versa?
Also, I noticed that at runtime, timedelta
has __rdivmod__
, __rmod__
and datetime
has __rsub__
, which are missing in the stub. But I guess this is because the pure python fallback doesn't have them.
Metadata
Metadata
Assignees
Labels
No labels