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

Change subject: [Bugfix] Fix precision not being set incorrectly.
......................................................................

[Bugfix] Fix precision not being set incorrectly.

Bug: T324798
Change-Id: I0a097dee74ed1d4cc53d0792b3b294c7600b1dcb
---
M pywikibot/__init__.py
M tests/wikibase_tests.py
2 files changed, 71 insertions(+), 14 deletions(-)

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




diff --git a/pywikibot/__init__.py b/pywikibot/__init__.py
index 97c4bd9..db7bdfe 100644
--- a/pywikibot/__init__.py
+++ b/pywikibot/__init__.py
@@ -368,22 +368,27 @@
         """
         if year is None:
             raise ValueError('no year given')
-        self.precision = self.PRECISION['second']
-        if second is None:
-            self.precision = self.PRECISION['minute']
-            second = 0
-        if minute is None:
-            self.precision = self.PRECISION['hour']
-            minute = 0
-        if hour is None:
-            self.precision = self.PRECISION['day']
-            hour = 0
-        if day is None:
+        self.precision = self.PRECISION['year']
+        if month is not None:
             self.precision = self.PRECISION['month']
-            day = 1
-        if month is None:
-            self.precision = self.PRECISION['year']
+        else:
             month = 1
+        if day is not None:
+            self.precision = self.PRECISION['day']
+        else:
+            day = 1
+        if hour is not None:
+            self.precision = self.PRECISION['hour']
+        else:
+            hour = 0
+        if minute is not None:
+            self.precision = self.PRECISION['minute']
+        else:
+            minute = 0
+        if second is not None:
+            self.precision = self.PRECISION['second']
+        else:
+            second = 0
         self.year = year
         self.month = month
         self.day = day
diff --git a/tests/wikibase_tests.py b/tests/wikibase_tests.py
index 3d137eb..c97f6f7 100755
--- a/tests/wikibase_tests.py
+++ b/tests/wikibase_tests.py
@@ -301,6 +301,48 @@
                                              day=0, hour=12, minute=43,
                                              precision=14))

+    def test_WbTime_skip_params_precision(self):
+        """Test skipping units (such as day, month) when creating WbTimes."""
+        repo = self.get_repo()
+        t = pywikibot.WbTime(year=2020, day=2, site=repo)
+        self.assertEqual(t, pywikibot.WbTime(year=2020, month=1, day=2,
+                                             site=repo))
+        self.assertEqual(t.precision, pywikibot.WbTime.PRECISION['day'])
+        t2 = pywikibot.WbTime(year=2020, hour=5, site=repo)
+        self.assertEqual(t2, pywikibot.WbTime(year=2020, month=1, day=1,
+                                              hour=5, site=repo))
+        self.assertEqual(t2.precision, pywikibot.WbTime.PRECISION['hour'])
+        t3 = pywikibot.WbTime(year=2020, minute=5, site=repo)
+        self.assertEqual(t3, pywikibot.WbTime(year=2020, month=1, day=1,
+                                              hour=0, minute=5, site=repo))
+        self.assertEqual(t3.precision, pywikibot.WbTime.PRECISION['minute'])
+        t4 = pywikibot.WbTime(year=2020, second=5, site=repo)
+        self.assertEqual(t4, pywikibot.WbTime(year=2020, month=1, day=1,
+                                              hour=0, minute=0, second=5,
+                                              site=repo))
+        self.assertEqual(t4.precision, pywikibot.WbTime.PRECISION['second'])
+        t5 = pywikibot.WbTime(year=2020, month=2, hour=5, site=repo)
+        self.assertEqual(t5, pywikibot.WbTime(year=2020, month=2, day=1,
+                                              hour=5, site=repo))
+        self.assertEqual(t5.precision, pywikibot.WbTime.PRECISION['hour'])
+        t6 = pywikibot.WbTime(year=2020, month=2, minute=5, site=repo)
+        self.assertEqual(t6, pywikibot.WbTime(year=2020, month=2, day=1,
+                                              hour=0, minute=5, site=repo))
+        self.assertEqual(t6.precision, pywikibot.WbTime.PRECISION['minute'])
+        t7 = pywikibot.WbTime(year=2020, month=2, second=5, site=repo)
+        self.assertEqual(t7, pywikibot.WbTime(year=2020, month=2, day=1,
+                                              hour=0, minute=0, second=5,
+                                              site=repo))
+        self.assertEqual(t7.precision, pywikibot.WbTime.PRECISION['second'])
+        t8 = pywikibot.WbTime(year=2020, day=2, hour=5, site=repo)
+        self.assertEqual(t8, pywikibot.WbTime(year=2020, month=1, day=2,
+                                              hour=5, site=repo))
+        self.assertEqual(t8.precision, pywikibot.WbTime.PRECISION['hour'])
+        t9 = pywikibot.WbTime(year=2020, month=3, day=2, minute=5, site=repo)
+        self.assertEqual(t9, pywikibot.WbTime(year=2020, month=3, day=2,
+                                              hour=0, minute=5, site=repo))
+        self.assertEqual(t9.precision, pywikibot.WbTime.PRECISION['minute'])
+
     def test_WbTime_timestamp(self):
         """Test timestamp functions of WbTime."""
         repo = self.get_repo()

--
To view, visit https://gerrit.wikimedia.org/r/c/pywikibot/core/+/866512
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: I0a097dee74ed1d4cc53d0792b3b294c7600b1dcb
Gerrit-Change-Number: 866512
Gerrit-PatchSet: 7
Gerrit-Owner: RPI2026F1 <sarkaraoyan+rpi202...@gmail.com>
Gerrit-Reviewer: Xqt <i...@gno.de>
Gerrit-Reviewer: jenkins-bot
Gerrit-MessageType: merged
_______________________________________________
Pywikibot-commits mailing list -- pywikibot-commits@lists.wikimedia.org
To unsubscribe send an email to pywikibot-commits-le...@lists.wikimedia.org

Reply via email to