jenkins-bot has submitted this change. ( 
https://gerrit.wikimedia.org/r/c/pywikibot/core/+/986642 )

Change subject: pywikibot.time: add typing
......................................................................

pywikibot.time: add typing

Change-Id: I260113b7dfa66918a019e6edce044272d341d408
---
M pywikibot/time.py
1 file changed, 33 insertions(+), 10 deletions(-)

Approvals:
  JJMC89: Looks good to me, approved
  jenkins-bot: Verified




diff --git a/pywikibot/time.py b/pywikibot/time.py
index 6314eb0..8a32bfc 100644
--- a/pywikibot/time.py
+++ b/pywikibot/time.py
@@ -14,6 +14,7 @@
 import re
 import types
 from contextlib import suppress
+from typing import overload

 import pywikibot
 from pywikibot.tools import classproperty, deprecated
@@ -212,7 +213,7 @@

         raise ValueError(f'time data {timestr!r} does not match any format.')

-    @deprecated('replace method', since='8.0.0')
+    @deprecated('replace method', since='8.0.0')  # type: ignore[misc]
     def clone(self) -> Timestamp:
         """Clone this instance.

@@ -250,7 +251,7 @@
         # to create a clone.
         if isinstance(ts, cls):
             return ts.replace()
-
+        assert isinstance(ts, str)
         return cls._from_iso8601(f'{ts[:10]}{sep}{ts[11:]}')

     @classmethod
@@ -288,7 +289,7 @@
         # to create a clone.
         if isinstance(ts, cls):
             return ts.replace()
-
+        assert isinstance(ts, str)
         if len(ts) == 8 and not strict:
             # year, month and day are given only
             ts += '000000'
@@ -344,10 +345,20 @@
             return self._from_datetime(newdt)
         return newdt

-    def __sub__(self, other: datetime.timedelta  # type: ignore[override]
-                ) -> Timestamp:
+    @overload  # type: ignore[override]
+    def __sub__(self, other: datetime.timedelta) -> Timestamp:
+        ...
+
+    @overload
+    def __sub__(self, other: datetime.datetime) -> datetime.timedelta:
+        ...
+
+    def __sub__(
+        self,
+        other: datetime.datetime | datetime.timedelta,
+    ) -> datetime.timedelta | Timestamp:
         """Perform subtraction, returning a Timestamp instead of datetime."""
-        newdt = super().__sub__(other)
+        newdt = super().__sub__(other)  # type: ignore[operator]
         if isinstance(newdt, datetime.datetime):
             return self._from_datetime(newdt)
         return newdt
@@ -367,15 +378,15 @@
         self._offset = datetime.timedelta(minutes=offset)
         self._name = name

-    def utcoffset(self, dt):
+    def utcoffset(self, dt: datetime.datetime | None) -> datetime.timedelta:
         """Return the offset to UTC."""
         return self._offset

-    def tzname(self, dt):
+    def tzname(self, dt: datetime.datetime | None) -> str:
         """Return the name of the timezone."""
         return self._name

-    def dst(self, dt):
+    def dst(self, dt: datetime.datetime | None) -> datetime.timedelta:
         """Return no daylight savings time."""
         return datetime.timedelta(0)

@@ -388,7 +399,10 @@
         )


-def str2timedelta(string: str, timestamp=None) -> datetime.timedelta:
+def str2timedelta(
+    string: str,
+    timestamp: datetime.datetime | None = None,
+) -> datetime.timedelta:
     """
     Return a timedelta for a shorthand duration.


--
To view, visit https://gerrit.wikimedia.org/r/c/pywikibot/core/+/986642
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.wikimedia.org/r/settings

Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Change-Id: I260113b7dfa66918a019e6edce044272d341d408
Gerrit-Change-Number: 986642
Gerrit-PatchSet: 1
Gerrit-Owner: JJMC89 <[email protected]>
Gerrit-Reviewer: JJMC89 <[email protected]>
Gerrit-Reviewer: jenkins-bot
Gerrit-MessageType: merged
_______________________________________________
Pywikibot-commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to