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