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

Change subject: [bugfix] Fix date.formats['MonthName'] behaviour
......................................................................

[bugfix] Fix date.formats['MonthName'] behaviour

- use 'may_long' s key for mediawiki_message instead of 'may'
- use an OrderedDict as mediawiki_messages result to respect
  the key order in Python 3.5
- additional date and mediawiki_messages tests

Bug: T273573
Change-Id: I30b229c53ae3d2fa088ddd27165425d38f3c3007
---
M pywikibot/date.py
M pywikibot/site/__init__.py
M tests/date_tests.py
M tests/site_tests.py
4 files changed, 24 insertions(+), 7 deletions(-)

Approvals:
  Tacsipacsi: Looks good to me, but someone else must approve
  Xqt: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/pywikibot/date.py b/pywikibot/date.py
index 066a07d..68d9f37 100644
--- a/pywikibot/date.py
+++ b/pywikibot/date.py
@@ -1,6 +1,6 @@
 """Date data and manipulation module."""
 #
-# (C) Pywikibot team, 2003-2020
+# (C) Pywikibot team, 2003-2021
 #
 # Distributed under the terms of the MIT license.
 #
@@ -526,8 +526,11 @@
     def __getitem__(self, lang):
         if lang not in self.months:
             site = Site()
-            months = list(site.mediawiki_messages(enMonthNames,
-                                                  lang=lang).values())
+            # may_long differs
+            keys = ['january', 'february', 'march', 'april', 'may_long',
+                    'june', 'july', 'august', 'september', 'october',
+                    'november', 'december']
+            months = list(site.mediawiki_messages(keys, lang=lang).values())
             self.months[lang] = lambda v: slh(v, months)

         return self.months[lang]
diff --git a/pywikibot/site/__init__.py b/pywikibot/site/__init__.py
index 3f97f51..5eb991e 100644
--- a/pywikibot/site/__init__.py
+++ b/pywikibot/site/__init__.py
@@ -20,7 +20,7 @@
 import typing
 import uuid

-from collections import defaultdict, namedtuple
+from collections import defaultdict, namedtuple, OrderedDict
 from collections.abc import Iterable
 from contextlib import suppress
 from itertools import zip_longest
@@ -685,7 +685,7 @@
         @param lang: a language code, default is self.lang
         @type lang: str or None

-        @rtype dict
+        @rtype OrderedDict
         """
         amlang = lang or self.lang
         if not all(amlang in _mw_msg_cache
@@ -701,7 +701,7 @@
                     _mw_msg_cache[amlang][msg['name']] = msg['*']

             # Check requested keys
-            result = {}
+            result = OrderedDict()
             for key in keys:
                 try:
                     result[key] = _mw_msg_cache[amlang][key]
@@ -711,7 +711,7 @@
             else:
                 return result

-        return {_key: _mw_msg_cache[amlang][_key] for _key in keys}
+        return OrderedDict((key, _mw_msg_cache[amlang][key]) for key in keys)

     @deprecated_args(forceReload=None)
     def mediawiki_message(self, key, lang=None) -> str:
diff --git a/tests/date_tests.py b/tests/date_tests.py
index 26d767b..98cf216 100644
--- a/tests/date_tests.py
+++ b/tests/date_tests.py
@@ -87,6 +87,12 @@
                         'value {} does not match {}'
                         .format(formatname, code, new_value, value))

+    def test_month_name(self):
+        """Test some MonthName results."""
+        # T273573
+        self.assertEqual(date.formats['MonthName']['hu']('január'), 1)
+        self.assertEqual(date.formats['MonthName']['hu'](5), 'május')
+

 class TestMonthDelta(TestCase):

diff --git a/tests/site_tests.py b/tests/site_tests.py
index 1b37e0d..4030e2e 100644
--- a/tests/site_tests.py
+++ b/tests/site_tests.py
@@ -257,6 +257,14 @@
             self.assertNotEqual(mysite.mediawiki_messages(months, 'af'),
                                 mysite.mediawiki_messages(months, 'an'))

+        with self.subTest(messages='Test messages order'):
+            msg = mysite.mediawiki_messages(months, 'en')
+            self.assertIsInstance(msg, dict)
+            self.assertLength(msg, 12)
+            self.assertEqual([key.title() for key in msg][5:],
+                             list(msg.values())[5:])
+            self.assertEqual(list(msg), months)
+
         # mediawiki_messages must be given a list; using a string will split it
         with self.subTest(messages='about'):
             self.assertRaises(KeyError, self.site.mediawiki_messages, 'about')

--
To view, visit https://gerrit.wikimedia.org/r/c/pywikibot/core/+/661016
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: I30b229c53ae3d2fa088ddd27165425d38f3c3007
Gerrit-Change-Number: 661016
Gerrit-PatchSet: 4
Gerrit-Owner: Xqt <[email protected]>
Gerrit-Reviewer: Tacsipacsi <[email protected]>
Gerrit-Reviewer: Xqt <[email protected]>
Gerrit-Reviewer: jenkins-bot
Gerrit-MessageType: merged
_______________________________________________
Pywikibot-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/pywikibot-commits

Reply via email to