summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2013-01-31 13:57:51 (GMT)
committerSerhiy Storchaka <storchaka@gmail.com>2013-01-31 13:57:51 (GMT)
commit8d510cd6e117b4ec827e4a26947ea76971a55763 (patch)
tree926360993820093f362ae131e1738a72ce1dcc34
parent0be506a5baf8b86c519e6074af43a0f91af603c6 (diff)
downloadcpython-8d510cd6e117b4ec827e4a26947ea76971a55763.zip
cpython-8d510cd6e117b4ec827e4a26947ea76971a55763.tar.gz
cpython-8d510cd6e117b4ec827e4a26947ea76971a55763.tar.bz2
Issue #17049: Localized calendar methods now return unicode if a locale
includes an encoding and the result string contains month or weekday (was regression from Python 2.6).
-rw-r--r--Lib/calendar.py1
-rw-r--r--Lib/test/test_calendar.py18
-rw-r--r--Misc/NEWS4
3 files changed, 20 insertions, 3 deletions
diff --git a/Lib/calendar.py b/Lib/calendar.py
index 2329578..441b2f5 100644
--- a/Lib/calendar.py
+++ b/Lib/calendar.py
@@ -492,6 +492,7 @@ class TimeEncoding:
def __enter__(self):
self.oldlocale = _locale.getlocale(_locale.LC_TIME)
_locale.setlocale(_locale.LC_TIME, self.locale)
+ return _locale.getlocale(_locale.LC_TIME)[1]
def __exit__(self, *args):
_locale.setlocale(_locale.LC_TIME, self.oldlocale)
diff --git a/Lib/test/test_calendar.py b/Lib/test/test_calendar.py
index 0f91d29..40fb76d 100644
--- a/Lib/test/test_calendar.py
+++ b/Lib/test/test_calendar.py
@@ -255,11 +255,23 @@ class CalendarTestCase(unittest.TestCase):
# (it is still not thread-safe though)
old_october = calendar.TextCalendar().formatmonthname(2010, 10, 10)
try:
- calendar.LocaleTextCalendar(locale='').formatmonthname(2010, 10, 10)
+ cal = calendar.LocaleTextCalendar(locale='')
+ local_weekday = cal.formatweekday(1, 10)
+ local_month = cal.formatmonthname(2010, 10, 10)
except locale.Error:
# cannot set the system default locale -- skip rest of test
- return
- calendar.LocaleHTMLCalendar(locale='').formatmonthname(2010, 10)
+ raise unittest.SkipTest('cannot set the system default locale')
+ # should be encodable
+ local_weekday.encode('utf-8')
+ local_month.encode('utf-8')
+ self.assertEqual(len(local_weekday), 10)
+ self.assertGreaterEqual(len(local_month), 10)
+ cal = calendar.LocaleHTMLCalendar(locale='')
+ local_weekday = cal.formatweekday(1)
+ local_month = cal.formatmonthname(2010, 10)
+ # should be encodable
+ local_weekday.encode('utf-8')
+ local_month.encode('utf-8')
new_october = calendar.TextCalendar().formatmonthname(2010, 10, 10)
self.assertEqual(old_october, new_october)
diff --git a/Misc/NEWS b/Misc/NEWS
index 34e4bda..e4d429f 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -202,6 +202,10 @@ Core and Builtins
Library
-------
+- Issue #17049: Localized calendar methods now return unicode if a locale
+ includes an encoding and the result string contains month or weekday (was
+ regression from Python 2.6).
+
- Issue #4844: ZipFile now raises BadZipfile when opens a ZIP file with an
incomplete "End of Central Directory" record. Original patch by Guilherme
Polo and Alan McIntyre.