From 7d22e855505bb1cd191b3ea224e828b084c0d699 Mon Sep 17 00:00:00 2001
From: Hugo van Kemenade <hugovk@users.noreply.github.com>
Date: Fri, 27 Oct 2023 16:08:45 +0300
Subject: [3.12] gh-111187: Postpone removal version for
 locale.getdefaultlocale() to 3.15 (GH-111188) (#111323)

---
 Doc/library/locale.rst                                      |  2 +-
 Doc/whatsnew/3.11.rst                                       |  2 +-
 Doc/whatsnew/3.12.rst                                       | 13 ++++++++++++-
 Lib/locale.py                                               | 10 ++++++----
 .../Library/2023-10-22-21-28-05.gh-issue-111187._W11Ab.rst  |  1 +
 5 files changed, 21 insertions(+), 7 deletions(-)
 create mode 100644 Misc/NEWS.d/next/Library/2023-10-22-21-28-05.gh-issue-111187._W11Ab.rst

diff --git a/Doc/library/locale.rst b/Doc/library/locale.rst
index f2abb363..0817ae5 100644
--- a/Doc/library/locale.rst
+++ b/Doc/library/locale.rst
@@ -303,7 +303,7 @@ The :mod:`locale` module defines the following exception and functions:
    *language code* and *encoding* may be ``None`` if their values cannot be
    determined.
 
-   .. deprecated-removed:: 3.11 3.13
+   .. deprecated-removed:: 3.11 3.15
 
 
 .. function:: getlocale(category=LC_CTYPE)
diff --git a/Doc/whatsnew/3.11.rst b/Doc/whatsnew/3.11.rst
index 88eaee9..c28093a 100644
--- a/Doc/whatsnew/3.11.rst
+++ b/Doc/whatsnew/3.11.rst
@@ -1798,7 +1798,7 @@ Standard Library
   * :func:`importlib.resources.path`
 
 * The :func:`locale.getdefaultlocale` function is deprecated and will be
-  removed in Python 3.13. Use :func:`locale.setlocale`,
+  removed in Python 3.15. Use :func:`locale.setlocale`,
   :func:`locale.getpreferredencoding(False) <locale.getpreferredencoding>` and
   :func:`locale.getlocale` functions instead.
   (Contributed by Victor Stinner in :gh:`90817`.)
diff --git a/Doc/whatsnew/3.12.rst b/Doc/whatsnew/3.12.rst
index 18fca00..99e566f 100644
--- a/Doc/whatsnew/3.12.rst
+++ b/Doc/whatsnew/3.12.rst
@@ -1360,7 +1360,7 @@ Other modules:
 APIs:
 
 * :class:`!configparser.LegacyInterpolation` (:gh:`90765`)
-* :func:`locale.getdefaultlocale` (:gh:`90817`)
+* ``locale.resetlocale()`` (:gh:`90817`)
 * :meth:`!turtle.RawTurtle.settiltangle` (:gh:`50096`)
 * :func:`!unittest.findTestCases` (:gh:`50096`)
 * :func:`!unittest.getTestCaseNames` (:gh:`50096`)
@@ -1429,6 +1429,17 @@ and will be removed in Python 3.14.
 
 * The ``co_lnotab`` attribute of code objects.
 
+Pending Removal in Python 3.15
+------------------------------
+
+The following APIs have been deprecated
+and will be removed in Python 3.15.
+
+APIs:
+
+* :func:`locale.getdefaultlocale` (:gh:`90817`)
+
+
 Pending Removal in Future Versions
 ----------------------------------
 
diff --git a/Lib/locale.py b/Lib/locale.py
index e94f0d1..4965c97 100644
--- a/Lib/locale.py
+++ b/Lib/locale.py
@@ -541,12 +541,14 @@ def getdefaultlocale(envvars=('LC_ALL', 'LC_CTYPE', 'LANG', 'LANGUAGE')):
     """
 
     import warnings
-    warnings.warn(
-        "Use setlocale(), getencoding() and getlocale() instead",
-        DeprecationWarning, stacklevel=2
-    )
+    warnings._deprecated(
+        "locale.getdefaultlocale",
+        "{name!r} is deprecated and slated for removal in Python {remove}. "
+        "Use setlocale(), getencoding() and getlocale() instead.",
+        remove=(3, 15))
     return _getdefaultlocale(envvars)
 
+
 def _getdefaultlocale(envvars=('LC_ALL', 'LC_CTYPE', 'LANG', 'LANGUAGE')):
     try:
         # check if it's supported by the _locale module
diff --git a/Misc/NEWS.d/next/Library/2023-10-22-21-28-05.gh-issue-111187._W11Ab.rst b/Misc/NEWS.d/next/Library/2023-10-22-21-28-05.gh-issue-111187._W11Ab.rst
new file mode 100644
index 0000000..dc24243
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2023-10-22-21-28-05.gh-issue-111187._W11Ab.rst
@@ -0,0 +1 @@
+Postpone removal version for locale.getdefaultlocale() to Python 3.15.
-- 
cgit v0.12