]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-46659: calendar uses locale.getlocale() (GH-31166)
authorVictor Stinner <vstinner@python.org>
Mon, 7 Feb 2022 23:24:09 +0000 (00:24 +0100)
committerGitHub <noreply@github.com>
Mon, 7 Feb 2022 23:24:09 +0000 (00:24 +0100)
The calendar.LocaleTextCalendar and calendar.LocaleHTMLCalendar
classes module now use locale.getlocale(), instead of using
locale.getdefaultlocale(), if no locale is specified.

Doc/library/calendar.rst
Doc/whatsnew/3.11.rst
Lib/calendar.py
Lib/test/test_calendar.py
Misc/NEWS.d/next/Library/2022-02-06-19-13-02.bpo-46659.q-vNL9.rst [new file with mode: 0644]

index b667c42e708fa155f638519740b66020c6faa32d..86f5b142a6c349af55ce3d6a0cf1b997b9c5cc4b 100644 (file)
@@ -290,7 +290,7 @@ interpreted as prescribed by the ISO 8601 standard.  Year 0 is 1 BC, year -1 is
 .. note::
 
    The :meth:`formatweekday` and :meth:`formatmonthname` methods of these two
-   classes temporarily change the current locale to the given *locale*.  Because
+   classes temporarily change the ``LC_TIME`` locale to the given *locale*.  Because
    the current locale is a process-wide setting, they are not thread-safe.
 
 
index c1f267a4126a6ebd40e25dc1f5930a6025e0b0eb..5738745ba1323b0ced761a412728f827487f81ea 100644 (file)
@@ -591,6 +591,12 @@ Changes in the Python API
   of sorting simply isn't well-defined in the absence of a total ordering
   on list elements.
 
+* :mod:`calendar`: The :class:`calendar.LocaleTextCalendar` and
+  :class:`calendar.LocaleHTMLCalendar` classes now use
+  :func:`locale.getlocale`, instead of using :func:`locale.getdefaultlocale`,
+  if no locale is specified.
+  (Contributed by Victor Stinner in :issue:`46659`.)
+
 
 Build Changes
 =============
index 06c65a80cd80fc06b460d41f9e18ac2a8593947d..361898dc8161edb165a62014a83675eff7de9594 100644 (file)
@@ -566,7 +566,7 @@ class LocaleTextCalendar(TextCalendar):
     def __init__(self, firstweekday=0, locale=None):
         TextCalendar.__init__(self, firstweekday)
         if locale is None:
-            locale = _locale.getdefaultlocale()
+            locale = _locale.getlocale(_locale.LC_TIME)
         self.locale = locale
 
     def formatweekday(self, day, width):
@@ -586,7 +586,7 @@ class LocaleHTMLCalendar(HTMLCalendar):
     def __init__(self, firstweekday=0, locale=None):
         HTMLCalendar.__init__(self, firstweekday)
         if locale is None:
-            locale = _locale.getdefaultlocale()
+            locale = _locale.getlocale(_locale.LC_TIME)
         self.locale = locale
 
     def formatweekday(self, day):
index 39094ad6fd9abd1172bac6bb6117f536ecb5a3c2..e6bd4d03e0f63f5168730ec27d5643e75fecbb17 100644 (file)
@@ -859,7 +859,8 @@ class CommandLineTestCase(unittest.TestCase):
         self.assertFailure('-L')
         self.assertFailure('--locale')
         self.assertFailure('-L', 'en')
-        lang, enc = locale.getdefaultlocale()
+
+        lang, enc = locale.getlocale()
         lang = lang or 'C'
         enc = enc or 'UTF-8'
         try:
diff --git a/Misc/NEWS.d/next/Library/2022-02-06-19-13-02.bpo-46659.q-vNL9.rst b/Misc/NEWS.d/next/Library/2022-02-06-19-13-02.bpo-46659.q-vNL9.rst
new file mode 100644 (file)
index 0000000..2e30de1
--- /dev/null
@@ -0,0 +1,4 @@
+The :class:`calendar.LocaleTextCalendar` and
+:class:`calendar.LocaleHTMLCalendar` classes now use :func:`locale.getlocale`,
+instead of using :func:`locale.getdefaultlocale`, if no locale is specified.
+Patch by Victor Stinner.