mirror of https://github.com/python/cpython
Merged revisions 85728 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k ........ r85728 | georg.brandl | 2010-10-19 20:54:25 +0200 (Di, 19 Okt 2010) | 1 line #10092: Properly reset locale in Locale*Calendar classes. The context manager was buggy because setlocale() returns the *new* locale, not the old. Also add a test for this. ........
This commit is contained in:
parent
b8d0e365e2
commit
79f096a7aa
|
@ -182,9 +182,9 @@ it's the base calendar for all computations.
|
||||||
.. class:: LocaleTextCalendar([firstweekday[, locale]])
|
.. class:: LocaleTextCalendar([firstweekday[, locale]])
|
||||||
|
|
||||||
This subclass of :class:`TextCalendar` can be passed a locale name in the
|
This subclass of :class:`TextCalendar` can be passed a locale name in the
|
||||||
constructor and will return month and weekday names in the specified
|
constructor and will return month and weekday names in the specified locale.
|
||||||
locale. If this locale includes an encoding all strings containing month and
|
If this locale includes an encoding all strings containing month and weekday
|
||||||
weekday names will be returned as unicode.
|
names will be returned as unicode.
|
||||||
|
|
||||||
.. versionadded:: 2.5
|
.. versionadded:: 2.5
|
||||||
|
|
||||||
|
@ -198,6 +198,13 @@ it's the base calendar for all computations.
|
||||||
|
|
||||||
.. versionadded:: 2.5
|
.. versionadded:: 2.5
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
The :meth:`formatweekday` and :meth:`formatmonthname` methods of these two
|
||||||
|
classes temporarily change the current locale to the given *locale*. Because
|
||||||
|
the current locale is a process-wide setting, they are not thread-safe.
|
||||||
|
|
||||||
|
|
||||||
For simple text calendars this module provides the following functions.
|
For simple text calendars this module provides the following functions.
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -486,8 +486,8 @@ class TimeEncoding:
|
||||||
self.locale = locale
|
self.locale = locale
|
||||||
|
|
||||||
def __enter__(self):
|
def __enter__(self):
|
||||||
self.oldlocale = _locale.setlocale(_locale.LC_TIME, self.locale)
|
self.oldlocale = _locale.getlocale(_locale.LC_TIME)
|
||||||
return _locale.getlocale(_locale.LC_TIME)[1]
|
_locale.setlocale(_locale.LC_TIME, self.locale)
|
||||||
|
|
||||||
def __exit__(self, *args):
|
def __exit__(self, *args):
|
||||||
_locale.setlocale(_locale.LC_TIME, self.oldlocale)
|
_locale.setlocale(_locale.LC_TIME, self.oldlocale)
|
||||||
|
|
|
@ -2,6 +2,7 @@ import calendar
|
||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
from test import test_support
|
from test import test_support
|
||||||
|
import locale
|
||||||
|
|
||||||
|
|
||||||
result_2004_text = """
|
result_2004_text = """
|
||||||
|
@ -248,6 +249,22 @@ class CalendarTestCase(unittest.TestCase):
|
||||||
# verify it "acts like a sequence" in two forms of iteration
|
# verify it "acts like a sequence" in two forms of iteration
|
||||||
self.assertEqual(value[::-1], list(reversed(value)))
|
self.assertEqual(value[::-1], list(reversed(value)))
|
||||||
|
|
||||||
|
def test_localecalendars(self):
|
||||||
|
# ensure that Locale{Text,HTML}Calendar resets the locale properly
|
||||||
|
# (it is still not thread-safe though)
|
||||||
|
try:
|
||||||
|
def_locale = locale.getdefaultlocale()
|
||||||
|
except locale.Error:
|
||||||
|
# cannot determine a default locale -- skip test
|
||||||
|
return
|
||||||
|
old_october = calendar.TextCalendar().formatmonthname(2010, 10, 10)
|
||||||
|
calendar.LocaleTextCalendar(
|
||||||
|
locale=def_locale).formatmonthname(2010, 10, 10)
|
||||||
|
calendar.LocaleHTMLCalendar(
|
||||||
|
locale=def_locale).formatmonthname(2010, 10)
|
||||||
|
new_october = calendar.TextCalendar().formatmonthname(2010, 10, 10)
|
||||||
|
self.assertEquals(old_october, new_october)
|
||||||
|
|
||||||
|
|
||||||
class MonthCalendarTestCase(unittest.TestCase):
|
class MonthCalendarTestCase(unittest.TestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
|
|
|
@ -13,6 +13,8 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #10092: Properly reset locale in calendar.Locale*Calendar classes.
|
||||||
|
|
||||||
- Issue #10459: Update CJK character names to Unicode 5.2.
|
- Issue #10459: Update CJK character names to Unicode 5.2.
|
||||||
|
|
||||||
- Issue #6098: Don't claim DOM level 3 conformance in minidom.
|
- Issue #6098: Don't claim DOM level 3 conformance in minidom.
|
||||||
|
|
Loading…
Reference in New Issue