diff --git a/Makefile b/Makefile
index 871a5aa93..d63fb916d 100644
--- a/Makefile
+++ b/Makefile
@@ -19,7 +19,7 @@
 # test build, we're building with the .rst files that generated our
 # .po files.
 
-CPYTHON_CURRENT_COMMIT := dc3c075d9eebc82c63ec54bb3f217d67b2aea914
+CPYTHON_CURRENT_COMMIT := aeb3a6f61af53ed3fbf31f0b3704f49b71ac553c
 LANGUAGE := tr
 BRANCH := 3.12
 
diff --git a/about.po b/about.po
index d4535b6b1..04d2cdbd5 100644
--- a/about.po
+++ b/about.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-01-04 03:14+0300\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: 2022-12-28 16:16-0500\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -18,19 +18,22 @@ msgstr ""
 "X-Generator: Poedit 3.2.2\n"
 
 #: about.rst:3
-msgid "About these documents"
+#, fuzzy
+msgid "About this documentation"
 msgstr "Bu dokümanlar hakkında"
 
 #: about.rst:6
+#, fuzzy
 msgid ""
-"These documents are generated from `reStructuredText`_ sources by `Sphinx`_, "
-"a document processor specifically written for the Python documentation."
+"Python's documentation is generated from `reStructuredText`_ sources using "
+"`Sphinx`_, a documentation generator originally created for Python and now "
+"maintained as an independent project."
 msgstr ""
 "Bu dokümanlar, Python dokümanları için özel olarak yazılmış bir doküman "
 "işlemcisi olan `Sphinx`_ tarafından `reStructuredText`_ kaynaklarından "
 "oluşturulur."
 
-#: about.rst:15
+#: about.rst:16
 msgid ""
 "Development of the documentation and its toolchain is an entirely volunteer "
 "effort, just like Python itself.  If you want to contribute, please take a "
@@ -42,19 +45,20 @@ msgstr ""
 "yapacağınıza ilişkin bilgi için lütfen :ref:`reporting-bugs` sayfasına göz "
 "atın.  Yeni gönüllülere her zaman açığız!"
 
-#: about.rst:20
+#: about.rst:21
 msgid "Many thanks go to:"
 msgstr "Destekleri için teşekkürler:"
 
-#: about.rst:22
+#: about.rst:23
+#, fuzzy
 msgid ""
 "Fred L. Drake, Jr., the creator of the original Python documentation toolset "
-"and writer of much of the content;"
+"and author of much of the content;"
 msgstr ""
 "Fred L. Drake, Jr., orijinal Python dokümantasyon araç setinin yaratıcısı ve "
 "içeriğin çoğunun yazarı;"
 
-#: about.rst:24
+#: about.rst:25
 msgid ""
 "the `Docutils <https://docutils.sourceforge.io/>`_ project for creating "
 "reStructuredText and the Docutils suite;"
@@ -62,7 +66,7 @@ msgstr ""
 "`Docutils <https://docutils.sourceforge.io/>`_ projesi, reStructuredText ve "
 "Docutils paketini oluşturdukları için;"
 
-#: about.rst:26
+#: about.rst:27
 msgid ""
 "Fredrik Lundh for his Alternative Python Reference project from which Sphinx "
 "got many good ideas."
@@ -70,11 +74,12 @@ msgstr ""
 "Fredrik Lundh, Sphinx'in pek çok iyi fikir edindiği Alternatif Python "
 "Referansı projesi için."
 
-#: about.rst:31
-msgid "Contributors to the Python Documentation"
+#: about.rst:32
+#, fuzzy
+msgid "Contributors to the Python documentation"
 msgstr "Python Dokümantasyonuna Katkıda Bulunanlar"
 
-#: about.rst:33
+#: about.rst:34
 msgid ""
 "Many people have contributed to the Python language, the Python standard "
 "library, and the Python documentation.  See :source:`Misc/ACKS` in the "
@@ -84,7 +89,7 @@ msgstr ""
 "dokümantasyonuna katkıda bulunmuştur.  Katkıda bulunanların kısmi bir "
 "listesi için Python kaynak dağıtımında :source:`Misc/ACKS` dosyasına bakın."
 
-#: about.rst:37
+#: about.rst:38
 msgid ""
 "It is only with the input and contributions of the Python community that "
 "Python has such wonderful documentation -- Thank You!"
diff --git a/c-api/allocation.po b/c-api/allocation.po
index 8b43cf8ba..542e3d6f9 100644
--- a/c-api/allocation.po
+++ b/c-api/allocation.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-09-18 19:05+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -23,19 +23,17 @@ msgstr ""
 #: c-api/allocation.rst:17
 msgid ""
 "Initialize a newly allocated object *op* with its type and initial "
-"reference.  Returns the initialized object.  If *type* indicates that the "
-"object participates in the cyclic garbage detector, it is added to the "
-"detector's set of observed objects. Other fields of the object are not "
-"affected."
+"reference.  Returns the initialized object.  Other fields of the object are "
+"not affected."
 msgstr ""
 
-#: c-api/allocation.rst:26
+#: c-api/allocation.rst:24
 msgid ""
 "This does everything :c:func:`PyObject_Init` does, and also initializes the "
 "length information for a variable-size object."
 msgstr ""
 
-#: c-api/allocation.rst:32
+#: c-api/allocation.rst:30
 msgid ""
 "Allocate a new Python object using the C structure type *TYPE* and the "
 "Python type object *typeobj* (``PyTypeObject*``). Fields not defined by the "
@@ -45,7 +43,14 @@ msgid ""
 "tp_basicsize` field of the type object."
 msgstr ""
 
-#: c-api/allocation.rst:43
+#: c-api/allocation.rst:38
+msgid ""
+"Note that this function is unsuitable if *typeobj* has :c:macro:"
+"`Py_TPFLAGS_HAVE_GC` set. For such objects, use :c:func:`PyObject_GC_New` "
+"instead."
+msgstr ""
+
+#: c-api/allocation.rst:45
 msgid ""
 "Allocate a new Python object using the C structure type *TYPE* and the "
 "Python type object *typeobj* (``PyTypeObject*``). Fields not defined by the "
@@ -58,7 +63,14 @@ msgid ""
 "management efficiency."
 msgstr ""
 
-#: c-api/allocation.rst:57
+#: c-api/allocation.rst:56
+msgid ""
+"Note that this function is unsuitable if *typeobj* has :c:macro:"
+"`Py_TPFLAGS_HAVE_GC` set. For such objects, use :c:func:`PyObject_GC_NewVar` "
+"instead."
+msgstr ""
+
+#: c-api/allocation.rst:63
 msgid ""
 "Releases memory allocated to an object using :c:macro:`PyObject_New` or :c:"
 "macro:`PyObject_NewVar`.  This is normally called from the :c:member:"
@@ -67,17 +79,17 @@ msgid ""
 "no longer a valid Python object."
 msgstr ""
 
-#: c-api/allocation.rst:66
+#: c-api/allocation.rst:72
 msgid ""
 "Object which is visible in Python as ``None``.  This should only be accessed "
 "using the :c:macro:`Py_None` macro, which evaluates to a pointer to this "
 "object."
 msgstr ""
 
-#: c-api/allocation.rst:73
+#: c-api/allocation.rst:79
 msgid ":c:func:`PyModule_Create`"
 msgstr ""
 
-#: c-api/allocation.rst:74
+#: c-api/allocation.rst:80
 msgid "To allocate and create extension modules."
 msgstr ""
diff --git a/c-api/arg.po b/c-api/arg.po
index 3364d0bad..d361e7e7f 100644
--- a/c-api/arg.po
+++ b/c-api/arg.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -22,7 +22,7 @@ msgstr ""
 
 #: c-api/arg.rst:8
 msgid ""
-"These functions are useful when creating your own extensions functions and "
+"These functions are useful when creating your own extension functions and "
 "methods.  Additional information and examples are available in :ref:"
 "`extending-index`."
 msgstr ""
@@ -175,7 +175,7 @@ msgid ""
 "encoding."
 msgstr ""
 
-#: c-api/arg.rst:546
+#: c-api/arg.rst:558
 msgid "``z`` (:class:`str` or ``None``) [const char \\*]"
 msgstr ""
 
@@ -414,162 +414,179 @@ msgid "Numbers"
 msgstr ""
 
 #: c-api/arg.rst:232
+msgid ""
+"These formats allow representing Python numbers or single characters as C "
+"numbers. Formats that require :class:`int`, :class:`float` or :class:"
+"`complex` can also use the corresponding special methods :meth:`~object."
+"__index__`, :meth:`~object.__float__` or :meth:`~object.__complex__` to "
+"convert the Python object to the required type."
+msgstr ""
+
+#: c-api/arg.rst:238
+msgid ""
+"For signed integer formats, :exc:`OverflowError` is raised if the value is "
+"out of range for the C type. For unsigned integer formats, no range checking "
+"is done --- the most significant bits are silently truncated when the "
+"receiving field is too small to receive the value."
+msgstr ""
+
+#: c-api/arg.rst:244
 msgid "``b`` (:class:`int`) [unsigned char]"
 msgstr ""
 
-#: c-api/arg.rst:233
+#: c-api/arg.rst:245
 msgid ""
-"Convert a nonnegative Python integer to an unsigned tiny int, stored in a C :"
-"c:expr:`unsigned char`."
+"Convert a nonnegative Python integer to an unsigned tiny integer, stored in "
+"a C :c:expr:`unsigned char`."
 msgstr ""
 
-#: c-api/arg.rst:580
+#: c-api/arg.rst:592
 msgid "``B`` (:class:`int`) [unsigned char]"
 msgstr ""
 
-#: c-api/arg.rst:237
+#: c-api/arg.rst:249
 msgid ""
-"Convert a Python integer to a tiny int without overflow checking, stored in "
-"a C :c:expr:`unsigned char`."
+"Convert a Python integer to a tiny integer without overflow checking, stored "
+"in a C :c:expr:`unsigned char`."
 msgstr ""
 
-#: c-api/arg.rst:574
+#: c-api/arg.rst:586
 msgid "``h`` (:class:`int`) [short int]"
 msgstr ""
 
-#: c-api/arg.rst:241
+#: c-api/arg.rst:253
 msgid "Convert a Python integer to a C :c:expr:`short int`."
 msgstr ""
 
-#: c-api/arg.rst:583
+#: c-api/arg.rst:595
 msgid "``H`` (:class:`int`) [unsigned short int]"
 msgstr ""
 
-#: c-api/arg.rst:244
+#: c-api/arg.rst:256
 msgid ""
 "Convert a Python integer to a C :c:expr:`unsigned short int`, without "
 "overflow checking."
 msgstr ""
 
-#: c-api/arg.rst:568
+#: c-api/arg.rst:580
 msgid "``i`` (:class:`int`) [int]"
 msgstr ""
 
-#: c-api/arg.rst:248
+#: c-api/arg.rst:260
 msgid "Convert a Python integer to a plain C :c:expr:`int`."
 msgstr ""
 
-#: c-api/arg.rst:586
+#: c-api/arg.rst:598
 msgid "``I`` (:class:`int`) [unsigned int]"
 msgstr ""
 
-#: c-api/arg.rst:251
+#: c-api/arg.rst:263
 msgid ""
 "Convert a Python integer to a C :c:expr:`unsigned int`, without overflow "
 "checking."
 msgstr ""
 
-#: c-api/arg.rst:577
+#: c-api/arg.rst:589
 msgid "``l`` (:class:`int`) [long int]"
 msgstr ""
 
-#: c-api/arg.rst:255
+#: c-api/arg.rst:267
 msgid "Convert a Python integer to a C :c:expr:`long int`."
 msgstr ""
 
-#: c-api/arg.rst:589
+#: c-api/arg.rst:601
 msgid "``k`` (:class:`int`) [unsigned long]"
 msgstr ""
 
-#: c-api/arg.rst:258
+#: c-api/arg.rst:270
 msgid ""
 "Convert a Python integer to a C :c:expr:`unsigned long` without overflow "
 "checking."
 msgstr ""
 
-#: c-api/arg.rst:592
+#: c-api/arg.rst:604
 msgid "``L`` (:class:`int`) [long long]"
 msgstr ""
 
-#: c-api/arg.rst:262
+#: c-api/arg.rst:274
 msgid "Convert a Python integer to a C :c:expr:`long long`."
 msgstr ""
 
-#: c-api/arg.rst:595
+#: c-api/arg.rst:607
 msgid "``K`` (:class:`int`) [unsigned long long]"
 msgstr ""
 
-#: c-api/arg.rst:265
+#: c-api/arg.rst:277
 msgid ""
 "Convert a Python integer to a C :c:expr:`unsigned long long` without "
 "overflow checking."
 msgstr ""
 
-#: c-api/arg.rst:598
+#: c-api/arg.rst:610
 msgid "``n`` (:class:`int`) [:c:type:`Py_ssize_t`]"
 msgstr ""
 
-#: c-api/arg.rst:269
+#: c-api/arg.rst:281
 msgid "Convert a Python integer to a C :c:type:`Py_ssize_t`."
 msgstr ""
 
-#: c-api/arg.rst:271
+#: c-api/arg.rst:283
 msgid "``c`` (:class:`bytes` or :class:`bytearray` of length 1) [char]"
 msgstr ""
 
-#: c-api/arg.rst:272
+#: c-api/arg.rst:284
 msgid ""
 "Convert a Python byte, represented as a :class:`bytes` or :class:`bytearray` "
 "object of length 1, to a C :c:expr:`char`."
 msgstr ""
 
-#: c-api/arg.rst:275
+#: c-api/arg.rst:287
 msgid "Allow :class:`bytearray` objects."
 msgstr ""
 
-#: c-api/arg.rst:605
+#: c-api/arg.rst:617
 msgid "``C`` (:class:`str` of length 1) [int]"
 msgstr ""
 
-#: c-api/arg.rst:279
+#: c-api/arg.rst:291
 msgid ""
 "Convert a Python character, represented as a :class:`str` object of length "
 "1, to a C :c:expr:`int`."
 msgstr ""
 
-#: c-api/arg.rst:612
+#: c-api/arg.rst:624
 msgid "``f`` (:class:`float`) [float]"
 msgstr ""
 
-#: c-api/arg.rst:283
+#: c-api/arg.rst:295
 msgid "Convert a Python floating-point number to a C :c:expr:`float`."
 msgstr ""
 
-#: c-api/arg.rst:609
+#: c-api/arg.rst:621
 msgid "``d`` (:class:`float`) [double]"
 msgstr ""
 
-#: c-api/arg.rst:286
+#: c-api/arg.rst:298
 msgid "Convert a Python floating-point number to a C :c:expr:`double`."
 msgstr ""
 
-#: c-api/arg.rst:288
+#: c-api/arg.rst:300
 msgid "``D`` (:class:`complex`) [Py_complex]"
 msgstr ""
 
-#: c-api/arg.rst:289
+#: c-api/arg.rst:301
 msgid "Convert a Python complex number to a C :c:type:`Py_complex` structure."
 msgstr ""
 
-#: c-api/arg.rst:292
+#: c-api/arg.rst:304
 msgid "Other objects"
 msgstr ""
 
-#: c-api/arg.rst:618
+#: c-api/arg.rst:630
 msgid "``O`` (object) [PyObject \\*]"
 msgstr ""
 
-#: c-api/arg.rst:295
+#: c-api/arg.rst:307
 msgid ""
 "Store a Python object (without any conversion) in a C object pointer.  The C "
 "program thus receives the actual object that was passed.  A new :term:"
@@ -577,11 +594,11 @@ msgid ""
 "not increased). The pointer stored is not ``NULL``."
 msgstr ""
 
-#: c-api/arg.rst:301
+#: c-api/arg.rst:313
 msgid "``O!`` (object) [*typeobject*, PyObject \\*]"
 msgstr ""
 
-#: c-api/arg.rst:302
+#: c-api/arg.rst:314
 msgid ""
 "Store a Python object in a C object pointer.  This is similar to ``O``, but "
 "takes two C arguments: the first is the address of a Python type object, the "
@@ -590,11 +607,11 @@ msgid ""
 "required type, :exc:`TypeError` is raised."
 msgstr ""
 
-#: c-api/arg.rst:636
-msgid "``O&`` (object) [*converter*, *anything*]"
+#: c-api/arg.rst:322
+msgid "``O&`` (object) [*converter*, *address*]"
 msgstr ""
 
-#: c-api/arg.rst:311
+#: c-api/arg.rst:323
 msgid ""
 "Convert a Python object to a C variable through a *converter* function.  "
 "This takes two arguments: the first is a function, the second is the address "
@@ -602,11 +619,11 @@ msgid ""
 "*converter* function in turn is called as follows::"
 msgstr ""
 
-#: c-api/arg.rst:316
+#: c-api/arg.rst:328
 msgid "status = converter(object, address);"
 msgstr ""
 
-#: c-api/arg.rst:318
+#: c-api/arg.rst:330
 msgid ""
 "where *object* is the Python object to be converted and *address* is the :c:"
 "expr:`void*` argument that was passed to the ``PyArg_Parse*`` function. The "
@@ -616,24 +633,30 @@ msgid ""
 "unmodified."
 msgstr ""
 
-#: c-api/arg.rst:324
+#: c-api/arg.rst:339
 msgid ""
-"If the *converter* returns ``Py_CLEANUP_SUPPORTED``, it may get called a "
-"second time if the argument parsing eventually fails, giving the converter a "
-"chance to release any memory that it had already allocated. In this second "
-"call, the *object* parameter will be ``NULL``; *address* will have the same "
-"value as in the original call."
+"If the *converter* returns :c:macro:`!Py_CLEANUP_SUPPORTED`, it may get "
+"called a second time if the argument parsing eventually fails, giving the "
+"converter a chance to release any memory that it had already allocated. In "
+"this second call, the *object* parameter will be ``NULL``; *address* will "
+"have the same value as in the original call."
 msgstr ""
 
-#: c-api/arg.rst:330
-msgid "``Py_CLEANUP_SUPPORTED`` was added."
+#: c-api/arg.rst:345
+msgid ""
+"Examples of converters: :c:func:`PyUnicode_FSConverter` and :c:func:"
+"`PyUnicode_FSDecoder`."
+msgstr ""
+
+#: c-api/arg.rst:348
+msgid ":c:macro:`!Py_CLEANUP_SUPPORTED` was added."
 msgstr ""
 
-#: c-api/arg.rst:333
+#: c-api/arg.rst:351
 msgid "``p`` (:class:`bool`) [int]"
 msgstr ""
 
-#: c-api/arg.rst:334
+#: c-api/arg.rst:352
 msgid ""
 "Tests the value passed in for truth (a boolean **p**\\ redicate) and "
 "converts the result to its equivalent C true/false integer value. Sets the "
@@ -642,37 +665,28 @@ msgid ""
 "how Python tests values for truth."
 msgstr ""
 
-#: c-api/arg.rst:642
+#: c-api/arg.rst:654
 msgid "``(items)`` (:class:`tuple`) [*matching-items*]"
 msgstr ""
 
-#: c-api/arg.rst:343
+#: c-api/arg.rst:361
 msgid ""
 "The object must be a Python sequence whose length is the number of format "
 "units in *items*.  The C arguments must correspond to the individual format "
 "units in *items*.  Format units for sequences may be nested."
 msgstr ""
 
-#: c-api/arg.rst:347
-msgid ""
-"It is possible to pass \"long\" integers (integers whose value exceeds the "
-"platform's :c:macro:`LONG_MAX`) however no proper range checking is done --- "
-"the most significant bits are silently truncated when the receiving field is "
-"too small to receive the value (actually, the semantics are inherited from "
-"downcasts in C --- your mileage may vary)."
-msgstr ""
-
-#: c-api/arg.rst:353
+#: c-api/arg.rst:365
 msgid ""
 "A few other characters have a meaning in a format string.  These may not "
 "occur inside nested parentheses.  They are:"
 msgstr ""
 
-#: c-api/arg.rst:356
+#: c-api/arg.rst:368
 msgid "``|``"
 msgstr ""
 
-#: c-api/arg.rst:357
+#: c-api/arg.rst:369
 msgid ""
 "Indicates that the remaining arguments in the Python argument list are "
 "optional. The C variables corresponding to optional arguments should be "
@@ -681,11 +695,11 @@ msgid ""
 "corresponding C variable(s)."
 msgstr ""
 
-#: c-api/arg.rst:363
+#: c-api/arg.rst:375
 msgid "``$``"
 msgstr ""
 
-#: c-api/arg.rst:364
+#: c-api/arg.rst:376
 msgid ""
 ":c:func:`PyArg_ParseTupleAndKeywords` only: Indicates that the remaining "
 "arguments in the Python argument list are keyword-only.  Currently, all "
@@ -693,36 +707,36 @@ msgid ""
 "be specified before ``$`` in the format string."
 msgstr ""
 
-#: c-api/arg.rst:372
+#: c-api/arg.rst:384
 msgid "``:``"
 msgstr ""
 
-#: c-api/arg.rst:373
+#: c-api/arg.rst:385
 msgid ""
 "The list of format units ends here; the string after the colon is used as "
 "the function name in error messages (the \"associated value\" of the "
 "exception that :c:func:`PyArg_ParseTuple` raises)."
 msgstr ""
 
-#: c-api/arg.rst:377
+#: c-api/arg.rst:389
 msgid "``;``"
 msgstr ""
 
-#: c-api/arg.rst:378
+#: c-api/arg.rst:390
 msgid ""
 "The list of format units ends here; the string after the semicolon is used "
 "as the error message *instead* of the default error message.  ``:`` and ``;"
 "`` mutually exclude each other."
 msgstr ""
 
-#: c-api/arg.rst:382
+#: c-api/arg.rst:394
 msgid ""
 "Note that any Python object references which are provided to the caller are "
 "*borrowed* references; do not release them (i.e. do not decrement their "
 "reference count)!"
 msgstr ""
 
-#: c-api/arg.rst:386
+#: c-api/arg.rst:398
 msgid ""
 "Additional arguments passed to these functions must be addresses of "
 "variables whose type is determined by the format string; these are used to "
@@ -732,7 +746,7 @@ msgid ""
 "unit in that case."
 msgstr ""
 
-#: c-api/arg.rst:392
+#: c-api/arg.rst:404
 msgid ""
 "For the conversion to succeed, the *arg* object must match the format and "
 "the format must be exhausted.  On success, the ``PyArg_Parse*`` functions "
@@ -742,24 +756,24 @@ msgid ""
 "the following format units are left untouched."
 msgstr ""
 
-#: c-api/arg.rst:401
+#: c-api/arg.rst:413
 msgid "API Functions"
 msgstr ""
 
-#: c-api/arg.rst:405
+#: c-api/arg.rst:417
 msgid ""
 "Parse the parameters of a function that takes only positional parameters "
 "into local variables.  Returns true on success; on failure, it returns false "
 "and raises the appropriate exception."
 msgstr ""
 
-#: c-api/arg.rst:412
+#: c-api/arg.rst:424
 msgid ""
 "Identical to :c:func:`PyArg_ParseTuple`, except that it accepts a va_list "
 "rather than a variable number of arguments."
 msgstr ""
 
-#: c-api/arg.rst:418
+#: c-api/arg.rst:430
 msgid ""
 "Parse the parameters of a function that takes both positional and keyword "
 "parameters into local variables.  The *keywords* argument is a ``NULL``-"
@@ -768,26 +782,26 @@ msgid ""
 "success; on failure, it returns false and raises the appropriate exception."
 msgstr ""
 
-#: c-api/arg.rst:425
+#: c-api/arg.rst:437
 msgid ""
 "Added support for :ref:`positional-only parameters <positional-"
 "only_parameter>`."
 msgstr ""
 
-#: c-api/arg.rst:432
+#: c-api/arg.rst:444
 msgid ""
 "Identical to :c:func:`PyArg_ParseTupleAndKeywords`, except that it accepts a "
 "va_list rather than a variable number of arguments."
 msgstr ""
 
-#: c-api/arg.rst:438
+#: c-api/arg.rst:450
 msgid ""
 "Ensure that the keys in the keywords argument dictionary are strings.  This "
 "is only needed if :c:func:`PyArg_ParseTupleAndKeywords` is not used, since "
 "the latter already does this check."
 msgstr ""
 
-#: c-api/arg.rst:448
+#: c-api/arg.rst:460
 msgid ""
 "Function used to deconstruct the argument lists of \"old-style\" functions "
 "--- these are functions which use the :const:`METH_OLDARGS` parameter "
@@ -798,7 +812,7 @@ msgid ""
 "continue to be used for that purpose."
 msgstr ""
 
-#: c-api/arg.rst:459
+#: c-api/arg.rst:471
 msgid ""
 "A simpler form of parameter retrieval which does not use a format string to "
 "specify the types of the arguments.  Functions which use this method to "
@@ -816,13 +830,13 @@ msgid ""
 "if there was a failure."
 msgstr ""
 
-#: c-api/arg.rst:474
+#: c-api/arg.rst:486
 msgid ""
 "This is an example of the use of this function, taken from the sources for "
 "the :mod:`!_weakref` helper module for weak references::"
 msgstr ""
 
-#: c-api/arg.rst:477
+#: c-api/arg.rst:489
 msgid ""
 "static PyObject *\n"
 "weakref_ref(PyObject *self, PyObject *args)\n"
@@ -838,21 +852,21 @@ msgid ""
 "}"
 msgstr ""
 
-#: c-api/arg.rst:490
+#: c-api/arg.rst:502
 msgid ""
 "The call to :c:func:`PyArg_UnpackTuple` in this example is entirely "
 "equivalent to this call to :c:func:`PyArg_ParseTuple`::"
 msgstr ""
 
-#: c-api/arg.rst:493
+#: c-api/arg.rst:505
 msgid "PyArg_ParseTuple(args, \"O|O:ref\", &object, &callback)"
 msgstr ""
 
-#: c-api/arg.rst:498
+#: c-api/arg.rst:510
 msgid "Building values"
 msgstr ""
 
-#: c-api/arg.rst:502
+#: c-api/arg.rst:514
 msgid ""
 "Create a new value based on a format string similar to those accepted by the "
 "``PyArg_Parse*`` family of functions and a sequence of values.  Returns the "
@@ -860,7 +874,7 @@ msgid ""
 "``NULL`` is returned."
 msgstr ""
 
-#: c-api/arg.rst:507
+#: c-api/arg.rst:519
 msgid ""
 ":c:func:`Py_BuildValue` does not always build a tuple.  It builds a tuple "
 "only if its format string contains two or more format units.  If the format "
@@ -869,7 +883,7 @@ msgid ""
 "it to return a tuple of size 0 or one, parenthesize the format string."
 msgstr ""
 
-#: c-api/arg.rst:513
+#: c-api/arg.rst:525
 msgid ""
 "When memory buffers are passed as parameters to supply data to build "
 "objects, as for the ``s`` and ``s#`` formats, the required data is copied.  "
@@ -880,7 +894,7 @@ msgid ""
 "`Py_BuildValue` returns."
 msgstr ""
 
-#: c-api/arg.rst:521
+#: c-api/arg.rst:533
 msgid ""
 "In the following description, the quoted form is the format unit; the entry "
 "in (round) parentheses is the Python object type that the format unit will "
@@ -888,180 +902,180 @@ msgid ""
 "be passed."
 msgstr ""
 
-#: c-api/arg.rst:525
+#: c-api/arg.rst:537
 msgid ""
 "The characters space, tab, colon and comma are ignored in format strings "
 "(but not within format units such as ``s#``).  This can be used to make long "
 "format strings a tad more readable."
 msgstr ""
 
-#: c-api/arg.rst:529
+#: c-api/arg.rst:541
 msgid "``s`` (:class:`str` or ``None``) [const char \\*]"
 msgstr ""
 
-#: c-api/arg.rst:530
+#: c-api/arg.rst:542
 msgid ""
 "Convert a null-terminated C string to a Python :class:`str` object using "
 "``'utf-8'`` encoding. If the C string pointer is ``NULL``, ``None`` is used."
 msgstr ""
 
-#: c-api/arg.rst:533
+#: c-api/arg.rst:545
 msgid ""
 "``s#`` (:class:`str` or ``None``) [const char \\*, :c:type:`Py_ssize_t`]"
 msgstr ""
 
-#: c-api/arg.rst:534
+#: c-api/arg.rst:546
 msgid ""
 "Convert a C string and its length to a Python :class:`str` object using "
 "``'utf-8'`` encoding. If the C string pointer is ``NULL``, the length is "
 "ignored and ``None`` is returned."
 msgstr ""
 
-#: c-api/arg.rst:538
+#: c-api/arg.rst:550
 msgid "``y`` (:class:`bytes`) [const char \\*]"
 msgstr ""
 
-#: c-api/arg.rst:539
+#: c-api/arg.rst:551
 msgid ""
 "This converts a C string to a Python :class:`bytes` object.  If the C string "
 "pointer is ``NULL``, ``None`` is returned."
 msgstr ""
 
-#: c-api/arg.rst:542
+#: c-api/arg.rst:554
 msgid "``y#`` (:class:`bytes`) [const char \\*, :c:type:`Py_ssize_t`]"
 msgstr ""
 
-#: c-api/arg.rst:543
+#: c-api/arg.rst:555
 msgid ""
 "This converts a C string and its lengths to a Python object.  If the C "
 "string pointer is ``NULL``, ``None`` is returned."
 msgstr ""
 
-#: c-api/arg.rst:563
+#: c-api/arg.rst:575
 msgid "Same as ``s``."
 msgstr ""
 
-#: c-api/arg.rst:549
+#: c-api/arg.rst:561
 msgid ""
 "``z#`` (:class:`str` or ``None``) [const char \\*, :c:type:`Py_ssize_t`]"
 msgstr ""
 
-#: c-api/arg.rst:566
+#: c-api/arg.rst:578
 msgid "Same as ``s#``."
 msgstr ""
 
-#: c-api/arg.rst:552
+#: c-api/arg.rst:564
 msgid "``u`` (:class:`str`) [const wchar_t \\*]"
 msgstr ""
 
-#: c-api/arg.rst:553
+#: c-api/arg.rst:565
 msgid ""
 "Convert a null-terminated :c:type:`wchar_t` buffer of Unicode (UTF-16 or "
 "UCS-4) data to a Python Unicode object.  If the Unicode buffer pointer is "
 "``NULL``, ``None`` is returned."
 msgstr ""
 
-#: c-api/arg.rst:557
+#: c-api/arg.rst:569
 msgid "``u#`` (:class:`str`) [const wchar_t \\*, :c:type:`Py_ssize_t`]"
 msgstr ""
 
-#: c-api/arg.rst:558
+#: c-api/arg.rst:570
 msgid ""
 "Convert a Unicode (UTF-16 or UCS-4) data buffer and its length to a Python "
 "Unicode object.   If the Unicode buffer pointer is ``NULL``, the length is "
 "ignored and ``None`` is returned."
 msgstr ""
 
-#: c-api/arg.rst:562
+#: c-api/arg.rst:574
 msgid "``U`` (:class:`str` or ``None``) [const char \\*]"
 msgstr ""
 
-#: c-api/arg.rst:565
+#: c-api/arg.rst:577
 msgid ""
 "``U#`` (:class:`str` or ``None``) [const char \\*, :c:type:`Py_ssize_t`]"
 msgstr ""
 
-#: c-api/arg.rst:569
+#: c-api/arg.rst:581
 msgid "Convert a plain C :c:expr:`int` to a Python integer object."
 msgstr ""
 
-#: c-api/arg.rst:571
+#: c-api/arg.rst:583
 msgid "``b`` (:class:`int`) [char]"
 msgstr ""
 
-#: c-api/arg.rst:572
+#: c-api/arg.rst:584
 msgid "Convert a plain C :c:expr:`char` to a Python integer object."
 msgstr ""
 
-#: c-api/arg.rst:575
+#: c-api/arg.rst:587
 msgid "Convert a plain C :c:expr:`short int` to a Python integer object."
 msgstr ""
 
-#: c-api/arg.rst:578
+#: c-api/arg.rst:590
 msgid "Convert a C :c:expr:`long int` to a Python integer object."
 msgstr ""
 
-#: c-api/arg.rst:581
+#: c-api/arg.rst:593
 msgid "Convert a C :c:expr:`unsigned char` to a Python integer object."
 msgstr ""
 
-#: c-api/arg.rst:584
+#: c-api/arg.rst:596
 msgid "Convert a C :c:expr:`unsigned short int` to a Python integer object."
 msgstr ""
 
-#: c-api/arg.rst:587
+#: c-api/arg.rst:599
 msgid "Convert a C :c:expr:`unsigned int` to a Python integer object."
 msgstr ""
 
-#: c-api/arg.rst:590
+#: c-api/arg.rst:602
 msgid "Convert a C :c:expr:`unsigned long` to a Python integer object."
 msgstr ""
 
-#: c-api/arg.rst:593
+#: c-api/arg.rst:605
 msgid "Convert a C :c:expr:`long long` to a Python integer object."
 msgstr ""
 
-#: c-api/arg.rst:596
+#: c-api/arg.rst:608
 msgid "Convert a C :c:expr:`unsigned long long` to a Python integer object."
 msgstr ""
 
-#: c-api/arg.rst:599
+#: c-api/arg.rst:611
 msgid "Convert a C :c:type:`Py_ssize_t` to a Python integer."
 msgstr ""
 
-#: c-api/arg.rst:601
+#: c-api/arg.rst:613
 msgid "``c`` (:class:`bytes` of length 1) [char]"
 msgstr ""
 
-#: c-api/arg.rst:602
+#: c-api/arg.rst:614
 msgid ""
 "Convert a C :c:expr:`int` representing a byte to a Python :class:`bytes` "
 "object of length 1."
 msgstr ""
 
-#: c-api/arg.rst:606
+#: c-api/arg.rst:618
 msgid ""
 "Convert a C :c:expr:`int` representing a character to Python :class:`str` "
 "object of length 1."
 msgstr ""
 
-#: c-api/arg.rst:610
+#: c-api/arg.rst:622
 msgid "Convert a C :c:expr:`double` to a Python floating-point number."
 msgstr ""
 
-#: c-api/arg.rst:613
+#: c-api/arg.rst:625
 msgid "Convert a C :c:expr:`float` to a Python floating-point number."
 msgstr ""
 
-#: c-api/arg.rst:615
+#: c-api/arg.rst:627
 msgid "``D`` (:class:`complex`) [Py_complex \\*]"
 msgstr ""
 
-#: c-api/arg.rst:616
+#: c-api/arg.rst:628
 msgid "Convert a C :c:type:`Py_complex` structure to a Python complex number."
 msgstr ""
 
-#: c-api/arg.rst:619
+#: c-api/arg.rst:631
 msgid ""
 "Pass a Python object untouched but create a new :term:`strong reference` to "
 "it (i.e. its reference count is incremented by one). If the object passed in "
@@ -1071,26 +1085,30 @@ msgid ""
 "no exception has been raised yet, :exc:`SystemError` is set."
 msgstr ""
 
-#: c-api/arg.rst:628
+#: c-api/arg.rst:640
 msgid "``S`` (object) [PyObject \\*]"
 msgstr ""
 
-#: c-api/arg.rst:629
+#: c-api/arg.rst:641
 msgid "Same as ``O``."
 msgstr ""
 
-#: c-api/arg.rst:631
+#: c-api/arg.rst:643
 msgid "``N`` (object) [PyObject \\*]"
 msgstr ""
 
-#: c-api/arg.rst:632
+#: c-api/arg.rst:644
 msgid ""
 "Same as ``O``, except it doesn't create a new :term:`strong reference`. "
 "Useful when the object is created by a call to an object constructor in the "
 "argument list."
 msgstr ""
 
-#: c-api/arg.rst:637
+#: c-api/arg.rst:648
+msgid "``O&`` (object) [*converter*, *anything*]"
+msgstr ""
+
+#: c-api/arg.rst:649
 msgid ""
 "Convert *anything* to a Python object through a *converter* function.  The "
 "function is called with *anything* (which should be compatible with :c:expr:"
@@ -1098,40 +1116,40 @@ msgid ""
 "``NULL`` if an error occurred."
 msgstr ""
 
-#: c-api/arg.rst:643
+#: c-api/arg.rst:655
 msgid ""
 "Convert a sequence of C values to a Python tuple with the same number of "
 "items."
 msgstr ""
 
-#: c-api/arg.rst:645
+#: c-api/arg.rst:657
 msgid "``[items]`` (:class:`list`) [*matching-items*]"
 msgstr ""
 
-#: c-api/arg.rst:646
+#: c-api/arg.rst:658
 msgid ""
 "Convert a sequence of C values to a Python list with the same number of "
 "items."
 msgstr ""
 
-#: c-api/arg.rst:648
+#: c-api/arg.rst:660
 msgid "``{items}`` (:class:`dict`) [*matching-items*]"
 msgstr ""
 
-#: c-api/arg.rst:649
+#: c-api/arg.rst:661
 msgid ""
 "Convert a sequence of C values to a Python dictionary.  Each pair of "
 "consecutive C values adds one item to the dictionary, serving as key and "
 "value, respectively."
 msgstr ""
 
-#: c-api/arg.rst:653
+#: c-api/arg.rst:665
 msgid ""
 "If there is an error in the format string, the :exc:`SystemError` exception "
 "is set and ``NULL`` returned."
 msgstr ""
 
-#: c-api/arg.rst:658
+#: c-api/arg.rst:670
 msgid ""
 "Identical to :c:func:`Py_BuildValue`, except that it accepts a va_list "
 "rather than a variable number of arguments."
diff --git a/c-api/buffer.po b/c-api/buffer.po
index fde899100..db8a0b498 100644
--- a/c-api/buffer.po
+++ b/c-api/buffer.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -339,16 +339,17 @@ msgid ""
 "itemsize`, :c:member:`~Py_buffer.ndim`."
 msgstr ""
 
-#: c-api/buffer.rst:249
+#: c-api/buffer.rst:248
 msgid "readonly, format"
 msgstr ""
 
-#: c-api/buffer.rst:253
+#: c-api/buffer.rst:252
 msgid ""
 "Controls the :c:member:`~Py_buffer.readonly` field. If set, the exporter "
 "MUST provide a writable buffer or else report failure. Otherwise, the "
 "exporter MAY provide either a read-only or writable buffer, but the choice "
-"MUST be consistent for all consumers."
+"MUST be consistent for all consumers. For example, :c:expr:`PyBUF_SIMPLE | "
+"PyBUF_WRITABLE` can be used to request a simple writable buffer."
 msgstr ""
 
 #: c-api/buffer.rst:260
@@ -367,137 +368,138 @@ msgstr ""
 
 #: c-api/buffer.rst:268
 msgid ""
-":c:macro:`PyBUF_FORMAT` can be \\|'d to any of the flags except :c:macro:"
-"`PyBUF_SIMPLE`. The latter already implies format ``B`` (unsigned bytes)."
+":c:macro:`PyBUF_FORMAT` must be \\|'d to any of the flags except :c:macro:"
+"`PyBUF_SIMPLE`, because the latter already implies format ``B`` (unsigned "
+"bytes). :c:macro:`!PyBUF_FORMAT` cannot be used on its own."
 msgstr ""
 
-#: c-api/buffer.rst:273
+#: c-api/buffer.rst:274
 msgid "shape, strides, suboffsets"
 msgstr ""
 
-#: c-api/buffer.rst:275
+#: c-api/buffer.rst:276
 msgid ""
 "The flags that control the logical structure of the memory are listed in "
 "decreasing order of complexity. Note that each flag contains all bits of the "
 "flags below it."
 msgstr ""
 
-#: c-api/buffer.rst:306 c-api/buffer.rst:331
+#: c-api/buffer.rst:307 c-api/buffer.rst:332
 msgid "Request"
 msgstr ""
 
-#: c-api/buffer.rst:306 c-api/buffer.rst:331
+#: c-api/buffer.rst:307 c-api/buffer.rst:332
 msgid "shape"
 msgstr ""
 
-#: c-api/buffer.rst:306 c-api/buffer.rst:331
+#: c-api/buffer.rst:307 c-api/buffer.rst:332
 msgid "strides"
 msgstr ""
 
-#: c-api/buffer.rst:306 c-api/buffer.rst:331
+#: c-api/buffer.rst:307 c-api/buffer.rst:332
 msgid "suboffsets"
 msgstr ""
 
-#: c-api/buffer.rst:286 c-api/buffer.rst:308 c-api/buffer.rst:312
-#: c-api/buffer.rst:333 c-api/buffer.rst:337 c-api/buffer.rst:341
-#: c-api/buffer.rst:345 c-api/buffer.rst:347
+#: c-api/buffer.rst:287 c-api/buffer.rst:309 c-api/buffer.rst:313
+#: c-api/buffer.rst:334 c-api/buffer.rst:338 c-api/buffer.rst:342
+#: c-api/buffer.rst:346 c-api/buffer.rst:348
 msgid "yes"
 msgstr ""
 
-#: c-api/buffer.rst:333 c-api/buffer.rst:335
+#: c-api/buffer.rst:334 c-api/buffer.rst:336
 msgid "if needed"
 msgstr ""
 
-#: c-api/buffer.rst:288 c-api/buffer.rst:308 c-api/buffer.rst:312
-#: c-api/buffer.rst:337 c-api/buffer.rst:341 c-api/buffer.rst:345
-#: c-api/buffer.rst:347
+#: c-api/buffer.rst:289 c-api/buffer.rst:309 c-api/buffer.rst:313
+#: c-api/buffer.rst:338 c-api/buffer.rst:342 c-api/buffer.rst:346
+#: c-api/buffer.rst:348
 msgid "NULL"
 msgstr ""
 
-#: c-api/buffer.rst:297
+#: c-api/buffer.rst:298
 msgid "contiguity requests"
 msgstr ""
 
-#: c-api/buffer.rst:299
+#: c-api/buffer.rst:300
 msgid ""
 "C or Fortran :term:`contiguity <contiguous>` can be explicitly requested, "
 "with and without stride information. Without stride information, the buffer "
 "must be C-contiguous."
 msgstr ""
 
-#: c-api/buffer.rst:331
+#: c-api/buffer.rst:332
 msgid "contig"
 msgstr ""
 
-#: c-api/buffer.rst:314 c-api/buffer.rst:347
+#: c-api/buffer.rst:315 c-api/buffer.rst:348
 msgid "C"
 msgstr ""
 
-#: c-api/buffer.rst:310
+#: c-api/buffer.rst:311
 msgid "F"
 msgstr ""
 
-#: c-api/buffer.rst:312
+#: c-api/buffer.rst:313
 msgid "C or F"
 msgstr ""
 
-#: c-api/buffer.rst:314
+#: c-api/buffer.rst:315
 msgid ":c:macro:`PyBUF_ND`"
 msgstr ""
 
-#: c-api/buffer.rst:319
+#: c-api/buffer.rst:320
 msgid "compound requests"
 msgstr ""
 
-#: c-api/buffer.rst:321
+#: c-api/buffer.rst:322
 msgid ""
 "All possible requests are fully defined by some combination of the flags in "
 "the previous section. For convenience, the buffer protocol provides "
 "frequently used combinations as single flags."
 msgstr ""
 
-#: c-api/buffer.rst:325
+#: c-api/buffer.rst:326
 msgid ""
 "In the following table *U* stands for undefined contiguity. The consumer "
 "would have to call :c:func:`PyBuffer_IsContiguous` to determine contiguity."
 msgstr ""
 
-#: c-api/buffer.rst:331
+#: c-api/buffer.rst:332
 msgid "readonly"
 msgstr ""
 
-#: c-api/buffer.rst:331
+#: c-api/buffer.rst:332
 msgid "format"
 msgstr ""
 
-#: c-api/buffer.rst:335 c-api/buffer.rst:339 c-api/buffer.rst:343
+#: c-api/buffer.rst:336 c-api/buffer.rst:340 c-api/buffer.rst:344
 msgid "U"
 msgstr ""
 
-#: c-api/buffer.rst:337 c-api/buffer.rst:345
+#: c-api/buffer.rst:338 c-api/buffer.rst:346
 msgid "0"
 msgstr ""
 
-#: c-api/buffer.rst:339 c-api/buffer.rst:347
+#: c-api/buffer.rst:340 c-api/buffer.rst:348
 msgid "1 or 0"
 msgstr ""
 
-#: c-api/buffer.rst:352
+#: c-api/buffer.rst:353
 msgid "Complex arrays"
 msgstr ""
 
-#: c-api/buffer.rst:355
+#: c-api/buffer.rst:356
 msgid "NumPy-style: shape and strides"
 msgstr ""
 
-#: c-api/buffer.rst:357
+#: c-api/buffer.rst:358
 msgid ""
 "The logical structure of NumPy-style arrays is defined by :c:member:"
 "`~Py_buffer.itemsize`, :c:member:`~Py_buffer.ndim`, :c:member:`~Py_buffer."
 "shape` and :c:member:`~Py_buffer.strides`."
 msgstr ""
 
-#: c-api/buffer.rst:360
+#: c-api/buffer.rst:361
 msgid ""
 "If ``ndim == 0``, the memory location pointed to by :c:member:`~Py_buffer."
 "buf` is interpreted as a scalar of size :c:member:`~Py_buffer.itemsize`. In "
@@ -505,28 +507,28 @@ msgid ""
 "strides` are ``NULL``."
 msgstr ""
 
-#: c-api/buffer.rst:364
+#: c-api/buffer.rst:365
 msgid ""
 "If :c:member:`~Py_buffer.strides` is ``NULL``, the array is interpreted as a "
 "standard n-dimensional C-array. Otherwise, the consumer must access an n-"
 "dimensional array as follows:"
 msgstr ""
 
-#: c-api/buffer.rst:368
+#: c-api/buffer.rst:369
 msgid ""
 "ptr = (char *)buf + indices[0] * strides[0] + ... + indices[n-1] * "
 "strides[n-1];\n"
 "item = *((typeof(item) *)ptr);"
 msgstr ""
 
-#: c-api/buffer.rst:374
+#: c-api/buffer.rst:375
 msgid ""
 "As noted above, :c:member:`~Py_buffer.buf` can point to any location within "
 "the actual memory block. An exporter can check the validity of a buffer with "
 "this function:"
 msgstr ""
 
-#: c-api/buffer.rst:378
+#: c-api/buffer.rst:379
 msgid ""
 "def verify_structure(memlen, itemsize, ndim, shape, strides, offset):\n"
 "    \"\"\"Verify that the parameters represent a valid array within\n"
@@ -555,11 +557,11 @@ msgid ""
 "    return 0 <= offset+imin and offset+imax+itemsize <= memlen"
 msgstr ""
 
-#: c-api/buffer.rst:408
+#: c-api/buffer.rst:409
 msgid "PIL-style: shape, strides and suboffsets"
 msgstr ""
 
-#: c-api/buffer.rst:410
+#: c-api/buffer.rst:411
 msgid ""
 "In addition to the regular items, PIL-style arrays can contain pointers that "
 "must be followed in order to get to the next element in a dimension. For "
@@ -570,14 +572,14 @@ msgid ""
 "x[2][3]`` arrays that can be located anywhere in memory."
 msgstr ""
 
-#: c-api/buffer.rst:419
+#: c-api/buffer.rst:420
 msgid ""
 "Here is a function that returns a pointer to the element in an N-D array "
 "pointed to by an N-dimensional index when there are both non-``NULL`` "
 "strides and suboffsets::"
 msgstr ""
 
-#: c-api/buffer.rst:423
+#: c-api/buffer.rst:424
 msgid ""
 "void *get_item_pointer(int ndim, void *buf, Py_ssize_t *strides,\n"
 "                       Py_ssize_t *suboffsets, Py_ssize_t *indices) {\n"
@@ -593,25 +595,25 @@ msgid ""
 "}"
 msgstr ""
 
-#: c-api/buffer.rst:438
+#: c-api/buffer.rst:439
 msgid "Buffer-related functions"
 msgstr ""
 
-#: c-api/buffer.rst:442
+#: c-api/buffer.rst:443
 msgid ""
 "Return ``1`` if *obj* supports the buffer interface otherwise ``0``.  When "
 "``1`` is returned, it doesn't guarantee that :c:func:`PyObject_GetBuffer` "
 "will succeed.  This function always succeeds."
 msgstr ""
 
-#: c-api/buffer.rst:449
+#: c-api/buffer.rst:450
 msgid ""
 "Send a request to *exporter* to fill in *view* as specified by  *flags*. If "
 "the exporter cannot provide a buffer of the exact type, it MUST raise :exc:"
 "`BufferError`, set ``view->obj`` to ``NULL`` and return ``-1``."
 msgstr ""
 
-#: c-api/buffer.rst:454
+#: c-api/buffer.rst:455
 msgid ""
 "On success, fill in *view*, set ``view->obj`` to a new reference to "
 "*exporter* and return 0. In the case of chained buffer providers that "
@@ -619,7 +621,7 @@ msgid ""
 "instead of *exporter* (See :ref:`Buffer Object Structures <buffer-structs>`)."
 msgstr ""
 
-#: c-api/buffer.rst:459
+#: c-api/buffer.rst:460
 msgid ""
 "Successful calls to :c:func:`PyObject_GetBuffer` must be paired with calls "
 "to :c:func:`PyBuffer_Release`, similar to :c:func:`malloc` and :c:func:"
@@ -627,7 +629,7 @@ msgid ""
 "`PyBuffer_Release` must be called exactly once."
 msgstr ""
 
-#: c-api/buffer.rst:467
+#: c-api/buffer.rst:468
 msgid ""
 "Release the buffer *view* and release the :term:`strong reference` (i.e. "
 "decrement the reference count) to the view's supporting object, ``view-"
@@ -635,19 +637,19 @@ msgid ""
 "used, otherwise reference leaks may occur."
 msgstr ""
 
-#: c-api/buffer.rst:472
+#: c-api/buffer.rst:473
 msgid ""
 "It is an error to call this function on a buffer that was not obtained via :"
 "c:func:`PyObject_GetBuffer`."
 msgstr ""
 
-#: c-api/buffer.rst:478
+#: c-api/buffer.rst:479
 msgid ""
 "Return the implied :c:member:`~Py_buffer.itemsize` from :c:member:"
 "`~Py_buffer.format`. On error, raise an exception and return -1."
 msgstr ""
 
-#: c-api/buffer.rst:486
+#: c-api/buffer.rst:487
 msgid ""
 "Return ``1`` if the memory defined by the *view* is C-style (*order* is "
 "``'C'``) or Fortran-style (*order* is ``'F'``) :term:`contiguous` or either "
@@ -655,69 +657,69 @@ msgid ""
 "succeeds."
 msgstr ""
 
-#: c-api/buffer.rst:493
+#: c-api/buffer.rst:494
 msgid ""
 "Get the memory area pointed to by the *indices* inside the given *view*. "
 "*indices* must point to an array of ``view->ndim`` indices."
 msgstr ""
 
-#: c-api/buffer.rst:499
+#: c-api/buffer.rst:500
 msgid ""
 "Copy contiguous *len* bytes from *buf* to *view*. *fort* can be ``'C'`` or "
 "``'F'`` (for C-style or Fortran-style ordering). ``0`` is returned on "
 "success, ``-1`` on error."
 msgstr ""
 
-#: c-api/buffer.rst:506
+#: c-api/buffer.rst:507
 msgid ""
 "Copy *len* bytes from *src* to its contiguous representation in *buf*. "
 "*order* can be ``'C'`` or ``'F'`` or ``'A'`` (for C-style or Fortran-style "
 "ordering or either one). ``0`` is returned on success, ``-1`` on error."
 msgstr ""
 
-#: c-api/buffer.rst:510
+#: c-api/buffer.rst:511
 msgid "This function fails if *len* != *src->len*."
 msgstr ""
 
-#: c-api/buffer.rst:515
+#: c-api/buffer.rst:516
 msgid ""
 "Copy data from *src* to *dest* buffer. Can convert between C-style and or "
 "Fortran-style buffers."
 msgstr ""
 
-#: c-api/buffer.rst:518
+#: c-api/buffer.rst:519
 msgid "``0`` is returned on success, ``-1`` on error."
 msgstr ""
 
-#: c-api/buffer.rst:522
+#: c-api/buffer.rst:523
 msgid ""
 "Fill the *strides* array with byte-strides of a :term:`contiguous` (C-style "
 "if *order* is ``'C'`` or Fortran-style if *order* is ``'F'``) array of the "
 "given shape with the given number of bytes per element."
 msgstr ""
 
-#: c-api/buffer.rst:529
+#: c-api/buffer.rst:530
 msgid ""
 "Handle buffer requests for an exporter that wants to expose *buf* of size "
 "*len* with writability set according to *readonly*. *buf* is interpreted as "
 "a sequence of unsigned bytes."
 msgstr ""
 
-#: c-api/buffer.rst:533
+#: c-api/buffer.rst:534
 msgid ""
 "The *flags* argument indicates the request type. This function always fills "
 "in *view* as specified by flags, unless *buf* has been designated as read-"
 "only and :c:macro:`PyBUF_WRITABLE` is set in *flags*."
 msgstr ""
 
-#: c-api/buffer.rst:537
+#: c-api/buffer.rst:538
 msgid ""
 "On success, set ``view->obj`` to a new reference to *exporter* and return 0. "
 "Otherwise, raise :exc:`BufferError`, set ``view->obj`` to ``NULL`` and "
 "return ``-1``;"
 msgstr ""
 
-#: c-api/buffer.rst:541
+#: c-api/buffer.rst:542
 msgid ""
 "If this function is used as part of a :ref:`getbufferproc <buffer-structs>`, "
 "*exporter* MUST be set to the exporting object and *flags* must be passed "
@@ -744,14 +746,14 @@ msgstr ""
 msgid "PyBufferProcs (C type)"
 msgstr ""
 
-#: c-api/buffer.rst:294
+#: c-api/buffer.rst:295
 msgid "contiguous"
 msgstr ""
 
-#: c-api/buffer.rst:294
+#: c-api/buffer.rst:295
 msgid "C-contiguous"
 msgstr ""
 
-#: c-api/buffer.rst:294
+#: c-api/buffer.rst:295
 msgid "Fortran contiguous"
 msgstr ""
diff --git a/c-api/function.po b/c-api/function.po
index 455b19286..beb69cbc4 100644
--- a/c-api/function.po
+++ b/c-api/function.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-01-01 00:16+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -154,18 +154,34 @@ msgid ""
 msgstr ""
 
 #: c-api/function.rst:148
-msgid ""
-"Enumeration of possible function watcher events: - "
-"``PyFunction_EVENT_CREATE`` - ``PyFunction_EVENT_DESTROY`` - "
-"``PyFunction_EVENT_MODIFY_CODE`` - ``PyFunction_EVENT_MODIFY_DEFAULTS`` - "
-"``PyFunction_EVENT_MODIFY_KWDEFAULTS``"
+msgid "Enumeration of possible function watcher events:"
+msgstr ""
+
+#: c-api/function.rst:150
+msgid "``PyFunction_EVENT_CREATE``"
+msgstr ""
+
+#: c-api/function.rst:151
+msgid "``PyFunction_EVENT_DESTROY``"
+msgstr ""
+
+#: c-api/function.rst:152
+msgid "``PyFunction_EVENT_MODIFY_CODE``"
+msgstr ""
+
+#: c-api/function.rst:153
+msgid "``PyFunction_EVENT_MODIFY_DEFAULTS``"
+msgstr ""
+
+#: c-api/function.rst:154
+msgid "``PyFunction_EVENT_MODIFY_KWDEFAULTS``"
 msgstr ""
 
-#: c-api/function.rst:160
+#: c-api/function.rst:161
 msgid "Type of a function watcher callback function."
 msgstr ""
 
-#: c-api/function.rst:162
+#: c-api/function.rst:163
 msgid ""
 "If *event* is ``PyFunction_EVENT_CREATE`` or ``PyFunction_EVENT_DESTROY`` "
 "then *new_value* will be ``NULL``. Otherwise, *new_value* will hold a :term:"
@@ -173,13 +189,13 @@ msgid ""
 "for the attribute that is being modified."
 msgstr ""
 
-#: c-api/function.rst:167
+#: c-api/function.rst:168
 msgid ""
 "The callback may inspect but must not modify *func*; doing so could have "
 "unpredictable effects, including infinite recursion."
 msgstr ""
 
-#: c-api/function.rst:170
+#: c-api/function.rst:171
 msgid ""
 "If *event* is ``PyFunction_EVENT_CREATE``, then the callback is invoked "
 "after `func` has been fully initialized. Otherwise, the callback is invoked "
@@ -191,7 +207,7 @@ msgid ""
 "semantics of the Python code being executed."
 msgstr ""
 
-#: c-api/function.rst:179
+#: c-api/function.rst:180
 msgid ""
 "If *event* is ``PyFunction_EVENT_DESTROY``,  Taking a reference in the "
 "callback to the about-to-be-destroyed function will resurrect it, preventing "
@@ -199,14 +215,14 @@ msgid ""
 "later, any watcher callbacks active at that time will be called again."
 msgstr ""
 
-#: c-api/function.rst:184
+#: c-api/function.rst:185
 msgid ""
 "If the callback sets an exception, it must return ``-1``; this exception "
 "will be printed as an unraisable exception using :c:func:"
 "`PyErr_WriteUnraisable`. Otherwise it should return ``0``."
 msgstr ""
 
-#: c-api/function.rst:188
+#: c-api/function.rst:189
 msgid ""
 "There may already be a pending exception set on entry to the callback. In "
 "this case, the callback should return ``0`` with the same exception still "
diff --git a/c-api/init.po b/c-api/init.po
index e5fceca7a..c6a6f1b79 100644
--- a/c-api/init.po
+++ b/c-api/init.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -680,10 +680,10 @@ msgid ""
 "this storage."
 msgstr ""
 
-#: c-api/init.rst:494
+#: c-api/init.rst:760 c-api/init.rst:822
 msgid ""
 "Use :c:func:`Py_DecodeLocale` to decode a bytes string to get a :c:expr:"
-"`wchar_t *` string."
+"`wchar_t*` string."
 msgstr ""
 
 #: c-api/init.rst:504
@@ -811,7 +811,7 @@ msgid ""
 "required after calling :c:func:`Py_Initialize`."
 msgstr ""
 
-#: c-api/init.rst:760 c-api/init.rst:822
+#: c-api/init.rst:645
 msgid ""
 "Use :c:func:`Py_DecodeLocale` to decode a bytes string to get a :c:expr:"
 "`wchar_*` string."
@@ -1907,10 +1907,14 @@ msgid ""
 "    .check_multi_interp_extensions = 1,\n"
 "    .gil = PyInterpreterConfig_OWN_GIL,\n"
 "};\n"
-"PyThreadState *tstate = Py_NewInterpreterFromConfig(&config);"
+"PyThreadState *tstate = NULL;\n"
+"PyStatus status = Py_NewInterpreterFromConfig(&tstate, &config);\n"
+"if (PyStatus_Exception(status)) {\n"
+"    Py_ExitStatusException(status);\n"
+"}"
 msgstr ""
 
-#: c-api/init.rst:1649
+#: c-api/init.rst:1653
 msgid ""
 "Note that the config is used only briefly and does not get modified. During "
 "initialization the config's values are converted into various :c:type:"
@@ -1918,11 +1922,11 @@ msgid ""
 "internally on the :c:type:`PyInterpreterState`."
 msgstr ""
 
-#: c-api/init.rst:1658
+#: c-api/init.rst:1662
 msgid "Extension modules are shared between (sub-)interpreters as follows:"
 msgstr ""
 
-#: c-api/init.rst:1660
+#: c-api/init.rst:1664
 msgid ""
 "For modules using multi-phase initialization, e.g. :c:func:"
 "`PyModule_FromDefAndSpec`, a separate module object is created and "
@@ -1930,7 +1934,7 @@ msgid ""
 "are shared between these module objects."
 msgstr ""
 
-#: c-api/init.rst:1666
+#: c-api/init.rst:1670
 msgid ""
 "For modules using single-phase initialization, e.g. :c:func:"
 "`PyModule_Create`, the first time a particular extension is imported, it is "
@@ -1942,7 +1946,7 @@ msgid ""
 "might cause unwanted behavior (see `Bugs and caveats`_ below)."
 msgstr ""
 
-#: c-api/init.rst:1677
+#: c-api/init.rst:1681
 msgid ""
 "Note that this is different from what happens when an extension is imported "
 "after the interpreter has been completely re-initialized by calling :c:func:"
@@ -1952,7 +1956,7 @@ msgid ""
 "shared between these modules."
 msgstr ""
 
-#: c-api/init.rst:1697
+#: c-api/init.rst:1701
 msgid ""
 "Create a new sub-interpreter.  This is essentially just a wrapper around :c:"
 "func:`Py_NewInterpreterFromConfig` with a config that preserves the existing "
@@ -1961,7 +1965,7 @@ msgid ""
 "single-phase init modules."
 msgstr ""
 
-#: c-api/init.rst:1709
+#: c-api/init.rst:1713
 msgid ""
 "Destroy the (sub-)interpreter represented by the given thread state. The "
 "given thread state must be the current thread state.  See the discussion of "
@@ -1971,17 +1975,17 @@ msgid ""
 "be held before calling this function.  No GIL is held when it returns."
 msgstr ""
 
-#: c-api/init.rst:1717
+#: c-api/init.rst:1721
 msgid ""
 ":c:func:`Py_FinalizeEx` will destroy all sub-interpreters that haven't been "
 "explicitly destroyed at that point."
 msgstr ""
 
-#: c-api/init.rst:1722
+#: c-api/init.rst:1726
 msgid "A Per-Interpreter GIL"
 msgstr ""
 
-#: c-api/init.rst:1724
+#: c-api/init.rst:1728
 msgid ""
 "Using :c:func:`Py_NewInterpreterFromConfig` you can create a sub-interpreter "
 "that is completely isolated from other interpreters, including having its "
@@ -1993,7 +1997,7 @@ msgid ""
 "just using threads. (See :pep:`554`.)"
 msgstr ""
 
-#: c-api/init.rst:1734
+#: c-api/init.rst:1738
 msgid ""
 "Using an isolated interpreter requires vigilance in preserving that "
 "isolation.  That especially means not sharing any objects or mutable state "
@@ -2007,7 +2011,7 @@ msgid ""
 "builtin objects."
 msgstr ""
 
-#: c-api/init.rst:1745
+#: c-api/init.rst:1749
 msgid ""
 "If you preserve isolation then you will have access to proper multi-core "
 "computing without the complications that come with free-threading. Failure "
@@ -2015,7 +2019,7 @@ msgid ""
 "threading, including races and hard-to-debug crashes."
 msgstr ""
 
-#: c-api/init.rst:1750
+#: c-api/init.rst:1754
 msgid ""
 "Aside from that, one of the main challenges of using multiple isolated "
 "interpreters is how to communicate between them safely (not break isolation) "
@@ -2025,11 +2029,11 @@ msgid ""
 "sharing) data between interpreters."
 msgstr ""
 
-#: c-api/init.rst:1761
+#: c-api/init.rst:1765
 msgid "Bugs and caveats"
 msgstr ""
 
-#: c-api/init.rst:1763
+#: c-api/init.rst:1767
 msgid ""
 "Because sub-interpreters (and the main interpreter) are part of the same "
 "process, the insulation between them isn't perfect --- for example, using "
@@ -2042,7 +2046,7 @@ msgid ""
 "should be avoided if possible."
 msgstr ""
 
-#: c-api/init.rst:1773
+#: c-api/init.rst:1777
 msgid ""
 "Special care should be taken to avoid sharing user-defined functions, "
 "methods, instances or classes between sub-interpreters, since import "
@@ -2051,7 +2055,7 @@ msgid ""
 "objects from which the above are reachable."
 msgstr ""
 
-#: c-api/init.rst:1779
+#: c-api/init.rst:1783
 msgid ""
 "Also note that combining this functionality with ``PyGILState_*`` APIs is "
 "delicate, because these APIs assume a bijection between Python thread states "
@@ -2063,25 +2067,25 @@ msgid ""
 "created threads will probably be broken when using sub-interpreters."
 msgstr ""
 
-#: c-api/init.rst:1790
+#: c-api/init.rst:1794
 msgid "Asynchronous Notifications"
 msgstr ""
 
-#: c-api/init.rst:1792
+#: c-api/init.rst:1796
 msgid ""
 "A mechanism is provided to make asynchronous notifications to the main "
 "interpreter thread.  These notifications take the form of a function pointer "
 "and a void pointer argument."
 msgstr ""
 
-#: c-api/init.rst:1799
+#: c-api/init.rst:1803
 msgid ""
 "Schedule a function to be called from the main interpreter thread.  On "
 "success, ``0`` is returned and *func* is queued for being called in the main "
 "thread.  On failure, ``-1`` is returned without setting any exception."
 msgstr ""
 
-#: c-api/init.rst:1803
+#: c-api/init.rst:1807
 msgid ""
 "When successfully queued, *func* will be *eventually* called from the main "
 "interpreter thread with the argument *arg*.  It will be called "
@@ -2089,17 +2093,17 @@ msgid ""
 "these conditions met:"
 msgstr ""
 
-#: c-api/init.rst:1808
+#: c-api/init.rst:1812
 msgid "on a :term:`bytecode` boundary;"
 msgstr ""
 
-#: c-api/init.rst:1809
+#: c-api/init.rst:1813
 msgid ""
 "with the main thread holding the :term:`global interpreter lock` (*func* can "
 "therefore use the full C API)."
 msgstr ""
 
-#: c-api/init.rst:1812
+#: c-api/init.rst:1816
 msgid ""
 "*func* must return ``0`` on success, or ``-1`` on failure with an exception "
 "set.  *func* won't be interrupted to perform another asynchronous "
@@ -2107,20 +2111,20 @@ msgid ""
 "if the global interpreter lock is released."
 msgstr ""
 
-#: c-api/init.rst:1817
+#: c-api/init.rst:1821
 msgid ""
 "This function doesn't need a current thread state to run, and it doesn't "
 "need the global interpreter lock."
 msgstr ""
 
-#: c-api/init.rst:1820
+#: c-api/init.rst:1824
 msgid ""
 "To call this function in a subinterpreter, the caller must hold the GIL. "
 "Otherwise, the function *func* can be scheduled to be called from the wrong "
 "interpreter."
 msgstr ""
 
-#: c-api/init.rst:1825
+#: c-api/init.rst:1829
 msgid ""
 "This is a low-level function, only useful for very special cases. There is "
 "no guarantee that *func* will be called as quick as possible.  If the main "
@@ -2130,7 +2134,7 @@ msgid ""
 "`PyGILState API<gilstate>`."
 msgstr ""
 
-#: c-api/init.rst:1834
+#: c-api/init.rst:1838
 msgid ""
 "If this function is called in a subinterpreter, the function *func* is now "
 "scheduled to be called from the subinterpreter, rather than being called "
@@ -2138,18 +2142,18 @@ msgid ""
 "scheduled calls."
 msgstr ""
 
-#: c-api/init.rst:1843
+#: c-api/init.rst:1847
 msgid "Profiling and Tracing"
 msgstr ""
 
-#: c-api/init.rst:1848
+#: c-api/init.rst:1852
 msgid ""
 "The Python interpreter provides some low-level support for attaching "
 "profiling and execution tracing facilities.  These are used for profiling, "
 "debugging, and coverage analysis tools."
 msgstr ""
 
-#: c-api/init.rst:1852
+#: c-api/init.rst:1856
 msgid ""
 "This C interface allows the profiling or tracing code to avoid the overhead "
 "of calling through Python-level callable objects, making a direct C function "
@@ -2159,7 +2163,7 @@ msgid ""
 "reported to the Python-level trace functions in previous versions."
 msgstr ""
 
-#: c-api/init.rst:1862
+#: c-api/init.rst:1866
 msgid ""
 "The type of the trace function registered using :c:func:`PyEval_SetProfile` "
 "and :c:func:`PyEval_SetTrace`. The first parameter is the object passed to "
@@ -2171,64 +2175,64 @@ msgid ""
 "value of *what*:"
 msgstr ""
 
-#: c-api/init.rst:1871
+#: c-api/init.rst:1875
 msgid "Value of *what*"
 msgstr ""
 
-#: c-api/init.rst:1871
+#: c-api/init.rst:1875
 msgid "Meaning of *arg*"
 msgstr ""
 
-#: c-api/init.rst:1873
+#: c-api/init.rst:1877
 msgid ":c:data:`PyTrace_CALL`"
 msgstr ""
 
-#: c-api/init.rst:1878 c-api/init.rst:1889
+#: c-api/init.rst:1882 c-api/init.rst:1893
 msgid "Always :c:data:`Py_None`."
 msgstr ""
 
-#: c-api/init.rst:1875
+#: c-api/init.rst:1879
 msgid ":c:data:`PyTrace_EXCEPTION`"
 msgstr ""
 
-#: c-api/init.rst:1875
+#: c-api/init.rst:1879
 msgid "Exception information as returned by :func:`sys.exc_info`."
 msgstr ""
 
-#: c-api/init.rst:1878
+#: c-api/init.rst:1882
 msgid ":c:data:`PyTrace_LINE`"
 msgstr ""
 
-#: c-api/init.rst:1880
+#: c-api/init.rst:1884
 msgid ":c:data:`PyTrace_RETURN`"
 msgstr ""
 
-#: c-api/init.rst:1880
+#: c-api/init.rst:1884
 msgid ""
 "Value being returned to the caller, or ``NULL`` if caused by an exception."
 msgstr ""
 
-#: c-api/init.rst:1883
+#: c-api/init.rst:1887
 msgid ":c:data:`PyTrace_C_CALL`"
 msgstr ""
 
-#: c-api/init.rst:1885 c-api/init.rst:1887
+#: c-api/init.rst:1889 c-api/init.rst:1891
 msgid "Function object being called."
 msgstr ""
 
-#: c-api/init.rst:1885
+#: c-api/init.rst:1889
 msgid ":c:data:`PyTrace_C_EXCEPTION`"
 msgstr ""
 
-#: c-api/init.rst:1887
+#: c-api/init.rst:1891
 msgid ":c:data:`PyTrace_C_RETURN`"
 msgstr ""
 
-#: c-api/init.rst:1889
+#: c-api/init.rst:1893
 msgid ":c:data:`PyTrace_OPCODE`"
 msgstr ""
 
-#: c-api/init.rst:1894
+#: c-api/init.rst:1898
 msgid ""
 "The value of the *what* parameter to a :c:type:`Py_tracefunc` function when "
 "a new call to a function or method is being reported, or a new entry into a "
@@ -2237,7 +2241,7 @@ msgid ""
 "the corresponding frame."
 msgstr ""
 
-#: c-api/init.rst:1903
+#: c-api/init.rst:1907
 msgid ""
 "The value of the *what* parameter to a :c:type:`Py_tracefunc` function when "
 "an exception has been raised.  The callback function is called with this "
@@ -2249,7 +2253,7 @@ msgid ""
 "profiler."
 msgstr ""
 
-#: c-api/init.rst:1914
+#: c-api/init.rst:1918
 msgid ""
 "The value passed as the *what* parameter to a :c:type:`Py_tracefunc` "
 "function (but not a profiling function) when a line-number event is being "
@@ -2257,31 +2261,31 @@ msgid ""
 "f_trace_lines` to *0* on that frame."
 msgstr ""
 
-#: c-api/init.rst:1922
+#: c-api/init.rst:1926
 msgid ""
 "The value for the *what* parameter to :c:type:`Py_tracefunc` functions when "
 "a call is about to return."
 msgstr ""
 
-#: c-api/init.rst:1928
+#: c-api/init.rst:1932
 msgid ""
 "The value for the *what* parameter to :c:type:`Py_tracefunc` functions when "
 "a C function is about to be called."
 msgstr ""
 
-#: c-api/init.rst:1934
+#: c-api/init.rst:1938
 msgid ""
 "The value for the *what* parameter to :c:type:`Py_tracefunc` functions when "
 "a C function has raised an exception."
 msgstr ""
 
-#: c-api/init.rst:1940
+#: c-api/init.rst:1944
 msgid ""
 "The value for the *what* parameter to :c:type:`Py_tracefunc` functions when "
 "a C function has returned."
 msgstr ""
 
-#: c-api/init.rst:1946
+#: c-api/init.rst:1950
 msgid ""
 "The value for the *what* parameter to :c:type:`Py_tracefunc` functions (but "
 "not profiling functions) when a new opcode is about to be executed.  This "
@@ -2289,7 +2293,7 @@ msgid ""
 "attr:`~frame.f_trace_opcodes` to *1* on the frame."
 msgstr ""
 
-#: c-api/init.rst:1954
+#: c-api/init.rst:1958
 msgid ""
 "Set the profiler function to *func*.  The *obj* parameter is passed to the "
 "function as its first parameter, and may be any Python object, or ``NULL``.  "
@@ -2299,28 +2303,28 @@ msgid ""
 "`PyTrace_LINE` :c:data:`PyTrace_OPCODE` and :c:data:`PyTrace_EXCEPTION`."
 msgstr ""
 
-#: c-api/init.rst:1961
+#: c-api/init.rst:1965
 msgid "See also the :func:`sys.setprofile` function."
 msgstr ""
 
-#: c-api/init.rst:1970 c-api/init.rst:1996
+#: c-api/init.rst:1974 c-api/init.rst:2000
 msgid "The caller must hold the :term:`GIL`."
 msgstr ""
 
-#: c-api/init.rst:1967
+#: c-api/init.rst:1971
 msgid ""
 "Like :c:func:`PyEval_SetProfile` but sets the profile function in all "
 "running threads belonging to the current interpreter instead of the setting "
 "it only on the current thread."
 msgstr ""
 
-#: c-api/init.rst:1972
+#: c-api/init.rst:1976
 msgid ""
 "As :c:func:`PyEval_SetProfile`, this function ignores any exceptions raised "
 "while setting the profile functions in all threads."
 msgstr ""
 
-#: c-api/init.rst:1980
+#: c-api/init.rst:1984
 msgid ""
 "Set the tracing function to *func*.  This is similar to :c:func:"
 "`PyEval_SetProfile`, except the tracing function does receive line-number "
@@ -2331,65 +2335,65 @@ msgid ""
 "*what* parameter."
 msgstr ""
 
-#: c-api/init.rst:1987
+#: c-api/init.rst:1991
 msgid "See also the :func:`sys.settrace` function."
 msgstr ""
 
-#: c-api/init.rst:1993
+#: c-api/init.rst:1997
 msgid ""
 "Like :c:func:`PyEval_SetTrace` but sets the tracing function in all running "
 "threads belonging to the current interpreter instead of the setting it only "
 "on the current thread."
 msgstr ""
 
-#: c-api/init.rst:1998
+#: c-api/init.rst:2002
 msgid ""
 "As :c:func:`PyEval_SetTrace`, this function ignores any exceptions raised "
 "while setting the trace functions in all threads."
 msgstr ""
 
-#: c-api/init.rst:2007
+#: c-api/init.rst:2011
 msgid "Advanced Debugger Support"
 msgstr ""
 
-#: c-api/init.rst:2012
+#: c-api/init.rst:2016
 msgid ""
 "These functions are only intended to be used by advanced debugging tools."
 msgstr ""
 
-#: c-api/init.rst:2017
+#: c-api/init.rst:2021
 msgid ""
 "Return the interpreter state object at the head of the list of all such "
 "objects."
 msgstr ""
 
-#: c-api/init.rst:2022
+#: c-api/init.rst:2026
 msgid "Return the main interpreter state object."
 msgstr ""
 
-#: c-api/init.rst:2027
+#: c-api/init.rst:2031
 msgid ""
 "Return the next interpreter state object after *interp* from the list of all "
 "such objects."
 msgstr ""
 
-#: c-api/init.rst:2033
+#: c-api/init.rst:2037
 msgid ""
 "Return the pointer to the first :c:type:`PyThreadState` object in the list "
 "of threads associated with the interpreter *interp*."
 msgstr ""
 
-#: c-api/init.rst:2039
+#: c-api/init.rst:2043
 msgid ""
 "Return the next thread state object after *tstate* from the list of all such "
 "objects belonging to the same :c:type:`PyInterpreterState` object."
 msgstr ""
 
-#: c-api/init.rst:2046
+#: c-api/init.rst:2050
 msgid "Thread Local Storage Support"
 msgstr ""
 
-#: c-api/init.rst:2050
+#: c-api/init.rst:2054
 msgid ""
 "The Python interpreter provides low-level support for thread-local storage "
 "(TLS) which wraps the underlying native TLS implementation to support the "
@@ -2399,19 +2403,19 @@ msgid ""
 "thread."
 msgstr ""
 
-#: c-api/init.rst:2057
+#: c-api/init.rst:2061
 msgid ""
 "The GIL does *not* need to be held when calling these functions; they supply "
 "their own locking."
 msgstr ""
 
-#: c-api/init.rst:2060
+#: c-api/init.rst:2064
 msgid ""
 "Note that :file:`Python.h` does not include the declaration of the TLS APIs, "
 "you need to include :file:`pythread.h` to use thread-local storage."
 msgstr ""
 
-#: c-api/init.rst:2064
+#: c-api/init.rst:2068
 msgid ""
 "None of these API functions handle memory management on behalf of the :c:"
 "expr:`void*` values.  You need to allocate and deallocate them yourself. If "
@@ -2419,22 +2423,22 @@ msgid ""
 "don't do refcount operations on them either."
 msgstr ""
 
-#: c-api/init.rst:2072
+#: c-api/init.rst:2076
 msgid "Thread Specific Storage (TSS) API"
 msgstr ""
 
-#: c-api/init.rst:2074
+#: c-api/init.rst:2078
 msgid ""
 "TSS API is introduced to supersede the use of the existing TLS API within "
 "the CPython interpreter.  This API uses a new type :c:type:`Py_tss_t` "
 "instead of :c:expr:`int` to represent thread keys."
 msgstr ""
 
-#: c-api/init.rst:2080
+#: c-api/init.rst:2084
 msgid "\"A New C-API for Thread-Local Storage in CPython\" (:pep:`539`)"
 msgstr ""
 
-#: c-api/init.rst:2085
+#: c-api/init.rst:2089
 msgid ""
 "This data structure represents the state of a thread key, the definition of "
 "which may depend on the underlying TLS implementation, and it has an "
@@ -2442,52 +2446,52 @@ msgid ""
 "public members in this structure."
 msgstr ""
 
-#: c-api/init.rst:2090
+#: c-api/init.rst:2094
 msgid ""
 "When :ref:`Py_LIMITED_API <stable>` is not defined, static allocation of "
 "this type by :c:macro:`Py_tss_NEEDS_INIT` is allowed."
 msgstr ""
 
-#: c-api/init.rst:2096
+#: c-api/init.rst:2100
 msgid ""
 "This macro expands to the initializer for :c:type:`Py_tss_t` variables. Note "
 "that this macro won't be defined with :ref:`Py_LIMITED_API <stable>`."
 msgstr ""
 
-#: c-api/init.rst:2101
+#: c-api/init.rst:2105
 msgid "Dynamic Allocation"
 msgstr ""
 
-#: c-api/init.rst:2103
+#: c-api/init.rst:2107
 msgid ""
 "Dynamic allocation of the :c:type:`Py_tss_t`, required in extension modules "
 "built with :ref:`Py_LIMITED_API <stable>`, where static allocation of this "
 "type is not possible due to its implementation being opaque at build time."
 msgstr ""
 
-#: c-api/init.rst:2110
+#: c-api/init.rst:2114
 msgid ""
 "Return a value which is the same state as a value initialized with :c:macro:"
 "`Py_tss_NEEDS_INIT`, or ``NULL`` in the case of dynamic allocation failure."
 msgstr ""
 
-#: c-api/init.rst:2117
+#: c-api/init.rst:2121
 msgid ""
 "Free the given *key* allocated by :c:func:`PyThread_tss_alloc`, after first "
 "calling :c:func:`PyThread_tss_delete` to ensure any associated thread locals "
 "have been unassigned. This is a no-op if the *key* argument is ``NULL``."
 msgstr ""
 
-#: c-api/init.rst:2123
+#: c-api/init.rst:2127
 msgid ""
 "A freed key becomes a dangling pointer. You should reset the key to ``NULL``."
 msgstr ""
 
-#: c-api/init.rst:2128
+#: c-api/init.rst:2132
 msgid "Methods"
 msgstr ""
 
-#: c-api/init.rst:2130
+#: c-api/init.rst:2134
 msgid ""
 "The parameter *key* of these functions must not be ``NULL``.  Moreover, the "
 "behaviors of :c:func:`PyThread_tss_set` and :c:func:`PyThread_tss_get` are "
@@ -2495,13 +2499,13 @@ msgid ""
 "func:`PyThread_tss_create`."
 msgstr ""
 
-#: c-api/init.rst:2138
+#: c-api/init.rst:2142
 msgid ""
 "Return a non-zero value if the given :c:type:`Py_tss_t` has been initialized "
 "by :c:func:`PyThread_tss_create`."
 msgstr ""
 
-#: c-api/init.rst:2144
+#: c-api/init.rst:2148
 msgid ""
 "Return a zero value on successful initialization of a TSS key.  The behavior "
 "is undefined if the value pointed to by the *key* argument is not "
@@ -2510,7 +2514,7 @@ msgid ""
 "no-op and immediately returns success."
 msgstr ""
 
-#: c-api/init.rst:2153
+#: c-api/init.rst:2157
 msgid ""
 "Destroy a TSS key to forget the values associated with the key across all "
 "threads, and change the key's initialization state to uninitialized.  A "
@@ -2519,31 +2523,31 @@ msgid ""
 "key -- calling it on an already destroyed key is a no-op."
 msgstr ""
 
-#: c-api/init.rst:2162
+#: c-api/init.rst:2166
 msgid ""
 "Return a zero value to indicate successfully associating a :c:expr:`void*` "
 "value with a TSS key in the current thread.  Each thread has a distinct "
 "mapping of the key to a :c:expr:`void*` value."
 msgstr ""
 
-#: c-api/init.rst:2169
+#: c-api/init.rst:2173
 msgid ""
 "Return the :c:expr:`void*` value associated with a TSS key in the current "
 "thread.  This returns ``NULL`` if no value is associated with the key in the "
 "current thread."
 msgstr ""
 
-#: c-api/init.rst:2177
+#: c-api/init.rst:2181
 msgid "Thread Local Storage (TLS) API"
 msgstr ""
 
-#: c-api/init.rst:2179
+#: c-api/init.rst:2183
 msgid ""
 "This API is superseded by :ref:`Thread Specific Storage (TSS) API <thread-"
 "specific-storage-api>`."
 msgstr ""
 
-#: c-api/init.rst:2184
+#: c-api/init.rst:2188
 msgid ""
 "This version of the API does not support platforms where the native TLS key "
 "is defined in a way that cannot be safely cast to ``int``.  On such "
@@ -2552,7 +2556,7 @@ msgid ""
 "platforms."
 msgstr ""
 
-#: c-api/init.rst:2189
+#: c-api/init.rst:2193
 msgid ""
 "Due to the compatibility problem noted above, this version of the API should "
 "not be used in new code."
@@ -2574,19 +2578,19 @@ msgstr ""
 msgid "path (in module sys)"
 msgstr ""
 
-#: c-api/init.rst:596 c-api/init.rst:1063 c-api/init.rst:1689
+#: c-api/init.rst:596 c-api/init.rst:1063 c-api/init.rst:1693
 msgid "module"
 msgstr ""
 
-#: c-api/init.rst:1594 c-api/init.rst:1689
+#: c-api/init.rst:1594 c-api/init.rst:1693
 msgid "builtins"
 msgstr ""
 
-#: c-api/init.rst:1594 c-api/init.rst:1689
+#: c-api/init.rst:1594 c-api/init.rst:1693
 msgid "__main__"
 msgstr ""
 
-#: c-api/init.rst:1594 c-api/init.rst:1689
+#: c-api/init.rst:1594 c-api/init.rst:1693
 msgid "sys"
 msgstr ""
 
@@ -2606,7 +2610,7 @@ msgstr ""
 msgid "PySys_SetArgvEx (C function)"
 msgstr ""
 
-#: c-api/init.rst:1654 c-api/init.rst:1707
+#: c-api/init.rst:1658 c-api/init.rst:1711
 msgid "Py_FinalizeEx (C function)"
 msgstr ""
 
@@ -2718,22 +2722,22 @@ msgstr ""
 msgid "_thread"
 msgstr ""
 
-#: c-api/init.rst:1689
+#: c-api/init.rst:1693
 msgid "stdout (in module sys)"
 msgstr ""
 
-#: c-api/init.rst:1689
+#: c-api/init.rst:1693
 msgid "stderr (in module sys)"
 msgstr ""
 
-#: c-api/init.rst:1689
+#: c-api/init.rst:1693
 msgid "stdin (in module sys)"
 msgstr ""
 
-#: c-api/init.rst:1654
+#: c-api/init.rst:1658
 msgid "Py_Initialize (C function)"
 msgstr ""
 
-#: c-api/init.rst:1684
+#: c-api/init.rst:1688
 msgid "close (in module os)"
 msgstr ""
diff --git a/c-api/long.po b/c-api/long.po
index 076f15090..0d39de758 100644
--- a/c-api/long.po
+++ b/c-api/long.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -136,7 +136,7 @@ msgid ""
 "retrieved from the resulting value using :c:func:`PyLong_AsVoidPtr`."
 msgstr ""
 
-#: c-api/long.rst:141
+#: c-api/long.rst:151
 msgid ""
 "Return a C :c:expr:`long` representation of *obj*.  If *obj* is not an "
 "instance of :c:type:`PyLongObject`, first call its :meth:`~object.__index__` "
@@ -149,19 +149,30 @@ msgid ""
 "expr:`long`."
 msgstr ""
 
-#: c-api/long.rst:150 c-api/long.rst:191 c-api/long.rst:214
+#: c-api/long.rst:160 c-api/long.rst:201 c-api/long.rst:224
 msgid "Returns ``-1`` on error.  Use :c:func:`PyErr_Occurred` to disambiguate."
 msgstr ""
 
-#: c-api/long.rst:152 c-api/long.rst:195 c-api/long.rst:299
+#: c-api/long.rst:162 c-api/long.rst:205 c-api/long.rst:309
 msgid "Use :meth:`~object.__index__` if available."
 msgstr ""
 
-#: c-api/long.rst:155 c-api/long.rst:198 c-api/long.rst:302
+#: c-api/long.rst:165 c-api/long.rst:208 c-api/long.rst:312
 msgid "This function will no longer use :meth:`~object.__int__`."
 msgstr ""
 
-#: c-api/long.rst:145
+#: c-api/long.rst:142
+msgid ""
+"A :term:`soft deprecated` alias. Exactly equivalent to the preferred "
+"``PyLong_AsLong``. In particular, it can fail with :exc:`OverflowError` or "
+"another exception."
+msgstr ""
+
+#: c-api/long.rst:146
+msgid "The function is soft deprecated."
+msgstr ""
+
+#: c-api/long.rst:155
 msgid ""
 "If the value of *obj* is greater than :c:macro:`LONG_MAX` or less than :c:"
 "macro:`LONG_MIN`, set *\\*overflow* to ``1`` or ``-1``, respectively, and "
@@ -169,20 +180,20 @@ msgid ""
 "exception occurs set *\\*overflow* to ``0`` and return ``-1`` as usual."
 msgstr ""
 
-#: c-api/long.rst:182
+#: c-api/long.rst:192
 msgid ""
 "Return a C :c:expr:`long long` representation of *obj*.  If *obj* is not an "
 "instance of :c:type:`PyLongObject`, first call its :meth:`~object.__index__` "
 "method (if present) to convert it to a :c:type:`PyLongObject`."
 msgstr ""
 
-#: c-api/long.rst:168
+#: c-api/long.rst:178
 msgid ""
 "Raise :exc:`OverflowError` if the value of *obj* is out of range for a :c:"
 "expr:`long long`."
 msgstr ""
 
-#: c-api/long.rst:186
+#: c-api/long.rst:196
 msgid ""
 "If the value of *obj* is greater than :c:macro:`LLONG_MAX` or less than :c:"
 "macro:`LLONG_MIN`, set *\\*overflow* to ``1`` or ``-1``, respectively, and "
@@ -190,133 +201,133 @@ msgid ""
 "exception occurs set *\\*overflow* to ``0`` and return ``-1`` as usual."
 msgstr ""
 
-#: c-api/long.rst:208
+#: c-api/long.rst:218
 msgid ""
 "Return a C :c:type:`Py_ssize_t` representation of *pylong*.  *pylong* must "
 "be an instance of :c:type:`PyLongObject`."
 msgstr ""
 
-#: c-api/long.rst:211
+#: c-api/long.rst:221
 msgid ""
 "Raise :exc:`OverflowError` if the value of *pylong* is out of range for a :c:"
 "type:`Py_ssize_t`."
 msgstr ""
 
-#: c-api/long.rst:223
+#: c-api/long.rst:233
 msgid ""
 "Return a C :c:expr:`unsigned long` representation of *pylong*.  *pylong* "
 "must be an instance of :c:type:`PyLongObject`."
 msgstr ""
 
-#: c-api/long.rst:226
+#: c-api/long.rst:236
 msgid ""
 "Raise :exc:`OverflowError` if the value of *pylong* is out of range for a :c:"
 "expr:`unsigned long`."
 msgstr ""
 
-#: c-api/long.rst:229
+#: c-api/long.rst:239
 msgid ""
 "Returns ``(unsigned long)-1`` on error. Use :c:func:`PyErr_Occurred` to "
 "disambiguate."
 msgstr ""
 
-#: c-api/long.rst:239
+#: c-api/long.rst:249
 msgid ""
 "Return a C :c:type:`size_t` representation of *pylong*.  *pylong* must be an "
 "instance of :c:type:`PyLongObject`."
 msgstr ""
 
-#: c-api/long.rst:242
+#: c-api/long.rst:252
 msgid ""
 "Raise :exc:`OverflowError` if the value of *pylong* is out of range for a :c:"
 "type:`size_t`."
 msgstr ""
 
-#: c-api/long.rst:245
+#: c-api/long.rst:255
 msgid ""
 "Returns ``(size_t)-1`` on error. Use :c:func:`PyErr_Occurred` to "
 "disambiguate."
 msgstr ""
 
-#: c-api/long.rst:254
+#: c-api/long.rst:264
 msgid ""
 "Return a C :c:expr:`unsigned long long` representation of *pylong*.  "
 "*pylong* must be an instance of :c:type:`PyLongObject`."
 msgstr ""
 
-#: c-api/long.rst:257
+#: c-api/long.rst:267
 msgid ""
 "Raise :exc:`OverflowError` if the value of *pylong* is out of range for an :"
 "c:expr:`unsigned long long`."
 msgstr ""
 
-#: c-api/long.rst:260
+#: c-api/long.rst:270
 msgid ""
 "Returns ``(unsigned long long)-1`` on error. Use :c:func:`PyErr_Occurred` to "
 "disambiguate."
 msgstr ""
 
-#: c-api/long.rst:263
+#: c-api/long.rst:273
 msgid ""
 "A negative *pylong* now raises :exc:`OverflowError`, not :exc:`TypeError`."
 msgstr ""
 
-#: c-api/long.rst:269
+#: c-api/long.rst:279
 msgid ""
 "Return a C :c:expr:`unsigned long` representation of *obj*.  If *obj* is not "
 "an instance of :c:type:`PyLongObject`, first call its :meth:`~object."
 "__index__` method (if present) to convert it to a :c:type:`PyLongObject`."
 msgstr ""
 
-#: c-api/long.rst:273
+#: c-api/long.rst:283
 msgid ""
 "If the value of *obj* is out of range for an :c:expr:`unsigned long`, return "
 "the reduction of that value modulo ``ULONG_MAX + 1``."
 msgstr ""
 
-#: c-api/long.rst:276
+#: c-api/long.rst:286
 msgid ""
 "Returns ``(unsigned long)-1`` on error.  Use :c:func:`PyErr_Occurred` to "
 "disambiguate."
 msgstr ""
 
-#: c-api/long.rst:288
+#: c-api/long.rst:298
 msgid ""
 "Return a C :c:expr:`unsigned long long` representation of *obj*.  If *obj* "
 "is not an instance of :c:type:`PyLongObject`, first call its :meth:`~object."
 "__index__` method (if present) to convert it to a :c:type:`PyLongObject`."
 msgstr ""
 
-#: c-api/long.rst:293
+#: c-api/long.rst:303
 msgid ""
 "If the value of *obj* is out of range for an :c:expr:`unsigned long long`, "
 "return the reduction of that value modulo ``ULLONG_MAX + 1``."
 msgstr ""
 
-#: c-api/long.rst:296
+#: c-api/long.rst:306
 msgid ""
 "Returns ``(unsigned long long)-1`` on error.  Use :c:func:`PyErr_Occurred` "
 "to disambiguate."
 msgstr ""
 
-#: c-api/long.rst:308
+#: c-api/long.rst:318
 msgid ""
 "Return a C :c:expr:`double` representation of *pylong*.  *pylong* must be an "
 "instance of :c:type:`PyLongObject`."
 msgstr ""
 
-#: c-api/long.rst:311
+#: c-api/long.rst:321
 msgid ""
 "Raise :exc:`OverflowError` if the value of *pylong* is out of range for a :c:"
 "expr:`double`."
 msgstr ""
 
-#: c-api/long.rst:314
+#: c-api/long.rst:324
 msgid ""
 "Returns ``-1.0`` on error.  Use :c:func:`PyErr_Occurred` to disambiguate."
 msgstr ""
 
-#: c-api/long.rst:319
+#: c-api/long.rst:329
 msgid ""
 "Convert a Python integer *pylong* to a C :c:expr:`void` pointer. If *pylong* "
 "cannot be converted, an :exc:`OverflowError` will be raised.  This is only "
@@ -324,27 +335,27 @@ msgid ""
 "c:func:`PyLong_FromVoidPtr`."
 msgstr ""
 
-#: c-api/long.rst:324
+#: c-api/long.rst:334
 msgid ""
 "Returns ``NULL`` on error.  Use :c:func:`PyErr_Occurred` to disambiguate."
 msgstr ""
 
-#: c-api/long.rst:329
+#: c-api/long.rst:339
 msgid ""
 "On success, return a read only :term:`named tuple`, that holds information "
 "about Python's internal representation of integers. See :data:`sys.int_info` "
 "for description of individual fields."
 msgstr ""
 
-#: c-api/long.rst:333
+#: c-api/long.rst:343
 msgid "On failure, return ``NULL`` with an exception set."
 msgstr ""
 
-#: c-api/long.rst:340
+#: c-api/long.rst:350
 msgid "Return 1 if *op* is compact, 0 otherwise."
 msgstr ""
 
-#: c-api/long.rst:342
+#: c-api/long.rst:352
 msgid ""
 "This function makes it possible for performance-critical code to implement a "
 "“fast path” for small integers. For compact values use :c:func:"
@@ -353,23 +364,23 @@ msgid ""
 "<PyObject_CallMethod>` :meth:`int.to_bytes`."
 msgstr ""
 
-#: c-api/long.rst:348
+#: c-api/long.rst:358
 msgid "The speedup is expected to be negligible for most users."
 msgstr ""
 
-#: c-api/long.rst:350
+#: c-api/long.rst:360
 msgid ""
 "Exactly what values are considered compact is an implementation detail and "
 "is subject to change."
 msgstr ""
 
-#: c-api/long.rst:358
+#: c-api/long.rst:368
 msgid ""
 "If *op* is compact, as determined by :c:func:`PyUnstable_Long_IsCompact`, "
 "return its value."
 msgstr ""
 
-#: c-api/long.rst:361
+#: c-api/long.rst:371
 msgid "Otherwise, the return value is undefined."
 msgstr ""
 
@@ -389,18 +400,18 @@ msgstr ""
 msgid "LONG_MAX (C macro)"
 msgstr ""
 
-#: c-api/long.rst:161 c-api/long.rst:219 c-api/long.rst:251
+#: c-api/long.rst:171 c-api/long.rst:229 c-api/long.rst:261
 msgid "OverflowError (built-in exception)"
 msgstr ""
 
-#: c-api/long.rst:204
+#: c-api/long.rst:214
 msgid "PY_SSIZE_T_MAX (C macro)"
 msgstr ""
 
-#: c-api/long.rst:219
+#: c-api/long.rst:229
 msgid "ULONG_MAX (C macro)"
 msgstr ""
 
-#: c-api/long.rst:235
+#: c-api/long.rst:245
 msgid "SIZE_MAX (C macro)"
 msgstr ""
diff --git a/c-api/module.po b/c-api/module.po
index 3669cf476..f5a1b0367 100644
--- a/c-api/module.po
+++ b/c-api/module.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -462,7 +462,7 @@ msgstr ""
 #: c-api/module.rst:417
 msgid ""
 "If ``Py_mod_multiple_interpreters`` is not specified, the import machinery "
-"defaults to ``Py_MOD_MULTIPLE_INTERPRETERS_NOT_SUPPORTED``."
+"defaults to ``Py_MOD_MULTIPLE_INTERPRETERS_SUPPORTED``."
 msgstr ""
 
 #: c-api/module.rst:422
@@ -548,17 +548,11 @@ msgid ""
 "On success, return ``0``. On error, raise an exception and return ``-1``."
 msgstr ""
 
-#: c-api/module.rst:499
-msgid ""
-"Return ``-1`` if *value* is ``NULL``. It must be called with an exception "
-"raised in this case."
-msgstr ""
-
-#: c-api/module.rst:559
+#: c-api/module.rst:560
 msgid "Example usage::"
 msgstr ""
 
-#: c-api/module.rst:504
+#: c-api/module.rst:501
 msgid ""
 "static int\n"
 "add_spam(PyObject *module, int value)\n"
@@ -573,13 +567,20 @@ msgid ""
 " }"
 msgstr ""
 
-#: c-api/module.rst:577
+#: c-api/module.rst:513
+msgid ""
+"To be convenient, the function accepts ``NULL`` *value* with an exception "
+"set. In this case, return ``-1`` and just leave the raised exception "
+"unchanged."
+msgstr ""
+
+#: c-api/module.rst:578
 msgid ""
 "The example can also be written without checking explicitly if *obj* is "
 "``NULL``::"
 msgstr ""
 
-#: c-api/module.rst:519
+#: c-api/module.rst:520
 msgid ""
 "static int\n"
 "add_spam(PyObject *module, int value)\n"
@@ -591,13 +592,13 @@ msgid ""
 " }"
 msgstr ""
 
-#: c-api/module.rst:593
+#: c-api/module.rst:594
 msgid ""
 "Note that ``Py_XDECREF()`` should be used instead of ``Py_DECREF()`` in this "
 "case, since *obj* can be ``NULL``."
 msgstr ""
 
-#: c-api/module.rst:531
+#: c-api/module.rst:532
 msgid ""
 "The number of different *name* strings passed to this function should be "
 "kept small, usually by only using statically allocated strings as *name*. "
@@ -607,32 +608,32 @@ msgid ""
 "internally to create a key object."
 msgstr ""
 
-#: c-api/module.rst:544
+#: c-api/module.rst:545
 msgid ""
 "Similar to :c:func:`PyModule_AddObjectRef`, but steals a reference to "
 "*value* on success (if it returns ``0``)."
 msgstr ""
 
-#: c-api/module.rst:547
+#: c-api/module.rst:548
 msgid ""
 "The new :c:func:`PyModule_AddObjectRef` function is recommended, since it is "
 "easy to introduce reference leaks by misusing the :c:func:"
 "`PyModule_AddObject` function."
 msgstr ""
 
-#: c-api/module.rst:553
+#: c-api/module.rst:554
 msgid ""
 "Unlike other functions that steal references, ``PyModule_AddObject()`` only "
 "releases the reference to *value* **on success**."
 msgstr ""
 
-#: c-api/module.rst:556
+#: c-api/module.rst:557
 msgid ""
 "This means that its return value must be checked, and calling code must :c:"
 "func:`Py_DECREF` *value* manually on error."
 msgstr ""
 
-#: c-api/module.rst:561
+#: c-api/module.rst:562
 msgid ""
 "static int\n"
 "add_spam(PyObject *module, int value)\n"
@@ -651,7 +652,7 @@ msgid ""
 "}"
 msgstr ""
 
-#: c-api/module.rst:580
+#: c-api/module.rst:581
 msgid ""
 "static int\n"
 "add_spam(PyObject *module, int value)\n"
@@ -667,20 +668,20 @@ msgid ""
 "}"
 msgstr ""
 
-#: c-api/module.rst:599
+#: c-api/module.rst:600
 msgid ""
 "Add an integer constant to *module* as *name*.  This convenience function "
 "can be used from the module's initialization function. Return ``-1`` with an "
 "exception set on error, ``0`` on success."
 msgstr ""
 
-#: c-api/module.rst:603
+#: c-api/module.rst:604
 msgid ""
 "This is a convenience function that calls :c:func:`PyLong_FromLong` and :c:"
 "func:`PyModule_AddObjectRef`; see their documentation for details."
 msgstr ""
 
-#: c-api/module.rst:609
+#: c-api/module.rst:610
 msgid ""
 "Add a string constant to *module* as *name*.  This convenience function can "
 "be used from the module's initialization function.  The string *value* must "
@@ -688,14 +689,14 @@ msgid ""
 "on success."
 msgstr ""
 
-#: c-api/module.rst:614
+#: c-api/module.rst:615
 msgid ""
 "This is a convenience function that calls :c:func:"
 "`PyUnicode_InternFromString` and :c:func:`PyModule_AddObjectRef`; see their "
 "documentation for details."
 msgstr ""
 
-#: c-api/module.rst:621
+#: c-api/module.rst:622
 msgid ""
 "Add an int constant to *module*. The name and the value are taken from "
 "*macro*. For example ``PyModule_AddIntMacro(module, AF_INET)`` adds the int "
@@ -703,11 +704,11 @@ msgid ""
 "with an exception set on error, ``0`` on success."
 msgstr ""
 
-#: c-api/module.rst:629
+#: c-api/module.rst:630
 msgid "Add a string constant to *module*."
 msgstr ""
 
-#: c-api/module.rst:633
+#: c-api/module.rst:634
 msgid ""
 "Add a type object to *module*. The type object is finalized by calling "
 "internally :c:func:`PyType_Ready`. The name of the type object is taken from "
@@ -715,25 +716,25 @@ msgid ""
 "``-1`` with an exception set on error, ``0`` on success."
 msgstr ""
 
-#: c-api/module.rst:643
+#: c-api/module.rst:644
 msgid "Module lookup"
 msgstr ""
 
-#: c-api/module.rst:645
+#: c-api/module.rst:646
 msgid ""
 "Single-phase initialization creates singleton modules that can be looked up "
 "in the context of the current interpreter. This allows the module object to "
 "be retrieved later with only a reference to the module definition."
 msgstr ""
 
-#: c-api/module.rst:649
+#: c-api/module.rst:650
 msgid ""
 "These functions will not work on modules created using multi-phase "
 "initialization, since multiple such modules can be created from a single "
 "definition."
 msgstr ""
 
-#: c-api/module.rst:654
+#: c-api/module.rst:655
 msgid ""
 "Returns the module object that was created from *def* for the current "
 "interpreter. This method requires that the module object has been attached "
@@ -742,18 +743,18 @@ msgid ""
 "to the interpreter state yet, it returns ``NULL``."
 msgstr ""
 
-#: c-api/module.rst:661
+#: c-api/module.rst:662
 msgid ""
 "Attaches the module object passed to the function to the interpreter state. "
 "This allows the module object to be accessible via :c:func:"
 "`PyState_FindModule`."
 msgstr ""
 
-#: c-api/module.rst:664
+#: c-api/module.rst:665
 msgid "Only effective on modules created using single-phase initialization."
 msgstr ""
 
-#: c-api/module.rst:666
+#: c-api/module.rst:667
 msgid ""
 "Python calls ``PyState_AddModule`` automatically after importing a module, "
 "so it is unnecessary (but harmless) to call it from module initialization "
@@ -764,15 +765,15 @@ msgid ""
 "state updates)."
 msgstr ""
 
-#: c-api/module.rst:685
+#: c-api/module.rst:686
 msgid "The caller must hold the GIL."
 msgstr ""
 
-#: c-api/module.rst:676
+#: c-api/module.rst:677
 msgid "Return ``-1`` with an exception set on error, ``0`` on success."
 msgstr ""
 
-#: c-api/module.rst:682
+#: c-api/module.rst:683
 msgid ""
 "Removes the module object created from *def* from the interpreter state. "
 "Return ``-1`` with an exception set on error, ``0`` on success."
diff --git a/c-api/object.po b/c-api/object.po
index 90f26d646..898da3848 100644
--- a/c-api/object.po
+++ b/c-api/object.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -431,6 +431,13 @@ msgstr ""
 
 #: c-api/object.rst:398
 msgid ""
+"This is the same as :c:func:`PyObject_DelItem`, but *key* is specified as a :"
+"c:expr:`const char*` UTF-8 encoded bytes string, rather than a :c:expr:"
+"`PyObject*`."
+msgstr ""
+
+#: c-api/object.rst:405
+msgid ""
 "This is equivalent to the Python expression ``dir(o)``, returning a "
 "(possibly empty) list of strings appropriate for the object argument, or "
 "``NULL`` if there was an error.  If the argument is ``NULL``, this is like "
@@ -439,7 +446,7 @@ msgid ""
 "`PyErr_Occurred` will return false."
 msgstr ""
 
-#: c-api/object.rst:407
+#: c-api/object.rst:414
 msgid ""
 "This is equivalent to the Python expression ``iter(o)``. It returns a new "
 "iterator for the object argument, or the object  itself if the object is "
@@ -447,7 +454,14 @@ msgid ""
 "object cannot be iterated."
 msgstr ""
 
-#: c-api/object.rst:415
+#: c-api/object.rst:422
+msgid ""
+"This is equivalent to the Python ``__iter__(self): return self`` method. It "
+"is intended for :term:`iterator` types, to be used in the :c:member:"
+"`PyTypeObject.tp_iter` slot."
+msgstr ""
+
+#: c-api/object.rst:428
 msgid ""
 "This is the equivalent to the Python expression ``aiter(o)``. Takes an :"
 "class:`AsyncIterable` object and returns an :class:`AsyncIterator` for it. "
@@ -456,51 +470,51 @@ msgid ""
 "``NULL`` if the object cannot be iterated."
 msgstr ""
 
-#: c-api/object.rst:425
+#: c-api/object.rst:438
 msgid "Get a pointer to subclass-specific data reserved for *cls*."
 msgstr ""
 
-#: c-api/object.rst:427
+#: c-api/object.rst:440
 msgid ""
 "The object *o* must be an instance of *cls*, and *cls* must have been "
 "created using negative :c:member:`PyType_Spec.basicsize`. Python does not "
 "check this."
 msgstr ""
 
-#: c-api/object.rst:431
+#: c-api/object.rst:444
 msgid "On error, set an exception and return ``NULL``."
 msgstr ""
 
-#: c-api/object.rst:437
+#: c-api/object.rst:450
 msgid ""
 "Return the size of the instance memory space reserved for *cls*, i.e. the "
 "size of the memory :c:func:`PyObject_GetTypeData` returns."
 msgstr ""
 
-#: c-api/object.rst:440
+#: c-api/object.rst:453
 msgid ""
 "This may be larger than requested using :c:member:`-PyType_Spec.basicsize "
 "<PyType_Spec.basicsize>`; it is safe to use this larger size (e.g. with :c:"
 "func:`!memset`)."
 msgstr ""
 
-#: c-api/object.rst:443
+#: c-api/object.rst:456
 msgid ""
 "The type *cls* **must** have been created using negative :c:member:"
 "`PyType_Spec.basicsize`. Python does not check this."
 msgstr ""
 
-#: c-api/object.rst:447
+#: c-api/object.rst:460
 msgid "On error, set an exception and return a negative value."
 msgstr ""
 
-#: c-api/object.rst:453
+#: c-api/object.rst:466
 msgid ""
 "Get a pointer to per-item data for a class with :c:macro:"
 "`Py_TPFLAGS_ITEMS_AT_END`."
 msgstr ""
 
-#: c-api/object.rst:456
+#: c-api/object.rst:469
 msgid ""
 "On error, set an exception and return ``NULL``. :py:exc:`TypeError` is "
 "raised if *o* does not have :c:macro:`Py_TPFLAGS_ITEMS_AT_END` set."
diff --git a/c-api/slice.po b/c-api/slice.po
index 67cd8a81a..404424d59 100644
--- a/c-api/slice.po
+++ b/c-api/slice.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -157,11 +157,17 @@ msgstr ""
 
 #: c-api/slice.rst:123
 msgid ""
+"The type of Python :const:`Ellipsis` object.  Same as :class:`types."
+"EllipsisType` in the Python layer."
+msgstr ""
+
+#: c-api/slice.rst:129
+msgid ""
 "The Python ``Ellipsis`` object.  This object has no methods.  Like :c:data:"
 "`Py_None`, it is an `immortal <https://peps.python.org/pep-0683/>`_. "
 "singleton object."
 msgstr ""
 
-#: c-api/slice.rst:127
+#: c-api/slice.rst:133
 msgid ":c:data:`Py_Ellipsis` is immortal."
 msgstr ""
diff --git a/c-api/stable.po b/c-api/stable.po
index 492e001d8..45628b9b8 100644
--- a/c-api/stable.po
+++ b/c-api/stable.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-02-24 17:22+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -108,8 +108,8 @@ msgstr ""
 #: c-api/stable.rst:67
 msgid ""
 "Python 3.2 introduced the *Limited API*, a subset of Python's C API. "
-"Extensions that only use the Limited API can be compiled once and work with "
-"multiple versions of Python. Contents of the Limited API are :ref:`listed "
+"Extensions that only use the Limited API can be compiled once and be loaded "
+"on multiple versions of Python. Contents of the Limited API are :ref:`listed "
 "below <limited-api-list>`."
 msgstr ""
 
@@ -123,9 +123,8 @@ msgstr ""
 msgid ""
 "Define ``Py_LIMITED_API`` to the value of :c:macro:`PY_VERSION_HEX` "
 "corresponding to the lowest Python version your extension supports. The "
-"extension will work without recompilation with all Python 3 releases from "
-"the specified one onward, and can use Limited API introduced up to that "
-"version."
+"extension will be ABI-compatible with all Python 3 releases from the "
+"specified one onward, and can use Limited API introduced up to that version."
 msgstr ""
 
 #: c-api/stable.rst:83
@@ -148,24 +147,33 @@ msgstr ""
 #: c-api/stable.rst:96
 msgid ""
 "To enable this, Python provides a *Stable ABI*: a set of symbols that will "
-"remain compatible across Python 3.x versions."
+"remain ABI-compatible across Python 3.x versions."
 msgstr ""
 
-#: c-api/stable.rst:99
+#: c-api/stable.rst:101
+msgid ""
+"The Stable ABI prevents ABI issues, like linker errors due to missing "
+"symbols or data corruption due to changes in structure layouts or function "
+"signatures. However, other changes in Python can change the *behavior* of "
+"extensions. See Python's Backwards Compatibility Policy (:pep:`387`) for "
+"details."
+msgstr ""
+
+#: c-api/stable.rst:107
 msgid ""
 "The Stable ABI contains symbols exposed in the :ref:`Limited API <limited-c-"
 "api>`, but also other ones – for example, functions necessary to support "
 "older versions of the Limited API."
 msgstr ""
 
-#: c-api/stable.rst:103
+#: c-api/stable.rst:111
 msgid ""
 "On Windows, extensions that use the Stable ABI should be linked against "
 "``python3.dll`` rather than a version-specific library such as ``python39."
 "dll``."
 msgstr ""
 
-#: c-api/stable.rst:107
+#: c-api/stable.rst:115
 msgid ""
 "On some platforms, Python will look for and load shared library files named "
 "with the ``abi3`` tag (e.g. ``mymodule.abi3.so``). It does not check if such "
@@ -174,31 +182,31 @@ msgid ""
 "not installed for lower versions of Python."
 msgstr ""
 
-#: c-api/stable.rst:114
+#: c-api/stable.rst:122
 msgid ""
 "All functions in the Stable ABI are present as functions in Python's shared "
 "library, not solely as macros. This makes them usable from languages that "
 "don't use the C preprocessor."
 msgstr ""
 
-#: c-api/stable.rst:120
+#: c-api/stable.rst:128
 msgid "Limited API Scope and Performance"
 msgstr ""
 
-#: c-api/stable.rst:122
+#: c-api/stable.rst:130
 msgid ""
 "The goal for the Limited API is to allow everything that is possible with "
 "the full C API, but possibly with a performance penalty."
 msgstr ""
 
-#: c-api/stable.rst:125
+#: c-api/stable.rst:133
 msgid ""
 "For example, while :c:func:`PyList_GetItem` is available, its “unsafe” macro "
 "variant :c:func:`PyList_GET_ITEM` is not. The macro can be faster because it "
 "can rely on version-specific implementation details of the list object."
 msgstr ""
 
-#: c-api/stable.rst:130
+#: c-api/stable.rst:138
 msgid ""
 "Without ``Py_LIMITED_API`` defined, some C API functions are inlined or "
 "replaced by macros. Defining ``Py_LIMITED_API`` disables this inlining, "
@@ -206,7 +214,7 @@ msgid ""
 "reducing performance."
 msgstr ""
 
-#: c-api/stable.rst:135
+#: c-api/stable.rst:143
 msgid ""
 "By leaving out the ``Py_LIMITED_API`` definition, it is possible to compile "
 "a Limited API extension with a version-specific ABI. This can improve "
@@ -216,11 +224,11 @@ msgid ""
 "of an upcoming Python version."
 msgstr ""
 
-#: c-api/stable.rst:144
+#: c-api/stable.rst:152
 msgid "Limited API Caveats"
 msgstr ""
 
-#: c-api/stable.rst:146
+#: c-api/stable.rst:154
 msgid ""
 "Note that compiling with ``Py_LIMITED_API`` is *not* a complete guarantee "
 "that code conforms to the :ref:`Limited API <limited-c-api>` or the :ref:"
@@ -228,7 +236,7 @@ msgid ""
 "an API also includes other issues, such as expected semantics."
 msgstr ""
 
-#: c-api/stable.rst:151
+#: c-api/stable.rst:159
 msgid ""
 "One issue that ``Py_LIMITED_API`` does not guard against is calling a "
 "function with arguments that are invalid in a lower Python version. For "
@@ -238,19 +246,19 @@ msgid ""
 "crash. A similar argument works for fields of structs."
 msgstr ""
 
-#: c-api/stable.rst:158
+#: c-api/stable.rst:166
 msgid ""
 "Another issue is that some struct fields are currently not hidden when "
 "``Py_LIMITED_API`` is defined, even though they're part of the Limited API."
 msgstr ""
 
-#: c-api/stable.rst:161
+#: c-api/stable.rst:169
 msgid ""
 "For these reasons, we recommend testing an extension with *all* minor Python "
 "versions it supports, and preferably to build with the *lowest* such version."
 msgstr ""
 
-#: c-api/stable.rst:164
+#: c-api/stable.rst:172
 msgid ""
 "We also recommend reviewing documentation of all used API to check if it is "
 "explicitly part of the Limited API. Even with ``Py_LIMITED_API`` defined, a "
@@ -258,7 +266,7 @@ msgid ""
 "unintentionally, as bugs)."
 msgstr ""
 
-#: c-api/stable.rst:169
+#: c-api/stable.rst:177
 msgid ""
 "Also note that the Limited API is not necessarily stable: compiling with "
 "``Py_LIMITED_API`` with Python 3.8 means that the extension will run with "
@@ -267,11 +275,11 @@ msgid ""
 "that the Stable ABI stays stable."
 msgstr ""
 
-#: c-api/stable.rst:179
+#: c-api/stable.rst:187
 msgid "Platform Considerations"
 msgstr ""
 
-#: c-api/stable.rst:181
+#: c-api/stable.rst:189
 msgid ""
 "ABI stability depends not only on Python, but also on the compiler used, "
 "lower-level libraries and compiler options. For the purposes of the :ref:"
@@ -279,7 +287,7 @@ msgid ""
 "depend on the OS type and processor architecture"
 msgstr ""
 
-#: c-api/stable.rst:186
+#: c-api/stable.rst:194
 msgid ""
 "It is the responsibility of each particular distributor of Python to ensure "
 "that all Python versions on a particular platform are built in a way that "
@@ -287,11 +295,11 @@ msgid ""
 "releases from ``python.org`` and many third-party distributors."
 msgstr ""
 
-#: c-api/stable.rst:196
+#: c-api/stable.rst:204
 msgid "Contents of Limited API"
 msgstr ""
 
-#: c-api/stable.rst:199
+#: c-api/stable.rst:207
 msgid ""
 "Currently, the :ref:`Limited API <limited-c-api>` includes the following "
 "items:"
diff --git a/c-api/structures.po b/c-api/structures.po
index a9f816dfe..932ab5902 100644
--- a/c-api/structures.po
+++ b/c-api/structures.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -93,103 +93,108 @@ msgstr ""
 
 #: c-api/structures.rst:68
 msgid ""
+"The base class of all other objects, the same as :class:`object` in Python."
+msgstr ""
+
+#: c-api/structures.rst:73
+msgid ""
 "Test if the *x* object is the *y* object, the same as ``x is y`` in Python."
 msgstr ""
 
-#: c-api/structures.rst:75
+#: c-api/structures.rst:80
 msgid ""
 "Test if an object is the ``None`` singleton, the same as ``x is None`` in "
 "Python."
 msgstr ""
 
-#: c-api/structures.rst:83
+#: c-api/structures.rst:88
 msgid ""
 "Test if an object is the ``True`` singleton, the same as ``x is True`` in "
 "Python."
 msgstr ""
 
-#: c-api/structures.rst:91
+#: c-api/structures.rst:96
 msgid ""
 "Test if an object is the ``False`` singleton, the same as ``x is False`` in "
 "Python."
 msgstr ""
 
-#: c-api/structures.rst:99
+#: c-api/structures.rst:104
 msgid "Get the type of the Python object *o*."
 msgstr ""
 
-#: c-api/structures.rst:101
+#: c-api/structures.rst:106
 msgid "Return a :term:`borrowed reference`."
 msgstr ""
 
-#: c-api/structures.rst:103
+#: c-api/structures.rst:108
 msgid "Use the :c:func:`Py_SET_TYPE` function to set an object type."
 msgstr ""
 
-#: c-api/structures.rst:105
+#: c-api/structures.rst:110
 msgid ""
 ":c:func:`Py_TYPE()` is changed to an inline static function. The parameter "
 "type is no longer :c:expr:`const PyObject*`."
 msgstr ""
 
-#: c-api/structures.rst:112
+#: c-api/structures.rst:117
 msgid ""
 "Return non-zero if the object *o* type is *type*. Return zero otherwise. "
 "Equivalent to: ``Py_TYPE(o) == type``."
 msgstr ""
 
-#: c-api/structures.rst:120
+#: c-api/structures.rst:125
 msgid "Set the object *o* type to *type*."
 msgstr ""
 
-#: c-api/structures.rst:127
+#: c-api/structures.rst:132
 msgid "Get the size of the Python object *o*."
 msgstr ""
 
-#: c-api/structures.rst:129
+#: c-api/structures.rst:134
 msgid "Use the :c:func:`Py_SET_SIZE` function to set an object size."
 msgstr ""
 
-#: c-api/structures.rst:131
+#: c-api/structures.rst:136
 msgid ""
 ":c:func:`Py_SIZE()` is changed to an inline static function. The parameter "
 "type is no longer :c:expr:`const PyVarObject*`."
 msgstr ""
 
-#: c-api/structures.rst:138
+#: c-api/structures.rst:143
 msgid "Set the object *o* size to *size*."
 msgstr ""
 
-#: c-api/structures.rst:145
+#: c-api/structures.rst:150
 msgid ""
 "This is a macro which expands to initialization values for a new :c:type:"
 "`PyObject` type.  This macro expands to::"
 msgstr ""
 
-#: c-api/structures.rst:148
+#: c-api/structures.rst:153
 msgid ""
 "_PyObject_EXTRA_INIT\n"
 "1, type,"
 msgstr ""
 
-#: c-api/structures.rst:154
+#: c-api/structures.rst:159
 msgid ""
 "This is a macro which expands to initialization values for a new :c:type:"
 "`PyVarObject` type, including the :c:member:`~PyVarObject.ob_size` field. "
 "This macro expands to::"
 msgstr ""
 
-#: c-api/structures.rst:158
+#: c-api/structures.rst:163
 msgid ""
 "_PyObject_EXTRA_INIT\n"
 "1, type, size,"
 msgstr ""
 
-#: c-api/structures.rst:163
+#: c-api/structures.rst:168
 msgid "Implementing functions and methods"
 msgstr ""
 
-#: c-api/structures.rst:167
+#: c-api/structures.rst:172
 msgid ""
 "Type of the functions used to implement most Python callables in C. "
 "Functions of this type take two :c:expr:`PyObject*` parameters and return "
@@ -199,51 +204,51 @@ msgid ""
 "reference."
 msgstr ""
 
-#: c-api/structures.rst:174
+#: c-api/structures.rst:179
 msgid "The function signature is::"
 msgstr ""
 
-#: c-api/structures.rst:176
+#: c-api/structures.rst:181
 msgid ""
 "PyObject *PyCFunction(PyObject *self,\n"
 "                      PyObject *args);"
 msgstr ""
 
-#: c-api/structures.rst:181
+#: c-api/structures.rst:186
 msgid ""
 "Type of the functions used to implement Python callables in C with "
 "signature :ref:`METH_VARARGS | METH_KEYWORDS <METH_VARARGS-METH_KEYWORDS>`. "
 "The function signature is::"
 msgstr ""
 
-#: c-api/structures.rst:185
+#: c-api/structures.rst:190
 msgid ""
 "PyObject *PyCFunctionWithKeywords(PyObject *self,\n"
 "                                  PyObject *args,\n"
 "                                  PyObject *kwargs);"
 msgstr ""
 
-#: c-api/structures.rst:192
+#: c-api/structures.rst:197
 msgid ""
 "Type of the functions used to implement Python callables in C with "
 "signature :c:macro:`METH_FASTCALL`. The function signature is::"
 msgstr ""
 
-#: c-api/structures.rst:196
+#: c-api/structures.rst:201
 msgid ""
 "PyObject *_PyCFunctionFast(PyObject *self,\n"
 "                           PyObject *const *args,\n"
 "                           Py_ssize_t nargs);"
 msgstr ""
 
-#: c-api/structures.rst:202
+#: c-api/structures.rst:207
 msgid ""
 "Type of the functions used to implement Python callables in C with "
 "signature :ref:`METH_FASTCALL | METH_KEYWORDS <METH_FASTCALL-"
 "METH_KEYWORDS>`. The function signature is::"
 msgstr ""
 
-#: c-api/structures.rst:206
+#: c-api/structures.rst:211
 msgid ""
 "PyObject *_PyCFunctionFastWithKeywords(PyObject *self,\n"
 "                                       PyObject *const *args,\n"
@@ -251,14 +256,14 @@ msgid ""
 "                                       PyObject *kwnames);"
 msgstr ""
 
-#: c-api/structures.rst:213
+#: c-api/structures.rst:218
 msgid ""
 "Type of the functions used to implement Python callables in C with "
 "signature :ref:`METH_METHOD | METH_FASTCALL | METH_KEYWORDS <METH_METHOD-"
 "METH_FASTCALL-METH_KEYWORDS>`. The function signature is::"
 msgstr ""
 
-#: c-api/structures.rst:217
+#: c-api/structures.rst:222
 msgid ""
 "PyObject *PyCMethod(PyObject *self,\n"
 "                    PyTypeObject *defining_class,\n"
@@ -267,29 +272,29 @@ msgid ""
 "                    PyObject *kwnames)"
 msgstr ""
 
-#: c-api/structures.rst:228
+#: c-api/structures.rst:233
 msgid ""
 "Structure used to describe a method of an extension type.  This structure "
 "has four fields:"
 msgstr ""
 
-#: c-api/structures.rst:233
+#: c-api/structures.rst:238
 msgid "Name of the method."
 msgstr ""
 
-#: c-api/structures.rst:237
+#: c-api/structures.rst:242
 msgid "Pointer to the C implementation."
 msgstr ""
 
-#: c-api/structures.rst:241
+#: c-api/structures.rst:246
 msgid "Flags bits indicating how the call should be constructed."
 msgstr ""
 
-#: c-api/structures.rst:245
+#: c-api/structures.rst:250
 msgid "Points to the contents of the docstring."
 msgstr ""
 
-#: c-api/structures.rst:247
+#: c-api/structures.rst:252
 msgid ""
 "The :c:member:`~PyMethodDef.ml_meth` is a C function pointer. The functions "
 "may be of different types, but they always return :c:expr:`PyObject*`.  If "
@@ -299,18 +304,18 @@ msgid ""
 "implementation uses the specific C type of the *self* object."
 msgstr ""
 
-#: c-api/structures.rst:255
+#: c-api/structures.rst:260
 msgid ""
 "The :c:member:`~PyMethodDef.ml_flags` field is a bitfield which can include "
 "the following flags. The individual flags indicate either a calling "
 "convention or a binding convention."
 msgstr ""
 
-#: c-api/structures.rst:260
+#: c-api/structures.rst:265
 msgid "There are these calling conventions:"
 msgstr ""
 
-#: c-api/structures.rst:264
+#: c-api/structures.rst:269
 msgid ""
 "This is the typical calling convention, where the methods have the type :c:"
 "type:`PyCFunction`. The function expects two :c:expr:`PyObject*` values. The "
@@ -320,7 +325,7 @@ msgid ""
 "func:`PyArg_ParseTuple` or :c:func:`PyArg_UnpackTuple`."
 msgstr ""
 
-#: c-api/structures.rst:274
+#: c-api/structures.rst:279
 msgid ""
 "Can only be used in certain combinations with other flags: :ref:"
 "`METH_VARARGS | METH_KEYWORDS <METH_VARARGS-METH_KEYWORDS>`, :ref:"
@@ -329,11 +334,11 @@ msgid ""
 "METH_KEYWORDS>`."
 msgstr ""
 
-#: c-api/structures.rst:282
+#: c-api/structures.rst:287
 msgid ":c:expr:`METH_VARARGS | METH_KEYWORDS`"
 msgstr ""
 
-#: c-api/structures.rst:283
+#: c-api/structures.rst:288
 msgid ""
 "Methods with these flags must be of type :c:type:`PyCFunctionWithKeywords`. "
 "The function expects three parameters: *self*, *args*, *kwargs* where "
@@ -342,7 +347,7 @@ msgid ""
 "using :c:func:`PyArg_ParseTupleAndKeywords`."
 msgstr ""
 
-#: c-api/structures.rst:292
+#: c-api/structures.rst:297
 msgid ""
 "Fast calling convention supporting only positional arguments. The methods "
 "have the type :c:type:`_PyCFunctionFast`. The first parameter is *self*, the "
@@ -351,15 +356,15 @@ msgid ""
 "the array)."
 msgstr ""
 
-#: c-api/structures.rst:302
+#: c-api/structures.rst:307
 msgid "``METH_FASTCALL`` is now part of the :ref:`stable ABI <stable-abi>`."
 msgstr ""
 
-#: c-api/structures.rst:307
+#: c-api/structures.rst:312
 msgid ":c:expr:`METH_FASTCALL | METH_KEYWORDS`"
 msgstr ""
 
-#: c-api/structures.rst:308
+#: c-api/structures.rst:313
 msgid ""
 "Extension of :c:macro:`METH_FASTCALL` supporting also keyword arguments, "
 "with methods of type :c:type:`_PyCFunctionFastWithKeywords`. Keyword "
@@ -371,17 +376,17 @@ msgid ""
 "the positional arguments."
 msgstr ""
 
-#: c-api/structures.rst:323
+#: c-api/structures.rst:328
 msgid ""
 "Can only be used in the combination with other flags: :ref:`METH_METHOD | "
 "METH_FASTCALL | METH_KEYWORDS <METH_METHOD-METH_FASTCALL-METH_KEYWORDS>`."
 msgstr ""
 
-#: c-api/structures.rst:329
+#: c-api/structures.rst:334
 msgid ":c:expr:`METH_METHOD | METH_FASTCALL | METH_KEYWORDS`"
 msgstr ""
 
-#: c-api/structures.rst:330
+#: c-api/structures.rst:335
 msgid ""
 "Extension of :ref:`METH_FASTCALL | METH_KEYWORDS <METH_FASTCALL-"
 "METH_KEYWORDS>` supporting the *defining class*, that is, the class that "
@@ -389,14 +394,14 @@ msgid ""
 "``Py_TYPE(self)``."
 msgstr ""
 
-#: c-api/structures.rst:335
+#: c-api/structures.rst:340
 msgid ""
 "The method needs to be of type :c:type:`PyCMethod`, the same as for "
 "``METH_FASTCALL | METH_KEYWORDS`` with ``defining_class`` argument added "
 "after ``self``."
 msgstr ""
 
-#: c-api/structures.rst:344
+#: c-api/structures.rst:349
 msgid ""
 "Methods without parameters don't need to check whether arguments are given "
 "if they are listed with the :c:macro:`METH_NOARGS` flag.  They need to be of "
@@ -405,13 +410,13 @@ msgid ""
 "the second parameter will be ``NULL``."
 msgstr ""
 
-#: c-api/structures.rst:350
+#: c-api/structures.rst:355
 msgid ""
 "The function must have 2 parameters. Since the second parameter is unused, :"
 "c:macro:`Py_UNUSED` can be used to prevent a compiler warning."
 msgstr ""
 
-#: c-api/structures.rst:356
+#: c-api/structures.rst:361
 msgid ""
 "Methods with a single object argument can be listed with the :c:macro:"
 "`METH_O` flag, instead of invoking :c:func:`PyArg_ParseTuple` with a "
@@ -420,7 +425,7 @@ msgid ""
 "single argument."
 msgstr ""
 
-#: c-api/structures.rst:362
+#: c-api/structures.rst:367
 msgid ""
 "These two constants are not used to indicate the calling convention but the "
 "binding when use with methods of classes.  These may not be used for "
@@ -428,27 +433,27 @@ msgid ""
 "any given method."
 msgstr ""
 
-#: c-api/structures.rst:372
+#: c-api/structures.rst:377
 msgid ""
 "The method will be passed the type object as the first parameter rather than "
 "an instance of the type.  This is used to create *class methods*, similar to "
 "what is created when using the :func:`classmethod` built-in function."
 msgstr ""
 
-#: c-api/structures.rst:382
+#: c-api/structures.rst:387
 msgid ""
 "The method will be passed ``NULL`` as the first parameter rather than an "
 "instance of the type.  This is used to create *static methods*, similar to "
 "what is created when using the :func:`staticmethod` built-in function."
 msgstr ""
 
-#: c-api/structures.rst:386
+#: c-api/structures.rst:391
 msgid ""
 "One other constant controls whether a method is loaded in place of another "
 "definition with the same method name."
 msgstr ""
 
-#: c-api/structures.rst:392
+#: c-api/structures.rst:397
 msgid ""
 "The method will be loaded in place of existing definitions.  Without "
 "*METH_COEXIST*, the default is to skip repeated definitions.  Since slot "
@@ -461,20 +466,20 @@ msgid ""
 "wrapper object calls."
 msgstr ""
 
-#: c-api/structures.rst:404
+#: c-api/structures.rst:409
 msgid ""
 "Turn *ml* into a Python :term:`callable` object. The caller must ensure that "
 "*ml* outlives the :term:`callable`. Typically, *ml* is defined as a static "
 "variable."
 msgstr ""
 
-#: c-api/structures.rst:408
+#: c-api/structures.rst:413
 msgid ""
 "The *self* parameter will be passed as the *self* argument to the C function "
 "in ``ml->ml_meth`` when invoked. *self* can be ``NULL``."
 msgstr ""
 
-#: c-api/structures.rst:412
+#: c-api/structures.rst:417
 msgid ""
 "The :term:`callable` object's ``__module__`` attribute can be set from the "
 "given *module* argument. *module* should be a Python string, which will be "
@@ -482,71 +487,71 @@ msgid ""
 "can be set to :const:`None` or ``NULL``."
 msgstr ""
 
-#: c-api/structures.rst:418
+#: c-api/structures.rst:423
 msgid ":attr:`function.__module__`"
 msgstr ""
 
-#: c-api/structures.rst:420
+#: c-api/structures.rst:425
 msgid ""
 "The *cls* parameter will be passed as the *defining_class* argument to the C "
 "function. Must be set if :c:macro:`METH_METHOD` is set on ``ml->ml_flags``."
 msgstr ""
 
-#: c-api/structures.rst:429
+#: c-api/structures.rst:434
 msgid "Equivalent to ``PyCMethod_New(ml, self, module, NULL)``."
 msgstr ""
 
-#: c-api/structures.rst:434
+#: c-api/structures.rst:439
 msgid "Equivalent to ``PyCMethod_New(ml, self, NULL, NULL)``."
 msgstr ""
 
-#: c-api/structures.rst:438
+#: c-api/structures.rst:443
 msgid "Accessing attributes of extension types"
 msgstr ""
 
-#: c-api/structures.rst:442
+#: c-api/structures.rst:447
 msgid ""
 "Structure which describes an attribute of a type which corresponds to a C "
 "struct member. When defining a class, put a NULL-terminated array of these "
 "structures in the :c:member:`~PyTypeObject.tp_members` slot."
 msgstr ""
 
-#: c-api/structures.rst:447
+#: c-api/structures.rst:452
 msgid "Its fields are, in order:"
 msgstr ""
 
-#: c-api/structures.rst:451
+#: c-api/structures.rst:456
 msgid ""
 "Name of the member. A NULL value marks the end of a ``PyMemberDef[]`` array."
 msgstr ""
 
-#: c-api/structures.rst:454
+#: c-api/structures.rst:459
 msgid "The string should be static, no copy is made of it."
 msgstr ""
 
-#: c-api/structures.rst:458
+#: c-api/structures.rst:463
 msgid ""
 "The type of the member in the C struct. See :ref:`PyMemberDef-types` for the "
 "possible values."
 msgstr ""
 
-#: c-api/structures.rst:463
+#: c-api/structures.rst:468
 msgid ""
 "The offset in bytes that the member is located on the type’s object struct."
 msgstr ""
 
-#: c-api/structures.rst:467
+#: c-api/structures.rst:472
 msgid ""
 "Zero or more of the :ref:`PyMemberDef-flags`, combined using bitwise OR."
 msgstr ""
 
-#: c-api/structures.rst:471
+#: c-api/structures.rst:476
 msgid ""
 "The docstring, or NULL. The string should be static, no copy is made of it. "
 "Typically, it is defined using :c:macro:`PyDoc_STR`."
 msgstr ""
 
-#: c-api/structures.rst:475
+#: c-api/structures.rst:480
 msgid ""
 "By default (when :c:member:`~PyMemberDef.flags` is ``0``), members allow "
 "both read and write access. Use the :c:macro:`Py_READONLY` flag for read-"
@@ -555,7 +560,7 @@ msgid ""
 "`T_OBJECT`) members can be deleted."
 msgstr ""
 
-#: c-api/structures.rst:484
+#: c-api/structures.rst:489
 msgid ""
 "For heap-allocated types (created using :c:func:`PyType_FromSpec` or "
 "similar), ``PyMemberDef`` may contain a definition for the special member "
@@ -564,7 +569,7 @@ msgid ""
 "``Py_T_PYSSIZET`` and ``Py_READONLY``, for example::"
 msgstr ""
 
-#: c-api/structures.rst:490
+#: c-api/structures.rst:495
 msgid ""
 "static PyMemberDef spam_type_members[] = {\n"
 "    {\"__vectorcalloffset__\", Py_T_PYSSIZET,\n"
@@ -573,11 +578,11 @@ msgid ""
 "};"
 msgstr ""
 
-#: c-api/structures.rst:496
+#: c-api/structures.rst:501
 msgid "(You may need to ``#include <stddef.h>`` for :c:func:`!offsetof`.)"
 msgstr ""
 
-#: c-api/structures.rst:498
+#: c-api/structures.rst:503
 msgid ""
 "The legacy offsets :c:member:`~PyTypeObject.tp_dictoffset` and :c:member:"
 "`~PyTypeObject.tp_weaklistoffset` can be defined similarly using "
@@ -586,77 +591,77 @@ msgid ""
 "and :c:macro:`Py_TPFLAGS_MANAGED_WEAKREF` instead."
 msgstr ""
 
-#: c-api/structures.rst:506
+#: c-api/structures.rst:511
 msgid ""
 "``PyMemberDef`` is always available. Previously, it required including "
 "``\"structmember.h\"``."
 msgstr ""
 
-#: c-api/structures.rst:511
+#: c-api/structures.rst:516
 msgid ""
 "Get an attribute belonging to the object at address *obj_addr*.  The "
 "attribute is described by ``PyMemberDef`` *m*.  Returns ``NULL`` on error."
 msgstr ""
 
-#: c-api/structures.rst:517
+#: c-api/structures.rst:522
 msgid ""
 "``PyMember_GetOne`` is always available. Previously, it required including "
 "``\"structmember.h\"``."
 msgstr ""
 
-#: c-api/structures.rst:522
+#: c-api/structures.rst:527
 msgid ""
 "Set an attribute belonging to the object at address *obj_addr* to object "
 "*o*. The attribute to set is described by ``PyMemberDef`` *m*.  Returns "
 "``0`` if successful and a negative value on failure."
 msgstr ""
 
-#: c-api/structures.rst:528
+#: c-api/structures.rst:533
 msgid ""
 "``PyMember_SetOne`` is always available. Previously, it required including "
 "``\"structmember.h\"``."
 msgstr ""
 
-#: c-api/structures.rst:534
+#: c-api/structures.rst:539
 msgid "Member flags"
 msgstr ""
 
-#: c-api/structures.rst:536
+#: c-api/structures.rst:541
 msgid "The following flags can be used with :c:member:`PyMemberDef.flags`:"
 msgstr ""
 
-#: c-api/structures.rst:540
+#: c-api/structures.rst:545
 msgid "Not writable."
 msgstr ""
 
-#: c-api/structures.rst:544
+#: c-api/structures.rst:549
 msgid ""
 "Emit an ``object.__getattr__`` :ref:`audit event <audit-events>` before "
 "reading."
 msgstr ""
 
-#: c-api/structures.rst:549
+#: c-api/structures.rst:554
 msgid ""
 "Indicates that the :c:member:`~PyMemberDef.offset` of this ``PyMemberDef`` "
 "entry indicates an offset from the subclass-specific data, rather than from "
 "``PyObject``."
 msgstr ""
 
-#: c-api/structures.rst:553
+#: c-api/structures.rst:558
 msgid ""
 "Can only be used as part of :c:member:`Py_tp_members <PyTypeObject."
 "tp_members>` :c:type:`slot <PyType_Slot>` when creating a class using "
 "negative :c:member:`~PyType_Spec.basicsize`. It is mandatory in that case."
 msgstr ""
 
-#: c-api/structures.rst:558
+#: c-api/structures.rst:563
 msgid ""
 "This flag is only used in :c:type:`PyType_Slot`. When setting :c:member:"
 "`~PyTypeObject.tp_members` during class creation, Python clears it and sets :"
 "c:member:`PyMemberDef.offset` to the offset from the ``PyObject`` struct."
 msgstr ""
 
-#: c-api/structures.rst:570
+#: c-api/structures.rst:575
 msgid ""
 "The :c:macro:`!RESTRICTED`, :c:macro:`!READ_RESTRICTED` and :c:macro:`!"
 "WRITE_RESTRICTED` macros available with ``#include \"structmember.h\"`` are "
@@ -665,7 +670,7 @@ msgid ""
 "nothing."
 msgstr ""
 
-#: c-api/structures.rst:581
+#: c-api/structures.rst:586
 msgid ""
 "The :c:macro:`!READONLY` macro was renamed to :c:macro:`Py_READONLY`. The :c:"
 "macro:`!PY_AUDIT_READ` macro was renamed with the ``Py_`` prefix. The new "
@@ -674,11 +679,11 @@ msgid ""
 "names."
 msgstr ""
 
-#: c-api/structures.rst:590
+#: c-api/structures.rst:595
 msgid "Member types"
 msgstr ""
 
-#: c-api/structures.rst:592
+#: c-api/structures.rst:597
 msgid ""
 ":c:member:`PyMemberDef.type` can be one of the following macros "
 "corresponding to various C types. When the member is accessed in Python, it "
@@ -687,143 +692,143 @@ msgid ""
 "exception such as :exc:`TypeError` or :exc:`ValueError` is raised."
 msgstr ""
 
-#: c-api/structures.rst:600
+#: c-api/structures.rst:605
 msgid ""
 "Unless marked (D), attributes defined this way cannot be deleted using e.g. :"
 "keyword:`del` or :py:func:`delattr`."
 msgstr ""
 
-#: c-api/structures.rst:604
+#: c-api/structures.rst:609
 msgid "Macro name"
 msgstr ""
 
-#: c-api/structures.rst:604
+#: c-api/structures.rst:609
 msgid "C type"
 msgstr ""
 
-#: c-api/structures.rst:604
+#: c-api/structures.rst:609
 msgid "Python type"
 msgstr ""
 
-#: c-api/structures.rst:606
+#: c-api/structures.rst:611
 msgid ":c:expr:`char`"
 msgstr ""
 
-#: c-api/structures.rst:607 c-api/structures.rst:609 c-api/structures.rst:611
-#: c-api/structures.rst:613 c-api/structures.rst:615 c-api/structures.rst:616
+#: c-api/structures.rst:612 c-api/structures.rst:614 c-api/structures.rst:616
+#: c-api/structures.rst:618 c-api/structures.rst:620 c-api/structures.rst:621
 msgid ":py:class:`int`"
 msgstr ""
 
-#: c-api/structures.rst:607
+#: c-api/structures.rst:612
 msgid ":c:expr:`short`"
 msgstr ""
 
-#: c-api/structures.rst:608
+#: c-api/structures.rst:613
 msgid ":c:expr:`int`"
 msgstr ""
 
-#: c-api/structures.rst:609
+#: c-api/structures.rst:614
 msgid ":c:expr:`long`"
 msgstr ""
 
-#: c-api/structures.rst:610
+#: c-api/structures.rst:615
 msgid ":c:expr:`long long`"
 msgstr ""
 
-#: c-api/structures.rst:611
+#: c-api/structures.rst:616
 msgid ":c:expr:`unsigned char`"
 msgstr ""
 
-#: c-api/structures.rst:612
+#: c-api/structures.rst:617
 msgid ":c:expr:`unsigned int`"
 msgstr ""
 
-#: c-api/structures.rst:613
+#: c-api/structures.rst:618
 msgid ":c:expr:`unsigned short`"
 msgstr ""
 
-#: c-api/structures.rst:614
+#: c-api/structures.rst:619
 msgid ":c:expr:`unsigned long`"
 msgstr ""
 
-#: c-api/structures.rst:615
+#: c-api/structures.rst:620
 msgid ":c:expr:`unsigned long long`"
 msgstr ""
 
-#: c-api/structures.rst:616
+#: c-api/structures.rst:621
 msgid ":c:expr:`Py_ssize_t`"
 msgstr ""
 
-#: c-api/structures.rst:617
+#: c-api/structures.rst:622
 msgid ":c:expr:`float`"
 msgstr ""
 
-#: c-api/structures.rst:618
+#: c-api/structures.rst:623
 msgid ":py:class:`float`"
 msgstr ""
 
-#: c-api/structures.rst:618
+#: c-api/structures.rst:623
 msgid ":c:expr:`double`"
 msgstr ""
 
-#: c-api/structures.rst:619
+#: c-api/structures.rst:624
 msgid ":c:expr:`char` (written as 0 or 1)"
 msgstr ""
 
-#: c-api/structures.rst:619
+#: c-api/structures.rst:624
 msgid ":py:class:`bool`"
 msgstr ""
 
-#: c-api/structures.rst:621
+#: c-api/structures.rst:626
 msgid ":c:expr:`const char *` (*)"
 msgstr ""
 
-#: c-api/structures.rst:622
+#: c-api/structures.rst:627
 msgid ":py:class:`str` (RO)"
 msgstr ""
 
-#: c-api/structures.rst:622
+#: c-api/structures.rst:627
 msgid ":c:expr:`const char[]` (*)"
 msgstr ""
 
-#: c-api/structures.rst:623
+#: c-api/structures.rst:628
 msgid ":c:expr:`char` (0-127)"
 msgstr ""
 
-#: c-api/structures.rst:623
+#: c-api/structures.rst:628
 msgid ":py:class:`str` (**)"
 msgstr ""
 
-#: c-api/structures.rst:624
+#: c-api/structures.rst:629
 msgid ":c:expr:`PyObject *`"
 msgstr ""
 
-#: c-api/structures.rst:624
+#: c-api/structures.rst:629
 msgid ":py:class:`object` (D)"
 msgstr ""
 
-#: c-api/structures.rst:627
+#: c-api/structures.rst:632
 msgid ""
 "(*): Zero-terminated, UTF8-encoded C string. With :c:macro:`!Py_T_STRING` "
 "the C representation is a pointer; with :c:macro:`!Py_T_STRING_INPLACE` the "
 "string is stored directly in the structure."
 msgstr ""
 
-#: c-api/structures.rst:632
+#: c-api/structures.rst:637
 msgid "(**): String of length 1. Only ASCII is accepted."
 msgstr ""
 
-#: c-api/structures.rst:634
+#: c-api/structures.rst:639
 msgid "(RO): Implies :c:macro:`Py_READONLY`."
 msgstr ""
 
-#: c-api/structures.rst:636
+#: c-api/structures.rst:641
 msgid ""
 "(D): Can be deleted, in which case the pointer is set to ``NULL``. Reading a "
 "``NULL`` pointer raises :py:exc:`AttributeError`."
 msgstr ""
 
-#: c-api/structures.rst:662
+#: c-api/structures.rst:667
 msgid ""
 "In previous versions, the macros were only available with ``#include "
 "\"structmember.h\"`` and were named without the ``Py_`` prefix (e.g. as "
@@ -831,174 +836,174 @@ msgid ""
 "with the following deprecated types:"
 msgstr ""
 
-#: c-api/structures.rst:670
+#: c-api/structures.rst:675
 msgid ""
 "Like ``Py_T_OBJECT_EX``, but ``NULL`` is converted to ``None``. This results "
 "in surprising behavior in Python: deleting the attribute effectively sets it "
 "to ``None``."
 msgstr ""
 
-#: c-api/structures.rst:676
+#: c-api/structures.rst:681
 msgid "Always ``None``. Must be used with :c:macro:`Py_READONLY`."
 msgstr ""
 
-#: c-api/structures.rst:679
+#: c-api/structures.rst:684
 msgid "Defining Getters and Setters"
 msgstr ""
 
-#: c-api/structures.rst:683
+#: c-api/structures.rst:688
 msgid ""
 "Structure to define property-like access for a type. See also description of "
 "the :c:member:`PyTypeObject.tp_getset` slot."
 msgstr ""
 
-#: c-api/structures.rst:688
+#: c-api/structures.rst:693
 msgid "attribute name"
 msgstr ""
 
-#: c-api/structures.rst:692
+#: c-api/structures.rst:697
 msgid "C function to get the attribute."
 msgstr ""
 
-#: c-api/structures.rst:696
+#: c-api/structures.rst:701
 msgid ""
 "Optional C function to set or delete the attribute. If ``NULL``, the "
 "attribute is read-only."
 msgstr ""
 
-#: c-api/structures.rst:701
+#: c-api/structures.rst:706
 msgid "optional docstring"
 msgstr ""
 
-#: c-api/structures.rst:705
+#: c-api/structures.rst:710
 msgid ""
 "Optional user data pointer, providing additional data for getter and setter."
 msgstr ""
 
-#: c-api/structures.rst:709
+#: c-api/structures.rst:714
 msgid ""
 "The ``get`` function takes one :c:expr:`PyObject*` parameter (the instance) "
 "and a user data pointer (the associated ``closure``):"
 msgstr ""
 
-#: c-api/structures.rst:712
+#: c-api/structures.rst:717
 msgid ""
 "It should return a new reference on success or ``NULL`` with a set exception "
 "on failure."
 msgstr ""
 
-#: c-api/structures.rst:717
+#: c-api/structures.rst:722
 msgid ""
 "``set`` functions take two :c:expr:`PyObject*` parameters (the instance and "
 "the value to be set) and a user data pointer (the associated ``closure``):"
 msgstr ""
 
-#: c-api/structures.rst:720
+#: c-api/structures.rst:725
 msgid ""
 "In case the attribute should be deleted the second parameter is ``NULL``. "
 "Should return ``0`` on success or ``-1`` with a set exception on failure."
 msgstr ""
 
-#: c-api/structures.rst:380
+#: c-api/structures.rst:385
 msgid "built-in function"
 msgstr ""
 
-#: c-api/structures.rst:370
+#: c-api/structures.rst:375
 msgid "classmethod"
 msgstr ""
 
-#: c-api/structures.rst:380
+#: c-api/structures.rst:385
 msgid "staticmethod"
 msgstr ""
 
-#: c-api/structures.rst:563
+#: c-api/structures.rst:568
 msgid "READ_RESTRICTED (C macro)"
 msgstr ""
 
-#: c-api/structures.rst:563
+#: c-api/structures.rst:568
 msgid "WRITE_RESTRICTED (C macro)"
 msgstr ""
 
-#: c-api/structures.rst:563
+#: c-api/structures.rst:568
 msgid "RESTRICTED (C macro)"
 msgstr ""
 
-#: c-api/structures.rst:576
+#: c-api/structures.rst:581
 msgid "READONLY (C macro)"
 msgstr ""
 
-#: c-api/structures.rst:639
+#: c-api/structures.rst:644
 msgid "T_BYTE (C macro)"
 msgstr ""
 
-#: c-api/structures.rst:639
+#: c-api/structures.rst:644
 msgid "T_SHORT (C macro)"
 msgstr ""
 
-#: c-api/structures.rst:639
+#: c-api/structures.rst:644
 msgid "T_INT (C macro)"
 msgstr ""
 
-#: c-api/structures.rst:639
+#: c-api/structures.rst:644
 msgid "T_LONG (C macro)"
 msgstr ""
 
-#: c-api/structures.rst:639
+#: c-api/structures.rst:644
 msgid "T_LONGLONG (C macro)"
 msgstr ""
 
-#: c-api/structures.rst:639
+#: c-api/structures.rst:644
 msgid "T_UBYTE (C macro)"
 msgstr ""
 
-#: c-api/structures.rst:639
+#: c-api/structures.rst:644
 msgid "T_USHORT (C macro)"
 msgstr ""
 
-#: c-api/structures.rst:639
+#: c-api/structures.rst:644
 msgid "T_UINT (C macro)"
 msgstr ""
 
-#: c-api/structures.rst:639
+#: c-api/structures.rst:644
 msgid "T_ULONG (C macro)"
 msgstr ""
 
-#: c-api/structures.rst:639
+#: c-api/structures.rst:644
 msgid "T_ULONGULONG (C macro)"
 msgstr ""
 
-#: c-api/structures.rst:639
+#: c-api/structures.rst:644
 msgid "T_PYSSIZET (C macro)"
 msgstr ""
 
-#: c-api/structures.rst:639
+#: c-api/structures.rst:644
 msgid "T_FLOAT (C macro)"
 msgstr ""
 
-#: c-api/structures.rst:639
+#: c-api/structures.rst:644
 msgid "T_DOUBLE (C macro)"
 msgstr ""
 
-#: c-api/structures.rst:639
+#: c-api/structures.rst:644
 msgid "T_BOOL (C macro)"
 msgstr ""
 
-#: c-api/structures.rst:639
+#: c-api/structures.rst:644
 msgid "T_CHAR (C macro)"
 msgstr ""
 
-#: c-api/structures.rst:639
+#: c-api/structures.rst:644
 msgid "T_STRING (C macro)"
 msgstr ""
 
-#: c-api/structures.rst:639
+#: c-api/structures.rst:644
 msgid "T_STRING_INPLACE (C macro)"
 msgstr ""
 
-#: c-api/structures.rst:639
+#: c-api/structures.rst:644
 msgid "T_OBJECT_EX (C macro)"
 msgstr ""
 
-#: c-api/structures.rst:639
+#: c-api/structures.rst:644
 msgid "structmember.h"
 msgstr ""
diff --git a/c-api/type.po b/c-api/type.po
index e1315de41..51cef7cbc 100644
--- a/c-api/type.po
+++ b/c-api/type.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -436,20 +436,22 @@ msgid ""
 "If negative, the absolute value specifies how much space instances of the "
 "class need *in addition* to the superclass. Use :c:func:"
 "`PyObject_GetTypeData` to get a pointer to subclass-specific memory reserved "
-"this way."
+"this way. For negative :c:member:`!basicsize`, Python will insert padding "
+"when needed to meet :c:member:`~PyTypeObject.tp_basicsize`'s alignment "
+"requirements."
 msgstr ""
 
-#: c-api/type.rst:403
+#: c-api/type.rst:406
 msgid "Previously, this field could not be negative."
 msgstr ""
 
-#: c-api/type.rst:407
+#: c-api/type.rst:410
 msgid ""
 "Size of one element of a variable-size type, in bytes. Used to set :c:member:"
 "`PyTypeObject.tp_itemsize`. See ``tp_itemsize`` documentation for caveats."
 msgstr ""
 
-#: c-api/type.rst:411
+#: c-api/type.rst:414
 msgid ""
 "If zero, :c:member:`~PyTypeObject.tp_itemsize` is inherited. Extending "
 "arbitrary variable-sized classes is dangerous, since some types use a fixed "
@@ -458,58 +460,58 @@ msgid ""
 "only possible in the following situations:"
 msgstr ""
 
-#: c-api/type.rst:418
+#: c-api/type.rst:421
 msgid ""
 "The base is not variable-sized (its :c:member:`~PyTypeObject.tp_itemsize`)."
 msgstr ""
 
-#: c-api/type.rst:420
+#: c-api/type.rst:423
 msgid ""
 "The requested :c:member:`PyType_Spec.basicsize` is positive, suggesting that "
 "the memory layout of the base class is known."
 msgstr ""
 
-#: c-api/type.rst:422
+#: c-api/type.rst:425
 msgid ""
 "The requested :c:member:`PyType_Spec.basicsize` is zero, suggesting that the "
 "subclass does not access the instance's memory directly."
 msgstr ""
 
-#: c-api/type.rst:425
+#: c-api/type.rst:428
 msgid "With the :c:macro:`Py_TPFLAGS_ITEMS_AT_END` flag."
 msgstr ""
 
-#: c-api/type.rst:429
+#: c-api/type.rst:432
 msgid "Type flags, used to set :c:member:`PyTypeObject.tp_flags`."
 msgstr ""
 
-#: c-api/type.rst:431
+#: c-api/type.rst:434
 msgid ""
 "If the ``Py_TPFLAGS_HEAPTYPE`` flag is not set, :c:func:"
 "`PyType_FromSpecWithBases` sets it automatically."
 msgstr ""
 
-#: c-api/type.rst:436
+#: c-api/type.rst:439
 msgid ""
 "Array of :c:type:`PyType_Slot` structures. Terminated by the special slot "
 "value ``{0, NULL}``."
 msgstr ""
 
-#: c-api/type.rst:439
+#: c-api/type.rst:442
 msgid "Each slot ID should be specified at most once."
 msgstr ""
 
-#: c-api/type.rst:449
+#: c-api/type.rst:452
 msgid ""
 "Structure defining optional functionality of a type, containing a slot ID "
 "and a value pointer."
 msgstr ""
 
-#: c-api/type.rst:454
+#: c-api/type.rst:457
 msgid "A slot ID."
 msgstr ""
 
-#: c-api/type.rst:456
+#: c-api/type.rst:459
 msgid ""
 "Slot IDs are named like the field names of the structures :c:type:"
 "`PyTypeObject`, :c:type:`PyNumberMethods`, :c:type:`PySequenceMethods`, :c:"
@@ -517,42 +519,42 @@ msgid ""
 "prefix. For example, use:"
 msgstr ""
 
-#: c-api/type.rst:462
+#: c-api/type.rst:465
 msgid "``Py_tp_dealloc`` to set :c:member:`PyTypeObject.tp_dealloc`"
 msgstr ""
 
-#: c-api/type.rst:463
+#: c-api/type.rst:466
 msgid "``Py_nb_add`` to set :c:member:`PyNumberMethods.nb_add`"
 msgstr ""
 
-#: c-api/type.rst:464
+#: c-api/type.rst:467
 msgid "``Py_sq_length`` to set :c:member:`PySequenceMethods.sq_length`"
 msgstr ""
 
-#: c-api/type.rst:466
+#: c-api/type.rst:469
 msgid ""
 "The following “offset” fields cannot be set using :c:type:`PyType_Slot`:"
 msgstr ""
 
-#: c-api/type.rst:468
+#: c-api/type.rst:471
 msgid ""
 ":c:member:`~PyTypeObject.tp_weaklistoffset` (use :c:macro:"
 "`Py_TPFLAGS_MANAGED_WEAKREF` instead if possible)"
 msgstr ""
 
-#: c-api/type.rst:470
+#: c-api/type.rst:473
 msgid ""
 ":c:member:`~PyTypeObject.tp_dictoffset` (use :c:macro:"
 "`Py_TPFLAGS_MANAGED_DICT` instead if possible)"
 msgstr ""
 
-#: c-api/type.rst:472
+#: c-api/type.rst:475
 msgid ""
 ":c:member:`~PyTypeObject.tp_vectorcall_offset` (use "
 "``\"__vectorcalloffset__\"`` in :ref:`PyMemberDef <pymemberdef-offsets>`)"
 msgstr ""
 
-#: c-api/type.rst:476
+#: c-api/type.rst:479
 msgid ""
 "If it is not possible to switch to a ``MANAGED`` flag (for example, for "
 "vectorcall or to support Python older than 3.12), specify the offset in :c:"
@@ -560,48 +562,48 @@ msgid ""
 "documentation <pymemberdef-offsets>` for details."
 msgstr ""
 
-#: c-api/type.rst:482
+#: c-api/type.rst:485
 msgid "The following fields cannot be set at all when creating a heap type:"
 msgstr ""
 
-#: c-api/type.rst:484
+#: c-api/type.rst:487
 msgid ""
 ":c:member:`~PyTypeObject.tp_vectorcall` (use :c:member:`~PyTypeObject."
 "tp_new` and/or :c:member:`~PyTypeObject.tp_init`)"
 msgstr ""
 
-#: c-api/type.rst:488
+#: c-api/type.rst:491
 msgid ""
 "Internal fields: :c:member:`~PyTypeObject.tp_dict`, :c:member:`~PyTypeObject."
 "tp_mro`, :c:member:`~PyTypeObject.tp_cache`, :c:member:`~PyTypeObject."
 "tp_subclasses`, and :c:member:`~PyTypeObject.tp_weaklist`."
 msgstr ""
 
-#: c-api/type.rst:495
+#: c-api/type.rst:498
 msgid ""
 "Setting :c:data:`Py_tp_bases` or :c:data:`Py_tp_base` may be problematic on "
 "some platforms. To avoid issues, use the *bases* argument of :c:func:"
 "`PyType_FromSpecWithBases` instead."
 msgstr ""
 
-#: c-api/type.rst:502
+#: c-api/type.rst:503
 msgid "Slots in :c:type:`PyBufferProcs` may be set in the unlimited API."
 msgstr ""
 
-#: c-api/type.rst:504
+#: c-api/type.rst:506
 msgid ""
 ":c:member:`~PyBufferProcs.bf_getbuffer` and :c:member:`~PyBufferProcs."
 "bf_releasebuffer` are now available under the :ref:`limited API <limited-c-"
 "api>`."
 msgstr ""
 
-#: c-api/type.rst:511
+#: c-api/type.rst:513
 msgid ""
 "The desired value of the slot. In most cases, this is a pointer to a "
 "function."
 msgstr ""
 
-#: c-api/type.rst:514
+#: c-api/type.rst:516
 msgid "Slots other than ``Py_tp_doc`` may not be ``NULL``."
 msgstr ""
 
diff --git a/c-api/typeobj.po b/c-api/typeobj.po
index 43276425f..e99a7ab71 100644
--- a/c-api/typeobj.po
+++ b/c-api/typeobj.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -17,7 +17,7 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 
 #: c-api/typeobj.rst:6
-msgid "Type Objects"
+msgid "Type Object Structures"
 msgstr ""
 
 #: c-api/typeobj.rst:8
@@ -1117,7 +1117,7 @@ msgstr ""
 #: c-api/typeobj.rst:475
 msgid ""
 "The structure definition for :c:type:`PyTypeObject` can be found in :file:"
-"`Include/object.h`.  For convenience of reference, this repeats the "
+"`Include/cpython/object.h`.  For convenience of reference, this repeats the "
 "definition found there:"
 msgstr ""
 
@@ -1235,21 +1235,21 @@ msgid ""
 "instances *do* count as references."
 msgstr ""
 
-#: c-api/typeobj.rst:526 c-api/typeobj.rst:562 c-api/typeobj.rst:649
-#: c-api/typeobj.rst:762 c-api/typeobj.rst:796 c-api/typeobj.rst:838
-#: c-api/typeobj.rst:867 c-api/typeobj.rst:912 c-api/typeobj.rst:950
-#: c-api/typeobj.rst:997 c-api/typeobj.rst:1032 c-api/typeobj.rst:1082
-#: c-api/typeobj.rst:1102 c-api/typeobj.rst:1134 c-api/typeobj.rst:1172
-#: c-api/typeobj.rst:1207 c-api/typeobj.rst:1272 c-api/typeobj.rst:1321
-#: c-api/typeobj.rst:1369 c-api/typeobj.rst:1505 c-api/typeobj.rst:1602
-#: c-api/typeobj.rst:1650 c-api/typeobj.rst:1678 c-api/typeobj.rst:1722
-#: c-api/typeobj.rst:1780 c-api/typeobj.rst:1827 c-api/typeobj.rst:1888
-#: c-api/typeobj.rst:1951 c-api/typeobj.rst:2011 c-api/typeobj.rst:2034
-#: c-api/typeobj.rst:2068 c-api/typeobj.rst:2117 c-api/typeobj.rst:2140
+#: c-api/typeobj.rst:526 c-api/typeobj.rst:565 c-api/typeobj.rst:687
+#: c-api/typeobj.rst:804 c-api/typeobj.rst:838 c-api/typeobj.rst:880
+#: c-api/typeobj.rst:909 c-api/typeobj.rst:954 c-api/typeobj.rst:992
+#: c-api/typeobj.rst:1039 c-api/typeobj.rst:1074 c-api/typeobj.rst:1124
+#: c-api/typeobj.rst:1144 c-api/typeobj.rst:1176 c-api/typeobj.rst:1214
+#: c-api/typeobj.rst:1249 c-api/typeobj.rst:1314 c-api/typeobj.rst:1363
+#: c-api/typeobj.rst:1411 c-api/typeobj.rst:1547 c-api/typeobj.rst:1644
+#: c-api/typeobj.rst:1692 c-api/typeobj.rst:1720 c-api/typeobj.rst:1764
+#: c-api/typeobj.rst:1822 c-api/typeobj.rst:1869 c-api/typeobj.rst:1930
+#: c-api/typeobj.rst:1993 c-api/typeobj.rst:2053 c-api/typeobj.rst:2076
+#: c-api/typeobj.rst:2110 c-api/typeobj.rst:2159 c-api/typeobj.rst:2182
 msgid "**Inheritance:**"
 msgstr ""
 
-#: c-api/typeobj.rst:564 c-api/typeobj.rst:608
+#: c-api/typeobj.rst:567 c-api/typeobj.rst:611
 msgid "This field is not inherited by subtypes."
 msgstr ""
 
@@ -1277,8 +1277,8 @@ msgid ""
 "class. :c:func:`PyType_Ready` will not change this field if it is non-zero."
 msgstr ""
 
-#: c-api/typeobj.rst:723 c-api/typeobj.rst:932 c-api/typeobj.rst:1629
-#: c-api/typeobj.rst:1782 c-api/typeobj.rst:1873 c-api/typeobj.rst:2119
+#: c-api/typeobj.rst:765 c-api/typeobj.rst:974 c-api/typeobj.rst:1671
+#: c-api/typeobj.rst:1824 c-api/typeobj.rst:1915 c-api/typeobj.rst:2161
 msgid "This field is inherited by subtypes."
 msgstr ""
 
@@ -1320,11 +1320,17 @@ msgid ""
 "types>`, this field has a special internal meaning."
 msgstr ""
 
-#: c-api/typeobj.rst:568
+#: c-api/typeobj.rst:562
+msgid ""
+"This field should be accessed using the :c:func:`Py_SIZE()` and :c:func:"
+"`Py_SET_SIZE()` macros."
+msgstr ""
+
+#: c-api/typeobj.rst:571
 msgid "PyTypeObject Slots"
 msgstr ""
 
-#: c-api/typeobj.rst:570
+#: c-api/typeobj.rst:573
 msgid ""
 "Each slot has a section describing inheritance.  If :c:func:`PyType_Ready` "
 "may set a value when the field is set to ``NULL`` then there will also be a "
@@ -1332,7 +1338,7 @@ msgid ""
 "`PyBaseObject_Type` and :c:data:`PyType_Type` effectively act as defaults.)"
 msgstr ""
 
-#: c-api/typeobj.rst:577
+#: c-api/typeobj.rst:580
 msgid ""
 "Pointer to a NUL-terminated string containing the name of the type. For "
 "types that are accessible as module globals, the string should be the full "
@@ -1344,14 +1350,14 @@ msgid ""
 "tp_name` initializer ``\"P.Q.M.T\"``."
 msgstr ""
 
-#: c-api/typeobj.rst:585
+#: c-api/typeobj.rst:588
 msgid ""
 "For :ref:`dynamically allocated type objects <heap-types>`, this should just "
 "be the type name, and the module name explicitly stored in the type dict as "
 "the value for key ``'__module__'``."
 msgstr ""
 
-#: c-api/typeobj.rst:590
+#: c-api/typeobj.rst:593
 msgid ""
 "For :ref:`statically allocated type objects <static-types>`, the *tp_name* "
 "field should contain a dot. Everything before the last dot is made "
@@ -1359,7 +1365,7 @@ msgid ""
 "the last dot is made accessible as the :attr:`~type.__name__` attribute."
 msgstr ""
 
-#: c-api/typeobj.rst:596
+#: c-api/typeobj.rst:599
 msgid ""
 "If no dot is present, the entire :c:member:`~PyTypeObject.tp_name` field is "
 "made accessible as the :attr:`~type.__name__` attribute, and the :attr:"
@@ -1369,80 +1375,136 @@ msgid ""
 "created with pydoc."
 msgstr ""
 
-#: c-api/typeobj.rst:602
+#: c-api/typeobj.rst:605
 msgid ""
 "This field must not be ``NULL``.  It is the only required field in :c:func:"
 "`PyTypeObject` (other than potentially :c:member:`~PyTypeObject."
 "tp_itemsize`)."
 msgstr ""
 
-#: c-api/typeobj.rst:614
+#: c-api/typeobj.rst:617
 msgid ""
 "These fields allow calculating the size in bytes of instances of the type."
 msgstr ""
 
-#: c-api/typeobj.rst:616
+#: c-api/typeobj.rst:619
 msgid ""
 "There are two kinds of types: types with fixed-length instances have a zero :"
-"c:member:`~PyTypeObject.tp_itemsize` field, types with variable-length "
-"instances have a non-zero :c:member:`~PyTypeObject.tp_itemsize` field.  For "
-"a type with fixed-length instances, all instances have the same size, given "
-"in :c:member:`~PyTypeObject.tp_basicsize`."
+"c:member:`!tp_itemsize` field, types with variable-length instances have a "
+"non-zero :c:member:`!tp_itemsize` field.  For a type with fixed-length "
+"instances, all instances have the same size, given in :c:member:`!"
+"tp_basicsize`. (Exceptions to this rule can be made using :c:func:"
+"`PyUnstable_Object_GC_NewWithExtraData`.)"
 msgstr ""
 
-#: c-api/typeobj.rst:621
+#: c-api/typeobj.rst:626
 msgid ""
 "For a type with variable-length instances, the instances must have an :c:"
-"member:`~PyVarObject.ob_size` field, and the instance size is :c:member:"
-"`~PyTypeObject.tp_basicsize` plus N times :c:member:`~PyTypeObject."
-"tp_itemsize`, where N is the \"length\" of the object.  The value of N is "
-"typically stored in the instance's :c:member:`~PyVarObject.ob_size` field.  "
-"There are exceptions:  for example, ints use a negative :c:member:"
-"`~PyVarObject.ob_size` to indicate a negative number, and N is "
-"``abs(ob_size)`` there.  Also, the presence of an :c:member:`~PyVarObject."
-"ob_size` field in the instance layout doesn't mean that the instance "
-"structure is variable-length (for example, the structure for the list type "
-"has fixed-length instances, yet those instances have a meaningful :c:member:"
-"`~PyVarObject.ob_size` field)."
+"member:`~PyVarObject.ob_size` field, and the instance size is :c:member:`!"
+"tp_basicsize` plus N times :c:member:`!tp_itemsize`, where N is the "
+"\"length\" of the object."
 msgstr ""
 
-#: c-api/typeobj.rst:632
+#: c-api/typeobj.rst:631
 msgid ""
-"The basic size includes the fields in the instance declared by the macro :c:"
-"macro:`PyObject_HEAD` or :c:macro:`PyObject_VAR_HEAD` (whichever is used to "
-"declare the instance struct) and this in turn includes the  :c:member:"
-"`~PyObject._ob_prev` and :c:member:`~PyObject._ob_next` fields if they are "
-"present.  This means that the only correct way to get an initializer for "
-"the :c:member:`~PyTypeObject.tp_basicsize` is to use the ``sizeof`` operator "
-"on the struct used to declare the instance layout. The basic size does not "
-"include the GC header size."
+"Functions like :c:func:`PyObject_NewVar` will take the value of N as an "
+"argument, and store in the instance's :c:member:`~PyVarObject.ob_size` "
+"field. Note that the :c:member:`~PyVarObject.ob_size` field may later be "
+"used for other purposes. For example, :py:type:`int` instances use the bits "
+"of :c:member:`~PyVarObject.ob_size` in an implementation-defined way; the "
+"underlying storage and its size should be acessed using :c:func:"
+"`PyLong_Export`."
 msgstr ""
 
-#: c-api/typeobj.rst:640
+#: c-api/typeobj.rst:641
 msgid ""
-"A note about alignment: if the variable items require a particular "
-"alignment, this should be taken care of by the value of :c:member:"
-"`~PyTypeObject.tp_basicsize`.  Example: suppose a type implements an array "
-"of ``double``. :c:member:`~PyTypeObject.tp_itemsize` is ``sizeof(double)``. "
-"It is the programmer's responsibility that :c:member:`~PyTypeObject."
-"tp_basicsize` is a multiple of ``sizeof(double)`` (assuming this is the "
-"alignment requirement for ``double``)."
+"The :c:member:`~PyVarObject.ob_size` field should be accessed using the :c:"
+"func:`Py_SIZE()` and :c:func:`Py_SET_SIZE()` macros."
 msgstr ""
 
-#: c-api/typeobj.rst:647
+#: c-api/typeobj.rst:644
 msgid ""
-"For any type with variable-length instances, this field must not be ``NULL``."
+"Also, the presence of an :c:member:`~PyVarObject.ob_size` field in the "
+"instance layout doesn't mean that the instance structure is variable-length. "
+"For example, the :py:type:`list` type has fixed-length instances, yet those "
+"instances have a :c:member:`~PyVarObject.ob_size` field. (As with :py:type:"
+"`int`, avoid reading lists' :c:member:`!ob_size` directly. Call :c:func:"
+"`PyList_Size` instead.)"
 msgstr ""
 
 #: c-api/typeobj.rst:651
 msgid ""
-"These fields are inherited separately by subtypes.  If the base type has a "
-"non-zero :c:member:`~PyTypeObject.tp_itemsize`, it is generally not safe to "
-"set :c:member:`~PyTypeObject.tp_itemsize` to a different non-zero value in a "
-"subtype (though this depends on the implementation of the base type)."
+"The :c:member:`!tp_basicsize` includes size needed for data of the type's :c:"
+"member:`~PyTypeObject.tp_base`, plus any extra data needed by each instance."
+msgstr ""
+
+#: c-api/typeobj.rst:655
+msgid ""
+"The  correct way to set :c:member:`!tp_basicsize` is to use the ``sizeof`` "
+"operator on the struct used to declare the instance layout. This struct must "
+"include the struct used to declare the base type. In other words, :c:member:"
+"`!tp_basicsize` must be greater than or equal to the base's :c:member:`!"
+"tp_basicsize`."
+msgstr ""
+
+#: c-api/typeobj.rst:661
+msgid ""
+"Since every type is a subtype of :py:type:`object`, this struct must "
+"include :c:type:`PyObject` or :c:type:`PyVarObject` (depending on whether :c:"
+"member:`~PyVarObject.ob_size` should be included). These are usually defined "
+"by the macro :c:macro:`PyObject_HEAD` or :c:macro:`PyObject_VAR_HEAD`, "
+"respectively."
+msgstr ""
+
+#: c-api/typeobj.rst:667
+msgid ""
+"The basic size does not include the GC header size, as that header is not "
+"part of :c:macro:`PyObject_HEAD`."
+msgstr ""
+
+#: c-api/typeobj.rst:670
+msgid ""
+"For cases where struct used to declare the base type is unknown, see :c:"
+"member:`PyType_Spec.basicsize` and :c:func:`PyType_FromMetaclass`."
+msgstr ""
+
+#: c-api/typeobj.rst:673
+msgid "Notes about alignment:"
+msgstr ""
+
+#: c-api/typeobj.rst:675
+msgid ""
+":c:member:`!tp_basicsize` must be a multiple of ``_Alignof(PyObject)``. When "
+"using ``sizeof`` on a ``struct`` that includes :c:macro:`PyObject_HEAD`, as "
+"recommended, the compiler ensures this. When not using a C ``struct``, or "
+"when using compiler extensions like ``__attribute__((packed))``, it is up to "
+"you."
+msgstr ""
+
+#: c-api/typeobj.rst:680
+msgid ""
+"If the variable items require a particular alignment, :c:member:`!"
+"tp_basicsize` and :c:member:`!tp_itemsize` must each be a multiple of that "
+"alignment. For example, if a type's variable part stores a ``double``, it is "
+"your responsibility that both fields are a multiple of ``_Alignof(double)``."
+msgstr ""
+
+#: c-api/typeobj.rst:689
+msgid ""
+"These fields are inherited separately by subtypes. (That is, if the field is "
+"set to zero, :c:func:`PyType_Ready` will copy the value from the base type, "
+"indicating that the instances do not need additional storage.)"
 msgstr ""
 
-#: c-api/typeobj.rst:659
+#: c-api/typeobj.rst:694
+msgid ""
+"If the base type has a non-zero :c:member:`~PyTypeObject.tp_itemsize`, it is "
+"generally not safe to set :c:member:`~PyTypeObject.tp_itemsize` to a "
+"different non-zero value in a subtype (though this depends on the "
+"implementation of the base type)."
+msgstr ""
+
+#: c-api/typeobj.rst:701
 msgid ""
 "A pointer to the instance destructor function.  This function must be "
 "defined unless the type guarantees that its instances will never be "
@@ -1450,11 +1512,11 @@ msgid ""
 "The function signature is::"
 msgstr ""
 
-#: c-api/typeobj.rst:663
+#: c-api/typeobj.rst:705
 msgid "void tp_dealloc(PyObject *self);"
 msgstr ""
 
-#: c-api/typeobj.rst:665
+#: c-api/typeobj.rst:707
 msgid ""
 "The destructor function is called by the :c:func:`Py_DECREF` and :c:func:"
 "`Py_XDECREF` macros when the new reference count is zero.  At this point, "
@@ -1472,14 +1534,14 @@ msgid ""
 "allocated using :c:macro:`PyObject_GC_New` or :c:macro:`PyObject_GC_NewVar`."
 msgstr ""
 
-#: c-api/typeobj.rst:680
+#: c-api/typeobj.rst:722
 msgid ""
 "If the type supports garbage collection (has the :c:macro:"
 "`Py_TPFLAGS_HAVE_GC` flag bit set), the destructor should call :c:func:"
 "`PyObject_GC_UnTrack` before clearing any member fields."
 msgstr ""
 
-#: c-api/typeobj.rst:684
+#: c-api/typeobj.rst:726
 msgid ""
 "static void foo_dealloc(foo_object *self) {\n"
 "    PyObject_GC_UnTrack(self);\n"
@@ -1488,7 +1550,7 @@ msgid ""
 "}"
 msgstr ""
 
-#: c-api/typeobj.rst:692
+#: c-api/typeobj.rst:734
 msgid ""
 "Finally, if the type is heap allocated (:c:macro:`Py_TPFLAGS_HEAPTYPE`), the "
 "deallocator should release the owned reference to its type object (via :c:"
@@ -1496,7 +1558,7 @@ msgid ""
 "dangling pointers, the recommended way to achieve this is:"
 msgstr ""
 
-#: c-api/typeobj.rst:698
+#: c-api/typeobj.rst:740
 msgid ""
 "static void foo_dealloc(foo_object *self) {\n"
 "    PyTypeObject *tp = Py_TYPE(self);\n"
@@ -1506,7 +1568,7 @@ msgid ""
 "}"
 msgstr ""
 
-#: c-api/typeobj.rst:709
+#: c-api/typeobj.rst:751
 msgid ""
 "In a garbage collected Python, :c:member:`!tp_dealloc` may be called from "
 "any Python thread, not just the thread which created the object (if the "
@@ -1519,28 +1581,28 @@ msgid ""
 "member:`!tp_dealloc` will not violate any assumptions of the library."
 msgstr ""
 
-#: c-api/typeobj.rst:728
+#: c-api/typeobj.rst:770
 msgid ""
 "An optional offset to a per-instance function that implements calling the "
 "object using the :ref:`vectorcall protocol <vectorcall>`, a more efficient "
 "alternative of the simpler :c:member:`~PyTypeObject.tp_call`."
 msgstr ""
 
-#: c-api/typeobj.rst:733
+#: c-api/typeobj.rst:775
 msgid ""
 "This field is only used if the flag :c:macro:`Py_TPFLAGS_HAVE_VECTORCALL` is "
 "set. If so, this must be a positive integer containing the offset in the "
 "instance of a :c:type:`vectorcallfunc` pointer."
 msgstr ""
 
-#: c-api/typeobj.rst:737
+#: c-api/typeobj.rst:779
 msgid ""
 "The *vectorcallfunc* pointer may be ``NULL``, in which case the instance "
 "behaves as if :c:macro:`Py_TPFLAGS_HAVE_VECTORCALL` was not set: calling the "
 "instance falls back to :c:member:`~PyTypeObject.tp_call`."
 msgstr ""
 
-#: c-api/typeobj.rst:741
+#: c-api/typeobj.rst:783
 msgid ""
 "Any class that sets ``Py_TPFLAGS_HAVE_VECTORCALL`` must also set :c:member:"
 "`~PyTypeObject.tp_call` and make sure its behaviour is consistent with the "
@@ -1548,13 +1610,13 @@ msgid ""
 "`PyVectorcall_Call`."
 msgstr ""
 
-#: c-api/typeobj.rst:748
+#: c-api/typeobj.rst:790
 msgid ""
 "Before version 3.8, this slot was named ``tp_print``. In Python 2.x, it was "
 "used for printing to a file. In Python 3.0 to 3.7, it was unused."
 msgstr ""
 
-#: c-api/typeobj.rst:754
+#: c-api/typeobj.rst:796
 msgid ""
 "Before version 3.12, it was not recommended for :ref:`mutable heap types "
 "<heap-types>` to implement the vectorcall protocol. When a user sets :attr:"
@@ -1564,7 +1626,7 @@ msgid ""
 "`Py_TPFLAGS_HAVE_VECTORCALL` flag."
 msgstr ""
 
-#: c-api/typeobj.rst:764
+#: c-api/typeobj.rst:806
 msgid ""
 "This field is always inherited. However, the :c:macro:"
 "`Py_TPFLAGS_HAVE_VECTORCALL` flag is not always inherited. If it's not set, "
@@ -1572,11 +1634,11 @@ msgid ""
 "func:`PyVectorcall_Call` is explicitly called."
 msgstr ""
 
-#: c-api/typeobj.rst:773
+#: c-api/typeobj.rst:815
 msgid "An optional pointer to the get-attribute-string function."
 msgstr ""
 
-#: c-api/typeobj.rst:775
+#: c-api/typeobj.rst:817
 msgid ""
 "This field is deprecated.  When it is defined, it should point to a function "
 "that acts the same as the :c:member:`~PyTypeObject.tp_getattro` function, "
@@ -1584,13 +1646,13 @@ msgid ""
 "attribute name."
 msgstr ""
 
-#: c-api/typeobj.rst:973
+#: c-api/typeobj.rst:1015
 msgid ""
 "Group: :c:member:`~PyTypeObject.tp_getattr`, :c:member:`~PyTypeObject."
 "tp_getattro`"
 msgstr ""
 
-#: c-api/typeobj.rst:783
+#: c-api/typeobj.rst:825
 msgid ""
 "This field is inherited by subtypes together with :c:member:`~PyTypeObject."
 "tp_getattro`: a subtype inherits both :c:member:`~PyTypeObject.tp_getattr` "
@@ -1599,12 +1661,12 @@ msgid ""
 "tp_getattro` are both ``NULL``."
 msgstr ""
 
-#: c-api/typeobj.rst:986
+#: c-api/typeobj.rst:1028
 msgid ""
 "An optional pointer to the function for setting and deleting attributes."
 msgstr ""
 
-#: c-api/typeobj.rst:792
+#: c-api/typeobj.rst:834
 msgid ""
 "This field is deprecated.  When it is defined, it should point to a function "
 "that acts the same as the :c:member:`~PyTypeObject.tp_setattro` function, "
@@ -1612,13 +1674,13 @@ msgid ""
 "attribute name."
 msgstr ""
 
-#: c-api/typeobj.rst:999
+#: c-api/typeobj.rst:1041
 msgid ""
 "Group: :c:member:`~PyTypeObject.tp_setattr`, :c:member:`~PyTypeObject."
 "tp_setattro`"
 msgstr ""
 
-#: c-api/typeobj.rst:800
+#: c-api/typeobj.rst:842
 msgid ""
 "This field is inherited by subtypes together with :c:member:`~PyTypeObject."
 "tp_setattro`: a subtype inherits both :c:member:`~PyTypeObject.tp_setattr` "
@@ -1627,38 +1689,38 @@ msgid ""
 "tp_setattro` are both ``NULL``."
 msgstr ""
 
-#: c-api/typeobj.rst:807
+#: c-api/typeobj.rst:849
 msgid ""
 "Pointer to an additional structure that contains fields relevant only to "
 "objects which implement :term:`awaitable` and :term:`asynchronous iterator` "
 "protocols at the C-level.  See :ref:`async-structs` for details."
 msgstr ""
 
-#: c-api/typeobj.rst:811
+#: c-api/typeobj.rst:853
 msgid "Formerly known as ``tp_compare`` and ``tp_reserved``."
 msgstr ""
 
-#: c-api/typeobj.rst:816
+#: c-api/typeobj.rst:858
 msgid ""
 "The :c:member:`~PyTypeObject.tp_as_async` field is not inherited, but the "
 "contained fields are inherited individually."
 msgstr ""
 
-#: c-api/typeobj.rst:824
+#: c-api/typeobj.rst:866
 msgid ""
 "An optional pointer to a function that implements the built-in function :"
 "func:`repr`."
 msgstr ""
 
-#: c-api/typeobj.rst:827
+#: c-api/typeobj.rst:869
 msgid "The signature is the same as for :c:func:`PyObject_Repr`::"
 msgstr ""
 
-#: c-api/typeobj.rst:829
+#: c-api/typeobj.rst:871
 msgid "PyObject *tp_repr(PyObject *self);"
 msgstr ""
 
-#: c-api/typeobj.rst:831
+#: c-api/typeobj.rst:873
 msgid ""
 "The function must return a string or a Unicode object.  Ideally, this "
 "function should return a string that, when passed to :func:`eval`, given a "
@@ -1667,80 +1729,80 @@ msgid ""
 "``'>'`` from which both the type and the value of the object can be deduced."
 msgstr ""
 
-#: c-api/typeobj.rst:954 c-api/typeobj.rst:1005 c-api/typeobj.rst:1575
-#: c-api/typeobj.rst:1726 c-api/typeobj.rst:1834 c-api/typeobj.rst:1893
-#: c-api/typeobj.rst:1956 c-api/typeobj.rst:1987
+#: c-api/typeobj.rst:996 c-api/typeobj.rst:1047 c-api/typeobj.rst:1617
+#: c-api/typeobj.rst:1768 c-api/typeobj.rst:1876 c-api/typeobj.rst:1935
+#: c-api/typeobj.rst:1998 c-api/typeobj.rst:2029
 msgid "**Default:**"
 msgstr ""
 
-#: c-api/typeobj.rst:844
+#: c-api/typeobj.rst:886
 msgid ""
 "When this field is not set, a string of the form ``<%s object at %p>`` is "
 "returned, where ``%s`` is replaced by the type name, and ``%p`` by the "
 "object's memory address."
 msgstr ""
 
-#: c-api/typeobj.rst:851
+#: c-api/typeobj.rst:893
 msgid ""
 "Pointer to an additional structure that contains fields relevant only to "
 "objects which implement the number protocol.  These fields are documented "
 "in :ref:`number-structs`."
 msgstr ""
 
-#: c-api/typeobj.rst:857
+#: c-api/typeobj.rst:899
 msgid ""
 "The :c:member:`~PyTypeObject.tp_as_number` field is not inherited, but the "
 "contained fields are inherited individually."
 msgstr ""
 
-#: c-api/typeobj.rst:863
+#: c-api/typeobj.rst:905
 msgid ""
 "Pointer to an additional structure that contains fields relevant only to "
 "objects which implement the sequence protocol.  These fields are documented "
 "in :ref:`sequence-structs`."
 msgstr ""
 
-#: c-api/typeobj.rst:869
+#: c-api/typeobj.rst:911
 msgid ""
 "The :c:member:`~PyTypeObject.tp_as_sequence` field is not inherited, but the "
 "contained fields are inherited individually."
 msgstr ""
 
-#: c-api/typeobj.rst:875
+#: c-api/typeobj.rst:917
 msgid ""
 "Pointer to an additional structure that contains fields relevant only to "
 "objects which implement the mapping protocol.  These fields are documented "
 "in :ref:`mapping-structs`."
 msgstr ""
 
-#: c-api/typeobj.rst:881
+#: c-api/typeobj.rst:923
 msgid ""
 "The :c:member:`~PyTypeObject.tp_as_mapping` field is not inherited, but the "
 "contained fields are inherited individually."
 msgstr ""
 
-#: c-api/typeobj.rst:889
+#: c-api/typeobj.rst:931
 msgid ""
 "An optional pointer to a function that implements the built-in function :"
 "func:`hash`."
 msgstr ""
 
-#: c-api/typeobj.rst:892
+#: c-api/typeobj.rst:934
 msgid "The signature is the same as for :c:func:`PyObject_Hash`::"
 msgstr ""
 
-#: c-api/typeobj.rst:894
+#: c-api/typeobj.rst:936
 msgid "Py_hash_t tp_hash(PyObject *);"
 msgstr ""
 
-#: c-api/typeobj.rst:896
+#: c-api/typeobj.rst:938
 msgid ""
 "The value ``-1`` should not be returned as a normal return value; when an "
 "error occurs during the computation of the hash value, the function should "
 "set an exception and return ``-1``."
 msgstr ""
 
-#: c-api/typeobj.rst:900
+#: c-api/typeobj.rst:942
 msgid ""
 "When this field is not set (*and* :c:member:`~PyTypeObject.tp_richcompare` "
 "is not set), an attempt to take the hash of the object raises :exc:"
@@ -1748,7 +1810,7 @@ msgid ""
 "`PyObject_HashNotImplemented`."
 msgstr ""
 
-#: c-api/typeobj.rst:904
+#: c-api/typeobj.rst:946
 msgid ""
 "This field can be set explicitly to :c:func:`PyObject_HashNotImplemented` to "
 "block inheritance of the hash method from a parent type. This is interpreted "
@@ -1759,13 +1821,13 @@ msgid ""
 "`PyObject_HashNotImplemented`."
 msgstr ""
 
-#: c-api/typeobj.rst:1568
+#: c-api/typeobj.rst:1610
 msgid ""
 "Group: :c:member:`~PyTypeObject.tp_hash`, :c:member:`~PyTypeObject."
 "tp_richcompare`"
 msgstr ""
 
-#: c-api/typeobj.rst:916
+#: c-api/typeobj.rst:958
 msgid ""
 "This field is inherited by subtypes together with :c:member:`~PyTypeObject."
 "tp_richcompare`: a subtype inherits both of :c:member:`~PyTypeObject."
@@ -1774,18 +1836,18 @@ msgid ""
 "are both ``NULL``."
 msgstr ""
 
-#: c-api/typeobj.rst:924
+#: c-api/typeobj.rst:966
 msgid ""
 "An optional pointer to a function that implements calling the object.  This "
 "should be ``NULL`` if the object is not callable.  The signature is the same "
 "as for :c:func:`PyObject_Call`::"
 msgstr ""
 
-#: c-api/typeobj.rst:928
+#: c-api/typeobj.rst:970
 msgid "PyObject *tp_call(PyObject *self, PyObject *args, PyObject *kwargs);"
 msgstr ""
 
-#: c-api/typeobj.rst:937
+#: c-api/typeobj.rst:979
 msgid ""
 "An optional pointer to a function that implements the built-in operation :"
 "func:`str`.  (Note that :class:`str` is a type now, and :func:`str` calls "
@@ -1794,15 +1856,15 @@ msgid ""
 "this handler.)"
 msgstr ""
 
-#: c-api/typeobj.rst:942
+#: c-api/typeobj.rst:984
 msgid "The signature is the same as for :c:func:`PyObject_Str`::"
 msgstr ""
 
-#: c-api/typeobj.rst:944
+#: c-api/typeobj.rst:986
 msgid "PyObject *tp_str(PyObject *self);"
 msgstr ""
 
-#: c-api/typeobj.rst:946
+#: c-api/typeobj.rst:988
 msgid ""
 "The function must return a string or a Unicode object.  It should be a "
 "\"friendly\" string representation of the object, as this is the "
@@ -1810,32 +1872,32 @@ msgid ""
 "function."
 msgstr ""
 
-#: c-api/typeobj.rst:956
+#: c-api/typeobj.rst:998
 msgid ""
 "When this field is not set, :c:func:`PyObject_Repr` is called to return a "
 "string representation."
 msgstr ""
 
-#: c-api/typeobj.rst:962
+#: c-api/typeobj.rst:1004
 msgid "An optional pointer to the get-attribute function."
 msgstr ""
 
-#: c-api/typeobj.rst:964
+#: c-api/typeobj.rst:1006
 msgid "The signature is the same as for :c:func:`PyObject_GetAttr`::"
 msgstr ""
 
-#: c-api/typeobj.rst:966
+#: c-api/typeobj.rst:1008
 msgid "PyObject *tp_getattro(PyObject *self, PyObject *attr);"
 msgstr ""
 
-#: c-api/typeobj.rst:968
+#: c-api/typeobj.rst:1010
 msgid ""
 "It is usually convenient to set this field to :c:func:"
 "`PyObject_GenericGetAttr`, which implements the normal way of looking for "
 "object attributes."
 msgstr ""
 
-#: c-api/typeobj.rst:975
+#: c-api/typeobj.rst:1017
 msgid ""
 "This field is inherited by subtypes together with :c:member:`~PyTypeObject."
 "tp_getattr`: a subtype inherits both :c:member:`~PyTypeObject.tp_getattr` "
@@ -1844,19 +1906,19 @@ msgid ""
 "tp_getattro` are both ``NULL``."
 msgstr ""
 
-#: c-api/typeobj.rst:981
+#: c-api/typeobj.rst:1023
 msgid ":c:data:`PyBaseObject_Type` uses :c:func:`PyObject_GenericGetAttr`."
 msgstr ""
 
-#: c-api/typeobj.rst:988
+#: c-api/typeobj.rst:1030
 msgid "The signature is the same as for :c:func:`PyObject_SetAttr`::"
 msgstr ""
 
-#: c-api/typeobj.rst:990
+#: c-api/typeobj.rst:1032
 msgid "int tp_setattro(PyObject *self, PyObject *attr, PyObject *value);"
 msgstr ""
 
-#: c-api/typeobj.rst:992
+#: c-api/typeobj.rst:1034
 msgid ""
 "In addition, setting *value* to ``NULL`` to delete an attribute must be "
 "supported.  It is usually convenient to set this field to :c:func:"
@@ -1864,7 +1926,7 @@ msgid ""
 "attributes."
 msgstr ""
 
-#: c-api/typeobj.rst:1001
+#: c-api/typeobj.rst:1043
 msgid ""
 "This field is inherited by subtypes together with :c:member:`~PyTypeObject."
 "tp_setattr`: a subtype inherits both :c:member:`~PyTypeObject.tp_setattr` "
@@ -1873,24 +1935,24 @@ msgid ""
 "tp_setattro` are both ``NULL``."
 msgstr ""
 
-#: c-api/typeobj.rst:1007
+#: c-api/typeobj.rst:1049
 msgid ":c:data:`PyBaseObject_Type` uses :c:func:`PyObject_GenericSetAttr`."
 msgstr ""
 
-#: c-api/typeobj.rst:1012
+#: c-api/typeobj.rst:1054
 msgid ""
 "Pointer to an additional structure that contains fields relevant only to "
 "objects which implement the buffer interface.  These fields are documented "
 "in :ref:`buffer-structs`."
 msgstr ""
 
-#: c-api/typeobj.rst:1018
+#: c-api/typeobj.rst:1060
 msgid ""
 "The :c:member:`~PyTypeObject.tp_as_buffer` field is not inherited, but the "
 "contained fields are inherited individually."
 msgstr ""
 
-#: c-api/typeobj.rst:1024
+#: c-api/typeobj.rst:1066
 msgid ""
 "This field is a bit mask of various flags.  Some flags indicate variant "
 "semantics for certain situations; others are used to indicate that certain "
@@ -1902,7 +1964,7 @@ msgid ""
 "accessed and must be considered to have a zero or ``NULL`` value instead."
 msgstr ""
 
-#: c-api/typeobj.rst:1034
+#: c-api/typeobj.rst:1076
 msgid ""
 "Inheritance of this field is complicated.  Most flag bits are inherited "
 "individually, i.e. if the base type has a flag bit set, the subtype inherits "
@@ -1918,17 +1980,17 @@ msgid ""
 "*really* inherited individually?"
 msgstr ""
 
-#: c-api/typeobj.rst:1048
+#: c-api/typeobj.rst:1090
 msgid ""
 ":c:data:`PyBaseObject_Type` uses ``Py_TPFLAGS_DEFAULT | "
 "Py_TPFLAGS_BASETYPE``."
 msgstr ""
 
-#: c-api/typeobj.rst:1051
+#: c-api/typeobj.rst:1093
 msgid "**Bit Masks:**"
 msgstr ""
 
-#: c-api/typeobj.rst:1055
+#: c-api/typeobj.rst:1097
 msgid ""
 "The following bit masks are currently defined; these can be ORed together "
 "using the ``|`` operator to form the value of the :c:member:`~PyTypeObject."
@@ -1937,7 +1999,7 @@ msgid ""
 "zero."
 msgstr ""
 
-#: c-api/typeobj.rst:1062
+#: c-api/typeobj.rst:1104
 msgid ""
 "This bit is set when the type object itself is allocated on the heap, for "
 "example, types created dynamically using :c:func:`PyType_FromSpec`.  In this "
@@ -1950,30 +2012,30 @@ msgid ""
 "reference cycle with their own module object."
 msgstr ""
 
-#: c-api/typeobj.rst:1084 c-api/typeobj.rst:1104 c-api/typeobj.rst:1136
+#: c-api/typeobj.rst:1126 c-api/typeobj.rst:1146 c-api/typeobj.rst:1178
 msgid "???"
 msgstr ""
 
-#: c-api/typeobj.rst:1078
+#: c-api/typeobj.rst:1120
 msgid ""
 "This bit is set when the type can be used as the base type of another type.  "
 "If this bit is clear, the type cannot be subtyped (similar to a \"final\" "
 "class in Java)."
 msgstr ""
 
-#: c-api/typeobj.rst:1089
+#: c-api/typeobj.rst:1131
 msgid ""
 "This bit is set when the type object has been fully initialized by :c:func:"
 "`PyType_Ready`."
 msgstr ""
 
-#: c-api/typeobj.rst:1099
+#: c-api/typeobj.rst:1141
 msgid ""
 "This bit is set while :c:func:`PyType_Ready` is in the process of "
 "initializing the type object."
 msgstr ""
 
-#: c-api/typeobj.rst:1109
+#: c-api/typeobj.rst:1151
 msgid ""
 "This bit is set when the object supports garbage collection.  If this bit is "
 "set, instances must be created using :c:macro:`PyObject_GC_New` and "
@@ -1983,13 +2045,13 @@ msgid ""
 "tp_clear` are present in the type object."
 msgstr ""
 
-#: c-api/typeobj.rst:1439 c-api/typeobj.rst:1507
+#: c-api/typeobj.rst:1481 c-api/typeobj.rst:1549
 msgid ""
 "Group: :c:macro:`Py_TPFLAGS_HAVE_GC`, :c:member:`~PyTypeObject."
 "tp_traverse`, :c:member:`~PyTypeObject.tp_clear`"
 msgstr ""
 
-#: c-api/typeobj.rst:1120
+#: c-api/typeobj.rst:1162
 msgid ""
 "The :c:macro:`Py_TPFLAGS_HAVE_GC` flag bit is inherited together with the :c:"
 "member:`~PyTypeObject.tp_traverse` and :c:member:`~PyTypeObject.tp_clear` "
@@ -1999,99 +2061,99 @@ msgid ""
 "values."
 msgstr ""
 
-#: c-api/typeobj.rst:1130
+#: c-api/typeobj.rst:1172
 msgid ""
 "This is a bitmask of all the bits that pertain to the existence of certain "
 "fields in the type object and its extension structures. Currently, it "
 "includes the following bits: :c:macro:`Py_TPFLAGS_HAVE_STACKLESS_EXTENSION`."
 msgstr ""
 
-#: c-api/typeobj.rst:1141
+#: c-api/typeobj.rst:1183
 msgid "This bit indicates that objects behave like unbound methods."
 msgstr ""
 
-#: c-api/typeobj.rst:1143
+#: c-api/typeobj.rst:1185
 msgid "If this flag is set for ``type(meth)``, then:"
 msgstr ""
 
-#: c-api/typeobj.rst:1145
+#: c-api/typeobj.rst:1187
 msgid ""
 "``meth.__get__(obj, cls)(*args, **kwds)`` (with ``obj`` not None) must be "
 "equivalent to ``meth(obj, *args, **kwds)``."
 msgstr ""
 
-#: c-api/typeobj.rst:1148
+#: c-api/typeobj.rst:1190
 msgid ""
 "``meth.__get__(None, cls)(*args, **kwds)`` must be equivalent to "
 "``meth(*args, **kwds)``."
 msgstr ""
 
-#: c-api/typeobj.rst:1151
+#: c-api/typeobj.rst:1193
 msgid ""
 "This flag enables an optimization for typical method calls like ``obj."
 "meth()``: it avoids creating a temporary \"bound method\" object for ``obj."
 "meth``."
 msgstr ""
 
-#: c-api/typeobj.rst:1159
+#: c-api/typeobj.rst:1201
 msgid ""
 "This flag is never inherited by types without the :c:macro:"
 "`Py_TPFLAGS_IMMUTABLETYPE` flag set.  For extension types, it is inherited "
 "whenever :c:member:`~PyTypeObject.tp_descr_get` is inherited."
 msgstr ""
 
-#: c-api/typeobj.rst:1165
+#: c-api/typeobj.rst:1207
 msgid ""
 "This bit indicates that instances of the class have a `~object.__dict__` "
 "attribute, and that the space for the dictionary is managed by the VM."
 msgstr ""
 
-#: c-api/typeobj.rst:1168
+#: c-api/typeobj.rst:1210
 msgid "If this flag is set, :c:macro:`Py_TPFLAGS_HAVE_GC` should also be set."
 msgstr ""
 
-#: c-api/typeobj.rst:1174
+#: c-api/typeobj.rst:1216
 msgid ""
 "This flag is inherited unless the :c:member:`~PyTypeObject.tp_dictoffset` "
 "field is set in a superclass."
 msgstr ""
 
-#: c-api/typeobj.rst:1180
+#: c-api/typeobj.rst:1222
 msgid ""
 "This bit indicates that instances of the class should be weakly "
 "referenceable."
 msgstr ""
 
-#: c-api/typeobj.rst:1187
+#: c-api/typeobj.rst:1229
 msgid ""
 "This flag is inherited unless the :c:member:`~PyTypeObject."
 "tp_weaklistoffset` field is set in a superclass."
 msgstr ""
 
-#: c-api/typeobj.rst:1193
+#: c-api/typeobj.rst:1235
 msgid ""
 "Only usable with variable-size types, i.e. ones with non-zero :c:member:"
 "`~PyTypeObject.tp_itemsize`."
 msgstr ""
 
-#: c-api/typeobj.rst:1196
+#: c-api/typeobj.rst:1238
 msgid ""
 "Indicates that the variable-sized portion of an instance of this type is at "
 "the end of the instance's memory area, at an offset of ``Py_TYPE(obj)-"
 ">tp_basicsize`` (which may be different in each subclass)."
 msgstr ""
 
-#: c-api/typeobj.rst:1201
+#: c-api/typeobj.rst:1243
 msgid ""
 "When setting this flag, be sure that all superclasses either use this memory "
 "layout, or are not variable-sized. Python does not check this."
 msgstr ""
 
-#: c-api/typeobj.rst:1209
+#: c-api/typeobj.rst:1251
 msgid "This flag is inherited."
 msgstr ""
 
-#: c-api/typeobj.rst:1223
+#: c-api/typeobj.rst:1265
 msgid ""
 "These flags are used by functions such as :c:func:`PyLong_Check` to quickly "
 "determine if a type is a subclass of a built-in type; such specific checks "
@@ -2101,90 +2163,90 @@ msgid ""
 "behave differently depending on what kind of check is used."
 msgstr ""
 
-#: c-api/typeobj.rst:1234
+#: c-api/typeobj.rst:1276
 msgid ""
 "This bit is set when the :c:member:`~PyTypeObject.tp_finalize` slot is "
 "present in the type structure."
 msgstr ""
 
-#: c-api/typeobj.rst:1239
+#: c-api/typeobj.rst:1281
 msgid ""
 "This flag isn't necessary anymore, as the interpreter assumes the :c:member:"
 "`~PyTypeObject.tp_finalize` slot is always present in the type structure."
 msgstr ""
 
-#: c-api/typeobj.rst:1247
+#: c-api/typeobj.rst:1289
 msgid ""
 "This bit is set when the class implements the :ref:`vectorcall protocol "
 "<vectorcall>`. See :c:member:`~PyTypeObject.tp_vectorcall_offset` for "
 "details."
 msgstr ""
 
-#: c-api/typeobj.rst:1253
+#: c-api/typeobj.rst:1295
 msgid ""
 "This bit is inherited if :c:member:`~PyTypeObject.tp_call` is also inherited."
 msgstr ""
 
-#: c-api/typeobj.rst:1260
+#: c-api/typeobj.rst:1302
 msgid ""
 "This flag is now removed from a class when the class's :py:meth:`~object."
 "__call__` method is reassigned."
 msgstr ""
 
-#: c-api/typeobj.rst:1263
+#: c-api/typeobj.rst:1305
 msgid "This flag can now be inherited by mutable classes."
 msgstr ""
 
-#: c-api/typeobj.rst:1267
+#: c-api/typeobj.rst:1309
 msgid ""
 "This bit is set for type objects that are immutable: type attributes cannot "
 "be set nor deleted."
 msgstr ""
 
-#: c-api/typeobj.rst:1269
+#: c-api/typeobj.rst:1311
 msgid ""
 ":c:func:`PyType_Ready` automatically applies this flag to :ref:`static types "
 "<static-types>`."
 msgstr ""
 
-#: c-api/typeobj.rst:1274
+#: c-api/typeobj.rst:1316
 msgid "This flag is not inherited."
 msgstr ""
 
-#: c-api/typeobj.rst:1280
+#: c-api/typeobj.rst:1322
 msgid ""
 "Disallow creating instances of the type: set :c:member:`~PyTypeObject."
 "tp_new` to NULL and don't create the ``__new__`` key in the type dictionary."
 msgstr ""
 
-#: c-api/typeobj.rst:1284
+#: c-api/typeobj.rst:1326
 msgid ""
 "The flag must be set before creating the type, not after. For example, it "
 "must be set before :c:func:`PyType_Ready` is called on the type."
 msgstr ""
 
-#: c-api/typeobj.rst:1287
+#: c-api/typeobj.rst:1329
 msgid ""
 "The flag is set automatically on :ref:`static types <static-types>` if :c:"
 "member:`~PyTypeObject.tp_base` is NULL or ``&PyBaseObject_Type`` and :c:"
 "member:`~PyTypeObject.tp_new` is NULL."
 msgstr ""
 
-#: c-api/typeobj.rst:1293
+#: c-api/typeobj.rst:1335
 msgid ""
 "This flag is not inherited. However, subclasses will not be instantiable "
 "unless they provide a non-NULL :c:member:`~PyTypeObject.tp_new` (which is "
 "only possible via the C API)."
 msgstr ""
 
-#: c-api/typeobj.rst:1300
+#: c-api/typeobj.rst:1342
 msgid ""
 "To disallow instantiating a class directly but allow instantiating its "
 "subclasses (e.g. for an :term:`abstract base class`), do not use this flag. "
 "Instead, make :c:member:`~PyTypeObject.tp_new` only succeed for subclasses."
 msgstr ""
 
-#: c-api/typeobj.rst:1311
+#: c-api/typeobj.rst:1353
 msgid ""
 "This bit indicates that instances of the class may match mapping patterns "
 "when used as the subject of a :keyword:`match` block. It is automatically "
@@ -2192,23 +2254,23 @@ msgid ""
 "unset when registering :class:`collections.abc.Sequence`."
 msgstr ""
 
-#: c-api/typeobj.rst:1340
+#: c-api/typeobj.rst:1382
 msgid ""
 ":c:macro:`Py_TPFLAGS_MAPPING` and :c:macro:`Py_TPFLAGS_SEQUENCE` are "
 "mutually exclusive; it is an error to enable both flags simultaneously."
 msgstr ""
 
-#: c-api/typeobj.rst:1323
+#: c-api/typeobj.rst:1365
 msgid ""
 "This flag is inherited by types that do not already set :c:macro:"
 "`Py_TPFLAGS_SEQUENCE`."
 msgstr ""
 
-#: c-api/typeobj.rst:1348
+#: c-api/typeobj.rst:1390
 msgid ":pep:`634` -- Structural Pattern Matching: Specification"
 msgstr ""
 
-#: c-api/typeobj.rst:1333
+#: c-api/typeobj.rst:1375
 msgid ""
 "This bit indicates that instances of the class may match sequence patterns "
 "when used as the subject of a :keyword:`match` block. It is automatically "
@@ -2216,53 +2278,53 @@ msgid ""
 "unset when registering :class:`collections.abc.Mapping`."
 msgstr ""
 
-#: c-api/typeobj.rst:1345
+#: c-api/typeobj.rst:1387
 msgid ""
 "This flag is inherited by types that do not already set :c:macro:"
 "`Py_TPFLAGS_MAPPING`."
 msgstr ""
 
-#: c-api/typeobj.rst:1355
+#: c-api/typeobj.rst:1397
 msgid ""
 "Internal. Do not set or unset this flag. To indicate that a class has "
 "changed call :c:func:`PyType_Modified`"
 msgstr ""
 
-#: c-api/typeobj.rst:1359
+#: c-api/typeobj.rst:1401
 msgid ""
 "This flag is present in header files, but is an internal feature and should "
 "not be used. It will be removed in a future version of CPython"
 msgstr ""
 
-#: c-api/typeobj.rst:1365
+#: c-api/typeobj.rst:1407
 msgid ""
 "An optional pointer to a NUL-terminated C string giving the docstring for "
 "this type object.  This is exposed as the :attr:`~type.__doc__` attribute on "
 "the type and instances of the type."
 msgstr ""
 
-#: c-api/typeobj.rst:1371
+#: c-api/typeobj.rst:1413
 msgid "This field is *not* inherited by subtypes."
 msgstr ""
 
-#: c-api/typeobj.rst:1376
+#: c-api/typeobj.rst:1418
 msgid ""
 "An optional pointer to a traversal function for the garbage collector.  This "
 "is only used if the :c:macro:`Py_TPFLAGS_HAVE_GC` flag bit is set.  The "
 "signature is::"
 msgstr ""
 
-#: c-api/typeobj.rst:1379
+#: c-api/typeobj.rst:1421
 msgid "int tp_traverse(PyObject *self, visitproc visit, void *arg);"
 msgstr ""
 
-#: c-api/typeobj.rst:1502
+#: c-api/typeobj.rst:1544
 msgid ""
 "More information about Python's garbage collection scheme can be found in "
 "section :ref:`supporting-cycle-detection`."
 msgstr ""
 
-#: c-api/typeobj.rst:1384
+#: c-api/typeobj.rst:1426
 msgid ""
 "The :c:member:`~PyTypeObject.tp_traverse` pointer is used by the garbage "
 "collector to detect reference cycles. A typical implementation of a :c:"
@@ -2272,7 +2334,7 @@ msgid ""
 "`!_thread` extension module::"
 msgstr ""
 
-#: c-api/typeobj.rst:1390
+#: c-api/typeobj.rst:1432
 msgid ""
 "static int\n"
 "local_traverse(localobject *self, visitproc visit, void *arg)\n"
@@ -2284,7 +2346,7 @@ msgid ""
 "}"
 msgstr ""
 
-#: c-api/typeobj.rst:1399
+#: c-api/typeobj.rst:1441
 msgid ""
 "Note that :c:func:`Py_VISIT` is called only on those members that can "
 "participate in reference cycles.  Although there is also a ``self->key`` "
@@ -2292,14 +2354,14 @@ msgid ""
 "part of a reference cycle."
 msgstr ""
 
-#: c-api/typeobj.rst:1403
+#: c-api/typeobj.rst:1445
 msgid ""
 "On the other hand, even if you know a member can never be part of a cycle, "
 "as a debugging aid you may want to visit it anyway just so the :mod:`gc` "
 "module's :func:`~gc.get_referents` function will include it."
 msgstr ""
 
-#: c-api/typeobj.rst:1408
+#: c-api/typeobj.rst:1450
 msgid ""
 "When implementing :c:member:`~PyTypeObject.tp_traverse`, only the members "
 "that the instance *owns* (by having :term:`strong references <strong "
@@ -2312,14 +2374,14 @@ msgid ""
 "it, as they are allowed to be removed even if the instance is still alive)."
 msgstr ""
 
-#: c-api/typeobj.rst:1419
+#: c-api/typeobj.rst:1461
 msgid ""
 "Note that :c:func:`Py_VISIT` requires the *visit* and *arg* parameters to :c:"
 "func:`local_traverse` to have these specific names; don't name them just "
 "anything."
 msgstr ""
 
-#: c-api/typeobj.rst:1423
+#: c-api/typeobj.rst:1465
 msgid ""
 "Instances of :ref:`heap-allocated types <heap-types>` hold a reference to "
 "their type. Their traversal function must therefore either visit :c:func:"
@@ -2328,14 +2390,14 @@ msgid ""
 "superclass). If they do not, the type object may not be garbage-collected."
 msgstr ""
 
-#: c-api/typeobj.rst:1432
+#: c-api/typeobj.rst:1474
 msgid ""
 "Heap-allocated types are expected to visit ``Py_TYPE(self)`` in "
 "``tp_traverse``.  In earlier versions of Python, due to `bug 40217 <https://"
 "bugs.python.org/issue40217>`_, doing this may lead to crashes in subclasses."
 msgstr ""
 
-#: c-api/typeobj.rst:1441
+#: c-api/typeobj.rst:1483
 msgid ""
 "This field is inherited by subtypes together with :c:member:`~PyTypeObject."
 "tp_clear` and the :c:macro:`Py_TPFLAGS_HAVE_GC` flag bit: the flag bit, :c:"
@@ -2343,18 +2405,18 @@ msgid ""
 "are all inherited from the base type if they are all zero in the subtype."
 msgstr ""
 
-#: c-api/typeobj.rst:1449
+#: c-api/typeobj.rst:1491
 msgid ""
 "An optional pointer to a clear function for the garbage collector. This is "
 "only used if the :c:macro:`Py_TPFLAGS_HAVE_GC` flag bit is set.  The "
 "signature is::"
 msgstr ""
 
-#: c-api/typeobj.rst:1452
+#: c-api/typeobj.rst:1494
 msgid "int tp_clear(PyObject *);"
 msgstr ""
 
-#: c-api/typeobj.rst:1454
+#: c-api/typeobj.rst:1496
 msgid ""
 "The :c:member:`~PyTypeObject.tp_clear` member function is used to break "
 "reference cycles in cyclic garbage detected by the garbage collector.  Taken "
@@ -2369,7 +2431,7 @@ msgid ""
 "good reason to avoid implementing :c:member:`~PyTypeObject.tp_clear`."
 msgstr ""
 
-#: c-api/typeobj.rst:1464
+#: c-api/typeobj.rst:1506
 msgid ""
 "Implementations of :c:member:`~PyTypeObject.tp_clear` should drop the "
 "instance's references to those of its members that may be Python objects, "
@@ -2377,7 +2439,7 @@ msgid ""
 "example::"
 msgstr ""
 
-#: c-api/typeobj.rst:1468
+#: c-api/typeobj.rst:1510
 msgid ""
 "static int\n"
 "local_clear(localobject *self)\n"
@@ -2390,7 +2452,7 @@ msgid ""
 "}"
 msgstr ""
 
-#: c-api/typeobj.rst:1478
+#: c-api/typeobj.rst:1520
 msgid ""
 "The :c:func:`Py_CLEAR` macro should be used, because clearing references is "
 "delicate:  the reference to the contained object must not be released (via :"
@@ -2405,7 +2467,7 @@ msgid ""
 "performs the operations in a safe order."
 msgstr ""
 
-#: c-api/typeobj.rst:1490
+#: c-api/typeobj.rst:1532
 msgid ""
 "Note that :c:member:`~PyTypeObject.tp_clear` is not *always* called before "
 "an instance is deallocated. For example, when reference counting is enough "
@@ -2413,7 +2475,7 @@ msgid ""
 "is not involved and :c:member:`~PyTypeObject.tp_dealloc` is called directly."
 msgstr ""
 
-#: c-api/typeobj.rst:1496
+#: c-api/typeobj.rst:1538
 msgid ""
 "Because the goal of :c:member:`~PyTypeObject.tp_clear` functions is to break "
 "reference cycles, it's not necessary to clear contained objects like Python "
@@ -2423,7 +2485,7 @@ msgid ""
 "invoke :c:member:`~PyTypeObject.tp_clear`."
 msgstr ""
 
-#: c-api/typeobj.rst:1509
+#: c-api/typeobj.rst:1551
 msgid ""
 "This field is inherited by subtypes together with :c:member:`~PyTypeObject."
 "tp_traverse` and the :c:macro:`Py_TPFLAGS_HAVE_GC` flag bit: the flag bit, :"
@@ -2431,22 +2493,22 @@ msgid ""
 "are all inherited from the base type if they are all zero in the subtype."
 msgstr ""
 
-#: c-api/typeobj.rst:1517
+#: c-api/typeobj.rst:1559
 msgid ""
 "An optional pointer to the rich comparison function, whose signature is::"
 msgstr ""
 
-#: c-api/typeobj.rst:1519
+#: c-api/typeobj.rst:1561
 msgid "PyObject *tp_richcompare(PyObject *self, PyObject *other, int op);"
 msgstr ""
 
-#: c-api/typeobj.rst:1521
+#: c-api/typeobj.rst:1563
 msgid ""
 "The first parameter is guaranteed to be an instance of the type that is "
 "defined by :c:type:`PyTypeObject`."
 msgstr ""
 
-#: c-api/typeobj.rst:1524
+#: c-api/typeobj.rst:1566
 msgid ""
 "The function should return the result of the comparison (usually ``Py_True`` "
 "or ``Py_False``).  If the comparison is undefined, it must return "
@@ -2454,50 +2516,50 @@ msgid ""
 "set an exception condition."
 msgstr ""
 
-#: c-api/typeobj.rst:1529
+#: c-api/typeobj.rst:1571
 msgid ""
 "The following constants are defined to be used as the third argument for :c:"
 "member:`~PyTypeObject.tp_richcompare` and for :c:func:`PyObject_RichCompare`:"
 msgstr ""
 
-#: c-api/typeobj.rst:1535
+#: c-api/typeobj.rst:1577
 msgid "Constant"
 msgstr ""
 
-#: c-api/typeobj.rst:1535
+#: c-api/typeobj.rst:1577
 msgid "Comparison"
 msgstr ""
 
-#: c-api/typeobj.rst:1537
+#: c-api/typeobj.rst:1579
 msgid "``<``"
 msgstr ""
 
-#: c-api/typeobj.rst:1539
+#: c-api/typeobj.rst:1581
 msgid "``<=``"
 msgstr ""
 
-#: c-api/typeobj.rst:1541
+#: c-api/typeobj.rst:1583
 msgid "``==``"
 msgstr ""
 
-#: c-api/typeobj.rst:1543
+#: c-api/typeobj.rst:1585
 msgid "``!=``"
 msgstr ""
 
-#: c-api/typeobj.rst:1545
+#: c-api/typeobj.rst:1587
 msgid "``>``"
 msgstr ""
 
-#: c-api/typeobj.rst:1547
+#: c-api/typeobj.rst:1589
 msgid "``>=``"
 msgstr ""
 
-#: c-api/typeobj.rst:1550
+#: c-api/typeobj.rst:1592
 msgid ""
 "The following macro is defined to ease writing rich comparison functions:"
 msgstr ""
 
-#: c-api/typeobj.rst:1554
+#: c-api/typeobj.rst:1596
 msgid ""
 "Return ``Py_True`` or ``Py_False`` from the function, depending on the "
 "result of a comparison. VAL_A and VAL_B must be orderable by C comparison "
@@ -2505,15 +2567,15 @@ msgid ""
 "specifies the requested operation, as for :c:func:`PyObject_RichCompare`."
 msgstr ""
 
-#: c-api/typeobj.rst:1560
+#: c-api/typeobj.rst:1602
 msgid "The returned value is a new :term:`strong reference`."
 msgstr ""
 
-#: c-api/typeobj.rst:1562
+#: c-api/typeobj.rst:1604
 msgid "On error, sets an exception and returns ``NULL`` from the function."
 msgstr ""
 
-#: c-api/typeobj.rst:1570
+#: c-api/typeobj.rst:1612
 msgid ""
 "This field is inherited by subtypes together with :c:member:`~PyTypeObject."
 "tp_hash`: a subtype inherits :c:member:`~PyTypeObject.tp_richcompare` and :c:"
@@ -2521,7 +2583,7 @@ msgid ""
 "tp_richcompare` and :c:member:`~PyTypeObject.tp_hash` are both ``NULL``."
 msgstr ""
 
-#: c-api/typeobj.rst:1577
+#: c-api/typeobj.rst:1619
 msgid ""
 ":c:data:`PyBaseObject_Type` provides a :c:member:`~PyTypeObject."
 "tp_richcompare` implementation, which may be inherited.  However, if only :c:"
@@ -2530,13 +2592,13 @@ msgid ""
 "comparisons."
 msgstr ""
 
-#: c-api/typeobj.rst:1586
+#: c-api/typeobj.rst:1628
 msgid ""
 "While this field is still supported, :c:macro:`Py_TPFLAGS_MANAGED_WEAKREF` "
 "should be used instead, if at all possible."
 msgstr ""
 
-#: c-api/typeobj.rst:1589
+#: c-api/typeobj.rst:1631
 msgid ""
 "If the instances of this type are weakly referenceable, this field is "
 "greater than zero and contains the offset in the instance structure of the "
@@ -2546,19 +2608,19 @@ msgid ""
 "`PyObject*` which is initialized to ``NULL``."
 msgstr ""
 
-#: c-api/typeobj.rst:1596
+#: c-api/typeobj.rst:1638
 msgid ""
 "Do not confuse this field with :c:member:`~PyTypeObject.tp_weaklist`; that "
 "is the list head for weak references to the type object itself."
 msgstr ""
 
-#: c-api/typeobj.rst:1599
+#: c-api/typeobj.rst:1641
 msgid ""
 "It is an error to set both the :c:macro:`Py_TPFLAGS_MANAGED_WEAKREF` bit "
 "and :c:member:`~PyTypeObject.tp_weaklistoffset`."
 msgstr ""
 
-#: c-api/typeobj.rst:1604
+#: c-api/typeobj.rst:1646
 msgid ""
 "This field is inherited by subtypes, but see the rules listed below. A "
 "subtype may override this offset; this means that the subtype uses a "
@@ -2567,7 +2629,7 @@ msgid ""
 "not be a problem."
 msgstr ""
 
-#: c-api/typeobj.rst:1611
+#: c-api/typeobj.rst:1653
 msgid ""
 "If the :c:macro:`Py_TPFLAGS_MANAGED_WEAKREF` bit is set in the :c:member:"
 "`~PyTypeObject.tp_flags` field, then :c:member:`~PyTypeObject."
@@ -2575,32 +2637,32 @@ msgid ""
 "unsafe to use this field."
 msgstr ""
 
-#: c-api/typeobj.rst:1619
+#: c-api/typeobj.rst:1661
 msgid ""
 "An optional pointer to a function that returns an :term:`iterator` for the "
 "object.  Its presence normally signals that the instances of this type are :"
 "term:`iterable` (although sequences may be iterable without this function)."
 msgstr ""
 
-#: c-api/typeobj.rst:1623
+#: c-api/typeobj.rst:1665
 msgid "This function has the same signature as :c:func:`PyObject_GetIter`::"
 msgstr ""
 
-#: c-api/typeobj.rst:1625
+#: c-api/typeobj.rst:1667
 msgid "PyObject *tp_iter(PyObject *self);"
 msgstr ""
 
-#: c-api/typeobj.rst:1634
+#: c-api/typeobj.rst:1676
 msgid ""
 "An optional pointer to a function that returns the next item in an :term:"
 "`iterator`. The signature is::"
 msgstr ""
 
-#: c-api/typeobj.rst:1637
+#: c-api/typeobj.rst:1679
 msgid "PyObject *tp_iternext(PyObject *self);"
 msgstr ""
 
-#: c-api/typeobj.rst:1639
+#: c-api/typeobj.rst:1681
 msgid ""
 "When the iterator is exhausted, it must return ``NULL``; a :exc:"
 "`StopIteration` exception may or may not be set.  When another error occurs, "
@@ -2608,74 +2670,74 @@ msgid ""
 "this type are iterators."
 msgstr ""
 
-#: c-api/typeobj.rst:1644
+#: c-api/typeobj.rst:1686
 msgid ""
 "Iterator types should also define the :c:member:`~PyTypeObject.tp_iter` "
 "function, and that function should return the iterator instance itself (not "
 "a new iterator instance)."
 msgstr ""
 
-#: c-api/typeobj.rst:1648
+#: c-api/typeobj.rst:1690
 msgid "This function has the same signature as :c:func:`PyIter_Next`."
 msgstr ""
 
-#: c-api/typeobj.rst:1657
+#: c-api/typeobj.rst:1699
 msgid ""
 "An optional pointer to a static ``NULL``-terminated array of :c:type:"
 "`PyMethodDef` structures, declaring regular methods of this type."
 msgstr ""
 
-#: c-api/typeobj.rst:1660
+#: c-api/typeobj.rst:1702
 msgid ""
 "For each entry in the array, an entry is added to the type's dictionary "
 "(see :c:member:`~PyTypeObject.tp_dict` below) containing a method descriptor."
 msgstr ""
 
-#: c-api/typeobj.rst:1665
+#: c-api/typeobj.rst:1707
 msgid ""
 "This field is not inherited by subtypes (methods are inherited through a "
 "different mechanism)."
 msgstr ""
 
-#: c-api/typeobj.rst:1671
+#: c-api/typeobj.rst:1713
 msgid ""
 "An optional pointer to a static ``NULL``-terminated array of :c:type:"
 "`PyMemberDef` structures, declaring regular data members (fields or slots) "
 "of instances of this type."
 msgstr ""
 
-#: c-api/typeobj.rst:1675
+#: c-api/typeobj.rst:1717
 msgid ""
 "For each entry in the array, an entry is added to the type's dictionary "
 "(see :c:member:`~PyTypeObject.tp_dict` below) containing a member descriptor."
 msgstr ""
 
-#: c-api/typeobj.rst:1680
+#: c-api/typeobj.rst:1722
 msgid ""
 "This field is not inherited by subtypes (members are inherited through a "
 "different mechanism)."
 msgstr ""
 
-#: c-api/typeobj.rst:1686
+#: c-api/typeobj.rst:1728
 msgid ""
 "An optional pointer to a static ``NULL``-terminated array of :c:type:"
 "`PyGetSetDef` structures, declaring computed attributes of instances of this "
 "type."
 msgstr ""
 
-#: c-api/typeobj.rst:1689
+#: c-api/typeobj.rst:1731
 msgid ""
 "For each entry in the array, an entry is added to the type's dictionary "
 "(see :c:member:`~PyTypeObject.tp_dict` below) containing a getset descriptor."
 msgstr ""
 
-#: c-api/typeobj.rst:1694
+#: c-api/typeobj.rst:1736
 msgid ""
 "This field is not inherited by subtypes (computed attributes are inherited "
 "through a different mechanism)."
 msgstr ""
 
-#: c-api/typeobj.rst:1700
+#: c-api/typeobj.rst:1742
 msgid ""
 "An optional pointer to a base type from which type properties are "
 "inherited.  At this level, only single inheritance is supported; multiple "
@@ -2683,7 +2745,7 @@ msgid ""
 "metatype."
 msgstr ""
 
-#: c-api/typeobj.rst:1708
+#: c-api/typeobj.rst:1750
 msgid ""
 "Slot initialization is subject to the rules of initializing globals. C99 "
 "requires the initializers to be \"address constants\".  Function designators "
@@ -2691,7 +2753,7 @@ msgid ""
 "valid C99 address constants."
 msgstr ""
 
-#: c-api/typeobj.rst:1713
+#: c-api/typeobj.rst:1755
 msgid ""
 "However, the unary '&' operator applied to a non-static variable like :c:"
 "data:`PyBaseObject_Type` is not required to produce an address constant.  "
@@ -2699,27 +2761,27 @@ msgid ""
 "strictly standard conforming in this particular behavior."
 msgstr ""
 
-#: c-api/typeobj.rst:1719
+#: c-api/typeobj.rst:1761
 msgid ""
 "Consequently, :c:member:`~PyTypeObject.tp_base` should be set in the "
 "extension module's init function."
 msgstr ""
 
-#: c-api/typeobj.rst:1724
+#: c-api/typeobj.rst:1766
 msgid "This field is not inherited by subtypes (obviously)."
 msgstr ""
 
-#: c-api/typeobj.rst:1728
+#: c-api/typeobj.rst:1770
 msgid ""
 "This field defaults to ``&PyBaseObject_Type`` (which to Python programmers "
 "is known as the type :class:`object`)."
 msgstr ""
 
-#: c-api/typeobj.rst:1734
+#: c-api/typeobj.rst:1776
 msgid "The type's dictionary is stored here by :c:func:`PyType_Ready`."
 msgstr ""
 
-#: c-api/typeobj.rst:1736
+#: c-api/typeobj.rst:1778
 msgid ""
 "This field should normally be initialized to ``NULL`` before PyType_Ready is "
 "called; it may also be initialized to a dictionary containing initial "
@@ -2730,70 +2792,70 @@ msgid ""
 "be treated as read-only."
 msgstr ""
 
-#: c-api/typeobj.rst:1744
+#: c-api/typeobj.rst:1786
 msgid ""
 "Some types may not store their dictionary in this slot. Use :c:func:"
 "`PyType_GetDict` to retrieve the dictionary for an arbitrary type."
 msgstr ""
 
-#: c-api/typeobj.rst:1750
+#: c-api/typeobj.rst:1792
 msgid ""
 "Internals detail: For static builtin types, this is always ``NULL``. "
 "Instead, the dict for such types is stored on ``PyInterpreterState``. Use :c:"
 "func:`PyType_GetDict` to get the dict for an arbitrary type."
 msgstr ""
 
-#: c-api/typeobj.rst:1756
+#: c-api/typeobj.rst:1798
 msgid ""
 "This field is not inherited by subtypes (though the attributes defined in "
 "here are inherited through a different mechanism)."
 msgstr ""
 
-#: c-api/typeobj.rst:1761
+#: c-api/typeobj.rst:1803
 msgid ""
 "If this field is ``NULL``, :c:func:`PyType_Ready` will assign a new "
 "dictionary to it."
 msgstr ""
 
-#: c-api/typeobj.rst:1766
+#: c-api/typeobj.rst:1808
 msgid ""
 "It is not safe to use :c:func:`PyDict_SetItem` on or otherwise modify :c:"
 "member:`~PyTypeObject.tp_dict` with the dictionary C-API."
 msgstr ""
 
-#: c-api/typeobj.rst:1772
+#: c-api/typeobj.rst:1814
 msgid "An optional pointer to a \"descriptor get\" function."
 msgstr ""
 
-#: c-api/typeobj.rst:1790 c-api/typeobj.rst:1884 c-api/typeobj.rst:1908
+#: c-api/typeobj.rst:1832 c-api/typeobj.rst:1926 c-api/typeobj.rst:1950
 msgid "The function signature is::"
 msgstr ""
 
-#: c-api/typeobj.rst:1776
+#: c-api/typeobj.rst:1818
 msgid "PyObject * tp_descr_get(PyObject *self, PyObject *obj, PyObject *type);"
 msgstr ""
 
-#: c-api/typeobj.rst:1787
+#: c-api/typeobj.rst:1829
 msgid ""
 "An optional pointer to a function for setting and deleting a descriptor's "
 "value."
 msgstr ""
 
-#: c-api/typeobj.rst:1792
+#: c-api/typeobj.rst:1834
 msgid "int tp_descr_set(PyObject *self, PyObject *obj, PyObject *value);"
 msgstr ""
 
-#: c-api/typeobj.rst:1794
+#: c-api/typeobj.rst:1836
 msgid "The *value* argument is set to ``NULL`` to delete the value."
 msgstr ""
 
-#: c-api/typeobj.rst:1805
+#: c-api/typeobj.rst:1847
 msgid ""
 "While this field is still supported, :c:macro:`Py_TPFLAGS_MANAGED_DICT` "
 "should be used instead, if at all possible."
 msgstr ""
 
-#: c-api/typeobj.rst:1808
+#: c-api/typeobj.rst:1850
 msgid ""
 "If the instances of this type have a dictionary containing instance "
 "variables, this field is non-zero and contains the offset in the instances "
@@ -2801,19 +2863,19 @@ msgid ""
 "func:`PyObject_GenericGetAttr`."
 msgstr ""
 
-#: c-api/typeobj.rst:1813
+#: c-api/typeobj.rst:1855
 msgid ""
 "Do not confuse this field with :c:member:`~PyTypeObject.tp_dict`; that is "
 "the dictionary for attributes of the type object itself."
 msgstr ""
 
-#: c-api/typeobj.rst:1816
+#: c-api/typeobj.rst:1858
 msgid ""
 "The value specifies the offset of the dictionary from the start of the "
 "instance structure."
 msgstr ""
 
-#: c-api/typeobj.rst:1818
+#: c-api/typeobj.rst:1860
 msgid ""
 "The :c:member:`~PyTypeObject.tp_dictoffset` should be regarded as write-"
 "only. To get the pointer to the dictionary call :c:func:"
@@ -2822,13 +2884,13 @@ msgid ""
 "to call :c:func:`PyObject_GetAttr` when accessing an attribute on the object."
 msgstr ""
 
-#: c-api/typeobj.rst:1824
+#: c-api/typeobj.rst:1866
 msgid ""
-"It is an error to set both the :c:macro:`Py_TPFLAGS_MANAGED_WEAKREF` bit "
-"and :c:member:`~PyTypeObject.tp_dictoffset`."
+"It is an error to set both the :c:macro:`Py_TPFLAGS_MANAGED_DICT` bit and :c:"
+"member:`~PyTypeObject.tp_dictoffset`."
 msgstr ""
 
-#: c-api/typeobj.rst:1829
+#: c-api/typeobj.rst:1871
 msgid ""
 "This field is inherited by subtypes. A subtype should not override this "
 "offset; doing so could be unsafe, if C code tries to access the dictionary "
@@ -2836,25 +2898,25 @@ msgid ""
 "`Py_TPFLAGS_MANAGED_DICT`."
 msgstr ""
 
-#: c-api/typeobj.rst:1836
+#: c-api/typeobj.rst:1878
 msgid ""
 "This slot has no default.  For :ref:`static types <static-types>`, if the "
 "field is ``NULL`` then no :attr:`~object.__dict__` gets created for "
 "instances."
 msgstr ""
 
-#: c-api/typeobj.rst:1839
+#: c-api/typeobj.rst:1881
 msgid ""
 "If the :c:macro:`Py_TPFLAGS_MANAGED_DICT` bit is set in the :c:member:"
 "`~PyTypeObject.tp_dict` field, then :c:member:`~PyTypeObject.tp_dictoffset` "
 "will be set to ``-1``, to indicate that it is unsafe to use this field."
 msgstr ""
 
-#: c-api/typeobj.rst:1847
+#: c-api/typeobj.rst:1889
 msgid "An optional pointer to an instance initialization function."
 msgstr ""
 
-#: c-api/typeobj.rst:1849
+#: c-api/typeobj.rst:1891
 msgid ""
 "This function corresponds to the :meth:`~object.__init__` method of "
 "classes.  Like :meth:`!__init__`, it is possible to create an instance "
@@ -2862,18 +2924,18 @@ msgid ""
 "instance by calling its :meth:`!__init__` method again."
 msgstr ""
 
-#: c-api/typeobj.rst:1856
+#: c-api/typeobj.rst:1898
 msgid "int tp_init(PyObject *self, PyObject *args, PyObject *kwds);"
 msgstr ""
 
-#: c-api/typeobj.rst:1858
+#: c-api/typeobj.rst:1900
 msgid ""
 "The self argument is the instance to be initialized; the *args* and *kwds* "
 "arguments represent positional and keyword arguments of the call to :meth:"
 "`~object.__init__`."
 msgstr ""
 
-#: c-api/typeobj.rst:1862
+#: c-api/typeobj.rst:1904
 msgid ""
 "The :c:member:`~PyTypeObject.tp_init` function, if not ``NULL``, is called "
 "when an instance is created normally by calling its type, after the type's :"
@@ -2885,52 +2947,52 @@ msgid ""
 "subtype's :c:member:`~PyTypeObject.tp_init` is called."
 msgstr ""
 
-#: c-api/typeobj.rst:1869
+#: c-api/typeobj.rst:1911
 msgid "Returns ``0`` on success, ``-1`` and sets an exception on error."
 msgstr ""
 
-#: c-api/typeobj.rst:1877
+#: c-api/typeobj.rst:1919
 msgid ""
 "For :ref:`static types <static-types>` this field does not have a default."
 msgstr ""
 
-#: c-api/typeobj.rst:1882
+#: c-api/typeobj.rst:1924
 msgid "An optional pointer to an instance allocation function."
 msgstr ""
 
-#: c-api/typeobj.rst:1886
+#: c-api/typeobj.rst:1928
 msgid "PyObject *tp_alloc(PyTypeObject *self, Py_ssize_t nitems);"
 msgstr ""
 
-#: c-api/typeobj.rst:1890
+#: c-api/typeobj.rst:1932
 msgid ""
 "This field is inherited by static subtypes, but not by dynamic subtypes "
 "(subtypes created by a class statement)."
 msgstr ""
 
-#: c-api/typeobj.rst:1895
+#: c-api/typeobj.rst:1937
 msgid ""
 "For dynamic subtypes, this field is always set to :c:func:"
 "`PyType_GenericAlloc`, to force a standard heap allocation strategy."
 msgstr ""
 
-#: c-api/typeobj.rst:1899
+#: c-api/typeobj.rst:1941
 msgid ""
 "For static subtypes, :c:data:`PyBaseObject_Type` uses :c:func:"
 "`PyType_GenericAlloc`.  That is the recommended value for all statically "
 "defined types."
 msgstr ""
 
-#: c-api/typeobj.rst:1906
+#: c-api/typeobj.rst:1948
 msgid "An optional pointer to an instance creation function."
 msgstr ""
 
-#: c-api/typeobj.rst:1910
+#: c-api/typeobj.rst:1952
 msgid ""
 "PyObject *tp_new(PyTypeObject *subtype, PyObject *args, PyObject *kwds);"
 msgstr ""
 
-#: c-api/typeobj.rst:1912
+#: c-api/typeobj.rst:1954
 msgid ""
 "The *subtype* argument is the type of the object being created; the *args* "
 "and *kwds* arguments represent positional and keyword arguments of the call "
@@ -2939,7 +3001,7 @@ msgid ""
 "that type (but not an unrelated type)."
 msgstr ""
 
-#: c-api/typeobj.rst:1918
+#: c-api/typeobj.rst:1960
 msgid ""
 "The :c:member:`~PyTypeObject.tp_new` function should call ``subtype-"
 ">tp_alloc(subtype, nitems)`` to allocate space for the object, and then do "
@@ -2951,20 +3013,20 @@ msgid ""
 "be deferred to :c:member:`~PyTypeObject.tp_init`."
 msgstr ""
 
-#: c-api/typeobj.rst:1926
+#: c-api/typeobj.rst:1968
 msgid ""
 "Set the :c:macro:`Py_TPFLAGS_DISALLOW_INSTANTIATION` flag to disallow "
 "creating instances of the type in Python."
 msgstr ""
 
-#: c-api/typeobj.rst:1931
+#: c-api/typeobj.rst:1973
 msgid ""
 "This field is inherited by subtypes, except it is not inherited by :ref:"
 "`static types <static-types>` whose :c:member:`~PyTypeObject.tp_base` is "
 "``NULL`` or ``&PyBaseObject_Type``."
 msgstr ""
 
-#: c-api/typeobj.rst:1937
+#: c-api/typeobj.rst:1979
 msgid ""
 "For :ref:`static types <static-types>` this field has no default. This means "
 "if the slot is defined as ``NULL``, the type cannot be called to create new "
@@ -2972,44 +3034,44 @@ msgid ""
 "factory function."
 msgstr ""
 
-#: c-api/typeobj.rst:1945
+#: c-api/typeobj.rst:1987
 msgid ""
 "An optional pointer to an instance deallocation function.  Its signature is::"
 msgstr ""
 
-#: c-api/typeobj.rst:1947
+#: c-api/typeobj.rst:1989
 msgid "void tp_free(void *self);"
 msgstr ""
 
-#: c-api/typeobj.rst:1949
+#: c-api/typeobj.rst:1991
 msgid ""
 "An initializer that is compatible with this signature is :c:func:"
 "`PyObject_Free`."
 msgstr ""
 
-#: c-api/typeobj.rst:1953
+#: c-api/typeobj.rst:1995
 msgid ""
 "This field is inherited by static subtypes, but not by dynamic subtypes "
 "(subtypes created by a class statement)"
 msgstr ""
 
-#: c-api/typeobj.rst:1958
+#: c-api/typeobj.rst:2000
 msgid ""
 "In dynamic subtypes, this field is set to a deallocator suitable to match :c:"
 "func:`PyType_GenericAlloc` and the value of the :c:macro:"
 "`Py_TPFLAGS_HAVE_GC` flag bit."
 msgstr ""
 
-#: c-api/typeobj.rst:1962
+#: c-api/typeobj.rst:2004
 msgid ""
 "For static subtypes, :c:data:`PyBaseObject_Type` uses :c:func:`PyObject_Del`."
 msgstr ""
 
-#: c-api/typeobj.rst:1967
+#: c-api/typeobj.rst:2009
 msgid "An optional pointer to a function called by the garbage collector."
 msgstr ""
 
-#: c-api/typeobj.rst:1969
+#: c-api/typeobj.rst:2011
 msgid ""
 "The garbage collector needs to know whether a particular object is "
 "collectible or not.  Normally, it is sufficient to look at the object's "
@@ -3021,91 +3083,91 @@ msgid ""
 "instance. The signature is::"
 msgstr ""
 
-#: c-api/typeobj.rst:1977
+#: c-api/typeobj.rst:2019
 msgid "int tp_is_gc(PyObject *self);"
 msgstr ""
 
-#: c-api/typeobj.rst:1979
+#: c-api/typeobj.rst:2021
 msgid ""
 "(The only example of this are types themselves.  The metatype, :c:data:"
 "`PyType_Type`, defines this function to distinguish between statically and :"
 "ref:`dynamically allocated types <heap-types>`.)"
 msgstr ""
 
-#: c-api/typeobj.rst:1989
+#: c-api/typeobj.rst:2031
 msgid ""
 "This slot has no default.  If this field is ``NULL``, :c:macro:"
 "`Py_TPFLAGS_HAVE_GC` is used as the functional equivalent."
 msgstr ""
 
-#: c-api/typeobj.rst:1995
+#: c-api/typeobj.rst:2037
 msgid "Tuple of base types."
 msgstr ""
 
-#: c-api/typeobj.rst:2021
+#: c-api/typeobj.rst:2063
 msgid ""
 "This field should be set to ``NULL`` and treated as read-only. Python will "
 "fill it in when the type is :c:func:`initialized <PyType_Ready>`."
 msgstr ""
 
-#: c-api/typeobj.rst:2000
+#: c-api/typeobj.rst:2042
 msgid ""
 "For dynamically created classes, the ``Py_tp_bases`` :c:type:`slot "
 "<PyType_Slot>` can be used instead of the *bases* argument of :c:func:"
 "`PyType_FromSpecWithBases`. The argument form is preferred."
 msgstr ""
 
-#: c-api/typeobj.rst:2007
+#: c-api/typeobj.rst:2049
 msgid ""
 "Multiple inheritance does not work well for statically defined types. If you "
 "set ``tp_bases`` to a tuple, Python will not raise an error, but some slots "
 "will only be inherited from the first base."
 msgstr ""
 
-#: c-api/typeobj.rst:2036 c-api/typeobj.rst:2070 c-api/typeobj.rst:2084
+#: c-api/typeobj.rst:2078 c-api/typeobj.rst:2112 c-api/typeobj.rst:2126
 msgid "This field is not inherited."
 msgstr ""
 
-#: c-api/typeobj.rst:2018
+#: c-api/typeobj.rst:2060
 msgid ""
 "Tuple containing the expanded set of base types, starting with the type "
 "itself and ending with :class:`object`, in Method Resolution Order."
 msgstr ""
 
-#: c-api/typeobj.rst:2026
+#: c-api/typeobj.rst:2068
 msgid ""
 "This field is not inherited; it is calculated fresh by :c:func:"
 "`PyType_Ready`."
 msgstr ""
 
-#: c-api/typeobj.rst:2032
+#: c-api/typeobj.rst:2074
 msgid "Unused.  Internal use only."
 msgstr ""
 
-#: c-api/typeobj.rst:2041
+#: c-api/typeobj.rst:2083
 msgid ""
 "A collection of subclasses.  Internal use only.  May be an invalid pointer."
 msgstr ""
 
-#: c-api/typeobj.rst:2043
+#: c-api/typeobj.rst:2085
 msgid ""
 "To get a list of subclasses, call the Python method :py:meth:`~type."
 "__subclasses__`."
 msgstr ""
 
-#: c-api/typeobj.rst:2048
+#: c-api/typeobj.rst:2090
 msgid ""
 "For some types, this field does not hold a valid :c:expr:`PyObject*`. The "
 "type was changed to :c:expr:`void*` to indicate this."
 msgstr ""
 
-#: c-api/typeobj.rst:2058
+#: c-api/typeobj.rst:2100
 msgid ""
 "Weak reference list head, for weak references to this type object.  Not "
 "inherited.  Internal use only."
 msgstr ""
 
-#: c-api/typeobj.rst:2063
+#: c-api/typeobj.rst:2105
 msgid ""
 "Internals detail: For the static builtin types this is always ``NULL``, even "
 "if weakrefs are added.  Instead, the weakrefs for each are stored on "
@@ -3113,25 +3175,25 @@ msgid ""
 "``_PyObject_GET_WEAKREFS_LISTPTR()`` macro to avoid the distinction."
 msgstr ""
 
-#: c-api/typeobj.rst:2075
+#: c-api/typeobj.rst:2117
 msgid ""
 "This field is deprecated.  Use :c:member:`~PyTypeObject.tp_finalize` instead."
 msgstr ""
 
-#: c-api/typeobj.rst:2080
+#: c-api/typeobj.rst:2122
 msgid "Used to index into the method cache.  Internal use only."
 msgstr ""
 
-#: c-api/typeobj.rst:2089
+#: c-api/typeobj.rst:2131
 msgid ""
 "An optional pointer to an instance finalization function.  Its signature is::"
 msgstr ""
 
-#: c-api/typeobj.rst:2091
+#: c-api/typeobj.rst:2133
 msgid "void tp_finalize(PyObject *self);"
 msgstr ""
 
-#: c-api/typeobj.rst:2093
+#: c-api/typeobj.rst:2135
 msgid ""
 "If :c:member:`~PyTypeObject.tp_finalize` is set, the interpreter calls it "
 "once when finalizing an instance.  It is called either from the garbage "
@@ -3141,14 +3203,14 @@ msgid ""
 "object in a sane state."
 msgstr ""
 
-#: c-api/typeobj.rst:2100
+#: c-api/typeobj.rst:2142
 msgid ""
 ":c:member:`~PyTypeObject.tp_finalize` should not mutate the current "
 "exception status; therefore, a recommended way to write a non-trivial "
 "finalizer is::"
 msgstr ""
 
-#: c-api/typeobj.rst:2103
+#: c-api/typeobj.rst:2145
 msgid ""
 "static void\n"
 "local_finalize(PyObject *self)\n"
@@ -3165,18 +3227,18 @@ msgid ""
 "}"
 msgstr ""
 
-#: c-api/typeobj.rst:2125
+#: c-api/typeobj.rst:2167
 msgid ""
 "Before version 3.8 it was necessary to set the :c:macro:"
 "`Py_TPFLAGS_HAVE_FINALIZE` flags bit in order for this field to be used.  "
 "This is no longer required."
 msgstr ""
 
-#: c-api/typeobj.rst:2129
+#: c-api/typeobj.rst:2171
 msgid "\"Safe object finalization\" (:pep:`442`)"
 msgstr ""
 
-#: c-api/typeobj.rst:2134
+#: c-api/typeobj.rst:2176
 msgid ""
 "Vectorcall function to use for calls of this type object. In other words, it "
 "is used to implement :ref:`vectorcall <vectorcall>` for ``type.__call__``. "
@@ -3184,65 +3246,65 @@ msgid ""
 "meth:`~object.__new__` and :meth:`~object.__init__` is used."
 msgstr ""
 
-#: c-api/typeobj.rst:2142
+#: c-api/typeobj.rst:2184
 msgid "This field is never inherited."
 msgstr ""
 
-#: c-api/typeobj.rst:2144
+#: c-api/typeobj.rst:2186
 msgid "(the field exists since 3.8 but it's only used since 3.9)"
 msgstr ""
 
-#: c-api/typeobj.rst:2149
+#: c-api/typeobj.rst:2191
 msgid "Internal. Do not use."
 msgstr ""
 
-#: c-api/typeobj.rst:2157
+#: c-api/typeobj.rst:2199
 msgid "Static Types"
 msgstr ""
 
-#: c-api/typeobj.rst:2159
+#: c-api/typeobj.rst:2201
 msgid ""
 "Traditionally, types defined in C code are *static*, that is, a static :c:"
 "type:`PyTypeObject` structure is defined directly in code and initialized "
 "using :c:func:`PyType_Ready`."
 msgstr ""
 
-#: c-api/typeobj.rst:2163
+#: c-api/typeobj.rst:2205
 msgid ""
 "This results in types that are limited relative to types defined in Python:"
 msgstr ""
 
-#: c-api/typeobj.rst:2165
+#: c-api/typeobj.rst:2207
 msgid ""
 "Static types are limited to one base, i.e. they cannot use multiple "
 "inheritance."
 msgstr ""
 
-#: c-api/typeobj.rst:2167
+#: c-api/typeobj.rst:2209
 msgid ""
 "Static type objects (but not necessarily their instances) are immutable. It "
 "is not possible to add or modify the type object's attributes from Python."
 msgstr ""
 
-#: c-api/typeobj.rst:2169
+#: c-api/typeobj.rst:2211
 msgid ""
 "Static type objects are shared across :ref:`sub-interpreters <sub-"
 "interpreter-support>`, so they should not include any subinterpreter-"
 "specific state."
 msgstr ""
 
-#: c-api/typeobj.rst:2173
+#: c-api/typeobj.rst:2215
 msgid ""
 "Also, since :c:type:`PyTypeObject` is only part of the :ref:`Limited API "
 "<limited-c-api>` as an opaque struct, any extension modules using static "
 "types must be compiled for a specific Python minor version."
 msgstr ""
 
-#: c-api/typeobj.rst:2181
+#: c-api/typeobj.rst:2223
 msgid "Heap Types"
 msgstr ""
 
-#: c-api/typeobj.rst:2183
+#: c-api/typeobj.rst:2225
 msgid ""
 "An alternative to :ref:`static types <static-types>` is *heap-allocated "
 "types*, or *heap types* for short, which correspond closely to classes "
@@ -3250,29 +3312,29 @@ msgid ""
 "`Py_TPFLAGS_HEAPTYPE` flag set."
 msgstr ""
 
-#: c-api/typeobj.rst:2188
+#: c-api/typeobj.rst:2230
 msgid ""
 "This is done by filling a :c:type:`PyType_Spec` structure and calling :c:"
 "func:`PyType_FromSpec`, :c:func:`PyType_FromSpecWithBases`, :c:func:"
 "`PyType_FromModuleAndSpec`, or :c:func:`PyType_FromMetaclass`."
 msgstr ""
 
-#: c-api/typeobj.rst:2196
+#: c-api/typeobj.rst:2238
 msgid "Number Object Structures"
 msgstr ""
 
-#: c-api/typeobj.rst:2203
+#: c-api/typeobj.rst:2245
 msgid ""
 "This structure holds pointers to the functions which an object uses to "
 "implement the number protocol.  Each function is used by the function of "
 "similar name documented in the :ref:`number` section."
 msgstr ""
 
-#: c-api/typeobj.rst:2533
+#: c-api/typeobj.rst:2575
 msgid "Here is the structure definition::"
 msgstr ""
 
-#: c-api/typeobj.rst:2211
+#: c-api/typeobj.rst:2253
 msgid ""
 "typedef struct {\n"
 "     binaryfunc nb_add;\n"
@@ -3318,7 +3380,7 @@ msgid ""
 "} PyNumberMethods;"
 msgstr ""
 
-#: c-api/typeobj.rst:2256
+#: c-api/typeobj.rst:2298
 msgid ""
 "Binary and ternary functions must check the type of all their operands, and "
 "implement the necessary conversions (at least one of the operands is an "
@@ -3328,31 +3390,31 @@ msgid ""
 "and set an exception."
 msgstr ""
 
-#: c-api/typeobj.rst:2265
+#: c-api/typeobj.rst:2307
 msgid ""
 "The :c:member:`~PyNumberMethods.nb_reserved` field should always be "
 "``NULL``.  It was previously called :c:member:`!nb_long`, and was renamed in "
 "Python 3.0.1."
 msgstr ""
 
-#: c-api/typeobj.rst:2310
+#: c-api/typeobj.rst:2352
 msgid "Mapping Object Structures"
 msgstr ""
 
-#: c-api/typeobj.rst:2317
+#: c-api/typeobj.rst:2359
 msgid ""
 "This structure holds pointers to the functions which an object uses to "
 "implement the mapping protocol.  It has three members:"
 msgstr ""
 
-#: c-api/typeobj.rst:2322
+#: c-api/typeobj.rst:2364
 msgid ""
 "This function is used by :c:func:`PyMapping_Size` and :c:func:"
 "`PyObject_Size`, and has the same signature.  This slot may be set to "
 "``NULL`` if the object has no defined length."
 msgstr ""
 
-#: c-api/typeobj.rst:2328
+#: c-api/typeobj.rst:2370
 msgid ""
 "This function is used by :c:func:`PyObject_GetItem` and :c:func:"
 "`PySequence_GetSlice`, and has the same signature as :c:func:`!"
@@ -3360,7 +3422,7 @@ msgid ""
 "`PyMapping_Check` function to return ``1``, it can be ``NULL`` otherwise."
 msgstr ""
 
-#: c-api/typeobj.rst:2336
+#: c-api/typeobj.rst:2378
 msgid ""
 "This function is used by :c:func:`PyObject_SetItem`, :c:func:"
 "`PyObject_DelItem`, :c:func:`PySequence_SetSlice` and :c:func:"
@@ -3370,17 +3432,17 @@ msgid ""
 "deletion."
 msgstr ""
 
-#: c-api/typeobj.rst:2347
+#: c-api/typeobj.rst:2389
 msgid "Sequence Object Structures"
 msgstr ""
 
-#: c-api/typeobj.rst:2354
+#: c-api/typeobj.rst:2396
 msgid ""
 "This structure holds pointers to the functions which an object uses to "
 "implement the sequence protocol."
 msgstr ""
 
-#: c-api/typeobj.rst:2359
+#: c-api/typeobj.rst:2401
 msgid ""
 "This function is used by :c:func:`PySequence_Size` and :c:func:"
 "`PyObject_Size`, and has the same signature.  It is also used for handling "
@@ -3388,21 +3450,21 @@ msgid ""
 "member:`~PySequenceMethods.sq_ass_item` slots."
 msgstr ""
 
-#: c-api/typeobj.rst:2366
+#: c-api/typeobj.rst:2408
 msgid ""
 "This function is used by :c:func:`PySequence_Concat` and has the same "
 "signature.  It is also used by the ``+`` operator, after trying the numeric "
 "addition via the :c:member:`~PyNumberMethods.nb_add` slot."
 msgstr ""
 
-#: c-api/typeobj.rst:2372
+#: c-api/typeobj.rst:2414
 msgid ""
 "This function is used by :c:func:`PySequence_Repeat` and has the same "
 "signature.  It is also used by the ``*`` operator, after trying numeric "
 "multiplication via the :c:member:`~PyNumberMethods.nb_multiply` slot."
 msgstr ""
 
-#: c-api/typeobj.rst:2378
+#: c-api/typeobj.rst:2420
 msgid ""
 "This function is used by :c:func:`PySequence_GetItem` and has the same "
 "signature.  It is also used by :c:func:`PyObject_GetItem`, after trying the "
@@ -3411,7 +3473,7 @@ msgid ""
 "``1``, it can be ``NULL`` otherwise."
 msgstr ""
 
-#: c-api/typeobj.rst:2384
+#: c-api/typeobj.rst:2426
 msgid ""
 "Negative indexes are handled as follows: if the :c:member:"
 "`~PySequenceMethods.sq_length` slot is filled, it is called and the sequence "
@@ -3420,7 +3482,7 @@ msgid ""
 "index is passed as is to the function."
 msgstr ""
 
-#: c-api/typeobj.rst:2391
+#: c-api/typeobj.rst:2433
 msgid ""
 "This function is used by :c:func:`PySequence_SetItem` and has the same "
 "signature.  It is also used by :c:func:`PyObject_SetItem` and :c:func:"
@@ -3429,14 +3491,14 @@ msgid ""
 "``NULL`` if the object does not support item assignment and deletion."
 msgstr ""
 
-#: c-api/typeobj.rst:2400
+#: c-api/typeobj.rst:2442
 msgid ""
 "This function may be used by :c:func:`PySequence_Contains` and has the same "
 "signature.  This slot may be left to ``NULL``, in this case :c:func:`!"
 "PySequence_Contains` simply traverses the sequence until it finds a match."
 msgstr ""
 
-#: c-api/typeobj.rst:2407
+#: c-api/typeobj.rst:2449
 msgid ""
 "This function is used by :c:func:`PySequence_InPlaceConcat` and has the same "
 "signature.  It should modify its first operand, and return it.  This slot "
@@ -3446,7 +3508,7 @@ msgid ""
 "c:member:`~PyNumberMethods.nb_inplace_add` slot."
 msgstr ""
 
-#: c-api/typeobj.rst:2416
+#: c-api/typeobj.rst:2458
 msgid ""
 "This function is used by :c:func:`PySequence_InPlaceRepeat` and has the same "
 "signature.  It should modify its first operand, and return it.  This slot "
@@ -3456,74 +3518,74 @@ msgid ""
 "via the :c:member:`~PyNumberMethods.nb_inplace_multiply` slot."
 msgstr ""
 
-#: c-api/typeobj.rst:2427
+#: c-api/typeobj.rst:2469
 msgid "Buffer Object Structures"
 msgstr ""
 
-#: c-api/typeobj.rst:2435
+#: c-api/typeobj.rst:2477
 msgid ""
 "This structure holds pointers to the functions required by the :ref:`Buffer "
 "protocol <bufferobjects>`. The protocol defines how an exporter object can "
 "expose its internal data to consumer objects."
 msgstr ""
 
-#: c-api/typeobj.rst:2490 c-api/typeobj.rst:2555 c-api/typeobj.rst:2577
+#: c-api/typeobj.rst:2532 c-api/typeobj.rst:2597 c-api/typeobj.rst:2619
 msgid "The signature of this function is::"
 msgstr ""
 
-#: c-api/typeobj.rst:2443
+#: c-api/typeobj.rst:2485
 msgid "int (PyObject *exporter, Py_buffer *view, int flags);"
 msgstr ""
 
-#: c-api/typeobj.rst:2445
+#: c-api/typeobj.rst:2487
 msgid ""
 "Handle a request to *exporter* to fill in *view* as specified by *flags*. "
 "Except for point (3), an implementation of this function MUST take these "
 "steps:"
 msgstr ""
 
-#: c-api/typeobj.rst:2449
+#: c-api/typeobj.rst:2491
 msgid ""
 "Check if the request can be met. If not, raise :exc:`BufferError`, set :c:"
 "expr:`view->obj` to ``NULL`` and return ``-1``."
 msgstr ""
 
-#: c-api/typeobj.rst:2452
+#: c-api/typeobj.rst:2494
 msgid "Fill in the requested fields."
 msgstr ""
 
-#: c-api/typeobj.rst:2454
+#: c-api/typeobj.rst:2496
 msgid "Increment an internal counter for the number of exports."
 msgstr ""
 
-#: c-api/typeobj.rst:2456
+#: c-api/typeobj.rst:2498
 msgid ""
 "Set :c:expr:`view->obj` to *exporter* and increment :c:expr:`view->obj`."
 msgstr ""
 
-#: c-api/typeobj.rst:2458
+#: c-api/typeobj.rst:2500
 msgid "Return ``0``."
 msgstr ""
 
-#: c-api/typeobj.rst:2460
+#: c-api/typeobj.rst:2502
 msgid ""
 "If *exporter* is part of a chain or tree of buffer providers, two main "
 "schemes can be used:"
 msgstr ""
 
-#: c-api/typeobj.rst:2463
+#: c-api/typeobj.rst:2505
 msgid ""
 "Re-export: Each member of the tree acts as the exporting object and sets :c:"
 "expr:`view->obj` to a new reference to itself."
 msgstr ""
 
-#: c-api/typeobj.rst:2466
+#: c-api/typeobj.rst:2508
 msgid ""
 "Redirect: The buffer request is redirected to the root object of the tree. "
 "Here, :c:expr:`view->obj` will be a new reference to the root object."
 msgstr ""
 
-#: c-api/typeobj.rst:2470
+#: c-api/typeobj.rst:2512
 msgid ""
 "The individual fields of *view* are described in section :ref:`Buffer "
 "structure <buffer-structure>`, the rules how an exporter must react to "
@@ -3531,7 +3593,7 @@ msgid ""
 "types>`."
 msgstr ""
 
-#: c-api/typeobj.rst:2475
+#: c-api/typeobj.rst:2517
 msgid ""
 "All memory pointed to in the :c:type:`Py_buffer` structure belongs to the "
 "exporter and must remain valid until there are no consumers left. :c:member:"
@@ -3540,23 +3602,23 @@ msgid ""
 "internal` are read-only for the consumer."
 msgstr ""
 
-#: c-api/typeobj.rst:2482
+#: c-api/typeobj.rst:2524
 msgid ""
 ":c:func:`PyBuffer_FillInfo` provides an easy way of exposing a simple bytes "
 "buffer while dealing correctly with all request types."
 msgstr ""
 
-#: c-api/typeobj.rst:2485
+#: c-api/typeobj.rst:2527
 msgid ""
 ":c:func:`PyObject_GetBuffer` is the interface for the consumer that wraps "
 "this function."
 msgstr ""
 
-#: c-api/typeobj.rst:2492
+#: c-api/typeobj.rst:2534
 msgid "void (PyObject *exporter, Py_buffer *view);"
 msgstr ""
 
-#: c-api/typeobj.rst:2494
+#: c-api/typeobj.rst:2536
 msgid ""
 "Handle a request to release the resources of the buffer. If no resources "
 "need to be released, :c:member:`PyBufferProcs.bf_releasebuffer` may be "
@@ -3564,15 +3626,15 @@ msgid ""
 "these optional steps:"
 msgstr ""
 
-#: c-api/typeobj.rst:2499
+#: c-api/typeobj.rst:2541
 msgid "Decrement an internal counter for the number of exports."
 msgstr ""
 
-#: c-api/typeobj.rst:2501
+#: c-api/typeobj.rst:2543
 msgid "If the counter is ``0``, free all memory associated with *view*."
 msgstr ""
 
-#: c-api/typeobj.rst:2503
+#: c-api/typeobj.rst:2545
 msgid ""
 "The exporter MUST use the :c:member:`~Py_buffer.internal` field to keep "
 "track of buffer-specific resources. This field is guaranteed to remain "
@@ -3580,30 +3642,30 @@ msgid ""
 "*view* argument."
 msgstr ""
 
-#: c-api/typeobj.rst:2509
+#: c-api/typeobj.rst:2551
 msgid ""
 "This function MUST NOT decrement :c:expr:`view->obj`, since that is done "
 "automatically in :c:func:`PyBuffer_Release` (this scheme is useful for "
 "breaking reference cycles)."
 msgstr ""
 
-#: c-api/typeobj.rst:2514
+#: c-api/typeobj.rst:2556
 msgid ""
 ":c:func:`PyBuffer_Release` is the interface for the consumer that wraps this "
 "function."
 msgstr ""
 
-#: c-api/typeobj.rst:2522
+#: c-api/typeobj.rst:2564
 msgid "Async Object Structures"
 msgstr ""
 
-#: c-api/typeobj.rst:2530
+#: c-api/typeobj.rst:2572
 msgid ""
 "This structure holds pointers to the functions required to implement :term:"
 "`awaitable` and :term:`asynchronous iterator` objects."
 msgstr ""
 
-#: c-api/typeobj.rst:2535
+#: c-api/typeobj.rst:2577
 msgid ""
 "typedef struct {\n"
 "    unaryfunc am_await;\n"
@@ -3613,61 +3675,61 @@ msgid ""
 "} PyAsyncMethods;"
 msgstr ""
 
-#: c-api/typeobj.rst:2546
+#: c-api/typeobj.rst:2588
 msgid "PyObject *am_await(PyObject *self);"
 msgstr ""
 
-#: c-api/typeobj.rst:2548
+#: c-api/typeobj.rst:2590
 msgid ""
 "The returned object must be an :term:`iterator`, i.e. :c:func:`PyIter_Check` "
 "must return ``1`` for it."
 msgstr ""
 
-#: c-api/typeobj.rst:2551
+#: c-api/typeobj.rst:2593
 msgid ""
 "This slot may be set to ``NULL`` if an object is not an :term:`awaitable`."
 msgstr ""
 
-#: c-api/typeobj.rst:2557
+#: c-api/typeobj.rst:2599
 msgid "PyObject *am_aiter(PyObject *self);"
 msgstr ""
 
-#: c-api/typeobj.rst:2559
+#: c-api/typeobj.rst:2601
 msgid ""
 "Must return an :term:`asynchronous iterator` object. See :meth:`~object."
 "__anext__` for details."
 msgstr ""
 
-#: c-api/typeobj.rst:2562
+#: c-api/typeobj.rst:2604
 msgid ""
 "This slot may be set to ``NULL`` if an object does not implement "
 "asynchronous iteration protocol."
 msgstr ""
 
-#: c-api/typeobj.rst:2569
+#: c-api/typeobj.rst:2611
 msgid "PyObject *am_anext(PyObject *self);"
 msgstr ""
 
-#: c-api/typeobj.rst:2571
+#: c-api/typeobj.rst:2613
 msgid ""
 "Must return an :term:`awaitable` object. See :meth:`~object.__anext__` for "
 "details. This slot may be set to ``NULL``."
 msgstr ""
 
-#: c-api/typeobj.rst:2579
+#: c-api/typeobj.rst:2621
 msgid "PySendResult am_send(PyObject *self, PyObject *arg, PyObject **result);"
 msgstr ""
 
-#: c-api/typeobj.rst:2581
+#: c-api/typeobj.rst:2623
 msgid ""
 "See :c:func:`PyIter_Send` for details. This slot may be set to ``NULL``."
 msgstr ""
 
-#: c-api/typeobj.rst:2590
+#: c-api/typeobj.rst:2632
 msgid "Slot Type typedefs"
 msgstr ""
 
-#: c-api/typeobj.rst:2594
+#: c-api/typeobj.rst:2636
 msgid ""
 "The purpose of this function is to separate memory allocation from memory "
 "initialization.  It should return a pointer to a block of memory of adequate "
@@ -3681,80 +3743,80 @@ msgid ""
 "length of the block should be :c:member:`~PyTypeObject.tp_basicsize`."
 msgstr ""
 
-#: c-api/typeobj.rst:2604
+#: c-api/typeobj.rst:2646
 msgid ""
 "This function should not do any other instance initialization, not even to "
 "allocate additional memory; that should be done by :c:member:`~PyTypeObject."
 "tp_new`."
 msgstr ""
 
-#: c-api/typeobj.rst:2611
+#: c-api/typeobj.rst:2653
 msgid "See :c:member:`~PyTypeObject.tp_free`."
 msgstr ""
 
-#: c-api/typeobj.rst:2615
+#: c-api/typeobj.rst:2657
 msgid "See :c:member:`~PyTypeObject.tp_new`."
 msgstr ""
 
-#: c-api/typeobj.rst:2619
+#: c-api/typeobj.rst:2661
 msgid "See :c:member:`~PyTypeObject.tp_init`."
 msgstr ""
 
-#: c-api/typeobj.rst:2623
+#: c-api/typeobj.rst:2665
 msgid "See :c:member:`~PyTypeObject.tp_repr`."
 msgstr ""
 
-#: c-api/typeobj.rst:2636
+#: c-api/typeobj.rst:2678
 msgid "Return the value of the named attribute for the object."
 msgstr ""
 
-#: c-api/typeobj.rst:2642
+#: c-api/typeobj.rst:2684
 msgid ""
 "Set the value of the named attribute for the object. The value argument is "
 "set to ``NULL`` to delete the attribute."
 msgstr ""
 
-#: c-api/typeobj.rst:2638
+#: c-api/typeobj.rst:2680
 msgid "See :c:member:`~PyTypeObject.tp_getattro`."
 msgstr ""
 
-#: c-api/typeobj.rst:2645
+#: c-api/typeobj.rst:2687
 msgid "See :c:member:`~PyTypeObject.tp_setattro`."
 msgstr ""
 
-#: c-api/typeobj.rst:2649
+#: c-api/typeobj.rst:2691
 msgid "See :c:member:`~PyTypeObject.tp_descr_get`."
 msgstr ""
 
-#: c-api/typeobj.rst:2653
+#: c-api/typeobj.rst:2695
 msgid "See :c:member:`~PyTypeObject.tp_descr_set`."
 msgstr ""
 
-#: c-api/typeobj.rst:2657
+#: c-api/typeobj.rst:2699
 msgid "See :c:member:`~PyTypeObject.tp_hash`."
 msgstr ""
 
-#: c-api/typeobj.rst:2661
+#: c-api/typeobj.rst:2703
 msgid "See :c:member:`~PyTypeObject.tp_richcompare`."
 msgstr ""
 
-#: c-api/typeobj.rst:2665
+#: c-api/typeobj.rst:2707
 msgid "See :c:member:`~PyTypeObject.tp_iter`."
 msgstr ""
 
-#: c-api/typeobj.rst:2669
+#: c-api/typeobj.rst:2711
 msgid "See :c:member:`~PyTypeObject.tp_iternext`."
 msgstr ""
 
-#: c-api/typeobj.rst:2683
+#: c-api/typeobj.rst:2725
 msgid "See :c:member:`~PyAsyncMethods.am_send`."
 msgstr ""
 
-#: c-api/typeobj.rst:2699
+#: c-api/typeobj.rst:2741
 msgid "Examples"
 msgstr ""
 
-#: c-api/typeobj.rst:2701
+#: c-api/typeobj.rst:2743
 msgid ""
 "The following are simple examples of Python type definitions.  They include "
 "common usage you may encounter.  Some demonstrate tricky corner cases.  For "
@@ -3762,11 +3824,11 @@ msgid ""
 "and :ref:`new-types-topics`."
 msgstr ""
 
-#: c-api/typeobj.rst:2706
+#: c-api/typeobj.rst:2748
 msgid "A basic :ref:`static type <static-types>`::"
 msgstr ""
 
-#: c-api/typeobj.rst:2708
+#: c-api/typeobj.rst:2750
 msgid ""
 "typedef struct {\n"
 "    PyObject_HEAD\n"
@@ -3784,13 +3846,13 @@ msgid ""
 "};"
 msgstr ""
 
-#: c-api/typeobj.rst:2723
+#: c-api/typeobj.rst:2765
 msgid ""
 "You may also find older code (especially in the CPython code base) with a "
 "more verbose initializer::"
 msgstr ""
 
-#: c-api/typeobj.rst:2726
+#: c-api/typeobj.rst:2768
 msgid ""
 "static PyTypeObject MyObject_Type = {\n"
 "    PyVarObject_HEAD_INIT(NULL, 0)\n"
@@ -3834,11 +3896,11 @@ msgid ""
 "};"
 msgstr ""
 
-#: c-api/typeobj.rst:2767
+#: c-api/typeobj.rst:2809
 msgid "A type that supports weakrefs, instance dicts, and hashing::"
 msgstr ""
 
-#: c-api/typeobj.rst:2769
+#: c-api/typeobj.rst:2811
 msgid ""
 "typedef struct {\n"
 "    PyObject_HEAD\n"
@@ -3864,14 +3926,14 @@ msgid ""
 "};"
 msgstr ""
 
-#: c-api/typeobj.rst:2792
+#: c-api/typeobj.rst:2834
 msgid ""
 "A str subclass that cannot be subclassed and cannot be called to create "
 "instances (e.g. uses a separate factory func) using :c:macro:"
 "`Py_TPFLAGS_DISALLOW_INSTANTIATION` flag::"
 msgstr ""
 
-#: c-api/typeobj.rst:2796
+#: c-api/typeobj.rst:2838
 msgid ""
 "typedef struct {\n"
 "    PyUnicodeObject raw;\n"
@@ -3889,12 +3951,12 @@ msgid ""
 "};"
 msgstr ""
 
-#: c-api/typeobj.rst:2811
+#: c-api/typeobj.rst:2853
 msgid ""
 "The simplest :ref:`static type <static-types>` with fixed-length instances::"
 msgstr ""
 
-#: c-api/typeobj.rst:2813
+#: c-api/typeobj.rst:2855
 msgid ""
 "typedef struct {\n"
 "    PyObject_HEAD\n"
@@ -3906,13 +3968,13 @@ msgid ""
 "};"
 msgstr ""
 
-#: c-api/typeobj.rst:2822
+#: c-api/typeobj.rst:2864
 msgid ""
 "The simplest :ref:`static type <static-types>` with variable-length "
 "instances::"
 msgstr ""
 
-#: c-api/typeobj.rst:2824
+#: c-api/typeobj.rst:2866
 msgid ""
 "typedef struct {\n"
 "    PyObject_VAR_HEAD\n"
@@ -3927,14 +3989,14 @@ msgid ""
 "};"
 msgstr ""
 
-#: c-api/typeobj.rst:887
+#: c-api/typeobj.rst:929
 msgid "built-in function"
 msgstr ""
 
-#: c-api/typeobj.rst:822
+#: c-api/typeobj.rst:864
 msgid "repr"
 msgstr ""
 
-#: c-api/typeobj.rst:887
+#: c-api/typeobj.rst:929
 msgid "hash"
 msgstr ""
diff --git a/c-api/unicode.po b/c-api/unicode.po
index 3b5a166f0..4ca582292 100644
--- a/c-api/unicode.po
+++ b/c-api/unicode.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -252,70 +252,65 @@ msgstr ""
 
 #: c-api/unicode.rst:257
 msgid ""
-"Return ``1`` or ``0`` depending on whether *ch* is a printable character. "
-"Nonprintable characters are those characters defined in the Unicode "
-"character database as \"Other\" or \"Separator\", excepting the ASCII space "
-"(0x20) which is considered printable.  (Note that printable characters in "
-"this context are those which should not be escaped when :func:`repr` is "
-"invoked on a string. It has no bearing on the handling of strings written "
-"to :data:`sys.stdout` or :data:`sys.stderr`.)"
+"Return ``1`` or ``0`` depending on whether *ch* is a printable character, in "
+"the sense of :meth:`str.isprintable`."
 msgstr ""
 
-#: c-api/unicode.rst:266
+#: c-api/unicode.rst:261
 msgid "These APIs can be used for fast direct character conversions:"
 msgstr ""
 
-#: c-api/unicode.rst:271
+#: c-api/unicode.rst:266
 msgid "Return the character *ch* converted to lower case."
 msgstr ""
 
-#: c-api/unicode.rst:281 c-api/unicode.rst:289
+#: c-api/unicode.rst:276 c-api/unicode.rst:284
 msgid "This function uses simple case mappings."
 msgstr ""
 
-#: c-api/unicode.rst:279
+#: c-api/unicode.rst:274
 msgid "Return the character *ch* converted to upper case."
 msgstr ""
 
-#: c-api/unicode.rst:287
+#: c-api/unicode.rst:282
 msgid "Return the character *ch* converted to title case."
 msgstr ""
 
-#: c-api/unicode.rst:295
+#: c-api/unicode.rst:290
 msgid ""
 "Return the character *ch* converted to a decimal positive integer.  Return "
 "``-1`` if this is not possible.  This function does not raise exceptions."
 msgstr ""
 
-#: c-api/unicode.rst:301
+#: c-api/unicode.rst:296
 msgid ""
 "Return the character *ch* converted to a single digit integer. Return ``-1`` "
 "if this is not possible.  This function does not raise exceptions."
 msgstr ""
 
-#: c-api/unicode.rst:307
+#: c-api/unicode.rst:302
 msgid ""
 "Return the character *ch* converted to a double. Return ``-1.0`` if this is "
 "not possible.  This function does not raise exceptions."
 msgstr ""
 
-#: c-api/unicode.rst:311
+#: c-api/unicode.rst:306
 msgid "These APIs can be used to work with surrogates:"
 msgstr ""
 
-#: c-api/unicode.rst:315
+#: c-api/unicode.rst:310
 msgid "Check if *ch* is a surrogate (``0xD800 <= ch <= 0xDFFF``)."
 msgstr ""
 
-#: c-api/unicode.rst:319
+#: c-api/unicode.rst:314
 msgid "Check if *ch* is a high surrogate (``0xD800 <= ch <= 0xDBFF``)."
 msgstr ""
 
-#: c-api/unicode.rst:323
+#: c-api/unicode.rst:318
 msgid "Check if *ch* is a low surrogate (``0xDC00 <= ch <= 0xDFFF``)."
 msgstr ""
 
-#: c-api/unicode.rst:327
+#: c-api/unicode.rst:322
 msgid ""
 "Join two surrogate characters and return a single :c:type:`Py_UCS4` value. "
 "*high* and *low* are respectively the leading and trailing surrogates in a "
@@ -323,34 +318,34 @@ msgid ""
 "be in the range [0xDC00; 0xDFFF]."
 msgstr ""
 
-#: c-api/unicode.rst:334
+#: c-api/unicode.rst:329
 msgid "Creating and accessing Unicode strings"
 msgstr ""
 
-#: c-api/unicode.rst:336
+#: c-api/unicode.rst:331
 msgid ""
 "To create Unicode objects and access their basic sequence properties, use "
 "these APIs:"
 msgstr ""
 
-#: c-api/unicode.rst:341
+#: c-api/unicode.rst:336
 msgid ""
 "Create a new Unicode object.  *maxchar* should be the true maximum code "
 "point to be placed in the string.  As an approximation, it can be rounded up "
 "to the nearest value in the sequence 127, 255, 65535, 1114111."
 msgstr ""
 
-#: c-api/unicode.rst:345
+#: c-api/unicode.rst:340
 msgid ""
 "This is the recommended way to allocate a new Unicode object.  Objects "
 "created using this function are not resizable."
 msgstr ""
 
-#: c-api/unicode.rst:348
+#: c-api/unicode.rst:343
 msgid "On error, set an exception and return ``NULL``."
 msgstr ""
 
-#: c-api/unicode.rst:356
+#: c-api/unicode.rst:351
 msgid ""
 "Create a new Unicode object with the given *kind* (possible values are :c:"
 "macro:`PyUnicode_1BYTE_KIND` etc., as returned by :c:func:"
@@ -358,7 +353,7 @@ msgid ""
 "1, 2 or 4 bytes per character, as given by the kind."
 msgstr ""
 
-#: c-api/unicode.rst:361
+#: c-api/unicode.rst:356
 msgid ""
 "If necessary, the input *buffer* is copied and transformed into the "
 "canonical representation.  For example, if the *buffer* is a UCS4 string (:c:"
@@ -366,7 +361,7 @@ msgid ""
 "range, it will be transformed into UCS1 (:c:macro:`PyUnicode_1BYTE_KIND`)."
 msgstr ""
 
-#: c-api/unicode.rst:372
+#: c-api/unicode.rst:367
 msgid ""
 "Create a Unicode object from the char buffer *str*.  The bytes will be "
 "interpreted as being UTF-8 encoded.  The buffer is copied into the new "
@@ -374,29 +369,29 @@ msgid ""
 "data is not allowed."
 msgstr ""
 
-#: c-api/unicode.rst:378
+#: c-api/unicode.rst:373
 msgid "This function raises :exc:`SystemError` when:"
 msgstr ""
 
-#: c-api/unicode.rst:380
+#: c-api/unicode.rst:375
 msgid "*size* < 0,"
 msgstr ""
 
-#: c-api/unicode.rst:381
+#: c-api/unicode.rst:376
 msgid "*str* is ``NULL`` and *size* > 0"
 msgstr ""
 
-#: c-api/unicode.rst:383
+#: c-api/unicode.rst:378
 msgid "*str* == ``NULL`` with *size* > 0 is not allowed anymore."
 msgstr ""
 
-#: c-api/unicode.rst:389
+#: c-api/unicode.rst:384
 msgid ""
 "Create a Unicode object from a UTF-8 encoded null-terminated char buffer "
 "*str*."
 msgstr ""
 
-#: c-api/unicode.rst:395
+#: c-api/unicode.rst:390
 msgid ""
 "Take a C :c:func:`printf`\\ -style *format* string and a variable number of "
 "arguments, calculate the size of the resulting Python Unicode string and "
@@ -405,23 +400,23 @@ msgid ""
 "*format* ASCII-encoded string."
 msgstr ""
 
-#: c-api/unicode.rst:401
+#: c-api/unicode.rst:396
 msgid ""
 "A conversion specifier contains two or more characters and has the following "
 "components, which must occur in this order:"
 msgstr ""
 
-#: c-api/unicode.rst:404
+#: c-api/unicode.rst:399
 msgid "The ``'%'`` character, which marks the start of the specifier."
 msgstr ""
 
-#: c-api/unicode.rst:406
+#: c-api/unicode.rst:401
 msgid ""
 "Conversion flags (optional), which affect the result of some conversion "
 "types."
 msgstr ""
 
-#: c-api/unicode.rst:409
+#: c-api/unicode.rst:404
 msgid ""
 "Minimum field width (optional). If specified as an ``'*'`` (asterisk), the "
 "actual width is given in the next argument, which must be of type :c:expr:"
@@ -429,7 +424,7 @@ msgid ""
 "optional precision."
 msgstr ""
 
-#: c-api/unicode.rst:414
+#: c-api/unicode.rst:409
 msgid ""
 "Precision (optional), given as a ``'.'`` (dot) followed by the precision. If "
 "specified as ``'*'`` (an asterisk), the actual precision is given in the "
@@ -437,268 +432,268 @@ msgid ""
 "comes after the precision."
 msgstr ""
 
-#: c-api/unicode.rst:419
+#: c-api/unicode.rst:414
 msgid "Length modifier (optional)."
 msgstr ""
 
-#: c-api/unicode.rst:421
+#: c-api/unicode.rst:416
 msgid "Conversion type."
 msgstr ""
 
-#: c-api/unicode.rst:423
+#: c-api/unicode.rst:418
 msgid "The conversion flag characters are:"
 msgstr ""
 
-#: c-api/unicode.rst:428
+#: c-api/unicode.rst:423
 msgid "Flag"
 msgstr ""
 
-#: c-api/unicode.rst:428
+#: c-api/unicode.rst:423
 msgid "Meaning"
 msgstr ""
 
-#: c-api/unicode.rst:430
+#: c-api/unicode.rst:425
 msgid "``0``"
 msgstr ""
 
-#: c-api/unicode.rst:430
+#: c-api/unicode.rst:425
 msgid "The conversion will be zero padded for numeric values."
 msgstr ""
 
-#: c-api/unicode.rst:432
+#: c-api/unicode.rst:427
 msgid "``-``"
 msgstr ""
 
-#: c-api/unicode.rst:432
+#: c-api/unicode.rst:427
 msgid ""
 "The converted value is left adjusted (overrides the ``0`` flag if both are "
 "given)."
 msgstr ""
 
-#: c-api/unicode.rst:436
+#: c-api/unicode.rst:431
 msgid ""
 "The length modifiers for following integer conversions (``d``, ``i``, ``o``, "
 "``u``, ``x``, or ``X``) specify the type of the argument (:c:expr:`int` by "
 "default):"
 msgstr ""
 
-#: c-api/unicode.rst:443
+#: c-api/unicode.rst:438
 msgid "Modifier"
 msgstr ""
 
-#: c-api/unicode.rst:443
+#: c-api/unicode.rst:438
 msgid "Types"
 msgstr ""
 
-#: c-api/unicode.rst:445
+#: c-api/unicode.rst:440
 msgid "``l``"
 msgstr ""
 
-#: c-api/unicode.rst:445
+#: c-api/unicode.rst:440
 msgid ":c:expr:`long` or :c:expr:`unsigned long`"
 msgstr ""
 
-#: c-api/unicode.rst:447
+#: c-api/unicode.rst:442
 msgid "``ll``"
 msgstr ""
 
-#: c-api/unicode.rst:447
+#: c-api/unicode.rst:442
 msgid ":c:expr:`long long` or :c:expr:`unsigned long long`"
 msgstr ""
 
-#: c-api/unicode.rst:449
+#: c-api/unicode.rst:444
 msgid "``j``"
 msgstr ""
 
-#: c-api/unicode.rst:449
+#: c-api/unicode.rst:444
 msgid ":c:type:`intmax_t` or :c:type:`uintmax_t`"
 msgstr ""
 
-#: c-api/unicode.rst:451
+#: c-api/unicode.rst:446
 msgid "``z``"
 msgstr ""
 
-#: c-api/unicode.rst:451
+#: c-api/unicode.rst:446
 msgid ":c:type:`size_t` or :c:type:`ssize_t`"
 msgstr ""
 
-#: c-api/unicode.rst:453
+#: c-api/unicode.rst:448
 msgid "``t``"
 msgstr ""
 
-#: c-api/unicode.rst:453
+#: c-api/unicode.rst:448
 msgid ":c:type:`ptrdiff_t`"
 msgstr ""
 
-#: c-api/unicode.rst:456
+#: c-api/unicode.rst:451
 msgid ""
 "The length modifier ``l`` for following conversions ``s`` or ``V`` specify "
 "that the type of the argument is :c:expr:`const wchar_t*`."
 msgstr ""
 
-#: c-api/unicode.rst:459
+#: c-api/unicode.rst:454
 msgid "The conversion specifiers are:"
 msgstr ""
 
-#: c-api/unicode.rst:465
+#: c-api/unicode.rst:460
 msgid "Conversion Specifier"
 msgstr ""
 
-#: c-api/unicode.rst:466
+#: c-api/unicode.rst:461
 msgid "Type"
 msgstr ""
 
-#: c-api/unicode.rst:467
+#: c-api/unicode.rst:462
 msgid "Comment"
 msgstr ""
 
-#: c-api/unicode.rst:469
+#: c-api/unicode.rst:464
 msgid "``%``"
 msgstr ""
 
-#: c-api/unicode.rst:470
+#: c-api/unicode.rst:465
 msgid "*n/a*"
 msgstr ""
 
-#: c-api/unicode.rst:471
+#: c-api/unicode.rst:466
 msgid "The literal ``%`` character."
 msgstr ""
 
-#: c-api/unicode.rst:473
+#: c-api/unicode.rst:468
 msgid "``d``, ``i``"
 msgstr ""
 
-#: c-api/unicode.rst:478 c-api/unicode.rst:486 c-api/unicode.rst:490
+#: c-api/unicode.rst:473 c-api/unicode.rst:481 c-api/unicode.rst:485
 msgid "Specified by the length modifier"
 msgstr ""
 
-#: c-api/unicode.rst:475
+#: c-api/unicode.rst:470
 msgid "The decimal representation of a signed C integer."
 msgstr ""
 
-#: c-api/unicode.rst:477
+#: c-api/unicode.rst:472
 msgid "``u``"
 msgstr ""
 
-#: c-api/unicode.rst:479
+#: c-api/unicode.rst:474
 msgid "The decimal representation of an unsigned C integer."
 msgstr ""
 
-#: c-api/unicode.rst:481
+#: c-api/unicode.rst:476
 msgid "``o``"
 msgstr ""
 
-#: c-api/unicode.rst:483
+#: c-api/unicode.rst:478
 msgid "The octal representation of an unsigned C integer."
 msgstr ""
 
-#: c-api/unicode.rst:485
+#: c-api/unicode.rst:480
 msgid "``x``"
 msgstr ""
 
-#: c-api/unicode.rst:487
+#: c-api/unicode.rst:482
 msgid "The hexadecimal representation of an unsigned C integer (lowercase)."
 msgstr ""
 
-#: c-api/unicode.rst:489
+#: c-api/unicode.rst:484
 msgid "``X``"
 msgstr ""
 
-#: c-api/unicode.rst:491
+#: c-api/unicode.rst:486
 msgid "The hexadecimal representation of an unsigned C integer (uppercase)."
 msgstr ""
 
-#: c-api/unicode.rst:493
+#: c-api/unicode.rst:488
 msgid "``c``"
 msgstr ""
 
-#: c-api/unicode.rst:494
+#: c-api/unicode.rst:489
 msgid ":c:expr:`int`"
 msgstr ""
 
-#: c-api/unicode.rst:495
+#: c-api/unicode.rst:490
 msgid "A single character."
 msgstr ""
 
-#: c-api/unicode.rst:497
+#: c-api/unicode.rst:492
 msgid "``s``"
 msgstr ""
 
-#: c-api/unicode.rst:498
+#: c-api/unicode.rst:493
 msgid ":c:expr:`const char*` or :c:expr:`const wchar_t*`"
 msgstr ""
 
-#: c-api/unicode.rst:499
+#: c-api/unicode.rst:494
 msgid "A null-terminated C character array."
 msgstr ""
 
-#: c-api/unicode.rst:501
+#: c-api/unicode.rst:496
 msgid "``p``"
 msgstr ""
 
-#: c-api/unicode.rst:502
+#: c-api/unicode.rst:497
 msgid ":c:expr:`const void*`"
 msgstr ""
 
-#: c-api/unicode.rst:503
+#: c-api/unicode.rst:498
 msgid ""
 "The hex representation of a C  pointer. Mostly equivalent to "
 "``printf(\"%p\")`` except that it is guaranteed to start with the literal "
 "``0x`` regardless of what the platform's ``printf`` yields."
 msgstr ""
 
-#: c-api/unicode.rst:508
+#: c-api/unicode.rst:503
 msgid "``A``"
 msgstr ""
 
-#: c-api/unicode.rst:513 c-api/unicode.rst:527
+#: c-api/unicode.rst:508 c-api/unicode.rst:522
 msgid ":c:expr:`PyObject*`"
 msgstr ""
 
-#: c-api/unicode.rst:510
+#: c-api/unicode.rst:505
 msgid "The result of calling :func:`ascii`."
 msgstr ""
 
-#: c-api/unicode.rst:512
+#: c-api/unicode.rst:507
 msgid "``U``"
 msgstr ""
 
-#: c-api/unicode.rst:514
+#: c-api/unicode.rst:509
 msgid "A Unicode object."
 msgstr ""
 
-#: c-api/unicode.rst:516
+#: c-api/unicode.rst:511
 msgid "``V``"
 msgstr ""
 
-#: c-api/unicode.rst:517
+#: c-api/unicode.rst:512
 msgid ":c:expr:`PyObject*`, :c:expr:`const char*` or :c:expr:`const wchar_t*`"
 msgstr ""
 
-#: c-api/unicode.rst:518
+#: c-api/unicode.rst:513
 msgid ""
 "A Unicode object (which may be ``NULL``) and a null-terminated C character "
 "array as a second parameter (which will be used, if the first parameter is "
 "``NULL``)."
 msgstr ""
 
-#: c-api/unicode.rst:522
+#: c-api/unicode.rst:517
 msgid "``S``"
 msgstr ""
 
-#: c-api/unicode.rst:524
+#: c-api/unicode.rst:519
 msgid "The result of calling :c:func:`PyObject_Str`."
 msgstr ""
 
-#: c-api/unicode.rst:526
+#: c-api/unicode.rst:521
 msgid "``R``"
 msgstr ""
 
-#: c-api/unicode.rst:528
+#: c-api/unicode.rst:523
 msgid "The result of calling :c:func:`PyObject_Repr`."
 msgstr ""
 
-#: c-api/unicode.rst:531
+#: c-api/unicode.rst:526
 msgid ""
 "The width formatter unit is number of characters rather than bytes. The "
 "precision formatter unit is number of bytes or :c:type:`wchar_t` items (if "
@@ -708,28 +703,28 @@ msgid ""
 "``PyObject*`` argument is not ``NULL``)."
 msgstr ""
 
-#: c-api/unicode.rst:539
+#: c-api/unicode.rst:534
 msgid ""
 "Unlike to C :c:func:`printf` the ``0`` flag has effect even when a precision "
 "is given for integer conversions (``d``, ``i``, ``u``, ``o``, ``x``, or "
 "``X``)."
 msgstr ""
 
-#: c-api/unicode.rst:543
+#: c-api/unicode.rst:538
 msgid "Support for ``\"%lld\"`` and ``\"%llu\"`` added."
 msgstr ""
 
-#: c-api/unicode.rst:546
+#: c-api/unicode.rst:541
 msgid "Support for ``\"%li\"``, ``\"%lli\"`` and ``\"%zi\"`` added."
 msgstr ""
 
-#: c-api/unicode.rst:549
+#: c-api/unicode.rst:544
 msgid ""
 "Support width and precision formatter for ``\"%s\"``, ``\"%A\"``, "
 "``\"%U\"``, ``\"%V\"``, ``\"%S\"``, ``\"%R\"`` added."
 msgstr ""
 
-#: c-api/unicode.rst:553
+#: c-api/unicode.rst:548
 msgid ""
 "Support for conversion specifiers ``o`` and ``X``. Support for length "
 "modifiers ``j`` and ``t``. Length modifiers are now applied to all integer "
@@ -738,36 +733,36 @@ msgid ""
 "flag ``-``."
 msgstr ""
 
-#: c-api/unicode.rst:561
+#: c-api/unicode.rst:556
 msgid ""
 "An unrecognized format character now sets a :exc:`SystemError`. In previous "
 "versions it caused all the rest of the format string to be copied as-is to "
 "the result string, and any extra arguments discarded."
 msgstr ""
 
-#: c-api/unicode.rst:568
+#: c-api/unicode.rst:563
 msgid ""
 "Identical to :c:func:`PyUnicode_FromFormat` except that it takes exactly two "
 "arguments."
 msgstr ""
 
-#: c-api/unicode.rst:574
+#: c-api/unicode.rst:569
 msgid ""
 "Copy an instance of a Unicode subtype to a new true Unicode object if "
 "necessary. If *obj* is already a true Unicode object (not a subtype), return "
 "a new :term:`strong reference` to the object."
 msgstr ""
 
-#: c-api/unicode.rst:578
+#: c-api/unicode.rst:573
 msgid ""
 "Objects other than Unicode or its subtypes will cause a :exc:`TypeError`."
 msgstr ""
 
-#: c-api/unicode.rst:584
+#: c-api/unicode.rst:579
 msgid "Decode an encoded object *obj* to a Unicode object."
 msgstr ""
 
-#: c-api/unicode.rst:586
+#: c-api/unicode.rst:581
 msgid ""
 ":class:`bytes`, :class:`bytearray` and other :term:`bytes-like objects "
 "<bytes-like object>` are decoded according to the given *encoding* and using "
@@ -775,27 +770,39 @@ msgid ""
 "interface use the default values (see :ref:`builtincodecs` for details)."
 msgstr ""
 
-#: c-api/unicode.rst:592
+#: c-api/unicode.rst:587
 msgid ""
 "All other objects, including Unicode objects, cause a :exc:`TypeError` to be "
 "set."
 msgstr ""
 
-#: c-api/unicode.rst:595
+#: c-api/unicode.rst:590
 msgid ""
 "The API returns ``NULL`` if there was an error.  The caller is responsible "
 "for decref'ing the returned objects."
 msgstr ""
 
-#: c-api/unicode.rst:601
+#: c-api/unicode.rst:596
+msgid ""
+"Return the name of the default string encoding, ``\"utf-8\"``. See :func:"
+"`sys.getdefaultencoding`."
+msgstr ""
+
+#: c-api/unicode.rst:599
+msgid ""
+"The returned string does not need to be freed, and is valid until "
+"interpreter shutdown."
+msgstr ""
+
+#: c-api/unicode.rst:605
 msgid "Return the length of the Unicode object, in code points."
 msgstr ""
 
-#: c-api/unicode.rst:603
+#: c-api/unicode.rst:607
 msgid "On error, set an exception and return ``-1``."
 msgstr ""
 
-#: c-api/unicode.rst:614
+#: c-api/unicode.rst:618
 msgid ""
 "Copy characters from one Unicode object into another.  This function "
 "performs character conversion when necessary and falls back to :c:func:`!"
@@ -803,61 +810,61 @@ msgid ""
 "otherwise returns the number of copied characters."
 msgstr ""
 
-#: c-api/unicode.rst:625
+#: c-api/unicode.rst:629
 msgid ""
 "Fill a string with a character: write *fill_char* into ``unicode[start:"
 "start+length]``."
 msgstr ""
 
-#: c-api/unicode.rst:628
+#: c-api/unicode.rst:632
 msgid ""
 "Fail if *fill_char* is bigger than the string maximum character, or if the "
 "string has more than 1 reference."
 msgstr ""
 
-#: c-api/unicode.rst:631
+#: c-api/unicode.rst:635
 msgid ""
 "Return the number of written character, or return ``-1`` and raise an "
 "exception on error."
 msgstr ""
 
-#: c-api/unicode.rst:640
+#: c-api/unicode.rst:644
 msgid ""
 "Write a character to a string.  The string must have been created through :c:"
 "func:`PyUnicode_New`.  Since Unicode strings are supposed to be immutable, "
 "the string must not be shared, or have been hashed yet."
 msgstr ""
 
-#: c-api/unicode.rst:644
+#: c-api/unicode.rst:648
 msgid ""
 "This function checks that *unicode* is a Unicode object, that the index is "
 "not out of bounds, and that the object can be modified safely (i.e. that it "
 "its reference count is one)."
 msgstr ""
 
-#: c-api/unicode.rst:648
+#: c-api/unicode.rst:652
 msgid "Return ``0`` on success, ``-1`` on error with an exception set."
 msgstr ""
 
-#: c-api/unicode.rst:655
+#: c-api/unicode.rst:659
 msgid ""
 "Read a character from a string.  This function checks that *unicode* is a "
 "Unicode object and the index is not out of bounds, in contrast to :c:func:"
 "`PyUnicode_READ_CHAR`, which performs no error checking."
 msgstr ""
 
-#: c-api/unicode.rst:659
+#: c-api/unicode.rst:663
 msgid "Return character on success, ``-1`` on error with an exception set."
 msgstr ""
 
-#: c-api/unicode.rst:667
+#: c-api/unicode.rst:671
 msgid ""
 "Return a substring of *unicode*, from character index *start* (included) to "
 "character index *end* (excluded).  Negative indices are not supported. On "
 "error, set an exception and return ``NULL``."
 msgstr ""
 
-#: c-api/unicode.rst:677
+#: c-api/unicode.rst:681
 msgid ""
 "Copy the string *unicode* into a UCS4 buffer, including a null character, if "
 "*copy_null* is set.  Returns ``NULL`` and sets an exception on error (in "
@@ -865,7 +872,7 @@ msgid ""
 "*unicode*).  *buffer* is returned on success."
 msgstr ""
 
-#: c-api/unicode.rst:687
+#: c-api/unicode.rst:691
 msgid ""
 "Copy the string *unicode* into a new UCS4 buffer that is allocated using :c:"
 "func:`PyMem_Malloc`.  If this fails, ``NULL`` is returned with a :exc:"
@@ -873,17 +880,17 @@ msgid ""
 "appended."
 msgstr ""
 
-#: c-api/unicode.rst:696
+#: c-api/unicode.rst:700
 msgid "Locale Encoding"
 msgstr ""
 
-#: c-api/unicode.rst:698
+#: c-api/unicode.rst:702
 msgid ""
 "The current locale encoding can be used to decode text from the operating "
 "system."
 msgstr ""
 
-#: c-api/unicode.rst:705
+#: c-api/unicode.rst:709
 msgid ""
 "Decode a string from UTF-8 on Android and VxWorks, or from the current "
 "locale encoding on other platforms. The supported error handlers are "
@@ -892,21 +899,21 @@ msgid ""
 "null character but cannot contain embedded null characters."
 msgstr ""
 
-#: c-api/unicode.rst:712
+#: c-api/unicode.rst:716
 msgid ""
 "Use :c:func:`PyUnicode_DecodeFSDefaultAndSize` to decode a string from the :"
 "term:`filesystem encoding and error handler`."
 msgstr ""
 
-#: c-api/unicode.rst:750
+#: c-api/unicode.rst:754
 msgid "This function ignores the :ref:`Python UTF-8 Mode <utf8-mode>`."
 msgstr ""
 
-#: c-api/unicode.rst:816
+#: c-api/unicode.rst:839
 msgid "The :c:func:`Py_DecodeLocale` function."
 msgstr ""
 
-#: c-api/unicode.rst:723
+#: c-api/unicode.rst:727
 msgid ""
 "The function now also uses the current locale encoding for the "
 "``surrogateescape`` error handler, except on Android. Previously, :c:func:"
@@ -914,13 +921,13 @@ msgid ""
 "locale encoding was used for ``strict``."
 msgstr ""
 
-#: c-api/unicode.rst:732
+#: c-api/unicode.rst:736
 msgid ""
 "Similar to :c:func:`PyUnicode_DecodeLocaleAndSize`, but compute the string "
 "length using :c:func:`!strlen`."
 msgstr ""
 
-#: c-api/unicode.rst:740
+#: c-api/unicode.rst:744
 msgid ""
 "Encode a Unicode object to UTF-8 on Android and VxWorks, or to the current "
 "locale encoding on other platforms. The supported error handlers are "
@@ -929,17 +936,17 @@ msgid ""
 "`bytes` object. *unicode* cannot contain embedded null characters."
 msgstr ""
 
-#: c-api/unicode.rst:747
+#: c-api/unicode.rst:751
 msgid ""
 "Use :c:func:`PyUnicode_EncodeFSDefault` to encode a string to the :term:"
 "`filesystem encoding and error handler`."
 msgstr ""
 
-#: c-api/unicode.rst:847
+#: c-api/unicode.rst:870
 msgid "The :c:func:`Py_EncodeLocale` function."
 msgstr ""
 
-#: c-api/unicode.rst:758
+#: c-api/unicode.rst:762
 msgid ""
 "The function now also uses the current locale encoding for the "
 "``surrogateescape`` error handler, except on Android. Previously, :c:func:"
@@ -947,102 +954,123 @@ msgid ""
 "locale encoding was used for ``strict``."
 msgstr ""
 
-#: c-api/unicode.rst:767
+#: c-api/unicode.rst:771
 msgid "File System Encoding"
 msgstr ""
 
-#: c-api/unicode.rst:769
+#: c-api/unicode.rst:773
 msgid ""
 "Functions encoding to and decoding from the :term:`filesystem encoding and "
 "error handler` (:pep:`383` and :pep:`529`)."
 msgstr ""
 
-#: c-api/unicode.rst:772
+#: c-api/unicode.rst:776
 msgid ""
 "To encode file names to :class:`bytes` during argument parsing, the "
-"``\"O&\"`` converter should be used, passing :c:func:`PyUnicode_FSConverter` "
-"as the conversion function:"
+"``\"O&\"`` converter should be used, passing :c:func:`!"
+"PyUnicode_FSConverter` as the conversion function:"
+msgstr ""
+
+#: c-api/unicode.rst:782
+msgid ""
+":ref:`PyArg_Parse\\* converter <arg-parsing>`: encode :class:`str` objects "
+"-- obtained directly or through the :class:`os.PathLike` interface -- to :"
+"class:`bytes` using :c:func:`PyUnicode_EncodeFSDefault`; :class:`bytes` "
+"objects are output as-is. *result* must be an address of a C variable of "
+"type :c:expr:`PyObject*` (or :c:expr:`PyBytesObject*`). On success, set the "
+"variable to a new :term:`strong reference` to a :ref:`bytes object "
+"<bytesobjects>` which must be released when it is no longer used and return "
+"a non-zero value (:c:macro:`Py_CLEANUP_SUPPORTED`). Embedded null bytes are "
+"not allowed in the result. On failure, return ``0`` with an exception set."
 msgstr ""
 
-#: c-api/unicode.rst:778
+#: c-api/unicode.rst:794
 msgid ""
-"ParseTuple converter: encode :class:`str` objects -- obtained directly or "
-"through the :class:`os.PathLike` interface -- to :class:`bytes` using :c:"
-"func:`PyUnicode_EncodeFSDefault`; :class:`bytes` objects are output as-is. "
-"*result* must be a :c:expr:`PyBytesObject*` which must be released when it "
-"is no longer used."
+"If *obj* is ``NULL``, the function releases a strong reference stored in the "
+"variable referred by *result* and returns ``1``."
 msgstr ""
 
-#: c-api/unicode.rst:803
+#: c-api/unicode.rst:826
 msgid "Accepts a :term:`path-like object`."
 msgstr ""
 
-#: c-api/unicode.rst:789
+#: c-api/unicode.rst:802
 msgid ""
 "To decode file names to :class:`str` during argument parsing, the ``\"O&\"`` "
-"converter should be used, passing :c:func:`PyUnicode_FSDecoder` as the "
+"converter should be used, passing :c:func:`!PyUnicode_FSDecoder` as the "
 "conversion function:"
 msgstr ""
 
-#: c-api/unicode.rst:795
+#: c-api/unicode.rst:808
+msgid ""
+":ref:`PyArg_Parse\\* converter <arg-parsing>`: decode :class:`bytes` objects "
+"-- obtained either directly or indirectly through the :class:`os.PathLike` "
+"interface -- to :class:`str` using :c:func:"
+"`PyUnicode_DecodeFSDefaultAndSize`; :class:`str` objects are output as-is. "
+"*result* must be an address of a C variable of type :c:expr:`PyObject*` (or :"
+"c:expr:`PyUnicodeObject*`). On success, set the variable to a new :term:"
+"`strong reference` to a :ref:`Unicode object <unicodeobjects>` which must be "
+"released when it is no longer used and return a non-zero value (:c:macro:"
+"`Py_CLEANUP_SUPPORTED`). Embedded null characters are not allowed in the "
+"result. On failure, return ``0`` with an exception set."
+msgstr ""
+
+#: c-api/unicode.rst:821
 msgid ""
-"ParseTuple converter: decode :class:`bytes` objects -- obtained either "
-"directly or indirectly through the :class:`os.PathLike` interface -- to :"
-"class:`str` using :c:func:`PyUnicode_DecodeFSDefaultAndSize`; :class:`str` "
-"objects are output as-is. *result* must be a :c:expr:`PyUnicodeObject*` "
-"which must be released when it is no longer used."
+"If *obj* is ``NULL``, release the strong reference to the object referred to "
+"by *result* and return ``1``."
 msgstr ""
 
-#: c-api/unicode.rst:809
+#: c-api/unicode.rst:832
 msgid "Decode a string from the :term:`filesystem encoding and error handler`."
 msgstr ""
 
-#: c-api/unicode.rst:811
+#: c-api/unicode.rst:834
 msgid ""
 "If you need to decode a string from the current locale encoding, use :c:func:"
 "`PyUnicode_DecodeLocaleAndSize`."
 msgstr ""
 
-#: c-api/unicode.rst:831 c-api/unicode.rst:851
+#: c-api/unicode.rst:854 c-api/unicode.rst:874
 msgid ""
 "The :term:`filesystem error handler <filesystem encoding and error handler>` "
 "is now used."
 msgstr ""
 
-#: c-api/unicode.rst:825
+#: c-api/unicode.rst:848
 msgid ""
 "Decode a null-terminated string from the :term:`filesystem encoding and "
 "error handler`."
 msgstr ""
 
-#: c-api/unicode.rst:828
+#: c-api/unicode.rst:851
 msgid ""
 "If the string length is known, use :c:func:"
 "`PyUnicode_DecodeFSDefaultAndSize`."
 msgstr ""
 
-#: c-api/unicode.rst:838
+#: c-api/unicode.rst:861
 msgid ""
 "Encode a Unicode object to the :term:`filesystem encoding and error "
 "handler`, and return :class:`bytes`. Note that the resulting :class:`bytes` "
 "object can contain null bytes."
 msgstr ""
 
-#: c-api/unicode.rst:842
+#: c-api/unicode.rst:865
 msgid ""
 "If you need to encode a string to the current locale encoding, use :c:func:"
 "`PyUnicode_EncodeLocale`."
 msgstr ""
 
-#: c-api/unicode.rst:856
+#: c-api/unicode.rst:879
 msgid "wchar_t Support"
 msgstr ""
 
-#: c-api/unicode.rst:858
+#: c-api/unicode.rst:881
 msgid ":c:type:`wchar_t` support for platforms which support it:"
 msgstr ""
 
-#: c-api/unicode.rst:862
+#: c-api/unicode.rst:885
 msgid ""
 "Create a Unicode object from the :c:type:`wchar_t` buffer *wstr* of the "
 "given *size*. Passing ``-1`` as the *size* indicates that the function must "
@@ -1050,7 +1078,7 @@ msgid ""
 "failure."
 msgstr ""
 
-#: c-api/unicode.rst:870
+#: c-api/unicode.rst:893
 msgid ""
 "Copy the Unicode object contents into the :c:type:`wchar_t` buffer *wstr*.  "
 "At most *size* :c:type:`wchar_t` characters are copied (excluding a possibly "
@@ -1058,13 +1086,13 @@ msgid ""
 "`wchar_t` characters copied or ``-1`` in case of an error."
 msgstr ""
 
-#: c-api/unicode.rst:875
+#: c-api/unicode.rst:898
 msgid ""
 "When *wstr* is ``NULL``, instead return the *size* that would be required to "
 "store all of *unicode* including a terminating null."
 msgstr ""
 
-#: c-api/unicode.rst:878
+#: c-api/unicode.rst:901
 msgid ""
 "Note that the resulting :c:expr:`wchar_t*` string may or may not be null-"
 "terminated.  It is the responsibility of the caller to make sure that the :c:"
@@ -1074,7 +1102,7 @@ msgid ""
 "most C functions."
 msgstr ""
 
-#: c-api/unicode.rst:888
+#: c-api/unicode.rst:911
 msgid ""
 "Convert the Unicode object to a wide character string. The output string "
 "always ends with a null character. If *size* is not ``NULL``, write the "
@@ -1085,37 +1113,37 @@ msgid ""
 "`wchar_t*` string contains null characters a :exc:`ValueError` is raised."
 msgstr ""
 
-#: c-api/unicode.rst:896
+#: c-api/unicode.rst:919
 msgid ""
 "Returns a buffer allocated by :c:macro:`PyMem_New` (use :c:func:`PyMem_Free` "
 "to free it) on success. On error, returns ``NULL`` and *\\*size* is "
 "undefined. Raises a :exc:`MemoryError` if memory allocation is failed."
 msgstr ""
 
-#: c-api/unicode.rst:903
+#: c-api/unicode.rst:926
 msgid ""
 "Raises a :exc:`ValueError` if *size* is ``NULL`` and the :c:expr:`wchar_t*` "
 "string contains null characters."
 msgstr ""
 
-#: c-api/unicode.rst:911
+#: c-api/unicode.rst:934
 msgid "Built-in Codecs"
 msgstr ""
 
-#: c-api/unicode.rst:913
+#: c-api/unicode.rst:936
 msgid ""
 "Python provides a set of built-in codecs which are written in C for speed. "
 "All of these codecs are directly usable via the following functions."
 msgstr ""
 
-#: c-api/unicode.rst:916
+#: c-api/unicode.rst:939
 msgid ""
 "Many of the following APIs take two arguments encoding and errors, and they "
 "have the same semantics as the ones of the built-in :func:`str` string "
 "object constructor."
 msgstr ""
 
-#: c-api/unicode.rst:920
+#: c-api/unicode.rst:943
 msgid ""
 "Setting encoding to ``NULL`` causes the default encoding to be used which is "
 "UTF-8.  The file system calls should use :c:func:`PyUnicode_FSConverter` for "
@@ -1123,28 +1151,28 @@ msgid ""
 "handler` internally."
 msgstr ""
 
-#: c-api/unicode.rst:925
+#: c-api/unicode.rst:948
 msgid ""
 "Error handling is set by errors which may also be set to ``NULL`` meaning to "
 "use the default handling defined for the codec.  Default error handling for "
 "all built-in codecs is \"strict\" (:exc:`ValueError` is raised)."
 msgstr ""
 
-#: c-api/unicode.rst:929
+#: c-api/unicode.rst:952
 msgid ""
 "The codecs all use a similar interface.  Only deviations from the following "
 "generic ones are documented for simplicity."
 msgstr ""
 
-#: c-api/unicode.rst:934
+#: c-api/unicode.rst:957
 msgid "Generic Codecs"
 msgstr ""
 
-#: c-api/unicode.rst:936
+#: c-api/unicode.rst:959
 msgid "These are the generic codec APIs:"
 msgstr ""
 
-#: c-api/unicode.rst:942
+#: c-api/unicode.rst:965
 msgid ""
 "Create a Unicode object by decoding *size* bytes of the encoded string "
 "*str*. *encoding* and *errors* have the same meaning as the parameters of "
@@ -1153,7 +1181,7 @@ msgid ""
 "was raised by the codec."
 msgstr ""
 
-#: c-api/unicode.rst:952
+#: c-api/unicode.rst:975
 msgid ""
 "Encode a Unicode object and return the result as Python bytes object. "
 "*encoding* and *errors* have the same meaning as the parameters of the same "
@@ -1162,21 +1190,21 @@ msgid ""
 "was raised by the codec."
 msgstr ""
 
-#: c-api/unicode.rst:960
+#: c-api/unicode.rst:983
 msgid "UTF-8 Codecs"
 msgstr ""
 
-#: c-api/unicode.rst:962
+#: c-api/unicode.rst:985
 msgid "These are the UTF-8 codec APIs:"
 msgstr ""
 
-#: c-api/unicode.rst:967
+#: c-api/unicode.rst:990
 msgid ""
 "Create a Unicode object by decoding *size* bytes of the UTF-8 encoded string "
 "*str*. Return ``NULL`` if an exception was raised by the codec."
 msgstr ""
 
-#: c-api/unicode.rst:974
+#: c-api/unicode.rst:997
 msgid ""
 "If *consumed* is ``NULL``, behave like :c:func:`PyUnicode_DecodeUTF8`. If "
 "*consumed* is not ``NULL``, trailing incomplete UTF-8 byte sequences will "
@@ -1184,14 +1212,14 @@ msgid ""
 "of bytes that have been decoded will be stored in *consumed*."
 msgstr ""
 
-#: c-api/unicode.rst:982
+#: c-api/unicode.rst:1005
 msgid ""
 "Encode a Unicode object using UTF-8 and return the result as Python bytes "
 "object.  Error handling is \"strict\".  Return ``NULL`` if an exception was "
 "raised by the codec."
 msgstr ""
 
-#: c-api/unicode.rst:989
+#: c-api/unicode.rst:1012
 msgid ""
 "Return a pointer to the UTF-8 encoding of the Unicode object, and store the "
 "size of the encoded representation (in bytes) in *size*.  The *size* "
@@ -1200,13 +1228,13 @@ msgid ""
 "regardless of whether there are any other null code points."
 msgstr ""
 
-#: c-api/unicode.rst:995
+#: c-api/unicode.rst:1018
 msgid ""
 "In the case of an error, ``NULL`` is returned with an exception set and no "
 "*size* is stored."
 msgstr ""
 
-#: c-api/unicode.rst:998
+#: c-api/unicode.rst:1021
 msgid ""
 "This caches the UTF-8 representation of the string in the Unicode object, "
 "and subsequent calls will return a pointer to the same buffer.  The caller "
@@ -1215,47 +1243,57 @@ msgid ""
 "collected."
 msgstr ""
 
-#: c-api/unicode.rst:1018
+#: c-api/unicode.rst:1050
 msgid "The return type is now ``const char *`` rather of ``char *``."
 msgstr ""
 
-#: c-api/unicode.rst:1008
+#: c-api/unicode.rst:1031
 msgid "This function is a part of the :ref:`limited API <limited-c-api>`."
 msgstr ""
 
-#: c-api/unicode.rst:1014
+#: c-api/unicode.rst:1037
 msgid "As :c:func:`PyUnicode_AsUTF8AndSize`, but does not store the size."
 msgstr ""
 
-#: c-api/unicode.rst:1023
+#: c-api/unicode.rst:1041
+msgid ""
+"This function does not have any special behavior for `null characters "
+"<https://en.wikipedia.org/wiki/Null_character>`_ embedded within *unicode*. "
+"As a result, strings containing null characters will remain in the returned "
+"string, which some C functions might interpret as the end of the string, "
+"leading to truncation. If truncation is an issue, it is recommended to use :"
+"c:func:`PyUnicode_AsUTF8AndSize` instead."
+msgstr ""
+
+#: c-api/unicode.rst:1055
 msgid "UTF-32 Codecs"
 msgstr ""
 
-#: c-api/unicode.rst:1025
+#: c-api/unicode.rst:1057
 msgid "These are the UTF-32 codec APIs:"
 msgstr ""
 
-#: c-api/unicode.rst:1031
+#: c-api/unicode.rst:1063
 msgid ""
 "Decode *size* bytes from a UTF-32 encoded buffer string and return the "
 "corresponding Unicode object.  *errors* (if non-``NULL``) defines the error "
 "handling. It defaults to \"strict\"."
 msgstr ""
 
-#: c-api/unicode.rst:1085
+#: c-api/unicode.rst:1117
 msgid ""
 "If *byteorder* is non-``NULL``, the decoder starts decoding using the given "
 "byte order::"
 msgstr ""
 
-#: c-api/unicode.rst:1088
+#: c-api/unicode.rst:1120
 msgid ""
 "*byteorder == -1: little endian\n"
 "*byteorder == 0:  native order\n"
 "*byteorder == 1:  big endian"
 msgstr ""
 
-#: c-api/unicode.rst:1042
+#: c-api/unicode.rst:1074
 msgid ""
 "If ``*byteorder`` is zero, and the first four bytes of the input data are a "
 "byte order mark (BOM), the decoder switches to this byte order and the BOM "
@@ -1263,21 +1301,21 @@ msgid ""
 "``-1`` or ``1``, any byte order mark is copied to the output."
 msgstr ""
 
-#: c-api/unicode.rst:1047
+#: c-api/unicode.rst:1079
 msgid ""
 "After completion, *\\*byteorder* is set to the current byte order at the end "
 "of input data."
 msgstr ""
 
-#: c-api/unicode.rst:1101
+#: c-api/unicode.rst:1133
 msgid "If *byteorder* is ``NULL``, the codec starts in native order mode."
 msgstr ""
 
-#: c-api/unicode.rst:1103
+#: c-api/unicode.rst:1135
 msgid "Return ``NULL`` if an exception was raised by the codec."
 msgstr ""
 
-#: c-api/unicode.rst:1058
+#: c-api/unicode.rst:1090
 msgid ""
 "If *consumed* is ``NULL``, behave like :c:func:`PyUnicode_DecodeUTF32`. If "
 "*consumed* is not ``NULL``, :c:func:`PyUnicode_DecodeUTF32Stateful` will not "
@@ -1286,29 +1324,29 @@ msgid ""
 "number of bytes that have been decoded will be stored in *consumed*."
 msgstr ""
 
-#: c-api/unicode.rst:1067
+#: c-api/unicode.rst:1099
 msgid ""
 "Return a Python byte string using the UTF-32 encoding in native byte order. "
 "The string always starts with a BOM mark.  Error handling is \"strict\". "
 "Return ``NULL`` if an exception was raised by the codec."
 msgstr ""
 
-#: c-api/unicode.rst:1073
+#: c-api/unicode.rst:1105
 msgid "UTF-16 Codecs"
 msgstr ""
 
-#: c-api/unicode.rst:1075
+#: c-api/unicode.rst:1107
 msgid "These are the UTF-16 codec APIs:"
 msgstr ""
 
-#: c-api/unicode.rst:1081
+#: c-api/unicode.rst:1113
 msgid ""
 "Decode *size* bytes from a UTF-16 encoded buffer string and return the "
 "corresponding Unicode object.  *errors* (if non-``NULL``) defines the error "
 "handling. It defaults to \"strict\"."
 msgstr ""
 
-#: c-api/unicode.rst:1092
+#: c-api/unicode.rst:1124
 msgid ""
 "If ``*byteorder`` is zero, and the first two bytes of the input data are a "
 "byte order mark (BOM), the decoder switches to this byte order and the BOM "
@@ -1317,13 +1355,13 @@ msgid ""
 "result in either a ``\\ufeff`` or a ``\\ufffe`` character)."
 msgstr ""
 
-#: c-api/unicode.rst:1098
+#: c-api/unicode.rst:1130
 msgid ""
 "After completion, ``*byteorder`` is set to the current byte order at the end "
 "of input data."
 msgstr ""
 
-#: c-api/unicode.rst:1109
+#: c-api/unicode.rst:1141
 msgid ""
 "If *consumed* is ``NULL``, behave like :c:func:`PyUnicode_DecodeUTF16`. If "
 "*consumed* is not ``NULL``, :c:func:`PyUnicode_DecodeUTF16Stateful` will not "
@@ -1333,28 +1371,28 @@ msgid ""
 "*consumed*."
 msgstr ""
 
-#: c-api/unicode.rst:1118
+#: c-api/unicode.rst:1150
 msgid ""
 "Return a Python byte string using the UTF-16 encoding in native byte order. "
 "The string always starts with a BOM mark.  Error handling is \"strict\". "
 "Return ``NULL`` if an exception was raised by the codec."
 msgstr ""
 
-#: c-api/unicode.rst:1124
+#: c-api/unicode.rst:1156
 msgid "UTF-7 Codecs"
 msgstr ""
 
-#: c-api/unicode.rst:1126
+#: c-api/unicode.rst:1158
 msgid "These are the UTF-7 codec APIs:"
 msgstr ""
 
-#: c-api/unicode.rst:1131
+#: c-api/unicode.rst:1163
 msgid ""
 "Create a Unicode object by decoding *size* bytes of the UTF-7 encoded string "
 "*str*.  Return ``NULL`` if an exception was raised by the codec."
 msgstr ""
 
-#: c-api/unicode.rst:1138
+#: c-api/unicode.rst:1170
 msgid ""
 "If *consumed* is ``NULL``, behave like :c:func:`PyUnicode_DecodeUTF7`.  If "
 "*consumed* is not ``NULL``, trailing incomplete UTF-7 base-64 sections will "
@@ -1362,101 +1400,101 @@ msgid ""
 "of bytes that have been decoded will be stored in *consumed*."
 msgstr ""
 
-#: c-api/unicode.rst:1145
+#: c-api/unicode.rst:1177
 msgid "Unicode-Escape Codecs"
 msgstr ""
 
-#: c-api/unicode.rst:1147
+#: c-api/unicode.rst:1179
 msgid "These are the \"Unicode Escape\" codec APIs:"
 msgstr ""
 
-#: c-api/unicode.rst:1153
+#: c-api/unicode.rst:1185
 msgid ""
 "Create a Unicode object by decoding *size* bytes of the Unicode-Escape "
 "encoded string *str*.  Return ``NULL`` if an exception was raised by the "
 "codec."
 msgstr ""
 
-#: c-api/unicode.rst:1159
+#: c-api/unicode.rst:1191
 msgid ""
 "Encode a Unicode object using Unicode-Escape and return the result as a "
 "bytes object.  Error handling is \"strict\".  Return ``NULL`` if an "
 "exception was raised by the codec."
 msgstr ""
 
-#: c-api/unicode.rst:1165
+#: c-api/unicode.rst:1197
 msgid "Raw-Unicode-Escape Codecs"
 msgstr ""
 
-#: c-api/unicode.rst:1167
+#: c-api/unicode.rst:1199
 msgid "These are the \"Raw Unicode Escape\" codec APIs:"
 msgstr ""
 
-#: c-api/unicode.rst:1173
+#: c-api/unicode.rst:1205
 msgid ""
 "Create a Unicode object by decoding *size* bytes of the Raw-Unicode-Escape "
 "encoded string *str*.  Return ``NULL`` if an exception was raised by the "
 "codec."
 msgstr ""
 
-#: c-api/unicode.rst:1179
+#: c-api/unicode.rst:1211
 msgid ""
 "Encode a Unicode object using Raw-Unicode-Escape and return the result as a "
 "bytes object.  Error handling is \"strict\".  Return ``NULL`` if an "
 "exception was raised by the codec."
 msgstr ""
 
-#: c-api/unicode.rst:1185
+#: c-api/unicode.rst:1217
 msgid "Latin-1 Codecs"
 msgstr ""
 
-#: c-api/unicode.rst:1187
+#: c-api/unicode.rst:1219
 msgid ""
 "These are the Latin-1 codec APIs: Latin-1 corresponds to the first 256 "
 "Unicode ordinals and only these are accepted by the codecs during encoding."
 msgstr ""
 
-#: c-api/unicode.rst:1193
+#: c-api/unicode.rst:1225
 msgid ""
 "Create a Unicode object by decoding *size* bytes of the Latin-1 encoded "
 "string *str*.  Return ``NULL`` if an exception was raised by the codec."
 msgstr ""
 
-#: c-api/unicode.rst:1199
+#: c-api/unicode.rst:1231
 msgid ""
 "Encode a Unicode object using Latin-1 and return the result as Python bytes "
 "object.  Error handling is \"strict\".  Return ``NULL`` if an exception was "
 "raised by the codec."
 msgstr ""
 
-#: c-api/unicode.rst:1205
+#: c-api/unicode.rst:1237
 msgid "ASCII Codecs"
 msgstr ""
 
-#: c-api/unicode.rst:1207
+#: c-api/unicode.rst:1239
 msgid ""
 "These are the ASCII codec APIs.  Only 7-bit ASCII data is accepted. All "
 "other codes generate errors."
 msgstr ""
 
-#: c-api/unicode.rst:1213
+#: c-api/unicode.rst:1245
 msgid ""
 "Create a Unicode object by decoding *size* bytes of the ASCII encoded string "
 "*str*.  Return ``NULL`` if an exception was raised by the codec."
 msgstr ""
 
-#: c-api/unicode.rst:1219
+#: c-api/unicode.rst:1251
 msgid ""
 "Encode a Unicode object using ASCII and return the result as Python bytes "
 "object.  Error handling is \"strict\".  Return ``NULL`` if an exception was "
 "raised by the codec."
 msgstr ""
 
-#: c-api/unicode.rst:1225
+#: c-api/unicode.rst:1257
 msgid "Character Map Codecs"
 msgstr ""
 
-#: c-api/unicode.rst:1227
+#: c-api/unicode.rst:1259
 msgid ""
 "This codec is special in that it can be used to implement many different "
 "codecs (and this is in fact what was done to obtain most of the standard "
@@ -1466,18 +1504,18 @@ msgid ""
 "sequences work well."
 msgstr ""
 
-#: c-api/unicode.rst:1233
+#: c-api/unicode.rst:1265
 msgid "These are the mapping codec APIs:"
 msgstr ""
 
-#: c-api/unicode.rst:1238
+#: c-api/unicode.rst:1270
 msgid ""
 "Create a Unicode object by decoding *size* bytes of the encoded string *str* "
 "using the given *mapping* object.  Return ``NULL`` if an exception was "
 "raised by the codec."
 msgstr ""
 
-#: c-api/unicode.rst:1242
+#: c-api/unicode.rst:1274
 msgid ""
 "If *mapping* is ``NULL``, Latin-1 decoding will be applied.  Else *mapping* "
 "must map bytes ordinals (integers in the range from 0 to 255) to Unicode "
@@ -1487,14 +1525,14 @@ msgid ""
 "treated as undefined mappings and cause an error."
 msgstr ""
 
-#: c-api/unicode.rst:1253
+#: c-api/unicode.rst:1285
 msgid ""
 "Encode a Unicode object using the given *mapping* object and return the "
 "result as a bytes object.  Error handling is \"strict\".  Return ``NULL`` if "
 "an exception was raised by the codec."
 msgstr ""
 
-#: c-api/unicode.rst:1257
+#: c-api/unicode.rst:1289
 msgid ""
 "The *mapping* object must map Unicode ordinal integers to bytes objects, "
 "integers in the range from 0 to 255 or ``None``.  Unmapped character "
@@ -1502,41 +1540,41 @@ msgid ""
 "``None`` are treated as \"undefined mapping\" and cause an error."
 msgstr ""
 
-#: c-api/unicode.rst:1263
+#: c-api/unicode.rst:1295
 msgid "The following codec API is special in that maps Unicode to Unicode."
 msgstr ""
 
-#: c-api/unicode.rst:1267
+#: c-api/unicode.rst:1299
 msgid ""
 "Translate a string by applying a character mapping table to it and return "
 "the resulting Unicode object. Return ``NULL`` if an exception was raised by "
 "the codec."
 msgstr ""
 
-#: c-api/unicode.rst:1271
+#: c-api/unicode.rst:1303
 msgid ""
 "The mapping table must map Unicode ordinal integers to Unicode ordinal "
 "integers or ``None`` (causing deletion of the character)."
 msgstr ""
 
-#: c-api/unicode.rst:1274
+#: c-api/unicode.rst:1306
 msgid ""
 "Mapping tables need only provide the :meth:`~object.__getitem__` interface; "
 "dictionaries and sequences work well.  Unmapped character ordinals (ones "
 "which cause a :exc:`LookupError`) are left untouched and are copied as-is."
 msgstr ""
 
-#: c-api/unicode.rst:1278
+#: c-api/unicode.rst:1310
 msgid ""
 "*errors* has the usual meaning for codecs. It may be ``NULL`` which "
 "indicates to use the default error handling."
 msgstr ""
 
-#: c-api/unicode.rst:1283
+#: c-api/unicode.rst:1315
 msgid "MBCS codecs for Windows"
 msgstr ""
 
-#: c-api/unicode.rst:1285
+#: c-api/unicode.rst:1317
 msgid ""
 "These are the MBCS codec APIs. They are currently only available on Windows "
 "and use the Win32 MBCS converters to implement the conversions.  Note that "
@@ -1544,13 +1582,13 @@ msgid ""
 "is defined by the user settings on the machine running the codec."
 msgstr ""
 
-#: c-api/unicode.rst:1292
+#: c-api/unicode.rst:1324
 msgid ""
 "Create a Unicode object by decoding *size* bytes of the MBCS encoded string "
 "*str*. Return ``NULL`` if an exception was raised by the codec."
 msgstr ""
 
-#: c-api/unicode.rst:1299
+#: c-api/unicode.rst:1331
 msgid ""
 "If *consumed* is ``NULL``, behave like :c:func:`PyUnicode_DecodeMBCS`. If "
 "*consumed* is not ``NULL``, :c:func:`PyUnicode_DecodeMBCSStateful` will not "
@@ -1558,44 +1596,50 @@ msgid ""
 "will be stored in *consumed*."
 msgstr ""
 
-#: c-api/unicode.rst:1307
+#: c-api/unicode.rst:1340
+msgid ""
+"Similar to :c:func:`PyUnicode_DecodeMBCSStateful`, except uses the code page "
+"specified by *code_page*."
+msgstr ""
+
+#: c-api/unicode.rst:1346
 msgid ""
 "Encode a Unicode object using MBCS and return the result as Python bytes "
 "object.  Error handling is \"strict\".  Return ``NULL`` if an exception was "
 "raised by the codec."
 msgstr ""
 
-#: c-api/unicode.rst:1314
+#: c-api/unicode.rst:1353
 msgid ""
 "Encode the Unicode object using the specified code page and return a Python "
 "bytes object.  Return ``NULL`` if an exception was raised by the codec. Use :"
 "c:macro:`!CP_ACP` code page to get the MBCS encoder."
 msgstr ""
 
-#: c-api/unicode.rst:1322
+#: c-api/unicode.rst:1361
 msgid "Methods & Slots"
 msgstr ""
 
-#: c-api/unicode.rst:1328
+#: c-api/unicode.rst:1367
 msgid "Methods and Slot Functions"
 msgstr ""
 
-#: c-api/unicode.rst:1330
+#: c-api/unicode.rst:1369
 msgid ""
 "The following APIs are capable of handling Unicode objects and strings on "
 "input (we refer to them as strings in the descriptions) and return Unicode "
 "objects or integers as appropriate."
 msgstr ""
 
-#: c-api/unicode.rst:1334
+#: c-api/unicode.rst:1373
 msgid "They all return ``NULL`` or ``-1`` if an exception occurs."
 msgstr ""
 
-#: c-api/unicode.rst:1339
+#: c-api/unicode.rst:1378
 msgid "Concat two strings giving a new Unicode string."
 msgstr ""
 
-#: c-api/unicode.rst:1344
+#: c-api/unicode.rst:1383
 msgid ""
 "Split a string giving a list of Unicode strings.  If *sep* is ``NULL``, "
 "splitting will be done at all whitespace substrings.  Otherwise, splits "
@@ -1604,27 +1648,72 @@ msgid ""
 "list."
 msgstr ""
 
-#: c-api/unicode.rst:1352
+#: c-api/unicode.rst:1398 c-api/unicode.rst:1432
+msgid "On error, return ``NULL`` with an exception set."
+msgstr ""
+
+#: c-api/unicode.rst:1390
+msgid "Equivalent to :py:meth:`str.split`."
+msgstr ""
+
+#: c-api/unicode.rst:1395
+msgid ""
+"Similar to :c:func:`PyUnicode_Split`, but splitting will be done beginning "
+"at the end of the string."
+msgstr ""
+
+#: c-api/unicode.rst:1400
+msgid "Equivalent to :py:meth:`str.rsplit`."
+msgstr ""
+
+#: c-api/unicode.rst:1405
 msgid ""
 "Split a Unicode string at line breaks, returning a list of Unicode strings. "
 "CRLF is considered to be one line break.  If *keepends* is ``0``, the Line "
 "break characters are not included in the resulting strings."
 msgstr ""
 
-#: c-api/unicode.rst:1359
+#: c-api/unicode.rst:1412
+msgid ""
+"Split a Unicode string at the first occurrence of *sep*, and return a 3-"
+"tuple containing the part before the separator, the separator itself, and "
+"the part after the separator. If the separator is not found, return a 3-"
+"tuple containing the string itself, followed by two empty strings."
+msgstr ""
+
+#: c-api/unicode.rst:1430
+msgid "*sep* must not be empty."
+msgstr ""
+
+#: c-api/unicode.rst:1421
+msgid "Equivalent to :py:meth:`str.partition`."
+msgstr ""
+
+#: c-api/unicode.rst:1426
+msgid ""
+"Similar to :c:func:`PyUnicode_Partition`, but split a Unicode string at the "
+"last occurrence of *sep*. If the separator is not found, return a 3-tuple "
+"containing two empty strings, followed by the string itself."
+msgstr ""
+
+#: c-api/unicode.rst:1434
+msgid "Equivalent to :py:meth:`str.rpartition`."
+msgstr ""
+
+#: c-api/unicode.rst:1439
 msgid ""
 "Join a sequence of strings using the given *separator* and return the "
 "resulting Unicode string."
 msgstr ""
 
-#: c-api/unicode.rst:1366
+#: c-api/unicode.rst:1446
 msgid ""
 "Return ``1`` if *substr* matches ``unicode[start:end]`` at the given tail "
 "end (*direction* == ``-1`` means to do a prefix match, *direction* == ``1`` "
 "a suffix match), ``0`` otherwise. Return ``-1`` if an error occurred."
 msgstr ""
 
-#: c-api/unicode.rst:1374
+#: c-api/unicode.rst:1454
 msgid ""
 "Return the first position of *substr* in ``unicode[start:end]`` using the "
 "given *direction* (*direction* == ``1`` means to do a forward search, "
@@ -1633,7 +1722,7 @@ msgid ""
 "``-2`` indicates that an error occurred and an exception has been set."
 msgstr ""
 
-#: c-api/unicode.rst:1384
+#: c-api/unicode.rst:1464
 msgid ""
 "Return the first position of the character *ch* in ``unicode[start:end]`` "
 "using the given *direction* (*direction* == ``1`` means to do a forward "
@@ -1643,37 +1732,37 @@ msgid ""
 "set."
 msgstr ""
 
-#: c-api/unicode.rst:1392
+#: c-api/unicode.rst:1472
 msgid ""
 "*start* and *end* are now adjusted to behave like ``unicode[start:end]``."
 msgstr ""
 
-#: c-api/unicode.rst:1399
+#: c-api/unicode.rst:1479
 msgid ""
 "Return the number of non-overlapping occurrences of *substr* in "
 "``unicode[start:end]``.  Return ``-1`` if an error occurred."
 msgstr ""
 
-#: c-api/unicode.rst:1406
+#: c-api/unicode.rst:1486
 msgid ""
 "Replace at most *maxcount* occurrences of *substr* in *unicode* with "
 "*replstr* and return the resulting Unicode object. *maxcount* == ``-1`` "
 "means replace all occurrences."
 msgstr ""
 
-#: c-api/unicode.rst:1413
+#: c-api/unicode.rst:1493
 msgid ""
 "Compare two strings and return ``-1``, ``0``, ``1`` for less than, equal, "
 "and greater than, respectively."
 msgstr ""
 
-#: c-api/unicode.rst:1416
+#: c-api/unicode.rst:1496
 msgid ""
 "This function returns ``-1`` upon failure, so one should call :c:func:"
 "`PyErr_Occurred` to check for errors."
 msgstr ""
 
-#: c-api/unicode.rst:1422
+#: c-api/unicode.rst:1502
 msgid ""
 "Compare a Unicode object, *unicode*, with *string* and return ``-1``, ``0``, "
 "``1`` for less than, equal, and greater than, respectively. It is best to "
@@ -1681,51 +1770,51 @@ msgid ""
 "string as ISO-8859-1 if it contains non-ASCII characters."
 msgstr ""
 
-#: c-api/unicode.rst:1427
+#: c-api/unicode.rst:1507
 msgid "This function does not raise exceptions."
 msgstr ""
 
-#: c-api/unicode.rst:1432
+#: c-api/unicode.rst:1512
 msgid "Rich compare two Unicode strings and return one of the following:"
 msgstr ""
 
-#: c-api/unicode.rst:1434
+#: c-api/unicode.rst:1514
 msgid "``NULL`` in case an exception was raised"
 msgstr ""
 
-#: c-api/unicode.rst:1435
+#: c-api/unicode.rst:1515
 msgid ":c:data:`Py_True` or :c:data:`Py_False` for successful comparisons"
 msgstr ""
 
-#: c-api/unicode.rst:1436
+#: c-api/unicode.rst:1516
 msgid ":c:data:`Py_NotImplemented` in case the type combination is unknown"
 msgstr ""
 
-#: c-api/unicode.rst:1438
+#: c-api/unicode.rst:1518
 msgid ""
 "Possible values for *op* are :c:macro:`Py_GT`, :c:macro:`Py_GE`, :c:macro:"
 "`Py_EQ`, :c:macro:`Py_NE`, :c:macro:`Py_LT`, and :c:macro:`Py_LE`."
 msgstr ""
 
-#: c-api/unicode.rst:1444
+#: c-api/unicode.rst:1524
 msgid ""
 "Return a new string object from *format* and *args*; this is analogous to "
 "``format % args``."
 msgstr ""
 
-#: c-api/unicode.rst:1450
+#: c-api/unicode.rst:1530
 msgid ""
 "Check whether *substr* is contained in *unicode* and return true or false "
 "accordingly."
 msgstr ""
 
-#: c-api/unicode.rst:1453
+#: c-api/unicode.rst:1533
 msgid ""
 "*substr* has to coerce to a one element Unicode string. ``-1`` is returned "
 "if there was an error."
 msgstr ""
 
-#: c-api/unicode.rst:1459
+#: c-api/unicode.rst:1539
 msgid ""
 "Intern the argument :c:expr:`*p_unicode` in place.  The argument must be the "
 "address of a pointer variable pointing to a Python Unicode string object.  "
@@ -1736,7 +1825,7 @@ msgid ""
 "interns it."
 msgstr ""
 
-#: c-api/unicode.rst:1466
+#: c-api/unicode.rst:1546
 msgid ""
 "(Clarification: even though there is a lot of talk about references, think "
 "of this function as reference-neutral. You must own the object you pass in; "
@@ -1744,39 +1833,39 @@ msgid ""
 "the result.)"
 msgstr ""
 
-#: c-api/unicode.rst:1471
+#: c-api/unicode.rst:1551
 msgid ""
 "This function never raises an exception. On error, it leaves its argument "
 "unchanged without interning it."
 msgstr ""
 
-#: c-api/unicode.rst:1474
+#: c-api/unicode.rst:1554
 msgid ""
 "Instances of subclasses of :py:class:`str` may not be interned, that is, :c:"
 "expr:`PyUnicode_CheckExact(*p_unicode)` must be true. If it is not, then -- "
 "as with any other error -- the argument is left unchanged."
 msgstr ""
 
-#: c-api/unicode.rst:1478
+#: c-api/unicode.rst:1558
 msgid ""
 "Note that interned strings are not “immortal”. You must keep a reference to "
 "the result to benefit from interning."
 msgstr ""
 
-#: c-api/unicode.rst:1484
+#: c-api/unicode.rst:1564
 msgid ""
 "A combination of :c:func:`PyUnicode_FromString` and :c:func:"
 "`PyUnicode_InternInPlace`, meant for statically allocated strings."
 msgstr ""
 
-#: c-api/unicode.rst:1487
+#: c-api/unicode.rst:1567
 msgid ""
 "Return a new (\"owned\") reference to either a new Unicode string object "
 "that has been interned, or an earlier interned string object with the same "
 "value."
 msgstr ""
 
-#: c-api/unicode.rst:1491
+#: c-api/unicode.rst:1571
 msgid ""
 "Python may keep a reference to the result, or prevent it from being garbage-"
 "collected promptly. For interning an unbounded number of different strings, "
diff --git a/deprecations/index.po b/deprecations/index.po
index 8a7e89b57..0a1e5ec83 100644
--- a/deprecations/index.po
+++ b/deprecations/index.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -198,62 +198,50 @@ msgid "Pending Removal in Python 3.14"
 msgstr ""
 
 #: deprecations/pending-removal-in-3.14.rst:4
-msgid "The import system:"
-msgstr ""
-
-#: deprecations/pending-removal-in-3.14.rst:6
-msgid ""
-"Setting :attr:`~module.__loader__` on a module while failing to set :attr:"
-"`__spec__.loader <importlib.machinery.ModuleSpec.loader>` is deprecated. In "
-"Python 3.14, :attr:`!__loader__` will cease to be set or taken into "
-"consideration by the import system or the standard library."
-msgstr ""
-
-#: deprecations/pending-removal-in-3.14.rst:11
 msgid ""
 ":mod:`argparse`: The *type*, *choices*, and *metavar* parameters of :class:`!"
 "argparse.BooleanOptionalAction` are deprecated and will be removed in 3.14. "
 "(Contributed by Nikita Sobolev in :gh:`92248`.)"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:16
+#: deprecations/pending-removal-in-3.14.rst:9
 msgid ""
 ":mod:`ast`: The following features have been deprecated in documentation "
 "since Python 3.8, now cause a :exc:`DeprecationWarning` to be emitted at "
 "runtime when they are accessed or used, and will be removed in Python 3.14:"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:20
+#: deprecations/pending-removal-in-3.14.rst:13
 msgid ":class:`!ast.Num`"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:21
+#: deprecations/pending-removal-in-3.14.rst:14
 msgid ":class:`!ast.Str`"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:22
+#: deprecations/pending-removal-in-3.14.rst:15
 msgid ":class:`!ast.Bytes`"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:23
+#: deprecations/pending-removal-in-3.14.rst:16
 msgid ":class:`!ast.NameConstant`"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:24
+#: deprecations/pending-removal-in-3.14.rst:17
 msgid ":class:`!ast.Ellipsis`"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:26
+#: deprecations/pending-removal-in-3.14.rst:19
 msgid ""
 "Use :class:`ast.Constant` instead. (Contributed by Serhiy Storchaka in :gh:"
 "`90953`.)"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:29
+#: deprecations/pending-removal-in-3.14.rst:22
 msgid ":mod:`asyncio`:"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:31
+#: deprecations/pending-removal-in-3.14.rst:24
 msgid ""
 "The child watcher classes :class:`~asyncio.MultiLoopChildWatcher`, :class:"
 "`~asyncio.FastChildWatcher`, :class:`~asyncio.AbstractChildWatcher` and :"
@@ -261,7 +249,7 @@ msgid ""
 "Python 3.14. (Contributed by Kumar Aditya in :gh:`94597`.)"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:37
+#: deprecations/pending-removal-in-3.14.rst:30
 msgid ""
 ":func:`asyncio.set_child_watcher`, :func:`asyncio.get_child_watcher`, :meth:"
 "`asyncio.AbstractEventLoopPolicy.set_child_watcher` and :meth:`asyncio."
@@ -269,7 +257,7 @@ msgid ""
 "removed in Python 3.14. (Contributed by Kumar Aditya in :gh:`94597`.)"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:43
+#: deprecations/pending-removal-in-3.14.rst:36
 msgid ""
 "The :meth:`~asyncio.get_event_loop` method of the default event loop policy "
 "now emits a :exc:`DeprecationWarning` if there is no current event loop set "
@@ -277,7 +265,7 @@ msgid ""
 "Rossum in :gh:`100160`.)"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:48
+#: deprecations/pending-removal-in-3.14.rst:41
 msgid ""
 ":mod:`collections.abc`: Deprecated :class:`~collections.abc.ByteString`. "
 "Prefer :class:`!Sequence` or :class:`~collections.abc.Buffer`. For use in "
@@ -285,51 +273,51 @@ msgid ""
 "abc.Buffer`. (Contributed by Shantanu Jain in :gh:`91896`.)"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:54
+#: deprecations/pending-removal-in-3.14.rst:47
 msgid ""
 ":mod:`email`: Deprecated the *isdst* parameter in :func:`email.utils."
 "localtime`. (Contributed by Alan Williams in :gh:`72346`.)"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:57
+#: deprecations/pending-removal-in-3.14.rst:50
 msgid ""
 ":mod:`importlib`: ``__package__`` and ``__cached__`` will cease to be set or "
 "taken into consideration by the import system (:gh:`97879`)."
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:60
+#: deprecations/pending-removal-in-3.14.rst:53
 msgid ":mod:`importlib.abc` deprecated classes:"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:62
+#: deprecations/pending-removal-in-3.14.rst:55
 msgid ":class:`!importlib.abc.ResourceReader`"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:63
+#: deprecations/pending-removal-in-3.14.rst:56
 msgid ":class:`!importlib.abc.Traversable`"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:64
+#: deprecations/pending-removal-in-3.14.rst:57
 msgid ":class:`!importlib.abc.TraversableResources`"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:66
+#: deprecations/pending-removal-in-3.14.rst:59
 msgid "Use :mod:`importlib.resources.abc` classes instead:"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:68
+#: deprecations/pending-removal-in-3.14.rst:61
 msgid ":class:`importlib.resources.abc.Traversable`"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:69
+#: deprecations/pending-removal-in-3.14.rst:62
 msgid ":class:`importlib.resources.abc.TraversableResources`"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:71
+#: deprecations/pending-removal-in-3.14.rst:64
 msgid "(Contributed by Jason R. Coombs and Hugo van Kemenade in :gh:`93963`.)"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:73
+#: deprecations/pending-removal-in-3.14.rst:66
 msgid ""
 ":mod:`itertools` had undocumented, inefficient, historically buggy, and "
 "inconsistent support for copy, deepcopy, and pickle operations. This will be "
@@ -337,7 +325,7 @@ msgid ""
 "burden. (Contributed by Raymond Hettinger in :gh:`101588`.)"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:79
+#: deprecations/pending-removal-in-3.14.rst:72
 msgid ""
 ":mod:`multiprocessing`: The default start method will change to a safer one "
 "on Linux, BSDs, and other non-macOS POSIX platforms where ``'fork'`` is "
@@ -348,67 +336,53 @@ msgid ""
 "``'fork'``.  See :ref:`multiprocessing-start-methods`."
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:87
+#: deprecations/pending-removal-in-3.14.rst:80
 msgid ""
 ":mod:`pathlib`: :meth:`~pathlib.PurePath.is_relative_to` and :meth:`~pathlib."
 "PurePath.relative_to`: passing additional arguments is deprecated."
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:91
+#: deprecations/pending-removal-in-3.14.rst:84
 msgid ""
 ":mod:`pkgutil`: :func:`~pkgutil.find_loader` and :func:`~pkgutil.get_loader` "
 "now raise :exc:`DeprecationWarning`; use :func:`importlib.util.find_spec` "
 "instead. (Contributed by Nikita Sobolev in :gh:`97850`.)"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:96
+#: deprecations/pending-removal-in-3.14.rst:89
 msgid ":mod:`pty`:"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:98
+#: deprecations/pending-removal-in-3.14.rst:91
 msgid "``master_open()``: use :func:`pty.openpty`."
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:99
+#: deprecations/pending-removal-in-3.14.rst:92
 msgid "``slave_open()``: use :func:`pty.openpty`."
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:101
+#: deprecations/pending-removal-in-3.14.rst:94
 msgid ":mod:`sqlite3`:"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:103
+#: deprecations/pending-removal-in-3.14.rst:96
 msgid ":data:`~sqlite3.version` and :data:`~sqlite3.version_info`."
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:105
+#: deprecations/pending-removal-in-3.14.rst:98
 msgid ""
 ":meth:`~sqlite3.Cursor.execute` and :meth:`~sqlite3.Cursor.executemany` if :"
 "ref:`named placeholders <sqlite3-placeholders>` are used and *parameters* is "
 "a sequence instead of a :class:`dict`."
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:109
-msgid ""
-"date and datetime adapter, date and timestamp converter: see the :mod:"
-"`sqlite3` documentation for suggested replacement recipes."
-msgstr ""
-
-#: deprecations/pending-removal-in-3.14.rst:112
-msgid ""
-":class:`types.CodeType`: Accessing :attr:`~codeobject.co_lnotab` was "
-"deprecated in :pep:`626` since 3.10 and was planned to be removed in 3.12, "
-"but it only got a proper :exc:`DeprecationWarning` in 3.12. May be removed "
-"in 3.14. (Contributed by Nikita Sobolev in :gh:`101866`.)"
-msgstr ""
-
-#: deprecations/pending-removal-in-3.14.rst:119
+#: deprecations/pending-removal-in-3.14.rst:102
 msgid ""
 ":mod:`typing`: :class:`~typing.ByteString`, deprecated since Python 3.9, now "
 "causes a :exc:`DeprecationWarning` to be emitted when it is used."
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:122
+#: deprecations/pending-removal-in-3.14.rst:105
 msgid ""
 ":mod:`urllib`: :class:`!urllib.parse.Quoter` is deprecated: it was not "
 "intended to be a public API. (Contributed by Gregory P. Smith in :gh:"
@@ -429,6 +403,15 @@ msgid ""
 msgstr ""
 
 #: deprecations/pending-removal-in-3.15.rst:9
+#: deprecations/pending-removal-in-future.rst:58
+msgid ":mod:`importlib`:"
+msgstr ""
+
+#: deprecations/pending-removal-in-3.15.rst:11
+msgid "``load_module()`` method: use ``exec_module()`` instead."
+msgstr ""
+
+#: deprecations/pending-removal-in-3.15.rst:13
 msgid ""
 ":class:`locale`: :func:`locale.getdefaultlocale` was deprecated in Python "
 "3.11 and originally planned for removal in Python 3.13 (:gh:`90817`), but "
@@ -437,21 +420,31 @@ msgid ""
 "by Hugo van Kemenade in :gh:`111187`.)"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.15.rst:16
+#: deprecations/pending-removal-in-3.15.rst:20
 msgid ""
 ":mod:`pathlib`: :meth:`pathlib.PurePath.is_reserved` is deprecated and "
 "scheduled for removal in Python 3.15. From Python 3.13 onwards, use ``os."
 "path.isreserved`` to detect reserved paths on Windows."
 msgstr ""
 
-#: deprecations/pending-removal-in-3.15.rst:21
+#: deprecations/pending-removal-in-3.15.rst:25
 msgid ""
 ":mod:`platform`: :func:`~platform.java_ver` is deprecated and will be "
 "removed in 3.15. It was largely untested, had a confusing API, and was only "
 "useful for Jython support. (Contributed by Nikita Sobolev in :gh:`116349`.)"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.15.rst:27
+#: deprecations/pending-removal-in-3.15.rst:31
+msgid ":mod:`sysconfig`:"
+msgstr ""
+
+#: deprecations/pending-removal-in-3.15.rst:33
+msgid ""
+"The *check_home* argument of :func:`sysconfig.is_python_build` has been "
+"deprecated since Python 3.12."
+msgstr ""
+
+#: deprecations/pending-removal-in-3.15.rst:36
 msgid ""
 ":mod:`threading`: Passing any arguments to :func:`threading.RLock` is now "
 "deprecated. C version allows any numbers of args and kwargs, but they are "
@@ -460,11 +453,11 @@ msgid ""
 "Nikita Sobolev in :gh:`102029`.)"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.15.rst:34
+#: deprecations/pending-removal-in-3.15.rst:43
 msgid ":class:`typing.NamedTuple`:"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.15.rst:36
+#: deprecations/pending-removal-in-3.15.rst:45
 msgid ""
 "The undocumented keyword argument syntax for creating :class:`!NamedTuple` "
 "classes (``NT = NamedTuple(\"NT\", x=int)``) is deprecated, and will be "
@@ -472,7 +465,23 @@ msgid ""
 "instead."
 msgstr ""
 
-#: deprecations/pending-removal-in-3.15.rst:40
+#: deprecations/pending-removal-in-3.15.rst:49
+msgid ":mod:`types`:"
+msgstr ""
+
+#: deprecations/pending-removal-in-3.15.rst:51
+msgid ""
+":class:`types.CodeType`: Accessing :attr:`~codeobject.co_lnotab` was "
+"deprecated in :pep:`626` since 3.10 and was planned to be removed in 3.12, "
+"but it only got a proper :exc:`DeprecationWarning` in 3.12. May be removed "
+"in 3.15. (Contributed by Nikita Sobolev in :gh:`101866`.)"
+msgstr ""
+
+#: deprecations/pending-removal-in-3.15.rst:58
+msgid ":mod:`typing`:"
+msgstr ""
+
+#: deprecations/pending-removal-in-3.15.rst:60
 msgid ""
 "When using the functional syntax to create a :class:`!NamedTuple` class, "
 "failing to pass a value to the *fields* parameter (``NT = "
@@ -483,7 +492,7 @@ msgid ""
 "[])``."
 msgstr ""
 
-#: deprecations/pending-removal-in-3.15.rst:47
+#: deprecations/pending-removal-in-3.15.rst:67
 msgid ""
 ":class:`typing.TypedDict`: When using the functional syntax to create a :"
 "class:`!TypedDict` class, failing to pass a value to the *fields* parameter "
@@ -493,7 +502,7 @@ msgid ""
 "fields, use ``class TD(TypedDict): pass`` or ``TD = TypedDict(\"TD\", {})``."
 msgstr ""
 
-#: deprecations/pending-removal-in-3.15.rst:54
+#: deprecations/pending-removal-in-3.15.rst:74
 msgid ""
 ":mod:`wave`: Deprecate the ``getmark()``, ``setmark()`` and ``getmarkers()`` "
 "methods of the :class:`wave.Wave_read` and :class:`wave.Wave_write` classes. "
@@ -506,16 +515,28 @@ msgid "Pending Removal in Python 3.16"
 msgstr ""
 
 #: deprecations/pending-removal-in-3.16.rst:4
+msgid "The import system:"
+msgstr ""
+
+#: deprecations/pending-removal-in-3.16.rst:6
+msgid ""
+"Setting :attr:`~module.__loader__` on a module while failing to set :attr:"
+"`__spec__.loader <importlib.machinery.ModuleSpec.loader>` is deprecated. In "
+"Python 3.16, :attr:`!__loader__` will cease to be set or taken into "
+"consideration by the import system or the standard library."
+msgstr ""
+
+#: deprecations/pending-removal-in-3.16.rst:11
 msgid ""
 ":mod:`array`: :class:`array.array` ``'u'`` type (:c:type:`wchar_t`): use the "
 "``'w'`` type instead (``Py_UCS4``)."
 msgstr ""
 
-#: deprecations/pending-removal-in-3.16.rst:8
+#: deprecations/pending-removal-in-3.16.rst:15
 msgid ":mod:`builtins`: ``~bool``, bitwise inversion on bool."
 msgstr ""
 
-#: deprecations/pending-removal-in-3.16.rst:11
+#: deprecations/pending-removal-in-3.16.rst:18
 msgid ""
 ":mod:`symtable`: Deprecate :meth:`symtable.Class.get_methods` due to the "
 "lack of interest. (Contributed by Bénédikt Tran in :gh:`119698`.)"
@@ -635,50 +656,42 @@ msgstr ""
 msgid ":mod:`gettext`: Plural value must be an integer."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:58
-msgid ":mod:`importlib`:"
-msgstr ""
-
 #: deprecations/pending-removal-in-future.rst:60
-msgid "``load_module()`` method: use ``exec_module()`` instead."
-msgstr ""
-
-#: deprecations/pending-removal-in-future.rst:61
 msgid ""
 ":func:`~importlib.util.cache_from_source` *debug_override* parameter is "
 "deprecated: use the *optimization* parameter instead."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:64
+#: deprecations/pending-removal-in-future.rst:63
 msgid ":mod:`importlib.metadata`:"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:66
+#: deprecations/pending-removal-in-future.rst:65
 msgid "``EntryPoints`` tuple interface."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:67
+#: deprecations/pending-removal-in-future.rst:66
 msgid "Implicit ``None`` on return values."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:69
+#: deprecations/pending-removal-in-future.rst:68
 msgid ""
 ":mod:`mailbox`: Use of StringIO input and text mode is deprecated, use "
 "BytesIO and binary mode instead."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:72
+#: deprecations/pending-removal-in-future.rst:71
 msgid ""
 ":mod:`os`: Calling :func:`os.register_at_fork` in multi-threaded process."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:74
+#: deprecations/pending-removal-in-future.rst:73
 msgid ""
 ":class:`!pydoc.ErrorDuringImport`: A tuple value for *exc_info* parameter is "
 "deprecated, use an exception instance."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:77
+#: deprecations/pending-removal-in-future.rst:76
 msgid ""
 ":mod:`re`: More strict rules are now applied for numerical group references "
 "and group names in regular expressions.  Only sequence of ASCII digits is "
@@ -687,185 +700,179 @@ msgid ""
 "underscore. (Contributed by Serhiy Storchaka in :gh:`91760`.)"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:84
+#: deprecations/pending-removal-in-future.rst:83
 msgid ""
 ":mod:`!sre_compile`, :mod:`!sre_constants` and :mod:`!sre_parse` modules."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:86
+#: deprecations/pending-removal-in-future.rst:85
 msgid ""
 ":mod:`shutil`: :func:`~shutil.rmtree`'s *onerror* parameter is deprecated in "
 "Python 3.12; use the *onexc* parameter instead."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:89
+#: deprecations/pending-removal-in-future.rst:88
 msgid ":mod:`ssl` options and protocols:"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:91
+#: deprecations/pending-removal-in-future.rst:90
 msgid ":class:`ssl.SSLContext` without protocol argument is deprecated."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:92
+#: deprecations/pending-removal-in-future.rst:91
 msgid ""
 ":class:`ssl.SSLContext`: :meth:`~ssl.SSLContext.set_npn_protocols` and :meth:"
 "`!selected_npn_protocol` are deprecated: use ALPN instead."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:95
+#: deprecations/pending-removal-in-future.rst:94
 msgid "``ssl.OP_NO_SSL*`` options"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:96
+#: deprecations/pending-removal-in-future.rst:95
 msgid "``ssl.OP_NO_TLS*`` options"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:97
+#: deprecations/pending-removal-in-future.rst:96
 msgid "``ssl.PROTOCOL_SSLv3``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:98
+#: deprecations/pending-removal-in-future.rst:97
 msgid "``ssl.PROTOCOL_TLS``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:99
+#: deprecations/pending-removal-in-future.rst:98
 msgid "``ssl.PROTOCOL_TLSv1``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:100
+#: deprecations/pending-removal-in-future.rst:99
 msgid "``ssl.PROTOCOL_TLSv1_1``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:101
+#: deprecations/pending-removal-in-future.rst:100
 msgid "``ssl.PROTOCOL_TLSv1_2``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:102
+#: deprecations/pending-removal-in-future.rst:101
 msgid "``ssl.TLSVersion.SSLv3``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:103
+#: deprecations/pending-removal-in-future.rst:102
 msgid "``ssl.TLSVersion.TLSv1``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:104
+#: deprecations/pending-removal-in-future.rst:103
 msgid "``ssl.TLSVersion.TLSv1_1``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:106
-msgid ""
-":func:`sysconfig.is_python_build` *check_home* parameter is deprecated and "
-"ignored."
-msgstr ""
-
-#: deprecations/pending-removal-in-future.rst:109
+#: deprecations/pending-removal-in-future.rst:105
 msgid ":mod:`threading` methods:"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:111
+#: deprecations/pending-removal-in-future.rst:107
 msgid ""
 ":meth:`!threading.Condition.notifyAll`: use :meth:`~threading.Condition."
 "notify_all`."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:112
+#: deprecations/pending-removal-in-future.rst:108
 msgid ":meth:`!threading.Event.isSet`: use :meth:`~threading.Event.is_set`."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:113
+#: deprecations/pending-removal-in-future.rst:109
 msgid ""
 ":meth:`!threading.Thread.isDaemon`, :meth:`threading.Thread.setDaemon`: use :"
 "attr:`threading.Thread.daemon` attribute."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:115
+#: deprecations/pending-removal-in-future.rst:111
 msgid ""
 ":meth:`!threading.Thread.getName`, :meth:`threading.Thread.setName`: use :"
 "attr:`threading.Thread.name` attribute."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:117
+#: deprecations/pending-removal-in-future.rst:113
 msgid ":meth:`!threading.currentThread`: use :meth:`threading.current_thread`."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:118
+#: deprecations/pending-removal-in-future.rst:114
 msgid ":meth:`!threading.activeCount`: use :meth:`threading.active_count`."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:120
+#: deprecations/pending-removal-in-future.rst:116
 msgid ":class:`typing.Text` (:gh:`92332`)."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:122
+#: deprecations/pending-removal-in-future.rst:118
 msgid ""
 ":class:`unittest.IsolatedAsyncioTestCase`: it is deprecated to return a "
 "value that is not ``None`` from a test case."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:125
+#: deprecations/pending-removal-in-future.rst:121
 msgid ""
 ":mod:`urllib.parse` deprecated functions: :func:`~urllib.parse.urlparse` "
 "instead"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:127
+#: deprecations/pending-removal-in-future.rst:123
 msgid "``splitattr()``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:128
+#: deprecations/pending-removal-in-future.rst:124
 msgid "``splithost()``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:129
+#: deprecations/pending-removal-in-future.rst:125
 msgid "``splitnport()``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:130
+#: deprecations/pending-removal-in-future.rst:126
 msgid "``splitpasswd()``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:131
+#: deprecations/pending-removal-in-future.rst:127
 msgid "``splitport()``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:132
+#: deprecations/pending-removal-in-future.rst:128
 msgid "``splitquery()``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:133
+#: deprecations/pending-removal-in-future.rst:129
 msgid "``splittag()``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:134
+#: deprecations/pending-removal-in-future.rst:130
 msgid "``splittype()``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:135
+#: deprecations/pending-removal-in-future.rst:131
 msgid "``splituser()``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:136
+#: deprecations/pending-removal-in-future.rst:132
 msgid "``splitvalue()``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:137
+#: deprecations/pending-removal-in-future.rst:133
 msgid "``to_bytes()``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:139
+#: deprecations/pending-removal-in-future.rst:135
 msgid ""
 ":mod:`urllib.request`: :class:`~urllib.request.URLopener` and :class:"
 "`~urllib.request.FancyURLopener` style of invoking requests is deprecated. "
 "Use newer :func:`~urllib.request.urlopen` functions and methods."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:143
+#: deprecations/pending-removal-in-future.rst:139
 msgid ""
 ":mod:`wsgiref`: ``SimpleHandler.stdout.write()`` should not do partial "
 "writes."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:146
+#: deprecations/pending-removal-in-future.rst:142
 msgid ""
 ":mod:`xml.etree.ElementTree`: Testing the truth value of an :class:`~xml."
 "etree.ElementTree.Element` is deprecated. In a future release it will always "
@@ -873,7 +880,7 @@ msgid ""
 "instead."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:151
+#: deprecations/pending-removal-in-future.rst:147
 msgid ""
 ":meth:`zipimport.zipimporter.load_module` is deprecated: use :meth:"
 "`~zipimport.zipimporter.exec_module` instead."
diff --git a/deprecations/pending-removal-in-3.14.po b/deprecations/pending-removal-in-3.14.po
index 8fb8bec31..b4edf2bfa 100644
--- a/deprecations/pending-removal-in-3.14.po
+++ b/deprecations/pending-removal-in-3.14.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -22,62 +22,50 @@ msgid "Pending Removal in Python 3.14"
 msgstr ""
 
 #: deprecations/pending-removal-in-3.14.rst:4
-msgid "The import system:"
-msgstr ""
-
-#: deprecations/pending-removal-in-3.14.rst:6
-msgid ""
-"Setting :attr:`~module.__loader__` on a module while failing to set :attr:"
-"`__spec__.loader <importlib.machinery.ModuleSpec.loader>` is deprecated. In "
-"Python 3.14, :attr:`!__loader__` will cease to be set or taken into "
-"consideration by the import system or the standard library."
-msgstr ""
-
-#: deprecations/pending-removal-in-3.14.rst:11
 msgid ""
 ":mod:`argparse`: The *type*, *choices*, and *metavar* parameters of :class:`!"
 "argparse.BooleanOptionalAction` are deprecated and will be removed in 3.14. "
 "(Contributed by Nikita Sobolev in :gh:`92248`.)"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:16
+#: deprecations/pending-removal-in-3.14.rst:9
 msgid ""
 ":mod:`ast`: The following features have been deprecated in documentation "
 "since Python 3.8, now cause a :exc:`DeprecationWarning` to be emitted at "
 "runtime when they are accessed or used, and will be removed in Python 3.14:"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:20
+#: deprecations/pending-removal-in-3.14.rst:13
 msgid ":class:`!ast.Num`"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:21
+#: deprecations/pending-removal-in-3.14.rst:14
 msgid ":class:`!ast.Str`"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:22
+#: deprecations/pending-removal-in-3.14.rst:15
 msgid ":class:`!ast.Bytes`"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:23
+#: deprecations/pending-removal-in-3.14.rst:16
 msgid ":class:`!ast.NameConstant`"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:24
+#: deprecations/pending-removal-in-3.14.rst:17
 msgid ":class:`!ast.Ellipsis`"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:26
+#: deprecations/pending-removal-in-3.14.rst:19
 msgid ""
 "Use :class:`ast.Constant` instead. (Contributed by Serhiy Storchaka in :gh:"
 "`90953`.)"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:29
+#: deprecations/pending-removal-in-3.14.rst:22
 msgid ":mod:`asyncio`:"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:31
+#: deprecations/pending-removal-in-3.14.rst:24
 msgid ""
 "The child watcher classes :class:`~asyncio.MultiLoopChildWatcher`, :class:"
 "`~asyncio.FastChildWatcher`, :class:`~asyncio.AbstractChildWatcher` and :"
@@ -85,7 +73,7 @@ msgid ""
 "Python 3.14. (Contributed by Kumar Aditya in :gh:`94597`.)"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:37
+#: deprecations/pending-removal-in-3.14.rst:30
 msgid ""
 ":func:`asyncio.set_child_watcher`, :func:`asyncio.get_child_watcher`, :meth:"
 "`asyncio.AbstractEventLoopPolicy.set_child_watcher` and :meth:`asyncio."
@@ -93,7 +81,7 @@ msgid ""
 "removed in Python 3.14. (Contributed by Kumar Aditya in :gh:`94597`.)"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:43
+#: deprecations/pending-removal-in-3.14.rst:36
 msgid ""
 "The :meth:`~asyncio.get_event_loop` method of the default event loop policy "
 "now emits a :exc:`DeprecationWarning` if there is no current event loop set "
@@ -101,7 +89,7 @@ msgid ""
 "Rossum in :gh:`100160`.)"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:48
+#: deprecations/pending-removal-in-3.14.rst:41
 msgid ""
 ":mod:`collections.abc`: Deprecated :class:`~collections.abc.ByteString`. "
 "Prefer :class:`!Sequence` or :class:`~collections.abc.Buffer`. For use in "
@@ -109,51 +97,51 @@ msgid ""
 "abc.Buffer`. (Contributed by Shantanu Jain in :gh:`91896`.)"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:54
+#: deprecations/pending-removal-in-3.14.rst:47
 msgid ""
 ":mod:`email`: Deprecated the *isdst* parameter in :func:`email.utils."
 "localtime`. (Contributed by Alan Williams in :gh:`72346`.)"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:57
+#: deprecations/pending-removal-in-3.14.rst:50
 msgid ""
 ":mod:`importlib`: ``__package__`` and ``__cached__`` will cease to be set or "
 "taken into consideration by the import system (:gh:`97879`)."
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:60
+#: deprecations/pending-removal-in-3.14.rst:53
 msgid ":mod:`importlib.abc` deprecated classes:"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:62
+#: deprecations/pending-removal-in-3.14.rst:55
 msgid ":class:`!importlib.abc.ResourceReader`"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:63
+#: deprecations/pending-removal-in-3.14.rst:56
 msgid ":class:`!importlib.abc.Traversable`"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:64
+#: deprecations/pending-removal-in-3.14.rst:57
 msgid ":class:`!importlib.abc.TraversableResources`"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:66
+#: deprecations/pending-removal-in-3.14.rst:59
 msgid "Use :mod:`importlib.resources.abc` classes instead:"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:68
+#: deprecations/pending-removal-in-3.14.rst:61
 msgid ":class:`importlib.resources.abc.Traversable`"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:69
+#: deprecations/pending-removal-in-3.14.rst:62
 msgid ":class:`importlib.resources.abc.TraversableResources`"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:71
+#: deprecations/pending-removal-in-3.14.rst:64
 msgid "(Contributed by Jason R. Coombs and Hugo van Kemenade in :gh:`93963`.)"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:73
+#: deprecations/pending-removal-in-3.14.rst:66
 msgid ""
 ":mod:`itertools` had undocumented, inefficient, historically buggy, and "
 "inconsistent support for copy, deepcopy, and pickle operations. This will be "
@@ -161,7 +149,7 @@ msgid ""
 "burden. (Contributed by Raymond Hettinger in :gh:`101588`.)"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:79
+#: deprecations/pending-removal-in-3.14.rst:72
 msgid ""
 ":mod:`multiprocessing`: The default start method will change to a safer one "
 "on Linux, BSDs, and other non-macOS POSIX platforms where ``'fork'`` is "
@@ -172,67 +160,53 @@ msgid ""
 "``'fork'``.  See :ref:`multiprocessing-start-methods`."
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:87
+#: deprecations/pending-removal-in-3.14.rst:80
 msgid ""
 ":mod:`pathlib`: :meth:`~pathlib.PurePath.is_relative_to` and :meth:`~pathlib."
 "PurePath.relative_to`: passing additional arguments is deprecated."
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:91
+#: deprecations/pending-removal-in-3.14.rst:84
 msgid ""
 ":mod:`pkgutil`: :func:`~pkgutil.find_loader` and :func:`~pkgutil.get_loader` "
 "now raise :exc:`DeprecationWarning`; use :func:`importlib.util.find_spec` "
 "instead. (Contributed by Nikita Sobolev in :gh:`97850`.)"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:96
+#: deprecations/pending-removal-in-3.14.rst:89
 msgid ":mod:`pty`:"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:98
+#: deprecations/pending-removal-in-3.14.rst:91
 msgid "``master_open()``: use :func:`pty.openpty`."
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:99
+#: deprecations/pending-removal-in-3.14.rst:92
 msgid "``slave_open()``: use :func:`pty.openpty`."
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:101
+#: deprecations/pending-removal-in-3.14.rst:94
 msgid ":mod:`sqlite3`:"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:103
+#: deprecations/pending-removal-in-3.14.rst:96
 msgid ":data:`~sqlite3.version` and :data:`~sqlite3.version_info`."
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:105
+#: deprecations/pending-removal-in-3.14.rst:98
 msgid ""
 ":meth:`~sqlite3.Cursor.execute` and :meth:`~sqlite3.Cursor.executemany` if :"
 "ref:`named placeholders <sqlite3-placeholders>` are used and *parameters* is "
 "a sequence instead of a :class:`dict`."
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:109
-msgid ""
-"date and datetime adapter, date and timestamp converter: see the :mod:"
-"`sqlite3` documentation for suggested replacement recipes."
-msgstr ""
-
-#: deprecations/pending-removal-in-3.14.rst:112
-msgid ""
-":class:`types.CodeType`: Accessing :attr:`~codeobject.co_lnotab` was "
-"deprecated in :pep:`626` since 3.10 and was planned to be removed in 3.12, "
-"but it only got a proper :exc:`DeprecationWarning` in 3.12. May be removed "
-"in 3.14. (Contributed by Nikita Sobolev in :gh:`101866`.)"
-msgstr ""
-
-#: deprecations/pending-removal-in-3.14.rst:119
+#: deprecations/pending-removal-in-3.14.rst:102
 msgid ""
 ":mod:`typing`: :class:`~typing.ByteString`, deprecated since Python 3.9, now "
 "causes a :exc:`DeprecationWarning` to be emitted when it is used."
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:122
+#: deprecations/pending-removal-in-3.14.rst:105
 msgid ""
 ":mod:`urllib`: :class:`!urllib.parse.Quoter` is deprecated: it was not "
 "intended to be a public API. (Contributed by Gregory P. Smith in :gh:"
diff --git a/deprecations/pending-removal-in-3.15.po b/deprecations/pending-removal-in-3.15.po
index 2074d7f0f..2dc3ce166 100644
--- a/deprecations/pending-removal-in-3.15.po
+++ b/deprecations/pending-removal-in-3.15.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -30,6 +30,14 @@ msgid ""
 msgstr ""
 
 #: deprecations/pending-removal-in-3.15.rst:9
+msgid ":mod:`importlib`:"
+msgstr ""
+
+#: deprecations/pending-removal-in-3.15.rst:11
+msgid "``load_module()`` method: use ``exec_module()`` instead."
+msgstr ""
+
+#: deprecations/pending-removal-in-3.15.rst:13
 msgid ""
 ":class:`locale`: :func:`locale.getdefaultlocale` was deprecated in Python "
 "3.11 and originally planned for removal in Python 3.13 (:gh:`90817`), but "
@@ -38,21 +46,31 @@ msgid ""
 "by Hugo van Kemenade in :gh:`111187`.)"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.15.rst:16
+#: deprecations/pending-removal-in-3.15.rst:20
 msgid ""
 ":mod:`pathlib`: :meth:`pathlib.PurePath.is_reserved` is deprecated and "
 "scheduled for removal in Python 3.15. From Python 3.13 onwards, use ``os."
 "path.isreserved`` to detect reserved paths on Windows."
 msgstr ""
 
-#: deprecations/pending-removal-in-3.15.rst:21
+#: deprecations/pending-removal-in-3.15.rst:25
 msgid ""
 ":mod:`platform`: :func:`~platform.java_ver` is deprecated and will be "
 "removed in 3.15. It was largely untested, had a confusing API, and was only "
 "useful for Jython support. (Contributed by Nikita Sobolev in :gh:`116349`.)"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.15.rst:27
+#: deprecations/pending-removal-in-3.15.rst:31
+msgid ":mod:`sysconfig`:"
+msgstr ""
+
+#: deprecations/pending-removal-in-3.15.rst:33
+msgid ""
+"The *check_home* argument of :func:`sysconfig.is_python_build` has been "
+"deprecated since Python 3.12."
+msgstr ""
+
+#: deprecations/pending-removal-in-3.15.rst:36
 msgid ""
 ":mod:`threading`: Passing any arguments to :func:`threading.RLock` is now "
 "deprecated. C version allows any numbers of args and kwargs, but they are "
@@ -61,11 +79,11 @@ msgid ""
 "Nikita Sobolev in :gh:`102029`.)"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.15.rst:34
+#: deprecations/pending-removal-in-3.15.rst:43
 msgid ":class:`typing.NamedTuple`:"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.15.rst:36
+#: deprecations/pending-removal-in-3.15.rst:45
 msgid ""
 "The undocumented keyword argument syntax for creating :class:`!NamedTuple` "
 "classes (``NT = NamedTuple(\"NT\", x=int)``) is deprecated, and will be "
@@ -73,7 +91,23 @@ msgid ""
 "instead."
 msgstr ""
 
-#: deprecations/pending-removal-in-3.15.rst:40
+#: deprecations/pending-removal-in-3.15.rst:49
+msgid ":mod:`types`:"
+msgstr ""
+
+#: deprecations/pending-removal-in-3.15.rst:51
+msgid ""
+":class:`types.CodeType`: Accessing :attr:`~codeobject.co_lnotab` was "
+"deprecated in :pep:`626` since 3.10 and was planned to be removed in 3.12, "
+"but it only got a proper :exc:`DeprecationWarning` in 3.12. May be removed "
+"in 3.15. (Contributed by Nikita Sobolev in :gh:`101866`.)"
+msgstr ""
+
+#: deprecations/pending-removal-in-3.15.rst:58
+msgid ":mod:`typing`:"
+msgstr ""
+
+#: deprecations/pending-removal-in-3.15.rst:60
 msgid ""
 "When using the functional syntax to create a :class:`!NamedTuple` class, "
 "failing to pass a value to the *fields* parameter (``NT = "
@@ -84,7 +118,7 @@ msgid ""
 "[])``."
 msgstr ""
 
-#: deprecations/pending-removal-in-3.15.rst:47
+#: deprecations/pending-removal-in-3.15.rst:67
 msgid ""
 ":class:`typing.TypedDict`: When using the functional syntax to create a :"
 "class:`!TypedDict` class, failing to pass a value to the *fields* parameter "
@@ -94,7 +128,7 @@ msgid ""
 "fields, use ``class TD(TypedDict): pass`` or ``TD = TypedDict(\"TD\", {})``."
 msgstr ""
 
-#: deprecations/pending-removal-in-3.15.rst:54
+#: deprecations/pending-removal-in-3.15.rst:74
 msgid ""
 ":mod:`wave`: Deprecate the ``getmark()``, ``setmark()`` and ``getmarkers()`` "
 "methods of the :class:`wave.Wave_read` and :class:`wave.Wave_write` classes. "
diff --git a/deprecations/pending-removal-in-3.16.po b/deprecations/pending-removal-in-3.16.po
index 9526b7b03..9fe17592d 100644
--- a/deprecations/pending-removal-in-3.16.po
+++ b/deprecations/pending-removal-in-3.16.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -22,16 +22,28 @@ msgid "Pending Removal in Python 3.16"
 msgstr ""
 
 #: deprecations/pending-removal-in-3.16.rst:4
+msgid "The import system:"
+msgstr ""
+
+#: deprecations/pending-removal-in-3.16.rst:6
+msgid ""
+"Setting :attr:`~module.__loader__` on a module while failing to set :attr:"
+"`__spec__.loader <importlib.machinery.ModuleSpec.loader>` is deprecated. In "
+"Python 3.16, :attr:`!__loader__` will cease to be set or taken into "
+"consideration by the import system or the standard library."
+msgstr ""
+
+#: deprecations/pending-removal-in-3.16.rst:11
 msgid ""
 ":mod:`array`: :class:`array.array` ``'u'`` type (:c:type:`wchar_t`): use the "
 "``'w'`` type instead (``Py_UCS4``)."
 msgstr ""
 
-#: deprecations/pending-removal-in-3.16.rst:8
+#: deprecations/pending-removal-in-3.16.rst:15
 msgid ":mod:`builtins`: ``~bool``, bitwise inversion on bool."
 msgstr ""
 
-#: deprecations/pending-removal-in-3.16.rst:11
+#: deprecations/pending-removal-in-3.16.rst:18
 msgid ""
 ":mod:`symtable`: Deprecate :meth:`symtable.Class.get_methods` due to the "
 "lack of interest. (Contributed by Bénédikt Tran in :gh:`119698`.)"
diff --git a/deprecations/pending-removal-in-future.po b/deprecations/pending-removal-in-future.po
index d65a890d5..01b146db5 100644
--- a/deprecations/pending-removal-in-future.po
+++ b/deprecations/pending-removal-in-future.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -135,45 +135,41 @@ msgid ":mod:`importlib`:"
 msgstr ""
 
 #: deprecations/pending-removal-in-future.rst:60
-msgid "``load_module()`` method: use ``exec_module()`` instead."
-msgstr ""
-
-#: deprecations/pending-removal-in-future.rst:61
 msgid ""
 ":func:`~importlib.util.cache_from_source` *debug_override* parameter is "
 "deprecated: use the *optimization* parameter instead."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:64
+#: deprecations/pending-removal-in-future.rst:63
 msgid ":mod:`importlib.metadata`:"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:66
+#: deprecations/pending-removal-in-future.rst:65
 msgid "``EntryPoints`` tuple interface."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:67
+#: deprecations/pending-removal-in-future.rst:66
 msgid "Implicit ``None`` on return values."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:69
+#: deprecations/pending-removal-in-future.rst:68
 msgid ""
 ":mod:`mailbox`: Use of StringIO input and text mode is deprecated, use "
 "BytesIO and binary mode instead."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:72
+#: deprecations/pending-removal-in-future.rst:71
 msgid ""
 ":mod:`os`: Calling :func:`os.register_at_fork` in multi-threaded process."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:74
+#: deprecations/pending-removal-in-future.rst:73
 msgid ""
 ":class:`!pydoc.ErrorDuringImport`: A tuple value for *exc_info* parameter is "
 "deprecated, use an exception instance."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:77
+#: deprecations/pending-removal-in-future.rst:76
 msgid ""
 ":mod:`re`: More strict rules are now applied for numerical group references "
 "and group names in regular expressions.  Only sequence of ASCII digits is "
@@ -182,185 +178,179 @@ msgid ""
 "underscore. (Contributed by Serhiy Storchaka in :gh:`91760`.)"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:84
+#: deprecations/pending-removal-in-future.rst:83
 msgid ""
 ":mod:`!sre_compile`, :mod:`!sre_constants` and :mod:`!sre_parse` modules."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:86
+#: deprecations/pending-removal-in-future.rst:85
 msgid ""
 ":mod:`shutil`: :func:`~shutil.rmtree`'s *onerror* parameter is deprecated in "
 "Python 3.12; use the *onexc* parameter instead."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:89
+#: deprecations/pending-removal-in-future.rst:88
 msgid ":mod:`ssl` options and protocols:"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:91
+#: deprecations/pending-removal-in-future.rst:90
 msgid ":class:`ssl.SSLContext` without protocol argument is deprecated."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:92
+#: deprecations/pending-removal-in-future.rst:91
 msgid ""
 ":class:`ssl.SSLContext`: :meth:`~ssl.SSLContext.set_npn_protocols` and :meth:"
 "`!selected_npn_protocol` are deprecated: use ALPN instead."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:95
+#: deprecations/pending-removal-in-future.rst:94
 msgid "``ssl.OP_NO_SSL*`` options"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:96
+#: deprecations/pending-removal-in-future.rst:95
 msgid "``ssl.OP_NO_TLS*`` options"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:97
+#: deprecations/pending-removal-in-future.rst:96
 msgid "``ssl.PROTOCOL_SSLv3``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:98
+#: deprecations/pending-removal-in-future.rst:97
 msgid "``ssl.PROTOCOL_TLS``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:99
+#: deprecations/pending-removal-in-future.rst:98
 msgid "``ssl.PROTOCOL_TLSv1``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:100
+#: deprecations/pending-removal-in-future.rst:99
 msgid "``ssl.PROTOCOL_TLSv1_1``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:101
+#: deprecations/pending-removal-in-future.rst:100
 msgid "``ssl.PROTOCOL_TLSv1_2``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:102
+#: deprecations/pending-removal-in-future.rst:101
 msgid "``ssl.TLSVersion.SSLv3``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:103
+#: deprecations/pending-removal-in-future.rst:102
 msgid "``ssl.TLSVersion.TLSv1``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:104
+#: deprecations/pending-removal-in-future.rst:103
 msgid "``ssl.TLSVersion.TLSv1_1``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:106
-msgid ""
-":func:`sysconfig.is_python_build` *check_home* parameter is deprecated and "
-"ignored."
-msgstr ""
-
-#: deprecations/pending-removal-in-future.rst:109
+#: deprecations/pending-removal-in-future.rst:105
 msgid ":mod:`threading` methods:"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:111
+#: deprecations/pending-removal-in-future.rst:107
 msgid ""
 ":meth:`!threading.Condition.notifyAll`: use :meth:`~threading.Condition."
 "notify_all`."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:112
+#: deprecations/pending-removal-in-future.rst:108
 msgid ":meth:`!threading.Event.isSet`: use :meth:`~threading.Event.is_set`."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:113
+#: deprecations/pending-removal-in-future.rst:109
 msgid ""
 ":meth:`!threading.Thread.isDaemon`, :meth:`threading.Thread.setDaemon`: use :"
 "attr:`threading.Thread.daemon` attribute."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:115
+#: deprecations/pending-removal-in-future.rst:111
 msgid ""
 ":meth:`!threading.Thread.getName`, :meth:`threading.Thread.setName`: use :"
 "attr:`threading.Thread.name` attribute."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:117
+#: deprecations/pending-removal-in-future.rst:113
 msgid ":meth:`!threading.currentThread`: use :meth:`threading.current_thread`."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:118
+#: deprecations/pending-removal-in-future.rst:114
 msgid ":meth:`!threading.activeCount`: use :meth:`threading.active_count`."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:120
+#: deprecations/pending-removal-in-future.rst:116
 msgid ":class:`typing.Text` (:gh:`92332`)."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:122
+#: deprecations/pending-removal-in-future.rst:118
 msgid ""
 ":class:`unittest.IsolatedAsyncioTestCase`: it is deprecated to return a "
 "value that is not ``None`` from a test case."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:125
+#: deprecations/pending-removal-in-future.rst:121
 msgid ""
 ":mod:`urllib.parse` deprecated functions: :func:`~urllib.parse.urlparse` "
 "instead"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:127
+#: deprecations/pending-removal-in-future.rst:123
 msgid "``splitattr()``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:128
+#: deprecations/pending-removal-in-future.rst:124
 msgid "``splithost()``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:129
+#: deprecations/pending-removal-in-future.rst:125
 msgid "``splitnport()``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:130
+#: deprecations/pending-removal-in-future.rst:126
 msgid "``splitpasswd()``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:131
+#: deprecations/pending-removal-in-future.rst:127
 msgid "``splitport()``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:132
+#: deprecations/pending-removal-in-future.rst:128
 msgid "``splitquery()``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:133
+#: deprecations/pending-removal-in-future.rst:129
 msgid "``splittag()``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:134
+#: deprecations/pending-removal-in-future.rst:130
 msgid "``splittype()``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:135
+#: deprecations/pending-removal-in-future.rst:131
 msgid "``splituser()``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:136
+#: deprecations/pending-removal-in-future.rst:132
 msgid "``splitvalue()``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:137
+#: deprecations/pending-removal-in-future.rst:133
 msgid "``to_bytes()``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:139
+#: deprecations/pending-removal-in-future.rst:135
 msgid ""
 ":mod:`urllib.request`: :class:`~urllib.request.URLopener` and :class:"
 "`~urllib.request.FancyURLopener` style of invoking requests is deprecated. "
 "Use newer :func:`~urllib.request.urlopen` functions and methods."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:143
+#: deprecations/pending-removal-in-future.rst:139
 msgid ""
 ":mod:`wsgiref`: ``SimpleHandler.stdout.write()`` should not do partial "
 "writes."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:146
+#: deprecations/pending-removal-in-future.rst:142
 msgid ""
 ":mod:`xml.etree.ElementTree`: Testing the truth value of an :class:`~xml."
 "etree.ElementTree.Element` is deprecated. In a future release it will always "
@@ -368,7 +358,7 @@ msgid ""
 "instead."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:151
+#: deprecations/pending-removal-in-future.rst:147
 msgid ""
 ":meth:`zipimport.zipimporter.load_module` is deprecated: use :meth:"
 "`~zipimport.zipimporter.exec_module` instead."
diff --git a/extending/embedding.po b/extending/embedding.po
index 6c91190d5..61ec80ad8 100644
--- a/extending/embedding.po
+++ b/extending/embedding.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: 2022-12-29 00:34-0500\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -408,10 +408,11 @@ msgid ""
 msgstr ""
 
 #: extending/embedding.rst:178
+#, fuzzy
 msgid ""
 "After initializing the interpreter, the script is loaded using :c:func:"
 "`PyImport_Import`.  This routine needs a Python string as its argument, "
-"which is constructed using the :c:func:`PyUnicode_FromString` data "
+"which is constructed using the :c:func:`PyUnicode_DecodeFSDefault` data "
 "conversion routine. ::"
 msgstr ""
 "Yorumlayıcıyı başlattıktan sonra komut dosyası :c:func:`PyImport_Import` "
diff --git a/faq/general.po b/faq/general.po
index a4f73ce1a..edc2fbbbf 100644
--- a/faq/general.po
+++ b/faq/general.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -633,7 +633,7 @@ msgstr ""
 #: faq/general.rst:411
 msgid ""
 ">>> L = []\n"
-">>> dir(L) \n"
+">>> dir(L)\n"
 "['__add__', '__class__', '__contains__', '__delattr__', '__delitem__',\n"
 "'__dir__', '__doc__', '__eq__', '__format__', '__ge__',\n"
 "'__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__',\n"
diff --git a/faq/programming.po b/faq/programming.po
index 19a66cad6..f9ed3d8b8 100644
--- a/faq/programming.po
+++ b/faq/programming.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -1479,8 +1479,8 @@ msgstr ""
 
 #: faq/programming.rst:990
 msgid ""
-"Is there an equivalent to Perl's chomp() for removing trailing newlines from "
-"strings?"
+"Is there an equivalent to Perl's ``chomp()`` for removing trailing newlines "
+"from strings?"
 msgstr ""
 
 #: faq/programming.rst:992
@@ -1508,7 +1508,7 @@ msgid ""
 msgstr ""
 
 #: faq/programming.rst:1009
-msgid "Is there a scanf() or sscanf() equivalent?"
+msgid "Is there a ``scanf()`` or ``sscanf()`` equivalent?"
 msgstr ""
 
 #: faq/programming.rst:1011
@@ -1532,7 +1532,7 @@ msgid ""
 msgstr ""
 
 #: faq/programming.rst:1024
-msgid "What does 'UnicodeDecodeError' or 'UnicodeEncodeError' error  mean?"
+msgid "What does ``UnicodeDecodeError`` or ``UnicodeEncodeError`` error mean?"
 msgstr ""
 
 #: faq/programming.rst:1026
@@ -1554,7 +1554,7 @@ msgid ""
 ">>> r'C:\\this\\will\\not\\work\\'\n"
 "  File \"<stdin>\", line 1\n"
 "    r'C:\\this\\will\\not\\work\\'\n"
-"         ^\n"
+"    ^\n"
 "SyntaxError: unterminated string literal (detected at line 1)"
 msgstr ""
 
@@ -2813,22 +2813,22 @@ msgstr ""
 
 #: faq/programming.rst:1870
 msgid ""
-"1) Assignments create new names but do not change object identity.  After "
-"the assignment ``new = old``, it is guaranteed that ``new is old``."
+"Assignments create new names but do not change object identity.  After the "
+"assignment ``new = old``, it is guaranteed that ``new is old``."
 msgstr ""
 
 #: faq/programming.rst:1873
 msgid ""
-"2) Putting an object in a container that stores object references does not "
+"Putting an object in a container that stores object references does not "
 "change object identity.  After the list assignment ``s[0] = x``, it is "
 "guaranteed that ``s[0] is x``."
 msgstr ""
 
 #: faq/programming.rst:1877
 msgid ""
-"3) If an object is a singleton, it means that only one instance of that "
-"object can exist.  After the assignments ``a = None`` and ``b = None``, it "
-"is guaranteed that ``a is b`` because ``None`` is a singleton."
+"If an object is a singleton, it means that only one instance of that object "
+"can exist.  After the assignments ``a = None`` and ``b = None``, it is "
+"guaranteed that ``a is b`` because ``None`` is a singleton."
 msgstr ""
 
 #: faq/programming.rst:1881
@@ -2874,18 +2874,17 @@ msgstr ""
 
 #: faq/programming.rst:1908
 msgid ""
-"1) As recommended by :pep:`8`, an identity test is the preferred way to "
-"check for ``None``.  This reads like plain English in code and avoids "
-"confusion with other objects that may have boolean values that evaluate to "
-"false."
+"As recommended by :pep:`8`, an identity test is the preferred way to check "
+"for ``None``.  This reads like plain English in code and avoids confusion "
+"with other objects that may have boolean values that evaluate to false."
 msgstr ""
 
 #: faq/programming.rst:1912
 msgid ""
-"2) Detecting optional arguments can be tricky when ``None`` is a valid input "
+"Detecting optional arguments can be tricky when ``None`` is a valid input "
 "value.  In those situations, you can create a singleton sentinel object "
 "guaranteed to be distinct from other objects.  For example, here is how to "
-"implement a method that behaves like :meth:`dict.pop`::"
+"implement a method that behaves like :meth:`dict.pop`:"
 msgstr ""
 
 #: faq/programming.rst:1917
@@ -2902,20 +2901,20 @@ msgid ""
 "    return default"
 msgstr ""
 
-#: faq/programming.rst:1928
+#: faq/programming.rst:1930
 msgid ""
-"3) Container implementations sometimes need to augment equality tests with "
+"Container implementations sometimes need to augment equality tests with "
 "identity tests.  This prevents the code from being confused by objects such "
 "as ``float('NaN')`` that are not equal to themselves."
 msgstr ""
 
-#: faq/programming.rst:1932
+#: faq/programming.rst:1934
 msgid ""
 "For example, here is the implementation of :meth:`!collections.abc.Sequence."
 "__contains__`::"
 msgstr ""
 
-#: faq/programming.rst:1935
+#: faq/programming.rst:1937
 msgid ""
 "def __contains__(self, value):\n"
 "    for v in self:\n"
@@ -2924,12 +2923,12 @@ msgid ""
 "    return False"
 msgstr ""
 
-#: faq/programming.rst:1943
+#: faq/programming.rst:1945
 msgid ""
 "How can a subclass control what data is stored in an immutable instance?"
 msgstr ""
 
-#: faq/programming.rst:1945
+#: faq/programming.rst:1947
 msgid ""
 "When subclassing an immutable type, override the :meth:`~object.__new__` "
 "method instead of the :meth:`~object.__init__` method.  The latter only runs "
@@ -2937,13 +2936,13 @@ msgid ""
 "immutable instance."
 msgstr ""
 
-#: faq/programming.rst:1950
+#: faq/programming.rst:1952
 msgid ""
 "All of these immutable classes have a different signature than their parent "
 "class:"
 msgstr ""
 
-#: faq/programming.rst:1953
+#: faq/programming.rst:1955
 msgid ""
 "from datetime import date\n"
 "\n"
@@ -2967,11 +2966,11 @@ msgid ""
 "        return super().__new__(cls, s)"
 msgstr ""
 
-#: faq/programming.rst:1976
+#: faq/programming.rst:1978
 msgid "The classes can be used like this:"
 msgstr ""
 
-#: faq/programming.rst:1978
+#: faq/programming.rst:1980
 msgid ""
 ">>> FirstOfMonthDate(2012, 2, 14)\n"
 "FirstOfMonthDate(2012, 2, 1)\n"
@@ -2983,25 +2982,25 @@ msgid ""
 "'blog-why-python-rocks'"
 msgstr ""
 
-#: faq/programming.rst:1993
+#: faq/programming.rst:1995
 msgid "How do I cache method calls?"
 msgstr ""
 
-#: faq/programming.rst:1995
+#: faq/programming.rst:1997
 msgid ""
 "The two principal tools for caching methods are :func:`functools."
 "cached_property` and :func:`functools.lru_cache`.  The former stores results "
 "at the instance level and the latter at the class level."
 msgstr ""
 
-#: faq/programming.rst:2000
+#: faq/programming.rst:2002
 msgid ""
 "The *cached_property* approach only works with methods that do not take any "
 "arguments.  It does not create a reference to the instance.  The cached "
 "method result will be kept only as long as the instance is alive."
 msgstr ""
 
-#: faq/programming.rst:2004
+#: faq/programming.rst:2006
 msgid ""
 "The advantage is that when an instance is no longer used, the cached method "
 "result will be released right away.  The disadvantage is that if instances "
@@ -3009,25 +3008,25 @@ msgid ""
 "without bound."
 msgstr ""
 
-#: faq/programming.rst:2009
+#: faq/programming.rst:2011
 msgid ""
 "The *lru_cache* approach works with methods that have :term:`hashable` "
 "arguments.  It creates a reference to the instance unless special efforts "
 "are made to pass in weak references."
 msgstr ""
 
-#: faq/programming.rst:2013
+#: faq/programming.rst:2015
 msgid ""
 "The advantage of the least recently used algorithm is that the cache is "
 "bounded by the specified *maxsize*.  The disadvantage is that instances are "
 "kept alive until they age out of the cache or until the cache is cleared."
 msgstr ""
 
-#: faq/programming.rst:2018
+#: faq/programming.rst:2020
 msgid "This example shows the various techniques::"
 msgstr ""
 
-#: faq/programming.rst:2020
+#: faq/programming.rst:2022
 msgid ""
 "class Weather:\n"
 "    \"Lookup weather information on a government website\"\n"
@@ -3052,21 +3051,21 @@ msgid ""
 "        # Depends on the station_id, date, and units."
 msgstr ""
 
-#: faq/programming.rst:2042
+#: faq/programming.rst:2044
 msgid ""
 "The above example assumes that the *station_id* never changes.  If the "
 "relevant instance attributes are mutable, the *cached_property* approach "
 "can't be made to work because it cannot detect changes to the attributes."
 msgstr ""
 
-#: faq/programming.rst:2047
+#: faq/programming.rst:2049
 msgid ""
 "To make the *lru_cache* approach work when the *station_id* is mutable, the "
 "class needs to define the :meth:`~object.__eq__` and :meth:`~object."
 "__hash__` methods so that the cache can detect relevant attribute updates::"
 msgstr ""
 
-#: faq/programming.rst:2051
+#: faq/programming.rst:2053
 msgid ""
 "class Weather:\n"
 "    \"Example with a mutable station identifier\"\n"
@@ -3089,15 +3088,15 @@ msgid ""
 "        # Depends on the station_id, date, and units."
 msgstr ""
 
-#: faq/programming.rst:2073
+#: faq/programming.rst:2075
 msgid "Modules"
 msgstr ""
 
-#: faq/programming.rst:2076
+#: faq/programming.rst:2078
 msgid "How do I create a .pyc file?"
 msgstr ""
 
-#: faq/programming.rst:2078
+#: faq/programming.rst:2080
 msgid ""
 "When a module is imported for the first time (or when the source file has "
 "changed since the current compiled file was created) a ``.pyc`` file "
@@ -3108,7 +3107,7 @@ msgid ""
 "particular ``python`` binary that created it.  (See :pep:`3147` for details.)"
 msgstr ""
 
-#: faq/programming.rst:2086
+#: faq/programming.rst:2088
 msgid ""
 "One reason that a ``.pyc`` file may not be created is a permissions problem "
 "with the directory containing the source file, meaning that the "
@@ -3117,7 +3116,7 @@ msgid ""
 "testing with a web server."
 msgstr ""
 
-#: faq/programming.rst:2091
+#: faq/programming.rst:2093
 msgid ""
 "Unless the :envvar:`PYTHONDONTWRITEBYTECODE` environment variable is set, "
 "creation of a .pyc file is automatic if you're importing a module and Python "
@@ -3126,7 +3125,7 @@ msgid ""
 "subdirectory."
 msgstr ""
 
-#: faq/programming.rst:2096
+#: faq/programming.rst:2098
 msgid ""
 "Running Python on a top level script is not considered an import and no ``."
 "pyc`` will be created.  For example, if you have a top-level module ``foo."
@@ -3136,33 +3135,33 @@ msgid ""
 "for ``foo`` since ``foo.py`` isn't being imported."
 msgstr ""
 
-#: faq/programming.rst:2103
+#: faq/programming.rst:2105
 msgid ""
 "If you need to create a ``.pyc`` file for ``foo`` -- that is, to create a ``."
 "pyc`` file for a module that is not imported -- you can, using the :mod:"
 "`py_compile` and :mod:`compileall` modules."
 msgstr ""
 
-#: faq/programming.rst:2107
+#: faq/programming.rst:2109
 msgid ""
 "The :mod:`py_compile` module can manually compile any module.  One way is to "
 "use the ``compile()`` function in that module interactively::"
 msgstr ""
 
-#: faq/programming.rst:2110
+#: faq/programming.rst:2112
 msgid ""
 ">>> import py_compile\n"
-">>> py_compile.compile('foo.py')                 "
+">>> py_compile.compile('foo.py')"
 msgstr ""
 
-#: faq/programming.rst:2113
+#: faq/programming.rst:2115
 msgid ""
 "This will write the ``.pyc`` to a ``__pycache__`` subdirectory in the same "
 "location as ``foo.py`` (or you can override that with the optional parameter "
 "``cfile``)."
 msgstr ""
 
-#: faq/programming.rst:2117
+#: faq/programming.rst:2119
 msgid ""
 "You can also automatically compile all files in a directory or directories "
 "using the :mod:`compileall` module.  You can do it from the shell prompt by "
@@ -3170,15 +3169,15 @@ msgid ""
 "Python files to compile::"
 msgstr ""
 
-#: faq/programming.rst:2122
+#: faq/programming.rst:2124
 msgid "python -m compileall ."
 msgstr ""
 
-#: faq/programming.rst:2126
+#: faq/programming.rst:2128
 msgid "How do I find the current module name?"
 msgstr ""
 
-#: faq/programming.rst:2128
+#: faq/programming.rst:2130
 msgid ""
 "A module can find out its own module name by looking at the predefined "
 "global variable ``__name__``.  If this has the value ``'__main__'``, the "
@@ -3187,7 +3186,7 @@ msgid ""
 "only execute this code after checking ``__name__``::"
 msgstr ""
 
-#: faq/programming.rst:2134
+#: faq/programming.rst:2136
 msgid ""
 "def main():\n"
 "    print('Running test...')\n"
@@ -3197,91 +3196,91 @@ msgid ""
 "    main()"
 msgstr ""
 
-#: faq/programming.rst:2143
+#: faq/programming.rst:2145
 msgid "How can I have modules that mutually import each other?"
 msgstr ""
 
-#: faq/programming.rst:2145
+#: faq/programming.rst:2147
 msgid "Suppose you have the following modules:"
 msgstr ""
 
-#: faq/programming.rst:2147
+#: faq/programming.rst:2149
 msgid ":file:`foo.py`::"
 msgstr ""
 
-#: faq/programming.rst:2149
+#: faq/programming.rst:2151
 msgid ""
 "from bar import bar_var\n"
 "foo_var = 1"
 msgstr ""
 
-#: faq/programming.rst:2152
+#: faq/programming.rst:2154
 msgid ":file:`bar.py`::"
 msgstr ""
 
-#: faq/programming.rst:2154
+#: faq/programming.rst:2156
 msgid ""
 "from foo import foo_var\n"
 "bar_var = 2"
 msgstr ""
 
-#: faq/programming.rst:2157
+#: faq/programming.rst:2159
 msgid "The problem is that the interpreter will perform the following steps:"
 msgstr ""
 
-#: faq/programming.rst:2159
+#: faq/programming.rst:2161
 msgid "main imports ``foo``"
 msgstr ""
 
-#: faq/programming.rst:2160
+#: faq/programming.rst:2162
 msgid "Empty globals for ``foo`` are created"
 msgstr ""
 
-#: faq/programming.rst:2161
+#: faq/programming.rst:2163
 msgid "``foo`` is compiled and starts executing"
 msgstr ""
 
-#: faq/programming.rst:2162
+#: faq/programming.rst:2164
 msgid "``foo`` imports ``bar``"
 msgstr ""
 
-#: faq/programming.rst:2163
+#: faq/programming.rst:2165
 msgid "Empty globals for ``bar`` are created"
 msgstr ""
 
-#: faq/programming.rst:2164
+#: faq/programming.rst:2166
 msgid "``bar`` is compiled and starts executing"
 msgstr ""
 
-#: faq/programming.rst:2165
+#: faq/programming.rst:2167
 msgid ""
 "``bar`` imports ``foo`` (which is a no-op since there already is a module "
 "named ``foo``)"
 msgstr ""
 
-#: faq/programming.rst:2166
+#: faq/programming.rst:2168
 msgid ""
 "The import mechanism tries to read ``foo_var`` from ``foo`` globals, to set "
 "``bar.foo_var = foo.foo_var``"
 msgstr ""
 
-#: faq/programming.rst:2168
+#: faq/programming.rst:2170
 msgid ""
 "The last step fails, because Python isn't done with interpreting ``foo`` yet "
 "and the global symbol dictionary for ``foo`` is still empty."
 msgstr ""
 
-#: faq/programming.rst:2171
+#: faq/programming.rst:2173
 msgid ""
 "The same thing happens when you use ``import foo``, and then try to access "
 "``foo.foo_var`` in global code."
 msgstr ""
 
-#: faq/programming.rst:2174
+#: faq/programming.rst:2176
 msgid "There are (at least) three possible workarounds for this problem."
 msgstr ""
 
-#: faq/programming.rst:2176
+#: faq/programming.rst:2178
 msgid ""
 "Guido van Rossum recommends avoiding all uses of ``from <module> import ..."
 "``, and placing all code inside functions.  Initializations of global "
@@ -3290,63 +3289,63 @@ msgid ""
 "``<module>.<name>``."
 msgstr ""
 
-#: faq/programming.rst:2181
+#: faq/programming.rst:2183
 msgid ""
 "Jim Roskind suggests performing steps in the following order in each module:"
 msgstr ""
 
-#: faq/programming.rst:2183
+#: faq/programming.rst:2185
 msgid ""
 "exports (globals, functions, and classes that don't need imported base "
 "classes)"
 msgstr ""
 
-#: faq/programming.rst:2185
+#: faq/programming.rst:2187
 msgid "``import`` statements"
 msgstr ""
 
-#: faq/programming.rst:2186
+#: faq/programming.rst:2188
 msgid ""
 "active code (including globals that are initialized from imported values)."
 msgstr ""
 
-#: faq/programming.rst:2188
+#: faq/programming.rst:2190
 msgid ""
 "Van Rossum doesn't like this approach much because the imports appear in a "
 "strange place, but it does work."
 msgstr ""
 
-#: faq/programming.rst:2191
+#: faq/programming.rst:2193
 msgid ""
 "Matthias Urlichs recommends restructuring your code so that the recursive "
 "import is not necessary in the first place."
 msgstr ""
 
-#: faq/programming.rst:2194
+#: faq/programming.rst:2196
 msgid "These solutions are not mutually exclusive."
 msgstr ""
 
-#: faq/programming.rst:2198
+#: faq/programming.rst:2200
 msgid "__import__('x.y.z') returns <module 'x'>; how do I get z?"
 msgstr ""
 
-#: faq/programming.rst:2200
+#: faq/programming.rst:2202
 msgid ""
 "Consider using the convenience function :func:`~importlib.import_module` "
 "from :mod:`importlib` instead::"
 msgstr ""
 
-#: faq/programming.rst:2203
+#: faq/programming.rst:2205
 msgid "z = importlib.import_module('x.y.z')"
 msgstr ""
 
-#: faq/programming.rst:2207
+#: faq/programming.rst:2209
 msgid ""
 "When I edit an imported module and reimport it, the changes don't show up.  "
 "Why does this happen?"
 msgstr ""
 
-#: faq/programming.rst:2209
+#: faq/programming.rst:2211
 msgid ""
 "For reasons of efficiency as well as consistency, Python only reads the "
 "module file on the first time a module is imported.  If it didn't, in a "
@@ -3355,24 +3354,24 @@ msgid ""
 "re-reading of a changed module, do this::"
 msgstr ""
 
-#: faq/programming.rst:2215
+#: faq/programming.rst:2217
 msgid ""
 "import importlib\n"
 "import modname\n"
 "importlib.reload(modname)"
 msgstr ""
 
-#: faq/programming.rst:2219
+#: faq/programming.rst:2221
 msgid ""
 "Warning: this technique is not 100% fool-proof.  In particular, modules "
 "containing statements like ::"
 msgstr ""
 
-#: faq/programming.rst:2222
+#: faq/programming.rst:2224
 msgid "from modname import some_objects"
 msgstr ""
 
-#: faq/programming.rst:2224
+#: faq/programming.rst:2226
 msgid ""
 "will continue to work with the old version of the imported objects.  If the "
 "module contains class definitions, existing class instances will *not* be "
@@ -3380,7 +3379,7 @@ msgid ""
 "paradoxical behaviour::"
 msgstr ""
 
-#: faq/programming.rst:2229
+#: faq/programming.rst:2231
 msgid ""
 ">>> import importlib\n"
 ">>> import cls\n"
@@ -3391,13 +3390,13 @@ msgid ""
 "False"
 msgstr ""
 
-#: faq/programming.rst:2237
+#: faq/programming.rst:2239
 msgid ""
 "The nature of the problem is made clear if you print out the \"identity\" of "
 "the class objects::"
 msgstr ""
 
-#: faq/programming.rst:2240
+#: faq/programming.rst:2242
 msgid ""
 ">>> hex(id(c.__class__))\n"
 "'0x7352a0'\n"
diff --git a/glossary.po b/glossary.po
index 0dae09fa2..f575cef81 100644
--- a/glossary.po
+++ b/glossary.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: 2022-12-28 16:12-0500\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -288,10 +288,10 @@ msgstr ""
 #, fuzzy
 msgid ""
 "Each :keyword:`yield` temporarily suspends processing, remembering the "
-"location execution state (including local variables and pending try-"
-"statements).  When the *asynchronous generator iterator* effectively resumes "
-"with another awaitable returned by :meth:`~object.__anext__`, it picks up "
-"where it left off.  See :pep:`492` and :pep:`525`."
+"execution state (including local variables and pending try-statements).  "
+"When the *asynchronous generator iterator* effectively resumes with another "
+"awaitable returned by :meth:`~object.__anext__`, it picks up where it left "
+"off.  See :pep:`492` and :pep:`525`."
 msgstr ""
 "Her :keyword:`yield`, konum yürütme durumunu hatırlayarak (yerel değişkenler "
 "ve bekleyen try ifadeleri dahil) işlemeyi geçici olarak askıya alır. "
@@ -1222,11 +1222,12 @@ msgid "An object created by a :term:`generator` function."
 msgstr "Bir :term:`generator` işlevi tarafından oluşturulan bir nesne."
 
 #: glossary.rst:507
+#, fuzzy
 msgid ""
 "Each :keyword:`yield` temporarily suspends processing, remembering the "
-"location execution state (including local variables and pending try-"
-"statements).  When the *generator iterator* resumes, it picks up where it "
-"left off (in contrast to functions which start fresh on every invocation)."
+"execution state (including local variables and pending try-statements).  "
+"When the *generator iterator* resumes, it picks up where it left off (in "
+"contrast to functions which start fresh on every invocation)."
 msgstr ""
 "Her :keyword:`yield`, konum yürütme durumunu hatırlayarak (yerel değişkenler "
 "ve bekleyen try ifadeleri dahil) işlemeyi geçici olarak askıya alır.  "
@@ -1583,8 +1584,8 @@ msgid ""
 "iterables include all sequence types (such as :class:`list`, :class:`str`, "
 "and :class:`tuple`) and some non-sequence types like :class:`dict`, :term:"
 "`file objects <file object>`, and objects of any classes you define with an :"
-"meth:`~iterator.__iter__` method or with a :meth:`~object.__getitem__` "
-"method that implements :term:`sequence` semantics."
+"meth:`~object.__iter__` method or with a :meth:`~object.__getitem__` method "
+"that implements :term:`sequence` semantics."
 msgstr ""
 "Üyelerini teker teker döndürebilen bir nesne. Yineleme örnekleri, tüm dizi "
 "türlerini (:class:`list`, :class:`str`, ve :class:`tuple` gibi) ve :class:"
@@ -1720,7 +1721,7 @@ msgstr ""
 msgid "keyword argument"
 msgstr "anahtar kelime argümanı"
 
-#: glossary.rst:1013
+#: glossary.rst:1024
 msgid "See :term:`argument`."
 msgstr "Bakınız :term:`argument`."
 
@@ -1768,10 +1769,18 @@ msgstr ""
 "sorun, kilitlerle veya EAFP yaklaşımı kullanılarak çözülebilir."
 
 #: glossary.rst:736
+msgid "lexical analyzer"
+msgstr ""
+
+#: glossary.rst:739
+msgid "Formal name for the *tokenizer*; see :term:`token`."
+msgstr ""
+
+#: glossary.rst:740
 msgid "list"
 msgstr "liste"
 
-#: glossary.rst:738
+#: glossary.rst:742
 #, fuzzy
 msgid ""
 "A built-in Python :term:`sequence`.  Despite its name it is more akin to an "
@@ -1782,11 +1791,11 @@ msgstr ""
 "olduğundan, diğer dillerdeki bir diziye, bağlantılı bir listeden daha "
 "yakındır."
 
-#: glossary.rst:741
+#: glossary.rst:745
 msgid "list comprehension"
 msgstr "liste anlama"
 
-#: glossary.rst:743
+#: glossary.rst:747
 msgid ""
 "A compact way to process all or part of the elements in a sequence and "
 "return a list with the results.  ``result = ['{:#04x}'.format(x) for x in "
@@ -1801,39 +1810,41 @@ msgstr ""
 "tümcesi isteğe bağlıdır.  Atlanırsa, \"aralık(256)\" içindeki tüm öğeler "
 "işlenir."
 
-#: glossary.rst:749
+#: glossary.rst:753
 msgid "loader"
 msgstr "yükleyici"
 
-#: glossary.rst:751
+#: glossary.rst:755
 #, fuzzy
 msgid ""
-"An object that loads a module. It must define a method named :meth:"
-"`load_module`. A loader is typically returned by a :term:`finder`. See also:"
+"An object that loads a module. It must define the :meth:`!exec_module` and :"
+"meth:`!create_module` methods to implement the :class:`~importlib.abc."
+"Loader` interface. A loader is typically returned by a :term:`finder`. See "
+"also:"
 msgstr ""
 "Modül yükleyen bir nesne. :meth:`load_module` adında bir yöntem "
 "tanımlamalıdır. Bir yükleyici genellikle bir :term:`finder` ile döndürülür. "
 "Ayrıntılar için :pep:`302` ve bir :term:`soyut temel sınıf` için :class:"
 "`importlib.abc.Loader` bölümüne bakın."
 
-#: glossary.rst:755
+#: glossary.rst:761
 msgid ":ref:`finders-and-loaders`"
 msgstr ""
 
-#: glossary.rst:756
+#: glossary.rst:762
 msgid ":class:`importlib.abc.Loader`"
 msgstr ""
 
-#: glossary.rst:757
+#: glossary.rst:763
 #, fuzzy
 msgid ":pep:`302`"
 msgstr "Bakınız :pep:`1`."
 
-#: glossary.rst:758
+#: glossary.rst:764
 msgid "locale encoding"
 msgstr "yerel kodlama"
 
-#: glossary.rst:760
+#: glossary.rst:766
 msgid ""
 "On Unix, it is the encoding of the LC_CTYPE locale. It can be set with :func:"
 "`locale.setlocale(locale.LC_CTYPE, new_locale) <locale.setlocale>`."
@@ -1841,38 +1852,38 @@ msgstr ""
 "Unix'te, LC_CTYPE yerel ayarının kodlamasıdır. :func:`locale."
 "setlocale(locale.LC_CTYPE, new_locale) <locale.setlocale>` ile ayarlanabilir."
 
-#: glossary.rst:763
+#: glossary.rst:769
 msgid "On Windows, it is the ANSI code page (ex: ``\"cp1252\"``)."
 msgstr "Windows'ta bu, ANSI kod sayfasıdır (ör. ``\"cp1252\"``)."
 
-#: glossary.rst:765
+#: glossary.rst:771
 msgid ""
 "On Android and VxWorks, Python uses ``\"utf-8\"`` as the locale encoding."
 msgstr ""
 "Android ve VxWorks'te Python, yerel kodlama olarak ``\"utf-8\"`` kullanır."
 
-#: glossary.rst:767
+#: glossary.rst:773
 #, fuzzy
 msgid ":func:`locale.getencoding` can be used to get the locale encoding."
 msgstr "Yerel kodlamayı almak için ``locale.getencoding()`` kullanılabilir."
 
-#: glossary.rst:769
+#: glossary.rst:775
 msgid "See also the :term:`filesystem encoding and error handler`."
 msgstr "Ayrıca :term:`filesystem encoding and error handler` 'ne bakın."
 
-#: glossary.rst:770
+#: glossary.rst:776
 msgid "magic method"
 msgstr "sihirli yöntem"
 
-#: glossary.rst:774
+#: glossary.rst:780
 msgid "An informal synonym for :term:`special method`."
 msgstr ":term:`special method` için gayri resmi bir eşanlamlı."
 
-#: glossary.rst:775
+#: glossary.rst:781
 msgid "mapping"
 msgstr "haritalama"
 
-#: glossary.rst:777
+#: glossary.rst:783
 msgid ""
 "A container object that supports arbitrary key lookups and implements the "
 "methods specified in the :class:`collections.abc.Mapping` or :class:"
@@ -1887,11 +1898,11 @@ msgstr ""
 "Örnekler arasında :class:`dict`, :class:`collections.defaultdict`, :class:"
 "`collections.OrderedDict` ve :class:`collections.Counter` sayılabilir."
 
-#: glossary.rst:783
+#: glossary.rst:789
 msgid "meta path finder"
 msgstr "meta yol bulucu"
 
-#: glossary.rst:785
+#: glossary.rst:791
 msgid ""
 "A :term:`finder` returned by a search of :data:`sys.meta_path`.  Meta path "
 "finders are related to, but different from :term:`path entry finders <path "
@@ -1901,7 +1912,7 @@ msgstr ""
 "bulucular, :term:`yol girişi bulucuları <path entry finder>` ile "
 "ilişkilidir, ancak onlardan farklıdır."
 
-#: glossary.rst:789
+#: glossary.rst:795
 msgid ""
 "See :class:`importlib.abc.MetaPathFinder` for the methods that meta path "
 "finders implement."
@@ -1909,11 +1920,11 @@ msgstr ""
 "Meta yol bulucuların uyguladığı yöntemler için :class:`importlib.abc."
 "MetaPathFinder` bölümüne bakın."
 
-#: glossary.rst:791
+#: glossary.rst:797
 msgid "metaclass"
 msgstr "metasınıf"
 
-#: glossary.rst:793
+#: glossary.rst:799
 msgid ""
 "The class of a class.  Class definitions create a class name, a class "
 "dictionary, and a list of base classes.  The metaclass is responsible for "
@@ -1935,15 +1946,15 @@ msgstr ""
 "parçacığı güvenliği eklemek, nesne oluşturmayı izlemek, tekilleri uygulamak "
 "ve diğer birçok görev için kullanılmışlardır."
 
-#: glossary.rst:803
+#: glossary.rst:809
 msgid "More information can be found in :ref:`metaclasses`."
 msgstr "Daha fazla bilgi :ref:`metaclasses` içinde bulunabilir."
 
-#: glossary.rst:1154
+#: glossary.rst:1165
 msgid "method"
 msgstr "metot"
 
-#: glossary.rst:806
+#: glossary.rst:812
 msgid ""
 "A function which is defined inside a class body.  If called as an attribute "
 "of an instance of that class, the method will get the instance object as its "
@@ -1955,11 +1966,11 @@ msgstr ""
 "(genellikle ``self`` olarak adlandırılır) olarak alır. Bkz. :term:`function` "
 "ve :term:`nested scope`."
 
-#: glossary.rst:810
+#: glossary.rst:816
 msgid "method resolution order"
 msgstr "metot kalite sıralaması"
 
-#: glossary.rst:812
+#: glossary.rst:818
 #, fuzzy
 msgid ""
 "Method Resolution Order is the order in which base classes are searched for "
@@ -1971,11 +1982,11 @@ msgstr ""
 "algoritmanın ayrıntıları için bkz. `The Python 2.3 Method Resolution Order "
 "<https://www.python.org/download/releases/2.3/mro/>`_."
 
-#: glossary.rst:815
+#: glossary.rst:821
 msgid "module"
 msgstr "modül"
 
-#: glossary.rst:817
+#: glossary.rst:823
 msgid ""
 "An object that serves as an organizational unit of Python code.  Modules "
 "have a namespace containing arbitrary Python objects.  Modules are loaded "
@@ -1985,15 +1996,15 @@ msgstr ""
 "rastgele Python nesneleri içeren bir ad alanına sahiptir. Modüller, :term:"
 "`importing` işlemiyle Python'a yüklenir."
 
-#: glossary.rst:821
+#: glossary.rst:827
 msgid "See also :term:`package`."
 msgstr "Ayrıca bakınız :term:`package`."
 
-#: glossary.rst:822
+#: glossary.rst:828
 msgid "module spec"
 msgstr "modül özelliği"
 
-#: glossary.rst:824
+#: glossary.rst:830
 msgid ""
 "A namespace containing the import-related information used to load a module. "
 "An instance of :class:`importlib.machinery.ModuleSpec`."
@@ -2001,24 +2012,24 @@ msgstr ""
 "Bir modülü yüklemek için kullanılan içe aktarmayla ilgili bilgileri içeren "
 "bir ad alanı. Bir :class:`importlib.machinery.ModuleSpec` örneği."
 
-#: glossary.rst:827
+#: glossary.rst:833
 #, fuzzy
 msgid "See also :ref:`module-specs`."
 msgstr "Ayrıca bkz. :term:`module`."
 
-#: glossary.rst:828
+#: glossary.rst:834
 msgid "MRO"
 msgstr "MRO"
 
-#: glossary.rst:830
+#: glossary.rst:836
 msgid "See :term:`method resolution order`."
 msgstr "Bakınız :term:`metot çözüm sırası <method resolution order>`."
 
-#: glossary.rst:831
+#: glossary.rst:837
 msgid "mutable"
 msgstr "değiştirilebilir"
 
-#: glossary.rst:833
+#: glossary.rst:839
 msgid ""
 "Mutable objects can change their value but keep their :func:`id`.  See also :"
 "term:`immutable`."
@@ -2026,11 +2037,11 @@ msgstr ""
 "Değiştirilebilir (mutable) nesneler değerlerini değiştirebilir ancak :func:"
 "`idlerini <id>` koruyabilirler. Ayrıca bkz. :term:`immutable`."
 
-#: glossary.rst:835
+#: glossary.rst:841
 msgid "named tuple"
 msgstr "adlandırılmış demet"
 
-#: glossary.rst:837
+#: glossary.rst:843
 msgid ""
 "The term \"named tuple\" applies to any type or class that inherits from "
 "tuple and whose indexable elements are also accessible using named "
@@ -2040,7 +2051,7 @@ msgstr ""
 "adlandırılmış nitelikler kullanılarak erişilebilen herhangi bir tür veya "
 "sınıf için geçerlidir. Tür veya sınıfın başka özellikleri de olabilir."
 
-#: glossary.rst:841
+#: glossary.rst:847
 msgid ""
 "Several built-in types are named tuples, including the values returned by :"
 "func:`time.localtime` and :func:`os.stat`.  Another example is :data:`sys."
@@ -2050,7 +2061,7 @@ msgstr ""
 "tarafından döndürülen değerler de dahil olmak üzere, tanımlama grupları "
 "olarak adlandırılır. Başka bir örnek :data:`sys.float_info`::"
 
-#: glossary.rst:845
+#: glossary.rst:851
 msgid ""
 ">>> sys.float_info[1]                   # indexed access\n"
 "1024\n"
@@ -2060,7 +2071,7 @@ msgid ""
 "True"
 msgstr ""
 
-#: glossary.rst:852
+#: glossary.rst:858
 #, fuzzy
 msgid ""
 "Some named tuples are built-in types (such as the above examples). "
@@ -2079,11 +2090,11 @@ msgstr ""
 "yazılmış veya yerleşik adlandırılmış demetlerde bulunmayan bazı ekstra "
 "yöntemler ekler."
 
-#: glossary.rst:860
+#: glossary.rst:866
 msgid "namespace"
 msgstr "ad alanı"
 
-#: glossary.rst:862
+#: glossary.rst:868
 msgid ""
 "The place where a variable is stored.  Namespaces are implemented as "
 "dictionaries.  There are the local, global and built-in namespaces as well "
@@ -2105,31 +2116,43 @@ msgstr ""
 "yazmak, bu işlevlerin sırasıyla :mod:`random` ve :mod:`itertools` modülleri "
 "tarafından uygulandığını açıkça gösterir."
 
-#: glossary.rst:872
+#: glossary.rst:878
 msgid "namespace package"
 msgstr "ad alanı paketi"
 
-#: glossary.rst:874
+#: glossary.rst:880
+#, fuzzy
 msgid ""
-"A :pep:`420` :term:`package` which serves only as a container for "
-"subpackages.  Namespace packages may have no physical representation, and "
-"specifically are not like a :term:`regular package` because they have no "
-"``__init__.py`` file."
+"A :term:`package` which serves only as a container for subpackages. "
+"Namespace packages may have no physical representation, and specifically are "
+"not like a :term:`regular package` because they have no ``__init__.py`` file."
 msgstr ""
 "A :pep:`420` :term:`package`, yalnızca alt paketler için bir kap olarak "
 "hizmet eder. Ad alanı paketlerinin hiçbir fiziksel temsili olmayabilir ve "
 "``__init__.py`` dosyası olmadığından özellikle :term:`regular package` gibi "
 "değildirler."
 
-#: glossary.rst:879
+#: glossary.rst:885
+msgid ""
+"Namespace packages allow several individually installable packages to have a "
+"common parent package. Otherwise, it is recommended to use a :term:`regular "
+"package`."
+msgstr ""
+
+#: glossary.rst:888
+msgid ""
+"For more information, see :pep:`420` and :ref:`reference-namespace-package`."
+msgstr ""
+
+#: glossary.rst:890
 msgid "See also :term:`module`."
 msgstr "Ayrıca bkz. :term:`module`."
 
-#: glossary.rst:880
+#: glossary.rst:891
 msgid "nested scope"
 msgstr "iç içe kapsam"
 
-#: glossary.rst:882
+#: glossary.rst:893
 msgid ""
 "The ability to refer to a variable in an enclosing definition.  For "
 "instance, a function defined inside another function can refer to variables "
@@ -2146,11 +2169,11 @@ msgstr ""
 "global değişkenler global ad alanını okur ve yazar. :keyword:`nonlocal`, dış "
 "kapsamlara yazmaya izin verir."
 
-#: glossary.rst:889
+#: glossary.rst:900
 msgid "new-style class"
 msgstr "yeni stil sınıf"
 
-#: glossary.rst:891
+#: glossary.rst:902
 #, fuzzy
 msgid ""
 "Old name for the flavor of classes now used for all class objects.  In "
@@ -2164,11 +2187,11 @@ msgstr ""
 "sınıf yöntemleri ve statik yöntemler gibi daha yeni, çok yönlü özelliklerini "
 "kullanabilirdi."
 
-#: glossary.rst:896
+#: glossary.rst:907
 msgid "object"
 msgstr "obje"
 
-#: glossary.rst:898
+#: glossary.rst:909
 msgid ""
 "Any data with state (attributes or value) and defined behavior (methods).  "
 "Also the ultimate base class of any :term:`new-style class`."
@@ -2177,11 +2200,11 @@ msgstr ""
 "herhangi bir veri. Ayrıca herhangi bir :term:`yeni tarz sınıfın <new-style "
 "class>` nihai temel sınıfı."
 
-#: glossary.rst:901
+#: glossary.rst:912
 msgid "package"
 msgstr "paket"
 
-#: glossary.rst:903
+#: glossary.rst:914
 msgid ""
 "A Python :term:`module` which can contain submodules or recursively, "
 "subpackages.  Technically, a package is a Python module with a ``__path__`` "
@@ -2191,15 +2214,15 @@ msgstr ""
 "`module`. Teknik olarak bir paket, ``__path__`` özniteliğine sahip bir "
 "Python modülüdür."
 
-#: glossary.rst:907
+#: glossary.rst:918
 msgid "See also :term:`regular package` and :term:`namespace package`."
 msgstr "Ayrıca bkz. :term:`regular package` ve :term:`namespace package`."
 
-#: glossary.rst:908
+#: glossary.rst:919
 msgid "parameter"
 msgstr "parametre"
 
-#: glossary.rst:910
+#: glossary.rst:921
 msgid ""
 "A named entity in a :term:`function` (or method) definition that specifies "
 "an :term:`argument` (or in some cases, arguments) that the function can "
@@ -2209,7 +2232,7 @@ msgstr ""
 "term:`argument` (veya bazı durumlarda, argümanlar) belirten adlandırılmış "
 "bir varlık.  Beş çeşit parametre vardır:"
 
-#: glossary.rst:914
+#: glossary.rst:925
 msgid ""
 ":dfn:`positional-or-keyword`: specifies an argument that can be passed "
 "either :term:`positionally <argument>` or as a :term:`keyword argument "
@@ -2220,11 +2243,11 @@ msgstr ""
 "`keyword argümanı <argument>` olarak iletilebilen bir argüman belirtir. Bu, "
 "varsayılan parametre türüdür, örneğin aşağıdakilerde *foo* ve *bar*::"
 
-#: glossary.rst:919
+#: glossary.rst:930
 msgid "def func(foo, bar=None): ..."
 msgstr ""
 
-#: glossary.rst:923
+#: glossary.rst:934
 msgid ""
 ":dfn:`positional-only`: specifies an argument that can be supplied only by "
 "position. Positional-only parameters can be defined by including a ``/`` "
@@ -2236,11 +2259,11 @@ msgstr ""
 "parametre listesine bir ``/`` karakteri eklenerek tanımlanabilir, örneğin "
 "aşağıdakilerde *posonly1* ve *posonly2*::"
 
-#: glossary.rst:928
+#: glossary.rst:939
 msgid "def func(posonly1, posonly2, /, positional_or_keyword): ..."
 msgstr ""
 
-#: glossary.rst:932
+#: glossary.rst:943
 msgid ""
 ":dfn:`keyword-only`: specifies an argument that can be supplied only by "
 "keyword.  Keyword-only parameters can be defined by including a single var-"
@@ -2254,11 +2277,11 @@ msgstr ""
 "parametre veya çıplak ``*`` dahil edilerek tanımlanabilir, örneğin "
 "aşağıdakilerde *kw_only1* ve *kw_only2*::"
 
-#: glossary.rst:938
+#: glossary.rst:949
 msgid "def func(arg, *, kw_only1, kw_only2): ..."
 msgstr ""
 
-#: glossary.rst:940
+#: glossary.rst:951
 msgid ""
 ":dfn:`var-positional`: specifies that an arbitrary sequence of positional "
 "arguments can be provided (in addition to any positional arguments already "
@@ -2272,11 +2295,11 @@ msgstr ""
 "parametre adının başına ``*`` eklenerek tanımlanabilir, örneğin "
 "aşağıdakilerde *args*::"
 
-#: glossary.rst:946
+#: glossary.rst:957
 msgid "def func(*args, **kwargs): ..."
 msgstr ""
 
-#: glossary.rst:948
+#: glossary.rst:959
 msgid ""
 ":dfn:`var-keyword`: specifies that arbitrarily many keyword arguments can be "
 "provided (in addition to any keyword arguments already accepted by other "
@@ -2289,7 +2312,7 @@ msgstr ""
 "parametre adının başına ``**``, örneğin yukarıdaki örnekte *kwargs* "
 "eklenerek tanımlanabilir."
 
-#: glossary.rst:954
+#: glossary.rst:965
 msgid ""
 "Parameters can specify both optional and required arguments, as well as "
 "default values for some optional arguments."
@@ -2297,7 +2320,7 @@ msgstr ""
 "Parametreler, hem isteğe bağlı hem de gerekli argümanleri ve ayrıca bazı "
 "isteğe bağlı bağımsız değişkenler için varsayılan değerleri belirtebilir."
 
-#: glossary.rst:957
+#: glossary.rst:968
 msgid ""
 "See also the :term:`argument` glossary entry, the FAQ question on :ref:`the "
 "difference between arguments and parameters <faq-argument-vs-parameter>`, "
@@ -2308,11 +2331,11 @@ msgstr ""
 "arasındaki fark <faq-argument-vs-parameter>`, :class:`inspect.Parameter`, :"
 "ref:`function` ve :pep:`362`."
 
-#: glossary.rst:961
+#: glossary.rst:972
 msgid "path entry"
 msgstr "yol girişi"
 
-#: glossary.rst:963
+#: glossary.rst:974
 msgid ""
 "A single location on the :term:`import path` which the :term:`path based "
 "finder` consults to find modules for importing."
@@ -2320,11 +2343,11 @@ msgstr ""
 ":term:`path based finder` içe aktarma modüllerini bulmak için başvurduğu :"
 "term:`import path` üzerindeki tek bir konum."
 
-#: glossary.rst:965
+#: glossary.rst:976
 msgid "path entry finder"
 msgstr "yol girişi bulucu"
 
-#: glossary.rst:967
+#: glossary.rst:978
 msgid ""
 "A :term:`finder` returned by a callable on :data:`sys.path_hooks` (i.e. a :"
 "term:`path entry hook`) which knows how to locate modules given a :term:"
@@ -2334,7 +2357,7 @@ msgstr ""
 "kancası`) üzerinde bir çağrılabilir tarafından döndürülür ve :term:`path "
 "entry` verilen modüllerin nasıl bulunacağını bilir."
 
-#: glossary.rst:971
+#: glossary.rst:982
 msgid ""
 "See :class:`importlib.abc.PathEntryFinder` for the methods that path entry "
 "finders implement."
@@ -2342,11 +2365,11 @@ msgstr ""
 "Yol girişi bulucularının uyguladığı yöntemler için :class:`importlib.abc."
 "PathEntryFinder` bölümüne bakın."
 
-#: glossary.rst:973
+#: glossary.rst:984
 msgid "path entry hook"
 msgstr "yol giriş kancası"
 
-#: glossary.rst:975
+#: glossary.rst:986
 #, fuzzy
 msgid ""
 "A callable on the :data:`sys.path_hooks` list which returns a :term:`path "
@@ -2357,11 +2380,11 @@ msgstr ""
 "entry>` modülleri nasıl bulacağını biliyorsa, bir :term:`yol girişi bulucu "
 "<path entry finder>` döndüren bir çağrılabilir."
 
-#: glossary.rst:978
+#: glossary.rst:989
 msgid "path based finder"
 msgstr "yol tabanlı bulucu"
 
-#: glossary.rst:980
+#: glossary.rst:991
 msgid ""
 "One of the default :term:`meta path finders <meta path finder>` which "
 "searches an :term:`import path` for modules."
@@ -2369,11 +2392,11 @@ msgstr ""
 "Modüller için bir :term:`import path` arayan varsayılan :term:`meta yol "
 "buluculardan <meta path finder>` biri."
 
-#: glossary.rst:982
+#: glossary.rst:993
 msgid "path-like object"
 msgstr "yol benzeri nesne"
 
-#: glossary.rst:984
+#: glossary.rst:995
 msgid ""
 "An object representing a file system path. A path-like object is either a :"
 "class:`str` or :class:`bytes` object representing a path, or an object "
@@ -2393,11 +2416,11 @@ msgstr ""
 "veya :class:`bytes` sonucunu garanti etmek için kullanılabilir. :pep:`519` "
 "tarafından tanıtıldı."
 
-#: glossary.rst:992
+#: glossary.rst:1003
 msgid "PEP"
 msgstr "PEP"
 
-#: glossary.rst:994
+#: glossary.rst:1005
 msgid ""
 "Python Enhancement Proposal. A PEP is a design document providing "
 "information to the Python community, or describing a new feature for Python "
@@ -2409,7 +2432,7 @@ msgstr ""
 "tasarım belgesidir. PEP'ler, önerilen özellikler için özlü bir teknik "
 "şartname ve bir gerekçe sağlamalıdır."
 
-#: glossary.rst:1000
+#: glossary.rst:1011
 msgid ""
 "PEPs are intended to be the primary mechanisms for proposing major new "
 "features, for collecting community input on an issue, and for documenting "
@@ -2422,15 +2445,15 @@ msgstr ""
 "birincil mekanizmalar olması amaçlanmıştır. PEP yazarı, topluluk içinde "
 "fikir birliği oluşturmaktan ve muhalif görüşleri belgelemekten sorumludur."
 
-#: glossary.rst:1006
+#: glossary.rst:1017
 msgid "See :pep:`1`."
 msgstr "Bakınız :pep:`1`."
 
-#: glossary.rst:1007
+#: glossary.rst:1018
 msgid "portion"
 msgstr "kısım"
 
-#: glossary.rst:1009
+#: glossary.rst:1020
 msgid ""
 "A set of files in a single directory (possibly stored in a zip file) that "
 "contribute to a namespace package, as defined in :pep:`420`."
@@ -2438,15 +2461,15 @@ msgstr ""
 ":pep:`420` içinde tanımlandığı gibi, bir ad alanı paketine katkıda bulunan "
 "tek bir dizindeki (muhtemelen bir zip dosyasında depolanan) bir dizi dosya."
 
-#: glossary.rst:1011
+#: glossary.rst:1022
 msgid "positional argument"
 msgstr "konumsal argüman"
 
-#: glossary.rst:1014
+#: glossary.rst:1025
 msgid "provisional API"
 msgstr "geçici API"
 
-#: glossary.rst:1016
+#: glossary.rst:1027
 msgid ""
 "A provisional API is one which has been deliberately excluded from the "
 "standard library's backwards compatibility guarantees.  While major changes "
@@ -2465,7 +2488,7 @@ msgstr ""
 "yalnızca API'nin eklenmesinden önce gözden kaçan ciddi temel kusurlar ortaya "
 "çıkarsa gerçekleşecektir."
 
-#: glossary.rst:1025
+#: glossary.rst:1036
 msgid ""
 "Even for provisional APIs, backwards incompatible changes are seen as a "
 "\"solution of last resort\" - every attempt will still be made to find a "
@@ -2475,7 +2498,7 @@ msgstr ""
 "çözümü\" olarak görülür - tanımlanan herhangi bir soruna geriye dönük uyumlu "
 "bir çözüm bulmak için her türlü girişimde bulunulacaktır."
 
-#: glossary.rst:1029
+#: glossary.rst:1040
 msgid ""
 "This process allows the standard library to continue to evolve over time, "
 "without locking in problematic design errors for extended periods of time.  "
@@ -2485,19 +2508,19 @@ msgstr ""
 "hatalarına kilitlenmeden zaman içinde gelişmeye devam etmesini sağlar. Daha "
 "fazla ayrıntı için bkz. :pep:`411`."
 
-#: glossary.rst:1032
+#: glossary.rst:1043
 msgid "provisional package"
 msgstr "geçici paket"
 
-#: glossary.rst:1034
+#: glossary.rst:1045
 msgid "See :term:`provisional API`."
 msgstr "Bakınız :term:`provisional API`."
 
-#: glossary.rst:1035
+#: glossary.rst:1046
 msgid "Python 3000"
 msgstr "Python 3000"
 
-#: glossary.rst:1037
+#: glossary.rst:1048
 msgid ""
 "Nickname for the Python 3.x release line (coined long ago when the release "
 "of version 3 was something in the distant future.)  This is also abbreviated "
@@ -2507,11 +2530,11 @@ msgstr ""
 "sürülmesi uzak bir gelecekte olduğu zaman ortaya çıktı.) Bu aynı zamanda "
 "\"Py3k\" olarak da kısaltılır."
 
-#: glossary.rst:1040
+#: glossary.rst:1051
 msgid "Pythonic"
 msgstr "Pythonic"
 
-#: glossary.rst:1042
+#: glossary.rst:1053
 msgid ""
 "An idea or piece of code which closely follows the most common idioms of the "
 "Python language, rather than implementing code using concepts common to "
@@ -2527,27 +2550,27 @@ msgstr ""
 "oluşturmaktır. Diğer birçok dilde bu tür bir yapı yoktur, bu nedenle "
 "Python'a aşina olmayan kişiler bazen bunun yerine sayısal bir sayaç kullanır:"
 
-#: glossary.rst:1049
+#: glossary.rst:1060
 msgid ""
 "for i in range(len(food)):\n"
 "    print(food[i])"
 msgstr ""
 
-#: glossary.rst:1052
+#: glossary.rst:1063
 msgid "As opposed to the cleaner, Pythonic method::"
 msgstr "Temizleyicinin aksine, Pythonic yöntemi::"
 
-#: glossary.rst:1054
+#: glossary.rst:1065
 msgid ""
 "for piece in food:\n"
 "    print(piece)"
 msgstr ""
 
-#: glossary.rst:1056
+#: glossary.rst:1067
 msgid "qualified name"
 msgstr "nitelikli isim"
 
-#: glossary.rst:1058
+#: glossary.rst:1069
 msgid ""
 "A dotted name showing the \"path\" from a module's global scope to a class, "
 "function or method defined in that module, as defined in :pep:`3155`.  For "
@@ -2559,7 +2582,7 @@ msgstr ""
 "noktalı ad. Üst düzey işlevler ve sınıflar için nitelikli ad, nesnenin "
 "adıyla aynıdır::"
 
-#: glossary.rst:1063
+#: glossary.rst:1074
 msgid ""
 ">>> class C:\n"
 "...     class D:\n"
@@ -2574,7 +2597,7 @@ msgid ""
 "'C.D.meth'"
 msgstr ""
 
-#: glossary.rst:1075
+#: glossary.rst:1086
 msgid ""
 "When used to refer to modules, the *fully qualified name* means the entire "
 "dotted path to the module, including any parent packages, e.g. ``email.mime."
@@ -2584,18 +2607,18 @@ msgstr ""
 "herhangi bir üst paket de dahil olmak üzere, modüle giden tüm noktalı yol "
 "anlamına gelir, örn. ``email.mime.text``::"
 
-#: glossary.rst:1079
+#: glossary.rst:1090
 msgid ""
 ">>> import email.mime.text\n"
 ">>> email.mime.text.__name__\n"
 "'email.mime.text'"
 msgstr ""
 
-#: glossary.rst:1082
+#: glossary.rst:1093
 msgid "reference count"
 msgstr "referans sayısı"
 
-#: glossary.rst:1084
+#: glossary.rst:1095
 #, fuzzy
 msgid ""
 "The number of references to an object.  When the reference count of an "
@@ -2612,26 +2635,26 @@ msgstr ""
 "öğesidir. Programcılar, belirli bir nesne için başvuru sayısını döndürmek "
 "için :func:`sys.getrefcount` işlevini çağırabilir."
 
-#: glossary.rst:1092
+#: glossary.rst:1103
 msgid "regular package"
 msgstr "sürekli paketleme"
 
-#: glossary.rst:1094
+#: glossary.rst:1105
 msgid ""
 "A traditional :term:`package`, such as a directory containing an ``__init__."
 "py`` file."
 msgstr ""
 "``__init__.py`` dosyası içeren bir dizin gibi geleneksel bir :term:`package`."
 
-#: glossary.rst:1097
+#: glossary.rst:1108
 msgid "See also :term:`namespace package`."
 msgstr "Ayrıca bkz. :term:`ad alanı paketi`."
 
-#: glossary.rst:1098
+#: glossary.rst:1109
 msgid "__slots__"
 msgstr "__slots__"
 
-#: glossary.rst:1100
+#: glossary.rst:1111
 msgid ""
 "A declaration inside a class that saves memory by pre-declaring space for "
 "instance attributes and eliminating instance dictionaries.  Though popular, "
@@ -2645,11 +2668,11 @@ msgstr ""
 "açısından kritik bir uygulamada çok sayıda örneğin bulunduğu nadir durumlar "
 "için ayrılmıştır."
 
-#: glossary.rst:1105
+#: glossary.rst:1116
 msgid "sequence"
 msgstr "dizi"
 
-#: glossary.rst:1107
+#: glossary.rst:1118
 #, fuzzy
 msgid ""
 "An :term:`iterable` which supports efficient element access using integer "
@@ -2670,7 +2693,7 @@ msgstr ""
 "`immutable` anahtarları kullandığından bir diziden ziyade bir eşleme olarak "
 "kabul edilir."
 
-#: glossary.rst:1116
+#: glossary.rst:1127
 #, fuzzy
 msgid ""
 "The :class:`collections.abc.Sequence` abstract base class defines a much "
@@ -2687,11 +2710,11 @@ msgstr ""
 "arayüzü tanımlar. Bu genişletilmiş arabirimi uygulayan türler, :func:`~abc."
 "ABCMeta.register` kullanılarak açıkça kaydedilebilir."
 
-#: glossary.rst:1125
+#: glossary.rst:1136
 msgid "set comprehension"
 msgstr "anlamak"
 
-#: glossary.rst:1127
+#: glossary.rst:1138
 msgid ""
 "A compact way to process all or part of the elements in an iterable and "
 "return a set with the results. ``results = {c for c in 'abracadabra' if c "
@@ -2703,11 +2726,11 @@ msgstr ""
 "for c in 'abracadabra' if c not in 'abc'}``, ``{'r', 'd'}`` dizelerini "
 "oluşturur. Bakınız :ref:`comprehensions`."
 
-#: glossary.rst:1131
+#: glossary.rst:1142
 msgid "single dispatch"
 msgstr "tek sevk"
 
-#: glossary.rst:1133
+#: glossary.rst:1144
 msgid ""
 "A form of :term:`generic function` dispatch where the implementation is "
 "chosen based on the type of a single argument."
@@ -2715,11 +2738,11 @@ msgstr ""
 "Uygulamanın tek bir argüman türüne göre seçildiği bir :term:`generic "
 "function` gönderimi biçimi."
 
-#: glossary.rst:1135
+#: glossary.rst:1146
 msgid "slice"
 msgstr "parçalamak"
 
-#: glossary.rst:1137
+#: glossary.rst:1148
 msgid ""
 "An object usually containing a portion of a :term:`sequence`.  A slice is "
 "created using the subscript notation, ``[]`` with colons between numbers "
@@ -2732,34 +2755,34 @@ msgstr ""
 "gösterimi kullanılarak oluşturulur. Köşeli ayraç (alt simge) gösterimi, "
 "dahili olarak :class:`slice` nesnelerini kullanır."
 
-#: glossary.rst:1141
+#: glossary.rst:1152
 msgid "soft deprecated"
 msgstr ""
 
-#: glossary.rst:1143
+#: glossary.rst:1154
 msgid ""
 "A soft deprecated API should not be used in new code, but it is safe for "
 "already existing code to use it. The API remains documented and tested, but "
 "will not be enhanced further."
 msgstr ""
 
-#: glossary.rst:1147
+#: glossary.rst:1158
 msgid ""
 "Soft deprecation, unlike normal deprecation, does not plan on removing the "
 "API and will not emit warnings."
 msgstr ""
 
-#: glossary.rst:1150
+#: glossary.rst:1161
 msgid ""
 "See `PEP 387: Soft Deprecation <https://peps.python.org/pep-0387/#soft-"
 "deprecation>`_."
 msgstr ""
 
-#: glossary.rst:1152
+#: glossary.rst:1163
 msgid "special method"
 msgstr "özel metod"
 
-#: glossary.rst:1156
+#: glossary.rst:1167
 msgid ""
 "A method that is called implicitly by Python to execute a certain operation "
 "on a type, such as addition.  Such methods have names starting and ending "
@@ -2771,11 +2794,11 @@ msgstr ""
 "çizgi ile başlayan ve biten adları vardır. Özel yöntemler :ref:"
 "`specialnames` içinde belgelenmiştir."
 
-#: glossary.rst:1160
+#: glossary.rst:1171
 msgid "statement"
 msgstr "ifade (değer döndürmez)"
 
-#: glossary.rst:1162
+#: glossary.rst:1173
 msgid ""
 "A statement is part of a suite (a \"block\" of code).  A statement is either "
 "an :term:`expression` or one of several constructs with a keyword, such as :"
@@ -2785,22 +2808,22 @@ msgstr ""
 "`expression` veya :keyword:`if`, :keyword:`while` veya :keyword:`for` gibi "
 "bir anahtar kelimeye sahip birkaç yapıdan biridir."
 
-#: glossary.rst:1165
+#: glossary.rst:1176
 msgid "static type checker"
 msgstr ""
 
-#: glossary.rst:1167
+#: glossary.rst:1178
 msgid ""
 "An external tool that reads Python code and analyzes it, looking for issues "
 "such as incorrect types. See also :term:`type hints <type hint>` and the :"
 "mod:`typing` module."
 msgstr ""
 
-#: glossary.rst:1170
+#: glossary.rst:1181
 msgid "strong reference"
 msgstr "güçlü referans"
 
-#: glossary.rst:1172
+#: glossary.rst:1183
 #, fuzzy
 msgid ""
 "In Python's C API, a strong reference is a reference to an object which is "
@@ -2812,7 +2835,7 @@ msgstr ""
 "referans sayısını artıran ve silindiğinde nesnenin referans sayısını azaltan "
 "bir nesneye yapılan referanstır."
 
-#: glossary.rst:1178
+#: glossary.rst:1189
 msgid ""
 "The :c:func:`Py_NewRef` function can be used to create a strong reference to "
 "an object. Usually, the :c:func:`Py_DECREF` function must be called on the "
@@ -2824,15 +2847,15 @@ msgstr ""
 "referansın sızmasını önlemek için güçlü referans kapsamından çıkmadan önce "
 "güçlü referansta çağrılmalıdır."
 
-#: glossary.rst:1183
+#: glossary.rst:1194
 msgid "See also :term:`borrowed reference`."
 msgstr "Ayrıca bkz. :term:`ödünç alınan referans <borrowed reference>`."
 
-#: glossary.rst:1184
+#: glossary.rst:1195
 msgid "text encoding"
 msgstr "yazı çözümleme"
 
-#: glossary.rst:1186
+#: glossary.rst:1197
 msgid ""
 "A string in Python is a sequence of Unicode code points (in range "
 "``U+0000``--``U+10FFFF``). To store or transfer a string, it needs to be "
@@ -2842,7 +2865,7 @@ msgstr ""
 "``U+10FFFF`` aralığında). Bir dizeyi depolamak veya aktarmak için, bir bayt "
 "dizisi olarak seri hale getirilmesi gerekir."
 
-#: glossary.rst:1190
+#: glossary.rst:1201
 msgid ""
 "Serializing a string into a sequence of bytes is known as \"encoding\", and "
 "recreating the string from the sequence of bytes is known as \"decoding\"."
@@ -2851,7 +2874,7 @@ msgstr ""
 "olarak bilinir ve dizeyi bayt dizisinden yeniden oluşturmak \"kod çözme "
 "(decoding)\" olarak bilinir."
 
-#: glossary.rst:1193
+#: glossary.rst:1204
 msgid ""
 "There are a variety of different text serialization :ref:`codecs <standard-"
 "encodings>`, which are collectively referred to as \"text encodings\"."
@@ -2859,11 +2882,11 @@ msgstr ""
 "Toplu olarak \"metin kodlamaları\" olarak adlandırılan çeşitli farklı metin "
 "serileştirme :ref:`kodekleri <standard-encodings>` vardır."
 
-#: glossary.rst:1196
+#: glossary.rst:1207
 msgid "text file"
 msgstr "yazı dosyası"
 
-#: glossary.rst:1198
+#: glossary.rst:1209
 msgid ""
 "A :term:`file object` able to read and write :class:`str` objects. Often, a "
 "text file actually accesses a byte-oriented datastream and handles the :term:"
@@ -2877,7 +2900,7 @@ msgstr ""
 "metin modunda açılan dosyalar (``'r'`` veya ``'w'``), :data:`sys.stdin`, :"
 "data:`sys.stdout` ve :class:`io.StringIO` örnekleri verilebilir."
 
-#: glossary.rst:1205
+#: glossary.rst:1216
 msgid ""
 "See also :term:`binary file` for a file object able to read and write :term:"
 "`bytes-like objects <bytes-like object>`."
@@ -2885,11 +2908,28 @@ msgstr ""
 "Ayrıca :term:`ikili dosyaları <binary file>` okuyabilen ve yazabilen bir "
 "dosya nesnesi için :term:`bayt benzeri nesnelere <bytes-like object>` bakın."
 
-#: glossary.rst:1207
+#: glossary.rst:1218
+msgid "token"
+msgstr ""
+
+#: glossary.rst:1221
+msgid ""
+"A small unit of source code, generated by the :ref:`lexical analyzer "
+"<lexical>` (also called the *tokenizer*). Names, numbers, strings, "
+"operators, newlines and similar are represented by tokens."
+msgstr ""
+
+#: glossary.rst:1226
+msgid ""
+"The :mod:`tokenize` module exposes Python's lexical analyzer. The :mod:"
+"`token` module contains information on the various types of tokens."
+msgstr ""
+
+#: glossary.rst:1229
 msgid "triple-quoted string"
 msgstr "üç tırnaklı dize"
 
-#: glossary.rst:1209
+#: glossary.rst:1231
 msgid ""
 "A string which is bound by three instances of either a quotation mark (\") "
 "or an apostrophe (').  While they don't provide any functionality not "
@@ -2906,11 +2946,11 @@ msgstr ""
 "yayılabilir, bu da onları özellikle belge dizileri yazarken kullanışlı hale "
 "getirir."
 
-#: glossary.rst:1216
+#: glossary.rst:1238
 msgid "type"
 msgstr "tip"
 
-#: glossary.rst:1218
+#: glossary.rst:1240
 #, fuzzy
 msgid ""
 "The type of a Python object determines what kind of object it is; every "
@@ -2921,15 +2961,15 @@ msgstr ""
 "nesnenin bir türü vardır. Bir nesnenin tipine :attr:`~instance.__class__` "
 "niteliği ile erişilebilir veya ``type(obj)`` ile alınabilir."
 
-#: glossary.rst:1222
+#: glossary.rst:1244
 msgid "type alias"
 msgstr "tip takma adı"
 
-#: glossary.rst:1224
+#: glossary.rst:1246
 msgid "A synonym for a type, created by assigning the type to an identifier."
 msgstr "Bir tanımlayıcıya tür atanarak oluşturulan, bir tür için eş anlamlı."
 
-#: glossary.rst:1226
+#: glossary.rst:1248
 msgid ""
 "Type aliases are useful for simplifying :term:`type hints <type hint>`. For "
 "example::"
@@ -2937,18 +2977,18 @@ msgstr ""
 "Tür takma adları, :term:`tür ipuçlarını <type hint>` basitleştirmek için "
 "kullanışlıdır. Örneğin::"
 
-#: glossary.rst:1229
+#: glossary.rst:1251
 msgid ""
 "def remove_gray_shades(\n"
 "        colors: list[tuple[int, int, int]]) -> list[tuple[int, int, int]]:\n"
 "    pass"
 msgstr ""
 
-#: glossary.rst:1233
+#: glossary.rst:1255
 msgid "could be made more readable like this::"
 msgstr "bu şekilde daha okunaklı hale getirilebilir::"
 
-#: glossary.rst:1235
+#: glossary.rst:1257
 msgid ""
 "Color = tuple[int, int, int]\n"
 "\n"
@@ -2956,15 +2996,15 @@ msgid ""
 "    pass"
 msgstr ""
 
-#: glossary.rst:1254
+#: glossary.rst:1276
 msgid "See :mod:`typing` and :pep:`484`, which describe this functionality."
 msgstr "Bu işlevi açıklayan :mod:`typing` ve :pep:`484` bölümlerine bakın."
 
-#: glossary.rst:1241
+#: glossary.rst:1263
 msgid "type hint"
 msgstr "tür ipucu"
 
-#: glossary.rst:1243
+#: glossary.rst:1265
 msgid ""
 "An :term:`annotation` that specifies the expected type for a variable, a "
 "class attribute, or a function parameter or return value."
@@ -2972,7 +3012,7 @@ msgstr ""
 "Bir değişken, bir sınıf niteliği veya bir işlev parametresi veya dönüş "
 "değeri için beklenen türü belirten bir :term:`ek açıklama <annotation>`."
 
-#: glossary.rst:1246
+#: glossary.rst:1268
 #, fuzzy
 msgid ""
 "Type hints are optional and are not enforced by Python but they are useful "
@@ -2983,7 +3023,7 @@ msgstr ""
 "statik tip analiz araçları için faydalıdır ve kod tamamlama ve yeniden "
 "düzenleme ile IDE'lere yardımcı olur."
 
-#: glossary.rst:1250
+#: glossary.rst:1272
 msgid ""
 "Type hints of global variables, class attributes, and functions, but not "
 "local variables, can be accessed using :func:`typing.get_type_hints`."
@@ -2992,11 +3032,11 @@ msgstr ""
 "yerel değişkenlere değil, :func:`typing.get_type_hints` kullanılarak "
 "erişilebilir."
 
-#: glossary.rst:1255
+#: glossary.rst:1277
 msgid "universal newlines"
 msgstr "evrensel yeni satırlar"
 
-#: glossary.rst:1257
+#: glossary.rst:1279
 msgid ""
 "A manner of interpreting text streams in which all of the following are "
 "recognized as ending a line: the Unix end-of-line convention ``'\\n'``, the "
@@ -3009,29 +3049,29 @@ msgstr ""
 "kuralı ``'\\r\\n'``, ve eski Macintosh kuralı ``'\\r'``. Ek bir kullanım "
 "için :pep:`278` ve :pep:`3116` ve ayrıca :func:`bytes.splitlines` bakın."
 
-#: glossary.rst:1262
+#: glossary.rst:1284
 msgid "variable annotation"
 msgstr "değişken açıklama"
 
-#: glossary.rst:1264
+#: glossary.rst:1286
 msgid "An :term:`annotation` of a variable or a class attribute."
 msgstr ""
 "Bir değişkenin veya bir sınıf özniteliğinin :term:`ek açıklaması "
 "<annotation>`."
 
-#: glossary.rst:1266
+#: glossary.rst:1288
 msgid ""
 "When annotating a variable or a class attribute, assignment is optional::"
 msgstr ""
 "Bir değişkene veya sınıf niteliğine açıklama eklerken atama isteğe bağlıdır::"
 
-#: glossary.rst:1268
+#: glossary.rst:1290
 msgid ""
 "class C:\n"
 "    field: 'annotation'"
 msgstr ""
 
-#: glossary.rst:1271
+#: glossary.rst:1293
 msgid ""
 "Variable annotations are usually used for :term:`type hints <type hint>`: "
 "for example this variable is expected to take :class:`int` values::"
@@ -3039,15 +3079,15 @@ msgstr ""
 "Değişken açıklamaları genellikle :term:`tür ipuçları <type hint>` için "
 "kullanılır: örneğin, bu değişkenin :class:`int` değerlerini alması beklenir::"
 
-#: glossary.rst:1275
+#: glossary.rst:1297
 msgid "count: int = 0"
 msgstr ""
 
-#: glossary.rst:1277
+#: glossary.rst:1299
 msgid "Variable annotation syntax is explained in section :ref:`annassign`."
 msgstr "Değişken açıklama sözdizimi :ref:`annassign` bölümünde açıklanmıştır."
 
-#: glossary.rst:1279
+#: glossary.rst:1301
 msgid ""
 "See :term:`function annotation`, :pep:`484` and :pep:`526`, which describe "
 "this functionality. Also see :ref:`annotations-howto` for best practices on "
@@ -3057,11 +3097,11 @@ msgstr ""
 "bölümlerine bakın. Ek açıklamalarla çalışmaya ilişkin en iyi uygulamalar "
 "için ayrıca bkz. :ref:`annotations-howto`."
 
-#: glossary.rst:1283
+#: glossary.rst:1305
 msgid "virtual environment"
 msgstr "sanal ortam"
 
-#: glossary.rst:1285
+#: glossary.rst:1307
 msgid ""
 "A cooperatively isolated runtime environment that allows Python users and "
 "applications to install and upgrade Python distribution packages without "
@@ -3073,15 +3113,15 @@ msgstr ""
 "paketlerini kurmasına ve yükseltmesine olanak tanıyan, işbirliği içinde "
 "yalıtılmış bir çalışma zamanı ortamı."
 
-#: glossary.rst:1290
+#: glossary.rst:1312
 msgid "See also :mod:`venv`."
 msgstr "Ayrıca bakınız :mod:`venv`."
 
-#: glossary.rst:1291
+#: glossary.rst:1313
 msgid "virtual machine"
 msgstr "sanal makine"
 
-#: glossary.rst:1293
+#: glossary.rst:1315
 msgid ""
 "A computer defined entirely in software.  Python's virtual machine executes "
 "the :term:`bytecode` emitted by the bytecode compiler."
@@ -3089,11 +3129,11 @@ msgstr ""
 "Tamamen yazılımla tanımlanmış bir bilgisayar. Python'un sanal makinesi, bayt "
 "kodu derleyicisi tarafından yayınlanan :term:`bytecode` 'u çalıştırır."
 
-#: glossary.rst:1295
+#: glossary.rst:1317
 msgid "Zen of Python"
 msgstr "Python'un Zen'i"
 
-#: glossary.rst:1297
+#: glossary.rst:1319
 msgid ""
 "Listing of Python design principles and philosophies that are helpful in "
 "understanding and using the language.  The listing can be found by typing "
@@ -3113,11 +3153,11 @@ msgstr "bitişik"
 msgid "Fortran contiguous"
 msgstr "bitişik"
 
-#: glossary.rst:772
+#: glossary.rst:778
 msgid "magic"
 msgstr ""
 
-#: glossary.rst:1154
+#: glossary.rst:1165
 #, fuzzy
 msgid "special"
 msgstr "özel metod"
diff --git a/howto/argparse-optparse.po b/howto/argparse-optparse.po
index 2ec77acc0..8d5590eb6 100644
--- a/howto/argparse-optparse.po
+++ b/howto/argparse-optparse.po
@@ -8,10 +8,11 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
diff --git a/howto/descriptor.po b/howto/descriptor.po
index 15f76fd5c..f9dbfa4bb 100644
--- a/howto/descriptor.po
+++ b/howto/descriptor.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -93,8 +93,8 @@ msgstr ""
 
 #: howto/descriptor.rst:45
 msgid ""
-"The :class:`Ten` class is a descriptor whose :meth:`__get__` method always "
-"returns the constant ``10``:"
+"The :class:`!Ten` class is a descriptor whose :meth:`~object.__get__` method "
+"always returns the constant ``10``:"
 msgstr ""
 
 #: howto/descriptor.rst:48
@@ -209,11 +209,11 @@ msgstr ""
 #: howto/descriptor.rst:122
 msgid ""
 "Besides showing how descriptors can run computations, this example also "
-"reveals the purpose of the parameters to :meth:`__get__`.  The *self* "
-"parameter is *size*, an instance of *DirectorySize*.  The *obj* parameter is "
-"either *g* or *s*, an instance of *Directory*.  It is the *obj* parameter "
-"that lets the :meth:`__get__` method learn the target directory.  The "
-"*objtype* parameter is the class *Directory*."
+"reveals the purpose of the parameters to :meth:`~object.__get__`.  The "
+"*self* parameter is *size*, an instance of *DirectorySize*.  The *obj* "
+"parameter is either *g* or *s*, an instance of *Directory*.  It is the *obj* "
+"parameter that lets the :meth:`~object.__get__` method learn the target "
+"directory.  The *objtype* parameter is the class *Directory*."
 msgstr ""
 
 #: howto/descriptor.rst:131
@@ -225,8 +225,8 @@ msgid ""
 "A popular use for descriptors is managing access to instance data.  The "
 "descriptor is assigned to a public attribute in the class dictionary while "
 "the actual data is stored as a private attribute in the instance "
-"dictionary.  The descriptor's :meth:`__get__` and :meth:`__set__` methods "
-"are triggered when the public attribute is accessed."
+"dictionary.  The descriptor's :meth:`~object.__get__` and :meth:`~object."
+"__set__` methods are triggered when the public attribute is accessed."
 msgstr ""
 
 #: howto/descriptor.rst:139
@@ -321,10 +321,10 @@ msgstr ""
 
 #: howto/descriptor.rst:218
 msgid ""
-"In this example, the :class:`Person` class has two descriptor instances, "
-"*name* and *age*.  When the :class:`Person` class is defined, it makes a "
-"callback to :meth:`__set_name__` in *LoggedAccess* so that the field names "
-"can be recorded, giving each descriptor its own *public_name* and "
+"In this example, the :class:`!Person` class has two descriptor instances, "
+"*name* and *age*.  When the :class:`!Person` class is defined, it makes a "
+"callback to :meth:`~object.__set_name__` in *LoggedAccess* so that the field "
+"names can be recorded, giving each descriptor its own *public_name* and "
 "*private_name*:"
 msgstr ""
 
@@ -364,9 +364,9 @@ msgstr ""
 
 #: howto/descriptor.rst:256
 msgid ""
-"An interactive session shows that the :class:`Person` class has called :meth:"
-"`__set_name__` so that the field names would be recorded.  Here we call :"
-"func:`vars` to look up the descriptor without triggering it:"
+"An interactive session shows that the :class:`!Person` class has called :"
+"meth:`~object.__set_name__` so that the field names would be recorded.  Here "
+"we call :func:`vars` to look up the descriptor without triggering it:"
 msgstr ""
 
 #: howto/descriptor.rst:260
@@ -409,16 +409,16 @@ msgstr ""
 
 #: howto/descriptor.rst:297
 msgid ""
-"A :term:`descriptor` is what we call any object that defines :meth:"
-"`__get__`, :meth:`__set__`, or :meth:`__delete__`."
+"A :term:`descriptor` is what we call any object that defines :meth:`~object."
+"__get__`, :meth:`~object.__set__`, or :meth:`~object.__delete__`."
 msgstr ""
 
 #: howto/descriptor.rst:300
 msgid ""
-"Optionally, descriptors can have a :meth:`__set_name__` method.  This is "
-"only used in cases where a descriptor needs to know either the class where "
-"it was created or the name of class variable it was assigned to.  (This "
-"method, if present, is called even if the class is not a descriptor.)"
+"Optionally, descriptors can have a :meth:`~object.__set_name__` method.  "
+"This is only used in cases where a descriptor needs to know either the class "
+"where it was created or the name of class variable it was assigned to.  "
+"(This method, if present, is called even if the class is not a descriptor.)"
 msgstr ""
 
 #: howto/descriptor.rst:305
@@ -479,7 +479,7 @@ msgstr ""
 
 #: howto/descriptor.rst:340
 msgid ""
-"This :class:`Validator` class is both an :term:`abstract base class` and a "
+"This :class:`!Validator` class is both an :term:`abstract base class` and a "
 "managed attribute descriptor:"
 msgstr ""
 
@@ -506,8 +506,8 @@ msgstr ""
 
 #: howto/descriptor.rst:363
 msgid ""
-"Custom validators need to inherit from :class:`Validator` and must supply a :"
-"meth:`validate` method to test various restrictions as needed."
+"Custom validators need to inherit from :class:`!Validator` and must supply "
+"a :meth:`!validate` method to test various restrictions as needed."
 msgstr ""
 
 #: howto/descriptor.rst:368
@@ -520,19 +520,19 @@ msgstr ""
 
 #: howto/descriptor.rst:372
 msgid ""
-":class:`OneOf` verifies that a value is one of a restricted set of options."
+":class:`!OneOf` verifies that a value is one of a restricted set of options."
 msgstr ""
 
 #: howto/descriptor.rst:374
 msgid ""
-":class:`Number` verifies that a value is either an :class:`int` or :class:"
+":class:`!Number` verifies that a value is either an :class:`int` or :class:"
 "`float`.  Optionally, it verifies that a value is between a given minimum or "
 "maximum."
 msgstr ""
 
 #: howto/descriptor.rst:378
 msgid ""
-":class:`String` verifies that a value is a :class:`str`.  Optionally, it "
+":class:`!String` verifies that a value is a :class:`str`.  Optionally, it "
 "validates a given minimum or maximum length.  It can validate a user-defined "
 "`predicate <https://en.wikipedia.org/wiki/Predicate_(mathematical_logic)>`_ "
 "as well."
@@ -678,9 +678,9 @@ msgstr ""
 #: howto/descriptor.rst:500
 msgid ""
 "In general, a descriptor is an attribute value that has one of the methods "
-"in the descriptor protocol.  Those methods are :meth:`__get__`, :meth:"
-"`__set__`, and :meth:`__delete__`.  If any of those methods are defined for "
-"an attribute, it is said to be a :term:`descriptor`."
+"in the descriptor protocol.  Those methods are :meth:`~object.__get__`, :"
+"meth:`~object.__set__`, and :meth:`~object.__delete__`.  If any of those "
+"methods are defined for an attribute, it is said to be a :term:`descriptor`."
 msgstr ""
 
 #: howto/descriptor.rst:505
@@ -729,10 +729,10 @@ msgstr ""
 
 #: howto/descriptor.rst:534
 msgid ""
-"If an object defines :meth:`__set__` or :meth:`__delete__`, it is considered "
-"a data descriptor.  Descriptors that only define :meth:`__get__` are called "
-"non-data descriptors (they are often used for methods but other uses are "
-"possible)."
+"If an object defines :meth:`~object.__set__` or :meth:`~object.__delete__`, "
+"it is considered a data descriptor.  Descriptors that only define :meth:"
+"`~object.__get__` are called non-data descriptors (they are often used for "
+"methods but other uses are possible)."
 msgstr ""
 
 #: howto/descriptor.rst:539
@@ -746,10 +746,10 @@ msgstr ""
 
 #: howto/descriptor.rst:545
 msgid ""
-"To make a read-only data descriptor, define both :meth:`__get__` and :meth:"
-"`__set__` with the :meth:`__set__` raising an :exc:`AttributeError` when "
-"called.  Defining the :meth:`__set__` method with an exception raising "
-"placeholder is enough to make it a data descriptor."
+"To make a read-only data descriptor, define both :meth:`~object.__get__` "
+"and :meth:`~object.__set__` with the :meth:`~object.__set__` raising an :exc:"
+"`AttributeError` when called.  Defining the :meth:`~object.__set__` method "
+"with an exception raising placeholder is enough to make it a data descriptor."
 msgstr ""
 
 #: howto/descriptor.rst:552
@@ -790,8 +790,8 @@ msgstr ""
 msgid ""
 "Instance lookup scans through a chain of namespaces giving data descriptors "
 "the highest priority, followed by instance variables, then non-data "
-"descriptors, then class variables, and lastly :meth:`__getattr__` if it is "
-"provided."
+"descriptors, then class variables, and lastly :meth:`~object.__getattr__` if "
+"it is provided."
 msgstr ""
 
 #: howto/descriptor.rst:577
@@ -837,16 +837,17 @@ msgstr ""
 
 #: howto/descriptor.rst:719
 msgid ""
-"Note, there is no :meth:`__getattr__` hook in the :meth:`__getattribute__` "
-"code.  That is why calling :meth:`__getattribute__` directly or with "
-"``super().__getattribute__`` will bypass :meth:`__getattr__` entirely."
+"Note, there is no :meth:`~object.__getattr__` hook in the :meth:`~object."
+"__getattribute__` code.  That is why calling :meth:`~object."
+"__getattribute__` directly or with ``super().__getattribute__`` will bypass :"
+"meth:`~object.__getattr__` entirely."
 msgstr ""
 
 #: howto/descriptor.rst:723
 msgid ""
 "Instead, it is the dot operator and the :func:`getattr` function that are "
-"responsible for invoking :meth:`__getattr__` whenever :meth:"
-"`__getattribute__` raises an :exc:`AttributeError`.  Their logic is "
+"responsible for invoking :meth:`~object.__getattr__` whenever :meth:`~object."
+"__getattribute__` raises an :exc:`AttributeError`.  Their logic is "
 "encapsulated in a helper function:"
 msgstr ""
 
@@ -868,8 +869,8 @@ msgstr ""
 
 #: howto/descriptor.rst:775
 msgid ""
-"The logic for a dotted lookup such as ``A.x`` is in :meth:`type."
-"__getattribute__`.  The steps are similar to those for :meth:`object."
+"The logic for a dotted lookup such as ``A.x`` is in :meth:`!type."
+"__getattribute__`.  The steps are similar to those for :meth:`!object."
 "__getattribute__` but the instance dictionary lookup is replaced by a search "
 "through the class's :term:`method resolution order`."
 msgstr ""
@@ -890,8 +891,8 @@ msgstr ""
 
 #: howto/descriptor.rst:789
 msgid ""
-"The logic for super's dotted lookup is in the :meth:`__getattribute__` "
-"method for object returned by :func:`super`."
+"The logic for super's dotted lookup is in the :meth:`~object."
+"__getattribute__` method for object returned by :func:`super`."
 msgstr ""
 
 #: howto/descriptor.rst:792
@@ -916,8 +917,9 @@ msgstr ""
 
 #: howto/descriptor.rst:806
 msgid ""
-"The mechanism for descriptors is embedded in the :meth:`__getattribute__` "
-"methods for :class:`object`, :class:`type`, and :func:`super`."
+"The mechanism for descriptors is embedded in the :meth:`~object."
+"__getattribute__` methods for :class:`object`, :class:`type`, and :func:"
+"`super`."
 msgstr ""
 
 #: howto/descriptor.rst:809
@@ -925,7 +927,7 @@ msgid "The important points to remember are:"
 msgstr ""
 
 #: howto/descriptor.rst:811
-msgid "Descriptors are invoked by the :meth:`__getattribute__` method."
+msgid "Descriptors are invoked by the :meth:`~object.__getattribute__` method."
 msgstr ""
 
 #: howto/descriptor.rst:813
@@ -936,16 +938,16 @@ msgstr ""
 
 #: howto/descriptor.rst:816
 msgid ""
-"Overriding :meth:`__getattribute__` prevents automatic descriptor calls "
-"because all the descriptor logic is in that method."
+"Overriding :meth:`~object.__getattribute__` prevents automatic descriptor "
+"calls because all the descriptor logic is in that method."
 msgstr ""
 
 #: howto/descriptor.rst:819
 msgid ""
-":meth:`object.__getattribute__` and :meth:`type.__getattribute__` make "
-"different calls to :meth:`__get__`.  The first includes the instance and may "
-"include the class.  The second puts in ``None`` for the instance and always "
-"includes the class."
+":meth:`!object.__getattribute__` and :meth:`!type.__getattribute__` make "
+"different calls to :meth:`~object.__get__`.  The first includes the instance "
+"and may include the class.  The second puts in ``None`` for the instance and "
+"always includes the class."
 msgstr ""
 
 #: howto/descriptor.rst:824
@@ -965,9 +967,9 @@ msgid ""
 "Sometimes it is desirable for a descriptor to know what class variable name "
 "it was assigned to.  When a new class is created, the :class:`type` "
 "metaclass scans the dictionary of the new class.  If any of the entries are "
-"descriptors and if they define :meth:`__set_name__`, that method is called "
-"with two arguments.  The *owner* is the class where the descriptor is used, "
-"and the *name* is the class variable the descriptor was assigned to."
+"descriptors and if they define :meth:`~object.__set_name__`, that method is "
+"called with two arguments.  The *owner* is the class where the descriptor is "
+"used, and the *name* is the class variable the descriptor was assigned to."
 msgstr ""
 
 #: howto/descriptor.rst:839
@@ -978,9 +980,9 @@ msgstr ""
 
 #: howto/descriptor.rst:842
 msgid ""
-"Since the update logic is in :meth:`type.__new__`, notifications only take "
+"Since the update logic is in :meth:`!type.__new__`, notifications only take "
 "place at the time of class creation.  If descriptors are added to the class "
-"afterwards, :meth:`__set_name__` will need to be called manually."
+"afterwards, :meth:`~object.__set_name__` will need to be called manually."
 msgstr ""
 
 #: howto/descriptor.rst:848
@@ -1021,7 +1023,7 @@ msgstr ""
 
 #: howto/descriptor.rst:873
 msgid ""
-"We can use the :class:`Field` class to define `models <https://en.wikipedia."
+"We can use the :class:`!Field` class to define `models <https://en.wikipedia."
 "org/wiki/Database_model>`_ that describe the schema for each table in a "
 "database:"
 msgstr ""
@@ -1217,7 +1219,7 @@ msgstr ""
 
 #: howto/descriptor.rst:1153
 msgid ""
-"Either the built-in :func:`property` or our :func:`Property` equivalent "
+"Either the built-in :func:`property` or our :func:`!Property` equivalent "
 "would work in this example."
 msgstr ""
 
@@ -1263,9 +1265,9 @@ msgstr ""
 #: howto/descriptor.rst:1185
 msgid ""
 "To support automatic creation of methods, functions include the :meth:"
-"`__get__` method for binding methods during attribute access.  This means "
-"that functions are non-data descriptors that return bound methods during "
-"dotted lookup from an instance.  Here's how it works:"
+"`~object.__get__` method for binding methods during attribute access.  This "
+"means that functions are non-data descriptors that return bound methods "
+"during dotted lookup from an instance.  Here's how it works:"
 msgstr ""
 
 #: howto/descriptor.rst:1190
@@ -1307,7 +1309,7 @@ msgstr ""
 #: howto/descriptor.rst:1217
 msgid ""
 "Accessing the function through the class dictionary does not invoke :meth:"
-"`__get__`.  Instead, it just returns the underlying function object::"
+"`~object.__get__`.  Instead, it just returns the underlying function object::"
 msgstr ""
 
 #: howto/descriptor.rst:1220
@@ -1318,8 +1320,8 @@ msgstr ""
 
 #: howto/descriptor.rst:1223
 msgid ""
-"Dotted access from a class calls :meth:`__get__` which just returns the "
-"underlying function unchanged::"
+"Dotted access from a class calls :meth:`~object.__get__` which just returns "
+"the underlying function unchanged::"
 msgstr ""
 
 #: howto/descriptor.rst:1226
@@ -1331,7 +1333,8 @@ msgstr ""
 #: howto/descriptor.rst:1229
 msgid ""
 "The interesting behavior occurs during dotted access from an instance.  The "
-"dotted lookup calls :meth:`__get__` which returns a bound method object::"
+"dotted lookup calls :meth:`~object.__get__` which returns a bound method "
+"object::"
 msgstr ""
 
 #: howto/descriptor.rst:1232
@@ -1374,10 +1377,10 @@ msgstr ""
 
 #: howto/descriptor.rst:1255
 msgid ""
-"To recap, functions have a :meth:`__get__` method so that they can be "
-"converted to a method when accessed as attributes.  The non-data descriptor "
-"transforms an ``obj.f(*args)`` call into ``f(obj, *args)``.  Calling ``cls."
-"f(*args)`` becomes ``f(*args)``."
+"To recap, functions have a :meth:`~object.__get__` method so that they can "
+"be converted to a method when accessed as attributes.  The non-data "
+"descriptor transforms an ``obj.f(*args)`` call into ``f(obj, *args)``.  "
+"Calling ``cls.f(*args)`` becomes ``f(*args)``."
 msgstr ""
 
 #: howto/descriptor.rst:1260
@@ -1796,8 +1799,8 @@ msgstr ""
 
 #: howto/descriptor.rst:1685
 msgid ""
-"The :meth:`type.__new__` method takes care of adding member objects to class "
-"variables:"
+"The :meth:`!type.__new__` method takes care of adding member objects to "
+"class variables:"
 msgstr ""
 
 #: howto/descriptor.rst:1688
@@ -1855,8 +1858,8 @@ msgstr ""
 
 #: howto/descriptor.rst:1736
 msgid ""
-"To use the simulation in a real class, just inherit from :class:`Object` and "
-"set the :term:`metaclass` to :class:`Type`:"
+"To use the simulation in a real class, just inherit from :class:`!Object` "
+"and set the :term:`metaclass` to :class:`Type`:"
 msgstr ""
 
 #: howto/descriptor.rst:1739
diff --git a/howto/enum.po b/howto/enum.po
index f915168b2..9f66310bf 100644
--- a/howto/enum.po
+++ b/howto/enum.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -16,24 +16,24 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: howto/enum.rst:3
+#: howto/enum.rst:5
 msgid "Enum HOWTO"
 msgstr ""
 
-#: howto/enum.rst:9
+#: howto/enum.rst:11
 msgid ""
 "An :class:`Enum` is a set of symbolic names bound to unique values.  They "
 "are similar to global variables, but they offer a more useful :func:`repr`, "
 "grouping, type-safety, and a few other features."
 msgstr ""
 
-#: howto/enum.rst:13
+#: howto/enum.rst:15
 msgid ""
 "They are most useful when you have a variable that can take one of a limited "
 "selection of values.  For example, the days of the week::"
 msgstr ""
 
-#: howto/enum.rst:16
+#: howto/enum.rst:18
 msgid ""
 ">>> from enum import Enum\n"
 ">>> class Weekday(Enum):\n"
@@ -46,11 +46,11 @@ msgid ""
 "...     SUNDAY = 7"
 msgstr ""
 
-#: howto/enum.rst:26
+#: howto/enum.rst:28
 msgid "Or perhaps the RGB primary colors::"
 msgstr ""
 
-#: howto/enum.rst:28
+#: howto/enum.rst:30
 msgid ""
 ">>> from enum import Enum\n"
 ">>> class Color(Enum):\n"
@@ -59,17 +59,17 @@ msgid ""
 "...     BLUE = 3"
 msgstr ""
 
-#: howto/enum.rst:34
+#: howto/enum.rst:36
 msgid ""
 "As you can see, creating an :class:`Enum` is as simple as writing a class "
 "that inherits from :class:`Enum` itself."
 msgstr ""
 
-#: howto/enum.rst:37
+#: howto/enum.rst:39
 msgid "Case of Enum Members"
 msgstr ""
 
-#: howto/enum.rst:39
+#: howto/enum.rst:41
 msgid ""
 "Because Enums are used to represent constants, and to help avoid issues with "
 "name clashes between mixin-class methods/attributes and enum names, we "
@@ -77,37 +77,37 @@ msgid ""
 "that style in our examples."
 msgstr ""
 
-#: howto/enum.rst:44
+#: howto/enum.rst:46
 msgid ""
 "Depending on the nature of the enum a member's value may or may not be "
 "important, but either way that value can be used to get the corresponding "
 "member::"
 msgstr ""
 
-#: howto/enum.rst:48
+#: howto/enum.rst:50
 msgid ""
 ">>> Weekday(3)\n"
 "<Weekday.WEDNESDAY: 3>"
 msgstr ""
 
-#: howto/enum.rst:51
+#: howto/enum.rst:53
 msgid ""
 "As you can see, the ``repr()`` of a member shows the enum name, the member "
 "name, and the value.  The ``str()`` of a member shows only the enum name and "
 "member name::"
 msgstr ""
 
-#: howto/enum.rst:55
+#: howto/enum.rst:57
 msgid ""
 ">>> print(Weekday.THURSDAY)\n"
 "Weekday.THURSDAY"
 msgstr ""
 
-#: howto/enum.rst:58
+#: howto/enum.rst:60
 msgid "The *type* of an enumeration member is the enum it belongs to::"
 msgstr ""
 
-#: howto/enum.rst:60
+#: howto/enum.rst:62
 msgid ""
 ">>> type(Weekday.MONDAY)\n"
 "<enum 'Weekday'>\n"
@@ -115,49 +115,50 @@ msgid ""
 "True"
 msgstr ""
 
-#: howto/enum.rst:65
-msgid "Enum members have an attribute that contains just their :attr:`name`::"
+#: howto/enum.rst:67
+msgid "Enum members have an attribute that contains just their :attr:`!name`::"
 msgstr ""
 
-#: howto/enum.rst:67
+#: howto/enum.rst:69
 msgid ""
 ">>> print(Weekday.TUESDAY.name)\n"
 "TUESDAY"
 msgstr ""
 
-#: howto/enum.rst:70
-msgid "Likewise, they have an attribute for their :attr:`value`::"
+#: howto/enum.rst:72
+msgid "Likewise, they have an attribute for their :attr:`!value`::"
 msgstr ""
 
-#: howto/enum.rst:73
+#: howto/enum.rst:75
 msgid ""
 ">>> Weekday.WEDNESDAY.value\n"
 "3"
 msgstr ""
 
-#: howto/enum.rst:76
+#: howto/enum.rst:78
 msgid ""
 "Unlike many languages that treat enumerations solely as name/value pairs, "
 "Python Enums can have behavior added.  For example, :class:`datetime.date` "
-"has two methods for returning the weekday: :meth:`weekday` and :meth:"
-"`isoweekday`. The difference is that one of them counts from 0-6 and the "
-"other from 1-7. Rather than keep track of that ourselves we can add a method "
-"to the :class:`Weekday` enum to extract the day from the :class:`date` "
-"instance and return the matching enum member::"
+"has two methods for returning the weekday: :meth:`~datetime.date.weekday` "
+"and :meth:`~datetime.date.isoweekday`. The difference is that one of them "
+"counts from 0-6 and the other from 1-7. Rather than keep track of that "
+"ourselves we can add a method to the :class:`!Weekday` enum to extract the "
+"day from the :class:`~datetime.date` instance and return the matching enum "
+"member::"
 msgstr ""
 
-#: howto/enum.rst:84
+#: howto/enum.rst:87
 msgid ""
 "@classmethod\n"
 "def from_date(cls, date):\n"
 "    return cls(date.isoweekday())"
 msgstr ""
 
-#: howto/enum.rst:88
-msgid "The complete :class:`Weekday` enum now looks like this::"
+#: howto/enum.rst:91
+msgid "The complete :class:`!Weekday` enum now looks like this::"
 msgstr ""
 
-#: howto/enum.rst:90
+#: howto/enum.rst:93
 msgid ""
 ">>> class Weekday(Enum):\n"
 "...     MONDAY = 1\n"
@@ -173,32 +174,32 @@ msgid ""
 "...         return cls(date.isoweekday())"
 msgstr ""
 
-#: howto/enum.rst:103
+#: howto/enum.rst:106
 msgid "Now we can find out what today is!  Observe::"
 msgstr ""
 
-#: howto/enum.rst:105
+#: howto/enum.rst:108
 msgid ""
 ">>> from datetime import date\n"
-">>> Weekday.from_date(date.today())     \n"
+">>> Weekday.from_date(date.today())\n"
 "<Weekday.TUESDAY: 2>"
 msgstr ""
 
-#: howto/enum.rst:109
+#: howto/enum.rst:112
 msgid ""
 "Of course, if you're reading this on some other day, you'll see that day "
 "instead."
 msgstr ""
 
-#: howto/enum.rst:111
+#: howto/enum.rst:114
 msgid ""
-"This :class:`Weekday` enum is great if our variable only needs one day, but "
+"This :class:`!Weekday` enum is great if our variable only needs one day, but "
 "what if we need several?  Maybe we're writing a function to plot chores "
 "during a week, and don't want to use a :class:`list` -- we could use a "
 "different type of :class:`Enum`::"
 msgstr ""
 
-#: howto/enum.rst:116
+#: howto/enum.rst:119
 msgid ""
 ">>> from enum import Flag\n"
 ">>> class Weekday(Flag):\n"
@@ -211,43 +212,43 @@ msgid ""
 "...     SUNDAY = 64"
 msgstr ""
 
-#: howto/enum.rst:126
+#: howto/enum.rst:129
 msgid ""
 "We've changed two things: we're inherited from :class:`Flag`, and the values "
 "are all powers of 2."
 msgstr ""
 
-#: howto/enum.rst:129
+#: howto/enum.rst:132
 msgid ""
-"Just like the original :class:`Weekday` enum above, we can have a single "
+"Just like the original :class:`!Weekday` enum above, we can have a single "
 "selection::"
 msgstr ""
 
-#: howto/enum.rst:131
+#: howto/enum.rst:134
 msgid ""
 ">>> first_week_day = Weekday.MONDAY\n"
 ">>> first_week_day\n"
 "<Weekday.MONDAY: 1>"
 msgstr ""
 
-#: howto/enum.rst:135
+#: howto/enum.rst:138
 msgid ""
 "But :class:`Flag` also allows us to combine several members into a single "
 "variable::"
 msgstr ""
 
-#: howto/enum.rst:138
+#: howto/enum.rst:141
 msgid ""
 ">>> weekend = Weekday.SATURDAY | Weekday.SUNDAY\n"
 ">>> weekend\n"
 "<Weekday.SATURDAY|SUNDAY: 96>"
 msgstr ""
 
-#: howto/enum.rst:142
+#: howto/enum.rst:145
 msgid "You can even iterate over a :class:`Flag` variable::"
 msgstr ""
 
-#: howto/enum.rst:144
+#: howto/enum.rst:147
 msgid ""
 ">>> for day in weekend:\n"
 "...     print(day)\n"
@@ -255,11 +256,11 @@ msgid ""
 "Weekday.SUNDAY"
 msgstr ""
 
-#: howto/enum.rst:149
+#: howto/enum.rst:152
 msgid "Okay, let's get some chores set up::"
 msgstr ""
 
-#: howto/enum.rst:151
+#: howto/enum.rst:154
 msgid ""
 ">>> chores_for_ethan = {\n"
 "...     'feed the cat': Weekday.MONDAY | Weekday.WEDNESDAY | Weekday."
@@ -269,11 +270,11 @@ msgid ""
 "...     }"
 msgstr ""
 
-#: howto/enum.rst:157
+#: howto/enum.rst:160
 msgid "And a function to display the chores for a given day::"
 msgstr ""
 
-#: howto/enum.rst:159
+#: howto/enum.rst:162
 msgid ""
 ">>> def show_chores(chores, day):\n"
 "...     for chore, days in chores.items():\n"
@@ -284,13 +285,13 @@ msgid ""
 "answer SO questions"
 msgstr ""
 
-#: howto/enum.rst:167
+#: howto/enum.rst:170
 msgid ""
 "In cases where the actual values of the members do not matter, you can save "
 "yourself some work and use :func:`auto` for the values::"
 msgstr ""
 
-#: howto/enum.rst:170
+#: howto/enum.rst:173
 msgid ""
 ">>> from enum import auto\n"
 ">>> class Weekday(Flag):\n"
@@ -304,18 +305,18 @@ msgid ""
 "...     WEEKEND = SATURDAY | SUNDAY"
 msgstr ""
 
-#: howto/enum.rst:186
+#: howto/enum.rst:189
 msgid "Programmatic access to enumeration members and their attributes"
 msgstr ""
 
-#: howto/enum.rst:188
+#: howto/enum.rst:191
 msgid ""
 "Sometimes it's useful to access members in enumerations programmatically (i."
 "e. situations where ``Color.RED`` won't do because the exact color is not "
 "known at program-writing time).  ``Enum`` allows such access::"
 msgstr ""
 
-#: howto/enum.rst:192
+#: howto/enum.rst:195
 msgid ""
 ">>> Color(1)\n"
 "<Color.RED: 1>\n"
@@ -323,11 +324,11 @@ msgid ""
 "<Color.BLUE: 3>"
 msgstr ""
 
-#: howto/enum.rst:197
+#: howto/enum.rst:200
 msgid "If you want to access enum members by *name*, use item access::"
 msgstr ""
 
-#: howto/enum.rst:199
+#: howto/enum.rst:202
 msgid ""
 ">>> Color['RED']\n"
 "<Color.RED: 1>\n"
@@ -335,11 +336,12 @@ msgid ""
 "<Color.GREEN: 2>"
 msgstr ""
 
-#: howto/enum.rst:204
-msgid "If you have an enum member and need its :attr:`name` or :attr:`value`::"
+#: howto/enum.rst:207
+msgid ""
+"If you have an enum member and need its :attr:`!name` or :attr:`!value`::"
 msgstr ""
 
-#: howto/enum.rst:206
+#: howto/enum.rst:209
 msgid ""
 ">>> member = Color.RED\n"
 ">>> member.name\n"
@@ -348,15 +350,15 @@ msgid ""
 "1"
 msgstr ""
 
-#: howto/enum.rst:214
+#: howto/enum.rst:217
 msgid "Duplicating enum members and values"
 msgstr ""
 
-#: howto/enum.rst:216
+#: howto/enum.rst:219
 msgid "Having two enum members with the same name is invalid::"
 msgstr ""
 
-#: howto/enum.rst:218
+#: howto/enum.rst:221
 msgid ""
 ">>> class Shape(Enum):\n"
 "...     SQUARE = 2\n"
@@ -367,7 +369,7 @@ msgid ""
 "TypeError: 'SQUARE' already defined as 2"
 msgstr ""
 
-#: howto/enum.rst:226
+#: howto/enum.rst:229
 msgid ""
 "However, an enum member can have other names associated with it.  Given two "
 "entries ``A`` and ``B`` with the same value (and ``A`` defined first), ``B`` "
@@ -376,7 +378,7 @@ msgid ""
 "member ``A``. By-name lookup of ``B`` will also return the member ``A``::"
 msgstr ""
 
-#: howto/enum.rst:232
+#: howto/enum.rst:235
 msgid ""
 ">>> class Shape(Enum):\n"
 "...     SQUARE = 2\n"
@@ -392,24 +394,24 @@ msgid ""
 "<Shape.SQUARE: 2>"
 msgstr ""
 
-#: howto/enum.rst:247
+#: howto/enum.rst:250
 msgid ""
 "Attempting to create a member with the same name as an already defined "
 "attribute (another member, a method, etc.) or attempting to create an "
 "attribute with the same name as a member is not allowed."
 msgstr ""
 
-#: howto/enum.rst:253
+#: howto/enum.rst:256
 msgid "Ensuring unique enumeration values"
 msgstr ""
 
-#: howto/enum.rst:255
+#: howto/enum.rst:258
 msgid ""
 "By default, enumerations allow multiple names as aliases for the same value. "
 "When this behavior isn't desired, you can use the :func:`unique` decorator::"
 msgstr ""
 
-#: howto/enum.rst:258
+#: howto/enum.rst:261
 msgid ""
 ">>> from enum import Enum, unique\n"
 ">>> @unique\n"
@@ -424,15 +426,15 @@ msgid ""
 "ValueError: duplicate values found in <enum 'Mistake'>: FOUR -> THREE"
 msgstr ""
 
-#: howto/enum.rst:272
+#: howto/enum.rst:275
 msgid "Using automatic values"
 msgstr ""
 
-#: howto/enum.rst:274
+#: howto/enum.rst:277
 msgid "If the exact value is unimportant you can use :class:`auto`::"
 msgstr ""
 
-#: howto/enum.rst:276
+#: howto/enum.rst:279
 msgid ""
 ">>> from enum import Enum, auto\n"
 ">>> class Color(Enum):\n"
@@ -444,13 +446,13 @@ msgid ""
 "[1, 2, 3]"
 msgstr ""
 
-#: howto/enum.rst:285
+#: howto/enum.rst:288
 msgid ""
-"The values are chosen by :func:`_generate_next_value_`, which can be "
+"The values are chosen by :func:`~Enum._generate_next_value_`, which can be "
 "overridden::"
 msgstr ""
 
-#: howto/enum.rst:288
+#: howto/enum.rst:291
 msgid ""
 ">>> class AutoName(Enum):\n"
 "...     @staticmethod\n"
@@ -467,20 +469,21 @@ msgid ""
 "['NORTH', 'SOUTH', 'EAST', 'WEST']"
 msgstr ""
 
-#: howto/enum.rst:304
+#: howto/enum.rst:307
 msgid ""
-"The :meth:`_generate_next_value_` method must be defined before any members."
+"The :meth:`~Enum._generate_next_value_` method must be defined before any "
+"members."
 msgstr ""
 
-#: howto/enum.rst:307
+#: howto/enum.rst:310
 msgid "Iteration"
 msgstr ""
 
-#: howto/enum.rst:309
+#: howto/enum.rst:312
 msgid "Iterating over the members of an enum does not provide the aliases::"
 msgstr ""
 
-#: howto/enum.rst:311
+#: howto/enum.rst:314
 msgid ""
 ">>> list(Shape)\n"
 "[<Shape.SQUARE: 2>, <Shape.DIAMOND: 1>, <Shape.CIRCLE: 3>]\n"
@@ -490,20 +493,20 @@ msgid ""
 "64>]"
 msgstr ""
 
-#: howto/enum.rst:316
+#: howto/enum.rst:319
 msgid ""
 "Note that the aliases ``Shape.ALIAS_FOR_SQUARE`` and ``Weekday.WEEKEND`` "
 "aren't shown."
 msgstr ""
 
-#: howto/enum.rst:318
+#: howto/enum.rst:321
 msgid ""
 "The special attribute ``__members__`` is a read-only ordered mapping of "
 "names to members.  It includes all names defined in the enumeration, "
 "including the aliases::"
 msgstr ""
 
-#: howto/enum.rst:322
+#: howto/enum.rst:325
 msgid ""
 ">>> for name, member in Shape.__members__.items():\n"
 "...     name, member\n"
@@ -514,34 +517,34 @@ msgid ""
 "('ALIAS_FOR_SQUARE', <Shape.SQUARE: 2>)"
 msgstr ""
 
-#: howto/enum.rst:330
+#: howto/enum.rst:333
 msgid ""
 "The ``__members__`` attribute can be used for detailed programmatic access "
 "to the enumeration members.  For example, finding all the aliases::"
 msgstr ""
 
-#: howto/enum.rst:333
+#: howto/enum.rst:336
 msgid ""
 ">>> [name for name, member in Shape.__members__.items() if member.name != "
 "name]\n"
 "['ALIAS_FOR_SQUARE']"
 msgstr ""
 
-#: howto/enum.rst:338
+#: howto/enum.rst:341
 msgid ""
 "Aliases for flags include values with multiple flags set, such as ``3``, and "
 "no flags set, i.e. ``0``."
 msgstr ""
 
-#: howto/enum.rst:343
+#: howto/enum.rst:346
 msgid "Comparisons"
 msgstr ""
 
-#: howto/enum.rst:345
+#: howto/enum.rst:348
 msgid "Enumeration members are compared by identity::"
 msgstr ""
 
-#: howto/enum.rst:347
+#: howto/enum.rst:350
 msgid ""
 ">>> Color.RED is Color.RED\n"
 "True\n"
@@ -551,13 +554,13 @@ msgid ""
 "True"
 msgstr ""
 
-#: howto/enum.rst:354
+#: howto/enum.rst:357
 msgid ""
 "Ordered comparisons between enumeration values are *not* supported.  Enum "
 "members are not integers (but see `IntEnum`_ below)::"
 msgstr ""
 
-#: howto/enum.rst:357
+#: howto/enum.rst:360
 msgid ""
 ">>> Color.RED < Color.BLUE\n"
 "Traceback (most recent call last):\n"
@@ -565,11 +568,11 @@ msgid ""
 "TypeError: '<' not supported between instances of 'Color' and 'Color'"
 msgstr ""
 
-#: howto/enum.rst:362
+#: howto/enum.rst:365
 msgid "Equality comparisons are defined though::"
 msgstr ""
 
-#: howto/enum.rst:364
+#: howto/enum.rst:367
 msgid ""
 ">>> Color.BLUE == Color.RED\n"
 "False\n"
@@ -579,31 +582,31 @@ msgid ""
 "True"
 msgstr ""
 
-#: howto/enum.rst:371
+#: howto/enum.rst:374
 msgid ""
 "Comparisons against non-enumeration values will always compare not equal "
 "(again, :class:`IntEnum` was explicitly designed to behave differently, see "
 "below)::"
 msgstr ""
 
-#: howto/enum.rst:375
+#: howto/enum.rst:378
 msgid ""
 ">>> Color.BLUE == 2\n"
 "False"
 msgstr ""
 
-#: howto/enum.rst:380
+#: howto/enum.rst:383
 msgid ""
 "It is possible to reload modules -- if a reloaded module contains enums, "
 "they will be recreated, and the new members may not compare identical/equal "
 "to the original members."
 msgstr ""
 
-#: howto/enum.rst:385
+#: howto/enum.rst:388
 msgid "Allowed members and attributes of enumerations"
 msgstr ""
 
-#: howto/enum.rst:387
+#: howto/enum.rst:390
 msgid ""
 "Most of the examples above use integers for enumeration values.  Using "
 "integers is short and handy (and provided by default by the `Functional "
@@ -612,13 +615,13 @@ msgid ""
 "*is* important, enumerations can have arbitrary values."
 msgstr ""
 
-#: howto/enum.rst:393
+#: howto/enum.rst:396
 msgid ""
 "Enumerations are Python classes, and can have methods and special methods as "
 "usual.  If we have this enumeration::"
 msgstr ""
 
-#: howto/enum.rst:396
+#: howto/enum.rst:399
 msgid ""
 ">>> class Mood(Enum):\n"
 "...     FUNKY = 1\n"
@@ -638,11 +641,11 @@ msgid ""
 "..."
 msgstr ""
 
-#: howto/enum.rst:413
+#: howto/enum.rst:416
 msgid "Then::"
 msgstr ""
 
-#: howto/enum.rst:415
+#: howto/enum.rst:418
 msgid ""
 ">>> Mood.favorite_mood()\n"
 "<Mood.HAPPY: 3>\n"
@@ -652,55 +655,55 @@ msgid ""
 "'my custom str! 1'"
 msgstr ""
 
-#: howto/enum.rst:422
+#: howto/enum.rst:425
 msgid ""
 "The rules for what is allowed are as follows: names that start and end with "
 "a single underscore are reserved by enum and cannot be used; all other "
 "attributes defined within an enumeration will become members of this "
-"enumeration, with the exception of special methods (:meth:`__str__`, :meth:"
-"`__add__`, etc.), descriptors (methods are also descriptors), and variable "
-"names listed in :attr:`_ignore_`."
+"enumeration, with the exception of special methods (:meth:`~object."
+"__str__`, :meth:`~object.__add__`, etc.), descriptors (methods are also "
+"descriptors), and variable names listed in :attr:`~Enum._ignore_`."
 msgstr ""
 
-#: howto/enum.rst:429
+#: howto/enum.rst:432
 msgid ""
-"Note:  if your enumeration defines :meth:`__new__` and/or :meth:`__init__`, "
-"any value(s) given to the enum member will be passed into those methods. See "
-"`Planet`_ for an example."
+"Note:  if your enumeration defines :meth:`~object.__new__` and/or :meth:"
+"`~object.__init__`, any value(s) given to the enum member will be passed "
+"into those methods. See `Planet`_ for an example."
 msgstr ""
 
-#: howto/enum.rst:435
+#: howto/enum.rst:438
 msgid ""
-"The :meth:`__new__` method, if defined, is used during creation of the Enum "
-"members; it is then replaced by Enum's :meth:`__new__` which is used after "
-"class creation for lookup of existing members.  See :ref:`new-vs-init` for "
-"more details."
+"The :meth:`~object.__new__` method, if defined, is used during creation of "
+"the Enum members; it is then replaced by Enum's :meth:`~object.__new__` "
+"which is used after class creation for lookup of existing members.  See :ref:"
+"`new-vs-init` for more details."
 msgstr ""
 
-#: howto/enum.rst:442
+#: howto/enum.rst:445
 msgid "Restricted Enum subclassing"
 msgstr ""
 
-#: howto/enum.rst:444
+#: howto/enum.rst:447
 msgid ""
 "A new :class:`Enum` class must have one base enum class, up to one concrete "
 "data type, and as many :class:`object`-based mixin classes as needed.  The "
 "order of these base classes is::"
 msgstr ""
 
-#: howto/enum.rst:448
+#: howto/enum.rst:451
 msgid ""
 "class EnumName([mix-in, ...,] [data-type,] base-enum):\n"
 "    pass"
 msgstr ""
 
-#: howto/enum.rst:451
+#: howto/enum.rst:454
 msgid ""
 "Also, subclassing an enumeration is allowed only if the enumeration does not "
 "define any members.  So this is forbidden::"
 msgstr ""
 
-#: howto/enum.rst:454
+#: howto/enum.rst:457
 msgid ""
 ">>> class MoreColor(Color):\n"
 "...     PINK = 17\n"
@@ -710,11 +713,11 @@ msgid ""
 "TypeError: <enum 'MoreColor'> cannot extend <enum 'Color'>"
 msgstr ""
 
-#: howto/enum.rst:461
+#: howto/enum.rst:464
 msgid "But this is allowed::"
 msgstr ""
 
-#: howto/enum.rst:463
+#: howto/enum.rst:466
 msgid ""
 ">>> class Foo(Enum):\n"
 "...     def some_behavior(self):\n"
@@ -726,7 +729,7 @@ msgid ""
 "..."
 msgstr ""
 
-#: howto/enum.rst:472
+#: howto/enum.rst:475
 msgid ""
 "Allowing subclassing of enums that define members would lead to a violation "
 "of some important invariants of types and instances.  On the other hand, it "
@@ -734,17 +737,17 @@ msgid ""
 "enumerations. (See `OrderedEnum`_ for an example.)"
 msgstr ""
 
-#: howto/enum.rst:481
+#: howto/enum.rst:484
 msgid "Dataclass support"
 msgstr ""
 
-#: howto/enum.rst:483
+#: howto/enum.rst:486
 msgid ""
 "When inheriting from a :class:`~dataclasses.dataclass`, the :meth:`~Enum."
 "__repr__` omits the inherited class' name.  For example::"
 msgstr ""
 
-#: howto/enum.rst:486
+#: howto/enum.rst:489
 msgid ""
 ">>> from dataclasses import dataclass, field\n"
 ">>> @dataclass\n"
@@ -761,27 +764,27 @@ msgid ""
 "<Creature.DOG: size='medium', legs=4>"
 msgstr ""
 
-#: howto/enum.rst:500
+#: howto/enum.rst:503
 msgid ""
 "Use the :func:`!dataclass` argument ``repr=False`` to use the standard :func:"
 "`repr`."
 msgstr ""
 
-#: howto/enum.rst:503
+#: howto/enum.rst:506
 msgid ""
 "Only the dataclass fields are shown in the value area, not the dataclass' "
 "name."
 msgstr ""
 
-#: howto/enum.rst:509
+#: howto/enum.rst:512
 msgid "Pickling"
 msgstr ""
 
-#: howto/enum.rst:511
+#: howto/enum.rst:514
 msgid "Enumerations can be pickled and unpickled::"
 msgstr ""
 
-#: howto/enum.rst:513
+#: howto/enum.rst:516
 msgid ""
 ">>> from test.test_enum import Fruit\n"
 ">>> from pickle import dumps, loads\n"
@@ -789,49 +792,49 @@ msgid ""
 "True"
 msgstr ""
 
-#: howto/enum.rst:518
+#: howto/enum.rst:521
 msgid ""
 "The usual restrictions for pickling apply: picklable enums must be defined "
 "in the top level of a module, since unpickling requires them to be "
 "importable from that module."
 msgstr ""
 
-#: howto/enum.rst:524
+#: howto/enum.rst:527
 msgid ""
 "With pickle protocol version 4 it is possible to easily pickle enums nested "
 "in other classes."
 msgstr ""
 
-#: howto/enum.rst:527
+#: howto/enum.rst:530
 msgid ""
 "It is possible to modify how enum members are pickled/unpickled by defining :"
-"meth:`__reduce_ex__` in the enumeration class.  The default method is by-"
-"value, but enums with complicated values may want to use by-name::"
+"meth:`~object.__reduce_ex__` in the enumeration class.  The default method "
+"is by-value, but enums with complicated values may want to use by-name::"
 msgstr ""
 
-#: howto/enum.rst:531
+#: howto/enum.rst:534
 msgid ""
 ">>> import enum\n"
 ">>> class MyEnum(enum.Enum):\n"
 "...     __reduce_ex__ = enum.pickle_by_enum_name"
 msgstr ""
 
-#: howto/enum.rst:537
+#: howto/enum.rst:540
 msgid ""
 "Using by-name for flags is not recommended, as unnamed aliases will not "
 "unpickle."
 msgstr ""
 
-#: howto/enum.rst:542
+#: howto/enum.rst:545
 msgid "Functional API"
 msgstr ""
 
-#: howto/enum.rst:544
+#: howto/enum.rst:547
 msgid ""
 "The :class:`Enum` class is callable, providing the following functional API::"
 msgstr ""
 
-#: howto/enum.rst:546
+#: howto/enum.rst:549
 msgid ""
 ">>> Animal = Enum('Animal', 'ANT BEE CAT DOG')\n"
 ">>> Animal\n"
@@ -842,13 +845,13 @@ msgid ""
 "[<Animal.ANT: 1>, <Animal.BEE: 2>, <Animal.CAT: 3>, <Animal.DOG: 4>]"
 msgstr ""
 
-#: howto/enum.rst:554
+#: howto/enum.rst:557
 msgid ""
 "The semantics of this API resemble :class:`~collections.namedtuple`. The "
 "first argument of the call to :class:`Enum` is the name of the enumeration."
 msgstr ""
 
-#: howto/enum.rst:557
+#: howto/enum.rst:560
 msgid ""
 "The second argument is the *source* of enumeration member names.  It can be "
 "a whitespace-separated string of names, a sequence of names, a sequence of 2-"
@@ -857,10 +860,10 @@ msgid ""
 "enumerations; the others auto-assign increasing integers starting with 1 "
 "(use the ``start`` parameter to specify a different starting value).  A new "
 "class derived from :class:`Enum` is returned.  In other words, the above "
-"assignment to :class:`Animal` is equivalent to::"
+"assignment to :class:`!Animal` is equivalent to::"
 msgstr ""
 
-#: howto/enum.rst:566
+#: howto/enum.rst:569
 msgid ""
 ">>> class Animal(Enum):\n"
 "...     ANT = 1\n"
@@ -870,14 +873,14 @@ msgid ""
 "..."
 msgstr ""
 
-#: howto/enum.rst:573
+#: howto/enum.rst:576
 msgid ""
 "The reason for defaulting to ``1`` as the starting number and not ``0`` is "
 "that ``0`` is ``False`` in a boolean sense, but by default enum members all "
 "evaluate to ``True``."
 msgstr ""
 
-#: howto/enum.rst:577
+#: howto/enum.rst:580
 msgid ""
 "Pickling enums created with the functional API can be tricky as frame stack "
 "implementation details are used to try and figure out which module the "
@@ -886,18 +889,18 @@ msgid ""
 "Jython). The solution is to specify the module name explicitly as follows::"
 msgstr ""
 
-#: howto/enum.rst:583
+#: howto/enum.rst:586
 msgid ">>> Animal = Enum('Animal', 'ANT BEE CAT DOG', module=__name__)"
 msgstr ""
 
-#: howto/enum.rst:587
+#: howto/enum.rst:590
 msgid ""
 "If ``module`` is not supplied, and Enum cannot determine what it is, the new "
 "Enum members will not be unpicklable; to keep errors closer to the source, "
 "pickling will be disabled."
 msgstr ""
 
-#: howto/enum.rst:591
+#: howto/enum.rst:594
 msgid ""
 "The new pickle protocol 4 also, in some circumstances, relies on :attr:"
 "`~type.__qualname__` being set to the location where pickle will be able to "
@@ -905,16 +908,16 @@ msgid ""
 "SomeData in the global scope::"
 msgstr ""
 
-#: howto/enum.rst:596
+#: howto/enum.rst:599
 msgid ""
 ">>> Animal = Enum('Animal', 'ANT BEE CAT DOG', qualname='SomeData.Animal')"
 msgstr ""
 
-#: howto/enum.rst:598
+#: howto/enum.rst:601
 msgid "The complete signature is::"
 msgstr ""
 
-#: howto/enum.rst:600
+#: howto/enum.rst:603
 msgid ""
 "Enum(\n"
 "    value='NewEnumName',\n"
@@ -927,73 +930,73 @@ msgid ""
 "    )"
 msgstr ""
 
-#: howto/enum.rst:610
+#: howto/enum.rst:613
 msgid "*value*: What the new enum class will record as its name."
 msgstr ""
 
-#: howto/enum.rst:612
+#: howto/enum.rst:615
 msgid ""
 "*names*: The enum members.  This can be a whitespace- or comma-separated "
 "string (values will start at 1 unless otherwise specified)::"
 msgstr ""
 
-#: howto/enum.rst:615
+#: howto/enum.rst:618
 msgid "'RED GREEN BLUE' | 'RED,GREEN,BLUE' | 'RED, GREEN, BLUE'"
 msgstr ""
 
-#: howto/enum.rst:617
+#: howto/enum.rst:620
 msgid "or an iterator of names::"
 msgstr ""
 
-#: howto/enum.rst:619
+#: howto/enum.rst:622
 msgid "['RED', 'GREEN', 'BLUE']"
 msgstr ""
 
-#: howto/enum.rst:621
+#: howto/enum.rst:624
 msgid "or an iterator of (name, value) pairs::"
 msgstr ""
 
-#: howto/enum.rst:623
+#: howto/enum.rst:626
 msgid "[('CYAN', 4), ('MAGENTA', 5), ('YELLOW', 6)]"
 msgstr ""
 
-#: howto/enum.rst:625
+#: howto/enum.rst:628
 msgid "or a mapping::"
 msgstr ""
 
-#: howto/enum.rst:627
+#: howto/enum.rst:630
 msgid "{'CHARTREUSE': 7, 'SEA_GREEN': 11, 'ROSEMARY': 42}"
 msgstr ""
 
-#: howto/enum.rst:629
+#: howto/enum.rst:632
 msgid "*module*: name of module where new enum class can be found."
 msgstr ""
 
-#: howto/enum.rst:631
+#: howto/enum.rst:634
 msgid "*qualname*: where in module new enum class can be found."
 msgstr ""
 
-#: howto/enum.rst:633
+#: howto/enum.rst:636
 msgid "*type*: type to mix in to new enum class."
 msgstr ""
 
-#: howto/enum.rst:635
+#: howto/enum.rst:638
 msgid "*start*: number to start counting at if only names are passed in."
 msgstr ""
 
-#: howto/enum.rst:637
+#: howto/enum.rst:640
 msgid "The *start* parameter was added."
 msgstr ""
 
-#: howto/enum.rst:642
+#: howto/enum.rst:645
 msgid "Derived Enumerations"
 msgstr ""
 
-#: howto/enum.rst:645
+#: howto/enum.rst:648
 msgid "IntEnum"
 msgstr ""
 
-#: howto/enum.rst:647
+#: howto/enum.rst:650
 msgid ""
 "The first variation of :class:`Enum` that is provided is also a subclass of :"
 "class:`int`.  Members of an :class:`IntEnum` can be compared to integers; by "
@@ -1001,7 +1004,7 @@ msgid ""
 "each other::"
 msgstr ""
 
-#: howto/enum.rst:652
+#: howto/enum.rst:655
 msgid ""
 ">>> from enum import IntEnum\n"
 ">>> class Shape(IntEnum):\n"
@@ -1020,13 +1023,13 @@ msgid ""
 "True"
 msgstr ""
 
-#: howto/enum.rst:668
+#: howto/enum.rst:671
 msgid ""
 "However, they still can't be compared to standard :class:`Enum` "
 "enumerations::"
 msgstr ""
 
-#: howto/enum.rst:670
+#: howto/enum.rst:673
 msgid ""
 ">>> class Shape(IntEnum):\n"
 "...     CIRCLE = 1\n"
@@ -1040,12 +1043,12 @@ msgid ""
 "False"
 msgstr ""
 
-#: howto/enum.rst:681
+#: howto/enum.rst:684
 msgid ""
 ":class:`IntEnum` values behave like integers in other ways you'd expect::"
 msgstr ""
 
-#: howto/enum.rst:683
+#: howto/enum.rst:686
 msgid ""
 ">>> int(Shape.CIRCLE)\n"
 "1\n"
@@ -1055,11 +1058,11 @@ msgid ""
 "[0, 1]"
 msgstr ""
 
-#: howto/enum.rst:692
+#: howto/enum.rst:695
 msgid "StrEnum"
 msgstr ""
 
-#: howto/enum.rst:694
+#: howto/enum.rst:697
 msgid ""
 "The second variation of :class:`Enum` that is provided is also a subclass "
 "of :class:`str`.  Members of a :class:`StrEnum` can be compared to strings; "
@@ -1067,11 +1070,11 @@ msgid ""
 "each other."
 msgstr ""
 
-#: howto/enum.rst:703
+#: howto/enum.rst:706
 msgid "IntFlag"
 msgstr ""
 
-#: howto/enum.rst:705
+#: howto/enum.rst:708
 msgid ""
 "The next variation of :class:`Enum` provided, :class:`IntFlag`, is also "
 "based on :class:`int`.  The difference being :class:`IntFlag` members can be "
@@ -1081,23 +1084,23 @@ msgid ""
 "is used."
 msgstr ""
 
-#: howto/enum.rst:713
+#: howto/enum.rst:716
 msgid ""
 "Any operation on an :class:`IntFlag` member besides the bit-wise operations "
 "will lose the :class:`IntFlag` membership."
 msgstr ""
 
-#: howto/enum.rst:716
+#: howto/enum.rst:719
 msgid ""
 "Bit-wise operations that result in invalid :class:`IntFlag` values will lose "
 "the :class:`IntFlag` membership.  See :class:`FlagBoundary` for details."
 msgstr ""
 
-#: howto/enum.rst:723
+#: howto/enum.rst:726
 msgid "Sample :class:`IntFlag` class::"
 msgstr ""
 
-#: howto/enum.rst:725
+#: howto/enum.rst:728
 msgid ""
 ">>> from enum import IntFlag\n"
 ">>> class Perm(IntFlag):\n"
@@ -1114,11 +1117,11 @@ msgid ""
 "True"
 msgstr ""
 
-#: howto/enum.rst:739
+#: howto/enum.rst:742
 msgid "It is also possible to name the combinations::"
 msgstr ""
 
-#: howto/enum.rst:741
+#: howto/enum.rst:744
 msgid ""
 ">>> class Perm(IntFlag):\n"
 "...     R = 4\n"
@@ -1134,20 +1137,20 @@ msgid ""
 "<Perm.RWX: 7>"
 msgstr ""
 
-#: howto/enum.rst:756
+#: howto/enum.rst:759
 msgid ""
 "Named combinations are considered aliases.  Aliases do not show up during "
 "iteration, but can be returned from by-value lookups."
 msgstr ""
 
-#: howto/enum.rst:761
+#: howto/enum.rst:764
 msgid ""
 "Another important difference between :class:`IntFlag` and :class:`Enum` is "
 "that if no flags are set (the value is 0), its boolean evaluation is :data:"
 "`False`::"
 msgstr ""
 
-#: howto/enum.rst:764
+#: howto/enum.rst:767
 msgid ""
 ">>> Perm.R & Perm.X\n"
 "<Perm: 0>\n"
@@ -1155,13 +1158,13 @@ msgid ""
 "False"
 msgstr ""
 
-#: howto/enum.rst:769
+#: howto/enum.rst:772
 msgid ""
 "Because :class:`IntFlag` members are also subclasses of :class:`int` they "
 "can be combined with them (but may lose :class:`IntFlag` membership::"
 msgstr ""
 
-#: howto/enum.rst:772
+#: howto/enum.rst:775
 msgid ""
 ">>> Perm.X | 4\n"
 "<Perm.R|X: 5>\n"
@@ -1170,33 +1173,33 @@ msgid ""
 "9"
 msgstr ""
 
-#: howto/enum.rst:780
+#: howto/enum.rst:783
 msgid ""
 "The negation operator, ``~``, always returns an :class:`IntFlag` member with "
 "a positive value::"
 msgstr ""
 
-#: howto/enum.rst:783
+#: howto/enum.rst:786
 msgid ""
 ">>> (~Perm.X).value == (Perm.R|Perm.W).value == 6\n"
 "True"
 msgstr ""
 
-#: howto/enum.rst:786
+#: howto/enum.rst:789
 msgid ":class:`IntFlag` members can also be iterated over::"
 msgstr ""
 
-#: howto/enum.rst:788
+#: howto/enum.rst:791
 msgid ""
 ">>> list(RW)\n"
 "[<Perm.R: 4>, <Perm.W: 2>]"
 msgstr ""
 
-#: howto/enum.rst:795
+#: howto/enum.rst:798
 msgid "Flag"
 msgstr ""
 
-#: howto/enum.rst:797
+#: howto/enum.rst:800
 msgid ""
 "The last variation is :class:`Flag`.  Like :class:`IntFlag`, :class:`Flag` "
 "members can be combined using the bitwise operators (&, \\|, ^, ~).  Unlike :"
@@ -1206,13 +1209,13 @@ msgid ""
 "value and let :class:`Flag` select an appropriate value."
 msgstr ""
 
-#: howto/enum.rst:806
+#: howto/enum.rst:809
 msgid ""
 "Like :class:`IntFlag`, if a combination of :class:`Flag` members results in "
 "no flags being set, the boolean evaluation is :data:`False`::"
 msgstr ""
 
-#: howto/enum.rst:809
+#: howto/enum.rst:812
 msgid ""
 ">>> from enum import Flag, auto\n"
 ">>> class Color(Flag):\n"
@@ -1226,13 +1229,13 @@ msgid ""
 "False"
 msgstr ""
 
-#: howto/enum.rst:820
+#: howto/enum.rst:823
 msgid ""
 "Individual flags should have values that are powers of two (1, 2, 4, "
 "8, ...), while combinations of flags will not::"
 msgstr ""
 
-#: howto/enum.rst:823
+#: howto/enum.rst:826
 msgid ""
 ">>> class Color(Flag):\n"
 "...     RED = auto()\n"
@@ -1244,13 +1247,13 @@ msgid ""
 "<Color.WHITE: 7>"
 msgstr ""
 
-#: howto/enum.rst:832
+#: howto/enum.rst:835
 msgid ""
 "Giving a name to the \"no flags set\" condition does not change its boolean "
 "value::"
 msgstr ""
 
-#: howto/enum.rst:835
+#: howto/enum.rst:838
 msgid ""
 ">>> class Color(Flag):\n"
 "...     BLACK = 0\n"
@@ -1264,18 +1267,18 @@ msgid ""
 "False"
 msgstr ""
 
-#: howto/enum.rst:846
+#: howto/enum.rst:849
 msgid ":class:`Flag` members can also be iterated over::"
 msgstr ""
 
-#: howto/enum.rst:848
+#: howto/enum.rst:851
 msgid ""
 ">>> purple = Color.RED | Color.BLUE\n"
 ">>> list(purple)\n"
 "[<Color.RED: 1>, <Color.BLUE: 2>]"
 msgstr ""
 
-#: howto/enum.rst:856
+#: howto/enum.rst:859
 msgid ""
 "For the majority of new code, :class:`Enum` and :class:`Flag` are strongly "
 "recommended, since :class:`IntEnum` and :class:`IntFlag` break some semantic "
@@ -1286,48 +1289,48 @@ msgid ""
 "enumerations, or for interoperability with other systems."
 msgstr ""
 
-#: howto/enum.rst:866
+#: howto/enum.rst:869
 msgid "Others"
 msgstr ""
 
-#: howto/enum.rst:868
+#: howto/enum.rst:871
 msgid ""
 "While :class:`IntEnum` is part of the :mod:`enum` module, it would be very "
 "simple to implement independently::"
 msgstr ""
 
-#: howto/enum.rst:871
+#: howto/enum.rst:874
 msgid ""
 "class IntEnum(int, Enum):\n"
 "    pass"
 msgstr ""
 
-#: howto/enum.rst:874
+#: howto/enum.rst:877
 msgid ""
 "This demonstrates how similar derived enumerations can be defined; for "
-"example a :class:`FloatEnum` that mixes in :class:`float` instead of :class:"
+"example a :class:`!FloatEnum` that mixes in :class:`float` instead of :class:"
 "`int`."
 msgstr ""
 
-#: howto/enum.rst:877
+#: howto/enum.rst:880
 msgid "Some rules:"
 msgstr ""
 
-#: howto/enum.rst:879
+#: howto/enum.rst:882
 msgid ""
 "When subclassing :class:`Enum`, mix-in types must appear before :class:"
 "`Enum` itself in the sequence of bases, as in the :class:`IntEnum` example "
 "above."
 msgstr ""
 
-#: howto/enum.rst:882
+#: howto/enum.rst:885
 msgid ""
 "Mix-in types must be subclassable. For example, :class:`bool` and :class:"
 "`range` are not subclassable and will throw an error during Enum creation if "
 "used as the mix-in type."
 msgstr ""
 
-#: howto/enum.rst:885
+#: howto/enum.rst:888
 msgid ""
 "While :class:`Enum` can have members of any type, once you mix in an "
 "additional type, all the members must have values of that type, e.g. :class:"
@@ -1335,57 +1338,60 @@ msgid ""
 "methods and don't specify another type."
 msgstr ""
 
-#: howto/enum.rst:889
+#: howto/enum.rst:892
 msgid ""
-"When another data type is mixed in, the :attr:`value` attribute is *not the "
-"same* as the enum member itself, although it is equivalent and will compare "
-"equal."
+"When another data type is mixed in, the :attr:`~Enum.value` attribute is "
+"*not the same* as the enum member itself, although it is equivalent and will "
+"compare equal."
 msgstr ""
 
-#: howto/enum.rst:892
+#: howto/enum.rst:895
 msgid ""
-"A ``data type`` is a mixin that defines :meth:`__new__`, or a :class:"
+"A ``data type`` is a mixin that defines :meth:`~object.__new__`, or a :class:"
 "`~dataclasses.dataclass`"
 msgstr ""
 
-#: howto/enum.rst:894
+#: howto/enum.rst:897
 msgid ""
 "%-style formatting:  ``%s`` and ``%r`` call the :class:`Enum` class's :meth:"
-"`__str__` and :meth:`__repr__` respectively; other codes (such as ``%i`` or "
-"``%h`` for IntEnum) treat the enum member as its mixed-in type."
+"`~object.__str__` and :meth:`~object.__repr__` respectively; other codes "
+"(such as ``%i`` or ``%h`` for IntEnum) treat the enum member as its mixed-in "
+"type."
 msgstr ""
 
-#: howto/enum.rst:897
+#: howto/enum.rst:900
 msgid ""
 ":ref:`Formatted string literals <f-strings>`, :meth:`str.format`, and :func:"
-"`format` will use the enum's :meth:`__str__` method."
+"`format` will use the enum's :meth:`~object.__str__` method."
 msgstr ""
 
-#: howto/enum.rst:902
+#: howto/enum.rst:905
 msgid ""
 "Because :class:`IntEnum`, :class:`IntFlag`, and :class:`StrEnum` are "
 "designed to be drop-in replacements for existing constants, their :meth:"
-"`__str__` method has been reset to their data types' :meth:`__str__` method."
+"`~object.__str__` method has been reset to their data types' :meth:`~object."
+"__str__` method."
 msgstr ""
 
-#: howto/enum.rst:910
-msgid "When to use :meth:`__new__` vs. :meth:`__init__`"
+#: howto/enum.rst:913
+msgid "When to use :meth:`~object.__new__` vs. :meth:`~object.__init__`"
 msgstr ""
 
-#: howto/enum.rst:912
+#: howto/enum.rst:915
 msgid ""
-":meth:`__new__` must be used whenever you want to customize the actual value "
-"of the :class:`Enum` member.  Any other modifications may go in either :meth:"
-"`__new__` or :meth:`__init__`, with :meth:`__init__` being preferred."
+":meth:`~object.__new__` must be used whenever you want to customize the "
+"actual value of the :class:`Enum` member.  Any other modifications may go in "
+"either :meth:`~object.__new__` or :meth:`~object.__init__`, with :meth:"
+"`~object.__init__` being preferred."
 msgstr ""
 
-#: howto/enum.rst:916
+#: howto/enum.rst:919
 msgid ""
 "For example, if you want to pass several items to the constructor, but only "
 "want one of them to be the value::"
 msgstr ""
 
-#: howto/enum.rst:919
+#: howto/enum.rst:922
 msgid ""
 ">>> class Coordinate(bytes, Enum):\n"
 "...     \"\"\"\n"
@@ -1410,99 +1416,102 @@ msgid ""
 "Coordinate.VY"
 msgstr ""
 
-#: howto/enum.rst:943
+#: howto/enum.rst:946
 msgid ""
 "*Do not* call ``super().__new__()``, as the lookup-only ``__new__`` is the "
 "one that is found; instead, use the data type directly."
 msgstr ""
 
-#: howto/enum.rst:948
+#: howto/enum.rst:951
 msgid "Finer Points"
 msgstr ""
 
-#: howto/enum.rst:951
+#: howto/enum.rst:954
 msgid "Supported ``__dunder__`` names"
 msgstr ""
 
-#: howto/enum.rst:953
+#: howto/enum.rst:956
 msgid ""
-":attr:`__members__` is a read-only ordered mapping of ``member_name``:"
-"``member`` items.  It is only available on the class."
+":attr:`~enum.EnumType.__members__` is a read-only ordered mapping of "
+"``member_name``:``member`` items.  It is only available on the class."
 msgstr ""
 
-#: howto/enum.rst:956
+#: howto/enum.rst:959
 msgid ""
-":meth:`__new__`, if specified, must create and return the enum members; it "
-"is also a very good idea to set the member's :attr:`_value_` appropriately.  "
-"Once all the members are created it is no longer used."
+":meth:`~object.__new__`, if specified, must create and return the enum "
+"members; it is also a very good idea to set the member's :attr:`~Enum."
+"_value_` appropriately.  Once all the members are created it is no longer "
+"used."
 msgstr ""
 
-#: howto/enum.rst:962
+#: howto/enum.rst:965
 msgid "Supported ``_sunder_`` names"
 msgstr ""
 
-#: howto/enum.rst:964
-msgid "``_name_`` -- name of the member"
+#: howto/enum.rst:967
+msgid ":attr:`~Enum._name_` -- name of the member"
 msgstr ""
 
-#: howto/enum.rst:965
+#: howto/enum.rst:968
 msgid ""
-"``_value_`` -- value of the member; can be set / modified in ``__new__``"
+":attr:`~Enum._value_` -- value of the member; can be set / modified in "
+"``__new__``"
 msgstr ""
 
-#: howto/enum.rst:967
+#: howto/enum.rst:970
 msgid ""
-"``_missing_`` -- a lookup function used when a value is not found; may be "
-"overridden"
+":meth:`~Enum._missing_` -- a lookup function used when a value is not found; "
+"may be overridden"
 msgstr ""
 
-#: howto/enum.rst:969
+#: howto/enum.rst:972
 msgid ""
-"``_ignore_`` -- a list of names, either as a :class:`list` or a :class:"
-"`str`, that will not be transformed into members, and will be removed from "
-"the final class"
+":attr:`~Enum._ignore_` -- a list of names, either as a :class:`list` or a :"
+"class:`str`, that will not be transformed into members, and will be removed "
+"from the final class"
 msgstr ""
 
-#: howto/enum.rst:972
+#: howto/enum.rst:975
 msgid ""
-"``_order_`` -- used in Python 2/3 code to ensure member order is consistent "
-"(class attribute, removed during class creation)"
+":attr:`~Enum._order_` -- used in Python 2/3 code to ensure member order is "
+"consistent (class attribute, removed during class creation)"
 msgstr ""
 
-#: howto/enum.rst:974
+#: howto/enum.rst:977
 msgid ""
-"``_generate_next_value_`` -- used by the `Functional API`_ and by :class:"
-"`auto` to get an appropriate value for an enum member; may be overridden"
+":meth:`~Enum._generate_next_value_` -- used by the `Functional API`_ and by :"
+"class:`auto` to get an appropriate value for an enum member; may be "
+"overridden"
 msgstr ""
 
-#: howto/enum.rst:980
+#: howto/enum.rst:983
 msgid ""
 "For standard :class:`Enum` classes the next value chosen is the last value "
 "seen incremented by one."
 msgstr ""
 
-#: howto/enum.rst:983
+#: howto/enum.rst:986
 msgid ""
 "For :class:`Flag` classes the next value chosen will be the next highest "
 "power-of-two, regardless of the last value seen."
 msgstr ""
 
-#: howto/enum.rst:986
+#: howto/enum.rst:989
 msgid "``_missing_``, ``_order_``, ``_generate_next_value_``"
 msgstr ""
 
-#: howto/enum.rst:987
+#: howto/enum.rst:990
 msgid "``_ignore_``"
 msgstr ""
 
-#: howto/enum.rst:989
+#: howto/enum.rst:992
 msgid ""
-"To help keep Python 2 / Python 3 code in sync an :attr:`_order_` attribute "
-"can be provided.  It will be checked against the actual order of the "
-"enumeration and raise an error if the two do not match::"
+"To help keep Python 2 / Python 3 code in sync an :attr:`~Enum._order_` "
+"attribute can be provided.  It will be checked against the actual order of "
+"the enumeration and raise an error if the two do not match::"
 msgstr ""
 
-#: howto/enum.rst:993
+#: howto/enum.rst:996
 msgid ""
 ">>> class Color(Enum):\n"
 "...     _order_ = 'RED GREEN BLUE'\n"
@@ -1517,27 +1526,27 @@ msgid ""
 "  ['RED', 'GREEN', 'BLUE']"
 msgstr ""
 
-#: howto/enum.rst:1007
+#: howto/enum.rst:1010
 msgid ""
-"In Python 2 code the :attr:`_order_` attribute is necessary as definition "
-"order is lost before it can be recorded."
+"In Python 2 code the :attr:`~Enum._order_` attribute is necessary as "
+"definition order is lost before it can be recorded."
 msgstr ""
 
-#: howto/enum.rst:1012
+#: howto/enum.rst:1015
 msgid "_Private__names"
 msgstr ""
 
-#: howto/enum.rst:1014
+#: howto/enum.rst:1017
 msgid ""
 ":ref:`Private names <private-name-mangling>` are not converted to enum "
 "members, but remain normal attributes."
 msgstr ""
 
-#: howto/enum.rst:1021
+#: howto/enum.rst:1024
 msgid "``Enum`` member type"
 msgstr ""
 
-#: howto/enum.rst:1023
+#: howto/enum.rst:1026
 msgid ""
 "Enum members are instances of their enum class, and are normally accessed as "
 "``EnumClass.member``.  In certain situations, such as writing custom enum "
@@ -1547,18 +1556,18 @@ msgid ""
 "strongly recommended."
 msgstr ""
 
-#: howto/enum.rst:1034
+#: howto/enum.rst:1037
 msgid "Creating members that are mixed with other data types"
 msgstr ""
 
-#: howto/enum.rst:1036
+#: howto/enum.rst:1039
 msgid ""
 "When subclassing other data types, such as :class:`int` or :class:`str`, "
 "with an :class:`Enum`, all values after the ``=`` are passed to that data "
 "type's constructor.  For example::"
 msgstr ""
 
-#: howto/enum.rst:1040
+#: howto/enum.rst:1043
 msgid ""
 ">>> class MyEnum(IntEnum):      # help(int) -> int(x, base=10) -> integer\n"
 "...     example = '11', 16      # so x='11' and base=16\n"
@@ -1567,11 +1576,11 @@ msgid ""
 "17"
 msgstr ""
 
-#: howto/enum.rst:1048
+#: howto/enum.rst:1051
 msgid "Boolean value of ``Enum`` classes and members"
 msgstr ""
 
-#: howto/enum.rst:1050
+#: howto/enum.rst:1053
 msgid ""
 "Enum classes that are mixed with non-:class:`Enum` types (such as :class:"
 "`int`, :class:`str`, etc.) are evaluated according to the mixed-in type's "
@@ -1580,48 +1589,48 @@ msgid ""
 "your class::"
 msgstr ""
 
-#: howto/enum.rst:1056
+#: howto/enum.rst:1059
 msgid ""
 "def __bool__(self):\n"
 "    return bool(self.value)"
 msgstr ""
 
-#: howto/enum.rst:1059
+#: howto/enum.rst:1062
 msgid "Plain :class:`Enum` classes always evaluate as :data:`True`."
 msgstr ""
 
-#: howto/enum.rst:1063
+#: howto/enum.rst:1066
 msgid "``Enum`` classes with methods"
 msgstr ""
 
-#: howto/enum.rst:1065
+#: howto/enum.rst:1068
 msgid ""
 "If you give your enum subclass extra methods, like the `Planet`_ class "
 "below, those methods will show up in a :func:`dir` of the member, but not of "
 "the class::"
 msgstr ""
 
-#: howto/enum.rst:1069
+#: howto/enum.rst:1072
 msgid ""
-">>> dir(Planet)                         \n"
+">>> dir(Planet)\n"
 "['EARTH', 'JUPITER', 'MARS', 'MERCURY', 'NEPTUNE', 'SATURN', 'URANUS', "
 "'VENUS', '__class__', '__doc__', '__members__', '__module__']\n"
-">>> dir(Planet.EARTH)                   \n"
+">>> dir(Planet.EARTH)\n"
 "['__class__', '__doc__', '__module__', 'mass', 'name', 'radius', "
 "'surface_gravity', 'value']"
 msgstr ""
 
-#: howto/enum.rst:1076
+#: howto/enum.rst:1079
 msgid "Combining members of ``Flag``"
 msgstr ""
 
-#: howto/enum.rst:1078
+#: howto/enum.rst:1081
 msgid ""
 "Iterating over a combination of :class:`Flag` members will only return the "
 "members that are comprised of a single bit::"
 msgstr ""
 
-#: howto/enum.rst:1081
+#: howto/enum.rst:1084
 msgid ""
 ">>> class Color(Flag):\n"
 "...     RED = auto()\n"
@@ -1637,15 +1646,15 @@ msgid ""
 "<Color.RED|GREEN|BLUE: 7>"
 msgstr ""
 
-#: howto/enum.rst:1096
+#: howto/enum.rst:1099
 msgid "``Flag`` and ``IntFlag`` minutia"
 msgstr ""
 
-#: howto/enum.rst:1098
+#: howto/enum.rst:1101
 msgid "Using the following snippet for our examples::"
 msgstr ""
 
-#: howto/enum.rst:1100
+#: howto/enum.rst:1103
 msgid ""
 ">>> class Color(IntFlag):\n"
 "...     BLACK = 0\n"
@@ -1657,35 +1666,35 @@ msgid ""
 "..."
 msgstr ""
 
-#: howto/enum.rst:1109
+#: howto/enum.rst:1112
 msgid "the following are true:"
 msgstr ""
 
-#: howto/enum.rst:1111
+#: howto/enum.rst:1114
 msgid "single-bit flags are canonical"
 msgstr ""
 
-#: howto/enum.rst:1112
+#: howto/enum.rst:1115
 msgid "multi-bit and zero-bit flags are aliases"
 msgstr ""
 
-#: howto/enum.rst:1113
+#: howto/enum.rst:1116
 msgid "only canonical flags are returned during iteration::"
 msgstr ""
 
-#: howto/enum.rst:1115
+#: howto/enum.rst:1118
 msgid ""
 ">>> list(Color.WHITE)\n"
 "[<Color.RED: 1>, <Color.GREEN: 2>, <Color.BLUE: 4>]"
 msgstr ""
 
-#: howto/enum.rst:1118
+#: howto/enum.rst:1121
 msgid ""
 "negating a flag or flag set returns a new flag/flag set with the "
 "corresponding positive integer value::"
 msgstr ""
 
-#: howto/enum.rst:1121
+#: howto/enum.rst:1124
 msgid ""
 ">>> Color.BLUE\n"
 "<Color.BLUE: 4>\n"
@@ -1694,11 +1703,11 @@ msgid ""
 "<Color.RED|GREEN: 3>"
 msgstr ""
 
-#: howto/enum.rst:1127
+#: howto/enum.rst:1130
 msgid "names of pseudo-flags are constructed from their members' names::"
 msgstr ""
 
-#: howto/enum.rst:1129
+#: howto/enum.rst:1132
 msgid ""
 ">>> (Color.RED | Color.GREEN).name\n"
 "'RED|GREEN'\n"
@@ -1712,11 +1721,11 @@ msgid ""
 "True"
 msgstr ""
 
-#: howto/enum.rst:1140
+#: howto/enum.rst:1143
 msgid "multi-bit flags, aka aliases, can be returned from operations::"
 msgstr ""
 
-#: howto/enum.rst:1142
+#: howto/enum.rst:1145
 msgid ""
 ">>> Color.RED | Color.BLUE\n"
 "<Color.PURPLE: 5>\n"
@@ -1728,25 +1737,25 @@ msgid ""
 "<Color.BLACK: 0>"
 msgstr ""
 
-#: howto/enum.rst:1151
+#: howto/enum.rst:1154
 msgid ""
 "membership / containment checking: zero-valued flags are always considered "
 "to be contained::"
 msgstr ""
 
-#: howto/enum.rst:1154
+#: howto/enum.rst:1157
 msgid ""
 ">>> Color.BLACK in Color.WHITE\n"
 "True"
 msgstr ""
 
-#: howto/enum.rst:1157
+#: howto/enum.rst:1160
 msgid ""
 "otherwise, only if all bits of one flag are in the other flag will True be "
 "returned::"
 msgstr ""
 
-#: howto/enum.rst:1160
+#: howto/enum.rst:1163
 msgid ""
 ">>> Color.PURPLE in Color.WHITE\n"
 "True\n"
@@ -1755,77 +1764,78 @@ msgid ""
 "False"
 msgstr ""
 
-#: howto/enum.rst:1166
+#: howto/enum.rst:1169
 msgid ""
 "There is a new boundary mechanism that controls how out-of-range / invalid "
 "bits are handled: ``STRICT``, ``CONFORM``, ``EJECT``, and ``KEEP``:"
 msgstr ""
 
-#: howto/enum.rst:1169
+#: howto/enum.rst:1172
 msgid "STRICT --> raises an exception when presented with invalid values"
 msgstr ""
 
-#: howto/enum.rst:1170
+#: howto/enum.rst:1173
 msgid "CONFORM --> discards any invalid bits"
 msgstr ""
 
-#: howto/enum.rst:1171
+#: howto/enum.rst:1174
 msgid "EJECT --> lose Flag status and become a normal int with the given value"
 msgstr ""
 
-#: howto/enum.rst:1172
+#: howto/enum.rst:1175
 msgid "KEEP --> keep the extra bits"
 msgstr ""
 
-#: howto/enum.rst:1174
+#: howto/enum.rst:1177
 msgid "keeps Flag status and extra bits"
 msgstr ""
 
-#: howto/enum.rst:1175
+#: howto/enum.rst:1178
 msgid "extra bits do not show up in iteration"
 msgstr ""
 
-#: howto/enum.rst:1176
+#: howto/enum.rst:1179
 msgid "extra bits do show up in repr() and str()"
 msgstr ""
 
-#: howto/enum.rst:1178
+#: howto/enum.rst:1181
 msgid ""
 "The default for Flag is ``STRICT``, the default for ``IntFlag`` is "
 "``EJECT``, and the default for ``_convert_`` is ``KEEP`` (see ``ssl."
 "Options`` for an example of when ``KEEP`` is needed)."
 msgstr ""
 
-#: howto/enum.rst:1186
+#: howto/enum.rst:1189
 msgid "How are Enums and Flags different?"
 msgstr ""
 
-#: howto/enum.rst:1188
+#: howto/enum.rst:1191
 msgid ""
 "Enums have a custom metaclass that affects many aspects of both derived :"
 "class:`Enum` classes and their instances (members)."
 msgstr ""
 
-#: howto/enum.rst:1193
+#: howto/enum.rst:1196
 msgid "Enum Classes"
 msgstr ""
 
-#: howto/enum.rst:1195
+#: howto/enum.rst:1198
 msgid ""
 "The :class:`EnumType` metaclass is responsible for providing the :meth:"
-"`__contains__`, :meth:`__dir__`, :meth:`__iter__` and other methods that "
-"allow one to do things with an :class:`Enum` class that fail on a typical "
-"class, such as ``list(Color)`` or ``some_enum_var in Color``.  :class:"
-"`EnumType` is responsible for ensuring that various other methods on the "
-"final :class:`Enum` class are correct (such as :meth:`__new__`, :meth:"
-"`__getnewargs__`, :meth:`__str__` and :meth:`__repr__`)."
+"`~object.__contains__`, :meth:`~object.__dir__`, :meth:`~object.__iter__` "
+"and other methods that allow one to do things with an :class:`Enum` class "
+"that fail on a typical class, such as ``list(Color)`` or ``some_enum_var in "
+"Color``.  :class:`EnumType` is responsible for ensuring that various other "
+"methods on the final :class:`Enum` class are correct (such as :meth:`~object."
+"__new__`, :meth:`~object.__getnewargs__`, :meth:`~object.__str__` and :meth:"
+"`~object.__repr__`)."
 msgstr ""
 
-#: howto/enum.rst:1204
+#: howto/enum.rst:1207
 msgid "Flag Classes"
 msgstr ""
 
-#: howto/enum.rst:1206
+#: howto/enum.rst:1209
 msgid ""
 "Flags have an expanded view of aliasing: to be canonical, the value of a "
 "flag needs to be a power-of-two value, and not a duplicate name.  So, in "
@@ -1834,68 +1844,68 @@ msgid ""
 "considered an alias."
 msgstr ""
 
-#: howto/enum.rst:1212
+#: howto/enum.rst:1215
 msgid "Enum Members (aka instances)"
 msgstr ""
 
-#: howto/enum.rst:1214
+#: howto/enum.rst:1217
 msgid ""
 "The most interesting thing about enum members is that they are singletons. :"
 "class:`EnumType` creates them all while it is creating the enum class "
-"itself, and then puts a custom :meth:`__new__` in place to ensure that no "
-"new ones are ever instantiated by returning only the existing member "
+"itself, and then puts a custom :meth:`~object.__new__` in place to ensure "
+"that no new ones are ever instantiated by returning only the existing member "
 "instances."
 msgstr ""
 
-#: howto/enum.rst:1220
+#: howto/enum.rst:1223
 msgid "Flag Members"
 msgstr ""
 
-#: howto/enum.rst:1222
+#: howto/enum.rst:1225
 msgid ""
 "Flag members can be iterated over just like the :class:`Flag` class, and "
 "only the canonical members will be returned.  For example::"
 msgstr ""
 
-#: howto/enum.rst:1225
+#: howto/enum.rst:1228
 msgid ""
 ">>> list(Color)\n"
 "[<Color.RED: 1>, <Color.GREEN: 2>, <Color.BLUE: 4>]"
 msgstr ""
 
-#: howto/enum.rst:1228
+#: howto/enum.rst:1231
 msgid "(Note that ``BLACK``, ``PURPLE``, and ``WHITE`` do not show up.)"
 msgstr ""
 
-#: howto/enum.rst:1230
+#: howto/enum.rst:1233
 msgid ""
 "Inverting a flag member returns the corresponding positive value, rather "
 "than a negative value --- for example::"
 msgstr ""
 
-#: howto/enum.rst:1233
+#: howto/enum.rst:1236
 msgid ""
 ">>> ~Color.RED\n"
 "<Color.GREEN|BLUE: 6>"
 msgstr ""
 
-#: howto/enum.rst:1236
+#: howto/enum.rst:1239
 msgid ""
 "Flag members have a length corresponding to the number of power-of-two "
 "values they contain.  For example::"
 msgstr ""
 
-#: howto/enum.rst:1239
+#: howto/enum.rst:1242
 msgid ""
 ">>> len(Color.PURPLE)\n"
 "2"
 msgstr ""
 
-#: howto/enum.rst:1246
+#: howto/enum.rst:1249
 msgid "Enum Cookbook"
 msgstr ""
 
-#: howto/enum.rst:1249
+#: howto/enum.rst:1252
 msgid ""
 "While :class:`Enum`, :class:`IntEnum`, :class:`StrEnum`, :class:`Flag`, and :"
 "class:`IntFlag` are expected to cover the majority of use-cases, they cannot "
@@ -1903,50 +1913,50 @@ msgid ""
 "that can be used directly, or as examples for creating one's own."
 msgstr ""
 
-#: howto/enum.rst:1256
+#: howto/enum.rst:1259
 msgid "Omitting values"
 msgstr ""
 
-#: howto/enum.rst:1258
+#: howto/enum.rst:1261
 msgid ""
 "In many use-cases, one doesn't care what the actual value of an enumeration "
 "is. There are several ways to define this type of simple enumeration:"
 msgstr ""
 
-#: howto/enum.rst:1261
+#: howto/enum.rst:1264
 msgid "use instances of :class:`auto` for the value"
 msgstr ""
 
-#: howto/enum.rst:1262
+#: howto/enum.rst:1265
 msgid "use instances of :class:`object` as the value"
 msgstr ""
 
-#: howto/enum.rst:1263
+#: howto/enum.rst:1266
 msgid "use a descriptive string as the value"
 msgstr ""
 
-#: howto/enum.rst:1264
+#: howto/enum.rst:1267
 msgid ""
-"use a tuple as the value and a custom :meth:`__new__` to replace the tuple "
-"with an :class:`int` value"
+"use a tuple as the value and a custom :meth:`~object.__new__` to replace the "
+"tuple with an :class:`int` value"
 msgstr ""
 
-#: howto/enum.rst:1267
+#: howto/enum.rst:1270
 msgid ""
 "Using any of these methods signifies to the user that these values are not "
 "important, and also enables one to add, remove, or reorder members without "
 "having to renumber the remaining members."
 msgstr ""
 
-#: howto/enum.rst:1273
+#: howto/enum.rst:1276
 msgid "Using :class:`auto`"
 msgstr ""
 
-#: howto/enum.rst:1275
+#: howto/enum.rst:1278
 msgid "Using :class:`auto` would look like::"
 msgstr ""
 
-#: howto/enum.rst:1277
+#: howto/enum.rst:1280
 msgid ""
 ">>> class Color(Enum):\n"
 "...     RED = auto()\n"
@@ -1957,32 +1967,32 @@ msgid ""
 "<Color.GREEN: 3>"
 msgstr ""
 
-#: howto/enum.rst:1287
+#: howto/enum.rst:1290
 msgid "Using :class:`object`"
 msgstr ""
 
-#: howto/enum.rst:1289
+#: howto/enum.rst:1292
 msgid "Using :class:`object` would look like::"
 msgstr ""
 
-#: howto/enum.rst:1291
+#: howto/enum.rst:1294
 msgid ""
 ">>> class Color(Enum):\n"
 "...     RED = object()\n"
 "...     GREEN = object()\n"
 "...     BLUE = object()\n"
 "...\n"
-">>> Color.GREEN                         \n"
+">>> Color.GREEN\n"
 "<Color.GREEN: <object object at 0x...>>"
 msgstr ""
 
-#: howto/enum.rst:1299
+#: howto/enum.rst:1302
 msgid ""
 "This is also a good example of why you might want to write your own :meth:"
-"`__repr__`::"
+"`~object.__repr__`::"
 msgstr ""
 
-#: howto/enum.rst:1302
+#: howto/enum.rst:1305
 msgid ""
 ">>> class Color(Enum):\n"
 "...     RED = object()\n"
@@ -1995,15 +2005,15 @@ msgid ""
 "<Color.GREEN>"
 msgstr ""
 
-#: howto/enum.rst:1315
+#: howto/enum.rst:1318
 msgid "Using a descriptive string"
 msgstr ""
 
-#: howto/enum.rst:1317
+#: howto/enum.rst:1320
 msgid "Using a string as the value would look like::"
 msgstr ""
 
-#: howto/enum.rst:1319
+#: howto/enum.rst:1322
 msgid ""
 ">>> class Color(Enum):\n"
 "...     RED = 'stop'\n"
@@ -2014,15 +2024,15 @@ msgid ""
 "<Color.GREEN: 'go'>"
 msgstr ""
 
-#: howto/enum.rst:1329
-msgid "Using a custom :meth:`__new__`"
+#: howto/enum.rst:1332
+msgid "Using a custom :meth:`~object.__new__`"
 msgstr ""
 
-#: howto/enum.rst:1331
-msgid "Using an auto-numbering :meth:`__new__` would look like::"
+#: howto/enum.rst:1334
+msgid "Using an auto-numbering :meth:`~object.__new__` would look like::"
 msgstr ""
 
-#: howto/enum.rst:1333
+#: howto/enum.rst:1336
 msgid ""
 ">>> class AutoNumber(Enum):\n"
 "...     def __new__(cls):\n"
@@ -2040,13 +2050,13 @@ msgid ""
 "<Color.GREEN: 2>"
 msgstr ""
 
-#: howto/enum.rst:1348
+#: howto/enum.rst:1351
 msgid ""
 "To make a more general purpose ``AutoNumber``, add ``*args`` to the "
 "signature::"
 msgstr ""
 
-#: howto/enum.rst:1350
+#: howto/enum.rst:1353
 msgid ""
 ">>> class AutoNumber(Enum):\n"
 "...     def __new__(cls, *args):      # this is the only change from above\n"
@@ -2057,13 +2067,13 @@ msgid ""
 "..."
 msgstr ""
 
-#: howto/enum.rst:1358
+#: howto/enum.rst:1361
 msgid ""
 "Then when you inherit from ``AutoNumber`` you can write your own "
 "``__init__`` to handle any extra arguments::"
 msgstr ""
 
-#: howto/enum.rst:1361
+#: howto/enum.rst:1364
 msgid ""
 ">>> class Swatch(AutoNumber):\n"
 "...     def __init__(self, pantone='unknown'):\n"
@@ -2080,35 +2090,35 @@ msgid ""
 "'unknown'"
 msgstr ""
 
-#: howto/enum.rst:1377
+#: howto/enum.rst:1380
 msgid ""
-"The :meth:`__new__` method, if defined, is used during creation of the Enum "
-"members; it is then replaced by Enum's :meth:`__new__` which is used after "
-"class creation for lookup of existing members."
+"The :meth:`~object.__new__` method, if defined, is used during creation of "
+"the Enum members; it is then replaced by Enum's :meth:`~object.__new__` "
+"which is used after class creation for lookup of existing members."
 msgstr ""
 
-#: howto/enum.rst:1383
+#: howto/enum.rst:1386
 msgid ""
 "*Do not* call ``super().__new__()``, as the lookup-only ``__new__`` is the "
 "one that is found; instead, use the data type directly -- e.g.::"
 msgstr ""
 
-#: howto/enum.rst:1386
+#: howto/enum.rst:1389
 msgid "obj = int.__new__(cls, value)"
 msgstr ""
 
-#: howto/enum.rst:1390
+#: howto/enum.rst:1393
 msgid "OrderedEnum"
 msgstr ""
 
-#: howto/enum.rst:1392
+#: howto/enum.rst:1395
 msgid ""
 "An ordered enumeration that is not based on :class:`IntEnum` and so "
 "maintains the normal :class:`Enum` invariants (such as not being comparable "
 "to other enumerations)::"
 msgstr ""
 
-#: howto/enum.rst:1396
+#: howto/enum.rst:1399
 msgid ""
 ">>> class OrderedEnum(Enum):\n"
 "...     def __ge__(self, other):\n"
@@ -2139,17 +2149,17 @@ msgid ""
 "True"
 msgstr ""
 
-#: howto/enum.rst:1426
+#: howto/enum.rst:1429
 msgid "DuplicateFreeEnum"
 msgstr ""
 
-#: howto/enum.rst:1428
+#: howto/enum.rst:1431
 msgid ""
 "Raises an error if a duplicate member value is found instead of creating an "
 "alias::"
 msgstr ""
 
-#: howto/enum.rst:1431
+#: howto/enum.rst:1434
 msgid ""
 ">>> class DuplicateFreeEnum(Enum):\n"
 "...     def __init__(self, *args):\n"
@@ -2173,24 +2183,24 @@ msgid ""
 "ValueError: aliases not allowed in DuplicateFreeEnum:  'GRENE' --> 'GREEN'"
 msgstr ""
 
-#: howto/enum.rst:1453
+#: howto/enum.rst:1456
 msgid ""
 "This is a useful example for subclassing Enum to add or change other "
 "behaviors as well as disallowing aliases.  If the only desired change is "
 "disallowing aliases, the :func:`unique` decorator can be used instead."
 msgstr ""
 
-#: howto/enum.rst:1459
+#: howto/enum.rst:1462
 msgid "Planet"
 msgstr ""
 
-#: howto/enum.rst:1461
+#: howto/enum.rst:1464
 msgid ""
-"If :meth:`__new__` or :meth:`__init__` is defined, the value of the enum "
-"member will be passed to those methods::"
+"If :meth:`~object.__new__` or :meth:`~object.__init__` is defined, the value "
+"of the enum member will be passed to those methods::"
 msgstr ""
 
-#: howto/enum.rst:1464
+#: howto/enum.rst:1467
 msgid ""
 ">>> class Planet(Enum):\n"
 "...     MERCURY = (3.303e+23, 2.4397e6)\n"
@@ -2216,15 +2226,15 @@ msgid ""
 "9.802652743337129"
 msgstr ""
 
-#: howto/enum.rst:1490
+#: howto/enum.rst:1493
 msgid "TimePeriod"
 msgstr ""
 
-#: howto/enum.rst:1492
-msgid "An example to show the :attr:`_ignore_` attribute in use::"
+#: howto/enum.rst:1495
+msgid "An example to show the :attr:`~Enum._ignore_` attribute in use::"
 msgstr ""
 
-#: howto/enum.rst:1494
+#: howto/enum.rst:1497
 msgid ""
 ">>> from datetime import timedelta\n"
 ">>> class Period(timedelta, Enum):\n"
@@ -2242,11 +2252,11 @@ msgid ""
 "timedelta(days=366)>]"
 msgstr ""
 
-#: howto/enum.rst:1511
+#: howto/enum.rst:1514
 msgid "Subclassing EnumType"
 msgstr ""
 
-#: howto/enum.rst:1513
+#: howto/enum.rst:1516
 msgid ""
 "While most enum needs can be met by customizing :class:`Enum` subclasses, "
 "either with class decorators or custom functions, :class:`EnumType` can be "
diff --git a/howto/functional.po b/howto/functional.po
index 99a128153..0abae900f 100644
--- a/howto/functional.po
+++ b/howto/functional.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -16,7 +16,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: howto/functional.rst:3
+#: howto/functional.rst:5
 msgid "Functional Programming HOWTO"
 msgstr ""
 
@@ -24,7 +24,7 @@ msgstr ""
 msgid "Author"
 msgstr ""
 
-#: howto/functional.rst:5
+#: howto/functional.rst:7
 msgid "A. M. Kuchling"
 msgstr ""
 
@@ -32,11 +32,11 @@ msgstr ""
 msgid "Release"
 msgstr ""
 
-#: howto/functional.rst:6
+#: howto/functional.rst:8
 msgid "0.32"
 msgstr ""
 
-#: howto/functional.rst:8
+#: howto/functional.rst:10
 msgid ""
 "In this document, we'll take a tour of Python's features suitable for "
 "implementing programs in a functional style.  After an introduction to the "
@@ -45,30 +45,30 @@ msgid ""
 "such as :mod:`itertools` and :mod:`functools`."
 msgstr ""
 
-#: howto/functional.rst:16
+#: howto/functional.rst:18
 msgid "Introduction"
 msgstr ""
 
-#: howto/functional.rst:18
+#: howto/functional.rst:20
 msgid ""
 "This section explains the basic concept of functional programming; if you're "
 "just interested in learning about Python language features, skip to the next "
 "section on :ref:`functional-howto-iterators`."
 msgstr ""
 
-#: howto/functional.rst:22
+#: howto/functional.rst:24
 msgid ""
 "Programming languages support decomposing problems in several different ways:"
 msgstr ""
 
-#: howto/functional.rst:24
+#: howto/functional.rst:26
 msgid ""
 "Most programming languages are **procedural**: programs are lists of "
 "instructions that tell the computer what to do with the program's input.  C, "
 "Pascal, and even Unix shells are procedural languages."
 msgstr ""
 
-#: howto/functional.rst:28
+#: howto/functional.rst:30
 msgid ""
 "In **declarative** languages, you write a specification that describes the "
 "problem to be solved, and the language implementation figures out how to "
@@ -78,7 +78,7 @@ msgid ""
 "indexes, which subclauses should be performed first, etc."
 msgstr ""
 
-#: howto/functional.rst:35
+#: howto/functional.rst:37
 msgid ""
 "**Object-oriented** programs manipulate collections of objects.  Objects "
 "have internal state and support methods that query or modify this internal "
@@ -87,7 +87,7 @@ msgid ""
 "force the use of object-oriented features."
 msgstr ""
 
-#: howto/functional.rst:41
+#: howto/functional.rst:43
 msgid ""
 "**Functional** programming decomposes a problem into a set of functions. "
 "Ideally, functions only take inputs and produce outputs, and don't have any "
@@ -96,7 +96,7 @@ msgid ""
 "other variants) and Haskell."
 msgstr ""
 
-#: howto/functional.rst:47
+#: howto/functional.rst:49
 msgid ""
 "The designers of some computer languages choose to emphasize one particular "
 "approach to programming.  This often makes it difficult to write programs "
@@ -109,7 +109,7 @@ msgid ""
 "functional, for example."
 msgstr ""
 
-#: howto/functional.rst:58
+#: howto/functional.rst:60
 msgid ""
 "In a functional program, input flows through a set of functions. Each "
 "function operates on its input and produces some output.  Functional style "
@@ -120,7 +120,7 @@ msgid ""
 "runs; every function's output must only depend on its input."
 msgstr ""
 
-#: howto/functional.rst:66
+#: howto/functional.rst:68
 msgid ""
 "Some languages are very strict about purity and don't even have assignment "
 "statements such as ``a=3`` or ``c = a + b``, but it's difficult to avoid all "
@@ -131,7 +131,7 @@ msgid ""
 "for a second."
 msgstr ""
 
-#: howto/functional.rst:73
+#: howto/functional.rst:75
 msgid ""
 "Python programs written in functional style usually won't go to the extreme "
 "of avoiding all I/O or all assignments; instead, they'll provide a "
@@ -141,7 +141,7 @@ msgid ""
 "other side effects."
 msgstr ""
 
-#: howto/functional.rst:79
+#: howto/functional.rst:81
 msgid ""
 "Functional programming can be considered the opposite of object-oriented "
 "programming.  Objects are little capsules containing some internal state "
@@ -153,40 +153,40 @@ msgid ""
 "objects in your application (e-mail messages, transactions, etc.)."
 msgstr ""
 
-#: howto/functional.rst:88
+#: howto/functional.rst:90
 msgid ""
 "Functional design may seem like an odd constraint to work under.  Why should "
 "you avoid objects and side effects?  There are theoretical and practical "
 "advantages to the functional style:"
 msgstr ""
 
-#: howto/functional.rst:92
+#: howto/functional.rst:94
 msgid "Formal provability."
 msgstr ""
 
-#: howto/functional.rst:93
+#: howto/functional.rst:95
 msgid "Modularity."
 msgstr ""
 
-#: howto/functional.rst:94
+#: howto/functional.rst:96
 msgid "Composability."
 msgstr ""
 
-#: howto/functional.rst:95
+#: howto/functional.rst:97
 msgid "Ease of debugging and testing."
 msgstr ""
 
-#: howto/functional.rst:99
+#: howto/functional.rst:101
 msgid "Formal provability"
 msgstr ""
 
-#: howto/functional.rst:101
+#: howto/functional.rst:103
 msgid ""
 "A theoretical benefit is that it's easier to construct a mathematical proof "
 "that a functional program is correct."
 msgstr ""
 
-#: howto/functional.rst:104
+#: howto/functional.rst:106
 msgid ""
 "For a long time researchers have been interested in finding ways to "
 "mathematically prove programs correct.  This is different from testing a "
@@ -196,7 +196,7 @@ msgid ""
 "the right result for all possible inputs."
 msgstr ""
 
-#: howto/functional.rst:111
+#: howto/functional.rst:113
 msgid ""
 "The technique used to prove programs correct is to write down "
 "**invariants**, properties of the input data and of the program's variables "
@@ -207,7 +207,7 @@ msgid ""
 "invariants should match the desired conditions on the program's output."
 msgstr ""
 
-#: howto/functional.rst:119
+#: howto/functional.rst:121
 msgid ""
 "Functional programming's avoidance of assignments arose because assignments "
 "are difficult to handle with this technique; assignments can break "
@@ -215,7 +215,7 @@ msgid ""
 "invariants that can be propagated onward."
 msgstr ""
 
-#: howto/functional.rst:124
+#: howto/functional.rst:126
 msgid ""
 "Unfortunately, proving programs correct is largely impractical and not "
 "relevant to Python software. Even trivial programs require proofs that are "
@@ -227,11 +227,11 @@ msgid ""
 "wrongly believe you've proved the program correct."
 msgstr ""
 
-#: howto/functional.rst:135
+#: howto/functional.rst:137
 msgid "Modularity"
 msgstr ""
 
-#: howto/functional.rst:137
+#: howto/functional.rst:139
 msgid ""
 "A more practical benefit of functional programming is that it forces you to "
 "break apart your problem into small pieces.  Programs are more modular as a "
@@ -240,15 +240,15 @@ msgid ""
 "Small functions are also easier to read and to check for errors."
 msgstr ""
 
-#: howto/functional.rst:145
+#: howto/functional.rst:147
 msgid "Ease of debugging and testing"
 msgstr ""
 
-#: howto/functional.rst:147
+#: howto/functional.rst:149
 msgid "Testing and debugging a functional-style program is easier."
 msgstr ""
 
-#: howto/functional.rst:149
+#: howto/functional.rst:151
 msgid ""
 "Debugging is simplified because functions are generally small and clearly "
 "specified.  When a program doesn't work, each function is an interface point "
@@ -257,7 +257,7 @@ msgid ""
 "responsible for a bug."
 msgstr ""
 
-#: howto/functional.rst:154
+#: howto/functional.rst:156
 msgid ""
 "Testing is easier because each function is a potential subject for a unit "
 "test. Functions don't depend on system state that needs to be replicated "
@@ -265,11 +265,11 @@ msgid ""
 "and then check that the output matches expectations."
 msgstr ""
 
-#: howto/functional.rst:161
+#: howto/functional.rst:163
 msgid "Composability"
 msgstr ""
 
-#: howto/functional.rst:163
+#: howto/functional.rst:165
 msgid ""
 "As you work on a functional-style program, you'll write a number of "
 "functions with varying inputs and outputs.  Some of these functions will be "
@@ -280,24 +280,24 @@ msgid ""
 "different situations."
 msgstr ""
 
-#: howto/functional.rst:170
+#: howto/functional.rst:172
 msgid ""
 "Over time you'll form a personal library of utilities.  Often you'll "
 "assemble new programs by arranging existing functions in a new configuration "
 "and writing a few functions specialized for the current task."
 msgstr ""
 
-#: howto/functional.rst:178
+#: howto/functional.rst:180
 msgid "Iterators"
 msgstr ""
 
-#: howto/functional.rst:180
+#: howto/functional.rst:182
 msgid ""
 "I'll start by looking at a Python language feature that's an important "
 "foundation for writing functional-style programs: iterators."
 msgstr ""
 
-#: howto/functional.rst:183
+#: howto/functional.rst:185
 msgid ""
 "An iterator is an object representing a stream of data; this object returns "
 "the data one element at a time.  A Python iterator must support a method "
@@ -308,7 +308,7 @@ msgid ""
 "reasonable to write an iterator that produces an infinite stream of data."
 msgstr ""
 
-#: howto/functional.rst:191
+#: howto/functional.rst:193
 msgid ""
 "The built-in :func:`iter` function takes an arbitrary object and tries to "
 "return an iterator that will return the object's contents or elements, "
@@ -318,11 +318,11 @@ msgid ""
 "an iterator for it."
 msgstr ""
 
-#: howto/functional.rst:198
+#: howto/functional.rst:200
 msgid "You can experiment with the iteration interface manually:"
 msgstr ""
 
-#: howto/functional.rst:216
+#: howto/functional.rst:218
 msgid ""
 "Python expects iterable objects in several different contexts, the most "
 "important being the :keyword:`for` statement.  In the statement ``for X in "
@@ -330,7 +330,7 @@ msgid ""
 "an iterator.  These two statements are equivalent::"
 msgstr ""
 
-#: howto/functional.rst:222
+#: howto/functional.rst:224
 msgid ""
 "for i in iter(obj):\n"
 "    print(i)\n"
@@ -339,19 +339,19 @@ msgid ""
 "    print(i)"
 msgstr ""
 
-#: howto/functional.rst:228
+#: howto/functional.rst:230
 msgid ""
 "Iterators can be materialized as lists or tuples by using the :func:`list` "
 "or :func:`tuple` constructor functions:"
 msgstr ""
 
-#: howto/functional.rst:237
+#: howto/functional.rst:239
 msgid ""
 "Sequence unpacking also supports iterators: if you know an iterator will "
 "return N elements, you can unpack them into an N-tuple:"
 msgstr ""
 
-#: howto/functional.rst:246
+#: howto/functional.rst:248
 msgid ""
 "Built-in functions such as :func:`max` and :func:`min` can take a single "
 "iterator argument and will return the largest or smallest element.  The "
@@ -362,7 +362,7 @@ msgid ""
 "stream, the ``\"in\"`` and ``\"not in\"`` operators won't return either."
 msgstr ""
 
-#: howto/functional.rst:254
+#: howto/functional.rst:256
 msgid ""
 "Note that you can only go forward in an iterator; there's no way to get the "
 "previous element, reset the iterator, or make a copy of it.  Iterator "
@@ -373,24 +373,24 @@ msgid ""
 "new iterator."
 msgstr ""
 
-#: howto/functional.rst:264
+#: howto/functional.rst:266
 msgid "Data Types That Support Iterators"
 msgstr ""
 
-#: howto/functional.rst:266
+#: howto/functional.rst:268
 msgid ""
 "We've already seen how lists and tuples support iterators.  In fact, any "
 "Python sequence type, such as strings, will automatically support creation "
 "of an iterator."
 msgstr ""
 
-#: howto/functional.rst:270
+#: howto/functional.rst:272
 msgid ""
 "Calling :func:`iter` on a dictionary returns an iterator that will loop over "
 "the dictionary's keys::"
 msgstr ""
 
-#: howto/functional.rst:273
+#: howto/functional.rst:275
 msgid ""
 ">>> m = {'Jan': 1, 'Feb': 2, 'Mar': 3, 'Apr': 4, 'May': 5, 'Jun': 6,\n"
 "...      'Jul': 7, 'Aug': 8, 'Sep': 9, 'Oct': 10, 'Nov': 11, 'Dec': 12}\n"
@@ -410,14 +410,14 @@ msgid ""
 "Dec 12"
 msgstr ""
 
-#: howto/functional.rst:290
+#: howto/functional.rst:292
 msgid ""
 "Note that starting with Python 3.7, dictionary iteration order is guaranteed "
 "to be the same as the insertion order. In earlier versions, the behaviour "
 "was unspecified and could vary between implementations."
 msgstr ""
 
-#: howto/functional.rst:294
+#: howto/functional.rst:296
 msgid ""
 "Applying :func:`iter` to a dictionary always loops over the keys, but "
 "dictionaries have methods that return other iterators.  If you want to "
@@ -425,33 +425,33 @@ msgid ""
 "`~dict.values` or :meth:`~dict.items` methods to get an appropriate iterator."
 msgstr ""
 
-#: howto/functional.rst:300
+#: howto/functional.rst:302
 msgid ""
 "The :func:`dict` constructor can accept an iterator that returns a finite "
 "stream of ``(key, value)`` tuples:"
 msgstr ""
 
-#: howto/functional.rst:307
+#: howto/functional.rst:309
 msgid ""
 "Files also support iteration by calling the :meth:`~io.TextIOBase.readline` "
 "method until there are no more lines in the file.  This means you can read "
 "each line of a file like this::"
 msgstr ""
 
-#: howto/functional.rst:311
+#: howto/functional.rst:313
 msgid ""
 "for line in file:\n"
 "    # do something for each line\n"
 "    ..."
 msgstr ""
 
-#: howto/functional.rst:315
+#: howto/functional.rst:317
 msgid ""
 "Sets can take their contents from an iterable and let you iterate over the "
 "set's elements::"
 msgstr ""
 
-#: howto/functional.rst:318
+#: howto/functional.rst:320
 msgid ""
 ">>> S = {2, 3, 5, 7, 11, 13}\n"
 ">>> for i in S:\n"
@@ -464,11 +464,11 @@ msgid ""
 "13"
 msgstr ""
 
-#: howto/functional.rst:331
+#: howto/functional.rst:333
 msgid "Generator expressions and list comprehensions"
 msgstr ""
 
-#: howto/functional.rst:333
+#: howto/functional.rst:335
 msgid ""
 "Two common operations on an iterator's output are 1) performing some "
 "operation for every element, 2) selecting a subset of elements that meet "
@@ -477,7 +477,7 @@ msgid ""
 "containing a given substring."
 msgstr ""
 
-#: howto/functional.rst:339
+#: howto/functional.rst:341
 msgid ""
 "List comprehensions and generator expressions (short form: \"listcomps\" and "
 "\"genexps\") are a concise notation for such operations, borrowed from the "
@@ -485,7 +485,7 @@ msgid ""
 "strip all the whitespace from a stream of strings with the following code::"
 msgstr ""
 
-#: howto/functional.rst:344
+#: howto/functional.rst:346
 msgid ""
 ">>> line_list = ['  line 1\\n', 'line 2  \\n', ' \\n', '']\n"
 "\n"
@@ -496,18 +496,18 @@ msgid ""
 ">>> stripped_list = [line.strip() for line in line_list]"
 msgstr ""
 
-#: howto/functional.rst:352
+#: howto/functional.rst:354
 msgid ""
 "You can select only certain elements by adding an ``\"if\"`` condition::"
 msgstr ""
 
-#: howto/functional.rst:354
+#: howto/functional.rst:356
 msgid ""
 ">>> stripped_list = [line.strip() for line in line_list\n"
 "...                  if line != \"\"]"
 msgstr ""
 
-#: howto/functional.rst:357
+#: howto/functional.rst:359
 msgid ""
 "With a list comprehension, you get back a Python list; ``stripped_list`` is "
 "a list containing the resulting lines, not an iterator.  Generator "
@@ -518,14 +518,14 @@ msgid ""
 "preferable in these situations."
 msgstr ""
 
-#: howto/functional.rst:364
+#: howto/functional.rst:366
 msgid ""
 "Generator expressions are surrounded by parentheses (\"()\") and list "
 "comprehensions are surrounded by square brackets (\"[]\").  Generator "
 "expressions have the form::"
 msgstr ""
 
-#: howto/functional.rst:368
+#: howto/functional.rst:370
 msgid ""
 "( expression for expr in sequence1\n"
 "             if condition1\n"
@@ -538,13 +538,13 @@ msgid ""
 "             if conditionN )"
 msgstr ""
 
-#: howto/functional.rst:378
+#: howto/functional.rst:380
 msgid ""
 "Again, for a list comprehension only the outside brackets are different "
 "(square brackets instead of parentheses)."
 msgstr ""
 
-#: howto/functional.rst:381
+#: howto/functional.rst:383
 msgid ""
 "The elements of the generated output will be the successive values of "
 "``expression``.  The ``if`` clauses are all optional; if present, "
@@ -552,18 +552,18 @@ msgid ""
 "is true."
 msgstr ""
 
-#: howto/functional.rst:385
+#: howto/functional.rst:387
 msgid ""
 "Generator expressions always have to be written inside parentheses, but the "
 "parentheses signalling a function call also count.  If you want to create an "
 "iterator that will be immediately passed to a function you can write::"
 msgstr ""
 
-#: howto/functional.rst:389
+#: howto/functional.rst:391
 msgid "obj_total = sum(obj.count for obj in list_all_objects())"
 msgstr ""
 
-#: howto/functional.rst:391
+#: howto/functional.rst:393
 msgid ""
 "The ``for...in`` clauses contain the sequences to be iterated over.  The "
 "sequences do not have to be the same length, because they are iterated over "
@@ -573,13 +573,13 @@ msgid ""
 "``sequence2``."
 msgstr ""
 
-#: howto/functional.rst:397
+#: howto/functional.rst:399
 msgid ""
 "To put it another way, a list comprehension or generator expression is "
 "equivalent to the following Python code::"
 msgstr ""
 
-#: howto/functional.rst:400
+#: howto/functional.rst:402
 msgid ""
 "for expr1 in sequence1:\n"
 "    if not (condition1):\n"
@@ -596,7 +596,7 @@ msgid ""
 "            # the expression."
 msgstr ""
 
-#: howto/functional.rst:414
+#: howto/functional.rst:416
 msgid ""
 "This means that when there are multiple ``for...in`` clauses but no ``if`` "
 "clauses, the length of the resulting output will be equal to the product of "
@@ -604,14 +604,14 @@ msgid ""
 "output list is 9 elements long:"
 msgstr ""
 
-#: howto/functional.rst:426
+#: howto/functional.rst:428
 msgid ""
 "To avoid introducing an ambiguity into Python's grammar, if ``expression`` "
 "is creating a tuple, it must be surrounded with parentheses.  The first list "
 "comprehension below is a syntax error, while the second one is correct::"
 msgstr ""
 
-#: howto/functional.rst:430
+#: howto/functional.rst:432
 msgid ""
 "# Syntax error\n"
 "[x, y for x in seq1 for y in seq2]\n"
@@ -619,18 +619,18 @@ msgid ""
 "[(x, y) for x in seq1 for y in seq2]"
 msgstr ""
 
-#: howto/functional.rst:437
+#: howto/functional.rst:439
 msgid "Generators"
 msgstr ""
 
-#: howto/functional.rst:439
+#: howto/functional.rst:441
 msgid ""
 "Generators are a special class of functions that simplify the task of "
 "writing iterators.  Regular functions compute a value and return it, but "
 "generators return an iterator that returns a stream of values."
 msgstr ""
 
-#: howto/functional.rst:443
+#: howto/functional.rst:445
 msgid ""
 "You're doubtless familiar with how regular function calls work in Python or "
 "C. When you call a function, it gets a private namespace where its local "
@@ -643,18 +643,18 @@ msgid ""
 "thought of as resumable functions."
 msgstr ""
 
-#: howto/functional.rst:452
+#: howto/functional.rst:454
 msgid "Here's the simplest example of a generator function:"
 msgstr ""
 
-#: howto/functional.rst:458
+#: howto/functional.rst:460
 msgid ""
 "Any function containing a :keyword:`yield` keyword is a generator function; "
 "this is detected by Python's :term:`bytecode` compiler which compiles the "
 "function specially as a result."
 msgstr ""
 
-#: howto/functional.rst:462
+#: howto/functional.rst:464
 msgid ""
 "When you call a generator function, it doesn't return a single value; "
 "instead it returns a generator object that supports the iterator protocol.  "
@@ -666,17 +666,17 @@ msgid ""
 "method, the function will resume executing."
 msgstr ""
 
-#: howto/functional.rst:471
+#: howto/functional.rst:473
 msgid "Here's a sample usage of the ``generate_ints()`` generator:"
 msgstr ""
 
-#: howto/functional.rst:488
+#: howto/functional.rst:490
 msgid ""
 "You could equally write ``for i in generate_ints(5)``, or ``a, b, c = "
 "generate_ints(3)``."
 msgstr ""
 
-#: howto/functional.rst:491
+#: howto/functional.rst:493
 msgid ""
 "Inside a generator function, ``return value`` causes "
 "``StopIteration(value)`` to be raised from the :meth:`~generator.__next__` "
@@ -684,7 +684,7 @@ msgid ""
 "procession of values ends and the generator cannot yield any further values."
 msgstr ""
 
-#: howto/functional.rst:496
+#: howto/functional.rst:498
 msgid ""
 "You could achieve the effect of generators manually by writing your own "
 "class and storing all the local variables of the generator as instance "
@@ -694,7 +694,7 @@ msgid ""
 "complicated generator, writing a corresponding class can be much messier."
 msgstr ""
 
-#: howto/functional.rst:504
+#: howto/functional.rst:506
 msgid ""
 "The test suite included with Python's library, :source:`Lib/test/"
 "test_generators.py`, contains a number of more interesting examples.  Here's "
@@ -702,7 +702,7 @@ msgid ""
 "generators recursively. ::"
 msgstr ""
 
-#: howto/functional.rst:509
+#: howto/functional.rst:511
 msgid ""
 "# A recursive generator that generates Tree leaves in in-order.\n"
 "def inorder(t):\n"
@@ -716,7 +716,7 @@ msgid ""
 "            yield x"
 msgstr ""
 
-#: howto/functional.rst:520
+#: howto/functional.rst:522
 msgid ""
 "Two other examples in ``test_generators.py`` produce solutions for the N-"
 "Queens problem (placing N queens on an NxN chess board so that no queen "
@@ -725,11 +725,11 @@ msgid ""
 "twice)."
 msgstr ""
 
-#: howto/functional.rst:528
+#: howto/functional.rst:530
 msgid "Passing values into a generator"
 msgstr ""
 
-#: howto/functional.rst:530
+#: howto/functional.rst:532
 msgid ""
 "In Python 2.4 and earlier, generators only produced output.  Once a "
 "generator's code was invoked to create an iterator, there was no way to pass "
@@ -739,18 +739,18 @@ msgid ""
 "these approaches are messy."
 msgstr ""
 
-#: howto/functional.rst:537
+#: howto/functional.rst:539
 msgid ""
 "In Python 2.5 there's a simple way to pass values into a generator. :keyword:"
 "`yield` became an expression, returning a value that can be assigned to a "
 "variable or otherwise operated on::"
 msgstr ""
 
-#: howto/functional.rst:541
+#: howto/functional.rst:543
 msgid "val = (yield i)"
 msgstr ""
 
-#: howto/functional.rst:543
+#: howto/functional.rst:545
 msgid ""
 "I recommend that you **always** put parentheses around a ``yield`` "
 "expression when you're doing something with the returned value, as in the "
@@ -758,7 +758,7 @@ msgid ""
 "always add them instead of having to remember when they're needed."
 msgstr ""
 
-#: howto/functional.rst:548
+#: howto/functional.rst:550
 msgid ""
 "(:pep:`342` explains the exact rules, which are that a ``yield``-expression "
 "must always be parenthesized except when it occurs at the top-level "
@@ -767,7 +767,7 @@ msgid ""
 "operation, as in ``val = (yield i) + 12``.)"
 msgstr ""
 
-#: howto/functional.rst:554
+#: howto/functional.rst:556
 msgid ""
 "Values are sent into a generator by calling its :meth:`send(value) "
 "<generator.send>` method.  This method resumes the generator's code and the "
@@ -775,13 +775,13 @@ msgid ""
 "`~generator.__next__` method is called, the ``yield`` returns ``None``."
 msgstr ""
 
-#: howto/functional.rst:559
+#: howto/functional.rst:561
 msgid ""
 "Here's a simple counter that increments by 1 and allows changing the value "
 "of the internal counter."
 msgstr ""
 
-#: howto/functional.rst:562
+#: howto/functional.rst:564
 msgid ""
 "def counter(maximum):\n"
 "    i = 0\n"
@@ -794,11 +794,11 @@ msgid ""
 "            i += 1"
 msgstr ""
 
-#: howto/functional.rst:574
+#: howto/functional.rst:576
 msgid "And here's an example of changing the counter:"
 msgstr ""
 
-#: howto/functional.rst:591
+#: howto/functional.rst:593
 msgid ""
 "Because ``yield`` will often be returning ``None``, you should always check "
 "for this case.  Don't just use its value in expressions unless you're sure "
@@ -806,20 +806,20 @@ msgid ""
 "resume your generator function."
 msgstr ""
 
-#: howto/functional.rst:596
+#: howto/functional.rst:598
 msgid ""
 "In addition to :meth:`~generator.send`, there are two other methods on "
 "generators:"
 msgstr ""
 
-#: howto/functional.rst:599
+#: howto/functional.rst:601
 msgid ""
 ":meth:`throw(value) <generator.throw>` is used to raise an exception inside "
 "the generator; the exception is raised by the ``yield`` expression where the "
 "generator's execution is paused."
 msgstr ""
 
-#: howto/functional.rst:603
+#: howto/functional.rst:605
 msgid ""
 ":meth:`~generator.close` raises a :exc:`GeneratorExit` exception inside the "
 "generator to terminate the iteration.  On receiving this exception, the "
@@ -830,20 +830,20 @@ msgid ""
 "collected."
 msgstr ""
 
-#: howto/functional.rst:611
+#: howto/functional.rst:613
 msgid ""
 "If you need to run cleanup code when a :exc:`GeneratorExit` occurs, I "
 "suggest using a ``try: ... finally:`` suite instead of catching :exc:"
 "`GeneratorExit`."
 msgstr ""
 
-#: howto/functional.rst:614
+#: howto/functional.rst:616
 msgid ""
 "The cumulative effect of these changes is to turn generators from one-way "
 "producers of information into both producers and consumers."
 msgstr ""
 
-#: howto/functional.rst:617
+#: howto/functional.rst:619
 msgid ""
 "Generators also become **coroutines**, a more generalized form of "
 "subroutines. Subroutines are entered at one point and exited at another "
@@ -852,36 +852,36 @@ msgid ""
 "statements)."
 msgstr ""
 
-#: howto/functional.rst:624
+#: howto/functional.rst:626
 msgid "Built-in functions"
 msgstr ""
 
-#: howto/functional.rst:626
+#: howto/functional.rst:628
 msgid ""
 "Let's look in more detail at built-in functions often used with iterators."
 msgstr ""
 
-#: howto/functional.rst:628
+#: howto/functional.rst:630
 msgid ""
 "Two of Python's built-in functions, :func:`map` and :func:`filter` duplicate "
 "the features of generator expressions:"
 msgstr ""
 
-#: howto/functional.rst:631
+#: howto/functional.rst:633
 msgid ""
 ":func:`map(f, iterA, iterB, ...) <map>` returns an iterator over the sequence"
 msgstr ""
 
-#: howto/functional.rst:632
+#: howto/functional.rst:634
 msgid ""
 "``f(iterA[0], iterB[0]), f(iterA[1], iterB[1]), f(iterA[2], iterB[2]), ...``."
 msgstr ""
 
-#: howto/functional.rst:642
+#: howto/functional.rst:644
 msgid "You can of course achieve the same effect with a list comprehension."
 msgstr ""
 
-#: howto/functional.rst:644
+#: howto/functional.rst:646
 msgid ""
 ":func:`filter(predicate, iter) <filter>` returns an iterator over all the "
 "sequence elements that meet a certain condition, and is similarly duplicated "
@@ -890,18 +890,18 @@ msgid ""
 "must take a single value."
 msgstr ""
 
-#: howto/functional.rst:657
+#: howto/functional.rst:659
 msgid "This can also be written as a list comprehension:"
 msgstr ""
 
-#: howto/functional.rst:663
+#: howto/functional.rst:665
 msgid ""
 ":func:`enumerate(iter, start=0) <enumerate>` counts off the elements in the "
 "iterable returning 2-tuples containing the count (from *start*) and each "
 "element. ::"
 msgstr ""
 
-#: howto/functional.rst:667
+#: howto/functional.rst:669
 msgid ""
 ">>> for item in enumerate(['subject', 'verb', 'object']):\n"
 "...     print(item)\n"
@@ -910,13 +910,13 @@ msgid ""
 "(2, 'object')"
 msgstr ""
 
-#: howto/functional.rst:673
+#: howto/functional.rst:675
 msgid ""
 ":func:`enumerate` is often used when looping through a list and recording "
 "the indexes at which certain conditions are met::"
 msgstr ""
 
-#: howto/functional.rst:676
+#: howto/functional.rst:678
 msgid ""
 "f = open('data.txt', 'r')\n"
 "for i, line in enumerate(f):\n"
@@ -924,7 +924,7 @@ msgid ""
 "        print('Blank line at line #%i' % i)"
 msgstr ""
 
-#: howto/functional.rst:681
+#: howto/functional.rst:683
 msgid ""
 ":func:`sorted(iterable, key=None, reverse=False) <sorted>` collects all the "
 "elements of the iterable into a list, sorts the list, and returns the sorted "
@@ -932,25 +932,25 @@ msgid ""
 "constructed list's :meth:`~list.sort` method. ::"
 msgstr ""
 
-#: howto/functional.rst:686
+#: howto/functional.rst:688
 msgid ""
 ">>> import random\n"
 ">>> # Generate 8 random numbers between [0, 10000)\n"
 ">>> rand_list = random.sample(range(10000), 8)\n"
-">>> rand_list  \n"
+">>> rand_list\n"
 "[769, 7953, 9828, 6431, 8442, 9878, 6213, 2207]\n"
-">>> sorted(rand_list)  \n"
+">>> sorted(rand_list)\n"
 "[769, 2207, 6213, 6431, 7953, 8442, 9828, 9878]\n"
-">>> sorted(rand_list, reverse=True)  \n"
+">>> sorted(rand_list, reverse=True)\n"
 "[9878, 9828, 8442, 7953, 6431, 6213, 2207, 769]"
 msgstr ""
 
-#: howto/functional.rst:696
+#: howto/functional.rst:698
 msgid ""
 "(For a more detailed discussion of sorting, see the :ref:`sortinghowto`.)"
 msgstr ""
 
-#: howto/functional.rst:699
+#: howto/functional.rst:701
 msgid ""
 "The :func:`any(iter) <any>` and :func:`all(iter) <all>` built-ins look at "
 "the truth values of an iterable's contents.  :func:`any` returns ``True`` if "
@@ -958,19 +958,19 @@ msgid ""
 "``True`` if all of the elements are true values:"
 msgstr ""
 
-#: howto/functional.rst:718
+#: howto/functional.rst:720
 msgid ""
 ":func:`zip(iterA, iterB, ...) <zip>` takes one element from each iterable "
 "and returns them in a tuple::"
 msgstr ""
 
-#: howto/functional.rst:721
+#: howto/functional.rst:723
 msgid ""
 "zip(['a', 'b', 'c'], (1, 2, 3)) =>\n"
 "  ('a', 1), ('b', 2), ('c', 3)"
 msgstr ""
 
-#: howto/functional.rst:724
+#: howto/functional.rst:726
 msgid ""
 "It doesn't construct an in-memory list and exhaust all the input iterators "
 "before returning; instead tuples are constructed and returned only if "
@@ -978,62 +978,62 @@ msgid ""
 "evaluation <https://en.wikipedia.org/wiki/Lazy_evaluation>`__.)"
 msgstr ""
 
-#: howto/functional.rst:729
+#: howto/functional.rst:731
 msgid ""
 "This iterator is intended to be used with iterables that are all of the same "
 "length.  If the iterables are of different lengths, the resulting stream "
 "will be the same length as the shortest iterable. ::"
 msgstr ""
 
-#: howto/functional.rst:733
+#: howto/functional.rst:735
 msgid ""
 "zip(['a', 'b'], (1, 2, 3)) =>\n"
 "  ('a', 1), ('b', 2)"
 msgstr ""
 
-#: howto/functional.rst:736
+#: howto/functional.rst:738
 msgid ""
 "You should avoid doing this, though, because an element may be taken from "
 "the longer iterators and discarded.  This means you can't go on to use the "
 "iterators further because you risk skipping a discarded element."
 msgstr ""
 
-#: howto/functional.rst:742
+#: howto/functional.rst:744
 msgid "The itertools module"
 msgstr ""
 
-#: howto/functional.rst:744
+#: howto/functional.rst:746
 msgid ""
 "The :mod:`itertools` module contains a number of commonly used iterators as "
 "well as functions for combining several iterators.  This section will "
 "introduce the module's contents by showing small examples."
 msgstr ""
 
-#: howto/functional.rst:748
+#: howto/functional.rst:750
 msgid "The module's functions fall into a few broad classes:"
 msgstr ""
 
-#: howto/functional.rst:750
+#: howto/functional.rst:752
 msgid "Functions that create a new iterator based on an existing iterator."
 msgstr ""
 
-#: howto/functional.rst:751
+#: howto/functional.rst:753
 msgid "Functions for treating an iterator's elements as function arguments."
 msgstr ""
 
-#: howto/functional.rst:752
+#: howto/functional.rst:754
 msgid "Functions for selecting portions of an iterator's output."
 msgstr ""
 
-#: howto/functional.rst:753
+#: howto/functional.rst:755
 msgid "A function for grouping an iterator's output."
 msgstr ""
 
-#: howto/functional.rst:756
+#: howto/functional.rst:758
 msgid "Creating new iterators"
 msgstr ""
 
-#: howto/functional.rst:758
+#: howto/functional.rst:760
 msgid ""
 ":func:`itertools.count(start, step) <itertools.count>` returns an infinite "
 "stream of evenly spaced values.  You can optionally supply the starting "
@@ -1041,7 +1041,7 @@ msgid ""
 "defaults to 1::"
 msgstr ""
 
-#: howto/functional.rst:762
+#: howto/functional.rst:764
 msgid ""
 "itertools.count() =>\n"
 "  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ...\n"
@@ -1051,7 +1051,7 @@ msgid ""
 "  10, 15, 20, 25, 30, 35, 40, 45, 50, 55, ..."
 msgstr ""
 
-#: howto/functional.rst:769
+#: howto/functional.rst:771
 msgid ""
 ":func:`itertools.cycle(iter) <itertools.cycle>` saves a copy of the contents "
 "of a provided iterable and returns a new iterator that returns its elements "
@@ -1059,20 +1059,20 @@ msgid ""
 "infinitely. ::"
 msgstr ""
 
-#: howto/functional.rst:773
+#: howto/functional.rst:775
 msgid ""
 "itertools.cycle([1, 2, 3, 4, 5]) =>\n"
 "  1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ..."
 msgstr ""
 
-#: howto/functional.rst:776
+#: howto/functional.rst:778
 msgid ""
 ":func:`itertools.repeat(elem, [n]) <itertools.repeat>` returns the provided "
 "element *n* times, or returns the element endlessly if *n* is not "
 "provided. ::"
 msgstr ""
 
-#: howto/functional.rst:779
+#: howto/functional.rst:781
 msgid ""
 "itertools.repeat('abc') =>\n"
 "  abc, abc, abc, abc, abc, abc, abc, abc, abc, abc, ...\n"
@@ -1080,7 +1080,7 @@ msgid ""
 "  abc, abc, abc, abc, abc"
 msgstr ""
 
-#: howto/functional.rst:784
+#: howto/functional.rst:786
 msgid ""
 ":func:`itertools.chain(iterA, iterB, ...) <itertools.chain>` takes an "
 "arbitrary number of iterables as input, and returns all the elements of the "
@@ -1088,13 +1088,13 @@ msgid ""
 "the iterables have been exhausted. ::"
 msgstr ""
 
-#: howto/functional.rst:789
+#: howto/functional.rst:791
 msgid ""
 "itertools.chain(['a', 'b', 'c'], (1, 2, 3)) =>\n"
 "  a, b, c, 1, 2, 3"
 msgstr ""
 
-#: howto/functional.rst:792
+#: howto/functional.rst:794
 msgid ""
 ":func:`itertools.islice(iter, [start], stop, [step]) <itertools.islice>` "
 "returns a stream that's a slice of the iterator.  With a single *stop* "
@@ -1105,7 +1105,7 @@ msgid ""
 "*step*. ::"
 msgstr ""
 
-#: howto/functional.rst:799
+#: howto/functional.rst:801
 msgid ""
 "itertools.islice(range(10), 8) =>\n"
 "  0, 1, 2, 3, 4, 5, 6, 7\n"
@@ -1115,7 +1115,7 @@ msgid ""
 "  2, 4, 6"
 msgstr ""
 
-#: howto/functional.rst:806
+#: howto/functional.rst:808
 msgid ""
 ":func:`itertools.tee(iter, [n]) <itertools.tee>` replicates an iterator; it "
 "returns *n* independent iterators that will all return the contents of the "
@@ -1125,7 +1125,7 @@ msgid ""
 "and one of the new iterators is consumed more than the others. ::"
 msgstr ""
 
-#: howto/functional.rst:814
+#: howto/functional.rst:816
 msgid ""
 "itertools.tee( itertools.count() ) =>\n"
 "   iterA, iterB\n"
@@ -1137,11 +1137,11 @@ msgid ""
 "   0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ..."
 msgstr ""
 
-#: howto/functional.rst:825
+#: howto/functional.rst:827
 msgid "Calling functions on elements"
 msgstr ""
 
-#: howto/functional.rst:827
+#: howto/functional.rst:829
 msgid ""
 "The :mod:`operator` module contains a set of functions corresponding to "
 "Python's operators.  Some examples are :func:`operator.add(a, b) <operator."
@@ -1150,14 +1150,14 @@ msgid ""
 "(returns a callable that fetches the ``.id`` attribute)."
 msgstr ""
 
-#: howto/functional.rst:833
+#: howto/functional.rst:835
 msgid ""
 ":func:`itertools.starmap(func, iter) <itertools.starmap>` assumes that the "
 "iterable will return a stream of tuples, and calls *func* using these tuples "
 "as the arguments::"
 msgstr ""
 
-#: howto/functional.rst:837
+#: howto/functional.rst:839
 msgid ""
 "itertools.starmap(os.path.join,\n"
 "                  [('/bin', 'python'), ('/usr', 'bin', 'java'),\n"
@@ -1166,37 +1166,37 @@ msgid ""
 "  /bin/python, /usr/bin/java, /usr/bin/perl, /usr/bin/ruby"
 msgstr ""
 
-#: howto/functional.rst:845
+#: howto/functional.rst:847
 msgid "Selecting elements"
 msgstr ""
 
-#: howto/functional.rst:847
+#: howto/functional.rst:849
 msgid ""
 "Another group of functions chooses a subset of an iterator's elements based "
 "on a predicate."
 msgstr ""
 
-#: howto/functional.rst:850
+#: howto/functional.rst:852
 msgid ""
 ":func:`itertools.filterfalse(predicate, iter) <itertools.filterfalse>` is "
 "the opposite of :func:`filter`, returning all elements for which the "
 "predicate returns false::"
 msgstr ""
 
-#: howto/functional.rst:854
+#: howto/functional.rst:856
 msgid ""
 "itertools.filterfalse(is_even, itertools.count()) =>\n"
 "  1, 3, 5, 7, 9, 11, 13, 15, ..."
 msgstr ""
 
-#: howto/functional.rst:857
+#: howto/functional.rst:859
 msgid ""
 ":func:`itertools.takewhile(predicate, iter) <itertools.takewhile>` returns "
 "elements for as long as the predicate returns true.  Once the predicate "
 "returns false, the iterator will signal the end of its results. ::"
 msgstr ""
 
-#: howto/functional.rst:861
+#: howto/functional.rst:863
 msgid ""
 "def less_than_10(x):\n"
 "    return x < 10\n"
@@ -1208,14 +1208,14 @@ msgid ""
 "  0"
 msgstr ""
 
-#: howto/functional.rst:870
+#: howto/functional.rst:872
 msgid ""
 ":func:`itertools.dropwhile(predicate, iter) <itertools.dropwhile>` discards "
 "elements while the predicate returns true, and then returns the rest of the "
 "iterable's results. ::"
 msgstr ""
 
-#: howto/functional.rst:874
+#: howto/functional.rst:876
 msgid ""
 "itertools.dropwhile(less_than_10, itertools.count()) =>\n"
 "  10, 11, 12, 13, 14, 15, 16, 17, 18, 19, ...\n"
@@ -1224,7 +1224,7 @@ msgid ""
 "  1, 2, 3, 4, 5, 6, 7, 8, 9, 10, ..."
 msgstr ""
 
-#: howto/functional.rst:880
+#: howto/functional.rst:882
 msgid ""
 ":func:`itertools.compress(data, selectors) <itertools.compress>` takes two "
 "iterators and returns only those elements of *data* for which the "
@@ -1232,24 +1232,24 @@ msgid ""
 "is exhausted::"
 msgstr ""
 
-#: howto/functional.rst:884
+#: howto/functional.rst:886
 msgid ""
 "itertools.compress([1, 2, 3, 4, 5], [True, True, False, False, True]) =>\n"
 "   1, 2, 5"
 msgstr ""
 
-#: howto/functional.rst:889
+#: howto/functional.rst:891
 msgid "Combinatoric functions"
 msgstr ""
 
-#: howto/functional.rst:891
+#: howto/functional.rst:893
 msgid ""
 "The :func:`itertools.combinations(iterable, r) <itertools.combinations>` "
 "returns an iterator giving all possible *r*-tuple combinations of the "
 "elements contained in *iterable*.  ::"
 msgstr ""
 
-#: howto/functional.rst:895
+#: howto/functional.rst:897
 msgid ""
 "itertools.combinations([1, 2, 3, 4, 5], 2) =>\n"
 "  (1, 2), (1, 3), (1, 4), (1, 5),\n"
@@ -1263,7 +1263,7 @@ msgid ""
 "  (3, 4, 5)"
 msgstr ""
 
-#: howto/functional.rst:906
+#: howto/functional.rst:908
 msgid ""
 "The elements within each tuple remain in the same order as *iterable* "
 "returned them.  For example, the number 1 is always before 2, 3, 4, or 5 in "
@@ -1272,7 +1272,7 @@ msgid ""
 "constraint on the order, returning all possible arrangements of length *r*::"
 msgstr ""
 
-#: howto/functional.rst:913
+#: howto/functional.rst:915
 msgid ""
 "itertools.permutations([1, 2, 3, 4, 5], 2) =>\n"
 "  (1, 2), (1, 3), (1, 4), (1, 5),\n"
@@ -1287,32 +1287,32 @@ msgid ""
 "  (5, 4, 3, 2, 1)"
 msgstr ""
 
-#: howto/functional.rst:925
+#: howto/functional.rst:927
 msgid ""
 "If you don't supply a value for *r* the length of the iterable is used, "
 "meaning that all the elements are permuted."
 msgstr ""
 
-#: howto/functional.rst:928
+#: howto/functional.rst:930
 msgid ""
 "Note that these functions produce all of the possible combinations by "
 "position and don't require that the contents of *iterable* are unique::"
 msgstr ""
 
-#: howto/functional.rst:931
+#: howto/functional.rst:933
 msgid ""
 "itertools.permutations('aba', 3) =>\n"
 "  ('a', 'b', 'a'), ('a', 'a', 'b'), ('b', 'a', 'a'),\n"
 "  ('b', 'a', 'a'), ('a', 'a', 'b'), ('a', 'b', 'a')"
 msgstr ""
 
-#: howto/functional.rst:935
+#: howto/functional.rst:937
 msgid ""
 "The identical tuple ``('a', 'a', 'b')`` occurs twice, but the two 'a' "
 "strings came from different positions."
 msgstr ""
 
-#: howto/functional.rst:938
+#: howto/functional.rst:940
 msgid ""
 "The :func:`itertools.combinations_with_replacement(iterable, r) <itertools."
 "combinations_with_replacement>` function relaxes a different constraint: "
@@ -1321,7 +1321,7 @@ msgid ""
 "the second element is selected.  ::"
 msgstr ""
 
-#: howto/functional.rst:944
+#: howto/functional.rst:946
 msgid ""
 "itertools.combinations_with_replacement([1, 2, 3, 4, 5], 2) =>\n"
 "  (1, 1), (1, 2), (1, 3), (1, 4), (1, 5),\n"
@@ -1331,11 +1331,11 @@ msgid ""
 "  (5, 5)"
 msgstr ""
 
-#: howto/functional.rst:953
+#: howto/functional.rst:955
 msgid "Grouping elements"
 msgstr ""
 
-#: howto/functional.rst:955
+#: howto/functional.rst:957
 msgid ""
 "The last function I'll discuss, :func:`itertools.groupby(iter, "
 "key_func=None) <itertools.groupby>`, is the most complicated.  "
@@ -1344,14 +1344,14 @@ msgid ""
 "key is simply each element itself."
 msgstr ""
 
-#: howto/functional.rst:960
+#: howto/functional.rst:962
 msgid ""
 ":func:`~itertools.groupby` collects all the consecutive elements from the "
 "underlying iterable that have the same key value, and returns a stream of 2-"
 "tuples containing a key value and an iterator for the elements with that key."
 msgstr ""
 
-#: howto/functional.rst:966
+#: howto/functional.rst:968
 msgid ""
 "city_list = [('Decatur', 'AL'), ('Huntsville', 'AL'), ('Selma', 'AL'),\n"
 "             ('Anchorage', 'AK'), ('Nome', 'AK'),\n"
@@ -1376,7 +1376,7 @@ msgid ""
 "  ('Flagstaff', 'AZ'), ('Phoenix', 'AZ'), ('Tucson', 'AZ')"
 msgstr ""
 
-#: howto/functional.rst:988
+#: howto/functional.rst:990
 msgid ""
 ":func:`~itertools.groupby` assumes that the underlying iterable's contents "
 "will already be sorted based on the key.  Note that the returned iterators "
@@ -1384,11 +1384,11 @@ msgid ""
 "iterator-1 before requesting iterator-2 and its corresponding key."
 msgstr ""
 
-#: howto/functional.rst:995
+#: howto/functional.rst:997
 msgid "The functools module"
 msgstr ""
 
-#: howto/functional.rst:997
+#: howto/functional.rst:999
 msgid ""
 "The :mod:`functools` module contains some higher-order functions. A **higher-"
 "order function** takes one or more functions as input and returns a new "
@@ -1396,7 +1396,7 @@ msgid ""
 "partial` function."
 msgstr ""
 
-#: howto/functional.rst:1002
+#: howto/functional.rst:1004
 msgid ""
 "For programs written in a functional style, you'll sometimes want to "
 "construct variants of existing functions that have some of the parameters "
@@ -1406,7 +1406,7 @@ msgid ""
 "\"partial function application\"."
 msgstr ""
 
-#: howto/functional.rst:1008
+#: howto/functional.rst:1010
 msgid ""
 "The constructor for :func:`~functools.partial` takes the arguments "
 "``(function, arg1, arg2, ..., kwarg1=value1, kwarg2=value2)``.  The "
@@ -1414,11 +1414,11 @@ msgid ""
 "with the filled-in arguments."
 msgstr ""
 
-#: howto/functional.rst:1013
+#: howto/functional.rst:1015
 msgid "Here's a small but realistic example::"
 msgstr ""
 
-#: howto/functional.rst:1015
+#: howto/functional.rst:1017
 msgid ""
 "import functools\n"
 "\n"
@@ -1431,7 +1431,7 @@ msgid ""
 "server_log('Unable to open socket')"
 msgstr ""
 
-#: howto/functional.rst:1025
+#: howto/functional.rst:1027
 msgid ""
 ":func:`functools.reduce(func, iter, [initial_value]) <functools.reduce>` "
 "cumulatively performs an operation on all the iterable's elements and, "
@@ -1446,7 +1446,7 @@ msgid ""
 "``func(initial_value, A)`` is the first calculation. ::"
 msgstr ""
 
-#: howto/functional.rst:1037
+#: howto/functional.rst:1039
 msgid ""
 ">>> import operator, functools\n"
 ">>> functools.reduce(operator.concat, ['A', 'BB', 'C'])\n"
@@ -1461,20 +1461,20 @@ msgid ""
 "1"
 msgstr ""
 
-#: howto/functional.rst:1049
+#: howto/functional.rst:1051
 msgid ""
 "If you use :func:`operator.add` with :func:`functools.reduce`, you'll add up "
 "all the elements of the iterable.  This case is so common that there's a "
 "special built-in called :func:`sum` to compute it:"
 msgstr ""
 
-#: howto/functional.rst:1061
+#: howto/functional.rst:1063
 msgid ""
 "For many uses of :func:`functools.reduce`, though, it can be clearer to just "
 "write the obvious :keyword:`for` loop::"
 msgstr ""
 
-#: howto/functional.rst:1064
+#: howto/functional.rst:1066
 msgid ""
 "import functools\n"
 "# Instead of:\n"
@@ -1486,7 +1486,7 @@ msgid ""
 "    product *= i"
 msgstr ""
 
-#: howto/functional.rst:1073
+#: howto/functional.rst:1075
 msgid ""
 "A related function is :func:`itertools.accumulate(iterable, func=operator."
 "add) <itertools.accumulate>`.  It performs the same calculation, but instead "
@@ -1494,7 +1494,7 @@ msgid ""
 "iterator that also yields each partial result::"
 msgstr ""
 
-#: howto/functional.rst:1078
+#: howto/functional.rst:1080
 msgid ""
 "itertools.accumulate([1, 2, 3, 4, 5]) =>\n"
 "  1, 3, 6, 10, 15\n"
@@ -1503,11 +1503,11 @@ msgid ""
 "  1, 2, 6, 24, 120"
 msgstr ""
 
-#: howto/functional.rst:1086
+#: howto/functional.rst:1088
 msgid "The operator module"
 msgstr ""
 
-#: howto/functional.rst:1088
+#: howto/functional.rst:1090
 msgid ""
 "The :mod:`operator` module was mentioned earlier.  It contains a set of "
 "functions corresponding to Python's operators.  These functions are often "
@@ -1515,60 +1515,60 @@ msgid ""
 "functions that perform a single operation."
 msgstr ""
 
-#: howto/functional.rst:1093
+#: howto/functional.rst:1095
 msgid "Some of the functions in this module are:"
 msgstr ""
 
-#: howto/functional.rst:1095
+#: howto/functional.rst:1097
 msgid ""
 "Math operations: ``add()``, ``sub()``, ``mul()``, ``floordiv()``, "
 "``abs()``, ..."
 msgstr ""
 
-#: howto/functional.rst:1096
+#: howto/functional.rst:1098
 msgid "Logical operations: ``not_()``, ``truth()``."
 msgstr ""
 
-#: howto/functional.rst:1097
+#: howto/functional.rst:1099
 msgid "Bitwise operations: ``and_()``, ``or_()``, ``invert()``."
 msgstr ""
 
-#: howto/functional.rst:1098
+#: howto/functional.rst:1100
 msgid ""
 "Comparisons: ``eq()``, ``ne()``, ``lt()``, ``le()``, ``gt()``, and ``ge()``."
 msgstr ""
 
-#: howto/functional.rst:1099
+#: howto/functional.rst:1101
 msgid "Object identity: ``is_()``, ``is_not()``."
 msgstr ""
 
-#: howto/functional.rst:1101
+#: howto/functional.rst:1103
 msgid "Consult the operator module's documentation for a complete list."
 msgstr ""
 
-#: howto/functional.rst:1105
+#: howto/functional.rst:1107
 msgid "Small functions and the lambda expression"
 msgstr ""
 
-#: howto/functional.rst:1107
+#: howto/functional.rst:1109
 msgid ""
 "When writing functional-style programs, you'll often need little functions "
 "that act as predicates or that combine elements in some way."
 msgstr ""
 
-#: howto/functional.rst:1110
+#: howto/functional.rst:1112
 msgid ""
 "If there's a Python built-in or a module function that's suitable, you don't "
 "need to define a new function at all::"
 msgstr ""
 
-#: howto/functional.rst:1113
+#: howto/functional.rst:1115
 msgid ""
 "stripped_lines = [line.strip() for line in lines]\n"
 "existing_files = filter(os.path.exists, file_list)"
 msgstr ""
 
-#: howto/functional.rst:1116
+#: howto/functional.rst:1118
 msgid ""
 "If the function you need doesn't exist, you need to write it.  One way to "
 "write small functions is to use the :keyword:`lambda` expression.  "
@@ -1577,20 +1577,20 @@ msgid ""
 "expression::"
 msgstr ""
 
-#: howto/functional.rst:1121
+#: howto/functional.rst:1123
 msgid ""
 "adder = lambda x, y: x+y\n"
 "\n"
 "print_assign = lambda name, value: name + '=' + str(value)"
 msgstr ""
 
-#: howto/functional.rst:1125
+#: howto/functional.rst:1127
 msgid ""
 "An alternative is to just use the ``def`` statement and define a function in "
 "the usual way::"
 msgstr ""
 
-#: howto/functional.rst:1128
+#: howto/functional.rst:1130
 msgid ""
 "def adder(x, y):\n"
 "    return x + y\n"
@@ -1599,13 +1599,13 @@ msgid ""
 "    return name + '=' + str(value)"
 msgstr ""
 
-#: howto/functional.rst:1134
+#: howto/functional.rst:1136
 msgid ""
 "Which alternative is preferable?  That's a style question; my usual course "
 "is to avoid using ``lambda``."
 msgstr ""
 
-#: howto/functional.rst:1137
+#: howto/functional.rst:1139
 msgid ""
 "One reason for my preference is that ``lambda`` is quite limited in the "
 "functions it can define.  The result has to be computable as a single "
@@ -1615,20 +1615,20 @@ msgid ""
 "that's hard to read.  Quick, what's the following code doing? ::"
 msgstr ""
 
-#: howto/functional.rst:1144
+#: howto/functional.rst:1146
 msgid ""
 "import functools\n"
 "total = functools.reduce(lambda a, b: (0, a[1] + b[1]), items)[1]"
 msgstr ""
 
-#: howto/functional.rst:1147
+#: howto/functional.rst:1149
 msgid ""
 "You can figure it out, but it takes time to disentangle the expression to "
 "figure out what's going on.  Using a short nested ``def`` statements makes "
 "things a little bit better::"
 msgstr ""
 
-#: howto/functional.rst:1151
+#: howto/functional.rst:1153
 msgid ""
 "import functools\n"
 "def combine(a, b):\n"
@@ -1637,70 +1637,70 @@ msgid ""
 "total = functools.reduce(combine, items)[1]"
 msgstr ""
 
-#: howto/functional.rst:1157
+#: howto/functional.rst:1159
 msgid "But it would be best of all if I had simply used a ``for`` loop::"
 msgstr ""
 
-#: howto/functional.rst:1159
+#: howto/functional.rst:1161
 msgid ""
 "total = 0\n"
 "for a, b in items:\n"
 "    total += b"
 msgstr ""
 
-#: howto/functional.rst:1163
+#: howto/functional.rst:1165
 msgid "Or the :func:`sum` built-in and a generator expression::"
 msgstr ""
 
-#: howto/functional.rst:1165
+#: howto/functional.rst:1167
 msgid "total = sum(b for a, b in items)"
 msgstr ""
 
-#: howto/functional.rst:1167
+#: howto/functional.rst:1169
 msgid ""
 "Many uses of :func:`functools.reduce` are clearer when written as ``for`` "
 "loops."
 msgstr ""
 
-#: howto/functional.rst:1169
+#: howto/functional.rst:1171
 msgid ""
 "Fredrik Lundh once suggested the following set of rules for refactoring uses "
 "of ``lambda``:"
 msgstr ""
 
-#: howto/functional.rst:1172
+#: howto/functional.rst:1174
 msgid "Write a lambda function."
 msgstr ""
 
-#: howto/functional.rst:1173
+#: howto/functional.rst:1175
 msgid "Write a comment explaining what the heck that lambda does."
 msgstr ""
 
-#: howto/functional.rst:1174
+#: howto/functional.rst:1176
 msgid ""
 "Study the comment for a while, and think of a name that captures the essence "
 "of the comment."
 msgstr ""
 
-#: howto/functional.rst:1176
+#: howto/functional.rst:1178
 msgid "Convert the lambda to a def statement, using that name."
 msgstr ""
 
-#: howto/functional.rst:1177
+#: howto/functional.rst:1179
 msgid "Remove the comment."
 msgstr ""
 
-#: howto/functional.rst:1179
+#: howto/functional.rst:1181
 msgid ""
 "I really like these rules, but you're free to disagree about whether this "
 "lambda-free style is better."
 msgstr ""
 
-#: howto/functional.rst:1184
+#: howto/functional.rst:1186
 msgid "Revision History and Acknowledgements"
 msgstr ""
 
-#: howto/functional.rst:1186
+#: howto/functional.rst:1188
 msgid ""
 "The author would like to thank the following people for offering "
 "suggestions, corrections and assistance with various drafts of this article: "
@@ -1708,40 +1708,40 @@ msgid ""
 "Krell, Leandro Lameiro, Jussi Salmela, Collin Winter, Blake Winton."
 msgstr ""
 
-#: howto/functional.rst:1191
+#: howto/functional.rst:1193
 msgid "Version 0.1: posted June 30 2006."
 msgstr ""
 
-#: howto/functional.rst:1193
+#: howto/functional.rst:1195
 msgid "Version 0.11: posted July 1 2006.  Typo fixes."
 msgstr ""
 
-#: howto/functional.rst:1195
+#: howto/functional.rst:1197
 msgid ""
 "Version 0.2: posted July 10 2006.  Merged genexp and listcomp sections into "
 "one. Typo fixes."
 msgstr ""
 
-#: howto/functional.rst:1198
+#: howto/functional.rst:1200
 msgid ""
 "Version 0.21: Added more references suggested on the tutor mailing list."
 msgstr ""
 
-#: howto/functional.rst:1200
+#: howto/functional.rst:1202
 msgid ""
 "Version 0.30: Adds a section on the ``functional`` module written by Collin "
 "Winter; adds short section on the operator module; a few other edits."
 msgstr ""
 
-#: howto/functional.rst:1205
+#: howto/functional.rst:1207
 msgid "References"
 msgstr ""
 
-#: howto/functional.rst:1208
+#: howto/functional.rst:1210
 msgid "General"
 msgstr ""
 
-#: howto/functional.rst:1210
+#: howto/functional.rst:1212
 msgid ""
 "**Structure and Interpretation of Computer Programs**, by Harold Abelson and "
 "Gerald Jay Sussman with Julie Sussman.  The book can be found at https://"
@@ -1752,39 +1752,39 @@ msgid ""
 "functional-style Python code."
 msgstr ""
 
-#: howto/functional.rst:1218
+#: howto/functional.rst:1220
 msgid ""
 "https://www.defmacro.org/ramblings/fp.html: A general introduction to "
 "functional programming that uses Java examples and has a lengthy historical "
 "introduction."
 msgstr ""
 
-#: howto/functional.rst:1221
+#: howto/functional.rst:1223
 msgid ""
 "https://en.wikipedia.org/wiki/Functional_programming: General Wikipedia "
 "entry describing functional programming."
 msgstr ""
 
-#: howto/functional.rst:1224
+#: howto/functional.rst:1226
 msgid "https://en.wikipedia.org/wiki/Coroutine: Entry for coroutines."
 msgstr ""
 
-#: howto/functional.rst:1226
+#: howto/functional.rst:1228
 msgid ""
 "https://en.wikipedia.org/wiki/Partial_application: Entry for the concept of "
 "partial function application."
 msgstr ""
 
-#: howto/functional.rst:1228
+#: howto/functional.rst:1230
 msgid ""
 "https://en.wikipedia.org/wiki/Currying: Entry for the concept of currying."
 msgstr ""
 
-#: howto/functional.rst:1231
+#: howto/functional.rst:1233
 msgid "Python-specific"
 msgstr ""
 
-#: howto/functional.rst:1233
+#: howto/functional.rst:1235
 msgid ""
 "https://gnosis.cx/TPiP/: The first chapter of David Mertz's book :title-"
 "reference:`Text Processing in Python` discusses functional programming for "
@@ -1792,7 +1792,7 @@ msgid ""
 "Text Processing\"."
 msgstr ""
 
-#: howto/functional.rst:1238
+#: howto/functional.rst:1240
 msgid ""
 "Mertz also wrote a 3-part series of articles on functional programming for "
 "IBM's DeveloperWorks site; see `part 1 <https://developer.ibm.com/articles/l-"
@@ -1800,27 +1800,27 @@ msgid ""
 "`part 3 <https://developer.ibm.com/tutorials/l-prog3/>`__,"
 msgstr ""
 
-#: howto/functional.rst:1246
+#: howto/functional.rst:1248
 msgid "Python documentation"
 msgstr ""
 
-#: howto/functional.rst:1248
+#: howto/functional.rst:1250
 msgid "Documentation for the :mod:`itertools` module."
 msgstr ""
 
-#: howto/functional.rst:1250
+#: howto/functional.rst:1252
 msgid "Documentation for the :mod:`functools` module."
 msgstr ""
 
-#: howto/functional.rst:1252
+#: howto/functional.rst:1254
 msgid "Documentation for the :mod:`operator` module."
 msgstr ""
 
-#: howto/functional.rst:1254
+#: howto/functional.rst:1256
 msgid ":pep:`289`: \"Generator Expressions\""
 msgstr ""
 
-#: howto/functional.rst:1256
+#: howto/functional.rst:1258
 msgid ""
 ":pep:`342`: \"Coroutines via Enhanced Generators\" describes the new "
 "generator features in Python 2.5."
diff --git a/howto/gdb_helpers.po b/howto/gdb_helpers.po
index 1c89be337..4393b8bc5 100644
--- a/howto/gdb_helpers.po
+++ b/howto/gdb_helpers.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -298,13 +298,15 @@ msgstr ""
 #: howto/gdb_helpers.rst:183
 msgid ""
 "The internal structure can be revealed with a cast to :c:expr:`PyLongObject "
-"*`:"
+"*`::"
 msgstr ""
 
 #: howto/gdb_helpers.rst:185
 msgid ""
-"(gdb) p *(PyLongObject*)some_python_integer $5 = {ob_base = {ob_base = "
-"{ob_refcnt = 8, ob_type = 0x3dad39f5e0}, ob_size = 1}, ob_digit = {42}}"
+"(gdb) p *(PyLongObject*)some_python_integer\n"
+"$5 = {ob_base = {ob_base = {ob_refcnt = 8, ob_type = 0x3dad39f5e0}, ob_size "
+"= 1},\n"
+"ob_digit = {42}}"
 msgstr ""
 
 #: howto/gdb_helpers.rst:189
diff --git a/howto/index.po b/howto/index.po
index be0d97d2e..e790bb95f 100644
--- a/howto/index.po
+++ b/howto/index.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-12-17 01:28+0300\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: 2023-01-16 04:38+0300\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -21,17 +21,109 @@ msgid "Python HOWTOs"
 msgstr "Python NASIL'ları"
 
 #: howto/index.rst:5
+#, fuzzy
 msgid ""
-"Python HOWTOs are documents that cover a single, specific topic, and attempt "
-"to cover it fairly completely. Modelled on the Linux Documentation Project's "
-"HOWTO collection, this collection is an effort to foster documentation "
-"that's more detailed than the Python Library Reference."
+"Python HOWTOs are documents that cover a specific topic in-depth. Modeled on "
+"the Linux Documentation Project's HOWTO collection, this collection is an "
+"effort to foster documentation that's more detailed than the Python Library "
+"Reference."
 msgstr ""
 "Python NASIL'ları, tek bir belirli konuyu kapsayan ve onu olabildiğince "
 "eksiksiz bir şekilde ele almaya çalışan dokümanlardır. Linux Dokümantasyon "
 "Projesi'nin NASIL koleksiyonu üzerinde modellenen bu koleksiyon, Python "
 "Kütüphane Referansından daha detaylı dokümantasyonu teşvik etme çabasıdır."
 
-#: howto/index.rst:11
-msgid "Currently, the HOWTOs are:"
-msgstr "Şu anda, NASIL'lar şunlardır:"
+#: howto/index.rst:35
+msgid "General:"
+msgstr ""
+
+#: howto/index.rst:37
+msgid ":ref:`annotations-howto`"
+msgstr ""
+
+#: howto/index.rst:38
+msgid ":ref:`argparse-tutorial`"
+msgstr ""
+
+#: howto/index.rst:39
+msgid ":ref:`descriptorhowto`"
+msgstr ""
+
+#: howto/index.rst:40
+msgid ":ref:`enum-howto`"
+msgstr ""
+
+#: howto/index.rst:41
+msgid ":ref:`functional-howto`"
+msgstr ""
+
+#: howto/index.rst:42
+msgid ":ref:`ipaddress-howto`"
+msgstr ""
+
+#: howto/index.rst:43
+msgid ":ref:`logging-howto`"
+msgstr ""
+
+#: howto/index.rst:44
+msgid ":ref:`logging-cookbook`"
+msgstr ""
+
+#: howto/index.rst:45
+msgid ":ref:`regex-howto`"
+msgstr ""
+
+#: howto/index.rst:46
+msgid ":ref:`sortinghowto`"
+msgstr ""
+
+#: howto/index.rst:47
+msgid ":ref:`unicode-howto`"
+msgstr ""
+
+#: howto/index.rst:48
+msgid ":ref:`urllib-howto`"
+msgstr ""
+
+#: howto/index.rst:50
+msgid "Advanced development:"
+msgstr ""
+
+#: howto/index.rst:52
+msgid ":ref:`curses-howto`"
+msgstr ""
+
+#: howto/index.rst:53
+msgid ":ref:`isolating-extensions-howto`"
+msgstr ""
+
+#: howto/index.rst:54
+msgid ":ref:`python_2.3_mro`"
+msgstr ""
+
+#: howto/index.rst:55
+msgid ":ref:`socket-howto`"
+msgstr ""
+
+#: howto/index.rst:56
+msgid ":ref:`cporting-howto`"
+msgstr ""
+
+#: howto/index.rst:58
+msgid "Debugging and profiling:"
+msgstr ""
+
+#: howto/index.rst:60
+msgid ":ref:`gdb`"
+msgstr ""
+
+#: howto/index.rst:61
+msgid ":ref:`instrumentation`"
+msgstr ""
+
+#: howto/index.rst:62
+msgid ":ref:`perf_profiling`"
+msgstr ""
+
+#~ msgid "Currently, the HOWTOs are:"
+#~ msgstr "Şu anda, NASIL'lar şunlardır:"
diff --git a/howto/ipaddress.po b/howto/ipaddress.po
index 20a689d22..1b53f99ee 100644
--- a/howto/ipaddress.po
+++ b/howto/ipaddress.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -286,7 +286,7 @@ msgstr ""
 msgid ""
 ">>> net4 = ipaddress.ip_network('192.0.2.0/24')\n"
 ">>> for x in net4.hosts():\n"
-"...     print(x)  \n"
+"...     print(x)\n"
 "192.0.2.1\n"
 "192.0.2.2\n"
 "192.0.2.3\n"
diff --git a/howto/logging-cookbook.po b/howto/logging-cookbook.po
index 2cebdd097..4f9a9a621 100644
--- a/howto/logging-cookbook.po
+++ b/howto/logging-cookbook.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -1099,11 +1099,32 @@ msgid ""
 "configured ports clash with something else in your test environment."
 msgstr ""
 
-#: howto/logging-cookbook.rst:843
+#: howto/logging-cookbook.rst:838
+msgid ""
+"The default configuration uses a TCP socket on port 9020. You can use a Unix "
+"Domain socket instead of a TCP socket by doing the following:"
+msgstr ""
+
+#: howto/logging-cookbook.rst:841
+msgid ""
+"In :file:`listener.json`, add a ``socket`` key with the path to the domain "
+"socket you want to use. If this key is present, the listener listens on the "
+"corresponding domain socket and not on a TCP socket (the ``port`` key is "
+"ignored)."
+msgstr ""
+
+#: howto/logging-cookbook.rst:846
+msgid ""
+"In :file:`webapp.json`, change the socket handler configuration dictionary "
+"so that the ``host`` value is the path to the domain socket, and set the "
+"``port`` value to ``null``."
+msgstr ""
+
+#: howto/logging-cookbook.rst:856
 msgid "Adding contextual information to your logging output"
 msgstr ""
 
-#: howto/logging-cookbook.rst:845
+#: howto/logging-cookbook.rst:858
 msgid ""
 "Sometimes you want logging output to contain contextual information in "
 "addition to the parameters passed to the logging call. For example, in a "
@@ -1119,11 +1140,11 @@ msgid ""
 "`Logger` instances becomes effectively unbounded."
 msgstr ""
 
-#: howto/logging-cookbook.rst:860
+#: howto/logging-cookbook.rst:873
 msgid "Using LoggerAdapters to impart contextual information"
 msgstr ""
 
-#: howto/logging-cookbook.rst:862
+#: howto/logging-cookbook.rst:875
 msgid ""
 "An easy way in which you can pass contextual information to be output along "
 "with logging event information is to use the :class:`LoggerAdapter` class. "
@@ -1134,7 +1155,7 @@ msgid ""
 "types of instances interchangeably."
 msgstr ""
 
-#: howto/logging-cookbook.rst:870
+#: howto/logging-cookbook.rst:883
 msgid ""
 "When you create an instance of :class:`LoggerAdapter`, you pass it a :class:"
 "`Logger` instance and a dict-like object which contains your contextual "
@@ -1145,7 +1166,7 @@ msgid ""
 "of :class:`LoggerAdapter`::"
 msgstr ""
 
-#: howto/logging-cookbook.rst:878
+#: howto/logging-cookbook.rst:891
 msgid ""
 "def debug(self, msg, /, *args, **kwargs):\n"
 "    \"\"\"\n"
@@ -1156,7 +1177,7 @@ msgid ""
 "    self.logger.debug(msg, *args, **kwargs)"
 msgstr ""
 
-#: howto/logging-cookbook.rst:886
+#: howto/logging-cookbook.rst:899
 msgid ""
 "The :meth:`~LoggerAdapter.process` method of :class:`LoggerAdapter` is where "
 "the contextual information is added to the logging output. It's passed the "
@@ -1169,7 +1190,7 @@ msgid ""
 "be silently overwritten."
 msgstr ""
 
-#: howto/logging-cookbook.rst:895
+#: howto/logging-cookbook.rst:908
 msgid ""
 "The advantage of using 'extra' is that the values in the dict-like object "
 "are merged into the :class:`LogRecord` instance's __dict__, allowing you to "
@@ -1180,7 +1201,7 @@ msgid ""
 "`~LoggerAdapter.process` to do what you need. Here is a simple example::"
 msgstr ""
 
-#: howto/logging-cookbook.rst:903
+#: howto/logging-cookbook.rst:916
 msgid ""
 "class CustomAdapter(logging.LoggerAdapter):\n"
 "    \"\"\"\n"
@@ -1191,27 +1212,27 @@ msgid ""
 "        return '[%s] %s' % (self.extra['connid'], msg), kwargs"
 msgstr ""
 
-#: howto/logging-cookbook.rst:911
+#: howto/logging-cookbook.rst:924
 msgid "which you can use like this::"
 msgstr ""
 
-#: howto/logging-cookbook.rst:913
+#: howto/logging-cookbook.rst:926
 msgid ""
 "logger = logging.getLogger(__name__)\n"
 "adapter = CustomAdapter(logger, {'connid': some_conn_id})"
 msgstr ""
 
-#: howto/logging-cookbook.rst:916
+#: howto/logging-cookbook.rst:929
 msgid ""
 "Then any events that you log to the adapter will have the value of "
 "``some_conn_id`` prepended to the log messages."
 msgstr ""
 
-#: howto/logging-cookbook.rst:920
+#: howto/logging-cookbook.rst:933
 msgid "Using objects other than dicts to pass contextual information"
 msgstr ""
 
-#: howto/logging-cookbook.rst:922
+#: howto/logging-cookbook.rst:935
 msgid ""
 "You don't need to pass an actual dict to a :class:`LoggerAdapter` - you "
 "could pass an instance of a class which implements ``__getitem__`` and "
@@ -1220,11 +1241,11 @@ msgid ""
 "would be constant)."
 msgstr ""
 
-#: howto/logging-cookbook.rst:931
+#: howto/logging-cookbook.rst:944
 msgid "Using Filters to impart contextual information"
 msgstr ""
 
-#: howto/logging-cookbook.rst:933
+#: howto/logging-cookbook.rst:946
 msgid ""
 "You can also add contextual information to log output using a user-defined :"
 "class:`Filter`. ``Filter`` instances are allowed to modify the "
@@ -1233,7 +1254,7 @@ msgid ""
 "class:`Formatter`."
 msgstr ""
 
-#: howto/logging-cookbook.rst:938
+#: howto/logging-cookbook.rst:951
 msgid ""
 "For example in a web application, the request being processed (or at least, "
 "the interesting parts of it) can be stored in a threadlocal (:class:"
@@ -1245,7 +1266,7 @@ msgid ""
 "an example script::"
 msgstr ""
 
-#: howto/logging-cookbook.rst:947
+#: howto/logging-cookbook.rst:960
 msgid ""
 "import logging\n"
 "from random import choice\n"
@@ -1288,11 +1309,11 @@ msgid ""
 "'parameters')"
 msgstr ""
 
-#: howto/logging-cookbook.rst:984
+#: howto/logging-cookbook.rst:997
 msgid "which, when run, produces something like:"
 msgstr ""
 
-#: howto/logging-cookbook.rst:986
+#: howto/logging-cookbook.rst:999
 msgid ""
 "2010-09-06 22:38:15,292 a.b.c DEBUG    IP: 123.231.231.123 User: fred     A "
 "debug message\n"
@@ -1320,11 +1341,11 @@ msgid ""
 "message at INFO level with 2 parameters"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1002
+#: howto/logging-cookbook.rst:1015
 msgid "Use of ``contextvars``"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1004
+#: howto/logging-cookbook.rst:1017
 msgid ""
 "Since Python 3.7, the :mod:`contextvars` module has provided context-local "
 "storage which works for both :mod:`threading` and :mod:`asyncio` processing "
@@ -1334,7 +1355,7 @@ msgid ""
 "attributes handled by web applications."
 msgstr ""
 
-#: howto/logging-cookbook.rst:1010
+#: howto/logging-cookbook.rst:1023
 msgid ""
 "For the purposes of illustration, say that you have different web "
 "applications, each independent of the other but running in the same Python "
@@ -1345,11 +1366,11 @@ msgid ""
 "information such as client IP, HTTP request method and client username?"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1017
+#: howto/logging-cookbook.rst:1030
 msgid "Let's assume that the library can be simulated by the following code:"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1019
+#: howto/logging-cookbook.rst:1032
 msgid ""
 "# webapplib.py\n"
 "import logging\n"
@@ -1364,14 +1385,14 @@ msgid ""
 "    time.sleep(0.01)"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1033
+#: howto/logging-cookbook.rst:1046
 msgid ""
 "We can simulate the multiple web applications by means of two simple "
 "classes, ``Request`` and ``WebApp``. These simulate how real threaded web "
 "applications work - each request is handled by a thread:"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1037
+#: howto/logging-cookbook.rst:1050
 msgid ""
 "# main.py\n"
 "import argparse\n"
@@ -1526,7 +1547,7 @@ msgid ""
 "    main()"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1177
+#: howto/logging-cookbook.rst:1190
 msgid ""
 "If you run the above, you should find that roughly half the requests go "
 "into :file:`app1.log` and the rest into :file:`app2.log`, and the all the "
@@ -1537,7 +1558,7 @@ msgid ""
 "illustrated by the following shell output:"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1184
+#: howto/logging-cookbook.rst:1197
 msgid ""
 "~/logging-contextual-webapp$ python main.py\n"
 "app1 processed 51 requests\n"
@@ -1592,11 +1613,11 @@ msgid ""
 "147"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1224
+#: howto/logging-cookbook.rst:1237
 msgid "Imparting contextual information in handlers"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1226
+#: howto/logging-cookbook.rst:1239
 msgid ""
 "Each :class:`~Handler` has its own chain of filters. If you want to add "
 "contextual information to a :class:`LogRecord` without leaking it to other "
@@ -1604,7 +1625,7 @@ msgid ""
 "instead of modifying it in-place, as shown in the following script::"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1231
+#: howto/logging-cookbook.rst:1244
 msgid ""
 "import copy\n"
 "import logging\n"
@@ -1626,11 +1647,11 @@ msgid ""
 "    logger.info('A log message')"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1253
+#: howto/logging-cookbook.rst:1266
 msgid "Logging to a single file from multiple processes"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1255
+#: howto/logging-cookbook.rst:1268
 msgid ""
 "Although logging is thread-safe, and logging to a single file from multiple "
 "threads in a single process *is* supported, logging to a single file from "
@@ -1646,7 +1667,7 @@ msgid ""
 "you to adapt in your own applications."
 msgstr ""
 
-#: howto/logging-cookbook.rst:1268
+#: howto/logging-cookbook.rst:1281
 msgid ""
 "You could also write your own handler which uses the :class:"
 "`~multiprocessing.Lock` class from the :mod:`multiprocessing` module to "
@@ -1657,7 +1678,7 @@ msgid ""
 "platforms (see https://bugs.python.org/issue3770)."
 msgstr ""
 
-#: howto/logging-cookbook.rst:1278
+#: howto/logging-cookbook.rst:1291
 msgid ""
 "Alternatively, you can use a ``Queue`` and a :class:`QueueHandler` to send "
 "all logging events to one of the processes in your multi-process "
@@ -1672,7 +1693,7 @@ msgid ""
 "requirements::"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1289
+#: howto/logging-cookbook.rst:1302
 msgid ""
 "# You'll need these imports in your own code\n"
 "import logging\n"
@@ -1792,13 +1813,13 @@ msgid ""
 "    main()"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1394
+#: howto/logging-cookbook.rst:1407
 msgid ""
 "A variant of the above script keeps the logging in the main process, in a "
 "separate thread::"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1397
+#: howto/logging-cookbook.rst:1410
 msgid ""
 "import logging\n"
 "import logging.config\n"
@@ -1895,7 +1916,7 @@ msgid ""
 "    lp.join()"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1489
+#: howto/logging-cookbook.rst:1502
 msgid ""
 "This variant shows how you can e.g. apply configuration for particular "
 "loggers - e.g. the ``foo`` logger has a special handler which stores all "
@@ -1905,36 +1926,36 @@ msgid ""
 "appropriate destinations."
 msgstr ""
 
-#: howto/logging-cookbook.rst:1496
+#: howto/logging-cookbook.rst:1509
 msgid "Using concurrent.futures.ProcessPoolExecutor"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1498
+#: howto/logging-cookbook.rst:1511
 msgid ""
 "If you want to use :class:`concurrent.futures.ProcessPoolExecutor` to start "
 "your worker processes, you need to create the queue slightly differently. "
 "Instead of"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1502
+#: howto/logging-cookbook.rst:1515
 msgid "queue = multiprocessing.Queue(-1)"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1506
+#: howto/logging-cookbook.rst:1519
 msgid "you should use"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1508
+#: howto/logging-cookbook.rst:1521
 msgid ""
 "queue = multiprocessing.Manager().Queue(-1)  # also works with the examples "
 "above"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1512
+#: howto/logging-cookbook.rst:1525
 msgid "and you can then replace the worker creation from this::"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1514
+#: howto/logging-cookbook.rst:1527
 msgid ""
 "workers = []\n"
 "for i in range(10):\n"
@@ -1946,22 +1967,22 @@ msgid ""
 "    w.join()"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1523
+#: howto/logging-cookbook.rst:1536
 msgid "to this (remembering to first import :mod:`concurrent.futures`)::"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1525
+#: howto/logging-cookbook.rst:1538
 msgid ""
 "with concurrent.futures.ProcessPoolExecutor(max_workers=10) as executor:\n"
 "    for i in range(10):\n"
 "        executor.submit(worker_process, queue, worker_configurer)"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1530
+#: howto/logging-cookbook.rst:1543
 msgid "Deploying Web applications using Gunicorn and uWSGI"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1532
+#: howto/logging-cookbook.rst:1545
 msgid ""
 "When deploying Web applications using `Gunicorn <https://gunicorn.org/>`_ or "
 "`uWSGI <https://uwsgi-docs.readthedocs.io/en/latest/>`_ (or similar), "
@@ -1973,11 +1994,11 @@ msgid ""
 "listener in production`_ for more details."
 msgstr ""
 
-#: howto/logging-cookbook.rst:1542
+#: howto/logging-cookbook.rst:1555
 msgid "Using file rotation"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1547
+#: howto/logging-cookbook.rst:1560
 msgid ""
 "Sometimes you want to let a log file grow to a certain size, then open a new "
 "file and log to that. You may want to keep a certain number of these files, "
@@ -1986,7 +2007,7 @@ msgid ""
 "usage pattern, the logging package provides a :class:`RotatingFileHandler`::"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1553
+#: howto/logging-cookbook.rst:1566
 msgid ""
 "import glob\n"
 "import logging\n"
@@ -2015,13 +2036,13 @@ msgid ""
 "    print(filename)"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1579
+#: howto/logging-cookbook.rst:1592
 msgid ""
 "The result should be 6 separate files, each with part of the log history for "
 "the application:"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1582
+#: howto/logging-cookbook.rst:1595
 msgid ""
 "logging_rotatingfile_example.out\n"
 "logging_rotatingfile_example.out.1\n"
@@ -2031,7 +2052,7 @@ msgid ""
 "logging_rotatingfile_example.out.5"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1591
+#: howto/logging-cookbook.rst:1604
 msgid ""
 "The most current file is always :file:`logging_rotatingfile_example.out`, "
 "and each time it reaches the size limit it is renamed with the suffix "
@@ -2039,17 +2060,17 @@ msgid ""
 "(``.1`` becomes ``.2``, etc.)  and the ``.6`` file is erased."
 msgstr ""
 
-#: howto/logging-cookbook.rst:1596
+#: howto/logging-cookbook.rst:1609
 msgid ""
 "Obviously this example sets the log length much too small as an extreme "
 "example.  You would want to set *maxBytes* to an appropriate value."
 msgstr ""
 
-#: howto/logging-cookbook.rst:1604
+#: howto/logging-cookbook.rst:1617
 msgid "Use of alternative formatting styles"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1606
+#: howto/logging-cookbook.rst:1619
 msgid ""
 "When logging was added to the Python standard library, the only way of "
 "formatting messages with variable content was to use the %-formatting "
@@ -2058,7 +2079,7 @@ msgid ""
 "Python 2.6)."
 msgstr ""
 
-#: howto/logging-cookbook.rst:1612
+#: howto/logging-cookbook.rst:1625
 msgid ""
 "Logging (as of 3.2) provides improved support for these two additional "
 "formatting styles. The :class:`Formatter` class been enhanced to take an "
@@ -2071,7 +2092,7 @@ msgid ""
 "session to show the possibilities:"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1622
+#: howto/logging-cookbook.rst:1635
 msgid ""
 ">>> import logging\n"
 ">>> root = logging.getLogger()\n"
@@ -2096,21 +2117,21 @@ msgid ""
 ">>>"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1646
+#: howto/logging-cookbook.rst:1659
 msgid ""
 "Note that the formatting of logging messages for final output to logs is "
 "completely independent of how an individual logging message is constructed. "
 "That can still use %-formatting, as shown here::"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1650
+#: howto/logging-cookbook.rst:1663
 msgid ""
 ">>> logger.error('This is an%s %s %s', 'other,', 'ERROR,', 'message')\n"
 "2010-10-28 15:19:29,833 foo.bar ERROR This is another, ERROR, message\n"
 ">>>"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1654
+#: howto/logging-cookbook.rst:1667
 msgid ""
 "Logging calls (``logger.debug()``, ``logger.info()`` etc.) only take "
 "positional parameters for the actual logging message itself, with keyword "
@@ -2126,7 +2147,7 @@ msgid ""
 "strings."
 msgstr ""
 
-#: howto/logging-cookbook.rst:1667
+#: howto/logging-cookbook.rst:1680
 msgid ""
 "There is, however, a way that you can use {}- and $- formatting to construct "
 "your individual log messages. Recall that for a message you can use an "
@@ -2135,7 +2156,7 @@ msgid ""
 "the following two classes::"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1673 howto/logging-cookbook.rst:2761
+#: howto/logging-cookbook.rst:1686 howto/logging-cookbook.rst:2774
 msgid ""
 "class BraceMessage:\n"
 "    def __init__(self, fmt, /, *args, **kwargs):\n"
@@ -2156,7 +2177,7 @@ msgid ""
 "        return Template(self.fmt).substitute(**self.kwargs)"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1691
+#: howto/logging-cookbook.rst:1704
 msgid ""
 "Either of these can be used in place of a format string, to allow {}- or $-"
 "formatting to be used to build the actual \"message\" part which appears in "
@@ -2167,14 +2188,14 @@ msgid ""
 "used as a synonym/alias for :func:`gettext.gettext` or its brethren)."
 msgstr ""
 
-#: howto/logging-cookbook.rst:1699
+#: howto/logging-cookbook.rst:1712
 msgid ""
 "The above classes are not included in Python, though they're easy enough to "
 "copy and paste into your own code. They can be used as follows (assuming "
 "that they're declared in a module called ``wherever``):"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1703
+#: howto/logging-cookbook.rst:1716
 msgid ""
 ">>> from wherever import BraceMessage as __\n"
 ">>> print(__('Message with {0} {name}', 2, name='placeholders'))\n"
@@ -2193,14 +2214,14 @@ msgid ""
 ">>>"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1721
+#: howto/logging-cookbook.rst:1734
 msgid ""
 "While the above examples use ``print()`` to show how the formatting works, "
 "you would of course use ``logger.debug()`` or similar to actually log using "
 "this approach."
 msgstr ""
 
-#: howto/logging-cookbook.rst:1725
+#: howto/logging-cookbook.rst:1738
 msgid ""
 "One thing to note is that you pay no significant performance penalty with "
 "this approach: the actual formatting happens not when you make the logging "
@@ -2211,13 +2232,13 @@ msgid ""
 "sugar for a constructor call to one of the :samp:`{XXX}Message` classes."
 msgstr ""
 
-#: howto/logging-cookbook.rst:1733
+#: howto/logging-cookbook.rst:1746
 msgid ""
 "If you prefer, you can use a :class:`LoggerAdapter` to achieve a similar "
 "effect to the above, as in the following example::"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1736
+#: howto/logging-cookbook.rst:1749
 msgid ""
 "import logging\n"
 "\n"
@@ -2246,17 +2267,17 @@ msgid ""
 "    main()"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1762
+#: howto/logging-cookbook.rst:1775
 msgid ""
 "The above script should log the message ``Hello, world!`` when run with "
 "Python 3.8 or later."
 msgstr ""
 
-#: howto/logging-cookbook.rst:1771
+#: howto/logging-cookbook.rst:1784
 msgid "Customizing ``LogRecord``"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1773
+#: howto/logging-cookbook.rst:1786
 msgid ""
 "Every logging event is represented by a :class:`LogRecord` instance. When an "
 "event is logged and not filtered out by a logger's level, a :class:"
@@ -2267,13 +2288,13 @@ msgid ""
 "was done:"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1780
+#: howto/logging-cookbook.rst:1793
 msgid ""
 ":meth:`Logger.makeRecord`, which is called in the normal process of logging "
 "an event. This invoked :class:`LogRecord` directly to create an instance."
 msgstr ""
 
-#: howto/logging-cookbook.rst:1783
+#: howto/logging-cookbook.rst:1796
 msgid ""
 ":func:`makeLogRecord`, which is called with a dictionary containing "
 "attributes to be added to the LogRecord. This is typically invoked when a "
@@ -2282,27 +2303,27 @@ msgid ""
 "`~handlers.HTTPHandler`)."
 msgstr ""
 
-#: howto/logging-cookbook.rst:1789
+#: howto/logging-cookbook.rst:1802
 msgid ""
 "This has usually meant that if you need to do anything special with a :class:"
 "`LogRecord`, you've had to do one of the following."
 msgstr ""
 
-#: howto/logging-cookbook.rst:1792
+#: howto/logging-cookbook.rst:1805
 msgid ""
 "Create your own :class:`Logger` subclass, which overrides :meth:`Logger."
 "makeRecord`, and set it using :func:`~logging.setLoggerClass` before any "
 "loggers that you care about are instantiated."
 msgstr ""
 
-#: howto/logging-cookbook.rst:1795
+#: howto/logging-cookbook.rst:1808
 msgid ""
 "Add a :class:`Filter` to a logger or handler, which does the necessary "
 "special manipulation you need when its :meth:`~Filter.filter` method is "
 "called."
 msgstr ""
 
-#: howto/logging-cookbook.rst:1799
+#: howto/logging-cookbook.rst:1812
 msgid ""
 "The first approach would be a little unwieldy in the scenario where (say) "
 "several different libraries wanted to do different things. Each would "
@@ -2310,7 +2331,7 @@ msgid ""
 "last would win."
 msgstr ""
 
-#: howto/logging-cookbook.rst:1804
+#: howto/logging-cookbook.rst:1817
 msgid ""
 "The second approach works reasonably well for many cases, but does not allow "
 "you to e.g. use a specialized subclass of :class:`LogRecord`. Library "
@@ -2319,11 +2340,11 @@ msgid ""
 "would do simply by adding new packages or modules and doing ::"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1810
+#: howto/logging-cookbook.rst:1823
 msgid "logger = logging.getLogger(__name__)"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1812
+#: howto/logging-cookbook.rst:1825
 msgid ""
 "at module level). It's probably one too many things to think about. "
 "Developers could also add the filter to a :class:`~logging.NullHandler` "
@@ -2333,7 +2354,7 @@ msgid ""
 "developer."
 msgstr ""
 
-#: howto/logging-cookbook.rst:1818
+#: howto/logging-cookbook.rst:1831
 msgid ""
 "In Python 3.2 and later, :class:`~logging.LogRecord` creation is done "
 "through a factory, which you can specify. The factory is just a callable you "
@@ -2343,7 +2364,7 @@ msgid ""
 "`LogRecord` is the default setting for the factory."
 msgstr ""
 
-#: howto/logging-cookbook.rst:1825
+#: howto/logging-cookbook.rst:1838
 msgid ""
 "This approach allows a custom factory to control all aspects of LogRecord "
 "creation. For example, you could return a subclass, or just add some "
@@ -2351,7 +2372,7 @@ msgid ""
 "this::"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1829
+#: howto/logging-cookbook.rst:1842
 msgid ""
 "old_factory = logging.getLogRecordFactory()\n"
 "\n"
@@ -2363,7 +2384,7 @@ msgid ""
 "logging.setLogRecordFactory(record_factory)"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1838
+#: howto/logging-cookbook.rst:1851
 msgid ""
 "This pattern allows different libraries to chain factories together, and as "
 "long as they don't overwrite each other's attributes or unintentionally "
@@ -2373,22 +2394,22 @@ msgid ""
 "used when the use of a :class:`Filter` does not provide the desired result."
 msgstr ""
 
-#: howto/logging-cookbook.rst:1850
+#: howto/logging-cookbook.rst:1863
 msgid "Subclassing QueueHandler and QueueListener- a ZeroMQ example"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1853 howto/logging-cookbook.rst:1986
+#: howto/logging-cookbook.rst:1866 howto/logging-cookbook.rst:1999
 msgid "Subclass ``QueueHandler``"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1855
+#: howto/logging-cookbook.rst:1868
 msgid ""
 "You can use a :class:`QueueHandler` subclass to send messages to other kinds "
 "of queues, for example a ZeroMQ 'publish' socket. In the example below,the "
 "socket is created separately and passed to the handler (as its 'queue')::"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1859
+#: howto/logging-cookbook.rst:1872
 msgid ""
 "import zmq   # using pyzmq, the Python binding for ZeroMQ\n"
 "import json  # for serializing records portably\n"
@@ -2405,13 +2426,13 @@ msgid ""
 "handler = ZeroMQSocketHandler(sock)"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1874
+#: howto/logging-cookbook.rst:1887
 msgid ""
 "Of course there are other ways of organizing this, for example passing in "
 "the data needed by the handler to create the socket::"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1877
+#: howto/logging-cookbook.rst:1890
 msgid ""
 "class ZeroMQSocketHandler(QueueHandler):\n"
 "    def __init__(self, uri, socktype=zmq.PUB, ctx=None):\n"
@@ -2427,17 +2448,17 @@ msgid ""
 "        self.queue.close()"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1892 howto/logging-cookbook.rst:1922
+#: howto/logging-cookbook.rst:1905 howto/logging-cookbook.rst:1935
 msgid "Subclass ``QueueListener``"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1894
+#: howto/logging-cookbook.rst:1907
 msgid ""
 "You can also subclass :class:`QueueListener` to get messages from other "
 "kinds of queues, for example a ZeroMQ 'subscribe' socket. Here's an example::"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1897
+#: howto/logging-cookbook.rst:1910
 msgid ""
 "class ZeroMQSocketListener(QueueListener):\n"
 "    def __init__(self, uri, /, *handlers, **kwargs):\n"
@@ -2453,11 +2474,11 @@ msgid ""
 "        return logging.makeLogRecord(msg)"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1912
+#: howto/logging-cookbook.rst:1925
 msgid "Subclassing QueueHandler and QueueListener- a ``pynng`` example"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1914
+#: howto/logging-cookbook.rst:1927
 msgid ""
 "In a similar way to the above section, we can implement a listener and "
 "handler using :pypi:`pynng`, which is a Python binding to `NNG <https://nng."
@@ -2466,7 +2487,7 @@ msgid ""
 "``pynng`` installed. Just for variety, we present the listener first."
 msgstr ""
 
-#: howto/logging-cookbook.rst:1924
+#: howto/logging-cookbook.rst:1937
 msgid ""
 "# listener.py\n"
 "import json\n"
@@ -2528,7 +2549,7 @@ msgid ""
 "    listener.stop()"
 msgstr ""
 
-#: howto/logging-cookbook.rst:1990
+#: howto/logging-cookbook.rst:2003
 msgid ""
 "# sender.py\n"
 "import json\n"
@@ -2577,14 +2598,14 @@ msgid ""
 "    time.sleep(delay)"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2037
+#: howto/logging-cookbook.rst:2050
 msgid ""
 "You can run the above two snippets in separate command shells. If we run the "
 "listener in one shell and run the sender in two separate shells, we should "
 "see something like the following. In the first sender shell:"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2041
+#: howto/logging-cookbook.rst:2054
 msgid ""
 "$ python sender.py\n"
 "DEBUG         myapp    613 Message no.     1\n"
@@ -2598,11 +2619,11 @@ msgid ""
 "(and so on)"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2054
+#: howto/logging-cookbook.rst:2067
 msgid "In the second sender shell:"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2056
+#: howto/logging-cookbook.rst:2069
 msgid ""
 "$ python sender.py\n"
 "INFO     myapp.lib2    657 Message no.     1\n"
@@ -2616,11 +2637,11 @@ msgid ""
 "(and so on)"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2069
+#: howto/logging-cookbook.rst:2082
 msgid "In the listener shell:"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2071
+#: howto/logging-cookbook.rst:2084
 msgid ""
 "$ python listener.py\n"
 "Press Ctrl-C to stop.\n"
@@ -2643,17 +2664,17 @@ msgid ""
 "(and so on)"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2093
+#: howto/logging-cookbook.rst:2106
 msgid ""
 "As you can see, the logging from the two sender processes is interleaved in "
 "the listener's output."
 msgstr ""
 
-#: howto/logging-cookbook.rst:2098
+#: howto/logging-cookbook.rst:2111
 msgid "An example dictionary-based configuration"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2100
+#: howto/logging-cookbook.rst:2113
 msgid ""
 "Below is an example of a logging configuration dictionary - it's taken from "
 "the `documentation on the Django project <https://docs.djangoproject.com/en/"
@@ -2661,7 +2682,7 @@ msgid ""
 "func:`~config.dictConfig` to put the configuration into effect::"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2104
+#: howto/logging-cookbook.rst:2117
 msgid ""
 "LOGGING = {\n"
 "    'version': 1,\n"
@@ -2714,24 +2735,24 @@ msgid ""
 "}"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2153
+#: howto/logging-cookbook.rst:2166
 msgid ""
 "For more information about this configuration, you can see the `relevant "
 "section <https://docs.djangoproject.com/en/stable/topics/logging/"
 "#configuring-logging>`_ of the Django documentation."
 msgstr ""
 
-#: howto/logging-cookbook.rst:2160
+#: howto/logging-cookbook.rst:2173
 msgid "Using a rotator and namer to customize log rotation processing"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2162
+#: howto/logging-cookbook.rst:2175
 msgid ""
 "An example of how you can define a namer and rotator is given in the "
 "following runnable script, which shows gzip compression of the log file::"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2165
+#: howto/logging-cookbook.rst:2178
 msgid ""
 "import gzip\n"
 "import logging\n"
@@ -2763,12 +2784,12 @@ msgid ""
 "    root.info(f'Message no. {i + 1}')"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2193
+#: howto/logging-cookbook.rst:2206
 msgid ""
 "After running this, you will see six new files, five of which are compressed:"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2195
+#: howto/logging-cookbook.rst:2208
 msgid ""
 "$ ls rotated.log*\n"
 "rotated.log       rotated.log.2.gz  rotated.log.4.gz\n"
@@ -2779,11 +2800,11 @@ msgid ""
 "2023-01-20 02:28:17,767 Message no. 998"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2206
+#: howto/logging-cookbook.rst:2219
 msgid "A more elaborate multiprocessing example"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2208
+#: howto/logging-cookbook.rst:2221
 msgid ""
 "The following working example shows how logging can be used with "
 "multiprocessing using configuration files. The configurations are fairly "
@@ -2791,7 +2812,7 @@ msgid ""
 "in a real multiprocessing scenario."
 msgstr ""
 
-#: howto/logging-cookbook.rst:2213
+#: howto/logging-cookbook.rst:2226
 msgid ""
 "In the example, the main process spawns a listener process and some worker "
 "processes. Each of the main process, the listener and the workers have three "
@@ -2804,13 +2825,13 @@ msgid ""
 "own scenario."
 msgstr ""
 
-#: howto/logging-cookbook.rst:2223
+#: howto/logging-cookbook.rst:2236
 msgid ""
 "Here's the script - the docstrings and the comments hopefully explain how it "
 "works::"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2226
+#: howto/logging-cookbook.rst:2239
 msgid ""
 "import logging\n"
 "import logging.config\n"
@@ -3033,11 +3054,11 @@ msgid ""
 "    main()"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2435
+#: howto/logging-cookbook.rst:2448
 msgid "Inserting a BOM into messages sent to a SysLogHandler"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2437
+#: howto/logging-cookbook.rst:2450
 msgid ""
 ":rfc:`5424` requires that a Unicode message be sent to a syslog daemon as a "
 "set of bytes which have the following structure: an optional pure-ASCII "
@@ -3046,7 +3067,7 @@ msgid ""
 "<5424#section-6>`.)"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2443
+#: howto/logging-cookbook.rst:2456
 msgid ""
 "In Python 3.1, code was added to :class:`~logging.handlers.SysLogHandler` to "
 "insert a BOM into the message, but unfortunately, it was implemented "
@@ -3054,7 +3075,7 @@ msgid ""
 "hence not allowing any pure-ASCII component to appear before it."
 msgstr ""
 
-#: howto/logging-cookbook.rst:2449
+#: howto/logging-cookbook.rst:2462
 msgid ""
 "As this behaviour is broken, the incorrect BOM insertion code is being "
 "removed from Python 3.2.4 and later. However, it is not being replaced, and "
@@ -3063,37 +3084,37 @@ msgid ""
 "encoded using UTF-8, then you need to do the following:"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2455
+#: howto/logging-cookbook.rst:2468
 msgid ""
 "Attach a :class:`~logging.Formatter` instance to your :class:`~logging."
 "handlers.SysLogHandler` instance, with a format string such as::"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2459
+#: howto/logging-cookbook.rst:2472
 msgid "'ASCII section\\ufeffUnicode section'"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2461
+#: howto/logging-cookbook.rst:2474
 msgid ""
 "The Unicode code point U+FEFF, when encoded using UTF-8, will be encoded as "
 "a UTF-8 BOM -- the byte-string ``b'\\xef\\xbb\\xbf'``."
 msgstr ""
 
-#: howto/logging-cookbook.rst:2464
+#: howto/logging-cookbook.rst:2477
 msgid ""
 "Replace the ASCII section with whatever placeholders you like, but make sure "
 "that the data that appears in there after substitution is always ASCII (that "
 "way, it will remain unchanged after UTF-8 encoding)."
 msgstr ""
 
-#: howto/logging-cookbook.rst:2468
+#: howto/logging-cookbook.rst:2481
 msgid ""
 "Replace the Unicode section with whatever placeholders you like; if the data "
 "which appears there after substitution contains characters outside the ASCII "
 "range, that's fine -- it will be encoded using UTF-8."
 msgstr ""
 
-#: howto/logging-cookbook.rst:2472
+#: howto/logging-cookbook.rst:2485
 msgid ""
 "The formatted message *will* be encoded using UTF-8 encoding by "
 "``SysLogHandler``. If you follow the above rules, you should be able to "
@@ -3102,11 +3123,11 @@ msgid ""
 "daemon may complain."
 msgstr ""
 
-#: howto/logging-cookbook.rst:2479
+#: howto/logging-cookbook.rst:2492
 msgid "Implementing structured logging"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2481
+#: howto/logging-cookbook.rst:2494
 msgid ""
 "Although most logging messages are intended for reading by humans, and thus "
 "not readily machine-parseable, there might be circumstances where you want "
@@ -3118,7 +3139,7 @@ msgid ""
 "machine-parseable manner::"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2489
+#: howto/logging-cookbook.rst:2502
 msgid ""
 "import json\n"
 "import logging\n"
@@ -3137,29 +3158,29 @@ msgid ""
 "logging.info(_('message 1', foo='bar', bar='baz', num=123, fnum=123.456))"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2505
+#: howto/logging-cookbook.rst:2518
 msgid "If the above script is run, it prints:"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2507
+#: howto/logging-cookbook.rst:2520
 msgid ""
 "message 1 >>> {\"fnum\": 123.456, \"num\": 123, \"bar\": \"baz\", \"foo\": "
 "\"bar\"}"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2511 howto/logging-cookbook.rst:2553
+#: howto/logging-cookbook.rst:2524 howto/logging-cookbook.rst:2566
 msgid ""
 "Note that the order of items might be different according to the version of "
 "Python used."
 msgstr ""
 
-#: howto/logging-cookbook.rst:2514
+#: howto/logging-cookbook.rst:2527
 msgid ""
 "If you need more specialised processing, you can use a custom JSON encoder, "
 "as in the following complete example::"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2517
+#: howto/logging-cookbook.rst:2530
 msgid ""
 "import json\n"
 "import logging\n"
@@ -3192,19 +3213,19 @@ msgid ""
 "    main()"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2547
+#: howto/logging-cookbook.rst:2560
 msgid "When the above script is run, it prints:"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2549
+#: howto/logging-cookbook.rst:2562
 msgid "message 1 >>> {\"snowman\": \"\\u2603\", \"set_value\": [1, 2, 3]}"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2562
+#: howto/logging-cookbook.rst:2575
 msgid "Customizing handlers with :func:`dictConfig`"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2564
+#: howto/logging-cookbook.rst:2577
 msgid ""
 "There are times when you want to customize logging handlers in particular "
 "ways, and if you use :func:`dictConfig` you may be able to do this without "
@@ -3214,7 +3235,7 @@ msgid ""
 "customize handler creation using a plain function such as::"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2571
+#: howto/logging-cookbook.rst:2584
 msgid ""
 "def owned_file_handler(filename, mode='a', encoding=None, owner=None):\n"
 "    if owner:\n"
@@ -3224,13 +3245,13 @@ msgid ""
 "    return logging.FileHandler(filename, mode, encoding)"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2578
+#: howto/logging-cookbook.rst:2591
 msgid ""
 "You can then specify, in a logging configuration passed to :func:"
 "`dictConfig`, that a logging handler be created by calling this function::"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2581
+#: howto/logging-cookbook.rst:2594
 msgid ""
 "LOGGING = {\n"
 "    'version': 1,\n"
@@ -3263,14 +3284,14 @@ msgid ""
 "}"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2611
+#: howto/logging-cookbook.rst:2624
 msgid ""
 "In this example I am setting the ownership using the ``pulse`` user and "
 "group, just for the purposes of illustration. Putting it together into a "
 "working script, ``chowntest.py``::"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2615
+#: howto/logging-cookbook.rst:2628
 msgid ""
 "import logging, logging.config, os, shutil\n"
 "\n"
@@ -3316,11 +3337,11 @@ msgid ""
 "logger.debug('A debug message')"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2658
+#: howto/logging-cookbook.rst:2671
 msgid "To run this, you will probably need to run as ``root``:"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2660
+#: howto/logging-cookbook.rst:2673
 msgid ""
 "$ sudo python3.3 chowntest.py\n"
 "$ cat chowntest.log\n"
@@ -3329,7 +3350,7 @@ msgid ""
 "-rw-r--r-- 1 pulse pulse 55 2013-11-05 09:34 chowntest.log"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2668
+#: howto/logging-cookbook.rst:2681
 msgid ""
 "Note that this example uses Python 3.3 because that's where :func:`shutil."
 "chown` makes an appearance. This approach should work with any Python "
@@ -3338,25 +3359,25 @@ msgid ""
 "change using e.g. :func:`os.chown`."
 msgstr ""
 
-#: howto/logging-cookbook.rst:2674
+#: howto/logging-cookbook.rst:2687
 msgid ""
 "In practice, the handler-creating function may be in a utility module "
 "somewhere in your project. Instead of the line in the configuration::"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2677
+#: howto/logging-cookbook.rst:2690
 msgid "'()': owned_file_handler,"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2679
+#: howto/logging-cookbook.rst:2692
 msgid "you could use e.g.::"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2681
+#: howto/logging-cookbook.rst:2694
 msgid "'()': 'ext://project.util.owned_file_handler',"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2683
+#: howto/logging-cookbook.rst:2696
 msgid ""
 "where ``project.util`` can be replaced with the actual name of the package "
 "where the function resides. In the above working script, using ``'ext://"
@@ -3364,25 +3385,25 @@ msgid ""
 "resolved by :func:`dictConfig` from the ``ext://`` specification."
 msgstr ""
 
-#: howto/logging-cookbook.rst:2688
+#: howto/logging-cookbook.rst:2701
 msgid ""
 "This example hopefully also points the way to how you could implement other "
 "types of file change - e.g. setting specific POSIX permission bits - in the "
 "same way, using :func:`os.chmod`."
 msgstr ""
 
-#: howto/logging-cookbook.rst:2692
+#: howto/logging-cookbook.rst:2705
 msgid ""
 "Of course, the approach could also be extended to types of handler other "
 "than a :class:`~logging.FileHandler` - for example, one of the rotating file "
 "handlers, or a different type of handler altogether."
 msgstr ""
 
-#: howto/logging-cookbook.rst:2702
+#: howto/logging-cookbook.rst:2715
 msgid "Using particular formatting styles throughout your application"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2704
+#: howto/logging-cookbook.rst:2717
 msgid ""
 "In Python 3.2, the :class:`~logging.Formatter` gained a ``style`` keyword "
 "parameter which, while defaulting to ``%`` for backward compatibility, "
@@ -3393,7 +3414,7 @@ msgid ""
 "is constructed."
 msgstr ""
 
-#: howto/logging-cookbook.rst:2711
+#: howto/logging-cookbook.rst:2724
 msgid ""
 "Logging calls (:meth:`~Logger.debug`, :meth:`~Logger.info` etc.) only take "
 "positional parameters for the actual logging message itself, with keyword "
@@ -3408,7 +3429,7 @@ msgid ""
 "calls which are out there in existing code will be using %-format strings."
 msgstr ""
 
-#: howto/logging-cookbook.rst:2723
+#: howto/logging-cookbook.rst:2736
 msgid ""
 "There have been suggestions to associate format styles with specific "
 "loggers, but that approach also runs into backward compatibility problems "
@@ -3416,7 +3437,7 @@ msgid ""
 "formatting."
 msgstr ""
 
-#: howto/logging-cookbook.rst:2727
+#: howto/logging-cookbook.rst:2740
 msgid ""
 "For logging to work interoperably between any third-party libraries and your "
 "code, decisions about formatting need to be made at the level of the "
@@ -3424,11 +3445,11 @@ msgid ""
 "formatting styles can be accommodated."
 msgstr ""
 
-#: howto/logging-cookbook.rst:2734
+#: howto/logging-cookbook.rst:2747
 msgid "Using LogRecord factories"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2736
+#: howto/logging-cookbook.rst:2749
 msgid ""
 "In Python 3.2, along with the :class:`~logging.Formatter` changes mentioned "
 "above, the logging package gained the ability to allow users to set their "
@@ -3443,17 +3464,17 @@ msgid ""
 "implementation does."
 msgstr ""
 
-#: howto/logging-cookbook.rst:2747
+#: howto/logging-cookbook.rst:2760
 msgid ""
 "Refer to the reference documentation on :func:`setLogRecordFactory` and :"
 "class:`LogRecord` for more information."
 msgstr ""
 
-#: howto/logging-cookbook.rst:2752
+#: howto/logging-cookbook.rst:2765
 msgid "Using custom message objects"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2754
+#: howto/logging-cookbook.rst:2767
 msgid ""
 "There is another, perhaps simpler way that you can use {}- and $- formatting "
 "to construct your individual log messages. You may recall (from :ref:"
@@ -3463,7 +3484,7 @@ msgid ""
 "following two classes::"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2779
+#: howto/logging-cookbook.rst:2792
 msgid ""
 "Either of these can be used in place of a format string, to allow {}- or $-"
 "formatting to be used to build the actual \"message\" part which appears in "
@@ -3474,13 +3495,13 @@ msgid ""
 "using ``_`` for localization)."
 msgstr ""
 
-#: howto/logging-cookbook.rst:2787
+#: howto/logging-cookbook.rst:2800
 msgid ""
 "Examples of this approach are given below. Firstly, formatting with :meth:"
 "`str.format`::"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2790
+#: howto/logging-cookbook.rst:2803
 msgid ""
 ">>> __ = BraceMessage\n"
 ">>> print(__('Message with {0} {1}', 2, 'placeholders'))\n"
@@ -3495,11 +3516,11 @@ msgid ""
 "Message with coordinates: (0.50, 0.50)"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2801
+#: howto/logging-cookbook.rst:2814
 msgid "Secondly, formatting with :class:`string.Template`::"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2803
+#: howto/logging-cookbook.rst:2816
 msgid ""
 ">>> __ = DollarMessage\n"
 ">>> print(__('Message with $num $what', num=2, what='placeholders'))\n"
@@ -3507,7 +3528,7 @@ msgid ""
 ">>>"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2808
+#: howto/logging-cookbook.rst:2821
 msgid ""
 "One thing to note is that you pay no significant performance penalty with "
 "this approach: the actual formatting happens not when you make the logging "
@@ -3519,11 +3540,11 @@ msgid ""
 "shown above."
 msgstr ""
 
-#: howto/logging-cookbook.rst:2822
+#: howto/logging-cookbook.rst:2835
 msgid "Configuring filters with :func:`dictConfig`"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2824
+#: howto/logging-cookbook.rst:2837
 msgid ""
 "You *can* configure filters using :func:`~logging.config.dictConfig`, though "
 "it might not be obvious at first glance how to do it (hence this recipe). "
@@ -3538,7 +3559,7 @@ msgid ""
 "complete example::"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2835
+#: howto/logging-cookbook.rst:2848
 msgid ""
 "import logging\n"
 "import logging.config\n"
@@ -3583,26 +3604,26 @@ msgid ""
 "    logging.debug('hello - noshow')"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2877
+#: howto/logging-cookbook.rst:2890
 msgid ""
 "This example shows how you can pass configuration data to the callable which "
 "constructs the instance, in the form of keyword parameters. When run, the "
 "above script will print:"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2881
+#: howto/logging-cookbook.rst:2894
 msgid "changed: hello"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2885
+#: howto/logging-cookbook.rst:2898
 msgid "which shows that the filter is working as configured."
 msgstr ""
 
-#: howto/logging-cookbook.rst:2887
+#: howto/logging-cookbook.rst:2900
 msgid "A couple of extra points to note:"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2889
+#: howto/logging-cookbook.rst:2902
 msgid ""
 "If you can't refer to the callable directly in the configuration (e.g. if it "
 "lives in a different module, and you can't import it directly where the "
@@ -3612,7 +3633,7 @@ msgid ""
 "the above example."
 msgstr ""
 
-#: howto/logging-cookbook.rst:2896
+#: howto/logging-cookbook.rst:2909
 msgid ""
 "As well as for filters, this technique can also be used to configure custom "
 "handlers and formatters. See :ref:`logging-config-dict-userdef` for more "
@@ -3621,11 +3642,11 @@ msgid ""
 "above."
 msgstr ""
 
-#: howto/logging-cookbook.rst:2905
+#: howto/logging-cookbook.rst:2918
 msgid "Customized exception formatting"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2907
+#: howto/logging-cookbook.rst:2920
 msgid ""
 "There might be times when you want to do customized exception formatting - "
 "for argument's sake, let's say you want exactly one line per logged event, "
@@ -3633,7 +3654,7 @@ msgid ""
 "formatter class, as shown in the following example::"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2912
+#: howto/logging-cookbook.rst:2925
 msgid ""
 "import logging\n"
 "\n"
@@ -3672,11 +3693,11 @@ msgid ""
 "    main()"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2948
+#: howto/logging-cookbook.rst:2961
 msgid "When run, this produces a file with exactly two lines:"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2950
+#: howto/logging-cookbook.rst:2963
 msgid ""
 "28/01/2015 07:21:23|INFO|Sample message|\n"
 "28/01/2015 07:21:23|ERROR|ZeroDivisionError: integer division or modulo by "
@@ -3685,18 +3706,18 @@ msgid ""
 "zero'|"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2955
+#: howto/logging-cookbook.rst:2968
 msgid ""
 "While the above treatment is simplistic, it points the way to how exception "
 "information can be formatted to your liking. The :mod:`traceback` module may "
 "be helpful for more specialized needs."
 msgstr ""
 
-#: howto/logging-cookbook.rst:2962
+#: howto/logging-cookbook.rst:2975
 msgid "Speaking logging messages"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2964
+#: howto/logging-cookbook.rst:2977
 msgid ""
 "There might be situations when it is desirable to have logging messages "
 "rendered in an audible rather than a visible format. This is easy to do if "
@@ -3713,7 +3734,7 @@ msgid ""
 "approach, which assumes that the ``espeak`` TTS package is available::"
 msgstr ""
 
-#: howto/logging-cookbook.rst:2977
+#: howto/logging-cookbook.rst:2990
 msgid ""
 "import logging\n"
 "import subprocess\n"
@@ -3745,24 +3766,24 @@ msgid ""
 "    sys.exit(main())"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3006
+#: howto/logging-cookbook.rst:3019
 msgid ""
 "When run, this script should say \"Hello\" and then \"Goodbye\" in a female "
 "voice."
 msgstr ""
 
-#: howto/logging-cookbook.rst:3008
+#: howto/logging-cookbook.rst:3021
 msgid ""
 "The above approach can, of course, be adapted to other TTS systems and even "
 "other systems altogether which can process messages via external programs "
 "run from a command line."
 msgstr ""
 
-#: howto/logging-cookbook.rst:3016
+#: howto/logging-cookbook.rst:3029
 msgid "Buffering logging messages and outputting them conditionally"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3018
+#: howto/logging-cookbook.rst:3031
 msgid ""
 "There might be situations where you want to log messages in a temporary area "
 "and only output them if a certain condition occurs. For example, you may "
@@ -3772,7 +3793,7 @@ msgid ""
 "debug information to be output as well as the error."
 msgstr ""
 
-#: howto/logging-cookbook.rst:3025
+#: howto/logging-cookbook.rst:3038
 msgid ""
 "Here is an example which shows how you could do this using a decorator for "
 "your functions where you want logging to behave this way. It makes use of "
@@ -3785,7 +3806,7 @@ msgid ""
 "subclass of ``MemoryHandler`` if you want custom flushing behavior."
 msgstr ""
 
-#: howto/logging-cookbook.rst:3035
+#: howto/logging-cookbook.rst:3048
 msgid ""
 "The example script has a simple function, ``foo``, which just cycles through "
 "all the logging levels, writing to ``sys.stderr`` to say what level it's "
@@ -3794,7 +3815,7 @@ msgid ""
 "levels - otherwise, it only logs at DEBUG, INFO and WARNING levels."
 msgstr ""
 
-#: howto/logging-cookbook.rst:3041
+#: howto/logging-cookbook.rst:3054
 msgid ""
 "The script just arranges to decorate ``foo`` with a decorator which will do "
 "the conditional logging that's required. The decorator takes a logger as a "
@@ -3806,11 +3827,11 @@ msgid ""
 "respectively."
 msgstr ""
 
-#: howto/logging-cookbook.rst:3049
+#: howto/logging-cookbook.rst:3062
 msgid "Here's the script::"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3051
+#: howto/logging-cookbook.rst:3064
 msgid ""
 "import logging\n"
 "from logging.handlers import MemoryHandler\n"
@@ -3876,11 +3897,11 @@ msgid ""
 "    assert decorated_foo(True)"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3112
+#: howto/logging-cookbook.rst:3125
 msgid "When this script is run, the following output should be observed:"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3114
+#: howto/logging-cookbook.rst:3127
 msgid ""
 "Calling undecorated foo with False\n"
 "about to log at DEBUG ...\n"
@@ -3909,29 +3930,29 @@ msgid ""
 "Actually logged at CRITICAL"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3142
+#: howto/logging-cookbook.rst:3155
 msgid ""
 "As you can see, actual logging output only occurs when an event is logged "
 "whose severity is ERROR or greater, but in that case, any previous events at "
 "lower severities are also logged."
 msgstr ""
 
-#: howto/logging-cookbook.rst:3146
+#: howto/logging-cookbook.rst:3159
 msgid "You can of course use the conventional means of decoration::"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3148
+#: howto/logging-cookbook.rst:3161
 msgid ""
 "@log_if_errors(logger)\n"
 "def foo(fail=False):\n"
 "    ..."
 msgstr ""
 
-#: howto/logging-cookbook.rst:3156
+#: howto/logging-cookbook.rst:3169
 msgid "Sending logging messages to email, with buffering"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3158
+#: howto/logging-cookbook.rst:3171
 msgid ""
 "To illustrate how you can send log messages via email, so that a set number "
 "of messages are sent per email, you can subclass :class:`~logging.handlers."
@@ -3942,7 +3963,7 @@ msgid ""
 "argument to see the required and optional arguments.)"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3166
+#: howto/logging-cookbook.rst:3179
 msgid ""
 "import logging\n"
 "import logging.handlers\n"
@@ -4010,7 +4031,7 @@ msgid ""
 "    h.close()"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3230
+#: howto/logging-cookbook.rst:3243
 msgid ""
 "If you run this script and your SMTP server is correctly set up, you should "
 "find that it sends eleven emails to the addressee you specify. The first ten "
@@ -4018,17 +4039,17 @@ msgid ""
 "messages. That makes up 102 messages as specified in the script."
 msgstr ""
 
-#: howto/logging-cookbook.rst:3238
+#: howto/logging-cookbook.rst:3251
 msgid "Formatting times using UTC (GMT) via configuration"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3240
+#: howto/logging-cookbook.rst:3253
 msgid ""
 "Sometimes you want to format times using UTC, which can be done using a "
 "class such as ``UTCFormatter``, shown below::"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3243
+#: howto/logging-cookbook.rst:3256
 msgid ""
 "import logging\n"
 "import time\n"
@@ -4037,7 +4058,7 @@ msgid ""
 "    converter = time.gmtime"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3249
+#: howto/logging-cookbook.rst:3262
 msgid ""
 "and you can then use the ``UTCFormatter`` in your code instead of :class:"
 "`~logging.Formatter`. If you want to do that via configuration, you can use "
@@ -4045,7 +4066,7 @@ msgid ""
 "the following complete example::"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3254
+#: howto/logging-cookbook.rst:3267
 msgid ""
 "import logging\n"
 "import logging.config\n"
@@ -4086,27 +4107,27 @@ msgid ""
 "    logging.warning('The local time is %s', time.asctime())"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3292
+#: howto/logging-cookbook.rst:3305
 msgid "When this script is run, it should print something like:"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3294
+#: howto/logging-cookbook.rst:3307
 msgid ""
 "2015-10-17 12:53:29,501 The local time is Sat Oct 17 13:53:29 2015\n"
 "2015-10-17 13:53:29,501 The local time is Sat Oct 17 13:53:29 2015"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3299
+#: howto/logging-cookbook.rst:3312
 msgid ""
 "showing how the time is formatted both as local time and UTC, one for each "
 "handler."
 msgstr ""
 
-#: howto/logging-cookbook.rst:3306
+#: howto/logging-cookbook.rst:3319
 msgid "Using a context manager for selective logging"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3308
+#: howto/logging-cookbook.rst:3321
 msgid ""
 "There are times when it would be useful to temporarily change the logging "
 "configuration and revert it back after doing something. For this, a context "
@@ -4116,7 +4137,7 @@ msgid ""
 "scope of the context manager::"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3315
+#: howto/logging-cookbook.rst:3328
 msgid ""
 "import logging\n"
 "import sys\n"
@@ -4145,7 +4166,7 @@ msgid ""
 "        # implicit return of None => don't swallow exceptions"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3341
+#: howto/logging-cookbook.rst:3354
 msgid ""
 "If you specify a level value, the logger's level is set to that value in the "
 "scope of the with block covered by the context manager. If you specify a "
@@ -4154,13 +4175,13 @@ msgid ""
 "block exit - you could do this if you don't need the handler any more."
 msgstr ""
 
-#: howto/logging-cookbook.rst:3347
+#: howto/logging-cookbook.rst:3360
 msgid ""
 "To illustrate how it works, we can add the following block of code to the "
 "above::"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3350
+#: howto/logging-cookbook.rst:3363
 msgid ""
 "if __name__ == '__main__':\n"
 "    logger = logging.getLogger('foo')\n"
@@ -4180,7 +4201,7 @@ msgid ""
 "    logger.debug('7. This should not appear.')"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3365
+#: howto/logging-cookbook.rst:3378
 msgid ""
 "We initially set the logger's level to ``INFO``, so message #1 appears and "
 "message #2 doesn't. We then change the level to ``DEBUG`` temporarily in the "
@@ -4193,11 +4214,11 @@ msgid ""
 "(like message #1) whereas message #7 doesn't (just like message #2)."
 msgstr ""
 
-#: howto/logging-cookbook.rst:3375
+#: howto/logging-cookbook.rst:3388
 msgid "If we run the resulting script, the result is as follows:"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3377
+#: howto/logging-cookbook.rst:3390
 msgid ""
 "$ python logctx.py\n"
 "1. This should appear just once on stderr.\n"
@@ -4207,23 +4228,23 @@ msgid ""
 "6. This should appear just once on stderr."
 msgstr ""
 
-#: howto/logging-cookbook.rst:3386
+#: howto/logging-cookbook.rst:3399
 msgid ""
 "If we run it again, but pipe ``stderr`` to ``/dev/null``, we see the "
 "following, which is the only message written to ``stdout``:"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3389
+#: howto/logging-cookbook.rst:3402
 msgid ""
 "$ python logctx.py 2>/dev/null\n"
 "5. This should appear twice - once on stderr and once on stdout."
 msgstr ""
 
-#: howto/logging-cookbook.rst:3394
+#: howto/logging-cookbook.rst:3407
 msgid "Once again, but piping ``stdout`` to ``/dev/null``, we get:"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3396
+#: howto/logging-cookbook.rst:3409
 msgid ""
 "$ python logctx.py >/dev/null\n"
 "1. This should appear just once on stderr.\n"
@@ -4232,42 +4253,42 @@ msgid ""
 "6. This should appear just once on stderr."
 msgstr ""
 
-#: howto/logging-cookbook.rst:3404
+#: howto/logging-cookbook.rst:3417
 msgid ""
 "In this case, the message #5 printed to ``stdout`` doesn't appear, as "
 "expected."
 msgstr ""
 
-#: howto/logging-cookbook.rst:3406
+#: howto/logging-cookbook.rst:3419
 msgid ""
 "Of course, the approach described here can be generalised, for example to "
 "attach logging filters temporarily. Note that the above code works in Python "
 "2 as well as Python 3."
 msgstr ""
 
-#: howto/logging-cookbook.rst:3414
+#: howto/logging-cookbook.rst:3427
 msgid "A CLI application starter template"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3416
+#: howto/logging-cookbook.rst:3429
 msgid "Here's an example which shows how you can:"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3418
+#: howto/logging-cookbook.rst:3431
 msgid "Use a logging level based on command-line arguments"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3419
+#: howto/logging-cookbook.rst:3432
 msgid ""
 "Dispatch to multiple subcommands in separate files, all logging at the same "
 "level in a consistent way"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3421
+#: howto/logging-cookbook.rst:3434
 msgid "Make use of simple, minimal configuration"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3423
+#: howto/logging-cookbook.rst:3436
 msgid ""
 "Suppose we have a command-line application whose job is to stop, start or "
 "restart some services. This could be organised for the purposes of "
@@ -4278,7 +4299,7 @@ msgid ""
 "``logging.INFO``. Here's one way that ``app.py`` could be written::"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3431
+#: howto/logging-cookbook.rst:3444
 msgid ""
 "import argparse\n"
 "import importlib\n"
@@ -4325,13 +4346,13 @@ msgid ""
 "    sys.exit(main())"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3472
+#: howto/logging-cookbook.rst:3485
 msgid ""
 "And the ``start``, ``stop`` and ``restart`` commands can be implemented in "
 "separate modules, like so for starting::"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3475
+#: howto/logging-cookbook.rst:3488
 msgid ""
 "# start.py\n"
 "import logging\n"
@@ -4344,11 +4365,11 @@ msgid ""
 "    logger.info('Started the \\'%s\\' service.', options.name)"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3485
+#: howto/logging-cookbook.rst:3498
 msgid "and thus for stopping::"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3487
+#: howto/logging-cookbook.rst:3500
 msgid ""
 "# stop.py\n"
 "import logging\n"
@@ -4370,11 +4391,11 @@ msgid ""
 "    logger.info('Stopped the %s service%s.', services, plural)"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3506
+#: howto/logging-cookbook.rst:3519
 msgid "and similarly for restarting::"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3508
+#: howto/logging-cookbook.rst:3521
 msgid ""
 "# restart.py\n"
 "import logging\n"
@@ -4396,13 +4417,13 @@ msgid ""
 "    logger.info('Restarted the %s service%s.', services, plural)"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3527
+#: howto/logging-cookbook.rst:3540
 msgid ""
 "If we run this application with the default log level, we get output like "
 "this:"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3529
+#: howto/logging-cookbook.rst:3542
 msgid ""
 "$ python app.py start foo\n"
 "INFO start Started the 'foo' service.\n"
@@ -4414,19 +4435,19 @@ msgid ""
 "INFO restart Restarted the 'foo', 'bar' and 'baz' services."
 msgstr ""
 
-#: howto/logging-cookbook.rst:3540
+#: howto/logging-cookbook.rst:3553
 msgid ""
 "The first word is the logging level, and the second word is the module or "
 "package name of the place where the event was logged."
 msgstr ""
 
-#: howto/logging-cookbook.rst:3543
+#: howto/logging-cookbook.rst:3556
 msgid ""
 "If we change the logging level, then we can change the information sent to "
 "the log. For example, if we want more information:"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3546
+#: howto/logging-cookbook.rst:3559
 msgid ""
 "$ python app.py --log-level DEBUG start foo\n"
 "DEBUG start About to start foo\n"
@@ -4441,28 +4462,28 @@ msgid ""
 "INFO restart Restarted the 'foo', 'bar' and 'baz' services."
 msgstr ""
 
-#: howto/logging-cookbook.rst:3560
+#: howto/logging-cookbook.rst:3573
 msgid "And if we want less:"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3562
+#: howto/logging-cookbook.rst:3575
 msgid ""
 "$ python app.py --log-level WARNING start foo\n"
 "$ python app.py --log-level WARNING stop foo bar\n"
 "$ python app.py --log-level WARNING restart foo bar baz"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3568
+#: howto/logging-cookbook.rst:3581
 msgid ""
 "In this case, the commands don't print anything to the console, since "
 "nothing at ``WARNING`` level or above is logged by them."
 msgstr ""
 
-#: howto/logging-cookbook.rst:3574
+#: howto/logging-cookbook.rst:3587
 msgid "A Qt GUI for logging"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3576
+#: howto/logging-cookbook.rst:3589
 msgid ""
 "A question that comes up from time to time is about how to log to a GUI "
 "application. The `Qt <https://www.qt.io/>`_ framework is a popular cross-"
@@ -4470,7 +4491,7 @@ msgid ""
 "`PyQt5` libraries."
 msgstr ""
 
-#: howto/logging-cookbook.rst:3581
+#: howto/logging-cookbook.rst:3594
 msgid ""
 "The following example shows how to log to a Qt GUI. This introduces a simple "
 "``QtHandler`` class which takes a callable, which should be a slot in the "
@@ -4480,14 +4501,14 @@ msgid ""
 "logging messages at random levels with random short delays in between)."
 msgstr ""
 
-#: howto/logging-cookbook.rst:3588
+#: howto/logging-cookbook.rst:3601
 msgid ""
 "The worker thread is implemented using Qt's ``QThread`` class rather than "
 "the :mod:`threading` module, as there are circumstances where one has to use "
 "``QThread``, which offers better integration with other ``Qt`` components."
 msgstr ""
 
-#: howto/logging-cookbook.rst:3592
+#: howto/logging-cookbook.rst:3605
 msgid ""
 "The code should work with recent releases of any of ``PySide6``, ``PyQt6``, "
 "``PySide2`` or ``PyQt5``. You should be able to adapt the approach to "
@@ -4495,7 +4516,7 @@ msgid ""
 "more detailed information."
 msgstr ""
 
-#: howto/logging-cookbook.rst:3597
+#: howto/logging-cookbook.rst:3610
 msgid ""
 "import datetime\n"
 "import logging\n"
@@ -4746,11 +4767,11 @@ msgid ""
 "    main()"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3829
+#: howto/logging-cookbook.rst:3842
 msgid "Logging to syslog with RFC5424 support"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3831
+#: howto/logging-cookbook.rst:3844
 msgid ""
 "Although :rfc:`5424` dates from 2009, most syslog servers are configured by "
 "default to use the older :rfc:`3164`, which hails from 2001. When "
@@ -4760,14 +4781,14 @@ msgid ""
 "handlers.SysLogHandler` functionality has not been updated."
 msgstr ""
 
-#: howto/logging-cookbook.rst:3838
+#: howto/logging-cookbook.rst:3851
 msgid ""
 "RFC 5424 contains some useful features such as support for structured data, "
 "and if you need to be able to log to a syslog server with support for it, "
 "you can do so with a subclassed handler which looks something like this::"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3842
+#: howto/logging-cookbook.rst:3855
 msgid ""
 "import datetime\n"
 "import logging.handlers\n"
@@ -4837,7 +4858,7 @@ msgid ""
 "{sdata} {msg}'"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3904
+#: howto/logging-cookbook.rst:3917
 msgid ""
 "You'll need to be familiar with RFC 5424 to fully understand the above code, "
 "and it may be that you have slightly different needs (e.g. for how you pass "
@@ -4846,7 +4867,7 @@ msgid ""
 "using something like this::"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3909
+#: howto/logging-cookbook.rst:3922
 msgid ""
 "sd = {\n"
 "    'foo@12345': {'bar': 'baz', 'baz': 'bozz', 'fizz': r'buzz'},\n"
@@ -4857,11 +4878,11 @@ msgid ""
 "logger.debug('Message %d', i, extra=extra)"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3918
+#: howto/logging-cookbook.rst:3931
 msgid "How to treat a logger like an output stream"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3920
+#: howto/logging-cookbook.rst:3933
 msgid ""
 "Sometimes, you need to interface to a third-party API which expects a file-"
 "like object to write to, but you want to direct the API's output to a "
@@ -4869,7 +4890,7 @@ msgid ""
 "API. Here's a short script illustrating such a class:"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3925
+#: howto/logging-cookbook.rst:3938
 msgid ""
 "import logging\n"
 "\n"
@@ -4907,23 +4928,23 @@ msgid ""
 "    main()"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3960
+#: howto/logging-cookbook.rst:3973
 msgid "When this script is run, it prints"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3962
+#: howto/logging-cookbook.rst:3975
 msgid ""
 "INFO:demo:An INFO message\n"
 "DEBUG:demo:A DEBUG message"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3967
+#: howto/logging-cookbook.rst:3980
 msgid ""
 "You could also use ``LoggerWriter`` to redirect ``sys.stdout`` and ``sys."
 "stderr`` by doing something like this:"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3970
+#: howto/logging-cookbook.rst:3983
 msgid ""
 "import sys\n"
 "\n"
@@ -4931,7 +4952,7 @@ msgid ""
 "sys.stderr = LoggerWriter(logger, logging.WARNING)"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3977
+#: howto/logging-cookbook.rst:3990
 msgid ""
 "You should do this *after* configuring logging for your needs. In the above "
 "example, the :func:`~logging.basicConfig` call does this (using the ``sys."
@@ -4939,7 +4960,7 @@ msgid ""
 "Then, you'd get this kind of result:"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3982
+#: howto/logging-cookbook.rst:3995
 msgid ""
 ">>> print('Foo')\n"
 "INFO:demo:Foo\n"
@@ -4948,31 +4969,31 @@ msgid ""
 ">>>"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3990
+#: howto/logging-cookbook.rst:4003
 msgid ""
 "Of course, the examples above show output according to the format used by :"
 "func:`~logging.basicConfig`, but you can use a different formatter when you "
 "configure logging."
 msgstr ""
 
-#: howto/logging-cookbook.rst:3994
+#: howto/logging-cookbook.rst:4007
 msgid ""
 "Note that with the above scheme, you are somewhat at the mercy of buffering "
 "and the sequence of write calls which you are intercepting. For example, "
 "with the definition of ``LoggerWriter`` above, if you have the snippet"
 msgstr ""
 
-#: howto/logging-cookbook.rst:3998
+#: howto/logging-cookbook.rst:4011
 msgid ""
 "sys.stderr = LoggerWriter(logger, logging.WARNING)\n"
 "1 / 0"
 msgstr ""
 
-#: howto/logging-cookbook.rst:4003
+#: howto/logging-cookbook.rst:4016
 msgid "then running the script results in"
 msgstr ""
 
-#: howto/logging-cookbook.rst:4005
+#: howto/logging-cookbook.rst:4018
 msgid ""
 "WARNING:demo:Traceback (most recent call last):\n"
 "\n"
@@ -4991,7 +5012,7 @@ msgid ""
 "WARNING:demo:division by zero"
 msgstr ""
 
-#: howto/logging-cookbook.rst:4021
+#: howto/logging-cookbook.rst:4034
 msgid ""
 "As you can see, this output isn't ideal. That's because the underlying code "
 "which writes to ``sys.stderr`` makes multiple writes, each of which results "
@@ -5001,7 +5022,7 @@ msgid ""
 "``LoggerWriter``:"
 msgstr ""
 
-#: howto/logging-cookbook.rst:4027
+#: howto/logging-cookbook.rst:4040
 msgid ""
 "class BufferingLoggerWriter(LoggerWriter):\n"
 "    def __init__(self, logger, level):\n"
@@ -5021,13 +5042,13 @@ msgid ""
 "                self.logger.log(self.level, part)"
 msgstr ""
 
-#: howto/logging-cookbook.rst:4046
+#: howto/logging-cookbook.rst:4059
 msgid ""
 "This just buffers up stuff until a newline is seen, and then logs complete "
 "lines. With this approach, you get better output:"
 msgstr ""
 
-#: howto/logging-cookbook.rst:4049
+#: howto/logging-cookbook.rst:4062
 msgid ""
 "WARNING:demo:Traceback (most recent call last):\n"
 "WARNING:demo:  File \"/home/runner/cookbook-loggerwriter/main.py\", line 55, "
@@ -5039,11 +5060,11 @@ msgid ""
 "WARNING:demo:ZeroDivisionError: division by zero"
 msgstr ""
 
-#: howto/logging-cookbook.rst:4062
+#: howto/logging-cookbook.rst:4075
 msgid "Patterns to avoid"
 msgstr ""
 
-#: howto/logging-cookbook.rst:4064
+#: howto/logging-cookbook.rst:4077
 msgid ""
 "Although the preceding sections have described ways of doing things you "
 "might need to do or deal with, it is worth mentioning some usage patterns "
@@ -5051,11 +5072,11 @@ msgid ""
 "The following sections are in no particular order."
 msgstr ""
 
-#: howto/logging-cookbook.rst:4070
+#: howto/logging-cookbook.rst:4083
 msgid "Opening the same log file multiple times"
 msgstr ""
 
-#: howto/logging-cookbook.rst:4072
+#: howto/logging-cookbook.rst:4085
 msgid ""
 "On Windows, you will generally not be able to open the same file multiple "
 "times as this will lead to a \"file is in use by another process\" error. "
@@ -5063,32 +5084,32 @@ msgid ""
 "file multiple times. This could be done accidentally, for example by:"
 msgstr ""
 
-#: howto/logging-cookbook.rst:4077
+#: howto/logging-cookbook.rst:4090
 msgid ""
 "Adding a file handler more than once which references the same file (e.g. by "
 "a copy/paste/forget-to-change error)."
 msgstr ""
 
-#: howto/logging-cookbook.rst:4080
+#: howto/logging-cookbook.rst:4093
 msgid ""
 "Opening two files that look different, as they have different names, but are "
 "the same because one is a symbolic link to the other."
 msgstr ""
 
-#: howto/logging-cookbook.rst:4083
+#: howto/logging-cookbook.rst:4096
 msgid ""
 "Forking a process, following which both parent and child have a reference to "
 "the same file. This might be through use of the :mod:`multiprocessing` "
 "module, for example."
 msgstr ""
 
-#: howto/logging-cookbook.rst:4087
+#: howto/logging-cookbook.rst:4100
 msgid ""
 "Opening a file multiple times might *appear* to work most of the time, but "
 "can lead to a number of problems in practice:"
 msgstr ""
 
-#: howto/logging-cookbook.rst:4090
+#: howto/logging-cookbook.rst:4103
 msgid ""
 "Logging output can be garbled because multiple threads or processes try to "
 "write to the same file. Although logging guards against concurrent use of "
@@ -5097,7 +5118,7 @@ msgid ""
 "different handler instances which happen to point to the same file."
 msgstr ""
 
-#: howto/logging-cookbook.rst:4096
+#: howto/logging-cookbook.rst:4109
 msgid ""
 "An attempt to delete a file (e.g. during file rotation) silently fails, "
 "because there is another reference pointing to it. This can lead to "
@@ -5107,17 +5128,17 @@ msgid ""
 "being supposedly in place."
 msgstr ""
 
-#: howto/logging-cookbook.rst:4103
+#: howto/logging-cookbook.rst:4116
 msgid ""
 "Use the techniques outlined in :ref:`multiple-processes` to circumvent such "
 "issues."
 msgstr ""
 
-#: howto/logging-cookbook.rst:4107
+#: howto/logging-cookbook.rst:4120
 msgid "Using loggers as attributes in a class or passing them as parameters"
 msgstr ""
 
-#: howto/logging-cookbook.rst:4109
+#: howto/logging-cookbook.rst:4122
 msgid ""
 "While there might be unusual cases where you'll need to do this, in general "
 "there is no point because loggers are singletons. Code can always access a "
@@ -5128,13 +5149,13 @@ msgid ""
 "module (and not the class) is the unit of software decomposition."
 msgstr ""
 
-#: howto/logging-cookbook.rst:4118
+#: howto/logging-cookbook.rst:4131
 msgid ""
 "Adding handlers other than :class:`~logging.NullHandler` to a logger in a "
 "library"
 msgstr ""
 
-#: howto/logging-cookbook.rst:4120
+#: howto/logging-cookbook.rst:4133
 msgid ""
 "Configuring logging by adding handlers, formatters and filters is the "
 "responsibility of the application developer, not the library developer. If "
@@ -5142,11 +5163,11 @@ msgid ""
 "your loggers other than a :class:`~logging.NullHandler` instance."
 msgstr ""
 
-#: howto/logging-cookbook.rst:4126
+#: howto/logging-cookbook.rst:4139
 msgid "Creating a lot of loggers"
 msgstr ""
 
-#: howto/logging-cookbook.rst:4128
+#: howto/logging-cookbook.rst:4141
 msgid ""
 "Loggers are singletons that are never freed during a script execution, and "
 "so creating lots of loggers will use up memory which can't then be freed. "
@@ -5157,38 +5178,38 @@ msgid ""
 "occasionally slightly more fine-grained than that)."
 msgstr ""
 
-#: howto/logging-cookbook.rst:4139
+#: howto/logging-cookbook.rst:4152
 msgid "Other resources"
 msgstr ""
 
-#: howto/logging-cookbook.rst:4143
+#: howto/logging-cookbook.rst:4156
 msgid "Module :mod:`logging`"
 msgstr ""
 
-#: howto/logging-cookbook.rst:4144
+#: howto/logging-cookbook.rst:4157
 msgid "API reference for the logging module."
 msgstr ""
 
-#: howto/logging-cookbook.rst:4146
+#: howto/logging-cookbook.rst:4159
 msgid "Module :mod:`logging.config`"
 msgstr ""
 
-#: howto/logging-cookbook.rst:4147
+#: howto/logging-cookbook.rst:4160
 msgid "Configuration API for the logging module."
 msgstr ""
 
-#: howto/logging-cookbook.rst:4149
+#: howto/logging-cookbook.rst:4162
 msgid "Module :mod:`logging.handlers`"
 msgstr ""
 
-#: howto/logging-cookbook.rst:4150
+#: howto/logging-cookbook.rst:4163
 msgid "Useful handlers included with the logging module."
 msgstr ""
 
-#: howto/logging-cookbook.rst:4152
+#: howto/logging-cookbook.rst:4165
 msgid ":ref:`Basic Tutorial <logging-basic-tutorial>`"
 msgstr ""
 
-#: howto/logging-cookbook.rst:4154
+#: howto/logging-cookbook.rst:4167
 msgid ":ref:`Advanced Tutorial <logging-advanced-tutorial>`"
 msgstr ""
diff --git a/howto/logging.po b/howto/logging.po
index b1deac8f3..e8400651a 100644
--- a/howto/logging.po
+++ b/howto/logging.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -16,7 +16,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: howto/logging.rst:3
+#: howto/logging.rst:5
 msgid "Logging HOWTO"
 msgstr ""
 
@@ -24,21 +24,21 @@ msgstr ""
 msgid "Author"
 msgstr ""
 
-#: howto/logging.rst:5
+#: howto/logging.rst:7
 msgid "Vinay Sajip <vinay_sajip at red-dove dot com>"
 msgstr ""
 
-#: howto/logging.rst:11
+#: howto/logging.rst:13
 msgid ""
 "This page contains tutorial information. For links to reference information "
 "and a logging cookbook, please see :ref:`tutorial-ref-links`."
 msgstr ""
 
-#: howto/logging.rst:15
+#: howto/logging.rst:17
 msgid "Basic Logging Tutorial"
 msgstr ""
 
-#: howto/logging.rst:17
+#: howto/logging.rst:19
 msgid ""
 "Logging is a means of tracking events that happen when some software runs. "
 "The software's developer adds logging calls to their code to indicate that "
@@ -49,11 +49,11 @@ msgid ""
 "the *level* or *severity*."
 msgstr ""
 
-#: howto/logging.rst:26
+#: howto/logging.rst:28
 msgid "When to use logging"
 msgstr ""
 
-#: howto/logging.rst:28
+#: howto/logging.rst:30
 msgid ""
 "You can access logging functionality by creating a logger via ``logger = "
 "getLogger(__name__)``, and then calling the logger's :meth:`~Logger.debug`, :"
@@ -63,173 +63,173 @@ msgid ""
 "each of a set of common tasks, the best tool to use for that task."
 msgstr ""
 
-#: howto/logging.rst:36
+#: howto/logging.rst:38
 msgid "Task you want to perform"
 msgstr ""
 
-#: howto/logging.rst:36
+#: howto/logging.rst:38
 msgid "The best tool for the task"
 msgstr ""
 
-#: howto/logging.rst:38
+#: howto/logging.rst:40
 msgid ""
 "Display console output for ordinary usage of a command line script or program"
 msgstr ""
 
-#: howto/logging.rst:38
+#: howto/logging.rst:40
 msgid ":func:`print`"
 msgstr ""
 
-#: howto/logging.rst:42
+#: howto/logging.rst:44
 msgid ""
 "Report events that occur during normal operation of a program (e.g. for "
 "status monitoring or fault investigation)"
 msgstr ""
 
-#: howto/logging.rst:42
+#: howto/logging.rst:44
 msgid ""
 "A logger's :meth:`~Logger.info` (or :meth:`~Logger.debug` method for very "
 "detailed output for diagnostic purposes)"
 msgstr ""
 
-#: howto/logging.rst:47
+#: howto/logging.rst:49
 msgid "Issue a warning regarding a particular runtime event"
 msgstr ""
 
-#: howto/logging.rst:47
+#: howto/logging.rst:49
 msgid ""
 ":func:`warnings.warn` in library code if the issue is avoidable and the "
 "client application should be modified to eliminate the warning"
 msgstr ""
 
-#: howto/logging.rst:52
+#: howto/logging.rst:54
 msgid ""
 "A logger's :meth:`~Logger.warning` method if there is nothing the client "
 "application can do about the situation, but the event should still be noted"
 msgstr ""
 
-#: howto/logging.rst:58
+#: howto/logging.rst:60
 msgid "Report an error regarding a particular runtime event"
 msgstr ""
 
-#: howto/logging.rst:58
+#: howto/logging.rst:60
 msgid "Raise an exception"
 msgstr ""
 
-#: howto/logging.rst:61
+#: howto/logging.rst:63
 msgid ""
 "Report suppression of an error without raising an exception (e.g. error "
 "handler in a long-running server process)"
 msgstr ""
 
-#: howto/logging.rst:61
+#: howto/logging.rst:63
 msgid ""
 "A logger's :meth:`~Logger.error`, :meth:`~Logger.exception` or :meth:"
 "`~Logger.critical` method as appropriate for the specific error and "
 "application domain"
 msgstr ""
 
-#: howto/logging.rst:68
+#: howto/logging.rst:70
 msgid ""
 "The logger methods are named after the level or severity of the events they "
 "are used to track. The standard levels and their applicability are described "
 "below (in increasing order of severity):"
 msgstr ""
 
-#: howto/logging.rst:874
+#: howto/logging.rst:876
 msgid "Level"
 msgstr ""
 
-#: howto/logging.rst:75
+#: howto/logging.rst:77
 msgid "When it's used"
 msgstr ""
 
-#: howto/logging.rst:884
+#: howto/logging.rst:886
 msgid "``DEBUG``"
 msgstr ""
 
-#: howto/logging.rst:77
+#: howto/logging.rst:79
 msgid ""
 "Detailed information, typically of interest only when diagnosing problems."
 msgstr ""
 
-#: howto/logging.rst:882
+#: howto/logging.rst:884
 msgid "``INFO``"
 msgstr ""
 
-#: howto/logging.rst:80
+#: howto/logging.rst:82
 msgid "Confirmation that things are working as expected."
 msgstr ""
 
-#: howto/logging.rst:880
+#: howto/logging.rst:882
 msgid "``WARNING``"
 msgstr ""
 
-#: howto/logging.rst:83
+#: howto/logging.rst:85
 msgid ""
 "An indication that something unexpected happened, or indicative of some "
 "problem in the near future (e.g. 'disk space low'). The software is still "
 "working as expected."
 msgstr ""
 
-#: howto/logging.rst:878
+#: howto/logging.rst:880
 msgid "``ERROR``"
 msgstr ""
 
-#: howto/logging.rst:88
+#: howto/logging.rst:90
 msgid ""
 "Due to a more serious problem, the software has not been able to perform "
 "some function."
 msgstr ""
 
-#: howto/logging.rst:876
+#: howto/logging.rst:878
 msgid "``CRITICAL``"
 msgstr ""
 
-#: howto/logging.rst:91
+#: howto/logging.rst:93
 msgid ""
 "A serious error, indicating that the program itself may be unable to "
 "continue running."
 msgstr ""
 
-#: howto/logging.rst:95
+#: howto/logging.rst:97
 msgid ""
 "The default level is ``WARNING``, which means that only events of this level "
 "and above will be tracked, unless the logging package is configured to do "
 "otherwise."
 msgstr ""
 
-#: howto/logging.rst:99
+#: howto/logging.rst:101
 msgid ""
 "Events that are tracked can be handled in different ways. The simplest way "
 "of handling tracked events is to print them to the console. Another common "
 "way is to write them to a disk file."
 msgstr ""
 
-#: howto/logging.rst:107
+#: howto/logging.rst:109
 msgid "A simple example"
 msgstr ""
 
-#: howto/logging.rst:109
+#: howto/logging.rst:111
 msgid "A very simple example is::"
 msgstr ""
 
-#: howto/logging.rst:111
+#: howto/logging.rst:113
 msgid ""
 "import logging\n"
 "logging.warning('Watch out!')  # will print a message to the console\n"
 "logging.info('I told you so')  # will not print anything"
 msgstr ""
 
-#: howto/logging.rst:115
+#: howto/logging.rst:117
 msgid "If you type these lines into a script and run it, you'll see:"
 msgstr ""
 
-#: howto/logging.rst:117
+#: howto/logging.rst:119
 msgid "WARNING:root:Watch out!"
 msgstr ""
 
-#: howto/logging.rst:121
+#: howto/logging.rst:123
 msgid ""
 "printed out on the console. The ``INFO`` message doesn't appear because the "
 "default level is ``WARNING``. The printed message includes the indication of "
@@ -238,7 +238,7 @@ msgid ""
 "need that; formatting options will also be explained later."
 msgstr ""
 
-#: howto/logging.rst:127
+#: howto/logging.rst:129
 msgid ""
 "Notice that in this example, we use functions directly on the ``logging`` "
 "module, like ``logging.debug``, rather than creating a logger and calling "
@@ -250,11 +250,11 @@ msgid ""
 "methods."
 msgstr ""
 
-#: howto/logging.rst:136
+#: howto/logging.rst:138
 msgid "Logging to a file"
 msgstr ""
 
-#: howto/logging.rst:138
+#: howto/logging.rst:140
 msgid ""
 "A very common situation is that of recording logging events in a file, so "
 "let's look at that next. Be sure to try the following in a newly started "
@@ -262,7 +262,7 @@ msgid ""
 "above::"
 msgstr ""
 
-#: howto/logging.rst:142
+#: howto/logging.rst:144
 msgid ""
 "import logging\n"
 "logger = logging.getLogger(__name__)\n"
@@ -274,7 +274,7 @@ msgid ""
 "logger.error('And non-ASCII stuff, too, like Øresund and Malmö')"
 msgstr ""
 
-#: howto/logging.rst:150
+#: howto/logging.rst:152
 msgid ""
 "The *encoding* argument was added. In earlier Python versions, or if not "
 "specified, the encoding used is the default value used by :func:`open`. "
@@ -283,13 +283,13 @@ msgid ""
 "values and the default, see the documentation for :func:`open`."
 msgstr ""
 
-#: howto/logging.rst:157
+#: howto/logging.rst:159
 msgid ""
 "And now if we open the file and look at what we have, we should find the log "
 "messages:"
 msgstr ""
 
-#: howto/logging.rst:160
+#: howto/logging.rst:162
 msgid ""
 "DEBUG:__main__:This message should go to the log file\n"
 "INFO:__main__:So should this\n"
@@ -297,40 +297,40 @@ msgid ""
 "ERROR:__main__:And non-ASCII stuff, too, like Øresund and Malmö"
 msgstr ""
 
-#: howto/logging.rst:167
+#: howto/logging.rst:169
 msgid ""
 "This example also shows how you can set the logging level which acts as the "
 "threshold for tracking. In this case, because we set the threshold to "
 "``DEBUG``, all of the messages were printed."
 msgstr ""
 
-#: howto/logging.rst:171
+#: howto/logging.rst:173
 msgid ""
 "If you want to set the logging level from a command-line option such as:"
 msgstr ""
 
-#: howto/logging.rst:173
+#: howto/logging.rst:175
 msgid "--log=INFO"
 msgstr ""
 
-#: howto/logging.rst:177
+#: howto/logging.rst:179
 msgid ""
 "and you have the value of the parameter passed for ``--log`` in some "
 "variable *loglevel*, you can use::"
 msgstr ""
 
-#: howto/logging.rst:180
+#: howto/logging.rst:182
 msgid "getattr(logging, loglevel.upper())"
 msgstr ""
 
-#: howto/logging.rst:182
+#: howto/logging.rst:184
 msgid ""
 "to get the value which you'll pass to :func:`basicConfig` via the *level* "
 "argument. You may want to error check any user input value, perhaps as in "
 "the following example::"
 msgstr ""
 
-#: howto/logging.rst:186
+#: howto/logging.rst:188
 msgid ""
 "# assuming loglevel is bound to the string value obtained from the\n"
 "# command line argument. Convert to upper case to allow the user to\n"
@@ -341,14 +341,14 @@ msgid ""
 "logging.basicConfig(level=numeric_level, ...)"
 msgstr ""
 
-#: howto/logging.rst:194
+#: howto/logging.rst:196
 msgid ""
 "The call to :func:`basicConfig` should come *before* any calls to a logger's "
 "methods such as :meth:`~Logger.debug`, :meth:`~Logger.info`, etc. Otherwise, "
 "that logging event may not be handled in the desired manner."
 msgstr ""
 
-#: howto/logging.rst:198
+#: howto/logging.rst:200
 msgid ""
 "If you run the above script several times, the messages from successive runs "
 "are appended to the file *example.log*. If you want each run to start "
@@ -356,43 +356,43 @@ msgid ""
 "*filemode* argument, by changing the call in the above example to::"
 msgstr ""
 
-#: howto/logging.rst:203
+#: howto/logging.rst:205
 msgid ""
 "logging.basicConfig(filename='example.log', filemode='w', level=logging."
 "DEBUG)"
 msgstr ""
 
-#: howto/logging.rst:205
+#: howto/logging.rst:207
 msgid ""
 "The output will be the same as before, but the log file is no longer "
 "appended to, so the messages from earlier runs are lost."
 msgstr ""
 
-#: howto/logging.rst:210
+#: howto/logging.rst:212
 msgid "Logging variable data"
 msgstr ""
 
-#: howto/logging.rst:212
+#: howto/logging.rst:214
 msgid ""
 "To log variable data, use a format string for the event description message "
 "and append the variable data as arguments. For example::"
 msgstr ""
 
-#: howto/logging.rst:215
+#: howto/logging.rst:217
 msgid ""
 "import logging\n"
 "logging.warning('%s before you %s', 'Look', 'leap!')"
 msgstr ""
 
-#: howto/logging.rst:218
+#: howto/logging.rst:220
 msgid "will display:"
 msgstr ""
 
-#: howto/logging.rst:220
+#: howto/logging.rst:222
 msgid "WARNING:root:Look before you leap!"
 msgstr ""
 
-#: howto/logging.rst:224
+#: howto/logging.rst:226
 msgid ""
 "As you can see, merging of variable data into the event description message "
 "uses the old, %-style of string formatting. This is for backwards "
@@ -402,17 +402,17 @@ msgid ""
 "tutorial: see :ref:`formatting-styles` for more information."
 msgstr ""
 
-#: howto/logging.rst:233
+#: howto/logging.rst:235
 msgid "Changing the format of displayed messages"
 msgstr ""
 
-#: howto/logging.rst:235
+#: howto/logging.rst:237
 msgid ""
 "To change the format which is used to display messages, you need to specify "
 "the format you want to use::"
 msgstr ""
 
-#: howto/logging.rst:238
+#: howto/logging.rst:240
 msgid ""
 "import logging\n"
 "logging.basicConfig(format='%(levelname)s:%(message)s', level=logging."
@@ -422,18 +422,18 @@ msgid ""
 "logging.warning('And this, too')"
 msgstr ""
 
-#: howto/logging.rst:244
+#: howto/logging.rst:246
 msgid "which would print:"
 msgstr ""
 
-#: howto/logging.rst:246
+#: howto/logging.rst:248
 msgid ""
 "DEBUG:This message should appear on the console\n"
 "INFO:So should this\n"
 "WARNING:And this, too"
 msgstr ""
 
-#: howto/logging.rst:252
+#: howto/logging.rst:254
 msgid ""
 "Notice that the 'root' which appeared in earlier examples has disappeared. "
 "For a full set of things that can appear in format strings, you can refer to "
@@ -443,39 +443,39 @@ msgid ""
 "This is described in the next section."
 msgstr ""
 
-#: howto/logging.rst:261
+#: howto/logging.rst:263
 msgid "Displaying the date/time in messages"
 msgstr ""
 
-#: howto/logging.rst:263
+#: howto/logging.rst:265
 msgid ""
 "To display the date and time of an event, you would place '%(asctime)s' in "
 "your format string::"
 msgstr ""
 
-#: howto/logging.rst:266
+#: howto/logging.rst:268
 msgid ""
 "import logging\n"
 "logging.basicConfig(format='%(asctime)s %(message)s')\n"
 "logging.warning('is when this event was logged.')"
 msgstr ""
 
-#: howto/logging.rst:270
+#: howto/logging.rst:272
 msgid "which should print something like this:"
 msgstr ""
 
-#: howto/logging.rst:272
+#: howto/logging.rst:274
 msgid "2010-12-12 11:41:42,612 is when this event was logged."
 msgstr ""
 
-#: howto/logging.rst:276
+#: howto/logging.rst:278
 msgid ""
 "The default format for date/time display (shown above) is like ISO8601 or :"
 "rfc:`3339`. If you need more control over the formatting of the date/time, "
 "provide a *datefmt* argument to ``basicConfig``, as in this example::"
 msgstr ""
 
-#: howto/logging.rst:280
+#: howto/logging.rst:282
 msgid ""
 "import logging\n"
 "logging.basicConfig(format='%(asctime)s %(message)s', datefmt='%m/%d/%Y %I:"
@@ -483,25 +483,25 @@ msgid ""
 "logging.warning('is when this event was logged.')"
 msgstr ""
 
-#: howto/logging.rst:284
+#: howto/logging.rst:286
 msgid "which would display something like this:"
 msgstr ""
 
-#: howto/logging.rst:286
+#: howto/logging.rst:288
 msgid "12/12/2010 11:46:36 AM is when this event was logged."
 msgstr ""
 
-#: howto/logging.rst:290
+#: howto/logging.rst:292
 msgid ""
 "The format of the *datefmt* argument is the same as supported by :func:`time."
 "strftime`."
 msgstr ""
 
-#: howto/logging.rst:295
+#: howto/logging.rst:297
 msgid "Next Steps"
 msgstr ""
 
-#: howto/logging.rst:297
+#: howto/logging.rst:299
 msgid ""
 "That concludes the basic tutorial. It should be enough to get you up and "
 "running with logging. There's a lot more that the logging package offers, "
@@ -510,7 +510,7 @@ msgid ""
 "of your favourite beverage and carry on."
 msgstr ""
 
-#: howto/logging.rst:303
+#: howto/logging.rst:305
 msgid ""
 "If your logging needs are simple, then use the above examples to incorporate "
 "logging into your own scripts, and if you run into problems or don't "
@@ -519,50 +519,50 @@ msgid ""
 "should receive help before too long."
 msgstr ""
 
-#: howto/logging.rst:309
+#: howto/logging.rst:311
 msgid ""
 "Still here? You can carry on reading the next few sections, which provide a "
 "slightly more advanced/in-depth tutorial than the basic one above. After "
 "that, you can take a look at the :ref:`logging-cookbook`."
 msgstr ""
 
-#: howto/logging.rst:317
+#: howto/logging.rst:319
 msgid "Advanced Logging Tutorial"
 msgstr ""
 
-#: howto/logging.rst:319
+#: howto/logging.rst:321
 msgid ""
 "The logging library takes a modular approach and offers several categories "
 "of components: loggers, handlers, filters, and formatters."
 msgstr ""
 
-#: howto/logging.rst:322
+#: howto/logging.rst:324
 msgid "Loggers expose the interface that application code directly uses."
 msgstr ""
 
-#: howto/logging.rst:323
+#: howto/logging.rst:325
 msgid ""
 "Handlers send the log records (created by loggers) to the appropriate "
 "destination."
 msgstr ""
 
-#: howto/logging.rst:325
+#: howto/logging.rst:327
 msgid ""
 "Filters provide a finer grained facility for determining which log records "
 "to output."
 msgstr ""
 
-#: howto/logging.rst:327
+#: howto/logging.rst:329
 msgid "Formatters specify the layout of log records in the final output."
 msgstr ""
 
-#: howto/logging.rst:329
+#: howto/logging.rst:331
 msgid ""
 "Log event information is passed between loggers, handlers, filters and "
 "formatters in a :class:`LogRecord` instance."
 msgstr ""
 
-#: howto/logging.rst:332
+#: howto/logging.rst:334
 msgid ""
 "Logging is performed by calling methods on instances of the :class:`Logger` "
 "class (hereafter called :dfn:`loggers`). Each instance has a name, and they "
@@ -573,23 +573,23 @@ msgid ""
 "originates."
 msgstr ""
 
-#: howto/logging.rst:339
+#: howto/logging.rst:341
 msgid ""
 "A good convention to use when naming loggers is to use a module-level "
 "logger, in each module which uses logging, named as follows::"
 msgstr ""
 
-#: howto/logging.rst:342
+#: howto/logging.rst:344
 msgid "logger = logging.getLogger(__name__)"
 msgstr ""
 
-#: howto/logging.rst:344
+#: howto/logging.rst:346
 msgid ""
 "This means that logger names track the package/module hierarchy, and it's "
 "intuitively obvious where events are logged just from the logger name."
 msgstr ""
 
-#: howto/logging.rst:347
+#: howto/logging.rst:349
 msgid ""
 "The root of the hierarchy of loggers is called the root logger. That's the "
 "logger used by the functions :func:`debug`, :func:`info`, :func:`warning`, :"
@@ -598,7 +598,7 @@ msgid ""
 "root logger's name is printed as 'root' in the logged output."
 msgstr ""
 
-#: howto/logging.rst:353
+#: howto/logging.rst:355
 msgid ""
 "It is, of course, possible to log messages to different destinations. "
 "Support is included in the package for writing log messages to files, HTTP "
@@ -609,7 +609,7 @@ msgid ""
 "built-in handler classes."
 msgstr ""
 
-#: howto/logging.rst:360
+#: howto/logging.rst:362
 msgid ""
 "By default, no destination is set for any logging messages. You can specify "
 "a destination (such as console or file) by using :func:`basicConfig` as in "
@@ -621,36 +621,36 @@ msgid ""
 "message output."
 msgstr ""
 
-#: howto/logging.rst:368
+#: howto/logging.rst:370
 msgid "The default format set by :func:`basicConfig` for messages is:"
 msgstr ""
 
-#: howto/logging.rst:370
+#: howto/logging.rst:372
 msgid "severity:logger name:message"
 msgstr ""
 
-#: howto/logging.rst:374
+#: howto/logging.rst:376
 msgid ""
 "You can change this by passing a format string to :func:`basicConfig` with "
 "the *format* keyword argument. For all options regarding how a format string "
 "is constructed, see :ref:`formatter-objects`."
 msgstr ""
 
-#: howto/logging.rst:379
+#: howto/logging.rst:381
 msgid "Logging Flow"
 msgstr ""
 
-#: howto/logging.rst:381
+#: howto/logging.rst:383
 msgid ""
 "The flow of log event information in loggers and handlers is illustrated in "
 "the following diagram."
 msgstr ""
 
-#: howto/logging.rst:432
+#: howto/logging.rst:434
 msgid "Loggers"
 msgstr ""
 
-#: howto/logging.rst:434
+#: howto/logging.rst:436
 msgid ""
 ":class:`Logger` objects have a threefold job.  First, they expose several "
 "methods to application code so that applications can log messages at "
@@ -660,17 +660,17 @@ msgid ""
 "handlers."
 msgstr ""
 
-#: howto/logging.rst:440
+#: howto/logging.rst:442
 msgid ""
 "The most widely used methods on logger objects fall into two categories: "
 "configuration and message sending."
 msgstr ""
 
-#: howto/logging.rst:443
+#: howto/logging.rst:445
 msgid "These are the most common configuration methods:"
 msgstr ""
 
-#: howto/logging.rst:445
+#: howto/logging.rst:447
 msgid ""
 ":meth:`Logger.setLevel` specifies the lowest-severity log message a logger "
 "will handle, where debug is the lowest built-in severity level and critical "
@@ -679,32 +679,32 @@ msgid ""
 "messages and will ignore DEBUG messages."
 msgstr ""
 
-#: howto/logging.rst:451
+#: howto/logging.rst:453
 msgid ""
 ":meth:`Logger.addHandler` and :meth:`Logger.removeHandler` add and remove "
 "handler objects from the logger object.  Handlers are covered in more detail "
 "in :ref:`handler-basic`."
 msgstr ""
 
-#: howto/logging.rst:455
+#: howto/logging.rst:457
 msgid ""
 ":meth:`Logger.addFilter` and :meth:`Logger.removeFilter` add and remove "
 "filter objects from the logger object.  Filters are covered in more detail "
 "in :ref:`filter`."
 msgstr ""
 
-#: howto/logging.rst:459
+#: howto/logging.rst:461
 msgid ""
 "You don't need to always call these methods on every logger you create. See "
 "the last two paragraphs in this section."
 msgstr ""
 
-#: howto/logging.rst:462
+#: howto/logging.rst:464
 msgid ""
 "With the logger object configured, the following methods create log messages:"
 msgstr ""
 
-#: howto/logging.rst:464
+#: howto/logging.rst:466
 msgid ""
 ":meth:`Logger.debug`, :meth:`Logger.info`, :meth:`Logger.warning`, :meth:"
 "`Logger.error`, and :meth:`Logger.critical` all create log records with a "
@@ -717,14 +717,14 @@ msgid ""
 "exception information."
 msgstr ""
 
-#: howto/logging.rst:474
+#: howto/logging.rst:476
 msgid ""
 ":meth:`Logger.exception` creates a log message similar to :meth:`Logger."
 "error`.  The difference is that :meth:`Logger.exception` dumps a stack trace "
 "along with it.  Call this method only from an exception handler."
 msgstr ""
 
-#: howto/logging.rst:478
+#: howto/logging.rst:480
 msgid ""
 ":meth:`Logger.log` takes a log level as an explicit argument.  This is a "
 "little more verbose for logging messages than using the log level "
@@ -732,7 +732,7 @@ msgid ""
 "levels."
 msgstr ""
 
-#: howto/logging.rst:482
+#: howto/logging.rst:484
 msgid ""
 ":func:`getLogger` returns a reference to a logger instance with the "
 "specified name if it is provided, or ``root`` if not.  The names are period-"
@@ -744,7 +744,7 @@ msgid ""
 "descendants of ``foo``."
 msgstr ""
 
-#: howto/logging.rst:490
+#: howto/logging.rst:492
 msgid ""
 "Loggers have a concept of *effective level*. If a level is not explicitly "
 "set on a logger, the level of its parent is used instead as its effective "
@@ -756,7 +756,7 @@ msgid ""
 "handlers."
 msgstr ""
 
-#: howto/logging.rst:498
+#: howto/logging.rst:500
 msgid ""
 "Child loggers propagate messages up to the handlers associated with their "
 "ancestor loggers. Because of this, it is unnecessary to define and configure "
@@ -766,11 +766,11 @@ msgid ""
 "attribute of a logger to ``False``.)"
 msgstr ""
 
-#: howto/logging.rst:509
+#: howto/logging.rst:511
 msgid "Handlers"
 msgstr ""
 
-#: howto/logging.rst:511
+#: howto/logging.rst:513
 msgid ""
 ":class:`~logging.Handler` objects are responsible for dispatching the "
 "appropriate log messages (based on the log messages' severity) to the "
@@ -783,14 +783,14 @@ msgid ""
 "of a specific severity to a specific location."
 msgstr ""
 
-#: howto/logging.rst:521
+#: howto/logging.rst:523
 msgid ""
 "The standard library includes quite a few handler types (see :ref:`useful-"
 "handlers`); the tutorials use mainly :class:`StreamHandler` and :class:"
 "`FileHandler` in its examples."
 msgstr ""
 
-#: howto/logging.rst:525
+#: howto/logging.rst:527
 msgid ""
 "There are very few methods in a handler for application developers to "
 "concern themselves with.  The only handler methods that seem relevant for "
@@ -798,7 +798,7 @@ msgid ""
 "not creating custom handlers) are the following configuration methods:"
 msgstr ""
 
-#: howto/logging.rst:530
+#: howto/logging.rst:532
 msgid ""
 "The :meth:`~Handler.setLevel` method, just as in logger objects, specifies "
 "the lowest severity that will be dispatched to the appropriate destination.  "
@@ -808,19 +808,19 @@ msgid ""
 "send on."
 msgstr ""
 
-#: howto/logging.rst:536
+#: howto/logging.rst:538
 msgid ""
 ":meth:`~Handler.setFormatter` selects a Formatter object for this handler to "
 "use."
 msgstr ""
 
-#: howto/logging.rst:539
+#: howto/logging.rst:541
 msgid ""
 ":meth:`~Handler.addFilter` and :meth:`~Handler.removeFilter` respectively "
 "configure and deconfigure filter objects on handlers."
 msgstr ""
 
-#: howto/logging.rst:542
+#: howto/logging.rst:544
 msgid ""
 "Application code should not directly instantiate and use instances of :class:"
 "`Handler`.  Instead, the :class:`Handler` class is a base class that defines "
@@ -828,11 +828,11 @@ msgid ""
 "behavior that child classes can use (or override)."
 msgstr ""
 
-#: howto/logging.rst:549
+#: howto/logging.rst:551
 msgid "Formatters"
 msgstr ""
 
-#: howto/logging.rst:551
+#: howto/logging.rst:553
 msgid ""
 "Formatter objects configure the final order, structure, and contents of the "
 "log message.  Unlike the base :class:`logging.Handler` class, application "
@@ -842,24 +842,24 @@ msgid ""
 "string and a style indicator."
 msgstr ""
 
-#: howto/logging.rst:560
+#: howto/logging.rst:562
 msgid ""
 "If there is no message format string, the default is to use the raw "
 "message.  If there is no date format string, the default date format is:"
 msgstr ""
 
-#: howto/logging.rst:563
+#: howto/logging.rst:565
 msgid "%Y-%m-%d %H:%M:%S"
 msgstr ""
 
-#: howto/logging.rst:567
+#: howto/logging.rst:569
 msgid ""
 "with the milliseconds tacked on at the end. The ``style`` is one of ``'%'``, "
 "``'{'``, or ``'$'``. If one of these is not specified, then ``'%'`` will be "
 "used."
 msgstr ""
 
-#: howto/logging.rst:570
+#: howto/logging.rst:572
 msgid ""
 "If the ``style`` is ``'%'``, the message format string uses ``%(<dictionary "
 "key>)s`` styled string substitution; the possible keys are documented in :"
@@ -869,22 +869,22 @@ msgid ""
 "should conform to what is expected by :meth:`string.Template.substitute`."
 msgstr ""
 
-#: howto/logging.rst:577
+#: howto/logging.rst:579
 msgid "Added the ``style`` parameter."
 msgstr ""
 
-#: howto/logging.rst:580
+#: howto/logging.rst:582
 msgid ""
 "The following message format string will log the time in a human-readable "
 "format, the severity of the message, and the contents of the message, in "
 "that order::"
 msgstr ""
 
-#: howto/logging.rst:584
+#: howto/logging.rst:586
 msgid "'%(asctime)s - %(levelname)s - %(message)s'"
 msgstr ""
 
-#: howto/logging.rst:586
+#: howto/logging.rst:588
 msgid ""
 "Formatters use a user-configurable function to convert the creation time of "
 "a record to a tuple. By default, :func:`time.localtime` is used; to change "
@@ -895,40 +895,40 @@ msgid ""
 "in the Formatter class (to ``time.gmtime`` for GMT display)."
 msgstr ""
 
-#: howto/logging.rst:596
+#: howto/logging.rst:598
 msgid "Configuring Logging"
 msgstr ""
 
-#: howto/logging.rst:600
+#: howto/logging.rst:602
 msgid "Programmers can configure logging in three ways:"
 msgstr ""
 
-#: howto/logging.rst:602
+#: howto/logging.rst:604
 msgid ""
 "Creating loggers, handlers, and formatters explicitly using Python code that "
 "calls the configuration methods listed above."
 msgstr ""
 
-#: howto/logging.rst:604
+#: howto/logging.rst:606
 msgid ""
 "Creating a logging config file and reading it using the :func:`fileConfig` "
 "function."
 msgstr ""
 
-#: howto/logging.rst:606
+#: howto/logging.rst:608
 msgid ""
 "Creating a dictionary of configuration information and passing it to the :"
 "func:`dictConfig` function."
 msgstr ""
 
-#: howto/logging.rst:609
+#: howto/logging.rst:611
 msgid ""
 "For the reference documentation on the last two options, see :ref:`logging-"
 "config-api`.  The following example configures a very simple logger, a "
 "console handler, and a simple formatter using Python code::"
 msgstr ""
 
-#: howto/logging.rst:613
+#: howto/logging.rst:615
 msgid ""
 "import logging\n"
 "\n"
@@ -958,12 +958,12 @@ msgid ""
 "logger.critical('critical message')"
 msgstr ""
 
-#: howto/logging.rst:639
+#: howto/logging.rst:641
 msgid ""
 "Running this module from the command line produces the following output:"
 msgstr ""
 
-#: howto/logging.rst:641
+#: howto/logging.rst:643
 msgid ""
 "$ python simple_logging_module.py\n"
 "2005-03-19 15:10:26,618 - simple_example - DEBUG - debug message\n"
@@ -973,14 +973,14 @@ msgid ""
 "2005-03-19 15:10:26,773 - simple_example - CRITICAL - critical message"
 msgstr ""
 
-#: howto/logging.rst:650
+#: howto/logging.rst:652
 msgid ""
 "The following Python module creates a logger, handler, and formatter nearly "
 "identical to those in the example listed above, with the only difference "
 "being the names of the objects::"
 msgstr ""
 
-#: howto/logging.rst:654
+#: howto/logging.rst:656
 msgid ""
 "import logging\n"
 "import logging.config\n"
@@ -998,11 +998,11 @@ msgid ""
 "logger.critical('critical message')"
 msgstr ""
 
-#: howto/logging.rst:669
+#: howto/logging.rst:671
 msgid "Here is the logging.conf file:"
 msgstr ""
 
-#: howto/logging.rst:671
+#: howto/logging.rst:673
 msgid ""
 "[loggers]\n"
 "keys=root,simpleExample\n"
@@ -1033,12 +1033,12 @@ msgid ""
 "format=%(asctime)s - %(name)s - %(levelname)s - %(message)s"
 msgstr ""
 
-#: howto/logging.rst:701
+#: howto/logging.rst:703
 msgid ""
 "The output is nearly identical to that of the non-config-file-based example:"
 msgstr ""
 
-#: howto/logging.rst:703
+#: howto/logging.rst:705
 msgid ""
 "$ python simple_logging_config.py\n"
 "2005-03-19 15:38:55,977 - simpleExample - DEBUG - debug message\n"
@@ -1048,14 +1048,14 @@ msgid ""
 "2005-03-19 15:38:56,130 - simpleExample - CRITICAL - critical message"
 msgstr ""
 
-#: howto/logging.rst:712
+#: howto/logging.rst:714
 msgid ""
 "You can see that the config file approach has a few advantages over the "
 "Python code approach, mainly separation of configuration and code and the "
 "ability of noncoders to easily modify the logging properties."
 msgstr ""
 
-#: howto/logging.rst:716
+#: howto/logging.rst:718
 msgid ""
 "The :func:`fileConfig` function takes a default parameter, "
 "``disable_existing_loggers``, which defaults to ``True`` for reasons of "
@@ -1066,7 +1066,7 @@ msgid ""
 "information, and specify ``False`` for this parameter if you wish."
 msgstr ""
 
-#: howto/logging.rst:724
+#: howto/logging.rst:726
 msgid ""
 "The dictionary passed to :func:`dictConfig` can also specify a Boolean value "
 "with key ``disable_existing_loggers``, which if not specified explicitly in "
@@ -1075,7 +1075,7 @@ msgid ""
 "want - in which case, provide the key explicitly with a value of ``False``."
 msgstr ""
 
-#: howto/logging.rst:734
+#: howto/logging.rst:736
 msgid ""
 "Note that the class names referenced in config files need to be either "
 "relative to the logging module, or absolute values which can be resolved "
@@ -1086,7 +1086,7 @@ msgid ""
 "path)."
 msgstr ""
 
-#: howto/logging.rst:742
+#: howto/logging.rst:744
 msgid ""
 "In Python 3.2, a new means of configuring logging has been introduced, using "
 "dictionaries to hold configuration information. This provides a superset of "
@@ -1101,13 +1101,13 @@ msgid ""
 "a socket, or use whatever approach makes sense for your application."
 msgstr ""
 
-#: howto/logging.rst:754
+#: howto/logging.rst:756
 msgid ""
 "Here's an example of the same configuration as above, in YAML format for the "
 "new dictionary-based approach:"
 msgstr ""
 
-#: howto/logging.rst:757
+#: howto/logging.rst:759
 msgid ""
 "version: 1\n"
 "formatters:\n"
@@ -1129,24 +1129,24 @@ msgid ""
 "  handlers: [console]"
 msgstr ""
 
-#: howto/logging.rst:778
+#: howto/logging.rst:780
 msgid ""
 "For more information about logging using a dictionary, see :ref:`logging-"
 "config-api`."
 msgstr ""
 
-#: howto/logging.rst:782
+#: howto/logging.rst:784
 msgid "What happens if no configuration is provided"
 msgstr ""
 
-#: howto/logging.rst:784
+#: howto/logging.rst:786
 msgid ""
 "If no logging configuration is provided, it is possible to have a situation "
 "where a logging event needs to be output, but no handlers can be found to "
 "output the event."
 msgstr ""
 
-#: howto/logging.rst:788
+#: howto/logging.rst:790
 msgid ""
 "The event is output using a 'handler of last resort', stored in :data:"
 "`lastResort`. This internal handler is not associated with any logger, and "
@@ -1158,32 +1158,32 @@ msgid ""
 "severities will be output."
 msgstr ""
 
-#: howto/logging.rst:799
+#: howto/logging.rst:801
 msgid "For versions of Python prior to 3.2, the behaviour is as follows:"
 msgstr ""
 
-#: howto/logging.rst:801
+#: howto/logging.rst:803
 msgid ""
 "If :data:`raiseExceptions` is ``False`` (production mode), the event is "
 "silently dropped."
 msgstr ""
 
-#: howto/logging.rst:804
+#: howto/logging.rst:806
 msgid ""
 "If :data:`raiseExceptions` is ``True`` (development mode), a message 'No "
 "handlers could be found for logger X.Y.Z' is printed once."
 msgstr ""
 
-#: howto/logging.rst:807
+#: howto/logging.rst:809
 msgid ""
 "To obtain the pre-3.2 behaviour, :data:`lastResort` can be set to ``None``."
 msgstr ""
 
-#: howto/logging.rst:813
+#: howto/logging.rst:815
 msgid "Configuring Logging for a Library"
 msgstr ""
 
-#: howto/logging.rst:815
+#: howto/logging.rst:817
 msgid ""
 "When developing a library which uses logging, you should take care to "
 "document how the library uses logging - for example, the names of loggers "
@@ -1194,7 +1194,7 @@ msgid ""
 "is regarded as the best default behaviour."
 msgstr ""
 
-#: howto/logging.rst:823
+#: howto/logging.rst:825
 msgid ""
 "If for some reason you *don't* want these messages printed in the absence of "
 "any logging configuration, you can attach a do-nothing handler to the top-"
@@ -1206,7 +1206,7 @@ msgid ""
 "to those handlers, as normal."
 msgstr ""
 
-#: howto/logging.rst:832
+#: howto/logging.rst:834
 msgid ""
 "A do-nothing handler is included in the logging package: :class:`~logging."
 "NullHandler` (since Python 3.1). An instance of this handler could be added "
@@ -1217,20 +1217,20 @@ msgid ""
 "etc. then the code::"
 msgstr ""
 
-#: howto/logging.rst:840
+#: howto/logging.rst:842
 msgid ""
 "import logging\n"
 "logging.getLogger('foo').addHandler(logging.NullHandler())"
 msgstr ""
 
-#: howto/logging.rst:843
+#: howto/logging.rst:845
 msgid ""
 "should have the desired effect. If an organisation produces a number of "
 "libraries, then the logger name specified can be 'orgname.foo' rather than "
 "just 'foo'."
 msgstr ""
 
-#: howto/logging.rst:847
+#: howto/logging.rst:849
 msgid ""
 "It is strongly advised that you *do not log to the root logger* in your "
 "library. Instead, use a logger with a unique and easily identifiable name, "
@@ -1240,7 +1240,7 @@ msgid ""
 "library as they wish."
 msgstr ""
 
-#: howto/logging.rst:854
+#: howto/logging.rst:856
 msgid ""
 "It is strongly advised that you *do not add any handlers other than* :class:"
 "`~logging.NullHandler` *to your library's loggers*. This is because the "
@@ -1251,11 +1251,11 @@ msgid ""
 "carry out unit tests and deliver logs which suit their requirements."
 msgstr ""
 
-#: howto/logging.rst:865
+#: howto/logging.rst:867
 msgid "Logging Levels"
 msgstr ""
 
-#: howto/logging.rst:867
+#: howto/logging.rst:869
 msgid ""
 "The numeric values of logging levels are given in the following table. These "
 "are primarily of interest if you want to define your own levels, and need "
@@ -1264,39 +1264,39 @@ msgid ""
 "value; the predefined name is lost."
 msgstr ""
 
-#: howto/logging.rst:874
+#: howto/logging.rst:876
 msgid "Numeric value"
 msgstr ""
 
-#: howto/logging.rst:876
+#: howto/logging.rst:878
 msgid "50"
 msgstr ""
 
-#: howto/logging.rst:878
+#: howto/logging.rst:880
 msgid "40"
 msgstr ""
 
-#: howto/logging.rst:880
+#: howto/logging.rst:882
 msgid "30"
 msgstr ""
 
-#: howto/logging.rst:882
+#: howto/logging.rst:884
 msgid "20"
 msgstr ""
 
-#: howto/logging.rst:884
+#: howto/logging.rst:886
 msgid "10"
 msgstr ""
 
-#: howto/logging.rst:886
+#: howto/logging.rst:888
 msgid "``NOTSET``"
 msgstr ""
 
-#: howto/logging.rst:886
+#: howto/logging.rst:888
 msgid "0"
 msgstr ""
 
-#: howto/logging.rst:889
+#: howto/logging.rst:891
 msgid ""
 "Levels can also be associated with loggers, being set either by the "
 "developer or through loading a saved logging configuration. When a logging "
@@ -1306,14 +1306,14 @@ msgid ""
 "basic mechanism controlling the verbosity of logging output."
 msgstr ""
 
-#: howto/logging.rst:896
+#: howto/logging.rst:898
 msgid ""
 "Logging messages are encoded as instances of the :class:`~logging.LogRecord` "
 "class. When a logger decides to actually log an event, a :class:`~logging."
 "LogRecord` instance is created from the logging message."
 msgstr ""
 
-#: howto/logging.rst:900
+#: howto/logging.rst:902
 msgid ""
 "Logging messages are subjected to a dispatch mechanism through the use of :"
 "dfn:`handlers`, which are instances of subclasses of the :class:`Handler` "
@@ -1330,7 +1330,7 @@ msgid ""
 "at which point the passing to ancestor handlers stops)."
 msgstr ""
 
-#: howto/logging.rst:914
+#: howto/logging.rst:916
 msgid ""
 "Just as for loggers, handlers can have levels associated with them. A "
 "handler's level acts as a filter in the same way as a logger's level does. "
@@ -1340,11 +1340,11 @@ msgid ""
 "`~Handler.emit`."
 msgstr ""
 
-#: howto/logging.rst:923
+#: howto/logging.rst:925
 msgid "Custom Levels"
 msgstr ""
 
-#: howto/logging.rst:925
+#: howto/logging.rst:927
 msgid ""
 "Defining your own levels is possible, but should not be necessary, as the "
 "existing levels have been chosen on the basis of practical experience. "
@@ -1357,27 +1357,27 @@ msgid ""
 "given numeric value might mean different things for different libraries."
 msgstr ""
 
-#: howto/logging.rst:938
+#: howto/logging.rst:940
 msgid "Useful Handlers"
 msgstr ""
 
-#: howto/logging.rst:940
+#: howto/logging.rst:942
 msgid ""
 "In addition to the base :class:`Handler` class, many useful subclasses are "
 "provided:"
 msgstr ""
 
-#: howto/logging.rst:943
+#: howto/logging.rst:945
 msgid ""
 ":class:`StreamHandler` instances send messages to streams (file-like "
 "objects)."
 msgstr ""
 
-#: howto/logging.rst:946
+#: howto/logging.rst:948
 msgid ":class:`FileHandler` instances send messages to disk files."
 msgstr ""
 
-#: howto/logging.rst:948
+#: howto/logging.rst:950
 msgid ""
 ":class:`~handlers.BaseRotatingHandler` is the base class for handlers that "
 "rotate log files at a certain point. It is not meant to be  instantiated "
@@ -1385,61 +1385,61 @@ msgid ""
 "`~handlers.TimedRotatingFileHandler`."
 msgstr ""
 
-#: howto/logging.rst:953
+#: howto/logging.rst:955
 msgid ""
 ":class:`~handlers.RotatingFileHandler` instances send messages to disk "
 "files, with support for maximum log file sizes and log file rotation."
 msgstr ""
 
-#: howto/logging.rst:956
+#: howto/logging.rst:958
 msgid ""
 ":class:`~handlers.TimedRotatingFileHandler` instances send messages to disk "
 "files, rotating the log file at certain timed intervals."
 msgstr ""
 
-#: howto/logging.rst:959
+#: howto/logging.rst:961
 msgid ""
 ":class:`~handlers.SocketHandler` instances send messages to TCP/IP sockets. "
 "Since 3.4, Unix domain sockets are also supported."
 msgstr ""
 
-#: howto/logging.rst:962
+#: howto/logging.rst:964
 msgid ""
 ":class:`~handlers.DatagramHandler` instances send messages to UDP sockets. "
 "Since 3.4, Unix domain sockets are also supported."
 msgstr ""
 
-#: howto/logging.rst:965
+#: howto/logging.rst:967
 msgid ""
 ":class:`~handlers.SMTPHandler` instances send messages to a designated email "
 "address."
 msgstr ""
 
-#: howto/logging.rst:968
+#: howto/logging.rst:970
 msgid ""
 ":class:`~handlers.SysLogHandler` instances send messages to a Unix syslog "
 "daemon, possibly on a remote machine."
 msgstr ""
 
-#: howto/logging.rst:971
+#: howto/logging.rst:973
 msgid ""
 ":class:`~handlers.NTEventLogHandler` instances send messages to a Windows "
 "NT/2000/XP event log."
 msgstr ""
 
-#: howto/logging.rst:974
+#: howto/logging.rst:976
 msgid ""
 ":class:`~handlers.MemoryHandler` instances send messages to a buffer in "
 "memory, which is flushed whenever specific criteria are met."
 msgstr ""
 
-#: howto/logging.rst:977
+#: howto/logging.rst:979
 msgid ""
 ":class:`~handlers.HTTPHandler` instances send messages to an HTTP server "
 "using either ``GET`` or ``POST`` semantics."
 msgstr ""
 
-#: howto/logging.rst:980
+#: howto/logging.rst:982
 msgid ""
 ":class:`~handlers.WatchedFileHandler` instances watch the file they are "
 "logging to. If the file changes, it is closed and reopened using the file "
@@ -1447,13 +1447,13 @@ msgid ""
 "support the underlying mechanism used."
 msgstr ""
 
-#: howto/logging.rst:985
+#: howto/logging.rst:987
 msgid ""
 ":class:`~handlers.QueueHandler` instances send messages to a queue, such as "
 "those implemented in the :mod:`queue` or :mod:`multiprocessing` modules."
 msgstr ""
 
-#: howto/logging.rst:988
+#: howto/logging.rst:990
 msgid ""
 ":class:`NullHandler` instances do nothing with error messages. They are used "
 "by library developers who want to use logging, but want to avoid the 'No "
@@ -1462,15 +1462,15 @@ msgid ""
 "more information."
 msgstr ""
 
-#: howto/logging.rst:994
+#: howto/logging.rst:996
 msgid "The :class:`NullHandler` class."
 msgstr ""
 
-#: howto/logging.rst:997
+#: howto/logging.rst:999
 msgid "The :class:`~handlers.QueueHandler` class."
 msgstr ""
 
-#: howto/logging.rst:1000
+#: howto/logging.rst:1002
 msgid ""
 "The :class:`NullHandler`, :class:`StreamHandler` and :class:`FileHandler` "
 "classes are defined in the core logging package. The other handlers are "
@@ -1478,14 +1478,14 @@ msgid ""
 "module, :mod:`logging.config`, for configuration functionality.)"
 msgstr ""
 
-#: howto/logging.rst:1005
+#: howto/logging.rst:1007
 msgid ""
 "Logged messages are formatted for presentation through instances of the :"
 "class:`Formatter` class. They are initialized with a format string suitable "
 "for use with the % operator and a dictionary."
 msgstr ""
 
-#: howto/logging.rst:1009
+#: howto/logging.rst:1011
 msgid ""
 "For formatting multiple messages in a batch, instances of :class:"
 "`BufferingFormatter` can be used. In addition to the format string (which is "
@@ -1493,7 +1493,7 @@ msgid ""
 "trailer format strings."
 msgstr ""
 
-#: howto/logging.rst:1014
+#: howto/logging.rst:1016
 msgid ""
 "When filtering based on logger level and/or handler level is not enough, "
 "instances of :class:`Filter` can be added to both :class:`Logger` and :class:"
@@ -1503,18 +1503,18 @@ msgid ""
 "value, the message is not processed further."
 msgstr ""
 
-#: howto/logging.rst:1021
+#: howto/logging.rst:1023
 msgid ""
 "The basic :class:`Filter` functionality allows filtering by specific logger "
 "name. If this feature is used, messages sent to the named logger and its "
 "children are allowed through the filter, and all others dropped."
 msgstr ""
 
-#: howto/logging.rst:1029
+#: howto/logging.rst:1031
 msgid "Exceptions raised during logging"
 msgstr ""
 
-#: howto/logging.rst:1031
+#: howto/logging.rst:1033
 msgid ""
 "The logging package is designed to swallow exceptions which occur while "
 "logging in production. This is so that errors which occur while handling "
@@ -1522,7 +1522,7 @@ msgid ""
 "errors - do not cause the application using logging to terminate prematurely."
 msgstr ""
 
-#: howto/logging.rst:1036
+#: howto/logging.rst:1038
 msgid ""
 ":class:`SystemExit` and :class:`KeyboardInterrupt` exceptions are never "
 "swallowed. Other exceptions which occur during the :meth:`~Handler.emit` "
@@ -1530,7 +1530,7 @@ msgid ""
 "handleError` method."
 msgstr ""
 
-#: howto/logging.rst:1041
+#: howto/logging.rst:1043
 msgid ""
 "The default implementation of :meth:`~Handler.handleError` in :class:"
 "`Handler` checks to see if a module-level variable, :data:`raiseExceptions`, "
@@ -1538,7 +1538,7 @@ msgid ""
 "the exception is swallowed."
 msgstr ""
 
-#: howto/logging.rst:1047
+#: howto/logging.rst:1049
 msgid ""
 "The default value of :data:`raiseExceptions` is ``True``. This is because "
 "during development, you typically want to be notified of any exceptions that "
@@ -1546,11 +1546,11 @@ msgid ""
 "production usage."
 msgstr ""
 
-#: howto/logging.rst:1057
+#: howto/logging.rst:1059
 msgid "Using arbitrary objects as messages"
 msgstr ""
 
-#: howto/logging.rst:1059
+#: howto/logging.rst:1061
 msgid ""
 "In the preceding sections and examples, it has been assumed that the message "
 "passed when logging the event is a string. However, this is not the only "
@@ -1562,11 +1562,11 @@ msgid ""
 "the wire."
 msgstr ""
 
-#: howto/logging.rst:1070
+#: howto/logging.rst:1072
 msgid "Optimization"
 msgstr ""
 
-#: howto/logging.rst:1072
+#: howto/logging.rst:1074
 msgid ""
 "Formatting of message arguments is deferred until it cannot be avoided. "
 "However, computing the arguments passed to the logging method can also be "
@@ -1577,20 +1577,20 @@ msgid ""
 "code like this::"
 msgstr ""
 
-#: howto/logging.rst:1080
+#: howto/logging.rst:1082
 msgid ""
 "if logger.isEnabledFor(logging.DEBUG):\n"
 "    logger.debug('Message with %s, %s', expensive_func1(),\n"
 "                                        expensive_func2())"
 msgstr ""
 
-#: howto/logging.rst:1084
+#: howto/logging.rst:1086
 msgid ""
 "so that if the logger's threshold is set above ``DEBUG``, the calls to "
 "``expensive_func1`` and ``expensive_func2`` are never made."
 msgstr ""
 
-#: howto/logging.rst:1087
+#: howto/logging.rst:1089
 msgid ""
 "In some cases, :meth:`~Logger.isEnabledFor` can itself be more expensive "
 "than you'd like (e.g. for deeply nested loggers where an explicit level is "
@@ -1602,7 +1602,7 @@ msgid ""
 "while the application is running (which is not all that common)."
 msgstr ""
 
-#: howto/logging.rst:1096
+#: howto/logging.rst:1098
 msgid ""
 "There are other optimizations which can be made for specific applications "
 "which need more precise control over what logging information is collected. "
@@ -1610,94 +1610,94 @@ msgid ""
 "you don't need:"
 msgstr ""
 
-#: howto/logging.rst:1102
+#: howto/logging.rst:1104
 msgid "What you don't want to collect"
 msgstr ""
 
-#: howto/logging.rst:1102
+#: howto/logging.rst:1104
 msgid "How to avoid collecting it"
 msgstr ""
 
-#: howto/logging.rst:1104
+#: howto/logging.rst:1106
 msgid "Information about where calls were made from."
 msgstr ""
 
-#: howto/logging.rst:1104
+#: howto/logging.rst:1106
 msgid ""
 "Set ``logging._srcfile`` to ``None``. This avoids calling :func:`sys."
 "_getframe`, which may help to speed up your code in environments like PyPy "
 "(which can't speed up code that uses :func:`sys._getframe`)."
 msgstr ""
 
-#: howto/logging.rst:1110
+#: howto/logging.rst:1112
 msgid "Threading information."
 msgstr ""
 
-#: howto/logging.rst:1110
+#: howto/logging.rst:1112
 msgid "Set ``logging.logThreads`` to ``False``."
 msgstr ""
 
-#: howto/logging.rst:1112
+#: howto/logging.rst:1114
 msgid "Current process ID (:func:`os.getpid`)"
 msgstr ""
 
-#: howto/logging.rst:1112
+#: howto/logging.rst:1114
 msgid "Set ``logging.logProcesses`` to ``False``."
 msgstr ""
 
-#: howto/logging.rst:1114
+#: howto/logging.rst:1116
 msgid ""
 "Current process name when using ``multiprocessing`` to manage multiple "
 "processes."
 msgstr ""
 
-#: howto/logging.rst:1114
+#: howto/logging.rst:1116
 msgid "Set ``logging.logMultiprocessing`` to ``False``."
 msgstr ""
 
-#: howto/logging.rst:1117
+#: howto/logging.rst:1119
 msgid "Current :class:`asyncio.Task` name when using ``asyncio``."
 msgstr ""
 
-#: howto/logging.rst:1117
+#: howto/logging.rst:1119
 msgid "Set ``logging.logAsyncioTasks`` to ``False``."
 msgstr ""
 
-#: howto/logging.rst:1121
+#: howto/logging.rst:1123
 msgid ""
 "Also note that the core logging module only includes the basic handlers. If "
 "you don't import :mod:`logging.handlers` and :mod:`logging.config`, they "
 "won't take up any memory."
 msgstr ""
 
-#: howto/logging.rst:1128
+#: howto/logging.rst:1130
 msgid "Other resources"
 msgstr ""
 
-#: howto/logging.rst:1132
+#: howto/logging.rst:1134
 msgid "Module :mod:`logging`"
 msgstr ""
 
-#: howto/logging.rst:1133
+#: howto/logging.rst:1135
 msgid "API reference for the logging module."
 msgstr ""
 
-#: howto/logging.rst:1135
+#: howto/logging.rst:1137
 msgid "Module :mod:`logging.config`"
 msgstr ""
 
-#: howto/logging.rst:1136
+#: howto/logging.rst:1138
 msgid "Configuration API for the logging module."
 msgstr ""
 
-#: howto/logging.rst:1138
+#: howto/logging.rst:1140
 msgid "Module :mod:`logging.handlers`"
 msgstr ""
 
-#: howto/logging.rst:1139
+#: howto/logging.rst:1141
 msgid "Useful handlers included with the logging module."
 msgstr ""
 
-#: howto/logging.rst:1141
+#: howto/logging.rst:1143
 msgid ":ref:`A logging cookbook <logging-cookbook>`"
 msgstr ""
diff --git a/howto/mro.po b/howto/mro.po
index aa2ba82df..db1239397 100644
--- a/howto/mro.po
+++ b/howto/mro.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -565,7 +565,7 @@ msgstr ""
 msgid ""
 "We see that class G inherits from F and E, with F *before* E:  therefore we "
 "would expect the attribute *G.remember2buy* to be inherited by *F."
-"rembermer2buy* and not by *E.remember2buy*:  nevertheless Python 2.2 gives"
+"remember2buy* and not by *E.remember2buy*:  nevertheless Python 2.2 gives"
 msgstr ""
 
 #: howto/mro.rst:407
diff --git a/howto/regex.po b/howto/regex.po
index 2bcdea3bd..c71951ae4 100644
--- a/howto/regex.po
+++ b/howto/regex.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -871,7 +871,7 @@ msgstr ""
 #: howto/regex.rst:483
 msgid ""
 ">>> iterator = p.finditer('12 drummers drumming, 11 ... 10 ...')\n"
-">>> iterator  \n"
+">>> iterator\n"
 "<callable_iterator object at 0x...>\n"
 ">>> for match in iterator:\n"
 "...     print(match.span())\n"
@@ -899,7 +899,7 @@ msgstr ""
 msgid ""
 ">>> print(re.match(r'From\\s+', 'Fromage amk'))\n"
 "None\n"
-">>> re.match(r'From\\s+', 'From amk Thu May 14 19:12:10 1998')  \n"
+">>> re.match(r'From\\s+', 'From amk Thu May 14 19:12:10 1998')\n"
 "<re.Match object; span=(0, 5), match='From '>"
 msgstr ""
 
@@ -1193,7 +1193,7 @@ msgstr ""
 
 #: howto/regex.rst:714
 msgid ""
-">>> print(re.search('^From', 'From Here to Eternity'))  \n"
+">>> print(re.search('^From', 'From Here to Eternity'))\n"
 "<re.Match object; span=(0, 4), match='From'>\n"
 ">>> print(re.search('^From', 'Reciting From Memory'))\n"
 "None"
@@ -1215,11 +1215,11 @@ msgstr ""
 
 #: howto/regex.rst:725
 msgid ""
-">>> print(re.search('}$', '{block}'))  \n"
+">>> print(re.search('}$', '{block}'))\n"
 "<re.Match object; span=(6, 7), match='}'>\n"
 ">>> print(re.search('}$', '{block} '))\n"
 "None\n"
-">>> print(re.search('}$', '{block}\\n'))  \n"
+">>> print(re.search('}$', '{block}\\n'))\n"
 "<re.Match object; span=(6, 7), match='}'>"
 msgstr ""
 
diff --git a/howto/unicode.po b/howto/unicode.po
index e1e7cd0d0..5158f41ba 100644
--- a/howto/unicode.po
+++ b/howto/unicode.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -382,7 +382,7 @@ msgstr ""
 
 #: howto/unicode.rst:236
 msgid ""
-">>> b'\\x80abc'.decode(\"utf-8\", \"strict\")  \n"
+">>> b'\\x80abc'.decode(\"utf-8\", \"strict\")\n"
 "Traceback (most recent call last):\n"
 "    ...\n"
 "UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 0:\n"
@@ -452,7 +452,7 @@ msgid ""
 ">>> u = chr(40960) + 'abcd' + chr(1972)\n"
 ">>> u.encode('utf-8')\n"
 "b'\\xea\\x80\\x80abcd\\xde\\xb4'\n"
-">>> u.encode('ascii')  \n"
+">>> u.encode('ascii')\n"
 "Traceback (most recent call last):\n"
 "    ...\n"
 "UnicodeEncodeError: 'ascii' codec can't encode character '\\ua000' in\n"
diff --git a/howto/urllib2.po b/howto/urllib2.po
index 3dd95b5c0..4fe97ffa3 100644
--- a/howto/urllib2.po
+++ b/howto/urllib2.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -229,7 +229,7 @@ msgid ""
 ">>> data['location'] = 'Northampton'\n"
 ">>> data['language'] = 'Python'\n"
 ">>> url_values = urllib.parse.urlencode(data)\n"
-">>> print(url_values)  # The order may differ from below.  \n"
+">>> print(url_values)  # The order may differ from below.\n"
 "name=Somebody+Here&language=Python&location=Northampton\n"
 ">>> url = 'http://www.example.com/example.cgi'\n"
 ">>> full_url = url + '?' + url_values\n"
@@ -333,7 +333,7 @@ msgid ""
 ">>> req = urllib.request.Request('http://www.pretend_server.org')\n"
 ">>> try: urllib.request.urlopen(req)\n"
 "... except urllib.error.URLError as e:\n"
-"...     print(e.reason)      \n"
+"...     print(e.reason)\n"
 "...\n"
 "(4, 'getaddrinfo failed')"
 msgstr ""
@@ -470,7 +470,7 @@ msgid ""
 "...     urllib.request.urlopen(req)\n"
 "... except urllib.error.HTTPError as e:\n"
 "...     print(e.code)\n"
-"...     print(e.read())  \n"
+"...     print(e.read())\n"
 "...\n"
 "404\n"
 "b'<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n"
diff --git a/library/abc.po b/library/abc.po
index 7ac2299ec..26c1c5c74 100644
--- a/library/abc.po
+++ b/library/abc.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -192,25 +192,25 @@ msgstr ""
 
 #: library/abc.rst:143
 msgid ""
-"The ABC ``MyIterable`` defines the standard iterable method, :meth:"
-"`~iterator.__iter__`, as an abstract method.  The implementation given here "
-"can still be called from subclasses.  The :meth:`!get_iterator` method is "
-"also part of the ``MyIterable`` abstract base class, but it does not have to "
-"be overridden in non-abstract derived classes."
+"The ABC ``MyIterable`` defines the standard iterable method, :meth:`~object."
+"__iter__`, as an abstract method.  The implementation given here can still "
+"be called from subclasses.  The :meth:`!get_iterator` method is also part of "
+"the ``MyIterable`` abstract base class, but it does not have to be "
+"overridden in non-abstract derived classes."
 msgstr ""
 
 #: library/abc.rst:149
 msgid ""
 "The :meth:`__subclasshook__` class method defined here says that any class "
-"that has an :meth:`~iterator.__iter__` method in its :attr:`~object."
-"__dict__` (or in that of one of its base classes, accessed via the :attr:"
-"`~type.__mro__` list) is considered a ``MyIterable`` too."
+"that has an :meth:`~object.__iter__` method in its :attr:`~object.__dict__` "
+"(or in that of one of its base classes, accessed via the :attr:`~type."
+"__mro__` list) is considered a ``MyIterable`` too."
 msgstr ""
 
 #: library/abc.rst:154
 msgid ""
 "Finally, the last line makes ``Foo`` a virtual subclass of ``MyIterable``, "
-"even though it does not define an :meth:`~iterator.__iter__` method (it uses "
+"even though it does not define an :meth:`~object.__iter__` method (it uses "
 "the old-style iterable protocol, defined in terms of :meth:`~object.__len__` "
 "and :meth:`~object.__getitem__`).  Note that this will not make "
 "``get_iterator`` available as a method of ``Foo``, so it is provided "
diff --git a/library/argparse.po b/library/argparse.po
index 970fe6452..3816b0e37 100644
--- a/library/argparse.po
+++ b/library/argparse.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -1090,14 +1090,16 @@ msgstr ""
 msgid ""
 "The recommended way to create a custom action is to extend :class:`Action`, "
 "overriding the :meth:`!__call__` method and optionally the :meth:`!__init__` "
-"and :meth:`!format_usage` methods."
+"and :meth:`!format_usage` methods. You can also register custom actions "
+"using the :meth:`~ArgumentParser.register` method and reference them by "
+"their registered name."
 msgstr ""
 
-#: library/argparse.rst:755
+#: library/argparse.rst:756
 msgid "An example of a custom action::"
 msgstr ""
 
-#: library/argparse.rst:757
+#: library/argparse.rst:758
 msgid ""
 ">>> class FooAction(argparse.Action):\n"
 "...     def __init__(self, option_strings, dest, nargs=None, **kwargs):\n"
@@ -1118,15 +1120,15 @@ msgid ""
 "Namespace(bar='1', foo='2')"
 msgstr ""
 
-#: library/argparse.rst:775
+#: library/argparse.rst:776
 msgid "For more details, see :class:`Action`."
 msgstr ""
 
-#: library/argparse.rst:781
+#: library/argparse.rst:782
 msgid "nargs"
 msgstr ""
 
-#: library/argparse.rst:783
+#: library/argparse.rst:784
 msgid ""
 ":class:`ArgumentParser` objects usually associate a single command-line "
 "argument with a single action to be taken.  The ``nargs`` keyword argument "
@@ -1135,13 +1137,13 @@ msgid ""
 "are:"
 msgstr ""
 
-#: library/argparse.rst:788
+#: library/argparse.rst:789
 msgid ""
 "``N`` (an integer).  ``N`` arguments from the command line will be gathered "
 "together into a list.  For example::"
 msgstr ""
 
-#: library/argparse.rst:791
+#: library/argparse.rst:792
 msgid ""
 ">>> parser = argparse.ArgumentParser()\n"
 ">>> parser.add_argument('--foo', nargs=2)\n"
@@ -1150,13 +1152,13 @@ msgid ""
 "Namespace(bar=['c'], foo=['a', 'b'])"
 msgstr ""
 
-#: library/argparse.rst:797
+#: library/argparse.rst:798
 msgid ""
 "Note that ``nargs=1`` produces a list of one item.  This is different from "
 "the default, in which the item is produced by itself."
 msgstr ""
 
-#: library/argparse.rst:802
+#: library/argparse.rst:803
 msgid ""
 "``'?'``. One argument will be consumed from the command line if possible, "
 "and produced as a single item.  If no command-line argument is present, the "
@@ -1166,7 +1168,7 @@ msgid ""
 "produced.  Some examples to illustrate this::"
 msgstr ""
 
-#: library/argparse.rst:809
+#: library/argparse.rst:810
 msgid ""
 ">>> parser = argparse.ArgumentParser()\n"
 ">>> parser.add_argument('--foo', nargs='?', const='c', default='d')\n"
@@ -1179,13 +1181,13 @@ msgid ""
 "Namespace(bar='d', foo='d')"
 msgstr ""
 
-#: library/argparse.rst:819
+#: library/argparse.rst:820
 msgid ""
 "One of the more common uses of ``nargs='?'`` is to allow optional input and "
 "output files::"
 msgstr ""
 
-#: library/argparse.rst:822
+#: library/argparse.rst:823
 msgid ""
 ">>> parser = argparse.ArgumentParser()\n"
 ">>> parser.add_argument('infile', nargs='?', type=argparse.FileType('r'),\n"
@@ -1200,7 +1202,7 @@ msgid ""
 "          outfile=<_io.TextIOWrapper name='<stdout>' encoding='UTF-8'>)"
 msgstr ""
 
-#: library/argparse.rst:836
+#: library/argparse.rst:837
 msgid ""
 "``'*'``.  All command-line arguments present are gathered into a list.  Note "
 "that it generally doesn't make much sense to have more than one positional "
@@ -1208,7 +1210,7 @@ msgid ""
 "``nargs='*'`` is possible.  For example::"
 msgstr ""
 
-#: library/argparse.rst:841
+#: library/argparse.rst:842
 msgid ""
 ">>> parser = argparse.ArgumentParser()\n"
 ">>> parser.add_argument('--foo', nargs='*')\n"
@@ -1218,14 +1220,14 @@ msgid ""
 "Namespace(bar=['1', '2'], baz=['a', 'b'], foo=['x', 'y'])"
 msgstr ""
 
-#: library/argparse.rst:850
+#: library/argparse.rst:851
 msgid ""
 "``'+'``. Just like ``'*'``, all command-line args present are gathered into "
 "a list.  Additionally, an error message will be generated if there wasn't at "
 "least one command-line argument present.  For example::"
 msgstr ""
 
-#: library/argparse.rst:854
+#: library/argparse.rst:855
 msgid ""
 ">>> parser = argparse.ArgumentParser(prog='PROG')\n"
 ">>> parser.add_argument('foo', nargs='+')\n"
@@ -1236,7 +1238,7 @@ msgid ""
 "PROG: error: the following arguments are required: foo"
 msgstr ""
 
-#: library/argparse.rst:862
+#: library/argparse.rst:863
 msgid ""
 "If the ``nargs`` keyword argument is not provided, the number of arguments "
 "consumed is determined by the action_.  Generally this means a single "
@@ -1245,11 +1247,11 @@ msgid ""
 "``'store_const'``) set ``nargs=0``."
 msgstr ""
 
-#: library/argparse.rst:872
+#: library/argparse.rst:873
 msgid "const"
 msgstr ""
 
-#: library/argparse.rst:874
+#: library/argparse.rst:875
 msgid ""
 "The ``const`` argument of :meth:`~ArgumentParser.add_argument` is used to "
 "hold constant values that are not read from the command line but are "
@@ -1257,7 +1259,7 @@ msgid ""
 "common uses of it are:"
 msgstr ""
 
-#: library/argparse.rst:878
+#: library/argparse.rst:879
 msgid ""
 "When :meth:`~ArgumentParser.add_argument` is called with "
 "``action='store_const'`` or ``action='append_const'``.  These actions add "
@@ -1267,7 +1269,7 @@ msgid ""
 "receive a default value of ``None``."
 msgstr ""
 
-#: library/argparse.rst:886
+#: library/argparse.rst:887
 msgid ""
 "When :meth:`~ArgumentParser.add_argument` is called with option strings "
 "(like ``-f`` or ``--foo``) and ``nargs='?'``.  This creates an optional "
@@ -1277,17 +1279,17 @@ msgid ""
 "to be ``None`` instead.  See the nargs_ description for examples."
 msgstr ""
 
-#: library/argparse.rst:893
+#: library/argparse.rst:894
 msgid ""
 "``const=None`` by default, including when ``action='append_const'`` or "
 "``action='store_const'``."
 msgstr ""
 
-#: library/argparse.rst:900
+#: library/argparse.rst:901
 msgid "default"
 msgstr ""
 
-#: library/argparse.rst:902
+#: library/argparse.rst:903
 msgid ""
 "All optional arguments and some positional arguments may be omitted at the "
 "command line.  The ``default`` keyword argument of :meth:`~ArgumentParser."
@@ -1297,7 +1299,7 @@ msgid ""
 "command line::"
 msgstr ""
 
-#: library/argparse.rst:909
+#: library/argparse.rst:910
 msgid ""
 ">>> parser = argparse.ArgumentParser()\n"
 ">>> parser.add_argument('--foo', default=42)\n"
@@ -1307,13 +1309,13 @@ msgid ""
 "Namespace(foo=42)"
 msgstr ""
 
-#: library/argparse.rst:916
+#: library/argparse.rst:917
 msgid ""
 "If the target namespace already has an attribute set, the action *default* "
 "will not overwrite it::"
 msgstr ""
 
-#: library/argparse.rst:919
+#: library/argparse.rst:920
 msgid ""
 ">>> parser = argparse.ArgumentParser()\n"
 ">>> parser.add_argument('--foo', default=42)\n"
@@ -1321,7 +1323,7 @@ msgid ""
 "Namespace(foo=101)"
 msgstr ""
 
-#: library/argparse.rst:924
+#: library/argparse.rst:925
 msgid ""
 "If the ``default`` value is a string, the parser parses the value as if it "
 "were a command-line argument.  In particular, the parser applies any type_ "
@@ -1329,7 +1331,7 @@ msgid ""
 "`Namespace` return value.  Otherwise, the parser uses the value as is::"
 msgstr ""
 
-#: library/argparse.rst:929
+#: library/argparse.rst:930
 msgid ""
 ">>> parser = argparse.ArgumentParser()\n"
 ">>> parser.add_argument('--length', default='10', type=int)\n"
@@ -1338,13 +1340,13 @@ msgid ""
 "Namespace(length=10, width=10.5)"
 msgstr ""
 
-#: library/argparse.rst:935
+#: library/argparse.rst:936
 msgid ""
 "For positional arguments with nargs_ equal to ``?`` or ``*``, the "
 "``default`` value is used when no command-line argument was present::"
 msgstr ""
 
-#: library/argparse.rst:938
+#: library/argparse.rst:939
 msgid ""
 ">>> parser = argparse.ArgumentParser()\n"
 ">>> parser.add_argument('foo', nargs='?', default=42)\n"
@@ -1354,20 +1356,20 @@ msgid ""
 "Namespace(foo=42)"
 msgstr ""
 
-#: library/argparse.rst:945
+#: library/argparse.rst:946
 msgid ""
 "For required_ arguments, the ``default`` value is ignored. For example, this "
 "applies to positional arguments with nargs_ values other than ``?`` or "
 "``*``, or optional arguments marked as ``required=True``."
 msgstr ""
 
-#: library/argparse.rst:949
+#: library/argparse.rst:950
 msgid ""
 "Providing ``default=argparse.SUPPRESS`` causes no attribute to be added if "
 "the command-line argument was not present::"
 msgstr ""
 
-#: library/argparse.rst:952
+#: library/argparse.rst:953
 msgid ""
 ">>> parser = argparse.ArgumentParser()\n"
 ">>> parser.add_argument('--foo', default=argparse.SUPPRESS)\n"
@@ -1377,11 +1379,11 @@ msgid ""
 "Namespace(foo='1')"
 msgstr ""
 
-#: library/argparse.rst:963
+#: library/argparse.rst:964
 msgid "type"
 msgstr ""
 
-#: library/argparse.rst:965
+#: library/argparse.rst:966
 msgid ""
 "By default, the parser reads command-line arguments in as simple strings. "
 "However, quite often the command-line string should instead be interpreted "
@@ -1390,25 +1392,26 @@ msgid ""
 "checking and type conversions to be performed."
 msgstr ""
 
-#: library/argparse.rst:971
+#: library/argparse.rst:972
 msgid ""
 "If the type_ keyword is used with the default_ keyword, the type converter "
 "is only applied if the default is a string."
 msgstr ""
 
-#: library/argparse.rst:974
+#: library/argparse.rst:975
 msgid ""
-"The argument to ``type`` can be any callable that accepts a single string. "
-"If the function raises :exc:`ArgumentTypeError`, :exc:`TypeError`, or :exc:"
+"The argument to ``type`` can be a callable that accepts a single string or "
+"the name of a registered type (see :meth:`~ArgumentParser.register`) If the "
+"function raises :exc:`ArgumentTypeError`, :exc:`TypeError`, or :exc:"
 "`ValueError`, the exception is caught and a nicely formatted error message "
-"is displayed.  No other exception types are handled."
+"is displayed. Other exception types are not handled."
 msgstr ""
 
-#: library/argparse.rst:979
+#: library/argparse.rst:981
 msgid "Common built-in types and functions can be used as type converters:"
 msgstr ""
 
-#: library/argparse.rst:981
+#: library/argparse.rst:983
 msgid ""
 "import argparse\n"
 "import pathlib\n"
@@ -1423,11 +1426,11 @@ msgid ""
 "parser.add_argument('datapath', type=pathlib.Path)"
 msgstr ""
 
-#: library/argparse.rst:994
+#: library/argparse.rst:996
 msgid "User defined functions can be used as well:"
 msgstr ""
 
-#: library/argparse.rst:996
+#: library/argparse.rst:998
 msgid ""
 ">>> def hyphenated(string):\n"
 "...     return '-'.join([word[:4] for word in string.casefold().split()])\n"
@@ -1438,14 +1441,14 @@ msgid ""
 "Namespace(short_title='\"the-tale-of-two-citi')"
 msgstr ""
 
-#: library/argparse.rst:1006
+#: library/argparse.rst:1008
 msgid ""
 "The :func:`bool` function is not recommended as a type converter.  All it "
 "does is convert empty strings to ``False`` and non-empty strings to "
 "``True``. This is usually not what is desired."
 msgstr ""
 
-#: library/argparse.rst:1010
+#: library/argparse.rst:1012
 msgid ""
 "In general, the ``type`` keyword is a convenience that should only be used "
 "for simple conversions that can only raise one of the three supported "
@@ -1453,7 +1456,7 @@ msgid ""
 "management should be done downstream after the arguments are parsed."
 msgstr ""
 
-#: library/argparse.rst:1015
+#: library/argparse.rst:1017
 msgid ""
 "For example, JSON or YAML conversions have complex error cases that require "
 "better reporting than can be given by the ``type`` keyword.  A :exc:`~json."
@@ -1461,7 +1464,7 @@ msgid ""
 "exception would not be handled at all."
 msgstr ""
 
-#: library/argparse.rst:1020
+#: library/argparse.rst:1022
 msgid ""
 "Even :class:`~argparse.FileType` has its limitations for use with the "
 "``type`` keyword.  If one argument uses :class:`~argparse.FileType` and then "
@@ -1471,17 +1474,17 @@ msgid ""
 "files."
 msgstr ""
 
-#: library/argparse.rst:1027
+#: library/argparse.rst:1029
 msgid ""
 "For type checkers that simply check against a fixed set of values, consider "
 "using the choices_ keyword instead."
 msgstr ""
 
-#: library/argparse.rst:1034
+#: library/argparse.rst:1036
 msgid "choices"
 msgstr ""
 
-#: library/argparse.rst:1036
+#: library/argparse.rst:1038
 msgid ""
 "Some command-line arguments should be selected from a restricted set of "
 "values. These can be handled by passing a sequence object as the *choices* "
@@ -1490,7 +1493,7 @@ msgid ""
 "be displayed if the argument was not one of the acceptable values::"
 msgstr ""
 
-#: library/argparse.rst:1042
+#: library/argparse.rst:1044
 msgid ""
 ">>> parser = argparse.ArgumentParser(prog='game.py')\n"
 ">>> parser.add_argument('move', choices=['rock', 'paper', 'scissors'])\n"
@@ -1502,26 +1505,26 @@ msgid ""
 "'paper', 'scissors')"
 msgstr ""
 
-#: library/argparse.rst:1051
+#: library/argparse.rst:1053
 msgid ""
 "Note that inclusion in the *choices* sequence is checked after any type_ "
 "conversions have been performed, so the type of the objects in the *choices* "
 "sequence should match the type_ specified."
 msgstr ""
 
-#: library/argparse.rst:1055
+#: library/argparse.rst:1057
 msgid ""
 "Any sequence can be passed as the *choices* value, so :class:`list` "
 "objects, :class:`tuple` objects, and custom sequences are all supported."
 msgstr ""
 
-#: library/argparse.rst:1058
+#: library/argparse.rst:1060
 msgid ""
 "Use of :class:`enum.Enum` is not recommended because it is difficult to "
 "control its appearance in usage, help, and error messages."
 msgstr ""
 
-#: library/argparse.rst:1061
+#: library/argparse.rst:1063
 msgid ""
 "Formatted choices override the default *metavar* which is normally derived "
 "from *dest*.  This is usually what you want because the user never sees the "
@@ -1529,11 +1532,11 @@ msgid ""
 "are many choices), just specify an explicit metavar_."
 msgstr ""
 
-#: library/argparse.rst:1070
+#: library/argparse.rst:1072
 msgid "required"
 msgstr ""
 
-#: library/argparse.rst:1072
+#: library/argparse.rst:1074
 msgid ""
 "In general, the :mod:`!argparse` module assumes that flags like ``-f`` and "
 "``--bar`` indicate *optional* arguments, which can always be omitted at the "
@@ -1541,7 +1544,7 @@ msgid ""
 "the ``required=`` keyword argument to :meth:`~ArgumentParser.add_argument`::"
 msgstr ""
 
-#: library/argparse.rst:1077
+#: library/argparse.rst:1079
 msgid ""
 ">>> parser = argparse.ArgumentParser()\n"
 ">>> parser.add_argument('--foo', required=True)\n"
@@ -1552,24 +1555,24 @@ msgid ""
 ": error: the following arguments are required: --foo"
 msgstr ""
 
-#: library/argparse.rst:1085
+#: library/argparse.rst:1087
 msgid ""
 "As the example shows, if an option is marked as ``required``, :meth:"
 "`~ArgumentParser.parse_args` will report an error if that option is not "
 "present at the command line."
 msgstr ""
 
-#: library/argparse.rst:1091
+#: library/argparse.rst:1093
 msgid ""
 "Required options are generally considered bad form because users expect "
 "*options* to be *optional*, and thus they should be avoided when possible."
 msgstr ""
 
-#: library/argparse.rst:1098
+#: library/argparse.rst:1100
 msgid "help"
 msgstr ""
 
-#: library/argparse.rst:1100
+#: library/argparse.rst:1102
 msgid ""
 "The ``help`` value is a string containing a brief description of the "
 "argument. When a user requests help (usually by using ``-h`` or ``--help`` "
@@ -1577,7 +1580,7 @@ msgid ""
 "each argument."
 msgstr ""
 
-#: library/argparse.rst:1105
+#: library/argparse.rst:1107
 msgid ""
 "The ``help`` strings can include various format specifiers to avoid "
 "repetition of things like the program name or the argument default_.  The "
@@ -1586,7 +1589,7 @@ msgid ""
 "``%(type)s``, etc.::"
 msgstr ""
 
-#: library/argparse.rst:1110
+#: library/argparse.rst:1112
 msgid ""
 ">>> parser = argparse.ArgumentParser(prog='frobble')\n"
 ">>> parser.add_argument('bar', nargs='?', type=int, default=42,\n"
@@ -1601,19 +1604,19 @@ msgid ""
 " -h, --help  show this help message and exit"
 msgstr ""
 
-#: library/argparse.rst:1122
+#: library/argparse.rst:1124
 msgid ""
 "As the help string supports %-formatting, if you want a literal ``%`` to "
 "appear in the help string, you must escape it as ``%%``."
 msgstr ""
 
-#: library/argparse.rst:1125
+#: library/argparse.rst:1127
 msgid ""
 ":mod:`!argparse` supports silencing the help entry for certain options, by "
 "setting the ``help`` value to ``argparse.SUPPRESS``::"
 msgstr ""
 
-#: library/argparse.rst:1128
+#: library/argparse.rst:1130
 msgid ""
 ">>> parser = argparse.ArgumentParser(prog='frobble')\n"
 ">>> parser.add_argument('--foo', help=argparse.SUPPRESS)\n"
@@ -1624,11 +1627,11 @@ msgid ""
 "  -h, --help  show this help message and exit"
 msgstr ""
 
-#: library/argparse.rst:1140
+#: library/argparse.rst:1142
 msgid "metavar"
 msgstr ""
 
-#: library/argparse.rst:1142
+#: library/argparse.rst:1144
 msgid ""
 "When :class:`ArgumentParser` generates help messages, it needs some way to "
 "refer to each expected argument.  By default, :class:`!ArgumentParser` "
@@ -1640,7 +1643,7 @@ msgid ""
 "command-line argument will be referred to as ``FOO``.  An example::"
 msgstr ""
 
-#: library/argparse.rst:1151
+#: library/argparse.rst:1153
 msgid ""
 ">>> parser = argparse.ArgumentParser()\n"
 ">>> parser.add_argument('--foo')\n"
@@ -1658,11 +1661,11 @@ msgid ""
 " --foo FOO"
 msgstr ""
 
-#: library/argparse.rst:1166
+#: library/argparse.rst:1168
 msgid "An alternative name can be specified with ``metavar``::"
 msgstr ""
 
-#: library/argparse.rst:1168
+#: library/argparse.rst:1170
 msgid ""
 ">>> parser = argparse.ArgumentParser()\n"
 ">>> parser.add_argument('--foo', metavar='YYY')\n"
@@ -1680,21 +1683,21 @@ msgid ""
 " --foo YYY"
 msgstr ""
 
-#: library/argparse.rst:1183
+#: library/argparse.rst:1185
 msgid ""
 "Note that ``metavar`` only changes the *displayed* name - the name of the "
 "attribute on the :meth:`~ArgumentParser.parse_args` object is still "
 "determined by the dest_ value."
 msgstr ""
 
-#: library/argparse.rst:1187
+#: library/argparse.rst:1189
 msgid ""
 "Different values of ``nargs`` may cause the metavar to be used multiple "
 "times. Providing a tuple to ``metavar`` specifies a different display for "
 "each of the arguments::"
 msgstr ""
 
-#: library/argparse.rst:1191
+#: library/argparse.rst:1193
 msgid ""
 ">>> parser = argparse.ArgumentParser(prog='PROG')\n"
 ">>> parser.add_argument('-x', nargs=2)\n"
@@ -1708,11 +1711,11 @@ msgid ""
 " --foo bar baz"
 msgstr ""
 
-#: library/argparse.rst:1206
+#: library/argparse.rst:1208
 msgid "dest"
 msgstr ""
 
-#: library/argparse.rst:1208
+#: library/argparse.rst:1210
 msgid ""
 "Most :class:`ArgumentParser` actions add some value as an attribute of the "
 "object returned by :meth:`~ArgumentParser.parse_args`.  The name of this "
@@ -1722,7 +1725,7 @@ msgid ""
 "add_argument`::"
 msgstr ""
 
-#: library/argparse.rst:1215
+#: library/argparse.rst:1217
 msgid ""
 ">>> parser = argparse.ArgumentParser()\n"
 ">>> parser.add_argument('bar')\n"
@@ -1730,7 +1733,7 @@ msgid ""
 "Namespace(bar='XXX')"
 msgstr ""
 
-#: library/argparse.rst:1220
+#: library/argparse.rst:1222
 msgid ""
 "For optional argument actions, the value of ``dest`` is normally inferred "
 "from the option strings.  :class:`ArgumentParser` generates the value of "
@@ -1742,7 +1745,7 @@ msgid ""
 "below illustrate this behavior::"
 msgstr ""
 
-#: library/argparse.rst:1229
+#: library/argparse.rst:1231
 msgid ""
 ">>> parser = argparse.ArgumentParser()\n"
 ">>> parser.add_argument('-f', '--foo-bar', '--foo')\n"
@@ -1753,11 +1756,11 @@ msgid ""
 "Namespace(foo_bar='1', x='2')"
 msgstr ""
 
-#: library/argparse.rst:1237
+#: library/argparse.rst:1239
 msgid "``dest`` allows a custom attribute name to be provided::"
 msgstr ""
 
-#: library/argparse.rst:1239
+#: library/argparse.rst:1241
 msgid ""
 ">>> parser = argparse.ArgumentParser()\n"
 ">>> parser.add_argument('--foo', dest='bar')\n"
@@ -1765,11 +1768,11 @@ msgid ""
 "Namespace(bar='XXX')"
 msgstr ""
 
-#: library/argparse.rst:1245
+#: library/argparse.rst:1247
 msgid "Action classes"
 msgstr ""
 
-#: library/argparse.rst:1247
+#: library/argparse.rst:1249
 msgid ""
 ":class:`!Action` classes implement the Action API, a callable which returns "
 "a callable which processes arguments from the command-line. Any object which "
@@ -1777,7 +1780,7 @@ msgid ""
 "`~ArgumentParser.add_argument`."
 msgstr ""
 
-#: library/argparse.rst:1256
+#: library/argparse.rst:1258
 msgid ""
 ":class:`!Action` objects are used by an :class:`ArgumentParser` to represent "
 "the information needed to parse a single argument from one or more strings "
@@ -1786,7 +1789,7 @@ msgid ""
 "`ArgumentParser.add_argument` except for the ``action`` itself."
 msgstr ""
 
-#: library/argparse.rst:1262
+#: library/argparse.rst:1264
 msgid ""
 "Instances of :class:`!Action` (or return value of any callable to the "
 "``action`` parameter) should have attributes :attr:`!dest`, :attr:`!"
@@ -1795,46 +1798,46 @@ msgid ""
 "is to call :meth:`!Action.__init__`."
 msgstr ""
 
-#: library/argparse.rst:1270
+#: library/argparse.rst:1272
 msgid ""
 ":class:`!Action` instances should be callable, so subclasses must override "
 "the :meth:`!__call__` method, which should accept four parameters:"
 msgstr ""
 
-#: library/argparse.rst:1273
+#: library/argparse.rst:1275
 msgid ""
 "*parser* - The :class:`ArgumentParser` object which contains this action."
 msgstr ""
 
-#: library/argparse.rst:1275
+#: library/argparse.rst:1277
 msgid ""
 "*namespace* - The :class:`Namespace` object that will be returned by :meth:"
 "`~ArgumentParser.parse_args`.  Most actions add an attribute to this object "
 "using :func:`setattr`."
 msgstr ""
 
-#: library/argparse.rst:1279
+#: library/argparse.rst:1281
 msgid ""
 "*values* - The associated command-line arguments, with any type conversions "
 "applied.  Type conversions are specified with the type_ keyword argument to :"
 "meth:`~ArgumentParser.add_argument`."
 msgstr ""
 
-#: library/argparse.rst:1283
+#: library/argparse.rst:1285
 msgid ""
 "*option_string* - The option string that was used to invoke this action. The "
 "``option_string`` argument is optional, and will be absent if the action is "
 "associated with a positional argument."
 msgstr ""
 
-#: library/argparse.rst:1287
+#: library/argparse.rst:1289
 msgid ""
 "The :meth:`!__call__` method may perform arbitrary actions, but will "
 "typically set attributes on the ``namespace`` based on ``dest`` and "
 "``values``."
 msgstr ""
 
-#: library/argparse.rst:1292
+#: library/argparse.rst:1294
 msgid ""
 ":class:`!Action` subclasses can define a :meth:`!format_usage` method that "
 "takes no argument and return a string which will be used when printing the "
@@ -1842,47 +1845,47 @@ msgid ""
 "will be used."
 msgstr ""
 
-#: library/argparse.rst:1298
+#: library/argparse.rst:1300
 msgid "The parse_args() method"
 msgstr ""
 
-#: library/argparse.rst:1302
+#: library/argparse.rst:1304
 msgid ""
 "Convert argument strings to objects and assign them as attributes of the "
 "namespace.  Return the populated namespace."
 msgstr ""
 
-#: library/argparse.rst:1305
+#: library/argparse.rst:1307
 msgid ""
 "Previous calls to :meth:`add_argument` determine exactly what objects are "
 "created and how they are assigned. See the documentation for :meth:`!"
 "add_argument` for details."
 msgstr ""
 
-#: library/argparse.rst:1309
+#: library/argparse.rst:1311
 msgid ""
 "args_ - List of strings to parse.  The default is taken from :data:`sys."
 "argv`."
 msgstr ""
 
-#: library/argparse.rst:1312
+#: library/argparse.rst:1314
 msgid ""
 "namespace_ - An object to take the attributes.  The default is a new empty :"
 "class:`Namespace` object."
 msgstr ""
 
-#: library/argparse.rst:1317
+#: library/argparse.rst:1319
 msgid "Option value syntax"
 msgstr ""
 
-#: library/argparse.rst:1319
+#: library/argparse.rst:1321
 msgid ""
 "The :meth:`~ArgumentParser.parse_args` method supports several ways of "
 "specifying the value of an option (if it takes one).  In the simplest case, "
 "the option and its value are passed as two separate arguments::"
 msgstr ""
 
-#: library/argparse.rst:1323
+#: library/argparse.rst:1325
 msgid ""
 ">>> parser = argparse.ArgumentParser(prog='PROG')\n"
 ">>> parser.add_argument('-x')\n"
@@ -1893,38 +1896,38 @@ msgid ""
 "Namespace(foo='FOO', x=None)"
 msgstr ""
 
-#: library/argparse.rst:1331
+#: library/argparse.rst:1333
 msgid ""
 "For long options (options with names longer than a single character), the "
 "option and value can also be passed as a single command-line argument, using "
 "``=`` to separate them::"
 msgstr ""
 
-#: library/argparse.rst:1335
+#: library/argparse.rst:1337
 msgid ""
 ">>> parser.parse_args(['--foo=FOO'])\n"
 "Namespace(foo='FOO', x=None)"
 msgstr ""
 
-#: library/argparse.rst:1338
+#: library/argparse.rst:1340
 msgid ""
 "For short options (options only one character long), the option and its "
 "value can be concatenated::"
 msgstr ""
 
-#: library/argparse.rst:1341
+#: library/argparse.rst:1343
 msgid ""
 ">>> parser.parse_args(['-xX'])\n"
 "Namespace(foo=None, x='X')"
 msgstr ""
 
-#: library/argparse.rst:1344
+#: library/argparse.rst:1346
 msgid ""
 "Several short options can be joined together, using only a single ``-`` "
 "prefix, as long as only the last option (or none of them) requires a value::"
 msgstr ""
 
-#: library/argparse.rst:1347
+#: library/argparse.rst:1349
 msgid ""
 ">>> parser = argparse.ArgumentParser(prog='PROG')\n"
 ">>> parser.add_argument('-x', action='store_true')\n"
@@ -1934,11 +1937,11 @@ msgid ""
 "Namespace(x=True, y=True, z='Z')"
 msgstr ""
 
-#: library/argparse.rst:1356
+#: library/argparse.rst:1358
 msgid "Invalid arguments"
 msgstr ""
 
-#: library/argparse.rst:1358
+#: library/argparse.rst:1360
 msgid ""
 "While parsing the command line, :meth:`~ArgumentParser.parse_args` checks "
 "for a variety of errors, including ambiguous options, invalid types, invalid "
@@ -1946,7 +1949,7 @@ msgid ""
 "an error, it exits and prints the error along with a usage message::"
 msgstr ""
 
-#: library/argparse.rst:1363
+#: library/argparse.rst:1365
 msgid ""
 ">>> parser = argparse.ArgumentParser(prog='PROG')\n"
 ">>> parser.add_argument('--foo', type=int)\n"
@@ -1968,11 +1971,11 @@ msgid ""
 "PROG: error: extra arguments found: badger"
 msgstr ""
 
-#: library/argparse.rst:1384
+#: library/argparse.rst:1386
 msgid "Arguments containing ``-``"
 msgstr ""
 
-#: library/argparse.rst:1386
+#: library/argparse.rst:1388
 msgid ""
 "The :meth:`~ArgumentParser.parse_args` method attempts to give errors "
 "whenever the user has clearly made a mistake, but some situations are "
@@ -1984,7 +1987,7 @@ msgid ""
 "negative numbers::"
 msgstr ""
 
-#: library/argparse.rst:1394
+#: library/argparse.rst:1396
 msgid ""
 ">>> parser = argparse.ArgumentParser(prog='PROG')\n"
 ">>> parser.add_argument('-x')\n"
@@ -2017,7 +2020,7 @@ msgid ""
 "PROG: error: argument -1: expected one argument"
 msgstr ""
 
-#: library/argparse.rst:1424
+#: library/argparse.rst:1426
 msgid ""
 "If you have positional arguments that must begin with ``-`` and don't look "
 "like negative numbers, you can insert the pseudo-argument ``'--'`` which "
@@ -2025,30 +2028,30 @@ msgid ""
 "positional argument::"
 msgstr ""
 
-#: library/argparse.rst:1429
+#: library/argparse.rst:1431
 msgid ""
 ">>> parser.parse_args(['--', '-f'])\n"
 "Namespace(foo='-f', one=None)"
 msgstr ""
 
-#: library/argparse.rst:1432
+#: library/argparse.rst:1434
 msgid ""
 "See also :ref:`the argparse howto on ambiguous arguments <specifying-"
 "ambiguous-arguments>` for more details."
 msgstr ""
 
-#: library/argparse.rst:1438
+#: library/argparse.rst:1440
 msgid "Argument abbreviations (prefix matching)"
 msgstr ""
 
-#: library/argparse.rst:1440
+#: library/argparse.rst:1442
 msgid ""
 "The :meth:`~ArgumentParser.parse_args` method :ref:`by default "
 "<allow_abbrev>` allows long options to be abbreviated to a prefix, if the "
 "abbreviation is unambiguous (the prefix matches a unique option)::"
 msgstr ""
 
-#: library/argparse.rst:1444
+#: library/argparse.rst:1446
 msgid ""
 ">>> parser = argparse.ArgumentParser(prog='PROG')\n"
 ">>> parser.add_argument('-bacon')\n"
@@ -2062,17 +2065,17 @@ msgid ""
 "PROG: error: ambiguous option: -ba could match -badger, -bacon"
 msgstr ""
 
-#: library/argparse.rst:1455
+#: library/argparse.rst:1457
 msgid ""
 "An error is produced for arguments that could produce more than one options. "
 "This feature can be disabled by setting :ref:`allow_abbrev` to ``False``."
 msgstr ""
 
-#: library/argparse.rst:1461
+#: library/argparse.rst:1463
 msgid "Beyond ``sys.argv``"
 msgstr ""
 
-#: library/argparse.rst:1463
+#: library/argparse.rst:1465
 msgid ""
 "Sometimes it may be useful to have an :class:`ArgumentParser` parse "
 "arguments other than those of :data:`sys.argv`.  This can be accomplished by "
@@ -2080,7 +2083,7 @@ msgid ""
 "useful for testing at the interactive prompt::"
 msgstr ""
 
-#: library/argparse.rst:1468
+#: library/argparse.rst:1470
 msgid ""
 ">>> parser = argparse.ArgumentParser()\n"
 ">>> parser.add_argument(\n"
@@ -2095,24 +2098,24 @@ msgid ""
 "Namespace(accumulate=<built-in function sum>, integers=[1, 2, 3, 4])"
 msgstr ""
 
-#: library/argparse.rst:1483
+#: library/argparse.rst:1485
 msgid "The Namespace object"
 msgstr ""
 
-#: library/argparse.rst:1487
+#: library/argparse.rst:1489
 msgid ""
 "Simple class used by default by :meth:`~ArgumentParser.parse_args` to create "
 "an object holding attributes and return it."
 msgstr ""
 
-#: library/argparse.rst:1490
+#: library/argparse.rst:1492
 msgid ""
 "This class is deliberately simple, just an :class:`object` subclass with a "
 "readable string representation. If you prefer to have dict-like view of the "
 "attributes, you can use the standard Python idiom, :func:`vars`::"
 msgstr ""
 
-#: library/argparse.rst:1494
+#: library/argparse.rst:1496
 msgid ""
 ">>> parser = argparse.ArgumentParser()\n"
 ">>> parser.add_argument('--foo')\n"
@@ -2121,14 +2124,14 @@ msgid ""
 "{'foo': 'BAR'}"
 msgstr ""
 
-#: library/argparse.rst:1500
+#: library/argparse.rst:1502
 msgid ""
 "It may also be useful to have an :class:`ArgumentParser` assign attributes "
 "to an already existing object, rather than a new :class:`Namespace` object.  "
 "This can be achieved by specifying the ``namespace=`` keyword argument::"
 msgstr ""
 
-#: library/argparse.rst:1504
+#: library/argparse.rst:1506
 msgid ""
 ">>> class C:\n"
 "...     pass\n"
@@ -2141,15 +2144,15 @@ msgid ""
 "'BAR'"
 msgstr ""
 
-#: library/argparse.rst:1516
+#: library/argparse.rst:1518
 msgid "Other utilities"
 msgstr ""
 
-#: library/argparse.rst:1519
+#: library/argparse.rst:1521
 msgid "Sub-commands"
 msgstr ""
 
-#: library/argparse.rst:1526
+#: library/argparse.rst:1528
 msgid ""
 "Many programs split up their functionality into a number of subcommands, for "
 "example, the ``svn`` program can invoke subcommands like ``svn checkout``, "
@@ -2164,69 +2167,69 @@ msgid ""
 "returns an :class:`!ArgumentParser` object that can be modified as usual."
 msgstr ""
 
-#: library/argparse.rst:1538
+#: library/argparse.rst:1540
 msgid "Description of parameters:"
 msgstr ""
 
-#: library/argparse.rst:1540
+#: library/argparse.rst:1542
 msgid ""
 "*title* - title for the sub-parser group in help output; by default "
 "\"subcommands\" if description is provided, otherwise uses title for "
 "positional arguments"
 msgstr ""
 
-#: library/argparse.rst:1544
+#: library/argparse.rst:1546
 msgid ""
 "*description* - description for the sub-parser group in help output, by "
 "default ``None``"
 msgstr ""
 
-#: library/argparse.rst:1547
+#: library/argparse.rst:1549
 msgid ""
 "*prog* - usage information that will be displayed with sub-command help, by "
 "default the name of the program and any positional arguments before the "
 "subparser argument"
 msgstr ""
 
-#: library/argparse.rst:1551
+#: library/argparse.rst:1553
 msgid ""
 "*parser_class* - class which will be used to create sub-parser instances, by "
 "default the class of the current parser (e.g. :class:`ArgumentParser`)"
 msgstr ""
 
-#: library/argparse.rst:1554
+#: library/argparse.rst:1556
 msgid ""
 "action_ - the basic type of action to be taken when this argument is "
 "encountered at the command line"
 msgstr ""
 
-#: library/argparse.rst:1557
+#: library/argparse.rst:1559
 msgid ""
 "dest_ - name of the attribute under which sub-command name will be stored; "
 "by default ``None`` and no value is stored"
 msgstr ""
 
-#: library/argparse.rst:1560
+#: library/argparse.rst:1562
 msgid ""
 "required_ - Whether or not a subcommand must be provided, by default "
 "``False`` (added in 3.7)"
 msgstr ""
 
-#: library/argparse.rst:1563
+#: library/argparse.rst:1565
 msgid "help_ - help for sub-parser group in help output, by default ``None``"
 msgstr ""
 
-#: library/argparse.rst:1565
+#: library/argparse.rst:1567
 msgid ""
 "metavar_ - string presenting available subcommands in help; by default it is "
 "``None`` and presents subcommands in form {cmd1, cmd2, ..}"
 msgstr ""
 
-#: library/argparse.rst:1568
+#: library/argparse.rst:1570
 msgid "Some example usage::"
 msgstr ""
 
-#: library/argparse.rst:1570
+#: library/argparse.rst:1572
 msgid ""
 ">>> # create the top-level parser\n"
 ">>> parser = argparse.ArgumentParser(prog='PROG')\n"
@@ -2249,7 +2252,7 @@ msgid ""
 "Namespace(baz='Z', foo=True)"
 msgstr ""
 
-#: library/argparse.rst:1589
+#: library/argparse.rst:1591
 msgid ""
 "Note that the object returned by :meth:`parse_args` will only contain "
 "attributes for the main parser and the subparser that was selected by the "
@@ -2259,7 +2262,7 @@ msgid ""
 "``baz`` attributes are present."
 msgstr ""
 
-#: library/argparse.rst:1596
+#: library/argparse.rst:1598
 msgid ""
 "Similarly, when a help message is requested from a subparser, only the help "
 "for that particular parser will be printed.  The help message will not "
@@ -2268,7 +2271,7 @@ msgid ""
 "to :meth:`~_SubParsersAction.add_parser` as above.)"
 msgstr ""
 
-#: library/argparse.rst:1604
+#: library/argparse.rst:1606
 msgid ""
 ">>> parser.parse_args(['--help'])\n"
 "usage: PROG [-h] [--foo] {a,b} ...\n"
@@ -2299,14 +2302,14 @@ msgid ""
 "  --baz {X,Y,Z}  baz help"
 msgstr ""
 
-#: library/argparse.rst:1632
+#: library/argparse.rst:1634
 msgid ""
 "The :meth:`add_subparsers` method also supports ``title`` and "
 "``description`` keyword arguments.  When either is present, the subparser's "
 "commands will appear in their own group in the help output.  For example::"
 msgstr ""
 
-#: library/argparse.rst:1636
+#: library/argparse.rst:1638
 msgid ""
 ">>> parser = argparse.ArgumentParser()\n"
 ">>> subparsers = parser.add_subparsers(title='subcommands',\n"
@@ -2326,14 +2329,14 @@ msgid ""
 "  {foo,bar}   additional help"
 msgstr ""
 
-#: library/argparse.rst:1653
+#: library/argparse.rst:1655
 msgid ""
 "Furthermore, ``add_parser`` supports an additional ``aliases`` argument, "
 "which allows multiple strings to refer to the same subparser. This example, "
 "like ``svn``, aliases ``co`` as a shorthand for ``checkout``::"
 msgstr ""
 
-#: library/argparse.rst:1657
+#: library/argparse.rst:1659
 msgid ""
 ">>> parser = argparse.ArgumentParser()\n"
 ">>> subparsers = parser.add_subparsers()\n"
@@ -2343,7 +2346,7 @@ msgid ""
 "Namespace(foo='bar')"
 msgstr ""
 
-#: library/argparse.rst:1664
+#: library/argparse.rst:1666
 msgid ""
 "One particularly effective way of handling sub-commands is to combine the "
 "use of the :meth:`add_subparsers` method with calls to :meth:`set_defaults` "
@@ -2351,7 +2354,7 @@ msgid ""
 "example::"
 msgstr ""
 
-#: library/argparse.rst:1669
+#: library/argparse.rst:1671
 msgid ""
 ">>> # subcommand functions\n"
 ">>> def foo(args):\n"
@@ -2386,7 +2389,7 @@ msgid ""
 "((XYZYX))"
 msgstr ""
 
-#: library/argparse.rst:1701
+#: library/argparse.rst:1703
 msgid ""
 "This way, you can let :meth:`parse_args` do the job of calling the "
 "appropriate function after argument parsing is complete.  Associating "
@@ -2396,7 +2399,7 @@ msgid ""
 "argument to the :meth:`add_subparsers` call will work::"
 msgstr ""
 
-#: library/argparse.rst:1708
+#: library/argparse.rst:1710
 msgid ""
 ">>> parser = argparse.ArgumentParser()\n"
 ">>> subparsers = parser.add_subparsers(dest='subparser_name')\n"
@@ -2408,15 +2411,15 @@ msgid ""
 "Namespace(subparser_name='2', y='frobble')"
 msgstr ""
 
-#: library/argparse.rst:1717
+#: library/argparse.rst:1719
 msgid "New *required* keyword-only parameter."
 msgstr ""
 
-#: library/argparse.rst:1722
+#: library/argparse.rst:1724
 msgid "FileType objects"
 msgstr ""
 
-#: library/argparse.rst:1726
+#: library/argparse.rst:1728
 msgid ""
 "The :class:`FileType` factory creates objects that can be passed to the type "
 "argument of :meth:`ArgumentParser.add_argument`.  Arguments that have :class:"
@@ -2425,7 +2428,7 @@ msgid ""
 "the :func:`open` function for more details)::"
 msgstr ""
 
-#: library/argparse.rst:1732
+#: library/argparse.rst:1734
 msgid ""
 ">>> parser = argparse.ArgumentParser()\n"
 ">>> parser.add_argument('--raw', type=argparse.FileType('wb', 0))\n"
@@ -2436,14 +2439,14 @@ msgid ""
 "raw=<_io.FileIO name='raw.dat' mode='wb'>)"
 msgstr ""
 
-#: library/argparse.rst:1738
+#: library/argparse.rst:1740
 msgid ""
 "FileType objects understand the pseudo-argument ``'-'`` and automatically "
 "convert this into :data:`sys.stdin` for readable :class:`FileType` objects "
 "and :data:`sys.stdout` for writable :class:`FileType` objects::"
 msgstr ""
 
-#: library/argparse.rst:1742
+#: library/argparse.rst:1744
 msgid ""
 ">>> parser = argparse.ArgumentParser()\n"
 ">>> parser.add_argument('infile', type=argparse.FileType('r'))\n"
@@ -2451,15 +2454,15 @@ msgid ""
 "Namespace(infile=<_io.TextIOWrapper name='<stdin>' encoding='UTF-8'>)"
 msgstr ""
 
-#: library/argparse.rst:1747
+#: library/argparse.rst:1749
 msgid "Added the *encodings* and *errors* parameters."
 msgstr ""
 
-#: library/argparse.rst:1752
+#: library/argparse.rst:1754
 msgid "Argument groups"
 msgstr ""
 
-#: library/argparse.rst:1757
+#: library/argparse.rst:1759
 msgid ""
 "By default, :class:`ArgumentParser` groups command-line arguments into "
 "\"positional arguments\" and \"options\" when displaying help messages. When "
@@ -2468,7 +2471,7 @@ msgid ""
 "method::"
 msgstr ""
 
-#: library/argparse.rst:1763
+#: library/argparse.rst:1765
 msgid ""
 ">>> parser = argparse.ArgumentParser(prog='PROG', add_help=False)\n"
 ">>> group = parser.add_argument_group('group')\n"
@@ -2482,7 +2485,7 @@ msgid ""
 "  --foo FOO  foo help"
 msgstr ""
 
-#: library/argparse.rst:1774
+#: library/argparse.rst:1776
 msgid ""
 "The :meth:`add_argument_group` method returns an argument group object which "
 "has an :meth:`~ArgumentParser.add_argument` method just like a regular :"
@@ -2493,7 +2496,7 @@ msgid ""
 "this display::"
 msgstr ""
 
-#: library/argparse.rst:1782
+#: library/argparse.rst:1784
 msgid ""
 ">>> parser = argparse.ArgumentParser(prog='PROG', add_help=False)\n"
 ">>> group1 = parser.add_argument_group('group1', 'group1 description')\n"
@@ -2514,7 +2517,7 @@ msgid ""
 "  --bar BAR  bar help"
 msgstr ""
 
-#: library/argparse.rst:1800
+#: library/argparse.rst:1802
 msgid ""
 "The optional, keyword-only parameters argument_default_ and "
 "conflict_handler_ allow for finer-grained control of the behavior of the "
@@ -2523,13 +2526,13 @@ msgid ""
 "rather than the entire parser."
 msgstr ""
 
-#: library/argparse.rst:1805
+#: library/argparse.rst:1807
 msgid ""
 "Note that any arguments not in your user-defined groups will end up back in "
 "the usual \"positional arguments\" and \"optional arguments\" sections."
 msgstr ""
 
-#: library/argparse.rst:1808
+#: library/argparse.rst:1810
 msgid ""
 "Calling :meth:`add_argument_group` on an argument group is deprecated. This "
 "feature was never supported and does not always work correctly. The function "
@@ -2537,18 +2540,18 @@ msgid ""
 "future."
 msgstr ""
 
-#: library/argparse.rst:1816
+#: library/argparse.rst:1818
 msgid "Mutual exclusion"
 msgstr ""
 
-#: library/argparse.rst:1820
+#: library/argparse.rst:1822
 msgid ""
 "Create a mutually exclusive group. :mod:`!argparse` will make sure that only "
 "one of the arguments in the mutually exclusive group was present on the "
 "command line::"
 msgstr ""
 
-#: library/argparse.rst:1824
+#: library/argparse.rst:1826
 msgid ""
 ">>> parser = argparse.ArgumentParser(prog='PROG')\n"
 ">>> group = parser.add_mutually_exclusive_group()\n"
@@ -2563,14 +2566,14 @@ msgid ""
 "PROG: error: argument --bar: not allowed with argument --foo"
 msgstr ""
 
-#: library/argparse.rst:1836
+#: library/argparse.rst:1838
 msgid ""
 "The :meth:`add_mutually_exclusive_group` method also accepts a *required* "
 "argument, to indicate that at least one of the mutually exclusive arguments "
 "is required::"
 msgstr ""
 
-#: library/argparse.rst:1840
+#: library/argparse.rst:1842
 msgid ""
 ">>> parser = argparse.ArgumentParser(prog='PROG')\n"
 ">>> group = parser.add_mutually_exclusive_group(required=True)\n"
@@ -2581,7 +2584,7 @@ msgid ""
 "PROG: error: one of the arguments --foo --bar is required"
 msgstr ""
 
-#: library/argparse.rst:1848
+#: library/argparse.rst:1850
 msgid ""
 "Note that currently mutually exclusive argument groups do not support the "
 "*title* and *description* arguments of :meth:`~ArgumentParser."
@@ -2589,7 +2592,7 @@ msgid ""
 "argument group that has a title and description. For example::"
 msgstr ""
 
-#: library/argparse.rst:1854
+#: library/argparse.rst:1856
 msgid ""
 ">>> parser = argparse.ArgumentParser(prog='PROG')\n"
 ">>> group = parser.add_argument_group('Group title', 'Group description')\n"
@@ -2609,7 +2612,7 @@ msgid ""
 "  --bar BAR   bar help"
 msgstr ""
 
-#: library/argparse.rst:1871
+#: library/argparse.rst:1873
 msgid ""
 "Calling :meth:`add_argument_group` or :meth:`add_mutually_exclusive_group` "
 "on a mutually exclusive group is deprecated. These features were never "
@@ -2617,11 +2620,11 @@ msgid ""
 "by accident through inheritance and will be removed in the future."
 msgstr ""
 
-#: library/argparse.rst:1879
+#: library/argparse.rst:1881
 msgid "Parser defaults"
 msgstr ""
 
-#: library/argparse.rst:1883
+#: library/argparse.rst:1885
 msgid ""
 "Most of the time, the attributes of the object returned by :meth:"
 "`parse_args` will be fully determined by inspecting the command-line "
@@ -2630,7 +2633,7 @@ msgid ""
 "command line to be added::"
 msgstr ""
 
-#: library/argparse.rst:1889
+#: library/argparse.rst:1891
 msgid ""
 ">>> parser = argparse.ArgumentParser()\n"
 ">>> parser.add_argument('foo', type=int)\n"
@@ -2639,12 +2642,12 @@ msgid ""
 "Namespace(bar=42, baz='badger', foo=736)"
 msgstr ""
 
-#: library/argparse.rst:1895
+#: library/argparse.rst:1897
 msgid ""
 "Note that parser-level defaults always override argument-level defaults::"
 msgstr ""
 
-#: library/argparse.rst:1897
+#: library/argparse.rst:1899
 msgid ""
 ">>> parser = argparse.ArgumentParser()\n"
 ">>> parser.add_argument('--foo', default='bar')\n"
@@ -2653,20 +2656,20 @@ msgid ""
 "Namespace(foo='spam')"
 msgstr ""
 
-#: library/argparse.rst:1903
+#: library/argparse.rst:1905
 msgid ""
 "Parser-level defaults can be particularly useful when working with multiple "
 "parsers.  See the :meth:`~ArgumentParser.add_subparsers` method for an "
 "example of this type."
 msgstr ""
 
-#: library/argparse.rst:1909
+#: library/argparse.rst:1911
 msgid ""
 "Get the default value for a namespace attribute, as set by either :meth:"
 "`~ArgumentParser.add_argument` or by :meth:`~ArgumentParser.set_defaults`::"
 msgstr ""
 
-#: library/argparse.rst:1913
+#: library/argparse.rst:1915
 msgid ""
 ">>> parser = argparse.ArgumentParser()\n"
 ">>> parser.add_argument('--foo', default='badger')\n"
@@ -2674,54 +2677,54 @@ msgid ""
 "'badger'"
 msgstr ""
 
-#: library/argparse.rst:1920
+#: library/argparse.rst:1922
 msgid "Printing help"
 msgstr ""
 
-#: library/argparse.rst:1922
+#: library/argparse.rst:1924
 msgid ""
 "In most typical applications, :meth:`~ArgumentParser.parse_args` will take "
 "care of formatting and printing any usage or error messages.  However, "
 "several formatting methods are available:"
 msgstr ""
 
-#: library/argparse.rst:1928
+#: library/argparse.rst:1930
 msgid ""
 "Print a brief description of how the :class:`ArgumentParser` should be "
 "invoked on the command line.  If *file* is ``None``, :data:`sys.stdout` is "
 "assumed."
 msgstr ""
 
-#: library/argparse.rst:1934
+#: library/argparse.rst:1936
 msgid ""
 "Print a help message, including the program usage and information about the "
 "arguments registered with the :class:`ArgumentParser`.  If *file* is "
 "``None``, :data:`sys.stdout` is assumed."
 msgstr ""
 
-#: library/argparse.rst:1938
+#: library/argparse.rst:1940
 msgid ""
 "There are also variants of these methods that simply return a string instead "
 "of printing it:"
 msgstr ""
 
-#: library/argparse.rst:1943
+#: library/argparse.rst:1945
 msgid ""
 "Return a string containing a brief description of how the :class:"
 "`ArgumentParser` should be invoked on the command line."
 msgstr ""
 
-#: library/argparse.rst:1948
+#: library/argparse.rst:1950
 msgid ""
 "Return a string containing a help message, including the program usage and "
 "information about the arguments registered with the :class:`ArgumentParser`."
 msgstr ""
 
-#: library/argparse.rst:1953
+#: library/argparse.rst:1955
 msgid "Partial parsing"
 msgstr ""
 
-#: library/argparse.rst:1957
+#: library/argparse.rst:1959
 msgid ""
 "Sometimes a script may only parse a few of the command-line arguments, "
 "passing the remaining arguments on to another script or program. In these "
@@ -2732,7 +2735,7 @@ msgid ""
 "remaining argument strings."
 msgstr ""
 
-#: library/argparse.rst:1966
+#: library/argparse.rst:1968
 msgid ""
 ">>> parser = argparse.ArgumentParser()\n"
 ">>> parser.add_argument('--foo', action='store_true')\n"
@@ -2741,7 +2744,7 @@ msgid ""
 "(Namespace(bar='BAR', foo=True), ['--badger', 'spam'])"
 msgstr ""
 
-#: library/argparse.rst:1973
+#: library/argparse.rst:1975
 msgid ""
 ":ref:`Prefix matching <prefix-matching>` rules apply to :meth:"
 "`~ArgumentParser.parse_known_args`. The parser may consume an option even if "
@@ -2749,11 +2752,11 @@ msgid ""
 "remaining arguments list."
 msgstr ""
 
-#: library/argparse.rst:1980
+#: library/argparse.rst:1982
 msgid "Customizing file parsing"
 msgstr ""
 
-#: library/argparse.rst:1984
+#: library/argparse.rst:1986
 msgid ""
 "Arguments that are read from a file (see the *fromfile_prefix_chars* keyword "
 "argument to the :class:`ArgumentParser` constructor) are read one argument "
@@ -2761,38 +2764,38 @@ msgid ""
 "reading."
 msgstr ""
 
-#: library/argparse.rst:1989
+#: library/argparse.rst:1991
 msgid ""
 "This method takes a single argument *arg_line* which is a string read from "
 "the argument file.  It returns a list of arguments parsed from this string. "
 "The method is called once per line read from the argument file, in order."
 msgstr ""
 
-#: library/argparse.rst:1993
+#: library/argparse.rst:1995
 msgid ""
 "A useful override of this method is one that treats each space-separated "
 "word as an argument.  The following example demonstrates how to do this::"
 msgstr ""
 
-#: library/argparse.rst:1996
+#: library/argparse.rst:1998
 msgid ""
 "class MyArgumentParser(argparse.ArgumentParser):\n"
 "    def convert_arg_line_to_args(self, arg_line):\n"
 "        return arg_line.split()"
 msgstr ""
 
-#: library/argparse.rst:2002
+#: library/argparse.rst:2004
 msgid "Exiting methods"
 msgstr ""
 
-#: library/argparse.rst:2006
+#: library/argparse.rst:2008
 msgid ""
 "This method terminates the program, exiting with the specified *status* and, "
 "if given, it prints a *message* to :data:`sys.stderr` before that. The user "
 "can override this method to handle these steps differently::"
 msgstr ""
 
-#: library/argparse.rst:2010
+#: library/argparse.rst:2012
 msgid ""
 "class ErrorCatchingArgumentParser(argparse.ArgumentParser):\n"
 "    def exit(self, status=0, message=None):\n"
@@ -2801,17 +2804,17 @@ msgid ""
 "        exit(status)"
 msgstr ""
 
-#: library/argparse.rst:2018
+#: library/argparse.rst:2020
 msgid ""
 "This method prints a usage message, including the *message*, to :data:`sys."
 "stderr` and terminates the program with a status code of 2."
 msgstr ""
 
-#: library/argparse.rst:2023
+#: library/argparse.rst:2025
 msgid "Intermixed parsing"
 msgstr ""
 
-#: library/argparse.rst:2028
+#: library/argparse.rst:2030
 msgid ""
 "A number of Unix commands allow the user to intermix optional arguments with "
 "positional arguments.  The :meth:`~ArgumentParser.parse_intermixed_args` "
@@ -2819,7 +2822,7 @@ msgid ""
 "parsing style."
 msgstr ""
 
-#: library/argparse.rst:2033
+#: library/argparse.rst:2035
 msgid ""
 "These parsers do not support all the :mod:`!argparse` features, and will "
 "raise exceptions if unsupported features are used.  In particular, "
@@ -2827,7 +2830,7 @@ msgid ""
 "positionals are not supported."
 msgstr ""
 
-#: library/argparse.rst:2038
+#: library/argparse.rst:2040
 msgid ""
 "The following example shows the difference between :meth:`~ArgumentParser."
 "parse_known_args` and :meth:`~ArgumentParser.parse_intermixed_args`: the "
@@ -2835,7 +2838,7 @@ msgid ""
 "collects all the positionals into ``rest``.  ::"
 msgstr ""
 
-#: library/argparse.rst:2044
+#: library/argparse.rst:2046
 msgid ""
 ">>> parser = argparse.ArgumentParser()\n"
 ">>> parser.add_argument('--foo')\n"
@@ -2847,7 +2850,7 @@ msgid ""
 "Namespace(cmd='doit', foo='bar', rest=[1, 2, 3])"
 msgstr ""
 
-#: library/argparse.rst:2053
+#: library/argparse.rst:2055
 msgid ""
 ":meth:`~ArgumentParser.parse_known_intermixed_args` returns a two item tuple "
 "containing the populated namespace and the list of remaining argument "
@@ -2855,41 +2858,82 @@ msgid ""
 "there are any remaining unparsed argument strings."
 msgstr ""
 
-#: library/argparse.rst:2062
+#: library/argparse.rst:2064
+msgid "Registering custom types or actions"
+msgstr ""
+
+#: library/argparse.rst:2068
+msgid ""
+"Sometimes it's desirable to use a custom string in error messages to provide "
+"more user-friendly output. In these cases, :meth:`!register` can be used to "
+"register custom actions or types with a parser and allow you to reference "
+"the type by their registered name instead of their callable name."
+msgstr ""
+
+#: library/argparse.rst:2073
+msgid ""
+"The :meth:`!register` method accepts three arguments - a *registry_name*, "
+"specifying the internal registry where the object will be stored (e.g., "
+"``action``, ``type``), *value*, which is the key under which the object will "
+"be registered, and object, the callable to be registered."
+msgstr ""
+
+#: library/argparse.rst:2078
+msgid ""
+"The following example shows how to register a custom type with a parser::"
+msgstr ""
+
+#: library/argparse.rst:2080
+msgid ""
+">>> import argparse\n"
+">>> parser = argparse.ArgumentParser()\n"
+">>> parser.register('type', 'hexadecimal integer', lambda s: int(s, 16))\n"
+">>> parser.add_argument('--foo', type='hexadecimal integer')\n"
+"_StoreAction(option_strings=['--foo'], dest='foo', nargs=None, const=None, "
+"default=None, type='hexadecimal integer', choices=None, required=False, "
+"help=None, metavar=None, deprecated=False)\n"
+">>> parser.parse_args(['--foo', '0xFA'])\n"
+"Namespace(foo=250)\n"
+">>> parser.parse_args(['--foo', '1.2'])\n"
+"usage: PROG [-h] [--foo FOO]\n"
+"PROG: error: argument --foo: invalid 'hexadecimal integer' value: '1.2'"
+msgstr ""
+
+#: library/argparse.rst:2092
 msgid "Exceptions"
 msgstr ""
 
-#: library/argparse.rst:2066
+#: library/argparse.rst:2096
 msgid "An error from creating or using an argument (optional or positional)."
 msgstr ""
 
-#: library/argparse.rst:2068
+#: library/argparse.rst:2098
 msgid ""
 "The string value of this exception is the message, augmented with "
 "information about the argument that caused it."
 msgstr ""
 
-#: library/argparse.rst:2073
+#: library/argparse.rst:2103
 msgid ""
 "Raised when something goes wrong converting a command line string to a type."
 msgstr ""
 
-#: library/argparse.rst:2077
+#: library/argparse.rst:2107
 msgid "Guides and Tutorials"
 msgstr ""
 
-#: library/argparse.rst:800
+#: library/argparse.rst:801
 msgid "? (question mark)"
 msgstr ""
 
-#: library/argparse.rst:834 library/argparse.rst:848
+#: library/argparse.rst:835 library/argparse.rst:849
 msgid "in argparse module"
 msgstr ""
 
-#: library/argparse.rst:834
+#: library/argparse.rst:835
 msgid "* (asterisk)"
 msgstr ""
 
-#: library/argparse.rst:848
+#: library/argparse.rst:849
 msgid "+ (plus)"
 msgstr ""
diff --git a/library/asynchat.po b/library/asynchat.po
new file mode 100644
index 000000000..2d1c6d8da
--- /dev/null
+++ b/library/asynchat.po
@@ -0,0 +1,38 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) 2001-2025, Python Software Foundation
+# This file is distributed under the same license as the Python package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Python 3.12\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: library/asynchat.rst:2
+msgid ":mod:`!asynchat` --- Asynchronous socket command/response handler"
+msgstr ""
+
+#: library/asynchat.rst:10
+msgid ""
+"This module is no longer part of the Python standard library. It was :ref:"
+"`removed in Python 3.12 <whatsnew312-removed>` after being deprecated in "
+"Python 3.6.  The removal was decided in :pep:`594`."
+msgstr ""
+
+#: library/asynchat.rst:14
+msgid "Applications should use the :mod:`asyncio` module instead."
+msgstr ""
+
+#: library/asynchat.rst:16
+msgid ""
+"The last version of Python that provided the :mod:`!asynchat` module was "
+"`Python 3.11 <https://docs.python.org/3.11/library/asynchat.html>`_."
+msgstr ""
diff --git a/library/asyncio-eventloop.po b/library/asyncio-eventloop.po
index 6bf4faa75..043b8c6b2 100644
--- a/library/asyncio-eventloop.po
+++ b/library/asyncio-eventloop.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -238,7 +238,7 @@ msgid ""
 "called after the event loop is closed."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:167
+#: library/asyncio-eventloop.rst:168
 msgid ""
 "Schedule all currently open :term:`asynchronous generator` objects to close "
 "with an :meth:`~agen.aclose` call.  After calling this method, the event "
@@ -246,18 +246,18 @@ msgid ""
 "should be used to reliably finalize all scheduled asynchronous generators."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:173
+#: library/asyncio-eventloop.rst:174
 msgid ""
 "Note that there is no need to call this function when :func:`asyncio.run` is "
 "used."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:176 library/asyncio-eventloop.rst:1253
-#: library/asyncio-eventloop.rst:1671
+#: library/asyncio-eventloop.rst:177 library/asyncio-eventloop.rst:1285
+#: library/asyncio-eventloop.rst:1707
 msgid "Example::"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:178
+#: library/asyncio-eventloop.rst:179
 msgid ""
 "try:\n"
 "    loop.run_forever()\n"
@@ -266,7 +266,7 @@ msgid ""
 "    loop.close()"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:188
+#: library/asyncio-eventloop.rst:190
 msgid ""
 "Schedule the closure of the default executor and wait for it to join all of "
 "the threads in the :class:`~concurrent.futures.ThreadPoolExecutor`. Once "
@@ -274,243 +274,250 @@ msgid ""
 "run_in_executor` will raise a :exc:`RuntimeError`."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:194
+#: library/asyncio-eventloop.rst:196
 msgid ""
 "The *timeout* parameter specifies the amount of time (in :class:`float` "
 "seconds) the executor will be given to finish joining. With the default, "
 "``None``, the executor is allowed an unlimited amount of time."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:199
+#: library/asyncio-eventloop.rst:201
 msgid ""
 "If the *timeout* is reached, a :exc:`RuntimeWarning` is emitted and the "
 "default executor is terminated without waiting for its threads to finish "
 "joining."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:205
+#: library/asyncio-eventloop.rst:207
 msgid ""
 "Do not call this method when using :func:`asyncio.run`, as the latter "
 "handles default executor shutdown automatically."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:210
+#: library/asyncio-eventloop.rst:212
 msgid "Added the *timeout* parameter."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:214
+#: library/asyncio-eventloop.rst:216
 msgid "Scheduling callbacks"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:218
+#: library/asyncio-eventloop.rst:220
 msgid ""
 "Schedule the *callback* :term:`callback` to be called with *args* arguments "
 "at the next iteration of the event loop."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:221
+#: library/asyncio-eventloop.rst:223
 msgid ""
 "Return an instance of :class:`asyncio.Handle`, which can be used later to "
 "cancel the callback."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:224
+#: library/asyncio-eventloop.rst:226
 msgid ""
 "Callbacks are called in the order in which they are registered. Each "
 "callback will be called exactly once."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:227
+#: library/asyncio-eventloop.rst:229
 msgid ""
 "The optional keyword-only *context* argument specifies a custom :class:"
 "`contextvars.Context` for the *callback* to run in. Callbacks use the "
 "current context when no *context* is provided."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:231
+#: library/asyncio-eventloop.rst:233
 msgid "Unlike :meth:`call_soon_threadsafe`, this method is not thread-safe."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:235
+#: library/asyncio-eventloop.rst:237
 msgid ""
 "A thread-safe variant of :meth:`call_soon`. When scheduling callbacks from "
 "another thread, this function *must* be used, since :meth:`call_soon` is not "
 "thread-safe."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:239
+#: library/asyncio-eventloop.rst:241
+msgid ""
+"This function is safe to be called from a reentrant context or signal "
+"handler, however, it is not safe or fruitful to use the returned handle in "
+"such contexts."
+msgstr ""
+
+#: library/asyncio-eventloop.rst:244
 msgid ""
 "Raises :exc:`RuntimeError` if called on a loop that's been closed. This can "
 "happen on a secondary thread when the main application is shutting down."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:243
+#: library/asyncio-eventloop.rst:248
 msgid ""
 "See the :ref:`concurrency and multithreading <asyncio-multithreading>` "
 "section of the documentation."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:246 library/asyncio-eventloop.rst:296
-#: library/asyncio-eventloop.rst:316
+#: library/asyncio-eventloop.rst:251 library/asyncio-eventloop.rst:301
+#: library/asyncio-eventloop.rst:321
 msgid ""
 "The *context* keyword-only parameter was added. See :pep:`567` for more "
 "details."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:254
+#: library/asyncio-eventloop.rst:259
 msgid ""
 "Most :mod:`asyncio` scheduling functions don't allow passing keyword "
 "arguments.  To do that, use :func:`functools.partial`::"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:257
+#: library/asyncio-eventloop.rst:262
 msgid ""
 "# will schedule \"print(\"Hello\", flush=True)\"\n"
 "loop.call_soon(\n"
 "    functools.partial(print, \"Hello\", flush=True))"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:261
+#: library/asyncio-eventloop.rst:266
 msgid ""
 "Using partial objects is usually more convenient than using lambdas, as "
 "asyncio can render partial objects better in debug and error messages."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:269
+#: library/asyncio-eventloop.rst:274
 msgid "Scheduling delayed callbacks"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:271
+#: library/asyncio-eventloop.rst:276
 msgid ""
 "Event loop provides mechanisms to schedule callback functions to be called "
 "at some point in the future.  Event loop uses monotonic clocks to track time."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:278
+#: library/asyncio-eventloop.rst:283
 msgid ""
 "Schedule *callback* to be called after the given *delay* number of seconds "
 "(can be either an int or a float)."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:281 library/asyncio-eventloop.rst:313
+#: library/asyncio-eventloop.rst:286 library/asyncio-eventloop.rst:318
 msgid ""
 "An instance of :class:`asyncio.TimerHandle` is returned which can be used to "
 "cancel the callback."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:284
+#: library/asyncio-eventloop.rst:289
 msgid ""
 "*callback* will be called exactly once.  If two callbacks are scheduled for "
 "exactly the same time, the order in which they are called is undefined."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:288
+#: library/asyncio-eventloop.rst:293
 msgid ""
 "The optional positional *args* will be passed to the callback when it is "
 "called. If you want the callback to be called with keyword arguments use :"
 "func:`functools.partial`."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:292
+#: library/asyncio-eventloop.rst:297
 msgid ""
 "An optional keyword-only *context* argument allows specifying a custom :"
 "class:`contextvars.Context` for the *callback* to run in. The current "
 "context is used when no *context* is provided."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:300
+#: library/asyncio-eventloop.rst:305
 msgid ""
 "In Python 3.7 and earlier with the default event loop implementation, the "
 "*delay* could not exceed one day. This has been fixed in Python 3.8."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:307
+#: library/asyncio-eventloop.rst:312
 msgid ""
 "Schedule *callback* to be called at the given absolute timestamp *when* (an "
 "int or a float), using the same time reference as :meth:`loop.time`."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:311
+#: library/asyncio-eventloop.rst:316
 msgid "This method's behavior is the same as :meth:`call_later`."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:320
+#: library/asyncio-eventloop.rst:325
 msgid ""
 "In Python 3.7 and earlier with the default event loop implementation, the "
 "difference between *when* and the current time could not exceed one day.  "
 "This has been fixed in Python 3.8."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:327
+#: library/asyncio-eventloop.rst:332
 msgid ""
 "Return the current time, as a :class:`float` value, according to the event "
 "loop's internal monotonic clock."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:331
+#: library/asyncio-eventloop.rst:336
 msgid ""
 "In Python 3.7 and earlier timeouts (relative *delay* or absolute *when*) "
 "should not exceed one day.  This has been fixed in Python 3.8."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:337
+#: library/asyncio-eventloop.rst:342
 msgid "The :func:`asyncio.sleep` function."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:341
+#: library/asyncio-eventloop.rst:346
 msgid "Creating Futures and Tasks"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:345
+#: library/asyncio-eventloop.rst:350
 msgid "Create an :class:`asyncio.Future` object attached to the event loop."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:347
+#: library/asyncio-eventloop.rst:352
 msgid ""
 "This is the preferred way to create Futures in asyncio. This lets third-"
 "party event loops provide alternative implementations of the Future object "
 "(with better performance or instrumentation)."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:355
+#: library/asyncio-eventloop.rst:360
 msgid ""
 "Schedule the execution of :ref:`coroutine <coroutine>` *coro*. Return a :"
 "class:`Task` object."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:358
+#: library/asyncio-eventloop.rst:363
 msgid ""
 "Third-party event loops can use their own subclass of :class:`Task` for "
 "interoperability. In this case, the result type is a subclass of :class:"
 "`Task`."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:362
+#: library/asyncio-eventloop.rst:367
 msgid ""
 "If the *name* argument is provided and not ``None``, it is set as the name "
 "of the task using :meth:`Task.set_name`."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:365
+#: library/asyncio-eventloop.rst:370
 msgid ""
 "An optional keyword-only *context* argument allows specifying a custom :"
 "class:`contextvars.Context` for the *coro* to run in. The current context "
 "copy is created when no *context* is provided."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:369
+#: library/asyncio-eventloop.rst:374
 msgid "Added the *name* parameter."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:372
+#: library/asyncio-eventloop.rst:377
 msgid "Added the *context* parameter."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:377
+#: library/asyncio-eventloop.rst:382
 msgid "Set a task factory that will be used by :meth:`loop.create_task`."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:380
+#: library/asyncio-eventloop.rst:385
 msgid ""
 "If *factory* is ``None`` the default task factory will be set. Otherwise, "
 "*factory* must be a *callable* with the signature matching ``(loop, coro, "
@@ -519,80 +526,80 @@ msgid ""
 "Future`-compatible object."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:388
+#: library/asyncio-eventloop.rst:393
 msgid "Return a task factory or ``None`` if the default one is in use."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:392
+#: library/asyncio-eventloop.rst:397
 msgid "Opening network connections"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:403
+#: library/asyncio-eventloop.rst:409
 msgid ""
 "Open a streaming transport connection to a given address specified by *host* "
 "and *port*."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:406
+#: library/asyncio-eventloop.rst:412
 msgid ""
 "The socket family can be either :py:const:`~socket.AF_INET` or :py:const:"
 "`~socket.AF_INET6` depending on *host* (or the *family* argument, if "
 "provided)."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:410
+#: library/asyncio-eventloop.rst:416
 msgid "The socket type will be :py:const:`~socket.SOCK_STREAM`."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:412 library/asyncio-eventloop.rst:1164
-#: library/asyncio-eventloop.rst:1180
+#: library/asyncio-eventloop.rst:418 library/asyncio-eventloop.rst:1195
+#: library/asyncio-eventloop.rst:1212
 msgid ""
 "*protocol_factory* must be a callable returning an :ref:`asyncio protocol "
 "<asyncio-protocol>` implementation."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:415
+#: library/asyncio-eventloop.rst:421
 msgid ""
 "This method will try to establish the connection in the background. When "
 "successful, it returns a ``(transport, protocol)`` pair."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:418
+#: library/asyncio-eventloop.rst:424
 msgid "The chronological synopsis of the underlying operation is as follows:"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:420
+#: library/asyncio-eventloop.rst:426
 msgid ""
 "The connection is established and a :ref:`transport <asyncio-transport>` is "
 "created for it."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:423
+#: library/asyncio-eventloop.rst:429
 msgid ""
 "*protocol_factory* is called without arguments and is expected to return a :"
 "ref:`protocol <asyncio-protocol>` instance."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:426
+#: library/asyncio-eventloop.rst:432
 msgid ""
 "The protocol instance is coupled with the transport by calling its :meth:"
 "`~BaseProtocol.connection_made` method."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:429
+#: library/asyncio-eventloop.rst:435
 msgid "A ``(transport, protocol)`` tuple is returned on success."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:431
+#: library/asyncio-eventloop.rst:437
 msgid ""
 "The created transport is an implementation-dependent bidirectional stream."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:434 library/asyncio-eventloop.rst:566
+#: library/asyncio-eventloop.rst:440 library/asyncio-eventloop.rst:573
 msgid "Other arguments:"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:436
+#: library/asyncio-eventloop.rst:442
 msgid ""
 "*ssl*: if given and not false, a SSL/TLS transport is created (by default a "
 "plain TCP transport is created).  If *ssl* is a :class:`ssl.SSLContext` "
@@ -601,11 +608,11 @@ msgid ""
 "is used."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:442
+#: library/asyncio-eventloop.rst:448
 msgid ":ref:`SSL/TLS security considerations <ssl-security>`"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:444
+#: library/asyncio-eventloop.rst:450
 msgid ""
 "*server_hostname* sets or overrides the hostname that the target server's "
 "certificate will be matched against.  Should only be passed if *ssl* is not "
@@ -616,7 +623,7 @@ msgid ""
 "potential man-in-the-middle attacks)."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:452
+#: library/asyncio-eventloop.rst:458
 msgid ""
 "*family*, *proto*, *flags* are the optional address family, protocol and "
 "flags to be passed through to getaddrinfo() for *host* resolution. If given, "
@@ -624,7 +631,7 @@ msgid ""
 "constants."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:457
+#: library/asyncio-eventloop.rst:463
 msgid ""
 "*happy_eyeballs_delay*, if given, enables Happy Eyeballs for this "
 "connection. It should be a floating-point number representing the amount of "
@@ -634,7 +641,7 @@ msgid ""
 "the RFC is ``0.25`` (250 milliseconds)."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:465
+#: library/asyncio-eventloop.rst:471
 msgid ""
 "*interleave* controls address reordering when a host name resolves to "
 "multiple IP addresses. If ``0`` or unspecified, no reordering is done, and "
@@ -645,7 +652,7 @@ msgid ""
 "*happy_eyeballs_delay* is not specified, and ``1`` if it is."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:474
+#: library/asyncio-eventloop.rst:480
 msgid ""
 "*sock*, if given, should be an existing, already connected :class:`socket."
 "socket` object to be used by the transport. If *sock* is given, none of "
@@ -653,37 +660,37 @@ msgid ""
 "*interleave* and *local_addr* should be specified."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:482 library/asyncio-eventloop.rst:597
-#: library/asyncio-eventloop.rst:825
+#: library/asyncio-eventloop.rst:488 library/asyncio-eventloop.rst:604
+#: library/asyncio-eventloop.rst:836
 msgid ""
 "The *sock* argument transfers ownership of the socket to the transport "
 "created. To close the socket, call the transport's :meth:`~asyncio."
 "BaseTransport.close` method."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:486
+#: library/asyncio-eventloop.rst:492
 msgid ""
 "*local_addr*, if given, is a ``(local_host, local_port)`` tuple used to bind "
 "the socket locally.  The *local_host* and *local_port* are looked up using "
 "``getaddrinfo()``, similarly to *host* and *port*."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:490 library/asyncio-eventloop.rst:919
+#: library/asyncio-eventloop.rst:496 library/asyncio-eventloop.rst:932
 msgid ""
 "*ssl_handshake_timeout* is (for a TLS connection) the time in seconds to "
 "wait for the TLS handshake to complete before aborting the connection. "
 "``60.0`` seconds if ``None`` (default)."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:494 library/asyncio-eventloop.rst:742
-#: library/asyncio-eventloop.rst:836 library/asyncio-eventloop.rst:923
+#: library/asyncio-eventloop.rst:500 library/asyncio-eventloop.rst:751
+#: library/asyncio-eventloop.rst:847 library/asyncio-eventloop.rst:936
 msgid ""
 "*ssl_shutdown_timeout* is the time in seconds to wait for the SSL shutdown "
 "to complete before aborting the connection. ``30.0`` seconds if ``None`` "
 "(default)."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:498
+#: library/asyncio-eventloop.rst:504
 msgid ""
 "*all_errors* determines what exceptions are raised when a connection cannot "
 "be created. By default, only a single ``Exception`` is raised: the first "
@@ -693,25 +700,25 @@ msgid ""
 "(even if there is only one)."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:508 library/asyncio-eventloop.rst:754
+#: library/asyncio-eventloop.rst:514 library/asyncio-eventloop.rst:763
 msgid "Added support for SSL/TLS in :class:`ProactorEventLoop`."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:512
+#: library/asyncio-eventloop.rst:518
 msgid ""
 "The socket option :ref:`socket.TCP_NODELAY <socket-unix-constants>` is set "
 "by default for all TCP connections."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:517 library/asyncio-eventloop.rst:846
+#: library/asyncio-eventloop.rst:523 library/asyncio-eventloop.rst:857
 msgid "Added the *ssl_handshake_timeout* parameter."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:521
+#: library/asyncio-eventloop.rst:527
 msgid "Added the *happy_eyeballs_delay* and *interleave* parameters."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:523
+#: library/asyncio-eventloop.rst:529
 msgid ""
 "Happy Eyeballs Algorithm: Success with Dual-Stack Hosts. When a server's "
 "IPv4 path and protocol are working, but the server's IPv6 path and protocol "
@@ -722,68 +729,68 @@ msgid ""
 "visible delay and provides an algorithm."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:532
+#: library/asyncio-eventloop.rst:538
 msgid "For more information: https://datatracker.ietf.org/doc/html/rfc6555"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:536 library/asyncio-eventloop.rst:660
-#: library/asyncio-eventloop.rst:768 library/asyncio-eventloop.rst:803
-#: library/asyncio-eventloop.rst:850 library/asyncio-eventloop.rst:931
+#: library/asyncio-eventloop.rst:542 library/asyncio-eventloop.rst:668
+#: library/asyncio-eventloop.rst:777 library/asyncio-eventloop.rst:813
+#: library/asyncio-eventloop.rst:861 library/asyncio-eventloop.rst:944
 msgid "Added the *ssl_shutdown_timeout* parameter."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:538
+#: library/asyncio-eventloop.rst:544
 msgid "*all_errors* was added."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:543
+#: library/asyncio-eventloop.rst:549
 msgid ""
 "The :func:`open_connection` function is a high-level alternative API.  It "
 "returns a pair of (:class:`StreamReader`, :class:`StreamWriter`) that can be "
 "used directly in async/await code."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:553
+#: library/asyncio-eventloop.rst:560
 msgid "Create a datagram connection."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:555
+#: library/asyncio-eventloop.rst:562
 msgid ""
 "The socket family can be either :py:const:`~socket.AF_INET`, :py:const:"
 "`~socket.AF_INET6`, or :py:const:`~socket.AF_UNIX`, depending on *host* (or "
 "the *family* argument, if provided)."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:559
+#: library/asyncio-eventloop.rst:566
 msgid "The socket type will be :py:const:`~socket.SOCK_DGRAM`."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:561 library/asyncio-eventloop.rst:685
-#: library/asyncio-eventloop.rst:817
+#: library/asyncio-eventloop.rst:568 library/asyncio-eventloop.rst:694
+#: library/asyncio-eventloop.rst:828
 msgid ""
 "*protocol_factory* must be a callable returning a :ref:`protocol <asyncio-"
 "protocol>` implementation."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:564 library/asyncio-eventloop.rst:642
+#: library/asyncio-eventloop.rst:571 library/asyncio-eventloop.rst:650
 msgid "A tuple of ``(transport, protocol)`` is returned on success."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:568
+#: library/asyncio-eventloop.rst:575
 msgid ""
 "*local_addr*, if given, is a ``(local_host, local_port)`` tuple used to bind "
 "the socket locally.  The *local_host* and *local_port* are looked up using :"
 "meth:`getaddrinfo`."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:572
+#: library/asyncio-eventloop.rst:579
 msgid ""
 "*remote_addr*, if given, is a ``(remote_host, remote_port)`` tuple used to "
 "connect the socket to a remote address.  The *remote_host* and *remote_port* "
 "are looked up using :meth:`getaddrinfo`."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:576
+#: library/asyncio-eventloop.rst:583
 msgid ""
 "*family*, *proto*, *flags* are the optional address family, protocol and "
 "flags to be passed through to :meth:`getaddrinfo` for *host* resolution. If "
@@ -791,7 +798,7 @@ msgid ""
 "module constants."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:581
+#: library/asyncio-eventloop.rst:588
 msgid ""
 "*reuse_port* tells the kernel to allow this endpoint to be bound to the same "
 "port as other existing endpoints are bound to, so long as they all set this "
@@ -800,13 +807,13 @@ msgid ""
 "is not defined then this capability is unsupported."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:587
+#: library/asyncio-eventloop.rst:594
 msgid ""
 "*allow_broadcast* tells the kernel to allow this endpoint to send messages "
 "to the broadcast address."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:590
+#: library/asyncio-eventloop.rst:597
 msgid ""
 "*sock* can optionally be specified in order to use a preexisting, already "
 "connected, :class:`socket.socket` object to be used by the transport. If "
@@ -814,37 +821,37 @@ msgid ""
 "`None`)."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:601
+#: library/asyncio-eventloop.rst:608
 msgid ""
 "See :ref:`UDP echo client protocol <asyncio-udp-echo-client-protocol>` and :"
 "ref:`UDP echo server protocol <asyncio-udp-echo-server-protocol>` examples."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:604
+#: library/asyncio-eventloop.rst:611
 msgid ""
 "The *family*, *proto*, *flags*, *reuse_address*, *reuse_port*, "
 "*allow_broadcast*, and *sock* parameters were added."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:608
+#: library/asyncio-eventloop.rst:615
 msgid "Added support for Windows."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:611
+#: library/asyncio-eventloop.rst:618
 msgid ""
 "The *reuse_address* parameter is no longer supported, as using :ref:`socket."
 "SO_REUSEADDR <socket-unix-constants>` poses a significant security concern "
 "for UDP. Explicitly passing ``reuse_address=True`` will raise an exception."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:617
+#: library/asyncio-eventloop.rst:624
 msgid ""
 "When multiple processes with differing UIDs assign sockets to an identical "
 "UDP socket address with ``SO_REUSEADDR``, incoming packets can become "
 "randomly distributed among the sockets."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:621
+#: library/asyncio-eventloop.rst:628
 msgid ""
 "For supported platforms, *reuse_port* can be used as a replacement for "
 "similar functionality. With *reuse_port*, :ref:`socket.SO_REUSEPORT <socket-"
@@ -852,91 +859,91 @@ msgid ""
 "differing UIDs from assigning sockets to the same socket address."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:628
+#: library/asyncio-eventloop.rst:635
 msgid ""
 "The *reuse_address* parameter, disabled since Python 3.8.1, 3.7.6 and "
 "3.6.10, has been entirely removed."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:637
+#: library/asyncio-eventloop.rst:645
 msgid "Create a Unix connection."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:639
+#: library/asyncio-eventloop.rst:647
 msgid ""
 "The socket family will be :py:const:`~socket.AF_UNIX`; socket type will be :"
 "py:const:`~socket.SOCK_STREAM`."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:644
+#: library/asyncio-eventloop.rst:652
 msgid ""
 "*path* is the name of a Unix domain socket and is required, unless a *sock* "
 "parameter is specified.  Abstract Unix sockets, :class:`str`, :class:"
 "`bytes`, and :class:`~pathlib.Path` paths are supported."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:649
+#: library/asyncio-eventloop.rst:657
 msgid ""
 "See the documentation of the :meth:`loop.create_connection` method for "
 "information about arguments to this method."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:652 library/asyncio-eventloop.rst:794
-#: library/asyncio-eventloop.rst:1233 library/asyncio-eventloop.rst:1741
-#: library/asyncio-eventloop.rst:1748
+#: library/asyncio-eventloop.rst:660 library/asyncio-eventloop.rst:804
+#: library/asyncio-eventloop.rst:1265 library/asyncio-eventloop.rst:1778
+#: library/asyncio-eventloop.rst:1785
 msgid "Availability"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:654
+#: library/asyncio-eventloop.rst:662
 msgid ""
 "Added the *ssl_handshake_timeout* parameter. The *path* parameter can now be "
 "a :term:`path-like object`."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:664
+#: library/asyncio-eventloop.rst:672
 msgid "Creating network servers"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:678
+#: library/asyncio-eventloop.rst:687
 msgid ""
 "Create a TCP server (socket type :const:`~socket.SOCK_STREAM`) listening on "
 "*port* of the *host* address."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:681
+#: library/asyncio-eventloop.rst:690
 msgid "Returns a :class:`Server` object."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:683
+#: library/asyncio-eventloop.rst:692
 msgid "Arguments:"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:688
+#: library/asyncio-eventloop.rst:697
 msgid ""
 "The *host* parameter can be set to several types which determine where the "
 "server would be listening:"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:691
+#: library/asyncio-eventloop.rst:700
 msgid ""
 "If *host* is a string, the TCP server is bound to a single network interface "
 "specified by *host*."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:694
+#: library/asyncio-eventloop.rst:703
 msgid ""
 "If *host* is a sequence of strings, the TCP server is bound to all network "
 "interfaces specified by the sequence."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:697
+#: library/asyncio-eventloop.rst:706
 msgid ""
 "If *host* is an empty string or ``None``, all interfaces are assumed and a "
 "list of multiple sockets will be returned (most likely one for IPv4 and "
 "another one for IPv6)."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:701
+#: library/asyncio-eventloop.rst:710
 msgid ""
 "The *port* parameter can be set to specify which port the server should "
 "listen on. If ``0`` or ``None`` (the default), a random unused port will be "
@@ -944,63 +951,63 @@ msgid ""
 "different random port will be selected for each interface)."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:706
+#: library/asyncio-eventloop.rst:715
 msgid ""
 "*family* can be set to either :const:`socket.AF_INET` or :const:`~socket."
 "AF_INET6` to force the socket to use IPv4 or IPv6. If not set, the *family* "
 "will be determined from host name (defaults to :const:`~socket.AF_UNSPEC`)."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:711
+#: library/asyncio-eventloop.rst:720
 msgid "*flags* is a bitmask for :meth:`getaddrinfo`."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:713
+#: library/asyncio-eventloop.rst:722
 msgid ""
 "*sock* can optionally be specified in order to use a preexisting socket "
 "object. If specified, *host* and *port* must not be specified."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:718
+#: library/asyncio-eventloop.rst:727
 msgid ""
 "The *sock* argument transfers ownership of the socket to the server created. "
 "To close the socket, call the server's :meth:`~asyncio.Server.close` method."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:722
+#: library/asyncio-eventloop.rst:731
 msgid ""
 "*backlog* is the maximum number of queued connections passed to :meth:"
 "`~socket.socket.listen` (defaults to 100)."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:725
+#: library/asyncio-eventloop.rst:734
 msgid ""
 "*ssl* can be set to an :class:`~ssl.SSLContext` instance to enable TLS over "
 "the accepted connections."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:728
+#: library/asyncio-eventloop.rst:737
 msgid ""
 "*reuse_address* tells the kernel to reuse a local socket in ``TIME_WAIT`` "
 "state, without waiting for its natural timeout to expire. If not specified "
 "will automatically be set to ``True`` on Unix."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:733
+#: library/asyncio-eventloop.rst:742
 msgid ""
 "*reuse_port* tells the kernel to allow this endpoint to be bound to the same "
 "port as other existing endpoints are bound to, so long as they all set this "
 "flag when being created. This option is not supported on Windows."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:738
+#: library/asyncio-eventloop.rst:747
 msgid ""
 "*ssl_handshake_timeout* is (for a TLS server) the time in seconds to wait "
 "for the TLS handshake to complete before aborting the connection. ``60.0`` "
 "seconds if ``None`` (default)."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:746
+#: library/asyncio-eventloop.rst:755
 msgid ""
 "*start_serving* set to ``True`` (the default) causes the created server to "
 "start accepting connections immediately.  When set to ``False``, the user "
@@ -1008,104 +1015,104 @@ msgid ""
 "to make the server to start accepting connections."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:758
+#: library/asyncio-eventloop.rst:767
 msgid "The *host* parameter can be a sequence of strings."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:762
+#: library/asyncio-eventloop.rst:771
 msgid ""
 "Added *ssl_handshake_timeout* and *start_serving* parameters. The socket "
 "option :ref:`socket.TCP_NODELAY <socket-unix-constants>` is set by default "
 "for all TCP connections."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:772
+#: library/asyncio-eventloop.rst:781
 msgid ""
 "The :func:`start_server` function is a higher-level alternative API that "
 "returns a pair of :class:`StreamReader` and :class:`StreamWriter` that can "
 "be used in an async/await code."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:783
+#: library/asyncio-eventloop.rst:793
 msgid ""
 "Similar to :meth:`loop.create_server` but works with the :py:const:`~socket."
 "AF_UNIX` socket family."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:786
+#: library/asyncio-eventloop.rst:796
 msgid ""
 "*path* is the name of a Unix domain socket, and is required, unless a *sock* "
 "argument is provided.  Abstract Unix sockets, :class:`str`, :class:`bytes`, "
 "and :class:`~pathlib.Path` paths are supported."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:791
+#: library/asyncio-eventloop.rst:801
 msgid ""
 "See the documentation of the :meth:`loop.create_server` method for "
 "information about arguments to this method."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:798
+#: library/asyncio-eventloop.rst:808
 msgid ""
 "Added the *ssl_handshake_timeout* and *start_serving* parameters. The *path* "
 "parameter can now be a :class:`~pathlib.Path` object."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:810
+#: library/asyncio-eventloop.rst:821
 msgid "Wrap an already accepted connection into a transport/protocol pair."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:812
+#: library/asyncio-eventloop.rst:823
 msgid ""
 "This method can be used by servers that accept connections outside of "
 "asyncio but that use asyncio to handle them."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:815 library/asyncio-eventloop.rst:905
+#: library/asyncio-eventloop.rst:826 library/asyncio-eventloop.rst:918
 msgid "Parameters:"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:820
+#: library/asyncio-eventloop.rst:831
 msgid ""
 "*sock* is a preexisting socket object returned from :meth:`socket.accept "
 "<socket.socket.accept>`."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:829
+#: library/asyncio-eventloop.rst:840
 msgid ""
 "*ssl* can be set to an :class:`~ssl.SSLContext` to enable SSL over the "
 "accepted connections."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:832
+#: library/asyncio-eventloop.rst:843
 msgid ""
 "*ssl_handshake_timeout* is (for an SSL connection) the time in seconds to "
 "wait for the SSL handshake to complete before aborting the connection. "
 "``60.0`` seconds if ``None`` (default)."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:840
+#: library/asyncio-eventloop.rst:851
 msgid "Returns a ``(transport, protocol)`` pair."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:854
+#: library/asyncio-eventloop.rst:865
 msgid "Transferring files"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:859
+#: library/asyncio-eventloop.rst:871
 msgid ""
 "Send a *file* over a *transport*.  Return the total number of bytes sent."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:862
+#: library/asyncio-eventloop.rst:874
 msgid "The method uses high-performance :meth:`os.sendfile` if available."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:864
+#: library/asyncio-eventloop.rst:876
 msgid "*file* must be a regular file object opened in binary mode."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:866 library/asyncio-eventloop.rst:1111
+#: library/asyncio-eventloop.rst:878 library/asyncio-eventloop.rst:1139
 msgid ""
 "*offset* tells from where to start reading the file. If specified, *count* "
 "is the total number of bytes to transmit as opposed to sending the file "
@@ -1114,35 +1121,35 @@ msgid ""
 "obtain the actual number of bytes sent."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:873
+#: library/asyncio-eventloop.rst:885
 msgid ""
 "*fallback* set to ``True`` makes asyncio to manually read and send the file "
 "when the platform does not support the sendfile system call (e.g. Windows or "
 "SSL socket on Unix)."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:877
+#: library/asyncio-eventloop.rst:889
 msgid ""
 "Raise :exc:`SendfileNotAvailableError` if the system does not support the "
 "*sendfile* syscall and *fallback* is ``False``."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:884
+#: library/asyncio-eventloop.rst:896
 msgid "TLS Upgrade"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:891
+#: library/asyncio-eventloop.rst:904
 msgid "Upgrade an existing transport-based connection to TLS."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:893
+#: library/asyncio-eventloop.rst:906
 msgid ""
 "Create a TLS coder/decoder instance and insert it between the *transport* "
 "and the *protocol*. The coder/decoder implements both *transport*-facing "
 "protocol and *protocol*-facing transport."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:897
+#: library/asyncio-eventloop.rst:910
 msgid ""
 "Return the created two-interface instance. After *await*, the *protocol* "
 "must stop using the original *transport* and communicate with the returned "
@@ -1150,79 +1157,85 @@ msgid ""
 "exchanges extra TLS session packets with *transport*."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:902
+#: library/asyncio-eventloop.rst:915
 msgid ""
 "In some situations (e.g. when the passed transport is already closing) this "
 "may return ``None``."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:907
+#: library/asyncio-eventloop.rst:920
 msgid ""
 "*transport* and *protocol* instances that methods like :meth:`~loop."
 "create_server` and :meth:`~loop.create_connection` return."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:911
+#: library/asyncio-eventloop.rst:924
 msgid "*sslcontext*: a configured instance of :class:`~ssl.SSLContext`."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:913
+#: library/asyncio-eventloop.rst:926
 msgid ""
 "*server_side* pass ``True`` when a server-side connection is being upgraded "
 "(like the one created by :meth:`~loop.create_server`)."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:916
+#: library/asyncio-eventloop.rst:929
 msgid ""
 "*server_hostname*: sets or overrides the host name that the target server's "
 "certificate will be matched against."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:936
+#: library/asyncio-eventloop.rst:949
 msgid "Watching file descriptors"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:940
+#: library/asyncio-eventloop.rst:953
 msgid ""
 "Start monitoring the *fd* file descriptor for read availability and invoke "
 "*callback* with the specified arguments once *fd* is available for reading."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:946
+#: library/asyncio-eventloop.rst:957 library/asyncio-eventloop.rst:971
+msgid ""
+"Any preexisting callback registered for *fd* is cancelled and replaced by "
+"*callback*."
+msgstr ""
+
+#: library/asyncio-eventloop.rst:962
 msgid ""
 "Stop monitoring the *fd* file descriptor for read availability. Returns "
 "``True`` if *fd* was previously being monitored for reads."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:951
+#: library/asyncio-eventloop.rst:967
 msgid ""
 "Start monitoring the *fd* file descriptor for write availability and invoke "
 "*callback* with the specified arguments once *fd* is available for writing."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:955 library/asyncio-eventloop.rst:1220
+#: library/asyncio-eventloop.rst:974 library/asyncio-eventloop.rst:1252
 msgid ""
 "Use :func:`functools.partial` :ref:`to pass keyword arguments <asyncio-pass-"
 "keywords>` to *callback*."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:960
+#: library/asyncio-eventloop.rst:979
 msgid ""
 "Stop monitoring the *fd* file descriptor for write availability. Returns "
 "``True`` if *fd* was previously being monitored for writes."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:963
+#: library/asyncio-eventloop.rst:982
 msgid ""
 "See also :ref:`Platform Support <asyncio-platform-support>` section for some "
 "limitations of these methods."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:968
+#: library/asyncio-eventloop.rst:987
 msgid "Working with socket objects directly"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:970
+#: library/asyncio-eventloop.rst:989
 msgid ""
 "In general, protocol implementations that use transport-based APIs such as :"
 "meth:`loop.create_connection` and :meth:`loop.create_server` are faster than "
@@ -1231,68 +1244,68 @@ msgid ""
 "socket` objects directly is more convenient."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:979
+#: library/asyncio-eventloop.rst:999
 msgid ""
 "Receive up to *nbytes* from *sock*.  Asynchronous version of :meth:`socket."
 "recv() <socket.socket.recv>`."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:982
+#: library/asyncio-eventloop.rst:1002
 msgid "Return the received data as a bytes object."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:984 library/asyncio-eventloop.rst:998
-#: library/asyncio-eventloop.rst:1009 library/asyncio-eventloop.rst:1021
-#: library/asyncio-eventloop.rst:1036 library/asyncio-eventloop.rst:1051
-#: library/asyncio-eventloop.rst:1061 library/asyncio-eventloop.rst:1087
-#: library/asyncio-eventloop.rst:1125
+#: library/asyncio-eventloop.rst:1004 library/asyncio-eventloop.rst:1019
+#: library/asyncio-eventloop.rst:1031 library/asyncio-eventloop.rst:1044
+#: library/asyncio-eventloop.rst:1060 library/asyncio-eventloop.rst:1076
+#: library/asyncio-eventloop.rst:1087 library/asyncio-eventloop.rst:1114
+#: library/asyncio-eventloop.rst:1153
 msgid "*sock* must be a non-blocking socket."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:986
+#: library/asyncio-eventloop.rst:1006
 msgid ""
 "Even though this method was always documented as a coroutine method, "
 "releases before Python 3.7 returned a :class:`Future`. Since Python 3.7 this "
 "is an ``async def`` method."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:993
+#: library/asyncio-eventloop.rst:1014
 msgid ""
 "Receive data from *sock* into the *buf* buffer.  Modeled after the blocking :"
 "meth:`socket.recv_into() <socket.socket.recv_into>` method."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:996
+#: library/asyncio-eventloop.rst:1017
 msgid "Return the number of bytes written to the buffer."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1004
+#: library/asyncio-eventloop.rst:1026
 msgid ""
 "Receive a datagram of up to *bufsize* from *sock*.  Asynchronous version of :"
 "meth:`socket.recvfrom() <socket.socket.recvfrom>`."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1007
+#: library/asyncio-eventloop.rst:1029
 msgid "Return a tuple of (received data, remote address)."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1015
+#: library/asyncio-eventloop.rst:1038
 msgid ""
 "Receive a datagram of up to *nbytes* from *sock* into *buf*. Asynchronous "
 "version of :meth:`socket.recvfrom_into() <socket.socket.recvfrom_into>`."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1019
+#: library/asyncio-eventloop.rst:1042
 msgid "Return a tuple of (number of bytes received, remote address)."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1027
+#: library/asyncio-eventloop.rst:1051
 msgid ""
 "Send *data* to the *sock* socket. Asynchronous version of :meth:`socket."
 "sendall() <socket.socket.sendall>`."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1030
+#: library/asyncio-eventloop.rst:1054
 msgid ""
 "This method continues to send to the socket until either all data in *data* "
 "has been sent or an error occurs.  ``None`` is returned on success.  On "
@@ -1301,33 +1314,33 @@ msgid ""
 "the connection."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1038 library/asyncio-eventloop.rst:1089
+#: library/asyncio-eventloop.rst:1062 library/asyncio-eventloop.rst:1116
 msgid ""
 "Even though the method was always documented as a coroutine method, before "
 "Python 3.7 it returned a :class:`Future`. Since Python 3.7, this is an "
 "``async def`` method."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1045
+#: library/asyncio-eventloop.rst:1070
 msgid ""
 "Send a datagram from *sock* to *address*. Asynchronous version of :meth:"
 "`socket.sendto() <socket.socket.sendto>`."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1049
+#: library/asyncio-eventloop.rst:1074
 msgid "Return the number of bytes sent."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1057
+#: library/asyncio-eventloop.rst:1083
 msgid "Connect *sock* to a remote socket at *address*."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1059
+#: library/asyncio-eventloop.rst:1085
 msgid ""
 "Asynchronous version of :meth:`socket.connect() <socket.socket.connect>`."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1063
+#: library/asyncio-eventloop.rst:1089
 msgid ""
 "``address`` no longer needs to be resolved.  ``sock_connect`` will try to "
 "check if the *address* is already resolved by calling :func:`socket."
@@ -1335,19 +1348,19 @@ msgid ""
 "*address*."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1072
+#: library/asyncio-eventloop.rst:1098
 msgid ""
 ":meth:`loop.create_connection` and  :func:`asyncio.open_connection() "
 "<open_connection>`."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1078
+#: library/asyncio-eventloop.rst:1105
 msgid ""
 "Accept a connection.  Modeled after the blocking :meth:`socket.accept() "
 "<socket.socket.accept>` method."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1081
+#: library/asyncio-eventloop.rst:1108
 msgid ""
 "The socket must be bound to an address and listening for connections. The "
 "return value is a pair ``(conn, address)`` where *conn* is a *new* socket "
@@ -1355,57 +1368,57 @@ msgid ""
 "the address bound to the socket on the other end of the connection."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1096
+#: library/asyncio-eventloop.rst:1123
 msgid ":meth:`loop.create_server` and :func:`start_server`."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1101
+#: library/asyncio-eventloop.rst:1129
 msgid ""
 "Send a file using high-performance :mod:`os.sendfile` if possible. Return "
 "the total number of bytes sent."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1104
+#: library/asyncio-eventloop.rst:1132
 msgid ""
 "Asynchronous version of :meth:`socket.sendfile() <socket.socket.sendfile>`."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1106
+#: library/asyncio-eventloop.rst:1134
 msgid ""
 "*sock* must be a non-blocking :const:`socket.SOCK_STREAM` :class:`~socket."
 "socket`."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1109
+#: library/asyncio-eventloop.rst:1137
 msgid "*file* must be a regular file object open in binary mode."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1118
+#: library/asyncio-eventloop.rst:1146
 msgid ""
 "*fallback*, when set to ``True``, makes asyncio manually read and send the "
 "file when the platform does not support the sendfile syscall (e.g. Windows "
 "or SSL socket on Unix)."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1122
+#: library/asyncio-eventloop.rst:1150
 msgid ""
 "Raise :exc:`SendfileNotAvailableError` if the system does not support "
 "*sendfile* syscall and *fallback* is ``False``."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1131
+#: library/asyncio-eventloop.rst:1159
 msgid "DNS"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1136
+#: library/asyncio-eventloop.rst:1165
 msgid "Asynchronous version of :meth:`socket.getaddrinfo`."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1140
+#: library/asyncio-eventloop.rst:1170
 msgid "Asynchronous version of :meth:`socket.getnameinfo`."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1143
+#: library/asyncio-eventloop.rst:1173
 msgid ""
 "Both *getaddrinfo* and *getnameinfo* internally utilize their synchronous "
 "versions through the loop's default thread pool executor. When this executor "
@@ -1415,7 +1428,7 @@ msgid ""
 "executor with a larger number of workers."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1150
+#: library/asyncio-eventloop.rst:1180
 msgid ""
 "Both *getaddrinfo* and *getnameinfo* methods were always documented to "
 "return a coroutine, but prior to Python 3.7 they were, in fact, returning :"
@@ -1423,66 +1436,66 @@ msgid ""
 "coroutines."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1158
+#: library/asyncio-eventloop.rst:1188
 msgid "Working with pipes"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1162
+#: library/asyncio-eventloop.rst:1193
 msgid "Register the read end of *pipe* in the event loop."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1167
+#: library/asyncio-eventloop.rst:1198
 msgid "*pipe* is a :term:`file-like object <file object>`."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1169
+#: library/asyncio-eventloop.rst:1200
 msgid ""
 "Return pair ``(transport, protocol)``, where *transport* supports the :class:"
 "`ReadTransport` interface and *protocol* is an object instantiated by the "
 "*protocol_factory*."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1173 library/asyncio-eventloop.rst:1189
+#: library/asyncio-eventloop.rst:1204 library/asyncio-eventloop.rst:1221
 msgid ""
 "With :class:`SelectorEventLoop` event loop, the *pipe* is set to non-"
 "blocking mode."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1178
+#: library/asyncio-eventloop.rst:1210
 msgid "Register the write end of *pipe* in the event loop."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1183
+#: library/asyncio-eventloop.rst:1215
 msgid "*pipe* is :term:`file-like object <file object>`."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1185
+#: library/asyncio-eventloop.rst:1217
 msgid ""
 "Return pair ``(transport, protocol)``, where *transport* supports :class:"
 "`WriteTransport` interface and *protocol* is an object instantiated by the "
 "*protocol_factory*."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1194
+#: library/asyncio-eventloop.rst:1226
 msgid ""
 ":class:`SelectorEventLoop` does not support the above methods on Windows.  "
 "Use :class:`ProactorEventLoop` instead for Windows."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1199
+#: library/asyncio-eventloop.rst:1231
 msgid ""
 "The :meth:`loop.subprocess_exec` and :meth:`loop.subprocess_shell` methods."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1204
+#: library/asyncio-eventloop.rst:1236
 msgid "Unix signals"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1210
+#: library/asyncio-eventloop.rst:1242
 msgid "Set *callback* as the handler for the *signum* signal."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1212
+#: library/asyncio-eventloop.rst:1244
 msgid ""
 "The callback will be invoked by *loop*, along with other queued callbacks "
 "and runnable coroutines of that event loop. Unlike signal handlers "
@@ -1490,40 +1503,40 @@ msgid ""
 "function is allowed to interact with the event loop."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1217
+#: library/asyncio-eventloop.rst:1249
 msgid ""
 "Raise :exc:`ValueError` if the signal number is invalid or uncatchable. "
 "Raise :exc:`RuntimeError` if there is a problem setting up the handler."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1223
+#: library/asyncio-eventloop.rst:1255
 msgid ""
 "Like :func:`signal.signal`, this function must be invoked in the main thread."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1228
+#: library/asyncio-eventloop.rst:1260
 msgid "Remove the handler for the *sig* signal."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1230
+#: library/asyncio-eventloop.rst:1262
 msgid ""
 "Return ``True`` if the signal handler was removed, or ``False`` if no "
 "handler was set for the given signal."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1237
+#: library/asyncio-eventloop.rst:1269
 msgid "The :mod:`signal` module."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1241
+#: library/asyncio-eventloop.rst:1273
 msgid "Executing code in thread or process pools"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1245
+#: library/asyncio-eventloop.rst:1277
 msgid "Arrange for *func* to be called in the specified executor."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1247
+#: library/asyncio-eventloop.rst:1279
 msgid ""
 "The *executor* argument should be an :class:`concurrent.futures.Executor` "
 "instance. The default executor is used if *executor* is ``None``. The "
@@ -1532,7 +1545,7 @@ msgid ""
 "and used by :func:`run_in_executor` if needed."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1255
+#: library/asyncio-eventloop.rst:1287
 msgid ""
 "import asyncio\n"
 "import concurrent.futures\n"
@@ -1575,7 +1588,7 @@ msgid ""
 "    asyncio.run(main())"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1295
+#: library/asyncio-eventloop.rst:1327
 msgid ""
 "Note that the entry point guard (``if __name__ == '__main__'``) is required "
 "for option 3 due to the peculiarities of :mod:`multiprocessing`, which is "
@@ -1583,17 +1596,17 @@ msgid ""
 "importing of main module <multiprocessing-safe-main-import>`."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1300
+#: library/asyncio-eventloop.rst:1332
 msgid "This method returns a :class:`asyncio.Future` object."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1302
+#: library/asyncio-eventloop.rst:1334
 msgid ""
 "Use :func:`functools.partial` :ref:`to pass keyword arguments <asyncio-pass-"
 "keywords>` to *func*."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1305
+#: library/asyncio-eventloop.rst:1337
 msgid ""
 ":meth:`loop.run_in_executor` no longer configures the ``max_workers`` of the "
 "thread pool executor it creates, instead leaving it up to the thread pool "
@@ -1601,32 +1614,32 @@ msgid ""
 "default."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1314
+#: library/asyncio-eventloop.rst:1346
 msgid ""
 "Set *executor* as the default executor used by :meth:`run_in_executor`. "
 "*executor* must be an instance of :class:`~concurrent.futures."
 "ThreadPoolExecutor`."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1318
+#: library/asyncio-eventloop.rst:1350
 msgid ""
 "*executor* must be an instance of :class:`~concurrent.futures."
 "ThreadPoolExecutor`."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1324
+#: library/asyncio-eventloop.rst:1356
 msgid "Error Handling API"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1326
+#: library/asyncio-eventloop.rst:1358
 msgid "Allows customizing how exceptions are handled in the event loop."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1330
+#: library/asyncio-eventloop.rst:1362
 msgid "Set *handler* as the new event loop exception handler."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1332
+#: library/asyncio-eventloop.rst:1364
 msgid ""
 "If *handler* is ``None``, the default exception handler will be set.  "
 "Otherwise, *handler* must be a callable with the signature matching ``(loop, "
@@ -1635,182 +1648,182 @@ msgid ""
 "(see :meth:`call_exception_handler` documentation for details about context)."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1340
+#: library/asyncio-eventloop.rst:1372
 msgid ""
 "If the handler is called on behalf of a :class:`~asyncio.Task` or :class:"
 "`~asyncio.Handle`, it is run in the :class:`contextvars.Context` of that "
 "task or callback handle."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1346
+#: library/asyncio-eventloop.rst:1378
 msgid ""
 "The handler may be called in the :class:`~contextvars.Context` of the task "
 "or handle where the exception originated."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1351
+#: library/asyncio-eventloop.rst:1383
 msgid ""
 "Return the current exception handler, or ``None`` if no custom exception "
 "handler was set."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1358
+#: library/asyncio-eventloop.rst:1390
 msgid "Default exception handler."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1360
+#: library/asyncio-eventloop.rst:1392
 msgid ""
 "This is called when an exception occurs and no exception handler is set. "
 "This can be called by a custom exception handler that wants to defer to the "
 "default handler behavior."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1364
+#: library/asyncio-eventloop.rst:1396
 msgid ""
 "*context* parameter has the same meaning as in :meth:"
 "`call_exception_handler`."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1369
+#: library/asyncio-eventloop.rst:1401
 msgid "Call the current event loop exception handler."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1371
+#: library/asyncio-eventloop.rst:1403
 msgid ""
 "*context* is a ``dict`` object containing the following keys (new keys may "
 "be introduced in future Python versions):"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1374
+#: library/asyncio-eventloop.rst:1406
 msgid "'message': Error message;"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1375
+#: library/asyncio-eventloop.rst:1407
 msgid "'exception' (optional): Exception object;"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1376
+#: library/asyncio-eventloop.rst:1408
 msgid "'future' (optional): :class:`asyncio.Future` instance;"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1377
+#: library/asyncio-eventloop.rst:1409
 msgid "'task' (optional): :class:`asyncio.Task` instance;"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1378
+#: library/asyncio-eventloop.rst:1410
 msgid "'handle' (optional): :class:`asyncio.Handle` instance;"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1379
+#: library/asyncio-eventloop.rst:1411
 msgid "'protocol' (optional): :ref:`Protocol <asyncio-protocol>` instance;"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1380
+#: library/asyncio-eventloop.rst:1412
 msgid "'transport' (optional): :ref:`Transport <asyncio-transport>` instance;"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1381
+#: library/asyncio-eventloop.rst:1413
 msgid "'socket' (optional): :class:`socket.socket` instance;"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1382
+#: library/asyncio-eventloop.rst:1414
 msgid "'asyncgen' (optional): Asynchronous generator that caused"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1383
+#: library/asyncio-eventloop.rst:1415
 msgid "the exception."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1387
+#: library/asyncio-eventloop.rst:1419
 msgid ""
 "This method should not be overloaded in subclassed event loops.  For custom "
 "exception handling, use the :meth:`set_exception_handler` method."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1392
+#: library/asyncio-eventloop.rst:1424
 msgid "Enabling debug mode"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1396
+#: library/asyncio-eventloop.rst:1428
 msgid "Get the debug mode (:class:`bool`) of the event loop."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1398
+#: library/asyncio-eventloop.rst:1430
 msgid ""
 "The default value is ``True`` if the environment variable :envvar:"
 "`PYTHONASYNCIODEBUG` is set to a non-empty string, ``False`` otherwise."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1404
+#: library/asyncio-eventloop.rst:1436
 msgid "Set the debug mode of the event loop."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1408
+#: library/asyncio-eventloop.rst:1440
 msgid ""
 "The new :ref:`Python Development Mode <devmode>` can now also be used to "
 "enable the debug mode."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1413
+#: library/asyncio-eventloop.rst:1445
 msgid ""
 "This attribute can be used to set the minimum execution duration in seconds "
 "that is considered \"slow\". When debug mode is enabled, \"slow\" callbacks "
 "are logged."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1417
+#: library/asyncio-eventloop.rst:1449
 msgid "Default value is 100 milliseconds."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1421
+#: library/asyncio-eventloop.rst:1453
 msgid "The :ref:`debug mode of asyncio <asyncio-debug-mode>`."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1425
+#: library/asyncio-eventloop.rst:1457
 msgid "Running Subprocesses"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1427
+#: library/asyncio-eventloop.rst:1459
 msgid ""
 "Methods described in this subsections are low-level.  In regular async/await "
 "code consider using the high-level :func:`asyncio.create_subprocess_shell` "
 "and :func:`asyncio.create_subprocess_exec` convenience functions instead."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1434
+#: library/asyncio-eventloop.rst:1466
 msgid ""
 "On Windows, the default event loop :class:`ProactorEventLoop` supports "
 "subprocesses, whereas :class:`SelectorEventLoop` does not. See :ref:"
 "`Subprocess Support on Windows <asyncio-windows-subprocess>` for details."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1445
+#: library/asyncio-eventloop.rst:1478
 msgid ""
 "Create a subprocess from one or more string arguments specified by *args*."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1448
+#: library/asyncio-eventloop.rst:1481
 msgid "*args* must be a list of strings represented by:"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1450
+#: library/asyncio-eventloop.rst:1483
 msgid ":class:`str`;"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1451
+#: library/asyncio-eventloop.rst:1484
 msgid ""
 "or :class:`bytes`, encoded to the :ref:`filesystem encoding <filesystem-"
 "encoding>`."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1454
+#: library/asyncio-eventloop.rst:1487
 msgid ""
 "The first string specifies the program executable, and the remaining strings "
 "specify the arguments.  Together, string arguments form the ``argv`` of the "
 "program."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1458
+#: library/asyncio-eventloop.rst:1491
 msgid ""
 "This is similar to the standard library :class:`subprocess.Popen` class "
 "called with ``shell=False`` and the list of strings passed as the first "
@@ -1818,81 +1831,81 @@ msgid ""
 "which is list of strings, *subprocess_exec* takes multiple string arguments."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1464
+#: library/asyncio-eventloop.rst:1497
 msgid ""
 "The *protocol_factory* must be a callable returning a subclass of the :class:"
 "`asyncio.SubprocessProtocol` class."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1467
+#: library/asyncio-eventloop.rst:1500
 msgid "Other parameters:"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1469
+#: library/asyncio-eventloop.rst:1502
 msgid "*stdin* can be any of these:"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1471 library/asyncio-eventloop.rst:1482
-#: library/asyncio-eventloop.rst:1492
+#: library/asyncio-eventloop.rst:1504 library/asyncio-eventloop.rst:1515
+#: library/asyncio-eventloop.rst:1525
 msgid "a file-like object"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1472
+#: library/asyncio-eventloop.rst:1505
 msgid ""
 "an existing file descriptor (a positive integer), for example those created "
 "with :meth:`os.pipe`"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1473 library/asyncio-eventloop.rst:1483
-#: library/asyncio-eventloop.rst:1493
+#: library/asyncio-eventloop.rst:1506 library/asyncio-eventloop.rst:1516
+#: library/asyncio-eventloop.rst:1526
 msgid ""
 "the :const:`subprocess.PIPE` constant (default) which will create a new pipe "
 "and connect it,"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1475 library/asyncio-eventloop.rst:1485
-#: library/asyncio-eventloop.rst:1495
+#: library/asyncio-eventloop.rst:1508 library/asyncio-eventloop.rst:1518
+#: library/asyncio-eventloop.rst:1528
 msgid ""
 "the value ``None`` which will make the subprocess inherit the file "
 "descriptor from this process"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1477 library/asyncio-eventloop.rst:1487
-#: library/asyncio-eventloop.rst:1497
+#: library/asyncio-eventloop.rst:1510 library/asyncio-eventloop.rst:1520
+#: library/asyncio-eventloop.rst:1530
 msgid ""
 "the :const:`subprocess.DEVNULL` constant which indicates that the special :"
 "data:`os.devnull` file will be used"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1480
+#: library/asyncio-eventloop.rst:1513
 msgid "*stdout* can be any of these:"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1490
+#: library/asyncio-eventloop.rst:1523
 msgid "*stderr* can be any of these:"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1499
+#: library/asyncio-eventloop.rst:1532
 msgid ""
 "the :const:`subprocess.STDOUT` constant which will connect the standard "
 "error stream to the process' standard output stream"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1502
+#: library/asyncio-eventloop.rst:1535
 msgid ""
 "All other keyword arguments are passed to :class:`subprocess.Popen` without "
 "interpretation, except for *bufsize*, *universal_newlines*, *shell*, *text*, "
 "*encoding* and *errors*, which should not be specified at all."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1507
+#: library/asyncio-eventloop.rst:1540
 msgid ""
 "The ``asyncio`` subprocess API does not support decoding the streams as "
 "text. :func:`bytes.decode` can be used to convert the bytes returned from "
 "the stream to text."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1511
+#: library/asyncio-eventloop.rst:1544
 msgid ""
 "If a file-like object passed as *stdin*, *stdout* or *stderr* represents a "
 "pipe, then the other side of this pipe should be registered with :meth:"
@@ -1900,52 +1913,52 @@ msgid ""
 "the event loop."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1516
+#: library/asyncio-eventloop.rst:1549
 msgid ""
 "See the constructor of the :class:`subprocess.Popen` class for documentation "
 "on other arguments."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1519
+#: library/asyncio-eventloop.rst:1552
 msgid ""
 "Returns a pair of ``(transport, protocol)``, where *transport* conforms to "
 "the :class:`asyncio.SubprocessTransport` base class and *protocol* is an "
 "object instantiated by the *protocol_factory*."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1527
+#: library/asyncio-eventloop.rst:1561
 msgid ""
 "Create a subprocess from *cmd*, which can be a :class:`str` or a :class:"
 "`bytes` string encoded to the :ref:`filesystem encoding <filesystem-"
 "encoding>`, using the platform's \"shell\" syntax."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1532
+#: library/asyncio-eventloop.rst:1566
 msgid ""
 "This is similar to the standard library :class:`subprocess.Popen` class "
 "called with ``shell=True``."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1535
+#: library/asyncio-eventloop.rst:1569
 msgid ""
 "The *protocol_factory* must be a callable returning a subclass of the :class:"
 "`SubprocessProtocol` class."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1538
+#: library/asyncio-eventloop.rst:1572
 msgid ""
 "See :meth:`~loop.subprocess_exec` for more details about the remaining "
 "arguments."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1541
+#: library/asyncio-eventloop.rst:1575
 msgid ""
 "Returns a pair of ``(transport, protocol)``, where *transport* conforms to "
 "the :class:`SubprocessTransport` base class and *protocol* is an object "
 "instantiated by the *protocol_factory*."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1546
+#: library/asyncio-eventloop.rst:1580
 msgid ""
 "It is the application's responsibility to ensure that all whitespace and "
 "special characters are quoted appropriately to avoid `shell injection "
@@ -1955,74 +1968,74 @@ msgid ""
 "used to construct shell commands."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1555
+#: library/asyncio-eventloop.rst:1589
 msgid "Callback Handles"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1559
+#: library/asyncio-eventloop.rst:1593
 msgid ""
 "A callback wrapper object returned by :meth:`loop.call_soon`, :meth:`loop."
 "call_soon_threadsafe`."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1564
+#: library/asyncio-eventloop.rst:1598
 msgid ""
 "Return the :class:`contextvars.Context` object associated with the handle."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1571
+#: library/asyncio-eventloop.rst:1605
 msgid ""
 "Cancel the callback.  If the callback has already been canceled or executed, "
 "this method has no effect."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1576
+#: library/asyncio-eventloop.rst:1610
 msgid "Return ``True`` if the callback was cancelled."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1582
+#: library/asyncio-eventloop.rst:1616
 msgid ""
 "A callback wrapper object returned by :meth:`loop.call_later`, and :meth:"
 "`loop.call_at`."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1585
+#: library/asyncio-eventloop.rst:1619
 msgid "This class is a subclass of :class:`Handle`."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1589
+#: library/asyncio-eventloop.rst:1623
 msgid "Return a scheduled callback time as :class:`float` seconds."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1591
+#: library/asyncio-eventloop.rst:1625
 msgid ""
 "The time is an absolute timestamp, using the same time reference as :meth:"
 "`loop.time`."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1598
+#: library/asyncio-eventloop.rst:1632
 msgid "Server Objects"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1600
+#: library/asyncio-eventloop.rst:1634
 msgid ""
 "Server objects are created by :meth:`loop.create_server`, :meth:`loop."
 "create_unix_server`, :func:`start_server`, and :func:`start_unix_server` "
 "functions."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1604
+#: library/asyncio-eventloop.rst:1638
 msgid "Do not instantiate the :class:`Server` class directly."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1608
+#: library/asyncio-eventloop.rst:1642
 msgid ""
 "*Server* objects are asynchronous context managers.  When used in an ``async "
 "with`` statement, it's guaranteed that the Server object is closed and not "
 "accepting new connections when the ``async with`` statement is completed::"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1613
+#: library/asyncio-eventloop.rst:1647
 msgid ""
 "srv = await loop.create_server(...)\n"
 "\n"
@@ -2032,49 +2045,49 @@ msgid ""
 "# At this point, srv is closed and no longer accepts new connections."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1621
+#: library/asyncio-eventloop.rst:1655
 msgid "Server object is an asynchronous context manager since Python 3.7."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1624
+#: library/asyncio-eventloop.rst:1658
 msgid ""
 "This class was exposed publicly as ``asyncio.Server`` in Python 3.9.11, "
 "3.10.3 and 3.11."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1629
+#: library/asyncio-eventloop.rst:1663
 msgid ""
 "Stop serving: close listening sockets and set the :attr:`sockets` attribute "
 "to ``None``."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1632
+#: library/asyncio-eventloop.rst:1666
 msgid ""
 "The sockets that represent existing incoming client connections are left "
 "open."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1635
+#: library/asyncio-eventloop.rst:1669
 msgid ""
 "The server is closed asynchronously; use the :meth:`wait_closed` coroutine "
 "to wait until the server is closed (and no more connections are active)."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1641
+#: library/asyncio-eventloop.rst:1675
 msgid "Return the event loop associated with the server object."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1647
+#: library/asyncio-eventloop.rst:1682
 msgid "Start accepting connections."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1649
+#: library/asyncio-eventloop.rst:1684
 msgid ""
 "This method is idempotent, so it can be called when the server is already "
 "serving."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1652
+#: library/asyncio-eventloop.rst:1687
 msgid ""
 "The *start_serving* keyword-only parameter to :meth:`loop.create_server` "
 "and :meth:`asyncio.start_server` allows creating a Server object that is not "
@@ -2083,19 +2096,19 @@ msgid ""
 "accepting connections."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1663
+#: library/asyncio-eventloop.rst:1699
 msgid ""
 "Start accepting connections until the coroutine is cancelled. Cancellation "
 "of ``serve_forever`` task causes the server to be closed."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1667
+#: library/asyncio-eventloop.rst:1703
 msgid ""
 "This method can be called if the server is already accepting connections.  "
 "Only one ``serve_forever`` task can exist per one *Server* object."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1673
+#: library/asyncio-eventloop.rst:1709
 msgid ""
 "async def client_connected(reader, writer):\n"
 "    # Communicate with the client with\n"
@@ -2110,56 +2123,56 @@ msgid ""
 "asyncio.run(main('127.0.0.1', 0))"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1689
+#: library/asyncio-eventloop.rst:1725
 msgid "Return ``True`` if the server is accepting new connections."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1695
+#: library/asyncio-eventloop.rst:1732
 msgid ""
 "Wait until the :meth:`close` method completes and all active connections "
 "have finished."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1700
+#: library/asyncio-eventloop.rst:1737
 msgid ""
 "List of socket-like objects, ``asyncio.trsock.TransportSocket``, which the "
 "server is listening on."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1703
+#: library/asyncio-eventloop.rst:1740
 msgid ""
 "Prior to Python 3.7 ``Server.sockets`` used to return an internal list of "
 "server sockets directly.  In 3.7 a copy of that list is returned."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1713
+#: library/asyncio-eventloop.rst:1750
 msgid "Event Loop Implementations"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1715
+#: library/asyncio-eventloop.rst:1752
 msgid ""
 "asyncio ships with two different event loop implementations: :class:"
 "`SelectorEventLoop` and :class:`ProactorEventLoop`."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1718
+#: library/asyncio-eventloop.rst:1755
 msgid ""
 "By default asyncio is configured to use :class:`SelectorEventLoop` on Unix "
 "and :class:`ProactorEventLoop` on Windows."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1724
+#: library/asyncio-eventloop.rst:1761
 msgid "An event loop based on the :mod:`selectors` module."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1726
+#: library/asyncio-eventloop.rst:1763
 msgid ""
 "Uses the most efficient *selector* available for the given platform.  It is "
 "also possible to manually configure the exact selector implementation to be "
 "used::"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1730
+#: library/asyncio-eventloop.rst:1767
 msgid ""
 "import asyncio\n"
 "import selectors\n"
@@ -2172,31 +2185,31 @@ msgid ""
 "asyncio.set_event_loop_policy(MyPolicy())"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1746
+#: library/asyncio-eventloop.rst:1783
 msgid "An event loop for Windows that uses \"I/O Completion Ports\" (IOCP)."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1752
+#: library/asyncio-eventloop.rst:1789
 msgid ""
-"`MSDN documentation on I/O Completion Ports <https://docs.microsoft.com/en-"
-"ca/windows/desktop/FileIO/i-o-completion-ports>`_."
+"`MSDN documentation on I/O Completion Ports <https://learn.microsoft.com/"
+"windows/win32/fileio/i-o-completion-ports>`_."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1758
+#: library/asyncio-eventloop.rst:1795
 msgid "Abstract base class for asyncio-compliant event loops."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1760
+#: library/asyncio-eventloop.rst:1797
 msgid ""
 "The :ref:`asyncio-event-loop-methods` section lists all methods that an "
 "alternative implementation of ``AbstractEventLoop`` should have defined."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1766
+#: library/asyncio-eventloop.rst:1803
 msgid "Examples"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1768
+#: library/asyncio-eventloop.rst:1805
 msgid ""
 "Note that all examples in this section **purposefully** show how to use the "
 "low-level event loop APIs, such as :meth:`loop.run_forever` and :meth:`loop."
@@ -2204,17 +2217,17 @@ msgid ""
 "consider using the high-level functions like :func:`asyncio.run`."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1778
+#: library/asyncio-eventloop.rst:1815
 msgid "Hello World with call_soon()"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1780
+#: library/asyncio-eventloop.rst:1817
 msgid ""
 "An example using the :meth:`loop.call_soon` method to schedule a callback. "
 "The callback displays ``\"Hello World\"`` and then stops the event loop::"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1784
+#: library/asyncio-eventloop.rst:1821
 msgid ""
 "import asyncio\n"
 "\n"
@@ -2235,24 +2248,24 @@ msgid ""
 "    loop.close()"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1804
+#: library/asyncio-eventloop.rst:1841
 msgid ""
 "A similar :ref:`Hello World <coroutine>` example created with a coroutine "
 "and the :func:`run` function."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1811
+#: library/asyncio-eventloop.rst:1848
 msgid "Display the current date with call_later()"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1813
+#: library/asyncio-eventloop.rst:1850
 msgid ""
 "An example of a callback displaying the current date every second. The "
 "callback uses the :meth:`loop.call_later` method to reschedule itself after "
 "5 seconds, and then stops the event loop::"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1817
+#: library/asyncio-eventloop.rst:1854
 msgid ""
 "import asyncio\n"
 "import datetime\n"
@@ -2277,23 +2290,23 @@ msgid ""
 "    loop.close()"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1841
+#: library/asyncio-eventloop.rst:1878
 msgid ""
 "A similar :ref:`current date <asyncio_example_sleep>` example created with a "
 "coroutine and the :func:`run` function."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1848
+#: library/asyncio-eventloop.rst:1885
 msgid "Watch a file descriptor for read events"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1850
+#: library/asyncio-eventloop.rst:1887
 msgid ""
 "Wait until a file descriptor received some data using the :meth:`loop."
 "add_reader` method and then close the event loop::"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1853
+#: library/asyncio-eventloop.rst:1890
 msgid ""
 "import asyncio\n"
 "from socket import socketpair\n"
@@ -2329,33 +2342,33 @@ msgid ""
 "    loop.close()"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1888
+#: library/asyncio-eventloop.rst:1925
 msgid ""
 "A similar :ref:`example <asyncio_example_create_connection>` using "
 "transports, protocols, and the :meth:`loop.create_connection` method."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1892
+#: library/asyncio-eventloop.rst:1929
 msgid ""
 "Another similar :ref:`example <asyncio_example_create_connection-streams>` "
 "using the high-level :func:`asyncio.open_connection` function and streams."
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1900
+#: library/asyncio-eventloop.rst:1937
 msgid "Set signal handlers for SIGINT and SIGTERM"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1902
+#: library/asyncio-eventloop.rst:1939
 msgid "(This ``signals`` example only works on Unix.)"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1904
+#: library/asyncio-eventloop.rst:1941
 msgid ""
 "Register handlers for signals :const:`~signal.SIGINT` and :const:`~signal."
 "SIGTERM` using the :meth:`loop.add_signal_handler` method::"
 msgstr ""
 
-#: library/asyncio-eventloop.rst:1907
+#: library/asyncio-eventloop.rst:1944
 msgid ""
 "import asyncio\n"
 "import functools\n"
diff --git a/library/asyncio-queue.po b/library/asyncio-queue.po
index ec790f8d4..c9b7e9258 100644
--- a/library/asyncio-queue.po
+++ b/library/asyncio-queue.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -88,22 +88,22 @@ msgid ""
 "`full` never returns ``True``."
 msgstr ""
 
-#: library/asyncio-queue.rst:62
+#: library/asyncio-queue.rst:63
 msgid ""
 "Remove and return an item from the queue. If queue is empty, wait until an "
 "item is available."
 msgstr ""
 
-#: library/asyncio-queue.rst:67
+#: library/asyncio-queue.rst:68
 msgid ""
 "Return an item if one is immediately available, else raise :exc:`QueueEmpty`."
 msgstr ""
 
-#: library/asyncio-queue.rst:72
+#: library/asyncio-queue.rst:74
 msgid "Block until all items in the queue have been received and processed."
 msgstr ""
 
-#: library/asyncio-queue.rst:74
+#: library/asyncio-queue.rst:76
 msgid ""
 "The count of unfinished tasks goes up whenever an item is added to the "
 "queue. The count goes down whenever a consumer coroutine calls :meth:"
@@ -112,98 +112,98 @@ msgid ""
 "unblocks."
 msgstr ""
 
-#: library/asyncio-queue.rst:82
+#: library/asyncio-queue.rst:85
 msgid ""
 "Put an item into the queue. If the queue is full, wait until a free slot is "
 "available before adding the item."
 msgstr ""
 
-#: library/asyncio-queue.rst:87
+#: library/asyncio-queue.rst:90
 msgid "Put an item into the queue without blocking."
 msgstr ""
 
-#: library/asyncio-queue.rst:89
+#: library/asyncio-queue.rst:92
 msgid "If no free slot is immediately available, raise :exc:`QueueFull`."
 msgstr ""
 
-#: library/asyncio-queue.rst:93
+#: library/asyncio-queue.rst:96
 msgid "Return the number of items in the queue."
 msgstr ""
 
-#: library/asyncio-queue.rst:97
-msgid "Indicate that a formerly enqueued task is complete."
+#: library/asyncio-queue.rst:100
+msgid "Indicate that a formerly enqueued work item is complete."
 msgstr ""
 
-#: library/asyncio-queue.rst:99
+#: library/asyncio-queue.rst:102
 msgid ""
-"Used by queue consumers. For each :meth:`~Queue.get` used to fetch a task, a "
-"subsequent call to :meth:`task_done` tells the queue that the processing on "
-"the task is complete."
+"Used by queue consumers. For each :meth:`~Queue.get` used to fetch a work "
+"item, a subsequent call to :meth:`task_done` tells the queue that the "
+"processing on the work item is complete."
 msgstr ""
 
-#: library/asyncio-queue.rst:103
+#: library/asyncio-queue.rst:106
 msgid ""
 "If a :meth:`join` is currently blocking, it will resume when all items have "
 "been processed (meaning that a :meth:`task_done` call was received for every "
 "item that had been :meth:`~Queue.put` into the queue)."
 msgstr ""
 
-#: library/asyncio-queue.rst:108
+#: library/asyncio-queue.rst:111
 msgid ""
 "Raises :exc:`ValueError` if called more times than there were items placed "
 "in the queue."
 msgstr ""
 
-#: library/asyncio-queue.rst:113
+#: library/asyncio-queue.rst:116
 msgid "Priority Queue"
 msgstr ""
 
-#: library/asyncio-queue.rst:117
+#: library/asyncio-queue.rst:120
 msgid ""
 "A variant of :class:`Queue`; retrieves entries in priority order (lowest "
 "first)."
 msgstr ""
 
-#: library/asyncio-queue.rst:120
+#: library/asyncio-queue.rst:123
 msgid "Entries are typically tuples of the form ``(priority_number, data)``."
 msgstr ""
 
-#: library/asyncio-queue.rst:125
+#: library/asyncio-queue.rst:128
 msgid "LIFO Queue"
 msgstr ""
 
-#: library/asyncio-queue.rst:129
+#: library/asyncio-queue.rst:132
 msgid ""
 "A variant of :class:`Queue` that retrieves most recently added entries first "
 "(last in, first out)."
 msgstr ""
 
-#: library/asyncio-queue.rst:134
+#: library/asyncio-queue.rst:137
 msgid "Exceptions"
 msgstr ""
 
-#: library/asyncio-queue.rst:138
+#: library/asyncio-queue.rst:141
 msgid ""
 "This exception is raised when the :meth:`~Queue.get_nowait` method is called "
 "on an empty queue."
 msgstr ""
 
-#: library/asyncio-queue.rst:144
+#: library/asyncio-queue.rst:147
 msgid ""
 "Exception raised when the :meth:`~Queue.put_nowait` method is called on a "
 "queue that has reached its *maxsize*."
 msgstr ""
 
-#: library/asyncio-queue.rst:149
+#: library/asyncio-queue.rst:152
 msgid "Examples"
 msgstr ""
 
-#: library/asyncio-queue.rst:153
+#: library/asyncio-queue.rst:156
 msgid ""
 "Queues can be used to distribute workload between several concurrent tasks::"
 msgstr ""
 
-#: library/asyncio-queue.rst:156
+#: library/asyncio-queue.rst:159
 msgid ""
 "import asyncio\n"
 "import random\n"
diff --git a/library/asyncio-stream.po b/library/asyncio-stream.po
index d428e415d..c13a03fad 100644
--- a/library/asyncio-stream.po
+++ b/library/asyncio-stream.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -35,7 +35,7 @@ msgstr ""
 msgid "Here is an example of a TCP echo client written using asyncio streams::"
 msgstr ""
 
-#: library/asyncio-stream.rst:404
+#: library/asyncio-stream.rst:415
 msgid ""
 "import asyncio\n"
 "\n"
@@ -71,59 +71,59 @@ msgid ""
 "with streams:"
 msgstr ""
 
-#: library/asyncio-stream.rst:58
+#: library/asyncio-stream.rst:59
 msgid ""
 "Establish a network connection and return a pair of ``(reader, writer)`` "
 "objects."
 msgstr ""
 
-#: library/asyncio-stream.rst:61
+#: library/asyncio-stream.rst:62
 msgid ""
 "The returned *reader* and *writer* objects are instances of :class:"
 "`StreamReader` and :class:`StreamWriter` classes."
 msgstr ""
 
-#: library/asyncio-stream.rst:109
+#: library/asyncio-stream.rst:111
 msgid ""
 "*limit* determines the buffer size limit used by the returned :class:"
 "`StreamReader` instance.  By default the *limit* is set to 64 KiB."
 msgstr ""
 
-#: library/asyncio-stream.rst:68
+#: library/asyncio-stream.rst:69
 msgid ""
 "The rest of the arguments are passed directly to :meth:`loop."
 "create_connection`."
 msgstr ""
 
-#: library/asyncio-stream.rst:147
+#: library/asyncio-stream.rst:150
 msgid ""
 "The *sock* argument transfers ownership of the socket to the :class:"
 "`StreamWriter` created. To close the socket, call its :meth:`~asyncio."
 "StreamWriter.close` method."
 msgstr ""
 
-#: library/asyncio-stream.rst:77
+#: library/asyncio-stream.rst:78
 msgid "Added the *ssl_handshake_timeout* parameter."
 msgstr ""
 
-#: library/asyncio-stream.rst:80
+#: library/asyncio-stream.rst:81
 msgid "Added the *happy_eyeballs_delay* and *interleave* parameters."
 msgstr ""
 
-#: library/asyncio-stream.rst:125 library/asyncio-stream.rst:187
+#: library/asyncio-stream.rst:127 library/asyncio-stream.rst:191
 msgid "Removed the *loop* parameter."
 msgstr ""
 
-#: library/asyncio-stream.rst:128 library/asyncio-stream.rst:190
-#: library/asyncio-stream.rst:372
+#: library/asyncio-stream.rst:130 library/asyncio-stream.rst:194
+#: library/asyncio-stream.rst:382
 msgid "Added the *ssl_shutdown_timeout* parameter."
 msgstr ""
 
-#: library/asyncio-stream.rst:98
+#: library/asyncio-stream.rst:100
 msgid "Start a socket server."
 msgstr ""
 
-#: library/asyncio-stream.rst:100
+#: library/asyncio-stream.rst:102
 msgid ""
 "The *client_connected_cb* callback is called whenever a new client "
 "connection is established.  It receives a ``(reader, writer)`` pair as two "
@@ -131,162 +131,162 @@ msgid ""
 "classes."
 msgstr ""
 
-#: library/asyncio-stream.rst:105
+#: library/asyncio-stream.rst:107
 msgid ""
 "*client_connected_cb* can be a plain callable or a :ref:`coroutine function "
 "<coroutine>`; if it is a coroutine function, it will be automatically "
 "scheduled as a :class:`Task`."
 msgstr ""
 
-#: library/asyncio-stream.rst:113
+#: library/asyncio-stream.rst:115
 msgid ""
 "The rest of the arguments are passed directly to :meth:`loop.create_server`."
 msgstr ""
 
-#: library/asyncio-stream.rst:177
+#: library/asyncio-stream.rst:181
 msgid ""
 "The *sock* argument transfers ownership of the socket to the server created. "
 "To close the socket, call the server's :meth:`~asyncio.Server.close` method."
 msgstr ""
 
-#: library/asyncio-stream.rst:122
+#: library/asyncio-stream.rst:124
 msgid "Added the *ssl_handshake_timeout* and *start_serving* parameters."
 msgstr ""
 
-#: library/asyncio-stream.rst:133
+#: library/asyncio-stream.rst:135
 msgid "Unix Sockets"
 msgstr ""
 
-#: library/asyncio-stream.rst:138
+#: library/asyncio-stream.rst:141
 msgid ""
 "Establish a Unix socket connection and return a pair of ``(reader, writer)``."
 msgstr ""
 
-#: library/asyncio-stream.rst:141
+#: library/asyncio-stream.rst:144
 msgid "Similar to :func:`open_connection` but operates on Unix sockets."
 msgstr ""
 
-#: library/asyncio-stream.rst:143
+#: library/asyncio-stream.rst:146
 msgid "See also the documentation of :meth:`loop.create_unix_connection`."
 msgstr ""
 
-#: library/asyncio-stream.rst:181
+#: library/asyncio-stream.rst:185
 msgid "Availability"
 msgstr ""
 
-#: library/asyncio-stream.rst:153
+#: library/asyncio-stream.rst:156
 msgid ""
 "Added the *ssl_handshake_timeout* parameter. The *path* parameter can now be "
 "a :term:`path-like object`"
 msgstr ""
 
-#: library/asyncio-stream.rst:169
+#: library/asyncio-stream.rst:173
 msgid "Start a Unix socket server."
 msgstr ""
 
-#: library/asyncio-stream.rst:171
+#: library/asyncio-stream.rst:175
 msgid "Similar to :func:`start_server` but works with Unix sockets."
 msgstr ""
 
-#: library/asyncio-stream.rst:173
+#: library/asyncio-stream.rst:177
 msgid "See also the documentation of :meth:`loop.create_unix_server`."
 msgstr ""
 
-#: library/asyncio-stream.rst:183
+#: library/asyncio-stream.rst:187
 msgid ""
 "Added the *ssl_handshake_timeout* and *start_serving* parameters. The *path* "
 "parameter can now be a :term:`path-like object`."
 msgstr ""
 
-#: library/asyncio-stream.rst:195
+#: library/asyncio-stream.rst:199
 msgid "StreamReader"
 msgstr ""
 
-#: library/asyncio-stream.rst:199
+#: library/asyncio-stream.rst:203
 msgid ""
 "Represents a reader object that provides APIs to read data from the IO "
 "stream. As an :term:`asynchronous iterable`, the object supports the :"
 "keyword:`async for` statement."
 msgstr ""
 
-#: library/asyncio-stream.rst:203
+#: library/asyncio-stream.rst:207
 msgid ""
 "It is not recommended to instantiate *StreamReader* objects directly; use :"
 "func:`open_connection` and :func:`start_server` instead."
 msgstr ""
 
-#: library/asyncio-stream.rst:209
+#: library/asyncio-stream.rst:213
 msgid "Acknowledge the EOF."
 msgstr ""
 
-#: library/asyncio-stream.rst:213
+#: library/asyncio-stream.rst:218
 msgid "Read up to *n* bytes from the stream."
 msgstr ""
 
-#: library/asyncio-stream.rst:215
+#: library/asyncio-stream.rst:220
 msgid ""
 "If *n* is not provided or set to ``-1``, read until EOF, then return all "
 "read :class:`bytes`. If EOF was received and the internal buffer is empty, "
 "return an empty ``bytes`` object."
 msgstr ""
 
-#: library/asyncio-stream.rst:220
+#: library/asyncio-stream.rst:225
 msgid "If *n* is ``0``, return an empty ``bytes`` object immediately."
 msgstr ""
 
-#: library/asyncio-stream.rst:222
+#: library/asyncio-stream.rst:227
 msgid ""
 "If *n* is positive, return at most *n* available ``bytes`` as soon as at "
 "least 1 byte is available in the internal buffer. If EOF is received before "
 "any byte is read, return an empty ``bytes`` object."
 msgstr ""
 
-#: library/asyncio-stream.rst:229
+#: library/asyncio-stream.rst:235
 msgid ""
 "Read one line, where \"line\" is a sequence of bytes ending with ``\\n``."
 msgstr ""
 
-#: library/asyncio-stream.rst:232
+#: library/asyncio-stream.rst:238
 msgid ""
 "If EOF is received and ``\\n`` was not found, the method returns partially "
 "read data."
 msgstr ""
 
-#: library/asyncio-stream.rst:235
+#: library/asyncio-stream.rst:241
 msgid ""
 "If EOF is received and the internal buffer is empty, return an empty "
 "``bytes`` object."
 msgstr ""
 
-#: library/asyncio-stream.rst:240
+#: library/asyncio-stream.rst:247
 msgid "Read exactly *n* bytes."
 msgstr ""
 
-#: library/asyncio-stream.rst:242
+#: library/asyncio-stream.rst:249
 msgid ""
 "Raise an :exc:`IncompleteReadError` if EOF is reached before *n* can be "
 "read.  Use the :attr:`IncompleteReadError.partial` attribute to get the "
 "partially read data."
 msgstr ""
 
-#: library/asyncio-stream.rst:248
+#: library/asyncio-stream.rst:256
 msgid "Read data from the stream until *separator* is found."
 msgstr ""
 
-#: library/asyncio-stream.rst:250
+#: library/asyncio-stream.rst:258
 msgid ""
 "On success, the data and separator will be removed from the internal buffer "
 "(consumed). Returned data will include the separator at the end."
 msgstr ""
 
-#: library/asyncio-stream.rst:254
+#: library/asyncio-stream.rst:262
 msgid ""
 "If the amount of data read exceeds the configured stream limit, a :exc:"
 "`LimitOverrunError` exception is raised, and the data is left in the "
 "internal buffer and can be read again."
 msgstr ""
 
-#: library/asyncio-stream.rst:258
+#: library/asyncio-stream.rst:266
 msgid ""
 "If EOF is reached before the complete separator is found, an :exc:"
 "`IncompleteReadError` exception is raised, and the internal buffer is "
@@ -294,103 +294,103 @@ msgid ""
 "portion of the separator."
 msgstr ""
 
-#: library/asyncio-stream.rst:267
+#: library/asyncio-stream.rst:275
 msgid "Return ``True`` if the buffer is empty and :meth:`feed_eof` was called."
 msgstr ""
 
-#: library/asyncio-stream.rst:272
+#: library/asyncio-stream.rst:280
 msgid "StreamWriter"
 msgstr ""
 
-#: library/asyncio-stream.rst:276
+#: library/asyncio-stream.rst:284
 msgid ""
 "Represents a writer object that provides APIs to write data to the IO stream."
 msgstr ""
 
-#: library/asyncio-stream.rst:279
+#: library/asyncio-stream.rst:287
 msgid ""
 "It is not recommended to instantiate *StreamWriter* objects directly; use :"
 "func:`open_connection` and :func:`start_server` instead."
 msgstr ""
 
-#: library/asyncio-stream.rst:285
+#: library/asyncio-stream.rst:293
 msgid ""
 "The method attempts to write the *data* to the underlying socket "
 "immediately. If that fails, the data is queued in an internal write buffer "
 "until it can be sent."
 msgstr ""
 
-#: library/asyncio-stream.rst:301
+#: library/asyncio-stream.rst:309
 msgid "The method should be used along with the ``drain()`` method::"
 msgstr ""
 
-#: library/asyncio-stream.rst:291
+#: library/asyncio-stream.rst:299
 msgid ""
 "stream.write(data)\n"
 "await stream.drain()"
 msgstr ""
 
-#: library/asyncio-stream.rst:296
+#: library/asyncio-stream.rst:304
 msgid ""
 "The method writes a list (or any iterable) of bytes to the underlying socket "
 "immediately. If that fails, the data is queued in an internal write buffer "
 "until it can be sent."
 msgstr ""
 
-#: library/asyncio-stream.rst:303
+#: library/asyncio-stream.rst:311
 msgid ""
 "stream.writelines(lines)\n"
 "await stream.drain()"
 msgstr ""
 
-#: library/asyncio-stream.rst:308
+#: library/asyncio-stream.rst:316
 msgid "The method closes the stream and the underlying socket."
 msgstr ""
 
-#: library/asyncio-stream.rst:310
+#: library/asyncio-stream.rst:318
 msgid ""
 "The method should be used, though not mandatory, along with the "
 "``wait_closed()`` method::"
 msgstr ""
 
-#: library/asyncio-stream.rst:313
+#: library/asyncio-stream.rst:321
 msgid ""
 "stream.close()\n"
 "await stream.wait_closed()"
 msgstr ""
 
-#: library/asyncio-stream.rst:318
+#: library/asyncio-stream.rst:326
 msgid ""
 "Return ``True`` if the underlying transport supports the :meth:`write_eof` "
 "method, ``False`` otherwise."
 msgstr ""
 
-#: library/asyncio-stream.rst:323
+#: library/asyncio-stream.rst:331
 msgid ""
 "Close the write end of the stream after the buffered write data is flushed."
 msgstr ""
 
-#: library/asyncio-stream.rst:328
+#: library/asyncio-stream.rst:336
 msgid "Return the underlying asyncio transport."
 msgstr ""
 
-#: library/asyncio-stream.rst:332
+#: library/asyncio-stream.rst:340
 msgid ""
 "Access optional transport information; see :meth:`BaseTransport."
 "get_extra_info` for details."
 msgstr ""
 
-#: library/asyncio-stream.rst:337
+#: library/asyncio-stream.rst:346
 msgid "Wait until it is appropriate to resume writing to the stream. Example::"
 msgstr ""
 
-#: library/asyncio-stream.rst:340
+#: library/asyncio-stream.rst:349
 msgid ""
 "writer.write(data)\n"
 "await writer.drain()"
 msgstr ""
 
-#: library/asyncio-stream.rst:343
+#: library/asyncio-stream.rst:352
 msgid ""
 "This is a flow control method that interacts with the underlying IO write "
 "buffer.  When the size of the buffer reaches the high watermark, *drain()* "
@@ -399,82 +399,82 @@ msgid ""
 "`drain` returns immediately."
 msgstr ""
 
-#: library/asyncio-stream.rst:353
+#: library/asyncio-stream.rst:363
 msgid "Upgrade an existing stream-based connection to TLS."
 msgstr ""
 
-#: library/asyncio-stream.rst:355
+#: library/asyncio-stream.rst:365
 msgid "Parameters:"
 msgstr ""
 
-#: library/asyncio-stream.rst:357
+#: library/asyncio-stream.rst:367
 msgid "*sslcontext*: a configured instance of :class:`~ssl.SSLContext`."
 msgstr ""
 
-#: library/asyncio-stream.rst:359
+#: library/asyncio-stream.rst:369
 msgid ""
 "*server_hostname*: sets or overrides the host name that the target server's "
 "certificate will be matched against."
 msgstr ""
 
-#: library/asyncio-stream.rst:362
+#: library/asyncio-stream.rst:372
 msgid ""
 "*ssl_handshake_timeout* is the time in seconds to wait for the TLS handshake "
 "to complete before aborting the connection.  ``60.0`` seconds if ``None`` "
 "(default)."
 msgstr ""
 
-#: library/asyncio-stream.rst:366
+#: library/asyncio-stream.rst:376
 msgid ""
 "*ssl_shutdown_timeout* is the time in seconds to wait for the SSL shutdown "
 "to complete before aborting the connection. ``30.0`` seconds if ``None`` "
 "(default)."
 msgstr ""
 
-#: library/asyncio-stream.rst:378
+#: library/asyncio-stream.rst:388
 msgid ""
 "Return ``True`` if the stream is closed or in the process of being closed."
 msgstr ""
 
-#: library/asyncio-stream.rst:385
+#: library/asyncio-stream.rst:396
 msgid "Wait until the stream is closed."
 msgstr ""
 
-#: library/asyncio-stream.rst:387
+#: library/asyncio-stream.rst:398
 msgid ""
 "Should be called after :meth:`close` to wait until the underlying connection "
 "is closed, ensuring that all data has been flushed before e.g. exiting the "
 "program."
 msgstr ""
 
-#: library/asyncio-stream.rst:395
+#: library/asyncio-stream.rst:406
 msgid "Examples"
 msgstr ""
 
-#: library/asyncio-stream.rst:400
+#: library/asyncio-stream.rst:411
 msgid "TCP echo client using streams"
 msgstr ""
 
-#: library/asyncio-stream.rst:402
+#: library/asyncio-stream.rst:413
 msgid "TCP echo client using the :func:`asyncio.open_connection` function::"
 msgstr ""
 
-#: library/asyncio-stream.rst:426
+#: library/asyncio-stream.rst:437
 msgid ""
 "The :ref:`TCP echo client protocol "
 "<asyncio_example_tcp_echo_client_protocol>` example uses the low-level :meth:"
 "`loop.create_connection` method."
 msgstr ""
 
-#: library/asyncio-stream.rst:433
+#: library/asyncio-stream.rst:444
 msgid "TCP echo server using streams"
 msgstr ""
 
-#: library/asyncio-stream.rst:435
+#: library/asyncio-stream.rst:446
 msgid "TCP echo server using the :func:`asyncio.start_server` function::"
 msgstr ""
 
-#: library/asyncio-stream.rst:437
+#: library/asyncio-stream.rst:448
 msgid ""
 "import asyncio\n"
 "\n"
@@ -506,23 +506,23 @@ msgid ""
 "asyncio.run(main())"
 msgstr ""
 
-#: library/asyncio-stream.rst:469
+#: library/asyncio-stream.rst:480
 msgid ""
 "The :ref:`TCP echo server protocol "
 "<asyncio_example_tcp_echo_server_protocol>` example uses the :meth:`loop."
 "create_server` method."
 msgstr ""
 
-#: library/asyncio-stream.rst:474
+#: library/asyncio-stream.rst:485
 msgid "Get HTTP headers"
 msgstr ""
 
-#: library/asyncio-stream.rst:476
+#: library/asyncio-stream.rst:487
 msgid ""
 "Simple example querying HTTP headers of the URL passed on the command line::"
 msgstr ""
 
-#: library/asyncio-stream.rst:478
+#: library/asyncio-stream.rst:489
 msgid ""
 "import asyncio\n"
 "import urllib.parse\n"
@@ -561,33 +561,33 @@ msgid ""
 "asyncio.run(print_http_headers(url))"
 msgstr ""
 
-#: library/asyncio-stream.rst:515
+#: library/asyncio-stream.rst:526
 msgid "Usage::"
 msgstr ""
 
-#: library/asyncio-stream.rst:517
+#: library/asyncio-stream.rst:528
 msgid "python example.py http://example.com/path/page.html"
 msgstr ""
 
-#: library/asyncio-stream.rst:519
+#: library/asyncio-stream.rst:530
 msgid "or with HTTPS::"
 msgstr ""
 
-#: library/asyncio-stream.rst:521
+#: library/asyncio-stream.rst:532
 msgid "python example.py https://example.com/path/page.html"
 msgstr ""
 
-#: library/asyncio-stream.rst:527
+#: library/asyncio-stream.rst:538
 msgid "Register an open socket to wait for data using streams"
 msgstr ""
 
-#: library/asyncio-stream.rst:529
+#: library/asyncio-stream.rst:540
 msgid ""
 "Coroutine waiting until a socket receives data using the :func:"
 "`open_connection` function::"
 msgstr ""
 
-#: library/asyncio-stream.rst:532
+#: library/asyncio-stream.rst:543
 msgid ""
 "import asyncio\n"
 "import socket\n"
@@ -620,14 +620,14 @@ msgid ""
 "asyncio.run(wait_for_data())"
 msgstr ""
 
-#: library/asyncio-stream.rst:564
+#: library/asyncio-stream.rst:575
 msgid ""
 "The :ref:`register an open socket to wait for data using a protocol "
 "<asyncio_example_create_connection>` example uses a low-level protocol and "
 "the :meth:`loop.create_connection` method."
 msgstr ""
 
-#: library/asyncio-stream.rst:568
+#: library/asyncio-stream.rst:579
 msgid ""
 "The :ref:`watch a file descriptor for read events "
 "<asyncio_example_watch_fd>` example uses the low-level :meth:`loop."
diff --git a/library/asyncio-subprocess.po b/library/asyncio-subprocess.po
index 5ff1ef5ab..f8433dba1 100644
--- a/library/asyncio-subprocess.po
+++ b/library/asyncio-subprocess.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -96,40 +96,41 @@ msgstr ""
 msgid "Creating Subprocesses"
 msgstr ""
 
-#: library/asyncio-subprocess.rst:67
+#: library/asyncio-subprocess.rst:68
 msgid "Create a subprocess."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:69 library/asyncio-subprocess.rst:87
+#: library/asyncio-subprocess.rst:70 library/asyncio-subprocess.rst:89
 msgid ""
 "The *limit* argument sets the buffer limit for :class:`StreamReader` "
-"wrappers for :attr:`Process.stdout` and :attr:`Process.stderr` (if :const:"
-"`subprocess.PIPE` is passed to *stdout* and *stderr* arguments)."
+"wrappers for :attr:`~asyncio.subprocess.Process.stdout` and :attr:`~asyncio."
+"subprocess.Process.stderr` (if :const:`subprocess.PIPE` is passed to "
+"*stdout* and *stderr* arguments)."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:73 library/asyncio-subprocess.rst:91
+#: library/asyncio-subprocess.rst:74 library/asyncio-subprocess.rst:93
 msgid "Return a :class:`~asyncio.subprocess.Process` instance."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:75
+#: library/asyncio-subprocess.rst:76
 msgid ""
 "See the documentation of :meth:`loop.subprocess_exec` for other parameters."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:78 library/asyncio-subprocess.rst:105
+#: library/asyncio-subprocess.rst:79 library/asyncio-subprocess.rst:107
 msgid "Removed the *loop* parameter."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:85
+#: library/asyncio-subprocess.rst:87
 msgid "Run the *cmd* shell command."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:93
+#: library/asyncio-subprocess.rst:95
 msgid ""
 "See the documentation of :meth:`loop.subprocess_shell` for other parameters."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:98
+#: library/asyncio-subprocess.rst:100
 msgid ""
 "It is the application's responsibility to ensure that all whitespace and "
 "special characters are quoted appropriately to avoid `shell injection "
@@ -139,14 +140,14 @@ msgid ""
 "be used to construct shell commands."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:110
+#: library/asyncio-subprocess.rst:112
 msgid ""
 "Subprocesses are available for Windows if a :class:`ProactorEventLoop` is "
 "used. See :ref:`Subprocess Support on Windows <asyncio-windows-subprocess>` "
 "for details."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:116
+#: library/asyncio-subprocess.rst:118
 msgid ""
 "asyncio also has the following *low-level* APIs to work with subprocesses: :"
 "meth:`loop.subprocess_exec`, :meth:`loop.subprocess_shell`, :meth:`loop."
@@ -155,47 +156,47 @@ msgid ""
 "Protocols <asyncio-subprocess-protocols>`."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:124
+#: library/asyncio-subprocess.rst:126
 msgid "Constants"
 msgstr ""
 
-#: library/asyncio-subprocess.rst:129
+#: library/asyncio-subprocess.rst:131
 msgid "Can be passed to the *stdin*, *stdout* or *stderr* parameters."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:131
+#: library/asyncio-subprocess.rst:133
 msgid ""
 "If *PIPE* is passed to *stdin* argument, the :attr:`Process.stdin <asyncio."
-"subprocess.Process.stdin>` attribute will point to a :class:`StreamWriter` "
-"instance."
+"subprocess.Process.stdin>` attribute will point to a :class:`~asyncio."
+"StreamWriter` instance."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:135
+#: library/asyncio-subprocess.rst:137
 msgid ""
 "If *PIPE* is passed to *stdout* or *stderr* arguments, the :attr:`Process."
 "stdout <asyncio.subprocess.Process.stdout>` and :attr:`Process.stderr "
 "<asyncio.subprocess.Process.stderr>` attributes will point to :class:"
-"`StreamReader` instances."
+"`~asyncio.StreamReader` instances."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:143
+#: library/asyncio-subprocess.rst:145
 msgid ""
 "Special value that can be used as the *stderr* argument and indicates that "
 "standard error should be redirected into standard output."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:149
+#: library/asyncio-subprocess.rst:151
 msgid ""
 "Special value that can be used as the *stdin*, *stdout* or *stderr* argument "
 "to process creation functions.  It indicates that the special file :data:`os."
 "devnull` will be used for the corresponding subprocess stream."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:155
+#: library/asyncio-subprocess.rst:157
 msgid "Interacting with Subprocesses"
 msgstr ""
 
-#: library/asyncio-subprocess.rst:157
+#: library/asyncio-subprocess.rst:159
 msgid ""
 "Both :func:`create_subprocess_exec` and :func:`create_subprocess_shell` "
 "functions return instances of the *Process* class.  *Process* is a high-"
@@ -203,61 +204,62 @@ msgid ""
 "their completion."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:165
+#: library/asyncio-subprocess.rst:167
 msgid ""
-"An object that wraps OS processes created by the :func:"
-"`create_subprocess_exec` and :func:`create_subprocess_shell` functions."
+"An object that wraps OS processes created by the :func:`~asyncio."
+"create_subprocess_exec` and :func:`~asyncio.create_subprocess_shell` "
+"functions."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:169
+#: library/asyncio-subprocess.rst:171
 msgid ""
 "This class is designed to have a similar API to the :class:`subprocess."
 "Popen` class, but there are some notable differences:"
 msgstr ""
 
-#: library/asyncio-subprocess.rst:173
+#: library/asyncio-subprocess.rst:175
 msgid ""
 "unlike Popen, Process instances do not have an equivalent to the :meth:"
 "`~subprocess.Popen.poll` method;"
 msgstr ""
 
-#: library/asyncio-subprocess.rst:176
+#: library/asyncio-subprocess.rst:178
 msgid ""
 "the :meth:`~asyncio.subprocess.Process.communicate` and :meth:`~asyncio."
 "subprocess.Process.wait` methods don't have a *timeout* parameter: use the :"
 "func:`~asyncio.wait_for` function;"
 msgstr ""
 
-#: library/asyncio-subprocess.rst:180
+#: library/asyncio-subprocess.rst:182
 msgid ""
 "the :meth:`Process.wait() <asyncio.subprocess.Process.wait>` method is "
 "asynchronous, whereas :meth:`subprocess.Popen.wait` method is implemented as "
 "a blocking busy loop;"
 msgstr ""
 
-#: library/asyncio-subprocess.rst:184
+#: library/asyncio-subprocess.rst:186
 msgid "the *universal_newlines* parameter is not supported."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:186
+#: library/asyncio-subprocess.rst:188
 msgid "This class is :ref:`not thread safe <asyncio-multithreading>`."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:188
+#: library/asyncio-subprocess.rst:190
 msgid ""
 "See also the :ref:`Subprocess and Threads <asyncio-subprocess-threads>` "
 "section."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:193
+#: library/asyncio-subprocess.rst:196
 msgid "Wait for the child process to terminate."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:195
+#: library/asyncio-subprocess.rst:198
 msgid "Set and return the :attr:`returncode` attribute."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:199
+#: library/asyncio-subprocess.rst:202
 msgid ""
 "This method can deadlock when using ``stdout=PIPE`` or ``stderr=PIPE`` and "
 "the child process generates so much output that it blocks waiting for the OS "
@@ -265,37 +267,37 @@ msgid ""
 "using pipes to avoid this condition."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:207
+#: library/asyncio-subprocess.rst:211
 msgid "Interact with process:"
 msgstr ""
 
-#: library/asyncio-subprocess.rst:209
+#: library/asyncio-subprocess.rst:213
 msgid "send data to *stdin* (if *input* is not ``None``);"
 msgstr ""
 
-#: library/asyncio-subprocess.rst:210
+#: library/asyncio-subprocess.rst:214
 msgid "closes *stdin*;"
 msgstr ""
 
-#: library/asyncio-subprocess.rst:211
+#: library/asyncio-subprocess.rst:215
 msgid "read data from *stdout* and *stderr*, until EOF is reached;"
 msgstr ""
 
-#: library/asyncio-subprocess.rst:212
+#: library/asyncio-subprocess.rst:216
 msgid "wait for process to terminate."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:214
+#: library/asyncio-subprocess.rst:218
 msgid ""
 "The optional *input* argument is the data (:class:`bytes` object) that will "
 "be sent to the child process."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:217
+#: library/asyncio-subprocess.rst:221
 msgid "Return a tuple ``(stdout_data, stderr_data)``."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:219
+#: library/asyncio-subprocess.rst:223
 msgid ""
 "If either :exc:`BrokenPipeError` or :exc:`ConnectionResetError` exception is "
 "raised when writing *input* into *stdin*, the exception is ignored.  This "
@@ -303,7 +305,7 @@ msgid ""
 "*stdin*."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:224
+#: library/asyncio-subprocess.rst:228
 msgid ""
 "If it is desired to send data to the process' *stdin*, the process needs to "
 "be created with ``stdin=PIPE``.  Similarly, to get anything other than "
@@ -311,75 +313,76 @@ msgid ""
 "``stdout=PIPE`` and/or ``stderr=PIPE`` arguments."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:230
+#: library/asyncio-subprocess.rst:234
 msgid ""
 "Note, that the data read is buffered in memory, so do not use this method if "
 "the data size is large or unlimited."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:235
-msgid "*stdin* gets closed when `input=None` too."
+#: library/asyncio-subprocess.rst:239
+msgid "*stdin* gets closed when ``input=None`` too."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:239
+#: library/asyncio-subprocess.rst:243
 msgid "Sends the signal *signal* to the child process."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:243
+#: library/asyncio-subprocess.rst:247
 msgid ""
 "On Windows, :py:const:`~signal.SIGTERM` is an alias for :meth:`terminate`. "
 "``CTRL_C_EVENT`` and ``CTRL_BREAK_EVENT`` can be sent to processes started "
 "with a *creationflags* parameter which includes ``CREATE_NEW_PROCESS_GROUP``."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:250
+#: library/asyncio-subprocess.rst:254
 msgid "Stop the child process."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:252
+#: library/asyncio-subprocess.rst:256
 msgid ""
 "On POSIX systems this method sends :py:const:`~signal.SIGTERM` to the child "
 "process."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:255
+#: library/asyncio-subprocess.rst:259
 msgid ""
 "On Windows the Win32 API function :c:func:`!TerminateProcess` is called to "
 "stop the child process."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:260
+#: library/asyncio-subprocess.rst:264
 msgid "Kill the child process."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:262
+#: library/asyncio-subprocess.rst:266
 msgid ""
-"On POSIX systems this method sends :py:data:`SIGKILL` to the child process."
+"On POSIX systems this method sends :py:data:`~signal.SIGKILL` to the child "
+"process."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:265
+#: library/asyncio-subprocess.rst:269
 msgid "On Windows this method is an alias for :meth:`terminate`."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:269
+#: library/asyncio-subprocess.rst:273
 msgid ""
-"Standard input stream (:class:`StreamWriter`) or ``None`` if the process was "
-"created with ``stdin=None``."
+"Standard input stream (:class:`~asyncio.StreamWriter`) or ``None`` if the "
+"process was created with ``stdin=None``."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:274
+#: library/asyncio-subprocess.rst:278
 msgid ""
-"Standard output stream (:class:`StreamReader`) or ``None`` if the process "
-"was created with ``stdout=None``."
+"Standard output stream (:class:`~asyncio.StreamReader`) or ``None`` if the "
+"process was created with ``stdout=None``."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:279
+#: library/asyncio-subprocess.rst:283
 msgid ""
-"Standard error stream (:class:`StreamReader`) or ``None`` if the process was "
-"created with ``stderr=None``."
+"Standard error stream (:class:`~asyncio.StreamReader`) or ``None`` if the "
+"process was created with ``stderr=None``."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:284
+#: library/asyncio-subprocess.rst:288
 msgid ""
 "Use the :meth:`communicate` method rather than :attr:`process.stdin.write() "
 "<stdin>`, :attr:`await process.stdout.read() <stdout>` or :attr:`await "
@@ -387,93 +390,94 @@ msgid ""
 "pausing reading or writing and blocking the child process."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:293
+#: library/asyncio-subprocess.rst:297
 msgid "Process identification number (PID)."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:295
+#: library/asyncio-subprocess.rst:299
 msgid ""
-"Note that for processes created by the :func:`create_subprocess_shell` "
-"function, this attribute is the PID of the spawned shell."
+"Note that for processes created by the :func:`~asyncio."
+"create_subprocess_shell` function, this attribute is the PID of the spawned "
+"shell."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:300
+#: library/asyncio-subprocess.rst:304
 msgid "Return code of the process when it exits."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:302
+#: library/asyncio-subprocess.rst:306
 msgid "A ``None`` value indicates that the process has not terminated yet."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:304
+#: library/asyncio-subprocess.rst:308
 msgid ""
 "A negative value ``-N`` indicates that the child was terminated by signal "
 "``N`` (POSIX only)."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:311
+#: library/asyncio-subprocess.rst:315
 msgid "Subprocess and Threads"
 msgstr ""
 
-#: library/asyncio-subprocess.rst:313
+#: library/asyncio-subprocess.rst:317
 msgid ""
 "Standard asyncio event loop supports running subprocesses from different "
 "threads by default."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:316
+#: library/asyncio-subprocess.rst:320
 msgid ""
 "On Windows subprocesses are provided by :class:`ProactorEventLoop` only "
 "(default), :class:`SelectorEventLoop` has no subprocess support."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:319
+#: library/asyncio-subprocess.rst:323
 msgid ""
 "On UNIX *child watchers* are used for subprocess finish waiting, see :ref:"
 "`asyncio-watchers` for more info."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:325
+#: library/asyncio-subprocess.rst:329
 msgid ""
 "UNIX switched to use :class:`ThreadedChildWatcher` for spawning subprocesses "
 "from different threads without any limitation."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:328
+#: library/asyncio-subprocess.rst:332
 msgid ""
 "Spawning a subprocess with *inactive* current child watcher raises :exc:"
 "`RuntimeError`."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:331
+#: library/asyncio-subprocess.rst:335
 msgid ""
 "Note that alternative event loop implementations might have own limitations; "
 "please refer to their documentation."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:336
+#: library/asyncio-subprocess.rst:340
 msgid ""
 "The :ref:`Concurrency and multithreading in asyncio <asyncio-"
 "multithreading>` section."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:341
+#: library/asyncio-subprocess.rst:345
 msgid "Examples"
 msgstr ""
 
-#: library/asyncio-subprocess.rst:343
+#: library/asyncio-subprocess.rst:347
 msgid ""
 "An example using the :class:`~asyncio.subprocess.Process` class to control a "
 "subprocess and the :class:`StreamReader` class to read from its standard "
 "output."
 msgstr ""
 
-#: library/asyncio-subprocess.rst:349
+#: library/asyncio-subprocess.rst:353
 msgid ""
 "The subprocess is created by the :func:`create_subprocess_exec` function::"
 msgstr ""
 
-#: library/asyncio-subprocess.rst:352
+#: library/asyncio-subprocess.rst:356
 msgid ""
 "import asyncio\n"
 "import sys\n"
@@ -499,7 +503,7 @@ msgid ""
 "print(f\"Current date: {date}\")"
 msgstr ""
 
-#: library/asyncio-subprocess.rst:376
+#: library/asyncio-subprocess.rst:380
 msgid ""
 "See also the :ref:`same example <asyncio_example_subprocess_proto>` written "
 "using low-level APIs."
diff --git a/library/asyncio-sync.po b/library/asyncio-sync.po
index 5a4b50d58..cd7c87af7 100644
--- a/library/asyncio-sync.po
+++ b/library/asyncio-sync.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -98,7 +98,7 @@ msgid ""
 "    # access shared state"
 msgstr ""
 
-#: library/asyncio-sync.rst:199 library/asyncio-sync.rst:298
+#: library/asyncio-sync.rst:201 library/asyncio-sync.rst:304
 msgid "which is equivalent to::"
 msgstr ""
 
@@ -114,64 +114,64 @@ msgid ""
 "    lock.release()"
 msgstr ""
 
-#: library/asyncio-sync.rst:112 library/asyncio-sync.rst:286
-#: library/asyncio-sync.rst:341
+#: library/asyncio-sync.rst:113 library/asyncio-sync.rst:292
+#: library/asyncio-sync.rst:348
 msgid "Removed the *loop* parameter."
 msgstr ""
 
-#: library/asyncio-sync.rst:72
+#: library/asyncio-sync.rst:73
 msgid "Acquire the lock."
 msgstr ""
 
-#: library/asyncio-sync.rst:74
+#: library/asyncio-sync.rst:75
 msgid ""
 "This method waits until the lock is *unlocked*, sets it to *locked* and "
 "returns ``True``."
 msgstr ""
 
-#: library/asyncio-sync.rst:77
+#: library/asyncio-sync.rst:78
 msgid ""
 "When more than one coroutine is blocked in :meth:`acquire` waiting for the "
 "lock to be unlocked, only one coroutine eventually proceeds."
 msgstr ""
 
-#: library/asyncio-sync.rst:81
+#: library/asyncio-sync.rst:82
 msgid ""
 "Acquiring a lock is *fair*: the coroutine that proceeds will be the first "
 "coroutine that started waiting on the lock."
 msgstr ""
 
-#: library/asyncio-sync.rst:86
+#: library/asyncio-sync.rst:87
 msgid "Release the lock."
 msgstr ""
 
-#: library/asyncio-sync.rst:88
+#: library/asyncio-sync.rst:89
 msgid "When the lock is *locked*, reset it to *unlocked* and return."
 msgstr ""
 
-#: library/asyncio-sync.rst:90
+#: library/asyncio-sync.rst:91
 msgid "If the lock is *unlocked*, a :exc:`RuntimeError` is raised."
 msgstr ""
 
-#: library/asyncio-sync.rst:94
+#: library/asyncio-sync.rst:95
 msgid "Return ``True`` if the lock is *locked*."
 msgstr ""
 
-#: library/asyncio-sync.rst:98
+#: library/asyncio-sync.rst:99
 msgid "Event"
 msgstr ""
 
-#: library/asyncio-sync.rst:102
+#: library/asyncio-sync.rst:103
 msgid "An event object.  Not thread-safe."
 msgstr ""
 
-#: library/asyncio-sync.rst:104
+#: library/asyncio-sync.rst:105
 msgid ""
 "An asyncio event can be used to notify multiple asyncio tasks that some "
 "event has happened."
 msgstr ""
 
-#: library/asyncio-sync.rst:107
+#: library/asyncio-sync.rst:108
 msgid ""
 "An Event object manages an internal flag that can be set to *true* with the :"
 "meth:`~Event.set` method and reset to *false* with the :meth:`clear` "
@@ -179,11 +179,11 @@ msgid ""
 "*true*.  The flag is set to *false* initially."
 msgstr ""
 
-#: library/asyncio-sync.rst:365
+#: library/asyncio-sync.rst:372
 msgid "Example::"
 msgstr ""
 
-#: library/asyncio-sync.rst:119
+#: library/asyncio-sync.rst:120
 msgid ""
 "async def waiter(event):\n"
 "    print('waiting for it ...')\n"
@@ -207,53 +207,53 @@ msgid ""
 "asyncio.run(main())"
 msgstr ""
 
-#: library/asyncio-sync.rst:142
+#: library/asyncio-sync.rst:144
 msgid "Wait until the event is set."
 msgstr ""
 
-#: library/asyncio-sync.rst:144
+#: library/asyncio-sync.rst:146
 msgid ""
 "If the event is set, return ``True`` immediately. Otherwise block until "
 "another task calls :meth:`~Event.set`."
 msgstr ""
 
-#: library/asyncio-sync.rst:149
+#: library/asyncio-sync.rst:151
 msgid "Set the event."
 msgstr ""
 
-#: library/asyncio-sync.rst:151
+#: library/asyncio-sync.rst:153
 msgid "All tasks waiting for event to be set will be immediately awakened."
 msgstr ""
 
-#: library/asyncio-sync.rst:156
+#: library/asyncio-sync.rst:158
 msgid "Clear (unset) the event."
 msgstr ""
 
-#: library/asyncio-sync.rst:158
+#: library/asyncio-sync.rst:160
 msgid ""
 "Tasks awaiting on :meth:`~Event.wait` will now block until the :meth:`~Event."
 "set` method is called again."
 msgstr ""
 
-#: library/asyncio-sync.rst:163
+#: library/asyncio-sync.rst:165
 msgid "Return ``True`` if the event is set."
 msgstr ""
 
-#: library/asyncio-sync.rst:167
+#: library/asyncio-sync.rst:169
 msgid "Condition"
 msgstr ""
 
-#: library/asyncio-sync.rst:171
+#: library/asyncio-sync.rst:173
 msgid "A Condition object.  Not thread-safe."
 msgstr ""
 
-#: library/asyncio-sync.rst:173
+#: library/asyncio-sync.rst:175
 msgid ""
 "An asyncio condition primitive can be used by a task to wait for some event "
 "to happen and then get exclusive access to a shared resource."
 msgstr ""
 
-#: library/asyncio-sync.rst:177
+#: library/asyncio-sync.rst:179
 msgid ""
 "In essence, a Condition object combines the functionality of an :class:"
 "`Event` and a :class:`Lock`.  It is possible to have multiple Condition "
@@ -262,18 +262,18 @@ msgid ""
 "that shared resource."
 msgstr ""
 
-#: library/asyncio-sync.rst:183
+#: library/asyncio-sync.rst:185
 msgid ""
 "The optional *lock* argument must be a :class:`Lock` object or ``None``.  In "
 "the latter case a new Lock object is created automatically."
 msgstr ""
 
-#: library/asyncio-sync.rst:190
+#: library/asyncio-sync.rst:192
 msgid ""
 "The preferred way to use a Condition is an :keyword:`async with` statement::"
 msgstr ""
 
-#: library/asyncio-sync.rst:193
+#: library/asyncio-sync.rst:195
 msgid ""
 "cond = asyncio.Condition()\n"
 "\n"
@@ -282,7 +282,7 @@ msgid ""
 "    await cond.wait()"
 msgstr ""
 
-#: library/asyncio-sync.rst:201
+#: library/asyncio-sync.rst:203
 msgid ""
 "cond = asyncio.Condition()\n"
 "\n"
@@ -294,85 +294,86 @@ msgid ""
 "    cond.release()"
 msgstr ""
 
-#: library/asyncio-sync.rst:212
+#: library/asyncio-sync.rst:215
 msgid "Acquire the underlying lock."
 msgstr ""
 
-#: library/asyncio-sync.rst:214
+#: library/asyncio-sync.rst:217
 msgid ""
 "This method waits until the underlying lock is *unlocked*, sets it to "
 "*locked* and returns ``True``."
 msgstr ""
 
-#: library/asyncio-sync.rst:219
+#: library/asyncio-sync.rst:222
 msgid ""
 "Wake up at most *n* tasks (1 by default) waiting on this condition.  The "
 "method is no-op if no tasks are waiting."
 msgstr ""
 
-#: library/asyncio-sync.rst:237
+#: library/asyncio-sync.rst:240
 msgid ""
 "The lock must be acquired before this method is called and released shortly "
 "after.  If called with an *unlocked* lock a :exc:`RuntimeError` error is "
 "raised."
 msgstr ""
 
-#: library/asyncio-sync.rst:228
+#: library/asyncio-sync.rst:231
 msgid "Return ``True`` if the underlying lock is acquired."
 msgstr ""
 
-#: library/asyncio-sync.rst:232
+#: library/asyncio-sync.rst:235
 msgid "Wake up all tasks waiting on this condition."
 msgstr ""
 
-#: library/asyncio-sync.rst:234
+#: library/asyncio-sync.rst:237
 msgid "This method acts like :meth:`notify`, but wakes up all waiting tasks."
 msgstr ""
 
-#: library/asyncio-sync.rst:243
+#: library/asyncio-sync.rst:246
 msgid "Release the underlying lock."
 msgstr ""
 
-#: library/asyncio-sync.rst:245
+#: library/asyncio-sync.rst:248
 msgid "When invoked on an unlocked lock, a :exc:`RuntimeError` is raised."
 msgstr ""
 
-#: library/asyncio-sync.rst:250
+#: library/asyncio-sync.rst:254
 msgid "Wait until notified."
 msgstr ""
 
-#: library/asyncio-sync.rst:252
+#: library/asyncio-sync.rst:256
 msgid ""
 "If the calling task has not acquired the lock when this method is called, a :"
 "exc:`RuntimeError` is raised."
 msgstr ""
 
-#: library/asyncio-sync.rst:255
+#: library/asyncio-sync.rst:259
 msgid ""
 "This method releases the underlying lock, and then blocks until it is "
 "awakened by a :meth:`notify` or :meth:`notify_all` call. Once awakened, the "
 "Condition re-acquires its lock and this method returns ``True``."
 msgstr ""
 
-#: library/asyncio-sync.rst:262
+#: library/asyncio-sync.rst:267
 msgid "Wait until a predicate becomes *true*."
 msgstr ""
 
-#: library/asyncio-sync.rst:264
+#: library/asyncio-sync.rst:269
 msgid ""
 "The predicate must be a callable which result will be interpreted as a "
-"boolean value.  The final value is the return value."
+"boolean value.  The method will repeatedly :meth:`~Condition.wait` until the "
+"predicate evaluates to *true*. The final value is the return value."
 msgstr ""
 
-#: library/asyncio-sync.rst:270
+#: library/asyncio-sync.rst:276
 msgid "Semaphore"
 msgstr ""
 
-#: library/asyncio-sync.rst:274
+#: library/asyncio-sync.rst:280
 msgid "A Semaphore object.  Not thread-safe."
 msgstr ""
 
-#: library/asyncio-sync.rst:276
+#: library/asyncio-sync.rst:282
 msgid ""
 "A semaphore manages an internal counter which is decremented by each :meth:"
 "`acquire` call and incremented by each :meth:`release` call. The counter can "
@@ -380,19 +381,19 @@ msgid ""
 "waiting until some task calls :meth:`release`."
 msgstr ""
 
-#: library/asyncio-sync.rst:282
+#: library/asyncio-sync.rst:288
 msgid ""
 "The optional *value* argument gives the initial value for the internal "
 "counter (``1`` by default). If the given value is less than ``0`` a :exc:"
 "`ValueError` is raised."
 msgstr ""
 
-#: library/asyncio-sync.rst:289
+#: library/asyncio-sync.rst:295
 msgid ""
 "The preferred way to use a Semaphore is an :keyword:`async with` statement::"
 msgstr ""
 
-#: library/asyncio-sync.rst:292
+#: library/asyncio-sync.rst:298
 msgid ""
 "sem = asyncio.Semaphore(10)\n"
 "\n"
@@ -401,7 +402,7 @@ msgid ""
 "    # work with shared resource"
 msgstr ""
 
-#: library/asyncio-sync.rst:300
+#: library/asyncio-sync.rst:306
 msgid ""
 "sem = asyncio.Semaphore(10)\n"
 "\n"
@@ -413,57 +414,57 @@ msgid ""
 "    sem.release()"
 msgstr ""
 
-#: library/asyncio-sync.rst:311
+#: library/asyncio-sync.rst:318
 msgid "Acquire a semaphore."
 msgstr ""
 
-#: library/asyncio-sync.rst:313
+#: library/asyncio-sync.rst:320
 msgid ""
 "If the internal counter is greater than zero, decrement it by one and return "
 "``True`` immediately.  If it is zero, wait until a :meth:`release` is called "
 "and return ``True``."
 msgstr ""
 
-#: library/asyncio-sync.rst:319
+#: library/asyncio-sync.rst:326
 msgid "Returns ``True`` if semaphore can not be acquired immediately."
 msgstr ""
 
-#: library/asyncio-sync.rst:323
+#: library/asyncio-sync.rst:330
 msgid ""
 "Release a semaphore, incrementing the internal counter by one. Can wake up a "
 "task waiting to acquire the semaphore."
 msgstr ""
 
-#: library/asyncio-sync.rst:326
+#: library/asyncio-sync.rst:333
 msgid ""
 "Unlike :class:`BoundedSemaphore`, :class:`Semaphore` allows making more "
 "``release()`` calls than ``acquire()`` calls."
 msgstr ""
 
-#: library/asyncio-sync.rst:331
+#: library/asyncio-sync.rst:338
 msgid "BoundedSemaphore"
 msgstr ""
 
-#: library/asyncio-sync.rst:335
+#: library/asyncio-sync.rst:342
 msgid "A bounded semaphore object.  Not thread-safe."
 msgstr ""
 
-#: library/asyncio-sync.rst:337
+#: library/asyncio-sync.rst:344
 msgid ""
 "Bounded Semaphore is a version of :class:`Semaphore` that raises a :exc:"
 "`ValueError` in :meth:`~Semaphore.release` if it increases the internal "
 "counter above the initial *value*."
 msgstr ""
 
-#: library/asyncio-sync.rst:346
+#: library/asyncio-sync.rst:353
 msgid "Barrier"
 msgstr ""
 
-#: library/asyncio-sync.rst:350
+#: library/asyncio-sync.rst:357
 msgid "A barrier object.  Not thread-safe."
 msgstr ""
 
-#: library/asyncio-sync.rst:352
+#: library/asyncio-sync.rst:359
 msgid ""
 "A barrier is a simple synchronization primitive that allows to block until "
 "*parties* number of tasks are waiting on it. Tasks can wait on the :meth:"
@@ -472,17 +473,17 @@ msgid ""
 "waiting tasks would unblock simultaneously."
 msgstr ""
 
-#: library/asyncio-sync.rst:358
+#: library/asyncio-sync.rst:365
 msgid ""
 ":keyword:`async with` can be used as an alternative to awaiting on :meth:"
 "`~Barrier.wait`."
 msgstr ""
 
-#: library/asyncio-sync.rst:361
+#: library/asyncio-sync.rst:368
 msgid "The barrier can be reused any number of times."
 msgstr ""
 
-#: library/asyncio-sync.rst:367
+#: library/asyncio-sync.rst:374
 msgid ""
 "async def example_barrier():\n"
 "   # barrier with 3 parties\n"
@@ -506,11 +507,11 @@ msgid ""
 "asyncio.run(example_barrier())"
 msgstr ""
 
-#: library/asyncio-sync.rst:388
+#: library/asyncio-sync.rst:395
 msgid "Result of this example is::"
 msgstr ""
 
-#: library/asyncio-sync.rst:390
+#: library/asyncio-sync.rst:397
 msgid ""
 "<asyncio.locks.Barrier object at 0x... [filling, waiters:2/3]>\n"
 "<asyncio.locks.Barrier object at 0x... [draining, waiters:0/3]>\n"
@@ -518,27 +519,27 @@ msgid ""
 "<asyncio.locks.Barrier object at 0x... [filling, waiters:0/3]>"
 msgstr ""
 
-#: library/asyncio-sync.rst:399
+#: library/asyncio-sync.rst:407
 msgid ""
 "Pass the barrier. When all the tasks party to the barrier have called this "
 "function, they are all unblocked simultaneously."
 msgstr ""
 
-#: library/asyncio-sync.rst:402
+#: library/asyncio-sync.rst:410
 msgid ""
 "When a waiting or blocked task in the barrier is cancelled, this task exits "
 "the barrier which stays in the same state. If the state of the barrier is "
 "\"filling\", the number of waiting task decreases by 1."
 msgstr ""
 
-#: library/asyncio-sync.rst:407
+#: library/asyncio-sync.rst:415
 msgid ""
 "The return value is an integer in the range of 0 to ``parties-1``, different "
 "for each task. This can be used to select a task to do some special "
 "housekeeping, e.g.::"
 msgstr ""
 
-#: library/asyncio-sync.rst:411
+#: library/asyncio-sync.rst:419
 msgid ""
 "...\n"
 "async with barrier as position:\n"
@@ -547,51 +548,52 @@ msgid ""
 "      print('End of *draining phase*')"
 msgstr ""
 
-#: library/asyncio-sync.rst:417
+#: library/asyncio-sync.rst:425
 msgid ""
 "This method may raise a :class:`BrokenBarrierError` exception if the barrier "
 "is broken or reset while a task is waiting. It could raise a :exc:"
 "`CancelledError` if a task is cancelled."
 msgstr ""
 
-#: library/asyncio-sync.rst:423
+#: library/asyncio-sync.rst:432
 msgid ""
 "Return the barrier to the default, empty state.  Any tasks waiting on it "
 "will receive the :class:`BrokenBarrierError` exception."
 msgstr ""
 
-#: library/asyncio-sync.rst:426
+#: library/asyncio-sync.rst:435
 msgid ""
 "If a barrier is broken it may be better to just leave it and create a new "
 "one."
 msgstr ""
 
-#: library/asyncio-sync.rst:430
+#: library/asyncio-sync.rst:440
 msgid ""
 "Put the barrier into a broken state.  This causes any active or future calls "
-"to :meth:`wait` to fail with the :class:`BrokenBarrierError`. Use this for "
-"example if one of the tasks needs to abort, to avoid infinite waiting tasks."
+"to :meth:`~Barrier.wait` to fail with the :class:`BrokenBarrierError`. Use "
+"this for example if one of the tasks needs to abort, to avoid infinite "
+"waiting tasks."
 msgstr ""
 
-#: library/asyncio-sync.rst:437
+#: library/asyncio-sync.rst:447
 msgid "The number of tasks required to pass the barrier."
 msgstr ""
 
-#: library/asyncio-sync.rst:441
+#: library/asyncio-sync.rst:451
 msgid "The number of tasks currently waiting in the barrier while filling."
 msgstr ""
 
-#: library/asyncio-sync.rst:445
+#: library/asyncio-sync.rst:455
 msgid "A boolean that is ``True`` if the barrier is in the broken state."
 msgstr ""
 
-#: library/asyncio-sync.rst:450
+#: library/asyncio-sync.rst:460
 msgid ""
 "This exception, a subclass of :exc:`RuntimeError`, is raised when the :class:"
 "`Barrier` object is reset or broken."
 msgstr ""
 
-#: library/asyncio-sync.rst:458
+#: library/asyncio-sync.rst:468
 msgid ""
 "Acquiring a lock using ``await lock`` or ``yield from lock`` and/or :keyword:"
 "`with` statement (``with await lock``, ``with (yield from lock)``) was "
diff --git a/library/asyncio-task.po b/library/asyncio-task.po
index 99a80e741..b8b322052 100644
--- a/library/asyncio-task.po
+++ b/library/asyncio-task.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -398,11 +398,11 @@ msgid ""
 "    task.add_done_callback(background_tasks.discard)"
 msgstr ""
 
-#: library/asyncio-task.rst:1122
+#: library/asyncio-task.rst:1126
 msgid "Added the *name* parameter."
 msgstr ""
 
-#: library/asyncio-task.rst:1129
+#: library/asyncio-task.rst:1133
 msgid "Added the *context* parameter."
 msgstr ""
 
@@ -459,8 +459,8 @@ msgid ""
 "`asyncio.create_task`."
 msgstr ""
 
-#: library/asyncio-task.rst:519 library/asyncio-task.rst:750
-#: library/asyncio-task.rst:816 library/asyncio-task.rst:915
+#: library/asyncio-task.rst:520 library/asyncio-task.rst:751
+#: library/asyncio-task.rst:818 library/asyncio-task.rst:918
 msgid "Example::"
 msgstr ""
 
@@ -583,34 +583,34 @@ msgstr ""
 msgid "Sleeping"
 msgstr ""
 
-#: library/asyncio-task.rst:441
+#: library/asyncio-task.rst:442
 msgid "Block for *delay* seconds."
 msgstr ""
 
-#: library/asyncio-task.rst:443
+#: library/asyncio-task.rst:444
 msgid ""
 "If *result* is provided, it is returned to the caller when the coroutine "
 "completes."
 msgstr ""
 
-#: library/asyncio-task.rst:446
+#: library/asyncio-task.rst:447
 msgid ""
 "``sleep()`` always suspends the current task, allowing other tasks to run."
 msgstr ""
 
-#: library/asyncio-task.rst:449
+#: library/asyncio-task.rst:450
 msgid ""
 "Setting the delay to 0 provides an optimized path to allow other tasks to "
 "run. This can be used by long-running functions to avoid blocking the event "
 "loop for the full duration of the function call."
 msgstr ""
 
-#: library/asyncio-task.rst:455
+#: library/asyncio-task.rst:456
 msgid ""
 "Example of coroutine displaying the current date every second for 5 seconds::"
 msgstr ""
 
-#: library/asyncio-task.rst:458
+#: library/asyncio-task.rst:459
 msgid ""
 "import asyncio\n"
 "import datetime\n"
@@ -627,35 +627,35 @@ msgid ""
 "asyncio.run(display_date())"
 msgstr ""
 
-#: library/asyncio-task.rst:568 library/asyncio-task.rst:841
-#: library/asyncio-task.rst:921
+#: library/asyncio-task.rst:569 library/asyncio-task.rst:843
+#: library/asyncio-task.rst:924
 msgid "Removed the *loop* parameter."
 msgstr ""
 
-#: library/asyncio-task.rst:478
+#: library/asyncio-task.rst:479
 msgid "Running Tasks Concurrently"
 msgstr ""
 
-#: library/asyncio-task.rst:482
+#: library/asyncio-task.rst:483
 msgid ""
 "Run :ref:`awaitable objects <asyncio-awaitables>` in the *aws* sequence "
 "*concurrently*."
 msgstr ""
 
-#: library/asyncio-task.rst:485
+#: library/asyncio-task.rst:486
 msgid ""
 "If any awaitable in *aws* is a coroutine, it is automatically scheduled as a "
 "Task."
 msgstr ""
 
-#: library/asyncio-task.rst:488
+#: library/asyncio-task.rst:489
 msgid ""
 "If all awaitables are completed successfully, the result is an aggregate "
 "list of returned values.  The order of result values corresponds to the "
 "order of awaitables in *aws*."
 msgstr ""
 
-#: library/asyncio-task.rst:492
+#: library/asyncio-task.rst:493
 msgid ""
 "If *return_exceptions* is ``False`` (default), the first raised exception is "
 "immediately propagated to the task that awaits on ``gather()``.  Other "
@@ -663,19 +663,19 @@ msgid ""
 "run."
 msgstr ""
 
-#: library/asyncio-task.rst:497
+#: library/asyncio-task.rst:498
 msgid ""
 "If *return_exceptions* is ``True``, exceptions are treated the same as "
 "successful results, and aggregated in the result list."
 msgstr ""
 
-#: library/asyncio-task.rst:500
+#: library/asyncio-task.rst:501
 msgid ""
 "If ``gather()`` is *cancelled*, all submitted awaitables (that have not "
 "completed yet) are also *cancelled*."
 msgstr ""
 
-#: library/asyncio-task.rst:503
+#: library/asyncio-task.rst:504
 msgid ""
 "If any Task or Future from the *aws* sequence is *cancelled*, it is treated "
 "as if it raised :exc:`CancelledError` -- the ``gather()`` call is **not** "
@@ -683,7 +683,7 @@ msgid ""
 "submitted Task/Future to cause other Tasks/Futures to be cancelled."
 msgstr ""
 
-#: library/asyncio-task.rst:510
+#: library/asyncio-task.rst:511
 msgid ""
 "A new alternative to create and run tasks concurrently and wait for their "
 "completion is :class:`asyncio.TaskGroup`. *TaskGroup* provides stronger "
@@ -693,7 +693,7 @@ msgid ""
 "tasks)."
 msgstr ""
 
-#: library/asyncio-task.rst:521
+#: library/asyncio-task.rst:522
 msgid ""
 "import asyncio\n"
 "\n"
@@ -732,7 +732,7 @@ msgid ""
 "#     [2, 6, 24]"
 msgstr ""
 
-#: library/asyncio-task.rst:557
+#: library/asyncio-task.rst:558
 msgid ""
 "If *return_exceptions* is false, cancelling gather() after it has been "
 "marked done won't cancel any submitted awaitables. For instance, gather can "
@@ -741,28 +741,28 @@ msgid ""
 "the awaitables) from gather won't cancel any other awaitables."
 msgstr ""
 
-#: library/asyncio-task.rst:564
+#: library/asyncio-task.rst:565
 msgid ""
 "If the *gather* itself is cancelled, the cancellation is propagated "
 "regardless of *return_exceptions*."
 msgstr ""
 
-#: library/asyncio-task.rst:571
+#: library/asyncio-task.rst:572
 msgid ""
 "Deprecation warning is emitted if no positional arguments are provided or "
 "not all positional arguments are Future-like objects and there is no running "
 "event loop."
 msgstr ""
 
-#: library/asyncio-task.rst:580
+#: library/asyncio-task.rst:581
 msgid "Eager Task Factory"
 msgstr ""
 
-#: library/asyncio-task.rst:584
+#: library/asyncio-task.rst:585
 msgid "A task factory for eager task execution."
 msgstr ""
 
-#: library/asyncio-task.rst:586
+#: library/asyncio-task.rst:587
 msgid ""
 "When using this factory (via :meth:`loop.set_task_factory(asyncio."
 "eager_task_factory) <loop.set_task_factory>`), coroutines begin execution "
@@ -772,13 +772,13 @@ msgid ""
 "synchronously."
 msgstr ""
 
-#: library/asyncio-task.rst:592
+#: library/asyncio-task.rst:593
 msgid ""
 "A common example where this is beneficial is coroutines which employ caching "
 "or memoization to avoid actual I/O when possible."
 msgstr ""
 
-#: library/asyncio-task.rst:597
+#: library/asyncio-task.rst:598
 msgid ""
 "Immediate execution of the coroutine is a semantic change. If the coroutine "
 "returns or raises, the task is never scheduled to the event loop. If the "
@@ -787,60 +787,60 @@ msgid ""
 "the application's task execution order is likely to change."
 msgstr ""
 
-#: library/asyncio-task.rst:608
+#: library/asyncio-task.rst:609
 msgid ""
 "Create an eager task factory, similar to :func:`eager_task_factory`, using "
 "the provided *custom_task_constructor* when creating a new task instead of "
 "the default :class:`Task`."
 msgstr ""
 
-#: library/asyncio-task.rst:612
+#: library/asyncio-task.rst:613
 msgid ""
 "*custom_task_constructor* must be a *callable* with the signature matching "
 "the signature of :class:`Task.__init__ <Task>`. The callable must return a :"
 "class:`asyncio.Task`-compatible object."
 msgstr ""
 
-#: library/asyncio-task.rst:616
+#: library/asyncio-task.rst:617
 msgid ""
 "This function returns a *callable* intended to be used as a task factory of "
 "an event loop via :meth:`loop.set_task_factory(factory) <loop."
 "set_task_factory>`)."
 msgstr ""
 
-#: library/asyncio-task.rst:623
+#: library/asyncio-task.rst:624
 msgid "Shielding From Cancellation"
 msgstr ""
 
-#: library/asyncio-task.rst:627
+#: library/asyncio-task.rst:628
 msgid ""
 "Protect an :ref:`awaitable object <asyncio-awaitables>` from being :meth:"
 "`cancelled <Task.cancel>`."
 msgstr ""
 
-#: library/asyncio-task.rst:796
+#: library/asyncio-task.rst:798
 msgid "If *aw* is a coroutine it is automatically scheduled as a Task."
 msgstr ""
 
-#: library/asyncio-task.rst:632
+#: library/asyncio-task.rst:633
 msgid "The statement::"
 msgstr ""
 
-#: library/asyncio-task.rst:634
+#: library/asyncio-task.rst:635
 msgid ""
 "task = asyncio.create_task(something())\n"
 "res = await shield(task)"
 msgstr ""
 
-#: library/asyncio-task.rst:637
+#: library/asyncio-task.rst:638
 msgid "is equivalent to::"
 msgstr ""
 
-#: library/asyncio-task.rst:639
+#: library/asyncio-task.rst:640
 msgid "res = await something()"
 msgstr ""
 
-#: library/asyncio-task.rst:641
+#: library/asyncio-task.rst:642
 msgid ""
 "*except* that if the coroutine containing it is cancelled, the Task running "
 "in ``something()`` is not cancelled.  From the point of view of "
@@ -849,20 +849,20 @@ msgid ""
 "`CancelledError`."
 msgstr ""
 
-#: library/asyncio-task.rst:647
+#: library/asyncio-task.rst:648
 msgid ""
 "If ``something()`` is cancelled by other means (i.e. from within itself) "
 "that would also cancel ``shield()``."
 msgstr ""
 
-#: library/asyncio-task.rst:650
+#: library/asyncio-task.rst:651
 msgid ""
 "If it is desired to completely ignore cancellation (not recommended) the "
 "``shield()`` function should be combined with a try/except clause, as "
 "follows::"
 msgstr ""
 
-#: library/asyncio-task.rst:654
+#: library/asyncio-task.rst:655
 msgid ""
 "task = asyncio.create_task(something())\n"
 "try:\n"
@@ -871,7 +871,7 @@ msgid ""
 "    res = None"
 msgstr ""
 
-#: library/asyncio-task.rst:662
+#: library/asyncio-task.rst:663
 msgid ""
 "Save a reference to tasks passed to this function, to avoid a task "
 "disappearing mid-execution. The event loop only keeps weak references to "
@@ -879,43 +879,43 @@ msgid ""
 "any time, even before it's done."
 msgstr ""
 
-#: library/asyncio-task.rst:670
+#: library/asyncio-task.rst:671
 msgid ""
 "Deprecation warning is emitted if *aw* is not Future-like object and there "
 "is no running event loop."
 msgstr ""
 
-#: library/asyncio-task.rst:676
+#: library/asyncio-task.rst:677
 msgid "Timeouts"
 msgstr ""
 
-#: library/asyncio-task.rst:680
+#: library/asyncio-task.rst:681
 msgid ""
 "Return an :ref:`asynchronous context manager <async-context-managers>` that "
 "can be used to limit the amount of time spent waiting on something."
 msgstr ""
 
-#: library/asyncio-task.rst:684
+#: library/asyncio-task.rst:685
 msgid ""
 "*delay* can either be ``None``, or a float/int number of seconds to wait. If "
 "*delay* is ``None``, no time limit will be applied; this can be useful if "
 "the delay is unknown when the context manager is created."
 msgstr ""
 
-#: library/asyncio-task.rst:689
+#: library/asyncio-task.rst:690
 msgid ""
 "In either case, the context manager can be rescheduled after creation using :"
 "meth:`Timeout.reschedule`."
 msgstr ""
 
-#: library/asyncio-task.rst:694
+#: library/asyncio-task.rst:695
 msgid ""
 "async def main():\n"
 "    async with asyncio.timeout(10):\n"
 "        await long_running_task()"
 msgstr ""
 
-#: library/asyncio-task.rst:698
+#: library/asyncio-task.rst:699
 msgid ""
 "If ``long_running_task`` takes more than 10 seconds to complete, the context "
 "manager will cancel the current task and handle the resulting :exc:`asyncio."
@@ -923,18 +923,18 @@ msgid ""
 "can be caught and handled."
 msgstr ""
 
-#: library/asyncio-task.rst:705
+#: library/asyncio-task.rst:706
 msgid ""
 "The :func:`asyncio.timeout` context manager is what transforms the :exc:"
 "`asyncio.CancelledError` into a :exc:`TimeoutError`, which means the :exc:"
 "`TimeoutError` can only be caught *outside* of the context manager."
 msgstr ""
 
-#: library/asyncio-task.rst:710
+#: library/asyncio-task.rst:711
 msgid "Example of catching :exc:`TimeoutError`::"
 msgstr ""
 
-#: library/asyncio-task.rst:712
+#: library/asyncio-task.rst:713
 msgid ""
 "async def main():\n"
 "    try:\n"
@@ -946,48 +946,48 @@ msgid ""
 "    print(\"This statement will run regardless.\")"
 msgstr ""
 
-#: library/asyncio-task.rst:721
+#: library/asyncio-task.rst:722
 msgid ""
 "The context manager produced by :func:`asyncio.timeout` can be rescheduled "
 "to a different deadline and inspected."
 msgstr ""
 
-#: library/asyncio-task.rst:726
+#: library/asyncio-task.rst:727
 msgid ""
 "An :ref:`asynchronous context manager <async-context-managers>` for "
 "cancelling overdue coroutines."
 msgstr ""
 
-#: library/asyncio-task.rst:729
+#: library/asyncio-task.rst:730
 msgid ""
 "``when`` should be an absolute time at which the context should time out, as "
 "measured by the event loop's clock:"
 msgstr ""
 
-#: library/asyncio-task.rst:732
+#: library/asyncio-task.rst:733
 msgid "If ``when`` is ``None``, the timeout will never trigger."
 msgstr ""
 
-#: library/asyncio-task.rst:733
+#: library/asyncio-task.rst:734
 msgid ""
 "If ``when < loop.time()``, the timeout will trigger on the next iteration of "
 "the event loop."
 msgstr ""
 
-#: library/asyncio-task.rst:738
+#: library/asyncio-task.rst:739
 msgid ""
 "Return the current deadline, or ``None`` if the current deadline is not set."
 msgstr ""
 
-#: library/asyncio-task.rst:743
+#: library/asyncio-task.rst:744
 msgid "Reschedule the timeout."
 msgstr ""
 
-#: library/asyncio-task.rst:747
+#: library/asyncio-task.rst:748
 msgid "Return whether the context manager has exceeded its deadline (expired)."
 msgstr ""
 
-#: library/asyncio-task.rst:752
+#: library/asyncio-task.rst:753
 msgid ""
 "async def main():\n"
 "    try:\n"
@@ -1005,17 +1005,17 @@ msgid ""
 "        print(\"Looks like we haven't finished on time.\")"
 msgstr ""
 
-#: library/asyncio-task.rst:767
+#: library/asyncio-task.rst:768
 msgid "Timeout context managers can be safely nested."
 msgstr ""
 
-#: library/asyncio-task.rst:773
+#: library/asyncio-task.rst:774
 msgid ""
 "Similar to :func:`asyncio.timeout`, except *when* is the absolute time to "
 "stop waiting, or ``None``."
 msgstr ""
 
-#: library/asyncio-task.rst:778
+#: library/asyncio-task.rst:779
 msgid ""
 "async def main():\n"
 "    loop = get_running_loop()\n"
@@ -1029,41 +1029,41 @@ msgid ""
 "    print(\"This statement will run regardless.\")"
 msgstr ""
 
-#: library/asyncio-task.rst:793
+#: library/asyncio-task.rst:795
 msgid ""
 "Wait for the *aw* :ref:`awaitable <asyncio-awaitables>` to complete with a "
 "timeout."
 msgstr ""
 
-#: library/asyncio-task.rst:798
+#: library/asyncio-task.rst:800
 msgid ""
 "*timeout* can either be ``None`` or a float or int number of seconds to wait "
 "for.  If *timeout* is ``None``, block until the future completes."
 msgstr ""
 
-#: library/asyncio-task.rst:802
+#: library/asyncio-task.rst:804
 msgid ""
 "If a timeout occurs, it cancels the task and raises :exc:`TimeoutError`."
 msgstr ""
 
-#: library/asyncio-task.rst:805
+#: library/asyncio-task.rst:807
 msgid ""
 "To avoid the task :meth:`cancellation <Task.cancel>`, wrap it in :func:"
 "`shield`."
 msgstr ""
 
-#: library/asyncio-task.rst:808
+#: library/asyncio-task.rst:810
 msgid ""
 "The function will wait until the future is actually cancelled, so the total "
 "wait time may exceed the *timeout*. If an exception happens during "
 "cancellation, it is propagated."
 msgstr ""
 
-#: library/asyncio-task.rst:812
+#: library/asyncio-task.rst:814
 msgid "If the wait is cancelled, the future *aw* is also cancelled."
 msgstr ""
 
-#: library/asyncio-task.rst:818
+#: library/asyncio-task.rst:820
 msgid ""
 "async def eternity():\n"
 "    # Sleep for one hour\n"
@@ -1084,100 +1084,100 @@ msgid ""
 "#     timeout!"
 msgstr ""
 
-#: library/asyncio-task.rst:836
+#: library/asyncio-task.rst:838
 msgid ""
 "When *aw* is cancelled due to a timeout, ``wait_for`` waits for *aw* to be "
 "cancelled.  Previously, it raised :exc:`TimeoutError` immediately."
 msgstr ""
 
-#: library/asyncio-task.rst:844
+#: library/asyncio-task.rst:846
 msgid "Raises :exc:`TimeoutError` instead of :exc:`asyncio.TimeoutError`."
 msgstr ""
 
-#: library/asyncio-task.rst:849
+#: library/asyncio-task.rst:851
 msgid "Waiting Primitives"
 msgstr ""
 
-#: library/asyncio-task.rst:853
+#: library/asyncio-task.rst:856
 msgid ""
 "Run :class:`~asyncio.Future` and :class:`~asyncio.Task` instances in the "
 "*aws* iterable concurrently and block until the condition specified by "
 "*return_when*."
 msgstr ""
 
-#: library/asyncio-task.rst:857
+#: library/asyncio-task.rst:860
 msgid "The *aws* iterable must not be empty."
 msgstr ""
 
-#: library/asyncio-task.rst:859
+#: library/asyncio-task.rst:862
 msgid "Returns two sets of Tasks/Futures: ``(done, pending)``."
 msgstr ""
 
-#: library/asyncio-task.rst:861
+#: library/asyncio-task.rst:864
 msgid "Usage::"
 msgstr ""
 
-#: library/asyncio-task.rst:863
+#: library/asyncio-task.rst:866
 msgid "done, pending = await asyncio.wait(aws)"
 msgstr ""
 
-#: library/asyncio-task.rst:865
+#: library/asyncio-task.rst:868
 msgid ""
 "*timeout* (a float or int), if specified, can be used to control the maximum "
 "number of seconds to wait before returning."
 msgstr ""
 
-#: library/asyncio-task.rst:868
+#: library/asyncio-task.rst:871
 msgid ""
 "Note that this function does not raise :exc:`TimeoutError`. Futures or Tasks "
 "that aren't done when the timeout occurs are simply returned in the second "
 "set."
 msgstr ""
 
-#: library/asyncio-task.rst:872
+#: library/asyncio-task.rst:875
 msgid ""
 "*return_when* indicates when this function should return.  It must be one of "
 "the following constants:"
 msgstr ""
 
-#: library/asyncio-task.rst:878
+#: library/asyncio-task.rst:881
 msgid "Constant"
 msgstr ""
 
-#: library/asyncio-task.rst:879
+#: library/asyncio-task.rst:882
 msgid "Description"
 msgstr ""
 
-#: library/asyncio-task.rst:882
+#: library/asyncio-task.rst:885
 msgid "The function will return when any future finishes or is cancelled."
 msgstr ""
 
-#: library/asyncio-task.rst:885
+#: library/asyncio-task.rst:888
 msgid ""
 "The function will return when any future finishes by raising an exception. "
 "If no future raises an exception then it is equivalent to :const:"
 "`ALL_COMPLETED`."
 msgstr ""
 
-#: library/asyncio-task.rst:890
+#: library/asyncio-task.rst:893
 msgid "The function will return when all futures finish or are cancelled."
 msgstr ""
 
-#: library/asyncio-task.rst:892
+#: library/asyncio-task.rst:895
 msgid ""
 "Unlike :func:`~asyncio.wait_for`, ``wait()`` does not cancel the futures "
 "when a timeout occurs."
 msgstr ""
 
-#: library/asyncio-task.rst:898
+#: library/asyncio-task.rst:901
 msgid "Passing coroutine objects to ``wait()`` directly is forbidden."
 msgstr ""
 
-#: library/asyncio-task.rst:928
+#: library/asyncio-task.rst:931
 msgid "Added support for generators yielding tasks."
 msgstr ""
 
-#: library/asyncio-task.rst:907
+#: library/asyncio-task.rst:910
 msgid ""
 "Run :ref:`awaitable objects <asyncio-awaitables>` in the *aws* iterable "
 "concurrently.  Return an iterator of coroutines. Each coroutine returned can "
@@ -1185,33 +1185,33 @@ msgid ""
 "remaining awaitables."
 msgstr ""
 
-#: library/asyncio-task.rst:912
+#: library/asyncio-task.rst:915
 msgid ""
 "Raises :exc:`TimeoutError` if the timeout occurs before all Futures are done."
 msgstr ""
 
-#: library/asyncio-task.rst:917
+#: library/asyncio-task.rst:920
 msgid ""
 "for coro in as_completed(aws):\n"
 "    earliest_result = await coro\n"
 "    # ..."
 msgstr ""
 
-#: library/asyncio-task.rst:924
+#: library/asyncio-task.rst:927
 msgid ""
 "Deprecation warning is emitted if not all awaitable objects in the *aws* "
 "iterable are Future-like objects and there is no running event loop."
 msgstr ""
 
-#: library/asyncio-task.rst:933
+#: library/asyncio-task.rst:936
 msgid "Running in Threads"
 msgstr ""
 
-#: library/asyncio-task.rst:937
+#: library/asyncio-task.rst:941
 msgid "Asynchronously run function *func* in a separate thread."
 msgstr ""
 
-#: library/asyncio-task.rst:939
+#: library/asyncio-task.rst:943
 msgid ""
 "Any \\*args and \\*\\*kwargs supplied for this function are directly passed "
 "to *func*. Also, the current :class:`contextvars.Context` is propagated, "
@@ -1219,19 +1219,19 @@ msgid ""
 "separate thread."
 msgstr ""
 
-#: library/asyncio-task.rst:944
+#: library/asyncio-task.rst:948
 msgid ""
 "Return a coroutine that can be awaited to get the eventual result of *func*."
 msgstr ""
 
-#: library/asyncio-task.rst:946
+#: library/asyncio-task.rst:950
 msgid ""
 "This coroutine function is primarily intended to be used for executing IO-"
 "bound functions/methods that would otherwise block the event loop if they "
 "were run in the main thread. For example::"
 msgstr ""
 
-#: library/asyncio-task.rst:950
+#: library/asyncio-task.rst:954
 msgid ""
 "def blocking_io():\n"
 "    print(f\"start blocking_io at {time.strftime('%X')}\")\n"
@@ -1260,7 +1260,7 @@ msgid ""
 "# finished main at 19:50:54"
 msgstr ""
 
-#: library/asyncio-task.rst:976
+#: library/asyncio-task.rst:980
 msgid ""
 "Directly calling ``blocking_io()`` in any coroutine would block the event "
 "loop for its duration, resulting in an additional 1 second of run time. "
@@ -1268,7 +1268,7 @@ msgid ""
 "thread without blocking the event loop."
 msgstr ""
 
-#: library/asyncio-task.rst:983
+#: library/asyncio-task.rst:987
 msgid ""
 "Due to the :term:`GIL`, ``asyncio.to_thread()`` can typically only be used "
 "to make IO-bound functions non-blocking. However, for extension modules that "
@@ -1276,27 +1276,27 @@ msgid ""
 "``asyncio.to_thread()`` can also be used for CPU-bound functions."
 msgstr ""
 
-#: library/asyncio-task.rst:992
+#: library/asyncio-task.rst:996
 msgid "Scheduling From Other Threads"
 msgstr ""
 
-#: library/asyncio-task.rst:996
+#: library/asyncio-task.rst:1000
 msgid "Submit a coroutine to the given event loop.  Thread-safe."
 msgstr ""
 
-#: library/asyncio-task.rst:998
+#: library/asyncio-task.rst:1002
 msgid ""
 "Return a :class:`concurrent.futures.Future` to wait for the result from "
 "another OS thread."
 msgstr ""
 
-#: library/asyncio-task.rst:1001
+#: library/asyncio-task.rst:1005
 msgid ""
 "This function is meant to be called from a different OS thread than the one "
 "where the event loop is running.  Example::"
 msgstr ""
 
-#: library/asyncio-task.rst:1004
+#: library/asyncio-task.rst:1008
 msgid ""
 "# Create a coroutine\n"
 "coro = asyncio.sleep(1, result=3)\n"
@@ -1308,13 +1308,13 @@ msgid ""
 "assert future.result(timeout) == 3"
 msgstr ""
 
-#: library/asyncio-task.rst:1013
+#: library/asyncio-task.rst:1017
 msgid ""
 "If an exception is raised in the coroutine, the returned Future will be "
 "notified.  It can also be used to cancel the task in the event loop::"
 msgstr ""
 
-#: library/asyncio-task.rst:1017
+#: library/asyncio-task.rst:1021
 msgid ""
 "try:\n"
 "    result = future.result(timeout)\n"
@@ -1327,59 +1327,59 @@ msgid ""
 "    print(f'The coroutine returned: {result!r}')"
 msgstr ""
 
-#: library/asyncio-task.rst:1027
+#: library/asyncio-task.rst:1031
 msgid ""
 "See the :ref:`concurrency and multithreading <asyncio-multithreading>` "
 "section of the documentation."
 msgstr ""
 
-#: library/asyncio-task.rst:1030
+#: library/asyncio-task.rst:1034
 msgid ""
 "Unlike other asyncio functions this function requires the *loop* argument to "
 "be passed explicitly."
 msgstr ""
 
-#: library/asyncio-task.rst:1037
+#: library/asyncio-task.rst:1041
 msgid "Introspection"
 msgstr ""
 
-#: library/asyncio-task.rst:1042
+#: library/asyncio-task.rst:1046
 msgid ""
 "Return the currently running :class:`Task` instance, or ``None`` if no task "
 "is running."
 msgstr ""
 
-#: library/asyncio-task.rst:1045
+#: library/asyncio-task.rst:1049
 msgid ""
 "If *loop* is ``None`` :func:`get_running_loop` is used to get the current "
 "loop."
 msgstr ""
 
-#: library/asyncio-task.rst:1053
+#: library/asyncio-task.rst:1057
 msgid "Return a set of not yet finished :class:`Task` objects run by the loop."
 msgstr ""
 
-#: library/asyncio-task.rst:1056
+#: library/asyncio-task.rst:1060
 msgid ""
 "If *loop* is ``None``, :func:`get_running_loop` is used for getting current "
 "loop."
 msgstr ""
 
-#: library/asyncio-task.rst:1064
+#: library/asyncio-task.rst:1068
 msgid "Return ``True`` if *obj* is a coroutine object."
 msgstr ""
 
-#: library/asyncio-task.rst:1070
+#: library/asyncio-task.rst:1074
 msgid "Task Object"
 msgstr ""
 
-#: library/asyncio-task.rst:1074
+#: library/asyncio-task.rst:1078
 msgid ""
 "A :class:`Future-like <Future>` object that runs a Python :ref:`coroutine "
 "<coroutine>`.  Not thread-safe."
 msgstr ""
 
-#: library/asyncio-task.rst:1077
+#: library/asyncio-task.rst:1081
 msgid ""
 "Tasks are used to run coroutines in event loops. If a coroutine awaits on a "
 "Future, the Task suspends the execution of the coroutine and waits for the "
@@ -1387,21 +1387,21 @@ msgid ""
 "wrapped coroutine resumes."
 msgstr ""
 
-#: library/asyncio-task.rst:1083
+#: library/asyncio-task.rst:1087
 msgid ""
 "Event loops use cooperative scheduling: an event loop runs one Task at a "
 "time.  While a Task awaits for the completion of a Future, the event loop "
 "runs other Tasks, callbacks, or performs IO operations."
 msgstr ""
 
-#: library/asyncio-task.rst:1088
+#: library/asyncio-task.rst:1092
 msgid ""
 "Use the high-level :func:`asyncio.create_task` function to create Tasks, or "
 "the low-level :meth:`loop.create_task` or :func:`ensure_future` functions.  "
 "Manual instantiation of Tasks is discouraged."
 msgstr ""
 
-#: library/asyncio-task.rst:1093
+#: library/asyncio-task.rst:1097
 msgid ""
 "To cancel a running Task use the :meth:`cancel` method.  Calling it will "
 "cause the Task to throw a :exc:`CancelledError` exception into the wrapped "
@@ -1409,20 +1409,20 @@ msgid ""
 "cancellation, the Future object will be cancelled."
 msgstr ""
 
-#: library/asyncio-task.rst:1098
+#: library/asyncio-task.rst:1102
 msgid ""
 ":meth:`cancelled` can be used to check if the Task was cancelled. The method "
 "returns ``True`` if the wrapped coroutine did not suppress the :exc:"
 "`CancelledError` exception and was actually cancelled."
 msgstr ""
 
-#: library/asyncio-task.rst:1103
+#: library/asyncio-task.rst:1107
 msgid ""
 ":class:`asyncio.Task` inherits from :class:`Future` all of its APIs except :"
 "meth:`Future.set_result` and :meth:`Future.set_exception`."
 msgstr ""
 
-#: library/asyncio-task.rst:1107
+#: library/asyncio-task.rst:1111
 msgid ""
 "An optional keyword-only *context* argument allows specifying a custom :"
 "class:`contextvars.Context` for the *coro* to run in. If no *context* is "
@@ -1430,7 +1430,7 @@ msgid ""
 "in the copied context."
 msgstr ""
 
-#: library/asyncio-task.rst:1112
+#: library/asyncio-task.rst:1116
 msgid ""
 "An optional keyword-only *eager_start* argument allows eagerly starting the "
 "execution of the :class:`asyncio.Task` at task creation time. If set to "
@@ -1440,96 +1440,96 @@ msgid ""
 "eagerly and will skip scheduling to the event loop."
 msgstr ""
 
-#: library/asyncio-task.rst:1119
+#: library/asyncio-task.rst:1123
 msgid "Added support for the :mod:`contextvars` module."
 msgstr ""
 
-#: library/asyncio-task.rst:1125
+#: library/asyncio-task.rst:1129
 msgid ""
 "Deprecation warning is emitted if *loop* is not specified and there is no "
 "running event loop."
 msgstr ""
 
-#: library/asyncio-task.rst:1132
+#: library/asyncio-task.rst:1136
 msgid "Added the *eager_start* parameter."
 msgstr ""
 
-#: library/asyncio-task.rst:1137
+#: library/asyncio-task.rst:1141
 msgid "Return ``True`` if the Task is *done*."
 msgstr ""
 
-#: library/asyncio-task.rst:1139
+#: library/asyncio-task.rst:1143
 msgid ""
 "A Task is *done* when the wrapped coroutine either returned a value, raised "
 "an exception, or the Task was cancelled."
 msgstr ""
 
-#: library/asyncio-task.rst:1144
+#: library/asyncio-task.rst:1148
 msgid "Return the result of the Task."
 msgstr ""
 
-#: library/asyncio-task.rst:1146
+#: library/asyncio-task.rst:1150
 msgid ""
 "If the Task is *done*, the result of the wrapped coroutine is returned (or "
 "if the coroutine raised an exception, that exception is re-raised.)"
 msgstr ""
 
-#: library/asyncio-task.rst:1164
+#: library/asyncio-task.rst:1168
 msgid ""
 "If the Task has been *cancelled*, this method raises a :exc:`CancelledError` "
 "exception."
 msgstr ""
 
-#: library/asyncio-task.rst:1153
+#: library/asyncio-task.rst:1157
 msgid ""
 "If the Task's result isn't yet available, this method raises an :exc:"
 "`InvalidStateError` exception."
 msgstr ""
 
-#: library/asyncio-task.rst:1158
+#: library/asyncio-task.rst:1162
 msgid "Return the exception of the Task."
 msgstr ""
 
-#: library/asyncio-task.rst:1160
+#: library/asyncio-task.rst:1164
 msgid ""
 "If the wrapped coroutine raised an exception that exception is returned.  If "
 "the wrapped coroutine returned normally this method returns ``None``."
 msgstr ""
 
-#: library/asyncio-task.rst:1167
+#: library/asyncio-task.rst:1171
 msgid ""
 "If the Task isn't *done* yet, this method raises an :exc:`InvalidStateError` "
 "exception."
 msgstr ""
 
-#: library/asyncio-task.rst:1172
+#: library/asyncio-task.rst:1176
 msgid "Add a callback to be run when the Task is *done*."
 msgstr ""
 
-#: library/asyncio-task.rst:1183
+#: library/asyncio-task.rst:1187
 msgid "This method should only be used in low-level callback-based code."
 msgstr ""
 
-#: library/asyncio-task.rst:1176
+#: library/asyncio-task.rst:1180
 msgid ""
 "See the documentation of :meth:`Future.add_done_callback` for more details."
 msgstr ""
 
-#: library/asyncio-task.rst:1181
+#: library/asyncio-task.rst:1185
 msgid "Remove *callback* from the callbacks list."
 msgstr ""
 
-#: library/asyncio-task.rst:1185
+#: library/asyncio-task.rst:1189
 msgid ""
 "See the documentation of :meth:`Future.remove_done_callback` for more "
 "details."
 msgstr ""
 
-#: library/asyncio-task.rst:1190
+#: library/asyncio-task.rst:1194
 msgid "Return the list of stack frames for this Task."
 msgstr ""
 
-#: library/asyncio-task.rst:1192
+#: library/asyncio-task.rst:1196
 msgid ""
 "If the wrapped coroutine is not done, this returns the stack where it is "
 "suspended.  If the coroutine has completed successfully or was cancelled, "
@@ -1537,15 +1537,15 @@ msgid ""
 "this returns the list of traceback frames."
 msgstr ""
 
-#: library/asyncio-task.rst:1198
+#: library/asyncio-task.rst:1202
 msgid "The frames are always ordered from oldest to newest."
 msgstr ""
 
-#: library/asyncio-task.rst:1200
+#: library/asyncio-task.rst:1204
 msgid "Only one stack frame is returned for a suspended coroutine."
 msgstr ""
 
-#: library/asyncio-task.rst:1202
+#: library/asyncio-task.rst:1206
 msgid ""
 "The optional *limit* argument sets the maximum number of frames to return; "
 "by default all available frames are returned. The ordering of the returned "
@@ -1554,81 +1554,81 @@ msgid ""
 "are returned.  (This matches the behavior of the traceback module.)"
 msgstr ""
 
-#: library/asyncio-task.rst:1211
+#: library/asyncio-task.rst:1215
 msgid "Print the stack or traceback for this Task."
 msgstr ""
 
-#: library/asyncio-task.rst:1213
+#: library/asyncio-task.rst:1217
 msgid ""
 "This produces output similar to that of the traceback module for the frames "
 "retrieved by :meth:`get_stack`."
 msgstr ""
 
-#: library/asyncio-task.rst:1216
+#: library/asyncio-task.rst:1220
 msgid "The *limit* argument is passed to :meth:`get_stack` directly."
 msgstr ""
 
-#: library/asyncio-task.rst:1218
+#: library/asyncio-task.rst:1222
 msgid ""
 "The *file* argument is an I/O stream to which the output is written; by "
 "default output is written to :data:`sys.stdout`."
 msgstr ""
 
-#: library/asyncio-task.rst:1223
+#: library/asyncio-task.rst:1227
 msgid "Return the coroutine object wrapped by the :class:`Task`."
 msgstr ""
 
-#: library/asyncio-task.rst:1227
+#: library/asyncio-task.rst:1231
 msgid ""
 "This will return ``None`` for Tasks which have already completed eagerly. "
 "See the :ref:`Eager Task Factory <eager-task-factory>`."
 msgstr ""
 
-#: library/asyncio-task.rst:1234
+#: library/asyncio-task.rst:1238
 msgid "Newly added eager task execution means result may be ``None``."
 msgstr ""
 
-#: library/asyncio-task.rst:1238
+#: library/asyncio-task.rst:1242
 msgid ""
 "Return the :class:`contextvars.Context` object associated with the task."
 msgstr ""
 
-#: library/asyncio-task.rst:1245
+#: library/asyncio-task.rst:1249
 msgid "Return the name of the Task."
 msgstr ""
 
-#: library/asyncio-task.rst:1247
+#: library/asyncio-task.rst:1251
 msgid ""
 "If no name has been explicitly assigned to the Task, the default asyncio "
 "Task implementation generates a default name during instantiation."
 msgstr ""
 
-#: library/asyncio-task.rst:1255
+#: library/asyncio-task.rst:1259
 msgid "Set the name of the Task."
 msgstr ""
 
-#: library/asyncio-task.rst:1257
+#: library/asyncio-task.rst:1261
 msgid ""
 "The *value* argument can be any object, which is then converted to a string."
 msgstr ""
 
-#: library/asyncio-task.rst:1260
+#: library/asyncio-task.rst:1264
 msgid ""
 "In the default Task implementation, the name will be visible in the :func:"
 "`repr` output of a task object."
 msgstr ""
 
-#: library/asyncio-task.rst:1267
+#: library/asyncio-task.rst:1271
 msgid "Request the Task to be cancelled."
 msgstr ""
 
-#: library/asyncio-task.rst:1269
+#: library/asyncio-task.rst:1273
 msgid ""
 "This arranges for a :exc:`CancelledError` exception to be thrown into the "
 "wrapped coroutine on the next cycle of the event loop."
 msgstr ""
 
-#: library/asyncio-task.rst:1272
+#: library/asyncio-task.rst:1276
 msgid ""
 "The coroutine then has a chance to clean up or even deny the request by "
 "suppressing the exception with a :keyword:`try` ... ... ``except "
@@ -1640,21 +1640,21 @@ msgid ""
 "addition to catching the exception."
 msgstr ""
 
-#: library/asyncio-task.rst:1282
+#: library/asyncio-task.rst:1286
 msgid "Added the *msg* parameter."
 msgstr ""
 
-#: library/asyncio-task.rst:1285
+#: library/asyncio-task.rst:1289
 msgid "The ``msg`` parameter is propagated from cancelled task to its awaiter."
 msgstr ""
 
-#: library/asyncio-task.rst:1290
+#: library/asyncio-task.rst:1294
 msgid ""
 "The following example illustrates how coroutines can intercept the "
 "cancellation request::"
 msgstr ""
 
-#: library/asyncio-task.rst:1293
+#: library/asyncio-task.rst:1297
 msgid ""
 "async def cancel_me():\n"
 "    print('cancel_me(): before sleep')\n"
@@ -1691,32 +1691,32 @@ msgid ""
 "#     main(): cancel_me is cancelled now"
 msgstr ""
 
-#: library/asyncio-task.rst:1329
+#: library/asyncio-task.rst:1333
 msgid "Return ``True`` if the Task is *cancelled*."
 msgstr ""
 
-#: library/asyncio-task.rst:1331
+#: library/asyncio-task.rst:1335
 msgid ""
 "The Task is *cancelled* when the cancellation was requested with :meth:"
 "`cancel` and the wrapped coroutine propagated the :exc:`CancelledError` "
 "exception thrown into it."
 msgstr ""
 
-#: library/asyncio-task.rst:1337
+#: library/asyncio-task.rst:1341
 msgid "Decrement the count of cancellation requests to this Task."
 msgstr ""
 
-#: library/asyncio-task.rst:1339
+#: library/asyncio-task.rst:1343
 msgid "Returns the remaining number of cancellation requests."
 msgstr ""
 
-#: library/asyncio-task.rst:1341
+#: library/asyncio-task.rst:1345
 msgid ""
 "Note that once execution of a cancelled task completed, further calls to :"
 "meth:`uncancel` are ineffective."
 msgstr ""
 
-#: library/asyncio-task.rst:1346
+#: library/asyncio-task.rst:1350
 msgid ""
 "This method is used by asyncio's internals and isn't expected to be used by "
 "end-user code.  In particular, if a Task gets successfully uncancelled, this "
@@ -1725,7 +1725,7 @@ msgid ""
 "respective structured block. For example::"
 msgstr ""
 
-#: library/asyncio-task.rst:1353
+#: library/asyncio-task.rst:1357
 msgid ""
 "async def make_request_with_timeout():\n"
 "    try:\n"
@@ -1739,7 +1739,7 @@ msgid ""
 "    await unrelated_code()"
 msgstr ""
 
-#: library/asyncio-task.rst:1364
+#: library/asyncio-task.rst:1368
 msgid ""
 "While the block with ``make_request()`` and ``make_another_request()`` might "
 "get cancelled due to the timeout, ``unrelated_code()`` should continue "
@@ -1748,20 +1748,20 @@ msgid ""
 "similar fashion."
 msgstr ""
 
-#: library/asyncio-task.rst:1370
+#: library/asyncio-task.rst:1374
 msgid ""
 "If end-user code is, for some reason, suppressing cancellation by catching :"
 "exc:`CancelledError`, it needs to call this method to remove the "
 "cancellation state."
 msgstr ""
 
-#: library/asyncio-task.rst:1376
+#: library/asyncio-task.rst:1380
 msgid ""
 "Return the number of pending cancellation requests to this Task, i.e., the "
 "number of calls to :meth:`cancel` less the number of :meth:`uncancel` calls."
 msgstr ""
 
-#: library/asyncio-task.rst:1380
+#: library/asyncio-task.rst:1384
 msgid ""
 "Note that if this number is greater than zero but the Task is still "
 "executing, :meth:`cancelled` will still return ``False``. This is because "
@@ -1770,7 +1770,7 @@ msgid ""
 "to zero."
 msgstr ""
 
-#: library/asyncio-task.rst:1386
+#: library/asyncio-task.rst:1390
 msgid ""
 "This method is used by asyncio's internals and isn't expected to be used by "
 "end-user code.  See :meth:`uncancel` for more details."
diff --git a/library/asyncore.po b/library/asyncore.po
new file mode 100644
index 000000000..d467b17bb
--- /dev/null
+++ b/library/asyncore.po
@@ -0,0 +1,38 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) 2001-2025, Python Software Foundation
+# This file is distributed under the same license as the Python package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Python 3.12\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: library/asyncore.rst:2
+msgid ":mod:`!asyncore` --- Asynchronous socket handler"
+msgstr ""
+
+#: library/asyncore.rst:10
+msgid ""
+"This module is no longer part of the Python standard library. It was :ref:"
+"`removed in Python 3.12 <whatsnew312-removed>` after being deprecated in "
+"Python 3.6.  The removal was decided in :pep:`594`."
+msgstr ""
+
+#: library/asyncore.rst:14
+msgid "Applications should use the :mod:`asyncio` module instead."
+msgstr ""
+
+#: library/asyncore.rst:16
+msgid ""
+"The last version of Python that provided the :mod:`!asyncore` module was "
+"`Python 3.11 <https://docs.python.org/3.11/library/asyncore.html>`_."
+msgstr ""
diff --git a/library/calendar.po b/library/calendar.po
index 54a138c31..36bfeacff 100644
--- a/library/calendar.po
+++ b/library/calendar.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -61,17 +61,44 @@ msgid ""
 msgstr ""
 
 #: library/calendar.rst:41
-msgid ":class:`Calendar` instances have the following methods:"
+msgid ":class:`Calendar` instances have the following methods and attributes:"
 msgstr ""
 
 #: library/calendar.rst:45
+msgid "The first weekday as an integer (0--6)."
+msgstr ""
+
+#: library/calendar.rst:47
+msgid ""
+"This property can also be set and read using :meth:`~Calendar."
+"setfirstweekday` and :meth:`~Calendar.getfirstweekday` respectively."
+msgstr ""
+
+#: library/calendar.rst:53
+msgid "Return an :class:`int` for the current first weekday (0--6)."
+msgstr ""
+
+#: library/calendar.rst:55
+msgid "Identical to reading the :attr:`~Calendar.firstweekday` property."
+msgstr ""
+
+#: library/calendar.rst:59
+msgid ""
+"Set the first weekday to *firstweekday*, passed as an :class:`int` (0--6)"
+msgstr ""
+
+#: library/calendar.rst:61
+msgid "Identical to setting the :attr:`~Calendar.firstweekday` property."
+msgstr ""
+
+#: library/calendar.rst:65
 msgid ""
 "Return an iterator for the week day numbers that will be used for one week.  "
 "The first value from the iterator will be the same as the value of the :attr:"
-"`firstweekday` property."
+"`~Calendar.firstweekday` property."
 msgstr ""
 
-#: library/calendar.rst:52
+#: library/calendar.rst:72
 msgid ""
 "Return an iterator for the month *month* (1--12) in the year *year*. This "
 "iterator will return all days (as :class:`datetime.date` objects) for the "
@@ -79,7 +106,7 @@ msgid ""
 "month that are required to get a complete week."
 msgstr ""
 
-#: library/calendar.rst:60
+#: library/calendar.rst:80
 msgid ""
 "Return an iterator for the month *month* in the year *year* similar to :meth:"
 "`itermonthdates`, but not restricted by the :class:`datetime.date` range. "
@@ -87,7 +114,7 @@ msgid ""
 "of the specified month, the day number is ``0``."
 msgstr ""
 
-#: library/calendar.rst:68
+#: library/calendar.rst:88
 msgid ""
 "Return an iterator for the month *month* in the year *year* similar to :meth:"
 "`itermonthdates`, but not restricted by the :class:`datetime.date` range. "
@@ -95,7 +122,7 @@ msgid ""
 "week day number."
 msgstr ""
 
-#: library/calendar.rst:76
+#: library/calendar.rst:96
 msgid ""
 "Return an iterator for the month *month* in the year *year* similar to :meth:"
 "`itermonthdates`, but not restricted by the :class:`datetime.date` range. "
@@ -103,7 +130,7 @@ msgid ""
 "month numbers."
 msgstr ""
 
-#: library/calendar.rst:86
+#: library/calendar.rst:106
 msgid ""
 "Return an iterator for the month *month* in the year *year* similar to :meth:"
 "`itermonthdates`, but not restricted by the :class:`datetime.date` range. "
@@ -111,25 +138,25 @@ msgid ""
 "month, and a day of the week numbers."
 msgstr ""
 
-#: library/calendar.rst:96
+#: library/calendar.rst:116
 msgid ""
 "Return a list of the weeks in the month *month* of the *year* as full "
 "weeks.  Weeks are lists of seven :class:`datetime.date` objects."
 msgstr ""
 
-#: library/calendar.rst:102
+#: library/calendar.rst:122
 msgid ""
 "Return a list of the weeks in the month *month* of the *year* as full "
 "weeks.  Weeks are lists of seven tuples of day numbers and weekday numbers."
 msgstr ""
 
-#: library/calendar.rst:109
+#: library/calendar.rst:129
 msgid ""
 "Return a list of the weeks in the month *month* of the *year* as full "
 "weeks.  Weeks are lists of seven day numbers."
 msgstr ""
 
-#: library/calendar.rst:115
+#: library/calendar.rst:135
 msgid ""
 "Return the data for the specified year ready for formatting. The return "
 "value is a list of month rows. Each month row contains up to *width* months "
@@ -137,29 +164,58 @@ msgid ""
 "contains 1--7 days. Days are :class:`datetime.date` objects."
 msgstr ""
 
-#: library/calendar.rst:123
+#: library/calendar.rst:143
 msgid ""
 "Return the data for the specified year ready for formatting (similar to :"
 "meth:`yeardatescalendar`). Entries in the week lists are tuples of day "
 "numbers and weekday numbers. Day numbers outside this month are zero."
 msgstr ""
 
-#: library/calendar.rst:130
+#: library/calendar.rst:150
 msgid ""
 "Return the data for the specified year ready for formatting (similar to :"
 "meth:`yeardatescalendar`). Entries in the week lists are day numbers. Day "
 "numbers outside this month are zero."
 msgstr ""
 
-#: library/calendar.rst:137
+#: library/calendar.rst:157
 msgid "This class can be used to generate plain text calendars."
 msgstr ""
 
-#: library/calendar.rst:139
+#: library/calendar.rst:159
 msgid ":class:`TextCalendar` instances have the following methods:"
 msgstr ""
 
-#: library/calendar.rst:143
+#: library/calendar.rst:164
+msgid ""
+"Return a string representing a single day formatted with the given *width*. "
+"If *theday* is ``0``, return a string of spaces of the specified width, "
+"representing an empty day. The *weekday* parameter is unused."
+msgstr ""
+
+#: library/calendar.rst:171
+msgid ""
+"Return a single week in a string with no newline. If *w* is provided, it "
+"specifies the width of the date columns, which are centered. Depends on the "
+"first weekday as specified in the constructor or set by the :meth:"
+"`setfirstweekday` method."
+msgstr ""
+
+#: library/calendar.rst:178
+msgid ""
+"Return a string representing the name of a single weekday formatted to the "
+"specified *width*. The *weekday* parameter is an integer representing the "
+"day of the week, where ``0`` is Monday and ``6`` is Sunday."
+msgstr ""
+
+#: library/calendar.rst:184
+msgid ""
+"Return a string containing the header row of weekday names, formatted with "
+"the given *width* for each column. The names depend on the locale settings "
+"and are padded to the specified width."
+msgstr ""
+
+#: library/calendar.rst:190
 msgid ""
 "Return a month's calendar in a multi-line string. If *w* is provided, it "
 "specifies the width of the date columns, which are centered. If *l* is "
@@ -168,11 +224,19 @@ msgid ""
 "`setfirstweekday` method."
 msgstr ""
 
-#: library/calendar.rst:152
+#: library/calendar.rst:198
+msgid ""
+"Return a string representing the month's name centered within the specified "
+"*width*. If *withyear* is ``True``, include the year in the output. The "
+"*theyear* and *themonth* parameters specify the year and month for the name "
+"to be formatted respectively."
+msgstr ""
+
+#: library/calendar.rst:205
 msgid "Print a month's calendar as returned by :meth:`formatmonth`."
 msgstr ""
 
-#: library/calendar.rst:157
+#: library/calendar.rst:210
 msgid ""
 "Return a *m*-column calendar for an entire year as a multi-line string. "
 "Optional parameters *w*, *l*, and *c* are for date column width, lines per "
@@ -182,32 +246,32 @@ msgid ""
 "generated is platform-dependent."
 msgstr ""
 
-#: library/calendar.rst:167
+#: library/calendar.rst:220
 msgid ""
 "Print the calendar for an entire year as returned by :meth:`formatyear`."
 msgstr ""
 
-#: library/calendar.rst:172
+#: library/calendar.rst:225
 msgid "This class can be used to generate HTML calendars."
 msgstr ""
 
-#: library/calendar.rst:175
+#: library/calendar.rst:228
 msgid ":class:`!HTMLCalendar` instances have the following methods:"
 msgstr ""
 
-#: library/calendar.rst:179
+#: library/calendar.rst:232
 msgid ""
 "Return a month's calendar as an HTML table. If *withyear* is true the year "
 "will be included in the header, otherwise just the month name will be used."
 msgstr ""
 
-#: library/calendar.rst:186
+#: library/calendar.rst:239
 msgid ""
 "Return a year's calendar as an HTML table. *width* (defaulting to 3) "
 "specifies the number of months per row."
 msgstr ""
 
-#: library/calendar.rst:192
+#: library/calendar.rst:245
 msgid ""
 "Return a year's calendar as a complete HTML page. *width* (defaulting to 3) "
 "specifies the number of months per row. *css* is the name for the cascading "
@@ -216,92 +280,92 @@ msgid ""
 "(defaulting to the system default encoding)."
 msgstr ""
 
-#: library/calendar.rst:201
+#: library/calendar.rst:254
 msgid ""
 "Return a month name as an HTML table row. If *withyear* is true the year "
 "will be included in the row, otherwise just the month name will be used."
 msgstr ""
 
-#: library/calendar.rst:206
+#: library/calendar.rst:259
 msgid ""
 ":class:`!HTMLCalendar` has the following attributes you can override to "
 "customize the CSS classes used by the calendar:"
 msgstr ""
 
-#: library/calendar.rst:211
+#: library/calendar.rst:264
 msgid ""
 "A list of CSS classes used for each weekday. The default class list is::"
 msgstr ""
 
-#: library/calendar.rst:213
+#: library/calendar.rst:266
 msgid ""
 "cssclasses = [\"mon\", \"tue\", \"wed\", \"thu\", \"fri\", \"sat\", \"sun\"]"
 msgstr ""
 
-#: library/calendar.rst:215
+#: library/calendar.rst:268
 msgid "more styles can be added for each day::"
 msgstr ""
 
-#: library/calendar.rst:217
+#: library/calendar.rst:270
 msgid ""
 "cssclasses = [\"mon text-bold\", \"tue\", \"wed\", \"thu\", \"fri\", "
 "\"sat\", \"sun red\"]"
 msgstr ""
 
-#: library/calendar.rst:219
+#: library/calendar.rst:272
 msgid "Note that the length of this list must be seven items."
 msgstr ""
 
-#: library/calendar.rst:224
+#: library/calendar.rst:277
 msgid "The CSS class for a weekday occurring in the previous or coming month."
 msgstr ""
 
-#: library/calendar.rst:231
+#: library/calendar.rst:284
 msgid ""
 "A list of CSS classes used for weekday names in the header row. The default "
 "is the same as :attr:`cssclasses`."
 msgstr ""
 
-#: library/calendar.rst:239
+#: library/calendar.rst:292
 msgid ""
 "The month's head CSS class (used by :meth:`formatmonthname`). The default "
 "value is ``\"month\"``."
 msgstr ""
 
-#: library/calendar.rst:247
+#: library/calendar.rst:300
 msgid ""
 "The CSS class for the whole month's table (used by :meth:`formatmonth`). The "
 "default value is ``\"month\"``."
 msgstr ""
 
-#: library/calendar.rst:255
+#: library/calendar.rst:308
 msgid ""
 "The CSS class for the whole year's table of tables (used by :meth:"
 "`formatyear`). The default value is ``\"year\"``."
 msgstr ""
 
-#: library/calendar.rst:263
+#: library/calendar.rst:316
 msgid ""
 "The CSS class for the table head for the whole year (used by :meth:"
 "`formatyear`). The default value is ``\"year\"``."
 msgstr ""
 
-#: library/calendar.rst:269
+#: library/calendar.rst:322
 msgid ""
 "Note that although the naming for the above described class attributes is "
 "singular (e.g. ``cssclass_month`` ``cssclass_noday``), one can replace the "
 "single CSS class with a space separated list of CSS classes, for example::"
 msgstr ""
 
-#: library/calendar.rst:273
+#: library/calendar.rst:326
 msgid "\"text-bold text-red\""
 msgstr ""
 
-#: library/calendar.rst:275
+#: library/calendar.rst:328
 msgid "Here is an example how :class:`!HTMLCalendar` can be customized::"
 msgstr ""
 
-#: library/calendar.rst:277
+#: library/calendar.rst:330
 msgid ""
 "class CustomHTMLCal(calendar.HTMLCalendar):\n"
 "    cssclasses = [style + \" text-nowrap\" for style in\n"
@@ -311,19 +375,19 @@ msgid ""
 "    cssclass_year = \"text-italic lead\""
 msgstr ""
 
-#: library/calendar.rst:287
+#: library/calendar.rst:340
 msgid ""
 "This subclass of :class:`TextCalendar` can be passed a locale name in the "
 "constructor and will return month and weekday names in the specified locale."
 msgstr ""
 
-#: library/calendar.rst:293
+#: library/calendar.rst:346
 msgid ""
 "This subclass of :class:`HTMLCalendar` can be passed a locale name in the "
 "constructor and will return month and weekday names in the specified locale."
 msgstr ""
 
-#: library/calendar.rst:299
+#: library/calendar.rst:352
 msgid ""
 "The constructor, :meth:`!formatweekday` and :meth:`!formatmonthname` methods "
 "of these two classes temporarily change the ``LC_TIME`` locale to the given "
@@ -331,11 +395,11 @@ msgid ""
 "thread-safe."
 msgstr ""
 
-#: library/calendar.rst:305
+#: library/calendar.rst:358
 msgid "For simple text calendars this module provides the following functions."
 msgstr ""
 
-#: library/calendar.rst:309
+#: library/calendar.rst:362
 msgid ""
 "Sets the weekday (``0`` is Monday, ``6`` is Sunday) to start each week. The "
 "values :const:`MONDAY`, :const:`TUESDAY`, :const:`WEDNESDAY`, :const:"
@@ -343,78 +407,78 @@ msgid ""
 "provided for convenience. For example, to set the first weekday to Sunday::"
 msgstr ""
 
-#: library/calendar.rst:314
+#: library/calendar.rst:367
 msgid ""
 "import calendar\n"
 "calendar.setfirstweekday(calendar.SUNDAY)"
 msgstr ""
 
-#: library/calendar.rst:320
+#: library/calendar.rst:373
 msgid "Returns the current setting for the weekday to start each week."
 msgstr ""
 
-#: library/calendar.rst:325
+#: library/calendar.rst:378
 msgid ""
 "Returns :const:`True` if *year* is a leap year, otherwise :const:`False`."
 msgstr ""
 
-#: library/calendar.rst:330
+#: library/calendar.rst:383
 msgid ""
 "Returns the number of leap years in the range from *y1* to *y2* (exclusive), "
 "where *y1* and *y2* are years."
 msgstr ""
 
-#: library/calendar.rst:333
+#: library/calendar.rst:386
 msgid "This function works for ranges spanning a century change."
 msgstr ""
 
-#: library/calendar.rst:338
+#: library/calendar.rst:391
 msgid ""
 "Returns the day of the week (``0`` is Monday) for *year* (``1970``--...), "
 "*month* (``1``--``12``), *day* (``1``--``31``)."
 msgstr ""
 
-#: library/calendar.rst:344
+#: library/calendar.rst:397
 msgid ""
 "Return a header containing abbreviated weekday names. *n* specifies the "
 "width in characters for one weekday."
 msgstr ""
 
-#: library/calendar.rst:350
+#: library/calendar.rst:403
 msgid ""
 "Returns weekday of first day of the month and number of days in month,  for "
 "the specified *year* and *month*."
 msgstr ""
 
-#: library/calendar.rst:356
+#: library/calendar.rst:409
 msgid ""
 "Returns a matrix representing a month's calendar.  Each row represents a "
 "week; days outside of the month are represented by zeros. Each week begins "
 "with Monday unless set by :func:`setfirstweekday`."
 msgstr ""
 
-#: library/calendar.rst:363
+#: library/calendar.rst:416
 msgid "Prints a month's calendar as returned by :func:`month`."
 msgstr ""
 
-#: library/calendar.rst:368
+#: library/calendar.rst:421
 msgid ""
 "Returns a month's calendar in a multi-line string using the :meth:"
 "`~TextCalendar.formatmonth` of the :class:`TextCalendar` class."
 msgstr ""
 
-#: library/calendar.rst:374
+#: library/calendar.rst:427
 msgid ""
 "Prints the calendar for an entire year as returned by  :func:`calendar`."
 msgstr ""
 
-#: library/calendar.rst:379
+#: library/calendar.rst:432
 msgid ""
 "Returns a 3-column calendar for an entire year as a multi-line string using "
 "the :meth:`~TextCalendar.formatyear` of the :class:`TextCalendar` class."
 msgstr ""
 
-#: library/calendar.rst:385
+#: library/calendar.rst:438
 msgid ""
 "An unrelated but handy function that takes a time tuple such as returned by "
 "the :func:`~time.gmtime` function in the :mod:`time` module, and returns the "
@@ -423,126 +487,126 @@ msgid ""
 "inverse."
 msgstr ""
 
-#: library/calendar.rst:392
+#: library/calendar.rst:445
 msgid "The :mod:`calendar` module exports the following data attributes:"
 msgstr ""
 
-#: library/calendar.rst:396
+#: library/calendar.rst:449
 msgid ""
 "A sequence that represents the days of the week in the current locale, where "
 "Monday is day number 0."
 msgstr ""
 
-#: library/calendar.rst:406
+#: library/calendar.rst:459
 msgid ""
 "A sequence that represents the abbreviated days of the week in the current "
 "locale, where Mon is day number 0."
 msgstr ""
 
-#: library/calendar.rst:421
+#: library/calendar.rst:474
 msgid ""
 "Aliases for the days of the week, where ``MONDAY`` is ``0`` and ``SUNDAY`` "
 "is ``6``."
 msgstr ""
 
-#: library/calendar.rst:429
+#: library/calendar.rst:482
 msgid ""
 "Enumeration defining days of the week as integer constants. The members of "
 "this enumeration are exported to the module scope as :data:`MONDAY` through :"
 "data:`SUNDAY`."
 msgstr ""
 
-#: library/calendar.rst:438
+#: library/calendar.rst:491
 msgid ""
 "A sequence that represents the months of the year in the current locale.  "
 "This follows normal convention of January being month number 1, so it has a "
-"length of 13 and  ``month_name[0]`` is the empty string."
+"length of 13 and ``month_name[0]`` is the empty string."
 msgstr ""
 
-#: library/calendar.rst:449
+#: library/calendar.rst:502
 msgid ""
 "A sequence that represents the abbreviated months of the year in the current "
 "locale.  This follows normal convention of January being month number 1, so "
 "it has a length of 13 and  ``month_abbr[0]`` is the empty string."
 msgstr ""
 
-#: library/calendar.rst:470
+#: library/calendar.rst:523
 msgid ""
 "Aliases for the months of the year, where ``JANUARY`` is ``1`` and "
 "``DECEMBER`` is ``12``."
 msgstr ""
 
-#: library/calendar.rst:478
+#: library/calendar.rst:531
 msgid ""
 "Enumeration defining months of the year as integer constants. The members of "
 "this enumeration are exported to the module scope as :data:`JANUARY` "
 "through :data:`DECEMBER`."
 msgstr ""
 
-#: library/calendar.rst:485
+#: library/calendar.rst:538
 msgid "The :mod:`calendar` module defines the following exceptions:"
 msgstr ""
 
-#: library/calendar.rst:489
+#: library/calendar.rst:542
 msgid ""
 "A subclass of :exc:`ValueError`, raised when the given month number is "
 "outside of the range 1-12 (inclusive)."
 msgstr ""
 
-#: library/calendar.rst:494
+#: library/calendar.rst:547
 msgid "The invalid month number."
 msgstr ""
 
-#: library/calendar.rst:499
+#: library/calendar.rst:552
 msgid ""
 "A subclass of :exc:`ValueError`, raised when the given weekday number is "
 "outside of the range 0-6 (inclusive)."
 msgstr ""
 
-#: library/calendar.rst:504
+#: library/calendar.rst:557
 msgid "The invalid weekday number."
 msgstr ""
 
-#: library/calendar.rst:509
+#: library/calendar.rst:562
 msgid "Module :mod:`datetime`"
 msgstr ""
 
-#: library/calendar.rst:510
+#: library/calendar.rst:563
 msgid ""
 "Object-oriented interface to dates and times with similar functionality to "
 "the :mod:`time` module."
 msgstr ""
 
-#: library/calendar.rst:513
+#: library/calendar.rst:566
 msgid "Module :mod:`time`"
 msgstr ""
 
-#: library/calendar.rst:514
+#: library/calendar.rst:567
 msgid "Low-level time related functions."
 msgstr ""
 
-#: library/calendar.rst:520
+#: library/calendar.rst:573
 msgid "Command-Line Usage"
 msgstr ""
 
-#: library/calendar.rst:524
+#: library/calendar.rst:577
 msgid ""
 "The :mod:`calendar` module can be executed as a script from the command line "
 "to interactively print a calendar."
 msgstr ""
 
-#: library/calendar.rst:527
+#: library/calendar.rst:580
 msgid ""
 "python -m calendar [-h] [-L LOCALE] [-e ENCODING] [-t {text,html}]\n"
 "                   [-w WIDTH] [-l LINES] [-s SPACING] [-m MONTHS] [-c CSS]\n"
 "                   [year] [month]"
 msgstr ""
 
-#: library/calendar.rst:534
+#: library/calendar.rst:587
 msgid "For example, to print a calendar for the year 2000:"
 msgstr ""
 
-#: library/calendar.rst:536
+#: library/calendar.rst:589
 msgid ""
 "$ python -m calendar 2000\n"
 "                                  2000\n"
@@ -583,72 +647,72 @@ msgid ""
 "30 31"
 msgstr ""
 
-#: library/calendar.rst:577
+#: library/calendar.rst:630
 msgid "The following options are accepted:"
 msgstr ""
 
-#: library/calendar.rst:584
+#: library/calendar.rst:637
 msgid "Show the help message and exit."
 msgstr ""
 
-#: library/calendar.rst:589
+#: library/calendar.rst:642
 msgid "The locale to use for month and weekday names. Defaults to English."
 msgstr ""
 
-#: library/calendar.rst:595
+#: library/calendar.rst:648
 msgid ""
 "The encoding to use for output. :option:`--encoding` is required if :option:"
 "`--locale` is set."
 msgstr ""
 
-#: library/calendar.rst:601
+#: library/calendar.rst:654
 msgid "Print the calendar to the terminal as text, or as an HTML document."
 msgstr ""
 
-#: library/calendar.rst:607
+#: library/calendar.rst:660
 msgid ""
 "The year to print the calendar for. Must be a number between 1 and 9999. "
 "Defaults to the current year."
 msgstr ""
 
-#: library/calendar.rst:614
+#: library/calendar.rst:667
 msgid ""
 "The month of the specified :option:`year` to print the calendar for. Must be "
 "a number between 1 and 12, and may only be used in text mode. Defaults to "
 "printing a calendar for the full year."
 msgstr ""
 
-#: library/calendar.rst:620
+#: library/calendar.rst:673
 msgid "*Text-mode options:*"
 msgstr ""
 
-#: library/calendar.rst:624
+#: library/calendar.rst:677
 msgid ""
 "The width of the date column in terminal columns. The date is printed "
 "centred in the column. Any value lower than 2 is ignored. Defaults to 2."
 msgstr ""
 
-#: library/calendar.rst:632
+#: library/calendar.rst:685
 msgid ""
 "The number of lines for each week in terminal rows. The date is printed top-"
 "aligned. Any value lower than 1 is ignored. Defaults to 1."
 msgstr ""
 
-#: library/calendar.rst:640
+#: library/calendar.rst:693
 msgid ""
 "The space between months in columns. Any value lower than 2 is ignored. "
 "Defaults to 6."
 msgstr ""
 
-#: library/calendar.rst:647
+#: library/calendar.rst:700
 msgid "The number of months printed per row. Defaults to 3."
 msgstr ""
 
-#: library/calendar.rst:651
+#: library/calendar.rst:704
 msgid "*HTML-mode options:*"
 msgstr ""
 
-#: library/calendar.rst:655
+#: library/calendar.rst:708
 msgid ""
 "The path of a CSS stylesheet to use for the calendar. This must either be "
 "relative to the generated HTML, or an absolute HTTP or ``file:///`` URL."
diff --git a/library/cmath.po b/library/cmath.po
index 4f1d65ca8..58c9d49d3 100644
--- a/library/cmath.po
+++ b/library/cmath.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -69,17 +69,281 @@ msgid ""
 msgstr ""
 
 #: library/cmath.rst:42
-msgid "Conversions to and from polar coordinates"
+msgid "**Conversions to and from polar coordinates**"
+msgstr ""
+
+#: library/cmath.rst:44
+msgid ":func:`phase(z) <phase>`"
 msgstr ""
 
 #: library/cmath.rst:44
+msgid "Return the phase of *z*"
+msgstr ""
+
+#: library/cmath.rst:45
+msgid ":func:`polar(z) <polar>`"
+msgstr ""
+
+#: library/cmath.rst:45
+msgid "Return the representation of *z* in polar coordinates"
+msgstr ""
+
+#: library/cmath.rst:46
+msgid ":func:`rect(r, phi) <rect>`"
+msgstr ""
+
+#: library/cmath.rst:46
+msgid "Return the complex number *z* with polar coordinates *r* and *phi*"
+msgstr ""
+
+#: library/cmath.rst:48
+msgid "**Power and logarithmic functions**"
+msgstr ""
+
+#: library/cmath.rst:50
+msgid ":func:`exp(z) <exp>`"
+msgstr ""
+
+#: library/cmath.rst:50
+msgid "Return *e* raised to the power *z*"
+msgstr ""
+
+#: library/cmath.rst:51
+msgid ":func:`log(z[, base]) <log>`"
+msgstr ""
+
+#: library/cmath.rst:51
+msgid "Return the logarithm of *z* to the given *base* (*e* by default)"
+msgstr ""
+
+#: library/cmath.rst:52
+msgid ":func:`log10(z) <log10>`"
+msgstr ""
+
+#: library/cmath.rst:52
+msgid "Return the base-10 logarithm of *z*"
+msgstr ""
+
+#: library/cmath.rst:53
+msgid ":func:`sqrt(z) <sqrt>`"
+msgstr ""
+
+#: library/cmath.rst:53
+msgid "Return the square root of *z*"
+msgstr ""
+
+#: library/cmath.rst:55
+msgid "**Trigonometric functions**"
+msgstr ""
+
+#: library/cmath.rst:57
+msgid ":func:`acos(z) <acos>`"
+msgstr ""
+
+#: library/cmath.rst:57
+msgid "Return the arc cosine of *z*"
+msgstr ""
+
+#: library/cmath.rst:58
+msgid ":func:`asin(z) <asin>`"
+msgstr ""
+
+#: library/cmath.rst:58
+msgid "Return the arc sine of *z*"
+msgstr ""
+
+#: library/cmath.rst:59
+msgid ":func:`atan(z) <atan>`"
+msgstr ""
+
+#: library/cmath.rst:59
+msgid "Return the arc tangent of *z*"
+msgstr ""
+
+#: library/cmath.rst:60
+msgid ":func:`cos(z) <cos>`"
+msgstr ""
+
+#: library/cmath.rst:60
+msgid "Return the cosine of *z*"
+msgstr ""
+
+#: library/cmath.rst:61
+msgid ":func:`sin(z) <sin>`"
+msgstr ""
+
+#: library/cmath.rst:61
+msgid "Return the sine of *z*"
+msgstr ""
+
+#: library/cmath.rst:62
+msgid ":func:`tan(z) <tan>`"
+msgstr ""
+
+#: library/cmath.rst:62
+msgid "Return the tangent of *z*"
+msgstr ""
+
+#: library/cmath.rst:64
+msgid "**Hyperbolic functions**"
+msgstr ""
+
+#: library/cmath.rst:66
+msgid ":func:`acosh(z) <acosh>`"
+msgstr ""
+
+#: library/cmath.rst:66
+msgid "Return the inverse hyperbolic cosine of *z*"
+msgstr ""
+
+#: library/cmath.rst:67
+msgid ":func:`asinh(z) <asinh>`"
+msgstr ""
+
+#: library/cmath.rst:67
+msgid "Return the inverse hyperbolic sine of *z*"
+msgstr ""
+
+#: library/cmath.rst:68
+msgid ":func:`atanh(z) <atanh>`"
+msgstr ""
+
+#: library/cmath.rst:68
+msgid "Return the inverse hyperbolic tangent of *z*"
+msgstr ""
+
+#: library/cmath.rst:69
+msgid ":func:`cosh(z) <cosh>`"
+msgstr ""
+
+#: library/cmath.rst:69
+msgid "Return the hyperbolic cosine of *z*"
+msgstr ""
+
+#: library/cmath.rst:70
+msgid ":func:`sinh(z) <sinh>`"
+msgstr ""
+
+#: library/cmath.rst:70
+msgid "Return the hyperbolic sine of *z*"
+msgstr ""
+
+#: library/cmath.rst:71
+msgid ":func:`tanh(z) <tanh>`"
+msgstr ""
+
+#: library/cmath.rst:71
+msgid "Return the hyperbolic tangent of *z*"
+msgstr ""
+
+#: library/cmath.rst:73
+msgid "**Classification functions**"
+msgstr ""
+
+#: library/cmath.rst:75
+msgid ":func:`isfinite(z) <isfinite>`"
+msgstr ""
+
+#: library/cmath.rst:75
+msgid "Check if all components of *z* are finite"
+msgstr ""
+
+#: library/cmath.rst:76
+msgid ":func:`isinf(z) <isinf>`"
+msgstr ""
+
+#: library/cmath.rst:76
+msgid "Check if any component of *z* is infinite"
+msgstr ""
+
+#: library/cmath.rst:77
+msgid ":func:`isnan(z) <isnan>`"
+msgstr ""
+
+#: library/cmath.rst:77
+msgid "Check if any component of *z* is a NaN"
+msgstr ""
+
+#: library/cmath.rst:78
+msgid ":func:`isclose(a, b, *, rel_tol, abs_tol) <isclose>`"
+msgstr ""
+
+#: library/cmath.rst:78
+msgid "Check if the values *a* and *b* are close to each other"
+msgstr ""
+
+#: library/cmath.rst:80
+msgid "**Constants**"
+msgstr ""
+
+#: library/cmath.rst:82
+msgid ":data:`pi`"
+msgstr ""
+
+#: library/cmath.rst:82
+msgid "*π* = 3.141592..."
+msgstr ""
+
+#: library/cmath.rst:83
+msgid ":data:`e`"
+msgstr ""
+
+#: library/cmath.rst:83
+msgid "*e* = 2.718281..."
+msgstr ""
+
+#: library/cmath.rst:84
+msgid ":data:`tau`"
+msgstr ""
+
+#: library/cmath.rst:84
+msgid "*τ* = 2\\ *π* = 6.283185..."
+msgstr ""
+
+#: library/cmath.rst:85
+msgid ":data:`inf`"
+msgstr ""
+
+#: library/cmath.rst:85
+msgid "Positive infinity"
+msgstr ""
+
+#: library/cmath.rst:86
+msgid ":data:`infj`"
+msgstr ""
+
+#: library/cmath.rst:86
+msgid "Pure imaginary infinity"
+msgstr ""
+
+#: library/cmath.rst:87
+msgid ":data:`nan`"
+msgstr ""
+
+#: library/cmath.rst:87
+msgid "\"Not a number\" (NaN)"
+msgstr ""
+
+#: library/cmath.rst:88
+msgid ":data:`nanj`"
+msgstr ""
+
+#: library/cmath.rst:88
+msgid "Pure imaginary NaN"
+msgstr ""
+
+#: library/cmath.rst:93
+msgid "Conversions to and from polar coordinates"
+msgstr ""
+
+#: library/cmath.rst:95
 msgid ""
 "A Python complex number ``z`` is stored internally using *rectangular* or "
 "*Cartesian* coordinates.  It is completely determined by its *real part* ``z."
 "real`` and its *imaginary part* ``z.imag``."
 msgstr ""
 
-#: library/cmath.rst:48
+#: library/cmath.rst:99
 msgid ""
 "*Polar coordinates* give an alternative way to represent a complex number.  "
 "In polar coordinates, a complex number *z* is defined by the modulus *r* and "
@@ -89,22 +353,22 @@ msgid ""
 "to *z*."
 msgstr ""
 
-#: library/cmath.rst:55
+#: library/cmath.rst:106
 msgid ""
 "The following functions can be used to convert from the native rectangular "
 "coordinates to polar coordinates and back."
 msgstr ""
 
-#: library/cmath.rst:60
+#: library/cmath.rst:111
 msgid ""
-"Return the phase of *x* (also known as the *argument* of *x*), as a float. "
-"``phase(x)`` is equivalent to ``math.atan2(x.imag, x.real)``.  The result "
+"Return the phase of *z* (also known as the *argument* of *z*), as a float. "
+"``phase(z)`` is equivalent to ``math.atan2(z.imag, z.real)``.  The result "
 "lies in the range [-\\ *π*, *π*], and the branch cut for this operation lies "
 "along the negative real axis.  The sign of the result is the same as the "
-"sign of ``x.imag``, even when ``x.imag`` is zero::"
+"sign of ``z.imag``, even when ``z.imag`` is zero::"
 msgstr ""
 
-#: library/cmath.rst:66
+#: library/cmath.rst:117
 msgid ""
 ">>> phase(complex(-1.0, 0.0))\n"
 "3.141592653589793\n"
@@ -112,181 +376,180 @@ msgid ""
 "-3.141592653589793"
 msgstr ""
 
-#: library/cmath.rst:74
+#: library/cmath.rst:125
 msgid ""
-"The modulus (absolute value) of a complex number *x* can be computed using "
+"The modulus (absolute value) of a complex number *z* can be computed using "
 "the built-in :func:`abs` function.  There is no separate :mod:`cmath` module "
 "function for this operation."
 msgstr ""
 
-#: library/cmath.rst:81
+#: library/cmath.rst:132
 msgid ""
-"Return the representation of *x* in polar coordinates.  Returns a pair ``(r, "
-"phi)`` where *r* is the modulus of *x* and phi is the phase of *x*.  "
-"``polar(x)`` is equivalent to ``(abs(x), phase(x))``."
+"Return the representation of *z* in polar coordinates.  Returns a pair ``(r, "
+"phi)`` where *r* is the modulus of *z* and *phi* is the phase of *z*.  "
+"``polar(z)`` is equivalent to ``(abs(z), phase(z))``."
 msgstr ""
 
-#: library/cmath.rst:89
+#: library/cmath.rst:140
 msgid ""
-"Return the complex number *x* with polar coordinates *r* and *phi*. "
+"Return the complex number *z* with polar coordinates *r* and *phi*. "
 "Equivalent to ``complex(r * math.cos(phi), r * math.sin(phi))``."
 msgstr ""
 
-#: library/cmath.rst:94
+#: library/cmath.rst:145
 msgid "Power and logarithmic functions"
 msgstr ""
 
-#: library/cmath.rst:98
+#: library/cmath.rst:149
 msgid ""
-"Return *e* raised to the power *x*, where *e* is the base of natural "
+"Return *e* raised to the power *z*, where *e* is the base of natural "
 "logarithms."
 msgstr ""
 
-#: library/cmath.rst:104
+#: library/cmath.rst:155
 msgid ""
-"Returns the logarithm of *x* to the given *base*. If the *base* is not "
-"specified, returns the natural logarithm of *x*. There is one branch cut, "
+"Return the logarithm of *z* to the given *base*. If the *base* is not "
+"specified, returns the natural logarithm of *z*. There is one branch cut, "
 "from 0 along the negative real axis to -∞."
 msgstr ""
 
-#: library/cmath.rst:111
+#: library/cmath.rst:162
 msgid ""
-"Return the base-10 logarithm of *x*. This has the same branch cut as :func:"
+"Return the base-10 logarithm of *z*. This has the same branch cut as :func:"
 "`log`."
 msgstr ""
 
-#: library/cmath.rst:117
+#: library/cmath.rst:168
 msgid ""
-"Return the square root of *x*. This has the same branch cut as :func:`log`."
+"Return the square root of *z*. This has the same branch cut as :func:`log`."
 msgstr ""
 
-#: library/cmath.rst:121
+#: library/cmath.rst:172
 msgid "Trigonometric functions"
 msgstr ""
 
-#: library/cmath.rst:125
+#: library/cmath.rst:176
 msgid ""
-"Return the arc cosine of *x*. There are two branch cuts: One extends right "
+"Return the arc cosine of *z*. There are two branch cuts: One extends right "
 "from 1 along the real axis to ∞. The other extends left from -1 along the "
 "real axis to -∞."
 msgstr ""
 
-#: library/cmath.rst:132
+#: library/cmath.rst:183
 msgid ""
-"Return the arc sine of *x*. This has the same branch cuts as :func:`acos`."
+"Return the arc sine of *z*. This has the same branch cuts as :func:`acos`."
 msgstr ""
 
-#: library/cmath.rst:137
+#: library/cmath.rst:188
 msgid ""
-"Return the arc tangent of *x*. There are two branch cuts: One extends from "
+"Return the arc tangent of *z*. There are two branch cuts: One extends from "
 "``1j`` along the imaginary axis to ``∞j``. The other extends from ``-1j`` "
 "along the imaginary axis to ``-∞j``."
 msgstr ""
 
-#: library/cmath.rst:144
-msgid "Return the cosine of *x*."
+#: library/cmath.rst:195
+msgid "Return the cosine of *z*."
 msgstr ""
 
-#: library/cmath.rst:149
-msgid "Return the sine of *x*."
+#: library/cmath.rst:200
+msgid "Return the sine of *z*."
 msgstr ""
 
-#: library/cmath.rst:154
-msgid "Return the tangent of *x*."
+#: library/cmath.rst:205
+msgid "Return the tangent of *z*."
 msgstr ""
 
-#: library/cmath.rst:158
+#: library/cmath.rst:209
 msgid "Hyperbolic functions"
 msgstr ""
 
-#: library/cmath.rst:162
+#: library/cmath.rst:213
 msgid ""
-"Return the inverse hyperbolic cosine of *x*. There is one branch cut, "
+"Return the inverse hyperbolic cosine of *z*. There is one branch cut, "
 "extending left from 1 along the real axis to -∞."
 msgstr ""
 
-#: library/cmath.rst:168
+#: library/cmath.rst:219
 msgid ""
-"Return the inverse hyperbolic sine of *x*. There are two branch cuts: One "
+"Return the inverse hyperbolic sine of *z*. There are two branch cuts: One "
 "extends from ``1j`` along the imaginary axis to ``∞j``.  The other extends "
 "from ``-1j`` along the imaginary axis to ``-∞j``."
 msgstr ""
 
-#: library/cmath.rst:175
+#: library/cmath.rst:226
 msgid ""
-"Return the inverse hyperbolic tangent of *x*. There are two branch cuts: One "
+"Return the inverse hyperbolic tangent of *z*. There are two branch cuts: One "
 "extends from ``1`` along the real axis to ``∞``. The other extends from "
 "``-1`` along the real axis to ``-∞``."
 msgstr ""
 
-#: library/cmath.rst:182
-msgid "Return the hyperbolic cosine of *x*."
+#: library/cmath.rst:233
+msgid "Return the hyperbolic cosine of *z*."
 msgstr ""
 
-#: library/cmath.rst:187
-msgid "Return the hyperbolic sine of *x*."
+#: library/cmath.rst:238
+msgid "Return the hyperbolic sine of *z*."
 msgstr ""
 
-#: library/cmath.rst:192
-msgid "Return the hyperbolic tangent of *x*."
+#: library/cmath.rst:243
+msgid "Return the hyperbolic tangent of *z*."
 msgstr ""
 
-#: library/cmath.rst:196
+#: library/cmath.rst:247
 msgid "Classification functions"
 msgstr ""
 
-#: library/cmath.rst:200
+#: library/cmath.rst:251
 msgid ""
-"Return ``True`` if both the real and imaginary parts of *x* are finite, and "
+"Return ``True`` if both the real and imaginary parts of *z* are finite, and "
 "``False`` otherwise."
 msgstr ""
 
-#: library/cmath.rst:208
+#: library/cmath.rst:259
 msgid ""
-"Return ``True`` if either the real or the imaginary part of *x* is an "
+"Return ``True`` if either the real or the imaginary part of *z* is an "
 "infinity, and ``False`` otherwise."
 msgstr ""
 
-#: library/cmath.rst:214
+#: library/cmath.rst:265
 msgid ""
-"Return ``True`` if either the real or the imaginary part of *x* is a NaN, "
+"Return ``True`` if either the real or the imaginary part of *z* is a NaN, "
 "and ``False`` otherwise."
 msgstr ""
 
-#: library/cmath.rst:220
+#: library/cmath.rst:271
 msgid ""
 "Return ``True`` if the values *a* and *b* are close to each other and "
 "``False`` otherwise."
 msgstr ""
 
-#: library/cmath.rst:223
+#: library/cmath.rst:274
 msgid ""
 "Whether or not two values are considered close is determined according to "
-"given absolute and relative tolerances."
+"given absolute and relative tolerances.  If no errors occur, the result will "
+"be: ``abs(a-b) <= max(rel_tol * max(abs(a), abs(b)), abs_tol)``."
 msgstr ""
 
-#: library/cmath.rst:226
+#: library/cmath.rst:278
 msgid ""
 "*rel_tol* is the relative tolerance -- it is the maximum allowed difference "
 "between *a* and *b*, relative to the larger absolute value of *a* or *b*. "
 "For example, to set a tolerance of 5%, pass ``rel_tol=0.05``.  The default "
 "tolerance is ``1e-09``, which assures that the two values are the same "
-"within about 9 decimal digits.  *rel_tol* must be greater than zero."
-msgstr ""
-
-#: library/cmath.rst:232
-msgid ""
-"*abs_tol* is the minimum absolute tolerance -- useful for comparisons near "
-"zero. *abs_tol* must be at least zero."
+"within about 9 decimal digits.  *rel_tol* must be nonnegative and less than "
+"``1.0``."
 msgstr ""
 
-#: library/cmath.rst:235
+#: library/cmath.rst:285
 msgid ""
-"If no errors occur, the result will be: ``abs(a-b) <= max(rel_tol * "
-"max(abs(a), abs(b)), abs_tol)``."
+"*abs_tol* is the absolute tolerance; it defaults to ``0.0`` and it must be "
+"nonnegative.  When comparing ``x`` to ``0.0``, ``isclose(x, 0)`` is computed "
+"as ``abs(x) <= rel_tol  * abs(x)``, which is ``False`` for any ``x`` and "
+"rel_tol less than ``1.0``.  So add an appropriate positive abs_tol argument "
+"to the call."
 msgstr ""
 
-#: library/cmath.rst:238
+#: library/cmath.rst:291
 msgid ""
 "The IEEE 754 special values of ``NaN``, ``inf``, and ``-inf`` will be "
 "handled according to IEEE rules.  Specifically, ``NaN`` is not considered "
@@ -294,49 +557,49 @@ msgid ""
 "considered close to themselves."
 msgstr ""
 
-#: library/cmath.rst:247
+#: library/cmath.rst:300
 msgid ":pep:`485` -- A function for testing approximate equality"
 msgstr ""
 
-#: library/cmath.rst:251
+#: library/cmath.rst:304
 msgid "Constants"
 msgstr ""
 
-#: library/cmath.rst:255
+#: library/cmath.rst:308
 msgid "The mathematical constant *π*, as a float."
 msgstr ""
 
-#: library/cmath.rst:260
+#: library/cmath.rst:313
 msgid "The mathematical constant *e*, as a float."
 msgstr ""
 
-#: library/cmath.rst:265
+#: library/cmath.rst:318
 msgid "The mathematical constant *τ*, as a float."
 msgstr ""
 
-#: library/cmath.rst:272
+#: library/cmath.rst:325
 msgid "Floating-point positive infinity. Equivalent to ``float('inf')``."
 msgstr ""
 
-#: library/cmath.rst:279
+#: library/cmath.rst:332
 msgid ""
 "Complex number with zero real part and positive infinity imaginary part. "
 "Equivalent to ``complex(0.0, float('inf'))``."
 msgstr ""
 
-#: library/cmath.rst:287
+#: library/cmath.rst:340
 msgid ""
 "A floating-point \"not a number\" (NaN) value.  Equivalent to "
 "``float('nan')``."
 msgstr ""
 
-#: library/cmath.rst:295
+#: library/cmath.rst:348
 msgid ""
 "Complex number with zero real part and NaN imaginary part. Equivalent to "
 "``complex(0.0, float('nan'))``."
 msgstr ""
 
-#: library/cmath.rst:303
+#: library/cmath.rst:356
 msgid ""
 "Note that the selection of functions is similar, but not identical, to that "
 "in module :mod:`math`.  The reason for having two modules is that some users "
@@ -348,7 +611,7 @@ msgid ""
 "zero)."
 msgstr ""
 
-#: library/cmath.rst:311
+#: library/cmath.rst:364
 msgid ""
 "A note on branch cuts: They are curves along which the given function fails "
 "to be continuous.  They are a necessary feature of many complex functions.  "
@@ -359,17 +622,17 @@ msgid ""
 "following:"
 msgstr ""
 
-#: library/cmath.rst:321
+#: library/cmath.rst:374
 msgid ""
 "Kahan, W:  Branch cuts for complex elementary functions; or, Much ado about "
 "nothing's sign bit.  In Iserles, A., and Powell, M. (eds.), The state of the "
 "art in numerical analysis. Clarendon Press (1987) pp165--211."
 msgstr ""
 
-#: library/cmath.rst:301
+#: library/cmath.rst:354
 msgid "module"
 msgstr ""
 
-#: library/cmath.rst:301
+#: library/cmath.rst:354
 msgid "math"
 msgstr ""
diff --git a/library/cmdline.po b/library/cmdline.po
index 64081007a..b3ac6a40d 100644
--- a/library/cmdline.po
+++ b/library/cmdline.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-12-01 14:57+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -61,7 +61,7 @@ msgid ":ref:`dis <dis-cli>`"
 msgstr ""
 
 #: library/cmdline.rst:16
-msgid ":mod:`doctest`"
+msgid ":ref:`doctest <doctest-cli>`"
 msgstr ""
 
 #: library/cmdline.rst:17
diff --git a/library/collections.abc.po b/library/collections.abc.po
index 4e68c3896..0d2d6ae65 100644
--- a/library/collections.abc.po
+++ b/library/collections.abc.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -44,7 +44,7 @@ msgstr ""
 
 #: library/collections.abc.rst:30
 msgid ""
-"1) A newly written class can inherit directly from one of the abstract base "
+"A newly written class can inherit directly from one of the abstract base "
 "classes.  The class must supply the required abstract methods.  The "
 "remaining mixin methods come from inheritance and can be overridden if "
 "desired.  Other methods may be added as needed:"
@@ -70,7 +70,7 @@ msgstr ""
 
 #: library/collections.abc.rst:50
 msgid ""
-"2) Existing classes and built-in classes can be registered as \"virtual "
+"Existing classes and built-in classes can be registered as \"virtual "
 "subclasses\" of the ABCs.  Those classes should define the full API "
 "including all of the abstract methods and all of the mixin methods. This "
 "lets users rely on :func:`issubclass` or :func:`isinstance` tests to "
@@ -110,18 +110,18 @@ msgstr ""
 
 #: library/collections.abc.rst:82
 msgid ""
-"3) Some simple interfaces are directly recognizable by the presence of the "
+"Some simple interfaces are directly recognizable by the presence of the "
 "required methods (unless those methods have been set to :const:`None`):"
 msgstr ""
 
-#: library/collections.abc.rst:86
+#: library/collections.abc.rst:85
 msgid ""
 "class E:\n"
 "    def __iter__(self): ...\n"
 "    def __next__(self): ..."
 msgstr ""
 
-#: library/collections.abc.rst:92
+#: library/collections.abc.rst:91
 msgid ""
 ">>> issubclass(E, Iterable)\n"
 "True\n"
@@ -129,7 +129,7 @@ msgid ""
 "True"
 msgstr ""
 
-#: library/collections.abc.rst:99
+#: library/collections.abc.rst:98
 msgid ""
 "Complex interfaces do not support this last technique because an interface "
 "is more than just the presence of method names.  Interfaces specify "
@@ -139,179 +139,180 @@ msgid ""
 "insufficient for distinguishing a :class:`Sequence` from a :class:`Mapping`."
 msgstr ""
 
-#: library/collections.abc.rst:107
+#: library/collections.abc.rst:106
 msgid ""
 "These abstract classes now support ``[]``. See :ref:`types-genericalias` "
 "and :pep:`585`."
 msgstr ""
 
-#: library/collections.abc.rst:114
+#: library/collections.abc.rst:113
 msgid "Collections Abstract Base Classes"
 msgstr ""
 
-#: library/collections.abc.rst:116
+#: library/collections.abc.rst:115
 msgid ""
 "The collections module offers the following :term:`ABCs <abstract base "
 "class>`:"
 msgstr ""
 
-#: library/collections.abc.rst:121
+#: library/collections.abc.rst:120
 msgid "ABC"
 msgstr ""
 
-#: library/collections.abc.rst:121
+#: library/collections.abc.rst:120
 msgid "Inherits from"
 msgstr ""
 
-#: library/collections.abc.rst:121
+#: library/collections.abc.rst:120
 msgid "Abstract Methods"
 msgstr ""
 
-#: library/collections.abc.rst:121
+#: library/collections.abc.rst:120
 msgid "Mixin Methods"
 msgstr ""
 
-#: library/collections.abc.rst:123
+#: library/collections.abc.rst:122
 msgid ":class:`Container` [1]_"
 msgstr ""
 
-#: library/collections.abc.rst:123
+#: library/collections.abc.rst:122
 msgid "``__contains__``"
 msgstr ""
 
-#: library/collections.abc.rst:124
+#: library/collections.abc.rst:123
 msgid ":class:`Hashable` [1]_"
 msgstr ""
 
-#: library/collections.abc.rst:124
+#: library/collections.abc.rst:123
 msgid "``__hash__``"
 msgstr ""
 
-#: library/collections.abc.rst:125
+#: library/collections.abc.rst:124
 msgid ":class:`Iterable` [1]_ [2]_"
 msgstr ""
 
-#: library/collections.abc.rst:125 library/collections.abc.rst:126
+#: library/collections.abc.rst:124 library/collections.abc.rst:125
 msgid "``__iter__``"
 msgstr ""
 
-#: library/collections.abc.rst:126
+#: library/collections.abc.rst:125
 msgid ":class:`Iterator` [1]_"
 msgstr ""
 
-#: library/collections.abc.rst:126 library/collections.abc.rst:127
+#: library/collections.abc.rst:125 library/collections.abc.rst:126
 msgid ":class:`Iterable`"
 msgstr ""
 
-#: library/collections.abc.rst:126
+#: library/collections.abc.rst:125
 msgid "``__next__``"
 msgstr ""
 
-#: library/collections.abc.rst:127
+#: library/collections.abc.rst:126
 msgid ":class:`Reversible` [1]_"
 msgstr ""
 
-#: library/collections.abc.rst:127
+#: library/collections.abc.rst:126
 msgid "``__reversed__``"
 msgstr ""
 
-#: library/collections.abc.rst:128
+#: library/collections.abc.rst:127
 msgid ":class:`Generator`  [1]_"
 msgstr ""
 
-#: library/collections.abc.rst:128
+#: library/collections.abc.rst:127
 msgid ":class:`Iterator`"
 msgstr ""
 
-#: library/collections.abc.rst:128 library/collections.abc.rst:176
+#: library/collections.abc.rst:127 library/collections.abc.rst:176
 msgid "``send``, ``throw``"
 msgstr ""
 
-#: library/collections.abc.rst:128
+#: library/collections.abc.rst:127
 msgid "``close``, ``__iter__``, ``__next__``"
 msgstr ""
 
-#: library/collections.abc.rst:129
+#: library/collections.abc.rst:128
 msgid ":class:`Sized`  [1]_"
 msgstr ""
 
-#: library/collections.abc.rst:129 library/collections.abc.rst:168
+#: library/collections.abc.rst:128
 msgid "``__len__``"
 msgstr ""
 
-#: library/collections.abc.rst:130
+#: library/collections.abc.rst:129
 msgid ":class:`Callable`  [1]_"
 msgstr ""
 
-#: library/collections.abc.rst:130
+#: library/collections.abc.rst:129
 msgid "``__call__``"
 msgstr ""
 
-#: library/collections.abc.rst:131
+#: library/collections.abc.rst:130
 msgid ":class:`Collection`  [1]_"
 msgstr ""
 
-#: library/collections.abc.rst:131
+#: library/collections.abc.rst:130
 msgid ":class:`Sized`, :class:`Iterable`, :class:`Container`"
 msgstr ""
 
-#: library/collections.abc.rst:131 library/collections.abc.rst:147
+#: library/collections.abc.rst:130 library/collections.abc.rst:146
 msgid "``__contains__``, ``__iter__``, ``__len__``"
 msgstr ""
 
-#: library/collections.abc.rst:135 library/collections.abc.rst:138
-#: library/collections.abc.rst:144
+#: library/collections.abc.rst:134 library/collections.abc.rst:137
+#: library/collections.abc.rst:143
 msgid ":class:`Sequence`"
 msgstr ""
 
-#: library/collections.abc.rst:135
+#: library/collections.abc.rst:134
 msgid ":class:`Reversible`, :class:`Collection`"
 msgstr ""
 
-#: library/collections.abc.rst:135 library/collections.abc.rst:144
+#: library/collections.abc.rst:134 library/collections.abc.rst:143
 msgid "``__getitem__``, ``__len__``"
 msgstr ""
 
-#: library/collections.abc.rst:135
+#: library/collections.abc.rst:134
 msgid ""
 "``__contains__``, ``__iter__``, ``__reversed__``, ``index``, and ``count``"
 msgstr ""
 
-#: library/collections.abc.rst:138
+#: library/collections.abc.rst:137
 msgid ":class:`MutableSequence`"
 msgstr ""
 
-#: library/collections.abc.rst:138
+#: library/collections.abc.rst:137
 msgid ""
 "``__getitem__``, ``__setitem__``, ``__delitem__``, ``__len__``, ``insert``"
 msgstr ""
 
-#: library/collections.abc.rst:138
+#: library/collections.abc.rst:137
 msgid ""
 "Inherited :class:`Sequence` methods and ``append``, ``clear``, ``reverse``, "
 "``extend``, ``pop``, ``remove``, and ``__iadd__``"
 msgstr ""
 
-#: library/collections.abc.rst:144
+#: library/collections.abc.rst:143
 msgid ":class:`ByteString`"
 msgstr ""
 
-#: library/collections.abc.rst:144
+#: library/collections.abc.rst:143
 msgid "Inherited :class:`Sequence` methods"
 msgstr ""
 
-#: library/collections.abc.rst:147 library/collections.abc.rst:151
+#: library/collections.abc.rst:146 library/collections.abc.rst:151
 msgid ":class:`Set`"
 msgstr ""
 
-#: library/collections.abc.rst:147 library/collections.abc.rst:157
+#: library/collections.abc.rst:146 library/collections.abc.rst:157
 msgid ":class:`Collection`"
 msgstr ""
 
-#: library/collections.abc.rst:147
+#: library/collections.abc.rst:146
 msgid ""
 "``__le__``, ``__lt__``, ``__eq__``, ``__ne__``, ``__gt__``, ``__ge__``, "
-"``__and__``, ``__or__``, ``__sub__``, ``__xor__``, and ``isdisjoint``"
+"``__and__``, ``__or__``, ``__sub__``, ``__rsub__``, ``__xor__``, "
+"``__rxor__`` and ``isdisjoint``"
 msgstr ""
 
 #: library/collections.abc.rst:151
@@ -365,6 +366,10 @@ msgstr ""
 msgid ":class:`Sized`"
 msgstr ""
 
+#: library/collections.abc.rst:168
+msgid "``__init__``, ``__len__`` and ``__repr__``"
+msgstr ""
+
 #: library/collections.abc.rst:169
 msgid ":class:`ItemsView`"
 msgstr ""
diff --git a/library/collections.po b/library/collections.po
index aa133e630..ce0eece78 100644
--- a/library/collections.po
+++ b/library/collections.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -988,8 +988,8 @@ msgstr ""
 #: library/collections.rst:750
 msgid ""
 "Note that :meth:`__missing__` is *not* called for any operations besides :"
-"meth:`~object.__getitem__`. This means that :meth:`get` will, like normal "
-"dictionaries, return ``None`` as a default rather than using :attr:"
+"meth:`~object.__getitem__`. This means that :meth:`~dict.get` will, like "
+"normal dictionaries, return ``None`` as a default rather than using :attr:"
 "`default_factory`."
 msgstr ""
 
@@ -1004,7 +1004,7 @@ msgid ""
 "absent."
 msgstr ""
 
-#: library/collections.rst:1185
+#: library/collections.rst:1186
 msgid ""
 "Added merge (``|``) and update (``|=``) operators, specified in :pep:`584`."
 msgstr ""
@@ -1023,10 +1023,10 @@ msgstr ""
 msgid ""
 "When each key is encountered for the first time, it is not already in the "
 "mapping; so an entry is automatically created using the :attr:`~defaultdict."
-"default_factory` function which returns an empty :class:`list`.  The :meth:"
-"`list.append` operation then attaches the value to the new list.  When keys "
+"default_factory` function which returns an empty :class:`list`.  The :meth:`!"
+"list.append` operation then attaches the value to the new list.  When keys "
 "are encountered again, the look-up proceeds normally (returning the list for "
-"that key) and the :meth:`list.append` operation adds another value to the "
+"that key) and the :meth:`!list.append` operation adds another value to the "
 "list. This technique is simpler and faster than an equivalent technique "
 "using :meth:`dict.setdefault`:"
 msgstr ""
@@ -1077,18 +1077,19 @@ msgid ""
 "Returns a new tuple subclass named *typename*.  The new subclass is used to "
 "create tuple-like objects that have fields accessible by attribute lookup as "
 "well as being indexable and iterable.  Instances of the subclass also have a "
-"helpful docstring (with typename and field_names) and a helpful :meth:"
-"`__repr__` method which lists the tuple contents in a ``name=value`` format."
+"helpful docstring (with *typename* and *field_names*) and a helpful :meth:"
+"`~object.__repr__` method which lists the tuple contents in a ``name=value`` "
+"format."
 msgstr ""
 
-#: library/collections.rst:855
+#: library/collections.rst:856
 msgid ""
 "The *field_names* are a sequence of strings such as ``['x', 'y']``. "
 "Alternatively, *field_names* can be a single string with each fieldname "
 "separated by whitespace and/or commas, for example ``'x y'`` or ``'x, y'``."
 msgstr ""
 
-#: library/collections.rst:859
+#: library/collections.rst:860
 msgid ""
 "Any valid Python identifier may be used for a fieldname except for names "
 "starting with an underscore.  Valid identifiers consist of letters, digits, "
@@ -1096,7 +1097,7 @@ msgid ""
 "mod:`keyword` such as *class*, *for*, *return*, *global*, *pass*, or *raise*."
 msgstr ""
 
-#: library/collections.rst:865
+#: library/collections.rst:866
 msgid ""
 "If *rename* is true, invalid fieldnames are automatically replaced with "
 "positional names.  For example, ``['abc', 'def', 'ghi', 'abc']`` is "
@@ -1104,7 +1105,7 @@ msgid ""
 "and the duplicate fieldname ``abc``."
 msgstr ""
 
-#: library/collections.rst:870
+#: library/collections.rst:871
 msgid ""
 "*defaults* can be ``None`` or an :term:`iterable` of default values. Since "
 "fields with a default value must come after any fields without a default, "
@@ -1114,48 +1115,49 @@ msgid ""
 "will default to ``2``."
 msgstr ""
 
-#: library/collections.rst:877
+#: library/collections.rst:878
 msgid ""
 "If *module* is defined, the :attr:`~type.__module__` attribute of the named "
 "tuple is set to that value."
 msgstr ""
 
-#: library/collections.rst:880
+#: library/collections.rst:881
 msgid ""
 "Named tuple instances do not have per-instance dictionaries, so they are "
 "lightweight and require no more memory than regular tuples."
 msgstr ""
 
-#: library/collections.rst:883
+#: library/collections.rst:884
 msgid ""
 "To support pickling, the named tuple class should be assigned to a variable "
 "that matches *typename*."
 msgstr ""
 
-#: library/collections.rst:886
+#: library/collections.rst:887
 msgid "Added support for *rename*."
 msgstr ""
 
-#: library/collections.rst:889
+#: library/collections.rst:890
 msgid ""
 "The *verbose* and *rename* parameters became :ref:`keyword-only arguments "
 "<keyword-only_parameter>`."
 msgstr ""
 
-#: library/collections.rst:893
+#: library/collections.rst:894
 msgid "Added the *module* parameter."
 msgstr ""
 
-#: library/collections.rst:896
-msgid "Removed the *verbose* parameter and the :attr:`_source` attribute."
+#: library/collections.rst:897
+msgid "Removed the *verbose* parameter and the :attr:`!_source` attribute."
 msgstr ""
 
-#: library/collections.rst:899
+#: library/collections.rst:900
 msgid ""
-"Added the *defaults* parameter and the :attr:`_field_defaults` attribute."
+"Added the *defaults* parameter and the :attr:`~somenamedtuple."
+"_field_defaults` attribute."
 msgstr ""
 
-#: library/collections.rst:903
+#: library/collections.rst:904
 msgid ""
 ">>> # Basic example\n"
 ">>> Point = namedtuple('Point', ['x', 'y'])\n"
@@ -1172,13 +1174,13 @@ msgid ""
 "Point(x=11, y=22)"
 msgstr ""
 
-#: library/collections.rst:919
+#: library/collections.rst:920
 msgid ""
 "Named tuples are especially useful for assigning field names to result "
 "tuples returned by the :mod:`csv` or :mod:`sqlite3` modules::"
 msgstr ""
 
-#: library/collections.rst:922
+#: library/collections.rst:923
 msgid ""
 "EmployeeRecord = namedtuple('EmployeeRecord', 'name, age, title, department, "
 "paygrade')\n"
@@ -1197,43 +1199,43 @@ msgid ""
 "    print(emp.name, emp.title)"
 msgstr ""
 
-#: library/collections.rst:935
+#: library/collections.rst:936
 msgid ""
 "In addition to the methods inherited from tuples, named tuples support three "
 "additional methods and two attributes.  To prevent conflicts with field "
 "names, the method and attribute names start with an underscore."
 msgstr ""
 
-#: library/collections.rst:941
+#: library/collections.rst:942
 msgid ""
 "Class method that makes a new instance from an existing sequence or iterable."
 msgstr ""
 
-#: library/collections.rst:943
+#: library/collections.rst:944
 msgid ""
 ">>> t = [11, 22]\n"
 ">>> Point._make(t)\n"
 "Point(x=11, y=22)"
 msgstr ""
 
-#: library/collections.rst:951
+#: library/collections.rst:952
 msgid ""
 "Return a new :class:`dict` which maps field names to their corresponding "
 "values:"
 msgstr ""
 
-#: library/collections.rst:954
+#: library/collections.rst:955
 msgid ""
 ">>> p = Point(x=11, y=22)\n"
 ">>> p._asdict()\n"
 "{'x': 11, 'y': 22}"
 msgstr ""
 
-#: library/collections.rst:960
+#: library/collections.rst:961
 msgid "Returns an :class:`OrderedDict` instead of a regular :class:`dict`."
 msgstr ""
 
-#: library/collections.rst:963
+#: library/collections.rst:964
 msgid ""
 "Returns a regular :class:`dict` instead of an :class:`OrderedDict`. As of "
 "Python 3.7, regular dicts are guaranteed to be ordered.  If the extra "
@@ -1241,13 +1243,13 @@ msgid ""
 "to cast the result to the desired type: ``OrderedDict(nt._asdict())``."
 msgstr ""
 
-#: library/collections.rst:972
+#: library/collections.rst:973
 msgid ""
 "Return a new instance of the named tuple replacing specified fields with new "
 "values::"
 msgstr ""
 
-#: library/collections.rst:975
+#: library/collections.rst:976
 msgid ""
 ">>> p = Point(x=11, y=22)\n"
 ">>> p._replace(x=33)\n"
@@ -1258,13 +1260,13 @@ msgid ""
 "timestamp=time.now())"
 msgstr ""
 
-#: library/collections.rst:984
+#: library/collections.rst:985
 msgid ""
 "Tuple of strings listing the field names.  Useful for introspection and for "
 "creating new named tuple types from existing named tuples."
 msgstr ""
 
-#: library/collections.rst:987
+#: library/collections.rst:988
 msgid ""
 ">>> p._fields            # view the field names\n"
 "('x', 'y')\n"
@@ -1275,11 +1277,11 @@ msgid ""
 "Pixel(x=11, y=22, red=128, green=255, blue=0)"
 msgstr ""
 
-#: library/collections.rst:999
+#: library/collections.rst:1000
 msgid "Dictionary mapping field names to default values."
 msgstr ""
 
-#: library/collections.rst:1001
+#: library/collections.rst:1002
 msgid ""
 ">>> Account = namedtuple('Account', ['type', 'balance'], defaults=[0])\n"
 ">>> Account._field_defaults\n"
@@ -1288,26 +1290,26 @@ msgid ""
 "Account(type='premium', balance=0)"
 msgstr ""
 
-#: library/collections.rst:1009
+#: library/collections.rst:1010
 msgid ""
 "To retrieve a field whose name is stored in a string, use the :func:"
 "`getattr` function:"
 msgstr ""
 
-#: library/collections.rst:1015
+#: library/collections.rst:1016
 msgid ""
 "To convert a dictionary to a named tuple, use the double-star-operator (as "
 "described in :ref:`tut-unpacking-arguments`):"
 msgstr ""
 
-#: library/collections.rst:1022
+#: library/collections.rst:1023
 msgid ""
 "Since a named tuple is a regular Python class, it is easy to add or change "
 "functionality with a subclass.  Here is how to add a calculated field and a "
 "fixed-width print format:"
 msgstr ""
 
-#: library/collections.rst:1026
+#: library/collections.rst:1027
 msgid ""
 ">>> class Point(namedtuple('Point', ['x', 'y'])):\n"
 "...     __slots__ = ()\n"
@@ -1324,38 +1326,38 @@ msgid ""
 "Point: x=14.000  y= 0.714  hypot=14.018"
 msgstr ""
 
-#: library/collections.rst:1041
+#: library/collections.rst:1042
 msgid ""
 "The subclass shown above sets ``__slots__`` to an empty tuple.  This helps "
 "keep memory requirements low by preventing the creation of instance "
 "dictionaries."
 msgstr ""
 
-#: library/collections.rst:1044
+#: library/collections.rst:1045
 msgid ""
 "Subclassing is not useful for adding new, stored fields.  Instead, simply "
 "create a new named tuple type from the :attr:`~somenamedtuple._fields` "
 "attribute:"
 msgstr ""
 
-#: library/collections.rst:1049
+#: library/collections.rst:1050
 msgid ""
 "Docstrings can be customized by making direct assignments to the ``__doc__`` "
 "fields:"
 msgstr ""
 
-#: library/collections.rst:1058
+#: library/collections.rst:1059
 msgid "Property docstrings became writeable."
 msgstr ""
 
-#: library/collections.rst:1063
+#: library/collections.rst:1064
 msgid ""
 "See :class:`typing.NamedTuple` for a way to add type hints for named "
 "tuples.  It also provides an elegant notation using the :keyword:`class` "
 "keyword::"
 msgstr ""
 
-#: library/collections.rst:1067
+#: library/collections.rst:1068
 msgid ""
 "class Component(NamedTuple):\n"
 "    part_number: int\n"
@@ -1363,23 +1365,23 @@ msgid ""
 "    description: Optional[str] = None"
 msgstr ""
 
-#: library/collections.rst:1072
+#: library/collections.rst:1073
 msgid ""
 "See :meth:`types.SimpleNamespace` for a mutable namespace based on an "
 "underlying dictionary instead of a tuple."
 msgstr ""
 
-#: library/collections.rst:1075
+#: library/collections.rst:1076
 msgid ""
 "The :mod:`dataclasses` module provides a decorator and functions for "
 "automatically adding generated special methods to user-defined classes."
 msgstr ""
 
-#: library/collections.rst:1080
+#: library/collections.rst:1081
 msgid ":class:`OrderedDict` objects"
 msgstr ""
 
-#: library/collections.rst:1082
+#: library/collections.rst:1083
 msgid ""
 "Ordered dictionaries are just like regular dictionaries but have some extra "
 "capabilities relating to ordering operations.  They have become less "
@@ -1387,91 +1389,93 @@ msgid ""
 "remember insertion order (this new behavior became guaranteed in Python 3.7)."
 msgstr ""
 
-#: library/collections.rst:1088
+#: library/collections.rst:1089
 msgid "Some differences from :class:`dict` still remain:"
 msgstr ""
 
-#: library/collections.rst:1090
+#: library/collections.rst:1091
 msgid ""
 "The regular :class:`dict` was designed to be very good at mapping "
 "operations.  Tracking insertion order was secondary."
 msgstr ""
 
-#: library/collections.rst:1093
+#: library/collections.rst:1094
 msgid ""
 "The :class:`OrderedDict` was designed to be good at reordering operations. "
 "Space efficiency, iteration speed, and the performance of update operations "
 "were secondary."
 msgstr ""
 
-#: library/collections.rst:1097
+#: library/collections.rst:1098
 msgid ""
 "The :class:`OrderedDict` algorithm can handle frequent reordering operations "
 "better than :class:`dict`.  As shown in the recipes below, this makes it "
 "suitable for implementing various kinds of LRU caches."
 msgstr ""
 
-#: library/collections.rst:1101
+#: library/collections.rst:1102
 msgid ""
 "The equality operation for :class:`OrderedDict` checks for matching order."
 msgstr ""
 
-#: library/collections.rst:1103
+#: library/collections.rst:1104
 msgid ""
 "A regular :class:`dict` can emulate the order sensitive equality test with "
 "``p == q and all(k1 == k2 for k1, k2 in zip(p, q))``."
 msgstr ""
 
-#: library/collections.rst:1106
+#: library/collections.rst:1107
 msgid ""
-"The :meth:`popitem` method of :class:`OrderedDict` has a different "
-"signature.  It accepts an optional argument to specify which item is popped."
+"The :meth:`~OrderedDict.popitem` method of :class:`OrderedDict` has a "
+"different signature.  It accepts an optional argument to specify which item "
+"is popped."
 msgstr ""
 
-#: library/collections.rst:1109
+#: library/collections.rst:1110
 msgid ""
 "A regular :class:`dict` can emulate OrderedDict's ``od.popitem(last=True)`` "
 "with ``d.popitem()`` which is guaranteed to pop the rightmost (last) item."
 msgstr ""
 
-#: library/collections.rst:1112
+#: library/collections.rst:1113
 msgid ""
 "A regular :class:`dict` can emulate OrderedDict's ``od.popitem(last=False)`` "
 "with ``(k := next(iter(d)), d.pop(k))`` which will return and remove the "
 "leftmost (first) item if it exists."
 msgstr ""
 
-#: library/collections.rst:1116
+#: library/collections.rst:1117
 msgid ""
-":class:`OrderedDict` has a :meth:`move_to_end` method to efficiently "
-"reposition an element to an endpoint."
+":class:`OrderedDict` has a :meth:`~OrderedDict.move_to_end` method to "
+"efficiently reposition an element to an endpoint."
 msgstr ""
 
-#: library/collections.rst:1119
+#: library/collections.rst:1120
 msgid ""
 "A regular :class:`dict` can emulate OrderedDict's ``od.move_to_end(k, "
 "last=True)`` with ``d[k] = d.pop(k)`` which will move the key and its "
 "associated value to the rightmost (last) position."
 msgstr ""
 
-#: library/collections.rst:1123
+#: library/collections.rst:1124
 msgid ""
 "A regular :class:`dict` does not have an efficient equivalent for "
 "OrderedDict's ``od.move_to_end(k, last=False)`` which moves the key and its "
 "associated value to the leftmost (first) position."
 msgstr ""
 
-#: library/collections.rst:1127
-msgid "Until Python 3.8, :class:`dict` lacked a :meth:`__reversed__` method."
+#: library/collections.rst:1128
+msgid ""
+"Until Python 3.8, :class:`dict` lacked a :meth:`~object.__reversed__` method."
 msgstr ""
 
-#: library/collections.rst:1132
+#: library/collections.rst:1133
 msgid ""
 "Return an instance of a :class:`dict` subclass that has methods specialized "
 "for rearranging dictionary order."
 msgstr ""
 
-#: library/collections.rst:1139
+#: library/collections.rst:1140
 msgid ""
 "The :meth:`popitem` method for ordered dictionaries returns and removes a "
 "(key, value) pair.  The pairs are returned in :abbr:`LIFO (last-in, first-"
@@ -1479,14 +1483,14 @@ msgid ""
 "false."
 msgstr ""
 
-#: library/collections.rst:1146
+#: library/collections.rst:1147
 msgid ""
 "Move an existing *key* to either end of an ordered dictionary.  The item is "
 "moved to the right end if *last* is true (the default) or to the beginning "
 "if *last* is false.  Raises :exc:`KeyError` if the *key* does not exist:"
 msgstr ""
 
-#: library/collections.rst:1151
+#: library/collections.rst:1152
 msgid ""
 ">>> d = OrderedDict.fromkeys('abcde')\n"
 ">>> d.move_to_end('b')\n"
@@ -1497,19 +1501,19 @@ msgid ""
 "'bacde'"
 msgstr ""
 
-#: library/collections.rst:1163
+#: library/collections.rst:1164
 msgid ""
 "In addition to the usual mapping methods, ordered dictionaries also support "
 "reverse iteration using :func:`reversed`."
 msgstr ""
 
-#: library/collections.rst:1168
+#: library/collections.rst:1169
 msgid ""
 "Equality tests between :class:`OrderedDict` objects are order-sensitive and "
 "are roughly equivalent to ``list(od1.items())==list(od2.items())``."
 msgstr ""
 
-#: library/collections.rst:1171
+#: library/collections.rst:1172
 msgid ""
 "Equality tests between :class:`OrderedDict` objects and other :class:"
 "`~collections.abc.Mapping` objects are order-insensitive like regular "
@@ -1517,23 +1521,24 @@ msgid ""
 "anywhere a regular dictionary is used."
 msgstr ""
 
-#: library/collections.rst:1176
+#: library/collections.rst:1177
 msgid ""
 "The items, keys, and values :term:`views <dictionary view>` of :class:"
 "`OrderedDict` now support reverse iteration using :func:`reversed`."
 msgstr ""
 
-#: library/collections.rst:1180
+#: library/collections.rst:1181
 msgid ""
 "With the acceptance of :pep:`468`, order is retained for keyword arguments "
-"passed to the :class:`OrderedDict` constructor and its :meth:`update` method."
+"passed to the :class:`OrderedDict` constructor and its :meth:`~dict.update` "
+"method."
 msgstr ""
 
-#: library/collections.rst:1190
+#: library/collections.rst:1191
 msgid ":class:`OrderedDict` Examples and Recipes"
 msgstr ""
 
-#: library/collections.rst:1192
+#: library/collections.rst:1193
 msgid ""
 "It is straightforward to create an ordered dictionary variant that remembers "
 "the order the keys were *last* inserted. If a new entry overwrites an "
@@ -1541,7 +1546,7 @@ msgid ""
 "end::"
 msgstr ""
 
-#: library/collections.rst:1197
+#: library/collections.rst:1198
 msgid ""
 "class LastUpdatedOrderedDict(OrderedDict):\n"
 "    'Store items in the order the keys were last added'\n"
@@ -1551,13 +1556,13 @@ msgid ""
 "        self.move_to_end(key)"
 msgstr ""
 
-#: library/collections.rst:1204
+#: library/collections.rst:1205
 msgid ""
 "An :class:`OrderedDict` would also be useful for implementing variants of :"
 "func:`functools.lru_cache`:"
 msgstr ""
 
-#: library/collections.rst:1207
+#: library/collections.rst:1208
 msgid ""
 "from collections import OrderedDict\n"
 "from time import time\n"
@@ -1584,7 +1589,7 @@ msgid ""
 "        return result"
 msgstr ""
 
-#: library/collections.rst:1234
+#: library/collections.rst:1235
 msgid ""
 "class MultiHitLRUCache:\n"
 "    \"\"\" LRU cache that defers caching a result until\n"
@@ -1622,11 +1627,11 @@ msgid ""
 "        return result"
 msgstr ""
 
-#: library/collections.rst:1303
+#: library/collections.rst:1304
 msgid ":class:`UserDict` objects"
 msgstr ""
 
-#: library/collections.rst:1305
+#: library/collections.rst:1306
 msgid ""
 "The class, :class:`UserDict` acts as a wrapper around dictionary objects. "
 "The need for this class has been partially supplanted by the ability to "
@@ -1634,7 +1639,7 @@ msgid ""
 "work with because the underlying dictionary is accessible as an attribute."
 msgstr ""
 
-#: library/collections.rst:1313
+#: library/collections.rst:1314
 msgid ""
 "Class that simulates a dictionary.  The instance's contents are kept in a "
 "regular dictionary, which is accessible via the :attr:`data` attribute of :"
@@ -1643,22 +1648,22 @@ msgid ""
 "not be kept, allowing it to be used for other purposes."
 msgstr ""
 
-#: library/collections.rst:1319
+#: library/collections.rst:1320
 msgid ""
 "In addition to supporting the methods and operations of mappings, :class:"
 "`UserDict` instances provide the following attribute:"
 msgstr ""
 
-#: library/collections.rst:1324
+#: library/collections.rst:1325
 msgid ""
 "A real dictionary used to store the contents of the :class:`UserDict` class."
 msgstr ""
 
-#: library/collections.rst:1330
+#: library/collections.rst:1331
 msgid ":class:`UserList` objects"
 msgstr ""
 
-#: library/collections.rst:1332
+#: library/collections.rst:1333
 msgid ""
 "This class acts as a wrapper around list objects.  It is a useful base class "
 "for your own list-like classes which can inherit from them and override "
@@ -1666,14 +1671,14 @@ msgid ""
 "lists."
 msgstr ""
 
-#: library/collections.rst:1337
+#: library/collections.rst:1338
 msgid ""
 "The need for this class has been partially supplanted by the ability to "
 "subclass directly from :class:`list`; however, this class can be easier to "
 "work with because the underlying list is accessible as an attribute."
 msgstr ""
 
-#: library/collections.rst:1343
+#: library/collections.rst:1344
 msgid ""
 "Class that simulates a list.  The instance's contents are kept in a regular "
 "list, which is accessible via the :attr:`data` attribute of :class:"
@@ -1682,19 +1687,19 @@ msgid ""
 "for example a real Python list or a :class:`UserList` object."
 msgstr ""
 
-#: library/collections.rst:1349
+#: library/collections.rst:1350
 msgid ""
 "In addition to supporting the methods and operations of mutable sequences, :"
 "class:`UserList` instances provide the following attribute:"
 msgstr ""
 
-#: library/collections.rst:1354
+#: library/collections.rst:1355
 msgid ""
 "A real :class:`list` object used to store the contents of the :class:"
 "`UserList` class."
 msgstr ""
 
-#: library/collections.rst:1357
+#: library/collections.rst:1358
 msgid ""
 "**Subclassing requirements:** Subclasses of :class:`UserList` are expected "
 "to offer a constructor which can be called with either no arguments or one "
@@ -1704,7 +1709,7 @@ msgid ""
 "object used as a data source."
 msgstr ""
 
-#: library/collections.rst:1364
+#: library/collections.rst:1365
 msgid ""
 "If a derived class does not wish to comply with this requirement, all of the "
 "special methods supported by this class will need to be overridden; please "
@@ -1712,11 +1717,11 @@ msgid ""
 "provided in that case."
 msgstr ""
 
-#: library/collections.rst:1370
+#: library/collections.rst:1371
 msgid ":class:`UserString` objects"
 msgstr ""
 
-#: library/collections.rst:1372
+#: library/collections.rst:1373
 msgid ""
 "The class, :class:`UserString` acts as a wrapper around string objects. The "
 "need for this class has been partially supplanted by the ability to subclass "
@@ -1724,7 +1729,7 @@ msgid ""
 "because the underlying string is accessible as an attribute."
 msgstr ""
 
-#: library/collections.rst:1380
+#: library/collections.rst:1381
 msgid ""
 "Class that simulates a string object.  The instance's content is kept in a "
 "regular string object, which is accessible via the :attr:`data` attribute "
@@ -1733,19 +1738,19 @@ msgid ""
 "converted into a string using the built-in :func:`str` function."
 msgstr ""
 
-#: library/collections.rst:1387
+#: library/collections.rst:1388
 msgid ""
 "In addition to supporting the methods and operations of strings, :class:"
 "`UserString` instances provide the following attribute:"
 msgstr ""
 
-#: library/collections.rst:1392
+#: library/collections.rst:1393
 msgid ""
 "A real :class:`str` object used to store the contents of the :class:"
 "`UserString` class."
 msgstr ""
 
-#: library/collections.rst:1395
+#: library/collections.rst:1396
 msgid ""
 "New methods ``__getnewargs__``, ``__rmod__``, ``casefold``, ``format_map``, "
 "``isprintable``, and ``maketrans``."
diff --git a/library/configparser.po b/library/configparser.po
index 4bd3927b4..caea2c9fc 100644
--- a/library/configparser.po
+++ b/library/configparser.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -155,7 +155,7 @@ msgid ""
 "'no'\n"
 ">>> topsecret['Port']\n"
 "'50022'\n"
-">>> for key in config['forge.example']:  \n"
+">>> for key in config['forge.example']:\n"
 "...     print(key)\n"
 "user\n"
 "compressionlevel\n"
diff --git a/library/constants.po b/library/constants.po
index 22f3607c2..9227f05ee 100644
--- a/library/constants.po
+++ b/library/constants.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -73,19 +73,19 @@ msgstr ""
 
 #: library/constants.rst:51
 msgid ""
-"``NotImplementedError`` and :data:`!NotImplemented` are not interchangeable, "
-"even though they have similar names and purposes. See :exc:"
-"`NotImplementedError` for details on when to use it."
+":data:`!NotImplemented` and :exc:`!NotImplementedError` are not "
+"interchangeable. This constant should only be used as described above; see :"
+"exc:`NotImplementedError` for details on correct usage of the exception."
 msgstr ""
 
-#: library/constants.rst:55
+#: library/constants.rst:56
 msgid ""
 "Evaluating :data:`!NotImplemented` in a boolean context is deprecated. While "
 "it currently evaluates as true, it will emit a :exc:`DeprecationWarning`. It "
 "will raise a :exc:`TypeError` in a future version of Python."
 msgstr ""
 
-#: library/constants.rst:64
+#: library/constants.rst:65
 msgid ""
 "The same as the ellipsis literal \"``...``\". Special value used mostly in "
 "conjunction with extended slicing syntax for user-defined container data "
@@ -93,24 +93,24 @@ msgid ""
 "type."
 msgstr ""
 
-#: library/constants.rst:71
+#: library/constants.rst:72
 msgid ""
 "This constant is true if Python was not started with an :option:`-O` option. "
 "See also the :keyword:`assert` statement."
 msgstr ""
 
-#: library/constants.rst:77
+#: library/constants.rst:78
 msgid ""
 "The names :data:`None`, :data:`False`, :data:`True` and :data:`__debug__` "
 "cannot be reassigned (assignments to them, even as an attribute name, raise :"
 "exc:`SyntaxError`), so they can be considered \"true\" constants."
 msgstr ""
 
-#: library/constants.rst:85
+#: library/constants.rst:86
 msgid "Constants added by the :mod:`site` module"
 msgstr ""
 
-#: library/constants.rst:87
+#: library/constants.rst:88
 msgid ""
 "The :mod:`site` module (which is imported automatically during startup, "
 "except if the :option:`-S` command-line option is given) adds several "
@@ -118,37 +118,37 @@ msgid ""
 "interpreter shell and should not be used in programs."
 msgstr ""
 
-#: library/constants.rst:95
+#: library/constants.rst:96
 msgid ""
 "Objects that when printed, print a message like \"Use quit() or Ctrl-D (i.e. "
 "EOF) to exit\", and when called, raise :exc:`SystemExit` with the specified "
 "exit code."
 msgstr ""
 
-#: library/constants.rst:102
+#: library/constants.rst:103
 msgid ""
 "Object that when printed, prints the message \"Type help() for interactive "
 "help, or help(object) for help about object.\", and when called, acts as "
 "described :func:`elsewhere <help>`."
 msgstr ""
 
-#: library/constants.rst:109
+#: library/constants.rst:110
 msgid ""
 "Objects that when printed or called, print the text of copyright or credits, "
 "respectively."
 msgstr ""
 
-#: library/constants.rst:114
+#: library/constants.rst:115
 msgid ""
 "Object that when printed, prints the message \"Type license() to see the "
 "full license text\", and when called, displays the full license text in a "
 "pager-like fashion (one screen at a time)."
 msgstr ""
 
-#: library/constants.rst:61
+#: library/constants.rst:62
 msgid "..."
 msgstr ""
 
-#: library/constants.rst:61
+#: library/constants.rst:62
 msgid "ellipsis literal"
 msgstr ""
diff --git a/library/contextlib.po b/library/contextlib.po
index f65e99d39..45b69437e 100644
--- a/library/contextlib.po
+++ b/library/contextlib.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -853,37 +853,37 @@ msgid ""
 "be used instead."
 msgstr ""
 
-#: library/contextlib.rst:634
+#: library/contextlib.rst:635
 msgid ""
 "Similar to :meth:`ExitStack.enter_context` but expects an asynchronous "
 "context manager."
 msgstr ""
 
-#: library/contextlib.rst:637
+#: library/contextlib.rst:638
 msgid ""
 "Raises :exc:`TypeError` instead of :exc:`AttributeError` if *cm* is not an "
 "asynchronous context manager."
 msgstr ""
 
-#: library/contextlib.rst:643
+#: library/contextlib.rst:644
 msgid ""
 "Similar to :meth:`ExitStack.push` but expects either an asynchronous context "
 "manager or a coroutine function."
 msgstr ""
 
-#: library/contextlib.rst:648
+#: library/contextlib.rst:649
 msgid "Similar to :meth:`ExitStack.callback` but expects a coroutine function."
 msgstr ""
 
-#: library/contextlib.rst:652
+#: library/contextlib.rst:654
 msgid "Similar to :meth:`ExitStack.close` but properly handles awaitables."
 msgstr ""
 
-#: library/contextlib.rst:654
+#: library/contextlib.rst:656
 msgid "Continuing the example for :func:`asynccontextmanager`::"
 msgstr ""
 
-#: library/contextlib.rst:656
+#: library/contextlib.rst:658
 msgid ""
 "async with AsyncExitStack() as stack:\n"
 "    connections = [await stack.enter_async_context(get_connection())\n"
@@ -893,21 +893,21 @@ msgid ""
 "    # later in the list raise an exception."
 msgstr ""
 
-#: library/contextlib.rst:666
+#: library/contextlib.rst:668
 msgid "Examples and Recipes"
 msgstr ""
 
-#: library/contextlib.rst:668
+#: library/contextlib.rst:670
 msgid ""
 "This section describes some examples and recipes for making effective use of "
 "the tools provided by :mod:`contextlib`."
 msgstr ""
 
-#: library/contextlib.rst:673
+#: library/contextlib.rst:675
 msgid "Supporting a variable number of context managers"
 msgstr ""
 
-#: library/contextlib.rst:675
+#: library/contextlib.rst:677
 msgid ""
 "The primary use case for :class:`ExitStack` is the one given in the class "
 "documentation: supporting a variable number of context managers and other "
@@ -917,7 +917,7 @@ msgid ""
 "of the context managers being optional::"
 msgstr ""
 
-#: library/contextlib.rst:682
+#: library/contextlib.rst:684
 msgid ""
 "with ExitStack() as stack:\n"
 "    for resource in resources:\n"
@@ -928,18 +928,18 @@ msgid ""
 "    # Perform operations that use the acquired resources"
 msgstr ""
 
-#: library/contextlib.rst:690
+#: library/contextlib.rst:692
 msgid ""
 "As shown, :class:`ExitStack` also makes it quite easy to use :keyword:`with` "
 "statements to manage arbitrary resources that don't natively support the "
 "context management protocol."
 msgstr ""
 
-#: library/contextlib.rst:696
+#: library/contextlib.rst:698
 msgid "Catching exceptions from ``__enter__`` methods"
 msgstr ""
 
-#: library/contextlib.rst:698
+#: library/contextlib.rst:700
 msgid ""
 "It is occasionally desirable to catch exceptions from an ``__enter__`` "
 "method implementation, *without* inadvertently catching exceptions from the :"
@@ -948,7 +948,7 @@ msgid ""
 "be separated slightly in order to allow this::"
 msgstr ""
 
-#: library/contextlib.rst:704
+#: library/contextlib.rst:706
 msgid ""
 "stack = ExitStack()\n"
 "try:\n"
@@ -960,7 +960,7 @@ msgid ""
 "        # Handle normal case"
 msgstr ""
 
-#: library/contextlib.rst:713
+#: library/contextlib.rst:715
 msgid ""
 "Actually needing to do this is likely to indicate that the underlying API "
 "should be providing a direct resource management interface for use with :"
@@ -971,25 +971,25 @@ msgid ""
 "`with` statement."
 msgstr ""
 
-#: library/contextlib.rst:723
+#: library/contextlib.rst:725
 msgid "Cleaning up in an ``__enter__`` implementation"
 msgstr ""
 
-#: library/contextlib.rst:725
+#: library/contextlib.rst:727
 msgid ""
 "As noted in the documentation of :meth:`ExitStack.push`, this method can be "
 "useful in cleaning up an already allocated resource if later steps in the :"
 "meth:`~object.__enter__` implementation fail."
 msgstr ""
 
-#: library/contextlib.rst:729
+#: library/contextlib.rst:731
 msgid ""
 "Here's an example of doing this for a context manager that accepts resource "
 "acquisition and release functions, along with an optional validation "
 "function, and maps them to the context management protocol::"
 msgstr ""
 
-#: library/contextlib.rst:733
+#: library/contextlib.rst:735
 msgid ""
 "from contextlib import contextmanager, AbstractContextManager, ExitStack\n"
 "\n"
@@ -1027,11 +1027,11 @@ msgid ""
 "        self.release_resource()"
 msgstr ""
 
-#: library/contextlib.rst:769
+#: library/contextlib.rst:771
 msgid "Replacing any use of ``try-finally`` and flag variables"
 msgstr ""
 
-#: library/contextlib.rst:771
+#: library/contextlib.rst:773
 msgid ""
 "A pattern you will sometimes see is a ``try-finally`` statement with a flag "
 "variable to indicate whether or not the body of the ``finally`` clause "
@@ -1039,7 +1039,7 @@ msgid ""
 "by using an ``except`` clause instead), it looks something like this::"
 msgstr ""
 
-#: library/contextlib.rst:776
+#: library/contextlib.rst:778
 msgid ""
 "cleanup_needed = True\n"
 "try:\n"
@@ -1051,21 +1051,21 @@ msgid ""
 "        cleanup_resources()"
 msgstr ""
 
-#: library/contextlib.rst:785
+#: library/contextlib.rst:787
 msgid ""
 "As with any ``try`` statement based code, this can cause problems for "
 "development and review, because the setup code and the cleanup code can end "
 "up being separated by arbitrarily long sections of code."
 msgstr ""
 
-#: library/contextlib.rst:789
+#: library/contextlib.rst:791
 msgid ""
 ":class:`ExitStack` makes it possible to instead register a callback for "
 "execution at the end of a ``with`` statement, and then later decide to skip "
 "executing that callback::"
 msgstr ""
 
-#: library/contextlib.rst:793
+#: library/contextlib.rst:795
 msgid ""
 "from contextlib import ExitStack\n"
 "\n"
@@ -1076,19 +1076,19 @@ msgid ""
 "        stack.pop_all()"
 msgstr ""
 
-#: library/contextlib.rst:801
+#: library/contextlib.rst:803
 msgid ""
 "This allows the intended cleanup behaviour to be made explicit up front, "
 "rather than requiring a separate flag variable."
 msgstr ""
 
-#: library/contextlib.rst:804
+#: library/contextlib.rst:806
 msgid ""
 "If a particular application uses this pattern a lot, it can be simplified "
 "even further by means of a small helper class::"
 msgstr ""
 
-#: library/contextlib.rst:807
+#: library/contextlib.rst:809
 msgid ""
 "from contextlib import ExitStack\n"
 "\n"
@@ -1106,14 +1106,14 @@ msgid ""
 "        cb.cancel()"
 msgstr ""
 
-#: library/contextlib.rst:822
+#: library/contextlib.rst:824
 msgid ""
 "If the resource cleanup isn't already neatly bundled into a standalone "
 "function, then it is still possible to use the decorator form of :meth:"
 "`ExitStack.callback` to declare the resource cleanup in advance::"
 msgstr ""
 
-#: library/contextlib.rst:827
+#: library/contextlib.rst:829
 msgid ""
 "from contextlib import ExitStack\n"
 "\n"
@@ -1126,24 +1126,24 @@ msgid ""
 "        stack.pop_all()"
 msgstr ""
 
-#: library/contextlib.rst:837
+#: library/contextlib.rst:839
 msgid ""
 "Due to the way the decorator protocol works, a callback function declared "
 "this way cannot take any parameters. Instead, any resources to be released "
 "must be accessed as closure variables."
 msgstr ""
 
-#: library/contextlib.rst:843
+#: library/contextlib.rst:845
 msgid "Using a context manager as a function decorator"
 msgstr ""
 
-#: library/contextlib.rst:845
+#: library/contextlib.rst:847
 msgid ""
 ":class:`ContextDecorator` makes it possible to use a context manager in both "
 "an ordinary ``with`` statement and also as a function decorator."
 msgstr ""
 
-#: library/contextlib.rst:848
+#: library/contextlib.rst:850
 msgid ""
 "For example, it is sometimes useful to wrap functions or groups of "
 "statements with a logger that can track the time of entry and time of exit.  "
@@ -1152,7 +1152,7 @@ msgid ""
 "in a single definition::"
 msgstr ""
 
-#: library/contextlib.rst:854
+#: library/contextlib.rst:856
 msgid ""
 "from contextlib import ContextDecorator\n"
 "import logging\n"
@@ -1170,22 +1170,22 @@ msgid ""
 "        logging.info('Exiting: %s', self.name)"
 msgstr ""
 
-#: library/contextlib.rst:869
+#: library/contextlib.rst:871
 msgid "Instances of this class can be used as both a context manager::"
 msgstr ""
 
-#: library/contextlib.rst:871
+#: library/contextlib.rst:873
 msgid ""
 "with track_entry_and_exit('widget loader'):\n"
 "    print('Some time consuming activity goes here')\n"
 "    load_widget()"
 msgstr ""
 
-#: library/contextlib.rst:875
+#: library/contextlib.rst:877
 msgid "And also as a function decorator::"
 msgstr ""
 
-#: library/contextlib.rst:877
+#: library/contextlib.rst:879
 msgid ""
 "@track_entry_and_exit('widget loader')\n"
 "def activity():\n"
@@ -1193,7 +1193,7 @@ msgid ""
 "    load_widget()"
 msgstr ""
 
-#: library/contextlib.rst:882
+#: library/contextlib.rst:884
 msgid ""
 "Note that there is one additional limitation when using context managers as "
 "function decorators: there's no way to access the return value of :meth:"
@@ -1201,21 +1201,21 @@ msgid ""
 "use an explicit ``with`` statement."
 msgstr ""
 
-#: library/contextlib.rst:889
+#: library/contextlib.rst:891
 msgid ":pep:`343` - The \"with\" statement"
 msgstr ""
 
-#: library/contextlib.rst:890
+#: library/contextlib.rst:892
 msgid ""
 "The specification, background, and examples for the Python :keyword:`with` "
 "statement."
 msgstr ""
 
-#: library/contextlib.rst:896
+#: library/contextlib.rst:898
 msgid "Single use, reusable and reentrant context managers"
 msgstr ""
 
-#: library/contextlib.rst:898
+#: library/contextlib.rst:900
 msgid ""
 "Most context managers are written in a way that means they can only be used "
 "effectively in a :keyword:`with` statement once. These single use context "
@@ -1223,28 +1223,28 @@ msgid ""
 "them a second time will trigger an exception or otherwise not work correctly."
 msgstr ""
 
-#: library/contextlib.rst:904
+#: library/contextlib.rst:906
 msgid ""
 "This common limitation means that it is generally advisable to create "
 "context managers directly in the header of the :keyword:`with` statement "
 "where they are used (as shown in all of the usage examples above)."
 msgstr ""
 
-#: library/contextlib.rst:908
+#: library/contextlib.rst:910
 msgid ""
 "Files are an example of effectively single use context managers, since the "
 "first :keyword:`with` statement will close the file, preventing any further "
 "IO operations using that file object."
 msgstr ""
 
-#: library/contextlib.rst:912
+#: library/contextlib.rst:914
 msgid ""
 "Context managers created using :func:`contextmanager` are also single use "
 "context managers, and will complain about the underlying generator failing "
 "to yield if an attempt is made to use them a second time::"
 msgstr ""
 
-#: library/contextlib.rst:916
+#: library/contextlib.rst:918
 msgid ""
 ">>> from contextlib import contextmanager\n"
 ">>> @contextmanager\n"
@@ -1267,11 +1267,11 @@ msgid ""
 "RuntimeError: generator didn't yield"
 msgstr ""
 
-#: library/contextlib.rst:940
+#: library/contextlib.rst:942
 msgid "Reentrant context managers"
 msgstr ""
 
-#: library/contextlib.rst:942
+#: library/contextlib.rst:944
 msgid ""
 "More sophisticated context managers may be \"reentrant\". These context "
 "managers can not only be used in multiple :keyword:`with` statements, but "
@@ -1279,14 +1279,14 @@ msgid ""
 "the same context manager."
 msgstr ""
 
-#: library/contextlib.rst:947
+#: library/contextlib.rst:949
 msgid ""
 ":class:`threading.RLock` is an example of a reentrant context manager, as "
 "are :func:`suppress`, :func:`redirect_stdout`, and :func:`chdir`. Here's a "
 "very simple example of reentrant use::"
 msgstr ""
 
-#: library/contextlib.rst:951
+#: library/contextlib.rst:953
 msgid ""
 ">>> from contextlib import redirect_stdout\n"
 ">>> from io import StringIO\n"
@@ -1304,14 +1304,14 @@ msgid ""
 "This is also written to the stream"
 msgstr ""
 
-#: library/contextlib.rst:966
+#: library/contextlib.rst:968
 msgid ""
 "Real world examples of reentrancy are more likely to involve multiple "
 "functions calling each other and hence be far more complicated than this "
 "example."
 msgstr ""
 
-#: library/contextlib.rst:970
+#: library/contextlib.rst:972
 msgid ""
 "Note also that being reentrant is *not* the same thing as being thread "
 "safe. :func:`redirect_stdout`, for example, is definitely not thread safe, "
@@ -1319,11 +1319,11 @@ msgid ""
 "stdout` to a different stream."
 msgstr ""
 
-#: library/contextlib.rst:979
+#: library/contextlib.rst:981
 msgid "Reusable context managers"
 msgstr ""
 
-#: library/contextlib.rst:981
+#: library/contextlib.rst:983
 msgid ""
 "Distinct from both single use and reentrant context managers are "
 "\"reusable\" context managers (or, to be completely explicit, \"reusable, "
@@ -1333,21 +1333,21 @@ msgid ""
 "manager instance has already been used in a containing with statement."
 msgstr ""
 
-#: library/contextlib.rst:988
+#: library/contextlib.rst:990
 msgid ""
 ":class:`threading.Lock` is an example of a reusable, but not reentrant, "
 "context manager (for a reentrant lock, it is necessary to use :class:"
 "`threading.RLock` instead)."
 msgstr ""
 
-#: library/contextlib.rst:992
+#: library/contextlib.rst:994
 msgid ""
 "Another example of a reusable, but not reentrant, context manager is :class:"
 "`ExitStack`, as it invokes *all* currently registered callbacks when leaving "
 "any with statement, regardless of where those callbacks were added::"
 msgstr ""
 
-#: library/contextlib.rst:997
+#: library/contextlib.rst:999
 msgid ""
 ">>> from contextlib import ExitStack\n"
 ">>> stack = ExitStack()\n"
@@ -1376,7 +1376,7 @@ msgid ""
 "Leaving outer context"
 msgstr ""
 
-#: library/contextlib.rst:1023
+#: library/contextlib.rst:1025
 msgid ""
 "As the output from the example shows, reusing a single stack object across "
 "multiple with statements works correctly, but attempting to nest them will "
@@ -1384,13 +1384,13 @@ msgid ""
 "which is unlikely to be desirable behaviour."
 msgstr ""
 
-#: library/contextlib.rst:1028
+#: library/contextlib.rst:1030
 msgid ""
 "Using separate :class:`ExitStack` instances instead of reusing a single "
 "instance avoids that problem::"
 msgstr ""
 
-#: library/contextlib.rst:1031
+#: library/contextlib.rst:1033
 msgid ""
 ">>> from contextlib import ExitStack\n"
 ">>> with ExitStack() as outer_stack:\n"
diff --git a/library/copy.po b/library/copy.po
index 5a4203d2f..8794dbede 100644
--- a/library/copy.po
+++ b/library/copy.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-06-01 00:16+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -129,21 +129,29 @@ msgstr ""
 #: library/copy.rst:82
 msgid ""
 "In order for a class to define its own copy implementation, it can define "
-"special methods :meth:`__copy__` and :meth:`__deepcopy__`.  The former is "
-"called to implement the shallow copy operation; no additional arguments are "
-"passed. The latter is called to implement the deep copy operation; it is "
-"passed one argument, the ``memo`` dictionary.  If the :meth:`__deepcopy__` "
-"implementation needs to make a deep copy of a component, it should call the :"
-"func:`deepcopy` function with the component as first argument and the memo "
-"dictionary as second argument. The memo dictionary should be treated as an "
-"opaque object."
+"special methods :meth:`~object.__copy__` and :meth:`~object.__deepcopy__`."
+msgstr ""
+
+#: library/copy.rst:88
+msgid ""
+"Called to implement the shallow copy operation; no additional arguments are "
+"passed."
 msgstr ""
 
 #: library/copy.rst:94
+msgid ""
+"Called to implement the deep copy operation; it is passed one argument, the "
+"*memo* dictionary.  If the ``__deepcopy__`` implementation needs to make a "
+"deep copy of a component, it should call the :func:`deepcopy` function with "
+"the component as first argument and the *memo* dictionary as second "
+"argument. The *memo* dictionary should be treated as an opaque object."
+msgstr ""
+
+#: library/copy.rst:103
 msgid "Module :mod:`pickle`"
 msgstr ""
 
-#: library/copy.rst:95
+#: library/copy.rst:104
 msgid ""
 "Discussion of the special methods used to support object state retrieval and "
 "restoration."
diff --git a/library/ctypes.po b/library/ctypes.po
index 8a16f99e3..a78dd07aa 100644
--- a/library/ctypes.po
+++ b/library/ctypes.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -87,11 +87,11 @@ msgstr ""
 #: library/ctypes.rst:57
 msgid ""
 ">>> from ctypes import *\n"
-">>> print(windll.kernel32)  \n"
+">>> print(windll.kernel32)\n"
 "<WinDLL 'kernel32', handle ... at ...>\n"
-">>> print(cdll.msvcrt)      \n"
+">>> print(cdll.msvcrt)\n"
 "<CDLL 'msvcrt', handle ... at ...>\n"
-">>> libc = cdll.msvcrt      \n"
+">>> libc = cdll.msvcrt\n"
 ">>>"
 msgstr ""
 
@@ -118,10 +118,10 @@ msgstr ""
 
 #: library/ctypes.rst:79
 msgid ""
-">>> cdll.LoadLibrary(\"libc.so.6\")  \n"
+">>> cdll.LoadLibrary(\"libc.so.6\")\n"
 "<CDLL 'libc.so.6', handle ... at ...>\n"
-">>> libc = CDLL(\"libc.so.6\")       \n"
-">>> libc                           \n"
+">>> libc = CDLL(\"libc.so.6\")\n"
+">>> libc\n"
 "<CDLL 'libc.so.6', handle ... at ...>\n"
 ">>>"
 msgstr ""
@@ -138,9 +138,9 @@ msgstr ""
 msgid ""
 ">>> libc.printf\n"
 "<_FuncPtr object at 0x...>\n"
-">>> print(windll.kernel32.GetModuleHandleA)  \n"
+">>> print(windll.kernel32.GetModuleHandleA)\n"
 "<_FuncPtr object at 0x...>\n"
-">>> print(windll.kernel32.MyOwnFunction)     \n"
+">>> print(windll.kernel32.MyOwnFunction)\n"
 "Traceback (most recent call last):\n"
 "  File \"<stdin>\", line 1, in <module>\n"
 "  File \"ctypes.py\", line 239, in __getattr__\n"
@@ -184,7 +184,7 @@ msgstr ""
 
 #: library/ctypes.rst:129
 msgid ""
-">>> getattr(cdll.msvcrt, \"??2@YAPAXI@Z\")  \n"
+">>> getattr(cdll.msvcrt, \"??2@YAPAXI@Z\")\n"
 "<_FuncPtr object at 0x...>\n"
 ">>>"
 msgstr ""
@@ -198,9 +198,9 @@ msgstr ""
 
 #: library/ctypes.rst:136
 msgid ""
-">>> cdll.kernel32[1]  \n"
+">>> cdll.kernel32[1]\n"
 "<_FuncPtr object at 0x...>\n"
-">>> cdll.kernel32[0]  \n"
+">>> cdll.kernel32[0]\n"
 "Traceback (most recent call last):\n"
 "  File \"<stdin>\", line 1, in <module>\n"
 "  File \"ctypes.py\", line 310, in __getitem__\n"
@@ -222,7 +222,7 @@ msgstr ""
 
 #: library/ctypes.rst:155
 msgid ""
-">>> print(libc.rand())  \n"
+">>> print(libc.rand())\n"
 "1804289383"
 msgstr ""
 
@@ -235,7 +235,7 @@ msgstr ""
 
 #: library/ctypes.rst:161
 msgid ""
-">>> print(hex(windll.kernel32.GetModuleHandleA(None)))  \n"
+">>> print(hex(windll.kernel32.GetModuleHandleA(None)))\n"
 "0x1d000000\n"
 ">>>"
 msgstr ""
@@ -248,14 +248,14 @@ msgstr ""
 
 #: library/ctypes.rst:168
 msgid ""
-">>> cdll.kernel32.GetModuleHandleA(None)  \n"
+">>> cdll.kernel32.GetModuleHandleA(None)\n"
 "Traceback (most recent call last):\n"
 "  File \"<stdin>\", line 1, in <module>\n"
 "ValueError: Procedure probably called with not enough arguments (4 bytes "
 "missing)\n"
 ">>>\n"
 "\n"
-">>> windll.msvcrt.printf(b\"spam\")  \n"
+">>> windll.msvcrt.printf(b\"spam\")\n"
 "Traceback (most recent call last):\n"
 "  File \"<stdin>\", line 1, in <module>\n"
 "ValueError: Procedure probably called with too many arguments (4 bytes in "
@@ -278,7 +278,7 @@ msgstr ""
 
 #: library/ctypes.rst:187
 msgid ""
-">>> windll.kernel32.GetModuleHandleA(32)  \n"
+">>> windll.kernel32.GetModuleHandleA(32)\n"
 "Traceback (most recent call last):\n"
 "  File \"<stdin>\", line 1, in <module>\n"
 "OSError: exception: access violation reading 0x00000020\n"
@@ -310,7 +310,7 @@ msgid ""
 "learn more about :mod:`ctypes` data types."
 msgstr ""
 
-#: library/ctypes.rst:2208
+#: library/ctypes.rst:2237
 msgid "Fundamental data types"
 msgstr ""
 
@@ -847,7 +847,7 @@ msgstr ""
 
 #: library/ctypes.rst:494
 msgid ""
-">>> print(libc.time(None))  \n"
+">>> print(libc.time(None))\n"
 "1150640792"
 msgstr ""
 
@@ -860,7 +860,7 @@ msgstr ""
 #: library/ctypes.rst:500
 msgid ""
 ">>> strchr = libc.strchr\n"
-">>> strchr(b\"abcdef\", ord(\"d\"))  \n"
+">>> strchr(b\"abcdef\", ord(\"d\"))\n"
 "8059983\n"
 ">>> strchr.restype = c_char_p    # c_char_p is a pointer to a string\n"
 ">>> strchr(b\"abcdef\", ord(\"d\"))\n"
@@ -906,17 +906,17 @@ msgstr ""
 
 #: library/ctypes.rst:535
 msgid ""
-">>> GetModuleHandle = windll.kernel32.GetModuleHandleA  \n"
+">>> GetModuleHandle = windll.kernel32.GetModuleHandleA\n"
 ">>> def ValidHandle(value):\n"
 "...     if value == 0:\n"
 "...         raise WinError()\n"
 "...     return value\n"
 "...\n"
 ">>>\n"
-">>> GetModuleHandle.restype = ValidHandle  \n"
-">>> GetModuleHandle(None)  \n"
+">>> GetModuleHandle.restype = ValidHandle\n"
+">>> GetModuleHandle(None)\n"
 "486539264\n"
-">>> GetModuleHandle(\"something silly\")  \n"
+">>> GetModuleHandle(\"something silly\")\n"
 "Traceback (most recent call last):\n"
 "  File \"<stdin>\", line 1, in <module>\n"
 "  File \"<stdin>\", line 3, in ValidHandle\n"
@@ -1636,7 +1636,7 @@ msgstr ""
 
 #: library/ctypes.rst:1039
 msgid ""
-">>> qsort(ia, len(ia), sizeof(c_int), cmp_func)  \n"
+">>> qsort(ia, len(ia), sizeof(c_int), cmp_func)\n"
 "py_cmp_func 5 1\n"
 "py_cmp_func 33 99\n"
 "py_cmp_func 7 33\n"
@@ -1656,7 +1656,7 @@ msgid ""
 "...     return a[0] - b[0]\n"
 "...\n"
 ">>>\n"
-">>> qsort(ia, len(ia), sizeof(c_int), CMPFUNC(py_cmp_func)) \n"
+">>> qsort(ia, len(ia), sizeof(c_int), CMPFUNC(py_cmp_func))\n"
 "py_cmp_func 5 1\n"
 "py_cmp_func 33 99\n"
 "py_cmp_func 7 33\n"
@@ -2016,7 +2016,7 @@ msgid ""
 "If no library can be found, returns ``None``."
 msgstr ""
 
-#: library/ctypes.rst:1982
+#: library/ctypes.rst:1997
 msgid "The exact functionality is system dependent."
 msgstr ""
 
@@ -2116,7 +2116,7 @@ msgid ""
 "determine which one is not found using Windows debugging and tracing tools."
 msgstr ""
 
-#: library/ctypes.rst:1406 library/ctypes.rst:1434
+#: library/ctypes.rst:1408 library/ctypes.rst:1439
 msgid "The *name* parameter can now be a :term:`path-like object`."
 msgstr ""
 
@@ -2128,34 +2128,40 @@ msgstr ""
 
 #: library/ctypes.rst:1393
 msgid ""
-"Windows only: Instances of this class represent loaded shared libraries, "
-"functions in these libraries use the ``stdcall`` calling convention, and are "
-"assumed to return the windows specific :class:`HRESULT` code.  :class:"
-"`HRESULT` values contain information specifying whether the function call "
-"failed or succeeded, together with additional error code.  If the return "
-"value signals a failure, an :class:`OSError` is automatically raised."
+"Instances of this class represent loaded shared libraries, functions in "
+"these libraries use the ``stdcall`` calling convention, and are assumed to "
+"return the windows specific :class:`HRESULT` code.  :class:`HRESULT` values "
+"contain information specifying whether the function call failed or "
+"succeeded, together with additional error code.  If the return value signals "
+"a failure, an :class:`OSError` is automatically raised."
+msgstr ""
+
+#: library/ctypes.rst:1417 library/ctypes.rst:1569 library/ctypes.rst:1977
+#: library/ctypes.rst:2011 library/ctypes.rst:2029 library/ctypes.rst:2101
+#: library/ctypes.rst:2473
+msgid "Availability"
 msgstr ""
 
-#: library/ctypes.rst:1400
+#: library/ctypes.rst:1402
 msgid ""
 ":exc:`WindowsError` used to be raised, which is now an alias of :exc:"
 "`OSError`."
 msgstr ""
 
-#: library/ctypes.rst:1411
+#: library/ctypes.rst:1413
 msgid ""
-"Windows only: Instances of this class represent loaded shared libraries, "
-"functions in these libraries use the ``stdcall`` calling convention, and are "
-"assumed to return :c:expr:`int` by default."
+"Instances of this class represent loaded shared libraries, functions in "
+"these libraries use the ``stdcall`` calling convention, and are assumed to "
+"return :c:expr:`int` by default."
 msgstr ""
 
-#: library/ctypes.rst:1419
+#: library/ctypes.rst:1424
 msgid ""
 "The Python :term:`global interpreter lock` is released before calling any "
 "function exported by these libraries, and reacquired afterwards."
 msgstr ""
 
-#: library/ctypes.rst:1425
+#: library/ctypes.rst:1430
 msgid ""
 "Instances of this class behave like :class:`CDLL` instances, except that the "
 "Python GIL is *not* released during the function call, and after the "
@@ -2163,11 +2169,11 @@ msgid ""
 "set, a Python exception is raised."
 msgstr ""
 
-#: library/ctypes.rst:1430
+#: library/ctypes.rst:1435
 msgid "Thus, this is only useful to call Python C api functions directly."
 msgstr ""
 
-#: library/ctypes.rst:1436
+#: library/ctypes.rst:1441
 msgid ""
 "All these classes can be instantiated by calling them with at least one "
 "argument, the pathname of the shared library.  If you have an existing "
@@ -2177,7 +2183,7 @@ msgid ""
 "the process, and to get a handle to it."
 msgstr ""
 
-#: library/ctypes.rst:1443
+#: library/ctypes.rst:1448
 msgid ""
 "The *mode* parameter can be used to specify how the library is loaded.  For "
 "details, consult the :manpage:`dlopen(3)` manpage.  On Windows, *mode* is "
@@ -2185,7 +2191,7 @@ msgid ""
 "configurable."
 msgstr ""
 
-#: library/ctypes.rst:1448
+#: library/ctypes.rst:1453
 msgid ""
 "The *use_errno* parameter, when set to true, enables a ctypes mechanism that "
 "allows accessing the system :data:`errno` error number in a safe way. :mod:"
@@ -2195,14 +2201,14 @@ msgid ""
 "private copy, the same happens immediately after the function call."
 msgstr ""
 
-#: library/ctypes.rst:1455
+#: library/ctypes.rst:1460
 msgid ""
 "The function :func:`ctypes.get_errno` returns the value of the ctypes "
 "private copy, and the function :func:`ctypes.set_errno` changes the ctypes "
 "private copy to a new value and returns the former value."
 msgstr ""
 
-#: library/ctypes.rst:1459
+#: library/ctypes.rst:1464
 msgid ""
 "The *use_last_error* parameter, when set to true, enables the same mechanism "
 "for the Windows error code which is managed by the :func:`GetLastError` and :"
@@ -2211,7 +2217,7 @@ msgid ""
 "private copy of the windows error code."
 msgstr ""
 
-#: library/ctypes.rst:1465
+#: library/ctypes.rst:1470
 msgid ""
 "The *winmode* parameter is used on Windows to specify how the library is "
 "loaded (since *mode* is ignored). It takes any value that is valid for the "
@@ -2221,29 +2227,29 @@ msgid ""
 "ensure the correct library and dependencies are loaded."
 msgstr ""
 
-#: library/ctypes.rst:1472
+#: library/ctypes.rst:1477
 msgid "Added *winmode* parameter."
 msgstr ""
 
-#: library/ctypes.rst:1479
+#: library/ctypes.rst:1484
 msgid ""
 "Flag to use as *mode* parameter.  On platforms where this flag is not "
 "available, it is defined as the integer zero."
 msgstr ""
 
-#: library/ctypes.rst:1486
+#: library/ctypes.rst:1491
 msgid ""
 "Flag to use as *mode* parameter.  On platforms where this is not available, "
 "it is the same as *RTLD_GLOBAL*."
 msgstr ""
 
-#: library/ctypes.rst:1493
+#: library/ctypes.rst:1498
 msgid ""
 "The default mode which is used to load shared libraries.  On OSX 10.3, this "
 "is *RTLD_GLOBAL*, otherwise it is the same as *RTLD_LOCAL*."
 msgstr ""
 
-#: library/ctypes.rst:1496
+#: library/ctypes.rst:1501
 msgid ""
 "Instances of these classes have no public methods.  Functions exported by "
 "the shared library can be accessed as attributes or by index.  Please note "
@@ -2252,7 +2258,7 @@ msgid ""
 "other hand, accessing it through an index returns a new object each time::"
 msgstr ""
 
-#: library/ctypes.rst:1502
+#: library/ctypes.rst:1507
 msgid ""
 ">>> from ctypes import CDLL\n"
 ">>> libc = CDLL(\"libc.so.6\")  # On Linux\n"
@@ -2262,21 +2268,21 @@ msgid ""
 "False"
 msgstr ""
 
-#: library/ctypes.rst:1509
+#: library/ctypes.rst:1514
 msgid ""
 "The following public attributes are available, their name starts with an "
 "underscore to not clash with exported function names:"
 msgstr ""
 
-#: library/ctypes.rst:1515
+#: library/ctypes.rst:1520
 msgid "The system handle used to access the library."
 msgstr ""
 
-#: library/ctypes.rst:1520
+#: library/ctypes.rst:1525
 msgid "The name of the library passed in the constructor."
 msgstr ""
 
-#: library/ctypes.rst:1522
+#: library/ctypes.rst:1527
 msgid ""
 "Shared libraries can also be loaded by using one of the prefabricated "
 "objects, which are instances of the :class:`LibraryLoader` class, either by "
@@ -2284,13 +2290,13 @@ msgid ""
 "library as attribute of the loader instance."
 msgstr ""
 
-#: library/ctypes.rst:1530
+#: library/ctypes.rst:1535
 msgid ""
 "Class which loads shared libraries.  *dlltype* should be one of the :class:"
 "`CDLL`, :class:`PyDLL`, :class:`WinDLL`, or :class:`OleDLL` types."
 msgstr ""
 
-#: library/ctypes.rst:1533
+#: library/ctypes.rst:1538
 msgid ""
 ":meth:`!__getattr__` has special behavior: It allows loading a shared "
 "library by accessing it as attribute of a library loader instance.  The "
@@ -2298,39 +2304,39 @@ msgid ""
 "each time."
 msgstr ""
 
-#: library/ctypes.rst:1539
+#: library/ctypes.rst:1544
 msgid ""
 "Load a shared library into the process and return it.  This method always "
 "returns a new instance of the library."
 msgstr ""
 
-#: library/ctypes.rst:1543
+#: library/ctypes.rst:1548
 msgid "These prefabricated library loaders are available:"
 msgstr ""
 
-#: library/ctypes.rst:1548
+#: library/ctypes.rst:1553
 msgid "Creates :class:`CDLL` instances."
 msgstr ""
 
-#: library/ctypes.rst:1554
-msgid "Windows only: Creates :class:`WinDLL` instances."
+#: library/ctypes.rst:1559
+msgid "Creates :class:`WinDLL` instances."
 msgstr ""
 
-#: library/ctypes.rst:1560
-msgid "Windows only: Creates :class:`OleDLL` instances."
+#: library/ctypes.rst:1567
+msgid "Creates :class:`OleDLL` instances."
 msgstr ""
 
-#: library/ctypes.rst:1566
+#: library/ctypes.rst:1575
 msgid "Creates :class:`PyDLL` instances."
 msgstr ""
 
-#: library/ctypes.rst:1569
+#: library/ctypes.rst:1578
 msgid ""
 "For accessing the C Python api directly, a ready-to-use Python shared "
 "library object is available:"
 msgstr ""
 
-#: library/ctypes.rst:1575
+#: library/ctypes.rst:1584
 msgid ""
 "An instance of :class:`PyDLL` that exposes Python C API functions as "
 "attributes.  Note that all these functions are assumed to return C :c:expr:"
@@ -2338,32 +2344,32 @@ msgid ""
 "correct :attr:`!restype` attribute to use these functions."
 msgstr ""
 
-#: library/ctypes.rst:1582
+#: library/ctypes.rst:1591
 msgid ""
 "Loading a library through any of these objects raises an :ref:`auditing "
 "event <auditing>` ``ctypes.dlopen`` with string argument ``name``, the name "
 "used to load the library."
 msgstr ""
 
-#: library/ctypes.rst:1588
+#: library/ctypes.rst:1597
 msgid ""
 "Accessing a function on a loaded library raises an auditing event ``ctypes."
 "dlsym`` with arguments ``library`` (the library object) and ``name`` (the "
 "symbol's name as a string or integer)."
 msgstr ""
 
-#: library/ctypes.rst:1594
+#: library/ctypes.rst:1603
 msgid ""
 "In cases when only the library handle is available rather than the object, "
 "accessing a function raises an auditing event ``ctypes.dlsym/handle`` with "
 "arguments ``handle`` (the raw library handle) and ``name``."
 msgstr ""
 
-#: library/ctypes.rst:1601
+#: library/ctypes.rst:1610
 msgid "Foreign functions"
 msgstr ""
 
-#: library/ctypes.rst:1603
+#: library/ctypes.rst:1612
 msgid ""
 "As explained in the previous section, foreign functions can be accessed as "
 "attributes of loaded shared libraries.  The function objects created in this "
@@ -2372,13 +2378,13 @@ msgid ""
 "library loader."
 msgstr ""
 
-#: library/ctypes.rst:1608
+#: library/ctypes.rst:1617
 msgid ""
 "They are instances of a private local class :class:`!_FuncPtr` (not exposed "
 "in :mod:`!ctypes`) which inherits from the private :class:`_CFuncPtr` class:"
 msgstr ""
 
-#: library/ctypes.rst:1611
+#: library/ctypes.rst:1620
 msgid ""
 ">>> import ctypes\n"
 ">>> lib = ctypes.CDLL(None)\n"
@@ -2388,29 +2394,29 @@ msgid ""
 "False"
 msgstr ""
 
-#: library/ctypes.rst:1622
+#: library/ctypes.rst:1631
 msgid "Base class for C callable foreign functions."
 msgstr ""
 
-#: library/ctypes.rst:1624
+#: library/ctypes.rst:1633
 msgid ""
 "Instances of foreign functions are also C compatible data types; they "
 "represent C function pointers."
 msgstr ""
 
-#: library/ctypes.rst:1627
+#: library/ctypes.rst:1636
 msgid ""
 "This behavior can be customized by assigning to special attributes of the "
 "foreign function object."
 msgstr ""
 
-#: library/ctypes.rst:1632
+#: library/ctypes.rst:1641
 msgid ""
 "Assign a ctypes type to specify the result type of the foreign function. Use "
 "``None`` for :c:expr:`void`, a function not returning anything."
 msgstr ""
 
-#: library/ctypes.rst:1635
+#: library/ctypes.rst:1644
 msgid ""
 "It is possible to assign a callable Python object that is not a ctypes type, "
 "in this case the function is assumed to return a C :c:expr:`int`, and the "
@@ -2420,7 +2426,7 @@ msgid ""
 "callable to the :attr:`errcheck` attribute."
 msgstr ""
 
-#: library/ctypes.rst:1644
+#: library/ctypes.rst:1653
 msgid ""
 "Assign a tuple of ctypes types to specify the argument types that the "
 "function accepts.  Functions using the ``stdcall`` calling convention can "
@@ -2429,7 +2435,7 @@ msgid ""
 "unspecified arguments as well."
 msgstr ""
 
-#: library/ctypes.rst:1650
+#: library/ctypes.rst:1659
 msgid ""
 "When a foreign function is called, each actual argument is passed to the :"
 "meth:`~_CData.from_param` class method of the items in the :attr:`argtypes` "
@@ -2439,7 +2445,7 @@ msgid ""
 "object using ctypes conversion rules."
 msgstr ""
 
-#: library/ctypes.rst:1657
+#: library/ctypes.rst:1666
 msgid ""
 "New: It is now possible to put items in argtypes which are not ctypes types, "
 "but each item must have a :meth:`~_CData.from_param` method which returns a "
@@ -2447,44 +2453,44 @@ msgid ""
 "defining adapters that can adapt custom objects as function parameters."
 msgstr ""
 
-#: library/ctypes.rst:1664
+#: library/ctypes.rst:1673
 msgid ""
 "Assign a Python function or another callable to this attribute. The callable "
 "will be called with three or more arguments:"
 msgstr ""
 
-#: library/ctypes.rst:1671
+#: library/ctypes.rst:1680
 msgid ""
 "*result* is what the foreign function returns, as specified by the :attr:`!"
 "restype` attribute."
 msgstr ""
 
-#: library/ctypes.rst:1674
+#: library/ctypes.rst:1683
 msgid ""
 "*func* is the foreign function object itself, this allows reusing the same "
 "callable object to check or post process the results of several functions."
 msgstr ""
 
-#: library/ctypes.rst:1678
+#: library/ctypes.rst:1687
 msgid ""
 "*arguments* is a tuple containing the parameters originally passed to the "
 "function call, this allows specializing the behavior on the arguments used."
 msgstr ""
 
-#: library/ctypes.rst:1682
+#: library/ctypes.rst:1691
 msgid ""
 "The object that this function returns will be returned from the foreign "
 "function call, but it can also check the result value and raise an exception "
 "if the foreign function call failed."
 msgstr ""
 
-#: library/ctypes.rst:1689
+#: library/ctypes.rst:1698
 msgid ""
 "This exception is raised when a foreign function call cannot convert one of "
 "the passed arguments."
 msgstr ""
 
-#: library/ctypes.rst:1695
+#: library/ctypes.rst:1704
 msgid ""
 "On Windows, when a foreign function call raises a system exception (for "
 "example, due to an access violation), it will be captured and replaced with "
@@ -2493,18 +2499,18 @@ msgid ""
 "hook to replace the exception with its own."
 msgstr ""
 
-#: library/ctypes.rst:1703
+#: library/ctypes.rst:1712
 msgid ""
 "Some ways to invoke foreign function calls may raise an auditing event "
 "``ctypes.call_function`` with arguments ``function pointer`` and "
 "``arguments``."
 msgstr ""
 
-#: library/ctypes.rst:1709
+#: library/ctypes.rst:1718
 msgid "Function prototypes"
 msgstr ""
 
-#: library/ctypes.rst:1711
+#: library/ctypes.rst:1720
 msgid ""
 "Foreign functions can also be created by instantiating function prototypes. "
 "Function prototypes are similar to function prototypes in C; they describe a "
@@ -2515,7 +2521,7 @@ msgid ""
 "``@wrapper`` syntax. See :ref:`ctypes-callback-functions` for examples."
 msgstr ""
 
-#: library/ctypes.rst:1722
+#: library/ctypes.rst:1731
 msgid ""
 "The returned function prototype creates functions that use the standard C "
 "calling convention.  The function will release the GIL during the call.  If "
@@ -2524,37 +2530,37 @@ msgid ""
 "after the call; *use_last_error* does the same for the Windows error code."
 msgstr ""
 
-#: library/ctypes.rst:1732
+#: library/ctypes.rst:1741
 msgid ""
-"Windows only: The returned function prototype creates functions that use the "
-"``stdcall`` calling convention.  The function will release the GIL during "
-"the call.  *use_errno* and *use_last_error* have the same meaning as above."
+"The returned function prototype creates functions that use the ``stdcall`` "
+"calling convention.  The function will release the GIL during the call.  "
+"*use_errno* and *use_last_error* have the same meaning as above."
 msgstr ""
 
-#: library/ctypes.rst:1740
+#: library/ctypes.rst:1751
 msgid ""
 "The returned function prototype creates functions that use the Python "
 "calling convention.  The function will *not* release the GIL during the call."
 msgstr ""
 
-#: library/ctypes.rst:1743
+#: library/ctypes.rst:1754
 msgid ""
 "Function prototypes created by these factory functions can be instantiated "
 "in different ways, depending on the type and number of the parameters in the "
 "call:"
 msgstr ""
 
-#: library/ctypes.rst:1750
+#: library/ctypes.rst:1761
 msgid ""
 "Returns a foreign function at the specified address which must be an integer."
 msgstr ""
 
-#: library/ctypes.rst:1757
+#: library/ctypes.rst:1768
 msgid ""
 "Create a C callable function (a callback function) from a Python *callable*."
 msgstr ""
 
-#: library/ctypes.rst:1764
+#: library/ctypes.rst:1775
 msgid ""
 "Returns a foreign function exported by a shared library. *func_spec* must be "
 "a 2-tuple ``(name_or_ordinal, library)``. The first item is the name of the "
@@ -2562,7 +2568,7 @@ msgid ""
 "small integer.  The second item is the shared library instance."
 msgstr ""
 
-#: library/ctypes.rst:1774
+#: library/ctypes.rst:1785
 msgid ""
 "Returns a foreign function that will call a COM method. *vtbl_index* is the "
 "index into the virtual function table, a small non-negative integer. *name* "
@@ -2570,79 +2576,79 @@ msgid ""
 "identifier which is used in extended error reporting."
 msgstr ""
 
-#: library/ctypes.rst:1779
+#: library/ctypes.rst:1790
 msgid ""
 "COM methods use a special calling convention: They require a pointer to the "
 "COM interface as first argument, in addition to those parameters that are "
 "specified in the :attr:`!argtypes` tuple."
 msgstr ""
 
-#: library/ctypes.rst:1783
+#: library/ctypes.rst:1794
 msgid ""
 "The optional *paramflags* parameter creates foreign function wrappers with "
 "much more functionality than the features described above."
 msgstr ""
 
-#: library/ctypes.rst:1786
+#: library/ctypes.rst:1797
 msgid ""
 "*paramflags* must be a tuple of the same length as :attr:`~_CFuncPtr."
 "argtypes`."
 msgstr ""
 
-#: library/ctypes.rst:1788
+#: library/ctypes.rst:1799
 msgid ""
 "Each item in this tuple contains further information about a parameter, it "
 "must be a tuple containing one, two, or three items."
 msgstr ""
 
-#: library/ctypes.rst:1791
+#: library/ctypes.rst:1802
 msgid ""
 "The first item is an integer containing a combination of direction flags for "
 "the parameter:"
 msgstr ""
 
-#: library/ctypes.rst:1794
+#: library/ctypes.rst:1805
 msgid "1"
 msgstr ""
 
-#: library/ctypes.rst:1795
+#: library/ctypes.rst:1806
 msgid "Specifies an input parameter to the function."
 msgstr ""
 
-#: library/ctypes.rst:1797
+#: library/ctypes.rst:1808
 msgid "2"
 msgstr ""
 
-#: library/ctypes.rst:1798
+#: library/ctypes.rst:1809
 msgid "Output parameter.  The foreign function fills in a value."
 msgstr ""
 
-#: library/ctypes.rst:1800
+#: library/ctypes.rst:1811
 msgid "4"
 msgstr ""
 
-#: library/ctypes.rst:1801
+#: library/ctypes.rst:1812
 msgid "Input parameter which defaults to the integer zero."
 msgstr ""
 
-#: library/ctypes.rst:1803
+#: library/ctypes.rst:1814
 msgid ""
 "The optional second item is the parameter name as string.  If this is "
 "specified, the foreign function can be called with named parameters."
 msgstr ""
 
-#: library/ctypes.rst:1806
+#: library/ctypes.rst:1817
 msgid "The optional third item is the default value for this parameter."
 msgstr ""
 
-#: library/ctypes.rst:1809
+#: library/ctypes.rst:1820
 msgid ""
 "The following example demonstrates how to wrap the Windows ``MessageBoxW`` "
 "function so that it supports default parameters and named arguments. The C "
 "declaration from the windows header file is this::"
 msgstr ""
 
-#: library/ctypes.rst:1813
+#: library/ctypes.rst:1824
 msgid ""
 "WINUSERAPI int WINAPI\n"
 "MessageBoxW(\n"
@@ -2652,11 +2658,11 @@ msgid ""
 "    UINT uType);"
 msgstr ""
 
-#: library/ctypes.rst:1843
+#: library/ctypes.rst:1854
 msgid "Here is the wrapping with :mod:`ctypes`::"
 msgstr ""
 
-#: library/ctypes.rst:1822
+#: library/ctypes.rst:1833
 msgid ""
 ">>> from ctypes import c_int, WINFUNCTYPE, windll\n"
 ">>> from ctypes.wintypes import HWND, LPCWSTR, UINT\n"
@@ -2666,18 +2672,18 @@ msgid ""
 ">>> MessageBox = prototype((\"MessageBoxW\", windll.user32), paramflags)"
 msgstr ""
 
-#: library/ctypes.rst:1828
+#: library/ctypes.rst:1839
 msgid "The ``MessageBox`` foreign function can now be called in these ways::"
 msgstr ""
 
-#: library/ctypes.rst:1830
+#: library/ctypes.rst:1841
 msgid ""
 ">>> MessageBox()\n"
 ">>> MessageBox(text=\"Spam, spam, spam\")\n"
 ">>> MessageBox(flags=2, text=\"foo bar\")"
 msgstr ""
 
-#: library/ctypes.rst:1834
+#: library/ctypes.rst:1845
 msgid ""
 "A second example demonstrates output parameters.  The win32 "
 "``GetWindowRect`` function retrieves the dimensions of a specified window by "
@@ -2685,7 +2691,7 @@ msgid ""
 "the C declaration::"
 msgstr ""
 
-#: library/ctypes.rst:1838
+#: library/ctypes.rst:1849
 msgid ""
 "WINUSERAPI BOOL WINAPI\n"
 "GetWindowRect(\n"
@@ -2693,7 +2699,7 @@ msgid ""
 "     LPRECT lpRect);"
 msgstr ""
 
-#: library/ctypes.rst:1845
+#: library/ctypes.rst:1856
 msgid ""
 ">>> from ctypes import POINTER, WINFUNCTYPE, windll, WinError\n"
 ">>> from ctypes.wintypes import BOOL, HWND, RECT\n"
@@ -2704,7 +2710,7 @@ msgid ""
 ">>>"
 msgstr ""
 
-#: library/ctypes.rst:1852
+#: library/ctypes.rst:1863
 msgid ""
 "Functions with output parameters will automatically return the output "
 "parameter value if there is a single one, or a tuple containing the output "
@@ -2712,7 +2718,7 @@ msgid ""
 "now returns a RECT instance, when called."
 msgstr ""
 
-#: library/ctypes.rst:1857
+#: library/ctypes.rst:1868
 msgid ""
 "Output parameters can be combined with the :attr:`~_CFuncPtr.errcheck` "
 "protocol to do further output processing and error checking.  The win32 "
@@ -2721,7 +2727,7 @@ msgid ""
 "exception when the api call failed::"
 msgstr ""
 
-#: library/ctypes.rst:1862
+#: library/ctypes.rst:1873
 msgid ""
 ">>> def errcheck(result, func, args):\n"
 "...     if not result:\n"
@@ -2732,7 +2738,7 @@ msgid ""
 ">>>"
 msgstr ""
 
-#: library/ctypes.rst:1870
+#: library/ctypes.rst:1881
 msgid ""
 "If the :attr:`~_CFuncPtr.errcheck` function returns the argument tuple it "
 "receives unchanged, :mod:`ctypes` continues the normal processing it does on "
@@ -2741,7 +2747,7 @@ msgid ""
 "and return them instead, the normal processing will no longer take place::"
 msgstr ""
 
-#: library/ctypes.rst:1876
+#: library/ctypes.rst:1887
 msgid ""
 ">>> def errcheck(result, func, args):\n"
 "...     if not result:\n"
@@ -2753,50 +2759,50 @@ msgid ""
 ">>>"
 msgstr ""
 
-#: library/ctypes.rst:1889
+#: library/ctypes.rst:1900
 msgid "Utility functions"
 msgstr ""
 
-#: library/ctypes.rst:1893
+#: library/ctypes.rst:1904
 msgid ""
 "Returns the address of the memory buffer as integer.  *obj* must be an "
 "instance of a ctypes type."
 msgstr ""
 
-#: library/ctypes.rst:1896
+#: library/ctypes.rst:1907
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``ctypes.addressof`` with "
 "argument ``obj``."
 msgstr ""
 
-#: library/ctypes.rst:1901
+#: library/ctypes.rst:1912
 msgid ""
 "Returns the alignment requirements of a ctypes type. *obj_or_type* must be a "
 "ctypes type or instance."
 msgstr ""
 
-#: library/ctypes.rst:1907
+#: library/ctypes.rst:1918
 msgid ""
 "Returns a light-weight pointer to *obj*, which must be an instance of a "
 "ctypes type.  *offset* defaults to zero, and must be an integer that will be "
 "added to the internal pointer value."
 msgstr ""
 
-#: library/ctypes.rst:1911
+#: library/ctypes.rst:1922
 msgid "``byref(obj, offset)`` corresponds to this C code::"
 msgstr ""
 
-#: library/ctypes.rst:1913
+#: library/ctypes.rst:1924
 msgid "(((char *)&obj) + offset)"
 msgstr ""
 
-#: library/ctypes.rst:1915
+#: library/ctypes.rst:1926
 msgid ""
 "The returned object can only be used as a foreign function call parameter. "
 "It behaves similar to ``pointer(obj)``, but the construction is a lot faster."
 msgstr ""
 
-#: library/ctypes.rst:1921
+#: library/ctypes.rst:1932
 msgid ""
 "This function is similar to the cast operator in C. It returns a new "
 "instance of *type* which points to the same memory block as *obj*.  *type* "
@@ -2804,19 +2810,19 @@ msgid ""
 "as a pointer."
 msgstr ""
 
-#: library/ctypes.rst:1929
+#: library/ctypes.rst:1940
 msgid ""
 "This function creates a mutable character buffer. The returned object is a "
 "ctypes array of :class:`c_char`."
 msgstr ""
 
-#: library/ctypes.rst:1932
+#: library/ctypes.rst:1943
 msgid ""
 "*init_or_size* must be an integer which specifies the size of the array, or "
 "a bytes object which will be used to initialize the array items."
 msgstr ""
 
-#: library/ctypes.rst:1935
+#: library/ctypes.rst:1946
 msgid ""
 "If a bytes object is specified as first argument, the buffer is made one "
 "item larger than its length so that the last element in the array is a NUL "
@@ -2825,25 +2831,25 @@ msgid ""
 "not be used."
 msgstr ""
 
-#: library/ctypes.rst:1940
+#: library/ctypes.rst:1951
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``ctypes.create_string_buffer`` "
 "with arguments ``init``, ``size``."
 msgstr ""
 
-#: library/ctypes.rst:1945
+#: library/ctypes.rst:1956
 msgid ""
 "This function creates a mutable unicode character buffer. The returned "
 "object is a ctypes array of :class:`c_wchar`."
 msgstr ""
 
-#: library/ctypes.rst:1948
+#: library/ctypes.rst:1959
 msgid ""
 "*init_or_size* must be an integer which specifies the size of the array, or "
 "a string which will be used to initialize the array items."
 msgstr ""
 
-#: library/ctypes.rst:1951
+#: library/ctypes.rst:1962
 msgid ""
 "If a string is specified as first argument, the buffer is made one item "
 "larger than the length of the string so that the last element in the array "
@@ -2852,27 +2858,27 @@ msgid ""
 "should not be used."
 msgstr ""
 
-#: library/ctypes.rst:1957
+#: library/ctypes.rst:1968
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``ctypes.create_unicode_buffer`` "
 "with arguments ``init``, ``size``."
 msgstr ""
 
-#: library/ctypes.rst:1962
+#: library/ctypes.rst:1973
 msgid ""
-"Windows only: This function is a hook which allows implementing in-process "
-"COM servers with ctypes.  It is called from the DllCanUnloadNow function "
-"that the _ctypes extension dll exports."
+"This function is a hook which allows implementing in-process COM servers "
+"with ctypes.  It is called from the DllCanUnloadNow function that the "
+"_ctypes extension dll exports."
 msgstr ""
 
-#: library/ctypes.rst:1969
+#: library/ctypes.rst:1982
 msgid ""
-"Windows only: This function is a hook which allows implementing in-process "
-"COM servers with ctypes.  It is called from the DllGetClassObject function "
-"that the ``_ctypes`` extension dll exports."
+"This function is a hook which allows implementing in-process COM servers "
+"with ctypes.  It is called from the DllGetClassObject function that the "
+"``_ctypes`` extension dll exports."
 msgstr ""
 
-#: library/ctypes.rst:1977
+#: library/ctypes.rst:1992
 msgid ""
 "Try to find a library and return a pathname.  *name* is the library name "
 "without any prefix like ``lib``, suffix like ``.so``, ``.dylib`` or version "
@@ -2880,92 +2886,92 @@ msgid ""
 "If no library can be found, returns ``None``."
 msgstr ""
 
-#: library/ctypes.rst:1988
+#: library/ctypes.rst:2003
 msgid ""
-"Windows only: return the filename of the VC runtime library used by Python, "
-"and by the extension modules.  If the name of the library cannot be "
-"determined, ``None`` is returned."
+"Returns the filename of the VC runtime library used by Python, and by the "
+"extension modules.  If the name of the library cannot be determined, "
+"``None`` is returned."
 msgstr ""
 
-#: library/ctypes.rst:1992
+#: library/ctypes.rst:2007
 msgid ""
 "If you need to free memory, for example, allocated by an extension module "
 "with a call to the ``free(void *)``, it is important that you use the "
 "function in the same library that allocated the memory."
 msgstr ""
 
-#: library/ctypes.rst:1999
+#: library/ctypes.rst:2016
 msgid ""
-"Windows only: Returns a textual description of the error code *code*.  If no "
-"error code is specified, the last error code is used by calling the Windows "
-"api function GetLastError."
+"Returns a textual description of the error code *code*.  If no error code is "
+"specified, the last error code is used by calling the Windows api function "
+"GetLastError."
 msgstr ""
 
-#: library/ctypes.rst:2006
+#: library/ctypes.rst:2025
 msgid ""
-"Windows only: Returns the last error code set by Windows in the calling "
-"thread. This function calls the Windows ``GetLastError()`` function "
-"directly, it does not return the ctypes-private copy of the error code."
+"Returns the last error code set by Windows in the calling thread. This "
+"function calls the Windows ``GetLastError()`` function directly, it does not "
+"return the ctypes-private copy of the error code."
 msgstr ""
 
-#: library/ctypes.rst:2012
+#: library/ctypes.rst:2034
 msgid ""
 "Returns the current value of the ctypes-private copy of the system :data:"
 "`errno` variable in the calling thread."
 msgstr ""
 
-#: library/ctypes.rst:2015
+#: library/ctypes.rst:2037
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``ctypes.get_errno`` with no "
 "arguments."
 msgstr ""
 
-#: library/ctypes.rst:2019
+#: library/ctypes.rst:2041
 msgid ""
-"Windows only: returns the current value of the ctypes-private copy of the "
-"system :data:`!LastError` variable in the calling thread."
+"Returns the current value of the ctypes-private copy of the system :data:`!"
+"LastError` variable in the calling thread."
 msgstr ""
 
-#: library/ctypes.rst:2022
+#: library/ctypes.rst:2046
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``ctypes.get_last_error`` with no "
 "arguments."
 msgstr ""
 
-#: library/ctypes.rst:2026
+#: library/ctypes.rst:2051
 msgid ""
 "Same as the standard C memmove library function: copies *count* bytes from "
 "*src* to *dst*. *dst* and *src* must be integers or ctypes instances that "
 "can be converted to pointers."
 msgstr ""
 
-#: library/ctypes.rst:2033
+#: library/ctypes.rst:2058
 msgid ""
 "Same as the standard C memset library function: fills the memory block at "
 "address *dst* with *count* bytes of value *c*. *dst* must be an integer "
 "specifying an address, or a ctypes instance."
 msgstr ""
 
-#: library/ctypes.rst:2040
+#: library/ctypes.rst:2065
 msgid ""
 "Create and return a new ctypes pointer type. Pointer types are cached and "
 "reused internally, so calling this function repeatedly is cheap. *type* must "
 "be a ctypes type."
 msgstr ""
 
-#: library/ctypes.rst:2047
+#: library/ctypes.rst:2072
 msgid ""
 "Create a new pointer instance, pointing to *obj*. The returned object is of "
 "the type ``POINTER(type(obj))``."
 msgstr ""
 
-#: library/ctypes.rst:2050
+#: library/ctypes.rst:2075
 msgid ""
 "Note: If you just want to pass a pointer to an object to a foreign function "
 "call, you should use ``byref(obj)`` which is much faster."
 msgstr ""
 
-#: library/ctypes.rst:2056
+#: library/ctypes.rst:2081
 msgid ""
 "This function resizes the internal memory buffer of *obj*, which must be an "
 "instance of a ctypes type.  It is not possible to make the buffer smaller "
@@ -2973,82 +2979,81 @@ msgid ""
 "but it is possible to enlarge the buffer."
 msgstr ""
 
-#: library/ctypes.rst:2064
+#: library/ctypes.rst:2089
 msgid ""
 "Set the current value of the ctypes-private copy of the system :data:`errno` "
 "variable in the calling thread to *value* and return the previous value."
 msgstr ""
 
-#: library/ctypes.rst:2067
+#: library/ctypes.rst:2092
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``ctypes.set_errno`` with "
 "argument ``errno``."
 msgstr ""
 
-#: library/ctypes.rst:2072
+#: library/ctypes.rst:2097
 msgid ""
-"Windows only: set the current value of the ctypes-private copy of the "
-"system :data:`!LastError` variable in the calling thread to *value* and "
-"return the previous value."
+"Sets the current value of the ctypes-private copy of the system :data:`!"
+"LastError` variable in the calling thread to *value* and return the previous "
+"value."
 msgstr ""
 
-#: library/ctypes.rst:2076
+#: library/ctypes.rst:2103
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``ctypes.set_last_error`` with "
 "argument ``error``."
 msgstr ""
 
-#: library/ctypes.rst:2081
+#: library/ctypes.rst:2108
 msgid ""
 "Returns the size in bytes of a ctypes type or instance memory buffer. Does "
 "the same as the C ``sizeof`` operator."
 msgstr ""
 
-#: library/ctypes.rst:2087
+#: library/ctypes.rst:2114
 msgid ""
 "Return the byte string at *void \\*ptr*. If *size* is specified, it is used "
 "as size, otherwise the string is assumed to be zero-terminated."
 msgstr ""
 
-#: library/ctypes.rst:2091
+#: library/ctypes.rst:2118
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``ctypes.string_at`` with "
 "arguments ``ptr``, ``size``."
 msgstr ""
 
-#: library/ctypes.rst:2096
+#: library/ctypes.rst:2123
 msgid ""
-"Windows only: this function is probably the worst-named thing in ctypes. It "
-"creates an instance of :exc:`OSError`.  If *code* is not specified, "
-"``GetLastError`` is called to determine the error code. If *descr* is not "
-"specified, :func:`FormatError` is called to get a textual description of the "
-"error."
+"This function is probably the worst-named thing in ctypes. It creates an "
+"instance of :exc:`OSError`.  If *code* is not specified, ``GetLastError`` is "
+"called to determine the error code. If *descr* is not specified, :func:"
+"`FormatError` is called to get a textual description of the error."
 msgstr ""
 
-#: library/ctypes.rst:2102
+#: library/ctypes.rst:2131
 msgid ""
 "An instance of :exc:`WindowsError` used to be created, which is now an alias "
 "of :exc:`OSError`."
 msgstr ""
 
-#: library/ctypes.rst:2109
+#: library/ctypes.rst:2138
 msgid ""
 "Return the wide-character string at *void \\*ptr*. If *size* is specified, "
 "it is used as the number of characters of the string, otherwise the string "
 "is assumed to be zero-terminated."
 msgstr ""
 
-#: library/ctypes.rst:2114
+#: library/ctypes.rst:2143
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``ctypes.wstring_at`` with "
 "arguments ``ptr``, ``size``."
 msgstr ""
 
-#: library/ctypes.rst:2120
+#: library/ctypes.rst:2149
 msgid "Data types"
 msgstr ""
 
-#: library/ctypes.rst:2125
+#: library/ctypes.rst:2154
 msgid ""
 "This non-public class is the common base class of all ctypes data types. "
 "Among other things, all ctypes type instances contain a memory block that "
@@ -3058,13 +3063,13 @@ msgid ""
 "alive in case the memory block contains pointers."
 msgstr ""
 
-#: library/ctypes.rst:2132
+#: library/ctypes.rst:2161
 msgid ""
 "Common methods of ctypes data types, these are all class methods (to be "
 "exact, they are methods of the :term:`metaclass`):"
 msgstr ""
 
-#: library/ctypes.rst:2137
+#: library/ctypes.rst:2166
 msgid ""
 "This method returns a ctypes instance that shares the buffer of the *source* "
 "object.  The *source* object must support the writeable buffer interface.  "
@@ -3073,13 +3078,13 @@ msgid ""
 "exc:`ValueError` is raised."
 msgstr ""
 
-#: library/ctypes.rst:2153
+#: library/ctypes.rst:2182
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``ctypes.cdata/buffer`` with "
 "arguments ``pointer``, ``size``, ``offset``."
 msgstr ""
 
-#: library/ctypes.rst:2147
+#: library/ctypes.rst:2176
 msgid ""
 "This method creates a ctypes instance, copying the buffer from the *source* "
 "object buffer which must be readable.  The optional *offset* parameter "
@@ -3087,19 +3092,19 @@ msgid ""
 "If the source buffer is not large enough a :exc:`ValueError` is raised."
 msgstr ""
 
-#: library/ctypes.rst:2157
+#: library/ctypes.rst:2186
 msgid ""
 "This method returns a ctypes type instance using the memory specified by "
 "*address* which must be an integer."
 msgstr ""
 
-#: library/ctypes.rst:2162
+#: library/ctypes.rst:2191
 msgid ""
 "This method, and others that indirectly call this method, raises an :ref:"
 "`auditing event <auditing>` ``ctypes.cdata`` with argument ``address``."
 msgstr ""
 
-#: library/ctypes.rst:2168
+#: library/ctypes.rst:2197
 msgid ""
 "This method adapts *obj* to a ctypes type.  It is called with the actual "
 "object used in a foreign function call when the type is present in the "
@@ -3107,25 +3112,25 @@ msgid ""
 "object that can be used as a function call parameter."
 msgstr ""
 
-#: library/ctypes.rst:2173
+#: library/ctypes.rst:2202
 msgid ""
 "All ctypes data types have a default implementation of this classmethod that "
 "normally returns *obj* if that is an instance of the type.  Some types "
 "accept other objects as well."
 msgstr ""
 
-#: library/ctypes.rst:2179
+#: library/ctypes.rst:2208
 msgid ""
 "This method returns a ctypes type instance exported by a shared library. "
 "*name* is the name of the symbol that exports the data, *library* is the "
 "loaded shared library."
 msgstr ""
 
-#: library/ctypes.rst:2183
+#: library/ctypes.rst:2212
 msgid "Common instance variables of ctypes data types:"
 msgstr ""
 
-#: library/ctypes.rst:2187
+#: library/ctypes.rst:2216
 msgid ""
 "Sometimes ctypes data instances do not own the memory block they contain, "
 "instead they share part of the memory block of a base object.  The :attr:"
@@ -3133,13 +3138,13 @@ msgid ""
 "block."
 msgstr ""
 
-#: library/ctypes.rst:2194
+#: library/ctypes.rst:2223
 msgid ""
 "This read-only variable is true when the ctypes data instance has allocated "
 "the memory block itself, false otherwise."
 msgstr ""
 
-#: library/ctypes.rst:2199
+#: library/ctypes.rst:2228
 msgid ""
 "This member is either ``None`` or a dictionary containing Python objects "
 "that need to be kept alive so that the memory block contents is kept valid.  "
@@ -3147,7 +3152,7 @@ msgid ""
 "dictionary."
 msgstr ""
 
-#: library/ctypes.rst:2212
+#: library/ctypes.rst:2241
 msgid ""
 "This non-public class is the base class of all fundamental ctypes data "
 "types. It is mentioned here because it contains the common attributes of the "
@@ -3156,11 +3161,11 @@ msgid ""
 "types that are not and do not contain pointers can now be pickled."
 msgstr ""
 
-#: library/ctypes.rst:2218
+#: library/ctypes.rst:2247
 msgid "Instances have a single attribute:"
 msgstr ""
 
-#: library/ctypes.rst:2222
+#: library/ctypes.rst:2251
 msgid ""
 "This attribute contains the actual value of the instance. For integer and "
 "pointer types, it is an integer, for character types, it is a single "
@@ -3168,7 +3173,7 @@ msgid ""
 "bytes object or string."
 msgstr ""
 
-#: library/ctypes.rst:2227
+#: library/ctypes.rst:2256
 msgid ""
 "When the ``value`` attribute is retrieved from a ctypes instance, usually a "
 "new object is returned each time.  :mod:`ctypes` does *not* implement "
@@ -3176,7 +3181,7 @@ msgid ""
 "true for all other ctypes object instances."
 msgstr ""
 
-#: library/ctypes.rst:2233
+#: library/ctypes.rst:2262
 msgid ""
 "Fundamental data types, when returned as foreign function call results, or, "
 "for example, by retrieving structure field members or array items, are "
@@ -3186,7 +3191,7 @@ msgid ""
 "instance."
 msgstr ""
 
-#: library/ctypes.rst:2241
+#: library/ctypes.rst:2270
 msgid ""
 "Subclasses of fundamental data types do *not* inherit this behavior. So, if "
 "a foreign functions :attr:`!restype` is a subclass of :class:`c_void_p`, you "
@@ -3194,25 +3199,25 @@ msgid ""
 "you can get the value of the pointer by accessing the ``value`` attribute."
 msgstr ""
 
-#: library/ctypes.rst:2246
+#: library/ctypes.rst:2275
 msgid "These are the fundamental ctypes data types:"
 msgstr ""
 
-#: library/ctypes.rst:2250
+#: library/ctypes.rst:2279
 msgid ""
 "Represents the C :c:expr:`signed char` datatype, and interprets the value as "
 "small integer.  The constructor accepts an optional integer initializer; no "
 "overflow checking is done."
 msgstr ""
 
-#: library/ctypes.rst:2257
+#: library/ctypes.rst:2286
 msgid ""
 "Represents the C :c:expr:`char` datatype, and interprets the value as a "
 "single character.  The constructor accepts an optional string initializer, "
 "the length of the string must be exactly one character."
 msgstr ""
 
-#: library/ctypes.rst:2264
+#: library/ctypes.rst:2293
 msgid ""
 "Represents the C :c:expr:`char *` datatype when it points to a zero-"
 "terminated string.  For a general character pointer that may also point to "
@@ -3220,182 +3225,182 @@ msgid ""
 "integer address, or a bytes object."
 msgstr ""
 
-#: library/ctypes.rst:2272
+#: library/ctypes.rst:2301
 msgid ""
 "Represents the C :c:expr:`double` datatype.  The constructor accepts an "
 "optional float initializer."
 msgstr ""
 
-#: library/ctypes.rst:2278
+#: library/ctypes.rst:2307
 msgid ""
 "Represents the C :c:expr:`long double` datatype.  The constructor accepts an "
 "optional float initializer.  On platforms where ``sizeof(long double) == "
 "sizeof(double)`` it is an alias to :class:`c_double`."
 msgstr ""
 
-#: library/ctypes.rst:2284
+#: library/ctypes.rst:2313
 msgid ""
 "Represents the C :c:expr:`float` datatype.  The constructor accepts an "
 "optional float initializer."
 msgstr ""
 
-#: library/ctypes.rst:2290
+#: library/ctypes.rst:2319
 msgid ""
 "Represents the C :c:expr:`signed int` datatype.  The constructor accepts an "
 "optional integer initializer; no overflow checking is done.  On platforms "
 "where ``sizeof(int) == sizeof(long)`` it is an alias to :class:`c_long`."
 msgstr ""
 
-#: library/ctypes.rst:2297
+#: library/ctypes.rst:2326
 msgid ""
 "Represents the C 8-bit :c:expr:`signed int` datatype.  Usually an alias for :"
 "class:`c_byte`."
 msgstr ""
 
-#: library/ctypes.rst:2303
+#: library/ctypes.rst:2332
 msgid ""
 "Represents the C 16-bit :c:expr:`signed int` datatype.  Usually an alias "
 "for :class:`c_short`."
 msgstr ""
 
-#: library/ctypes.rst:2309
+#: library/ctypes.rst:2338
 msgid ""
 "Represents the C 32-bit :c:expr:`signed int` datatype.  Usually an alias "
 "for :class:`c_int`."
 msgstr ""
 
-#: library/ctypes.rst:2315
+#: library/ctypes.rst:2344
 msgid ""
 "Represents the C 64-bit :c:expr:`signed int` datatype.  Usually an alias "
 "for :class:`c_longlong`."
 msgstr ""
 
-#: library/ctypes.rst:2321
+#: library/ctypes.rst:2350
 msgid ""
 "Represents the C :c:expr:`signed long` datatype.  The constructor accepts an "
 "optional integer initializer; no overflow checking is done."
 msgstr ""
 
-#: library/ctypes.rst:2327
+#: library/ctypes.rst:2356
 msgid ""
 "Represents the C :c:expr:`signed long long` datatype.  The constructor "
 "accepts an optional integer initializer; no overflow checking is done."
 msgstr ""
 
-#: library/ctypes.rst:2333
+#: library/ctypes.rst:2362
 msgid ""
 "Represents the C :c:expr:`signed short` datatype.  The constructor accepts "
 "an optional integer initializer; no overflow checking is done."
 msgstr ""
 
-#: library/ctypes.rst:2339
+#: library/ctypes.rst:2368
 msgid "Represents the C :c:type:`size_t` datatype."
 msgstr ""
 
-#: library/ctypes.rst:2344
+#: library/ctypes.rst:2373
 msgid "Represents the C :c:type:`ssize_t` datatype."
 msgstr ""
 
-#: library/ctypes.rst:2351
+#: library/ctypes.rst:2380
 msgid "Represents the C :c:type:`time_t` datatype."
 msgstr ""
 
-#: library/ctypes.rst:2358
+#: library/ctypes.rst:2387
 msgid ""
 "Represents the C :c:expr:`unsigned char` datatype, it interprets the value "
 "as small integer.  The constructor accepts an optional integer initializer; "
 "no overflow checking is done."
 msgstr ""
 
-#: library/ctypes.rst:2365
+#: library/ctypes.rst:2394
 msgid ""
 "Represents the C :c:expr:`unsigned int` datatype.  The constructor accepts "
 "an optional integer initializer; no overflow checking is done.  On platforms "
 "where ``sizeof(int) == sizeof(long)`` it is an alias for :class:`c_ulong`."
 msgstr ""
 
-#: library/ctypes.rst:2372
+#: library/ctypes.rst:2401
 msgid ""
 "Represents the C 8-bit :c:expr:`unsigned int` datatype.  Usually an alias "
 "for :class:`c_ubyte`."
 msgstr ""
 
-#: library/ctypes.rst:2378
+#: library/ctypes.rst:2407
 msgid ""
 "Represents the C 16-bit :c:expr:`unsigned int` datatype.  Usually an alias "
 "for :class:`c_ushort`."
 msgstr ""
 
-#: library/ctypes.rst:2384
+#: library/ctypes.rst:2413
 msgid ""
 "Represents the C 32-bit :c:expr:`unsigned int` datatype.  Usually an alias "
 "for :class:`c_uint`."
 msgstr ""
 
-#: library/ctypes.rst:2390
+#: library/ctypes.rst:2419
 msgid ""
 "Represents the C 64-bit :c:expr:`unsigned int` datatype.  Usually an alias "
 "for :class:`c_ulonglong`."
 msgstr ""
 
-#: library/ctypes.rst:2396
+#: library/ctypes.rst:2425
 msgid ""
 "Represents the C :c:expr:`unsigned long` datatype.  The constructor accepts "
 "an optional integer initializer; no overflow checking is done."
 msgstr ""
 
-#: library/ctypes.rst:2402
+#: library/ctypes.rst:2431
 msgid ""
 "Represents the C :c:expr:`unsigned long long` datatype.  The constructor "
 "accepts an optional integer initializer; no overflow checking is done."
 msgstr ""
 
-#: library/ctypes.rst:2408
+#: library/ctypes.rst:2437
 msgid ""
 "Represents the C :c:expr:`unsigned short` datatype.  The constructor accepts "
 "an optional integer initializer; no overflow checking is done."
 msgstr ""
 
-#: library/ctypes.rst:2414
+#: library/ctypes.rst:2443
 msgid ""
 "Represents the C :c:expr:`void *` type.  The value is represented as "
 "integer. The constructor accepts an optional integer initializer."
 msgstr ""
 
-#: library/ctypes.rst:2420
+#: library/ctypes.rst:2449
 msgid ""
 "Represents the C :c:type:`wchar_t` datatype, and interprets the value as a "
 "single character unicode string.  The constructor accepts an optional string "
 "initializer, the length of the string must be exactly one character."
 msgstr ""
 
-#: library/ctypes.rst:2427
+#: library/ctypes.rst:2456
 msgid ""
 "Represents the C :c:expr:`wchar_t *` datatype, which must be a pointer to a "
 "zero-terminated wide character string.  The constructor accepts an integer "
 "address, or a string."
 msgstr ""
 
-#: library/ctypes.rst:2434
+#: library/ctypes.rst:2463
 msgid ""
 "Represent the C :c:expr:`bool` datatype (more accurately, :c:expr:`_Bool` "
 "from C99).  Its value can be ``True`` or ``False``, and the constructor "
 "accepts any object that has a truth value."
 msgstr ""
 
-#: library/ctypes.rst:2441
+#: library/ctypes.rst:2470
 msgid ""
-"Windows only: Represents a :c:type:`!HRESULT` value, which contains success "
-"or error information for a function or method call."
+"Represents a :c:type:`!HRESULT` value, which contains success or error "
+"information for a function or method call."
 msgstr ""
 
-#: library/ctypes.rst:2447
+#: library/ctypes.rst:2478
 msgid ""
 "Represents the C :c:expr:`PyObject *` datatype.  Calling this without an "
 "argument creates a ``NULL`` :c:expr:`PyObject *` pointer."
 msgstr ""
 
-#: library/ctypes.rst:2450
+#: library/ctypes.rst:2481
 msgid ""
 "The :mod:`!ctypes.wintypes` module provides quite some other Windows "
 "specific data types, for example :c:type:`!HWND`, :c:type:`!WPARAM`, or :c:"
@@ -3403,41 +3408,41 @@ msgid ""
 "are also defined."
 msgstr ""
 
-#: library/ctypes.rst:2458
+#: library/ctypes.rst:2489
 msgid "Structured data types"
 msgstr ""
 
-#: library/ctypes.rst:2463
+#: library/ctypes.rst:2494
 msgid "Abstract base class for unions in native byte order."
 msgstr ""
 
-#: library/ctypes.rst:2468
+#: library/ctypes.rst:2499
 msgid "Abstract base class for unions in *big endian* byte order."
 msgstr ""
 
-#: library/ctypes.rst:2474
+#: library/ctypes.rst:2505
 msgid "Abstract base class for unions in *little endian* byte order."
 msgstr ""
 
-#: library/ctypes.rst:2480
+#: library/ctypes.rst:2511
 msgid "Abstract base class for structures in *big endian* byte order."
 msgstr ""
 
-#: library/ctypes.rst:2485
+#: library/ctypes.rst:2516
 msgid "Abstract base class for structures in *little endian* byte order."
 msgstr ""
 
-#: library/ctypes.rst:2487
+#: library/ctypes.rst:2518
 msgid ""
 "Structures and unions with non-native byte order cannot contain pointer type "
 "fields, or any other data types containing pointer type fields."
 msgstr ""
 
-#: library/ctypes.rst:2493
+#: library/ctypes.rst:2524
 msgid "Abstract base class for structures in *native* byte order."
 msgstr ""
 
-#: library/ctypes.rst:2495
+#: library/ctypes.rst:2526
 msgid ""
 "Concrete structure and union types must be created by subclassing one of "
 "these types, and at least define a :attr:`_fields_` class variable. :mod:"
@@ -3445,34 +3450,34 @@ msgid ""
 "the fields by direct attribute accesses.  These are the"
 msgstr ""
 
-#: library/ctypes.rst:2503
+#: library/ctypes.rst:2534
 msgid ""
 "A sequence defining the structure fields.  The items must be 2-tuples or 3-"
 "tuples.  The first item is the name of the field, the second item specifies "
 "the type of the field; it can be any ctypes data type."
 msgstr ""
 
-#: library/ctypes.rst:2507
+#: library/ctypes.rst:2538
 msgid ""
 "For integer type fields like :class:`c_int`, a third optional item can be "
 "given.  It must be a small positive integer defining the bit width of the "
 "field."
 msgstr ""
 
-#: library/ctypes.rst:2511
+#: library/ctypes.rst:2542
 msgid ""
 "Field names must be unique within one structure or union.  This is not "
 "checked, only one field can be accessed when names are repeated."
 msgstr ""
 
-#: library/ctypes.rst:2514
+#: library/ctypes.rst:2545
 msgid ""
 "It is possible to define the :attr:`_fields_` class variable *after* the "
 "class statement that defines the Structure subclass, this allows creating "
 "data types that directly or indirectly reference themselves::"
 msgstr ""
 
-#: library/ctypes.rst:2518
+#: library/ctypes.rst:2549
 msgid ""
 "class List(Structure):\n"
 "    pass\n"
@@ -3481,7 +3486,7 @@ msgid ""
 "                ]"
 msgstr ""
 
-#: library/ctypes.rst:2524
+#: library/ctypes.rst:2555
 msgid ""
 "The :attr:`_fields_` class variable must, however, be defined before the "
 "type is first used (an instance is created, :func:`sizeof` is called on it, "
@@ -3489,14 +3494,14 @@ msgid ""
 "raise an AttributeError."
 msgstr ""
 
-#: library/ctypes.rst:2529
+#: library/ctypes.rst:2560
 msgid ""
 "It is possible to define sub-subclasses of structure types, they inherit the "
 "fields of the base class plus the :attr:`_fields_` defined in the sub-"
 "subclass, if any."
 msgstr ""
 
-#: library/ctypes.rst:2536
+#: library/ctypes.rst:2567
 msgid ""
 "An optional small integer that allows overriding the alignment of structure "
 "fields in the instance.  :attr:`_pack_` must already be defined when :attr:"
@@ -3504,14 +3509,14 @@ msgid ""
 "attribute to 0 is the same as not setting it at all."
 msgstr ""
 
-#: library/ctypes.rst:2544
+#: library/ctypes.rst:2575
 msgid ""
 "An optional sequence that lists the names of unnamed (anonymous) fields. :"
 "attr:`_anonymous_` must be already defined when :attr:`_fields_` is "
 "assigned, otherwise it will have no effect."
 msgstr ""
 
-#: library/ctypes.rst:2548
+#: library/ctypes.rst:2579
 msgid ""
 "The fields listed in this variable must be structure or union type fields. :"
 "mod:`ctypes` will create descriptors in the structure type that allows "
@@ -3519,11 +3524,11 @@ msgid ""
 "structure or union field."
 msgstr ""
 
-#: library/ctypes.rst:2553
+#: library/ctypes.rst:2584
 msgid "Here is an example type (Windows)::"
 msgstr ""
 
-#: library/ctypes.rst:2555
+#: library/ctypes.rst:2586
 msgid ""
 "class _U(Union):\n"
 "    _fields_ = [(\"lptdesc\", POINTER(TYPEDESC)),\n"
@@ -3536,7 +3541,7 @@ msgid ""
 "                (\"vt\", VARTYPE)]"
 msgstr ""
 
-#: library/ctypes.rst:2566
+#: library/ctypes.rst:2597
 msgid ""
 "The ``TYPEDESC`` structure describes a COM data type, the ``vt`` field "
 "specifies which one of the union fields is valid.  Since the ``u`` field is "
@@ -3546,7 +3551,7 @@ msgid ""
 "temporary union instance::"
 msgstr ""
 
-#: library/ctypes.rst:2573
+#: library/ctypes.rst:2604
 msgid ""
 "td = TYPEDESC()\n"
 "td.vt = VT_PTR\n"
@@ -3554,7 +3559,7 @@ msgid ""
 "td.u.lptdesc = POINTER(some_type)"
 msgstr ""
 
-#: library/ctypes.rst:2578
+#: library/ctypes.rst:2609
 msgid ""
 "It is possible to define sub-subclasses of structures, they inherit the "
 "fields of the base class.  If the subclass definition has a separate :attr:"
@@ -3562,7 +3567,7 @@ msgid ""
 "of the base class."
 msgstr ""
 
-#: library/ctypes.rst:2583
+#: library/ctypes.rst:2614
 msgid ""
 "Structure and union constructors accept both positional and keyword "
 "arguments.  Positional arguments are used to initialize member fields in the "
@@ -3572,15 +3577,15 @@ msgid ""
 "names not present in :attr:`_fields_`."
 msgstr ""
 
-#: library/ctypes.rst:2594
+#: library/ctypes.rst:2625
 msgid "Arrays and pointers"
 msgstr ""
 
-#: library/ctypes.rst:2598
+#: library/ctypes.rst:2629
 msgid "Abstract base class for arrays."
 msgstr ""
 
-#: library/ctypes.rst:2600
+#: library/ctypes.rst:2631
 msgid ""
 "The recommended way to create concrete array types is by multiplying any :"
 "mod:`ctypes` data type with a non-negative integer.  Alternatively, you can "
@@ -3590,34 +3595,34 @@ msgid ""
 "an :class:`Array`."
 msgstr ""
 
-#: library/ctypes.rst:2610
+#: library/ctypes.rst:2641
 msgid ""
 "A positive integer specifying the number of elements in the array. Out-of-"
 "range subscripts result in an :exc:`IndexError`. Will be returned by :func:"
 "`len`."
 msgstr ""
 
-#: library/ctypes.rst:2617
+#: library/ctypes.rst:2648
 msgid "Specifies the type of each element in the array."
 msgstr ""
 
-#: library/ctypes.rst:2620
+#: library/ctypes.rst:2651
 msgid ""
 "Array subclass constructors accept positional arguments, used to initialize "
 "the elements in order."
 msgstr ""
 
-#: library/ctypes.rst:2626
+#: library/ctypes.rst:2657
 msgid "Private, abstract base class for pointers."
 msgstr ""
 
-#: library/ctypes.rst:2628
+#: library/ctypes.rst:2659
 msgid ""
 "Concrete pointer types are created by calling :func:`POINTER` with the type "
 "that will be pointed to; this is done automatically by :func:`pointer`."
 msgstr ""
 
-#: library/ctypes.rst:2632
+#: library/ctypes.rst:2663
 msgid ""
 "If a pointer points to an array, its elements can be read and written using "
 "standard subscript and slice accesses.  Pointer objects have no size, so :"
@@ -3626,11 +3631,11 @@ msgid ""
 "probably crash with an access violation (if you're lucky)."
 msgstr ""
 
-#: library/ctypes.rst:2642
+#: library/ctypes.rst:2673
 msgid "Specifies the type pointed to."
 msgstr ""
 
-#: library/ctypes.rst:2646
+#: library/ctypes.rst:2677
 msgid ""
 "Returns the object to which to pointer points.  Assigning to this attribute "
 "changes the pointer to point to the assigned object."
diff --git a/library/dataclasses.po b/library/dataclasses.po
index 7c67102b0..7e0b882a3 100644
--- a/library/dataclasses.po
+++ b/library/dataclasses.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -252,10 +252,11 @@ msgstr ""
 #: library/dataclasses.rst:165
 msgid ""
 "*match_args*: If true (the default is ``True``), the :attr:`~object."
-"__match_args__` tuple will be created from the list of parameters to the "
-"generated :meth:`~object.__init__` method (even if :meth:`!__init__` is not "
-"generated, see above).  If false, or if :attr:`!__match_args__` is already "
-"defined in the class, then :attr:`!__match_args__` will not be generated."
+"__match_args__` tuple will be created from the list of non keyword-only "
+"parameters to the generated :meth:`~object.__init__` method (even if :meth:`!"
+"__init__` is not generated, see above).  If false, or if :attr:`!"
+"__match_args__` is already defined in the class, then :attr:`!"
+"__match_args__` will not be generated."
 msgstr ""
 
 #: library/dataclasses.rst:174
@@ -264,12 +265,15 @@ msgid ""
 "marked as keyword-only.  If a field is marked as keyword-only, then the only "
 "effect is that the :meth:`~object.__init__` parameter generated from a "
 "keyword-only field must be specified with a keyword when :meth:`!__init__` "
-"is called.  There is no effect on any other aspect of dataclasses.  See the :"
-"term:`parameter` glossary entry for details.  Also see the :const:`KW_ONLY` "
-"section."
+"is called. See the :term:`parameter` glossary entry for details.  Also see "
+"the :const:`KW_ONLY` section."
 msgstr ""
 
-#: library/dataclasses.rst:185
+#: library/dataclasses.rst:182
+msgid "Keyword-only fields are not included in :attr:`!__match_args__`."
+msgstr ""
+
+#: library/dataclasses.rst:186
 msgid ""
 "*slots*: If true (the default is ``False``), :attr:`~object.__slots__` "
 "attribute will be generated and new class will be returned instead of the "
@@ -277,7 +281,7 @@ msgid ""
 "exc:`TypeError` is raised."
 msgstr ""
 
-#: library/dataclasses.rst:191
+#: library/dataclasses.rst:192
 msgid ""
 "Calling no-arg :func:`super` in dataclasses using ``slots=True`` will result "
 "in the following exception being raised: ``TypeError: super(type, obj): obj "
@@ -285,7 +289,7 @@ msgid ""
 "valid workaround. See :gh:`90562` for full details."
 msgstr ""
 
-#: library/dataclasses.rst:198
+#: library/dataclasses.rst:199
 msgid ""
 "Passing parameters to a base class :meth:`~object.__init_subclass__` when "
 "using ``slots=True`` will result in a :exc:`TypeError`. Either use "
@@ -293,7 +297,7 @@ msgid ""
 "workaround. See :gh:`91126` for full details."
 msgstr ""
 
-#: library/dataclasses.rst:206
+#: library/dataclasses.rst:207
 msgid ""
 "If a field name is already included in the :attr:`!__slots__` of a base "
 "class, it will not be included in the generated :attr:`!__slots__` to "
@@ -303,7 +307,7 @@ msgid ""
 "`!__slots__` may be any iterable, but *not* an iterator."
 msgstr ""
 
-#: library/dataclasses.rst:216
+#: library/dataclasses.rst:217
 msgid ""
 "*weakref_slot*: If true (the default is ``False``), add a slot named "
 "\"__weakref__\", which is required to make an instance :func:`weakref-able "
@@ -311,13 +315,13 @@ msgid ""
 "specifying ``slots=True``."
 msgstr ""
 
-#: library/dataclasses.rst:224
+#: library/dataclasses.rst:225
 msgid ""
 "``field``\\s may optionally specify a default value, using normal Python "
 "syntax::"
 msgstr ""
 
-#: library/dataclasses.rst:227
+#: library/dataclasses.rst:228
 msgid ""
 "@dataclass\n"
 "class C:\n"
@@ -325,24 +329,24 @@ msgid ""
 "    b: int = 0   # assign a default value for 'b'"
 msgstr ""
 
-#: library/dataclasses.rst:232
+#: library/dataclasses.rst:233
 msgid ""
 "In this example, both :attr:`!a` and :attr:`!b` will be included in the "
 "added :meth:`~object.__init__` method, which will be defined as::"
 msgstr ""
 
-#: library/dataclasses.rst:235
+#: library/dataclasses.rst:236
 msgid "def __init__(self, a: int, b: int = 0):"
 msgstr ""
 
-#: library/dataclasses.rst:237
+#: library/dataclasses.rst:238
 msgid ""
 ":exc:`TypeError` will be raised if a field without a default value follows a "
 "field with a default value.  This is true whether this occurs in a single "
 "class, or as a result of class inheritance."
 msgstr ""
 
-#: library/dataclasses.rst:243
+#: library/dataclasses.rst:244
 msgid ""
 "For common and simple use cases, no other functionality is required.  There "
 "are, however, some dataclass features that require additional per-field "
@@ -351,7 +355,7 @@ msgid ""
 "function.  For example::"
 msgstr ""
 
-#: library/dataclasses.rst:249
+#: library/dataclasses.rst:250
 msgid ""
 "@dataclass\n"
 "class C:\n"
@@ -361,7 +365,7 @@ msgid ""
 "c.mylist += [1, 2, 3]"
 msgstr ""
 
-#: library/dataclasses.rst:256
+#: library/dataclasses.rst:257
 msgid ""
 "As shown above, the :const:`MISSING` value is a sentinel object used to "
 "detect if some parameters are provided by the user. This sentinel is used "
@@ -369,18 +373,18 @@ msgid ""
 "meaning.  No code should directly use the :const:`MISSING` value."
 msgstr ""
 
-#: library/dataclasses.rst:261
+#: library/dataclasses.rst:262
 msgid "The parameters to :func:`!field` are:"
 msgstr ""
 
-#: library/dataclasses.rst:263
+#: library/dataclasses.rst:264
 msgid ""
 "*default*: If provided, this will be the default value for this field.  This "
 "is needed because the :func:`!field` call itself replaces the normal "
 "position of the default value."
 msgstr ""
 
-#: library/dataclasses.rst:267
+#: library/dataclasses.rst:268
 msgid ""
 "*default_factory*: If provided, it must be a zero-argument callable that "
 "will be called when a default value is needed for this field.  Among other "
@@ -389,28 +393,30 @@ msgid ""
 "*default_factory*."
 msgstr ""
 
-#: library/dataclasses.rst:273
+#: library/dataclasses.rst:274
 msgid ""
 "*init*: If true (the default), this field is included as a parameter to the "
 "generated :meth:`~object.__init__` method."
 msgstr ""
 
-#: library/dataclasses.rst:276
+#: library/dataclasses.rst:277
 msgid ""
 "*repr*: If true (the default), this field is included in the string returned "
 "by the generated :meth:`~object.__repr__` method."
 msgstr ""
 
-#: library/dataclasses.rst:279
+#: library/dataclasses.rst:280
 msgid ""
 "*hash*: This can be a bool or ``None``.  If true, this field is included in "
-"the generated :meth:`~object.__hash__` method.  If ``None`` (the default), "
-"use the value of *compare*: this would normally be the expected behavior.  A "
-"field should be considered in the hash if it's used for comparisons.  "
-"Setting this value to anything other than ``None`` is discouraged."
+"the generated :meth:`~object.__hash__` method.  If false, this field is "
+"excluded from the generated :meth:`~object.__hash__`. If ``None`` (the "
+"default), use the value of *compare*: this would normally be the expected "
+"behavior, since a field should be included in the hash if it's used for "
+"comparisons.  Setting this value to anything other than ``None`` is "
+"discouraged."
 msgstr ""
 
-#: library/dataclasses.rst:286
+#: library/dataclasses.rst:288
 msgid ""
 "One possible reason to set ``hash=False`` but ``compare=True`` would be if a "
 "field is expensive to compute a hash value for, that field is needed for "
@@ -419,14 +425,14 @@ msgid ""
 "used for comparisons."
 msgstr ""
 
-#: library/dataclasses.rst:292
+#: library/dataclasses.rst:294
 msgid ""
 "*compare*: If true (the default), this field is included in the generated "
 "equality and comparison methods (:meth:`~object.__eq__`, :meth:`~object."
 "__gt__`, et al.)."
 msgstr ""
 
-#: library/dataclasses.rst:296
+#: library/dataclasses.rst:298
 msgid ""
 "*metadata*: This can be a mapping or ``None``. ``None`` is treated as an "
 "empty dict.  This value is wrapped in :func:`~types.MappingProxyType` to "
@@ -436,13 +442,17 @@ msgid ""
 "namespace in the metadata."
 msgstr ""
 
-#: library/dataclasses.rst:304
+#: library/dataclasses.rst:306
 msgid ""
 "*kw_only*: If true, this field will be marked as keyword-only. This is used "
 "when the generated :meth:`~object.__init__` method's parameters are computed."
 msgstr ""
 
 #: library/dataclasses.rst:310
+msgid "Keyword-only fields are also not included in :attr:`!__match_args__`."
+msgstr ""
+
+#: library/dataclasses.rst:314
 msgid ""
 "If the default value of a field is specified by a call to :func:`!field`, "
 "then the class attribute for this field will be replaced by the specified "
@@ -453,7 +463,7 @@ msgid ""
 "specified.  For example, after::"
 msgstr ""
 
-#: library/dataclasses.rst:319
+#: library/dataclasses.rst:323
 msgid ""
 "@dataclass\n"
 "class C:\n"
@@ -463,14 +473,14 @@ msgid ""
 "    t: int = 20"
 msgstr ""
 
-#: library/dataclasses.rst:326
+#: library/dataclasses.rst:330
 msgid ""
 "The class attribute :attr:`!C.z` will be ``10``, the class attribute :attr:`!"
 "C.t` will be ``20``, and the class attributes :attr:`!C.x` and :attr:`!C.y` "
 "will not be set."
 msgstr ""
 
-#: library/dataclasses.rst:332
+#: library/dataclasses.rst:336
 msgid ""
 ":class:`!Field` objects describe each defined field. These objects are "
 "created internally, and are returned by the :func:`fields` module-level "
@@ -478,28 +488,28 @@ msgid ""
 "directly.  Its documented attributes are:"
 msgstr ""
 
-#: library/dataclasses.rst:337
+#: library/dataclasses.rst:341
 msgid ":attr:`!name`: The name of the field."
 msgstr ""
 
-#: library/dataclasses.rst:338
+#: library/dataclasses.rst:342
 msgid ":attr:`!type`: The type of the field."
 msgstr ""
 
-#: library/dataclasses.rst:339
+#: library/dataclasses.rst:343
 msgid ""
 ":attr:`!default`, :attr:`!default_factory`, :attr:`!init`, :attr:`!repr`, :"
 "attr:`!hash`, :attr:`!compare`, :attr:`!metadata`, and :attr:`!kw_only` have "
 "the identical meaning and values as they do in the :func:`field` function."
 msgstr ""
 
-#: library/dataclasses.rst:343
+#: library/dataclasses.rst:347
 msgid ""
 "Other attributes may exist, but they are private and must not be inspected "
 "or relied on."
 msgstr ""
 
-#: library/dataclasses.rst:348
+#: library/dataclasses.rst:352
 msgid ""
 "Returns a tuple of :class:`Field` objects that define the fields for this "
 "dataclass.  Accepts either a dataclass, or an instance of a dataclass. "
@@ -507,7 +517,7 @@ msgid ""
 "not return pseudo-fields which are ``ClassVar`` or ``InitVar``."
 msgstr ""
 
-#: library/dataclasses.rst:355
+#: library/dataclasses.rst:359
 msgid ""
 "Converts the dataclass *obj* to a dict (by using the factory function "
 "*dict_factory*).  Each dataclass is converted to a dict of its fields, as "
@@ -515,11 +525,11 @@ msgid ""
 "into.  Other objects are copied with :func:`copy.deepcopy`."
 msgstr ""
 
-#: library/dataclasses.rst:361
+#: library/dataclasses.rst:365
 msgid "Example of using :func:`!asdict` on nested dataclasses::"
 msgstr ""
 
-#: library/dataclasses.rst:363
+#: library/dataclasses.rst:367
 msgid ""
 "@dataclass\n"
 "class Point:\n"
@@ -537,20 +547,20 @@ msgid ""
 "assert asdict(c) == {'mylist': [{'x': 0, 'y': 0}, {'x': 10, 'y': 4}]}"
 msgstr ""
 
-#: library/dataclasses.rst:398
+#: library/dataclasses.rst:402
 msgid "To create a shallow copy, the following workaround may be used::"
 msgstr ""
 
-#: library/dataclasses.rst:380
+#: library/dataclasses.rst:384
 msgid "{field.name: getattr(obj, field.name) for field in fields(obj)}"
 msgstr ""
 
-#: library/dataclasses.rst:382
+#: library/dataclasses.rst:386
 msgid ""
 ":func:`!asdict` raises :exc:`TypeError` if *obj* is not a dataclass instance."
 msgstr ""
 
-#: library/dataclasses.rst:387
+#: library/dataclasses.rst:391
 msgid ""
 "Converts the dataclass *obj* to a tuple (by using the factory function "
 "*tuple_factory*).  Each dataclass is converted to a tuple of its field "
@@ -558,27 +568,27 @@ msgid ""
 "objects are copied with :func:`copy.deepcopy`."
 msgstr ""
 
-#: library/dataclasses.rst:393
+#: library/dataclasses.rst:397
 msgid "Continuing from the previous example::"
 msgstr ""
 
-#: library/dataclasses.rst:395
+#: library/dataclasses.rst:399
 msgid ""
 "assert astuple(p) == (10, 20)\n"
 "assert astuple(c) == ([(0, 0), (10, 4)],)"
 msgstr ""
 
-#: library/dataclasses.rst:400
+#: library/dataclasses.rst:404
 msgid "tuple(getattr(obj, field.name) for field in dataclasses.fields(obj))"
 msgstr ""
 
-#: library/dataclasses.rst:402
+#: library/dataclasses.rst:406
 msgid ""
 ":func:`!astuple` raises :exc:`TypeError` if *obj* is not a dataclass "
 "instance."
 msgstr ""
 
-#: library/dataclasses.rst:407
+#: library/dataclasses.rst:411
 msgid ""
 "Creates a new dataclass with name *cls_name*, fields as defined in *fields*, "
 "base classes as given in *bases*, and initialized with a namespace as given "
@@ -590,13 +600,13 @@ msgid ""
 "`@dataclass <dataclass>`."
 msgstr ""
 
-#: library/dataclasses.rst:417
+#: library/dataclasses.rst:421
 msgid ""
 "If *module* is defined, the :attr:`!__module__` attribute of the dataclass "
 "is set to that value. By default, it is set to the module name of the caller."
 msgstr ""
 
-#: library/dataclasses.rst:421
+#: library/dataclasses.rst:425
 msgid ""
 "This function is not strictly required, because any Python mechanism for "
 "creating a new class with :attr:`!__annotations__` can then apply the :func:"
@@ -604,7 +614,7 @@ msgid ""
 "This function is provided as a convenience.  For example::"
 msgstr ""
 
-#: library/dataclasses.rst:427
+#: library/dataclasses.rst:431
 msgid ""
 "C = make_dataclass('C',\n"
 "                   [('x', int),\n"
@@ -613,11 +623,11 @@ msgid ""
 "                   namespace={'add_one': lambda self: self.x + 1})"
 msgstr ""
 
-#: library/dataclasses.rst:433
+#: library/dataclasses.rst:437
 msgid "Is equivalent to::"
 msgstr ""
 
-#: library/dataclasses.rst:435
+#: library/dataclasses.rst:439
 msgid ""
 "@dataclass\n"
 "class C:\n"
@@ -629,7 +639,7 @@ msgid ""
 "        return self.x + 1"
 msgstr ""
 
-#: library/dataclasses.rst:446
+#: library/dataclasses.rst:450
 msgid ""
 "Creates a new object of the same type as *obj*, replacing fields with values "
 "from *changes*.  If *obj* is not a Data Class, raises :exc:`TypeError`.  If "
@@ -637,27 +647,27 @@ msgid ""
 "`TypeError`."
 msgstr ""
 
-#: library/dataclasses.rst:451
+#: library/dataclasses.rst:455
 msgid ""
 "The newly returned object is created by calling the :meth:`~object.__init__` "
 "method of the dataclass.  This ensures that :meth:`__post_init__`, if "
 "present, is also called."
 msgstr ""
 
-#: library/dataclasses.rst:455
+#: library/dataclasses.rst:459
 msgid ""
 "Init-only variables without default values, if any exist, must be specified "
 "on the call to :func:`!replace` so that they can be passed to :meth:`!"
 "__init__` and :meth:`__post_init__`."
 msgstr ""
 
-#: library/dataclasses.rst:459
+#: library/dataclasses.rst:463
 msgid ""
 "It is an error for *changes* to contain any fields that are defined as "
 "having ``init=False``.  A :exc:`ValueError` will be raised in this case."
 msgstr ""
 
-#: library/dataclasses.rst:463
+#: library/dataclasses.rst:467
 msgid ""
 "Be forewarned about how ``init=False`` fields work during a call to :func:`!"
 "replace`.  They are not copied from the source object, but rather are "
@@ -668,30 +678,30 @@ msgid ""
 "instance copying."
 msgstr ""
 
-#: library/dataclasses.rst:474
+#: library/dataclasses.rst:478
 msgid ""
 "Return ``True`` if its parameter is a dataclass (including subclasses of a "
 "dataclass) or an instance of one, otherwise return ``False``."
 msgstr ""
 
-#: library/dataclasses.rst:477
+#: library/dataclasses.rst:481
 msgid ""
 "If you need to know if a class is an instance of a dataclass (and not a "
 "dataclass itself), then add a further check for ``not isinstance(obj, "
 "type)``::"
 msgstr ""
 
-#: library/dataclasses.rst:481
+#: library/dataclasses.rst:485
 msgid ""
 "def is_dataclass_instance(obj):\n"
 "    return is_dataclass(obj) and not isinstance(obj, type)"
 msgstr ""
 
-#: library/dataclasses.rst:486
+#: library/dataclasses.rst:490
 msgid "A sentinel value signifying a missing default or default_factory."
 msgstr ""
 
-#: library/dataclasses.rst:490
+#: library/dataclasses.rst:494
 msgid ""
 "A sentinel value used as a type annotation.  Any fields after a pseudo-field "
 "with the type of :const:`!KW_ONLY` are marked as keyword-only fields.  Note "
@@ -702,13 +712,13 @@ msgid ""
 "the class is instantiated."
 msgstr ""
 
-#: library/dataclasses.rst:499
+#: library/dataclasses.rst:503
 msgid ""
 "In this example, the fields ``y`` and ``z`` will be marked as keyword-only "
 "fields::"
 msgstr ""
 
-#: library/dataclasses.rst:501
+#: library/dataclasses.rst:505
 msgid ""
 "@dataclass\n"
 "class Point:\n"
@@ -720,24 +730,24 @@ msgid ""
 "p = Point(0, y=1.5, z=2.0)"
 msgstr ""
 
-#: library/dataclasses.rst:510
+#: library/dataclasses.rst:514
 msgid ""
 "In a single dataclass, it is an error to specify more than one field whose "
 "type is :const:`!KW_ONLY`."
 msgstr ""
 
-#: library/dataclasses.rst:517
+#: library/dataclasses.rst:521
 msgid ""
 "Raised when an implicitly defined :meth:`~object.__setattr__` or :meth:"
 "`~object.__delattr__` is called on a dataclass which was defined with "
 "``frozen=True``. It is a subclass of :exc:`AttributeError`."
 msgstr ""
 
-#: library/dataclasses.rst:524
+#: library/dataclasses.rst:528
 msgid "Post-init processing"
 msgstr ""
 
-#: library/dataclasses.rst:528
+#: library/dataclasses.rst:532
 msgid ""
 "When defined on the class, it will be called by the generated :meth:`~object."
 "__init__`, normally as :meth:`!self.__post_init__`. However, if any "
@@ -747,13 +757,13 @@ msgid ""
 "automatically be called."
 msgstr ""
 
-#: library/dataclasses.rst:535
+#: library/dataclasses.rst:539
 msgid ""
 "Among other uses, this allows for initializing field values that depend on "
 "one or more other fields.  For example::"
 msgstr ""
 
-#: library/dataclasses.rst:538
+#: library/dataclasses.rst:542
 msgid ""
 "@dataclass\n"
 "class C:\n"
@@ -765,7 +775,7 @@ msgid ""
 "        self.c = self.a + self.b"
 msgstr ""
 
-#: library/dataclasses.rst:547
+#: library/dataclasses.rst:551
 msgid ""
 "The :meth:`~object.__init__` method generated by :func:`@dataclass "
 "<dataclass>` does not call base class :meth:`!__init__` methods. If the base "
@@ -773,7 +783,7 @@ msgid ""
 "call this method in a :meth:`__post_init__` method::"
 msgstr ""
 
-#: library/dataclasses.rst:552
+#: library/dataclasses.rst:556
 msgid ""
 "class Rectangle:\n"
 "    def __init__(self, height, width):\n"
@@ -788,25 +798,25 @@ msgid ""
 "        super().__init__(self.side, self.side)"
 msgstr ""
 
-#: library/dataclasses.rst:564
+#: library/dataclasses.rst:568
 msgid ""
 "Note, however, that in general the dataclass-generated :meth:`!__init__` "
 "methods don't need to be called, since the derived dataclass will take care "
 "of initializing all fields of any base class that is a dataclass itself."
 msgstr ""
 
-#: library/dataclasses.rst:568
+#: library/dataclasses.rst:572
 msgid ""
 "See the section below on init-only variables for ways to pass parameters to :"
 "meth:`!__post_init__`.  Also see the warning about how :func:`replace` "
 "handles ``init=False`` fields."
 msgstr ""
 
-#: library/dataclasses.rst:575
+#: library/dataclasses.rst:579
 msgid "Class variables"
 msgstr ""
 
-#: library/dataclasses.rst:577
+#: library/dataclasses.rst:581
 msgid ""
 "One of the few places where :func:`@dataclass <dataclass>` actually inspects "
 "the type of a field is to determine if a field is a class variable as "
@@ -817,11 +827,11 @@ msgid ""
 "`fields` function."
 msgstr ""
 
-#: library/dataclasses.rst:588
+#: library/dataclasses.rst:592
 msgid "Init-only variables"
 msgstr ""
 
-#: library/dataclasses.rst:590
+#: library/dataclasses.rst:594
 msgid ""
 "Another place where :func:`@dataclass <dataclass>` inspects a type "
 "annotation is to determine if a field is an init-only variable.  It does "
@@ -834,13 +844,13 @@ msgid ""
 "dataclasses."
 msgstr ""
 
-#: library/dataclasses.rst:600
+#: library/dataclasses.rst:604
 msgid ""
 "For example, suppose a field will be initialized from a database, if a value "
 "is not provided when creating the class::"
 msgstr ""
 
-#: library/dataclasses.rst:603
+#: library/dataclasses.rst:607
 msgid ""
 "@dataclass\n"
 "class C:\n"
@@ -855,17 +865,17 @@ msgid ""
 "c = C(10, database=my_database)"
 msgstr ""
 
-#: library/dataclasses.rst:615
+#: library/dataclasses.rst:619
 msgid ""
 "In this case, :func:`fields` will return :class:`Field` objects for :attr:`!"
 "i` and :attr:`!j`, but not for :attr:`!database`."
 msgstr ""
 
-#: library/dataclasses.rst:621
+#: library/dataclasses.rst:625
 msgid "Frozen instances"
 msgstr ""
 
-#: library/dataclasses.rst:623
+#: library/dataclasses.rst:627
 msgid ""
 "It is not possible to create truly immutable Python objects.  However, by "
 "passing ``frozen=True`` to the :func:`@dataclass <dataclass>` decorator you "
@@ -874,18 +884,18 @@ msgid ""
 "methods will raise a :exc:`FrozenInstanceError` when invoked."
 msgstr ""
 
-#: library/dataclasses.rst:629
+#: library/dataclasses.rst:633
 msgid ""
 "There is a tiny performance penalty when using ``frozen=True``: :meth:"
 "`~object.__init__` cannot use simple assignment to initialize fields, and "
 "must use :meth:`!object.__setattr__`."
 msgstr ""
 
-#: library/dataclasses.rst:638
+#: library/dataclasses.rst:642
 msgid "Inheritance"
 msgstr ""
 
-#: library/dataclasses.rst:640
+#: library/dataclasses.rst:644
 msgid ""
 "When the dataclass is being created by the :func:`@dataclass <dataclass>` "
 "decorator, it looks through all of the class's base classes in reverse MRO "
@@ -897,7 +907,7 @@ msgid ""
 "order, derived classes override base classes.  An example::"
 msgstr ""
 
-#: library/dataclasses.rst:650
+#: library/dataclasses.rst:654
 msgid ""
 "@dataclass\n"
 "class Base:\n"
@@ -910,28 +920,28 @@ msgid ""
 "    x: int = 15"
 msgstr ""
 
-#: library/dataclasses.rst:660
+#: library/dataclasses.rst:664
 msgid ""
 "The final list of fields is, in order, :attr:`!x`, :attr:`!y`, :attr:`!z`.  "
 "The final type of :attr:`!x` is :class:`int`, as specified in class :class:`!"
 "C`."
 msgstr ""
 
-#: library/dataclasses.rst:663
+#: library/dataclasses.rst:667
 msgid ""
 "The generated :meth:`~object.__init__` method for :class:`!C` will look "
 "like::"
 msgstr ""
 
-#: library/dataclasses.rst:665
+#: library/dataclasses.rst:669
 msgid "def __init__(self, x: int = 15, y: int = 0, z: int = 10):"
 msgstr ""
 
-#: library/dataclasses.rst:668
+#: library/dataclasses.rst:672
 msgid "Re-ordering of keyword-only parameters in :meth:`!__init__`"
 msgstr ""
 
-#: library/dataclasses.rst:670
+#: library/dataclasses.rst:674
 msgid ""
 "After the parameters needed for :meth:`~object.__init__` are computed, any "
 "keyword-only parameters are moved to come after all regular (non-keyword-"
@@ -939,14 +949,14 @@ msgid ""
 "implemented in Python: they must come after non-keyword-only parameters."
 msgstr ""
 
-#: library/dataclasses.rst:676
+#: library/dataclasses.rst:680
 msgid ""
 "In this example, :attr:`!Base.y`, :attr:`!Base.w`, and :attr:`!D.t` are "
 "keyword-only fields, and :attr:`!Base.x` and :attr:`!D.z` are regular "
 "fields::"
 msgstr ""
 
-#: library/dataclasses.rst:679
+#: library/dataclasses.rst:683
 msgid ""
 "@dataclass\n"
 "class Base:\n"
@@ -961,45 +971,45 @@ msgid ""
 "    t: int = field(kw_only=True, default=0)"
 msgstr ""
 
-#: library/dataclasses.rst:691
+#: library/dataclasses.rst:695
 msgid "The generated :meth:`!__init__` method for :class:`!D` will look like::"
 msgstr ""
 
-#: library/dataclasses.rst:693
+#: library/dataclasses.rst:697
 msgid ""
 "def __init__(self, x: Any = 15.0, z: int = 10, *, y: int = 0, w: int = 1, t: "
 "int = 0):"
 msgstr ""
 
-#: library/dataclasses.rst:695
+#: library/dataclasses.rst:699
 msgid ""
 "Note that the parameters have been re-ordered from how they appear in the "
 "list of fields: parameters derived from regular fields are followed by "
 "parameters derived from keyword-only fields."
 msgstr ""
 
-#: library/dataclasses.rst:699
+#: library/dataclasses.rst:703
 msgid ""
 "The relative ordering of keyword-only parameters is maintained in the re-"
 "ordered :meth:`!__init__` parameter list."
 msgstr ""
 
-#: library/dataclasses.rst:704
+#: library/dataclasses.rst:708
 msgid "Default factory functions"
 msgstr ""
 
-#: library/dataclasses.rst:706
+#: library/dataclasses.rst:710
 msgid ""
 "If a :func:`field` specifies a *default_factory*, it is called with zero "
 "arguments when a default value for the field is needed.  For example, to "
 "create a new instance of a list, use::"
 msgstr ""
 
-#: library/dataclasses.rst:710
+#: library/dataclasses.rst:714
 msgid "mylist: list = field(default_factory=list)"
 msgstr ""
 
-#: library/dataclasses.rst:712
+#: library/dataclasses.rst:716
 msgid ""
 "If a field is excluded from :meth:`~object.__init__` (using ``init=False``) "
 "and the field also specifies *default_factory*, then the default factory "
@@ -1008,17 +1018,17 @@ msgid ""
 "initial value."
 msgstr ""
 
-#: library/dataclasses.rst:719
+#: library/dataclasses.rst:723
 msgid "Mutable default values"
 msgstr ""
 
-#: library/dataclasses.rst:721
+#: library/dataclasses.rst:725
 msgid ""
 "Python stores default member variable values in class attributes. Consider "
 "this example, not using dataclasses::"
 msgstr ""
 
-#: library/dataclasses.rst:724
+#: library/dataclasses.rst:728
 msgid ""
 "class C:\n"
 "    x = []\n"
@@ -1033,17 +1043,17 @@ msgid ""
 "assert o1.x is o2.x"
 msgstr ""
 
-#: library/dataclasses.rst:736
+#: library/dataclasses.rst:740
 msgid ""
 "Note that the two instances of class :class:`!C` share the same class "
 "variable :attr:`!x`, as expected."
 msgstr ""
 
-#: library/dataclasses.rst:739
+#: library/dataclasses.rst:743
 msgid "Using dataclasses, *if* this code was valid::"
 msgstr ""
 
-#: library/dataclasses.rst:741
+#: library/dataclasses.rst:745
 msgid ""
 "@dataclass\n"
 "class D:\n"
@@ -1052,11 +1062,11 @@ msgid ""
 "        self.x.append(element)"
 msgstr ""
 
-#: library/dataclasses.rst:747
+#: library/dataclasses.rst:751
 msgid "it would generate code similar to::"
 msgstr ""
 
-#: library/dataclasses.rst:749
+#: library/dataclasses.rst:753
 msgid ""
 "class D:\n"
 "    x = []\n"
@@ -1068,7 +1078,7 @@ msgid ""
 "assert D().x is D().x"
 msgstr ""
 
-#: library/dataclasses.rst:758
+#: library/dataclasses.rst:762
 msgid ""
 "This has the same issue as the original example using class :class:`!C`. "
 "That is, two instances of class :class:`!D` that do not specify a value for :"
@@ -1081,13 +1091,13 @@ msgid ""
 "partial solution, but it does protect against many common errors."
 msgstr ""
 
-#: library/dataclasses.rst:769
+#: library/dataclasses.rst:773
 msgid ""
 "Using default factory functions is a way to create new instances of mutable "
 "types as default values for fields::"
 msgstr ""
 
-#: library/dataclasses.rst:772
+#: library/dataclasses.rst:776
 msgid ""
 "@dataclass\n"
 "class D:\n"
@@ -1096,38 +1106,38 @@ msgid ""
 "assert D().x is not D().x"
 msgstr ""
 
-#: library/dataclasses.rst:778
+#: library/dataclasses.rst:782
 msgid ""
 "Instead of looking for and disallowing objects of type :class:`list`, :class:"
 "`dict`, or :class:`set`, unhashable objects are now not allowed as default "
 "values.  Unhashability is used to approximate mutability."
 msgstr ""
 
-#: library/dataclasses.rst:785
+#: library/dataclasses.rst:789
 msgid "Descriptor-typed fields"
 msgstr ""
 
-#: library/dataclasses.rst:787
+#: library/dataclasses.rst:791
 msgid ""
 "Fields that are assigned :ref:`descriptor objects <descriptors>` as their "
 "default value have the following special behaviors:"
 msgstr ""
 
-#: library/dataclasses.rst:790
+#: library/dataclasses.rst:794
 msgid ""
 "The value for the field passed to the dataclass's :meth:`~object.__init__` "
 "method is passed to the descriptor's :meth:`~object.__set__` method rather "
 "than overwriting the descriptor object."
 msgstr ""
 
-#: library/dataclasses.rst:794
+#: library/dataclasses.rst:798
 msgid ""
 "Similarly, when getting or setting the field, the descriptor's :meth:"
 "`~object.__get__` or :meth:`!__set__` method is called rather than returning "
 "or overwriting the descriptor object."
 msgstr ""
 
-#: library/dataclasses.rst:798
+#: library/dataclasses.rst:802
 msgid ""
 "To determine whether a field contains a default value, :func:`@dataclass "
 "<dataclass>` will call the descriptor's :meth:`!__get__` method using its "
@@ -1137,7 +1147,7 @@ msgid ""
 "in this situation, no default value will be provided for the field."
 msgstr ""
 
-#: library/dataclasses.rst:808
+#: library/dataclasses.rst:812
 msgid ""
 "class IntConversionDescriptor:\n"
 "    def __init__(self, *, default):\n"
@@ -1166,7 +1176,7 @@ msgid ""
 "print(i.quantity_on_hand)   # 2"
 msgstr ""
 
-#: library/dataclasses.rst:833
+#: library/dataclasses.rst:837
 msgid ""
 "Note that if a field is annotated with a descriptor type, but is not "
 "assigned a descriptor object as its default value, the field will act like a "
diff --git a/library/datetime.po b/library/datetime.po
index 2eb7a17cb..afcc80ec3 100644
--- a/library/datetime.po
+++ b/library/datetime.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: 2024-04-15 00:06-0400\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -744,7 +744,7 @@ msgid ""
 "constructor call with canonical attribute values."
 msgstr ""
 
-#: library/datetime.rst:623 library/datetime.rst:2553
+#: library/datetime.rst:623 library/datetime.rst:2570
 msgid "Notes:"
 msgstr ""
 
@@ -1128,8 +1128,8 @@ msgstr ""
 
 #: library/datetime.rst:653
 msgid ""
-"Return a date with the same value, except for those parameters given new "
-"values by whichever keyword arguments are specified."
+"Return a new :class:`date` object with the same values, but with specified "
+"parameters updated."
 msgstr ""
 
 #: library/datetime.rst:1890
@@ -1340,7 +1340,7 @@ msgid ""
 "\n"
 ">>> # Methods for to extracting 'components' under different calendars\n"
 ">>> t = d.timetuple()\n"
-">>> for i in t:     \n"
+">>> for i in t:\n"
 "...     print(i)\n"
 "2002                # year\n"
 "3                   # month\n"
@@ -1352,7 +1352,7 @@ msgid ""
 "70                  # 70th day in the year\n"
 "-1\n"
 ">>> ic = d.isocalendar()\n"
-">>> for i in ic:    \n"
+">>> for i in ic:\n"
 "...     print(i)\n"
 "2002                # ISO year\n"
 "11                  # ISO week number\n"
@@ -1498,7 +1498,7 @@ msgid ""
 msgstr ""
 
 #: library/datetime.rst:921
-msgid "Use :meth:`datetime.now` with :attr:`UTC` instead."
+msgid "Use :meth:`datetime.now` with :const:`UTC` instead."
 msgstr ""
 
 #: library/datetime.rst:926
@@ -1597,7 +1597,7 @@ msgid ""
 msgstr ""
 
 #: library/datetime.rst:993
-msgid "Use :meth:`datetime.fromtimestamp` with :attr:`UTC` instead."
+msgid "Use :meth:`datetime.fromtimestamp` with :const:`UTC` instead."
 msgstr ""
 
 #: library/datetime.rst:998
@@ -1668,7 +1668,7 @@ msgid ""
 ">>> datetime.fromisoformat('2011-11-04 00:05:23.283+00:00')\n"
 "datetime.datetime(2011, 11, 4, 0, 5, 23, 283000, tzinfo=datetime.timezone."
 "utc)\n"
-">>> datetime.fromisoformat('2011-11-04T00:05:23+04:00')   \n"
+">>> datetime.fromisoformat('2011-11-04T00:05:23+04:00')\n"
 "datetime.datetime(2011, 11, 4, 0, 5, 23,\n"
 "    tzinfo=datetime.timezone(datetime.timedelta(seconds=14400)))"
 msgstr ""
@@ -1699,7 +1699,7 @@ msgid ""
 "equivalent to::"
 msgstr ""
 
-#: library/datetime.rst:2533
+#: library/datetime.rst:2550
 msgid "datetime(*(time.strptime(date_string, format)[0:6]))"
 msgstr ""
 
@@ -1920,10 +1920,10 @@ msgstr ""
 
 #: library/datetime.rst:1277
 msgid ""
-"Return a datetime with the same attributes, except for those attributes "
-"given new values by whichever keyword arguments are specified. Note that "
-"``tzinfo=None`` can be specified to create a naive datetime from an aware "
-"datetime with no conversion of date and time data."
+"Return a new :class:`datetime` object with the same attributes, but with "
+"specified parameters updated. Note that ``tzinfo=None`` can be specified to "
+"create a naive datetime from an aware datetime with no conversion of date "
+"and time data."
 msgstr ""
 
 #: library/datetime.rst:1288
@@ -2002,7 +2002,7 @@ msgid ""
 msgstr ""
 
 #: library/datetime.rst:1930 library/datetime.rst:2282
-#: library/datetime.rst:2606
+#: library/datetime.rst:2623
 msgid "The UTC offset is not restricted to a whole number of minutes."
 msgstr ""
 
@@ -2253,7 +2253,7 @@ msgstr ""
 #: library/datetime.rst:1519
 msgid ""
 ">>> from datetime import datetime\n"
-">>> datetime.now().isoformat(timespec='minutes')   \n"
+">>> datetime.now().isoformat(timespec='minutes')\n"
 "'2002-12-25T00:00'\n"
 ">>> dt = datetime(2015, 1, 1, 12, 30, 59, 0)\n"
 ">>> dt.isoformat(timespec='microseconds')\n"
@@ -2328,9 +2328,9 @@ msgid ""
 "datetime.datetime(2005, 7, 14, 12, 30)\n"
 "\n"
 ">>> # Using datetime.now()\n"
-">>> datetime.now()   \n"
+">>> datetime.now()\n"
 "datetime.datetime(2007, 12, 6, 16, 29, 43, 79043)   # GMT +1\n"
-">>> datetime.now(timezone.utc)   \n"
+">>> datetime.now(timezone.utc)\n"
 "datetime.datetime(2007, 12, 6, 15, 29, 43, 79060, tzinfo=datetime.timezone."
 "utc)\n"
 "\n"
@@ -2341,7 +2341,7 @@ msgid ""
 "\n"
 ">>> # Using datetime.timetuple() to get tuple of all attributes\n"
 ">>> tt = dt.timetuple()\n"
-">>> for it in tt:   \n"
+">>> for it in tt:\n"
 "...     print(it)\n"
 "...\n"
 "2006    # year\n"
@@ -2356,7 +2356,7 @@ msgid ""
 "\n"
 ">>> # Date in ISO format\n"
 ">>> ic = dt.isocalendar()\n"
-">>> for it in ic:   \n"
+">>> for it in ic:\n"
 "...     print(it)\n"
 "...\n"
 "2006    # ISO year\n"
@@ -2593,10 +2593,10 @@ msgstr ""
 
 #: library/datetime.rst:1852
 msgid ""
-"Return a :class:`.time` with the same value, except for those attributes "
-"given new values by whichever keyword arguments are specified. Note that "
-"``tzinfo=None`` can be specified to create a naive :class:`.time` from an "
-"aware :class:`.time`, without conversion of the time data."
+"Return a new :class:`.time` with the same values, but with specified "
+"parameters updated. Note that ``tzinfo=None`` can be specified to create a "
+"naive :class:`.time` from an aware :class:`.time`, without conversion of the "
+"time data."
 msgstr ""
 
 #: library/datetime.rst:1863
@@ -3687,7 +3687,7 @@ msgstr ""
 msgid "\\(5)"
 msgstr ""
 
-#: library/datetime.rst:2594
+#: library/datetime.rst:2611
 msgid "``%z``"
 msgstr ""
 
@@ -3705,7 +3705,7 @@ msgstr ""
 msgid "\\(6)"
 msgstr ""
 
-#: library/datetime.rst:2620
+#: library/datetime.rst:2637
 msgid "``%Z``"
 msgstr ""
 
@@ -3873,7 +3873,7 @@ msgstr ""
 msgid "\\(8), \\(9)"
 msgstr ""
 
-#: library/datetime.rst:2616
+#: library/datetime.rst:2633
 msgid "``%:z``"
 msgstr ""
 
@@ -3929,35 +3929,55 @@ msgstr ""
 msgid ""
 "For the :meth:`.datetime.strptime` class method, the default value is "
 "``1900-01-01T00:00:00.000``: any components not specified in the format "
-"string will be pulled from the default value. [#]_"
+"string will be pulled from the default value."
+msgstr ""
+
+#: library/datetime.rst:2532
+msgid ""
+"When used to parse partial dates lacking a year, :meth:`~.datetime.strptime` "
+"will raise when encountering February 29 because its default year of 1900 is "
+"*not* a leap year.  Always add a default leap year to partial date strings "
+"before parsing."
+msgstr ""
+
+#: library/datetime.rst:2537
+msgid ""
+">>> from datetime import datetime\n"
+">>> value = \"2/29\"\n"
+">>> datetime.strptime(value, \"%m/%d\")\n"
+"Traceback (most recent call last):\n"
+"...\n"
+"ValueError: day is out of range for month\n"
+">>> datetime.strptime(f\"1904 {value}\", \"%Y %m/%d\")\n"
+"datetime.datetime(1904, 2, 29, 0, 0)"
 msgstr ""
 
-#: library/datetime.rst:2531
+#: library/datetime.rst:2548
 msgid "Using ``datetime.strptime(date_string, format)`` is equivalent to::"
 msgstr ""
 
-#: library/datetime.rst:2535
+#: library/datetime.rst:2552
 msgid ""
 "except when the format includes sub-second components or time zone offset "
 "information, which are supported in ``datetime.strptime`` but are discarded "
 "by ``time.strptime``."
 msgstr ""
 
-#: library/datetime.rst:2539
+#: library/datetime.rst:2556
 msgid ""
 "For :class:`.time` objects, the format codes for year, month, and day should "
 "not be used, as :class:`!time` objects have no such values. If they're used "
 "anyway, 1900 is substituted for the year, and 1 for the month and day."
 msgstr ""
 
-#: library/datetime.rst:2543
+#: library/datetime.rst:2560
 msgid ""
 "For :class:`date` objects, the format codes for hours, minutes, seconds, and "
 "microseconds should not be used, as :class:`date` objects have no such "
 "values. If they're used anyway, 0 is substituted for them."
 msgstr ""
 
-#: library/datetime.rst:2547
+#: library/datetime.rst:2564
 msgid ""
 "For the same reason, handling of format strings containing Unicode code "
 "points that can't be represented in the charset of the current locale is "
@@ -3966,7 +3986,7 @@ msgid ""
 "`UnicodeError` or return an empty string instead."
 msgstr ""
 
-#: library/datetime.rst:2556
+#: library/datetime.rst:2573
 msgid ""
 "Because the format depends on the current locale, care should be taken when "
 "making assumptions about the output value. Field orderings will vary (for "
@@ -3974,38 +3994,38 @@ msgid ""
 "contain non-ASCII characters."
 msgstr ""
 
-#: library/datetime.rst:2562
+#: library/datetime.rst:2579
 msgid ""
 "The :meth:`~.datetime.strptime` method can parse years in the full [1, 9999] "
 "range, but years < 1000 must be zero-filled to 4-digit width."
 msgstr ""
 
-#: library/datetime.rst:2565
+#: library/datetime.rst:2582
 msgid ""
 "In previous versions, :meth:`~.datetime.strftime` method was restricted to "
 "years >= 1900."
 msgstr ""
 
-#: library/datetime.rst:2569
+#: library/datetime.rst:2586
 msgid ""
 "In version 3.2, :meth:`~.datetime.strftime` method was restricted to years "
 ">= 1000."
 msgstr ""
 
-#: library/datetime.rst:2574
+#: library/datetime.rst:2591
 msgid ""
 "When used with the :meth:`~.datetime.strptime` method, the ``%p`` directive "
 "only affects the output hour field if the ``%I`` directive is used to parse "
 "the hour."
 msgstr ""
 
-#: library/datetime.rst:2578
+#: library/datetime.rst:2595
 msgid ""
 "Unlike the :mod:`time` module, the :mod:`!datetime` module does not support "
 "leap seconds."
 msgstr ""
 
-#: library/datetime.rst:2582
+#: library/datetime.rst:2599
 msgid ""
 "When used with the :meth:`~.datetime.strptime` method, the ``%f`` directive "
 "accepts from one to six digits and zero pads on the right. ``%f`` is an "
@@ -4013,17 +4033,17 @@ msgid ""
 "separately in datetime objects, and therefore always available)."
 msgstr ""
 
-#: library/datetime.rst:2589
+#: library/datetime.rst:2606
 msgid ""
 "For a naive object, the ``%z``, ``%:z`` and ``%Z`` format codes are replaced "
 "by empty strings."
 msgstr ""
 
-#: library/datetime.rst:2592
+#: library/datetime.rst:2609
 msgid "For an aware object:"
 msgstr ""
 
-#: library/datetime.rst:2595
+#: library/datetime.rst:2612
 msgid ""
 ":meth:`~.datetime.utcoffset` is transformed into a string of the form "
 "``±HHMM[SS[.ffffff]]``, where ``HH`` is a 2-digit string giving the number "
@@ -4037,7 +4057,7 @@ msgid ""
 "replaced with the string ``'-0330'``."
 msgstr ""
 
-#: library/datetime.rst:2609
+#: library/datetime.rst:2626
 msgid ""
 "When the ``%z`` directive is provided to the  :meth:`~.datetime.strptime` "
 "method, the UTC offsets can have a colon as a separator between hours, "
@@ -4046,53 +4066,53 @@ msgid ""
 "``'+00:00'``."
 msgstr ""
 
-#: library/datetime.rst:2617
+#: library/datetime.rst:2634
 msgid ""
 "Behaves exactly as ``%z``, but has a colon separator added between hours, "
 "minutes and seconds."
 msgstr ""
 
-#: library/datetime.rst:2621
+#: library/datetime.rst:2638
 msgid ""
 "In :meth:`~.datetime.strftime`, ``%Z`` is replaced by an empty string if :"
 "meth:`~.datetime.tzname` returns ``None``; otherwise ``%Z`` is replaced by "
 "the returned value, which must be a string."
 msgstr ""
 
-#: library/datetime.rst:2625
+#: library/datetime.rst:2642
 msgid ":meth:`~.datetime.strptime` only accepts certain values for ``%Z``:"
 msgstr ""
 
-#: library/datetime.rst:2627
+#: library/datetime.rst:2644
 msgid "any value in ``time.tzname`` for your machine's locale"
 msgstr ""
 
-#: library/datetime.rst:2628
+#: library/datetime.rst:2645
 msgid "the hard-coded values ``UTC`` and ``GMT``"
 msgstr ""
 
-#: library/datetime.rst:2630
+#: library/datetime.rst:2647
 msgid ""
 "So someone living in Japan may have ``JST``, ``UTC``, and ``GMT`` as valid "
 "values, but probably not ``EST``. It will raise ``ValueError`` for invalid "
 "values."
 msgstr ""
 
-#: library/datetime.rst:2634
+#: library/datetime.rst:2651
 msgid ""
 "When the ``%z`` directive is provided to the :meth:`~.datetime.strptime` "
 "method, an aware :class:`.datetime` object will be produced. The ``tzinfo`` "
 "of the result will be set to a :class:`timezone` instance."
 msgstr ""
 
-#: library/datetime.rst:2640
+#: library/datetime.rst:2657
 msgid ""
 "When used with the :meth:`~.datetime.strptime` method, ``%U`` and ``%W`` are "
 "only used in calculations when the day of the week and the calendar year "
 "(``%Y``) are specified."
 msgstr ""
 
-#: library/datetime.rst:2645
+#: library/datetime.rst:2662
 msgid ""
 "Similar to ``%U`` and ``%W``, ``%V`` is only used in calculations when the "
 "day of the week and the ISO year (``%G``) are specified in a :meth:`~."
@@ -4100,7 +4120,7 @@ msgid ""
 "interchangeable."
 msgstr ""
 
-#: library/datetime.rst:2651
+#: library/datetime.rst:2668
 msgid ""
 "When used with the :meth:`~.datetime.strptime` method, the leading zero is "
 "optional for  formats ``%d``, ``%m``, ``%H``, ``%I``, ``%M``, ``%S``, "
@@ -4108,15 +4128,22 @@ msgid ""
 "zero."
 msgstr ""
 
-#: library/datetime.rst:2656
+#: library/datetime.rst:2673
+msgid ""
+"Parsing dates without a year using :meth:`~.datetime.strptime` will fail on "
+"representations of February 29 as that date does not exist in the default "
+"year of 1900."
+msgstr ""
+
+#: library/datetime.rst:2678
 msgid "Footnotes"
 msgstr ""
 
-#: library/datetime.rst:2657
+#: library/datetime.rst:2679
 msgid "If, that is, we ignore the effects of Relativity"
 msgstr ""
 
-#: library/datetime.rst:2659
+#: library/datetime.rst:2681
 msgid ""
 "This matches the definition of the \"proleptic Gregorian\" calendar in "
 "Dershowitz and Reingold's book *Calendrical Calculations*, where it's the "
@@ -4125,19 +4152,13 @@ msgid ""
 "systems."
 msgstr ""
 
-#: library/datetime.rst:2665
+#: library/datetime.rst:2687
 msgid ""
 "See R. H. van Gent's `guide to the mathematics of the ISO 8601 calendar "
 "<https://web.archive.org/web/20220531051136/https://webspace.science.uu.nl/"
 "~gent0113/calendar/isocalendar.htm>`_ for a good explanation."
 msgstr ""
 
-#: library/datetime.rst:2669
-msgid ""
-"Passing ``datetime.strptime('Feb 29', '%b %d')`` will fail since 1900 is not "
-"a leap year."
-msgstr ""
-
 #: library/datetime.rst:2329
 msgid "% (percent)"
 msgstr ""
diff --git a/library/dbm.po b/library/dbm.po
index 1785fecc4..9174680c7 100644
--- a/library/dbm.po
+++ b/library/dbm.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -509,7 +509,7 @@ msgstr ""
 #: library/dbm.rst:395
 msgid ""
 "Synchronize the on-disk directory and data files.  This method is called by "
-"the :meth:`Shelve.sync` method."
+"the :meth:`shelve.Shelf.sync` method."
 msgstr ""
 
 #: library/dbm.rst:400
diff --git a/library/decimal.po b/library/decimal.po
index 104197fe8..4ed9c89ec 100644
--- a/library/decimal.po
+++ b/library/decimal.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -2630,7 +2630,7 @@ msgstr ""
 
 #: library/decimal.rst:2248
 msgid ""
-"For inexact results, :attr:`MAX_PREC` is far too large on 64-bit platforms "
+"For inexact results, :const:`MAX_PREC` is far too large on 64-bit platforms "
 "and the available memory will be insufficient::"
 msgstr ""
 
diff --git a/library/distutils.po b/library/distutils.po
new file mode 100644
index 000000000..15f46699d
--- /dev/null
+++ b/library/distutils.po
@@ -0,0 +1,35 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) 2001-2025, Python Software Foundation
+# This file is distributed under the same license as the Python package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Python 3.12\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: library/distutils.rst:2
+msgid ":mod:`!distutils` --- Building and installing Python modules"
+msgstr ""
+
+#: library/distutils.rst:10
+msgid ""
+"This module is no longer part of the Python standard library. It was :ref:"
+"`removed in Python 3.12 <whatsnew312-removed-distutils>` after being "
+"deprecated in Python 3.10.  The removal was decided in :pep:`632`, which has "
+"`migration advice <https://peps.python.org/pep-0632/#migration-advice>`_."
+msgstr ""
+
+#: library/distutils.rst:16
+msgid ""
+"The last version of Python that provided the :mod:`!distutils` module was "
+"`Python 3.11 <https://docs.python.org/3.11/library/distutils.html>`_."
+msgstr ""
diff --git a/library/doctest.po b/library/doctest.po
index 64510cdc9..d4c4316fe 100644
--- a/library/doctest.po
+++ b/library/doctest.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -241,45 +241,33 @@ msgstr ""
 
 #: library/doctest.rst:176
 msgid ""
-"There is also a command line shortcut for running :func:`testmod`.  You can "
-"instruct the Python interpreter to run the doctest module directly from the "
-"standard library and pass the module name(s) on the command line::"
+"There is also a command line shortcut for running :func:`testmod`, see "
+"section :ref:`doctest-cli`."
 msgstr ""
 
-#: library/doctest.rst:180
-msgid "python -m doctest -v example.py"
-msgstr ""
-
-#: library/doctest.rst:182
-msgid ""
-"This will import :file:`example.py` as a standalone module and run :func:"
-"`testmod` on it.  Note that this may not work correctly if the file is part "
-"of a package and imports other submodules from that package."
-msgstr ""
-
-#: library/doctest.rst:186
+#: library/doctest.rst:179
 msgid ""
 "For more information on :func:`testmod`, see section :ref:`doctest-basic-"
 "api`."
 msgstr ""
 
-#: library/doctest.rst:192
+#: library/doctest.rst:185
 msgid "Simple Usage: Checking Examples in a Text File"
 msgstr ""
 
-#: library/doctest.rst:194
+#: library/doctest.rst:187
 msgid ""
 "Another simple application of doctest is testing interactive examples in a "
 "text file.  This can be done with the :func:`testfile` function::"
 msgstr ""
 
-#: library/doctest.rst:197
+#: library/doctest.rst:190
 msgid ""
 "import doctest\n"
 "doctest.testfile(\"example.txt\")"
 msgstr ""
 
-#: library/doctest.rst:200
+#: library/doctest.rst:193
 msgid ""
 "That short script executes and verifies any interactive Python examples "
 "contained in the file :file:`example.txt`.  The file content is treated as "
@@ -287,7 +275,7 @@ msgid ""
 "Python program!   For example, perhaps :file:`example.txt` contains this:"
 msgstr ""
 
-#: library/doctest.rst:205
+#: library/doctest.rst:198
 msgid ""
 "The ``example`` module\n"
 "======================\n"
@@ -306,13 +294,13 @@ msgid ""
 "    120"
 msgstr ""
 
-#: library/doctest.rst:223
+#: library/doctest.rst:216
 msgid ""
 "Running ``doctest.testfile(\"example.txt\")`` then finds the error in this "
 "documentation::"
 msgstr ""
 
-#: library/doctest.rst:226
+#: library/doctest.rst:219
 msgid ""
 "File \"./example.txt\", line 14, in example.txt\n"
 "Failed example:\n"
@@ -323,7 +311,7 @@ msgid ""
 "    720"
 msgstr ""
 
-#: library/doctest.rst:234
+#: library/doctest.rst:227
 msgid ""
 "As with :func:`testmod`, :func:`testfile` won't display anything unless an "
 "example fails.  If an example does fail, then the failing example(s) and the "
@@ -331,7 +319,7 @@ msgid ""
 "func:`testmod`."
 msgstr ""
 
-#: library/doctest.rst:239
+#: library/doctest.rst:232
 msgid ""
 "By default, :func:`testfile` looks for files in the calling module's "
 "directory. See section :ref:`doctest-basic-api` for a description of the "
@@ -339,40 +327,79 @@ msgid ""
 "locations."
 msgstr ""
 
-#: library/doctest.rst:243
+#: library/doctest.rst:236
 msgid ""
 "Like :func:`testmod`, :func:`testfile`'s verbosity can be set with the ``-"
 "v`` command-line switch or with the optional keyword argument *verbose*."
 msgstr ""
 
-#: library/doctest.rst:247
+#: library/doctest.rst:240
 msgid ""
-"There is also a command line shortcut for running :func:`testfile`.  You can "
-"instruct the Python interpreter to run the doctest module directly from the "
-"standard library and pass the file name(s) on the command line::"
+"There is also a command line shortcut for running :func:`testfile`, see "
+"section :ref:`doctest-cli`."
+msgstr ""
+
+#: library/doctest.rst:243
+msgid ""
+"For more information on :func:`testfile`, see section :ref:`doctest-basic-"
+"api`."
+msgstr ""
+
+#: library/doctest.rst:249
+msgid "Command-line Usage"
 msgstr ""
 
 #: library/doctest.rst:251
-msgid "python -m doctest -v example.txt"
+msgid ""
+"The :mod:`doctest` module can be invoked as a script from the command line:"
 msgstr ""
 
 #: library/doctest.rst:253
+msgid "python -m doctest [-v] [-o OPTION] [-f] file [file ...]"
+msgstr ""
+
+#: library/doctest.rst:261
 msgid ""
-"Because the file name does not end with :file:`.py`, :mod:`doctest` infers "
-"that it must be run with :func:`testfile`, not :func:`testmod`."
+"Detailed report of all examples tried is printed to standard output, along "
+"with assorted summaries at the end::"
 msgstr ""
 
-#: library/doctest.rst:256
+#: library/doctest.rst:264
+msgid "python -m doctest -v example.py"
+msgstr ""
+
+#: library/doctest.rst:266
 msgid ""
-"For more information on :func:`testfile`, see section :ref:`doctest-basic-"
-"api`."
+"This will import :file:`example.py` as a standalone module and run :func:"
+"`testmod` on it. Note that this may not work correctly if the file is part "
+"of a package and imports other submodules from that package."
+msgstr ""
+
+#: library/doctest.rst:270
+msgid ""
+"If the file name does not end with :file:`.py`, :mod:`!doctest` infers that "
+"it must be run with :func:`testfile` instead::"
+msgstr ""
+
+#: library/doctest.rst:273
+msgid "python -m doctest -v example.txt"
+msgstr ""
+
+#: library/doctest.rst:277
+msgid ""
+"Option flags control various aspects of doctest's behavior, see section :ref:"
+"`doctest-options`."
+msgstr ""
+
+#: library/doctest.rst:284
+msgid "This is shorthand for ``-o FAIL_FAST``."
 msgstr ""
 
-#: library/doctest.rst:262
+#: library/doctest.rst:292
 msgid "How It Works"
 msgstr ""
 
-#: library/doctest.rst:264
+#: library/doctest.rst:294
 msgid ""
 "This section examines in detail how doctest works: which docstrings it looks "
 "at, how it finds interactive examples, what execution context it uses, how "
@@ -382,17 +409,17 @@ msgid ""
 "see the following sections."
 msgstr ""
 
-#: library/doctest.rst:275
+#: library/doctest.rst:305
 msgid "Which Docstrings Are Examined?"
 msgstr ""
 
-#: library/doctest.rst:277
+#: library/doctest.rst:307
 msgid ""
 "The module docstring, and all function, class and method docstrings are "
 "searched.  Objects imported into the module are not searched."
 msgstr ""
 
-#: library/doctest.rst:280
+#: library/doctest.rst:310
 msgid ""
 "In addition, there are cases when you want tests to be part of a module but "
 "not part of the help text, which requires that the tests not be included in "
@@ -405,11 +432,11 @@ msgid ""
 "__test__.K``."
 msgstr ""
 
-#: library/doctest.rst:289
+#: library/doctest.rst:319
 msgid "For example, place this block of code at the top of :file:`example.py`:"
 msgstr ""
 
-#: library/doctest.rst:291
+#: library/doctest.rst:321
 msgid ""
 "__test__ = {\n"
 "    'numbers': \"\"\"\n"
@@ -422,7 +449,7 @@ msgid ""
 "}"
 msgstr ""
 
-#: library/doctest.rst:303
+#: library/doctest.rst:333
 msgid ""
 "The value of ``example.__test__[\"numbers\"]`` will be treated as a "
 "docstring and all the tests inside it will be run. It is important to note "
@@ -431,24 +458,24 @@ msgid ""
 "scanned for tests."
 msgstr ""
 
-#: library/doctest.rst:309
+#: library/doctest.rst:339
 msgid ""
 "Any classes found are recursively searched similarly, to test docstrings in "
 "their contained methods and nested classes."
 msgstr ""
 
-#: library/doctest.rst:316
+#: library/doctest.rst:346
 msgid "How are Docstring Examples Recognized?"
 msgstr ""
 
-#: library/doctest.rst:318
+#: library/doctest.rst:348
 msgid ""
 "In most cases a copy-and-paste of an interactive console session works fine, "
 "but doctest isn't trying to do an exact emulation of any specific Python "
 "shell."
 msgstr ""
 
-#: library/doctest.rst:323
+#: library/doctest.rst:353
 msgid ""
 ">>> # comments are ignored\n"
 ">>> x = 12\n"
@@ -467,18 +494,18 @@ msgid ""
 ">>>"
 msgstr ""
 
-#: library/doctest.rst:343
+#: library/doctest.rst:373
 msgid ""
 "Any expected output must immediately follow the final ``'>>> '`` or ``'... "
 "'`` line containing the code, and the expected output (if any) extends to "
 "the next ``'>>> '`` or all-whitespace line."
 msgstr ""
 
-#: library/doctest.rst:347
+#: library/doctest.rst:377
 msgid "The fine print:"
 msgstr ""
 
-#: library/doctest.rst:349
+#: library/doctest.rst:379
 msgid ""
 "Expected output cannot contain an all-whitespace line, since such a line is "
 "taken to signal the end of expected output.  If expected output does contain "
@@ -486,7 +513,7 @@ msgid ""
 "line is expected."
 msgstr ""
 
-#: library/doctest.rst:354
+#: library/doctest.rst:384
 msgid ""
 "All hard tab characters are expanded to spaces, using 8-column tab stops. "
 "Tabs in output generated by the tested code are not modified.  Because any "
@@ -501,20 +528,20 @@ msgid ""
 "`DocTestParser` class."
 msgstr ""
 
-#: library/doctest.rst:366
+#: library/doctest.rst:396
 msgid ""
 "Output to stdout is captured, but not output to stderr (exception tracebacks "
 "are captured via a different means)."
 msgstr ""
 
-#: library/doctest.rst:369
+#: library/doctest.rst:399
 msgid ""
 "If you continue a line via backslashing in an interactive session, or for "
 "any other reason use a backslash, you should use a raw docstring, which will "
 "preserve your backslashes exactly as you type them::"
 msgstr ""
 
-#: library/doctest.rst:373
+#: library/doctest.rst:403
 msgid ""
 ">>> def f(x):\n"
 "...     r'''Backslashes in a raw docstring: m\\n'''\n"
@@ -523,7 +550,7 @@ msgid ""
 "Backslashes in a raw docstring: m\\n"
 msgstr ""
 
-#: library/doctest.rst:379
+#: library/doctest.rst:409
 msgid ""
 "Otherwise, the backslash will be interpreted as part of the string. For "
 "example, the ``\\n`` above would be interpreted as a newline character.  "
@@ -531,7 +558,7 @@ msgid ""
 "use a raw string)::"
 msgstr ""
 
-#: library/doctest.rst:383
+#: library/doctest.rst:413
 msgid ""
 ">>> def f(x):\n"
 "...     '''Backslashes in a raw docstring: m\\\\n'''\n"
@@ -540,11 +567,11 @@ msgid ""
 "Backslashes in a raw docstring: m\\n"
 msgstr ""
 
-#: library/doctest.rst:389
+#: library/doctest.rst:419
 msgid "The starting column doesn't matter::"
 msgstr ""
 
-#: library/doctest.rst:391
+#: library/doctest.rst:421
 msgid ""
 ">>> assert \"Easy!\"\n"
 "      >>> import math\n"
@@ -552,17 +579,17 @@ msgid ""
 "          1"
 msgstr ""
 
-#: library/doctest.rst:396
+#: library/doctest.rst:426
 msgid ""
 "and as many leading whitespace characters are stripped from the expected "
 "output as appeared in the initial ``'>>> '`` line that started the example."
 msgstr ""
 
-#: library/doctest.rst:403
+#: library/doctest.rst:433
 msgid "What's the Execution Context?"
 msgstr ""
 
-#: library/doctest.rst:405
+#: library/doctest.rst:435
 msgid ""
 "By default, each time :mod:`doctest` finds a docstring to test, it uses a "
 "*shallow copy* of :mod:`!M`'s globals, so that running tests doesn't change "
@@ -573,17 +600,17 @@ msgid ""
 "defined in other docstrings."
 msgstr ""
 
-#: library/doctest.rst:413
+#: library/doctest.rst:443
 msgid ""
 "You can force use of your own dict as the execution context by passing "
 "``globs=your_dict`` to :func:`testmod` or :func:`testfile` instead."
 msgstr ""
 
-#: library/doctest.rst:420
+#: library/doctest.rst:450
 msgid "What About Exceptions?"
 msgstr ""
 
-#: library/doctest.rst:422
+#: library/doctest.rst:452
 msgid ""
 "No problem, provided that the traceback is the only output produced by the "
 "example:  just paste in the traceback. [#]_ Since tracebacks contain details "
@@ -592,11 +619,11 @@ msgid ""
 "it accepts."
 msgstr ""
 
-#: library/doctest.rst:428
+#: library/doctest.rst:458
 msgid "Simple example::"
 msgstr ""
 
-#: library/doctest.rst:430
+#: library/doctest.rst:460
 msgid ""
 ">>> [1, 2, 3].remove(42)\n"
 "Traceback (most recent call last):\n"
@@ -604,33 +631,33 @@ msgid ""
 "ValueError: list.remove(x): x not in list"
 msgstr ""
 
-#: library/doctest.rst:435
+#: library/doctest.rst:465
 msgid ""
 "That doctest succeeds if :exc:`ValueError` is raised, with the ``list."
 "remove(x): x not in list`` detail as shown."
 msgstr ""
 
-#: library/doctest.rst:438
+#: library/doctest.rst:468
 msgid ""
 "The expected output for an exception must start with a traceback header, "
 "which may be either of the following two lines, indented the same as the "
 "first line of the example::"
 msgstr ""
 
-#: library/doctest.rst:442
+#: library/doctest.rst:472
 msgid ""
 "Traceback (most recent call last):\n"
 "Traceback (innermost last):"
 msgstr ""
 
-#: library/doctest.rst:445
+#: library/doctest.rst:475
 msgid ""
 "The traceback header is followed by an optional traceback stack, whose "
 "contents are ignored by doctest.  The traceback stack is typically omitted, "
 "or copied verbatim from an interactive session."
 msgstr ""
 
-#: library/doctest.rst:449
+#: library/doctest.rst:479
 msgid ""
 "The traceback stack is followed by the most interesting part: the line(s) "
 "containing the exception type and detail.  This is usually the last line of "
@@ -638,7 +665,7 @@ msgid ""
 "multi-line detail::"
 msgstr ""
 
-#: library/doctest.rst:454
+#: library/doctest.rst:484
 msgid ""
 ">>> raise ValueError('multi\\n    line\\ndetail')\n"
 "Traceback (most recent call last):\n"
@@ -648,20 +675,20 @@ msgid ""
 "detail"
 msgstr ""
 
-#: library/doctest.rst:461
+#: library/doctest.rst:491
 msgid ""
 "The last three lines (starting with :exc:`ValueError`) are compared against "
 "the exception's type and detail, and the rest are ignored."
 msgstr ""
 
-#: library/doctest.rst:464
+#: library/doctest.rst:494
 msgid ""
 "Best practice is to omit the traceback stack, unless it adds significant "
 "documentation value to the example.  So the last example is probably better "
 "as::"
 msgstr ""
 
-#: library/doctest.rst:467
+#: library/doctest.rst:497
 msgid ""
 ">>> raise ValueError('multi\\n    line\\ndetail')\n"
 "Traceback (most recent call last):\n"
@@ -671,7 +698,7 @@ msgid ""
 "detail"
 msgstr ""
 
-#: library/doctest.rst:474
+#: library/doctest.rst:504
 msgid ""
 "Note that tracebacks are treated very specially.  In particular, in the "
 "rewritten example, the use of ``...`` is independent of doctest's :const:"
@@ -680,11 +707,11 @@ msgid ""
 "transcript of a Monty Python skit."
 msgstr ""
 
-#: library/doctest.rst:480
+#: library/doctest.rst:510
 msgid "Some details you should read once, but won't need to remember:"
 msgstr ""
 
-#: library/doctest.rst:482
+#: library/doctest.rst:512
 msgid ""
 "Doctest can't guess whether your expected output came from an exception "
 "traceback or from ordinary printing.  So, e.g., an example that expects "
@@ -694,7 +721,7 @@ msgid ""
 "create real problems."
 msgstr ""
 
-#: library/doctest.rst:489
+#: library/doctest.rst:519
 msgid ""
 "Each line of the traceback stack (if present) must be indented further than "
 "the first line of the example, *or* start with a non-alphanumeric character. "
@@ -703,14 +730,14 @@ msgid ""
 "course this does the right thing for genuine tracebacks."
 msgstr ""
 
-#: library/doctest.rst:495
+#: library/doctest.rst:525
 msgid ""
 "When the :const:`IGNORE_EXCEPTION_DETAIL` doctest option is specified, "
 "everything following the leftmost colon and any module information in the "
 "exception name is ignored."
 msgstr ""
 
-#: library/doctest.rst:499
+#: library/doctest.rst:529
 msgid ""
 "The interactive shell omits the traceback header line for some :exc:"
 "`SyntaxError`\\ s.  But doctest uses the traceback header line to "
@@ -719,13 +746,13 @@ msgid ""
 "need to manually add the traceback header line to your test example."
 msgstr ""
 
-#: library/doctest.rst:507
+#: library/doctest.rst:537
 msgid ""
 "For some exceptions, Python displays the position of the error using ``^`` "
 "markers and tildes::"
 msgstr ""
 
-#: library/doctest.rst:510
+#: library/doctest.rst:540
 msgid ""
 ">>> 1 + None\n"
 "  File \"<stdin>\", line 1\n"
@@ -734,7 +761,7 @@ msgid ""
 "TypeError: unsupported operand type(s) for +: 'int' and 'NoneType'"
 msgstr ""
 
-#: library/doctest.rst:516
+#: library/doctest.rst:546
 msgid ""
 "Since the lines showing the position of the error come before the exception "
 "type and detail, they are not checked by doctest.  For example, the "
@@ -742,7 +769,7 @@ msgid ""
 "location::"
 msgstr ""
 
-#: library/doctest.rst:520
+#: library/doctest.rst:550
 msgid ""
 ">>> 1 + None\n"
 "  File \"<stdin>\", line 1\n"
@@ -751,11 +778,11 @@ msgid ""
 "TypeError: unsupported operand type(s) for +: 'int' and 'NoneType'"
 msgstr ""
 
-#: library/doctest.rst:531
+#: library/doctest.rst:561
 msgid "Option Flags"
 msgstr ""
 
-#: library/doctest.rst:533
+#: library/doctest.rst:563
 msgid ""
 "A number of option flags control various aspects of doctest's behavior. "
 "Symbolic names for the flags are supplied as module constants, which can be :"
@@ -765,17 +792,13 @@ msgid ""
 "option."
 msgstr ""
 
-#: library/doctest.rst:539
-msgid "The ``-o`` command line option."
-msgstr ""
-
-#: library/doctest.rst:542
+#: library/doctest.rst:569
 msgid ""
 "The first group of options define test semantics, controlling aspects of how "
 "doctest decides whether actual output matches an example's expected output:"
 msgstr ""
 
-#: library/doctest.rst:548
+#: library/doctest.rst:575
 msgid ""
 "By default, if an expected output block contains just ``1``, an actual "
 "output block containing just ``1`` or just ``True`` is considered to be a "
@@ -787,7 +810,7 @@ msgid ""
 "not for several years."
 msgstr ""
 
-#: library/doctest.rst:560
+#: library/doctest.rst:587
 msgid ""
 "By default, if an expected output block contains a line containing only the "
 "string ``<BLANKLINE>``, then that line will match a blank line in the actual "
@@ -796,7 +819,7 @@ msgid ""
 "`DONT_ACCEPT_BLANKLINE` is specified, this substitution is not allowed."
 msgstr ""
 
-#: library/doctest.rst:569
+#: library/doctest.rst:596
 msgid ""
 "When specified, all sequences of whitespace (blanks and newlines) are "
 "treated as equal.  Any sequence of whitespace within the expected output "
@@ -806,7 +829,7 @@ msgid ""
 "across multiple lines in your source."
 msgstr ""
 
-#: library/doctest.rst:580
+#: library/doctest.rst:607
 msgid ""
 "When specified, an ellipsis marker (``...``) in the expected output can "
 "match any substring in the actual output.  This includes substrings that "
@@ -815,14 +838,14 @@ msgid ""
 "matched too much!\" surprises that ``.*`` is prone to in regular expressions."
 msgstr ""
 
-#: library/doctest.rst:589
+#: library/doctest.rst:616
 msgid ""
 "When specified, doctests expecting exceptions pass so long as an exception "
 "of the expected type is raised, even if the details (message and fully "
 "qualified exception name) don't match."
 msgstr ""
 
-#: library/doctest.rst:593
+#: library/doctest.rst:620
 msgid ""
 "For example, an example expecting ``ValueError: 42`` will pass if the actual "
 "exception raised is ``ValueError: 3*14``, but will fail if, say, a :exc:"
@@ -832,7 +855,7 @@ msgid ""
 "these variations will work with the flag specified:"
 msgstr ""
 
-#: library/doctest.rst:601
+#: library/doctest.rst:628
 msgid ""
 ">>> raise Exception('message')\n"
 "Traceback (most recent call last):\n"
@@ -847,20 +870,20 @@ msgid ""
 "__main__.Exception: message"
 msgstr ""
 
-#: library/doctest.rst:615
+#: library/doctest.rst:642
 msgid ""
 "Note that :const:`ELLIPSIS` can also be used to ignore the details of the "
 "exception message, but such a test may still fail based on whether the "
 "module name is present or matches exactly."
 msgstr ""
 
-#: library/doctest.rst:619
+#: library/doctest.rst:646
 msgid ""
 ":const:`IGNORE_EXCEPTION_DETAIL` now also ignores any information relating "
 "to the module containing the exception under test."
 msgstr ""
 
-#: library/doctest.rst:626
+#: library/doctest.rst:653
 msgid ""
 "When specified, do not run the example at all.  This can be useful in "
 "contexts where doctest examples serve as both documentation and test cases, "
@@ -869,32 +892,32 @@ msgid ""
 "might depend on resources which would be unavailable to the test driver."
 msgstr ""
 
-#: library/doctest.rst:632
+#: library/doctest.rst:659
 msgid ""
 "The SKIP flag can also be used for temporarily \"commenting out\" examples."
 msgstr ""
 
-#: library/doctest.rst:637
+#: library/doctest.rst:664
 msgid "A bitmask or'ing together all the comparison flags above."
 msgstr ""
 
-#: library/doctest.rst:639
+#: library/doctest.rst:666
 msgid "The second group of options controls how test failures are reported:"
 msgstr ""
 
-#: library/doctest.rst:644
+#: library/doctest.rst:671
 msgid ""
 "When specified, failures that involve multi-line expected and actual outputs "
 "are displayed using a unified diff."
 msgstr ""
 
-#: library/doctest.rst:650
+#: library/doctest.rst:677
 msgid ""
 "When specified, failures that involve multi-line expected and actual outputs "
 "will be displayed using a context diff."
 msgstr ""
 
-#: library/doctest.rst:656
+#: library/doctest.rst:683
 msgid ""
 "When specified, differences are computed by ``difflib.Differ``, using the "
 "same algorithm as the popular :file:`ndiff.py` utility. This is the only "
@@ -904,7 +927,7 @@ msgid ""
 "mismatching column positions."
 msgstr ""
 
-#: library/doctest.rst:665
+#: library/doctest.rst:692
 msgid ""
 "When specified, display the first failing example in each doctest, but "
 "suppress output for all remaining examples.  This will prevent doctest from "
@@ -915,7 +938,7 @@ msgid ""
 "of failures reported; only the output is suppressed."
 msgstr ""
 
-#: library/doctest.rst:676
+#: library/doctest.rst:703
 msgid ""
 "When specified, exit after the first failing example and don't attempt to "
 "run the remaining examples. Thus, the number of failures reported will be at "
@@ -923,23 +946,17 @@ msgid ""
 "first failure won't even produce debugging output."
 msgstr ""
 
-#: library/doctest.rst:681
-msgid ""
-"The doctest command line accepts the option ``-f`` as a shorthand for ``-o "
-"FAIL_FAST``."
-msgstr ""
-
-#: library/doctest.rst:689
+#: library/doctest.rst:711
 msgid "A bitmask or'ing together all the reporting flags above."
 msgstr ""
 
-#: library/doctest.rst:692
+#: library/doctest.rst:714
 msgid ""
 "There is also a way to register new option flag names, though this isn't "
 "useful unless you intend to extend :mod:`doctest` internals via subclassing:"
 msgstr ""
 
-#: library/doctest.rst:698
+#: library/doctest.rst:720
 msgid ""
 "Create a new option flag with a given name, and return the new flag's "
 "integer value.  :func:`register_optionflag` can be used when subclassing :"
@@ -948,46 +965,46 @@ msgid ""
 "be called using the following idiom::"
 msgstr ""
 
-#: library/doctest.rst:704
+#: library/doctest.rst:726
 msgid "MY_FLAG = register_optionflag('MY_FLAG')"
 msgstr ""
 
-#: library/doctest.rst:714
+#: library/doctest.rst:736
 msgid "Directives"
 msgstr ""
 
-#: library/doctest.rst:716
+#: library/doctest.rst:738
 msgid ""
 "Doctest directives may be used to modify the :ref:`option flags <doctest-"
 "options>` for an individual example.  Doctest directives are special Python "
 "comments following an example's source code:"
 msgstr ""
 
-#: library/doctest.rst:727
+#: library/doctest.rst:749
 msgid ""
 "Whitespace is not allowed between the ``+`` or ``-`` and the directive "
 "option name.  The directive option name can be any of the option flag names "
 "explained above."
 msgstr ""
 
-#: library/doctest.rst:731
+#: library/doctest.rst:753
 msgid ""
 "An example's doctest directives modify doctest's behavior for that single "
 "example.  Use ``+`` to enable the named behavior, or ``-`` to disable it."
 msgstr ""
 
-#: library/doctest.rst:734
+#: library/doctest.rst:756
 msgid "For example, this test passes:"
 msgstr ""
 
-#: library/doctest.rst:736
+#: library/doctest.rst:758
 msgid ""
 ">>> print(list(range(20)))  # doctest: +NORMALIZE_WHITESPACE\n"
 "[0,   1,  2,  3,  4,  5,  6,  7,  8,  9,\n"
 "10,  11, 12, 13, 14, 15, 16, 17, 18, 19]"
 msgstr ""
 
-#: library/doctest.rst:743
+#: library/doctest.rst:765
 msgid ""
 "Without the directive it would fail, both because the actual output doesn't "
 "have two blanks before the single-digit list elements, and because the "
@@ -995,52 +1012,52 @@ msgid ""
 "a directive to do so:"
 msgstr ""
 
-#: library/doctest.rst:748
+#: library/doctest.rst:770
 msgid ""
 ">>> print(list(range(20)))  # doctest: +ELLIPSIS\n"
 "[0, 1, ..., 18, 19]"
 msgstr ""
 
-#: library/doctest.rst:754
+#: library/doctest.rst:776
 msgid ""
 "Multiple directives can be used on a single physical line, separated by "
 "commas:"
 msgstr ""
 
-#: library/doctest.rst:757
+#: library/doctest.rst:779
 msgid ""
 ">>> print(list(range(20)))  # doctest: +ELLIPSIS, +NORMALIZE_WHITESPACE\n"
 "[0,    1, ...,   18,    19]"
 msgstr ""
 
-#: library/doctest.rst:763
+#: library/doctest.rst:785
 msgid ""
 "If multiple directive comments are used for a single example, then they are "
 "combined:"
 msgstr ""
 
-#: library/doctest.rst:766
+#: library/doctest.rst:788
 msgid ""
 ">>> print(list(range(20)))  # doctest: +ELLIPSIS\n"
 "...                         # doctest: +NORMALIZE_WHITESPACE\n"
 "[0,    1, ...,   18,    19]"
 msgstr ""
 
-#: library/doctest.rst:773
+#: library/doctest.rst:795
 msgid ""
 "As the previous example shows, you can add ``...`` lines to your example "
 "containing only directives.  This can be useful when an example is too long "
 "for a directive to comfortably fit on the same line:"
 msgstr ""
 
-#: library/doctest.rst:777
+#: library/doctest.rst:799
 msgid ""
 ">>> print(list(range(5)) + list(range(10, 20)) + list(range(30, 40)))\n"
 "... # doctest: +ELLIPSIS\n"
 "[0, ..., 4, 10, ..., 19, 30, ..., 39]"
 msgstr ""
 
-#: library/doctest.rst:784
+#: library/doctest.rst:806
 msgid ""
 "Note that since all options are disabled by default, and directives apply "
 "only to the example they appear in, enabling options (via ``+`` in a "
@@ -1050,11 +1067,11 @@ msgid ""
 "be useful."
 msgstr ""
 
-#: library/doctest.rst:794
+#: library/doctest.rst:816
 msgid "Warnings"
 msgstr ""
 
-#: library/doctest.rst:796
+#: library/doctest.rst:818
 msgid ""
 ":mod:`doctest` is serious about requiring exact matches in expected output.  "
 "If even a single character doesn't match, the test fails.  This will "
@@ -1064,69 +1081,69 @@ msgid ""
 "test like ::"
 msgstr ""
 
-#: library/doctest.rst:802
+#: library/doctest.rst:824
 msgid ""
 ">>> foo()\n"
 "{\"spam\", \"eggs\"}"
 msgstr ""
 
-#: library/doctest.rst:805
+#: library/doctest.rst:827
 msgid "is vulnerable!  One workaround is to do ::"
 msgstr ""
 
-#: library/doctest.rst:807
+#: library/doctest.rst:829
 msgid ""
 ">>> foo() == {\"spam\", \"eggs\"}\n"
 "True"
 msgstr ""
 
-#: library/doctest.rst:810
+#: library/doctest.rst:832
 msgid "instead.  Another is to do ::"
 msgstr ""
 
-#: library/doctest.rst:812
+#: library/doctest.rst:834
 msgid ""
 ">>> d = sorted(foo())\n"
 ">>> d\n"
 "['eggs', 'spam']"
 msgstr ""
 
-#: library/doctest.rst:816
+#: library/doctest.rst:838
 msgid "There are others, but you get the idea."
 msgstr ""
 
-#: library/doctest.rst:818
+#: library/doctest.rst:840
 msgid "Another bad idea is to print things that embed an object address, like"
 msgstr ""
 
-#: library/doctest.rst:820
+#: library/doctest.rst:842
 msgid ""
-">>> id(1.0)  # certain to fail some of the time  \n"
+">>> id(1.0)  # certain to fail some of the time\n"
 "7948648\n"
 ">>> class C: pass\n"
-">>> C()  # the default repr() for instances embeds an address   \n"
+">>> C()  # the default repr() for instances embeds an address\n"
 "<C object at 0x00AC18F0>"
 msgstr ""
 
-#: library/doctest.rst:828
+#: library/doctest.rst:850
 msgid ""
 "The :const:`ELLIPSIS` directive gives a nice approach for the last example:"
 msgstr ""
 
-#: library/doctest.rst:830
+#: library/doctest.rst:852
 msgid ""
 ">>> C()  # doctest: +ELLIPSIS\n"
 "<C object at 0x...>"
 msgstr ""
 
-#: library/doctest.rst:836
+#: library/doctest.rst:858
 msgid ""
 "Floating-point numbers are also subject to small output variations across "
 "platforms, because Python defers to the platform C library for float "
 "formatting, and C libraries vary widely in quality here. ::"
 msgstr ""
 
-#: library/doctest.rst:840
+#: library/doctest.rst:862
 msgid ""
 ">>> 1./7  # risky\n"
 "0.14285714285714285\n"
@@ -1136,29 +1153,29 @@ msgid ""
 "0.142857"
 msgstr ""
 
-#: library/doctest.rst:847
+#: library/doctest.rst:869
 msgid ""
 "Numbers of the form ``I/2.**J`` are safe across all platforms, and I often "
 "contrive doctest examples to produce numbers of that form::"
 msgstr ""
 
-#: library/doctest.rst:850
+#: library/doctest.rst:872
 msgid ""
 ">>> 3./4  # utterly safe\n"
 "0.75"
 msgstr ""
 
-#: library/doctest.rst:853
+#: library/doctest.rst:875
 msgid ""
 "Simple fractions are also easier for people to understand, and that makes "
 "for better documentation."
 msgstr ""
 
-#: library/doctest.rst:860
+#: library/doctest.rst:882
 msgid "Basic API"
 msgstr ""
 
-#: library/doctest.rst:862
+#: library/doctest.rst:884
 msgid ""
 "The functions :func:`testmod` and :func:`testfile` provide a simple "
 "interface to doctest that should be sufficient for most basic uses.  For a "
@@ -1166,25 +1183,25 @@ msgid ""
 "simple-testmod` and :ref:`doctest-simple-testfile`."
 msgstr ""
 
-#: library/doctest.rst:870
+#: library/doctest.rst:892
 msgid ""
 "All arguments except *filename* are optional, and should be specified in "
 "keyword form."
 msgstr ""
 
-#: library/doctest.rst:873
+#: library/doctest.rst:895
 msgid ""
 "Test examples in the file named *filename*.  Return ``(failure_count, "
 "test_count)``."
 msgstr ""
 
-#: library/doctest.rst:876
+#: library/doctest.rst:898
 msgid ""
 "Optional argument *module_relative* specifies how the filename should be "
 "interpreted:"
 msgstr ""
 
-#: library/doctest.rst:879
+#: library/doctest.rst:901
 msgid ""
 "If *module_relative* is ``True`` (the default), then *filename* specifies an "
 "OS-independent module-relative path.  By default, this path is relative to "
@@ -1194,20 +1211,20 @@ msgid ""
 "absolute path (i.e., it may not begin with ``/``)."
 msgstr ""
 
-#: library/doctest.rst:886
+#: library/doctest.rst:908
 msgid ""
 "If *module_relative* is ``False``, then *filename* specifies an OS-specific "
 "path.  The path may be absolute or relative; relative paths are resolved "
 "with respect to the current working directory."
 msgstr ""
 
-#: library/doctest.rst:890
+#: library/doctest.rst:912
 msgid ""
 "Optional argument *name* gives the name of the test; by default, or if "
 "``None``, ``os.path.basename(filename)`` is used."
 msgstr ""
 
-#: library/doctest.rst:893
+#: library/doctest.rst:915
 msgid ""
 "Optional argument *package* is a Python package or the name of a Python "
 "package whose directory should be used as the base directory for a module-"
@@ -1216,7 +1233,7 @@ msgid ""
 "is an error to specify *package* if *module_relative* is ``False``."
 msgstr ""
 
-#: library/doctest.rst:899
+#: library/doctest.rst:921
 msgid ""
 "Optional argument *globs* gives a dict to be used as the globals when "
 "executing examples.  A new shallow copy of this dict is created for the "
@@ -1224,7 +1241,7 @@ msgid ""
 "``None``, a new empty dict is used."
 msgstr ""
 
-#: library/doctest.rst:904
+#: library/doctest.rst:926
 msgid ""
 "Optional argument *extraglobs* gives a dict merged into the globals used to "
 "execute examples.  This works like :meth:`dict.update`:  if *globs* and "
@@ -1237,27 +1254,27 @@ msgid ""
 "tested."
 msgstr ""
 
-#: library/doctest.rst:913
+#: library/doctest.rst:935
 msgid ""
 "Optional argument *verbose* prints lots of stuff if true, and prints only "
 "failures if false; by default, or if ``None``, it's true if and only if ``'-"
 "v'`` is in ``sys.argv``."
 msgstr ""
 
-#: library/doctest.rst:917
+#: library/doctest.rst:939
 msgid ""
 "Optional argument *report* prints a summary at the end when true, else "
 "prints nothing at the end.  In verbose mode, the summary is detailed, else "
 "the summary is very brief (in fact, empty if all tests passed)."
 msgstr ""
 
-#: library/doctest.rst:921
+#: library/doctest.rst:943
 msgid ""
 "Optional argument *optionflags* (default value 0) takes the :ref:`bitwise OR "
 "<bitwise>` of option flags. See section :ref:`doctest-options`."
 msgstr ""
 
-#: library/doctest.rst:925
+#: library/doctest.rst:947
 msgid ""
 "Optional argument *raise_on_error* defaults to false.  If true, an exception "
 "is raised upon the first failure or unexpected exception in an example.  "
@@ -1265,33 +1282,33 @@ msgid ""
 "continue running examples."
 msgstr ""
 
-#: library/doctest.rst:1071
+#: library/doctest.rst:1093
 msgid ""
 "Optional argument *parser* specifies a :class:`DocTestParser` (or subclass) "
 "that should be used to extract tests from the files.  It defaults to a "
 "normal parser (i.e., ``DocTestParser()``)."
 msgstr ""
 
-#: library/doctest.rst:1075
+#: library/doctest.rst:1097
 msgid ""
 "Optional argument *encoding* specifies an encoding that should be used to "
 "convert the file to unicode."
 msgstr ""
 
-#: library/doctest.rst:940
+#: library/doctest.rst:962
 msgid ""
 "All arguments are optional, and all except for *m* should be specified in "
 "keyword form."
 msgstr ""
 
-#: library/doctest.rst:943
+#: library/doctest.rst:965
 msgid ""
 "Test examples in docstrings in functions and classes reachable from module "
 "*m* (or module :mod:`__main__` if *m* is not supplied or is ``None``), "
 "starting with ``m.__doc__``."
 msgstr ""
 
-#: library/doctest.rst:947
+#: library/doctest.rst:969
 msgid ""
 "Also test examples reachable from dict ``m.__test__``, if it exists. ``m."
 "__test__`` maps names (strings) to functions, classes and strings; function "
@@ -1299,22 +1316,22 @@ msgid ""
 "directly, as if they were docstrings."
 msgstr ""
 
-#: library/doctest.rst:952
+#: library/doctest.rst:974
 msgid ""
 "Only docstrings attached to objects belonging to module *m* are searched."
 msgstr ""
 
-#: library/doctest.rst:954
+#: library/doctest.rst:976
 msgid "Return ``(failure_count, test_count)``."
 msgstr ""
 
-#: library/doctest.rst:956
+#: library/doctest.rst:978
 msgid ""
 "Optional argument *name* gives the name of the module; by default, or if "
 "``None``, ``m.__name__`` is used."
 msgstr ""
 
-#: library/doctest.rst:959
+#: library/doctest.rst:981
 msgid ""
 "Optional argument *exclude_empty* defaults to false.  If true, objects for "
 "which no doctests are found are excluded from consideration. The default is "
@@ -1325,39 +1342,39 @@ msgid ""
 "defaults to true."
 msgstr ""
 
-#: library/doctest.rst:967
+#: library/doctest.rst:989
 msgid ""
 "Optional arguments *extraglobs*, *verbose*, *report*, *optionflags*, "
 "*raise_on_error*, and *globs* are the same as for function :func:`testfile` "
 "above, except that *globs* defaults to ``m.__dict__``."
 msgstr ""
 
-#: library/doctest.rst:974
+#: library/doctest.rst:996
 msgid ""
 "Test examples associated with object *f*; for example, *f* may be a string, "
 "a module, a function, or a class object."
 msgstr ""
 
-#: library/doctest.rst:977
+#: library/doctest.rst:999
 msgid ""
 "A shallow copy of dictionary argument *globs* is used for the execution "
 "context."
 msgstr ""
 
-#: library/doctest.rst:979
+#: library/doctest.rst:1001
 msgid ""
 "Optional argument *name* is used in failure messages, and defaults to "
 "``\"NoName\"``."
 msgstr ""
 
-#: library/doctest.rst:982
+#: library/doctest.rst:1004
 msgid ""
 "If optional argument *verbose* is true, output is generated even if there "
 "are no failures.  By default, output is generated only in case of an example "
 "failure."
 msgstr ""
 
-#: library/doctest.rst:985
+#: library/doctest.rst:1007
 msgid ""
 "Optional argument *compileflags* gives the set of flags that should be used "
 "by the Python compiler when running the examples.  By default, or if "
@@ -1365,16 +1382,16 @@ msgid ""
 "found in *globs*."
 msgstr ""
 
-#: library/doctest.rst:989
+#: library/doctest.rst:1011
 msgid ""
 "Optional argument *optionflags* works as for function :func:`testfile` above."
 msgstr ""
 
-#: library/doctest.rst:995
+#: library/doctest.rst:1017
 msgid "Unittest API"
 msgstr ""
 
-#: library/doctest.rst:997
+#: library/doctest.rst:1019
 msgid ""
 "As your collection of doctest'ed modules grows, you'll want a way to run all "
 "their doctests systematically.  :mod:`doctest` provides two functions that "
@@ -1384,7 +1401,7 @@ msgid ""
 "your test module::"
 msgstr ""
 
-#: library/doctest.rst:1003
+#: library/doctest.rst:1025
 msgid ""
 "import unittest\n"
 "import doctest\n"
@@ -1395,19 +1412,19 @@ msgid ""
 "    return tests"
 msgstr ""
 
-#: library/doctest.rst:1011
+#: library/doctest.rst:1033
 msgid ""
 "There are two main functions for creating :class:`unittest.TestSuite` "
 "instances from text files and modules with doctests:"
 msgstr ""
 
-#: library/doctest.rst:1017
+#: library/doctest.rst:1039
 msgid ""
 "Convert doctest tests from one or more text files to a :class:`unittest."
 "TestSuite`."
 msgstr ""
 
-#: library/doctest.rst:1020
+#: library/doctest.rst:1042
 msgid ""
 "The returned :class:`unittest.TestSuite` is to be run by the unittest "
 "framework and runs the interactive examples in each file.  If an example in "
@@ -1416,21 +1433,21 @@ msgid ""
 "containing the test and a (sometimes approximate) line number."
 msgstr ""
 
-#: library/doctest.rst:1026
+#: library/doctest.rst:1048
 msgid "Pass one or more paths (as strings) to text files to be examined."
 msgstr ""
 
-#: library/doctest.rst:1028
+#: library/doctest.rst:1050
 msgid "Options may be provided as keyword arguments:"
 msgstr ""
 
-#: library/doctest.rst:1030
+#: library/doctest.rst:1052
 msgid ""
 "Optional argument *module_relative* specifies how the filenames in *paths* "
 "should be interpreted:"
 msgstr ""
 
-#: library/doctest.rst:1033
+#: library/doctest.rst:1055
 msgid ""
 "If *module_relative* is ``True`` (the default), then each filename in "
 "*paths* specifies an OS-independent module-relative path.  By default, this "
@@ -1441,14 +1458,14 @@ msgid ""
 "``)."
 msgstr ""
 
-#: library/doctest.rst:1041
+#: library/doctest.rst:1063
 msgid ""
 "If *module_relative* is ``False``, then each filename in *paths* specifies "
 "an OS-specific path.  The path may be absolute or relative; relative paths "
 "are resolved with respect to the current working directory."
 msgstr ""
 
-#: library/doctest.rst:1045
+#: library/doctest.rst:1067
 msgid ""
 "Optional argument *package* is a Python package or the name of a Python "
 "package whose directory should be used as the base directory for module-"
@@ -1458,7 +1475,7 @@ msgid ""
 "``False``."
 msgstr ""
 
-#: library/doctest.rst:1052
+#: library/doctest.rst:1074
 msgid ""
 "Optional argument *setUp* specifies a set-up function for the test suite. "
 "This is called before running the tests in each file.  The *setUp* function "
@@ -1466,7 +1483,7 @@ msgid ""
 "test globals as the *globs* attribute of the test passed."
 msgstr ""
 
-#: library/doctest.rst:1057
+#: library/doctest.rst:1079
 msgid ""
 "Optional argument *tearDown* specifies a tear-down function for the test "
 "suite.  This is called after running the tests in each file.  The *tearDown* "
@@ -1474,14 +1491,14 @@ msgid ""
 "access the test globals as the *globs* attribute of the test passed."
 msgstr ""
 
-#: library/doctest.rst:1096
+#: library/doctest.rst:1118
 msgid ""
 "Optional argument *globs* is a dictionary containing the initial global "
 "variables for the tests.  A new copy of this dictionary is created for each "
 "test.  By default, *globs* is a new empty dictionary."
 msgstr ""
 
-#: library/doctest.rst:1066
+#: library/doctest.rst:1088
 msgid ""
 "Optional argument *optionflags* specifies the default doctest options for "
 "the tests, created by or-ing together individual option flags.  See section :"
@@ -1489,17 +1506,17 @@ msgid ""
 "for a better way to set reporting options."
 msgstr ""
 
-#: library/doctest.rst:1078
+#: library/doctest.rst:1100
 msgid ""
 "The global ``__file__`` is added to the globals provided to doctests loaded "
 "from a text file using :func:`DocFileSuite`."
 msgstr ""
 
-#: library/doctest.rst:1084
+#: library/doctest.rst:1106
 msgid "Convert doctest tests for a module to a :class:`unittest.TestSuite`."
 msgstr ""
 
-#: library/doctest.rst:1086
+#: library/doctest.rst:1108
 msgid ""
 "The returned :class:`unittest.TestSuite` is to be run by the unittest "
 "framework and runs each doctest in the module.  If any of the doctests fail, "
@@ -1508,42 +1525,42 @@ msgid ""
 "(sometimes approximate) line number."
 msgstr ""
 
-#: library/doctest.rst:1092
+#: library/doctest.rst:1114
 msgid ""
 "Optional argument *module* provides the module to be tested.  It can be a "
 "module object or a (possibly dotted) module name.  If not specified, the "
 "module calling this function is used."
 msgstr ""
 
-#: library/doctest.rst:1100
+#: library/doctest.rst:1122
 msgid ""
 "Optional argument *extraglobs* specifies an extra set of global variables, "
 "which is merged into *globs*.  By default, no extra globals are used."
 msgstr ""
 
-#: library/doctest.rst:1103
+#: library/doctest.rst:1125
 msgid ""
 "Optional argument *test_finder* is the :class:`DocTestFinder` object (or a "
 "drop-in replacement) that is used to extract doctests from the module."
 msgstr ""
 
-#: library/doctest.rst:1106
+#: library/doctest.rst:1128
 msgid ""
 "Optional arguments *setUp*, *tearDown*, and *optionflags* are the same as "
 "for function :func:`DocFileSuite` above."
 msgstr ""
 
-#: library/doctest.rst:1109
+#: library/doctest.rst:1131
 msgid "This function uses the same search technique as :func:`testmod`."
 msgstr ""
 
-#: library/doctest.rst:1111
+#: library/doctest.rst:1133
 msgid ""
 ":func:`DocTestSuite` returns an empty :class:`unittest.TestSuite` if "
 "*module* contains no docstrings instead of raising :exc:`ValueError`."
 msgstr ""
 
-#: library/doctest.rst:1117
+#: library/doctest.rst:1139
 msgid ""
 "When doctests which have been converted to unit tests by :func:"
 "`DocFileSuite` or :func:`DocTestSuite` fail, this exception is raised "
@@ -1551,7 +1568,7 @@ msgid ""
 "approximate) line number."
 msgstr ""
 
-#: library/doctest.rst:1121
+#: library/doctest.rst:1143
 msgid ""
 "Under the covers, :func:`DocTestSuite` creates a :class:`unittest.TestSuite` "
 "out of :class:`!doctest.DocTestCase` instances, and :class:`!DocTestCase` is "
@@ -1560,14 +1577,14 @@ msgid ""
 "questions about the exact details of :mod:`unittest` integration."
 msgstr ""
 
-#: library/doctest.rst:1127
+#: library/doctest.rst:1149
 msgid ""
 "Similarly, :func:`DocFileSuite` creates a :class:`unittest.TestSuite` out "
 "of :class:`!doctest.DocFileCase` instances, and :class:`!DocFileCase` is a "
 "subclass of :class:`!DocTestCase`."
 msgstr ""
 
-#: library/doctest.rst:1131
+#: library/doctest.rst:1153
 msgid ""
 "So both ways of creating a :class:`unittest.TestSuite` run instances of :"
 "class:`!DocTestCase`.  This is important for a subtle reason: when you run :"
@@ -1580,23 +1597,23 @@ msgid ""
 "through :mod:`unittest` to :mod:`doctest` test runners."
 msgstr ""
 
-#: library/doctest.rst:1141
+#: library/doctest.rst:1163
 msgid ""
 "For this reason, :mod:`doctest` also supports a notion of :mod:`doctest` "
 "reporting flags specific to :mod:`unittest` support, via this function:"
 msgstr ""
 
-#: library/doctest.rst:1147
+#: library/doctest.rst:1169
 msgid "Set the :mod:`doctest` reporting flags to use."
 msgstr ""
 
-#: library/doctest.rst:1149
+#: library/doctest.rst:1171
 msgid ""
 "Argument *flags* takes the :ref:`bitwise OR <bitwise>` of option flags.  See "
 "section :ref:`doctest-options`.  Only \"reporting flags\" can be used."
 msgstr ""
 
-#: library/doctest.rst:1152
+#: library/doctest.rst:1174
 msgid ""
 "This is a module-global setting, and affects all future doctests run by "
 "module :mod:`unittest`:  the :meth:`!runTest` method of :class:`!"
@@ -1610,17 +1627,17 @@ msgid ""
 "`!doctest`'s :mod:`unittest` reporting flags are ignored."
 msgstr ""
 
-#: library/doctest.rst:1163
+#: library/doctest.rst:1185
 msgid ""
 "The value of the :mod:`unittest` reporting flags in effect before the "
 "function was called is returned by the function."
 msgstr ""
 
-#: library/doctest.rst:1170
+#: library/doctest.rst:1192
 msgid "Advanced API"
 msgstr ""
 
-#: library/doctest.rst:1172
+#: library/doctest.rst:1194
 msgid ""
 "The basic API is a simple wrapper that's intended to make doctest easy to "
 "use. It is fairly flexible, and should meet most users' needs; however, if "
@@ -1628,62 +1645,62 @@ msgid ""
 "doctest's capabilities, then you should use the advanced API."
 msgstr ""
 
-#: library/doctest.rst:1177
+#: library/doctest.rst:1199
 msgid ""
 "The advanced API revolves around two container classes, which are used to "
 "store the interactive examples extracted from doctest cases:"
 msgstr ""
 
-#: library/doctest.rst:1180
+#: library/doctest.rst:1202
 msgid ""
 ":class:`Example`: A single Python :term:`statement`, paired with its "
 "expected output."
 msgstr ""
 
-#: library/doctest.rst:1183
+#: library/doctest.rst:1205
 msgid ""
 ":class:`DocTest`: A collection of :class:`Example`\\ s, typically extracted "
 "from a single docstring or text file."
 msgstr ""
 
-#: library/doctest.rst:1186
+#: library/doctest.rst:1208
 msgid ""
 "Additional processing classes are defined to find, parse, and run, and check "
 "doctest examples:"
 msgstr ""
 
-#: library/doctest.rst:1189
+#: library/doctest.rst:1211
 msgid ""
 ":class:`DocTestFinder`: Finds all docstrings in a given module, and uses a :"
 "class:`DocTestParser` to create a :class:`DocTest` from every docstring that "
 "contains interactive examples."
 msgstr ""
 
-#: library/doctest.rst:1193
+#: library/doctest.rst:1215
 msgid ""
 ":class:`DocTestParser`: Creates a :class:`DocTest` object from a string "
 "(such as an object's docstring)."
 msgstr ""
 
-#: library/doctest.rst:1196
+#: library/doctest.rst:1218
 msgid ""
 ":class:`DocTestRunner`: Executes the examples in a :class:`DocTest`, and "
 "uses an :class:`OutputChecker` to verify their output."
 msgstr ""
 
-#: library/doctest.rst:1199
+#: library/doctest.rst:1221
 msgid ""
 ":class:`OutputChecker`: Compares the actual output from a doctest example "
 "with the expected output, and decides whether they match."
 msgstr ""
 
-#: library/doctest.rst:1202
+#: library/doctest.rst:1224
 msgid ""
 "The relationships among these processing classes are summarized in the "
 "following diagram::"
 msgstr ""
 
-#: library/doctest.rst:1205
+#: library/doctest.rst:1227
 msgid ""
 "                            list of:\n"
 "+------+                   +---------+\n"
@@ -1695,30 +1712,30 @@ msgid ""
 "                           +---------+"
 msgstr ""
 
-#: library/doctest.rst:1218
+#: library/doctest.rst:1240
 msgid "DocTest Objects"
 msgstr ""
 
-#: library/doctest.rst:1223
+#: library/doctest.rst:1245
 msgid ""
 "A collection of doctest examples that should be run in a single namespace.  "
 "The constructor arguments are used to initialize the attributes of the same "
 "names."
 msgstr ""
 
-#: library/doctest.rst:1227
+#: library/doctest.rst:1249
 msgid ""
 ":class:`DocTest` defines the following attributes.  They are initialized by "
 "the constructor, and should not be modified directly."
 msgstr ""
 
-#: library/doctest.rst:1233
+#: library/doctest.rst:1255
 msgid ""
 "A list of :class:`Example` objects encoding the individual interactive "
 "Python examples that should be run by this test."
 msgstr ""
 
-#: library/doctest.rst:1239
+#: library/doctest.rst:1261
 msgid ""
 "The namespace (aka globals) that the examples should be run in. This is a "
 "dictionary mapping names to values.  Any changes to the namespace made by "
@@ -1726,57 +1743,57 @@ msgid ""
 "`globs` after the test is run."
 msgstr ""
 
-#: library/doctest.rst:1247
+#: library/doctest.rst:1269
 msgid ""
 "A string name identifying the :class:`DocTest`.  Typically, this is the name "
 "of the object or file that the test was extracted from."
 msgstr ""
 
-#: library/doctest.rst:1253
+#: library/doctest.rst:1275
 msgid ""
 "The name of the file that this :class:`DocTest` was extracted from; or "
 "``None`` if the filename is unknown, or if the :class:`DocTest` was not "
 "extracted from a file."
 msgstr ""
 
-#: library/doctest.rst:1260
+#: library/doctest.rst:1282
 msgid ""
 "The line number within :attr:`filename` where this :class:`DocTest` begins, "
 "or ``None`` if the line number is unavailable.  This line number is zero-"
 "based with respect to the beginning of the file."
 msgstr ""
 
-#: library/doctest.rst:1267
+#: library/doctest.rst:1289
 msgid ""
 "The string that the test was extracted from, or ``None`` if the string is "
 "unavailable, or if the test was not extracted from a string."
 msgstr ""
 
-#: library/doctest.rst:1274
+#: library/doctest.rst:1296
 msgid "Example Objects"
 msgstr ""
 
-#: library/doctest.rst:1279
+#: library/doctest.rst:1301
 msgid ""
 "A single interactive example, consisting of a Python statement and its "
 "expected output.  The constructor arguments are used to initialize the "
 "attributes of the same names."
 msgstr ""
 
-#: library/doctest.rst:1284
+#: library/doctest.rst:1306
 msgid ""
 ":class:`Example` defines the following attributes.  They are initialized by "
 "the constructor, and should not be modified directly."
 msgstr ""
 
-#: library/doctest.rst:1290
+#: library/doctest.rst:1312
 msgid ""
 "A string containing the example's source code.  This source code consists of "
 "a single Python statement, and always ends with a newline; the constructor "
 "adds a newline when necessary."
 msgstr ""
 
-#: library/doctest.rst:1297
+#: library/doctest.rst:1319
 msgid ""
 "The expected output from running the example's source code (either from "
 "stdout, or a traceback in case of exception).  :attr:`want` ends with a "
@@ -1784,7 +1801,7 @@ msgid ""
 "The constructor adds a newline when necessary."
 msgstr ""
 
-#: library/doctest.rst:1305
+#: library/doctest.rst:1327
 msgid ""
 "The exception message generated by the example, if the example is expected "
 "to generate an exception; or ``None`` if it is not expected to generate an "
@@ -1793,20 +1810,20 @@ msgid ""
 "unless it's ``None``.  The constructor adds a newline if needed."
 msgstr ""
 
-#: library/doctest.rst:1314
+#: library/doctest.rst:1336
 msgid ""
 "The line number within the string containing this example where the example "
 "begins.  This line number is zero-based with respect to the beginning of the "
 "containing string."
 msgstr ""
 
-#: library/doctest.rst:1321
+#: library/doctest.rst:1343
 msgid ""
 "The example's indentation in the containing string, i.e., the number of "
 "space characters that precede the example's first prompt."
 msgstr ""
 
-#: library/doctest.rst:1327
+#: library/doctest.rst:1349
 msgid ""
 "A dictionary mapping from option flags to ``True`` or ``False``, which is "
 "used to override default options for this example.  Any option flags not "
@@ -1815,11 +1832,11 @@ msgid ""
 "default, no options are set."
 msgstr ""
 
-#: library/doctest.rst:1337
+#: library/doctest.rst:1359
 msgid "DocTestFinder objects"
 msgstr ""
 
-#: library/doctest.rst:1342
+#: library/doctest.rst:1364
 msgid ""
 "A processing class used to extract the :class:`DocTest`\\ s that are "
 "relevant to a given object, from its docstring and the docstrings of its "
@@ -1827,48 +1844,48 @@ msgid ""
 "classes, functions, methods, staticmethods, classmethods, and properties."
 msgstr ""
 
-#: library/doctest.rst:1347
+#: library/doctest.rst:1369
 msgid ""
 "The optional argument *verbose* can be used to display the objects searched "
 "by the finder.  It defaults to ``False`` (no output)."
 msgstr ""
 
-#: library/doctest.rst:1350
+#: library/doctest.rst:1372
 msgid ""
 "The optional argument *parser* specifies the :class:`DocTestParser` object "
 "(or a drop-in replacement) that is used to extract doctests from docstrings."
 msgstr ""
 
-#: library/doctest.rst:1353
+#: library/doctest.rst:1375
 msgid ""
 "If the optional argument *recurse* is false, then :meth:`DocTestFinder.find` "
 "will only examine the given object, and not any contained objects."
 msgstr ""
 
-#: library/doctest.rst:1356
+#: library/doctest.rst:1378
 msgid ""
 "If the optional argument *exclude_empty* is false, then :meth:`DocTestFinder."
 "find` will include tests for objects with empty docstrings."
 msgstr ""
 
-#: library/doctest.rst:1360
+#: library/doctest.rst:1382
 msgid ":class:`DocTestFinder` defines the following method:"
 msgstr ""
 
-#: library/doctest.rst:1365
+#: library/doctest.rst:1387
 msgid ""
 "Return a list of the :class:`DocTest`\\ s that are defined by *obj*'s "
 "docstring, or by any of its contained objects' docstrings."
 msgstr ""
 
-#: library/doctest.rst:1368
+#: library/doctest.rst:1390
 msgid ""
 "The optional argument *name* specifies the object's name; this name will be "
 "used to construct names for the returned :class:`DocTest`\\ s.  If *name* is "
 "not specified, then ``obj.__name__`` is used."
 msgstr ""
 
-#: library/doctest.rst:1372
+#: library/doctest.rst:1394
 msgid ""
 "The optional parameter *module* is the module that contains the given "
 "object. If the module is not specified or is ``None``, then the test finder "
@@ -1876,26 +1893,26 @@ msgid ""
 "module is used:"
 msgstr ""
 
-#: library/doctest.rst:1376
+#: library/doctest.rst:1398
 msgid "As a default namespace, if *globs* is not specified."
 msgstr ""
 
-#: library/doctest.rst:1378
+#: library/doctest.rst:1400
 msgid ""
 "To prevent the DocTestFinder from extracting DocTests from objects that are "
 "imported from other modules.  (Contained objects with modules other than "
 "*module* are ignored.)"
 msgstr ""
 
-#: library/doctest.rst:1382
+#: library/doctest.rst:1404
 msgid "To find the name of the file containing the object."
 msgstr ""
 
-#: library/doctest.rst:1384
+#: library/doctest.rst:1406
 msgid "To help find the line number of the object within its file."
 msgstr ""
 
-#: library/doctest.rst:1386
+#: library/doctest.rst:1408
 msgid ""
 "If *module* is ``False``, no attempt to find the module will be made.  This "
 "is obscure, of use mostly in testing doctest itself: if *module* is "
@@ -1904,7 +1921,7 @@ msgid ""
 "contained objects will (recursively) be searched for doctests."
 msgstr ""
 
-#: library/doctest.rst:1392
+#: library/doctest.rst:1414
 msgid ""
 "The globals for each :class:`DocTest` is formed by combining *globs* and "
 "*extraglobs* (bindings in *extraglobs* override bindings in *globs*).  A new "
@@ -1914,34 +1931,34 @@ msgid ""
 "defaults to ``{}``."
 msgstr ""
 
-#: library/doctest.rst:1403
+#: library/doctest.rst:1425
 msgid "DocTestParser objects"
 msgstr ""
 
-#: library/doctest.rst:1408
+#: library/doctest.rst:1430
 msgid ""
 "A processing class used to extract interactive examples from a string, and "
 "use them to create a :class:`DocTest` object."
 msgstr ""
 
-#: library/doctest.rst:1412
+#: library/doctest.rst:1434
 msgid ":class:`DocTestParser` defines the following methods:"
 msgstr ""
 
-#: library/doctest.rst:1417
+#: library/doctest.rst:1439
 msgid ""
 "Extract all doctest examples from the given string, and collect them into a :"
 "class:`DocTest` object."
 msgstr ""
 
-#: library/doctest.rst:1420
+#: library/doctest.rst:1442
 msgid ""
 "*globs*, *name*, *filename*, and *lineno* are attributes for the new :class:"
 "`DocTest` object.  See the documentation for :class:`DocTest` for more "
 "information."
 msgstr ""
 
-#: library/doctest.rst:1427
+#: library/doctest.rst:1449
 msgid ""
 "Extract all doctest examples from the given string, and return them as a "
 "list of :class:`Example` objects.  Line numbers are 0-based.  The optional "
@@ -1949,7 +1966,7 @@ msgid ""
 "error messages."
 msgstr ""
 
-#: library/doctest.rst:1434
+#: library/doctest.rst:1456
 msgid ""
 "Divide the given string into examples and intervening text, and return them "
 "as a list of alternating :class:`Example`\\ s and strings. Line numbers for "
@@ -1957,17 +1974,17 @@ msgid ""
 "name identifying this string, and is only used for error messages."
 msgstr ""
 
-#: library/doctest.rst:1443
+#: library/doctest.rst:1465
 msgid "DocTestRunner objects"
 msgstr ""
 
-#: library/doctest.rst:1448
+#: library/doctest.rst:1470
 msgid ""
 "A processing class used to execute and verify the interactive examples in a :"
 "class:`DocTest`."
 msgstr ""
 
-#: library/doctest.rst:1451
+#: library/doctest.rst:1473
 msgid ""
 "The comparison between expected outputs and actual outputs is done by an :"
 "class:`OutputChecker`.  This comparison may be customized with a number of "
@@ -1977,7 +1994,7 @@ msgid ""
 "constructor."
 msgstr ""
 
-#: library/doctest.rst:1457
+#: library/doctest.rst:1479
 msgid ""
 "The test runner's display output can be controlled in two ways. First, an "
 "output function can be passed to :meth:`run`; this function will be called "
@@ -1988,14 +2005,14 @@ msgid ""
 "`report_unexpected_exception`, and :meth:`report_failure`."
 msgstr ""
 
-#: library/doctest.rst:1465
+#: library/doctest.rst:1487
 msgid ""
 "The optional keyword argument *checker* specifies the :class:`OutputChecker` "
 "object (or drop-in replacement) that should be used to compare the expected "
 "outputs to the actual outputs of doctest examples."
 msgstr ""
 
-#: library/doctest.rst:1469
+#: library/doctest.rst:1491
 msgid ""
 "The optional keyword argument *verbose* controls the :class:"
 "`DocTestRunner`'s verbosity.  If *verbose* is ``True``, then information is "
@@ -2004,60 +2021,60 @@ msgid ""
 "verbose output is used iff the command-line switch ``-v`` is used."
 msgstr ""
 
-#: library/doctest.rst:1475
+#: library/doctest.rst:1497
 msgid ""
 "The optional keyword argument *optionflags* can be used to control how the "
 "test runner compares expected output to actual output, and how it displays "
 "failures. For more information, see section :ref:`doctest-options`."
 msgstr ""
 
-#: library/doctest.rst:1480
+#: library/doctest.rst:1502
 msgid ":class:`DocTestRunner` defines the following methods:"
 msgstr ""
 
-#: library/doctest.rst:1485
+#: library/doctest.rst:1507
 msgid ""
 "Report that the test runner is about to process the given example. This "
 "method is provided to allow subclasses of :class:`DocTestRunner` to "
 "customize their output; it should not be called directly."
 msgstr ""
 
-#: library/doctest.rst:1489
+#: library/doctest.rst:1511
 msgid ""
 "*example* is the example about to be processed.  *test* is the test "
 "*containing example*.  *out* is the output function that was passed to :meth:"
 "`DocTestRunner.run`."
 msgstr ""
 
-#: library/doctest.rst:1496
+#: library/doctest.rst:1518
 msgid ""
 "Report that the given example ran successfully.  This method is provided to "
 "allow subclasses of :class:`DocTestRunner` to customize their output; it "
 "should not be called directly."
 msgstr ""
 
-#: library/doctest.rst:1511
+#: library/doctest.rst:1533
 msgid ""
 "*example* is the example about to be processed.  *got* is the actual output "
 "from the example.  *test* is the test containing *example*.  *out* is the "
 "output function that was passed to :meth:`DocTestRunner.run`."
 msgstr ""
 
-#: library/doctest.rst:1507
+#: library/doctest.rst:1529
 msgid ""
 "Report that the given example failed.  This method is provided to allow "
 "subclasses of :class:`DocTestRunner` to customize their output; it should "
 "not be called directly."
 msgstr ""
 
-#: library/doctest.rst:1518
+#: library/doctest.rst:1540
 msgid ""
 "Report that the given example raised an unexpected exception. This method is "
 "provided to allow subclasses of :class:`DocTestRunner` to customize their "
 "output; it should not be called directly."
 msgstr ""
 
-#: library/doctest.rst:1522
+#: library/doctest.rst:1544
 msgid ""
 "*example* is the example about to be processed. *exc_info* is a tuple "
 "containing information about the unexpected exception (as returned by :func:"
@@ -2065,13 +2082,13 @@ msgid ""
 "output function that was passed to :meth:`DocTestRunner.run`."
 msgstr ""
 
-#: library/doctest.rst:1530
+#: library/doctest.rst:1552
 msgid ""
 "Run the examples in *test* (a :class:`DocTest` object), and display the "
 "results using the writer function *out*."
 msgstr ""
 
-#: library/doctest.rst:1533
+#: library/doctest.rst:1555
 msgid ""
 "The examples are run in the namespace ``test.globs``.  If *clear_globs* is "
 "true (the default), then this namespace will be cleared after the test runs, "
@@ -2079,39 +2096,39 @@ msgid ""
 "after the test completes, then use *clear_globs=False*."
 msgstr ""
 
-#: library/doctest.rst:1538
+#: library/doctest.rst:1560
 msgid ""
 "*compileflags* gives the set of flags that should be used by the Python "
 "compiler when running the examples.  If not specified, then it will default "
 "to the set of future-import flags that apply to *globs*."
 msgstr ""
 
-#: library/doctest.rst:1542
+#: library/doctest.rst:1564
 msgid ""
 "The output of each example is checked using the :class:`DocTestRunner`'s "
 "output checker, and the results are formatted by the :meth:`!DocTestRunner."
 "report_\\*` methods."
 msgstr ""
 
-#: library/doctest.rst:1549
+#: library/doctest.rst:1571
 msgid ""
 "Print a summary of all the test cases that have been run by this "
 "DocTestRunner, and return a :term:`named tuple` ``TestResults(failed, "
 "attempted)``."
 msgstr ""
 
-#: library/doctest.rst:1552
+#: library/doctest.rst:1574
 msgid ""
 "The optional *verbose* argument controls how detailed the summary is.  If "
 "the verbosity is not specified, then the :class:`DocTestRunner`'s verbosity "
 "is used."
 msgstr ""
 
-#: library/doctest.rst:1559
+#: library/doctest.rst:1581
 msgid "OutputChecker objects"
 msgstr ""
 
-#: library/doctest.rst:1564
+#: library/doctest.rst:1586
 msgid ""
 "A class used to check the whether the actual output from a doctest example "
 "matches the expected output.  :class:`OutputChecker` defines two methods: :"
@@ -2120,11 +2137,11 @@ msgid ""
 "string describing the differences between two outputs."
 msgstr ""
 
-#: library/doctest.rst:1571
+#: library/doctest.rst:1593
 msgid ":class:`OutputChecker` defines the following methods:"
 msgstr ""
 
-#: library/doctest.rst:1575
+#: library/doctest.rst:1597
 msgid ""
 "Return ``True`` iff the actual output from an example (*got*) matches the "
 "expected output (*want*).  These strings are always considered to match if "
@@ -2133,28 +2150,28 @@ msgid ""
 "`doctest-options` for more information about option flags."
 msgstr ""
 
-#: library/doctest.rst:1584
+#: library/doctest.rst:1606
 msgid ""
 "Return a string describing the differences between the expected output for a "
 "given example (*example*) and the actual output (*got*).  *optionflags* is "
 "the set of option flags used to compare *want* and *got*."
 msgstr ""
 
-#: library/doctest.rst:1592
+#: library/doctest.rst:1614
 msgid "Debugging"
 msgstr ""
 
-#: library/doctest.rst:1594
+#: library/doctest.rst:1616
 msgid "Doctest provides several mechanisms for debugging doctest examples:"
 msgstr ""
 
-#: library/doctest.rst:1596
+#: library/doctest.rst:1618
 msgid ""
 "Several functions convert doctests to executable Python programs, which can "
 "be run under the Python debugger, :mod:`pdb`."
 msgstr ""
 
-#: library/doctest.rst:1599
+#: library/doctest.rst:1621
 msgid ""
 "The :class:`DebugRunner` class is a subclass of :class:`DocTestRunner` that "
 "raises an exception for the first failing example, containing information "
@@ -2162,13 +2179,13 @@ msgid ""
 "debugging on the example."
 msgstr ""
 
-#: library/doctest.rst:1604
+#: library/doctest.rst:1626
 msgid ""
 "The :mod:`unittest` cases generated by :func:`DocTestSuite` support the :"
 "meth:`debug` method defined by :class:`unittest.TestCase`."
 msgstr ""
 
-#: library/doctest.rst:1607
+#: library/doctest.rst:1629
 msgid ""
 "You can add a call to :func:`pdb.set_trace` in a doctest example, and you'll "
 "drop into the Python debugger when that line is executed.  Then you can "
@@ -2176,7 +2193,7 @@ msgid ""
 "`a.py` contains just this module docstring::"
 msgstr ""
 
-#: library/doctest.rst:1612
+#: library/doctest.rst:1634
 msgid ""
 "\"\"\"\n"
 ">>> def f(x):\n"
@@ -2189,11 +2206,11 @@ msgid ""
 "\"\"\""
 msgstr ""
 
-#: library/doctest.rst:1622
+#: library/doctest.rst:1644
 msgid "Then an interactive Python session may look like this::"
 msgstr ""
 
-#: library/doctest.rst:1624
+#: library/doctest.rst:1646
 msgid ""
 ">>> import a, doctest\n"
 ">>> doctest.testmod(a)\n"
@@ -2226,17 +2243,17 @@ msgid ""
 ">>>"
 msgstr ""
 
-#: library/doctest.rst:1655
+#: library/doctest.rst:1677
 msgid ""
 "Functions that convert doctests to Python code, and possibly run the "
 "synthesized code under the debugger:"
 msgstr ""
 
-#: library/doctest.rst:1661
+#: library/doctest.rst:1683
 msgid "Convert text with examples to a script."
 msgstr ""
 
-#: library/doctest.rst:1663
+#: library/doctest.rst:1685
 msgid ""
 "Argument *s* is a string containing doctest examples.  The string is "
 "converted to a Python script, where doctest examples in *s* are converted to "
@@ -2244,7 +2261,7 @@ msgid ""
 "generated script is returned as a string. For example, ::"
 msgstr ""
 
-#: library/doctest.rst:1668
+#: library/doctest.rst:1690
 msgid ""
 "import doctest\n"
 "print(doctest.script_from_examples(r\"\"\"\n"
@@ -2257,11 +2274,11 @@ msgid ""
 "\"\"\"))"
 msgstr ""
 
-#: library/doctest.rst:1678
+#: library/doctest.rst:1700
 msgid "displays::"
 msgstr ""
 
-#: library/doctest.rst:1680
+#: library/doctest.rst:1702
 msgid ""
 "# Set x and y to 1 and 2.\n"
 "x, y = 1, 2\n"
@@ -2272,18 +2289,18 @@ msgid ""
 "## 3"
 msgstr ""
 
-#: library/doctest.rst:1688
+#: library/doctest.rst:1710
 msgid ""
 "This function is used internally by other functions (see below), but can "
 "also be useful when you want to transform an interactive Python session into "
 "a Python script."
 msgstr ""
 
-#: library/doctest.rst:1695
+#: library/doctest.rst:1717
 msgid "Convert the doctest for an object to a script."
 msgstr ""
 
-#: library/doctest.rst:1697
+#: library/doctest.rst:1719
 msgid ""
 "Argument *module* is a module object, or dotted name of a module, containing "
 "the object whose doctests are of interest.  Argument *name* is the name "
@@ -2293,23 +2310,23 @@ msgid ""
 "module :file:`a.py` contains a top-level function :func:`!f`, then ::"
 msgstr ""
 
-#: library/doctest.rst:1704
+#: library/doctest.rst:1726
 msgid ""
 "import a, doctest\n"
 "print(doctest.testsource(a, \"a.f\"))"
 msgstr ""
 
-#: library/doctest.rst:1707
+#: library/doctest.rst:1729
 msgid ""
 "prints a script version of function :func:`!f`'s docstring, with doctests "
 "converted to code, and the rest placed in comments."
 msgstr ""
 
-#: library/doctest.rst:1713
+#: library/doctest.rst:1735
 msgid "Debug the doctests for an object."
 msgstr ""
 
-#: library/doctest.rst:1715
+#: library/doctest.rst:1737
 msgid ""
 "The *module* and *name* arguments are the same as for function :func:"
 "`testsource` above.  The synthesized Python script for the named object's "
@@ -2317,13 +2334,13 @@ msgid ""
 "the control of the Python debugger, :mod:`pdb`."
 msgstr ""
 
-#: library/doctest.rst:1720
+#: library/doctest.rst:1742
 msgid ""
 "A shallow copy of ``module.__dict__`` is used for both local and global "
 "execution context."
 msgstr ""
 
-#: library/doctest.rst:1723
+#: library/doctest.rst:1745
 msgid ""
 "Optional argument *pm* controls whether post-mortem debugging is used.  If "
 "*pm* has a true value, the script file is run directly, and the debugger "
@@ -2335,30 +2352,30 @@ msgid ""
 "to :func:`pdb.run`."
 msgstr ""
 
-#: library/doctest.rst:1734
+#: library/doctest.rst:1756
 msgid "Debug the doctests in a string."
 msgstr ""
 
-#: library/doctest.rst:1736
+#: library/doctest.rst:1758
 msgid ""
 "This is like function :func:`debug` above, except that a string containing "
 "doctest examples is specified directly, via the *src* argument."
 msgstr ""
 
-#: library/doctest.rst:1739
+#: library/doctest.rst:1761
 msgid ""
 "Optional argument *pm* has the same meaning as in function :func:`debug` "
 "above."
 msgstr ""
 
-#: library/doctest.rst:1741
+#: library/doctest.rst:1763
 msgid ""
 "Optional argument *globs* gives a dictionary to use as both local and global "
 "execution context.  If not specified, or ``None``, an empty dictionary is "
 "used. If specified, a shallow copy of the dictionary is used."
 msgstr ""
 
-#: library/doctest.rst:1746
+#: library/doctest.rst:1768
 msgid ""
 "The :class:`DebugRunner` class, and the special exceptions it may raise, are "
 "of most interest to testing framework authors, and will only be sketched "
@@ -2366,7 +2383,7 @@ msgid ""
 "(which is a doctest!) for more details:"
 msgstr ""
 
-#: library/doctest.rst:1754
+#: library/doctest.rst:1776
 msgid ""
 "A subclass of :class:`DocTestRunner` that raises an exception as soon as a "
 "failure is encountered.  If an unexpected exception occurs, an :exc:"
@@ -2376,89 +2393,89 @@ msgid ""
 "the actual output."
 msgstr ""
 
-#: library/doctest.rst:1761
+#: library/doctest.rst:1783
 msgid ""
 "For information about the constructor parameters and methods, see the "
 "documentation for :class:`DocTestRunner` in section :ref:`doctest-advanced-"
 "api`."
 msgstr ""
 
-#: library/doctest.rst:1764
+#: library/doctest.rst:1786
 msgid ""
 "There are two exceptions that may be raised by :class:`DebugRunner` "
 "instances:"
 msgstr ""
 
-#: library/doctest.rst:1769
+#: library/doctest.rst:1791
 msgid ""
 "An exception raised by :class:`DocTestRunner` to signal that a doctest "
 "example's actual output did not match its expected output. The constructor "
 "arguments are used to initialize the attributes of the same names."
 msgstr ""
 
-#: library/doctest.rst:1773
+#: library/doctest.rst:1795
 msgid ":exc:`DocTestFailure` defines the following attributes:"
 msgstr ""
 
-#: library/doctest.rst:1802
+#: library/doctest.rst:1824
 msgid "The :class:`DocTest` object that was being run when the example failed."
 msgstr ""
 
-#: library/doctest.rst:1807
+#: library/doctest.rst:1829
 msgid "The :class:`Example` that failed."
 msgstr ""
 
-#: library/doctest.rst:1788
+#: library/doctest.rst:1810
 msgid "The example's actual output."
 msgstr ""
 
-#: library/doctest.rst:1793
+#: library/doctest.rst:1815
 msgid ""
 "An exception raised by :class:`DocTestRunner` to signal that a doctest "
 "example raised an unexpected exception.  The constructor arguments are used "
 "to initialize the attributes of the same names."
 msgstr ""
 
-#: library/doctest.rst:1797
+#: library/doctest.rst:1819
 msgid ":exc:`UnexpectedException` defines the following attributes:"
 msgstr ""
 
-#: library/doctest.rst:1812
+#: library/doctest.rst:1834
 msgid ""
 "A tuple containing information about the unexpected exception, as returned "
 "by :func:`sys.exc_info`."
 msgstr ""
 
-#: library/doctest.rst:1819
+#: library/doctest.rst:1841
 msgid "Soapbox"
 msgstr ""
 
-#: library/doctest.rst:1821
+#: library/doctest.rst:1843
 msgid ""
 "As mentioned in the introduction, :mod:`doctest` has grown to have three "
 "primary uses:"
 msgstr ""
 
-#: library/doctest.rst:1824
+#: library/doctest.rst:1846
 msgid "Checking examples in docstrings."
 msgstr ""
 
-#: library/doctest.rst:1826
+#: library/doctest.rst:1848
 msgid "Regression testing."
 msgstr ""
 
-#: library/doctest.rst:1828
+#: library/doctest.rst:1850
 msgid "Executable documentation / literate testing."
 msgstr ""
 
-#: library/doctest.rst:1830
+#: library/doctest.rst:1852
 msgid ""
 "These uses have different requirements, and it is important to distinguish "
 "them. In particular, filling your docstrings with obscure test cases makes "
 "for bad documentation."
 msgstr ""
 
-#: library/doctest.rst:1834
+#: library/doctest.rst:1856
 msgid ""
 "When writing a docstring, choose docstring examples with care. There's an "
 "art to this that needs to be learned---it may not be natural at first.  "
@@ -2470,7 +2487,7 @@ msgid ""
 "\"harmless\" change."
 msgstr ""
 
-#: library/doctest.rst:1842
+#: library/doctest.rst:1864
 msgid ""
 "Doctest also makes an excellent tool for regression testing, especially if "
 "you don't skimp on explanatory text.  By interleaving prose and examples, it "
@@ -2491,13 +2508,13 @@ msgid ""
 "different results, blurring the distinction between testing and explaining."
 msgstr ""
 
-#: library/doctest.rst:1860
+#: library/doctest.rst:1882
 msgid ""
 "Regression testing is best confined to dedicated objects or files.  There "
 "are several options for organizing tests:"
 msgstr ""
 
-#: library/doctest.rst:1863
+#: library/doctest.rst:1885
 msgid ""
 "Write text files containing test cases as interactive examples, and test the "
 "files using :func:`testfile` or :func:`DocFileSuite`.  This is recommended, "
@@ -2505,7 +2522,7 @@ msgid ""
 "doctest."
 msgstr ""
 
-#: library/doctest.rst:1868
+#: library/doctest.rst:1890
 msgid ""
 "Define functions named ``_regrtest_topic`` that consist of single "
 "docstrings, containing test cases for the named topics.  These functions can "
@@ -2513,13 +2530,13 @@ msgid ""
 "test file."
 msgstr ""
 
-#: library/doctest.rst:1872
+#: library/doctest.rst:1894
 msgid ""
 "Define a ``__test__`` dictionary mapping from regression test topics to "
 "docstrings containing test cases."
 msgstr ""
 
-#: library/doctest.rst:1875
+#: library/doctest.rst:1897
 msgid ""
 "When you have placed your tests in a module, the module can itself be the "
 "test runner.  When a test fails, you can arrange for your test runner to re-"
@@ -2527,7 +2544,7 @@ msgid ""
 "example of such a test runner::"
 msgstr ""
 
-#: library/doctest.rst:1880
+#: library/doctest.rst:1902
 msgid ""
 "if __name__ == '__main__':\n"
 "    import doctest\n"
@@ -2545,53 +2562,53 @@ msgid ""
 "        print(\"{} failures out of {} tests\".format(fail, total))"
 msgstr ""
 
-#: library/doctest.rst:1897
+#: library/doctest.rst:1919
 msgid "Footnotes"
 msgstr ""
 
-#: library/doctest.rst:1898
+#: library/doctest.rst:1920
 msgid ""
 "Examples containing both expected output and an exception are not supported. "
 "Trying to guess where one ends and the other begins is too error-prone, and "
 "that also makes for a confusing test."
 msgstr ""
 
-#: library/doctest.rst:339
+#: library/doctest.rst:369
 msgid ">>>"
 msgstr ""
 
-#: library/doctest.rst:339
+#: library/doctest.rst:369
 msgid "interpreter prompt"
 msgstr ""
 
-#: library/doctest.rst:577
+#: library/doctest.rst:604
 msgid "..."
 msgstr ""
 
-#: library/doctest.rst:505
+#: library/doctest.rst:535
 msgid "^ (caret)"
 msgstr ""
 
-#: library/doctest.rst:505
+#: library/doctest.rst:535
 msgid "marker"
 msgstr ""
 
-#: library/doctest.rst:557
+#: library/doctest.rst:584
 msgid "<BLANKLINE>"
 msgstr ""
 
-#: library/doctest.rst:707
+#: library/doctest.rst:729
 msgid "in doctests"
 msgstr ""
 
-#: library/doctest.rst:707
+#: library/doctest.rst:729
 msgid "# (hash)"
 msgstr ""
 
-#: library/doctest.rst:707
+#: library/doctest.rst:729
 msgid "+ (plus)"
 msgstr ""
 
-#: library/doctest.rst:707
+#: library/doctest.rst:729
 msgid "- (minus)"
 msgstr ""
diff --git a/library/email.contentmanager.po b/library/email.contentmanager.po
index 79f1403dc..6ba484601 100644
--- a/library/email.contentmanager.po
+++ b/library/email.contentmanager.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -216,10 +216,19 @@ msgstr ""
 #: library/email.contentmanager.rst:159
 msgid ""
 "For ``str`` objects, if *cte* is not set use heuristics to determine the "
-"most compact encoding."
+"most compact encoding.  Prior to encoding, :meth:`str.splitlines` is used to "
+"normalize all line boundaries, ensuring that each line of the payload is "
+"terminated by the current policy's :data:`~email.policy.Policy.linesep` "
+"property (even if the original string did not end with one)."
 msgstr ""
 
-#: library/email.contentmanager.rst:161
+#: library/email.contentmanager.rst:165
+msgid ""
+"For ``bytes`` objects, *cte* is taken to be base64 if not set, and the "
+"aforementioned newline translation is not performed."
+msgstr ""
+
+#: library/email.contentmanager.rst:167
 msgid ""
 "For :class:`~email.message.EmailMessage`, per :rfc:`2046`, raise an error if "
 "a *cte* of ``quoted-printable`` or ``base64`` is requested for *subtype* "
@@ -228,14 +237,14 @@ msgid ""
 "For all other values of *subtype*, use ``7bit``."
 msgstr ""
 
-#: library/email.contentmanager.rst:168
+#: library/email.contentmanager.rst:174
 msgid ""
 "A *cte* of ``binary`` does not actually work correctly yet. The "
 "``EmailMessage`` object as modified by ``set_content`` is correct, but :"
 "class:`~email.generator.BytesGenerator` does not serialize it correctly."
 msgstr ""
 
-#: library/email.contentmanager.rst:173
+#: library/email.contentmanager.rst:179
 msgid ""
 "If *disposition* is set, use it as the value of the :mailheader:`Content-"
 "Disposition` header.  If not specified, and *filename* is specified, add the "
@@ -244,37 +253,37 @@ msgid ""
 "values for *disposition* are ``attachment`` and ``inline``."
 msgstr ""
 
-#: library/email.contentmanager.rst:180
+#: library/email.contentmanager.rst:186
 msgid ""
 "If *filename* is specified, use it as the value of the ``filename`` "
 "parameter of the :mailheader:`Content-Disposition` header."
 msgstr ""
 
-#: library/email.contentmanager.rst:183
+#: library/email.contentmanager.rst:189
 msgid ""
 "If *cid* is specified, add a :mailheader:`Content-ID` header with *cid* as "
 "its value."
 msgstr ""
 
-#: library/email.contentmanager.rst:186
+#: library/email.contentmanager.rst:192
 msgid ""
 "If *params* is specified, iterate its ``items`` method and use the resulting "
 "``(key, value)`` pairs to set additional parameters on the :mailheader:"
 "`Content-Type` header."
 msgstr ""
 
-#: library/email.contentmanager.rst:190
+#: library/email.contentmanager.rst:196
 msgid ""
 "If *headers* is specified and is a list of strings of the form ``headername: "
 "headervalue`` or a list of ``header`` objects (distinguished from strings by "
 "having a ``name`` attribute), add the headers to *msg*."
 msgstr ""
 
-#: library/email.contentmanager.rst:197
+#: library/email.contentmanager.rst:203
 msgid "Footnotes"
 msgstr ""
 
-#: library/email.contentmanager.rst:198
+#: library/email.contentmanager.rst:204
 msgid ""
 "Originally added in 3.4 as a :term:`provisional module <provisional package>`"
 msgstr ""
diff --git a/library/email.errors.po b/library/email.errors.po
index b7d88e421..b47d75eb4 100644
--- a/library/email.errors.po
+++ b/library/email.errors.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -62,40 +62,31 @@ msgstr ""
 
 #: library/email.errors.rst:48
 msgid ""
-"Raised when a payload is added to a :class:`~email.message.Message` object "
-"using :meth:`add_payload`, but the payload is already a scalar and the "
-"message's :mailheader:`Content-Type` main type is not either :mimetype:"
-"`multipart` or missing.  :exc:`MultipartConversionError` multiply inherits "
-"from :exc:`MessageError` and the built-in :exc:`TypeError`."
+"Raised if the :meth:`~email.message.Message.attach` method is called on an "
+"instance of a class derived from :class:`~email.mime.nonmultipart."
+"MIMENonMultipart` (e.g. :class:`~email.mime.image.MIMEImage`). :exc:"
+"`MultipartConversionError` multiply inherits from :exc:`MessageError` and "
+"the built-in :exc:`TypeError`."
 msgstr ""
 
-#: library/email.errors.rst:54
-msgid ""
-"Since :meth:`Message.add_payload` is deprecated, this exception is rarely "
-"raised in practice.  However the exception may also be raised if the :meth:"
-"`~email.message.Message.attach` method is called on an instance of a class "
-"derived from :class:`~email.mime.nonmultipart.MIMENonMultipart` (e.g. :class:"
-"`~email.mime.image.MIMEImage`)."
-msgstr ""
-
-#: library/email.errors.rst:64
+#: library/email.errors.rst:58
 msgid ""
 "Raised when an error occurs when the :mod:`~email.generator` outputs headers."
 msgstr ""
 
-#: library/email.errors.rst:70
+#: library/email.errors.rst:64
 msgid ""
 "This is the base class for all defects found when parsing email messages. It "
 "is derived from :exc:`ValueError`."
 msgstr ""
 
-#: library/email.errors.rst:75
+#: library/email.errors.rst:69
 msgid ""
 "This is the base class for all defects found when parsing email headers. It "
 "is derived from :exc:`MessageDefect`."
 msgstr ""
 
-#: library/email.errors.rst:78
+#: library/email.errors.rst:72
 msgid ""
 "Here is the list of the defects that the :class:`~email.parser.FeedParser` "
 "can find while parsing messages.  Note that the defects are added to the "
@@ -105,90 +96,84 @@ msgid ""
 "not."
 msgstr ""
 
-#: library/email.errors.rst:84
+#: library/email.errors.rst:78
 msgid ""
 "All defect classes are subclassed from :class:`email.errors.MessageDefect`."
 msgstr ""
 
-#: library/email.errors.rst:86
+#: library/email.errors.rst:82
 msgid ""
-":class:`NoBoundaryInMultipartDefect` -- A message claimed to be a multipart, "
-"but had no :mimetype:`boundary` parameter."
+"A message claimed to be a multipart, but had no :mimetype:`boundary` "
+"parameter."
 msgstr ""
 
-#: library/email.errors.rst:89
+#: library/email.errors.rst:87
 msgid ""
-":class:`StartBoundaryNotFoundDefect` -- The start boundary claimed in the :"
-"mailheader:`Content-Type` header was never found."
+"The start boundary claimed in the :mailheader:`Content-Type` header was "
+"never found."
 msgstr ""
 
 #: library/email.errors.rst:92
 msgid ""
-":class:`CloseBoundaryNotFoundDefect` -- A start boundary was found, but no "
-"corresponding close boundary was ever found."
+"A start boundary was found, but no corresponding close boundary was ever "
+"found."
 msgstr ""
 
-#: library/email.errors.rst:97
-msgid ""
-":class:`FirstHeaderLineIsContinuationDefect` -- The message had a "
-"continuation line as its first header line."
+#: library/email.errors.rst:99
+msgid "The message had a continuation line as its first header line."
 msgstr ""
 
-#: library/email.errors.rst:100
-msgid ""
-":class:`MisplacedEnvelopeHeaderDefect` - A \"Unix From\" header was found in "
-"the middle of a header block."
+#: library/email.errors.rst:103
+msgid "A \"Unix From\" header was found in the middle of a header block."
 msgstr ""
 
-#: library/email.errors.rst:103
+#: library/email.errors.rst:107
 msgid ""
-":class:`MissingHeaderBodySeparatorDefect` - A line was found while parsing "
-"headers that had no leading white space but contained no ':'.  Parsing "
-"continues assuming that the line represents the first line of the body."
+"A line was found while parsing headers that had no leading white space but "
+"contained no ':'.  Parsing continues assuming that the line represents the "
+"first line of the body."
 msgstr ""
 
-#: library/email.errors.rst:109
+#: library/email.errors.rst:115
 msgid ""
-":class:`MalformedHeaderDefect` -- A header was found that was missing a "
-"colon, or was otherwise malformed."
+"A header was found that was missing a colon, or was otherwise malformed."
 msgstr ""
 
-#: library/email.errors.rst:112
+#: library/email.errors.rst:117
 msgid "This defect has not been used for several Python versions."
 msgstr ""
 
-#: library/email.errors.rst:115
+#: library/email.errors.rst:122
 msgid ""
-":class:`MultipartInvariantViolationDefect` -- A message claimed to be a :"
-"mimetype:`multipart`, but no subparts were found.  Note that when a message "
-"has this defect, its :meth:`~email.message.Message.is_multipart` method may "
-"return ``False`` even though its content type claims to be :mimetype:"
-"`multipart`."
+"A message claimed to be a :mimetype:`multipart`, but no subparts were found. "
+"Note that when a message has this defect, its :meth:`~email.message.Message."
+"is_multipart` method may return ``False`` even though its content type "
+"claims to be :mimetype:`multipart`."
 msgstr ""
 
-#: library/email.errors.rst:120
+#: library/email.errors.rst:129
 msgid ""
-":class:`InvalidBase64PaddingDefect` -- When decoding a block of base64 "
-"encoded bytes, the padding was not correct.  Enough padding is added to "
-"perform the decode, but the resulting decoded bytes may be invalid."
+"When decoding a block of base64 encoded bytes, the padding was not correct. "
+"Enough padding is added to perform the decode, but the resulting decoded "
+"bytes may be invalid."
 msgstr ""
 
-#: library/email.errors.rst:124
+#: library/email.errors.rst:135
 msgid ""
-":class:`InvalidBase64CharactersDefect` -- When decoding a block of base64 "
-"encoded bytes, characters outside the base64 alphabet were encountered. The "
-"characters are ignored, but the resulting decoded bytes may be invalid."
+"When decoding a block of base64 encoded bytes, characters outside the base64 "
+"alphabet were encountered.  The characters are ignored, but the resulting "
+"decoded bytes may be invalid."
 msgstr ""
 
-#: library/email.errors.rst:128
+#: library/email.errors.rst:141
 msgid ""
-":class:`InvalidBase64LengthDefect` -- When decoding a block of base64 "
-"encoded bytes, the number of non-padding base64 characters was invalid (1 "
-"more than a multiple of 4).  The encoded block was kept as-is."
+"When decoding a block of base64 encoded bytes, the number of non-padding "
+"base64 characters was invalid (1 more than a multiple of 4).  The encoded "
+"block was kept as-is."
 msgstr ""
 
-#: library/email.errors.rst:132
+#: library/email.errors.rst:147
 msgid ""
-":class:`InvalidDateDefect` -- When decoding an invalid or unparsable date "
-"field. The original value is kept as-is."
+"When decoding an invalid or unparsable date field.  The original value is "
+"kept as-is."
 msgstr ""
diff --git a/library/email.examples.po b/library/email.examples.po
index dfdbe9301..85c6688e1 100644
--- a/library/email.examples.po
+++ b/library/email.examples.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -338,7 +338,7 @@ msgid ""
 "            recipie\n"
 "        </a> déjeuner.\n"
 "    </p>\n"
-"    <img src=\"cid:{asparagus_cid}\" />\n"
+"    <img src=\"cid:{asparagus_cid}\">\n"
 "  </body>\n"
 "</html>\n"
 "\"\"\".format(asparagus_cid=asparagus_cid[1:-1]), subtype='html')\n"
diff --git a/library/email.parser.po b/library/email.parser.po
index 213fc5565..50bc63483 100644
--- a/library/email.parser.po
+++ b/library/email.parser.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -326,7 +326,7 @@ msgstr ""
 #: library/email.parser.rst:286
 msgid ""
 ">>> import email\n"
-">>> msg = email.message_from_bytes(myBytes)  "
+">>> msg = email.message_from_bytes(myBytes)"
 msgstr ""
 
 #: library/email.parser.rst:291
diff --git a/library/email.policy.po b/library/email.policy.po
index fef8afc59..55e81a8a7 100644
--- a/library/email.policy.po
+++ b/library/email.policy.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -327,7 +327,7 @@ msgstr ""
 #: library/email.policy.rst:268
 msgid ""
 "Handle a *defect* found on *obj*.  When the email package calls this method, "
-"*defect* will always be a subclass of :class:`~email.errors.Defect`."
+"*defect* will always be a subclass of :class:`~email.errors.MessageDefect`."
 msgstr ""
 
 #: library/email.policy.rst:272
@@ -340,7 +340,7 @@ msgstr ""
 #: library/email.policy.rst:279
 msgid ""
 "Register a *defect* on *obj*.  In the email package, *defect* will always be "
-"a subclass of :class:`~email.errors.Defect`."
+"a subclass of :class:`~email.errors.MessageDefect`."
 msgstr ""
 
 #: library/email.policy.rst:282
diff --git a/library/ensurepip.po b/library/ensurepip.po
index 489dee190..db25d732d 100644
--- a/library/ensurepip.po
+++ b/library/ensurepip.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -79,20 +79,20 @@ msgstr ""
 msgid "Command line interface"
 msgstr ""
 
-#: library/ensurepip.rst:46
+#: library/ensurepip.rst:48
 msgid ""
 "The command line interface is invoked using the interpreter's ``-m`` switch."
 msgstr ""
 
-#: library/ensurepip.rst:48
+#: library/ensurepip.rst:50
 msgid "The simplest possible invocation is::"
 msgstr ""
 
-#: library/ensurepip.rst:50
+#: library/ensurepip.rst:52
 msgid "python -m ensurepip"
 msgstr ""
 
-#: library/ensurepip.rst:52
+#: library/ensurepip.rst:54
 msgid ""
 "This invocation will install ``pip`` if it is not already installed, but "
 "otherwise does nothing. To ensure the installed version of ``pip`` is at "
@@ -100,11 +100,11 @@ msgid ""
 "upgrade`` option::"
 msgstr ""
 
-#: library/ensurepip.rst:57
+#: library/ensurepip.rst:59
 msgid "python -m ensurepip --upgrade"
 msgstr ""
 
-#: library/ensurepip.rst:59
+#: library/ensurepip.rst:61
 msgid ""
 "By default, ``pip`` is installed into the current virtual environment (if "
 "one is active) or into the system site packages (if there is no active "
@@ -112,122 +112,122 @@ msgid ""
 "two additional command line options:"
 msgstr ""
 
-#: library/ensurepip.rst:64
+#: library/ensurepip.rst:68
 msgid ""
-":samp:`--root {dir}`: Installs ``pip`` relative to the given root directory "
-"rather than the root of the currently active virtual environment (if any) or "
-"the default root for the current Python installation."
+"Installs ``pip`` relative to the given root directory rather than the root "
+"of the currently active virtual environment (if any) or the default root for "
+"the current Python installation."
 msgstr ""
 
-#: library/ensurepip.rst:67
+#: library/ensurepip.rst:74
 msgid ""
-"``--user``: Installs ``pip`` into the user site packages directory rather "
-"than globally for the current Python installation (this option is not "
-"permitted inside an active virtual environment)."
+"Installs ``pip`` into the user site packages directory rather than globally "
+"for the current Python installation (this option is not permitted inside an "
+"active virtual environment)."
 msgstr ""
 
-#: library/ensurepip.rst:71
+#: library/ensurepip.rst:78
 msgid ""
 "By default, the scripts ``pipX`` and ``pipX.Y`` will be installed (where X.Y "
 "stands for the version of Python used to invoke ``ensurepip``). The scripts "
 "installed can be controlled through two additional command line options:"
 msgstr ""
 
-#: library/ensurepip.rst:76
+#: library/ensurepip.rst:85
 msgid ""
-"``--altinstall``: if an alternate installation is requested, the ``pipX`` "
-"script will *not* be installed."
+"If an alternate installation is requested, the ``pipX`` script will *not* be "
+"installed."
 msgstr ""
 
-#: library/ensurepip.rst:79
+#: library/ensurepip.rst:90
 msgid ""
-"``--default-pip``: if a \"default pip\" installation is requested, the "
-"``pip`` script will be installed in addition to the two regular scripts."
+"If a \"default pip\" installation is requested, the ``pip`` script will be "
+"installed in addition to the two regular scripts."
 msgstr ""
 
-#: library/ensurepip.rst:82
+#: library/ensurepip.rst:93
 msgid ""
 "Providing both of the script selection options will trigger an exception."
 msgstr ""
 
-#: library/ensurepip.rst:86
+#: library/ensurepip.rst:96
 msgid "Module API"
 msgstr ""
 
-#: library/ensurepip.rst:88
+#: library/ensurepip.rst:98
 msgid ":mod:`ensurepip` exposes two functions for programmatic use:"
 msgstr ""
 
-#: library/ensurepip.rst:92
+#: library/ensurepip.rst:102
 msgid ""
 "Returns a string specifying the available version of pip that will be "
 "installed when bootstrapping an environment."
 msgstr ""
 
-#: library/ensurepip.rst:99
+#: library/ensurepip.rst:109
 msgid "Bootstraps ``pip`` into the current or designated environment."
 msgstr ""
 
-#: library/ensurepip.rst:101
+#: library/ensurepip.rst:111
 msgid ""
 "*root* specifies an alternative root directory to install relative to. If "
 "*root* is ``None``, then installation uses the default install location for "
 "the current environment."
 msgstr ""
 
-#: library/ensurepip.rst:105
+#: library/ensurepip.rst:115
 msgid ""
 "*upgrade* indicates whether or not to upgrade an existing installation of an "
 "earlier version of ``pip`` to the available version."
 msgstr ""
 
-#: library/ensurepip.rst:108
+#: library/ensurepip.rst:118
 msgid ""
 "*user* indicates whether to use the user scheme rather than installing "
 "globally."
 msgstr ""
 
-#: library/ensurepip.rst:111
+#: library/ensurepip.rst:121
 msgid ""
 "By default, the scripts ``pipX`` and ``pipX.Y`` will be installed (where X.Y "
 "stands for the current version of Python)."
 msgstr ""
 
-#: library/ensurepip.rst:114
+#: library/ensurepip.rst:124
 msgid "If *altinstall* is set, then ``pipX`` will *not* be installed."
 msgstr ""
 
-#: library/ensurepip.rst:116
+#: library/ensurepip.rst:126
 msgid ""
 "If *default_pip* is set, then ``pip`` will be installed in addition to the "
 "two regular scripts."
 msgstr ""
 
-#: library/ensurepip.rst:119
+#: library/ensurepip.rst:129
 msgid ""
 "Setting both *altinstall* and *default_pip* will trigger :exc:`ValueError`."
 msgstr ""
 
-#: library/ensurepip.rst:122
+#: library/ensurepip.rst:132
 msgid ""
 "*verbosity* controls the level of output to :data:`sys.stdout` from the "
 "bootstrapping operation."
 msgstr ""
 
-#: library/ensurepip.rst:125
+#: library/ensurepip.rst:135
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``ensurepip.bootstrap`` with "
 "argument ``root``."
 msgstr ""
 
-#: library/ensurepip.rst:129
+#: library/ensurepip.rst:139
 msgid ""
 "The bootstrapping process has side effects on both ``sys.path`` and ``os."
 "environ``. Invoking the command line interface in a subprocess instead "
 "allows these side effects to be avoided."
 msgstr ""
 
-#: library/ensurepip.rst:135
+#: library/ensurepip.rst:145
 msgid ""
 "The bootstrapping process may install additional modules required by "
 "``pip``, but other software should not assume those dependencies will always "
diff --git a/library/enum.po b/library/enum.po
index be20d405a..ddfaa9c34 100644
--- a/library/enum.po
+++ b/library/enum.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -81,7 +81,7 @@ msgid ""
 "...     BLUE = 3\n"
 "\n"
 ">>> # functional syntax\n"
-">>> Color = Enum('Color', ['RED', 'GREEN', 'BLUE'])"
+">>> Color = Enum('Color', [('RED', 1), ('GREEN', 2), ('BLUE', 3)])"
 msgstr ""
 
 #: library/enum.rst:49
diff --git a/library/errno.po b/library/errno.po
index 9d157e2cb..9ac4de9ac 100644
--- a/library/errno.po
+++ b/library/errno.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -579,24 +579,128 @@ msgstr ""
 msgid "Interface output queue is full"
 msgstr ""
 
-#: library/errno.rst:670
+#: library/errno.rst:671
+msgid "No medium found"
+msgstr ""
+
+#: library/errno.rst:676
+msgid "Wrong medium type"
+msgstr ""
+
+#: library/errno.rst:681
+msgid "Required key not available"
+msgstr ""
+
+#: library/errno.rst:686
+msgid "Key has expired"
+msgstr ""
+
+#: library/errno.rst:691
+msgid "Key has been revoked"
+msgstr ""
+
+#: library/errno.rst:696
+msgid "Key was rejected by service"
+msgstr ""
+
+#: library/errno.rst:701
+msgid "Operation not possible due to RF-kill"
+msgstr ""
+
+#: library/errno.rst:706
+msgid "Locked lock was unmapped"
+msgstr ""
+
+#: library/errno.rst:711
+msgid "Facility is not active"
+msgstr ""
+
+#: library/errno.rst:716
+msgid "Authentication error"
+msgstr ""
+
+#: library/errno.rst:723
+msgid "Bad CPU type in executable"
+msgstr ""
+
+#: library/errno.rst:730
+msgid "Bad executable (or shared library)"
+msgstr ""
+
+#: library/errno.rst:737
+msgid "Malformed Mach-o file"
+msgstr ""
+
+#: library/errno.rst:744
+msgid "Device error"
+msgstr ""
+
+#: library/errno.rst:751
+msgid "Inappropriate file type or format"
+msgstr ""
+
+#: library/errno.rst:758
+msgid "Need authenticator"
+msgstr ""
+
+#: library/errno.rst:765
+msgid "Attribute not found"
+msgstr ""
+
+#: library/errno.rst:772
+msgid "Policy not found"
+msgstr ""
+
+#: library/errno.rst:779
+msgid "Too many processes"
+msgstr ""
+
+#: library/errno.rst:786
+msgid "Bad procedure for program"
+msgstr ""
+
+#: library/errno.rst:793
+msgid "Program version wrong"
+msgstr ""
+
+#: library/errno.rst:800
+msgid "RPC prog. not avail"
+msgstr ""
+
+#: library/errno.rst:807
+msgid "Device power is off"
+msgstr ""
+
+#: library/errno.rst:814
+msgid "RPC struct is bad"
+msgstr ""
+
+#: library/errno.rst:821
+msgid "RPC version wrong"
+msgstr ""
+
+#: library/errno.rst:828
+msgid "Shared library version mismatch"
+msgstr ""
+
+#: library/errno.rst:835
 msgid ""
 "Capabilities insufficient. This error is mapped to the exception :exc:"
 "`PermissionError`."
 msgstr ""
 
-#: library/errno.rst:673
+#: library/errno.rst:838
 msgid "Availability"
 msgstr ""
 
-#: library/errno.rst:680
+#: library/errno.rst:845
 msgid "Operation canceled"
 msgstr ""
 
-#: library/errno.rst:687
+#: library/errno.rst:852
 msgid "Owner died"
 msgstr ""
 
-#: library/errno.rst:694
+#: library/errno.rst:859
 msgid "State not recoverable"
 msgstr ""
diff --git a/library/exceptions.po b/library/exceptions.po
index d7f038ad3..a9f0f7939 100644
--- a/library/exceptions.po
+++ b/library/exceptions.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: 2024-02-17 13:11+0300\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -548,16 +548,16 @@ msgstr ""
 #: library/exceptions.rst:338
 #, fuzzy
 msgid ""
-"``NotImplementedError`` and :data:`NotImplemented` are not interchangeable, "
-"even though they have similar names and purposes.  See :data:`!"
-"NotImplemented` for details on when to use it."
+":exc:`!NotImplementedError` and :data:`!NotImplemented` are not "
+"interchangeable. This exception should only be used as described above; see :"
+"data:`NotImplemented` for details on correct usage of the built-in constant."
 msgstr ""
 "``NotImplementedError`` ve ``NotImplemented`` benzer isimlere ve amaçlara "
 "sahip olsalar da birbirlerinin yerine kullanılamazlar. Ne zaman "
 "kullanılacağına ilişkin ayrıntılar için :data:`NotImplemented` bölümüne "
 "bakın."
 
-#: library/exceptions.rst:347
+#: library/exceptions.rst:349
 msgid ""
 "This exception is raised when a system function returns a system-related "
 "error, including I/O failures such as \"file not found\" or \"disk "
@@ -568,7 +568,7 @@ msgstr ""
 "ortaya çıkar (illegal argüman bağımsız değişken türleri veya diğer tesadüfi "
 "hatalar için değil)."
 
-#: library/exceptions.rst:351
+#: library/exceptions.rst:353
 msgid ""
 "The second form of the constructor sets the corresponding attributes, "
 "described below.  The attributes default to :const:`None` if not specified.  "
@@ -582,7 +582,7 @@ msgstr ""
 "args` niteliği yalnızca ilk iki kurucu argümanının 2'li bir çiftini(tuple) "
 "içerir."
 
-#: library/exceptions.rst:357
+#: library/exceptions.rst:359
 msgid ""
 "The constructor often actually returns a subclass of :exc:`OSError`, as "
 "described in `OS exceptions`_ below.  The particular subclass depends on the "
@@ -596,11 +596,11 @@ msgstr ""
 "takma ad aracılığıyla oluşturulurken ortaya çıkar ve alt sınıf "
 "oluşturulurken miras alınmaz."
 
-#: library/exceptions.rst:365
+#: library/exceptions.rst:367
 msgid "A numeric error code from the C variable :c:data:`errno`."
 msgstr "C değişkeni :c:data:`errno` dan alınan sayısal bir hata kodu."
 
-#: library/exceptions.rst:369
+#: library/exceptions.rst:371
 msgid ""
 "Under Windows, this gives you the native Windows error code.  The :attr:`."
 "errno` attribute is then an approximate translation, in POSIX terms, of that "
@@ -610,7 +610,7 @@ msgstr ""
 "errno` niteliği bu yerel hata kodunun POSIX terimleriyle yaklaşık bir "
 "çevirisidir."
 
-#: library/exceptions.rst:373
+#: library/exceptions.rst:375
 msgid ""
 "Under Windows, if the *winerror* constructor argument is an integer, the :"
 "attr:`.errno` attribute is determined from the Windows error code, and the "
@@ -622,7 +622,7 @@ msgstr ""
 "değişkeni yok sayılır. Diğer platformlarda, *winerror* argümanı yok sayılır "
 "ve :attr:`winerror` niteliği mevcut değildir."
 
-#: library/exceptions.rst:381
+#: library/exceptions.rst:383
 msgid ""
 "The corresponding error message, as provided by the operating system.  It is "
 "formatted by the C functions :c:func:`perror` under POSIX, and :c:func:"
@@ -632,7 +632,7 @@ msgstr ""
 "func:`perror` ve Windows altında :c:func:`FormatMessage` C işlevleri "
 "tarafından biçimlendirilir."
 
-#: library/exceptions.rst:389
+#: library/exceptions.rst:391
 msgid ""
 "For exceptions that involve a file system path (such as :func:`open` or :"
 "func:`os.unlink`), :attr:`filename` is the file name passed to the function. "
@@ -645,7 +645,7 @@ msgstr ""
 "dosya sistemi yolu içeren fonksiyonlar için (:func:`os.rename` gibi), :attr:"
 "`filename2` fonksiyona aktarılan ikinci dosya adına karşılık gelir."
 
-#: library/exceptions.rst:396
+#: library/exceptions.rst:398
 msgid ""
 ":exc:`EnvironmentError`, :exc:`IOError`, :exc:`WindowsError`, :exc:`socket."
 "error`, :exc:`select.error` and :exc:`mmap.error` have been merged into :exc:"
@@ -655,7 +655,7 @@ msgstr ""
 "error`, :exc:`select.error` ve :exc:`mmap.error`, :exc:`OSError` ile "
 "birleştirilmiştir ve kurucu bir alt sınıf döndürebilir."
 
-#: library/exceptions.rst:402
+#: library/exceptions.rst:404
 msgid ""
 "The :attr:`filename` attribute is now the original file name passed to the "
 "function, instead of the name encoded to or decoded from the :term:"
@@ -666,7 +666,7 @@ msgstr ""
 "handler` ile kodlanan veya kodu çözülen ad yerine işleve aktarılan orijinal "
 "dosya adıdır. Ayrıca, *filename2* kurucu argümanı ve niteliği eklenmiştir."
 
-#: library/exceptions.rst:411
+#: library/exceptions.rst:413
 #, fuzzy
 msgid ""
 "Raised when the result of an arithmetic operation is too large to be "
@@ -684,7 +684,7 @@ msgstr ""
 "point exception handling) standartlaştırılmaması nedeniyle, çoğu kayan nokta "
 "işlemi kontrol edilmez."
 
-#: library/exceptions.rst:421
+#: library/exceptions.rst:423
 msgid ""
 "This exception is derived from :exc:`RuntimeError`.  It is raised when the "
 "interpreter detects that the maximum recursion depth (see :func:`sys."
@@ -694,11 +694,11 @@ msgstr ""
 "özyineleme derinliğinin(recursion depth) (bkz. :func:`sys."
 "getrecursionlimit`) aşıldığını tespit ettiğinde ortaya çıkar."
 
-#: library/exceptions.rst:425
+#: library/exceptions.rst:427
 msgid "Previously, a plain :exc:`RuntimeError` was raised."
 msgstr "Önceden, düz bir :exc:`RuntimeError` oluşturulurdu."
 
-#: library/exceptions.rst:431
+#: library/exceptions.rst:433
 msgid ""
 "This exception is raised when a weak reference proxy, created by the :func:"
 "`weakref.proxy` function, is used to access an attribute of the referent "
@@ -711,7 +711,7 @@ msgstr ""
 "çıkar. Zayıf referanslar hakkında daha fazla bilgi için :mod:`weakref` "
 "modülüne bakın."
 
-#: library/exceptions.rst:439
+#: library/exceptions.rst:441
 msgid ""
 "Raised when an error is detected that doesn't fall in any of the other "
 "categories.  The associated value is a string indicating what precisely went "
@@ -721,7 +721,7 @@ msgstr ""
 "oluşturulur. İlişkili değer, tam olarak neyin yanlış gittiğini gösteren bir "
 "dizedir."
 
-#: library/exceptions.rst:446
+#: library/exceptions.rst:448
 msgid ""
 "Raised by built-in function :func:`next` and an :term:`iterator`\\'s :meth:"
 "`~iterator.__next__` method to signal that there are no further items "
@@ -731,7 +731,7 @@ msgstr ""
 "__next__` yöntemi tarafından yineleyici tarafından üretilen başka öğe "
 "olmadığını bildirmek için yükseltilir."
 
-#: library/exceptions.rst:452
+#: library/exceptions.rst:454
 msgid ""
 "The exception object has a single attribute :attr:`!value`, which is given "
 "as an argument when constructing the exception, and defaults to :const:"
@@ -741,7 +741,7 @@ msgstr ""
 "istisna oluşturulurken argüman olarak verilir ve varsayılan olarak :const:"
 "`None` değerini alır."
 
-#: library/exceptions.rst:456
+#: library/exceptions.rst:458
 msgid ""
 "When a :term:`generator` or :term:`coroutine` function returns, a new :exc:"
 "`StopIteration` instance is raised, and the value returned by the function "
@@ -752,7 +752,7 @@ msgstr ""
 "döndürülen değer, istisnanın yapıcısı için :attr:`value` parametresi olarak "
 "kullanılır."
 
-#: library/exceptions.rst:461
+#: library/exceptions.rst:463
 msgid ""
 "If a generator code directly or indirectly raises :exc:`StopIteration`, it "
 "is converted into a :exc:`RuntimeError` (retaining the :exc:`StopIteration` "
@@ -763,7 +763,7 @@ msgstr ""
 "dönüştürülür (yeni istisnanın nedeni olarak :exc:`StopIteration` değeri "
 "korunur)."
 
-#: library/exceptions.rst:465
+#: library/exceptions.rst:467
 msgid ""
 "Added ``value`` attribute and the ability for generator functions to use it "
 "to return a value."
@@ -771,7 +771,7 @@ msgstr ""
 "``value`` niteliği ve generator işlevlerin bir değer döndürmek için bunu "
 "kullanabilmesi özelliği eklendi."
 
-#: library/exceptions.rst:469
+#: library/exceptions.rst:471
 msgid ""
 "Introduced the RuntimeError transformation via ``from __future__ import "
 "generator_stop``, see :pep:`479`."
@@ -779,7 +779,7 @@ msgstr ""
 "RuntimeError dönüşümü ``from __future__ import generator_stop`` aracılığıyla "
 "tanıtıldı, bkz :pep:`479`."
 
-#: library/exceptions.rst:473
+#: library/exceptions.rst:475
 msgid ""
 "Enable :pep:`479` for all code by default: a :exc:`StopIteration` error "
 "raised in a generator is transformed into a :exc:`RuntimeError`."
@@ -788,7 +788,7 @@ msgstr ""
 "generator'da ortaya çıkan :exc:`StopIteration` hatası bir :exc:"
 "`RuntimeError` hatasına dönüştürülür."
 
-#: library/exceptions.rst:479
+#: library/exceptions.rst:481
 msgid ""
 "Must be raised by :meth:`~object.__anext__` method of an :term:`asynchronous "
 "iterator` object to stop the iteration."
@@ -796,7 +796,7 @@ msgstr ""
 "Yinelemeyi durdurmak için bir :term:`asynchronous iterator` nesnesinin :meth:"
 "`~object.__anext__` yöntemi tarafından oluşturulmalıdır."
 
-#: library/exceptions.rst:486
+#: library/exceptions.rst:488
 msgid ""
 "Raised when the parser encounters a syntax error.  This may occur in an :"
 "keyword:`import` statement, in a call to the built-in functions :func:"
@@ -808,7 +808,7 @@ msgstr ""
 "func:`eval` işlevlerine yapılan bir çağrıda veya ilk kod veya standart girdi "
 "okunurken (etkileşimli olarak da) meydana gelebilir."
 
-#: library/exceptions.rst:492
+#: library/exceptions.rst:494
 msgid ""
 "The :func:`str` of the exception instance returns only the error message. "
 "Details is a tuple whose members are also available as separate attributes."
@@ -816,11 +816,11 @@ msgstr ""
 "İstisna örneğinin :func:`str` öğesi yalnızca hata mesajını döndürür. "
 "Details, üyeleri ayrı nitelikler olarak da kullanılabilen bir tuple'dır."
 
-#: library/exceptions.rst:497
+#: library/exceptions.rst:499
 msgid "The name of the file the syntax error occurred in."
 msgstr "Sözdizimi hatasının oluştuğu dosyanın adı."
 
-#: library/exceptions.rst:501
+#: library/exceptions.rst:503
 msgid ""
 "Which line number in the file the error occurred in. This is 1-indexed: the "
 "first line in the file has a ``lineno`` of 1."
@@ -828,7 +828,7 @@ msgstr ""
 "Hatanın dosyadaki hangi satır numarasında meydana geldiği. Bu 1 indekslidir: "
 "dosyadaki ilk satırın ``lineno`` değeri 1'dir."
 
-#: library/exceptions.rst:506
+#: library/exceptions.rst:508
 msgid ""
 "The column in the line where the error occurred. This is 1-indexed: the "
 "first character in the line has an ``offset`` of 1."
@@ -836,11 +836,11 @@ msgstr ""
 "Hatanın meydana geldiği satırdaki sütun. Bu 1 indekslidir: satırdaki ilk "
 "karakter 1 ``offset`` değerine sahiptir."
 
-#: library/exceptions.rst:511
+#: library/exceptions.rst:513
 msgid "The source code text involved in the error."
 msgstr "Hataya dahil olan kaynak kod metni."
 
-#: library/exceptions.rst:515
+#: library/exceptions.rst:517
 msgid ""
 "Which line number in the file the error occurred ends in. This is 1-indexed: "
 "the first line in the file has a ``lineno`` of 1."
@@ -848,7 +848,7 @@ msgstr ""
 "Hatanın meydana geldiği dosyadaki satır numarası. Bu, 1 indekslidir: "
 "Dosyanın ilk satırının lineno değeri 1'dir."
 
-#: library/exceptions.rst:520
+#: library/exceptions.rst:522
 msgid ""
 "The column in the end line where the error occurred finishes. This is 1-"
 "indexed: the first character in the line has an ``offset`` of 1."
@@ -856,7 +856,7 @@ msgstr ""
 "Hatanın meydana geldiği son satırdaki sütun numarası. Bu, 1 indekslidir: "
 "Satırdaki ilk karakterin offset değeri 1'dir."
 
-#: library/exceptions.rst:523
+#: library/exceptions.rst:525
 msgid ""
 "For errors in f-string fields, the message is prefixed by \"f-string: \" and "
 "the offsets are offsets in a text constructed from the replacement "
@@ -868,11 +868,11 @@ msgstr ""
 "Örneğin, f'Bad {a b} field' derlendiğinde şu args özniteliği elde edilir: "
 "('f-string: ...', ('', 1, 2, '(a b)\\n', 1, 5))."
 
-#: library/exceptions.rst:528
+#: library/exceptions.rst:530
 msgid "Added the :attr:`end_lineno` and :attr:`end_offset` attributes."
 msgstr ":attr:`end_lineno` ve :attr:`end_offset` nitelikleri eklendi."
 
-#: library/exceptions.rst:533
+#: library/exceptions.rst:535
 msgid ""
 "Base class for syntax errors related to incorrect indentation.  This is a "
 "subclass of :exc:`SyntaxError`."
@@ -880,7 +880,7 @@ msgstr ""
 "Yanlış girintileme ile ilgili sözdizimi hataları için temel sınıf. Bu, :exc:"
 "`SyntaxError` alt sınıfıdır."
 
-#: library/exceptions.rst:539
+#: library/exceptions.rst:541
 msgid ""
 "Raised when indentation contains an inconsistent use of tabs and spaces. "
 "This is a subclass of :exc:`IndentationError`."
@@ -888,23 +888,29 @@ msgstr ""
 "Girintileme tutarsız sekme ve boşluk kullanımı içerdiğinde ortaya çıkar. "
 "Bu, :exc:`IndentationError` öğesinin bir alt sınıfıdır."
 
-#: library/exceptions.rst:545
+#: library/exceptions.rst:547
+#, fuzzy
 msgid ""
 "Raised when the interpreter finds an internal error, but the situation does "
 "not look so serious to cause it to abandon all hope. The associated value is "
-"a string indicating what went wrong (in low-level terms)."
+"a string indicating what went wrong (in low-level terms). In :term:"
+"`CPython`, this could be raised by incorrectly using Python's C API, such as "
+"returning a ``NULL`` value without an exception set."
 msgstr ""
 "Yorumlayıcı dahili bir hata bulduğunda, ancak durum tüm umutlarını "
 "yitirmesine neden olacak kadar ciddi görünmediğinde yükseltilir. İlişkili "
 "değer, neyin yanlış gittiğini gösteren bir dizedir (düşük seviye terimlerle)."
 
-#: library/exceptions.rst:549
+#: library/exceptions.rst:553
+#, fuzzy
 msgid ""
-"You should report this to the author or maintainer of your Python "
-"interpreter. Be sure to report the version of the Python interpreter (``sys."
-"version``; it is also printed at the start of an interactive Python "
-"session), the exact error message (the exception's associated value) and if "
-"possible the source of the program that triggered the error."
+"If you're confident that this exception wasn't your fault, or the fault of a "
+"package you're using, you should report this to the author or maintainer of "
+"your Python interpreter. Be sure to report the version of the Python "
+"interpreter (``sys.version``; it is also printed at the start of an "
+"interactive Python session), the exact error message (the exception's "
+"associated value) and if possible the source of the program that triggered "
+"the error."
 msgstr ""
 "Bunu Python yorumlayıcınızın yazarına veya geliştiricisine bildirmelisiniz. "
 "Python yorumlayıcısının sürümünü (``sys.version``; etkileşimli bir Python "
@@ -912,7 +918,7 @@ msgstr ""
 "ilişkili değeri) ve mümkünse hatayı tetikleyen programın kaynağını "
 "bildirdiğinizden emin olun."
 
-#: library/exceptions.rst:558
+#: library/exceptions.rst:564
 msgid ""
 "This exception is raised by the :func:`sys.exit` function.  It inherits "
 "from :exc:`BaseException` instead of :exc:`Exception` so that it is not "
@@ -936,7 +942,7 @@ msgstr ""
 "``None`` ise, çıkış durumu sıfırdır; başka bir türe sahipse (string gibi), "
 "nesnenin değeri yazdırılır ve çıkış durumu birdir."
 
-#: library/exceptions.rst:569
+#: library/exceptions.rst:575
 msgid ""
 "A call to :func:`sys.exit` is translated into an exception so that clean-up "
 "handlers (:keyword:`finally` clauses of :keyword:`try` statements) can be "
@@ -952,7 +958,7 @@ msgstr ""
 "kesinlikle gerekliyse :func:`os._exit` fonksiyonu kullanılabilir (örneğin, :"
 "func:`os.fork` çağrısından sonra alt süreçte)."
 
-#: library/exceptions.rst:578
+#: library/exceptions.rst:584
 msgid ""
 "The exit status or error message that is passed to the constructor. "
 "(Defaults to ``None``.)"
@@ -960,7 +966,7 @@ msgstr ""
 "Yapıcıya aktarılan çıkış durumu veya hata mesajı. (Varsayılan değer "
 "``None``.)"
 
-#: library/exceptions.rst:584
+#: library/exceptions.rst:590
 msgid ""
 "Raised when an operation or function is applied to an object of "
 "inappropriate type.  The associated value is a string giving details about "
@@ -970,7 +976,7 @@ msgstr ""
 "oluşur. İlişkili değer, tür uyuşmazlığı hakkında ayrıntılar veren bir "
 "dizedir."
 
-#: library/exceptions.rst:587
+#: library/exceptions.rst:593
 msgid ""
 "This exception may be raised by user code to indicate that an attempted "
 "operation on an object is not supported, and is not meant to be. If an "
@@ -983,7 +989,7 @@ msgstr ""
 "bir uygulama sağlamamışsa, :exc:`NotImplementedError` oluşması gereken uygun "
 "istisnadır."
 
-#: library/exceptions.rst:592
+#: library/exceptions.rst:598
 msgid ""
 "Passing arguments of the wrong type (e.g. passing a :class:`list` when an :"
 "class:`int` is expected) should result in a :exc:`TypeError`, but passing "
@@ -995,7 +1001,7 @@ msgstr ""
 "yanlış değere sahip argümanlar geçirmek (örneğin beklenen sınırların dışında "
 "bir sayı) bir :exc:`ValueError` ile sonuçlanmalıdır."
 
-#: library/exceptions.rst:599
+#: library/exceptions.rst:605
 msgid ""
 "Raised when a reference is made to a local variable in a function or method, "
 "but no value has been bound to that variable.  This is a subclass of :exc:"
@@ -1005,7 +1011,7 @@ msgstr ""
 "ancak bu değişkene herhangi bir değer bağlanmadığında ortaya çıkar. Bu, :exc:"
 "`NameError` alt sınıfıdır."
 
-#: library/exceptions.rst:606
+#: library/exceptions.rst:612
 msgid ""
 "Raised when a Unicode-related encoding or decoding error occurs.  It is a "
 "subclass of :exc:`ValueError`."
@@ -1013,7 +1019,7 @@ msgstr ""
 "Unicode ile ilgili bir kodlama veya kod çözme hatası oluştuğunda ortaya "
 "çıkar. Bu, :exc:`ValueError` alt sınıfıdır."
 
-#: library/exceptions.rst:609
+#: library/exceptions.rst:615
 msgid ""
 ":exc:`UnicodeError` has attributes that describe the encoding or decoding "
 "error.  For example, ``err.object[err.start:err.end]`` gives the particular "
@@ -1023,27 +1029,27 @@ msgstr ""
 "tanımlayan özniteliklere sahiptir. Örneğin, ``err.object[err.start:err."
 "end]`` codec'in başarısız olduğu belirli geçersiz girdiyi verir."
 
-#: library/exceptions.rst:615
+#: library/exceptions.rst:621
 msgid "The name of the encoding that raised the error."
 msgstr "Hataya neden olan kodlamanın adı."
 
-#: library/exceptions.rst:619
+#: library/exceptions.rst:625
 msgid "A string describing the specific codec error."
 msgstr "Belirli kodek hatasını açıklayan bir dize."
 
-#: library/exceptions.rst:623
+#: library/exceptions.rst:629
 msgid "The object the codec was attempting to encode or decode."
 msgstr "Kodek'in kodlamaya veya kodunu çözmeye çalıştığı nesne."
 
-#: library/exceptions.rst:627
+#: library/exceptions.rst:633
 msgid "The first index of invalid data in :attr:`object`."
 msgstr ":attr:`object` içindeki geçersiz verilerin ilk indeksi."
 
-#: library/exceptions.rst:631
+#: library/exceptions.rst:637
 msgid "The index after the last invalid data in :attr:`object`."
 msgstr ":attr:`object` içindeki son geçersiz veriden sonraki dizin."
 
-#: library/exceptions.rst:636
+#: library/exceptions.rst:642
 msgid ""
 "Raised when a Unicode-related error occurs during encoding.  It is a "
 "subclass of :exc:`UnicodeError`."
@@ -1051,7 +1057,7 @@ msgstr ""
 "Kodlama sırasında Unicode ile ilgili bir hata oluştuğunda ortaya çıkar. Bu :"
 "exc:`UnicodeError` alt sınıfıdır."
 
-#: library/exceptions.rst:642
+#: library/exceptions.rst:648
 msgid ""
 "Raised when a Unicode-related error occurs during decoding.  It is a "
 "subclass of :exc:`UnicodeError`."
@@ -1059,7 +1065,7 @@ msgstr ""
 "Kod çözme sırasında Unicode ile ilgili bir hata oluştuğunda ortaya çıkar. "
 "Bu :exc:`UnicodeError` alt sınıfıdır."
 
-#: library/exceptions.rst:648
+#: library/exceptions.rst:654
 msgid ""
 "Raised when a Unicode-related error occurs during translating.  It is a "
 "subclass of :exc:`UnicodeError`."
@@ -1067,7 +1073,7 @@ msgstr ""
 "Çeviri sırasında Unicode ile ilgili bir hata oluştuğunda ortaya çıkar. Bu :"
 "exc:`UnicodeError` alt sınıfıdır."
 
-#: library/exceptions.rst:654
+#: library/exceptions.rst:660
 msgid ""
 "Raised when an operation or function receives an argument that has the right "
 "type but an inappropriate value, and the situation is not described by a "
@@ -1077,7 +1083,7 @@ msgstr ""
 "bir argüman aldığında ve durum :exc:`IndexError` gibi daha kesin bir istisna "
 "ile tanımlanmadığında ortaya çıkar."
 
-#: library/exceptions.rst:661
+#: library/exceptions.rst:667
 msgid ""
 "Raised when the second argument of a division or modulo operation is zero.  "
 "The associated value is a string indicating the type of the operands and the "
@@ -1087,7 +1093,7 @@ msgstr ""
 "ortaya çıkar. İlişkili değer, işlenenlerin ve işlemin türünü belirten bir "
 "dizedir."
 
-#: library/exceptions.rst:666
+#: library/exceptions.rst:672
 msgid ""
 "The following exceptions are kept for compatibility with previous versions; "
 "starting from Python 3.3, they are aliases of :exc:`OSError`."
@@ -1095,15 +1101,15 @@ msgstr ""
 "Aşağıdaki istisnalar önceki sürümlerle uyumluluk için tutulur; Python "
 "3.3'ten başlayarak, :exc:`OSError` takma adlarıdır."
 
-#: library/exceptions.rst:675
+#: library/exceptions.rst:681
 msgid "Only available on Windows."
 msgstr "Yalnızca Windows'ta kullanılabilir."
 
-#: library/exceptions.rst:679
+#: library/exceptions.rst:685
 msgid "OS exceptions"
 msgstr "İşletim sistemi istisnaları(ES exceptions)"
 
-#: library/exceptions.rst:681
+#: library/exceptions.rst:687
 msgid ""
 "The following exceptions are subclasses of :exc:`OSError`, they get raised "
 "depending on the system error code."
@@ -1111,7 +1117,7 @@ msgstr ""
 "Aşağıdaki istisnalar :exc:`OSError` alt sınıflarıdır, sistem hata koduna "
 "bağlı olarak ortaya çıkarlar."
 
-#: library/exceptions.rst:686
+#: library/exceptions.rst:692
 msgid ""
 "Raised when an operation would block on an object (e.g. socket) set for non-"
 "blocking operation. Corresponds to :c:data:`errno` :py:const:`~errno."
@@ -1123,7 +1129,7 @@ msgstr ""
 "const:`~errno.EAGAIN`, :py:const:`~errno.EALREADY`, :py:const:`~errno."
 "EWOULDBLOCK` ve :py:const:`~errno.EINPROGRESS` değerlerine karşılık gelir."
 
-#: library/exceptions.rst:691
+#: library/exceptions.rst:697
 msgid ""
 "In addition to those of :exc:`OSError`, :exc:`BlockingIOError` can have one "
 "more attribute:"
@@ -1131,7 +1137,7 @@ msgstr ""
 ":exc:`OSError` özelliğine ek olarak, :exc:`BlockingIOError` bir özelliğe "
 "daha sahip olabilir:"
 
-#: library/exceptions.rst:696
+#: library/exceptions.rst:702
 msgid ""
 "An integer containing the number of characters written to the stream before "
 "it blocked.  This attribute is available when using the buffered I/O classes "
@@ -1141,7 +1147,7 @@ msgstr ""
 "kullanırken, akışa yazılmadan önce engellendiğinde yazılan karakterlerin "
 "sayısını içeren bir tamsayı içerir.\""
 
-#: library/exceptions.rst:702
+#: library/exceptions.rst:708
 msgid ""
 "Raised when an operation on a child process failed. Corresponds to :c:data:"
 "`errno` :py:const:`~errno.ECHILD`."
@@ -1149,11 +1155,11 @@ msgstr ""
 "Bir alt süreç(child process) üzerindeki bir işlem başarısız olduğunda "
 "yükseltilir. Karşılığı :c:data:`errno` :py:const:`~errno.ECHILD`."
 
-#: library/exceptions.rst:707
+#: library/exceptions.rst:713
 msgid "A base class for connection-related issues."
 msgstr "Bağlantı ile ilgili konular için bir temel sınıf."
 
-#: library/exceptions.rst:709
+#: library/exceptions.rst:715
 msgid ""
 "Subclasses are :exc:`BrokenPipeError`, :exc:`ConnectionAbortedError`, :exc:"
 "`ConnectionRefusedError` and :exc:`ConnectionResetError`."
@@ -1161,7 +1167,7 @@ msgstr ""
 "Alt sınıflar :exc:`BrokenPipeError`, :exc:`ConnectionAbortedError`, :exc:"
 "`ConnectionRefusedError` ve :exc:`ConnectionResetError`."
 
-#: library/exceptions.rst:714
+#: library/exceptions.rst:720
 msgid ""
 "A subclass of :exc:`ConnectionError`, raised when trying to write on a pipe "
 "while the other end has been closed, or trying to write on a socket which "
@@ -1173,7 +1179,7 @@ msgstr ""
 "çalışıldığında ortaya çıkar. :c:data:`errno` :py:const:`~errno.EPIPE` ve :py:"
 "const:`~errno.ESHUTDOWN` değerlerine karşılık gelir."
 
-#: library/exceptions.rst:721
+#: library/exceptions.rst:727
 msgid ""
 "A subclass of :exc:`ConnectionError`, raised when a connection attempt is "
 "aborted by the peer. Corresponds to :c:data:`errno` :py:const:`~errno."
@@ -1183,7 +1189,7 @@ msgstr ""
 "exc:`ConnectionError` alt sınıfı. Karşılığı :c:data:`errno` :py:const:"
 "`~errno.ECONNABORTED`."
 
-#: library/exceptions.rst:727
+#: library/exceptions.rst:733
 msgid ""
 "A subclass of :exc:`ConnectionError`, raised when a connection attempt is "
 "refused by the peer. Corresponds to :c:data:`errno` :py:const:`~errno."
@@ -1193,7 +1199,7 @@ msgstr ""
 "`ConnectionError` alt sınıfı. Karşılığı :c:data:`errno` :py:const:`~errno."
 "ECONNREFUSED`."
 
-#: library/exceptions.rst:733
+#: library/exceptions.rst:739
 msgid ""
 "A subclass of :exc:`ConnectionError`, raised when a connection is reset by "
 "the peer. Corresponds to :c:data:`errno` :py:const:`~errno.ECONNRESET`."
@@ -1202,7 +1208,7 @@ msgstr ""
 "`ConnectionError` alt sınıfı. Karşılığı :c:data:`errno` :py:const:`~errno."
 "ECONNRESET`."
 
-#: library/exceptions.rst:739
+#: library/exceptions.rst:745
 msgid ""
 "Raised when trying to create a file or directory which already exists. "
 "Corresponds to :c:data:`errno` :py:const:`~errno.EEXIST`."
@@ -1210,7 +1216,7 @@ msgstr ""
 "Zaten var olan bir dosya veya dizin oluşturulmaya çalışıldığında ortaya "
 "çıkar. Karşılığı :c:data:`errno` :py:const:`~errno.EEXIST`."
 
-#: library/exceptions.rst:744
+#: library/exceptions.rst:750
 msgid ""
 "Raised when a file or directory is requested but doesn't exist. Corresponds "
 "to :c:data:`errno` :py:const:`~errno.ENOENT`."
@@ -1218,7 +1224,7 @@ msgstr ""
 "Bir dosya veya dizin isteğinde(request) ancak mevcut olmadığında ortaya "
 "çıakr. Karşılığı :c:data:`errno` :py:const:`~errno.ENOENT`."
 
-#: library/exceptions.rst:749
+#: library/exceptions.rst:755
 msgid ""
 "Raised when a system call is interrupted by an incoming signal. Corresponds "
 "to :c:data:`errno` :py:const:`~errno.EINTR`."
@@ -1226,7 +1232,7 @@ msgstr ""
 "Bir sistem çağrısı gelen bir sinyal tarafından kesintiye uğradığında ortaya "
 "çıkar. Karşılığı :c:data:`errno` :py:const:`~errno.EINTR`."
 
-#: library/exceptions.rst:752
+#: library/exceptions.rst:758
 msgid ""
 "Python now retries system calls when a syscall is interrupted by a signal, "
 "except if the signal handler raises an exception (see :pep:`475` for the "
@@ -1237,7 +1243,7 @@ msgstr ""
 "bakın), :exc:`InterruptedError` istisnası yükseltmek yerine sistem "
 "çağrılarını tekrar deniyor."
 
-#: library/exceptions.rst:759
+#: library/exceptions.rst:765
 msgid ""
 "Raised when a file operation (such as :func:`os.remove`) is requested on a "
 "directory. Corresponds to :c:data:`errno` :py:const:`~errno.EISDIR`."
@@ -1245,7 +1251,7 @@ msgstr ""
 "Bir dizin üzerinde bir dosya işlemi (örneğin :func:`os.remove`) istendiğinde "
 "ortaya çıkar. Karşılığı :c:data:`errno` :py:const:`~errno.EISDIR`."
 
-#: library/exceptions.rst:765
+#: library/exceptions.rst:771
 msgid ""
 "Raised when a directory operation (such as :func:`os.listdir`) is requested "
 "on something which is not a directory.  On most POSIX platforms, it may also "
@@ -1258,7 +1264,7 @@ msgstr ""
 "bir dosyayı bir dizinmiş gibi açmaya veya geçmeye çalışırsa da ortaya "
 "çıkabilir. Karşılığı :c:data:`errno` :py:const:`~errno.ENOTDIR`."
 
-#: library/exceptions.rst:773
+#: library/exceptions.rst:779
 msgid ""
 "Raised when trying to run an operation without the adequate access rights - "
 "for example filesystem permissions. Corresponds to :c:data:`errno` :py:const:"
@@ -1270,7 +1276,7 @@ msgstr ""
 "`~errno.EACCES`, :py:const:`~errno.EPERM` ve :py:const:`~errno.ENOTCAPABLE` "
 "değerlerine karşılık gelir."
 
-#: library/exceptions.rst:778
+#: library/exceptions.rst:784
 msgid ""
 "WASI's :py:const:`~errno.ENOTCAPABLE` is now mapped to :exc:"
 "`PermissionError`."
@@ -1278,7 +1284,7 @@ msgstr ""
 "WASI'nin :py:const:`~errno.ENOTCAPABLE` ifadesi artık :exc:`PermissionError` "
 "ile eşleştirilmiştir."
 
-#: library/exceptions.rst:784
+#: library/exceptions.rst:790
 msgid ""
 "Raised when a given process doesn't exist. Corresponds to :c:data:`errno` :"
 "py:const:`~errno.ESRCH`."
@@ -1286,7 +1292,7 @@ msgstr ""
 "Belirli bir süreç mevcut olmadığında ortaya çıkar. Karşılığı :c:data:"
 "`errno` :py:const:`~errno.ESRCH`."
 
-#: library/exceptions.rst:789
+#: library/exceptions.rst:795
 msgid ""
 "Raised when a system function timed out at the system level. Corresponds to :"
 "c:data:`errno` :py:const:`~errno.ETIMEDOUT`."
@@ -1294,21 +1300,21 @@ msgstr ""
 "Bir sistem işlevi sistem düzeyinde zaman aşımına uğradığında ortaya çıkar. "
 "Karşılığı :c:data:`errno` :py:const:`~errno.ETIMEDOUT`."
 
-#: library/exceptions.rst:792
+#: library/exceptions.rst:798
 msgid "All the above :exc:`OSError` subclasses were added."
 msgstr "Yukarıdaki tüm :exc:`OSError` alt sınıfları eklendi."
 
-#: library/exceptions.rst:798
+#: library/exceptions.rst:804
 msgid ":pep:`3151` - Reworking the OS and IO exception hierarchy"
 msgstr ""
 ":pep:`3151` - İşletim sistemi ve IO istisna hiyerarşisinin yeniden "
 "düzenlenmesi"
 
-#: library/exceptions.rst:804
+#: library/exceptions.rst:810
 msgid "Warnings"
 msgstr "Uyarılar"
 
-#: library/exceptions.rst:806
+#: library/exceptions.rst:812
 msgid ""
 "The following exceptions are used as warning categories; see the :ref:"
 "`warning-categories` documentation for more details."
@@ -1316,15 +1322,15 @@ msgstr ""
 "Aşağıdaki istisnalar uyarı kategorileri olarak kullanılır; daha fazla "
 "ayrıntı için :ref:`warning-categories` belgesine bakın."
 
-#: library/exceptions.rst:811
+#: library/exceptions.rst:817
 msgid "Base class for warning categories."
 msgstr "Uyarı kategorileri için temel sınıf."
 
-#: library/exceptions.rst:816
+#: library/exceptions.rst:822
 msgid "Base class for warnings generated by user code."
 msgstr "Kullanıcı kodu tarafından oluşturulan uyarılar için temel sınıf."
 
-#: library/exceptions.rst:821
+#: library/exceptions.rst:827
 msgid ""
 "Base class for warnings about deprecated features when those warnings are "
 "intended for other Python developers."
@@ -1332,7 +1338,7 @@ msgstr ""
 "Kullanımdan kaldırılan özelliklerle ilgili uyarılar diğer Python "
 "geliştiricilerine yönelik olduğunda bu uyarılar için temel sınıf."
 
-#: library/exceptions.rst:824
+#: library/exceptions.rst:830
 msgid ""
 "Ignored by the default warning filters, except in the ``__main__`` module (:"
 "pep:`565`). Enabling the :ref:`Python Development Mode <devmode>` shows this "
@@ -1342,11 +1348,11 @@ msgstr ""
 "tarafından yok sayılır. :ref:`Python Geliştirme Modu <devmode>` "
 "etkinleştirildiğinde bu uyarı gösterilir."
 
-#: library/exceptions.rst:844
+#: library/exceptions.rst:850
 msgid "The deprecation policy is described in :pep:`387`."
 msgstr "Kullanımdan kaldırma politikası :pep:`387` bölümünde açıklanmaktadır."
 
-#: library/exceptions.rst:833
+#: library/exceptions.rst:839
 msgid ""
 "Base class for warnings about features which are obsolete and expected to be "
 "deprecated in the future, but are not deprecated at the moment."
@@ -1354,7 +1360,7 @@ msgstr ""
 "Eski olan ve gelecekte kullanımdan kaldırılması beklenen, ancak şu anda "
 "kullanımdan kaldırılmayan özelliklerle ilgili uyarılar için temel sınıf."
 
-#: library/exceptions.rst:837
+#: library/exceptions.rst:843
 msgid ""
 "This class is rarely used as emitting a warning about a possible upcoming "
 "deprecation is unusual, and :exc:`DeprecationWarning` is preferred for "
@@ -1365,7 +1371,7 @@ msgstr ""
 "`DeprecationWarning` zaten aktif olan kullanımdan kaldırmalar için tercih "
 "edilir."
 
-#: library/exceptions.rst:867 library/exceptions.rst:894
+#: library/exceptions.rst:873 library/exceptions.rst:900
 msgid ""
 "Ignored by the default warning filters. Enabling the :ref:`Python "
 "Development Mode <devmode>` shows this warning."
@@ -1373,16 +1379,16 @@ msgstr ""
 "Varsayılan uyarı filtreleri tarafından yok sayılır. :ref:`Python Geliştirme "
 "Modu <devmode>` etkinleştirildiğinde bu uyarı gösterilir."
 
-#: library/exceptions.rst:849
+#: library/exceptions.rst:855
 msgid "Base class for warnings about dubious syntax."
 msgstr "Şüpheli sözdizimiyle ilgili uyarılar için temel sınıf."
 
-#: library/exceptions.rst:854
+#: library/exceptions.rst:860
 msgid "Base class for warnings about dubious runtime behavior."
 msgstr ""
 "Şüpheli çalışma zamanı davranışları hakkındaki uyarılar için temel sınıf."
 
-#: library/exceptions.rst:859
+#: library/exceptions.rst:865
 msgid ""
 "Base class for warnings about deprecated features when those warnings are "
 "intended for end users of applications that are written in Python."
@@ -1391,38 +1397,38 @@ msgstr ""
 "uygulamaların son kullanıcılarına yönelik olduğunda bu uyarılar için temel "
 "sınıf."
 
-#: library/exceptions.rst:865
+#: library/exceptions.rst:871
 msgid "Base class for warnings about probable mistakes in module imports."
 msgstr ""
 "Modül içe aktarmalarındaki olası hatalar hakkında uyarılar için temel sınıf."
 
-#: library/exceptions.rst:873
+#: library/exceptions.rst:879
 msgid "Base class for warnings related to Unicode."
 msgstr "Unicode ile ilgili uyarılar için temel sınıf."
 
-#: library/exceptions.rst:878
+#: library/exceptions.rst:884
 msgid "Base class for warnings related to encodings."
 msgstr "Kodlamalarla ilgili uyarılar için temel sınıf."
 
-#: library/exceptions.rst:880
+#: library/exceptions.rst:886
 msgid "See :ref:`io-encoding-warning` for details."
 msgstr "Ayrıntılar için :ref:`io-encoding-warning` sayfasına bakın."
 
-#: library/exceptions.rst:887
+#: library/exceptions.rst:893
 msgid ""
 "Base class for warnings related to :class:`bytes` and :class:`bytearray`."
 msgstr ""
 ":class:`bytes` ve :class:`bytearray` ile ilgili uyarılar için temel sınıf."
 
-#: library/exceptions.rst:892
+#: library/exceptions.rst:898
 msgid "Base class for warnings related to resource usage."
 msgstr "Kaynak kullanımıyla ilgili uyarılar için temel sınıf."
 
-#: library/exceptions.rst:903
+#: library/exceptions.rst:909
 msgid "Exception groups"
 msgstr "İstisna grupları"
 
-#: library/exceptions.rst:905
+#: library/exceptions.rst:911
 msgid ""
 "The following are used when it is necessary to raise multiple unrelated "
 "exceptions. They are part of the exception hierarchy so they can be handled "
@@ -1436,7 +1442,7 @@ msgstr ""
 "içerdikleri istisnaların türlerine göre alt gruplarını eşleştiren :keyword:"
 "`except*<except_star>` tarafından tanınırlar."
 
-#: library/exceptions.rst:914
+#: library/exceptions.rst:920
 msgid ""
 "Both of these exception types wrap the exceptions in the sequence ``excs``. "
 "The ``msg`` parameter must be a string. The difference between the two "
@@ -1454,7 +1460,7 @@ msgstr ""
 "sayesinde ``except Exception`` bir :exc:`ExceptionGroup` u yakalar ancak :"
 "exc:`BaseExceptionGroup` u yakalayamaz."
 
-#: library/exceptions.rst:922
+#: library/exceptions.rst:928
 msgid ""
 "The :exc:`BaseExceptionGroup` constructor returns an :exc:`ExceptionGroup` "
 "rather than a :exc:`BaseExceptionGroup` if all contained exceptions are :exc:"
@@ -1469,11 +1475,11 @@ msgstr ""
 "herhangi bir istisna bir :exc:`Exception` alt sınıfı değilse bir :exc:"
 "`TypeError` yükseltir."
 
-#: library/exceptions.rst:931
+#: library/exceptions.rst:937
 msgid "The ``msg`` argument to the constructor. This is a read-only attribute."
 msgstr "Kurucunun ``msg`` argümanı. Bu salt okunur bir niteliktir."
 
-#: library/exceptions.rst:935
+#: library/exceptions.rst:941
 msgid ""
 "A tuple of the exceptions in the ``excs`` sequence given to the constructor. "
 "This is a read-only attribute."
@@ -1481,7 +1487,7 @@ msgstr ""
 "Yapıcıya verilen ``excs`` dizisindeki istisnaların bir demeti(tuple). Bu "
 "salt okunur bir özniteliktir."
 
-#: library/exceptions.rst:940
+#: library/exceptions.rst:946
 msgid ""
 "Returns an exception group that contains only the exceptions from the "
 "current group that match *condition*, or ``None`` if the result is empty."
@@ -1489,7 +1495,7 @@ msgstr ""
 "Yalnızca geçerli gruptaki *condition* ile eşleşen istisnaları içeren bir "
 "istisna grubu veya sonuç boşsa ``None`` döndürür."
 
-#: library/exceptions.rst:943
+#: library/exceptions.rst:949
 msgid ""
 "The condition can be either a function that accepts an exception and returns "
 "true for those that should be in the subgroup, or it can be an exception "
@@ -1502,7 +1508,7 @@ msgstr ""
 "etmek için kullanılan bir istisna türü veya istisna türleri demeti(tuple) de "
 "olabilir."
 
-#: library/exceptions.rst:948
+#: library/exceptions.rst:954
 msgid ""
 "The nesting structure of the current exception is preserved in the result, "
 "as are the values of its :attr:`message`, :attr:`~BaseException."
@@ -1516,7 +1522,7 @@ msgstr ""
 "__notes__` alanlarının değerleri de korunur. Boş iç içe gruplar sonuçtan "
 "çıkarılır."
 
-#: library/exceptions.rst:955
+#: library/exceptions.rst:961
 msgid ""
 "The condition is checked for all exceptions in the nested exception group, "
 "including the top-level and any nested exception groups. If the condition is "
@@ -1526,7 +1532,7 @@ msgstr ""
 "üzere, iç içe geçmiş istisna grubundaki tüm istisnalar için kontrol edilir. "
 "Koşul böyle bir istisna grubu için doğruysa, sonuca tam olarak dahil edilir."
 
-#: library/exceptions.rst:961
+#: library/exceptions.rst:967
 msgid ""
 "Like :meth:`subgroup`, but returns the pair ``(match, rest)`` where "
 "``match`` is ``subgroup(condition)`` and ``rest`` is the remaining non-"
@@ -1535,7 +1541,7 @@ msgstr ""
 ":meth:`subgroup` gibi, ancak ``(match, rest)`` çiftini döndürür; burada "
 "``match`` ``subgroup(condition)`` ve ``rest`` kalan eşleşmeyen kısımdır."
 
-#: library/exceptions.rst:967
+#: library/exceptions.rst:973
 msgid ""
 "Returns an exception group with the same :attr:`message`, but which wraps "
 "the exceptions in ``excs``."
@@ -1543,7 +1549,7 @@ msgstr ""
 "Aynı :attr:`message` ile bir istisna grubu döndürür, ancak istisnaları "
 "``excs`` içine sarar."
 
-#: library/exceptions.rst:970
+#: library/exceptions.rst:976
 #, fuzzy
 msgid ""
 "This method is used by :meth:`subgroup` and :meth:`split`, which are used in "
@@ -1556,7 +1562,7 @@ msgstr ""
 "yerine alt sınıfın örneklerini döndürmesini sağlamak için bu metodu geçersiz "
 "kılması gerekir."
 
-#: library/exceptions.rst:976
+#: library/exceptions.rst:982
 msgid ""
 ":meth:`subgroup` and :meth:`split` copy the :attr:`~BaseException."
 "__traceback__`, :attr:`~BaseException.__cause__`, :attr:`~BaseException."
@@ -1570,7 +1576,7 @@ msgstr ""
 "`derive` tarafından döndürülene kopyalar, böylece bu alanların :meth:"
 "`derive` tarafından güncellenmesi gerekmez."
 
-#: library/exceptions.rst:983
+#: library/exceptions.rst:989
 msgid ""
 ">>> class MyGroup(ExceptionGroup):\n"
 "...     def derive(self, excs):\n"
@@ -1599,7 +1605,7 @@ msgid ""
 "True"
 msgstr ""
 
-#: library/exceptions.rst:1009
+#: library/exceptions.rst:1015
 msgid ""
 "Note that :exc:`BaseExceptionGroup` defines :meth:`~object.__new__`, so "
 "subclasses that need a different constructor signature need to override that "
@@ -1613,7 +1619,7 @@ msgstr ""
 "gerekir. Örneğin, aşağıda bir exit_code kabul eden ve grubun mesajını bundan "
 "oluşturan bir istisna grubu alt sınıfı tanımlanmaktadır:"
 
-#: library/exceptions.rst:1015
+#: library/exceptions.rst:1021
 msgid ""
 "class Errors(ExceptionGroup):\n"
 "   def __new__(cls, errors, exit_code):\n"
@@ -1625,7 +1631,7 @@ msgid ""
 "      return Errors(excs, self.exit_code)"
 msgstr ""
 
-#: library/exceptions.rst:1024
+#: library/exceptions.rst:1030
 msgid ""
 "Like :exc:`ExceptionGroup`, any subclass of :exc:`BaseExceptionGroup` which "
 "is also a subclass of :exc:`Exception` can only wrap instances of :exc:"
@@ -1635,15 +1641,15 @@ msgstr ""
 "exc:`Exception` alt sınıfı da yalnızca :exc:`Exception` örneklerini "
 "sarabilir."
 
-#: library/exceptions.rst:1032
+#: library/exceptions.rst:1038
 msgid "Exception hierarchy"
 msgstr "İstisna hiyerarşisi"
 
-#: library/exceptions.rst:1034
+#: library/exceptions.rst:1040
 msgid "The class hierarchy for built-in exceptions is:"
 msgstr "Gömülü istisnalar için sınıf hiyerarşisi şöyledir:"
 
-#: library/exceptions.rst:1036
+#: library/exceptions.rst:1042
 msgid ""
 "BaseException\n"
 " ├── BaseExceptionGroup\n"
@@ -1754,10 +1760,10 @@ msgstr "__suppress_context__ (exception attribute)"
 msgid "assert"
 msgstr "assert"
 
-#: library/exceptions.rst:345
+#: library/exceptions.rst:347
 msgid "module"
 msgstr "module"
 
-#: library/exceptions.rst:345
+#: library/exceptions.rst:347
 msgid "errno"
 msgstr "errno"
diff --git a/library/filecmp.po b/library/filecmp.po
index 0154f2b14..18413c89c 100644
--- a/library/filecmp.po
+++ b/library/filecmp.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -245,6 +245,6 @@ msgid ""
 "...     for sub_dcmp in dcmp.subdirs.values():\n"
 "...         print_diff_files(sub_dcmp)\n"
 "...\n"
-">>> dcmp = dircmp('dir1', 'dir2') \n"
-">>> print_diff_files(dcmp) "
+">>> dcmp = dircmp('dir1', 'dir2')\n"
+">>> print_diff_files(dcmp)"
 msgstr ""
diff --git a/library/fnmatch.po b/library/fnmatch.po
index a638d06db..06fee6b6f 100644
--- a/library/fnmatch.po
+++ b/library/fnmatch.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -88,12 +88,20 @@ msgstr ""
 
 #: library/fnmatch.rst:49
 msgid ""
-"Also note that :func:`functools.lru_cache` with the *maxsize* of 32768 is "
-"used to cache the compiled regex patterns in the following functions: :func:"
-"`fnmatch`, :func:`fnmatchcase`, :func:`.filter`."
+"Unless stated otherwise, \"filename string\" and \"pattern string\" either "
+"refer to :class:`str` or ``ISO-8859-1`` encoded :class:`bytes` objects. Note "
+"that the functions documented below do not allow to mix a :class:`!bytes` "
+"pattern with a :class:`!str` filename, and vice-versa."
 msgstr ""
 
-#: library/fnmatch.rst:55
+#: library/fnmatch.rst:54
+msgid ""
+"Finally, note that :func:`functools.lru_cache` with a *maxsize* of 32768 is "
+"used to cache the (typed) compiled regex patterns in the following "
+"functions: :func:`fnmatch`, :func:`fnmatchcase`, :func:`.filter`."
+msgstr ""
+
+#: library/fnmatch.rst:61
 msgid ""
 "Test whether the filename string *name* matches the pattern string *pat*, "
 "returning ``True`` or ``False``.  Both parameters are case-normalized using :"
@@ -102,13 +110,13 @@ msgid ""
 "operating system."
 msgstr ""
 
-#: library/fnmatch.rst:61
+#: library/fnmatch.rst:67
 msgid ""
 "This example will print all file names in the current directory with the "
 "extension ``.txt``::"
 msgstr ""
 
-#: library/fnmatch.rst:64
+#: library/fnmatch.rst:70
 msgid ""
 "import fnmatch\n"
 "import os\n"
@@ -118,35 +126,35 @@ msgid ""
 "        print(file)"
 msgstr ""
 
-#: library/fnmatch.rst:74
+#: library/fnmatch.rst:80
 msgid ""
 "Test whether the filename string *name* matches the pattern string *pat*, "
 "returning ``True`` or ``False``; the comparison is case-sensitive and does "
 "not apply :func:`os.path.normcase`."
 msgstr ""
 
-#: library/fnmatch.rst:81
+#: library/fnmatch.rst:87
 msgid ""
-"Construct a list from those elements of the :term:`iterable` *names* that "
-"match pattern *pat*. It is the same as ``[n for n in names if fnmatch(n, "
-"pat)]``, but implemented more efficiently."
+"Construct a list from those elements of the :term:`iterable` of filename "
+"strings *names* that match the pattern string *pat*. It is the same as ``[n "
+"for n in names if fnmatch(n, pat)]``, but implemented more efficiently."
 msgstr ""
 
-#: library/fnmatch.rst:89
+#: library/fnmatch.rst:95
 msgid ""
 "Return the shell-style pattern *pat* converted to a regular expression for "
-"using with :func:`re.match`."
+"using with :func:`re.match`. The pattern is expected to be a :class:`str`."
 msgstr ""
 
-#: library/fnmatch.rst:92
+#: library/fnmatch.rst:98
 msgid "Example:"
 msgstr ""
 
-#: library/fnmatch.rst:106
+#: library/fnmatch.rst:112
 msgid "Module :mod:`glob`"
 msgstr ""
 
-#: library/fnmatch.rst:107
+#: library/fnmatch.rst:113
 msgid "Unix shell-style path expansion."
 msgstr ""
 
diff --git a/library/functions.po b/library/functions.po
index 74464a713..9a8388e8f 100644
--- a/library/functions.po
+++ b/library/functions.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: 2023-03-08 10:13-0500\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -1833,9 +1833,9 @@ msgstr ""
 
 #: library/functions.rst:952
 msgid ""
-">>> s = input('--> ')  \n"
+">>> s = input('--> ')\n"
 "--> Monty Python's Flying Circus\n"
-">>> s  \n"
+">>> s\n"
 "\"Monty Python's Flying Circus\""
 msgstr ""
 
diff --git a/library/getopt.po b/library/getopt.po
index a32ea796a..cdc490c20 100644
--- a/library/getopt.po
+++ b/library/getopt.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -124,15 +124,44 @@ msgstr ""
 msgid "An example using only Unix style options:"
 msgstr ""
 
-#: library/getopt.rst:105
+#: library/getopt.rst:95
+msgid ""
+">>> import getopt\n"
+">>> args = '-a -b -cfoo -d bar a1 a2'.split()\n"
+">>> args\n"
+"['-a', '-b', '-cfoo', '-d', 'bar', 'a1', 'a2']\n"
+">>> optlist, args = getopt.getopt(args, 'abc:d:')\n"
+">>> optlist\n"
+"[('-a', ''), ('-b', ''), ('-c', 'foo'), ('-d', 'bar')]\n"
+">>> args\n"
+"['a1', 'a2']"
+msgstr ""
+
+#: library/getopt.rst:107
 msgid "Using long option names is equally easy:"
 msgstr ""
 
-#: library/getopt.rst:118
-msgid "In a script, typical usage is something like this::"
+#: library/getopt.rst:109
+msgid ""
+">>> s = '--condition=foo --testing --output-file abc.def -x a1 a2'\n"
+">>> args = s.split()\n"
+">>> args\n"
+"['--condition=foo', '--testing', '--output-file', 'abc.def', '-x', 'a1', "
+"'a2']\n"
+">>> optlist, args = getopt.getopt(args, 'x', [\n"
+"...     'condition=', 'output-file=', 'testing'])\n"
+">>> optlist\n"
+"[('--condition', 'foo'), ('--testing', ''), ('--output-file', 'abc.def'), ('-"
+"x', '')]\n"
+">>> args\n"
+"['a1', 'a2']"
+msgstr ""
+
+#: library/getopt.rst:122
+msgid "In a script, typical usage is something like this:"
 msgstr ""
 
-#: library/getopt.rst:120
+#: library/getopt.rst:124
 msgid ""
 "import getopt, sys\n"
 "\n"
@@ -164,14 +193,14 @@ msgid ""
 "    main()"
 msgstr ""
 
-#: library/getopt.rst:147
+#: library/getopt.rst:153
 msgid ""
 "Note that an equivalent command line interface could be produced with less "
 "code and more informative help and error messages by using the :mod:"
-"`argparse` module::"
+"`argparse` module:"
 msgstr ""
 
-#: library/getopt.rst:150
+#: library/getopt.rst:156
 msgid ""
 "import argparse\n"
 "\n"
@@ -184,10 +213,10 @@ msgid ""
 "    # ... do something with args.verbose .."
 msgstr ""
 
-#: library/getopt.rst:162
+#: library/getopt.rst:170
 msgid "Module :mod:`argparse`"
 msgstr ""
 
-#: library/getopt.rst:163
+#: library/getopt.rst:171
 msgid "Alternative command line option and argument parsing library."
 msgstr ""
diff --git a/library/http.cookies.po b/library/http.cookies.po
index e7fdce535..bbed89aed 100644
--- a/library/http.cookies.po
+++ b/library/http.cookies.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -132,9 +132,9 @@ msgstr ""
 #: library/http.cookies.rst:100
 msgid ""
 "Return a string representation suitable to be sent as HTTP headers. *attrs* "
-"and *header* are sent to each :class:`Morsel`'s :meth:`output` method. *sep* "
-"is used to join the headers together, and is by default the combination "
-"``'\\r\\n'`` (CRLF)."
+"and *header* are sent to each :class:`Morsel`'s :meth:`~Morsel.output` "
+"method. *sep* is used to join the headers together, and is by default the "
+"combination ``'\\r\\n'`` (CRLF)."
 msgstr ""
 
 #: library/http.cookies.rst:108
diff --git a/library/http.server.po b/library/http.server.po
index 5331d8808..500ea7eee 100644
--- a/library/http.server.po
+++ b/library/http.server.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -525,162 +525,158 @@ msgid ""
 "attribute :attr:`index_pages`."
 msgstr ""
 
-#: library/http.server.rst:423
+#: library/http.server.rst:424
 msgid ""
-":mod:`http.server` can also be invoked directly using the :option:`-m` "
-"switch of the interpreter.  Similar to the previous example, this serves "
-"files relative to the current directory::"
-msgstr ""
-
-#: library/http.server.rst:427
-msgid "python -m http.server"
+"This class is used to serve either files or output of CGI scripts from the "
+"current directory and below. Note that mapping HTTP hierarchic structure to "
+"local directory structure is exactly as in :class:`SimpleHTTPRequestHandler`."
 msgstr ""
 
-#: library/http.server.rst:429
+#: library/http.server.rst:430
 msgid ""
-"The server listens to port 8000 by default. The default can be overridden by "
-"passing the desired port number as an argument::"
+"CGI scripts run by the :class:`CGIHTTPRequestHandler` class cannot execute "
+"redirects (HTTP code 302), because code 200 (script output follows) is sent "
+"prior to execution of the CGI script.  This pre-empts the status code."
 msgstr ""
 
-#: library/http.server.rst:432
-msgid "python -m http.server 9000"
+#: library/http.server.rst:435
+msgid ""
+"The class will however, run the CGI script, instead of serving it as a file, "
+"if it guesses it to be a CGI script.  Only directory-based CGI are used --- "
+"the other common server configuration is to treat special extensions as "
+"denoting CGI scripts."
 msgstr ""
 
-#: library/http.server.rst:434
+#: library/http.server.rst:440
 msgid ""
-"By default, the server binds itself to all interfaces.  The option ``-b/--"
-"bind`` specifies a specific address to which it should bind. Both IPv4 and "
-"IPv6 addresses are supported. For example, the following command causes the "
-"server to bind to localhost only::"
+"The :func:`do_GET` and :func:`do_HEAD` functions are modified to run CGI "
+"scripts and serve the output, instead of serving files, if the request leads "
+"to somewhere below the ``cgi_directories`` path."
 msgstr ""
 
-#: library/http.server.rst:439
-msgid "python -m http.server --bind 127.0.0.1"
+#: library/http.server.rst:444
+msgid "The :class:`CGIHTTPRequestHandler` defines the following data member:"
 msgstr ""
 
-#: library/http.server.rst:441
-msgid "Added the ``--bind`` option."
+#: library/http.server.rst:448
+msgid ""
+"This defaults to ``['/cgi-bin', '/htbin']`` and describes directories to "
+"treat as containing CGI scripts."
 msgstr ""
 
-#: library/http.server.rst:444
-msgid "Support IPv6 in the ``--bind`` option."
+#: library/http.server.rst:451
+msgid "The :class:`CGIHTTPRequestHandler` defines the following method:"
 msgstr ""
 
-#: library/http.server.rst:447
+#: library/http.server.rst:455
 msgid ""
-"By default, the server uses the current directory. The option ``-d/--"
-"directory`` specifies a directory to which it should serve the files. For "
-"example, the following command uses a specific directory::"
+"This method serves the ``'POST'`` request type, only allowed for CGI "
+"scripts.  Error 501, \"Can only POST to CGI scripts\", is output when trying "
+"to POST to a non-CGI url."
 msgstr ""
 
-#: library/http.server.rst:451
-msgid "python -m http.server --directory /tmp/"
+#: library/http.server.rst:459
+msgid ""
+"Note that CGI scripts will be run with UID of user nobody, for security "
+"reasons.  Problems with the CGI script will be translated to error 403."
 msgstr ""
 
-#: library/http.server.rst:453
-msgid "Added the ``--directory`` option."
+#: library/http.server.rst:466
+msgid "Command-line interface"
 msgstr ""
 
-#: library/http.server.rst:456
+#: library/http.server.rst:468
 msgid ""
-"By default, the server is conformant to HTTP/1.0. The option ``-p/--"
-"protocol`` specifies the HTTP version to which the server is conformant. For "
-"example, the following command runs an HTTP/1.1 conformant server::"
+":mod:`http.server` can also be invoked directly using the :option:`-m` "
+"switch of the interpreter.  The following example illustrates how to serve "
+"files relative to the current directory::"
 msgstr ""
 
-#: library/http.server.rst:460
-msgid "python -m http.server --protocol HTTP/1.1"
+#: library/http.server.rst:472
+msgid "python -m http.server [OPTIONS] [port]"
 msgstr ""
 
-#: library/http.server.rst:462
-msgid "Added the ``--protocol`` option."
+#: library/http.server.rst:474
+msgid "The following options are accepted:"
 msgstr ""
 
-#: library/http.server.rst:467
+#: library/http.server.rst:480
 msgid ""
-"This class is used to serve either files or output of CGI scripts from the "
-"current directory and below. Note that mapping HTTP hierarchic structure to "
-"local directory structure is exactly as in :class:`SimpleHTTPRequestHandler`."
+"The server listens to port 8000 by default. The default can be overridden by "
+"passing the desired port number as an argument::"
 msgstr ""
 
-#: library/http.server.rst:473
-msgid ""
-"CGI scripts run by the :class:`CGIHTTPRequestHandler` class cannot execute "
-"redirects (HTTP code 302), because code 200 (script output follows) is sent "
-"prior to execution of the CGI script.  This pre-empts the status code."
+#: library/http.server.rst:483
+msgid "python -m http.server 9000"
 msgstr ""
 
-#: library/http.server.rst:478
+#: library/http.server.rst:487
 msgid ""
-"The class will however, run the CGI script, instead of serving it as a file, "
-"if it guesses it to be a CGI script.  Only directory-based CGI are used --- "
-"the other common server configuration is to treat special extensions as "
-"denoting CGI scripts."
+"Specifies a specific address to which it should bind. Both IPv4 and IPv6 "
+"addresses are supported. By default, the server binds itself to all "
+"interfaces. For example, the following command causes the server to bind to "
+"localhost only::"
 msgstr ""
 
-#: library/http.server.rst:483
-msgid ""
-"The :func:`do_GET` and :func:`do_HEAD` functions are modified to run CGI "
-"scripts and serve the output, instead of serving files, if the request leads "
-"to somewhere below the ``cgi_directories`` path."
+#: library/http.server.rst:492
+msgid "python -m http.server --bind 127.0.0.1"
 msgstr ""
 
-#: library/http.server.rst:487
-msgid "The :class:`CGIHTTPRequestHandler` defines the following data member:"
+#: library/http.server.rst:496
+msgid "Support IPv6 in the ``--bind`` option."
 msgstr ""
 
-#: library/http.server.rst:491
+#: library/http.server.rst:501
 msgid ""
-"This defaults to ``['/cgi-bin', '/htbin']`` and describes directories to "
-"treat as containing CGI scripts."
+"Specifies a directory to which it should serve the files. By default, the "
+"server uses the current directory. For example, the following command uses a "
+"specific directory::"
 msgstr ""
 
-#: library/http.server.rst:494
-msgid "The :class:`CGIHTTPRequestHandler` defines the following method:"
+#: library/http.server.rst:505
+msgid "python -m http.server --directory /tmp/"
 msgstr ""
 
-#: library/http.server.rst:498
+#: library/http.server.rst:511
 msgid ""
-"This method serves the ``'POST'`` request type, only allowed for CGI "
-"scripts.  Error 501, \"Can only POST to CGI scripts\", is output when trying "
-"to POST to a non-CGI url."
+"Specifies the HTTP version to which the server is conformant. By default, "
+"the server is conformant to HTTP/1.0. For example, the following command "
+"runs an HTTP/1.1 conformant server::"
 msgstr ""
 
-#: library/http.server.rst:502
-msgid ""
-"Note that CGI scripts will be run with UID of user nobody, for security "
-"reasons.  Problems with the CGI script will be translated to error 403."
+#: library/http.server.rst:515
+msgid "python -m http.server --protocol HTTP/1.1"
 msgstr ""
 
-#: library/http.server.rst:505
+#: library/http.server.rst:521
 msgid ""
 ":class:`CGIHTTPRequestHandler` can be enabled in the command line by passing "
 "the ``--cgi`` option::"
 msgstr ""
 
-#: library/http.server.rst:508
+#: library/http.server.rst:524
 msgid "python -m http.server --cgi"
 msgstr ""
 
-#: library/http.server.rst:512
+#: library/http.server.rst:528
 msgid ""
-":class:`CGIHTTPRequestHandler` and the ``--cgi`` command line option are not "
+":class:`CGIHTTPRequestHandler` and the ``--cgi`` command-line option are not "
 "intended for use by untrusted clients and may be vulnerable to exploitation. "
 "Always use within a secure environment."
 msgstr ""
 
-#: library/http.server.rst:519
-msgid "Security Considerations"
+#: library/http.server.rst:536
+msgid "Security considerations"
 msgstr ""
 
-#: library/http.server.rst:523
+#: library/http.server.rst:540
 msgid ""
 ":class:`SimpleHTTPRequestHandler` will follow symbolic links when handling "
 "requests, this makes it possible for files outside of the specified "
 "directory to be served."
 msgstr ""
 
-#: library/http.server.rst:527
+#: library/http.server.rst:544
 msgid ""
 "Earlier versions of Python did not scrub control characters from the log "
 "messages emitted to stderr from ``python -m http.server`` or the default :"
@@ -689,7 +685,7 @@ msgid ""
 "codes to your terminal."
 msgstr ""
 
-#: library/http.server.rst:533
+#: library/http.server.rst:550
 msgid "Control characters are scrubbed in stderr logs."
 msgstr ""
 
@@ -717,10 +713,10 @@ msgstr ""
 msgid "httpd"
 msgstr ""
 
-#: library/http.server.rst:521
+#: library/http.server.rst:538
 msgid "http.server"
 msgstr ""
 
-#: library/http.server.rst:521
+#: library/http.server.rst:538
 msgid "security"
 msgstr ""
diff --git a/library/idle.po b/library/idle.po
index fbb500c1a..6ce432466 100644
--- a/library/idle.po
+++ b/library/idle.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -16,59 +16,59 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: library/idle.rst:10
-msgid "IDLE"
+#: library/idle.rst:4
+msgid "IDLE --- Python editor and shell"
 msgstr ""
 
 #: library/idle.rst:8
 msgid "**Source code:** :source:`Lib/idlelib/`"
 msgstr ""
 
-#: library/idle.rst:17
+#: library/idle.rst:20
 msgid "IDLE is Python's Integrated Development and Learning Environment."
 msgstr ""
 
-#: library/idle.rst:19
+#: library/idle.rst:22
 msgid "IDLE has the following features:"
 msgstr ""
 
-#: library/idle.rst:21
+#: library/idle.rst:24
 msgid "cross-platform: works mostly the same on Windows, Unix, and macOS"
 msgstr ""
 
-#: library/idle.rst:23
+#: library/idle.rst:26
 msgid ""
 "Python shell window (interactive interpreter) with colorizing of code input, "
 "output, and error messages"
 msgstr ""
 
-#: library/idle.rst:26
+#: library/idle.rst:29
 msgid ""
 "multi-window text editor with multiple undo, Python colorizing, smart "
 "indent, call tips, auto completion, and other features"
 msgstr ""
 
-#: library/idle.rst:29
+#: library/idle.rst:32
 msgid ""
 "search within any window, replace within editor windows, and search through "
 "multiple files (grep)"
 msgstr ""
 
-#: library/idle.rst:32
+#: library/idle.rst:35
 msgid ""
 "debugger with persistent breakpoints, stepping, and viewing of global and "
 "local namespaces"
 msgstr ""
 
-#: library/idle.rst:35
+#: library/idle.rst:38
 msgid "configuration, browsers, and other dialogs"
 msgstr ""
 
-#: library/idle.rst:38
+#: library/idle.rst:41
 msgid "Menus"
 msgstr ""
 
-#: library/idle.rst:40
+#: library/idle.rst:43
 msgid ""
 "IDLE has two main window types, the Shell window and the Editor window.  It "
 "is possible to have multiple editor windows simultaneously.  On Windows and "
@@ -76,81 +76,81 @@ msgid ""
 "which window type it is associated with."
 msgstr ""
 
-#: library/idle.rst:45
+#: library/idle.rst:48
 msgid ""
 "Output windows, such as used for Edit => Find in Files, are a subtype of "
 "editor window.  They currently have the same top menu but a different "
 "default title and context menu."
 msgstr ""
 
-#: library/idle.rst:49
+#: library/idle.rst:52
 msgid ""
 "On macOS, there is one application menu.  It dynamically changes according "
 "to the window currently selected.  It has an IDLE menu, and some entries "
 "described below are moved around to conform to Apple guidelines."
 msgstr ""
 
-#: library/idle.rst:54
+#: library/idle.rst:57
 msgid "File menu (Shell and Editor)"
 msgstr ""
 
-#: library/idle.rst:56
+#: library/idle.rst:59
 msgid "New File"
 msgstr ""
 
-#: library/idle.rst:57
+#: library/idle.rst:60
 msgid "Create a new file editing window."
 msgstr ""
 
-#: library/idle.rst:59
+#: library/idle.rst:62
 msgid "Open..."
 msgstr ""
 
-#: library/idle.rst:60
+#: library/idle.rst:63
 msgid "Open an existing file with an Open dialog."
 msgstr ""
 
-#: library/idle.rst:62
+#: library/idle.rst:65
 msgid "Open Module..."
 msgstr ""
 
-#: library/idle.rst:63
+#: library/idle.rst:66
 msgid "Open an existing module (searches sys.path)."
 msgstr ""
 
-#: library/idle.rst:65
+#: library/idle.rst:68
 msgid "Recent Files"
 msgstr ""
 
-#: library/idle.rst:66
+#: library/idle.rst:69
 msgid "Open a list of recent files.  Click one to open it."
 msgstr ""
 
-#: library/idle.rst:72
+#: library/idle.rst:75
 msgid "Module Browser"
 msgstr ""
 
-#: library/idle.rst:73
+#: library/idle.rst:76
 msgid ""
 "Show functions, classes, and methods in the current Editor file in a tree "
 "structure.  In the shell, open a module first."
 msgstr ""
 
-#: library/idle.rst:76
+#: library/idle.rst:79
 msgid "Path Browser"
 msgstr ""
 
-#: library/idle.rst:77
+#: library/idle.rst:80
 msgid ""
 "Show sys.path directories, modules, functions, classes and methods in a tree "
 "structure."
 msgstr ""
 
-#: library/idle.rst:80
+#: library/idle.rst:83
 msgid "Save"
 msgstr ""
 
-#: library/idle.rst:81
+#: library/idle.rst:84
 msgid ""
 "Save the current window to the associated file, if there is one.  Windows "
 "that have been changed since being opened or last saved have a \\* before "
@@ -158,11 +158,11 @@ msgid ""
 "instead."
 msgstr ""
 
-#: library/idle.rst:86
+#: library/idle.rst:89
 msgid "Save As..."
 msgstr ""
 
-#: library/idle.rst:87
+#: library/idle.rst:90
 msgid ""
 "Save the current window with a Save As dialog.  The file saved becomes the "
 "new associated file for the window. (If your file namager is set to hide "
@@ -171,280 +171,280 @@ msgid ""
 "text files, except that on macOS Aqua,'.py' is added for all files.)"
 msgstr ""
 
-#: library/idle.rst:93
+#: library/idle.rst:96
 msgid "Save Copy As..."
 msgstr ""
 
-#: library/idle.rst:94
+#: library/idle.rst:97
 msgid ""
 "Save the current window to different file without changing the associated "
 "file.  (See Save As note above about filename extensions.)"
 msgstr ""
 
-#: library/idle.rst:97
+#: library/idle.rst:100
 msgid "Print Window"
 msgstr ""
 
-#: library/idle.rst:98
+#: library/idle.rst:101
 msgid "Print the current window to the default printer."
 msgstr ""
 
-#: library/idle.rst:100
+#: library/idle.rst:103
 msgid "Close Window"
 msgstr ""
 
-#: library/idle.rst:101
+#: library/idle.rst:104
 msgid ""
 "Close the current window (if an unsaved editor, ask to save; if an unsaved "
 "Shell, ask to quit execution).  Calling ``exit()`` or ``close()`` in the "
 "Shell window also closes Shell.  If this is the only window, also exit IDLE."
 msgstr ""
 
-#: library/idle.rst:105
+#: library/idle.rst:108
 msgid "Exit IDLE"
 msgstr ""
 
-#: library/idle.rst:106
+#: library/idle.rst:109
 msgid "Close all windows and quit IDLE (ask to save unsaved edit windows)."
 msgstr ""
 
-#: library/idle.rst:109
+#: library/idle.rst:112
 msgid "Edit menu (Shell and Editor)"
 msgstr ""
 
-#: library/idle.rst:111
+#: library/idle.rst:114
 msgid "Undo"
 msgstr ""
 
-#: library/idle.rst:112
+#: library/idle.rst:115
 msgid ""
 "Undo the last change to the current window.  A maximum of 1000 changes may "
 "be undone."
 msgstr ""
 
-#: library/idle.rst:115
+#: library/idle.rst:118
 msgid "Redo"
 msgstr ""
 
-#: library/idle.rst:116
+#: library/idle.rst:119
 msgid "Redo the last undone change to the current window."
 msgstr ""
 
-#: library/idle.rst:118
+#: library/idle.rst:121
 msgid "Select All"
 msgstr ""
 
-#: library/idle.rst:119
+#: library/idle.rst:122
 msgid "Select the entire contents of the current window."
 msgstr ""
 
-#: library/idle.rst:353 library/idle.rst:367
+#: library/idle.rst:356 library/idle.rst:370
 msgid "Cut"
 msgstr ""
 
-#: library/idle.rst:368
+#: library/idle.rst:371
 msgid ""
 "Copy selection into the system-wide clipboard; then delete the selection."
 msgstr ""
 
-#: library/idle.rst:353 library/idle.rst:370
+#: library/idle.rst:356 library/idle.rst:373
 msgid "Copy"
 msgstr ""
 
-#: library/idle.rst:371
+#: library/idle.rst:374
 msgid "Copy selection into the system-wide clipboard."
 msgstr ""
 
-#: library/idle.rst:353 library/idle.rst:373
+#: library/idle.rst:356 library/idle.rst:376
 msgid "Paste"
 msgstr ""
 
-#: library/idle.rst:374
+#: library/idle.rst:377
 msgid "Insert contents of the system-wide clipboard into the current window."
 msgstr ""
 
-#: library/idle.rst:130
+#: library/idle.rst:133
 msgid "The clipboard functions are also available in context menus."
 msgstr ""
 
-#: library/idle.rst:132
+#: library/idle.rst:135
 msgid "Find..."
 msgstr ""
 
-#: library/idle.rst:133
+#: library/idle.rst:136
 msgid "Open a search dialog with many options"
 msgstr ""
 
-#: library/idle.rst:135
+#: library/idle.rst:138
 msgid "Find Again"
 msgstr ""
 
-#: library/idle.rst:136
+#: library/idle.rst:139
 msgid "Repeat the last search, if there is one."
 msgstr ""
 
-#: library/idle.rst:138
+#: library/idle.rst:141
 msgid "Find Selection"
 msgstr ""
 
-#: library/idle.rst:139
+#: library/idle.rst:142
 msgid "Search for the currently selected string, if there is one."
 msgstr ""
 
-#: library/idle.rst:141
+#: library/idle.rst:144
 msgid "Find in Files..."
 msgstr ""
 
-#: library/idle.rst:142
+#: library/idle.rst:145
 msgid "Open a file search dialog.  Put results in a new output window."
 msgstr ""
 
-#: library/idle.rst:144
+#: library/idle.rst:147
 msgid "Replace..."
 msgstr ""
 
-#: library/idle.rst:145
+#: library/idle.rst:148
 msgid "Open a search-and-replace dialog."
 msgstr ""
 
-#: library/idle.rst:147
+#: library/idle.rst:150
 msgid "Go to Line"
 msgstr ""
 
-#: library/idle.rst:148
+#: library/idle.rst:151
 msgid ""
 "Move the cursor to the beginning of the line requested and make that line "
 "visible.  A request past the end of the file goes to the end. Clear any "
 "selection and update the line and column status."
 msgstr ""
 
-#: library/idle.rst:152
+#: library/idle.rst:155
 msgid "Show Completions"
 msgstr ""
 
-#: library/idle.rst:153
+#: library/idle.rst:156
 msgid ""
 "Open a scrollable list allowing selection of existing names. See :ref:"
 "`Completions <completions>` in the Editing and navigation section below."
 msgstr ""
 
-#: library/idle.rst:156
+#: library/idle.rst:159
 msgid "Expand Word"
 msgstr ""
 
-#: library/idle.rst:157
+#: library/idle.rst:160
 msgid ""
 "Expand a prefix you have typed to match a full word in the same window; "
 "repeat to get a different expansion."
 msgstr ""
 
-#: library/idle.rst:160
+#: library/idle.rst:163
 msgid "Show Call Tip"
 msgstr ""
 
-#: library/idle.rst:161
+#: library/idle.rst:164
 msgid ""
 "After an unclosed parenthesis for a function, open a small window with "
 "function parameter hints.  See :ref:`Calltips <calltips>` in the Editing and "
 "navigation section below."
 msgstr ""
 
-#: library/idle.rst:165
+#: library/idle.rst:168
 msgid "Show Surrounding Parens"
 msgstr ""
 
-#: library/idle.rst:166
+#: library/idle.rst:169
 msgid "Highlight the surrounding parenthesis."
 msgstr ""
 
-#: library/idle.rst:171
+#: library/idle.rst:174
 msgid "Format menu (Editor window only)"
 msgstr ""
 
-#: library/idle.rst:173
+#: library/idle.rst:176
 msgid "Format Paragraph"
 msgstr ""
 
-#: library/idle.rst:174
+#: library/idle.rst:177
 msgid ""
 "Reformat the current blank-line-delimited paragraph in comment block or "
 "multiline string or selected line in a string.  All lines in the paragraph "
 "will be formatted to less than N columns, where N defaults to 72."
 msgstr ""
 
-#: library/idle.rst:178
+#: library/idle.rst:181
 msgid "Indent Region"
 msgstr ""
 
-#: library/idle.rst:179
+#: library/idle.rst:182
 msgid "Shift selected lines right by the indent width (default 4 spaces)."
 msgstr ""
 
-#: library/idle.rst:181
+#: library/idle.rst:184
 msgid "Dedent Region"
 msgstr ""
 
-#: library/idle.rst:182
+#: library/idle.rst:185
 msgid "Shift selected lines left by the indent width (default 4 spaces)."
 msgstr ""
 
-#: library/idle.rst:184
+#: library/idle.rst:187
 msgid "Comment Out Region"
 msgstr ""
 
-#: library/idle.rst:185
+#: library/idle.rst:188
 msgid "Insert ## in front of selected lines."
 msgstr ""
 
-#: library/idle.rst:187
+#: library/idle.rst:190
 msgid "Uncomment Region"
 msgstr ""
 
-#: library/idle.rst:188
+#: library/idle.rst:191
 msgid "Remove leading # or ## from selected lines."
 msgstr ""
 
-#: library/idle.rst:190
+#: library/idle.rst:193
 msgid "Tabify Region"
 msgstr ""
 
-#: library/idle.rst:191
+#: library/idle.rst:194
 msgid ""
 "Turn *leading* stretches of spaces into tabs. (Note: We recommend using 4 "
 "space blocks to indent Python code.)"
 msgstr ""
 
-#: library/idle.rst:194
+#: library/idle.rst:197
 msgid "Untabify Region"
 msgstr ""
 
-#: library/idle.rst:195
+#: library/idle.rst:198
 msgid "Turn *all* tabs into the correct number of spaces."
 msgstr ""
 
-#: library/idle.rst:197
+#: library/idle.rst:200
 msgid "Toggle Tabs"
 msgstr ""
 
-#: library/idle.rst:198
+#: library/idle.rst:201
 msgid "Open a dialog to switch between indenting with spaces and tabs."
 msgstr ""
 
-#: library/idle.rst:200
+#: library/idle.rst:203
 msgid "New Indent Width"
 msgstr ""
 
-#: library/idle.rst:201
+#: library/idle.rst:204
 msgid ""
 "Open a dialog to change indent width. The accepted default by the Python "
 "community is 4 spaces."
 msgstr ""
 
-#: library/idle.rst:204
+#: library/idle.rst:207
 msgid "Strip Trailing Chitespace"
 msgstr ""
 
-#: library/idle.rst:205
+#: library/idle.rst:208
 msgid ""
 "Remove trailing space and other whitespace characters after the last non-"
 "whitespace character of a line by applying str.rstrip to each line, "
@@ -452,15 +452,15 @@ msgid ""
 "extra newlines at the end of the file."
 msgstr ""
 
-#: library/idle.rst:214
+#: library/idle.rst:217
 msgid "Run menu (Editor window only)"
 msgstr ""
 
-#: library/idle.rst:218
+#: library/idle.rst:221
 msgid "Run Module"
 msgstr ""
 
-#: library/idle.rst:219
+#: library/idle.rst:222
 msgid ""
 "Do :ref:`Check Module <check-module>`.  If no error, restart the shell to "
 "clean the environment, then execute the module.  Output is displayed in the "
@@ -470,22 +470,22 @@ msgid ""
 "similar to executing a file with ``python -i file`` at a command line."
 msgstr ""
 
-#: library/idle.rst:229
+#: library/idle.rst:232
 msgid "Run... Customized"
 msgstr ""
 
-#: library/idle.rst:230
+#: library/idle.rst:233
 msgid ""
 "Same as :ref:`Run Module <run-module>`, but run the module with customized "
 "settings.  *Command Line Arguments* extend :data:`sys.argv` as if passed on "
 "a command line. The module can be run in the Shell without restarting."
 msgstr ""
 
-#: library/idle.rst:236
+#: library/idle.rst:239
 msgid "Check Module"
 msgstr ""
 
-#: library/idle.rst:237
+#: library/idle.rst:240
 msgid ""
 "Check the syntax of the module currently open in the Editor window. If the "
 "module has not been saved IDLE will either prompt the user to save or "
@@ -494,70 +494,70 @@ msgid ""
 "window."
 msgstr ""
 
-#: library/idle.rst:245
+#: library/idle.rst:248
 msgid "Python Shell"
 msgstr ""
 
-#: library/idle.rst:246
+#: library/idle.rst:249
 msgid "Open or wake up the Python Shell window."
 msgstr ""
 
-#: library/idle.rst:250
+#: library/idle.rst:253
 msgid "Shell menu (Shell window only)"
 msgstr ""
 
-#: library/idle.rst:252
+#: library/idle.rst:255
 msgid "View Last Restart"
 msgstr ""
 
-#: library/idle.rst:253
+#: library/idle.rst:256
 msgid "Scroll the shell window to the last Shell restart."
 msgstr ""
 
-#: library/idle.rst:255
+#: library/idle.rst:258
 msgid "Restart Shell"
 msgstr ""
 
-#: library/idle.rst:256
+#: library/idle.rst:259
 msgid ""
 "Restart the shell to clean the environment and reset display and exception "
 "handling."
 msgstr ""
 
-#: library/idle.rst:258
+#: library/idle.rst:261
 msgid "Previous History"
 msgstr ""
 
-#: library/idle.rst:259
+#: library/idle.rst:262
 msgid ""
 "Cycle through earlier commands in history which match the current entry."
 msgstr ""
 
-#: library/idle.rst:261
+#: library/idle.rst:264
 msgid "Next History"
 msgstr ""
 
-#: library/idle.rst:262
+#: library/idle.rst:265
 msgid "Cycle through later commands in history which match the current entry."
 msgstr ""
 
-#: library/idle.rst:264
+#: library/idle.rst:267
 msgid "Interrupt Execution"
 msgstr ""
 
-#: library/idle.rst:265
+#: library/idle.rst:268
 msgid "Stop a running program."
 msgstr ""
 
-#: library/idle.rst:268
+#: library/idle.rst:271
 msgid "Debug menu (Shell window only)"
 msgstr ""
 
-#: library/idle.rst:270
+#: library/idle.rst:273
 msgid "Go to File/Line"
 msgstr ""
 
-#: library/idle.rst:271
+#: library/idle.rst:274
 msgid ""
 "Look on the current line. with the cursor, and the line above for a filename "
 "and line number.  If found, open the file if not already open, and show the "
@@ -566,45 +566,45 @@ msgid ""
 "Shell window and Output windows."
 msgstr ""
 
-#: library/idle.rst:281
+#: library/idle.rst:284
 msgid "Debugger (toggle)"
 msgstr ""
 
-#: library/idle.rst:282
+#: library/idle.rst:285
 msgid ""
 "When activated, code entered in the Shell or run from an Editor will run "
 "under the debugger.  In the Editor, breakpoints can be set with the context "
 "menu.  This feature is still incomplete and somewhat experimental."
 msgstr ""
 
-#: library/idle.rst:286
+#: library/idle.rst:289
 msgid "Stack Viewer"
 msgstr ""
 
-#: library/idle.rst:287
+#: library/idle.rst:290
 msgid ""
 "Show the stack traceback of the last exception in a tree widget, with access "
 "to locals and globals."
 msgstr ""
 
-#: library/idle.rst:290
+#: library/idle.rst:293
 msgid "Auto-open Stack Viewer"
 msgstr ""
 
-#: library/idle.rst:291
+#: library/idle.rst:294
 msgid ""
 "Toggle automatically opening the stack viewer on an unhandled exception."
 msgstr ""
 
-#: library/idle.rst:294
+#: library/idle.rst:297
 msgid "Options menu (Shell and Editor)"
 msgstr ""
 
-#: library/idle.rst:296
+#: library/idle.rst:299
 msgid "Configure IDLE"
 msgstr ""
 
-#: library/idle.rst:297
+#: library/idle.rst:300
 msgid ""
 "Open a configuration dialog and change preferences for the following: fonts, "
 "indentation, keybindings, text color themes, startup windows and size, "
@@ -613,39 +613,39 @@ msgid ""
 "see :ref:`Setting preferences <preferences>` under Help and preferences."
 msgstr ""
 
-#: library/idle.rst:304
+#: library/idle.rst:307
 msgid ""
 "Most configuration options apply to all windows or all future windows. The "
 "option items below only apply to the active window."
 msgstr ""
 
-#: library/idle.rst:307
+#: library/idle.rst:310
 msgid "Show/Hide Code Context (Editor Window only)"
 msgstr ""
 
-#: library/idle.rst:308
+#: library/idle.rst:311
 msgid ""
 "Open a pane at the top of the edit window which shows the block context of "
 "the code which has scrolled above the top of the window.  See :ref:`Code "
 "Context <code-context>` in the Editing and Navigation section below."
 msgstr ""
 
-#: library/idle.rst:313
+#: library/idle.rst:316
 msgid "Show/Hide Line Numbers (Editor Window only)"
 msgstr ""
 
-#: library/idle.rst:314
+#: library/idle.rst:317
 msgid ""
 "Open a column to the left of the edit window which shows the number of each "
 "line of text.  The default is off, which may be changed in the preferences "
 "(see :ref:`Setting preferences <preferences>`)."
 msgstr ""
 
-#: library/idle.rst:318
+#: library/idle.rst:321
 msgid "Zoom/Restore Height"
 msgstr ""
 
-#: library/idle.rst:319
+#: library/idle.rst:322
 msgid ""
 "Toggles the window between normal size and maximum height. The initial size "
 "defaults to 40 lines by 80 chars unless changed on the General tab of the "
@@ -655,74 +655,74 @@ msgid ""
 "no effect when a window is maximized."
 msgstr ""
 
-#: library/idle.rst:327
+#: library/idle.rst:330
 msgid "Window menu (Shell and Editor)"
 msgstr ""
 
-#: library/idle.rst:329
+#: library/idle.rst:332
 msgid ""
 "Lists the names of all open windows; select one to bring it to the "
 "foreground (deiconifying it if necessary)."
 msgstr ""
 
-#: library/idle.rst:333
+#: library/idle.rst:336
 msgid "Help menu (Shell and Editor)"
 msgstr ""
 
-#: library/idle.rst:335
+#: library/idle.rst:338
 msgid "About IDLE"
 msgstr ""
 
-#: library/idle.rst:336
+#: library/idle.rst:339
 msgid "Display version, copyright, license, credits, and more."
 msgstr ""
 
-#: library/idle.rst:338
+#: library/idle.rst:341
 msgid "IDLE Help"
 msgstr ""
 
-#: library/idle.rst:339
+#: library/idle.rst:342
 msgid ""
 "Display this IDLE document, detailing the menu options, basic editing and "
 "navigation, and other tips."
 msgstr ""
 
-#: library/idle.rst:342
+#: library/idle.rst:345
 msgid "Python Docs"
 msgstr ""
 
-#: library/idle.rst:343
+#: library/idle.rst:346
 msgid ""
 "Access local Python documentation, if installed, or start a web browser and "
 "open docs.python.org showing the latest Python documentation."
 msgstr ""
 
-#: library/idle.rst:346
+#: library/idle.rst:349
 msgid "Turtle Demo"
 msgstr ""
 
-#: library/idle.rst:347
+#: library/idle.rst:350
 msgid "Run the turtledemo module with example Python code and turtle drawings."
 msgstr ""
 
-#: library/idle.rst:349
+#: library/idle.rst:352
 msgid ""
 "Additional help sources may be added here with the Configure IDLE dialog "
 "under the General tab. See the :ref:`Help sources <help-sources>` subsection "
 "below for more on Help menu choices."
 msgstr ""
 
-#: library/idle.rst:362
+#: library/idle.rst:365
 msgid "Context menus"
 msgstr ""
 
-#: library/idle.rst:364
+#: library/idle.rst:367
 msgid ""
 "Open a context menu by right-clicking in a window (Control-click on macOS). "
 "Context menus have the standard clipboard functions also on the Edit menu."
 msgstr ""
 
-#: library/idle.rst:376
+#: library/idle.rst:379
 msgid ""
 "Editor windows also have breakpoint functions.  Lines with a breakpoint set "
 "are specially marked.  Breakpoints only have an effect when running under "
@@ -730,66 +730,66 @@ msgid ""
 "directory."
 msgstr ""
 
-#: library/idle.rst:381
+#: library/idle.rst:384
 msgid "Set Breakpoint"
 msgstr ""
 
-#: library/idle.rst:382
+#: library/idle.rst:385
 msgid "Set a breakpoint on the current line."
 msgstr ""
 
-#: library/idle.rst:384
+#: library/idle.rst:387
 msgid "Clear Breakpoint"
 msgstr ""
 
-#: library/idle.rst:385
+#: library/idle.rst:388
 msgid "Clear the breakpoint on that line."
 msgstr ""
 
-#: library/idle.rst:387
+#: library/idle.rst:390
 msgid "Shell and Output windows also have the following."
 msgstr ""
 
-#: library/idle.rst:389
+#: library/idle.rst:392
 msgid "Go to file/line"
 msgstr ""
 
-#: library/idle.rst:390
+#: library/idle.rst:393
 msgid "Same as in Debug menu."
 msgstr ""
 
-#: library/idle.rst:392
+#: library/idle.rst:395
 msgid ""
 "The Shell window also has an output squeezing facility explained in the "
 "*Python Shell window* subsection below."
 msgstr ""
 
-#: library/idle.rst:395
+#: library/idle.rst:398
 msgid "Squeeze"
 msgstr ""
 
-#: library/idle.rst:396
+#: library/idle.rst:399
 msgid ""
 "If the cursor is over an output line, squeeze all the output between the "
 "code above and the prompt below down to a 'Squeezed text' label."
 msgstr ""
 
-#: library/idle.rst:403
+#: library/idle.rst:406
 msgid "Editing and Navigation"
 msgstr ""
 
-#: library/idle.rst:406
+#: library/idle.rst:409
 msgid "Editor windows"
 msgstr ""
 
-#: library/idle.rst:408
+#: library/idle.rst:411
 msgid ""
 "IDLE may open editor windows when it starts, depending on settings and how "
 "you start IDLE.  Thereafter, use the File menu.  There can be only one open "
 "editor window for a given file."
 msgstr ""
 
-#: library/idle.rst:412
+#: library/idle.rst:415
 msgid ""
 "The title bar contains the name of the file, the full path, and the version "
 "of Python and IDLE running the window.  The status bar contains the line "
@@ -797,17 +797,17 @@ msgid ""
 "numbers with 0."
 msgstr ""
 
-#: library/idle.rst:417
+#: library/idle.rst:420
 msgid ""
 "IDLE assumes that files with a known .py* extension contain Python code and "
 "that other files do not.  Run Python code with the Run menu."
 msgstr ""
 
-#: library/idle.rst:421
+#: library/idle.rst:424
 msgid "Key bindings"
 msgstr ""
 
-#: library/idle.rst:423
+#: library/idle.rst:426
 msgid ""
 "The IDLE insertion cursor is a thin vertical bar between character "
 "positions.  When characters are entered, the insertion cursor and everything "
@@ -815,7 +815,7 @@ msgid ""
 "the new space."
 msgstr ""
 
-#: library/idle.rst:428
+#: library/idle.rst:431
 msgid ""
 "Several non-character keys move the cursor and possibly delete characters.  "
 "Deletion does not puts text on the clipboard, but IDLE has an undo list.  "
@@ -824,52 +824,52 @@ msgid ""
 "discussions assume that the keys have not been re-bound to something else.)"
 msgstr ""
 
-#: library/idle.rst:435
+#: library/idle.rst:438
 msgid "Arrow keys move the cursor one character or line."
 msgstr ""
 
-#: library/idle.rst:437
+#: library/idle.rst:440
 msgid ""
 ":kbd:`C-LeftArrow` and :kbd:`C-RightArrow` moves left or right one word."
 msgstr ""
 
-#: library/idle.rst:439
+#: library/idle.rst:442
 msgid ":kbd:`Home` and :kbd:`End` go to the beginning or end of the line."
 msgstr ""
 
-#: library/idle.rst:441
+#: library/idle.rst:444
 msgid ":kbd:`Page Up` and :kbd:`Page Down` go up or down one screen."
 msgstr ""
 
-#: library/idle.rst:443
+#: library/idle.rst:446
 msgid ":kbd:`C-Home` and :kbd:`C-End` go to beginning or end of the file."
 msgstr ""
 
-#: library/idle.rst:445
+#: library/idle.rst:448
 msgid ""
 ":kbd:`Backspace` and :kbd:`Del` (or :kbd:`C-d`) delete the previous or next "
 "character."
 msgstr ""
 
-#: library/idle.rst:448
+#: library/idle.rst:451
 msgid ":kbd:`C-Backspace` and :kbd:`C-Del` delete one word left or right."
 msgstr ""
 
-#: library/idle.rst:450
+#: library/idle.rst:453
 msgid ":kbd:`C-k` deletes ('kills') everything to the right."
 msgstr ""
 
-#: library/idle.rst:452
+#: library/idle.rst:455
 msgid ""
 "Standard keybindings (like :kbd:`C-c` to copy and :kbd:`C-v` to paste) may "
 "work.  Keybindings are selected in the Configure IDLE dialog."
 msgstr ""
 
-#: library/idle.rst:456
+#: library/idle.rst:459
 msgid "Automatic indentation"
 msgstr ""
 
-#: library/idle.rst:458
+#: library/idle.rst:461
 msgid ""
 "After a block-opening statement, the next line is indented by 4 spaces (in "
 "the Python Shell window by one tab).  After certain keywords (break, return "
@@ -879,17 +879,17 @@ msgid ""
 "tabs are restricted to four spaces due to Tcl/Tk limitations."
 msgstr ""
 
-#: library/idle.rst:465
+#: library/idle.rst:468
 msgid ""
 "See also the indent/dedent region commands on the :ref:`Format menu <format-"
 "menu>`."
 msgstr ""
 
-#: library/idle.rst:469
+#: library/idle.rst:472
 msgid "Search and Replace"
 msgstr ""
 
-#: library/idle.rst:471
+#: library/idle.rst:474
 msgid ""
 "Any selection becomes a search target.  However, only selections within a "
 "line work because searches are only performed within lines with the terminal "
@@ -897,11 +897,11 @@ msgid ""
 "interpreted according to the Python re module."
 msgstr ""
 
-#: library/idle.rst:479
+#: library/idle.rst:482
 msgid "Completions"
 msgstr ""
 
-#: library/idle.rst:481
+#: library/idle.rst:484
 msgid ""
 "Completions are supplied, when requested and available, for module names, "
 "attributes of classes or functions, or filenames.  Each request method "
@@ -914,7 +914,7 @@ msgid ""
 "box. A double click within the box selects and closes."
 msgstr ""
 
-#: library/idle.rst:492
+#: library/idle.rst:495
 msgid ""
 "One way to open a box is to type a key character and wait for a predefined "
 "interval.  This defaults to 2 seconds; customize it in the settings dialog.  "
@@ -926,7 +926,7 @@ msgid ""
 "directory name and a separator."
 msgstr ""
 
-#: library/idle.rst:502
+#: library/idle.rst:505
 msgid ""
 "Instead of waiting, or after a box is closed, open a completion box "
 "immediately with Show Completions on the Edit menu.  The default hot key is :"
@@ -937,7 +937,7 @@ msgid ""
 "directory."
 msgstr ""
 
-#: library/idle.rst:510
+#: library/idle.rst:513
 msgid ""
 "Hitting :kbd:`Tab` after a prefix usually has the same effect as Show "
 "Completions.  (With no prefix, it indents.)  However, if there is only one "
@@ -945,14 +945,14 @@ msgid ""
 "without opening a box."
 msgstr ""
 
-#: library/idle.rst:515
+#: library/idle.rst:518
 msgid ""
 "Invoking 'Show Completions', or hitting :kbd:`Tab` after a prefix, outside "
 "of a string and without a preceding '.' opens a box with keywords, builtin "
 "names, and available module-level names."
 msgstr ""
 
-#: library/idle.rst:519
+#: library/idle.rst:522
 msgid ""
 "When editing code in an editor (as oppose to Shell), increase the available "
 "module-level names by running your code and not restarting the Shell "
@@ -960,18 +960,18 @@ msgid ""
 "file.  This also increases possible attribute completions."
 msgstr ""
 
-#: library/idle.rst:525
+#: library/idle.rst:528
 msgid ""
 "Completion boxes initially exclude names beginning with '_' or, for modules, "
 "not included in '__all__'.  The hidden names can be accessed by typing '_' "
 "after '.', either before or after the box is opened."
 msgstr ""
 
-#: library/idle.rst:532
+#: library/idle.rst:535
 msgid "Calltips"
 msgstr ""
 
-#: library/idle.rst:534
+#: library/idle.rst:537
 msgid ""
 "A calltip is shown automatically when one types :kbd:`(` after the name of "
 "an *accessible* function.  A function name expression may include dots and "
@@ -981,7 +981,7 @@ msgid ""
 "or enter its shortcut to display a calltip."
 msgstr ""
 
-#: library/idle.rst:541
+#: library/idle.rst:544
 msgid ""
 "The calltip consists of the function's signature and docstring up to the "
 "latter's first blank line or the fifth non-blank line.  (Some builtin "
@@ -990,14 +990,14 @@ msgid ""
 "or name (keyword) only.  Details are subject to change."
 msgstr ""
 
-#: library/idle.rst:547
+#: library/idle.rst:550
 msgid ""
 "In Shell, the accessible functions depends on what modules have been "
 "imported into the user process, including those imported by Idle itself, and "
 "which definitions have been run, all since the last restart."
 msgstr ""
 
-#: library/idle.rst:551
+#: library/idle.rst:554
 msgid ""
 "For example, restart the Shell and enter ``itertools.count(``.  A calltip "
 "appears because Idle imports itertools into the user process for its own "
@@ -1007,18 +1007,18 @@ msgid ""
 "display a calltip."
 msgstr ""
 
-#: library/idle.rst:558
+#: library/idle.rst:561
 msgid ""
 "In an editor, import statements have no effect until one runs the file. One "
 "might want to run a file after writing import statements, after adding "
 "function definitions, or after opening an existing file."
 msgstr ""
 
-#: library/idle.rst:565
+#: library/idle.rst:568
 msgid "Code Context"
 msgstr ""
 
-#: library/idle.rst:567
+#: library/idle.rst:570
 msgid ""
 "Within an editor window containing Python code, code context can be toggled "
 "in order to show or hide a pane at the top of the window.  When shown, this "
@@ -1032,23 +1032,23 @@ msgid ""
 "the top of the editor."
 msgstr ""
 
-#: library/idle.rst:578
+#: library/idle.rst:581
 msgid ""
 "The text and background colors for the context pane can be configured under "
 "the Highlights tab in the Configure IDLE dialog."
 msgstr ""
 
-#: library/idle.rst:582
+#: library/idle.rst:585
 msgid "Shell window"
 msgstr ""
 
-#: library/idle.rst:584
+#: library/idle.rst:587
 msgid ""
 "In IDLE's Shell, enter, edit, and recall complete statements. (Most consoles "
 "and terminals only work with a single physical line at a time)."
 msgstr ""
 
-#: library/idle.rst:587
+#: library/idle.rst:590
 msgid ""
 "Submit a single-line statement for execution by hitting :kbd:`Return` with "
 "the cursor anywhere on the line.  If a line is extended with Backslash (:kbd:"
@@ -1056,7 +1056,7 @@ msgid ""
 "compound statement by entering a blank line after the statement."
 msgstr ""
 
-#: library/idle.rst:593
+#: library/idle.rst:596
 msgid ""
 "When one pastes code into Shell, it is not compiled and possibly executed "
 "until one hits :kbd:`Return`, as specified above. One may edit pasted code "
@@ -1065,7 +1065,7 @@ msgid ""
 "one."
 msgstr ""
 
-#: library/idle.rst:599
+#: library/idle.rst:602
 msgid ""
 "Lines containing ``RESTART`` mean that the user execution process has been "
 "re-started.  This occurs when the user execution process has crashed, when "
@@ -1073,38 +1073,38 @@ msgid ""
 "window."
 msgstr ""
 
-#: library/idle.rst:604
+#: library/idle.rst:607
 msgid ""
 "The editing features described in previous subsections work when entering "
 "code interactively.  IDLE's Shell window also responds to the following:"
 msgstr ""
 
-#: library/idle.rst:607
+#: library/idle.rst:610
 msgid ":kbd:`C-c` attempts to interrupt statement execution (but may fail)."
 msgstr ""
 
-#: library/idle.rst:609
+#: library/idle.rst:612
 msgid ":kbd:`C-d` closes Shell if typed at a ``>>>`` prompt."
 msgstr ""
 
-#: library/idle.rst:611
+#: library/idle.rst:614
 msgid ""
 ":kbd:`Alt-p` and :kbd:`Alt-n` (:kbd:`C-p` and :kbd:`C-n` on macOS) retrieve "
 "to the current prompt the previous or next previously entered statement that "
 "matches anything already typed."
 msgstr ""
 
-#: library/idle.rst:615
+#: library/idle.rst:618
 msgid ""
 ":kbd:`Return` while the cursor is on any previous statement appends the "
 "latter to anything already typed at the prompt."
 msgstr ""
 
-#: library/idle.rst:619
+#: library/idle.rst:622
 msgid "Text colors"
 msgstr ""
 
-#: library/idle.rst:621
+#: library/idle.rst:624
 msgid ""
 "Idle defaults to black on white text, but colors text with special meanings. "
 "For the shell, these are shell output, shell error, user output, and user "
@@ -1114,7 +1114,7 @@ msgid ""
 "(when present), found text (when possible), and selected text."
 msgstr ""
 
-#: library/idle.rst:628
+#: library/idle.rst:631
 msgid ""
 "IDLE also highlights the :ref:`soft keywords <soft-keywords>` :keyword:"
 "`match`, :keyword:`case <match>`, and :keyword:`_ <wildcard-patterns>` in "
@@ -1123,7 +1123,7 @@ msgid ""
 "patterns."
 msgstr ""
 
-#: library/idle.rst:634
+#: library/idle.rst:637
 msgid ""
 "Text coloring is done in the background, so uncolorized text is occasionally "
 "visible.  To change the color scheme, use the Configure IDLE dialog "
@@ -1131,11 +1131,11 @@ msgid ""
 "and text in popups and dialogs is not user-configurable."
 msgstr ""
 
-#: library/idle.rst:641
+#: library/idle.rst:644
 msgid "Startup and Code Execution"
 msgstr ""
 
-#: library/idle.rst:643
+#: library/idle.rst:646
 msgid ""
 "Upon startup with the ``-s`` option, IDLE will execute the file referenced "
 "by the environment variables :envvar:`IDLESTARTUP` or :envvar:"
@@ -1147,7 +1147,7 @@ msgid ""
 "modules."
 msgstr ""
 
-#: library/idle.rst:651
+#: library/idle.rst:654
 msgid ""
 "In addition, ``Tk`` also loads a startup file if it is present.  Note that "
 "the Tk file is loaded unconditionally.  This additional file is ``.Idle.py`` "
@@ -1156,49 +1156,90 @@ msgid ""
 "importing functions to be used from IDLE's Python shell."
 msgstr ""
 
-#: library/idle.rst:658
+#: library/idle.rst:661
 msgid "Command line usage"
 msgstr ""
 
-#: library/idle.rst:660
+#: library/idle.rst:665
 msgid ""
-"idle.py [-c command] [-d] [-e] [-h] [-i] [-r file] [-s] [-t title] [-] "
-"[arg] ...\n"
-"\n"
-"-c command  run command in the shell window\n"
-"-d          enable debugger and open shell window\n"
-"-e          open editor window\n"
-"-h          print help message with legal combinations and exit\n"
-"-i          open shell window\n"
-"-r file     run file in shell window\n"
-"-s          run $IDLESTARTUP or $PYTHONSTARTUP first, in shell window\n"
-"-t title    set title of shell window\n"
-"-           run stdin in shell (- must be last option before args)"
+"IDLE can be invoked from the command line with various options. The general "
+"syntax is:"
 msgstr ""
 
-#: library/idle.rst:674
-msgid "If there are arguments:"
+#: library/idle.rst:667
+msgid "python -m idlelib [options] [file ...]"
 msgstr ""
 
-#: library/idle.rst:676
+#: library/idle.rst:671
+msgid "The following options are available:"
+msgstr ""
+
+#: library/idle.rst:675
 msgid ""
-"If ``-``, ``-c``, or ``r`` is used, all arguments are placed in ``sys."
-"argv[1:...]`` and ``sys.argv[0]`` is set to ``''``, ``'-c'``, or ``'-r'``.  "
-"No editor window is opened, even if that is the default set in the Options "
-"dialog."
+"Run the specified Python command in the shell window. For example, pass ``-c "
+"\"print('Hello, World!')\"``. On Windows, the outer quotes must be double "
+"quotes as shown."
 msgstr ""
 
 #: library/idle.rst:681
-msgid ""
-"Otherwise, arguments are files opened for editing and ``sys.argv`` reflects "
-"the arguments passed to IDLE itself."
+msgid "Enable the debugger and open the shell window."
 msgstr ""
 
 #: library/idle.rst:685
+msgid "Open an editor window."
+msgstr ""
+
+#: library/idle.rst:689
+msgid "Print a help message with legal combinations of options and exit."
+msgstr ""
+
+#: library/idle.rst:693
+msgid "Open a shell window."
+msgstr ""
+
+#: library/idle.rst:697
+msgid "Run the specified file in the shell window."
+msgstr ""
+
+#: library/idle.rst:701
+msgid ""
+"Run the startup file (as defined by the environment variables :envvar:"
+"`IDLESTARTUP` or :envvar:`PYTHONSTARTUP`) before opening the shell window."
+msgstr ""
+
+#: library/idle.rst:705
+msgid "Set the title of the shell window."
+msgstr ""
+
+#: library/idle.rst:709
+msgid ""
+"Read and execute standard input in the shell window. This option must be the "
+"last one before any arguments."
+msgstr ""
+
+#: library/idle.rst:711
+msgid "If arguments are provided:"
+msgstr ""
+
+#: library/idle.rst:713
+msgid ""
+"If ``-``, ``-c``, or ``-r`` is used, all arguments are placed in ``sys."
+"argv[1:]``, and ``sys.argv[0]`` is set to ``''``, ``'-c'``, or ``'-r'`` "
+"respectively. No editor window is opened, even if that is the default set in "
+"the *Options* dialog."
+msgstr ""
+
+#: library/idle.rst:716
+msgid ""
+"Otherwise, arguments are treated as files to be opened for editing, and "
+"``sys.argv`` reflects the arguments passed to IDLE itself."
+msgstr ""
+
+#: library/idle.rst:720
 msgid "Startup failure"
 msgstr ""
 
-#: library/idle.rst:687
+#: library/idle.rst:722
 msgid ""
 "IDLE uses a socket to communicate between the IDLE GUI process and the user "
 "code execution process.  A connection must be established whenever the Shell "
@@ -1208,7 +1249,7 @@ msgid ""
 "directs the user here.  It then exits."
 msgstr ""
 
-#: library/idle.rst:694
+#: library/idle.rst:729
 msgid ""
 "One specific connection failure on Unix systems results from misconfigured "
 "masquerading rules somewhere in a system's network setup. When IDLE is "
@@ -1218,7 +1259,7 @@ msgid ""
 "``tcplisten <same args>`` in another."
 msgstr ""
 
-#: library/idle.rst:702
+#: library/idle.rst:737
 msgid ""
 "A common cause of failure is a user-written file with the same name as a "
 "standard library module, such as *random.py* and *tkinter.py*. When such a "
@@ -1227,7 +1268,7 @@ msgid ""
 "file."
 msgstr ""
 
-#: library/idle.rst:708
+#: library/idle.rst:743
 msgid ""
 "Though less common than in the past, an antivirus or firewall program may "
 "stop the connection.  If the program cannot be taught to allow the "
@@ -1237,7 +1278,7 @@ msgid ""
 "connections."
 msgstr ""
 
-#: library/idle.rst:715
+#: library/idle.rst:750
 msgid ""
 "Python installation issues occasionally stop IDLE: multiple versions can "
 "clash, or a single installation might need admin access.  If one undo the "
@@ -1245,7 +1286,7 @@ msgid ""
 "completely remove Python and start over."
 msgstr ""
 
-#: library/idle.rst:720
+#: library/idle.rst:755
 msgid ""
 "A zombie pythonw.exe process could be a problem.  On Windows, use Task "
 "Manager to check for one and stop it if there is.  Sometimes a restart "
@@ -1254,7 +1295,7 @@ msgid ""
 "may fix a temporary problem."
 msgstr ""
 
-#: library/idle.rst:726
+#: library/idle.rst:761
 msgid ""
 "When IDLE first starts, it attempts to read user configuration files in ``~/."
 "idlerc/`` (~ is one's home directory).  If there is a problem, an error "
@@ -1265,14 +1306,14 @@ msgid ""
 "with the settings dialog."
 msgstr ""
 
-#: library/idle.rst:734
+#: library/idle.rst:769
 msgid ""
 "If IDLE quits with no message, and it was not started from a console, try "
 "starting it from a console or terminal (``python -m idlelib``) and see if "
 "this results in an error message."
 msgstr ""
 
-#: library/idle.rst:738
+#: library/idle.rst:773
 msgid ""
 "On Unix-based systems with tcl/tk older than ``8.6.11`` (see ``About IDLE``) "
 "certain characters of certain fonts can cause a tk failure with a message to "
@@ -1281,11 +1322,11 @@ msgid ""
 "upgrade tcl/tk, then re-configure IDLE to use a font that works better."
 msgstr ""
 
-#: library/idle.rst:746
+#: library/idle.rst:781
 msgid "Running user code"
 msgstr ""
 
-#: library/idle.rst:748
+#: library/idle.rst:783
 msgid ""
 "With rare exceptions, the result of executing Python code with IDLE is "
 "intended to be the same as executing the same code by the default method, "
@@ -1295,7 +1336,7 @@ msgid ""
 "``threading.active_count()`` returns 2 instead of 1."
 msgstr ""
 
-#: library/idle.rst:755
+#: library/idle.rst:790
 msgid ""
 "By default, IDLE runs user code in a separate OS process rather than in the "
 "user interface process that runs the shell and editor.  In the execution "
@@ -1305,7 +1346,7 @@ msgid ""
 "__stderr__`` are not touched, but may be ``None``."
 msgstr ""
 
-#: library/idle.rst:762
+#: library/idle.rst:797
 msgid ""
 "Sending print output from one process to a text widget in another is slower "
 "than printing to a system terminal in the same process. This has the most "
@@ -1317,7 +1358,7 @@ msgid ""
 "fields and lines."
 msgstr ""
 
-#: library/idle.rst:771
+#: library/idle.rst:806
 msgid ""
 "IDLE's standard stream replacements are not inherited by subprocesses "
 "created in the execution process, whether directly by user code or by "
@@ -1328,14 +1369,14 @@ msgid ""
 "attached to that window for input and output."
 msgstr ""
 
-#: library/idle.rst:780
+#: library/idle.rst:815
 msgid ""
 "If ``sys`` is reset by user code, such as with ``importlib.reload(sys)``, "
 "IDLE's changes are lost and input from the keyboard and output to the screen "
 "will not work correctly."
 msgstr ""
 
-#: library/idle.rst:784
+#: library/idle.rst:819
 msgid ""
 "When Shell has the focus, it controls the keyboard and screen.  This is "
 "normally transparent, but functions that directly access the keyboard and "
@@ -1343,7 +1384,7 @@ msgid ""
 "determine whether a key has been pressed and if so, which."
 msgstr ""
 
-#: library/idle.rst:789
+#: library/idle.rst:824
 msgid ""
 "The IDLE code running in the execution process adds frames to the call stack "
 "that would not be there otherwise.  IDLE wraps ``sys.getrecursionlimit`` and "
@@ -1351,17 +1392,17 @@ msgid ""
 "frames."
 msgstr ""
 
-#: library/idle.rst:794
+#: library/idle.rst:829
 msgid ""
 "When user code raises SystemExit either directly or by calling sys.exit, "
 "IDLE returns to a Shell prompt instead of exiting."
 msgstr ""
 
-#: library/idle.rst:798
+#: library/idle.rst:833
 msgid "User output in Shell"
 msgstr ""
 
-#: library/idle.rst:800
+#: library/idle.rst:835
 msgid ""
 "When a program outputs text, the result is determined by the corresponding "
 "output device.  When IDLE executes user code, ``sys.stdout`` and ``sys."
@@ -1371,7 +1412,7 @@ msgid ""
 "rather than production runs."
 msgstr ""
 
-#: library/idle.rst:807
+#: library/idle.rst:842
 msgid ""
 "For instance, Shell never throws away output.  A program that sends "
 "unlimited output to Shell will eventually fill memory, resulting in a memory "
@@ -1380,7 +1421,7 @@ msgid ""
 "lines, with 300 the default."
 msgstr ""
 
-#: library/idle.rst:813
+#: library/idle.rst:848
 msgid ""
 "A Tk Text widget, and hence IDLE's Shell, displays characters (codepoints) "
 "in the BMP (Basic Multilingual Plane) subset of Unicode.  Which characters "
@@ -1394,7 +1435,7 @@ msgid ""
 "spacing behavior.) ::"
 msgstr ""
 
-#: library/idle.rst:823
+#: library/idle.rst:858
 msgid ""
 ">>> s = 'a\\tb\\a<\\x02><\\r>\\bc\\nd'  # Enter 22 chars.\n"
 ">>> len(s)\n"
@@ -1405,7 +1446,7 @@ msgid ""
 "# Result varies by OS and font.  Try it."
 msgstr ""
 
-#: library/idle.rst:831
+#: library/idle.rst:866
 msgid ""
 "The ``repr`` function is used for interactive echo of expression values.  It "
 "returns an altered version of the input string in which control codes, some "
@@ -1414,13 +1455,13 @@ msgid ""
 "regardless of how they are displayed."
 msgstr ""
 
-#: library/idle.rst:837
+#: library/idle.rst:872
 msgid ""
 "Normal and error output are generally kept separate (on separate lines) from "
 "code input and each other.  They each get different highlight colors."
 msgstr ""
 
-#: library/idle.rst:840
+#: library/idle.rst:875
 msgid ""
 "For SyntaxError tracebacks, the normal '^' marking where the error was "
 "detected is replaced by coloring the text with an error highlight. When code "
@@ -1429,7 +1470,7 @@ msgid ""
 "opened if necessary."
 msgstr ""
 
-#: library/idle.rst:846
+#: library/idle.rst:881
 msgid ""
 "Shell has a special facility for squeezing output lines down to a 'Squeezed "
 "text' label.  This is done automatically for output over N lines (N = 50 by "
@@ -1438,18 +1479,18 @@ msgid ""
 "on the output.  This can be useful lines long enough to slow down scrolling."
 msgstr ""
 
-#: library/idle.rst:854
+#: library/idle.rst:889
 msgid ""
 "Squeezed output is expanded in place by double-clicking the label. It can "
 "also be sent to the clipboard or a separate view window by right-clicking "
 "the label."
 msgstr ""
 
-#: library/idle.rst:859
+#: library/idle.rst:894
 msgid "Developing tkinter applications"
 msgstr ""
 
-#: library/idle.rst:861
+#: library/idle.rst:896
 msgid ""
 "IDLE is intentionally different from standard Python in order to facilitate "
 "development of tkinter programs.  Enter ``import tkinter as tk; root = tk."
@@ -1461,7 +1502,7 @@ msgid ""
 "changes in standard Python until one enters ``root.update()``."
 msgstr ""
 
-#: library/idle.rst:870
+#: library/idle.rst:905
 msgid ""
 "Most tkinter programs run ``root.mainloop()``, which usually does not return "
 "until the tk app is destroyed.  If the program is run with ``python -i`` or "
@@ -1469,7 +1510,7 @@ msgid ""
 "``mainloop()`` returns, at which time there is nothing left to interact with."
 msgstr ""
 
-#: library/idle.rst:876
+#: library/idle.rst:911
 msgid ""
 "When running a tkinter program from an IDLE editor, one can comment out the "
 "mainloop call.  One then gets a shell prompt immediately and can interact "
@@ -1477,11 +1518,11 @@ msgid ""
 "mainloop call when running in standard Python."
 msgstr ""
 
-#: library/idle.rst:882
+#: library/idle.rst:917
 msgid "Running without a subprocess"
 msgstr ""
 
-#: library/idle.rst:884
+#: library/idle.rst:919
 msgid ""
 "By default, IDLE executes user code in a separate subprocess via a socket, "
 "which uses the internal loopback interface.  This connection is not "
@@ -1489,7 +1530,7 @@ msgid ""
 "firewall software complains anyway, you can ignore it."
 msgstr ""
 
-#: library/idle.rst:889
+#: library/idle.rst:924
 msgid ""
 "If the attempt to make the socket connection fails, Idle will notify you. "
 "Such failures are sometimes transient, but if persistent, the problem may be "
@@ -1498,7 +1539,7 @@ msgid ""
 "command line switch."
 msgstr ""
 
-#: library/idle.rst:895
+#: library/idle.rst:930
 msgid ""
 "If IDLE is started with the -n command line switch it will run in a single "
 "process and will not create the subprocess which runs the RPC Python "
@@ -1512,15 +1553,15 @@ msgid ""
 "at all possible."
 msgstr ""
 
-#: library/idle.rst:910
+#: library/idle.rst:945
 msgid "Help and Preferences"
 msgstr ""
 
-#: library/idle.rst:915
+#: library/idle.rst:950
 msgid "Help sources"
 msgstr ""
 
-#: library/idle.rst:917
+#: library/idle.rst:952
 msgid ""
 "Help menu entry \"IDLE Help\" displays a formatted html version of the IDLE "
 "chapter of the Library Reference.  The result, in a read-only tkinter text "
@@ -1530,7 +1571,7 @@ msgid ""
 "the opened box."
 msgstr ""
 
-#: library/idle.rst:925
+#: library/idle.rst:960
 msgid ""
 "Help menu entry \"Python Docs\" opens the extensive sources of help, "
 "including tutorials, available at ``docs.python.org/x.y``, where 'x.y' is "
@@ -1539,17 +1580,17 @@ msgid ""
 "instead."
 msgstr ""
 
-#: library/idle.rst:931
+#: library/idle.rst:966
 msgid ""
 "Selected URLs can be added or removed from the help menu at any time using "
 "the General tab of the Configure IDLE dialog."
 msgstr ""
 
-#: library/idle.rst:937
+#: library/idle.rst:972
 msgid "Setting preferences"
 msgstr ""
 
-#: library/idle.rst:939
+#: library/idle.rst:974
 msgid ""
 "The font preferences, highlighting, keys, and general preferences can be "
 "changed via Configure IDLE on the Option menu. Non-default user settings are "
@@ -1558,7 +1599,7 @@ msgid ""
 "or more of the files in ``.idlerc``."
 msgstr ""
 
-#: library/idle.rst:945
+#: library/idle.rst:980
 msgid ""
 "On the Font tab, see the text sample for the effect of font face and size on "
 "multiple characters in multiple languages.  Edit the sample to add other "
@@ -1567,7 +1608,7 @@ msgid ""
 "them to the top of the sample and try changing first size and then font."
 msgstr ""
 
-#: library/idle.rst:952
+#: library/idle.rst:987
 msgid ""
 "On the Highlights and Keys tab, select a built-in or custom color theme and "
 "key set.  To use a newer built-in color theme or key set with older IDLEs, "
@@ -1575,22 +1616,22 @@ msgid ""
 "IDLEs."
 msgstr ""
 
-#: library/idle.rst:958
+#: library/idle.rst:993
 msgid "IDLE on macOS"
 msgstr ""
 
-#: library/idle.rst:960
+#: library/idle.rst:995
 msgid ""
 "Under System Preferences: Dock, one can set \"Prefer tabs when opening "
 "documents\" to \"Always\".  This setting is not compatible with the tk/"
 "tkinter GUI framework used by IDLE, and it breaks a few IDLE features."
 msgstr ""
 
-#: library/idle.rst:965
+#: library/idle.rst:1000
 msgid "Extensions"
 msgstr ""
 
-#: library/idle.rst:967
+#: library/idle.rst:1002
 msgid ""
 "IDLE contains an extension facility.  Preferences for extensions can be "
 "changed with the Extensions tab of the preferences dialog. See the beginning "
@@ -1599,21 +1640,21 @@ msgid ""
 "testing."
 msgstr ""
 
-#: library/idle.rst:975
-msgid "idlelib"
+#: library/idle.rst:1010
+msgid "idlelib --- implementation of IDLE application"
 msgstr ""
 
-#: library/idle.rst:980
+#: library/idle.rst:1015
 msgid "**Source code:** :source:`Lib/idlelib`"
 msgstr ""
 
-#: library/idle.rst:984
+#: library/idle.rst:1019
 msgid ""
 "The Lib/idlelib package implements the IDLE application.  See the rest of "
 "this page for how to use IDLE."
 msgstr ""
 
-#: library/idle.rst:987
+#: library/idle.rst:1022
 msgid ""
 "The files in idlelib are described in idlelib/README.txt.  Access it either "
 "in idlelib or click Help => About IDLE on the IDLE menu.  This file also "
@@ -1622,6 +1663,10 @@ msgid ""
 "changes can be backported (see :pep:`434`)."
 msgstr ""
 
+#: library/idle.rst:10
+msgid "IDLE"
+msgstr ""
+
 #: library/idle.rst:10
 msgid "Python Editor"
 msgstr ""
@@ -1630,26 +1675,26 @@ msgstr ""
 msgid "Integrated Development Environment"
 msgstr ""
 
-#: library/idle.rst:68
+#: library/idle.rst:71
 msgid "Module browser"
 msgstr ""
 
-#: library/idle.rst:68
+#: library/idle.rst:71
 msgid "Path browser"
 msgstr ""
 
-#: library/idle.rst:210
+#: library/idle.rst:213
 msgid "Run script"
 msgstr ""
 
-#: library/idle.rst:277
+#: library/idle.rst:280
 msgid "debugger"
 msgstr ""
 
-#: library/idle.rst:277
+#: library/idle.rst:280
 msgid "stack viewer"
 msgstr ""
 
-#: library/idle.rst:353
+#: library/idle.rst:356
 msgid "breakpoints"
 msgstr ""
diff --git a/library/imp.po b/library/imp.po
new file mode 100644
index 000000000..667b4cf41
--- /dev/null
+++ b/library/imp.po
@@ -0,0 +1,40 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) 2001-2025, Python Software Foundation
+# This file is distributed under the same license as the Python package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Python 3.12\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: library/imp.rst:2
+msgid ":mod:`!imp` --- Access the import internals"
+msgstr ""
+
+#: library/imp.rst:10
+msgid ""
+"This module is no longer part of the Python standard library. It was :ref:"
+"`removed in Python 3.12 <whatsnew312-removed-imp>` after being deprecated in "
+"Python 3.4."
+msgstr ""
+
+#: library/imp.rst:14
+msgid ""
+"The :ref:`removal notice <whatsnew312-removed-imp>` includes guidance for "
+"migrating code from :mod:`!imp` to :mod:`importlib`."
+msgstr ""
+
+#: library/imp.rst:17
+msgid ""
+"The last version of Python that provided the :mod:`!imp` module was `Python "
+"3.11 <https://docs.python.org/3.11/library/imp.html>`_."
+msgstr ""
diff --git a/library/importlib.metadata.po b/library/importlib.metadata.po
index b4badfd25..d05ce6ffb 100644
--- a/library/importlib.metadata.po
+++ b/library/importlib.metadata.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -110,8 +110,8 @@ msgstr ""
 #: library/importlib.metadata.rst:82
 msgid ""
 "(example) $ python\n"
-">>> from importlib.metadata import version  \n"
-">>> version('wheel')  \n"
+">>> from importlib.metadata import version\n"
+">>> version('wheel')\n"
 "'0.32.3'"
 msgstr ""
 
@@ -129,7 +129,7 @@ msgstr ""
 
 #: library/importlib.metadata.rst:95
 msgid ""
-">>> list(metadata('wheel'))  \n"
+">>> list(metadata('wheel'))\n"
 "['Metadata-Version', 'Name', 'Version', 'Summary', 'Home-page', 'Author', "
 "'Author-email', 'Maintainer', 'Maintainer-email', 'License', 'Project-URL', "
 "'Project-URL', 'Project-URL', 'Keywords', 'Platform', 'Classifier', "
@@ -187,9 +187,9 @@ msgstr ""
 
 #: library/importlib.metadata.rst:136
 msgid ""
-"Also provides a ``.groups`` attribute that reports all identifed entry point "
-"groups, and a ``.names`` attribute that reports all identified entry point "
-"names."
+"Also provides a ``.groups`` attribute that reports all identified entry "
+"point groups, and a ``.names`` attribute that reports all identified entry "
+"point names."
 msgstr ""
 
 #: library/importlib.metadata.rst:142
@@ -210,7 +210,7 @@ msgid "Query all entry points::"
 msgstr ""
 
 #: library/importlib.metadata.rst:152
-msgid ">>> eps = entry_points()  "
+msgid ">>> eps = entry_points()"
 msgstr ""
 
 #: library/importlib.metadata.rst:154
@@ -222,7 +222,7 @@ msgstr ""
 
 #: library/importlib.metadata.rst:158
 msgid ""
-">>> sorted(eps.groups)  \n"
+">>> sorted(eps.groups)\n"
 "['console_scripts', 'distutils.commands', 'distutils.setup_keywords', "
 "'egg_info.writers', 'setuptools.installation']"
 msgstr ""
@@ -235,7 +235,7 @@ msgid ""
 msgstr ""
 
 #: library/importlib.metadata.rst:165
-msgid ">>> scripts = eps.select(group='console_scripts')  "
+msgid ">>> scripts = eps.select(group='console_scripts')"
 msgstr ""
 
 #: library/importlib.metadata.rst:167
@@ -245,7 +245,7 @@ msgid ""
 msgstr ""
 
 #: library/importlib.metadata.rst:170
-msgid ">>> scripts = entry_points(group='console_scripts')  "
+msgid ">>> scripts = entry_points(group='console_scripts')"
 msgstr ""
 
 #: library/importlib.metadata.rst:172
@@ -255,9 +255,9 @@ msgstr ""
 
 #: library/importlib.metadata.rst:174
 msgid ""
-">>> 'wheel' in scripts.names  \n"
+">>> 'wheel' in scripts.names\n"
 "True\n"
-">>> wheel = scripts['wheel']  "
+">>> wheel = scripts['wheel']"
 msgstr ""
 
 #: library/importlib.metadata.rst:178
@@ -266,8 +266,8 @@ msgstr ""
 
 #: library/importlib.metadata.rst:180
 msgid ""
-">>> (wheel,) = entry_points(group='console_scripts', name='wheel')  \n"
-">>> (wheel,) = entry_points().select(group='console_scripts', name='wheel')  "
+">>> (wheel,) = entry_points(group='console_scripts', name='wheel')\n"
+">>> (wheel,) = entry_points().select(group='console_scripts', name='wheel')"
 msgstr ""
 
 #: library/importlib.metadata.rst:183
@@ -276,16 +276,16 @@ msgstr ""
 
 #: library/importlib.metadata.rst:185
 msgid ""
-">>> wheel  \n"
+">>> wheel\n"
 "EntryPoint(name='wheel', value='wheel.cli:main', group='console_scripts')\n"
-">>> wheel.module  \n"
+">>> wheel.module\n"
 "'wheel.cli'\n"
-">>> wheel.attr  \n"
+">>> wheel.attr\n"
 "'main'\n"
-">>> wheel.extras  \n"
+">>> wheel.extras\n"
 "[]\n"
-">>> main = wheel.load()  \n"
-">>> main  \n"
+">>> main = wheel.load()\n"
+">>> main\n"
 "<function main at 0x103528488>"
 msgstr ""
 
@@ -322,9 +322,9 @@ msgid ""
 "package as a :class:`PackageMetadata` instance."
 msgstr ""
 
-#: library/importlib.metadata.rst:224 library/importlib.metadata.rst:272
-#: library/importlib.metadata.rst:293 library/importlib.metadata.rst:356
-#: library/importlib.metadata.rst:407
+#: library/importlib.metadata.rst:224 library/importlib.metadata.rst:273
+#: library/importlib.metadata.rst:294 library/importlib.metadata.rst:357
+#: library/importlib.metadata.rst:408
 msgid ""
 "Raises :exc:`PackageNotFoundError` if the named distribution package is not "
 "installed in the current Python environment."
@@ -351,7 +351,7 @@ msgid ""
 msgstr ""
 
 #: library/importlib.metadata.rst:238
-msgid ">>> wheel_metadata = metadata('wheel')  "
+msgid ">>> wheel_metadata = metadata('wheel')"
 msgstr ""
 
 #: library/importlib.metadata.rst:240
@@ -362,7 +362,7 @@ msgstr ""
 
 #: library/importlib.metadata.rst:243
 msgid ""
-">>> wheel_metadata['Requires-Python']  \n"
+">>> wheel_metadata['Requires-Python']\n"
 "'>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*'"
 msgstr ""
 
@@ -378,7 +378,7 @@ msgid ""
 "'>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*'"
 msgstr ""
 
-#: library/importlib.metadata.rst:252 library/importlib.metadata.rst:444
+#: library/importlib.metadata.rst:252 library/importlib.metadata.rst:445
 msgid ""
 "The full set of available metadata is not described here. See the PyPA `Core "
 "metadata specification <https://packaging.python.org/en/latest/"
@@ -401,47 +401,48 @@ msgstr ""
 
 #: library/importlib.metadata.rst:269
 msgid ""
-"Return the installed distribution package version for the named distribution "
-"package."
+"Return the installed distribution package `version <https://packaging.python."
+"org/en/latest/specifications/core-metadata/#version>`__ for the named "
+"distribution package."
 msgstr ""
 
-#: library/importlib.metadata.rst:275
+#: library/importlib.metadata.rst:276
 msgid ""
 "The :func:`!version` function is the quickest way to get a `Distribution "
 "Package <https://packaging.python.org/en/latest/glossary/#term-Distribution-"
 "Package>`_'s version number, as a string::"
 msgstr ""
 
-#: library/importlib.metadata.rst:279
+#: library/importlib.metadata.rst:280
 msgid ""
-">>> version('wheel')  \n"
+">>> version('wheel')\n"
 "'0.32.3'"
 msgstr ""
 
-#: library/importlib.metadata.rst:286
+#: library/importlib.metadata.rst:287
 msgid "Distribution files"
 msgstr ""
 
-#: library/importlib.metadata.rst:290
+#: library/importlib.metadata.rst:291
 msgid ""
 "Return the full set of files contained within the named distribution package."
 msgstr ""
 
-#: library/importlib.metadata.rst:296
+#: library/importlib.metadata.rst:297
 msgid ""
 "Returns :const:`None` if the distribution is found but the installation "
 "database records reporting the files associated with the distribuion package "
 "are missing."
 msgstr ""
 
-#: library/importlib.metadata.rst:302
+#: library/importlib.metadata.rst:303
 msgid ""
 "A :class:`pathlib.PurePath` derived object with additional ``dist``, "
 "``size``, and ``hash`` properties corresponding to the distribution "
 "package's installation metadata for that file."
 msgstr ""
 
-#: library/importlib.metadata.rst:306
+#: library/importlib.metadata.rst:307
 msgid ""
 "The :func:`!files` function takes a `Distribution Package <https://packaging."
 "python.org/en/latest/glossary/#term-Distribution-Package>`_ name and returns "
@@ -449,26 +450,26 @@ msgid ""
 "class:`PackagePath` instance. For example::"
 msgstr ""
 
-#: library/importlib.metadata.rst:311
+#: library/importlib.metadata.rst:312
 msgid ""
-">>> util = [p for p in files('wheel') if 'util.py' in str(p)][0]  \n"
-">>> util  \n"
+">>> util = [p for p in files('wheel') if 'util.py' in str(p)][0]\n"
+">>> util\n"
 "PackagePath('wheel/util.py')\n"
-">>> util.size  \n"
+">>> util.size\n"
 "859\n"
-">>> util.dist  \n"
+">>> util.dist\n"
 "<importlib.metadata._hooks.PathDistribution object at 0x101e0cef0>\n"
-">>> util.hash  \n"
+">>> util.hash\n"
 "<FileHash mode: sha256 value: bYkw5oMccfazVCoYQwKkkemoVyMAFoR34mmKBx8R1NI>"
 msgstr ""
 
-#: library/importlib.metadata.rst:321
+#: library/importlib.metadata.rst:322
 msgid "Once you have the file, you can also read its contents::"
 msgstr ""
 
-#: library/importlib.metadata.rst:323
+#: library/importlib.metadata.rst:324
 msgid ""
-">>> print(util.read_text())  \n"
+">>> print(util.read_text())\n"
 "import base64\n"
 "import sys\n"
 "...\n"
@@ -478,19 +479,19 @@ msgid ""
 "    return s"
 msgstr ""
 
-#: library/importlib.metadata.rst:332
+#: library/importlib.metadata.rst:333
 msgid ""
 "You can also use the :meth:`!locate` method to get the absolute path to the "
 "file::"
 msgstr ""
 
-#: library/importlib.metadata.rst:335
+#: library/importlib.metadata.rst:336
 msgid ""
-">>> util.locate()  \n"
+">>> util.locate()\n"
 "PosixPath('/home/gustav/example/lib/site-packages/wheel/util.py')"
 msgstr ""
 
-#: library/importlib.metadata.rst:338
+#: library/importlib.metadata.rst:339
 msgid ""
 "In the case where the metadata file listing files (``RECORD`` or ``SOURCES."
 "txt``) is missing, :func:`!files` will return :const:`None`. The caller may "
@@ -500,47 +501,47 @@ msgid ""
 "distribution is not known to have the metadata present."
 msgstr ""
 
-#: library/importlib.metadata.rst:349
+#: library/importlib.metadata.rst:350
 msgid "Distribution requirements"
 msgstr ""
 
-#: library/importlib.metadata.rst:353
+#: library/importlib.metadata.rst:354
 msgid ""
 "Return the declared dependency specifiers for the named distribution package."
 msgstr ""
 
-#: library/importlib.metadata.rst:359
+#: library/importlib.metadata.rst:360
 msgid ""
 "To get the full set of requirements for a `Distribution Package <https://"
 "packaging.python.org/en/latest/glossary/#term-Distribution-Package>`_, use "
 "the :func:`!requires` function::"
 msgstr ""
 
-#: library/importlib.metadata.rst:363
+#: library/importlib.metadata.rst:364
 msgid ""
-">>> requires('wheel')  \n"
+">>> requires('wheel')\n"
 "[\"pytest (>=3.0.0) ; extra == 'test'\", \"pytest-cov ; extra == 'test'\"]"
 msgstr ""
 
-#: library/importlib.metadata.rst:371
+#: library/importlib.metadata.rst:372
 msgid "Mapping import to distribution packages"
 msgstr ""
 
-#: library/importlib.metadata.rst:375
+#: library/importlib.metadata.rst:376
 msgid ""
 "Return a mapping from the top level module and import package names found "
-"via :attr:`sys.meta_path` to the names of the distribution packages (if any) "
+"via :data:`sys.meta_path` to the names of the distribution packages (if any) "
 "that provide the corresponding files."
 msgstr ""
 
-#: library/importlib.metadata.rst:379
+#: library/importlib.metadata.rst:380
 msgid ""
 "To allow for namespace packages (which may have members provided by multiple "
 "distribution packages), each top level import name maps to a list of "
 "distribution names rather than mapping directly to a single name."
 msgstr ""
 
-#: library/importlib.metadata.rst:383
+#: library/importlib.metadata.rst:384
 msgid ""
 "A convenience method to resolve the `Distribution Package <https://packaging."
 "python.org/en/latest/glossary/#term-Distribution-Package>`_ name (or names, "
@@ -549,91 +550,91 @@ msgid ""
 "glossary/#term-Import-Package>`_::"
 msgstr ""
 
-#: library/importlib.metadata.rst:388
+#: library/importlib.metadata.rst:389
 msgid ""
 ">>> packages_distributions()\n"
 "{'importlib_metadata': ['importlib-metadata'], 'yaml': ['PyYAML'], 'jaraco': "
 "['jaraco.classes', 'jaraco.functools'], ...}"
 msgstr ""
 
-#: library/importlib.metadata.rst:391
+#: library/importlib.metadata.rst:392
 msgid ""
 "Some editable installs, `do not supply top-level names <https://github.com/"
 "pypa/packaging-problems/issues/609>`_, and thus this function is not "
 "reliable with such installs."
 msgstr ""
 
-#: library/importlib.metadata.rst:400
+#: library/importlib.metadata.rst:401
 msgid "Distributions"
 msgstr ""
 
-#: library/importlib.metadata.rst:404
+#: library/importlib.metadata.rst:405
 msgid ""
 "Return a :class:`Distribution` instance describing the named distribution "
 "package."
 msgstr ""
 
-#: library/importlib.metadata.rst:412
+#: library/importlib.metadata.rst:413
 msgid "Details of an installed distribution package."
 msgstr ""
 
-#: library/importlib.metadata.rst:414
+#: library/importlib.metadata.rst:415
 msgid ""
 "Note: different :class:`!Distribution` instances do not currently compare "
 "equal, even if they relate to the same installed distribution and "
 "accordingly have the same attributes."
 msgstr ""
 
-#: library/importlib.metadata.rst:418
+#: library/importlib.metadata.rst:419
 msgid ""
 "While the module level API described above is the most common and convenient "
 "usage, you can get all of that information from the :class:`!Distribution` "
 "class. :class:`!Distribution` is an abstract object that represents the "
 "metadata for a Python `Distribution Package <https://packaging.python.org/en/"
-"latest/glossary/#term-Distribution-Package>`_. You can get the concreate :"
+"latest/glossary/#term-Distribution-Package>`_. You can get the concrete :"
 "class:`!Distribution` subclass instance for an installed distribution "
 "package by calling the :func:`distribution` function::"
 msgstr ""
 
-#: library/importlib.metadata.rst:425
+#: library/importlib.metadata.rst:426
 msgid ""
-">>> from importlib.metadata import distribution  \n"
-">>> dist = distribution('wheel')  \n"
-">>> type(dist)  \n"
+">>> from importlib.metadata import distribution\n"
+">>> dist = distribution('wheel')\n"
+">>> type(dist)\n"
 "<class 'importlib.metadata.PathDistribution'>"
 msgstr ""
 
-#: library/importlib.metadata.rst:430
+#: library/importlib.metadata.rst:431
 msgid ""
 "Thus, an alternative way to get the version number is through the :class:`!"
 "Distribution` instance::"
 msgstr ""
 
-#: library/importlib.metadata.rst:433
+#: library/importlib.metadata.rst:434
 msgid ""
-">>> dist.version  \n"
+">>> dist.version\n"
 "'0.32.3'"
 msgstr ""
 
-#: library/importlib.metadata.rst:436
+#: library/importlib.metadata.rst:437
 msgid ""
 "There are all kinds of additional metadata available on :class:`!"
 "Distribution` instances::"
 msgstr ""
 
-#: library/importlib.metadata.rst:439
+#: library/importlib.metadata.rst:440
 msgid ""
-">>> dist.metadata['Requires-Python']  \n"
+">>> dist.metadata['Requires-Python']\n"
 "'>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*'\n"
-">>> dist.metadata['License']  \n"
+">>> dist.metadata['License']\n"
 "'MIT'"
 msgstr ""
 
-#: library/importlib.metadata.rst:449
+#: library/importlib.metadata.rst:450
 msgid "Distribution Discovery"
 msgstr ""
 
-#: library/importlib.metadata.rst:451
+#: library/importlib.metadata.rst:452
 msgid ""
 "By default, this package provides built-in support for discovery of metadata "
 "for file system and zip file `Distribution Package <https://packaging.python."
@@ -642,22 +643,22 @@ msgid ""
 "interprets those values from how other import machinery does. In particular:"
 msgstr ""
 
-#: library/importlib.metadata.rst:455
+#: library/importlib.metadata.rst:456
 msgid ""
 "``importlib.metadata`` does not honor :class:`bytes` objects on ``sys.path``."
 msgstr ""
 
-#: library/importlib.metadata.rst:456
+#: library/importlib.metadata.rst:457
 msgid ""
 "``importlib.metadata`` will incidentally honor :py:class:`pathlib.Path` "
 "objects on ``sys.path`` even though such values will be ignored for imports."
 msgstr ""
 
-#: library/importlib.metadata.rst:460
+#: library/importlib.metadata.rst:461
 msgid "Extending the search algorithm"
 msgstr ""
 
-#: library/importlib.metadata.rst:462
+#: library/importlib.metadata.rst:463
 msgid ""
 "Because `Distribution Package <https://packaging.python.org/en/latest/"
 "glossary/#term-Distribution-Package>`_ metadata is not available through :"
@@ -668,14 +669,14 @@ msgid ""
 "on :data:`sys.meta_path`."
 msgstr ""
 
-#: library/importlib.metadata.rst:470
+#: library/importlib.metadata.rst:471
 msgid ""
 "By default ``importlib.metadata`` installs a finder for distribution "
 "packages found on the file system. This finder doesn't actually find any "
 "*distributions*, but it can find their metadata."
 msgstr ""
 
-#: library/importlib.metadata.rst:475
+#: library/importlib.metadata.rst:476
 msgid ""
 "The abstract class :py:class:`importlib.abc.MetaPathFinder` defines the "
 "interface expected of finders by Python's import system. ``importlib."
@@ -685,7 +686,7 @@ msgid ""
 "base class, which defines this abstract method::"
 msgstr ""
 
-#: library/importlib.metadata.rst:483
+#: library/importlib.metadata.rst:484
 msgid ""
 "@abc.abstractmethod\n"
 "def find_distributions(context=DistributionFinder.Context()):\n"
@@ -694,14 +695,14 @@ msgid ""
 "    \"\"\""
 msgstr ""
 
-#: library/importlib.metadata.rst:489
+#: library/importlib.metadata.rst:490
 msgid ""
 "The ``DistributionFinder.Context`` object provides ``.path`` and ``.name`` "
 "properties indicating the path to search and name to match and may supply "
 "other relevant context."
 msgstr ""
 
-#: library/importlib.metadata.rst:493
+#: library/importlib.metadata.rst:494
 msgid ""
 "What this means in practice is that to support finding distribution package "
 "metadata in locations other than the file system, subclass ``Distribution`` "
diff --git a/library/importlib.po b/library/importlib.po
index 1d1442f70..9ceb38d6a 100644
--- a/library/importlib.po
+++ b/library/importlib.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -556,19 +556,23 @@ msgid ""
 "implemented."
 msgstr ""
 
-#: library/importlib.rst:383
+#: library/importlib.rst:636
+msgid "*Superseded by TraversableResources*"
+msgstr ""
+
+#: library/importlib.rst:385
 msgid ""
 "An abstract base class for a :term:`loader` which implements the optional :"
 "pep:`302` protocol for loading arbitrary resources from the storage back-end."
 msgstr ""
 
-#: library/importlib.rst:387
+#: library/importlib.rst:389
 msgid ""
 "This ABC is deprecated in favour of supporting resource loading through :"
-"class:`importlib.resources.abc.ResourceReader`."
+"class:`importlib.resources.abc.TraversableResources`."
 msgstr ""
 
-#: library/importlib.rst:393
+#: library/importlib.rst:396
 msgid ""
 "An abstract method to return the bytes for the data located at *path*. "
 "Loaders that have a file-like storage back-end that allows storing arbitrary "
@@ -578,34 +582,34 @@ msgid ""
 "__file__` attribute or an item from a package's :attr:`~module.__path__`."
 msgstr ""
 
-#: library/importlib.rst:402
+#: library/importlib.rst:405
 msgid "Raises :exc:`OSError` instead of :exc:`NotImplementedError`."
 msgstr ""
 
-#: library/importlib.rst:408
+#: library/importlib.rst:411
 msgid ""
 "An abstract base class for a :term:`loader` which implements the optional :"
 "pep:`302` protocol for loaders that inspect modules."
 msgstr ""
 
-#: library/importlib.rst:413
+#: library/importlib.rst:416
 msgid ""
 "Return the code object for a module, or ``None`` if the module does not have "
 "a code object (as would be the case, for example, for a built-in module).  "
 "Raise an :exc:`ImportError` if loader cannot find the requested module."
 msgstr ""
 
-#: library/importlib.rst:419
+#: library/importlib.rst:422
 msgid ""
 "While the method has a default implementation, it is suggested that it be "
 "overridden if possible for performance."
 msgstr ""
 
-#: library/importlib.rst:425
+#: library/importlib.rst:428
 msgid "No longer abstract and a concrete implementation is provided."
 msgstr ""
 
-#: library/importlib.rst:430
+#: library/importlib.rst:434
 msgid ""
 "An abstract method to return the source of a module. It is returned as a "
 "text string using :term:`universal newlines`, translating all recognized "
@@ -614,22 +618,22 @@ msgid ""
 "cannot find the module specified."
 msgstr ""
 
-#: library/importlib.rst:445 library/importlib.rst:495
+#: library/importlib.rst:449 library/importlib.rst:500
 msgid "Raises :exc:`ImportError` instead of :exc:`NotImplementedError`."
 msgstr ""
 
-#: library/importlib.rst:441
+#: library/importlib.rst:445
 msgid ""
 "An optional method to return a true value if the module is a package, a "
 "false value otherwise. :exc:`ImportError` is raised if the :term:`loader` "
 "cannot find the module."
 msgstr ""
 
-#: library/importlib.rst:450
+#: library/importlib.rst:454
 msgid "Create a code object from Python source."
 msgstr ""
 
-#: library/importlib.rst:452
+#: library/importlib.rst:456
 msgid ""
 "The *data* argument can be whatever the :func:`compile` function supports (i."
 "e. string or bytes). The *path* argument should be the \"path\" to where the "
@@ -637,107 +641,107 @@ msgid ""
 "in a zip file)."
 msgstr ""
 
-#: library/importlib.rst:457
+#: library/importlib.rst:461
 msgid ""
 "With the subsequent code object one can execute it in a module by running "
 "``exec(code, module.__dict__)``."
 msgstr ""
 
-#: library/importlib.rst:462
+#: library/importlib.rst:466
 msgid "Made the method static."
 msgstr ""
 
-#: library/importlib.rst:467
+#: library/importlib.rst:471
 msgid "Implementation of :meth:`Loader.exec_module`."
 msgstr ""
 
-#: library/importlib.rst:473
+#: library/importlib.rst:477
 msgid "Implementation of :meth:`Loader.load_module`."
 msgstr ""
 
-#: library/importlib.rst:475
+#: library/importlib.rst:479
 msgid "use :meth:`exec_module` instead."
 msgstr ""
 
-#: library/importlib.rst:481
+#: library/importlib.rst:485
 msgid ""
 "An abstract base class which inherits from :class:`InspectLoader` that, when "
 "implemented, helps a module to be executed as a script. The ABC represents "
 "an optional :pep:`302` protocol."
 msgstr ""
 
-#: library/importlib.rst:487
+#: library/importlib.rst:492
 msgid ""
 "An abstract method that is to return the value of :attr:`~module.__file__` "
 "for the specified module. If no path is available, :exc:`ImportError` is "
 "raised."
 msgstr ""
 
-#: library/importlib.rst:491
+#: library/importlib.rst:496
 msgid ""
 "If source code is available, then the method should return the path to the "
 "source file, regardless of whether a bytecode was used to load the module."
 msgstr ""
 
-#: library/importlib.rst:501
+#: library/importlib.rst:506
 msgid ""
 "An abstract base class which inherits from :class:`ResourceLoader` and :"
 "class:`ExecutionLoader`, providing concrete implementations of :meth:"
 "`ResourceLoader.get_data` and :meth:`ExecutionLoader.get_filename`."
 msgstr ""
 
-#: library/importlib.rst:505
+#: library/importlib.rst:510
 msgid ""
 "The *fullname* argument is a fully resolved name of the module the loader is "
 "to handle. The *path* argument is the path to the file for the module."
 msgstr ""
 
-#: library/importlib.rst:512
+#: library/importlib.rst:517
 msgid "The name of the module the loader can handle."
 msgstr ""
 
-#: library/importlib.rst:516
+#: library/importlib.rst:521
 msgid "Path to the file of the module."
 msgstr ""
 
-#: library/importlib.rst:520
+#: library/importlib.rst:525
 msgid "Calls super's ``load_module()``."
 msgstr ""
 
-#: library/importlib.rst:522
+#: library/importlib.rst:527
 msgid "Use :meth:`Loader.exec_module` instead."
 msgstr ""
 
-#: library/importlib.rst:1122
+#: library/importlib.rst:1140
 msgid "Returns :attr:`path`."
 msgstr ""
 
-#: library/importlib.rst:531
+#: library/importlib.rst:538
 msgid "Reads *path* as a binary file and returns the bytes from it."
 msgstr ""
 
-#: library/importlib.rst:536
+#: library/importlib.rst:543
 msgid ""
 "An abstract base class for implementing source (and optionally bytecode) "
 "file loading. The class inherits from both :class:`ResourceLoader` and :"
 "class:`ExecutionLoader`, requiring the implementation of:"
 msgstr ""
 
-#: library/importlib.rst:540
+#: library/importlib.rst:547
 msgid ":meth:`ResourceLoader.get_data`"
 msgstr ""
 
-#: library/importlib.rst:541
+#: library/importlib.rst:548
 msgid ":meth:`ExecutionLoader.get_filename`"
 msgstr ""
 
-#: library/importlib.rst:542
+#: library/importlib.rst:549
 msgid ""
 "Should only return the path to the source file; sourceless loading is not "
 "supported."
 msgstr ""
 
-#: library/importlib.rst:545
+#: library/importlib.rst:552
 msgid ""
 "The abstract methods defined by this class are to add optional bytecode file "
 "support. Not implementing these optional methods (or causing them to raise :"
@@ -749,83 +753,83 @@ msgid ""
 "bytecode-specific API is exposed."
 msgstr ""
 
-#: library/importlib.rst:556
+#: library/importlib.rst:563
 msgid ""
 "Optional abstract method which returns a :class:`dict` containing metadata "
 "about the specified path.  Supported dictionary keys are:"
 msgstr ""
 
-#: library/importlib.rst:559
+#: library/importlib.rst:566
 msgid ""
 "``'mtime'`` (mandatory): an integer or floating-point number representing "
 "the modification time of the source code;"
 msgstr ""
 
-#: library/importlib.rst:561
+#: library/importlib.rst:568
 msgid "``'size'`` (optional): the size in bytes of the source code."
 msgstr ""
 
-#: library/importlib.rst:563
+#: library/importlib.rst:570
 msgid ""
 "Any other keys in the dictionary are ignored, to allow for future "
 "extensions. If the path cannot be handled, :exc:`OSError` is raised."
 msgstr ""
 
-#: library/importlib.rst:581
+#: library/importlib.rst:588
 msgid "Raise :exc:`OSError` instead of :exc:`NotImplementedError`."
 msgstr ""
 
-#: library/importlib.rst:573
+#: library/importlib.rst:580
 msgid ""
 "Optional abstract method which returns the modification time for the "
 "specified path."
 msgstr ""
 
-#: library/importlib.rst:576
+#: library/importlib.rst:583
 msgid ""
 "This method is deprecated in favour of :meth:`path_stats`.  You don't have "
 "to implement it, but it is still available for compatibility purposes. "
 "Raise :exc:`OSError` if the path cannot be handled."
 msgstr ""
 
-#: library/importlib.rst:586
+#: library/importlib.rst:593
 msgid ""
 "Optional abstract method which writes the specified bytes to a file path. "
 "Any intermediate directories which do not exist are to be created "
 "automatically."
 msgstr ""
 
-#: library/importlib.rst:590
+#: library/importlib.rst:597
 msgid ""
 "When writing to the path fails because the path is read-only (:const:`errno."
 "EACCES`/:exc:`PermissionError`), do not propagate the exception."
 msgstr ""
 
-#: library/importlib.rst:594
+#: library/importlib.rst:601
 msgid "No longer raises :exc:`NotImplementedError` when called."
 msgstr ""
 
-#: library/importlib.rst:599
+#: library/importlib.rst:606
 msgid "Concrete implementation of :meth:`InspectLoader.get_code`."
 msgstr ""
 
-#: library/importlib.rst:603
+#: library/importlib.rst:610
 msgid "Concrete implementation of :meth:`Loader.exec_module`."
 msgstr ""
 
-#: library/importlib.rst:609
+#: library/importlib.rst:616
 msgid "Concrete implementation of :meth:`Loader.load_module`."
 msgstr ""
 
-#: library/importlib.rst:611
+#: library/importlib.rst:618
 msgid "Use :meth:`exec_module` instead."
 msgstr ""
 
-#: library/importlib.rst:616
+#: library/importlib.rst:623
 msgid "Concrete implementation of :meth:`InspectLoader.get_source`."
 msgstr ""
 
-#: library/importlib.rst:620
+#: library/importlib.rst:627
 msgid ""
 "Concrete implementation of :meth:`InspectLoader.is_package`. A module is "
 "determined to be a package if its file path (as provided by :meth:"
@@ -834,16 +838,12 @@ msgid ""
 "``__init__``."
 msgstr ""
 
-#: library/importlib.rst:629
-msgid "*Superseded by TraversableResources*"
-msgstr ""
-
-#: library/importlib.rst:631
+#: library/importlib.rst:638
 msgid ""
 "An :term:`abstract base class` to provide the ability to read *resources*."
 msgstr ""
 
-#: library/importlib.rst:634
+#: library/importlib.rst:641
 msgid ""
 "From the perspective of this ABC, a *resource* is a binary artifact that is "
 "shipped within a package. Typically this is something like a data file that "
@@ -853,7 +853,7 @@ msgid ""
 "file versus on the file system."
 msgstr ""
 
-#: library/importlib.rst:642
+#: library/importlib.rst:649
 msgid ""
 "For any of methods of this class, a *resource* argument is expected to be a :"
 "term:`path-like object` which represents conceptually just a file name. This "
@@ -865,7 +865,7 @@ msgid ""
 "potentially representing multiple packages or a module)."
 msgstr ""
 
-#: library/importlib.rst:653
+#: library/importlib.rst:660
 msgid ""
 "Loaders that wish to support resource reading are expected to provide a "
 "method called ``get_resource_reader(fullname)`` which returns an object "
@@ -874,37 +874,37 @@ msgid ""
 "with this ABC should only be returned when the specified module is a package."
 msgstr ""
 
-#: library/importlib.rst:772
+#: library/importlib.rst:789
 msgid "Use :class:`importlib.resources.abc.TraversableResources` instead."
 msgstr ""
 
-#: library/importlib.rst:667
+#: library/importlib.rst:675
 msgid ""
 "Returns an opened, :term:`file-like object` for binary reading of the "
 "*resource*."
 msgstr ""
 
-#: library/importlib.rst:670
+#: library/importlib.rst:678
 msgid "If the resource cannot be found, :exc:`FileNotFoundError` is raised."
 msgstr ""
 
-#: library/importlib.rst:675
+#: library/importlib.rst:684
 msgid "Returns the file system path to the *resource*."
 msgstr ""
 
-#: library/importlib.rst:677
+#: library/importlib.rst:686
 msgid ""
 "If the resource does not concretely exist on the file system, raise :exc:"
 "`FileNotFoundError`."
 msgstr ""
 
-#: library/importlib.rst:682
+#: library/importlib.rst:692
 msgid ""
 "Returns ``True`` if the named *name* is considered a resource. :exc:"
 "`FileNotFoundError` is raised if *name* does not exist."
 msgstr ""
 
-#: library/importlib.rst:687
+#: library/importlib.rst:698
 msgid ""
 "Returns an :term:`iterable` of strings over the contents of the package. Do "
 "note that it is not required that all names returned by the iterator be "
@@ -912,7 +912,7 @@ msgid ""
 "`is_resource` would be false."
 msgstr ""
 
-#: library/importlib.rst:693
+#: library/importlib.rst:704
 msgid ""
 "Allowing non-resource names to be returned is to allow for situations where "
 "how a package and its resources are stored are known a priori and the non-"
@@ -921,71 +921,71 @@ msgid ""
 "stored on the file system then those subdirectory names can be used directly."
 msgstr ""
 
-#: library/importlib.rst:701
+#: library/importlib.rst:712
 msgid "The abstract method returns an iterable of no items."
 msgstr ""
 
-#: library/importlib.rst:706
+#: library/importlib.rst:717
 msgid ""
 "An object with a subset of :class:`pathlib.Path` methods suitable for "
 "traversing directories and opening files."
 msgstr ""
 
-#: library/importlib.rst:709
+#: library/importlib.rst:720
 msgid ""
 "For a representation of the object on the file-system, use :meth:`importlib."
 "resources.as_file`."
 msgstr ""
 
-#: library/importlib.rst:714
+#: library/importlib.rst:725
 msgid "Use :class:`importlib.resources.abc.Traversable` instead."
 msgstr ""
 
-#: library/importlib.rst:719
+#: library/importlib.rst:730
 msgid "Abstract. The base name of this object without any parent references."
 msgstr ""
 
-#: library/importlib.rst:723
+#: library/importlib.rst:735
 msgid "Yield ``Traversable`` objects in ``self``."
 msgstr ""
 
-#: library/importlib.rst:727
+#: library/importlib.rst:740
 msgid "Return ``True`` if ``self`` is a directory."
 msgstr ""
 
-#: library/importlib.rst:731
+#: library/importlib.rst:745
 msgid "Return ``True`` if ``self`` is a file."
 msgstr ""
 
-#: library/importlib.rst:735
+#: library/importlib.rst:750
 msgid "Return Traversable child in ``self``."
 msgstr ""
 
-#: library/importlib.rst:739
+#: library/importlib.rst:755
 msgid "Return ``Traversable`` child in ``self``."
 msgstr ""
 
-#: library/importlib.rst:743
+#: library/importlib.rst:760
 msgid ""
 "*mode* may be 'r' or 'rb' to open as text or binary. Return a handle "
 "suitable for reading (same as :attr:`pathlib.Path.open`)."
 msgstr ""
 
-#: library/importlib.rst:746
+#: library/importlib.rst:763
 msgid ""
 "When opening as text, accepts encoding parameters such as those accepted by :"
-"attr:`io.TextIOWrapper`."
+"class:`io.TextIOWrapper`."
 msgstr ""
 
-#: library/importlib.rst:751
+#: library/importlib.rst:768
 msgid "Read contents of ``self`` as bytes."
 msgstr ""
 
-#: library/importlib.rst:755
+#: library/importlib.rst:772
 msgid "Read contents of ``self`` as text."
 msgstr ""
 
-#: library/importlib.rst:760
+#: library/importlib.rst:777
 msgid ""
 "An abstract base class for resource readers capable of serving the :meth:"
 "`importlib.resources.files` interface. Subclasses :class:`importlib."
@@ -995,71 +995,71 @@ msgid ""
 "also supplies ResourceReader."
 msgstr ""
 
-#: library/importlib.rst:767
+#: library/importlib.rst:784
 msgid ""
 "Loaders that wish to support resource reading are expected to implement this "
 "interface."
 msgstr ""
 
-#: library/importlib.rst:777
+#: library/importlib.rst:795
 msgid ""
 "Returns a :class:`importlib.resources.abc.Traversable` object for the loaded "
 "package."
 msgstr ""
 
-#: library/importlib.rst:783
+#: library/importlib.rst:801
 msgid ":mod:`importlib.machinery` -- Importers and path hooks"
 msgstr ""
 
-#: library/importlib.rst:788
+#: library/importlib.rst:806
 msgid "**Source code:** :source:`Lib/importlib/machinery.py`"
 msgstr ""
 
-#: library/importlib.rst:792
+#: library/importlib.rst:810
 msgid ""
 "This module contains the various objects that help :keyword:`import` find "
 "and load modules."
 msgstr ""
 
-#: library/importlib.rst:797
+#: library/importlib.rst:815
 msgid ""
 "A list of strings representing the recognized file suffixes for source "
 "modules."
 msgstr ""
 
-#: library/importlib.rst:804
+#: library/importlib.rst:822
 msgid ""
 "A list of strings representing the file suffixes for non-optimized bytecode "
 "modules."
 msgstr ""
 
-#: library/importlib.rst:819
-msgid "Use :attr:`BYTECODE_SUFFIXES` instead."
+#: library/importlib.rst:837
+msgid "Use :const:`BYTECODE_SUFFIXES` instead."
 msgstr ""
 
-#: library/importlib.rst:814
+#: library/importlib.rst:832
 msgid ""
 "A list of strings representing the file suffixes for optimized bytecode "
 "modules."
 msgstr ""
 
-#: library/importlib.rst:824
+#: library/importlib.rst:842
 msgid ""
 "A list of strings representing the recognized file suffixes for bytecode "
 "modules (including the leading dot)."
 msgstr ""
 
-#: library/importlib.rst:829
+#: library/importlib.rst:847
 msgid "The value is no longer dependent on ``__debug__``."
 msgstr ""
 
-#: library/importlib.rst:834
+#: library/importlib.rst:852
 msgid ""
 "A list of strings representing the recognized file suffixes for extension "
 "modules."
 msgstr ""
 
-#: library/importlib.rst:841
+#: library/importlib.rst:859
 msgid ""
 "Returns a combined list of strings representing all file suffixes for "
 "modules recognized by the standard import machinery. This is a helper for "
@@ -1068,56 +1068,56 @@ msgid ""
 "`inspect.getmodulename`)."
 msgstr ""
 
-#: library/importlib.rst:852
+#: library/importlib.rst:870
 msgid ""
 "An :term:`importer` for built-in modules. All known built-in modules are "
 "listed in :data:`sys.builtin_module_names`. This class implements the :class:"
 "`importlib.abc.MetaPathFinder` and :class:`importlib.abc.InspectLoader` ABCs."
 msgstr ""
 
-#: library/importlib.rst:871 library/importlib.rst:899
+#: library/importlib.rst:889 library/importlib.rst:917
 msgid ""
 "Only class methods are defined by this class to alleviate the need for "
 "instantiation."
 msgstr ""
 
-#: library/importlib.rst:860
+#: library/importlib.rst:878
 msgid ""
 "As part of :pep:`489`, the builtin importer now implements :meth:`Loader."
 "create_module` and :meth:`Loader.exec_module`"
 msgstr ""
 
-#: library/importlib.rst:867
+#: library/importlib.rst:885
 msgid ""
 "An :term:`importer` for frozen modules. This class implements the :class:"
 "`importlib.abc.MetaPathFinder` and :class:`importlib.abc.InspectLoader` ABCs."
 msgstr ""
 
-#: library/importlib.rst:874
+#: library/importlib.rst:892
 msgid ""
 "Gained :meth:`~Loader.create_module` and :meth:`~Loader.exec_module` methods."
 msgstr ""
 
-#: library/importlib.rst:881
+#: library/importlib.rst:899
 msgid ""
 ":term:`Finder <finder>` for modules declared in the Windows registry.  This "
 "class implements the :class:`importlib.abc.MetaPathFinder` ABC."
 msgstr ""
 
-#: library/importlib.rst:889
+#: library/importlib.rst:907
 msgid ""
 "Use :mod:`site` configuration instead. Future versions of Python may not "
 "enable this finder by default."
 msgstr ""
 
-#: library/importlib.rst:896
+#: library/importlib.rst:914
 msgid ""
 "A :term:`Finder <finder>` for :data:`sys.path` and package ``__path__`` "
 "attributes. This class implements the :class:`importlib.abc.MetaPathFinder` "
 "ABC."
 msgstr ""
 
-#: library/importlib.rst:904
+#: library/importlib.rst:922
 msgid ""
 "Class method that attempts to find a :term:`spec <module spec>` for the "
 "module specified by *fullname* on :data:`sys.path` or, if defined, on "
@@ -1131,43 +1131,43 @@ msgid ""
 "cache and returned."
 msgstr ""
 
-#: library/importlib.rst:918
+#: library/importlib.rst:936
 msgid ""
 "If the current working directory -- represented by an empty string -- is no "
 "longer valid then ``None`` is returned but no value is cached in :data:`sys."
 "path_importer_cache`."
 msgstr ""
 
-#: library/importlib.rst:925
+#: library/importlib.rst:943
 msgid ""
 "Calls :meth:`importlib.abc.PathEntryFinder.invalidate_caches` on all finders "
 "stored in :data:`sys.path_importer_cache` that define the method. Otherwise "
 "entries in :data:`sys.path_importer_cache` set to ``None`` are deleted."
 msgstr ""
 
-#: library/importlib.rst:930
+#: library/importlib.rst:948
 msgid "Entries of ``None`` in :data:`sys.path_importer_cache` are deleted."
 msgstr ""
 
-#: library/importlib.rst:933
+#: library/importlib.rst:951
 msgid ""
 "Calls objects in :data:`sys.path_hooks` with the current working directory "
 "for ``''`` (i.e. the empty string)."
 msgstr ""
 
-#: library/importlib.rst:940
+#: library/importlib.rst:958
 msgid ""
 "A concrete implementation of :class:`importlib.abc.PathEntryFinder` which "
 "caches results from the file system."
 msgstr ""
 
-#: library/importlib.rst:943
+#: library/importlib.rst:961
 msgid ""
 "The *path* argument is the directory for which the finder is in charge of "
 "searching."
 msgstr ""
 
-#: library/importlib.rst:946
+#: library/importlib.rst:964
 msgid ""
 "The *loader_details* argument is a variable number of 2-item tuples each "
 "containing a loader and a sequence of file suffixes the loader recognizes. "
@@ -1175,7 +1175,7 @@ msgid ""
 "module's name and the path to the file found."
 msgstr ""
 
-#: library/importlib.rst:951
+#: library/importlib.rst:969
 msgid ""
 "The finder will cache the directory contents as necessary, making stat calls "
 "for each module search to verify the cache is not outdated. Because cache "
@@ -1188,166 +1188,166 @@ msgid ""
 "to call :func:`importlib.invalidate_caches`."
 msgstr ""
 
-#: library/importlib.rst:965
+#: library/importlib.rst:983
 msgid "The path the finder will search in."
 msgstr ""
 
-#: library/importlib.rst:969
+#: library/importlib.rst:987
 msgid "Attempt to find the spec to handle *fullname* within :attr:`path`."
 msgstr ""
 
-#: library/importlib.rst:975
+#: library/importlib.rst:993
 msgid "Clear out the internal cache."
 msgstr ""
 
-#: library/importlib.rst:979
+#: library/importlib.rst:997
 msgid ""
 "A class method which returns a closure for use on :data:`sys.path_hooks`. An "
 "instance of :class:`FileFinder` is returned by the closure using the path "
 "argument given to the closure directly and *loader_details* indirectly."
 msgstr ""
 
-#: library/importlib.rst:984
+#: library/importlib.rst:1002
 msgid ""
 "If the argument to the closure is not an existing directory, :exc:"
 "`ImportError` is raised."
 msgstr ""
 
-#: library/importlib.rst:990
+#: library/importlib.rst:1008
 msgid ""
 "A concrete implementation of :class:`importlib.abc.SourceLoader` by "
 "subclassing :class:`importlib.abc.FileLoader` and providing some concrete "
 "implementations of other methods."
 msgstr ""
 
-#: library/importlib.rst:998
+#: library/importlib.rst:1016
 msgid "The name of the module that this loader will handle."
 msgstr ""
 
-#: library/importlib.rst:1002
+#: library/importlib.rst:1020
 msgid "The path to the source file."
 msgstr ""
 
-#: library/importlib.rst:1006
+#: library/importlib.rst:1024
 msgid "Return ``True`` if :attr:`path` appears to be for a package."
 msgstr ""
 
-#: library/importlib.rst:1010
+#: library/importlib.rst:1028
 msgid ""
 "Concrete implementation of :meth:`importlib.abc.SourceLoader.path_stats`."
 msgstr ""
 
-#: library/importlib.rst:1014
+#: library/importlib.rst:1032
 msgid "Concrete implementation of :meth:`importlib.abc.SourceLoader.set_data`."
 msgstr ""
 
-#: library/importlib.rst:1061
+#: library/importlib.rst:1079
 msgid ""
 "Concrete implementation of :meth:`importlib.abc.Loader.load_module` where "
 "specifying the name of the module to load is optional."
 msgstr ""
 
-#: library/importlib.rst:1066
+#: library/importlib.rst:1084
 msgid "Use :meth:`importlib.abc.Loader.exec_module` instead."
 msgstr ""
 
-#: library/importlib.rst:1028
+#: library/importlib.rst:1046
 msgid ""
 "A concrete implementation of :class:`importlib.abc.FileLoader` which can "
 "import bytecode files (i.e. no source code files exist)."
 msgstr ""
 
-#: library/importlib.rst:1031
+#: library/importlib.rst:1049
 msgid ""
 "Please note that direct use of bytecode files (and thus not source code "
 "files) inhibits your modules from being usable by all Python implementations "
 "or new versions of Python which change the bytecode format."
 msgstr ""
 
-#: library/importlib.rst:1040
+#: library/importlib.rst:1058
 msgid "The name of the module the loader will handle."
 msgstr ""
 
-#: library/importlib.rst:1044
+#: library/importlib.rst:1062
 msgid "The path to the bytecode file."
 msgstr ""
 
-#: library/importlib.rst:1048
+#: library/importlib.rst:1066
 msgid "Determines if the module is a package based on :attr:`path`."
 msgstr ""
 
-#: library/importlib.rst:1052
+#: library/importlib.rst:1070
 msgid "Returns the code object for :attr:`name` created from :attr:`path`."
 msgstr ""
 
-#: library/importlib.rst:1056
+#: library/importlib.rst:1074
 msgid ""
 "Returns ``None`` as bytecode files have no source when this loader is used."
 msgstr ""
 
-#: library/importlib.rst:1071
+#: library/importlib.rst:1089
 msgid ""
 "A concrete implementation of :class:`importlib.abc.ExecutionLoader` for "
 "extension modules."
 msgstr ""
 
-#: library/importlib.rst:1074
+#: library/importlib.rst:1092
 msgid ""
 "The *fullname* argument specifies the name of the module the loader is to "
 "support. The *path* argument is the path to the extension module's file."
 msgstr ""
 
-#: library/importlib.rst:1077
+#: library/importlib.rst:1095
 msgid ""
 "Note that, by default, importing an extension module will fail in "
 "subinterpreters if it doesn't implement multi-phase init (see :pep:`489`), "
 "even if it would otherwise import successfully."
 msgstr ""
 
-#: library/importlib.rst:1083
+#: library/importlib.rst:1101
 msgid "Multi-phase init is now required for use in subinterpreters."
 msgstr ""
 
-#: library/importlib.rst:1088
+#: library/importlib.rst:1106
 msgid "Name of the module the loader supports."
 msgstr ""
 
-#: library/importlib.rst:1092
+#: library/importlib.rst:1110
 msgid "Path to the extension module."
 msgstr ""
 
-#: library/importlib.rst:1096
+#: library/importlib.rst:1114
 msgid ""
 "Creates the module object from the given specification in accordance with :"
 "pep:`489`."
 msgstr ""
 
-#: library/importlib.rst:1103
+#: library/importlib.rst:1121
 msgid "Initializes the given module object in accordance with :pep:`489`."
 msgstr ""
 
-#: library/importlib.rst:1109
+#: library/importlib.rst:1127
 msgid ""
 "Returns ``True`` if the file path points to a package's ``__init__`` module "
-"based on :attr:`EXTENSION_SUFFIXES`."
+"based on :const:`EXTENSION_SUFFIXES`."
 msgstr ""
 
-#: library/importlib.rst:1114
+#: library/importlib.rst:1132
 msgid "Returns ``None`` as extension modules lack a code object."
 msgstr ""
 
-#: library/importlib.rst:1118
+#: library/importlib.rst:1136
 msgid "Returns ``None`` as extension modules do not have source code."
 msgstr ""
 
-#: library/importlib.rst:1129
+#: library/importlib.rst:1147
 msgid ""
 "A concrete implementation of :class:`importlib.abc.InspectLoader` for "
 "namespace packages.  This is an alias for a private class and is only made "
 "public for introspecting the ``__loader__`` attribute on namespace packages::"
 msgstr ""
 
-#: library/importlib.rst:1134
+#: library/importlib.rst:1152
 msgid ""
 ">>> from importlib.machinery import NamespaceLoader\n"
 ">>> import my_namespace\n"
@@ -1358,7 +1358,7 @@ msgid ""
 "True"
 msgstr ""
 
-#: library/importlib.rst:1147
+#: library/importlib.rst:1165
 msgid ""
 "A specification for a module's import-system-related state.  This is "
 "typically exposed as the module's :attr:`~module.__spec__` attribute.  Many "
@@ -1371,19 +1371,19 @@ msgid ""
 "origin>`, and vice versa."
 msgstr ""
 
-#: library/importlib.rst:1161
+#: library/importlib.rst:1179
 msgid ""
 "The module's fully qualified name (see :attr:`module.__name__`). The :term:"
 "`finder` should always set this attribute to a non-empty string."
 msgstr ""
 
-#: library/importlib.rst:1166
+#: library/importlib.rst:1184
 msgid ""
 "The :term:`loader` used to load the module (see :attr:`module.__loader__`). "
 "The :term:`finder` should always set this attribute."
 msgstr ""
 
-#: library/importlib.rst:1171
+#: library/importlib.rst:1189
 msgid ""
 "The location the :term:`loader` should use to load the module (see :attr:"
 "`module.__file__`). For example, for modules loaded from a ``.py`` file this "
@@ -1392,14 +1392,14 @@ msgid ""
 "there is not one (like for namespace packages), it should be set to ``None``."
 msgstr ""
 
-#: library/importlib.rst:1180
+#: library/importlib.rst:1198
 msgid ""
 "A (possibly empty) :term:`sequence` of strings enumerating the locations in "
 "which a package's submodules will be found (see :attr:`module.__path__`). "
 "Most of the time there will only be a single directory in this list."
 msgstr ""
 
-#: library/importlib.rst:1185
+#: library/importlib.rst:1203
 msgid ""
 "The :term:`finder` should set this attribute to a sequence, even an empty "
 "one, to indicate to the import system that the module is a package.  It "
@@ -1407,55 +1407,55 @@ msgid ""
 "later to a special object for namespace packages."
 msgstr ""
 
-#: library/importlib.rst:1193
+#: library/importlib.rst:1211
 msgid ""
 "The :term:`finder` may set this attribute to an object containing "
 "additional, module-specific data to use when loading the module.  Otherwise "
 "it should be set to ``None``."
 msgstr ""
 
-#: library/importlib.rst:1199
+#: library/importlib.rst:1217
 msgid ""
 "The filename of a compiled version of the module's code (see :attr:`module."
 "__cached__`). The :term:`finder` should always set this attribute but it may "
 "be ``None`` for modules that do not need compiled code stored."
 msgstr ""
 
-#: library/importlib.rst:1206
+#: library/importlib.rst:1224
 msgid ""
 "(Read-only) The fully qualified name of the package the module is in (or the "
 "empty string for a top-level module). See :attr:`module.__package__`. If the "
 "module is a package then this is the same as :attr:`name`."
 msgstr ""
 
-#: library/importlib.rst:1213
+#: library/importlib.rst:1231
 msgid ""
 "``True`` if the spec's :attr:`origin` refers to a loadable location, "
 "``False`` otherwise.  This value impacts how :attr:`!origin` is interpreted "
 "and how the module's :attr:`~module.__file__` is populated."
 msgstr ""
 
-#: library/importlib.rst:1219
+#: library/importlib.rst:1237
 msgid ":mod:`importlib.util` -- Utility code for importers"
 msgstr ""
 
-#: library/importlib.rst:1225
+#: library/importlib.rst:1243
 msgid "**Source code:** :source:`Lib/importlib/util.py`"
 msgstr ""
 
-#: library/importlib.rst:1229
+#: library/importlib.rst:1247
 msgid ""
 "This module contains the various objects that help in the construction of "
 "an :term:`importer`."
 msgstr ""
 
-#: library/importlib.rst:1234
+#: library/importlib.rst:1252
 msgid ""
 "The bytes which represent the bytecode version number. If you need help with "
 "loading/writing bytecode then consider :class:`importlib.abc.SourceLoader`."
 msgstr ""
 
-#: library/importlib.rst:1241
+#: library/importlib.rst:1259
 msgid ""
 "Return the :pep:`3147`/:pep:`488` path to the byte-compiled file associated "
 "with the source *path*.  For example, if *path* is ``/foo/bar/baz.py`` the "
@@ -1465,7 +1465,7 @@ msgid ""
 "`NotImplementedError` will be raised)."
 msgstr ""
 
-#: library/importlib.rst:1248
+#: library/importlib.rst:1266
 msgid ""
 "The *optimization* parameter is used to specify the optimization level of "
 "the bytecode file. An empty string represents no optimization, so ``/foo/bar/"
@@ -1478,7 +1478,7 @@ msgid ""
 "be alphanumeric, else :exc:`ValueError` is raised."
 msgstr ""
 
-#: library/importlib.rst:1258
+#: library/importlib.rst:1276
 msgid ""
 "The *debug_override* parameter is deprecated and can be used to override the "
 "system's value for ``__debug__``. A ``True`` value is the equivalent of "
@@ -1487,17 +1487,17 @@ msgid ""
 "are not ``None`` then :exc:`TypeError` is raised."
 msgstr ""
 
-#: library/importlib.rst:1266
+#: library/importlib.rst:1284
 msgid ""
 "The *optimization* parameter was added and the *debug_override* parameter "
 "was deprecated."
 msgstr ""
 
-#: library/importlib.rst:1286 library/importlib.rst:1375
+#: library/importlib.rst:1304 library/importlib.rst:1393
 msgid "Accepts a :term:`path-like object`."
 msgstr ""
 
-#: library/importlib.rst:1276
+#: library/importlib.rst:1294
 msgid ""
 "Given the *path* to a :pep:`3147` file name, return the associated source "
 "code file path.  For example, if *path* is ``/foo/bar/__pycache__/baz."
@@ -1507,25 +1507,25 @@ msgid ""
 "cache_tag` is not defined, :exc:`NotImplementedError` is raised."
 msgstr ""
 
-#: library/importlib.rst:1291
+#: library/importlib.rst:1309
 msgid ""
 "Decode the given bytes representing source code and return it as a string "
 "with universal newlines (as required by :meth:`importlib.abc.InspectLoader."
 "get_source`)."
 msgstr ""
 
-#: library/importlib.rst:1299
+#: library/importlib.rst:1317
 msgid "Resolve a relative module name to an absolute one."
 msgstr ""
 
-#: library/importlib.rst:1301
+#: library/importlib.rst:1319
 msgid ""
 "If  **name** has no leading dots, then **name** is simply returned. This "
 "allows for usage such as ``importlib.util.resolve_name('sys', __spec__."
 "parent)`` without doing a check to see if the **package** argument is needed."
 msgstr ""
 
-#: library/importlib.rst:1306
+#: library/importlib.rst:1324
 msgid ""
 ":exc:`ImportError` is raised if **name** is a relative module name but "
 "**package** is a false value (e.g. ``None`` or the empty string). :exc:"
@@ -1533,13 +1533,13 @@ msgid ""
 "package (e.g. requesting ``..bacon`` from within the ``spam`` package)."
 msgstr ""
 
-#: library/importlib.rst:1314
+#: library/importlib.rst:1332
 msgid ""
 "To improve consistency with import statements, raise :exc:`ImportError` "
 "instead of :exc:`ValueError` for invalid relative import attempts."
 msgstr ""
 
-#: library/importlib.rst:1321
+#: library/importlib.rst:1339
 msgid ""
 "Find the :term:`spec <module spec>` for a module, optionally relative to the "
 "specified **package** name. If the module is in :data:`sys.modules`, then "
@@ -1549,30 +1549,30 @@ msgid ""
 "if no spec is found."
 msgstr ""
 
-#: library/importlib.rst:1328
+#: library/importlib.rst:1346
 msgid ""
 "If **name** is for a submodule (contains a dot), the parent module is "
 "automatically imported."
 msgstr ""
 
-#: library/importlib.rst:1331
+#: library/importlib.rst:1349
 msgid "**name** and **package** work the same as for :func:`import_module`."
 msgstr ""
 
-#: library/importlib.rst:1335
+#: library/importlib.rst:1353
 msgid ""
 "Raises :exc:`ModuleNotFoundError` instead of :exc:`AttributeError` if "
 "**package** is in fact not a package (i.e. lacks a :attr:`~module.__path__` "
 "attribute)."
 msgstr ""
 
-#: library/importlib.rst:1342
+#: library/importlib.rst:1360
 msgid ""
 "Create a new module based on **spec** and :meth:`spec.loader.create_module "
 "<importlib.abc.Loader.create_module>`."
 msgstr ""
 
-#: library/importlib.rst:1345
+#: library/importlib.rst:1363
 msgid ""
 "If :meth:`spec.loader.create_module <importlib.abc.Loader.create_module>` "
 "does not return ``None``, then any pre-existing attributes will not be "
@@ -1580,14 +1580,14 @@ msgid ""
 "accessing **spec** or setting an attribute on the module."
 msgstr ""
 
-#: library/importlib.rst:1350
+#: library/importlib.rst:1368
 msgid ""
 "This function is preferred over using :class:`types.ModuleType` to create a "
 "new module as **spec** is used to set as many import-controlled attributes "
 "on the module as possible."
 msgstr ""
 
-#: library/importlib.rst:1358
+#: library/importlib.rst:1376
 msgid ""
 "A factory function for creating a :class:`~importlib.machinery.ModuleSpec` "
 "instance based on a loader.  The parameters have the same meaning as they do "
@@ -1596,7 +1596,7 @@ msgid ""
 "spec."
 msgstr ""
 
-#: library/importlib.rst:1368
+#: library/importlib.rst:1386
 msgid ""
 "A factory function for creating a :class:`~importlib.machinery.ModuleSpec` "
 "instance based on the path to a file.  Missing information will be filled in "
@@ -1604,14 +1604,14 @@ msgid ""
 "module will be file-based."
 msgstr ""
 
-#: library/importlib.rst:1380
+#: library/importlib.rst:1398
 msgid ""
 "Return the hash of *source_bytes* as bytes. A hash-based ``.pyc`` file "
 "embeds the :func:`source_hash` of the corresponding source file's contents "
 "in its header."
 msgstr ""
 
-#: library/importlib.rst:1388
+#: library/importlib.rst:1406
 msgid ""
 "A context manager that can temporarily skip the compatibility check for "
 "extension modules.  By default the check is enabled and will fail when a "
@@ -1620,33 +1620,33 @@ msgid ""
 "interpreter GIL, when imported in an interpreter with its own GIL."
 msgstr ""
 
-#: library/importlib.rst:1395
+#: library/importlib.rst:1413
 msgid ""
 "Note that this function is meant to accommodate an unusual case; one which "
 "is likely to eventually go away.  There's is a pretty good chance this is "
 "not what you were looking for."
 msgstr ""
 
-#: library/importlib.rst:1399
+#: library/importlib.rst:1417
 msgid ""
 "You can get the same effect as this function by implementing the basic "
 "interface of multi-phase init (:pep:`489`) and lying about support for "
 "multiple interpreters (or per-interpreter GIL)."
 msgstr ""
 
-#: library/importlib.rst:1404
+#: library/importlib.rst:1422
 msgid ""
 "Using this function to disable the check can lead to unexpected behavior and "
 "even crashes.  It should only be used during extension module development."
 msgstr ""
 
-#: library/importlib.rst:1412
+#: library/importlib.rst:1430
 msgid ""
 "A class which postpones the execution of the loader of a module until the "
 "module has an attribute accessed."
 msgstr ""
 
-#: library/importlib.rst:1415
+#: library/importlib.rst:1433
 msgid ""
 "This class **only** works with loaders that define :meth:`~importlib.abc."
 "Loader.exec_module` as control over what module type is used for the module "
@@ -1659,7 +1659,7 @@ msgid ""
 "raised if such a substitution is detected."
 msgstr ""
 
-#: library/importlib.rst:1426
+#: library/importlib.rst:1444
 msgid ""
 "For projects where startup time is critical, this class allows for "
 "potentially minimizing the cost of loading a module if it is never used. For "
@@ -1668,21 +1668,21 @@ msgid ""
 "postponed and thus occurring out of context."
 msgstr ""
 
-#: library/importlib.rst:1434
+#: library/importlib.rst:1452
 msgid ""
 "Began calling :meth:`~importlib.abc.Loader.create_module`, removing the "
 "compatibility warning for :class:`importlib.machinery.BuiltinImporter` and :"
 "class:`importlib.machinery.ExtensionFileLoader`."
 msgstr ""
 
-#: library/importlib.rst:1441
+#: library/importlib.rst:1459
 msgid ""
 "A class method which returns a callable that creates a lazy loader. This is "
 "meant to be used in situations where the loader is passed by class instead "
 "of by instance. ::"
 msgstr ""
 
-#: library/importlib.rst:1446
+#: library/importlib.rst:1464
 msgid ""
 "suffixes = importlib.machinery.SOURCE_SUFFIXES\n"
 "loader = importlib.machinery.SourceFileLoader\n"
@@ -1690,43 +1690,43 @@ msgid ""
 "finder = importlib.machinery.FileFinder(path, (lazy_loader, suffixes))"
 msgstr ""
 
-#: library/importlib.rst:1454
+#: library/importlib.rst:1472
 msgid "Examples"
 msgstr ""
 
-#: library/importlib.rst:1457
+#: library/importlib.rst:1475
 msgid "Importing programmatically"
 msgstr ""
 
-#: library/importlib.rst:1459
+#: library/importlib.rst:1477
 msgid ""
 "To programmatically import a module, use :func:`importlib.import_module`. ::"
 msgstr ""
 
-#: library/importlib.rst:1462
+#: library/importlib.rst:1480
 msgid ""
 "import importlib\n"
 "\n"
 "itertools = importlib.import_module('itertools')"
 msgstr ""
 
-#: library/importlib.rst:1468
+#: library/importlib.rst:1486
 msgid "Checking if a module can be imported"
 msgstr ""
 
-#: library/importlib.rst:1470
+#: library/importlib.rst:1488
 msgid ""
 "If you need to find out if a module can be imported without actually doing "
 "the import, then you should use :func:`importlib.util.find_spec`."
 msgstr ""
 
-#: library/importlib.rst:1473
+#: library/importlib.rst:1491
 msgid ""
 "Note that if ``name`` is a submodule (contains a dot), :func:`importlib.util."
 "find_spec` will import the parent module. ::"
 msgstr ""
 
-#: library/importlib.rst:1477
+#: library/importlib.rst:1495
 msgid ""
 "import importlib.util\n"
 "import sys\n"
@@ -1746,11 +1746,11 @@ msgid ""
 "    print(f\"can't find the {name!r} module\")"
 msgstr ""
 
-#: library/importlib.rst:1496
+#: library/importlib.rst:1514
 msgid "Importing a source file directly"
 msgstr ""
 
-#: library/importlib.rst:1498
+#: library/importlib.rst:1516
 msgid ""
 "This recipe should be used with caution: it is an approximation of an import "
 "statement where the file path is specified directly, rather than :data:`sys."
@@ -1760,13 +1760,13 @@ msgid ""
 "file is appropriate."
 msgstr ""
 
-#: library/importlib.rst:1505
+#: library/importlib.rst:1523
 msgid ""
 "To import a Python source file directly from a path, use the following "
 "recipe::"
 msgstr ""
 
-#: library/importlib.rst:1507
+#: library/importlib.rst:1525
 msgid ""
 "import importlib.util\n"
 "import sys\n"
@@ -1789,15 +1789,15 @@ msgid ""
 "json = import_from_path(module_name, file_path)"
 msgstr ""
 
-#: library/importlib.rst:1529
+#: library/importlib.rst:1547
 msgid "Implementing lazy imports"
 msgstr ""
 
-#: library/importlib.rst:1531
+#: library/importlib.rst:1549
 msgid "The example below shows how to implement lazy imports::"
 msgstr ""
 
-#: library/importlib.rst:1533
+#: library/importlib.rst:1551
 msgid ""
 ">>> import importlib.util\n"
 ">>> import sys\n"
@@ -1817,11 +1817,11 @@ msgid ""
 "False"
 msgstr ""
 
-#: library/importlib.rst:1552
+#: library/importlib.rst:1570
 msgid "Setting up an importer"
 msgstr ""
 
-#: library/importlib.rst:1554
+#: library/importlib.rst:1572
 msgid ""
 "For deep customizations of import, you typically want to implement an :term:"
 "`importer`. This means managing both the :term:`finder` and :term:`loader` "
@@ -1835,7 +1835,7 @@ msgid ""
 "for the appropriate classes defined within this package)::"
 msgstr ""
 
-#: library/importlib.rst:1565
+#: library/importlib.rst:1583
 msgid ""
 "import importlib.machinery\n"
 "import sys\n"
@@ -1859,11 +1859,11 @@ msgid ""
 "sys.path_hooks.append(SpamPathEntryFinder.path_hook(loader_details))"
 msgstr ""
 
-#: library/importlib.rst:1586
+#: library/importlib.rst:1604
 msgid "Approximating :func:`importlib.import_module`"
 msgstr ""
 
-#: library/importlib.rst:1588
+#: library/importlib.rst:1606
 msgid ""
 "Import itself is implemented in Python code, making it possible to expose "
 "most of the import machinery through importlib. The following helps "
@@ -1871,7 +1871,7 @@ msgid ""
 "approximate implementation of :func:`importlib.import_module`::"
 msgstr ""
 
-#: library/importlib.rst:1594
+#: library/importlib.rst:1612
 msgid ""
 "import importlib.util\n"
 "import sys\n"
@@ -1904,10 +1904,10 @@ msgid ""
 "    return module"
 msgstr ""
 
-#: library/importlib.rst:422
+#: library/importlib.rst:425
 msgid "universal newlines"
 msgstr ""
 
-#: library/importlib.rst:422
+#: library/importlib.rst:425
 msgid "importlib.abc.InspectLoader.get_source method"
 msgstr ""
diff --git a/library/importlib.resources.abc.po b/library/importlib.resources.abc.po
index 350e94841..1ca1f396a 100644
--- a/library/importlib.resources.abc.po
+++ b/library/importlib.resources.abc.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -68,33 +68,33 @@ msgstr ""
 msgid "Use :class:`importlib.resources.abc.TraversableResources` instead."
 msgstr ""
 
-#: library/importlib.resources.abc.rst:51
+#: library/importlib.resources.abc.rst:52
 msgid ""
 "Returns an opened, :term:`file-like object` for binary reading of the "
 "*resource*."
 msgstr ""
 
-#: library/importlib.resources.abc.rst:54
+#: library/importlib.resources.abc.rst:55
 msgid "If the resource cannot be found, :exc:`FileNotFoundError` is raised."
 msgstr ""
 
-#: library/importlib.resources.abc.rst:59
+#: library/importlib.resources.abc.rst:61
 msgid "Returns the file system path to the *resource*."
 msgstr ""
 
-#: library/importlib.resources.abc.rst:61
+#: library/importlib.resources.abc.rst:63
 msgid ""
 "If the resource does not concretely exist on the file system, raise :exc:"
 "`FileNotFoundError`."
 msgstr ""
 
-#: library/importlib.resources.abc.rst:66
+#: library/importlib.resources.abc.rst:69
 msgid ""
 "Returns ``True`` if the named *name* is considered a resource. :exc:"
 "`FileNotFoundError` is raised if *name* does not exist."
 msgstr ""
 
-#: library/importlib.resources.abc.rst:71
+#: library/importlib.resources.abc.rst:75
 msgid ""
 "Returns an :term:`iterable` of strings over the contents of the package. Do "
 "note that it is not required that all names returned by the iterator be "
@@ -102,7 +102,7 @@ msgid ""
 "`is_resource` would be false."
 msgstr ""
 
-#: library/importlib.resources.abc.rst:77
+#: library/importlib.resources.abc.rst:81
 msgid ""
 "Allowing non-resource names to be returned is to allow for situations where "
 "how a package and its resources are stored are known a priori and the non-"
@@ -111,58 +111,58 @@ msgid ""
 "stored on the file system then those subdirectory names can be used directly."
 msgstr ""
 
-#: library/importlib.resources.abc.rst:85
+#: library/importlib.resources.abc.rst:89
 msgid "The abstract method returns an iterable of no items."
 msgstr ""
 
-#: library/importlib.resources.abc.rst:90
+#: library/importlib.resources.abc.rst:94
 msgid ""
 "An object with a subset of :class:`pathlib.Path` methods suitable for "
 "traversing directories and opening files."
 msgstr ""
 
-#: library/importlib.resources.abc.rst:93
+#: library/importlib.resources.abc.rst:97
 msgid ""
 "For a representation of the object on the file-system, use :meth:`importlib."
 "resources.as_file`."
 msgstr ""
 
-#: library/importlib.resources.abc.rst:98
+#: library/importlib.resources.abc.rst:102
 msgid "Abstract. The base name of this object without any parent references."
 msgstr ""
 
-#: library/importlib.resources.abc.rst:102
+#: library/importlib.resources.abc.rst:107
 msgid "Yield Traversable objects in self."
 msgstr ""
 
-#: library/importlib.resources.abc.rst:106
+#: library/importlib.resources.abc.rst:112
 msgid "Return ``True`` if self is a directory."
 msgstr ""
 
-#: library/importlib.resources.abc.rst:110
+#: library/importlib.resources.abc.rst:117
 msgid "Return ``True`` if self is a file."
 msgstr ""
 
-#: library/importlib.resources.abc.rst:114
+#: library/importlib.resources.abc.rst:122
 msgid ""
 "Traverse directories according to *pathsegments* and return the result as :"
 "class:`!Traversable`."
 msgstr ""
 
-#: library/importlib.resources.abc.rst:117
+#: library/importlib.resources.abc.rst:125
 msgid ""
 "Each *pathsegments* argument may contain multiple names separated by forward "
 "slashes (``/``, ``posixpath.sep`` ). For example, the following are "
 "equivalent::"
 msgstr ""
 
-#: library/importlib.resources.abc.rst:121
+#: library/importlib.resources.abc.rst:129
 msgid ""
 "files.joinpath('subdir', 'subsuddir', 'file.txt')\n"
 "files.joinpath('subdir/subsuddir/file.txt')"
 msgstr ""
 
-#: library/importlib.resources.abc.rst:124
+#: library/importlib.resources.abc.rst:132
 msgid ""
 "Note that some :class:`!Traversable` implementations might not be updated to "
 "the latest version of the protocol. For compatibility with such "
@@ -170,42 +170,42 @@ msgid ""
 "call to ``joinpath``. For example::"
 msgstr ""
 
-#: library/importlib.resources.abc.rst:129
+#: library/importlib.resources.abc.rst:137
 msgid "files.joinpath('subdir').joinpath('subsubdir').joinpath('file.txt')"
 msgstr ""
 
-#: library/importlib.resources.abc.rst:133
+#: library/importlib.resources.abc.rst:141
 msgid ""
 "``joinpath`` accepts multiple *pathsegments*, and these segments may contain "
 "forward slashes as path separators. Previously, only a single *child* "
 "argument was accepted."
 msgstr ""
 
-#: library/importlib.resources.abc.rst:139
+#: library/importlib.resources.abc.rst:148
 msgid "Return Traversable child in self. Equivalent to ``joinpath(child)``."
 msgstr ""
 
-#: library/importlib.resources.abc.rst:144
+#: library/importlib.resources.abc.rst:154
 msgid ""
 "*mode* may be 'r' or 'rb' to open as text or binary. Return a handle "
 "suitable for reading (same as :attr:`pathlib.Path.open`)."
 msgstr ""
 
-#: library/importlib.resources.abc.rst:147
+#: library/importlib.resources.abc.rst:157
 msgid ""
 "When opening as text, accepts encoding parameters such as those accepted by :"
 "class:`io.TextIOWrapper`."
 msgstr ""
 
-#: library/importlib.resources.abc.rst:152
+#: library/importlib.resources.abc.rst:162
 msgid "Read contents of self as bytes."
 msgstr ""
 
-#: library/importlib.resources.abc.rst:156
+#: library/importlib.resources.abc.rst:166
 msgid "Read contents of self as text."
 msgstr ""
 
-#: library/importlib.resources.abc.rst:161
+#: library/importlib.resources.abc.rst:171
 msgid ""
 "An abstract base class for resource readers capable of serving the :meth:"
 "`importlib.resources.files` interface. Subclasses :class:`ResourceReader` "
@@ -214,13 +214,13 @@ msgid ""
 "TraversableResources` also supplies :class:`!ResourceReader`."
 msgstr ""
 
-#: library/importlib.resources.abc.rst:168
+#: library/importlib.resources.abc.rst:178
 msgid ""
 "Loaders that wish to support resource reading are expected to implement this "
 "interface."
 msgstr ""
 
-#: library/importlib.resources.abc.rst:173
+#: library/importlib.resources.abc.rst:184
 msgid ""
 "Returns a :class:`importlib.resources.abc.Traversable` object for the loaded "
 "package."
diff --git a/library/importlib.resources.po b/library/importlib.resources.po
index c5776acb6..4b9320ac9 100644
--- a/library/importlib.resources.po
+++ b/library/importlib.resources.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -137,18 +137,17 @@ msgid "Added support for *traversable* representing a directory."
 msgstr ""
 
 #: library/importlib.resources.rst:103
-msgid "Deprecated functions"
+msgid "Functional API"
 msgstr ""
 
 #: library/importlib.resources.rst:105
 msgid ""
-"An older, deprecated set of functions is still available, but is scheduled "
-"for removal in a future version of Python. The main drawback of these "
-"functions is that they do not support directories: they assume all resources "
-"are located directly within a *package*."
+"An older, previously deprecated set of functions is still available. The "
+"main drawback of these functions is that they do not support directories: "
+"they assume all resources are located directly within a *package*."
 msgstr ""
 
-#: library/importlib.resources.rst:112
+#: library/importlib.resources.rst:111
 msgid ""
 "Whenever a function accepts a ``Package`` argument, you can pass in either "
 "a :class:`module object <types.ModuleType>` or a module name as a string.  "
@@ -156,25 +155,25 @@ msgid ""
 "submodule_search_locations`` is not ``None``."
 msgstr ""
 
-#: library/importlib.resources.rst:117
+#: library/importlib.resources.rst:116
 msgid "The ``Package`` type is defined as ``Union[str, ModuleType]``."
 msgstr ""
 
-#: library/importlib.resources.rst:124
+#: library/importlib.resources.rst:121
 msgid ""
 "For *resource* arguments of the functions below, you can pass in the name of "
 "a resource as a string or a :class:`path-like object <os.PathLike>`."
 msgstr ""
 
-#: library/importlib.resources.rst:128
+#: library/importlib.resources.rst:125
 msgid "The ``Resource`` type is defined as ``Union[str, os.PathLike]``."
 msgstr ""
 
-#: library/importlib.resources.rst:133
+#: library/importlib.resources.rst:130
 msgid "Open for binary reading the *resource* within *package*."
 msgstr ""
 
-#: library/importlib.resources.rst:135
+#: library/importlib.resources.rst:132
 msgid ""
 "*package* is either a name or a module object which conforms to the "
 "``Package`` requirements.  *resource* is the name of the resource to open "
@@ -183,23 +182,23 @@ msgid ""
 "BinaryIO`` instance, a binary I/O stream open for reading."
 msgstr ""
 
-#: library/importlib.resources.rst:143 library/importlib.resources.rst:164
-#: library/importlib.resources.rst:182 library/importlib.resources.rst:201
-#: library/importlib.resources.rst:237 library/importlib.resources.rst:253
-msgid "Calls to this function can be replaced by::"
+#: library/importlib.resources.rst:138 library/importlib.resources.rst:157
+#: library/importlib.resources.rst:173 library/importlib.resources.rst:190
+#: library/importlib.resources.rst:222 library/importlib.resources.rst:236
+msgid "This function is roughly equivalent to::"
 msgstr ""
 
-#: library/importlib.resources.rst:145
+#: library/importlib.resources.rst:140
 msgid "files(package).joinpath(resource).open('rb')"
 msgstr ""
 
-#: library/importlib.resources.rst:150
+#: library/importlib.resources.rst:145
 msgid ""
 "Open for text reading the *resource* within *package*.  By default, the "
 "resource is opened for reading as UTF-8."
 msgstr ""
 
-#: library/importlib.resources.rst:153
+#: library/importlib.resources.rst:148
 msgid ""
 "*package* is either a name or a module object which conforms to the "
 "``Package`` requirements.  *resource* is the name of the resource to open "
@@ -208,22 +207,22 @@ msgid ""
 "same meaning as with built-in :func:`open`."
 msgstr ""
 
-#: library/importlib.resources.rst:159
+#: library/importlib.resources.rst:154
 msgid ""
 "This function returns a ``typing.TextIO`` instance, a text I/O stream open "
 "for reading."
 msgstr ""
 
-#: library/importlib.resources.rst:166
+#: library/importlib.resources.rst:159
 msgid "files(package).joinpath(resource).open('r', encoding=encoding)"
 msgstr ""
 
-#: library/importlib.resources.rst:171
+#: library/importlib.resources.rst:164
 msgid ""
 "Read and return the contents of the *resource* within *package* as ``bytes``."
 msgstr ""
 
-#: library/importlib.resources.rst:174
+#: library/importlib.resources.rst:167
 msgid ""
 "*package* is either a name or a module object which conforms to the "
 "``Package`` requirements.  *resource* is the name of the resource to open "
@@ -232,17 +231,17 @@ msgid ""
 "contents of the resource as :class:`bytes`."
 msgstr ""
 
-#: library/importlib.resources.rst:184
+#: library/importlib.resources.rst:175
 msgid "files(package).joinpath(resource).read_bytes()"
 msgstr ""
 
-#: library/importlib.resources.rst:189
+#: library/importlib.resources.rst:180
 msgid ""
 "Read and return the contents of *resource* within *package* as a ``str``. By "
 "default, the contents are read as strict UTF-8."
 msgstr ""
 
-#: library/importlib.resources.rst:192
+#: library/importlib.resources.rst:183
 msgid ""
 "*package* is either a name or a module object which conforms to the "
 "``Package`` requirements.  *resource* is the name of the resource to open "
@@ -252,24 +251,24 @@ msgid ""
 "contents of the resource as :class:`str`."
 msgstr ""
 
-#: library/importlib.resources.rst:203
+#: library/importlib.resources.rst:192
 msgid "files(package).joinpath(resource).read_text(encoding=encoding)"
 msgstr ""
 
-#: library/importlib.resources.rst:208
+#: library/importlib.resources.rst:197
 msgid ""
 "Return the path to the *resource* as an actual file system path.  This "
 "function returns a context manager for use in a :keyword:`with` statement. "
 "The context manager provides a :class:`pathlib.Path` object."
 msgstr ""
 
-#: library/importlib.resources.rst:212
+#: library/importlib.resources.rst:201
 msgid ""
 "Exiting the context manager cleans up any temporary file created when the "
 "resource needs to be extracted from e.g. a zip file."
 msgstr ""
 
-#: library/importlib.resources.rst:215
+#: library/importlib.resources.rst:204
 msgid ""
 "*package* is either a name or a module object which conforms to the "
 "``Package`` requirements.  *resource* is the name of the resource to open "
@@ -277,15 +276,15 @@ msgid ""
 "resources (i.e. it cannot be a directory)."
 msgstr ""
 
-#: library/importlib.resources.rst:222
-msgid "Calls to this function can be replaced using :func:`as_file`::"
+#: library/importlib.resources.rst:209
+msgid "This function is roughly equivalent to ::"
 msgstr ""
 
-#: library/importlib.resources.rst:224
+#: library/importlib.resources.rst:211
 msgid "as_file(files(package).joinpath(resource))"
 msgstr ""
 
-#: library/importlib.resources.rst:229
+#: library/importlib.resources.rst:216
 msgid ""
 "Return ``True`` if there is a resource named *name* in the package, "
 "otherwise ``False``. This function does not consider directories to be "
@@ -293,24 +292,24 @@ msgid ""
 "the ``Package`` requirements."
 msgstr ""
 
-#: library/importlib.resources.rst:239
+#: library/importlib.resources.rst:224
 msgid "files(package).joinpath(resource).is_file()"
 msgstr ""
 
-#: library/importlib.resources.rst:244
+#: library/importlib.resources.rst:229
 msgid ""
 "Return an iterable over the named items within the package.  The iterable "
 "returns :class:`str` resources (e.g. files) and non-resources (e.g. "
 "directories).  The iterable does not recurse into subdirectories."
 msgstr ""
 
-#: library/importlib.resources.rst:248
+#: library/importlib.resources.rst:233
 msgid ""
 "*package* is either a name or a module object which conforms to the "
 "``Package`` requirements."
 msgstr ""
 
-#: library/importlib.resources.rst:255
+#: library/importlib.resources.rst:238
 msgid ""
 "(resource.name for resource in files(package).iterdir() if resource."
 "is_file())"
diff --git a/library/itertools.po b/library/itertools.po
index 1c924bd56..6bacb9ad9 100644
--- a/library/itertools.po
+++ b/library/itertools.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -1117,7 +1117,7 @@ msgid ""
 "the input iterator and there is no way to access it. This could be an issue "
 "if an application wants to further consume the input iterator after "
 "*takewhile* has been run to exhaustion.  To work around this problem, "
-"consider using `more-iterools before_and_after() <https://more-itertools."
+"consider using `more-itertools before_and_after() <https://more-itertools."
 "readthedocs.io/en/stable/api.html#more_itertools.before_and_after>`_ instead."
 msgstr ""
 
@@ -1310,6 +1310,11 @@ msgid ""
 "    \"Returns the sequence elements n times.\"\n"
 "    return chain.from_iterable(repeat(tuple(iterable), n))\n"
 "\n"
+"def loops(n):\n"
+"    \"Loop n times. Like range(n) but without creating integers.\"\n"
+"    # for _ in loops(100): ...\n"
+"    return repeat(None, n)\n"
+"\n"
 "def tail(n, iterable):\n"
 "    \"Return an iterator over the last n items.\"\n"
 "    # tail(3, 'ABCDEFG') → E F G\n"
@@ -1453,11 +1458,11 @@ msgid ""
 "            yield func()"
 msgstr ""
 
-#: library/itertools.rst:969
+#: library/itertools.rst:974
 msgid "The following recipes have a more mathematical flavor:"
 msgstr ""
 
-#: library/itertools.rst:971
+#: library/itertools.rst:976
 msgid ""
 "def powerset(iterable):\n"
 "    \"powerset([1,2,3]) → () (1,) (2,) (3,) (1,2) (1,3) (2,3) (1,2,3)\"\n"
@@ -1549,6 +1554,11 @@ msgid ""
 "        data[p*p : n : p+p] = bytes(len(range(p*p, n, p+p)))\n"
 "    yield from iter_index(data, 1, start=3)\n"
 "\n"
+"def is_prime(n):\n"
+"    \"Return True if n is prime.\"\n"
+"    # is_prime(1_000_000_000_000_403) → True\n"
+"    return n > 1 and all(n % p for p in sieve(math.isqrt(n) + 1))\n"
+"\n"
 "def factor(n):\n"
 "    \"Prime factors of n.\"\n"
 "    # factor(99) → 3 3 11\n"
@@ -1569,5 +1579,11 @@ msgid ""
 "    # totient(12) → 4 because len([1, 5, 7, 11]) == 4\n"
 "    for prime in set(factor(n)):\n"
 "        n -= n // prime\n"
-"    return n"
+"    return n\n"
+"\n"
+"def multinomial(*counts):\n"
+"    \"Number of distinct arrangements of a multiset.\"\n"
+"    # Counter('abracadabra').values() -> 5 2 1 1 2\n"
+"    # multinomial(5, 2, 1, 1, 2) → 83160\n"
+"    return math.prod(map(math.comb, accumulate(counts), counts))"
 msgstr ""
diff --git a/library/json.po b/library/json.po
index d1ff5cc72..f7eba67d1 100644
--- a/library/json.po
+++ b/library/json.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -194,113 +194,118 @@ msgstr ""
 #: library/json.rst:142
 msgid ""
 "Serialize *obj* as a JSON formatted stream to *fp* (a ``.write()``-"
-"supporting :term:`file-like object`) using this :ref:`conversion table <py-"
-"to-json-table>`."
+"supporting :term:`file-like object`) using this :ref:`Python-to-JSON "
+"conversion table <py-to-json-table>`."
 msgstr ""
 
-#: library/json.rst:146
+#: library/json.rst:148
 msgid ""
-"If *skipkeys* is true (default: ``False``), then dict keys that are not of a "
-"basic type (:class:`str`, :class:`int`, :class:`float`, :class:`bool`, "
-"``None``) will be skipped instead of raising a :exc:`TypeError`."
+"Unlike :mod:`pickle` and :mod:`marshal`, JSON is not a framed protocol, so "
+"trying to serialize multiple objects with repeated calls to :func:`dump` "
+"using the same *fp* will result in an invalid JSON file."
 msgstr ""
 
-#: library/json.rst:150
-msgid ""
-"The :mod:`json` module always produces :class:`str` objects, not :class:"
-"`bytes` objects. Therefore, ``fp.write()`` must support :class:`str` input."
+#: library/json.rst:0
+msgid "Parameters"
 msgstr ""
 
-#: library/json.rst:431
-msgid ""
-"If *ensure_ascii* is true (the default), the output is guaranteed to have "
-"all incoming non-ASCII characters escaped.  If *ensure_ascii* is false, "
-"these characters will be output as-is."
+#: library/json.rst:152
+msgid "The Python object to be serialized."
 msgstr ""
 
-#: library/json.rst:158
+#: library/json.rst:155
 msgid ""
-"If *check_circular* is false (default: ``True``), then the circular "
-"reference check for container types will be skipped and a circular reference "
-"will result in a :exc:`RecursionError` (or worse)."
+"The file-like object *obj* will be serialized to. The :mod:`!json` module "
+"always produces :class:`str` objects, not :class:`bytes` objects, therefore "
+"``fp.write()`` must support :class:`str` input."
 msgstr ""
 
 #: library/json.rst:162
 msgid ""
-"If *allow_nan* is false (default: ``True``), then it will be a :exc:"
-"`ValueError` to serialize out of range :class:`float` values (``nan``, "
-"``inf``, ``-inf``) in strict compliance of the JSON specification. If "
-"*allow_nan* is true, their JavaScript equivalents (``NaN``, ``Infinity``, ``-"
-"Infinity``) will be used."
+"If ``True``, keys that are not of a basic type (:class:`str`, :class:`int`, :"
+"class:`float`, :class:`bool`, ``None``) will be skipped instead of raising "
+"a :exc:`TypeError`. Default ``False``."
 msgstr ""
 
-#: library/json.rst:450
+#: library/json.rst:168
 msgid ""
-"If *indent* is a non-negative integer or string, then JSON array elements "
-"and object members will be pretty-printed with that indent level.  An indent "
-"level of 0, negative, or ``\"\"`` will only insert newlines.  ``None`` (the "
-"default) selects the most compact representation. Using a positive integer "
-"indent indents that many spaces per level.  If *indent* is a string (such as "
-"``\"\\t\"``), that string is used to indent each level."
+"If ``True`` (the default), the output is guaranteed to have all incoming non-"
+"ASCII characters escaped. If ``False``, these characters will be outputted "
+"as-is."
 msgstr ""
 
-#: library/json.rst:457
-msgid "Allow strings for *indent* in addition to integers."
+#: library/json.rst:173
+msgid ""
+"If ``False``, the circular reference check for container types is skipped "
+"and a circular reference will result in a :exc:`RecursionError` (or worse). "
+"Default ``True``."
 msgstr ""
 
-#: library/json.rst:460
+#: library/json.rst:178
 msgid ""
-"If specified, *separators* should be an ``(item_separator, key_separator)`` "
-"tuple.  The default is ``(', ', ': ')`` if *indent* is ``None`` and ``(',', "
-"': ')`` otherwise.  To get the most compact JSON representation, you should "
-"specify ``(',', ':')`` to eliminate whitespace."
+"If ``False``, serialization of out-of-range :class:`float` values (``nan``, "
+"``inf``, ``-inf``) will result in a :exc:`ValueError`, in strict compliance "
+"with the JSON specification. If ``True`` (the default), their JavaScript "
+"equivalents (``NaN``, ``Infinity``, ``-Infinity``) are used."
 msgstr ""
 
-#: library/json.rst:465
-msgid "Use ``(',', ': ')`` as default if *indent* is not ``None``."
+#: library/json.rst:185
+msgid ""
+"If set, a custom JSON encoder with the :meth:`~JSONEncoder.default` method "
+"overridden, for serializing into custom datatypes. If ``None`` (the "
+"default), :class:`!JSONEncoder` is used."
 msgstr ""
 
-#: library/json.rst:468
+#: library/json.rst:192
 msgid ""
-"If specified, *default* should be a function that gets called for objects "
-"that can't otherwise be serialized.  It should return a JSON encodable "
-"version of the object or raise a :exc:`TypeError`.  If not specified, :exc:"
-"`TypeError` is raised."
+"If a positive integer or string, JSON array elements and object members will "
+"be pretty-printed with that indent level. A positive integer indents that "
+"many spaces per level; a string (such as ``\"\\t\"``) is used to indent each "
+"level. If zero, negative, or ``\"\"`` (the empty string), only newlines are "
+"inserted. If ``None`` (the default), the most compact representation is used."
 msgstr ""
 
-#: library/json.rst:191
+#: library/json.rst:202
 msgid ""
-"If *sort_keys* is true (default: ``False``), then the output of dictionaries "
-"will be sorted by key."
+"A two-tuple: ``(item_separator, key_separator)``. If ``None`` (the default), "
+"*separators* defaults to ``(', ', ': ')`` if *indent* is ``None``, and "
+"``(',', ': ')`` otherwise. For the most compact JSON, specify ``(',', ':')`` "
+"to eliminate whitespace."
 msgstr ""
 
-#: library/json.rst:194
+#: library/json.rst:211
 msgid ""
-"To use a custom :class:`JSONEncoder` subclass (e.g. one that overrides the :"
-"meth:`~JSONEncoder.default` method to serialize additional types), specify "
-"it with the *cls* kwarg; otherwise :class:`JSONEncoder` is used."
+"A function that is called for objects that can't otherwise be serialized. It "
+"should return a JSON encodable version of the object or raise a :exc:"
+"`TypeError`. If ``None`` (the default), :exc:`!TypeError` is raised."
 msgstr ""
 
-#: library/json.rst:276
+#: library/json.rst:218
 msgid ""
-"All optional parameters are now :ref:`keyword-only <keyword-only_parameter>`."
+"If ``True``, dictionaries will be outputted sorted by key. Default ``False``."
+msgstr ""
+
+#: library/json.rst:507
+msgid "Allow strings for *indent* in addition to integers."
 msgstr ""
 
-#: library/json.rst:203
+#: library/json.rst:515
+msgid "Use ``(',', ': ')`` as default if *indent* is not ``None``."
+msgstr ""
+
+#: library/json.rst:327
 msgid ""
-"Unlike :mod:`pickle` and :mod:`marshal`, JSON is not a framed protocol, so "
-"trying to serialize multiple objects with repeated calls to :func:`dump` "
-"using the same *fp* will result in an invalid JSON file."
+"All optional parameters are now :ref:`keyword-only <keyword-only_parameter>`."
 msgstr ""
 
-#: library/json.rst:212
+#: library/json.rst:237
 msgid ""
 "Serialize *obj* to a JSON formatted :class:`str` using this :ref:`conversion "
 "table <py-to-json-table>`.  The arguments have the same meaning as in :func:"
 "`dump`."
 msgstr ""
 
-#: library/json.rst:218
+#: library/json.rst:243
 msgid ""
 "Keys in key/value pairs of JSON are always of the type :class:`str`. When a "
 "dictionary is converted into JSON, all the keys of the dictionary are "
@@ -309,200 +314,210 @@ msgid ""
 "original one. That is, ``loads(dumps(x)) != x`` if x has non-string keys."
 msgstr ""
 
-#: library/json.rst:227
+#: library/json.rst:254
 msgid ""
-"Deserialize *fp* (a ``.read()``-supporting :term:`text file` or :term:"
-"`binary file` containing a JSON document) to a Python object using this :ref:"
-"`conversion table <json-to-py-table>`."
+"Deserialize *fp* to a Python object using the :ref:`JSON-to-Python "
+"conversion table <json-to-py-table>`."
 msgstr ""
 
-#: library/json.rst:231
+#: library/json.rst:257
 msgid ""
-"*object_hook* is an optional function that will be called with the result of "
-"any object literal decoded (a :class:`dict`).  The return value of "
-"*object_hook* will be used instead of the :class:`dict`.  This feature can "
-"be used to implement custom decoders (e.g. `JSON-RPC <https://www.jsonrpc."
-"org>`_ class hinting)."
+"A ``.read()``-supporting :term:`text file` or :term:`binary file` containing "
+"the JSON document to be deserialized."
 msgstr ""
 
-#: library/json.rst:237
+#: library/json.rst:262
 msgid ""
-"*object_pairs_hook* is an optional function that will be called with the "
-"result of any object literal decoded with an ordered list of pairs.  The "
-"return value of *object_pairs_hook* will be used instead of the :class:"
-"`dict`.  This feature can be used to implement custom decoders.  If "
-"*object_hook* is also defined, the *object_pairs_hook* takes priority."
+"If set, a custom JSON decoder. Additional keyword arguments to :func:`!load` "
+"will be passed to the constructor of *cls*. If ``None`` (the default), :"
+"class:`!JSONDecoder` is used."
 msgstr ""
 
-#: library/json.rst:347
-msgid "Added support for *object_pairs_hook*."
+#: library/json.rst:269
+msgid ""
+"If set, a function that is called with the result of any object literal "
+"decoded (a :class:`dict`). The return value of this function will be used "
+"instead of the :class:`dict`. This feature can be used to implement custom "
+"decoders, for example `JSON-RPC <https://www.jsonrpc.org>`_ class hinting. "
+"Default ``None``."
 msgstr ""
 
-#: library/json.rst:350
+#: library/json.rst:279
 msgid ""
-"*parse_float* is an optional function that will be called with the string of "
-"every JSON float to be decoded.  By default, this is equivalent to "
-"``float(num_str)``.  This can be used to use another datatype or parser for "
-"JSON floats (e.g. :class:`decimal.Decimal`)."
+"If set, a function that is called with the result of any object literal "
+"decoded with an ordered list of pairs. The return value of this function "
+"will be used instead of the :class:`dict`. This feature can be used to "
+"implement custom decoders. If *object_hook* is also set, *object_pairs_hook* "
+"takes priority. Default ``None``."
 msgstr ""
 
-#: library/json.rst:355
+#: library/json.rst:289
 msgid ""
-"*parse_int* is an optional function that will be called with the string of "
-"every JSON int to be decoded.  By default, this is equivalent to "
-"``int(num_str)``.  This can be used to use another datatype or parser for "
-"JSON integers (e.g. :class:`float`)."
+"If set, a function that is called with the string of every JSON float to be "
+"decoded. If ``None`` (the default), it is equivalent to ``float(num_str)``. "
+"This can be used to parse JSON floats into custom datatypes, for example :"
+"class:`decimal.Decimal`."
 msgstr ""
 
-#: library/json.rst:256
+#: library/json.rst:297
 msgid ""
-"The default *parse_int* of :func:`int` now limits the maximum length of the "
-"integer string via the interpreter's :ref:`integer string conversion length "
-"limitation <int_max_str_digits>` to help avoid denial of service attacks."
+"If set, a function that is called with the string of every JSON int to be "
+"decoded. If ``None`` (the default), it is equivalent to ``int(num_str)``. "
+"This can be used to parse JSON integers into custom datatypes, for example :"
+"class:`float`."
 msgstr ""
 
-#: library/json.rst:360
+#: library/json.rst:305
 msgid ""
-"*parse_constant* is an optional function that will be called with one of the "
-"following strings: ``'-Infinity'``, ``'Infinity'``, ``'NaN'``.  This can be "
-"used to raise an exception if invalid JSON numbers are encountered."
+"If set, a function that is called with one of the following strings: ``'-"
+"Infinity'``, ``'Infinity'``, or ``'NaN'``. This can be used to raise an "
+"exception if invalid JSON numbers are encountered. Default ``None``."
 msgstr ""
 
-#: library/json.rst:266
-msgid "*parse_constant* doesn't get called on 'null', 'true', 'false' anymore."
+#: library/json.rst:0
+msgid "Raises"
 msgstr ""
 
-#: library/json.rst:269
-msgid ""
-"To use a custom :class:`JSONDecoder` subclass, specify it with the ``cls`` "
-"kwarg; otherwise :class:`JSONDecoder` is used.  Additional keyword arguments "
-"will be passed to the constructor of the class."
+#: library/json.rst:313
+msgid "When the data being deserialized is not a valid JSON document."
 msgstr ""
 
-#: library/json.rst:291 library/json.rst:369
+#: library/json.rst:316
 msgid ""
-"If the data being deserialized is not a valid JSON document, a :exc:"
-"`JSONDecodeError` will be raised."
+"When the data being deserialized does not contain UTF-8, UTF-16 or UTF-32 "
+"encoded data."
 msgstr ""
 
-#: library/json.rst:279
+#: library/json.rst:322
+msgid "Added the optional *object_pairs_hook* parameter."
+msgstr ""
+
+#: library/json.rst:323
+msgid "*parse_constant* doesn't get called on 'null', 'true', 'false' anymore."
+msgstr ""
+
+#: library/json.rst:328
 msgid ""
 "*fp* can now be a :term:`binary file`. The input encoding should be UTF-8, "
 "UTF-16 or UTF-32."
 msgstr ""
 
-#: library/json.rst:285
+#: library/json.rst:331
 msgid ""
-"Deserialize *s* (a :class:`str`, :class:`bytes` or :class:`bytearray` "
-"instance containing a JSON document) to a Python object using this :ref:"
-"`conversion table <json-to-py-table>`."
+"The default *parse_int* of :func:`int` now limits the maximum length of the "
+"integer string via the interpreter's :ref:`integer string conversion length "
+"limitation <int_max_str_digits>` to help avoid denial of service attacks."
 msgstr ""
 
-#: library/json.rst:289
-msgid "The other arguments have the same meaning as in :func:`load`."
+#: library/json.rst:339
+msgid ""
+"Identical to :func:`load`, but instead of a file-like object, deserialize "
+"*s* (a :class:`str`, :class:`bytes` or :class:`bytearray` instance "
+"containing a JSON document) to a Python object using this :ref:`conversion "
+"table <json-to-py-table>`."
 msgstr ""
 
-#: library/json.rst:294
+#: library/json.rst:344
 msgid ""
 "*s* can now be of type :class:`bytes` or :class:`bytearray`. The input "
 "encoding should be UTF-8, UTF-16 or UTF-32."
 msgstr ""
 
-#: library/json.rst:298
+#: library/json.rst:348
 msgid "The keyword argument *encoding* has been removed."
 msgstr ""
 
-#: library/json.rst:303
+#: library/json.rst:353
 msgid "Encoders and Decoders"
 msgstr ""
 
-#: library/json.rst:307
+#: library/json.rst:357
 msgid "Simple JSON decoder."
 msgstr ""
 
-#: library/json.rst:309
+#: library/json.rst:359
 msgid "Performs the following translations in decoding by default:"
 msgstr ""
 
-#: library/json.rst:402
+#: library/json.rst:452
 msgid "JSON"
 msgstr ""
 
-#: library/json.rst:402
+#: library/json.rst:452
 msgid "Python"
 msgstr ""
 
-#: library/json.rst:404
+#: library/json.rst:454
 msgid "object"
 msgstr ""
 
-#: library/json.rst:404
+#: library/json.rst:454
 msgid "dict"
 msgstr ""
 
-#: library/json.rst:406
+#: library/json.rst:456
 msgid "array"
 msgstr ""
 
-#: library/json.rst:318
+#: library/json.rst:368
 msgid "list"
 msgstr ""
 
-#: library/json.rst:408
+#: library/json.rst:458
 msgid "string"
 msgstr ""
 
-#: library/json.rst:408
+#: library/json.rst:458
 msgid "str"
 msgstr ""
 
-#: library/json.rst:322
+#: library/json.rst:372
 msgid "number (int)"
 msgstr ""
 
-#: library/json.rst:322
+#: library/json.rst:372
 msgid "int"
 msgstr ""
 
-#: library/json.rst:324
+#: library/json.rst:374
 msgid "number (real)"
 msgstr ""
 
-#: library/json.rst:324
+#: library/json.rst:374
 msgid "float"
 msgstr ""
 
-#: library/json.rst:412
+#: library/json.rst:462
 msgid "true"
 msgstr ""
 
-#: library/json.rst:412
+#: library/json.rst:462
 msgid "True"
 msgstr ""
 
-#: library/json.rst:414
+#: library/json.rst:464
 msgid "false"
 msgstr ""
 
-#: library/json.rst:414
+#: library/json.rst:464
 msgid "False"
 msgstr ""
 
-#: library/json.rst:416
+#: library/json.rst:466
 msgid "null"
 msgstr ""
 
-#: library/json.rst:416
+#: library/json.rst:466
 msgid "None"
 msgstr ""
 
-#: library/json.rst:333
+#: library/json.rst:383
 msgid ""
 "It also understands ``NaN``, ``Infinity``, and ``-Infinity`` as their "
 "corresponding ``float`` values, which is outside the JSON spec."
 msgstr ""
 
-#: library/json.rst:336
+#: library/json.rst:386
 msgid ""
 "*object_hook* is an optional function that will be called with the result of "
 "every JSON object decoded and its return value will be used in place of the "
@@ -510,7 +525,7 @@ msgid ""
 "g. to support `JSON-RPC <https://www.jsonrpc.org>`_ class hinting)."
 msgstr ""
 
-#: library/json.rst:341
+#: library/json.rst:391
 msgid ""
 "*object_pairs_hook* is an optional function that will be called with the "
 "result of every JSON object decoded with an ordered list of pairs.  The "
@@ -519,7 +534,34 @@ msgid ""
 "*object_hook* is also defined, the *object_pairs_hook* takes priority."
 msgstr ""
 
-#: library/json.rst:364
+#: library/json.rst:397
+msgid "Added support for *object_pairs_hook*."
+msgstr ""
+
+#: library/json.rst:400
+msgid ""
+"*parse_float* is an optional function that will be called with the string of "
+"every JSON float to be decoded.  By default, this is equivalent to "
+"``float(num_str)``.  This can be used to use another datatype or parser for "
+"JSON floats (e.g. :class:`decimal.Decimal`)."
+msgstr ""
+
+#: library/json.rst:405
+msgid ""
+"*parse_int* is an optional function that will be called with the string of "
+"every JSON int to be decoded.  By default, this is equivalent to "
+"``int(num_str)``.  This can be used to use another datatype or parser for "
+"JSON integers (e.g. :class:`float`)."
+msgstr ""
+
+#: library/json.rst:410
+msgid ""
+"*parse_constant* is an optional function that will be called with one of the "
+"following strings: ``'-Infinity'``, ``'Infinity'``, ``'NaN'``.  This can be "
+"used to raise an exception if invalid JSON numbers are encountered."
+msgstr ""
+
+#: library/json.rst:414
 msgid ""
 "If *strict* is false (``True`` is the default), then control characters will "
 "be allowed inside strings.  Control characters in this context are those "
@@ -527,60 +569,66 @@ msgid ""
 "``'\\n'``, ``'\\r'`` and ``'\\0'``."
 msgstr ""
 
-#: library/json.rst:473
+#: library/json.rst:419
+msgid ""
+"If the data being deserialized is not a valid JSON document, a :exc:"
+"`JSONDecodeError` will be raised."
+msgstr ""
+
+#: library/json.rst:523
 msgid "All parameters are now :ref:`keyword-only <keyword-only_parameter>`."
 msgstr ""
 
-#: library/json.rst:377
+#: library/json.rst:427
 msgid ""
 "Return the Python representation of *s* (a :class:`str` instance containing "
 "a JSON document)."
 msgstr ""
 
-#: library/json.rst:380
+#: library/json.rst:430
 msgid ""
 ":exc:`JSONDecodeError` will be raised if the given JSON document is not "
 "valid."
 msgstr ""
 
-#: library/json.rst:385
+#: library/json.rst:435
 msgid ""
 "Decode a JSON document from *s* (a :class:`str` beginning with a JSON "
 "document) and return a 2-tuple of the Python representation and the index in "
 "*s* where the document ended."
 msgstr ""
 
-#: library/json.rst:389
+#: library/json.rst:439
 msgid ""
 "This can be used to decode a JSON document from a string that may have "
 "extraneous data at the end."
 msgstr ""
 
-#: library/json.rst:395
+#: library/json.rst:445
 msgid "Extensible JSON encoder for Python data structures."
 msgstr ""
 
-#: library/json.rst:397
+#: library/json.rst:447
 msgid "Supports the following objects and types by default:"
 msgstr ""
 
-#: library/json.rst:406
+#: library/json.rst:456
 msgid "list, tuple"
 msgstr ""
 
-#: library/json.rst:410
+#: library/json.rst:460
 msgid "int, float, int- & float-derived Enums"
 msgstr ""
 
-#: library/json.rst:410
+#: library/json.rst:460
 msgid "number"
 msgstr ""
 
-#: library/json.rst:419
+#: library/json.rst:469
 msgid "Added support for int- and float-derived Enum classes."
 msgstr ""
 
-#: library/json.rst:422
+#: library/json.rst:472
 msgid ""
 "To extend this to recognize other objects, subclass and implement a :meth:"
 "`~JSONEncoder.default` method with another method that returns a "
@@ -588,14 +636,22 @@ msgid ""
 "superclass implementation (to raise :exc:`TypeError`)."
 msgstr ""
 
-#: library/json.rst:427
+#: library/json.rst:477
 msgid ""
 "If *skipkeys* is false (the default), a :exc:`TypeError` will be raised when "
 "trying to encode keys that are not :class:`str`, :class:`int`, :class:"
-"`float` or ``None``.  If *skipkeys* is true, such items are simply skipped."
+"`float`, :class:`bool` or ``None``.  If *skipkeys* is true, such items are "
+"simply skipped."
 msgstr ""
 
-#: library/json.rst:435
+#: library/json.rst:481
+msgid ""
+"If *ensure_ascii* is true (the default), the output is guaranteed to have "
+"all incoming non-ASCII characters escaped.  If *ensure_ascii* is false, "
+"these characters will be output as-is."
+msgstr ""
+
+#: library/json.rst:485
 msgid ""
 "If *check_circular* is true (the default), then lists, dicts, and custom "
 "encoded objects will be checked for circular references during encoding to "
@@ -603,7 +659,7 @@ msgid ""
 "Otherwise, no such check takes place."
 msgstr ""
 
-#: library/json.rst:440
+#: library/json.rst:490
 msgid ""
 "If *allow_nan* is true (the default), then ``NaN``, ``Infinity``, and ``-"
 "Infinity`` will be encoded as such.  This behavior is not JSON specification "
@@ -611,27 +667,53 @@ msgid ""
 "decoders.  Otherwise, it will be a :exc:`ValueError` to encode such floats."
 msgstr ""
 
-#: library/json.rst:446
+#: library/json.rst:496
 msgid ""
 "If *sort_keys* is true (default: ``False``), then the output of dictionaries "
 "will be sorted by key; this is useful for regression tests to ensure that "
 "JSON serializations can be compared on a day-to-day basis."
 msgstr ""
 
-#: library/json.rst:479
+#: library/json.rst:500
+msgid ""
+"If *indent* is a non-negative integer or string, then JSON array elements "
+"and object members will be pretty-printed with that indent level.  An indent "
+"level of 0, negative, or ``\"\"`` will only insert newlines.  ``None`` (the "
+"default) selects the most compact representation. Using a positive integer "
+"indent indents that many spaces per level.  If *indent* is a string (such as "
+"``\"\\t\"``), that string is used to indent each level."
+msgstr ""
+
+#: library/json.rst:510
+msgid ""
+"If specified, *separators* should be an ``(item_separator, key_separator)`` "
+"tuple.  The default is ``(', ', ': ')`` if *indent* is ``None`` and ``(',', "
+"': ')`` otherwise.  To get the most compact JSON representation, you should "
+"specify ``(',', ':')`` to eliminate whitespace."
+msgstr ""
+
+#: library/json.rst:518
+msgid ""
+"If specified, *default* should be a function that gets called for objects "
+"that can't otherwise be serialized.  It should return a JSON encodable "
+"version of the object or raise a :exc:`TypeError`.  If not specified, :exc:"
+"`TypeError` is raised."
+msgstr ""
+
+#: library/json.rst:529
 msgid ""
 "Implement this method in a subclass such that it returns a serializable "
 "object for *o*, or calls the base implementation (to raise a :exc:"
 "`TypeError`)."
 msgstr ""
 
-#: library/json.rst:483
+#: library/json.rst:533
 msgid ""
 "For example, to support arbitrary iterators, you could implement :meth:"
 "`~JSONEncoder.default` like this::"
 msgstr ""
 
-#: library/json.rst:486
+#: library/json.rst:536
 msgid ""
 "def default(self, o):\n"
 "   try:\n"
@@ -644,63 +726,63 @@ msgid ""
 "   return super().default(o)"
 msgstr ""
 
-#: library/json.rst:499
+#: library/json.rst:549
 msgid ""
 "Return a JSON string representation of a Python data structure, *o*.  For "
 "example::"
 msgstr ""
 
-#: library/json.rst:502
+#: library/json.rst:552
 msgid ""
 ">>> json.JSONEncoder().encode({\"foo\": [\"bar\", \"baz\"]})\n"
 "'{\"foo\": [\"bar\", \"baz\"]}'"
 msgstr ""
 
-#: library/json.rst:508
+#: library/json.rst:558
 msgid ""
 "Encode the given object, *o*, and yield each string representation as "
 "available.  For example::"
 msgstr ""
 
-#: library/json.rst:511
+#: library/json.rst:561
 msgid ""
 "for chunk in json.JSONEncoder().iterencode(bigobject):\n"
 "    mysocket.write(chunk)"
 msgstr ""
 
-#: library/json.rst:516
+#: library/json.rst:566
 msgid "Exceptions"
 msgstr ""
 
-#: library/json.rst:520
+#: library/json.rst:570
 msgid "Subclass of :exc:`ValueError` with the following additional attributes:"
 msgstr ""
 
-#: library/json.rst:524
+#: library/json.rst:574
 msgid "The unformatted error message."
 msgstr ""
 
-#: library/json.rst:528
+#: library/json.rst:578
 msgid "The JSON document being parsed."
 msgstr ""
 
-#: library/json.rst:532
+#: library/json.rst:582
 msgid "The start index of *doc* where parsing failed."
 msgstr ""
 
-#: library/json.rst:536
+#: library/json.rst:586
 msgid "The line corresponding to *pos*."
 msgstr ""
 
-#: library/json.rst:540
+#: library/json.rst:590
 msgid "The column corresponding to *pos*."
 msgstr ""
 
-#: library/json.rst:546
+#: library/json.rst:596
 msgid "Standard Compliance and Interoperability"
 msgstr ""
 
-#: library/json.rst:548
+#: library/json.rst:598
 msgid ""
 "The JSON format is specified by :rfc:`7159` and by `ECMA-404 <https://ecma-"
 "international.org/publications-and-standards/standards/ecma-404/>`_. This "
@@ -709,48 +791,48 @@ msgid ""
 "parameters other than those explicitly mentioned, are not considered."
 msgstr ""
 
-#: library/json.rst:554
+#: library/json.rst:604
 msgid ""
 "This module does not comply with the RFC in a strict fashion, implementing "
 "some extensions that are valid JavaScript but not valid JSON.  In particular:"
 msgstr ""
 
-#: library/json.rst:557
+#: library/json.rst:607
 msgid "Infinite and NaN number values are accepted and output;"
 msgstr ""
 
-#: library/json.rst:558
+#: library/json.rst:608
 msgid ""
 "Repeated names within an object are accepted, and only the value of the last "
 "name-value pair is used."
 msgstr ""
 
-#: library/json.rst:561
+#: library/json.rst:611
 msgid ""
 "Since the RFC permits RFC-compliant parsers to accept input texts that are "
 "not RFC-compliant, this module's deserializer is technically RFC-compliant "
 "under default settings."
 msgstr ""
 
-#: library/json.rst:566
+#: library/json.rst:616
 msgid "Character Encodings"
 msgstr ""
 
-#: library/json.rst:568
+#: library/json.rst:618
 msgid ""
 "The RFC requires that JSON be represented using either UTF-8, UTF-16, or "
 "UTF-32, with UTF-8 being the recommended default for maximum "
 "interoperability."
 msgstr ""
 
-#: library/json.rst:571
+#: library/json.rst:621
 msgid ""
 "As permitted, though not required, by the RFC, this module's serializer sets "
 "*ensure_ascii=True* by default, thus escaping the output so that the "
 "resulting strings only contain ASCII characters."
 msgstr ""
 
-#: library/json.rst:575
+#: library/json.rst:625
 msgid ""
 "Other than the *ensure_ascii* parameter, this module is defined strictly in "
 "terms of conversion between Python objects and :class:`Unicode strings "
@@ -758,7 +840,7 @@ msgid ""
 "encodings."
 msgstr ""
 
-#: library/json.rst:580
+#: library/json.rst:630
 msgid ""
 "The RFC prohibits adding a byte order mark (BOM) to the start of a JSON "
 "text, and this module's serializer does not add a BOM to its output. The RFC "
@@ -767,7 +849,7 @@ msgid ""
 "an initial BOM is present."
 msgstr ""
 
-#: library/json.rst:586
+#: library/json.rst:636
 msgid ""
 "The RFC does not explicitly forbid JSON strings which contain byte sequences "
 "that don't correspond to valid Unicode characters (e.g. unpaired UTF-16 "
@@ -776,18 +858,18 @@ msgid ""
 "class:`str`) code points for such sequences."
 msgstr ""
 
-#: library/json.rst:594
+#: library/json.rst:644
 msgid "Infinite and NaN Number Values"
 msgstr ""
 
-#: library/json.rst:596
+#: library/json.rst:646
 msgid ""
 "The RFC does not permit the representation of infinite or NaN number values. "
 "Despite that, by default, this module accepts and outputs ``Infinity``, ``-"
 "Infinity``, and ``NaN`` as if they were valid JSON number literal values::"
 msgstr ""
 
-#: library/json.rst:600
+#: library/json.rst:650
 msgid ""
 ">>> # Neither of these calls raises an exception, but the results are not "
 "valid JSON\n"
@@ -802,18 +884,18 @@ msgid ""
 "nan"
 msgstr ""
 
-#: library/json.rst:611
+#: library/json.rst:661
 msgid ""
 "In the serializer, the *allow_nan* parameter can be used to alter this "
 "behavior.  In the deserializer, the *parse_constant* parameter can be used "
 "to alter this behavior."
 msgstr ""
 
-#: library/json.rst:617
+#: library/json.rst:667
 msgid "Repeated Names Within an Object"
 msgstr ""
 
-#: library/json.rst:619
+#: library/json.rst:669
 msgid ""
 "The RFC specifies that the names within a JSON object should be unique, but "
 "does not mandate how repeated names in JSON objects should be handled.  By "
@@ -821,22 +903,22 @@ msgid ""
 "but the last name-value pair for a given name::"
 msgstr ""
 
-#: library/json.rst:624
+#: library/json.rst:674
 msgid ""
 ">>> weird_json = '{\"x\": 1, \"x\": 2, \"x\": 3}'\n"
 ">>> json.loads(weird_json)\n"
 "{'x': 3}"
 msgstr ""
 
-#: library/json.rst:628
+#: library/json.rst:678
 msgid "The *object_pairs_hook* parameter can be used to alter this behavior."
 msgstr ""
 
-#: library/json.rst:632
+#: library/json.rst:682
 msgid "Top-level Non-Object, Non-Array Values"
 msgstr ""
 
-#: library/json.rst:634
+#: library/json.rst:684
 msgid ""
 "The old version of JSON specified by the obsolete :rfc:`4627` required that "
 "the top-level value of a JSON text must be either a JSON object or array "
@@ -846,43 +928,43 @@ msgid ""
 "its serializer or its deserializer."
 msgstr ""
 
-#: library/json.rst:641
+#: library/json.rst:691
 msgid ""
 "Regardless, for maximum interoperability, you may wish to voluntarily adhere "
 "to the restriction yourself."
 msgstr ""
 
-#: library/json.rst:646
+#: library/json.rst:696
 msgid "Implementation Limitations"
 msgstr ""
 
-#: library/json.rst:648
+#: library/json.rst:698
 msgid "Some JSON deserializer implementations may set limits on:"
 msgstr ""
 
-#: library/json.rst:650
+#: library/json.rst:700
 msgid "the size of accepted JSON texts"
 msgstr ""
 
-#: library/json.rst:651
+#: library/json.rst:701
 msgid "the maximum level of nesting of JSON objects and arrays"
 msgstr ""
 
-#: library/json.rst:652
+#: library/json.rst:702
 msgid "the range and precision of JSON numbers"
 msgstr ""
 
-#: library/json.rst:653
+#: library/json.rst:703
 msgid "the content and maximum length of JSON strings"
 msgstr ""
 
-#: library/json.rst:655
+#: library/json.rst:705
 msgid ""
 "This module does not impose any such limits beyond those of the relevant "
 "Python datatypes themselves or the Python interpreter itself."
 msgstr ""
 
-#: library/json.rst:658
+#: library/json.rst:708
 msgid ""
 "When serializing to JSON, beware any such limitations in applications that "
 "may consume your JSON.  In particular, it is common for JSON numbers to be "
@@ -893,27 +975,27 @@ msgid ""
 "as :class:`decimal.Decimal`."
 msgstr ""
 
-#: library/json.rst:671
+#: library/json.rst:721
 msgid "Command Line Interface"
 msgstr ""
 
-#: library/json.rst:676
+#: library/json.rst:726
 msgid "**Source code:** :source:`Lib/json/tool.py`"
 msgstr ""
 
-#: library/json.rst:680
+#: library/json.rst:730
 msgid ""
 "The :mod:`json.tool` module provides a simple command line interface to "
 "validate and pretty-print JSON objects."
 msgstr ""
 
-#: library/json.rst:683
+#: library/json.rst:733
 msgid ""
 "If the optional ``infile`` and ``outfile`` arguments are not specified, :"
 "data:`sys.stdin` and :data:`sys.stdout` will be used respectively:"
 msgstr ""
 
-#: library/json.rst:686
+#: library/json.rst:736
 msgid ""
 "$ echo '{\"json\": \"obj\"}' | python -m json.tool\n"
 "{\n"
@@ -923,21 +1005,21 @@ msgid ""
 "Expecting property name enclosed in double quotes: line 1 column 2 (char 1)"
 msgstr ""
 
-#: library/json.rst:695
+#: library/json.rst:745
 msgid ""
 "The output is now in the same order as the input. Use the :option:`--sort-"
 "keys` option to sort the output of dictionaries alphabetically by key."
 msgstr ""
 
-#: library/json.rst:702
+#: library/json.rst:752
 msgid "Command line options"
 msgstr ""
 
-#: library/json.rst:706
+#: library/json.rst:756
 msgid "The JSON file to be validated or pretty-printed:"
 msgstr ""
 
-#: library/json.rst:708
+#: library/json.rst:758
 msgid ""
 "$ python -m json.tool mp_films.json\n"
 "[\n"
@@ -952,43 +1034,43 @@ msgid ""
 "]"
 msgstr ""
 
-#: library/json.rst:722
+#: library/json.rst:772
 msgid "If *infile* is not specified, read from :data:`sys.stdin`."
 msgstr ""
 
-#: library/json.rst:726
+#: library/json.rst:776
 msgid ""
 "Write the output of the *infile* to the given *outfile*. Otherwise, write it "
 "to :data:`sys.stdout`."
 msgstr ""
 
-#: library/json.rst:731
+#: library/json.rst:781
 msgid "Sort the output of dictionaries alphabetically by key."
 msgstr ""
 
-#: library/json.rst:737
+#: library/json.rst:787
 msgid ""
 "Disable escaping of non-ascii characters, see :func:`json.dumps` for more "
 "information."
 msgstr ""
 
-#: library/json.rst:743
+#: library/json.rst:793
 msgid "Parse every input line as separate JSON object."
 msgstr ""
 
-#: library/json.rst:749
+#: library/json.rst:799
 msgid "Mutually exclusive options for whitespace control."
 msgstr ""
 
-#: library/json.rst:755
+#: library/json.rst:805
 msgid "Show the help message."
 msgstr ""
 
-#: library/json.rst:759
+#: library/json.rst:809
 msgid "Footnotes"
 msgstr ""
 
-#: library/json.rst:760
+#: library/json.rst:810
 msgid ""
 "As noted in `the errata for RFC 7159 <https://www.rfc-editor.org/"
 "errata_search.php?rfc=7159>`_, JSON permits literal U+2028 (LINE SEPARATOR) "
diff --git a/library/locale.po b/library/locale.po
index f20a9a07b..66500186d 100644
--- a/library/locale.po
+++ b/library/locale.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -427,10 +427,12 @@ msgid ""
 msgstr ""
 
 #: library/locale.rst:284
-msgid "Get a string that represents the era used in the current locale."
+msgid ""
+"Get a string which describes how years are counted and displayed for each "
+"era in a locale."
 msgstr ""
 
-#: library/locale.rst:286
+#: library/locale.rst:287
 msgid ""
 "Most locales do not define this value.  An example of a locale which does "
 "define this value is the Japanese one.  In Japan, the traditional "
@@ -438,47 +440,48 @@ msgid ""
 "then-emperor's reign."
 msgstr ""
 
-#: library/locale.rst:291
+#: library/locale.rst:292
 msgid ""
 "Normally it should not be necessary to use this value directly. Specifying "
 "the ``E`` modifier in their format strings causes the :func:`time.strftime` "
-"function to use this information.  The format of the returned string is not "
-"specified, and therefore you should not assume knowledge of it on different "
-"systems."
+"function to use this information. The format of the returned string is "
+"specified in *The Open Group Base Specifications Issue 8*, paragraph "
+"`7.3.5.2 LC_TIME C-Language Access <https://pubs.opengroup.org/"
+"onlinepubs/9799919799/basedefs/V1_chap07.html#tag_07_03_05_02>`_."
 msgstr ""
 
-#: library/locale.rst:299
+#: library/locale.rst:301
 msgid ""
 "Get a format string for :func:`time.strftime` to represent date and time in "
 "a locale-specific era-based way."
 msgstr ""
 
-#: library/locale.rst:304
+#: library/locale.rst:306
 msgid ""
 "Get a format string for :func:`time.strftime` to represent a date in a "
 "locale-specific era-based way."
 msgstr ""
 
-#: library/locale.rst:309
+#: library/locale.rst:311
 msgid ""
 "Get a format string for :func:`time.strftime` to represent a time in a "
 "locale-specific era-based way."
 msgstr ""
 
-#: library/locale.rst:314
+#: library/locale.rst:316
 msgid ""
 "Get a string consisting of up to 100 semicolon-separated symbols used to "
 "represent the values 0 to 99 in a locale-specific way. In most locales this "
 "is an empty string."
 msgstr ""
 
-#: library/locale.rst:321
+#: library/locale.rst:323
 msgid ""
 "Tries to determine the default locale settings and returns them as a tuple "
 "of the form ``(language code, encoding)``."
 msgstr ""
 
-#: library/locale.rst:324
+#: library/locale.rst:326
 msgid ""
 "According to POSIX, a program which has not called ``setlocale(LC_ALL, '')`` "
 "runs using the portable ``'C'`` locale.  Calling ``setlocale(LC_ALL, '')`` "
@@ -487,7 +490,7 @@ msgid ""
 "emulate the behavior in the way described above."
 msgstr ""
 
-#: library/locale.rst:330
+#: library/locale.rst:332
 msgid ""
 "To maintain compatibility with other platforms, not only the :envvar:`LANG` "
 "variable is tested, but a list of variables given as envvars parameter.  The "
@@ -497,21 +500,21 @@ msgid ""
 "``'LC_CTYPE'``, ``'LANG'`` and ``'LANGUAGE'``, in that order."
 msgstr ""
 
-#: library/locale.rst:350
+#: library/locale.rst:352
 msgid ""
 "Except for the code ``'C'``, the language code corresponds to :rfc:`1766`. "
 "*language code* and *encoding* may be ``None`` if their values cannot be "
 "determined."
 msgstr ""
 
-#: library/locale.rst:346
+#: library/locale.rst:348
 msgid ""
 "Returns the current setting for the given locale category as sequence "
 "containing *language code*, *encoding*. *category* may be one of the :const:"
 "`!LC_\\*` values except :const:`LC_ALL`.  It defaults to :const:`LC_CTYPE`."
 msgstr ""
 
-#: library/locale.rst:357
+#: library/locale.rst:359
 msgid ""
 "Return the :term:`locale encoding` used for text data, according to user "
 "preferences.  User preferences are expressed differently on different "
@@ -519,82 +522,82 @@ msgid ""
 "this function only returns a guess."
 msgstr ""
 
-#: library/locale.rst:362
+#: library/locale.rst:364
 msgid ""
 "On some systems, it is necessary to invoke :func:`setlocale` to obtain the "
 "user preferences, so this function is not thread-safe. If invoking setlocale "
 "is not necessary or desired, *do_setlocale* should be set to ``False``."
 msgstr ""
 
-#: library/locale.rst:366
+#: library/locale.rst:368
 msgid ""
 "On Android or if the :ref:`Python UTF-8 Mode <utf8-mode>` is enabled, always "
 "return ``'utf-8'``, the :term:`locale encoding` and the *do_setlocale* "
 "argument are ignored."
 msgstr ""
 
-#: library/locale.rst:388
+#: library/locale.rst:390
 msgid ""
 "The :ref:`Python preinitialization <c-preinit>` configures the LC_CTYPE "
 "locale. See also the :term:`filesystem encoding and error handler`."
 msgstr ""
 
-#: library/locale.rst:373
+#: library/locale.rst:375
 msgid ""
 "The function now always returns ``\"utf-8\"`` on Android or if the :ref:"
 "`Python UTF-8 Mode <utf8-mode>` is enabled."
 msgstr ""
 
-#: library/locale.rst:380
+#: library/locale.rst:382
 msgid "Get the current :term:`locale encoding`:"
 msgstr ""
 
-#: library/locale.rst:382
+#: library/locale.rst:384
 msgid "On Android and VxWorks, return ``\"utf-8\"``."
 msgstr ""
 
-#: library/locale.rst:383
+#: library/locale.rst:385
 msgid ""
 "On Unix, return the encoding of the current :data:`LC_CTYPE` locale. Return "
 "``\"utf-8\"`` if ``nl_langinfo(CODESET)`` returns an empty string: for "
 "example, if the current LC_CTYPE locale is not supported."
 msgstr ""
 
-#: library/locale.rst:386
+#: library/locale.rst:388
 msgid "On Windows, return the ANSI code page."
 msgstr ""
 
-#: library/locale.rst:391
+#: library/locale.rst:393
 msgid ""
 "This function is similar to :func:`getpreferredencoding(False) "
 "<getpreferredencoding>` except this function ignores the :ref:`Python UTF-8 "
 "Mode <utf8-mode>`."
 msgstr ""
 
-#: library/locale.rst:400
+#: library/locale.rst:402
 msgid ""
 "Returns a normalized locale code for the given locale name.  The returned "
 "locale code is formatted for use with :func:`setlocale`.  If normalization "
 "fails, the original name is returned unchanged."
 msgstr ""
 
-#: library/locale.rst:404
+#: library/locale.rst:406
 msgid ""
 "If the given encoding is not known, the function defaults to the default "
 "encoding for the locale code just like :func:`setlocale`."
 msgstr ""
 
-#: library/locale.rst:410
+#: library/locale.rst:412
 msgid "Sets the locale for *category* to the default setting."
 msgstr ""
 
-#: library/locale.rst:412
+#: library/locale.rst:414
 msgid ""
 "The default setting is determined by calling :func:`getdefaultlocale`. "
 "*category* defaults to :const:`LC_ALL`."
 msgstr ""
 
-#: library/locale.rst:420
+#: library/locale.rst:422
 msgid ""
 "Compares two strings according to the current :const:`LC_COLLATE` setting. "
 "As any other compare function, returns a negative, or a positive value, or "
@@ -602,7 +605,7 @@ msgid ""
 "is equal to it."
 msgstr ""
 
-#: library/locale.rst:428
+#: library/locale.rst:430
 msgid ""
 "Transforms a string to one that can be used in locale-aware comparisons.  "
 "For example, ``strxfrm(s1) < strxfrm(s2)`` is equivalent to ``strcoll(s1, "
@@ -610,7 +613,7 @@ msgid ""
 "repeatedly, e.g. when collating a sequence of strings."
 msgstr ""
 
-#: library/locale.rst:437
+#: library/locale.rst:439
 msgid ""
 "Formats a number *val* according to the current :const:`LC_NUMERIC` setting. "
 "The format follows the conventions of the ``%`` operator.  For floating-"
@@ -618,29 +621,29 @@ msgid ""
 "is ``True``, also takes the grouping into account."
 msgstr ""
 
-#: library/locale.rst:442
+#: library/locale.rst:444
 msgid ""
 "If *monetary* is true, the conversion uses monetary thousands separator and "
 "grouping strings."
 msgstr ""
 
-#: library/locale.rst:445
+#: library/locale.rst:447
 msgid ""
 "Processes formatting specifiers as in ``format % val``, but takes the "
 "current locale settings into account."
 msgstr ""
 
-#: library/locale.rst:448
+#: library/locale.rst:450
 msgid "The *monetary* keyword parameter was added."
 msgstr ""
 
-#: library/locale.rst:454
+#: library/locale.rst:456
 msgid ""
 "Formats a number *val* according to the current :const:`LC_MONETARY` "
 "settings."
 msgstr ""
 
-#: library/locale.rst:456
+#: library/locale.rst:458
 msgid ""
 "The returned string includes the currency symbol if *symbol* is true, which "
 "is the default. If *grouping* is ``True`` (which is not the default), "
@@ -648,43 +651,43 @@ msgid ""
 "not the default), the international currency symbol is used."
 msgstr ""
 
-#: library/locale.rst:463
+#: library/locale.rst:465
 msgid ""
 "This function will not work with the 'C' locale, so you have to set a locale "
 "via :func:`setlocale` first."
 msgstr ""
 
-#: library/locale.rst:469
+#: library/locale.rst:471
 msgid ""
 "Formats a floating-point number using the same format as the built-in "
 "function ``str(float)``, but takes the decimal point into account."
 msgstr ""
 
-#: library/locale.rst:475
+#: library/locale.rst:477
 msgid ""
 "Converts a string into a normalized number string, following the :const:"
 "`LC_NUMERIC` settings."
 msgstr ""
 
-#: library/locale.rst:483
+#: library/locale.rst:485
 msgid ""
 "Converts a normalized number string into a formatted string following the :"
 "const:`LC_NUMERIC` settings."
 msgstr ""
 
-#: library/locale.rst:491
+#: library/locale.rst:493
 msgid ""
 "Converts a string to a number, following the :const:`LC_NUMERIC` settings, "
 "by calling *func* on the result of calling :func:`delocalize` on *string*."
 msgstr ""
 
-#: library/locale.rst:497
+#: library/locale.rst:499
 msgid ""
 "Converts a string to an integer, following the :const:`LC_NUMERIC` "
 "conventions."
 msgstr ""
 
-#: library/locale.rst:502
+#: library/locale.rst:504
 msgid ""
 "Locale category for the character type functions.  Most importantly, this "
 "category defines the text encoding, i.e. how bytes are interpreted as "
@@ -694,32 +697,32 @@ msgid ""
 "SSH connections."
 msgstr ""
 
-#: library/locale.rst:509
+#: library/locale.rst:511
 msgid ""
 "Python doesn't internally use locale-dependent character transformation "
 "functions from ``ctype.h``. Instead, an internal ``pyctype.h`` provides "
 "locale-independent equivalents like :c:macro:`!Py_TOLOWER`."
 msgstr ""
 
-#: library/locale.rst:516
+#: library/locale.rst:518
 msgid ""
 "Locale category for sorting strings.  The functions :func:`strcoll` and :"
 "func:`strxfrm` of the :mod:`locale` module are affected."
 msgstr ""
 
-#: library/locale.rst:522
+#: library/locale.rst:524
 msgid ""
 "Locale category for the formatting of time.  The function :func:`time."
 "strftime` follows these conventions."
 msgstr ""
 
-#: library/locale.rst:528
+#: library/locale.rst:530
 msgid ""
 "Locale category for formatting of monetary values.  The available options "
 "are available from the :func:`localeconv` function."
 msgstr ""
 
-#: library/locale.rst:534
+#: library/locale.rst:536
 msgid ""
 "Locale category for message display. Python currently does not support "
 "application specific locale-aware messages.  Messages displayed by the "
@@ -727,13 +730,13 @@ msgid ""
 "affected by this category."
 msgstr ""
 
-#: library/locale.rst:539
+#: library/locale.rst:541
 msgid ""
 "This value may not be available on operating systems not conforming to the "
 "POSIX standard, most notably Windows."
 msgstr ""
 
-#: library/locale.rst:545
+#: library/locale.rst:547
 msgid ""
 "Locale category for formatting numbers.  The functions :func:"
 "`format_string`, :func:`atoi`, :func:`atof` and :func:`.str` of the :mod:"
@@ -741,7 +744,7 @@ msgid ""
 "operations are not affected."
 msgstr ""
 
-#: library/locale.rst:553
+#: library/locale.rst:555
 msgid ""
 "Combination of all locale settings.  If this flag is used when the locale is "
 "changed, setting the locale for all categories is attempted. If that fails "
@@ -751,17 +754,17 @@ msgid ""
 "settings."
 msgstr ""
 
-#: library/locale.rst:562
+#: library/locale.rst:564
 msgid ""
 "This is a symbolic constant used for different values returned by :func:"
 "`localeconv`."
 msgstr ""
 
-#: library/locale.rst:566
+#: library/locale.rst:568
 msgid "Example::"
 msgstr ""
 
-#: library/locale.rst:568
+#: library/locale.rst:570
 msgid ""
 ">>> import locale\n"
 ">>> loc = locale.getlocale()  # get current locale\n"
@@ -774,11 +777,11 @@ msgid ""
 ">>> locale.setlocale(locale.LC_ALL, loc)  # restore saved locale"
 msgstr ""
 
-#: library/locale.rst:579
+#: library/locale.rst:581
 msgid "Background, details, hints, tips and caveats"
 msgstr ""
 
-#: library/locale.rst:581
+#: library/locale.rst:583
 msgid ""
 "The C standard defines the locale as a program-wide property that may be "
 "relatively expensive to change.  On top of that, some implementations are "
@@ -786,7 +789,7 @@ msgid ""
 "This makes the locale somewhat painful to use correctly."
 msgstr ""
 
-#: library/locale.rst:586
+#: library/locale.rst:588
 msgid ""
 "Initially, when a program is started, the locale is the ``C`` locale, no "
 "matter what the user's preferred locale is.  There is one exception: the :"
@@ -796,7 +799,7 @@ msgid ""
 "categories by calling ``setlocale(LC_ALL, '')``."
 msgstr ""
 
-#: library/locale.rst:593
+#: library/locale.rst:595
 msgid ""
 "It is generally a bad idea to call :func:`setlocale` in some library "
 "routine, since as a side effect it affects the entire program.  Saving and "
@@ -804,7 +807,7 @@ msgid ""
 "that happen to run before the settings have been restored."
 msgstr ""
 
-#: library/locale.rst:598
+#: library/locale.rst:600
 msgid ""
 "If, when coding a module for general use, you need a locale independent "
 "version of an operation that is affected by the locale (such as certain "
@@ -815,14 +818,14 @@ msgid ""
 "settings."
 msgstr ""
 
-#: library/locale.rst:605
+#: library/locale.rst:607
 msgid ""
 "The only way to perform numeric operations according to the locale is to use "
 "the special functions defined by this module: :func:`atof`, :func:`atoi`, :"
 "func:`format_string`, :func:`.str`."
 msgstr ""
 
-#: library/locale.rst:609
+#: library/locale.rst:611
 msgid ""
 "There is no way to perform case conversions and character classifications "
 "according to the locale.  For (Unicode) text strings these are done "
@@ -833,11 +836,11 @@ msgid ""
 "whitespace."
 msgstr ""
 
-#: library/locale.rst:620
+#: library/locale.rst:622
 msgid "For extension writers and programs that embed Python"
 msgstr ""
 
-#: library/locale.rst:622
+#: library/locale.rst:624
 msgid ""
 "Extension modules should never call :func:`setlocale`, except to find out "
 "what the current locale is.  But since the return value can only be used "
@@ -845,7 +848,7 @@ msgid ""
 "whether or not the locale is ``C``)."
 msgstr ""
 
-#: library/locale.rst:627
+#: library/locale.rst:629
 msgid ""
 "When Python code uses the :mod:`locale` module to change the locale, this "
 "also affects the embedding application.  If the embedding application "
@@ -855,11 +858,11 @@ msgid ""
 "accessible as a shared library."
 msgstr ""
 
-#: library/locale.rst:638
+#: library/locale.rst:640
 msgid "Access to message catalogs"
 msgstr ""
 
-#: library/locale.rst:647
+#: library/locale.rst:649
 msgid ""
 "The locale module exposes the C library's gettext interface on systems that "
 "provide this interface.  It consists of the functions :func:`gettext`, :func:"
@@ -870,7 +873,7 @@ msgid ""
 "locating message catalogs."
 msgstr ""
 
-#: library/locale.rst:654
+#: library/locale.rst:656
 msgid ""
 "Python applications should normally find no need to invoke these functions, "
 "and should use :mod:`gettext` instead.  A known exception to this rule are "
diff --git a/library/logging.po b/library/logging.po
index 9176186aa..4dcef9ba8 100644
--- a/library/logging.po
+++ b/library/logging.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -485,7 +485,7 @@ msgstr ""
 msgid ""
 "If no handler is attached to this logger (or any of its ancestors, taking "
 "into account the relevant :attr:`Logger.propagate` attributes), the message "
-"will be sent to the handler set on :attr:`lastResort`."
+"will be sent to the handler set on :data:`lastResort`."
 msgstr ""
 
 #: library/logging.rst:347
@@ -747,18 +747,20 @@ msgid ""
 msgstr ""
 
 #: library/logging.rst:565
-msgid "Sets the :class:`Formatter` for this handler to *fmt*."
+msgid ""
+"Sets the formatter for this handler to *fmt*. The *fmt* argument must be a :"
+"class:`Formatter` instance or ``None``."
 msgstr ""
 
-#: library/logging.rst:570
+#: library/logging.rst:571
 msgid "Adds the specified filter *filter* to this handler."
 msgstr ""
 
-#: library/logging.rst:575
+#: library/logging.rst:576
 msgid "Removes the specified filter *filter* from this handler."
 msgstr ""
 
-#: library/logging.rst:580
+#: library/logging.rst:581
 msgid ""
 "Apply this handler's filters to the record and return ``True`` if the record "
 "is to be processed. The filters are consulted in turn, until one of them "
@@ -767,28 +769,33 @@ msgid ""
 "record."
 msgstr ""
 
-#: library/logging.rst:589
+#: library/logging.rst:590
 msgid ""
 "Ensure all logging output has been flushed. This version does nothing and is "
 "intended to be implemented by subclasses."
 msgstr ""
 
-#: library/logging.rst:595
+#: library/logging.rst:596
 msgid ""
 "Tidy up any resources used by the handler. This version does no output but "
-"removes the handler from an internal list of handlers which is closed when :"
-"func:`shutdown` is called. Subclasses should ensure that this gets called "
-"from overridden :meth:`close` methods."
+"removes the handler from an internal map of handlers, which is used for "
+"handler lookup by name."
+msgstr ""
+
+#: library/logging.rst:600
+msgid ""
+"Subclasses should ensure that this gets called from overridden :meth:`close` "
+"methods."
 msgstr ""
 
-#: library/logging.rst:603
+#: library/logging.rst:606
 msgid ""
 "Conditionally emits the specified logging record, depending on filters which "
 "may have been added to the handler. Wraps the actual emission of the record "
 "with acquisition/release of the I/O thread lock."
 msgstr ""
 
-#: library/logging.rst:610
+#: library/logging.rst:613
 msgid ""
 "This method should be called from handlers when an exception is encountered "
 "during an :meth:`emit` call. If the module-level attribute :data:"
@@ -801,20 +808,20 @@ msgid ""
 "is more useful during development)."
 msgstr ""
 
-#: library/logging.rst:623
+#: library/logging.rst:626
 msgid ""
 "Do formatting for a record - if a formatter is set, use it. Otherwise, use "
 "the default formatter for the module."
 msgstr ""
 
-#: library/logging.rst:629
+#: library/logging.rst:632
 msgid ""
 "Do whatever it takes to actually log the specified logging record. This "
 "version is intended to be implemented by subclasses and so raises a :exc:"
 "`NotImplementedError`."
 msgstr ""
 
-#: library/logging.rst:633
+#: library/logging.rst:636
 msgid ""
 "This method is called after a handler-level lock is acquired, which is "
 "released after this method returns. When you override this method, note that "
@@ -823,13 +830,13 @@ msgid ""
 "Specifically:"
 msgstr ""
 
-#: library/logging.rst:639
+#: library/logging.rst:642
 msgid ""
 "Logging configuration APIs acquire the module-level lock, and then "
 "individual handler-level locks as those handlers are configured."
 msgstr ""
 
-#: library/logging.rst:642
+#: library/logging.rst:645
 msgid ""
 "Many logging APIs lock the module-level lock. If such an API is called from "
 "this method, it could cause a deadlock if a configuration call is made on "
@@ -839,16 +846,16 @@ msgid ""
 "method, the handler-level lock has already been acquired)."
 msgstr ""
 
-#: library/logging.rst:649
+#: library/logging.rst:652
 msgid ""
 "For a list of handlers included as standard, see :mod:`logging.handlers`."
 msgstr ""
 
-#: library/logging.rst:654
+#: library/logging.rst:657
 msgid "Formatter Objects"
 msgstr ""
 
-#: library/logging.rst:660
+#: library/logging.rst:663
 msgid ""
 "Responsible for converting a :class:`LogRecord` to an output string to be "
 "interpreted by a human or external system."
@@ -858,7 +865,7 @@ msgstr ""
 msgid "Parameters"
 msgstr ""
 
-#: library/logging.rst:663
+#: library/logging.rst:666
 msgid ""
 "A format string in the given *style* for the logged output as a whole. The "
 "possible mapping keys are drawn from the :class:`LogRecord` object's :ref:"
@@ -866,14 +873,14 @@ msgid ""
 "is just the logged message."
 msgstr ""
 
-#: library/logging.rst:671
+#: library/logging.rst:674
 msgid ""
 "A format string in the given *style* for the date/time portion of the logged "
 "output. If not specified, the default described in :meth:`formatTime` is "
 "used."
 msgstr ""
 
-#: library/logging.rst:676
+#: library/logging.rst:679
 msgid ""
 "Can be one of ``'%'``, ``'{'`` or ``'$'`` and determines how the format "
 "string will be merged with its data: using one of :ref:`old-string-"
@@ -884,32 +891,32 @@ msgid ""
 "use ``{``- and ``$``-formatting for log messages."
 msgstr ""
 
-#: library/logging.rst:686
+#: library/logging.rst:689
 msgid ""
 "If ``True`` (the default), incorrect or mismatched *fmt* and *style* will "
 "raise a :exc:`ValueError`; for example, ``logging.Formatter('%(asctime)s - "
 "%(message)s', style='{')``."
 msgstr ""
 
-#: library/logging.rst:691
+#: library/logging.rst:694
 msgid ""
 "A dictionary with default values to use in custom fields. For example, "
 "``logging.Formatter('%(ip)s %(message)s', defaults={\"ip\": None})``"
 msgstr ""
 
-#: library/logging.rst:696
+#: library/logging.rst:699
 msgid "Added the *style* parameter."
 msgstr ""
 
-#: library/logging.rst:699
+#: library/logging.rst:702
 msgid "Added the *validate* parameter."
 msgstr ""
 
-#: library/logging.rst:702
+#: library/logging.rst:705
 msgid "Added the *defaults* parameter."
 msgstr ""
 
-#: library/logging.rst:708
+#: library/logging.rst:711
 msgid ""
 "The record's attribute dictionary is used as the operand to a string "
 "formatting operation. Returns the resulting string. Before formatting the "
@@ -928,13 +935,13 @@ msgid ""
 "recalculates it afresh."
 msgstr ""
 
-#: library/logging.rst:724
+#: library/logging.rst:727
 msgid ""
 "If stack information is available, it's appended after the exception "
 "information, using :meth:`formatStack` to transform it if necessary."
 msgstr ""
 
-#: library/logging.rst:730
+#: library/logging.rst:733
 msgid ""
 "This method should be called from :meth:`format` by a formatter which wants "
 "to make use of a formatted time. This method can be overridden in formatters "
@@ -947,7 +954,7 @@ msgid ""
 "resulting string is returned."
 msgstr ""
 
-#: library/logging.rst:740
+#: library/logging.rst:743
 msgid ""
 "This function uses a user-configurable function to convert the creation time "
 "to a tuple. By default, :func:`time.localtime` is used; to change this for a "
@@ -957,7 +964,7 @@ msgid ""
 "be shown in GMT, set the ``converter`` attribute in the ``Formatter`` class."
 msgstr ""
 
-#: library/logging.rst:748
+#: library/logging.rst:751
 msgid ""
 "Previously, the default format was hard-coded as in this example: "
 "``2010-09-06 22:38:15,292`` where the part before the comma is handled by a "
@@ -972,11 +979,11 @@ msgid ""
 "the millisecond value)."
 msgstr ""
 
-#: library/logging.rst:761
+#: library/logging.rst:764
 msgid "The ``default_msec_format`` can be ``None``."
 msgstr ""
 
-#: library/logging.rst:766
+#: library/logging.rst:769
 msgid ""
 "Formats the specified exception information (a standard exception tuple as "
 "returned by :func:`sys.exc_info`) as a string. This default implementation "
@@ -984,14 +991,14 @@ msgid ""
 "returned."
 msgstr ""
 
-#: library/logging.rst:773
+#: library/logging.rst:776
 msgid ""
 "Formats the specified stack information (a string as returned by :func:"
 "`traceback.print_stack`, but with the last newline removed) as a string. "
 "This default implementation just returns the input value."
 msgstr ""
 
-#: library/logging.rst:779
+#: library/logging.rst:782
 msgid ""
 "A base formatter class suitable for subclassing when you want to format a "
 "number of records. You can pass a :class:`Formatter` instance which you want "
@@ -1000,7 +1007,7 @@ msgid ""
 "used as the line formatter."
 msgstr ""
 
-#: library/logging.rst:787
+#: library/logging.rst:790
 msgid ""
 "Return a header for a list of *records*. The base implementation just "
 "returns the empty string. You will need to override this method if you want "
@@ -1008,14 +1015,14 @@ msgid ""
 "separator line."
 msgstr ""
 
-#: library/logging.rst:794
+#: library/logging.rst:797
 msgid ""
 "Return a footer for a list of *records*. The base implementation just "
 "returns the empty string. You will need to override this method if you want "
 "specific behaviour, e.g. to show the count of records or a separator line."
 msgstr ""
 
-#: library/logging.rst:801
+#: library/logging.rst:804
 msgid ""
 "Return formatted text for a list of *records*. The base implementation just "
 "returns the empty string if there are no records; otherwise, it returns the "
@@ -1023,11 +1030,11 @@ msgid ""
 "and the footer."
 msgstr ""
 
-#: library/logging.rst:809
+#: library/logging.rst:812
 msgid "Filter Objects"
 msgstr ""
 
-#: library/logging.rst:811
+#: library/logging.rst:814
 msgid ""
 "``Filters`` can be used by ``Handlers`` and ``Loggers`` for more "
 "sophisticated filtering than is provided by levels. The base filter class "
@@ -1037,7 +1044,7 @@ msgid ""
 "If initialized with the empty string, all events are passed."
 msgstr ""
 
-#: library/logging.rst:821
+#: library/logging.rst:824
 msgid ""
 "Returns an instance of the :class:`Filter` class. If *name* is specified, it "
 "names a logger which, together with its children, will have its events "
@@ -1045,7 +1052,7 @@ msgid ""
 "event."
 msgstr ""
 
-#: library/logging.rst:828
+#: library/logging.rst:831
 msgid ""
 "Is the specified record to be logged? Returns false for no, true for yes. "
 "Filters can either modify log records in-place or return a completely "
@@ -1053,7 +1060,7 @@ msgid ""
 "future processing of the event."
 msgstr ""
 
-#: library/logging.rst:833
+#: library/logging.rst:836
 msgid ""
 "Note that filters attached to handlers are consulted before an event is "
 "emitted by the handler, whereas filters attached to loggers are consulted "
@@ -1063,13 +1070,13 @@ msgid ""
 "setting, unless the filter has also been applied to those descendant loggers."
 msgstr ""
 
-#: library/logging.rst:840
+#: library/logging.rst:843
 msgid ""
 "You don't actually need to subclass ``Filter``: you can pass any instance "
 "which has a ``filter`` method with the same semantics."
 msgstr ""
 
-#: library/logging.rst:843
+#: library/logging.rst:846
 msgid ""
 "You don't need to create specialized ``Filter`` classes, or use other "
 "classes with a ``filter`` method: you can use a function (or other callable) "
@@ -1080,7 +1087,7 @@ msgid ""
 "value should conform to that returned by :meth:`~Filter.filter`."
 msgstr ""
 
-#: library/logging.rst:853
+#: library/logging.rst:856
 msgid ""
 "You can now return a :class:`LogRecord` instance from filters to replace the "
 "log record rather than modifying it in place. This allows filters attached "
@@ -1088,7 +1095,7 @@ msgid ""
 "having side effects on other handlers."
 msgstr ""
 
-#: library/logging.rst:859
+#: library/logging.rst:862
 msgid ""
 "Although filters are used primarily to filter records based on more "
 "sophisticated criteria than levels, they get to see every record which is "
@@ -1100,11 +1107,11 @@ msgid ""
 "contextual information into logs (see :ref:`filters-contextual`)."
 msgstr ""
 
-#: library/logging.rst:872
+#: library/logging.rst:875
 msgid "LogRecord Objects"
 msgstr ""
 
-#: library/logging.rst:874
+#: library/logging.rst:877
 msgid ""
 ":class:`LogRecord` instances are created automatically by the :class:"
 "`Logger` every time something is logged, and can be created manually via :"
@@ -1112,17 +1119,17 @@ msgid ""
 "wire)."
 msgstr ""
 
-#: library/logging.rst:882
+#: library/logging.rst:885
 msgid "Contains all the information pertinent to the event being logged."
 msgstr ""
 
-#: library/logging.rst:884
+#: library/logging.rst:887
 msgid ""
 "The primary information is passed in *msg* and *args*, which are combined "
 "using ``msg % args`` to create the :attr:`!message` attribute of the record."
 msgstr ""
 
-#: library/logging.rst:888
+#: library/logging.rst:891
 msgid ""
 "The name of the logger used to log the event represented by this :class:`!"
 "LogRecord`. Note that the logger name in the :class:`!LogRecord` will always "
@@ -1130,7 +1137,7 @@ msgid ""
 "different (ancestor) logger."
 msgstr ""
 
-#: library/logging.rst:896
+#: library/logging.rst:899
 msgid ""
 "The :ref:`numeric level <levels>` of the logging event (such as ``10`` for "
 "``DEBUG``, ``20`` for ``INFO``, etc). Note that this is converted to *two* "
@@ -1138,46 +1145,46 @@ msgid ""
 "attr:`!levelname` for the corresponding level name."
 msgstr ""
 
-#: library/logging.rst:903
+#: library/logging.rst:906
 msgid ""
 "The full string path of the source file where the logging call was made."
 msgstr ""
 
-#: library/logging.rst:907
+#: library/logging.rst:910
 msgid "The line number in the source file where the logging call was made."
 msgstr ""
 
-#: library/logging.rst:911
+#: library/logging.rst:914
 msgid ""
 "The event description message, which can be a %-format string with "
 "placeholders for variable data, or an arbitrary object (see :ref:`arbitrary-"
 "object-messages`)."
 msgstr ""
 
-#: library/logging.rst:916
+#: library/logging.rst:919
 msgid ""
 "Variable data to merge into the *msg* argument to obtain the event "
 "description."
 msgstr ""
 
-#: library/logging.rst:920
+#: library/logging.rst:923
 msgid ""
 "An exception tuple with the current exception information, as returned by :"
 "func:`sys.exc_info`, or ``None`` if no exception information is available."
 msgstr ""
 
-#: library/logging.rst:925
+#: library/logging.rst:928
 msgid ""
 "The name of the function or method from which the logging call was invoked."
 msgstr ""
 
-#: library/logging.rst:929
+#: library/logging.rst:932
 msgid ""
 "A text string representing stack information from the base of the stack in "
 "the current thread, up to the logging call."
 msgstr ""
 
-#: library/logging.rst:936
+#: library/logging.rst:939
 msgid ""
 "Returns the message for this :class:`LogRecord` instance after merging any "
 "user-supplied arguments with the message. If the user-supplied message "
@@ -1186,7 +1193,7 @@ msgid ""
 "whose ``__str__`` method can return the actual format string to be used."
 msgstr ""
 
-#: library/logging.rst:943
+#: library/logging.rst:946
 msgid ""
 "The creation of a :class:`LogRecord` has been made more configurable by "
 "providing a factory which is used to create the record. The factory can be "
@@ -1194,13 +1201,13 @@ msgid ""
 "this for the factory's signature)."
 msgstr ""
 
-#: library/logging.rst:949
+#: library/logging.rst:952
 msgid ""
 "This functionality can be used to inject your own values into a :class:"
 "`LogRecord` at creation time. You can use the following pattern::"
 msgstr ""
 
-#: library/logging.rst:952
+#: library/logging.rst:955
 msgid ""
 "old_factory = logging.getLogRecordFactory()\n"
 "\n"
@@ -1212,18 +1219,18 @@ msgid ""
 "logging.setLogRecordFactory(record_factory)"
 msgstr ""
 
-#: library/logging.rst:961
+#: library/logging.rst:964
 msgid ""
 "With this pattern, multiple factories could be chained, and as long as they "
 "don't overwrite each other's attributes or unintentionally overwrite the "
 "standard attributes listed above, there should be no surprises."
 msgstr ""
 
-#: library/logging.rst:970
+#: library/logging.rst:973
 msgid "LogRecord attributes"
 msgstr ""
 
-#: library/logging.rst:972
+#: library/logging.rst:975
 msgid ""
 "The LogRecord has a number of attributes, most of which are derived from the "
 "parameters to the constructor. (Note that the names do not always correspond "
@@ -1234,7 +1241,7 @@ msgid ""
 "style format string."
 msgstr ""
 
-#: library/logging.rst:980
+#: library/logging.rst:983
 msgid ""
 "If you are using {}-formatting (:func:`str.format`), you can use ``{attrname}"
 "`` as the placeholder in the format string. If you are using $-formatting (:"
@@ -1242,7 +1249,7 @@ msgid ""
 "course, replace ``attrname`` with the actual attribute name you want to use."
 msgstr ""
 
-#: library/logging.rst:986
+#: library/logging.rst:989
 msgid ""
 "In the case of {}-formatting, you can specify formatting flags by placing "
 "them after the attribute name, separated from it with a colon. For example: "
@@ -1251,323 +1258,323 @@ msgid ""
 "on the options available to you."
 msgstr ""
 
-#: library/logging.rst:993
+#: library/logging.rst:996
 msgid "Attribute name"
 msgstr ""
 
-#: library/logging.rst:1355
+#: library/logging.rst:1358
 msgid "Format"
 msgstr ""
 
-#: library/logging.rst:1355
+#: library/logging.rst:1358
 msgid "Description"
 msgstr ""
 
-#: library/logging.rst:995
+#: library/logging.rst:998
 msgid "args"
 msgstr ""
 
-#: library/logging.rst:1009 library/logging.rst:1055
+#: library/logging.rst:1012 library/logging.rst:1058
 msgid "You shouldn't need to format this yourself."
 msgstr ""
 
-#: library/logging.rst:995
+#: library/logging.rst:998
 msgid ""
 "The tuple of arguments merged into ``msg`` to produce ``message``, or a dict "
 "whose values are used for the merge (when there is only one argument, and it "
 "is a dictionary)."
 msgstr ""
 
-#: library/logging.rst:1000
+#: library/logging.rst:1003
 msgid "asctime"
 msgstr ""
 
-#: library/logging.rst:1000
+#: library/logging.rst:1003
 msgid "``%(asctime)s``"
 msgstr ""
 
-#: library/logging.rst:1000
+#: library/logging.rst:1003
 msgid ""
 "Human-readable time when the :class:`LogRecord` was created.  By default "
 "this is of the form '2003-07-08 16:49:45,896' (the numbers after the comma "
 "are millisecond portion of the time)."
 msgstr ""
 
-#: library/logging.rst:1006
+#: library/logging.rst:1009
 msgid "created"
 msgstr ""
 
-#: library/logging.rst:1006
+#: library/logging.rst:1009
 msgid "``%(created)f``"
 msgstr ""
 
-#: library/logging.rst:1006
+#: library/logging.rst:1009
 msgid ""
 "Time when the :class:`LogRecord` was created (as returned by :func:`time."
 "time`)."
 msgstr ""
 
-#: library/logging.rst:1009
+#: library/logging.rst:1012
 msgid "exc_info"
 msgstr ""
 
-#: library/logging.rst:1009
+#: library/logging.rst:1012
 msgid ""
 "Exception tuple (à la ``sys.exc_info``) or, if no exception has occurred, "
 "``None``."
 msgstr ""
 
-#: library/logging.rst:1012
+#: library/logging.rst:1015
 msgid "filename"
 msgstr ""
 
-#: library/logging.rst:1012
+#: library/logging.rst:1015
 msgid "``%(filename)s``"
 msgstr ""
 
-#: library/logging.rst:1012
+#: library/logging.rst:1015
 msgid "Filename portion of ``pathname``."
 msgstr ""
 
-#: library/logging.rst:1014
+#: library/logging.rst:1017
 msgid "funcName"
 msgstr ""
 
-#: library/logging.rst:1014
+#: library/logging.rst:1017
 msgid "``%(funcName)s``"
 msgstr ""
 
-#: library/logging.rst:1014
+#: library/logging.rst:1017
 msgid "Name of function containing the logging call."
 msgstr ""
 
-#: library/logging.rst:1016
+#: library/logging.rst:1019
 msgid "levelname"
 msgstr ""
 
-#: library/logging.rst:1016
+#: library/logging.rst:1019
 msgid "``%(levelname)s``"
 msgstr ""
 
-#: library/logging.rst:1016
+#: library/logging.rst:1019
 msgid ""
 "Text logging level for the message (``'DEBUG'``, ``'INFO'``, ``'WARNING'``, "
 "``'ERROR'``, ``'CRITICAL'``)."
 msgstr ""
 
-#: library/logging.rst:1020
+#: library/logging.rst:1023
 msgid "levelno"
 msgstr ""
 
-#: library/logging.rst:1020
+#: library/logging.rst:1023
 msgid "``%(levelno)s``"
 msgstr ""
 
-#: library/logging.rst:1020
+#: library/logging.rst:1023
 msgid ""
 "Numeric logging level for the message (:const:`DEBUG`, :const:`INFO`, :const:"
 "`WARNING`, :const:`ERROR`, :const:`CRITICAL`)."
 msgstr ""
 
-#: library/logging.rst:1025
+#: library/logging.rst:1028
 msgid "lineno"
 msgstr ""
 
-#: library/logging.rst:1025
+#: library/logging.rst:1028
 msgid "``%(lineno)d``"
 msgstr ""
 
-#: library/logging.rst:1025
+#: library/logging.rst:1028
 msgid "Source line number where the logging call was issued (if available)."
 msgstr ""
 
-#: library/logging.rst:1028
+#: library/logging.rst:1031
 msgid "message"
 msgstr ""
 
-#: library/logging.rst:1028
+#: library/logging.rst:1031
 msgid "``%(message)s``"
 msgstr ""
 
-#: library/logging.rst:1028
+#: library/logging.rst:1031
 msgid ""
 "The logged message, computed as ``msg % args``. This is set when :meth:"
 "`Formatter.format` is invoked."
 msgstr ""
 
-#: library/logging.rst:1032
+#: library/logging.rst:1035
 msgid "module"
 msgstr ""
 
-#: library/logging.rst:1032
+#: library/logging.rst:1035
 msgid "``%(module)s``"
 msgstr ""
 
-#: library/logging.rst:1032
+#: library/logging.rst:1035
 msgid "Module (name portion of ``filename``)."
 msgstr ""
 
-#: library/logging.rst:1034
+#: library/logging.rst:1037
 msgid "msecs"
 msgstr ""
 
-#: library/logging.rst:1034
+#: library/logging.rst:1037
 msgid "``%(msecs)d``"
 msgstr ""
 
-#: library/logging.rst:1034
+#: library/logging.rst:1037
 msgid ""
 "Millisecond portion of the time when the :class:`LogRecord` was created."
 msgstr ""
 
-#: library/logging.rst:1037
+#: library/logging.rst:1040
 msgid "msg"
 msgstr ""
 
-#: library/logging.rst:1037
+#: library/logging.rst:1040
 msgid ""
 "The format string passed in the original logging call. Merged with ``args`` "
 "to produce ``message``, or an arbitrary object (see :ref:`arbitrary-object-"
 "messages`)."
 msgstr ""
 
-#: library/logging.rst:1042
+#: library/logging.rst:1045
 msgid "name"
 msgstr ""
 
-#: library/logging.rst:1042
+#: library/logging.rst:1045
 msgid "``%(name)s``"
 msgstr ""
 
-#: library/logging.rst:1042
+#: library/logging.rst:1045
 msgid "Name of the logger used to log the call."
 msgstr ""
 
-#: library/logging.rst:1044
+#: library/logging.rst:1047
 msgid "pathname"
 msgstr ""
 
-#: library/logging.rst:1044
+#: library/logging.rst:1047
 msgid "``%(pathname)s``"
 msgstr ""
 
-#: library/logging.rst:1044
+#: library/logging.rst:1047
 msgid ""
 "Full pathname of the source file where the logging call was issued (if "
 "available)."
 msgstr ""
 
-#: library/logging.rst:1047
+#: library/logging.rst:1050
 msgid "process"
 msgstr ""
 
-#: library/logging.rst:1047
+#: library/logging.rst:1050
 msgid "``%(process)d``"
 msgstr ""
 
-#: library/logging.rst:1047
+#: library/logging.rst:1050
 msgid "Process ID (if available)."
 msgstr ""
 
-#: library/logging.rst:1049
+#: library/logging.rst:1052
 msgid "processName"
 msgstr ""
 
-#: library/logging.rst:1049
+#: library/logging.rst:1052
 msgid "``%(processName)s``"
 msgstr ""
 
-#: library/logging.rst:1049
+#: library/logging.rst:1052
 msgid "Process name (if available)."
 msgstr ""
 
-#: library/logging.rst:1051
+#: library/logging.rst:1054
 msgid "relativeCreated"
 msgstr ""
 
-#: library/logging.rst:1051
+#: library/logging.rst:1054
 msgid "``%(relativeCreated)d``"
 msgstr ""
 
-#: library/logging.rst:1051
+#: library/logging.rst:1054
 msgid ""
 "Time in milliseconds when the LogRecord was created, relative to the time "
 "the logging module was loaded."
 msgstr ""
 
-#: library/logging.rst:1055
+#: library/logging.rst:1058
 msgid "stack_info"
 msgstr ""
 
-#: library/logging.rst:1055
+#: library/logging.rst:1058
 msgid ""
 "Stack frame information (where available) from the bottom of the stack in "
 "the current thread, up to and including the stack frame of the logging call "
 "which resulted in the creation of this record."
 msgstr ""
 
-#: library/logging.rst:1061
+#: library/logging.rst:1064
 msgid "thread"
 msgstr ""
 
-#: library/logging.rst:1061
+#: library/logging.rst:1064
 msgid "``%(thread)d``"
 msgstr ""
 
-#: library/logging.rst:1061
+#: library/logging.rst:1064
 msgid "Thread ID (if available)."
 msgstr ""
 
-#: library/logging.rst:1063
+#: library/logging.rst:1066
 msgid "threadName"
 msgstr ""
 
-#: library/logging.rst:1063
+#: library/logging.rst:1066
 msgid "``%(threadName)s``"
 msgstr ""
 
-#: library/logging.rst:1063
+#: library/logging.rst:1066
 msgid "Thread name (if available)."
 msgstr ""
 
-#: library/logging.rst:1065
+#: library/logging.rst:1068
 msgid "taskName"
 msgstr ""
 
-#: library/logging.rst:1065
+#: library/logging.rst:1068
 msgid "``%(taskName)s``"
 msgstr ""
 
-#: library/logging.rst:1065
+#: library/logging.rst:1068
 msgid ":class:`asyncio.Task` name (if available)."
 msgstr ""
 
-#: library/logging.rst:1068
+#: library/logging.rst:1071
 msgid "*processName* was added."
 msgstr ""
 
-#: library/logging.rst:1071
+#: library/logging.rst:1074
 msgid "*taskName* was added."
 msgstr ""
 
-#: library/logging.rst:1077
+#: library/logging.rst:1080
 msgid "LoggerAdapter Objects"
 msgstr ""
 
-#: library/logging.rst:1079
+#: library/logging.rst:1082
 msgid ""
 ":class:`LoggerAdapter` instances are used to conveniently pass contextual "
 "information into logging calls. For a usage example, see the section on :ref:"
 "`adding contextual information to your logging output <context-info>`."
 msgstr ""
 
-#: library/logging.rst:1085
+#: library/logging.rst:1088
 msgid ""
 "Returns an instance of :class:`LoggerAdapter` initialized with an "
 "underlying :class:`Logger` instance and a dict-like object."
 msgstr ""
 
-#: library/logging.rst:1090
+#: library/logging.rst:1093
 msgid ""
 "Modifies the message and/or keyword arguments passed to a logging call in "
 "order to insert contextual information. This implementation takes the object "
@@ -1576,15 +1583,15 @@ msgid ""
 "(possibly modified) versions of the arguments passed in."
 msgstr ""
 
-#: library/logging.rst:1098
+#: library/logging.rst:1101
 msgid "Delegates to the underlying :attr:`!manager` on *logger*."
 msgstr ""
 
-#: library/logging.rst:1102
+#: library/logging.rst:1105
 msgid "Delegates to the underlying :meth:`!_log` method on *logger*."
 msgstr ""
 
-#: library/logging.rst:1104
+#: library/logging.rst:1107
 msgid ""
 "In addition to the above, :class:`LoggerAdapter` supports the following "
 "methods of :class:`Logger`: :meth:`~Logger.debug`, :meth:`~Logger.info`, :"
@@ -1596,24 +1603,24 @@ msgid ""
 "interchangeably."
 msgstr ""
 
-#: library/logging.rst:1115
+#: library/logging.rst:1118
 msgid ""
 "The :meth:`~Logger.isEnabledFor`, :meth:`~Logger.getEffectiveLevel`, :meth:"
 "`~Logger.setLevel` and :meth:`~Logger.hasHandlers` methods were added to :"
 "class:`LoggerAdapter`.  These methods delegate to the underlying logger."
 msgstr ""
 
-#: library/logging.rst:1121
+#: library/logging.rst:1124
 msgid ""
 "Attribute :attr:`!manager` and method :meth:`!_log` were added, which "
 "delegate to the underlying logger and allow adapters to be nested."
 msgstr ""
 
-#: library/logging.rst:1126
+#: library/logging.rst:1129
 msgid "Thread Safety"
 msgstr ""
 
-#: library/logging.rst:1128
+#: library/logging.rst:1131
 msgid ""
 "The logging module is intended to be thread-safe without any special work "
 "needing to be done by its clients. It achieves this though using threading "
@@ -1622,7 +1629,7 @@ msgid ""
 "O."
 msgstr ""
 
-#: library/logging.rst:1133
+#: library/logging.rst:1136
 msgid ""
 "If you are implementing asynchronous signal handlers using the :mod:`signal` "
 "module, you may not be able to use logging from within such handlers. This "
@@ -1630,17 +1637,17 @@ msgid ""
 "always re-entrant, and so cannot be invoked from such signal handlers."
 msgstr ""
 
-#: library/logging.rst:1140
+#: library/logging.rst:1143
 msgid "Module-Level Functions"
 msgstr ""
 
-#: library/logging.rst:1142
+#: library/logging.rst:1145
 msgid ""
 "In addition to the classes described above, there are a number of module-"
 "level functions."
 msgstr ""
 
-#: library/logging.rst:1148
+#: library/logging.rst:1151
 msgid ""
 "Return a logger with the specified name or, if name is ``None``, return the "
 "root logger of the hierarchy. If specified, the name is typically a dot-"
@@ -1650,14 +1657,14 @@ msgid ""
 "for not doing that, as mentioned in :ref:`logger`."
 msgstr ""
 
-#: library/logging.rst:1155
+#: library/logging.rst:1158
 msgid ""
 "All calls to this function with a given name return the same logger "
 "instance. This means that logger instances never need to be passed between "
 "different parts of an application."
 msgstr ""
 
-#: library/logging.rst:1162
+#: library/logging.rst:1165
 msgid ""
 "Return either the standard :class:`Logger` class, or the last class passed "
 "to :func:`setLoggerClass`. This function may be called from within a new "
@@ -1666,43 +1673,43 @@ msgid ""
 "example::"
 msgstr ""
 
-#: library/logging.rst:1167
+#: library/logging.rst:1170
 msgid ""
 "class MyLogger(logging.getLoggerClass()):\n"
 "    # ... override behaviour here"
 msgstr ""
 
-#: library/logging.rst:1173
+#: library/logging.rst:1176
 msgid "Return a callable which is used to create a :class:`LogRecord`."
 msgstr ""
 
-#: library/logging.rst:1175
+#: library/logging.rst:1178
 msgid ""
 "This function has been provided, along with :func:`setLogRecordFactory`, to "
 "allow developers more control over how the :class:`LogRecord` representing a "
 "logging event is constructed."
 msgstr ""
 
-#: library/logging.rst:1180
+#: library/logging.rst:1183
 msgid ""
 "See :func:`setLogRecordFactory` for more information about the how the "
 "factory is called."
 msgstr ""
 
-#: library/logging.rst:1185
+#: library/logging.rst:1188
 msgid ""
 "This is a convenience function that calls :meth:`Logger.debug`, on the root "
 "logger. The handling of the arguments is in every way identical to what is "
 "described in that method."
 msgstr ""
 
-#: library/logging.rst:1189
+#: library/logging.rst:1192
 msgid ""
 "The only difference is that if the root logger has no handlers, then :func:"
 "`basicConfig` is called, prior to calling ``debug`` on the root logger."
 msgstr ""
 
-#: library/logging.rst:1192
+#: library/logging.rst:1195
 msgid ""
 "For very short scripts or quick demonstrations of ``logging`` facilities, "
 "``debug`` and the other module-level functions may be convenient. However, "
@@ -1712,38 +1719,38 @@ msgid ""
 "described at the beginnning of this documentation."
 msgstr ""
 
-#: library/logging.rst:1202
+#: library/logging.rst:1205
 msgid ""
 "Logs a message with level :const:`INFO` on the root logger. The arguments "
 "and behavior are otherwise the same as for :func:`debug`."
 msgstr ""
 
-#: library/logging.rst:1208
+#: library/logging.rst:1211
 msgid ""
 "Logs a message with level :const:`WARNING` on the root logger. The arguments "
 "and behavior are otherwise the same as for :func:`debug`."
 msgstr ""
 
-#: library/logging.rst:1211
+#: library/logging.rst:1214
 msgid ""
 "There is an obsolete function ``warn`` which is functionally identical to "
 "``warning``. As ``warn`` is deprecated, please do not use it - use "
 "``warning`` instead."
 msgstr ""
 
-#: library/logging.rst:1218
+#: library/logging.rst:1221
 msgid ""
 "Logs a message with level :const:`ERROR` on the root logger. The arguments "
 "and behavior are otherwise the same as for :func:`debug`."
 msgstr ""
 
-#: library/logging.rst:1224
+#: library/logging.rst:1227
 msgid ""
 "Logs a message with level :const:`CRITICAL` on the root logger. The "
 "arguments and behavior are otherwise the same as for :func:`debug`."
 msgstr ""
 
-#: library/logging.rst:1230
+#: library/logging.rst:1233
 msgid ""
 "Logs a message with level :const:`ERROR` on the root logger. The arguments "
 "and behavior are otherwise the same as for :func:`debug`. Exception info is "
@@ -1751,13 +1758,13 @@ msgid ""
 "exception handler."
 msgstr ""
 
-#: library/logging.rst:1236
+#: library/logging.rst:1239
 msgid ""
 "Logs a message with level *level* on the root logger. The arguments and "
 "behavior are otherwise the same as for :func:`debug`."
 msgstr ""
 
-#: library/logging.rst:1241
+#: library/logging.rst:1244
 msgid ""
 "Provides an overriding level *level* for all loggers which takes precedence "
 "over the logger's own level. When the need arises to temporarily throttle "
@@ -1771,7 +1778,7 @@ msgid ""
 "individual loggers."
 msgstr ""
 
-#: library/logging.rst:1252
+#: library/logging.rst:1255
 msgid ""
 "Note that if you have defined any custom logging level higher than "
 "``CRITICAL`` (this is not recommended), you won't be able to rely on the "
@@ -1779,13 +1786,13 @@ msgid ""
 "a suitable value."
 msgstr ""
 
-#: library/logging.rst:1257
+#: library/logging.rst:1260
 msgid ""
 "The *level* parameter was defaulted to level ``CRITICAL``. See :issue:"
 "`28524` for more information about this change."
 msgstr ""
 
-#: library/logging.rst:1263
+#: library/logging.rst:1266
 msgid ""
 "Associates level *level* with text *levelName* in an internal dictionary, "
 "which is used to map numeric levels to a textual representation, for example "
@@ -1795,24 +1802,24 @@ msgid ""
 "and they should increase in increasing order of severity."
 msgstr ""
 
-#: library/logging.rst:1270
+#: library/logging.rst:1273
 msgid ""
 "If you are thinking of defining your own levels, please see the section on :"
 "ref:`custom-levels`."
 msgstr ""
 
-#: library/logging.rst:1275
+#: library/logging.rst:1278
 msgid ""
 "Returns a mapping from level names to their corresponding logging levels. "
 "For example, the string \"CRITICAL\" maps to :const:`CRITICAL`. The returned "
 "mapping is copied from an internal mapping on each call to this function."
 msgstr ""
 
-#: library/logging.rst:1283
+#: library/logging.rst:1286
 msgid "Returns the textual or numeric representation of logging level *level*."
 msgstr ""
 
-#: library/logging.rst:1285
+#: library/logging.rst:1288
 msgid ""
 "If *level* is one of the predefined levels :const:`CRITICAL`, :const:"
 "`ERROR`, :const:`WARNING`, :const:`INFO` or :const:`DEBUG` then you get the "
@@ -1822,20 +1829,20 @@ msgid ""
 "the corresponding string representation is returned."
 msgstr ""
 
-#: library/logging.rst:1292
+#: library/logging.rst:1295
 msgid ""
 "The *level* parameter also accepts a string representation of the level such "
 "as 'INFO'. In such cases, this functions returns the corresponding numeric "
 "value of the level."
 msgstr ""
 
-#: library/logging.rst:1296
+#: library/logging.rst:1299
 msgid ""
 "If no matching numeric or string value is passed in, the string 'Level %s' % "
 "level is returned."
 msgstr ""
 
-#: library/logging.rst:1299
+#: library/logging.rst:1302
 msgid ""
 "Levels are internally integers (as they need to be compared in the logging "
 "logic). This function is used to convert between an integer level and the "
@@ -1844,7 +1851,7 @@ msgid ""
 "vice versa."
 msgstr ""
 
-#: library/logging.rst:1305
+#: library/logging.rst:1308
 msgid ""
 "In Python versions earlier than 3.4, this function could also be passed a "
 "text level, and would return the corresponding numeric value of the level. "
@@ -1852,17 +1859,17 @@ msgid ""
 "Python 3.4, but reinstated in 3.4.2 due to retain backward compatibility."
 msgstr ""
 
-#: library/logging.rst:1313
+#: library/logging.rst:1316
 msgid ""
 "Returns a handler with the specified *name*, or ``None`` if there is no "
 "handler with that name."
 msgstr ""
 
-#: library/logging.rst:1320
+#: library/logging.rst:1323
 msgid "Returns an immutable set of all known handler names."
 msgstr ""
 
-#: library/logging.rst:1326
+#: library/logging.rst:1329
 msgid ""
 "Creates and returns a new :class:`LogRecord` instance whose attributes are "
 "defined by *attrdict*. This function is useful for taking a pickled :class:"
@@ -1870,7 +1877,7 @@ msgid ""
 "as a :class:`LogRecord` instance at the receiving end."
 msgstr ""
 
-#: library/logging.rst:1334
+#: library/logging.rst:1337
 msgid ""
 "Does basic configuration for the logging system by creating a :class:"
 "`StreamHandler` with a default :class:`Formatter` and adding it to the root "
@@ -1879,13 +1886,13 @@ msgid ""
 "no handlers are defined for the root logger."
 msgstr ""
 
-#: library/logging.rst:1340
+#: library/logging.rst:1343
 msgid ""
 "This function does nothing if the root logger already has handlers "
 "configured, unless the keyword argument *force* is set to ``True``."
 msgstr ""
 
-#: library/logging.rst:1343
+#: library/logging.rst:1346
 msgid ""
 "This function should be called from the main thread before other threads are "
 "started. In versions of Python prior to 2.7.1 and 3.2, if this function is "
@@ -1894,54 +1901,54 @@ msgid ""
 "unexpected results such as messages being duplicated in the log."
 msgstr ""
 
-#: library/logging.rst:1350
+#: library/logging.rst:1353
 msgid "The following keyword arguments are supported."
 msgstr ""
 
-#: library/logging.rst:1357
+#: library/logging.rst:1360
 msgid "*filename*"
 msgstr ""
 
-#: library/logging.rst:1357
+#: library/logging.rst:1360
 msgid ""
 "Specifies that a :class:`FileHandler` be created, using the specified "
 "filename, rather than a :class:`StreamHandler`."
 msgstr ""
 
-#: library/logging.rst:1361
+#: library/logging.rst:1364
 msgid "*filemode*"
 msgstr ""
 
-#: library/logging.rst:1361
+#: library/logging.rst:1364
 msgid ""
 "If *filename* is specified, open the file in this :ref:`mode <filemodes>`. "
 "Defaults to ``'a'``."
 msgstr ""
 
-#: library/logging.rst:1365
+#: library/logging.rst:1368
 msgid "*format*"
 msgstr ""
 
-#: library/logging.rst:1365
+#: library/logging.rst:1368
 msgid ""
 "Use the specified format string for the handler. Defaults to attributes "
 "``levelname``, ``name`` and ``message`` separated by colons."
 msgstr ""
 
-#: library/logging.rst:1370
+#: library/logging.rst:1373
 msgid "*datefmt*"
 msgstr ""
 
-#: library/logging.rst:1370
+#: library/logging.rst:1373
 msgid ""
 "Use the specified date/time format, as accepted by :func:`time.strftime`."
 msgstr ""
 
-#: library/logging.rst:1373
+#: library/logging.rst:1376
 msgid "*style*"
 msgstr ""
 
-#: library/logging.rst:1373
+#: library/logging.rst:1376
 msgid ""
 "If *format* is specified, use this style for the format string. One of "
 "``'%'``, ``'{'`` or ``'$'`` for :ref:`printf-style <old-string-"
@@ -1949,30 +1956,30 @@ msgid ""
 "Defaults to ``'%'``."
 msgstr ""
 
-#: library/logging.rst:1381
+#: library/logging.rst:1384
 msgid "*level*"
 msgstr ""
 
-#: library/logging.rst:1381
+#: library/logging.rst:1384
 msgid "Set the root logger level to the specified :ref:`level <levels>`."
 msgstr ""
 
-#: library/logging.rst:1384
+#: library/logging.rst:1387
 msgid "*stream*"
 msgstr ""
 
-#: library/logging.rst:1384
+#: library/logging.rst:1387
 msgid ""
 "Use the specified stream to initialize the :class:`StreamHandler`. Note that "
 "this argument is incompatible with *filename* - if both are present, a "
 "``ValueError`` is raised."
 msgstr ""
 
-#: library/logging.rst:1390
+#: library/logging.rst:1393
 msgid "*handlers*"
 msgstr ""
 
-#: library/logging.rst:1390
+#: library/logging.rst:1393
 msgid ""
 "If specified, this should be an iterable of already created handlers to add "
 "to the root logger. Any handlers which don't already have a formatter set "
@@ -1981,33 +1988,33 @@ msgid ""
 "present, a ``ValueError`` is raised."
 msgstr ""
 
-#: library/logging.rst:1399
+#: library/logging.rst:1402
 msgid "*force*"
 msgstr ""
 
-#: library/logging.rst:1399
+#: library/logging.rst:1402
 msgid ""
 "If this keyword argument is specified as true, any existing handlers "
 "attached to the root logger are removed and closed, before carrying out the "
 "configuration as specified by the other arguments."
 msgstr ""
 
-#: library/logging.rst:1405
+#: library/logging.rst:1408
 msgid "*encoding*"
 msgstr ""
 
-#: library/logging.rst:1405
+#: library/logging.rst:1408
 msgid ""
 "If this keyword argument is specified along with *filename*, its value is "
 "used when the :class:`FileHandler` is created, and thus used when opening "
 "the output file."
 msgstr ""
 
-#: library/logging.rst:1410
+#: library/logging.rst:1413
 msgid "*errors*"
 msgstr ""
 
-#: library/logging.rst:1410
+#: library/logging.rst:1413
 msgid ""
 "If this keyword argument is specified along with *filename*, its value is "
 "used when the :class:`FileHandler` is created, and thus used when opening "
@@ -2016,39 +2023,39 @@ msgid ""
 "`open`, which means that it will be treated the same as passing 'errors'."
 msgstr ""
 
-#: library/logging.rst:1421
+#: library/logging.rst:1424
 msgid "The *style* argument was added."
 msgstr ""
 
-#: library/logging.rst:1424
+#: library/logging.rst:1427
 msgid ""
 "The *handlers* argument was added. Additional checks were added to catch "
 "situations where incompatible arguments are specified (e.g. *handlers* "
 "together with *stream* or *filename*, or *stream* together with *filename*)."
 msgstr ""
 
-#: library/logging.rst:1430
+#: library/logging.rst:1433
 msgid "The *force* argument was added."
 msgstr ""
 
-#: library/logging.rst:1433
+#: library/logging.rst:1436
 msgid "The *encoding* and *errors* arguments were added."
 msgstr ""
 
-#: library/logging.rst:1438
+#: library/logging.rst:1441
 msgid ""
 "Informs the logging system to perform an orderly shutdown by flushing and "
 "closing all handlers. This should be called at application exit and no "
 "further use of the logging system should be made after this call."
 msgstr ""
 
-#: library/logging.rst:1442
+#: library/logging.rst:1445
 msgid ""
 "When the logging module is imported, it registers this function as an exit "
 "handler (see :mod:`atexit`), so normally there's no need to do that manually."
 msgstr ""
 
-#: library/logging.rst:1449
+#: library/logging.rst:1452
 msgid ""
 "Tells the logging system to use the class *klass* when instantiating a "
 "logger. The class should define :meth:`!__init__` such that only a name "
@@ -2060,32 +2067,32 @@ msgid ""
 "loggers."
 msgstr ""
 
-#: library/logging.rst:1460
+#: library/logging.rst:1463
 msgid "Set a callable which is used to create a :class:`LogRecord`."
 msgstr ""
 
-#: library/logging.rst:1462
+#: library/logging.rst:1465
 msgid "The factory callable to be used to instantiate a log record."
 msgstr ""
 
-#: library/logging.rst:1464
+#: library/logging.rst:1467
 msgid ""
 "This function has been provided, along with :func:`getLogRecordFactory`, to "
 "allow developers more control over how the :class:`LogRecord` representing a "
 "logging event is constructed."
 msgstr ""
 
-#: library/logging.rst:1469
+#: library/logging.rst:1472
 msgid "The factory has the following signature:"
 msgstr ""
 
-#: library/logging.rst:1471
+#: library/logging.rst:1474
 msgid ""
 "``factory(name, level, fn, lno, msg, args, exc_info, func=None, sinfo=None, "
 "**kwargs)``"
 msgstr ""
 
-#: library/logging.rst:1473
+#: library/logging.rst:1476
 msgid "The logger name."
 msgstr ""
 
@@ -2093,7 +2100,7 @@ msgstr ""
 msgid "level"
 msgstr ""
 
-#: library/logging.rst:1474
+#: library/logging.rst:1477
 msgid "The logging level (numeric)."
 msgstr ""
 
@@ -2101,7 +2108,7 @@ msgstr ""
 msgid "fn"
 msgstr ""
 
-#: library/logging.rst:1475
+#: library/logging.rst:1478
 msgid "The full pathname of the file where the logging call was made."
 msgstr ""
 
@@ -2109,19 +2116,19 @@ msgstr ""
 msgid "lno"
 msgstr ""
 
-#: library/logging.rst:1476
+#: library/logging.rst:1479
 msgid "The line number in the file where the logging call was made."
 msgstr ""
 
-#: library/logging.rst:1477
+#: library/logging.rst:1480
 msgid "The logging message."
 msgstr ""
 
-#: library/logging.rst:1478
+#: library/logging.rst:1481
 msgid "The arguments for the logging message."
 msgstr ""
 
-#: library/logging.rst:1479
+#: library/logging.rst:1482
 msgid "An exception tuple, or ``None``."
 msgstr ""
 
@@ -2129,7 +2136,7 @@ msgstr ""
 msgid "func"
 msgstr ""
 
-#: library/logging.rst:1480
+#: library/logging.rst:1483
 msgid "The name of the function or method which invoked the logging call."
 msgstr ""
 
@@ -2137,7 +2144,7 @@ msgstr ""
 msgid "sinfo"
 msgstr ""
 
-#: library/logging.rst:1482
+#: library/logging.rst:1485
 msgid ""
 "A stack traceback such as is provided by :func:`traceback.print_stack`, "
 "showing the call hierarchy."
@@ -2147,15 +2154,15 @@ msgstr ""
 msgid "kwargs"
 msgstr ""
 
-#: library/logging.rst:1484
+#: library/logging.rst:1487
 msgid "Additional keyword arguments."
 msgstr ""
 
-#: library/logging.rst:1488
+#: library/logging.rst:1491
 msgid "Module-Level Attributes"
 msgstr ""
 
-#: library/logging.rst:1492
+#: library/logging.rst:1495
 msgid ""
 "A \"handler of last resort\" is available through this attribute. This is a :"
 "class:`StreamHandler` writing to ``sys.stderr`` with a level of ``WARNING``, "
@@ -2166,15 +2173,15 @@ msgid ""
 "reason, ``lastResort`` can be set to ``None``."
 msgstr ""
 
-#: library/logging.rst:1504
+#: library/logging.rst:1507
 msgid "Used to see if exceptions during handling should be propagated."
 msgstr ""
 
-#: library/logging.rst:1506
+#: library/logging.rst:1509
 msgid "Default: ``True``."
 msgstr ""
 
-#: library/logging.rst:1508
+#: library/logging.rst:1511
 msgid ""
 "If :data:`raiseExceptions` is ``False``, exceptions get silently ignored. "
 "This is what is mostly wanted for a logging system - most users will not "
@@ -2182,22 +2189,22 @@ msgid ""
 "application errors."
 msgstr ""
 
-#: library/logging.rst:1515
+#: library/logging.rst:1518
 msgid "Integration with the warnings module"
 msgstr ""
 
-#: library/logging.rst:1517
+#: library/logging.rst:1520
 msgid ""
 "The :func:`captureWarnings` function can be used to integrate :mod:`logging` "
 "with the :mod:`warnings` module."
 msgstr ""
 
-#: library/logging.rst:1522
+#: library/logging.rst:1525
 msgid ""
 "This function is used to turn the capture of warnings by logging on and off."
 msgstr ""
 
-#: library/logging.rst:1525
+#: library/logging.rst:1528
 msgid ""
 "If *capture* is ``True``, warnings issued by the :mod:`warnings` module will "
 "be redirected to the logging system. Specifically, a warning will be "
@@ -2206,46 +2213,46 @@ msgid ""
 "`WARNING`."
 msgstr ""
 
-#: library/logging.rst:1530
+#: library/logging.rst:1533
 msgid ""
 "If *capture* is ``False``, the redirection of warnings to the logging system "
 "will stop, and warnings will be redirected to their original destinations (i."
 "e. those in effect before ``captureWarnings(True)`` was called)."
 msgstr ""
 
-#: library/logging.rst:1537
+#: library/logging.rst:1540
 msgid "Module :mod:`logging.config`"
 msgstr ""
 
-#: library/logging.rst:1538
+#: library/logging.rst:1541
 msgid "Configuration API for the logging module."
 msgstr ""
 
-#: library/logging.rst:1540
+#: library/logging.rst:1543
 msgid "Module :mod:`logging.handlers`"
 msgstr ""
 
-#: library/logging.rst:1541
+#: library/logging.rst:1544
 msgid "Useful handlers included with the logging module."
 msgstr ""
 
-#: library/logging.rst:1543
+#: library/logging.rst:1546
 msgid ":pep:`282` - A Logging System"
 msgstr ""
 
-#: library/logging.rst:1544
+#: library/logging.rst:1547
 msgid ""
 "The proposal which described this feature for inclusion in the Python "
 "standard library."
 msgstr ""
 
-#: library/logging.rst:1547
+#: library/logging.rst:1550
 msgid ""
 "`Original Python logging package <https://old.red-dove.com/python_logging."
 "html>`_"
 msgstr ""
 
-#: library/logging.rst:1548
+#: library/logging.rst:1551
 msgid ""
 "This is the original source for the :mod:`logging` package.  The version of "
 "the package available from this site is suitable for use with Python 1.5.2, "
diff --git a/library/mailbox.po b/library/mailbox.po
index c3ece5fcd..5c0d33920 100644
--- a/library/mailbox.po
+++ b/library/mailbox.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -419,7 +419,7 @@ msgid ""
 "addition to the following:"
 msgstr ""
 
-#: library/mailbox.rst:545
+#: library/mailbox.rst:560
 msgid "Return a list of the names of all folders."
 msgstr ""
 
@@ -436,7 +436,7 @@ msgid ""
 "instance representing it."
 msgstr ""
 
-#: library/mailbox.rst:563
+#: library/mailbox.rst:578
 msgid ""
 "Delete the folder whose name is *folder*. If the folder contains any "
 "messages, a :exc:`NotEmptyError` exception will be raised and the folder "
@@ -549,54 +549,61 @@ msgid ""
 "remarks:"
 msgstr ""
 
-#: library/mailbox.rst:487
+#: library/mailbox.rst:497 library/mailbox.rst:762 library/mailbox.rst:772
+msgid ""
+"Note: This method has an extra parameter (*from_*) compared with other "
+"classes. The first line of an mbox file entry is the Unix \"From \" line. If "
+"*from_* is False, the first line of the file is dropped."
+msgstr ""
+
+#: library/mailbox.rst:493
 msgid ""
 "Using the file after calling :meth:`~Mailbox.flush` or :meth:`~Mailbox."
 "close` on the :class:`!mbox` instance may yield unpredictable results or "
 "raise an exception."
 msgstr ""
 
-#: library/mailbox.rst:704 library/mailbox.rst:755
+#: library/mailbox.rst:719 library/mailbox.rst:780
 msgid ""
 "Three locking mechanisms are used---dot locking and, if available, the :c:"
 "func:`!flock` and :c:func:`!lockf` system calls."
 msgstr ""
 
-#: library/mailbox.rst:501
+#: library/mailbox.rst:516
 msgid ""
 "`mbox man page from tin <http://www.tin.org/bin/man.cgi?"
 "section=5&topic=mbox>`_"
 msgstr ""
 
-#: library/mailbox.rst:502
+#: library/mailbox.rst:517
 msgid "A specification of the format, with details on locking."
 msgstr ""
 
-#: library/mailbox.rst:504
+#: library/mailbox.rst:519
 msgid ""
 "`Configuring Netscape Mail on Unix: Why The Content-Length Format is Bad "
 "<https://www.jwz.org/doc/content-length.html>`_"
 msgstr ""
 
-#: library/mailbox.rst:505
+#: library/mailbox.rst:520
 msgid "An argument for using the original mbox format rather than a variation."
 msgstr ""
 
-#: library/mailbox.rst:507
+#: library/mailbox.rst:522
 msgid ""
 "`\"mbox\" is a family of several mutually incompatible mailbox formats "
 "<https://www.loc.gov/preservation/digital/formats/fdd/fdd000383.shtml>`_"
 msgstr ""
 
-#: library/mailbox.rst:508
+#: library/mailbox.rst:523
 msgid "A history of mbox variations."
 msgstr ""
 
-#: library/mailbox.rst:514
+#: library/mailbox.rst:529
 msgid ":class:`!MH` objects"
 msgstr ""
 
-#: library/mailbox.rst:519
+#: library/mailbox.rst:534
 msgid ""
 "A subclass of :class:`Mailbox` for mailboxes in MH format. Parameter "
 "*factory* is a callable object that accepts a file-like message "
@@ -606,7 +613,7 @@ msgid ""
 "is created if it does not exist."
 msgstr ""
 
-#: library/mailbox.rst:526
+#: library/mailbox.rst:541
 msgid ""
 "MH is a directory-based mailbox format invented for the MH Message Handling "
 "System, a mail user agent. Each message in an MH mailbox resides in its own "
@@ -617,7 +624,7 @@ msgid ""
 "called :file:`.mh_sequences` in each folder."
 msgstr ""
 
-#: library/mailbox.rst:534
+#: library/mailbox.rst:549
 msgid ""
 "The :class:`!MH` class manipulates MH mailboxes, but it does not attempt to "
 "emulate all of :program:`mh`'s behaviors. In particular, it does not modify "
@@ -625,63 +632,63 @@ msgid ""
 "are used by :program:`mh` to store its state and configuration."
 msgstr ""
 
-#: library/mailbox.rst:539
+#: library/mailbox.rst:554
 msgid ""
 ":class:`!MH` instances have all of the methods of :class:`Mailbox` in "
 "addition to the following:"
 msgstr ""
 
-#: library/mailbox.rst:550
+#: library/mailbox.rst:565
 msgid ""
 "Return an :class:`!MH` instance representing the folder whose name is "
 "*folder*. A :exc:`NoSuchMailboxError` exception is raised if the folder does "
 "not exist."
 msgstr ""
 
-#: library/mailbox.rst:557
+#: library/mailbox.rst:572
 msgid ""
 "Create a folder whose name is *folder* and return an :class:`!MH` instance "
 "representing it."
 msgstr ""
 
-#: library/mailbox.rst:570
+#: library/mailbox.rst:585
 msgid ""
 "Return a dictionary of sequence names mapped to key lists. If there are no "
 "sequences, the empty dictionary is returned."
 msgstr ""
 
-#: library/mailbox.rst:576
+#: library/mailbox.rst:591
 msgid ""
 "Re-define the sequences that exist in the mailbox based upon *sequences*, a "
 "dictionary of names mapped to key lists, like returned by :meth:"
 "`get_sequences`."
 msgstr ""
 
-#: library/mailbox.rst:583
+#: library/mailbox.rst:598
 msgid ""
 "Rename messages in the mailbox as necessary to eliminate gaps in numbering.  "
 "Entries in the sequences list are updated correspondingly."
 msgstr ""
 
-#: library/mailbox.rst:588
+#: library/mailbox.rst:603
 msgid ""
 "Already-issued keys are invalidated by this operation and should not be "
 "subsequently used."
 msgstr ""
 
-#: library/mailbox.rst:591
+#: library/mailbox.rst:606
 msgid ""
 "Some :class:`Mailbox` methods implemented by :class:`!MH` deserve special "
 "remarks:"
 msgstr ""
 
-#: library/mailbox.rst:599
+#: library/mailbox.rst:614
 msgid ""
 "These methods immediately delete the message. The MH convention of marking a "
 "message for deletion by prepending a comma to its name is not used."
 msgstr ""
 
-#: library/mailbox.rst:606
+#: library/mailbox.rst:621
 msgid ""
 "Three locking mechanisms are used---dot locking and, if available, the :c:"
 "func:`!flock` and :c:func:`!lockf` system calls. For MH mailboxes, locking "
@@ -690,51 +697,51 @@ msgid ""
 "files."
 msgstr ""
 
-#: library/mailbox.rst:615
+#: library/mailbox.rst:630
 msgid ""
 "Depending upon the host platform, it may not be possible to remove the "
 "underlying message while the returned file remains open."
 msgstr ""
 
-#: library/mailbox.rst:621
+#: library/mailbox.rst:636
 msgid ""
 "All changes to MH mailboxes are immediately applied, so this method does "
 "nothing."
 msgstr ""
 
-#: library/mailbox.rst:627
+#: library/mailbox.rst:642
 msgid ""
 ":class:`!MH` instances do not keep any open files, so this method is "
 "equivalent to :meth:`unlock`."
 msgstr ""
 
-#: library/mailbox.rst:633
+#: library/mailbox.rst:648
 msgid "`nmh - Message Handling System <https://www.nongnu.org/nmh/>`_"
 msgstr ""
 
-#: library/mailbox.rst:634
+#: library/mailbox.rst:649
 msgid ""
 "Home page of :program:`nmh`, an updated version of the original :program:"
 "`mh`."
 msgstr ""
 
-#: library/mailbox.rst:636
+#: library/mailbox.rst:651
 msgid ""
 "`MH & nmh: Email for Users & Programmers <https://rand-mh.sourceforge.io/"
 "book/>`_"
 msgstr ""
 
-#: library/mailbox.rst:637
+#: library/mailbox.rst:652
 msgid ""
 "A GPL-licensed book on :program:`mh` and :program:`nmh`, with some "
 "information on the mailbox format."
 msgstr ""
 
-#: library/mailbox.rst:644
+#: library/mailbox.rst:659
 msgid ":class:`!Babyl` objects"
 msgstr ""
 
-#: library/mailbox.rst:649
+#: library/mailbox.rst:664
 msgid ""
 "A subclass of :class:`Mailbox` for mailboxes in Babyl format. Parameter "
 "*factory* is a callable object that accepts a file-like message "
@@ -744,7 +751,7 @@ msgid ""
 "mailbox is created if it does not exist."
 msgstr ""
 
-#: library/mailbox.rst:656
+#: library/mailbox.rst:671
 msgid ""
 "Babyl is a single-file mailbox format used by the Rmail mail user agent "
 "included with Emacs. The beginning of a message is indicated by a line "
@@ -754,7 +761,7 @@ msgid ""
 "Underscore (``'\\037'``) character."
 msgstr ""
 
-#: library/mailbox.rst:663
+#: library/mailbox.rst:678
 msgid ""
 "Messages in a Babyl mailbox have two sets of headers, original headers and "
 "so-called visible headers. Visible headers are typically a subset of the "
@@ -765,31 +772,31 @@ msgid ""
 "in the Babyl options section."
 msgstr ""
 
-#: library/mailbox.rst:671
+#: library/mailbox.rst:686
 msgid ""
 ":class:`!Babyl` instances have all of the methods of :class:`Mailbox` in "
 "addition to the following:"
 msgstr ""
 
-#: library/mailbox.rst:677
+#: library/mailbox.rst:692
 msgid ""
 "Return a list of the names of all user-defined labels used in the mailbox."
 msgstr ""
 
-#: library/mailbox.rst:681
+#: library/mailbox.rst:696
 msgid ""
 "The actual messages are inspected to determine which labels exist in the "
 "mailbox rather than consulting the list of labels in the Babyl options "
 "section, but the Babyl section is updated whenever the mailbox is modified."
 msgstr ""
 
-#: library/mailbox.rst:686
+#: library/mailbox.rst:701
 msgid ""
 "Some :class:`Mailbox` methods implemented by :class:`!Babyl` deserve special "
 "remarks:"
 msgstr ""
 
-#: library/mailbox.rst:692
+#: library/mailbox.rst:707
 msgid ""
 "In Babyl mailboxes, the headers of a message are not stored contiguously "
 "with the body of the message. To generate a file-like representation, the "
@@ -799,30 +806,30 @@ msgid ""
 "memory compared to a string representation."
 msgstr ""
 
-#: library/mailbox.rst:710
+#: library/mailbox.rst:725
 msgid ""
 "`Format of Version 5 Babyl Files <https://quimby.gnus.org/notes/BABYL>`_"
 msgstr ""
 
-#: library/mailbox.rst:711
+#: library/mailbox.rst:726
 msgid "A specification of the Babyl format."
 msgstr ""
 
-#: library/mailbox.rst:713
+#: library/mailbox.rst:728
 msgid ""
 "`Reading Mail with Rmail <https://www.gnu.org/software/emacs/manual/"
 "html_node/emacs/Rmail.html>`_"
 msgstr ""
 
-#: library/mailbox.rst:714
+#: library/mailbox.rst:729
 msgid "The Rmail manual, with some information on Babyl semantics."
 msgstr ""
 
-#: library/mailbox.rst:720
+#: library/mailbox.rst:735
 msgid ":class:`!MMDF` objects"
 msgstr ""
 
-#: library/mailbox.rst:725
+#: library/mailbox.rst:740
 msgid ""
 "A subclass of :class:`Mailbox` for mailboxes in MMDF format. Parameter "
 "*factory* is a callable object that accepts a file-like message "
@@ -832,7 +839,7 @@ msgid ""
 "mailbox is created if it does not exist."
 msgstr ""
 
-#: library/mailbox.rst:732
+#: library/mailbox.rst:747
 msgid ""
 "MMDF is a single-file mailbox format invented for the Multichannel "
 "Memorandum Distribution Facility, a mail transfer agent. Each message is in "
@@ -845,52 +852,52 @@ msgid ""
 "subsequent messages."
 msgstr ""
 
-#: library/mailbox.rst:741
+#: library/mailbox.rst:756
 msgid ""
 "Some :class:`Mailbox` methods implemented by :class:`!MMDF` deserve special "
 "remarks:"
 msgstr ""
 
-#: library/mailbox.rst:747
+#: library/mailbox.rst:768
 msgid ""
 "Using the file after calling :meth:`~Mailbox.flush` or :meth:`~Mailbox."
 "close` on the :class:`!MMDF` instance may yield unpredictable results or "
 "raise an exception."
 msgstr ""
 
-#: library/mailbox.rst:761
+#: library/mailbox.rst:786
 msgid ""
 "`mmdf man page from tin <http://www.tin.org/bin/man.cgi?"
 "section=5&topic=mmdf>`_"
 msgstr ""
 
-#: library/mailbox.rst:762
+#: library/mailbox.rst:787
 msgid ""
 "A specification of MMDF format from the documentation of tin, a newsreader."
 msgstr ""
 
-#: library/mailbox.rst:764
+#: library/mailbox.rst:789
 msgid "`MMDF <https://en.wikipedia.org/wiki/MMDF>`_"
 msgstr ""
 
-#: library/mailbox.rst:765
+#: library/mailbox.rst:790
 msgid ""
 "A Wikipedia article describing the Multichannel Memorandum Distribution "
 "Facility."
 msgstr ""
 
-#: library/mailbox.rst:772
+#: library/mailbox.rst:797
 msgid ":class:`!Message` objects"
 msgstr ""
 
-#: library/mailbox.rst:777
+#: library/mailbox.rst:802
 msgid ""
 "A subclass of the :mod:`email.message` module's :class:`~email.message."
 "Message`. Subclasses of :class:`!mailbox.Message` add mailbox-format-"
 "specific state and behavior."
 msgstr ""
 
-#: library/mailbox.rst:781
+#: library/mailbox.rst:806
 msgid ""
 "If *message* is omitted, the new instance is created in a default, empty "
 "state. If *message* is an :class:`email.message.Message` instance, its "
@@ -902,7 +909,7 @@ msgid ""
 "compatibility."
 msgstr ""
 
-#: library/mailbox.rst:790
+#: library/mailbox.rst:815
 msgid ""
 "The format-specific state and behaviors offered by subclasses vary, but in "
 "general it is only the properties that are not specific to a particular "
@@ -914,7 +921,7 @@ msgid ""
 "important is retained, because it applies to the message itself."
 msgstr ""
 
-#: library/mailbox.rst:799
+#: library/mailbox.rst:824
 msgid ""
 "There is no requirement that :class:`!Message` instances be used to "
 "represent messages retrieved using :class:`Mailbox` instances. In some "
@@ -925,17 +932,17 @@ msgid ""
 "initialized."
 msgstr ""
 
-#: library/mailbox.rst:810
+#: library/mailbox.rst:835
 msgid ":class:`!MaildirMessage` objects"
 msgstr ""
 
-#: library/mailbox.rst:815
+#: library/mailbox.rst:840
 msgid ""
 "A message with Maildir-specific behaviors. Parameter *message* has the same "
 "meaning as with the :class:`Message` constructor."
 msgstr ""
 
-#: library/mailbox.rst:818
+#: library/mailbox.rst:843
 msgid ""
 "Typically, a mail user agent application moves all of the messages in the :"
 "file:`new` subdirectory to the :file:`cur` subdirectory after the first time "
@@ -949,115 +956,115 @@ msgid ""
 "flags for Maildir messages are as follows:"
 msgstr ""
 
-#: library/mailbox.rst:997 library/mailbox.rst:1368
+#: library/mailbox.rst:1022 library/mailbox.rst:1393
 msgid "Flag"
 msgstr ""
 
-#: library/mailbox.rst:997 library/mailbox.rst:1368
+#: library/mailbox.rst:1022 library/mailbox.rst:1393
 msgid "Meaning"
 msgstr ""
 
-#: library/mailbox.rst:997 library/mailbox.rst:1235 library/mailbox.rst:1368
+#: library/mailbox.rst:1022 library/mailbox.rst:1260 library/mailbox.rst:1393
 msgid "Explanation"
 msgstr ""
 
-#: library/mailbox.rst:1003 library/mailbox.rst:1374
+#: library/mailbox.rst:1028 library/mailbox.rst:1399
 msgid "D"
 msgstr ""
 
-#: library/mailbox.rst:832
+#: library/mailbox.rst:857
 msgid "Draft"
 msgstr ""
 
-#: library/mailbox.rst:832
+#: library/mailbox.rst:857
 msgid "Under composition"
 msgstr ""
 
-#: library/mailbox.rst:1005 library/mailbox.rst:1376
+#: library/mailbox.rst:1030 library/mailbox.rst:1401
 msgid "F"
 msgstr ""
 
-#: library/mailbox.rst:1005 library/mailbox.rst:1376
+#: library/mailbox.rst:1030 library/mailbox.rst:1401
 msgid "Flagged"
 msgstr ""
 
-#: library/mailbox.rst:1005 library/mailbox.rst:1376
+#: library/mailbox.rst:1030 library/mailbox.rst:1401
 msgid "Marked as important"
 msgstr ""
 
-#: library/mailbox.rst:836
+#: library/mailbox.rst:861
 msgid "P"
 msgstr ""
 
-#: library/mailbox.rst:836
+#: library/mailbox.rst:861
 msgid "Passed"
 msgstr ""
 
-#: library/mailbox.rst:836
+#: library/mailbox.rst:861
 msgid "Forwarded, resent, or bounced"
 msgstr ""
 
-#: library/mailbox.rst:999 library/mailbox.rst:1370
+#: library/mailbox.rst:1024 library/mailbox.rst:1395
 msgid "R"
 msgstr ""
 
-#: library/mailbox.rst:838
+#: library/mailbox.rst:863
 msgid "Replied"
 msgstr ""
 
-#: library/mailbox.rst:1007 library/mailbox.rst:1243 library/mailbox.rst:1378
+#: library/mailbox.rst:1032 library/mailbox.rst:1268 library/mailbox.rst:1403
 msgid "Replied to"
 msgstr ""
 
-#: library/mailbox.rst:840
+#: library/mailbox.rst:865
 msgid "S"
 msgstr ""
 
-#: library/mailbox.rst:840
+#: library/mailbox.rst:865
 msgid "Seen"
 msgstr ""
 
-#: library/mailbox.rst:999 library/mailbox.rst:1370
+#: library/mailbox.rst:1024 library/mailbox.rst:1395
 msgid "Read"
 msgstr ""
 
-#: library/mailbox.rst:842
+#: library/mailbox.rst:867
 msgid "T"
 msgstr ""
 
-#: library/mailbox.rst:842
+#: library/mailbox.rst:867
 msgid "Trashed"
 msgstr ""
 
-#: library/mailbox.rst:1003 library/mailbox.rst:1374
+#: library/mailbox.rst:1028 library/mailbox.rst:1399
 msgid "Marked for subsequent deletion"
 msgstr ""
 
-#: library/mailbox.rst:845
+#: library/mailbox.rst:870
 msgid ":class:`!MaildirMessage` instances offer the following methods:"
 msgstr ""
 
-#: library/mailbox.rst:850
+#: library/mailbox.rst:875
 msgid ""
 "Return either \"new\" (if the message should be stored in the :file:`new` "
 "subdirectory) or \"cur\" (if the message should be stored in the :file:`cur` "
 "subdirectory)."
 msgstr ""
 
-#: library/mailbox.rst:856
+#: library/mailbox.rst:881
 msgid ""
 "A message is typically moved from :file:`new` to :file:`cur` after its "
 "mailbox has been accessed, whether or not the message is has been read. A "
 "message ``msg`` has been read if ``\"S\" in msg.get_flags()`` is ``True``."
 msgstr ""
 
-#: library/mailbox.rst:864
+#: library/mailbox.rst:889
 msgid ""
 "Set the subdirectory the message should be stored in. Parameter *subdir* "
 "must be either \"new\" or \"cur\"."
 msgstr ""
 
-#: library/mailbox.rst:870
+#: library/mailbox.rst:895
 msgid ""
 "Return a string specifying the flags that are currently set. If the message "
 "complies with the standard Maildir format, the result is the concatenation "
@@ -1066,11 +1073,11 @@ msgid ""
 "flags are set or if \"info\" contains experimental semantics."
 msgstr ""
 
-#: library/mailbox.rst:880
+#: library/mailbox.rst:905
 msgid "Set the flags specified by *flags* and unset all others."
 msgstr ""
 
-#: library/mailbox.rst:885
+#: library/mailbox.rst:910
 msgid ""
 "Set the flag(s) specified by *flag* without changing other flags. To add "
 "more than one flag at a time, *flag* may be a string of more than one "
@@ -1078,7 +1085,7 @@ msgid ""
 "experimental information rather than flags."
 msgstr ""
 
-#: library/mailbox.rst:893
+#: library/mailbox.rst:918
 msgid ""
 "Unset the flag(s) specified by *flag* without changing other flags. To "
 "remove more than one flag at a time, *flag* maybe a string of more than one "
@@ -1086,30 +1093,30 @@ msgid ""
 "the current \"info\" is not modified."
 msgstr ""
 
-#: library/mailbox.rst:901
+#: library/mailbox.rst:926
 msgid ""
 "Return the delivery date of the message as a floating-point number "
 "representing seconds since the epoch."
 msgstr ""
 
-#: library/mailbox.rst:907
+#: library/mailbox.rst:932
 msgid ""
 "Set the delivery date of the message to *date*, a floating-point number "
 "representing seconds since the epoch."
 msgstr ""
 
-#: library/mailbox.rst:913
+#: library/mailbox.rst:938
 msgid ""
 "Return a string containing the \"info\" for a message. This is useful for "
 "accessing and modifying \"info\" that is experimental (i.e., not a list of "
 "flags)."
 msgstr ""
 
-#: library/mailbox.rst:920
+#: library/mailbox.rst:945
 msgid "Set \"info\" to *info*, which should be a string."
 msgstr ""
 
-#: library/mailbox.rst:922
+#: library/mailbox.rst:947
 msgid ""
 "When a :class:`!MaildirMessage` instance is created based upon an :class:"
 "`mboxMessage` or :class:`MMDFMessage` instance, the :mailheader:`Status` "
@@ -1117,132 +1124,132 @@ msgid ""
 "take place:"
 msgstr ""
 
-#: library/mailbox.rst:946 library/mailbox.rst:1068 library/mailbox.rst:1100
-#: library/mailbox.rst:1183 library/mailbox.rst:1212 library/mailbox.rst:1326
-#: library/mailbox.rst:1440 library/mailbox.rst:1472 library/mailbox.rst:1488
+#: library/mailbox.rst:971 library/mailbox.rst:1093 library/mailbox.rst:1125
+#: library/mailbox.rst:1208 library/mailbox.rst:1237 library/mailbox.rst:1351
+#: library/mailbox.rst:1465 library/mailbox.rst:1497 library/mailbox.rst:1513
 msgid "Resulting state"
 msgstr ""
 
-#: library/mailbox.rst:1198 library/mailbox.rst:1326
+#: library/mailbox.rst:1223 library/mailbox.rst:1351
 msgid ":class:`mboxMessage` or :class:`MMDFMessage` state"
 msgstr ""
 
-#: library/mailbox.rst:948 library/mailbox.rst:1072 library/mailbox.rst:1444
+#: library/mailbox.rst:973 library/mailbox.rst:1097 library/mailbox.rst:1469
 msgid "\"cur\" subdirectory"
 msgstr ""
 
-#: library/mailbox.rst:1072 library/mailbox.rst:1104 library/mailbox.rst:1444
-#: library/mailbox.rst:1476 library/mailbox.rst:1492
+#: library/mailbox.rst:1097 library/mailbox.rst:1129 library/mailbox.rst:1469
+#: library/mailbox.rst:1501 library/mailbox.rst:1517
 msgid "O flag"
 msgstr ""
 
-#: library/mailbox.rst:952 library/mailbox.rst:1091 library/mailbox.rst:1189
-#: library/mailbox.rst:1448 library/mailbox.rst:1496
+#: library/mailbox.rst:977 library/mailbox.rst:1116 library/mailbox.rst:1214
+#: library/mailbox.rst:1473 library/mailbox.rst:1521
 msgid "F flag"
 msgstr ""
 
-#: library/mailbox.rst:937 library/mailbox.rst:969 library/mailbox.rst:1078
-#: library/mailbox.rst:1187 library/mailbox.rst:1442 library/mailbox.rst:1490
+#: library/mailbox.rst:962 library/mailbox.rst:994 library/mailbox.rst:1103
+#: library/mailbox.rst:1212 library/mailbox.rst:1467 library/mailbox.rst:1515
 msgid "R flag"
 msgstr ""
 
-#: library/mailbox.rst:1078 library/mailbox.rst:1108 library/mailbox.rst:1203
-#: library/mailbox.rst:1450 library/mailbox.rst:1480 library/mailbox.rst:1498
+#: library/mailbox.rst:1103 library/mailbox.rst:1133 library/mailbox.rst:1228
+#: library/mailbox.rst:1475 library/mailbox.rst:1505 library/mailbox.rst:1523
 msgid "A flag"
 msgstr ""
 
-#: library/mailbox.rst:1070 library/mailbox.rst:1442
+#: library/mailbox.rst:1095 library/mailbox.rst:1467
 msgid "S flag"
 msgstr ""
 
-#: library/mailbox.rst:971 library/mailbox.rst:1313 library/mailbox.rst:1446
+#: library/mailbox.rst:996 library/mailbox.rst:1338 library/mailbox.rst:1471
 msgid "T flag"
 msgstr ""
 
-#: library/mailbox.rst:1074 library/mailbox.rst:1122 library/mailbox.rst:1446
-#: library/mailbox.rst:1494
+#: library/mailbox.rst:1099 library/mailbox.rst:1147 library/mailbox.rst:1471
+#: library/mailbox.rst:1519
 msgid "D flag"
 msgstr ""
 
-#: library/mailbox.rst:942
+#: library/mailbox.rst:967
 msgid ""
 "When a :class:`!MaildirMessage` instance is created based upon an :class:"
 "`MHMessage` instance, the following conversions take place:"
 msgstr ""
 
-#: library/mailbox.rst:1085 library/mailbox.rst:1457
+#: library/mailbox.rst:1110 library/mailbox.rst:1482
 msgid ":class:`MHMessage` state"
 msgstr ""
 
-#: library/mailbox.rst:1089 library/mailbox.rst:1201 library/mailbox.rst:1342
-#: library/mailbox.rst:1461
+#: library/mailbox.rst:1114 library/mailbox.rst:1226 library/mailbox.rst:1367
+#: library/mailbox.rst:1486
 msgid "\"unseen\" sequence"
 msgstr ""
 
-#: library/mailbox.rst:965
+#: library/mailbox.rst:990
 msgid "\"cur\" subdirectory and S flag"
 msgstr ""
 
-#: library/mailbox.rst:1087 library/mailbox.rst:1459
+#: library/mailbox.rst:1112 library/mailbox.rst:1484
 msgid "no \"unseen\" sequence"
 msgstr ""
 
-#: library/mailbox.rst:1091 library/mailbox.rst:1205 library/mailbox.rst:1463
+#: library/mailbox.rst:1116 library/mailbox.rst:1230 library/mailbox.rst:1488
 msgid "\"flagged\" sequence"
 msgstr ""
 
-#: library/mailbox.rst:1093 library/mailbox.rst:1203 library/mailbox.rst:1344
-#: library/mailbox.rst:1465
+#: library/mailbox.rst:1118 library/mailbox.rst:1228 library/mailbox.rst:1369
+#: library/mailbox.rst:1490
 msgid "\"replied\" sequence"
 msgstr ""
 
-#: library/mailbox.rst:957
+#: library/mailbox.rst:982
 msgid ""
 "When a :class:`!MaildirMessage` instance is created based upon a :class:"
 "`BabylMessage` instance, the following conversions take place:"
 msgstr ""
 
-#: library/mailbox.rst:1100 library/mailbox.rst:1472
+#: library/mailbox.rst:1125 library/mailbox.rst:1497
 msgid ":class:`BabylMessage` state"
 msgstr ""
 
-#: library/mailbox.rst:1104 library/mailbox.rst:1311 library/mailbox.rst:1342
-#: library/mailbox.rst:1476
+#: library/mailbox.rst:1129 library/mailbox.rst:1336 library/mailbox.rst:1367
+#: library/mailbox.rst:1501
 msgid "\"unseen\" label"
 msgstr ""
 
-#: library/mailbox.rst:1102 library/mailbox.rst:1474
+#: library/mailbox.rst:1127 library/mailbox.rst:1499
 msgid "no \"unseen\" label"
 msgstr ""
 
-#: library/mailbox.rst:1317
+#: library/mailbox.rst:1342
 msgid "P flag"
 msgstr ""
 
-#: library/mailbox.rst:967
+#: library/mailbox.rst:992
 msgid "\"forwarded\" or \"resent\" label"
 msgstr ""
 
-#: library/mailbox.rst:1108 library/mailbox.rst:1315 library/mailbox.rst:1344
-#: library/mailbox.rst:1480
+#: library/mailbox.rst:1133 library/mailbox.rst:1340 library/mailbox.rst:1369
+#: library/mailbox.rst:1505
 msgid "\"answered\" label"
 msgstr ""
 
-#: library/mailbox.rst:1106 library/mailbox.rst:1331 library/mailbox.rst:1478
+#: library/mailbox.rst:1131 library/mailbox.rst:1356 library/mailbox.rst:1503
 msgid "\"deleted\" label"
 msgstr ""
 
-#: library/mailbox.rst:978
+#: library/mailbox.rst:1003
 msgid ":class:`!mboxMessage` objects"
 msgstr ""
 
-#: library/mailbox.rst:983
+#: library/mailbox.rst:1008
 msgid ""
 "A message with mbox-specific behaviors. Parameter *message* has the same "
 "meaning as with the :class:`Message` constructor."
 msgstr ""
 
-#: library/mailbox.rst:986
+#: library/mailbox.rst:1011
 msgid ""
 "Messages in an mbox mailbox are stored together in a single file. The "
 "sender's envelope address and the time of delivery are typically stored in a "
@@ -1253,53 +1260,53 @@ msgid ""
 "typically stored in :mailheader:`Status` and :mailheader:`X-Status` headers."
 msgstr ""
 
-#: library/mailbox.rst:994
+#: library/mailbox.rst:1019
 msgid "Conventional flags for mbox messages are as follows:"
 msgstr ""
 
-#: library/mailbox.rst:1372
+#: library/mailbox.rst:1397
 msgid "O"
 msgstr ""
 
-#: library/mailbox.rst:1372
+#: library/mailbox.rst:1397
 msgid "Old"
 msgstr ""
 
-#: library/mailbox.rst:1372
+#: library/mailbox.rst:1397
 msgid "Previously detected by MUA"
 msgstr ""
 
-#: library/mailbox.rst:1374
+#: library/mailbox.rst:1399
 msgid "Deleted"
 msgstr ""
 
-#: library/mailbox.rst:1378
+#: library/mailbox.rst:1403
 msgid "A"
 msgstr ""
 
-#: library/mailbox.rst:1378
+#: library/mailbox.rst:1403
 msgid "Answered"
 msgstr ""
 
-#: library/mailbox.rst:1381
+#: library/mailbox.rst:1406
 msgid ""
 "The \"R\" and \"O\" flags are stored in the :mailheader:`Status` header, and "
 "the \"D\", \"F\", and \"A\" flags are stored in the :mailheader:`X-Status` "
 "header. The flags and headers typically appear in the order mentioned."
 msgstr ""
 
-#: library/mailbox.rst:1014
+#: library/mailbox.rst:1039
 msgid ":class:`!mboxMessage` instances offer the following methods:"
 msgstr ""
 
-#: library/mailbox.rst:1391
+#: library/mailbox.rst:1416
 msgid ""
 "Return a string representing the \"From \" line that marks the start of the "
 "message in an mbox mailbox. The leading \"From \" and the trailing newline "
 "are excluded."
 msgstr ""
 
-#: library/mailbox.rst:1398
+#: library/mailbox.rst:1423
 msgid ""
 "Set the \"From \" line to *from_*, which should be specified without a "
 "leading \"From \" or trailing newline. For convenience, *time_* may be "
@@ -1309,7 +1316,7 @@ msgid ""
 "func:`time.gmtime`)."
 msgstr ""
 
-#: library/mailbox.rst:1408
+#: library/mailbox.rst:1433
 msgid ""
 "Return a string specifying the flags that are currently set. If the message "
 "complies with the conventional format, the result is the concatenation in "
@@ -1317,28 +1324,28 @@ msgid ""
 "``'D'``, ``'F'``, and ``'A'``."
 msgstr ""
 
-#: library/mailbox.rst:1416
+#: library/mailbox.rst:1441
 msgid ""
 "Set the flags specified by *flags* and unset all others. Parameter *flags* "
 "should be the concatenation in any order of zero or more occurrences of each "
 "of ``'R'``, ``'O'``, ``'D'``, ``'F'``, and ``'A'``."
 msgstr ""
 
-#: library/mailbox.rst:1423
+#: library/mailbox.rst:1448
 msgid ""
 "Set the flag(s) specified by *flag* without changing other flags. To add "
 "more than one flag at a time, *flag* may be a string of more than one "
 "character."
 msgstr ""
 
-#: library/mailbox.rst:1430
+#: library/mailbox.rst:1455
 msgid ""
 "Unset the flag(s) specified by *flag* without changing other flags. To "
 "remove more than one flag at a time, *flag* maybe a string of more than one "
 "character."
 msgstr ""
 
-#: library/mailbox.rst:1062
+#: library/mailbox.rst:1087
 msgid ""
 "When an :class:`!mboxMessage` instance is created based upon a :class:"
 "`MaildirMessage` instance, a \"From \" line is generated based upon the :"
@@ -1346,48 +1353,48 @@ msgid ""
 "conversions take place:"
 msgstr ""
 
-#: library/mailbox.rst:1183 library/mailbox.rst:1440
+#: library/mailbox.rst:1208 library/mailbox.rst:1465
 msgid ":class:`MaildirMessage` state"
 msgstr ""
 
-#: library/mailbox.rst:1081
+#: library/mailbox.rst:1106
 msgid ""
 "When an :class:`!mboxMessage` instance is created based upon an :class:"
 "`MHMessage` instance, the following conversions take place:"
 msgstr ""
 
-#: library/mailbox.rst:1102 library/mailbox.rst:1474
+#: library/mailbox.rst:1127 library/mailbox.rst:1499
 msgid "R flag and O flag"
 msgstr ""
 
-#: library/mailbox.rst:1096
+#: library/mailbox.rst:1121
 msgid ""
 "When an :class:`!mboxMessage` instance is created based upon a :class:"
 "`BabylMessage` instance, the following conversions take place:"
 msgstr ""
 
-#: library/mailbox.rst:1111
+#: library/mailbox.rst:1136
 msgid ""
 "When a :class:`!mboxMessage` instance is created based upon an :class:"
 "`MMDFMessage` instance, the \"From \" line is copied and all flags directly "
 "correspond:"
 msgstr ""
 
-#: library/mailbox.rst:1116
+#: library/mailbox.rst:1141
 msgid ":class:`MMDFMessage` state"
 msgstr ""
 
-#: library/mailbox.rst:1133
+#: library/mailbox.rst:1158
 msgid ":class:`!MHMessage` objects"
 msgstr ""
 
-#: library/mailbox.rst:1138
+#: library/mailbox.rst:1163
 msgid ""
 "A message with MH-specific behaviors. Parameter *message* has the same "
 "meaning as with the :class:`Message` constructor."
 msgstr ""
 
-#: library/mailbox.rst:1141
+#: library/mailbox.rst:1166
 msgid ""
 "MH messages do not support marks or flags in the traditional sense, but they "
 "do support sequences, which are logical groupings of arbitrary messages. "
@@ -1396,57 +1403,57 @@ msgid ""
 "formats, as follows:"
 msgstr ""
 
-#: library/mailbox.rst:1148
+#: library/mailbox.rst:1173
 msgid "Sequence"
 msgstr ""
 
-#: library/mailbox.rst:1237
+#: library/mailbox.rst:1262
 msgid "unseen"
 msgstr ""
 
-#: library/mailbox.rst:1237
+#: library/mailbox.rst:1262
 msgid "Not read, but previously detected by MUA"
 msgstr ""
 
-#: library/mailbox.rst:1152
+#: library/mailbox.rst:1177
 msgid "replied"
 msgstr ""
 
-#: library/mailbox.rst:1154
+#: library/mailbox.rst:1179
 msgid "flagged"
 msgstr ""
 
-#: library/mailbox.rst:1157
+#: library/mailbox.rst:1182
 msgid ":class:`!MHMessage` instances offer the following methods:"
 msgstr ""
 
-#: library/mailbox.rst:1162
+#: library/mailbox.rst:1187
 msgid "Return a list of the names of sequences that include this message."
 msgstr ""
 
-#: library/mailbox.rst:1167
+#: library/mailbox.rst:1192
 msgid "Set the list of sequences that include this message."
 msgstr ""
 
-#: library/mailbox.rst:1172
+#: library/mailbox.rst:1197
 msgid "Add *sequence* to the list of sequences that include this message."
 msgstr ""
 
-#: library/mailbox.rst:1177
+#: library/mailbox.rst:1202
 msgid "Remove *sequence* from the list of sequences that include this message."
 msgstr ""
 
-#: library/mailbox.rst:1179
+#: library/mailbox.rst:1204
 msgid ""
 "When an :class:`!MHMessage` instance is created based upon a :class:"
 "`MaildirMessage` instance, the following conversions take place:"
 msgstr ""
 
-#: library/mailbox.rst:1311
+#: library/mailbox.rst:1336
 msgid "no S flag"
 msgstr ""
 
-#: library/mailbox.rst:1192
+#: library/mailbox.rst:1217
 msgid ""
 "When an :class:`!MHMessage` instance is created based upon an :class:"
 "`mboxMessage` or :class:`MMDFMessage` instance, the :mailheader:`Status` "
@@ -1454,110 +1461,110 @@ msgid ""
 "take place:"
 msgstr ""
 
-#: library/mailbox.rst:1329
+#: library/mailbox.rst:1354
 msgid "no R flag"
 msgstr ""
 
-#: library/mailbox.rst:1208
+#: library/mailbox.rst:1233
 msgid ""
 "When an :class:`!MHMessage` instance is created based upon a :class:"
 "`BabylMessage` instance, the following conversions take place:"
 msgstr ""
 
-#: library/mailbox.rst:1223
+#: library/mailbox.rst:1248
 msgid ":class:`!BabylMessage` objects"
 msgstr ""
 
-#: library/mailbox.rst:1228
+#: library/mailbox.rst:1253
 msgid ""
 "A message with Babyl-specific behaviors. Parameter *message* has the same "
 "meaning as with the :class:`Message` constructor."
 msgstr ""
 
-#: library/mailbox.rst:1231
+#: library/mailbox.rst:1256
 msgid ""
 "Certain message labels, called :dfn:`attributes`, are defined by convention "
 "to have special meanings. The attributes are as follows:"
 msgstr ""
 
-#: library/mailbox.rst:1235
+#: library/mailbox.rst:1260
 msgid "Label"
 msgstr ""
 
-#: library/mailbox.rst:1239
+#: library/mailbox.rst:1264
 msgid "deleted"
 msgstr ""
 
-#: library/mailbox.rst:1241
+#: library/mailbox.rst:1266
 msgid "filed"
 msgstr ""
 
-#: library/mailbox.rst:1241
+#: library/mailbox.rst:1266
 msgid "Copied to another file or mailbox"
 msgstr ""
 
-#: library/mailbox.rst:1243
+#: library/mailbox.rst:1268
 msgid "answered"
 msgstr ""
 
-#: library/mailbox.rst:1245
+#: library/mailbox.rst:1270
 msgid "forwarded"
 msgstr ""
 
-#: library/mailbox.rst:1245
+#: library/mailbox.rst:1270
 msgid "Forwarded"
 msgstr ""
 
-#: library/mailbox.rst:1247
+#: library/mailbox.rst:1272
 msgid "edited"
 msgstr ""
 
-#: library/mailbox.rst:1247
+#: library/mailbox.rst:1272
 msgid "Modified by the user"
 msgstr ""
 
-#: library/mailbox.rst:1249
+#: library/mailbox.rst:1274
 msgid "resent"
 msgstr ""
 
-#: library/mailbox.rst:1249
+#: library/mailbox.rst:1274
 msgid "Resent"
 msgstr ""
 
-#: library/mailbox.rst:1252
+#: library/mailbox.rst:1277
 msgid ""
 "By default, Rmail displays only visible headers. The :class:`!BabylMessage` "
 "class, though, uses the original headers because they are more complete. "
 "Visible headers may be accessed explicitly if desired."
 msgstr ""
 
-#: library/mailbox.rst:1256
+#: library/mailbox.rst:1281
 msgid ":class:`!BabylMessage` instances offer the following methods:"
 msgstr ""
 
-#: library/mailbox.rst:1261
+#: library/mailbox.rst:1286
 msgid "Return a list of labels on the message."
 msgstr ""
 
-#: library/mailbox.rst:1266
+#: library/mailbox.rst:1291
 msgid "Set the list of labels on the message to *labels*."
 msgstr ""
 
-#: library/mailbox.rst:1271
+#: library/mailbox.rst:1296
 msgid "Add *label* to the list of labels on the message."
 msgstr ""
 
-#: library/mailbox.rst:1276
+#: library/mailbox.rst:1301
 msgid "Remove *label* from the list of labels on the message."
 msgstr ""
 
-#: library/mailbox.rst:1281
+#: library/mailbox.rst:1306
 msgid ""
 "Return a :class:`Message` instance whose headers are the message's visible "
 "headers and whose body is empty."
 msgstr ""
 
-#: library/mailbox.rst:1287
+#: library/mailbox.rst:1312
 msgid ""
 "Set the message's visible headers to be the same as the headers in "
 "*message*.  Parameter *visible* should be a :class:`Message` instance, an :"
@@ -1565,7 +1572,7 @@ msgid ""
 "(which should be open in text mode)."
 msgstr ""
 
-#: library/mailbox.rst:1295
+#: library/mailbox.rst:1320
 msgid ""
 "When a :class:`!BabylMessage` instance's original headers are modified, the "
 "visible headers are not automatically modified to correspond. This method "
@@ -1578,17 +1585,17 @@ msgid ""
 "visible headers."
 msgstr ""
 
-#: library/mailbox.rst:1305
+#: library/mailbox.rst:1330
 msgid ""
 "When a :class:`!BabylMessage` instance is created based upon a :class:"
 "`MaildirMessage` instance, the following conversions take place:"
 msgstr ""
 
-#: library/mailbox.rst:1317
+#: library/mailbox.rst:1342
 msgid "\"forwarded\" label"
 msgstr ""
 
-#: library/mailbox.rst:1320
+#: library/mailbox.rst:1345
 msgid ""
 "When a :class:`!BabylMessage` instance is created based upon an :class:"
 "`mboxMessage` or :class:`MMDFMessage` instance, the :mailheader:`Status` "
@@ -1596,23 +1603,23 @@ msgid ""
 "take place:"
 msgstr ""
 
-#: library/mailbox.rst:1336
+#: library/mailbox.rst:1361
 msgid ""
 "When a :class:`!BabylMessage` instance is created based upon an :class:"
 "`MHMessage` instance, the following conversions take place:"
 msgstr ""
 
-#: library/mailbox.rst:1351
+#: library/mailbox.rst:1376
 msgid ":class:`!MMDFMessage` objects"
 msgstr ""
 
-#: library/mailbox.rst:1356
+#: library/mailbox.rst:1381
 msgid ""
 "A message with MMDF-specific behaviors. Parameter *message* has the same "
 "meaning as with the :class:`Message` constructor."
 msgstr ""
 
-#: library/mailbox.rst:1359
+#: library/mailbox.rst:1384
 msgid ""
 "As with message in an mbox mailbox, MMDF messages are stored with the "
 "sender's address and the delivery date in an initial line beginning with "
@@ -1620,19 +1627,19 @@ msgid ""
 "typically stored in :mailheader:`Status` and :mailheader:`X-Status` headers."
 msgstr ""
 
-#: library/mailbox.rst:1364
+#: library/mailbox.rst:1389
 msgid ""
 "Conventional flags for MMDF messages are identical to those of mbox message "
 "and are as follows:"
 msgstr ""
 
-#: library/mailbox.rst:1385
+#: library/mailbox.rst:1410
 msgid ""
 ":class:`!MMDFMessage` instances offer the following methods, which are "
 "identical to those offered by :class:`mboxMessage`:"
 msgstr ""
 
-#: library/mailbox.rst:1434
+#: library/mailbox.rst:1459
 msgid ""
 "When an :class:`!MMDFMessage` instance is created based upon a :class:"
 "`MaildirMessage` instance, a \"From \" line is generated based upon the :"
@@ -1640,43 +1647,43 @@ msgid ""
 "conversions take place:"
 msgstr ""
 
-#: library/mailbox.rst:1453
+#: library/mailbox.rst:1478
 msgid ""
 "When an :class:`!MMDFMessage` instance is created based upon an :class:"
 "`MHMessage` instance, the following conversions take place:"
 msgstr ""
 
-#: library/mailbox.rst:1468
+#: library/mailbox.rst:1493
 msgid ""
 "When an :class:`!MMDFMessage` instance is created based upon a :class:"
 "`BabylMessage` instance, the following conversions take place:"
 msgstr ""
 
-#: library/mailbox.rst:1483
+#: library/mailbox.rst:1508
 msgid ""
 "When an :class:`!MMDFMessage` instance is created based upon an :class:"
 "`mboxMessage` instance, the \"From \" line is copied and all flags directly "
 "correspond:"
 msgstr ""
 
-#: library/mailbox.rst:1488
+#: library/mailbox.rst:1513
 msgid ":class:`mboxMessage` state"
 msgstr ""
 
-#: library/mailbox.rst:1503
+#: library/mailbox.rst:1528
 msgid "Exceptions"
 msgstr ""
 
-#: library/mailbox.rst:1505
+#: library/mailbox.rst:1530
 msgid ""
 "The following exception classes are defined in the :mod:`!mailbox` module:"
 msgstr ""
 
-#: library/mailbox.rst:1510
+#: library/mailbox.rst:1535
 msgid "The based class for all other module-specific exceptions."
 msgstr ""
 
-#: library/mailbox.rst:1515
+#: library/mailbox.rst:1540
 msgid ""
 "Raised when a mailbox is expected but is not found, such as when "
 "instantiating a :class:`Mailbox` subclass with a path that does not exist "
@@ -1684,13 +1691,13 @@ msgid ""
 "that does not exist."
 msgstr ""
 
-#: library/mailbox.rst:1522
+#: library/mailbox.rst:1547
 msgid ""
 "Raised when a mailbox is not empty but is expected to be, such as when "
 "deleting a folder that contains messages."
 msgstr ""
 
-#: library/mailbox.rst:1528
+#: library/mailbox.rst:1553
 msgid ""
 "Raised when some mailbox-related condition beyond the control of the program "
 "causes it to be unable to proceed, such as when failing to acquire a lock "
@@ -1698,23 +1705,23 @@ msgid ""
 "name already exists."
 msgstr ""
 
-#: library/mailbox.rst:1536
+#: library/mailbox.rst:1561
 msgid ""
 "Raised when the data in a file cannot be parsed, such as when an :class:`MH` "
 "instance attempts to read a corrupted :file:`.mh_sequences` file."
 msgstr ""
 
-#: library/mailbox.rst:1543
+#: library/mailbox.rst:1568
 msgid "Examples"
 msgstr ""
 
-#: library/mailbox.rst:1545
+#: library/mailbox.rst:1570
 msgid ""
 "A simple example of printing the subjects of all messages in a mailbox that "
 "seem interesting::"
 msgstr ""
 
-#: library/mailbox.rst:1548
+#: library/mailbox.rst:1573
 msgid ""
 "import mailbox\n"
 "for message in mailbox.mbox('~/mbox'):\n"
@@ -1723,13 +1730,13 @@ msgid ""
 "        print(subject)"
 msgstr ""
 
-#: library/mailbox.rst:1554
+#: library/mailbox.rst:1579
 msgid ""
 "To copy all mail from a Babyl mailbox to an MH mailbox, converting all of "
 "the format-specific information that can be converted::"
 msgstr ""
 
-#: library/mailbox.rst:1557
+#: library/mailbox.rst:1582
 msgid ""
 "import mailbox\n"
 "destination = mailbox.MH('~/Mail')\n"
@@ -1740,7 +1747,7 @@ msgid ""
 "destination.unlock()"
 msgstr ""
 
-#: library/mailbox.rst:1565
+#: library/mailbox.rst:1590
 msgid ""
 "This example sorts mail from several mailing lists into different mailboxes, "
 "being careful to avoid mail corruption due to concurrent modification by "
@@ -1748,7 +1755,7 @@ msgid ""
 "termination due to malformed messages in the mailbox::"
 msgstr ""
 
-#: library/mailbox.rst:1570
+#: library/mailbox.rst:1595
 msgid ""
 "import mailbox\n"
 "import email.errors\n"
diff --git a/library/math.po b/library/math.po
index b3113cb90..70c5f8cae 100644
--- a/library/math.po
+++ b/library/math.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: 2023-03-31 00:00+0300\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -95,7 +95,7 @@ msgstr ""
 "Binom katsayısı olarak da adlandırılır. Çünkü ``(1 + x)ⁿ`` polinom "
 "açılımındaki k. terimin katsayısına eşittir."
 
-#: library/math.rst:258
+#: library/math.rst:261
 msgid ""
 "Raises :exc:`TypeError` if either of the arguments are not integers. Raises :"
 "exc:`ValueError` if either of the arguments are negative."
@@ -143,19 +143,20 @@ msgstr ""
 "vermelidir."
 
 #: library/math.rst:87
+#, fuzzy
 msgid ""
-"Return ``fmod(x, y)``, as defined by the platform C library. Note that the "
-"Python expression ``x % y`` may not return the same result.  The intent of "
-"the C standard is that ``fmod(x, y)`` be exactly (mathematically; to "
-"infinite precision) equal to ``x - n*y`` for some integer *n* such that the "
-"result has the same sign as *x* and magnitude less than ``abs(y)``.  "
-"Python's ``x % y`` returns a result with the sign of *y* instead, and may "
-"not be exactly computable for float arguments. For example, ``fmod(-1e-100, "
-"1e100)`` is ``-1e-100``, but the result of Python's ``-1e-100 % 1e100`` is "
-"``1e100-1e-100``, which cannot be represented exactly as a float, and rounds "
-"to the surprising ``1e100``.  For this reason, function :func:`fmod` is "
-"generally preferred when working with floats, while Python's ``x % y`` is "
-"preferred when working with integers."
+"Return the floating-point remainder of ``x / y``, as defined by the platform "
+"C library function ``fmod(x, y)``. Note that the Python expression ``x % y`` "
+"may not return the same result.  The intent of the C standard is that "
+"``fmod(x, y)`` be exactly (mathematically; to infinite precision) equal to "
+"``x - n*y`` for some integer *n* such that the result has the same sign as "
+"*x* and magnitude less than ``abs(y)``.  Python's ``x % y`` returns a result "
+"with the sign of *y* instead, and may not be exactly computable for float "
+"arguments. For example, ``fmod(-1e-100, 1e100)`` is ``-1e-100``, but the "
+"result of Python's ``-1e-100 % 1e100`` is ``1e100-1e-100``, which cannot be "
+"represented exactly as a float, and rounds to the surprising ``1e100``.  For "
+"this reason, function :func:`fmod` is generally preferred when working with "
+"floats, while Python's ``x % y`` is preferred when working with integers."
 msgstr ""
 "Platform C kütüphanesi tarafından tanımlandığı gibi ``fmod(x, y)`` döndürür. "
 "Python ifadesinin ``x % y`` aynı sonucu döndürmeyebileceğini unutmayın.  C "
@@ -171,7 +172,7 @@ msgstr ""
 "floatlarla çalışırken genellikle :func:`fmod` fonksiyonu tercih edilirken, "
 "tamsayılarla çalışırken Python'un ``x % y`` fonksiyonu tercih edilir."
 
-#: library/math.rst:102
+#: library/math.rst:103
 msgid ""
 "Return the mantissa and exponent of *x* as the pair ``(m, e)``.  *m* is a "
 "float and *e* is an integer such that ``x == m * 2**e`` exactly. If *x* is "
@@ -184,7 +185,7 @@ msgstr ""
 "abs(m) < 1`` döndürür.  Bu, bir ondalıklı sayının iç temsilini taşınabilir "
 "bir şekilde \"ayırmak\" için kullanılır."
 
-#: library/math.rst:110
+#: library/math.rst:111
 #, fuzzy
 msgid ""
 "Return an accurate floating-point sum of values in the iterable.  Avoids "
@@ -193,7 +194,7 @@ msgstr ""
 "Iterable içindeki değerlerin doğru bir kayan noktalı toplamını döndür. "
 "Birden fazla ara toplamı takip ederek hassasiyet kaybını önler:"
 
-#: library/math.rst:113
+#: library/math.rst:114
 msgid ""
 "The algorithm's accuracy depends on IEEE-754 arithmetic guarantees and the "
 "typical case where the rounding mode is half-even.  On some non-Windows "
@@ -207,7 +208,7 @@ msgstr ""
 "toplamı çift yuvarlayarak en az anlamlı bitinde eksik olmasına neden "
 "olabilir."
 
-#: library/math.rst:119
+#: library/math.rst:120
 #, fuzzy
 msgid ""
 "For further discussion and two alternative approaches, see the `ASPN "
@@ -219,7 +220,7 @@ msgstr ""
 "for accurate floating point summation <https://code.activestate.com/"
 "recipes/393090/>`_ sayfasına bakın."
 
-#: library/math.rst:126
+#: library/math.rst:127
 msgid ""
 "Return the greatest common divisor of the specified integer arguments. If "
 "any of the arguments is nonzero, then the returned value is the largest "
@@ -233,7 +234,7 @@ msgstr ""
 "tamsayıdır.  Tüm bağımsız değişkenler sıfırsa, döndürülen değer ``0`` olur.  "
 "bağımsız değişkenler olmadan ``gcd()`` fonksiyonu ``0`` değerini döndürür."
 
-#: library/math.rst:134
+#: library/math.rst:135
 msgid ""
 "Added support for an arbitrary number of arguments. Formerly, only two "
 "arguments were supported."
@@ -241,7 +242,7 @@ msgstr ""
 "İsteğe bağlı sayıda bağımsız değişken için destek eklendi. Önceden sadece "
 "iki argüman destekleniyordu."
 
-#: library/math.rst:141
+#: library/math.rst:142
 msgid ""
 "Return ``True`` if the values *a* and *b* are close to each other and "
 "``False`` otherwise."
@@ -249,21 +250,25 @@ msgstr ""
 "Eğer *a* ve *b* değerleri birbirine yakınsa ``True``, değilse ``False`` "
 "döndürür."
 
-#: library/math.rst:144
+#: library/math.rst:145
+#, fuzzy
 msgid ""
 "Whether or not two values are considered close is determined according to "
-"given absolute and relative tolerances."
+"given absolute and relative tolerances.  If no errors occur, the result will "
+"be: ``abs(a-b) <= max(rel_tol * max(abs(a), abs(b)), abs_tol)``."
 msgstr ""
 "İki değerin yakın kabul edilip edilmeyeceği, verilen mutlak ve göreceli "
 "toleranslara göre belirlenir."
 
-#: library/math.rst:147
+#: library/math.rst:149
+#, fuzzy
 msgid ""
 "*rel_tol* is the relative tolerance -- it is the maximum allowed difference "
 "between *a* and *b*, relative to the larger absolute value of *a* or *b*. "
 "For example, to set a tolerance of 5%, pass ``rel_tol=0.05``.  The default "
 "tolerance is ``1e-09``, which assures that the two values are the same "
-"within about 9 decimal digits.  *rel_tol* must be greater than zero."
+"within about 9 decimal digits.  *rel_tol* must be nonnegative and less than "
+"``1.0``."
 msgstr ""
 "*rel_tol* göreli toleranstır - *a* veya *b*'nin daha büyük mutlak değerine "
 "göre *a* ve *b* arasında izin verilen maksimum farktır. Örneğin, %5'lik bir "
@@ -271,23 +276,16 @@ msgstr ""
 "tolerans, iki değerin yaklaşık 9 ondalık basamak içinde aynı olmasını "
 "sağlayan ``1e-09`` değeridir.  *rel_tol* sıfırdan büyük olmalıdır."
 
-#: library/math.rst:153
-msgid ""
-"*abs_tol* is the minimum absolute tolerance -- useful for comparisons near "
-"zero. *abs_tol* must be at least zero."
-msgstr ""
-"*abs_tol* minimum mutlak toleranstır -- sıfıra yakın karşılaştırmalar için "
-"kullanışlıdır. *abs_tol* en az sıfır olmalıdır."
-
 #: library/math.rst:156
 msgid ""
-"If no errors occur, the result will be: ``abs(a-b) <= max(rel_tol * "
-"max(abs(a), abs(b)), abs_tol)``."
+"*abs_tol* is the absolute tolerance; it defaults to ``0.0`` and it must be "
+"nonnegative.  When comparing ``x`` to ``0.0``, ``isclose(x, 0)`` is computed "
+"as ``abs(x) <= rel_tol  * abs(x)``, which is ``False`` for any nonzero ``x`` "
+"and *rel_tol* less than ``1.0``.  So add an appropriate positive *abs_tol* "
+"argument to the call."
 msgstr ""
-"Herhangi bir hata oluşmazsa, sonuç şöyle olacaktır: ``abs(a-b) <= "
-"max(rel_tol * max(abs(a), abs(b)), abs_tol)``."
 
-#: library/math.rst:159
+#: library/math.rst:162
 msgid ""
 "The IEEE 754 special values of ``NaN``, ``inf``, and ``-inf`` will be "
 "handled according to IEEE rules.  Specifically, ``NaN`` is not considered "
@@ -299,11 +297,11 @@ msgstr ""
 "hiçbir değere yakın kabul edilmez.  ``inf`` ve ``-inf`` yalnızca kendilerine "
 "yakın kabul edilir."
 
-#: library/math.rst:168
+#: library/math.rst:171
 msgid ":pep:`485` -- A function for testing approximate equality"
 msgstr ":pep:`485` -- Yaklaşık eşitliği test etmek için bir fonksiyon"
 
-#: library/math.rst:173
+#: library/math.rst:176
 msgid ""
 "Return ``True`` if *x* is neither an infinity nor a NaN, and ``False`` "
 "otherwise.  (Note that ``0.0`` *is* considered finite.)"
@@ -311,7 +309,7 @@ msgstr ""
 "Eğer *x* sonsuz bir değer ya da  NaN ise ``True``, aksi takdirde ``False`` "
 "döndürür.  (``0.0`` *sonlu* olarak kabul edilir.)"
 
-#: library/math.rst:181
+#: library/math.rst:184
 msgid ""
 "Return ``True`` if *x* is a positive or negative infinity, and ``False`` "
 "otherwise."
@@ -319,13 +317,13 @@ msgstr ""
 "Eğer *x* pozitif veya negatif bir sonsuz ise ``True``, aksi takdirde "
 "``False`` döndürür."
 
-#: library/math.rst:187
+#: library/math.rst:190
 msgid ""
 "Return ``True`` if *x* is a NaN (not a number), and ``False`` otherwise."
 msgstr ""
 "Eğer *x* bir NaN (sayı değil) ise ``True``, aksi takdirde ``False`` döndürür."
 
-#: library/math.rst:192
+#: library/math.rst:195
 msgid ""
 "Return the integer square root of the nonnegative integer *n*. This is the "
 "floor of the exact square root of *n*, or equivalently the greatest integer "
@@ -335,7 +333,7 @@ msgstr ""
 "karekökünün tabanıdır veya eşdeğer olarak *a*\\ ² |nbsp| ≤ |nbsp| *n* olacak "
 "şekilde en büyük *a* tamsayısıdır."
 
-#: library/math.rst:196
+#: library/math.rst:199
 msgid ""
 "For some applications, it may be more convenient to have the least integer "
 "*a* such that *n* |nbsp| ≤ |nbsp| *a*\\ ², or in other words the ceiling of "
@@ -347,7 +345,7 @@ msgstr ""
 "sahip olmak daha uygun olabilir. Pozitif *n* için bu, ``a = 1 + isqrt(n - "
 "1)`` kullanılarak hesaplanabilir."
 
-#: library/math.rst:206
+#: library/math.rst:209
 msgid ""
 "Return the least common multiple of the specified integer arguments. If all "
 "arguments are nonzero, then the returned value is the smallest positive "
@@ -361,14 +359,14 @@ msgstr ""
 "değişkenlerden herhangi biri sıfırsa, döndürülen değer ``0`` olur.  Bağımsız "
 "değişkenler olmadan ``lcm()`` işlevi ``1`` değerini döndürür."
 
-#: library/math.rst:217
+#: library/math.rst:220
 msgid ""
 "Return ``x * (2**i)``.  This is essentially the inverse of function :func:"
 "`frexp`."
 msgstr ""
 "``x * (2**i)`` döndürür.  Bu aslında :func:`frexp` fonksiyonunun tersidir."
 
-#: library/math.rst:223
+#: library/math.rst:226
 msgid ""
 "Return the fractional and integer parts of *x*.  Both results carry the sign "
 "of *x* and are floats."
@@ -376,47 +374,47 @@ msgstr ""
 "x*'in kesirli ve tamsayı kısımlarını döndürür.  Her iki sonuç da *x* "
 "işaretini taşır ve kayan değerdir."
 
-#: library/math.rst:229
+#: library/math.rst:232
 #, fuzzy
 msgid "Return the floating-point value *steps* steps after *x* towards *y*."
 msgstr ""
 "x* değerinden sonra *y* değerine doğru bir sonraki kayan noktalı değeri "
 "döndürür."
 
-#: library/math.rst:231
+#: library/math.rst:234
 #, fuzzy
 msgid "If *x* is equal to *y*, return *y*, unless *steps* is zero."
 msgstr "Eğer *x*, *y*'ye eşitse, *y* değerini döndürür."
 
-#: library/math.rst:233
+#: library/math.rst:236
 msgid "Examples:"
 msgstr "Örnekler:"
 
-#: library/math.rst:235
+#: library/math.rst:238
 msgid "``math.nextafter(x, math.inf)`` goes up: towards positive infinity."
 msgstr "``math.nextafter(x, math.inf)`` yukarı gider: pozitif sonsuza doğru."
 
-#: library/math.rst:236
+#: library/math.rst:239
 msgid "``math.nextafter(x, -math.inf)`` goes down: towards minus infinity."
 msgstr "``math.nextafter(x, -math.inf)`` aşağı iner: eksi sonsuza doğru."
 
-#: library/math.rst:237
+#: library/math.rst:240
 msgid "``math.nextafter(x, 0.0)`` goes towards zero."
 msgstr "``math.nextafter(x, 0.0)`` sıfıra doğru gider."
 
-#: library/math.rst:238
+#: library/math.rst:241
 msgid "``math.nextafter(x, math.copysign(math.inf, x))`` goes away from zero."
 msgstr "``math.nextafter(x, math.copysign(math.inf, x))`` sıfırdan uzaklaşır."
 
-#: library/math.rst:240
+#: library/math.rst:243
 msgid "See also :func:`math.ulp`."
 msgstr "Ayrıca bakınız :func:`math.ulp`."
 
-#: library/math.rst:244
+#: library/math.rst:247
 msgid "Added the *steps* argument."
 msgstr ""
 
-#: library/math.rst:249
+#: library/math.rst:252
 msgid ""
 "Return the number of ways to choose *k* items from *n* items without "
 "repetition and with order."
@@ -424,7 +422,7 @@ msgstr ""
 "Tekrarlama olmadan ve sırayla *n* öğe arasından *k* öğeyi seçmenin "
 "yollarının sayısını döndürür."
 
-#: library/math.rst:252
+#: library/math.rst:255
 msgid ""
 "Evaluates to ``n! / (n - k)!`` when ``k <= n`` and evaluates to zero when "
 "``k > n``."
@@ -432,7 +430,7 @@ msgstr ""
 "``n! / (k! * (n - k)!)`` değerini ``k <= n`` olduğunda verir ve ``k > n`` "
 "olduğunda sıfır olarak değerlendirir."
 
-#: library/math.rst:255
+#: library/math.rst:258
 #, fuzzy
 msgid ""
 "If *k* is not specified or is ``None``, then *k* defaults to *n* and the "
@@ -441,7 +439,7 @@ msgstr ""
 "Eğer *k* belirtilmemişse veya None ise, *k* varsayılan olarak *n* değerini "
 "alır ve fonksiyon ``n!`` döndürür."
 
-#: library/math.rst:266
+#: library/math.rst:269
 msgid ""
 "Calculate the product of all the elements in the input *iterable*. The "
 "default *start* value for the product is ``1``."
@@ -449,7 +447,7 @@ msgstr ""
 "Girdi *iterable* içindeki tüm elemanların çarpımını hesaplar. Çarpım için "
 "varsayılan *başlangıç* değeri ``1`` 'dir."
 
-#: library/math.rst:269
+#: library/math.rst:272
 msgid ""
 "When the iterable is empty, return the start value.  This function is "
 "intended specifically for use with numeric values and may reject non-numeric "
@@ -459,7 +457,7 @@ msgstr ""
 "özellikle sayısal değerlerle kullanılmak üzere tasarlanmıştır ve sayısal "
 "olmayan türleri reddedebilir."
 
-#: library/math.rst:278
+#: library/math.rst:281
 msgid ""
 "Return the IEEE 754-style remainder of *x* with respect to *y*.  For finite "
 "*x* and finite nonzero *y*, this is the difference ``x - n*y``, where ``n`` "
@@ -475,7 +473,7 @@ msgstr ""
 "Kalan ``r = remainder(x, y)`` böylece her zaman ``abs(r) <= 0.5 * abs(y)`` "
 "sağlar."
 
-#: library/math.rst:285
+#: library/math.rst:288
 msgid ""
 "Special cases follow IEEE 754: in particular, ``remainder(x, math.inf)`` is "
 "*x* for any finite *x*, and ``remainder(x, 0)`` and ``remainder(math.inf, "
@@ -488,7 +486,7 @@ msgstr ""
 "`ValueError` yükseltir. Eğer kalan işleminin sonucu sıfır ise, bu sıfır *x* "
 "ile aynı işarete sahip olacaktır."
 
-#: library/math.rst:291
+#: library/math.rst:294
 #, fuzzy
 msgid ""
 "On platforms using IEEE 754 binary floating point, the result of this "
@@ -497,29 +495,29 @@ msgstr ""
 "IEEE 754 ikili kayan nokta kullanan platformlarda, bu işlemin sonucu her "
 "zaman tam olarak gösterilebilir: yuvarlama hatası oluşmaz."
 
-#: library/math.rst:299
+#: library/math.rst:302
 msgid "Return the sum of products of values from two iterables *p* and *q*."
 msgstr ""
 
-#: library/math.rst:301
+#: library/math.rst:304
 msgid "Raises :exc:`ValueError` if the inputs do not have the same length."
 msgstr ""
 
-#: library/math.rst:498
+#: library/math.rst:501
 msgid "Roughly equivalent to::"
 msgstr "Kabaca şuna eşdeğerdir::"
 
-#: library/math.rst:305
+#: library/math.rst:308
 msgid "sum(itertools.starmap(operator.mul, zip(p, q, strict=True)))"
 msgstr ""
 
-#: library/math.rst:307
+#: library/math.rst:310
 msgid ""
 "For float and mixed int/float inputs, the intermediate products and sums are "
 "computed with extended precision."
 msgstr ""
 
-#: library/math.rst:315
+#: library/math.rst:318
 msgid ""
 "Return *x* with the fractional part removed, leaving the integer part.  This "
 "rounds toward 0: ``trunc()`` is equivalent to :func:`floor` for positive "
@@ -533,24 +531,24 @@ msgstr ""
 "Integral` değeri döndürmesi gereken :meth:`x.__trunc__ <object.__trunc__>`'a "
 "delege eder."
 
-#: library/math.rst:323
+#: library/math.rst:326
 msgid "Return the value of the least significant bit of the float *x*:"
 msgstr "float *x* öğesinin en az anlamlı bitinin değerini döndürür:"
 
-#: library/math.rst:325
+#: library/math.rst:328
 msgid "If *x* is a NaN (not a number), return *x*."
 msgstr ""
 "Eğer *x* bir NaN (sayı değil) ise ``True``, aksi takdirde ``False`` döndürür."
 
-#: library/math.rst:326
+#: library/math.rst:329
 msgid "If *x* is negative, return ``ulp(-x)``."
 msgstr "Eğer *x* negatif ise, ``ulp(-x)`` döndürür."
 
-#: library/math.rst:327
+#: library/math.rst:330
 msgid "If *x* is a positive infinity, return *x*."
 msgstr "Eğer *x* pozitif bir sonsuzluk ise, *x* değerini döndürür."
 
-#: library/math.rst:328
+#: library/math.rst:331
 msgid ""
 "If *x* is equal to zero, return the smallest positive *denormalized* "
 "representable float (smaller than the minimum positive *normalized* float, :"
@@ -560,7 +558,7 @@ msgstr ""
 "floatı döndürür (minimum pozitif *normalize* floattan daha küçük, :data:`sys."
 "float_info.min <sys.float_info>`)."
 
-#: library/math.rst:331
+#: library/math.rst:334
 msgid ""
 "If *x* is equal to the largest positive representable float, return the "
 "value of the least significant bit of *x*, such that the first float smaller "
@@ -570,7 +568,7 @@ msgstr ""
 "*x* değerinden küçük olan ilk float değeri ``x - ulp(x)`` olacak şekilde *x* "
 "değerinin en küçük anlamlı bitinin değerini döndürür."
 
-#: library/math.rst:334
+#: library/math.rst:337
 msgid ""
 "Otherwise (*x* is a positive finite number), return the value of the least "
 "significant bit of *x*, such that the first float bigger than *x* is ``x + "
@@ -579,11 +577,11 @@ msgstr ""
 "Aksi takdirde (*x* pozitif bir sonlu sayıdır), *x*'in en az anlamlı bitinin "
 "değerini döndürür, öyle ki *x*'ten büyük ilk float ``x + ulp(x)`` olur."
 
-#: library/math.rst:338
+#: library/math.rst:341
 msgid "ULP stands for \"Unit in the Last Place\"."
 msgstr "ULP, \"Son Yerdeki Birim\" anlamına gelmektedir."
 
-#: library/math.rst:340
+#: library/math.rst:343
 msgid ""
 "See also :func:`math.nextafter` and :data:`sys.float_info.epsilon <sys."
 "float_info>`."
@@ -591,7 +589,7 @@ msgstr ""
 "Ayrıca bakınız :func:`math.nextafter` ve :data:`sys.float_info.epsilon <sys."
 "float_info>`."
 
-#: library/math.rst:346
+#: library/math.rst:349
 msgid ""
 "Note that :func:`frexp` and :func:`modf` have a different call/return "
 "pattern than their C equivalents: they take a single argument and return a "
@@ -603,7 +601,7 @@ msgstr ""
 "dönüş değerlerini bir 'çıktı parametresi' aracılığıyla döndürmek yerine bir "
 "çift değer döndürürler (Python'da böyle bir şey yoktur)."
 
-#: library/math.rst:351
+#: library/math.rst:354
 msgid ""
 "For the :func:`ceil`, :func:`floor`, and :func:`modf` functions, note that "
 "*all* floating-point numbers of sufficiently large magnitude are exact "
@@ -618,15 +616,15 @@ msgstr ""
 "``abs(x) >= 2**52`` olan herhangi bir *x* kayan noktalı sayısı zorunlu "
 "olarak kesirli bitlere sahip değildir."
 
-#: library/math.rst:359
+#: library/math.rst:362
 msgid "Power and logarithmic functions"
 msgstr "Güç ve logaritmik fonksiyonlar"
 
-#: library/math.rst:363
+#: library/math.rst:366
 msgid "Return the cube root of *x*."
 msgstr "x*'in küp kökünü döndürür."
 
-#: library/math.rst:370
+#: library/math.rst:373
 msgid ""
 "Return *e* raised to the power *x*, where *e* = 2.718281... is the base of "
 "natural logarithms.  This is usually more accurate than ``math.e ** x`` or "
@@ -636,11 +634,11 @@ msgstr ""
 "doğal logaritma tabanıdır.  Bu genellikle ``math.e ** x`` veya ``pow(math.e, "
 "x)`` değerinden daha doğrudur."
 
-#: library/math.rst:377
+#: library/math.rst:380
 msgid "Return *2* raised to the power *x*."
 msgstr "*2*'nin *x* kuvvetine yükseltilmiş halini döndürür."
 
-#: library/math.rst:384
+#: library/math.rst:387
 #, fuzzy
 msgid ""
 "Return *e* raised to the power *x*, minus 1.  Here *e* is the base of "
@@ -655,13 +653,13 @@ msgstr ""
 "Loss_of_significance>`_\\ neden olabilir; :func:`expm1` fonksiyonu bu "
 "miktarı tam hassasiyetle hesaplamak için bir yol sağlar::"
 
-#: library/math.rst:401
+#: library/math.rst:404
 msgid "With one argument, return the natural logarithm of *x* (to base *e*)."
 msgstr ""
 "Bir bağımsız değişkenle, *x*'in doğal logaritmasını döndürür (*e* tabanına "
 "göre)."
 
-#: library/math.rst:403
+#: library/math.rst:406
 msgid ""
 "With two arguments, return the logarithm of *x* to the given *base*, "
 "calculated as ``log(x)/log(base)``."
@@ -669,7 +667,7 @@ msgstr ""
 "İki bağımsız değişkenle, ``log(x)/log(taban)`` şeklinde hesaplanan *x* "
 "değerinin verilen *taban* değerine göre logaritmasını döndürür."
 
-#: library/math.rst:409
+#: library/math.rst:412
 msgid ""
 "Return the natural logarithm of *1+x* (base *e*). The result is calculated "
 "in a way which is accurate for *x* near zero."
@@ -677,7 +675,7 @@ msgstr ""
 "*1+x*'in (*e* tabanı) doğal logaritmasını döndürür. Sonuç, sıfıra yakın *x* "
 "için doğru olacak şekilde hesaplanır."
 
-#: library/math.rst:415
+#: library/math.rst:418
 msgid ""
 "Return the base-2 logarithm of *x*. This is usually more accurate than "
 "``log(x, 2)``."
@@ -685,7 +683,7 @@ msgstr ""
 "x*'in 2 taban logaritmasını döndürür. Bu genellikle ``log(x, 2)`` değerinden "
 "daha doğrudur."
 
-#: library/math.rst:422
+#: library/math.rst:425
 msgid ""
 ":meth:`int.bit_length` returns the number of bits necessary to represent an "
 "integer in binary, excluding the sign and leading zeros."
@@ -693,7 +691,7 @@ msgstr ""
 ":meth:`int.bit_length`, işaret ve baştaki sıfırlar hariç olmak üzere, bir "
 "tamsayıyı ikili olarak temsil etmek için gerekli bit sayısını döndürür."
 
-#: library/math.rst:428
+#: library/math.rst:431
 msgid ""
 "Return the base-10 logarithm of *x*.  This is usually more accurate than "
 "``log(x, 10)``."
@@ -701,7 +699,7 @@ msgstr ""
 "*x* 'in 10 tabanında logaritmasını döndürür.  Bu genellikle ``log(x, 10)`` "
 "'dan daha doğrudur."
 
-#: library/math.rst:434
+#: library/math.rst:437
 msgid ""
 "Return ``x`` raised to the power ``y``.  Exceptional cases follow the IEEE "
 "754 standard as far as possible.  In particular, ``pow(1.0, x)`` and "
@@ -715,7 +713,7 @@ msgstr ""
 "Eğer hem ``x`` hem de ``y`` sonlu ise, ``x`` negatif ise ve ``y`` bir "
 "tamsayı değilse, ``pow(x, y)`` tanımsızdır ve :exc:`ValueError` yükseltir."
 
-#: library/math.rst:441
+#: library/math.rst:444
 msgid ""
 "Unlike the built-in ``**`` operator, :func:`math.pow` converts both its "
 "arguments to type :class:`float`.  Use ``**`` or the built-in :func:`pow` "
@@ -725,7 +723,7 @@ msgstr ""
 "class:`float` türüne dönüştürür.  Tam sayı kuvvetlerini hesaplamak için "
 "``**`` veya yerleşik :func:`pow` fonksiyonunu kullanın."
 
-#: library/math.rst:445
+#: library/math.rst:448
 msgid ""
 "The special cases ``pow(0.0, -inf)`` and ``pow(-0.0, -inf)`` were changed to "
 "return ``inf`` instead of raising :exc:`ValueError`, for consistency with "
@@ -735,15 +733,15 @@ msgstr ""
 "tutarlılık için :exc:`ValueError`` yükseltmek yerine ``inf`` döndürmek üzere "
 "değiştirildi."
 
-#: library/math.rst:453
+#: library/math.rst:456
 msgid "Return the square root of *x*."
 msgstr "*x*'in karekökünü döndürür."
 
-#: library/math.rst:457
+#: library/math.rst:460
 msgid "Trigonometric functions"
 msgstr "Trigonometrik fonksiyonlar"
 
-#: library/math.rst:461
+#: library/math.rst:464
 msgid ""
 "Return the arc cosine of *x*, in radians. The result is between ``0`` and "
 "``pi``."
@@ -751,7 +749,7 @@ msgstr ""
 "Radyan cinsinden *x*'in yay kosinüsünü döndürür. Sonuç ``0`` ile ``pi`` "
 "arasındadır."
 
-#: library/math.rst:467
+#: library/math.rst:470
 msgid ""
 "Return the arc sine of *x*, in radians. The result is between ``-pi/2`` and "
 "``pi/2``."
@@ -759,7 +757,7 @@ msgstr ""
 "Radyan cinsinden *x*'in yay sinüsünü döndürür. Sonuç ``-pi/2`` ile ``pi/2`` "
 "arasındadır."
 
-#: library/math.rst:473
+#: library/math.rst:476
 msgid ""
 "Return the arc tangent of *x*, in radians. The result is between ``-pi/2`` "
 "and ``pi/2``."
@@ -767,7 +765,7 @@ msgstr ""
 "Radyan cinsinden *x*'in yay tanjantını döndürür. Sonuç ``-pi/2`` ile "
 "``pi/2`` arasındadır."
 
-#: library/math.rst:479
+#: library/math.rst:482
 msgid ""
 "Return ``atan(y / x)``, in radians. The result is between ``-pi`` and "
 "``pi``. The vector in the plane from the origin to point ``(x, y)`` makes "
@@ -783,11 +781,11 @@ msgstr ""
 "hesaplayabilir. Örneğin, ``atan(1)`` ve ``atan2(1, 1)`` her ikisi de "
 "``pi/4`` 'tür, ancak ``atan2(-1, -1)`` ise  ``-3*pi/4`` 'tür."
 
-#: library/math.rst:489
+#: library/math.rst:492
 msgid "Return the cosine of *x* radians."
 msgstr "*x* radyanın kosinüsünü döndürür."
 
-#: library/math.rst:494
+#: library/math.rst:497
 msgid ""
 "Return the Euclidean distance between two points *p* and *q*, each given as "
 "a sequence (or iterable) of coordinates.  The two points must have the same "
@@ -797,11 +795,11 @@ msgstr ""
 "*q* noktası arasındaki Öklid mesafesini döndürür.  İki nokta aynı boyuta "
 "sahip olmalıdır."
 
-#: library/math.rst:500
+#: library/math.rst:503
 msgid "sqrt(sum((px - qx) ** 2.0 for px, qx in zip(p, q)))"
 msgstr ""
 
-#: library/math.rst:507
+#: library/math.rst:510
 msgid ""
 "Return the Euclidean norm, ``sqrt(sum(x**2 for x in coordinates))``. This is "
 "the length of the vector from the origin to the point given by the "
@@ -810,7 +808,7 @@ msgstr ""
 "Öklid normunu döndürür, ``sqrt(sum(x**2 for x in coordinates))``. Bu, "
 "vektörün orijinden koordinatlar tarafından verilen noktaya olan uzunluğudur."
 
-#: library/math.rst:511
+#: library/math.rst:514
 msgid ""
 "For a two dimensional point ``(x, y)``, this is equivalent to computing the "
 "hypotenuse of a right triangle using the Pythagorean theorem, ``sqrt(x*x + "
@@ -819,7 +817,7 @@ msgstr ""
 "İki boyutlu bir ``(x, y)`` noktası için bu, Pisagor teoremi ``sqrt(x*x + "
 "y*y)`` kullanılarak bir dik üçgenin hipotenüsünün hesaplanmasına eşdeğerdir."
 
-#: library/math.rst:515
+#: library/math.rst:518
 msgid ""
 "Added support for n-dimensional points. Formerly, only the two dimensional "
 "case was supported."
@@ -827,7 +825,7 @@ msgstr ""
 "n boyutlu noktalar için destek eklendi. Önceden sadece iki boyutlu durum "
 "destekleniyordu."
 
-#: library/math.rst:519
+#: library/math.rst:522
 msgid ""
 "Improved the algorithm's accuracy so that the maximum error is under 1 ulp "
 "(unit in the last place).  More typically, the result is almost always "
@@ -837,31 +835,31 @@ msgstr ""
 "olacak şekilde geliştirildi.  Daha tipik olarak, sonuç neredeyse her zaman "
 "1/2 ulp içinde doğru şekilde yuvarlanır."
 
-#: library/math.rst:527
+#: library/math.rst:530
 msgid "Return the sine of *x* radians."
 msgstr "*x* radyanın sinüsünü döndürür."
 
-#: library/math.rst:532
+#: library/math.rst:535
 msgid "Return the tangent of *x* radians."
 msgstr "*x* radyanın tanjantını döndürür."
 
-#: library/math.rst:536
+#: library/math.rst:539
 msgid "Angular conversion"
 msgstr "Açısal dönüşüm"
 
-#: library/math.rst:540
+#: library/math.rst:543
 msgid "Convert angle *x* from radians to degrees."
 msgstr "Açıyı *x* radyandan dereceye dönüştürür."
 
-#: library/math.rst:545
+#: library/math.rst:548
 msgid "Convert angle *x* from degrees to radians."
 msgstr "Açıyı *x* dereceden radyana dönüştürür."
 
-#: library/math.rst:549
+#: library/math.rst:552
 msgid "Hyperbolic functions"
 msgstr "Hiberbolik fonksiyonlar"
 
-#: library/math.rst:551
+#: library/math.rst:554
 #, fuzzy
 msgid ""
 "`Hyperbolic functions <https://en.wikipedia.org/wiki/Hyperbolic_functions>`_ "
@@ -872,35 +870,35 @@ msgstr ""
 "Hyperbolic_function>`_ trigonometrik fonksiyonların çemberler yerine "
 "hiperbollere dayanan analoglarıdır."
 
-#: library/math.rst:557
+#: library/math.rst:560
 msgid "Return the inverse hyperbolic cosine of *x*."
 msgstr "*x*'in ters hiperbolik kosinüsünü döndürür."
 
-#: library/math.rst:562
+#: library/math.rst:565
 msgid "Return the inverse hyperbolic sine of *x*."
 msgstr "*x*'in ters hiperbolik sinüsünü döndürür."
 
-#: library/math.rst:567
+#: library/math.rst:570
 msgid "Return the inverse hyperbolic tangent of *x*."
 msgstr "*x*'in ters hiperbolik tanjantını döndürür."
 
-#: library/math.rst:572
+#: library/math.rst:575
 msgid "Return the hyperbolic cosine of *x*."
 msgstr "*x*'in hiperbolik kosinüsünü döndürür."
 
-#: library/math.rst:577
+#: library/math.rst:580
 msgid "Return the hyperbolic sine of *x*."
 msgstr "*x*'in hiperbolik sinüsünü döndürür."
 
-#: library/math.rst:582
+#: library/math.rst:585
 msgid "Return the hyperbolic tangent of *x*."
 msgstr "*x*'in hiperbolik tanjantını döndürür."
 
-#: library/math.rst:586
+#: library/math.rst:589
 msgid "Special functions"
 msgstr "Özel fonksiyonlar"
 
-#: library/math.rst:590
+#: library/math.rst:593
 msgid ""
 "Return the `error function <https://en.wikipedia.org/wiki/Error_function>`_ "
 "at *x*."
@@ -908,7 +906,7 @@ msgstr ""
 "*x* adresindeki `hata fonksiyonunu <https://en.wikipedia.org/wiki/"
 "Error_function>`_ döndürür."
 
-#: library/math.rst:593
+#: library/math.rst:596
 #, fuzzy
 msgid ""
 "The :func:`erf` function can be used to compute traditional statistical "
@@ -919,14 +917,14 @@ msgstr ""
 "wikipedia.org/wiki/Normal_distribution#Cumulative_distribution_functions>`_: "
 "gibi geleneksel istatistiksel fonksiyonları hesaplamak için kullanılabilir:"
 
-#: library/math.rst:597
+#: library/math.rst:600
 msgid ""
 "def phi(x):\n"
 "    'Cumulative distribution function for the standard normal distribution'\n"
 "    return (1.0 + erf(x / sqrt(2.0))) / 2.0"
 msgstr ""
 
-#: library/math.rst:606
+#: library/math.rst:609
 msgid ""
 "Return the complementary error function at *x*.  The `complementary error "
 "function <https://en.wikipedia.org/wiki/Error_function>`_ is defined as "
@@ -940,7 +938,7 @@ msgstr ""
 "wikipedia.org/wiki/Loss_of_significance>`_ neden olacağı büyük *x* değerleri "
 "için kullanılır.\\"
 
-#: library/math.rst:617
+#: library/math.rst:620
 msgid ""
 "Return the `Gamma function <https://en.wikipedia.org/wiki/Gamma_function>`_ "
 "at *x*."
@@ -948,26 +946,26 @@ msgstr ""
 "*x* adresindeki `Gamma fonksiyonunu <https://en.wikipedia.org/wiki/"
 "Gamma_function>`_ döndürür."
 
-#: library/math.rst:625
+#: library/math.rst:628
 msgid ""
 "Return the natural logarithm of the absolute value of the Gamma function at "
 "*x*."
 msgstr ""
 "Gama fonksiyonunun *x*'deki mutlak değerinin doğal logaritmasını döndürür."
 
-#: library/math.rst:632
+#: library/math.rst:635
 msgid "Constants"
 msgstr "Sabitler"
 
-#: library/math.rst:636
+#: library/math.rst:639
 msgid "The mathematical constant *π* = 3.141592..., to available precision."
 msgstr "Matematiksel sabit *π* = 3.141592..., mevcut hassasiyete göre."
 
-#: library/math.rst:641
+#: library/math.rst:644
 msgid "The mathematical constant *e* = 2.718281..., to available precision."
 msgstr "Matematiksel sabit *e* = 2,718281..., mevcut hassasiyete göre."
 
-#: library/math.rst:646
+#: library/math.rst:649
 msgid ""
 "The mathematical constant *τ* = 6.283185..., to available precision. Tau is "
 "a circle constant equal to 2\\ *π*, the ratio of a circle's circumference to "
@@ -982,7 +980,7 @@ msgstr ""
 "`Tau gününü <https://tauday.com/>`_ iki kat daha fazla turta yiyerek "
 "kutlamaya başlayın!"
 
-#: library/math.rst:657
+#: library/math.rst:660
 msgid ""
 "A floating-point positive infinity.  (For negative infinity, use ``-math."
 "inf``.)  Equivalent to the output of ``float('inf')``."
@@ -990,7 +988,7 @@ msgstr ""
 "Bir kayan noktalı pozitif sonsuzluk.  (Negatif sonsuzluk için ``-math.inf`` "
 "kullanın.) ``float('inf')`` çıktısına eşdeğerdir."
 
-#: library/math.rst:665
+#: library/math.rst:668
 #, fuzzy
 msgid ""
 "A floating-point \"not a number\" (NaN) value. Equivalent to the output of "
@@ -1008,11 +1006,11 @@ msgstr ""
 "``==`` yerine NaN'leri test etmek için :func:`isnan` fonksiyonunu kullanın. "
 "Örnek::"
 
-#: library/math.rst:685
+#: library/math.rst:688
 msgid "It is now always available."
 msgstr "Artık her zaman kullanılabilir."
 
-#: library/math.rst:691
+#: library/math.rst:694
 msgid ""
 "The :mod:`math` module consists mostly of thin wrappers around the platform "
 "C math library functions.  Behavior in exceptional cases follows Annex F of "
@@ -1038,7 +1036,7 @@ msgstr ""
 "bu kuralın bazı istisnaları vardır, örneğin ``pow(float('nan'), 0.0)`` veya "
 "``hypot(float('nan'), float('inf'))``."
 
-#: library/math.rst:703
+#: library/math.rst:706
 msgid ""
 "Note that Python makes no effort to distinguish signaling NaNs from quiet "
 "NaNs, and behavior for signaling NaNs remains unspecified. Typical behavior "
@@ -1048,10 +1046,24 @@ msgstr ""
 "çaba göstermediğini ve sinyal veren NaN'lar için davranışın belirtilmediğini "
 "unutmayın. Tipik davranış, tüm NaN'lara sessizmiş gibi davranmaktır."
 
-#: library/math.rst:710
+#: library/math.rst:713
 msgid "Module :mod:`cmath`"
 msgstr "Modül :mod:`cmath`"
 
-#: library/math.rst:711
+#: library/math.rst:714
 msgid "Complex number versions of many of these functions."
 msgstr "Bu fonksiyonların çoğunun karmaşık sayı versiyonları."
+
+#~ msgid ""
+#~ "*abs_tol* is the minimum absolute tolerance -- useful for comparisons "
+#~ "near zero. *abs_tol* must be at least zero."
+#~ msgstr ""
+#~ "*abs_tol* minimum mutlak toleranstır -- sıfıra yakın karşılaştırmalar "
+#~ "için kullanışlıdır. *abs_tol* en az sıfır olmalıdır."
+
+#~ msgid ""
+#~ "If no errors occur, the result will be: ``abs(a-b) <= max(rel_tol * "
+#~ "max(abs(a), abs(b)), abs_tol)``."
+#~ msgstr ""
+#~ "Herhangi bir hata oluşmazsa, sonuç şöyle olacaktır: ``abs(a-b) <= "
+#~ "max(rel_tol * max(abs(a), abs(b)), abs_tol)``."
diff --git a/library/multiprocessing.po b/library/multiprocessing.po
index f8e0da255..5ab5e39e0 100644
--- a/library/multiprocessing.po
+++ b/library/multiprocessing.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -412,7 +412,7 @@ msgstr ""
 
 #: library/multiprocessing.rst:285
 msgid ""
-"The :meth:`~Connection.send` method serializes the the object and :meth:"
+"The :meth:`~Connection.send` method serializes the object and :meth:"
 "`~Connection.recv` re-creates the object."
 msgstr ""
 
@@ -1147,9 +1147,9 @@ msgstr ""
 
 #: library/multiprocessing.rst:822
 msgid ""
-"The :meth:`~multiprocessing.Connection.send` method serializes the the "
-"object using :mod:`pickle` and the :meth:`~multiprocessing.Connection.recv` "
-"re-creates the object."
+"The :meth:`~multiprocessing.Connection.send` method serializes the object "
+"using :mod:`pickle` and the :meth:`~multiprocessing.Connection.recv` re-"
+"creates the object."
 msgstr ""
 
 #: library/multiprocessing.rst:827
diff --git a/library/numbers.po b/library/numbers.po
index e531cc38f..e6e0a7aec 100644
--- a/library/numbers.po
+++ b/library/numbers.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -59,50 +59,50 @@ msgstr ""
 msgid "Abstract. Retrieves the imaginary component of this number."
 msgstr ""
 
-#: library/numbers.rst:43
+#: library/numbers.rst:44
 msgid ""
 "Abstract. Returns the complex conjugate. For example, ``(1+3j).conjugate() "
 "== (1-3j)``."
 msgstr ""
 
-#: library/numbers.rst:48
+#: library/numbers.rst:49
 msgid ""
 "To :class:`Complex`, :class:`!Real` adds the operations that work on real "
 "numbers."
 msgstr ""
 
-#: library/numbers.rst:51
+#: library/numbers.rst:52
 msgid ""
 "In short, those are: a conversion to :class:`float`, :func:`math.trunc`, :"
 "func:`round`, :func:`math.floor`, :func:`math.ceil`, :func:`divmod`, ``//``, "
 "``%``, ``<``, ``<=``, ``>``, and ``>=``."
 msgstr ""
 
-#: library/numbers.rst:55
+#: library/numbers.rst:56
 msgid ""
 "Real also provides defaults for :func:`complex`, :attr:`~Complex.real`, :"
 "attr:`~Complex.imag`, and :meth:`~Complex.conjugate`."
 msgstr ""
 
-#: library/numbers.rst:61
+#: library/numbers.rst:62
 msgid ""
 "Subtypes :class:`Real` and adds :attr:`~Rational.numerator` and :attr:"
 "`~Rational.denominator` properties. It also provides a default for :func:"
 "`float`."
 msgstr ""
 
-#: library/numbers.rst:65
+#: library/numbers.rst:66
 msgid ""
 "The :attr:`~Rational.numerator` and :attr:`~Rational.denominator` values "
 "should be instances of :class:`Integral` and should be in lowest terms with :"
 "attr:`~Rational.denominator` positive."
 msgstr ""
 
-#: library/numbers.rst:75
+#: library/numbers.rst:76
 msgid "Abstract."
 msgstr ""
 
-#: library/numbers.rst:80
+#: library/numbers.rst:81
 msgid ""
 "Subtypes :class:`Rational` and adds a conversion to :class:`int`.  Provides "
 "defaults for :func:`float`, :attr:`~Rational.numerator`, and :attr:"
@@ -110,11 +110,11 @@ msgid ""
 "and bit-string operations: ``<<``, ``>>``, ``&``, ``^``, ``|``, ``~``."
 msgstr ""
 
-#: library/numbers.rst:88
+#: library/numbers.rst:89
 msgid "Notes for type implementers"
 msgstr ""
 
-#: library/numbers.rst:90
+#: library/numbers.rst:91
 msgid ""
 "Implementers should be careful to make equal numbers equal and hash them to "
 "the same values. This may be subtle if there are two different extensions of "
@@ -122,7 +122,7 @@ msgid ""
 "`hash` as follows::"
 msgstr ""
 
-#: library/numbers.rst:95
+#: library/numbers.rst:96
 msgid ""
 "def __hash__(self):\n"
 "    if self.denominator == 1:\n"
@@ -137,28 +137,28 @@ msgid ""
 "        return hash((self.numerator, self.denominator))"
 msgstr ""
 
-#: library/numbers.rst:109
+#: library/numbers.rst:110
 msgid "Adding More Numeric ABCs"
 msgstr ""
 
-#: library/numbers.rst:111
+#: library/numbers.rst:112
 msgid ""
 "There are, of course, more possible ABCs for numbers, and this would be a "
 "poor hierarchy if it precluded the possibility of adding those. You can add "
 "``MyFoo`` between :class:`Complex` and :class:`Real` with::"
 msgstr ""
 
-#: library/numbers.rst:116
+#: library/numbers.rst:117
 msgid ""
 "class MyFoo(Complex): ...\n"
 "MyFoo.register(Real)"
 msgstr ""
 
-#: library/numbers.rst:123
+#: library/numbers.rst:124
 msgid "Implementing the arithmetic operations"
 msgstr ""
 
-#: library/numbers.rst:125
+#: library/numbers.rst:126
 msgid ""
 "We want to implement the arithmetic operations so that mixed-mode operations "
 "either call an implementation whose author knew about the types of both "
@@ -167,7 +167,7 @@ msgid ""
 "__add__` and :meth:`~object.__radd__` should be defined as::"
 msgstr ""
 
-#: library/numbers.rst:132
+#: library/numbers.rst:133
 msgid ""
 "class MyIntegral(Integral):\n"
 "\n"
@@ -194,7 +194,7 @@ msgid ""
 "            return NotImplemented"
 msgstr ""
 
-#: library/numbers.rst:157
+#: library/numbers.rst:158
 msgid ""
 "There are 5 different cases for a mixed-type operation on subclasses of :"
 "class:`Complex`. I'll refer to all of the above code that doesn't refer to "
@@ -203,12 +203,12 @@ msgid ""
 "Complex``), and ``b : B <: Complex``. I'll consider ``a + b``:"
 msgstr ""
 
-#: library/numbers.rst:164
+#: library/numbers.rst:165
 msgid ""
 "If ``A`` defines an :meth:`~object.__add__` which accepts ``b``, all is well."
 msgstr ""
 
-#: library/numbers.rst:166
+#: library/numbers.rst:167
 msgid ""
 "If ``A`` falls back to the boilerplate code, and it were to return a value "
 "from :meth:`~object.__add__`, we'd miss the possibility that ``B`` defines a "
@@ -217,26 +217,26 @@ msgid ""
 "meth:`!__add__` at all.)"
 msgstr ""
 
-#: library/numbers.rst:172
+#: library/numbers.rst:173
 msgid ""
 "Then ``B``'s :meth:`~object.__radd__` gets a chance. If it accepts ``a``, "
 "all is well."
 msgstr ""
 
-#: library/numbers.rst:174
+#: library/numbers.rst:175
 msgid ""
 "If it falls back to the boilerplate, there are no more possible methods to "
 "try, so this is where the default implementation should live."
 msgstr ""
 
-#: library/numbers.rst:177
+#: library/numbers.rst:178
 msgid ""
 "If ``B <: A``, Python tries ``B.__radd__`` before ``A.__add__``. This is ok, "
 "because it was implemented with knowledge of ``A``, so it can handle those "
 "instances before delegating to :class:`Complex`."
 msgstr ""
 
-#: library/numbers.rst:182
+#: library/numbers.rst:183
 msgid ""
 "If ``A <: Complex`` and ``B <: Real`` without sharing any other knowledge, "
 "then the appropriate shared operation is the one involving the built in :"
@@ -244,7 +244,7 @@ msgid ""
 "b+a``."
 msgstr ""
 
-#: library/numbers.rst:187
+#: library/numbers.rst:188
 msgid ""
 "Because most of the operations on any given type will be very similar, it "
 "can be useful to define a helper function which generates the forward and "
@@ -252,7 +252,7 @@ msgid ""
 "Fraction` uses::"
 msgstr ""
 
-#: library/numbers.rst:192
+#: library/numbers.rst:193
 msgid ""
 "def _operator_fallbacks(monomorphic_operator, fallback_operator):\n"
 "    def forward(a, b):\n"
diff --git a/library/os.po b/library/os.po
index 1772ec1da..7835563bc 100644
--- a/library/os.po
+++ b/library/os.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -282,34 +282,34 @@ msgid ""
 "Return the filename corresponding to the controlling terminal of the process."
 msgstr ""
 
-#: library/os.rst:322 library/os.rst:358 library/os.rst:376 library/os.rst:398
-#: library/os.rst:434 library/os.rst:462 library/os.rst:491 library/os.rst:512
-#: library/os.rst:533 library/os.rst:579 library/os.rst:593 library/os.rst:639
-#: library/os.rst:661 library/os.rst:687 library/os.rst:703 library/os.rst:719
-#: library/os.rst:735 library/os.rst:826 library/os.rst:974 library/os.rst:1004
-#: library/os.rst:1030 library/os.rst:1074 library/os.rst:1097
-#: library/os.rst:1138 library/os.rst:1161 library/os.rst:1345
-#: library/os.rst:1371 library/os.rst:1396 library/os.rst:1424
-#: library/os.rst:1467 library/os.rst:1493 library/os.rst:1532
-#: library/os.rst:1556 library/os.rst:1628 library/os.rst:1649
-#: library/os.rst:1708 library/os.rst:1726 library/os.rst:1770
-#: library/os.rst:1849 library/os.rst:2021 library/os.rst:2110
-#: library/os.rst:2150 library/os.rst:2181 library/os.rst:2260
-#: library/os.rst:2304 library/os.rst:2462 library/os.rst:2518
-#: library/os.rst:3248 library/os.rst:3405 library/os.rst:3639
-#: library/os.rst:3689 library/os.rst:3752 library/os.rst:3769
-#: library/os.rst:3787 library/os.rst:4001 library/os.rst:4044
-#: library/os.rst:4058 library/os.rst:4072 library/os.rst:4086
-#: library/os.rst:4102 library/os.rst:4116 library/os.rst:4133
-#: library/os.rst:4148 library/os.rst:4204 library/os.rst:4255
+#: library/os.rst:323 library/os.rst:359 library/os.rst:377 library/os.rst:399
+#: library/os.rst:435 library/os.rst:463 library/os.rst:492 library/os.rst:513
+#: library/os.rst:534 library/os.rst:580 library/os.rst:594 library/os.rst:640
+#: library/os.rst:662 library/os.rst:688 library/os.rst:704 library/os.rst:720
+#: library/os.rst:736 library/os.rst:827 library/os.rst:975 library/os.rst:1005
+#: library/os.rst:1031 library/os.rst:1075 library/os.rst:1098
+#: library/os.rst:1139 library/os.rst:1162 library/os.rst:1346
+#: library/os.rst:1372 library/os.rst:1397 library/os.rst:1425
+#: library/os.rst:1468 library/os.rst:1494 library/os.rst:1533
+#: library/os.rst:1557 library/os.rst:1629 library/os.rst:1650
+#: library/os.rst:1709 library/os.rst:1727 library/os.rst:1771
+#: library/os.rst:1850 library/os.rst:2022 library/os.rst:2111
+#: library/os.rst:2151 library/os.rst:2182 library/os.rst:2261
+#: library/os.rst:2305 library/os.rst:2463 library/os.rst:2519
+#: library/os.rst:3249 library/os.rst:3406 library/os.rst:3640
+#: library/os.rst:3690 library/os.rst:3753 library/os.rst:3770
+#: library/os.rst:3788 library/os.rst:4002 library/os.rst:4045
+#: library/os.rst:4059 library/os.rst:4073 library/os.rst:4087
+#: library/os.rst:4103 library/os.rst:4117 library/os.rst:4134
+#: library/os.rst:4149 library/os.rst:4205 library/os.rst:4255
 #: library/os.rst:4278 library/os.rst:4299 library/os.rst:4340
 #: library/os.rst:4451 library/os.rst:4553 library/os.rst:4583
 #: library/os.rst:4640 library/os.rst:4700 library/os.rst:4755
 #: library/os.rst:4816 library/os.rst:4847 library/os.rst:4873
 #: library/os.rst:4898 library/os.rst:4917 library/os.rst:4965
 #: library/os.rst:4992 library/os.rst:5011 library/os.rst:5029
-#: library/os.rst:5047 library/os.rst:5204 library/os.rst:5235
-#: library/os.rst:5367
+#: library/os.rst:5047 library/os.rst:5206 library/os.rst:5237
+#: library/os.rst:5369
 msgid "Availability"
 msgstr ""
 
@@ -438,17 +438,17 @@ msgid ""
 "e.g. :class:`pathlib.PurePath`."
 msgstr ""
 
-#: library/os.rst:304
+#: library/os.rst:305
 msgid "Return the file system path representation of the object."
 msgstr ""
 
-#: library/os.rst:306
+#: library/os.rst:307
 msgid ""
 "The method should only return a :class:`str` or :class:`bytes` object, with "
 "the preference being for :class:`str`."
 msgstr ""
 
-#: library/os.rst:312
+#: library/os.rst:313
 msgid ""
 "Return the value of the environment variable *key* as a string if it exists, "
 "or *default* if it doesn't. *key* is a string. Note that since :func:"
@@ -457,14 +457,14 @@ msgid ""
 "changes."
 msgstr ""
 
-#: library/os.rst:318
+#: library/os.rst:319
 msgid ""
 "On Unix, keys and values are decoded with :func:`sys.getfilesystemencoding` "
 "and ``'surrogateescape'`` error handler. Use :func:`os.getenvb` if you would "
 "like to use a different encoding."
 msgstr ""
 
-#: library/os.rst:327
+#: library/os.rst:328
 msgid ""
 "Return the value of the environment variable *key* as bytes if it exists, or "
 "*default* if it doesn't. *key* must be bytes. Note that since :func:"
@@ -473,13 +473,13 @@ msgid ""
 "environment changes."
 msgstr ""
 
-#: library/os.rst:334
+#: library/os.rst:335
 msgid ""
 ":func:`getenvb` is only available if :const:`supports_bytes_environ` is "
 "``True``."
 msgstr ""
 
-#: library/os.rst:344
+#: library/os.rst:345
 msgid ""
 "Returns the list of directories that will be searched for a named "
 "executable, similar to a shell, when launching a process. *env*, when "
@@ -487,27 +487,27 @@ msgid ""
 "in. By default, when *env* is ``None``, :data:`environ` is used."
 msgstr ""
 
-#: library/os.rst:355
+#: library/os.rst:356
 msgid ""
 "Return the effective group id of the current process.  This corresponds to "
 "the \"set id\" bit on the file being executed in the current process."
 msgstr ""
 
-#: library/os.rst:365
+#: library/os.rst:366
 msgid "Return the current process's effective user id."
 msgstr ""
 
-#: library/os.rst:374
+#: library/os.rst:375
 msgid "Return the real group id of the current process."
 msgstr ""
 
-#: library/os.rst:451 library/os.rst:758
+#: library/os.rst:452 library/os.rst:759
 msgid ""
 "The function is a stub on Emscripten and WASI, see :ref:`wasm-availability` "
 "for more information."
 msgstr ""
 
-#: library/os.rst:384
+#: library/os.rst:385
 msgid ""
 "Return list of group ids that *user* belongs to. If *group* is not in the "
 "list, it is included; typically, *group* is specified as the group ID field "
@@ -515,12 +515,12 @@ msgid ""
 "potentially omitted."
 msgstr ""
 
-#: library/os.rst:396
+#: library/os.rst:397
 msgid ""
 "Return list of supplemental group ids associated with the current process."
 msgstr ""
 
-#: library/os.rst:402
+#: library/os.rst:403
 msgid ""
 "On macOS, :func:`getgroups` behavior differs somewhat from other Unix "
 "platforms. If the Python interpreter was built with a deployment target of "
@@ -537,7 +537,7 @@ msgid ""
 "get_config_var`."
 msgstr ""
 
-#: library/os.rst:419
+#: library/os.rst:420
 msgid ""
 "Return the name of the user logged in on the controlling terminal of the "
 "process.  For most purposes, it is more useful to use :func:`getpass."
@@ -546,32 +546,32 @@ msgid ""
 "getpwuid(os.getuid())[0]`` to get the login name of the current real user id."
 msgstr ""
 
-#: library/os.rst:431
+#: library/os.rst:432
 msgid ""
 "Return the process group id of the process with process id *pid*. If *pid* "
 "is 0, the process group id of the current process is returned."
 msgstr ""
 
-#: library/os.rst:440
+#: library/os.rst:441
 msgid "Return the id of the current process group."
 msgstr ""
 
-#: library/os.rst:449
+#: library/os.rst:450
 msgid "Return the current process id."
 msgstr ""
 
-#: library/os.rst:458
+#: library/os.rst:459
 msgid ""
 "Return the parent's process id.  When the parent process has exited, on Unix "
 "the id returned is the one of the init process (1), on Windows it is still "
 "the same id, which may be already reused by another process."
 msgstr ""
 
-#: library/os.rst:464
+#: library/os.rst:465
 msgid "Added support for Windows."
 msgstr ""
 
-#: library/os.rst:472
+#: library/os.rst:473
 msgid ""
 "Get program scheduling priority.  The value *which* is one of :const:"
 "`PRIO_PROCESS`, :const:`PRIO_PGRP`, or :const:`PRIO_USER`, and *who* is "
@@ -582,42 +582,42 @@ msgid ""
 "user ID of the calling process."
 msgstr ""
 
-#: library/os.rst:501
+#: library/os.rst:502
 msgid ""
 "Parameters for the :func:`getpriority` and :func:`setpriority` functions."
 msgstr ""
 
-#: library/os.rst:509
+#: library/os.rst:510
 msgid ""
 "Return a tuple (ruid, euid, suid) denoting the current process's real, "
 "effective, and saved user ids."
 msgstr ""
 
-#: library/os.rst:519
+#: library/os.rst:520
 msgid ""
 "Return a tuple (rgid, egid, sgid) denoting the current process's real, "
 "effective, and saved group ids."
 msgstr ""
 
-#: library/os.rst:531
+#: library/os.rst:532
 msgid "Return the current process's real user id."
 msgstr ""
 
-#: library/os.rst:541
+#: library/os.rst:542
 msgid ""
 "Call the system initgroups() to initialize the group access list with all of "
 "the groups of which the specified username is a member, plus the specified "
 "group id."
 msgstr ""
 
-#: library/os.rst:554
+#: library/os.rst:555
 msgid ""
 "Set the environment variable named *key* to the string *value*.  Such "
 "changes to the environment affect subprocesses started with :func:`os."
 "system`, :func:`popen` or :func:`fork` and :func:`execv`."
 msgstr ""
 
-#: library/os.rst:558
+#: library/os.rst:559
 msgid ""
 "Assignments to items in :data:`os.environ` are automatically translated into "
 "corresponding calls to :func:`putenv`; however, calls to :func:`putenv` "
@@ -627,35 +627,35 @@ msgid ""
 "in their implementations."
 msgstr ""
 
-#: library/os.rst:566
+#: library/os.rst:567
 msgid ""
 "On some platforms, including FreeBSD and macOS, setting ``environ`` may "
 "cause memory leaks. Refer to the system documentation for :c:func:`!putenv`."
 msgstr ""
 
-#: library/os.rst:569
+#: library/os.rst:570
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``os.putenv`` with arguments "
 "``key``, ``value``."
 msgstr ""
 
-#: library/os.rst:571
+#: library/os.rst:572
 msgid "The function is now always available."
 msgstr ""
 
-#: library/os.rst:577
+#: library/os.rst:578
 msgid "Set the current process's effective group id."
 msgstr ""
 
-#: library/os.rst:584
+#: library/os.rst:585
 msgid "Set the current process's effective user id."
 msgstr ""
 
-#: library/os.rst:591
+#: library/os.rst:592
 msgid "Set the current process' group id."
 msgstr ""
 
-#: library/os.rst:598
+#: library/os.rst:599
 msgid ""
 "Set the list of supplemental group ids associated with the current process "
 "to *groups*. *groups* must be a sequence, and each element must be an "
@@ -663,7 +663,7 @@ msgid ""
 "the superuser."
 msgstr ""
 
-#: library/os.rst:604
+#: library/os.rst:605
 msgid ""
 "On macOS, the length of *groups* may not exceed the system-defined maximum "
 "number of effective group ids, typically 16. See the documentation for :func:"
@@ -671,13 +671,13 @@ msgid ""
 "calling setgroups()."
 msgstr ""
 
-#: library/os.rst:611
+#: library/os.rst:612
 msgid ""
 "Reassociate the current thread with a Linux namespace. See the :manpage:"
 "`setns(2)` and :manpage:`namespaces(7)` man pages for more details."
 msgstr ""
 
-#: library/os.rst:615
+#: library/os.rst:616
 msgid ""
 "If *fd* refers to a :file:`/proc/{pid}/ns/` link, ``setns()`` reassociates "
 "the calling thread with the namespace associated with that link, and "
@@ -686,7 +686,7 @@ msgid ""
 "constraints)."
 msgstr ""
 
-#: library/os.rst:622
+#: library/os.rst:623
 msgid ""
 "Since Linux 5.8, *fd* may refer to a PID file descriptor obtained from :func:"
 "`~os.pidfd_open`. In this case, ``setns()`` reassociates the calling thread "
@@ -697,44 +697,44 @@ msgid ""
 "memberships in unspecified namespaces are left unchanged."
 msgstr ""
 
-#: library/os.rst:631
+#: library/os.rst:632
 msgid ""
 "*fd* can be any object with a :meth:`~io.IOBase.fileno` method, or a raw "
 "file descriptor."
 msgstr ""
 
-#: library/os.rst:633
+#: library/os.rst:634
 msgid ""
 "This example reassociates the thread with the ``init`` process's network "
 "namespace::"
 msgstr ""
 
-#: library/os.rst:635
+#: library/os.rst:636
 msgid ""
 "fd = os.open(\"/proc/1/ns/net\", os.O_RDONLY)\n"
 "os.setns(fd, os.CLONE_NEWNET)\n"
 "os.close(fd)"
 msgstr ""
 
-#: library/os.rst:645
+#: library/os.rst:646
 msgid "The :func:`~os.unshare` function."
 msgstr ""
 
-#: library/os.rst:649
+#: library/os.rst:650
 msgid ""
 "Call the system call :c:func:`!setpgrp` or ``setpgrp(0, 0)`` depending on "
 "which version is implemented (if any).  See the Unix manual for the "
 "semantics."
 msgstr ""
 
-#: library/os.rst:657
+#: library/os.rst:658
 msgid ""
 "Call the system call :c:func:`!setpgid` to set the process group id of the "
 "process with id *pid* to the process group with id *pgrp*.  See the Unix "
 "manual for the semantics."
 msgstr ""
 
-#: library/os.rst:668
+#: library/os.rst:669
 msgid ""
 "Set program scheduling priority. The value *which* is one of :const:"
 "`PRIO_PROCESS`, :const:`PRIO_PGRP`, or :const:`PRIO_USER`, and *who* is "
@@ -747,89 +747,89 @@ msgid ""
 "scheduling."
 msgstr ""
 
-#: library/os.rst:685
+#: library/os.rst:686
 msgid "Set the current process's real and effective group ids."
 msgstr ""
 
-#: library/os.rst:692
+#: library/os.rst:693
 msgid "Set the current process's real, effective, and saved group ids."
 msgstr ""
 
-#: library/os.rst:701
+#: library/os.rst:702
 msgid "Set the current process's real, effective, and saved user ids."
 msgstr ""
 
-#: library/os.rst:710
+#: library/os.rst:711
 msgid "Set the current process's real and effective user ids."
 msgstr ""
 
-#: library/os.rst:717
+#: library/os.rst:718
 msgid ""
 "Call the system call :c:func:`!getsid`.  See the Unix manual for the "
 "semantics."
 msgstr ""
 
-#: library/os.rst:724
+#: library/os.rst:725
 msgid ""
 "Call the system call :c:func:`!setsid`.  See the Unix manual for the "
 "semantics."
 msgstr ""
 
-#: library/os.rst:733
+#: library/os.rst:734
 msgid "Set the current process's user id."
 msgstr ""
 
-#: library/os.rst:741
+#: library/os.rst:742
 msgid ""
 "Return the error message corresponding to the error code in *code*. On "
 "platforms where :c:func:`!strerror` returns ``NULL`` when given an unknown "
 "error number, :exc:`ValueError` is raised."
 msgstr ""
 
-#: library/os.rst:748
+#: library/os.rst:749
 msgid ""
 "``True`` if the native OS type of the environment is bytes (eg. ``False`` on "
 "Windows)."
 msgstr ""
 
-#: library/os.rst:756
+#: library/os.rst:757
 msgid "Set the current numeric umask and return the previous umask."
 msgstr ""
 
-#: library/os.rst:768
+#: library/os.rst:769
 msgid ""
 "Returns information identifying the current operating system. The return "
 "value is an object with five attributes:"
 msgstr ""
 
-#: library/os.rst:771
+#: library/os.rst:772
 msgid ":attr:`sysname` - operating system name"
 msgstr ""
 
-#: library/os.rst:772
+#: library/os.rst:773
 msgid ":attr:`nodename` - name of machine on network (implementation-defined)"
 msgstr ""
 
-#: library/os.rst:773
+#: library/os.rst:774
 msgid ":attr:`release` - operating system release"
 msgstr ""
 
-#: library/os.rst:774
+#: library/os.rst:775
 msgid ":attr:`version` - operating system version"
 msgstr ""
 
-#: library/os.rst:775
+#: library/os.rst:776
 msgid ":attr:`machine` - hardware identifier"
 msgstr ""
 
-#: library/os.rst:777
+#: library/os.rst:778
 msgid ""
 "For backwards compatibility, this object is also iterable, behaving like a "
 "five-tuple containing :attr:`sysname`, :attr:`nodename`, :attr:`release`, :"
 "attr:`version`, and :attr:`machine` in that order."
 msgstr ""
 
-#: library/os.rst:782
+#: library/os.rst:783
 msgid ""
 "Some systems truncate :attr:`nodename` to 8 characters or to the leading "
 "component; a better way to get the hostname is :func:`socket.gethostname`  "
@@ -842,14 +842,14 @@ msgid ""
 "attributes."
 msgstr ""
 
-#: library/os.rst:798
+#: library/os.rst:799
 msgid ""
 "Unset (delete) the environment variable named *key*. Such changes to the "
 "environment affect subprocesses started with :func:`os.system`, :func:"
 "`popen` or :func:`fork` and :func:`execv`."
 msgstr ""
 
-#: library/os.rst:802
+#: library/os.rst:803
 msgid ""
 "Deletion of items in :data:`os.environ` is automatically translated into a "
 "corresponding call to :func:`unsetenv`; however, calls to :func:`unsetenv` "
@@ -857,17 +857,17 @@ msgid ""
 "items of :data:`os.environ`."
 msgstr ""
 
-#: library/os.rst:807
+#: library/os.rst:808
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``os.unsetenv`` with argument "
 "``key``."
 msgstr ""
 
-#: library/os.rst:809
+#: library/os.rst:810
 msgid "The function is now always available and is also available on Windows."
 msgstr ""
 
-#: library/os.rst:815
+#: library/os.rst:816
 msgid ""
 "Disassociate parts of the process execution context, and move them into a "
 "newly created namespace. See the :manpage:`unshare(2)` man page for more "
@@ -878,28 +878,28 @@ msgid ""
 "are made to the calling process's execution context."
 msgstr ""
 
-#: library/os.rst:832
+#: library/os.rst:833
 msgid "The :func:`~os.setns` function."
 msgstr ""
 
-#: library/os.rst:836
+#: library/os.rst:837
 msgid ""
 "Flags to the :func:`unshare` function, if the implementation supports them. "
 "See :manpage:`unshare(2)` in the Linux manual for their exact effect and "
 "availability."
 msgstr ""
 
-#: library/os.rst:859
+#: library/os.rst:860
 msgid "File Object Creation"
 msgstr ""
 
-#: library/os.rst:861
+#: library/os.rst:862
 msgid ""
 "These functions create new :term:`file objects <file object>`.  (See also :"
 "func:`~os.open` for opening file descriptors.)"
 msgstr ""
 
-#: library/os.rst:867
+#: library/os.rst:868
 msgid ""
 "Return an open file object connected to the file descriptor *fd*.  This is "
 "an alias of the :func:`open` built-in function and accepts the same "
@@ -907,16 +907,16 @@ msgid ""
 "must always be an integer."
 msgstr ""
 
-#: library/os.rst:876
+#: library/os.rst:877
 msgid "File Descriptor Operations"
 msgstr ""
 
-#: library/os.rst:878
+#: library/os.rst:879
 msgid ""
 "These functions operate on I/O streams referenced using file descriptors."
 msgstr ""
 
-#: library/os.rst:880
+#: library/os.rst:881
 msgid ""
 "File descriptors are small integers corresponding to a file that has been "
 "opened by the current process.  For example, standard input is usually file "
@@ -926,7 +926,7 @@ msgid ""
 "pipes are also referenced by file descriptors."
 msgstr ""
 
-#: library/os.rst:887
+#: library/os.rst:888
 msgid ""
 "The :meth:`~io.IOBase.fileno` method can be used to obtain the file "
 "descriptor associated with a :term:`file object` when required.  Note that "
@@ -934,11 +934,11 @@ msgid ""
 "ignoring aspects such as internal buffering of data."
 msgstr ""
 
-#: library/os.rst:895
+#: library/os.rst:896
 msgid "Close file descriptor *fd*."
 msgstr ""
 
-#: library/os.rst:899
+#: library/os.rst:900
 msgid ""
 "This function is intended for low-level I/O and must be applied to a file "
 "descriptor as returned by :func:`os.open` or :func:`pipe`.  To close a "
@@ -946,13 +946,13 @@ msgid ""
 "`popen` or :func:`fdopen`, use its :meth:`~io.IOBase.close` method."
 msgstr ""
 
-#: library/os.rst:907
+#: library/os.rst:908
 msgid ""
 "Close all file descriptors from *fd_low* (inclusive) to *fd_high* "
 "(exclusive), ignoring errors. Equivalent to (but much faster than)::"
 msgstr ""
 
-#: library/os.rst:910
+#: library/os.rst:911
 msgid ""
 "for fd in range(fd_low, fd_high):\n"
 "    try:\n"
@@ -961,7 +961,7 @@ msgid ""
 "        pass"
 msgstr ""
 
-#: library/os.rst:919
+#: library/os.rst:920
 msgid ""
 "Copy *count* bytes from file descriptor *src*, starting from offset "
 "*offset_src*, to file descriptor *dst*, starting from offset *offset_dst*. "
@@ -969,14 +969,14 @@ msgid ""
 "respectively for *offset_dst*."
 msgstr ""
 
-#: library/os.rst:924
+#: library/os.rst:925
 msgid ""
 "In Linux kernel older than 5.3, the files pointed to by *src* and *dst* must "
 "reside in the same filesystem, otherwise an :exc:`OSError` is raised with :"
 "attr:`~OSError.errno` set to :const:`errno.EXDEV`."
 msgstr ""
 
-#: library/os.rst:928
+#: library/os.rst:929
 msgid ""
 "This copy is done without the additional cost of transferring data from the "
 "kernel to user space and then back into the kernel. Additionally, some "
@@ -986,19 +986,19 @@ msgid ""
 "(in the case of NFS)."
 msgstr ""
 
-#: library/os.rst:935
+#: library/os.rst:936
 msgid ""
 "The function copies bytes between two file descriptors. Text options, like "
 "the encoding and the line ending, are ignored."
 msgstr ""
 
-#: library/os.rst:938
+#: library/os.rst:939
 msgid ""
 "The return value is the amount of bytes copied. This could be less than the "
 "amount requested."
 msgstr ""
 
-#: library/os.rst:943
+#: library/os.rst:944
 msgid ""
 "On Linux, :func:`os.copy_file_range` should not be used for copying a range "
 "of a pseudo file from a special filesystem like procfs and sysfs. It will "
@@ -1006,39 +1006,39 @@ msgid ""
 "known Linux kernel issue."
 msgstr ""
 
-#: library/os.rst:955
+#: library/os.rst:956
 msgid ""
 "Return a string describing the encoding of the device associated with *fd* "
 "if it is connected to a terminal; else return :const:`None`."
 msgstr ""
 
-#: library/os.rst:958
+#: library/os.rst:959
 msgid ""
 "On Unix, if the :ref:`Python UTF-8 Mode <utf8-mode>` is enabled, return "
 "``'UTF-8'`` rather than the device encoding."
 msgstr ""
 
-#: library/os.rst:961
+#: library/os.rst:962
 msgid "On Unix, the function now implements the Python UTF-8 Mode."
 msgstr ""
 
-#: library/os.rst:967
+#: library/os.rst:968
 msgid ""
 "Return a duplicate of file descriptor *fd*. The new file descriptor is :ref:"
 "`non-inheritable <fd_inheritance>`."
 msgstr ""
 
-#: library/os.rst:970
+#: library/os.rst:971
 msgid ""
 "On Windows, when duplicating a standard stream (0: stdin, 1: stdout, 2: "
 "stderr), the new file descriptor is :ref:`inheritable <fd_inheritance>`."
 msgstr ""
 
-#: library/os.rst:1244
+#: library/os.rst:1245
 msgid "The new file descriptor is now non-inheritable."
 msgstr ""
 
-#: library/os.rst:982
+#: library/os.rst:983
 msgid ""
 "Duplicate file descriptor *fd* to *fd2*, closing the latter first if "
 "necessary. Return *fd2*. The new file descriptor is :ref:`inheritable "
@@ -1046,58 +1046,58 @@ msgid ""
 "``False``."
 msgstr ""
 
-#: library/os.rst:989
+#: library/os.rst:990
 msgid "Add the optional *inheritable* parameter."
 msgstr ""
 
-#: library/os.rst:992
+#: library/os.rst:993
 msgid "Return *fd2* on success. Previously, ``None`` was always returned."
 msgstr ""
 
-#: library/os.rst:998
+#: library/os.rst:999
 msgid ""
 "Change the mode of the file given by *fd* to the numeric *mode*.  See the "
 "docs for :func:`chmod` for possible values of *mode*.  As of Python 3.3, "
 "this is equivalent to ``os.chmod(fd, mode)``."
 msgstr ""
 
-#: library/os.rst:2069 library/os.rst:2166
+#: library/os.rst:2070 library/os.rst:2167
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``os.chmod`` with arguments "
 "``path``, ``mode``, ``dir_fd``."
 msgstr ""
 
-#: library/os.rst:1021 library/os.rst:1651 library/os.rst:2095
-#: library/os.rst:3384
+#: library/os.rst:1022 library/os.rst:1652 library/os.rst:2096
+#: library/os.rst:3385
 msgid ""
 "The function is limited on Emscripten and WASI, see :ref:`wasm-availability` "
 "for more information."
 msgstr ""
 
-#: library/os.rst:1012
+#: library/os.rst:1013
 msgid ""
 "Change the owner and group id of the file given by *fd* to the numeric *uid* "
 "and *gid*.  To leave one of the ids unchanged, set it to -1.  See :func:"
 "`chown`.  As of Python 3.3, this is equivalent to ``os.chown(fd, uid, gid)``."
 msgstr ""
 
-#: library/os.rst:2091 library/os.rst:2179
+#: library/os.rst:2092 library/os.rst:2180
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``os.chown`` with arguments "
 "``path``, ``uid``, ``gid``, ``dir_fd``."
 msgstr ""
 
-#: library/os.rst:1027
+#: library/os.rst:1028
 msgid ""
 "Force write of file with filedescriptor *fd* to disk. Does not force update "
 "of metadata."
 msgstr ""
 
-#: library/os.rst:1033
+#: library/os.rst:1034
 msgid "This function is not available on MacOS."
 msgstr ""
 
-#: library/os.rst:1038
+#: library/os.rst:1039
 msgid ""
 "Return system configuration information relevant to an open file. *name* "
 "specifies the configuration value to retrieve; it may be a string which is "
@@ -1108,7 +1108,7 @@ msgid ""
 "included in that mapping, passing an integer for *name* is also accepted."
 msgstr ""
 
-#: library/os.rst:2498
+#: library/os.rst:2499
 msgid ""
 "If *name* is a string and is not known, :exc:`ValueError` is raised.  If a "
 "specific value for *name* is not supported by the host system, even if it is "
@@ -1116,87 +1116,87 @@ msgid ""
 "`errno.EINVAL` for the error number."
 msgstr ""
 
-#: library/os.rst:1051
+#: library/os.rst:1052
 msgid "As of Python 3.3, this is equivalent to ``os.pathconf(fd, name)``."
 msgstr ""
 
-#: library/os.rst:1058
+#: library/os.rst:1059
 msgid ""
 "Get the status of the file descriptor *fd*. Return a :class:`stat_result` "
 "object."
 msgstr ""
 
-#: library/os.rst:1061
+#: library/os.rst:1062
 msgid "As of Python 3.3, this is equivalent to ``os.stat(fd)``."
 msgstr ""
 
-#: library/os.rst:2326
+#: library/os.rst:2327
 msgid "The :func:`.stat` function."
 msgstr ""
 
-#: library/os.rst:1070
+#: library/os.rst:1071
 msgid ""
 "Return information about the filesystem containing the file associated with "
 "file descriptor *fd*, like :func:`statvfs`.  As of Python 3.3, this is "
 "equivalent to ``os.statvfs(fd)``."
 msgstr ""
 
-#: library/os.rst:1079
+#: library/os.rst:1080
 msgid ""
 "Force write of file with filedescriptor *fd* to disk.  On Unix, this calls "
 "the native :c:func:`!fsync` function; on Windows, the MS :c:func:`!_commit` "
 "function."
 msgstr ""
 
-#: library/os.rst:1082
+#: library/os.rst:1083
 msgid ""
 "If you're starting with a buffered Python :term:`file object` *f*, first do "
 "``f.flush()``, and then do ``os.fsync(f.fileno())``, to ensure that all "
 "internal buffers associated with *f* are written to disk."
 msgstr ""
 
-#: library/os.rst:1091
+#: library/os.rst:1092
 msgid ""
 "Truncate the file corresponding to file descriptor *fd*, so that it is at "
 "most *length* bytes in size.  As of Python 3.3, this is equivalent to ``os."
 "truncate(fd, length)``."
 msgstr ""
 
-#: library/os.rst:1095
+#: library/os.rst:1096
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``os.truncate`` with arguments "
 "``fd``, ``length``."
 msgstr ""
 
-#: library/os.rst:3423
+#: library/os.rst:3424
 msgid "Added support for Windows"
 msgstr ""
 
-#: library/os.rst:1105
+#: library/os.rst:1106
 msgid ""
 "Get the blocking mode of the file descriptor: ``False`` if the :data:"
 "`O_NONBLOCK` flag is set, ``True`` if the flag is cleared."
 msgstr ""
 
-#: library/os.rst:1108
+#: library/os.rst:1109
 msgid "See also :func:`set_blocking` and :meth:`socket.socket.setblocking`."
 msgstr ""
 
-#: library/os.rst:1654
+#: library/os.rst:1655
 msgid "On Windows, this function is limited to pipes."
 msgstr ""
 
-#: library/os.rst:1658
+#: library/os.rst:1659
 msgid "Added support for pipes on Windows."
 msgstr ""
 
-#: library/os.rst:1124
+#: library/os.rst:1125
 msgid ""
 "Return ``True`` if the file descriptor *fd* is open and connected to a tty(-"
 "like) device, else ``False``."
 msgstr ""
 
-#: library/os.rst:1130
+#: library/os.rst:1131
 msgid ""
 "Apply, test or remove a POSIX lock on an open file descriptor. *fd* is an "
 "open file descriptor. *cmd* specifies the command to use - one of :data:"
@@ -1204,125 +1204,125 @@ msgid ""
 "specifies the section of the file to lock."
 msgstr ""
 
-#: library/os.rst:1136
+#: library/os.rst:1137
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``os.lockf`` with arguments "
 "``fd``, ``cmd``, ``len``."
 msgstr ""
 
-#: library/os.rst:1148
+#: library/os.rst:1149
 msgid "Flags that specify what action :func:`lockf` will take."
 msgstr ""
 
-#: library/os.rst:1157
+#: library/os.rst:1158
 msgid ""
 "Prepare the tty of which fd is a file descriptor for a new login session. "
 "Make the calling process a session leader; make the tty the controlling tty, "
 "the stdin, the stdout, and the stderr of the calling process; close fd."
 msgstr ""
 
-#: library/os.rst:1168
+#: library/os.rst:1169
 msgid ""
 "Set the current position of file descriptor *fd* to position *pos*, modified "
 "by *whence*, and return the new position in bytes relative to the start of "
 "the file. Valid values for *whence* are:"
 msgstr ""
 
-#: library/os.rst:1173
+#: library/os.rst:1174
 msgid ""
 ":const:`SEEK_SET` or ``0`` -- set *pos* relative to the beginning of the file"
 msgstr ""
 
-#: library/os.rst:1174
+#: library/os.rst:1175
 msgid ""
 ":const:`SEEK_CUR` or ``1`` -- set *pos* relative to the current file position"
 msgstr ""
 
-#: library/os.rst:1175
+#: library/os.rst:1176
 msgid ":const:`SEEK_END` or ``2`` -- set *pos* relative to the end of the file"
 msgstr ""
 
-#: library/os.rst:1176
+#: library/os.rst:1177
 msgid ""
 ":const:`SEEK_HOLE` -- set *pos* to the next data location, relative to *pos*"
 msgstr ""
 
-#: library/os.rst:1177
+#: library/os.rst:1178
 msgid ""
 ":const:`SEEK_DATA` -- set *pos* to the next data hole, relative to *pos*"
 msgstr ""
 
-#: library/os.rst:1181
+#: library/os.rst:1182
 msgid "Add support for :const:`!SEEK_HOLE` and :const:`!SEEK_DATA`."
 msgstr ""
 
-#: library/os.rst:1188
+#: library/os.rst:1189
 msgid ""
 "Parameters to the :func:`lseek` function and the :meth:`~io.IOBase.seek` "
 "method on :term:`file-like objects <file object>`, for whence to adjust the "
 "file position indicator."
 msgstr ""
 
-#: library/os.rst:1192
+#: library/os.rst:1193
 msgid ":const:`SEEK_SET`"
 msgstr ""
 
-#: library/os.rst:1193
+#: library/os.rst:1194
 msgid "Adjust the file position relative to the beginning of the file."
 msgstr ""
 
-#: library/os.rst:1194
+#: library/os.rst:1195
 msgid ":const:`SEEK_CUR`"
 msgstr ""
 
-#: library/os.rst:1195
+#: library/os.rst:1196
 msgid "Adjust the file position relative to the current file position."
 msgstr ""
 
-#: library/os.rst:1196
+#: library/os.rst:1197
 msgid ":const:`SEEK_END`"
 msgstr ""
 
-#: library/os.rst:1197
+#: library/os.rst:1198
 msgid "Adjust the file position relative to the end of the file."
 msgstr ""
 
-#: library/os.rst:1199
+#: library/os.rst:1200
 msgid "Their values are 0, 1, and 2, respectively."
 msgstr ""
 
-#: library/os.rst:1205
+#: library/os.rst:1206
 msgid ""
 "Parameters to the :func:`lseek` function and the :meth:`~io.IOBase.seek` "
 "method on :term:`file-like objects <file object>`, for seeking file data and "
 "holes on sparsely allocated files."
 msgstr ""
 
-#: library/os.rst:1209
+#: library/os.rst:1210
 msgid ":data:`!SEEK_DATA`"
 msgstr ""
 
-#: library/os.rst:1210
+#: library/os.rst:1211
 msgid ""
 "Adjust the file offset to the next location containing data, relative to the "
 "seek position."
 msgstr ""
 
-#: library/os.rst:1213
+#: library/os.rst:1214
 msgid ":data:`!SEEK_HOLE`"
 msgstr ""
 
-#: library/os.rst:1214
+#: library/os.rst:1215
 msgid ""
 "Adjust the file offset to the next location containing a hole, relative to "
 "the seek position. A hole is defined as a sequence of zeros."
 msgstr ""
 
-#: library/os.rst:1220
+#: library/os.rst:1221
 msgid "These operations only make sense for filesystems that support them."
 msgstr ""
 
-#: library/os.rst:1229
+#: library/os.rst:1230
 msgid ""
 "Open the file *path* and set various flags according to *flags* and possibly "
 "its mode according to *mode*.  When computing *mode*, the current umask "
@@ -1330,7 +1330,7 @@ msgid ""
 "file. The new file descriptor is :ref:`non-inheritable <fd_inheritance>`."
 msgstr ""
 
-#: library/os.rst:1234
+#: library/os.rst:1235
 msgid ""
 "For a description of the flag and mode values, see the C run-time "
 "documentation; flag constants (like :const:`O_RDONLY` and :const:`O_WRONLY`) "
@@ -1338,19 +1338,19 @@ msgid ""
 "const:`O_BINARY` is needed to open files in binary mode."
 msgstr ""
 
-#: library/os.rst:1239
+#: library/os.rst:1240
 msgid ""
 "This function can support :ref:`paths relative to directory descriptors "
 "<dir_fd>` with the *dir_fd* parameter."
 msgstr ""
 
-#: library/os.rst:1242
+#: library/os.rst:1243
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``open`` with arguments ``path``, "
 "``mode``, ``flags``."
 msgstr ""
 
-#: library/os.rst:1249
+#: library/os.rst:1250
 msgid ""
 "This function is intended for low-level I/O.  For normal usage, use the "
 "built-in function :func:`open`, which returns a :term:`file object` with :"
@@ -1358,27 +1358,27 @@ msgid ""
 "a file descriptor in a file object, use :func:`fdopen`."
 msgstr ""
 
-#: library/os.rst:2331 library/os.rst:2442 library/os.rst:2545
-#: library/os.rst:2682 library/os.rst:3439
+#: library/os.rst:2332 library/os.rst:2443 library/os.rst:2546
+#: library/os.rst:2683 library/os.rst:3440
 msgid "Added the *dir_fd* parameter."
 msgstr ""
 
-#: library/os.rst:1576 library/os.rst:4798
+#: library/os.rst:1577 library/os.rst:4798
 msgid ""
 "If the system call is interrupted and the signal handler does not raise an "
 "exception, the function now retries the system call instead of raising an :"
 "exc:`InterruptedError` exception (see :pep:`475` for the rationale)."
 msgstr ""
 
-#: library/os.rst:1963 library/os.rst:2026 library/os.rst:2112
-#: library/os.rst:2170 library/os.rst:2242 library/os.rst:2374
-#: library/os.rst:2445 library/os.rst:2508 library/os.rst:2597
-#: library/os.rst:2975 library/os.rst:3426 library/os.rst:3482
-#: library/os.rst:3643 library/os.rst:4007 library/os.rst:4560
+#: library/os.rst:1964 library/os.rst:2027 library/os.rst:2113
+#: library/os.rst:2171 library/os.rst:2243 library/os.rst:2375
+#: library/os.rst:2446 library/os.rst:2509 library/os.rst:2598
+#: library/os.rst:2976 library/os.rst:3427 library/os.rst:3483
+#: library/os.rst:3644 library/os.rst:4008 library/os.rst:4560
 msgid "Accepts a :term:`path-like object`."
 msgstr ""
 
-#: library/os.rst:1265
+#: library/os.rst:1266
 msgid ""
 "The following constants are options for the *flags* parameter to the :func:"
 "`~os.open` function.  They can be combined using the bitwise OR operator ``|"
@@ -1388,45 +1388,45 @@ msgid ""
 "on Windows."
 msgstr ""
 
-#: library/os.rst:1280
+#: library/os.rst:1281
 msgid "The above constants are available on Unix and Windows."
 msgstr ""
 
-#: library/os.rst:1291
+#: library/os.rst:1292
 msgid "The above constants are only available on Unix."
 msgstr ""
 
-#: library/os.rst:1293
+#: library/os.rst:1294
 msgid "Add :data:`O_CLOEXEC` constant."
 msgstr ""
 
-#: library/os.rst:1304
+#: library/os.rst:1305
 msgid "The above constants are only available on Windows."
 msgstr ""
 
-#: library/os.rst:1311
+#: library/os.rst:1312
 msgid "The above constants are only available on macOS."
 msgstr ""
 
-#: library/os.rst:1313
+#: library/os.rst:1314
 msgid ""
 "Add :data:`O_EVTONLY`, :data:`O_FSYNC`, :data:`O_SYMLINK` and :data:"
 "`O_NOFOLLOW_ANY` constants."
 msgstr ""
 
-#: library/os.rst:1327
+#: library/os.rst:1328
 msgid ""
 "The above constants are extensions and not present if they are not defined "
 "by the C library."
 msgstr ""
 
-#: library/os.rst:1330
+#: library/os.rst:1331
 msgid ""
 "Add :data:`O_PATH` on systems that support it. Add :data:`O_TMPFILE`, only "
 "available on Linux Kernel 3.11   or newer."
 msgstr ""
 
-#: library/os.rst:1340
+#: library/os.rst:1341
 msgid ""
 "Open a new pseudo-terminal pair. Return a pair of file descriptors "
 "``(master, slave)`` for the pty and the tty, respectively. The new file "
@@ -1434,18 +1434,18 @@ msgid ""
 "more portable approach, use the :mod:`pty` module."
 msgstr ""
 
-#: library/os.rst:1359
+#: library/os.rst:1360
 msgid "The new file descriptors are now non-inheritable."
 msgstr ""
 
-#: library/os.rst:1353
+#: library/os.rst:1354
 msgid ""
 "Create a pipe.  Return a pair of file descriptors ``(r, w)`` usable for "
 "reading and writing, respectively. The new file descriptor is :ref:`non-"
 "inheritable <fd_inheritance>`."
 msgstr ""
 
-#: library/os.rst:1365
+#: library/os.rst:1366
 msgid ""
 "Create a pipe with *flags* set atomically. *flags* can be constructed by "
 "ORing together one or more of these values: :data:`O_NONBLOCK`, :data:"
@@ -1453,13 +1453,13 @@ msgid ""
 "and writing, respectively."
 msgstr ""
 
-#: library/os.rst:1378
+#: library/os.rst:1379
 msgid ""
 "Ensures that enough disk space is allocated for the file specified by *fd* "
 "starting from *offset* and continuing for *len* bytes."
 msgstr ""
 
-#: library/os.rst:1388
+#: library/os.rst:1389
 msgid ""
 "Announces an intention to access data in a specific pattern thus allowing "
 "the kernel to make optimizations. The advice applies to the region of the "
@@ -1470,25 +1470,25 @@ msgid ""
 "`POSIX_FADV_DONTNEED`."
 msgstr ""
 
-#: library/os.rst:1408
+#: library/os.rst:1409
 msgid ""
 "Flags that can be used in *advice* in :func:`posix_fadvise` that specify the "
 "access pattern that is likely to be used."
 msgstr ""
 
-#: library/os.rst:1418
+#: library/os.rst:1419
 msgid ""
 "Read at most *n* bytes from file descriptor *fd* at a position of *offset*, "
 "leaving the file offset unchanged."
 msgstr ""
 
-#: library/os.rst:1565
+#: library/os.rst:1566
 msgid ""
 "Return a bytestring containing the bytes read. If the end of the file "
 "referred to by *fd* has been reached, an empty bytes object is returned."
 msgstr ""
 
-#: library/os.rst:1431
+#: library/os.rst:1432
 msgid ""
 "Read from a file descriptor *fd* at a position of *offset* into mutable :"
 "term:`bytes-like objects <bytes-like object>` *buffers*, leaving the file "
@@ -1496,77 +1496,77 @@ msgid ""
 "move on to the next buffer in the sequence to hold the rest of the data."
 msgstr ""
 
-#: library/os.rst:1506
+#: library/os.rst:1507
 msgid ""
 "The flags argument contains a bitwise OR of zero or more of the following "
 "flags:"
 msgstr ""
 
-#: library/os.rst:1439
+#: library/os.rst:1440
 msgid ":data:`RWF_HIPRI`"
 msgstr ""
 
-#: library/os.rst:1440
+#: library/os.rst:1441
 msgid ":data:`RWF_NOWAIT`"
 msgstr ""
 
-#: library/os.rst:1702
+#: library/os.rst:1703
 msgid ""
 "Return the total number of bytes actually read which can be less than the "
 "total capacity of all the objects."
 msgstr ""
 
-#: library/os.rst:1515 library/os.rst:1767
+#: library/os.rst:1516 library/os.rst:1768
 msgid ""
 "The operating system may set a limit (:func:`sysconf` value "
 "``'SC_IOV_MAX'``) on the number of buffers that can be used."
 msgstr ""
 
-#: library/os.rst:1448
+#: library/os.rst:1449
 msgid "Combine the functionality of :func:`os.readv` and :func:`os.pread`."
 msgstr ""
 
-#: library/os.rst:1522
+#: library/os.rst:1523
 msgid "Using flags requires Linux >= 4.6."
 msgstr ""
 
-#: library/os.rst:1459
+#: library/os.rst:1460
 msgid ""
 "Do not wait for data which is not immediately available. If this flag is "
 "specified, the system call will return instantly if it would have to read "
 "data from the backing storage or wait for a lock."
 msgstr ""
 
-#: library/os.rst:1463
+#: library/os.rst:1464
 msgid ""
 "If some data was successfully read, it will return the number of bytes read. "
 "If no bytes were read, it will return ``-1`` and set errno to :const:`errno."
 "EAGAIN`."
 msgstr ""
 
-#: library/os.rst:1474
+#: library/os.rst:1475
 msgid ""
 "High priority read/write. Allows block-based filesystems to use polling of "
 "the device, which provides lower latency, but may use additional resources."
 msgstr ""
 
-#: library/os.rst:1478
+#: library/os.rst:1479
 msgid ""
 "Currently, on Linux, this feature is usable only on a file descriptor opened "
 "using the :data:`O_DIRECT` flag."
 msgstr ""
 
-#: library/os.rst:1488
+#: library/os.rst:1489
 msgid ""
 "Write the bytestring in *str* to file descriptor *fd* at position of "
 "*offset*, leaving the file offset unchanged."
 msgstr ""
 
-#: library/os.rst:1742
+#: library/os.rst:1743
 msgid "Return the number of bytes actually written."
 msgstr ""
 
-#: library/os.rst:1500
+#: library/os.rst:1501
 msgid ""
 "Write the *buffers* contents to file descriptor *fd* at an offset *offset*, "
 "leaving the file offset unchanged.  *buffers* must be a sequence of :term:"
@@ -1575,39 +1575,39 @@ msgid ""
 "the second, and so on."
 msgstr ""
 
-#: library/os.rst:1509
+#: library/os.rst:1510
 msgid ":data:`RWF_DSYNC`"
 msgstr ""
 
-#: library/os.rst:1510
+#: library/os.rst:1511
 msgid ":data:`RWF_SYNC`"
 msgstr ""
 
-#: library/os.rst:1511
+#: library/os.rst:1512
 msgid ":data:`RWF_APPEND`"
 msgstr ""
 
-#: library/os.rst:1513
+#: library/os.rst:1514
 msgid "Return the total number of bytes actually written."
 msgstr ""
 
-#: library/os.rst:1518
+#: library/os.rst:1519
 msgid "Combine the functionality of :func:`os.writev` and :func:`os.pwrite`."
 msgstr ""
 
-#: library/os.rst:1529
+#: library/os.rst:1530
 msgid ""
 "Provide a per-write equivalent of the :data:`O_DSYNC` :func:`os.open` flag. "
 "This flag effect applies only to the data range written by the system call."
 msgstr ""
 
-#: library/os.rst:1539
+#: library/os.rst:1540
 msgid ""
 "Provide a per-write equivalent of the :data:`O_SYNC` :func:`os.open` flag. "
 "This flag effect applies only to the data range written by the system call."
 msgstr ""
 
-#: library/os.rst:1549
+#: library/os.rst:1550
 msgid ""
 "Provide a per-write equivalent of the :data:`O_APPEND` :func:`os.open` flag. "
 "This flag is meaningful only for :func:`os.pwritev`, and its effect applies "
@@ -1617,11 +1617,11 @@ msgid ""
 "*offset* is updated."
 msgstr ""
 
-#: library/os.rst:1563
+#: library/os.rst:1564
 msgid "Read at most *n* bytes from file descriptor *fd*."
 msgstr ""
 
-#: library/os.rst:1570
+#: library/os.rst:1571
 msgid ""
 "This function is intended for low-level I/O and must be applied to a file "
 "descriptor as returned by :func:`os.open` or :func:`pipe`.  To read a \"file "
@@ -1630,26 +1630,26 @@ msgid ""
 "`~file.readline` methods."
 msgstr ""
 
-#: library/os.rst:1585
+#: library/os.rst:1586
 msgid ""
 "Copy *count* bytes from file descriptor *in_fd* to file descriptor *out_fd* "
 "starting at *offset*. Return the number of bytes sent. When EOF is reached "
 "return ``0``."
 msgstr ""
 
-#: library/os.rst:1589
+#: library/os.rst:1590
 msgid ""
 "The first function notation is supported by all platforms that define :func:"
 "`sendfile`."
 msgstr ""
 
-#: library/os.rst:1592
+#: library/os.rst:1593
 msgid ""
 "On Linux, if *offset* is given as ``None``, the bytes are read from the "
 "current position of *in_fd* and the position of *in_fd* is updated."
 msgstr ""
 
-#: library/os.rst:1595
+#: library/os.rst:1596
 msgid ""
 "The second case may be used on macOS and FreeBSD where *headers* and "
 "*trailers* are arbitrary sequences of buffers that are written before and "
@@ -1657,58 +1657,58 @@ msgid ""
 "case."
 msgstr ""
 
-#: library/os.rst:1599
+#: library/os.rst:1600
 msgid ""
 "On macOS and FreeBSD, a value of ``0`` for *count* specifies to send until "
 "the end of *in_fd* is reached."
 msgstr ""
 
-#: library/os.rst:1602
+#: library/os.rst:1603
 msgid ""
 "All platforms support sockets as *out_fd* file descriptor, and some "
 "platforms allow other types (e.g. regular file, pipe) as well."
 msgstr ""
 
-#: library/os.rst:1605
+#: library/os.rst:1606
 msgid ""
 "Cross-platform applications should not use *headers*, *trailers* and *flags* "
 "arguments."
 msgstr ""
 
-#: library/os.rst:1612
+#: library/os.rst:1613
 msgid ""
 "For a higher-level wrapper of :func:`sendfile`, see :meth:`socket.socket."
 "sendfile`."
 msgstr ""
 
-#: library/os.rst:1617
+#: library/os.rst:1618
 msgid "Parameters *out* and *in* was renamed to *out_fd* and *in_fd*."
 msgstr ""
 
-#: library/os.rst:1625
+#: library/os.rst:1626
 msgid ""
 "Parameters to the :func:`sendfile` function, if the implementation supports "
 "them."
 msgstr ""
 
-#: library/os.rst:1634
+#: library/os.rst:1635
 msgid ""
 "Parameter to the :func:`sendfile` function, if the implementation supports "
 "it. The data won't be cached in the virtual memory and will be freed "
 "afterwards."
 msgstr ""
 
-#: library/os.rst:1644
+#: library/os.rst:1645
 msgid ""
 "Set the blocking mode of the specified file descriptor. Set the :data:"
 "`O_NONBLOCK` flag if blocking is ``False``, clear the flag otherwise."
 msgstr ""
 
-#: library/os.rst:1647
+#: library/os.rst:1648
 msgid "See also :func:`get_blocking` and :meth:`socket.socket.setblocking`."
 msgstr ""
 
-#: library/os.rst:1664
+#: library/os.rst:1665
 msgid ""
 "Transfer *count* bytes from file descriptor *src*, starting from offset "
 "*offset_src*, to file descriptor *dst*, starting from offset *offset_dst*. "
@@ -1720,7 +1720,7 @@ msgid ""
 "`~OSError.errno` set to :const:`errno.EXDEV`."
 msgstr ""
 
-#: library/os.rst:1673
+#: library/os.rst:1674
 msgid ""
 "This copy is done without the additional cost of transferring data from the "
 "kernel to user space and then back into the kernel. Additionally, some "
@@ -1728,7 +1728,7 @@ msgid ""
 "files are opened as binary."
 msgstr ""
 
-#: library/os.rst:1678
+#: library/os.rst:1679
 msgid ""
 "Upon successful completion, returns the number of bytes spliced to or from "
 "the pipe. A return value of 0 means end of input. If *src* refers to a pipe, "
@@ -1737,7 +1737,7 @@ msgid ""
 "the pipe."
 msgstr ""
 
-#: library/os.rst:1697
+#: library/os.rst:1698
 msgid ""
 "Read from a file descriptor *fd* into a number of mutable :term:`bytes-like "
 "objects <bytes-like object>` *buffers*. Transfer data into each buffer until "
@@ -1745,30 +1745,30 @@ msgid ""
 "rest of the data."
 msgstr ""
 
-#: library/os.rst:1715
+#: library/os.rst:1716
 msgid ""
 "Return the process group associated with the terminal given by *fd* (an open "
 "file descriptor as returned by :func:`os.open`)."
 msgstr ""
 
-#: library/os.rst:1723
+#: library/os.rst:1724
 msgid ""
 "Set the process group associated with the terminal given by *fd* (an open "
 "file descriptor as returned by :func:`os.open`) to *pg*."
 msgstr ""
 
-#: library/os.rst:1731
+#: library/os.rst:1732
 msgid ""
 "Return a string which specifies the terminal device associated with file "
 "descriptor *fd*.  If *fd* is not associated with a terminal device, an "
 "exception is raised."
 msgstr ""
 
-#: library/os.rst:1740
+#: library/os.rst:1741
 msgid "Write the bytestring in *str* to file descriptor *fd*."
 msgstr ""
 
-#: library/os.rst:1746
+#: library/os.rst:1747
 msgid ""
 "This function is intended for low-level I/O and must be applied to a file "
 "descriptor as returned by :func:`os.open` or :func:`pipe`.  To write a "
@@ -1777,7 +1777,7 @@ msgid ""
 "its :meth:`~file.write` method."
 msgstr ""
 
-#: library/os.rst:1760
+#: library/os.rst:1761
 msgid ""
 "Write the contents of *buffers* to file descriptor *fd*. *buffers* must be a "
 "sequence of :term:`bytes-like objects <bytes-like object>`. Buffers are "
@@ -1785,70 +1785,70 @@ msgid ""
 "before proceeding to the second, and so on."
 msgstr ""
 
-#: library/os.rst:1765
+#: library/os.rst:1766
 msgid "Returns the total number of bytes actually written."
 msgstr ""
 
-#: library/os.rst:1778
+#: library/os.rst:1779
 msgid "Querying the size of a terminal"
 msgstr ""
 
-#: library/os.rst:1784
+#: library/os.rst:1785
 msgid ""
 "Return the size of the terminal window as ``(columns, lines)``, tuple of "
 "type :class:`terminal_size`."
 msgstr ""
 
-#: library/os.rst:1787
+#: library/os.rst:1788
 msgid ""
 "The optional argument ``fd`` (default ``STDOUT_FILENO``, or standard output) "
 "specifies which file descriptor should be queried."
 msgstr ""
 
-#: library/os.rst:1790
+#: library/os.rst:1791
 msgid ""
 "If the file descriptor is not connected to a terminal, an :exc:`OSError` is "
 "raised."
 msgstr ""
 
-#: library/os.rst:1793
+#: library/os.rst:1794
 msgid ""
 ":func:`shutil.get_terminal_size` is the high-level function which should "
 "normally be used, ``os.get_terminal_size`` is the low-level implementation."
 msgstr ""
 
-#: library/os.rst:1801
+#: library/os.rst:1802
 msgid ""
 "A subclass of tuple, holding ``(columns, lines)`` of the terminal window "
 "size."
 msgstr ""
 
-#: library/os.rst:1805
+#: library/os.rst:1806
 msgid "Width of the terminal window in characters."
 msgstr ""
 
-#: library/os.rst:1809
+#: library/os.rst:1810
 msgid "Height of the terminal window in characters."
 msgstr ""
 
-#: library/os.rst:1815
+#: library/os.rst:1816
 msgid "Inheritance of File Descriptors"
 msgstr ""
 
-#: library/os.rst:1819
+#: library/os.rst:1820
 msgid ""
 "A file descriptor has an \"inheritable\" flag which indicates if the file "
 "descriptor can be inherited by child processes.  Since Python 3.4, file "
 "descriptors created by Python are non-inheritable by default."
 msgstr ""
 
-#: library/os.rst:1823
+#: library/os.rst:1824
 msgid ""
 "On UNIX, non-inheritable file descriptors are closed in child processes at "
 "the execution of a new program, other file descriptors are inherited."
 msgstr ""
 
-#: library/os.rst:1826
+#: library/os.rst:1827
 msgid ""
 "On Windows, non-inheritable handles and file descriptors are closed in child "
 "processes, except for standard streams (file descriptors 0, 1 and 2: stdin, "
@@ -1859,40 +1859,40 @@ msgid ""
 "only inherited if the *close_fds* parameter is ``False``."
 msgstr ""
 
-#: library/os.rst:1834
+#: library/os.rst:1835
 msgid ""
 "On WebAssembly platforms ``wasm32-emscripten`` and ``wasm32-wasi``, the file "
 "descriptor cannot be modified."
 msgstr ""
 
-#: library/os.rst:1839
+#: library/os.rst:1840
 msgid ""
 "Get the \"inheritable\" flag of the specified file descriptor (a boolean)."
 msgstr ""
 
-#: library/os.rst:1843
+#: library/os.rst:1844
 msgid "Set the \"inheritable\" flag of the specified file descriptor."
 msgstr ""
 
-#: library/os.rst:1847
+#: library/os.rst:1848
 msgid "Get the \"inheritable\" flag of the specified handle (a boolean)."
 msgstr ""
 
-#: library/os.rst:1853
+#: library/os.rst:1854
 msgid "Set the \"inheritable\" flag of the specified handle."
 msgstr ""
 
-#: library/os.rst:1861
+#: library/os.rst:1862
 msgid "Files and Directories"
 msgstr ""
 
-#: library/os.rst:1863
+#: library/os.rst:1864
 msgid ""
 "On some Unix platforms, many of these functions support one or more of these "
 "features:"
 msgstr ""
 
-#: library/os.rst:1868
+#: library/os.rst:1869
 msgid ""
 "**specifying a file descriptor:** Normally the *path* argument provided to "
 "functions in the :mod:`os` module must be a string specifying a file path.  "
@@ -1903,7 +1903,7 @@ msgid ""
 "``chdir``).)"
 msgstr ""
 
-#: library/os.rst:1876
+#: library/os.rst:1877
 msgid ""
 "You can check whether or not *path* can be specified as a file descriptor "
 "for a particular function on your platform using :data:`os.supports_fd`. If "
@@ -1911,13 +1911,13 @@ msgid ""
 "`NotImplementedError`."
 msgstr ""
 
-#: library/os.rst:1881
+#: library/os.rst:1882
 msgid ""
 "If the function also supports *dir_fd* or *follow_symlinks* arguments, it's "
 "an error to specify one of those when supplying *path* as a file descriptor."
 msgstr ""
 
-#: library/os.rst:1886
+#: library/os.rst:1887
 msgid ""
 "**paths relative to directory descriptors:** If *dir_fd* is not ``None``, it "
 "should be a file descriptor referring to a directory, and the path to "
@@ -1928,14 +1928,14 @@ msgid ""
 "``access``)."
 msgstr ""
 
-#: library/os.rst:1893
+#: library/os.rst:1894
 msgid ""
 "You can check whether or not *dir_fd* is supported for a particular function "
 "on your platform using :data:`os.supports_dir_fd`.  If it's unavailable, "
 "using it will raise a :exc:`NotImplementedError`."
 msgstr ""
 
-#: library/os.rst:1899
+#: library/os.rst:1900
 msgid ""
 "**not following symlinks:** If *follow_symlinks* is ``False``, and the last "
 "element of the path to operate on is a symbolic link, the function will "
@@ -1944,14 +1944,14 @@ msgid ""
 "function.)"
 msgstr ""
 
-#: library/os.rst:1905
+#: library/os.rst:1906
 msgid ""
 "You can check whether or not *follow_symlinks* is supported for a particular "
 "function on your platform using :data:`os.supports_follow_symlinks`. If it's "
 "unavailable, using it will raise a :exc:`NotImplementedError`."
 msgstr ""
 
-#: library/os.rst:1913
+#: library/os.rst:1914
 msgid ""
 "Use the real uid/gid to test for access to *path*.  Note that most "
 "operations will use the effective uid/gid, therefore this routine can be "
@@ -1963,13 +1963,13 @@ msgid ""
 "manpage:`access(2)` for more information."
 msgstr ""
 
-#: library/os.rst:1922
+#: library/os.rst:1923
 msgid ""
 "This function can support specifying :ref:`paths relative to directory "
 "descriptors <dir_fd>` and :ref:`not following symlinks <follow_symlinks>`."
 msgstr ""
 
-#: library/os.rst:1925
+#: library/os.rst:1926
 msgid ""
 "If *effective_ids* is ``True``, :func:`access` will perform its access "
 "checks using the effective uid/gid instead of the real uid/gid. "
@@ -1978,7 +1978,7 @@ msgid ""
 "unavailable, using it will raise a :exc:`NotImplementedError`."
 msgstr ""
 
-#: library/os.rst:1933
+#: library/os.rst:1934
 msgid ""
 "Using :func:`access` to check if a user is authorized to e.g. open a file "
 "before actually doing so using :func:`open` creates a security hole, because "
@@ -1987,7 +1987,7 @@ msgid ""
 "For example::"
 msgstr ""
 
-#: library/os.rst:1939
+#: library/os.rst:1940
 msgid ""
 "if os.access(\"myfile\", os.R_OK):\n"
 "    with open(\"myfile\") as fp:\n"
@@ -1995,11 +1995,11 @@ msgid ""
 "return \"some default data\""
 msgstr ""
 
-#: library/os.rst:1944
+#: library/os.rst:1945
 msgid "is better written as::"
 msgstr ""
 
-#: library/os.rst:1946
+#: library/os.rst:1947
 msgid ""
 "try:\n"
 "    fp = open(\"myfile\")\n"
@@ -2010,274 +2010,274 @@ msgid ""
 "        return fp.read()"
 msgstr ""
 
-#: library/os.rst:1956
+#: library/os.rst:1957
 msgid ""
 "I/O operations may fail even when :func:`access` indicates that they would "
 "succeed, particularly for operations on network filesystems which may have "
 "permissions semantics beyond the usual POSIX permission-bit model."
 msgstr ""
 
-#: library/os.rst:1960
+#: library/os.rst:1961
 msgid "Added the *dir_fd*, *effective_ids*, and *follow_symlinks* parameters."
 msgstr ""
 
-#: library/os.rst:1972
+#: library/os.rst:1973
 msgid ""
 "Values to pass as the *mode* parameter of :func:`access` to test the "
 "existence, readability, writability and executability of *path*, "
 "respectively."
 msgstr ""
 
-#: library/os.rst:1981
+#: library/os.rst:1982
 msgid "Change the current working directory to *path*."
 msgstr ""
 
-#: library/os.rst:1983
+#: library/os.rst:1984
 msgid ""
 "This function can support :ref:`specifying a file descriptor <path_fd>`.  "
 "The descriptor must refer to an opened directory, not an open file."
 msgstr ""
 
-#: library/os.rst:1986
+#: library/os.rst:1987
 msgid ""
 "This function can raise :exc:`OSError` and subclasses such as :exc:"
 "`FileNotFoundError`, :exc:`PermissionError`, and :exc:`NotADirectoryError`."
 msgstr ""
 
-#: library/os.rst:2122
+#: library/os.rst:2123
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``os.chdir`` with argument "
 "``path``."
 msgstr ""
 
-#: library/os.rst:1991
+#: library/os.rst:1992
 msgid ""
 "Added support for specifying *path* as a file descriptor on some platforms."
 msgstr ""
 
-#: library/os.rst:2001
+#: library/os.rst:2002
 msgid ""
 "Set the flags of *path* to the numeric *flags*. *flags* may take a "
 "combination (bitwise OR) of the following values (as defined in the :mod:"
 "`stat` module):"
 msgstr ""
 
-#: library/os.rst:2004
+#: library/os.rst:2005
 msgid ":const:`stat.UF_NODUMP`"
 msgstr ""
 
-#: library/os.rst:2005
+#: library/os.rst:2006
 msgid ":const:`stat.UF_IMMUTABLE`"
 msgstr ""
 
-#: library/os.rst:2006
+#: library/os.rst:2007
 msgid ":const:`stat.UF_APPEND`"
 msgstr ""
 
-#: library/os.rst:2007
+#: library/os.rst:2008
 msgid ":const:`stat.UF_OPAQUE`"
 msgstr ""
 
-#: library/os.rst:2008
+#: library/os.rst:2009
 msgid ":const:`stat.UF_NOUNLINK`"
 msgstr ""
 
-#: library/os.rst:2009
+#: library/os.rst:2010
 msgid ":const:`stat.UF_COMPRESSED`"
 msgstr ""
 
-#: library/os.rst:2010
+#: library/os.rst:2011
 msgid ":const:`stat.UF_HIDDEN`"
 msgstr ""
 
-#: library/os.rst:2011
+#: library/os.rst:2012
 msgid ":const:`stat.SF_ARCHIVED`"
 msgstr ""
 
-#: library/os.rst:2012
+#: library/os.rst:2013
 msgid ":const:`stat.SF_IMMUTABLE`"
 msgstr ""
 
-#: library/os.rst:2013
+#: library/os.rst:2014
 msgid ":const:`stat.SF_APPEND`"
 msgstr ""
 
-#: library/os.rst:2014
+#: library/os.rst:2015
 msgid ":const:`stat.SF_NOUNLINK`"
 msgstr ""
 
-#: library/os.rst:2015
+#: library/os.rst:2016
 msgid ":const:`stat.SF_SNAPSHOT`"
 msgstr ""
 
-#: library/os.rst:2017
+#: library/os.rst:2018
 msgid ""
 "This function can support :ref:`not following symlinks <follow_symlinks>`."
 msgstr ""
 
-#: library/os.rst:2148
+#: library/os.rst:2149
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``os.chflags`` with arguments "
 "``path``, ``flags``."
 msgstr ""
 
-#: library/os.rst:2023
+#: library/os.rst:2024
 msgid "Added the *follow_symlinks* parameter."
 msgstr ""
 
-#: library/os.rst:2032
+#: library/os.rst:2033
 msgid ""
 "Change the mode of *path* to the numeric *mode*. *mode* may take one of the "
 "following values (as defined in the :mod:`stat` module) or bitwise ORed "
 "combinations of them:"
 msgstr ""
 
-#: library/os.rst:2036
+#: library/os.rst:2037
 msgid ":const:`stat.S_ISUID`"
 msgstr ""
 
-#: library/os.rst:2037
+#: library/os.rst:2038
 msgid ":const:`stat.S_ISGID`"
 msgstr ""
 
-#: library/os.rst:2038
+#: library/os.rst:2039
 msgid ":const:`stat.S_ENFMT`"
 msgstr ""
 
-#: library/os.rst:2039
+#: library/os.rst:2040
 msgid ":const:`stat.S_ISVTX`"
 msgstr ""
 
-#: library/os.rst:2040
+#: library/os.rst:2041
 msgid ":const:`stat.S_IREAD`"
 msgstr ""
 
-#: library/os.rst:2041
+#: library/os.rst:2042
 msgid ":const:`stat.S_IWRITE`"
 msgstr ""
 
-#: library/os.rst:2042
+#: library/os.rst:2043
 msgid ":const:`stat.S_IEXEC`"
 msgstr ""
 
-#: library/os.rst:2043
+#: library/os.rst:2044
 msgid ":const:`stat.S_IRWXU`"
 msgstr ""
 
-#: library/os.rst:2044
+#: library/os.rst:2045
 msgid ":const:`stat.S_IRUSR`"
 msgstr ""
 
-#: library/os.rst:2045
+#: library/os.rst:2046
 msgid ":const:`stat.S_IWUSR`"
 msgstr ""
 
-#: library/os.rst:2046
+#: library/os.rst:2047
 msgid ":const:`stat.S_IXUSR`"
 msgstr ""
 
-#: library/os.rst:2047
+#: library/os.rst:2048
 msgid ":const:`stat.S_IRWXG`"
 msgstr ""
 
-#: library/os.rst:2048
+#: library/os.rst:2049
 msgid ":const:`stat.S_IRGRP`"
 msgstr ""
 
-#: library/os.rst:2049
+#: library/os.rst:2050
 msgid ":const:`stat.S_IWGRP`"
 msgstr ""
 
-#: library/os.rst:2050
+#: library/os.rst:2051
 msgid ":const:`stat.S_IXGRP`"
 msgstr ""
 
-#: library/os.rst:2051
+#: library/os.rst:2052
 msgid ":const:`stat.S_IRWXO`"
 msgstr ""
 
-#: library/os.rst:2052
+#: library/os.rst:2053
 msgid ":const:`stat.S_IROTH`"
 msgstr ""
 
-#: library/os.rst:2053
+#: library/os.rst:2054
 msgid ":const:`stat.S_IWOTH`"
 msgstr ""
 
-#: library/os.rst:2054
+#: library/os.rst:2055
 msgid ":const:`stat.S_IXOTH`"
 msgstr ""
 
-#: library/os.rst:2084 library/os.rst:3472
+#: library/os.rst:2085 library/os.rst:3473
 msgid ""
 "This function can support :ref:`specifying a file descriptor <path_fd>`, :"
 "ref:`paths relative to directory descriptors <dir_fd>` and :ref:`not "
 "following symlinks <follow_symlinks>`."
 msgstr ""
 
-#: library/os.rst:2062
+#: library/os.rst:2063
 msgid ""
 "Although Windows supports :func:`chmod`, you can only set the file's read-"
 "only flag with it (via the ``stat.S_IWRITE`` and ``stat.S_IREAD`` constants "
 "or a corresponding integer value).  All other bits are ignored."
 msgstr ""
 
-#: library/os.rst:2098
+#: library/os.rst:2099
 msgid ""
 "Added support for specifying *path* as an open file descriptor, and the "
 "*dir_fd* and *follow_symlinks* arguments."
 msgstr ""
 
-#: library/os.rst:2081
+#: library/os.rst:2082
 msgid ""
 "Change the owner and group id of *path* to the numeric *uid* and *gid*.  To "
 "leave one of the ids unchanged, set it to -1."
 msgstr ""
 
-#: library/os.rst:2088
+#: library/os.rst:2089
 msgid ""
 "See :func:`shutil.chown` for a higher-level function that accepts names in "
 "addition to numeric ids."
 msgstr ""
 
-#: library/os.rst:2102
+#: library/os.rst:2103
 msgid "Supports a :term:`path-like object`."
 msgstr ""
 
-#: library/os.rst:2108
+#: library/os.rst:2109
 msgid "Change the root directory of the current process to *path*."
 msgstr ""
 
-#: library/os.rst:2118
+#: library/os.rst:2119
 msgid ""
 "Change the current working directory to the directory represented by the "
 "file descriptor *fd*.  The descriptor must refer to an opened directory, not "
 "an open file.  As of Python 3.3, this is equivalent to ``os.chdir(fd)``."
 msgstr ""
 
-#: library/os.rst:2129
+#: library/os.rst:2130
 msgid "Return a string representing the current working directory."
 msgstr ""
 
-#: library/os.rst:2134
+#: library/os.rst:2135
 msgid "Return a bytestring representing the current working directory."
 msgstr ""
 
-#: library/os.rst:2136
+#: library/os.rst:2137
 msgid ""
 "The function now uses the UTF-8 encoding on Windows, rather than the ANSI "
 "code page: see :pep:`529` for the rationale. The function is no longer "
 "deprecated on Windows."
 msgstr ""
 
-#: library/os.rst:2144
+#: library/os.rst:2145
 msgid ""
 "Set the flags of *path* to the numeric *flags*, like :func:`chflags`, but do "
 "not follow symbolic links.  As of Python 3.3, this is equivalent to ``os."
 "chflags(path, flags, follow_symlinks=False)``."
 msgstr ""
 
-#: library/os.rst:2158
+#: library/os.rst:2159
 msgid ""
 "Change the mode of *path* to the numeric *mode*. If path is a symlink, this "
 "affects the symlink rather than the target.  See the docs for :func:`chmod` "
@@ -2285,31 +2285,31 @@ msgid ""
 "chmod(path, mode, follow_symlinks=False)``."
 msgstr ""
 
-#: library/os.rst:2163
+#: library/os.rst:2164
 msgid ""
 "``lchmod()`` is not part of POSIX, but Unix implementations may have it if "
 "changing the mode of symbolic links is supported."
 msgstr ""
 
-#: library/os.rst:2175
+#: library/os.rst:2176
 msgid ""
 "Change the owner and group id of *path* to the numeric *uid* and *gid*.  "
 "This function will not follow symbolic links.  As of Python 3.3, this is "
 "equivalent to ``os.chown(path, uid, gid, follow_symlinks=False)``."
 msgstr ""
 
-#: library/os.rst:2189
+#: library/os.rst:2190
 msgid "Create a hard link pointing to *src* named *dst*."
 msgstr ""
 
-#: library/os.rst:2191
+#: library/os.rst:2192
 msgid ""
 "This function can support specifying *src_dir_fd* and/or *dst_dir_fd* to "
 "supply :ref:`paths relative to directory descriptors <dir_fd>`, and :ref:"
 "`not following symlinks <follow_symlinks>`."
 msgstr ""
 
-#: library/os.rst:2195
+#: library/os.rst:2196
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``os.link`` with arguments "
 "``src``, ``dst``, ``src_dir_fd``, ``dst_dir_fd``."
@@ -2319,15 +2319,15 @@ msgstr ""
 msgid "Added Windows support."
 msgstr ""
 
-#: library/os.rst:2202
+#: library/os.rst:2203
 msgid "Added the *src_dir_fd*, *dst_dir_fd*, and *follow_symlinks* parameters."
 msgstr ""
 
-#: library/os.rst:2629 library/os.rst:3394
+#: library/os.rst:2630 library/os.rst:3395
 msgid "Accepts a :term:`path-like object` for *src* and *dst*."
 msgstr ""
 
-#: library/os.rst:2211
+#: library/os.rst:2212
 msgid ""
 "Return a list containing the names of the entries in the directory given by "
 "*path*.  The list is in arbitrary order, and does not include the special "
@@ -2336,7 +2336,7 @@ msgid ""
 "function, whether a name for that file be included is unspecified."
 msgstr ""
 
-#: library/os.rst:2217
+#: library/os.rst:2218
 msgid ""
 "*path* may be a :term:`path-like object`.  If *path* is of type ``bytes`` "
 "(directly or indirectly through the :class:`PathLike` interface), the "
@@ -2344,41 +2344,41 @@ msgid ""
 "circumstances, they will be of type ``str``."
 msgstr ""
 
-#: library/os.rst:2714
+#: library/os.rst:2715
 msgid ""
 "This function can also support :ref:`specifying a file descriptor "
 "<path_fd>`; the file descriptor must refer to a directory."
 msgstr ""
 
-#: library/os.rst:2225
+#: library/os.rst:2226
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``os.listdir`` with argument "
 "``path``."
 msgstr ""
 
-#: library/os.rst:2228
+#: library/os.rst:2229
 msgid "To encode ``str`` filenames to ``bytes``, use :func:`~os.fsencode`."
 msgstr ""
 
-#: library/os.rst:2232
+#: library/os.rst:2233
 msgid ""
 "The :func:`scandir` function returns directory entries along with file "
 "attribute information, giving better performance for many common use cases."
 msgstr ""
 
-#: library/os.rst:2236
+#: library/os.rst:2237
 msgid "The *path* parameter became optional."
 msgstr ""
 
-#: library/os.rst:3253
+#: library/os.rst:3254
 msgid "Added support for specifying *path* as an open file descriptor."
 msgstr ""
 
-#: library/os.rst:2248
+#: library/os.rst:2249
 msgid "Return a list containing the names of drives on a Windows system."
 msgstr ""
 
-#: library/os.rst:2250
+#: library/os.rst:2251
 msgid ""
 "A drive name typically looks like ``'C:\\\\'``. Not every drive name will be "
 "associated with a volume, and some may be inaccessible for a variety of "
@@ -2386,22 +2386,22 @@ msgid ""
 "function does not test for access."
 msgstr ""
 
-#: library/os.rst:2255
+#: library/os.rst:2256
 msgid "May raise :exc:`OSError` if an error occurs collecting the drive names."
 msgstr ""
 
-#: library/os.rst:2258
+#: library/os.rst:2259
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``os.listdrives`` with no "
 "arguments."
 msgstr ""
 
-#: library/os.rst:2267
+#: library/os.rst:2268
 msgid ""
 "Return a list containing the mount points for a volume on a Windows system."
 msgstr ""
 
-#: library/os.rst:2270
+#: library/os.rst:2271
 msgid ""
 "*volume* must be represented as a GUID path, like those returned by :func:"
 "`os.listvolumes`. Volumes may be mounted in multiple locations or not at "
@@ -2409,29 +2409,29 @@ msgid ""
 "associated with a volume will not be returned by this function."
 msgstr ""
 
-#: library/os.rst:2276
+#: library/os.rst:2277
 msgid ""
 "The mount points return by this function will be absolute paths, and may be "
 "longer than the drive name."
 msgstr ""
 
-#: library/os.rst:2279
+#: library/os.rst:2280
 msgid ""
 "Raises :exc:`OSError` if the volume is not recognized or if an error occurs "
 "collecting the paths."
 msgstr ""
 
-#: library/os.rst:2282
+#: library/os.rst:2283
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``os.listmounts`` with argument "
 "``volume``."
 msgstr ""
 
-#: library/os.rst:2291
+#: library/os.rst:2292
 msgid "Return a list containing the volumes in the system."
 msgstr ""
 
-#: library/os.rst:2293
+#: library/os.rst:2294
 msgid ""
 "Volumes are typically represented as a GUID path that looks like ``\\\\?"
 "\\Volume{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}\\``. Files can usually be "
@@ -2440,46 +2440,46 @@ msgid ""
 "function is to retrieve mount points using :func:`os.listmounts`."
 msgstr ""
 
-#: library/os.rst:2300
+#: library/os.rst:2301
 msgid "May raise :exc:`OSError` if an error occurs collecting the volumes."
 msgstr ""
 
-#: library/os.rst:2302
+#: library/os.rst:2303
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``os.listvolumes`` with no "
 "arguments."
 msgstr ""
 
-#: library/os.rst:2311
+#: library/os.rst:2312
 msgid ""
 "Perform the equivalent of an :c:func:`!lstat` system call on the given path. "
 "Similar to :func:`~os.stat`, but does not follow symbolic links. Return a :"
 "class:`stat_result` object."
 msgstr ""
 
-#: library/os.rst:2315
+#: library/os.rst:2316
 msgid ""
 "On platforms that do not support symbolic links, this is an alias for :func:"
 "`~os.stat`."
 msgstr ""
 
-#: library/os.rst:2318
+#: library/os.rst:2319
 msgid ""
 "As of Python 3.3, this is equivalent to ``os.stat(path, dir_fd=dir_fd, "
 "follow_symlinks=False)``."
 msgstr ""
 
-#: library/os.rst:2363 library/os.rst:2459 library/os.rst:2533
+#: library/os.rst:2364 library/os.rst:2460 library/os.rst:2534
 msgid ""
 "This function can also support :ref:`paths relative to directory descriptors "
 "<dir_fd>`."
 msgstr ""
 
-#: library/os.rst:2542 library/os.rst:3387
+#: library/os.rst:2543 library/os.rst:3388
 msgid "Added support for Windows 6.0 (Vista) symbolic links."
 msgstr ""
 
-#: library/os.rst:2337
+#: library/os.rst:2338
 msgid ""
 "On Windows, now opens reparse points that represent another path (name "
 "surrogates), including symbolic links and directory junctions. Other kinds "
@@ -2487,18 +2487,18 @@ msgid ""
 "stat`."
 msgstr ""
 
-#: library/os.rst:2346
+#: library/os.rst:2347
 msgid "Create a directory named *path* with numeric mode *mode*."
 msgstr ""
 
-#: library/os.rst:2348
+#: library/os.rst:2349
 msgid ""
 "If the directory already exists, :exc:`FileExistsError` is raised. If a "
 "parent directory in the path does not exist, :exc:`FileNotFoundError` is "
 "raised."
 msgstr ""
 
-#: library/os.rst:2353
+#: library/os.rst:2354
 msgid ""
 "On some systems, *mode* is ignored.  Where it is used, the current umask "
 "value is first masked out.  If bits other than the last 9 (i.e. the last 3 "
@@ -2507,36 +2507,36 @@ msgid ""
 "call :func:`chmod` explicitly to set them."
 msgstr ""
 
-#: library/os.rst:2359
+#: library/os.rst:2360
 msgid ""
 "On Windows, a *mode* of ``0o700`` is specifically handled to apply access "
 "control to the new directory such that only the current user and "
 "administrators have access. Other values of *mode* are ignored."
 msgstr ""
 
-#: library/os.rst:2366
+#: library/os.rst:2367
 msgid ""
 "It is also possible to create temporary directories; see the :mod:`tempfile` "
 "module's :func:`tempfile.mkdtemp` function."
 msgstr ""
 
-#: library/os.rst:2406
+#: library/os.rst:2407
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``os.mkdir`` with arguments "
 "``path``, ``mode``, ``dir_fd``."
 msgstr ""
 
-#: library/os.rst:2377
+#: library/os.rst:2378
 msgid "Windows now handles a *mode* of ``0o700``."
 msgstr ""
 
-#: library/os.rst:2387
+#: library/os.rst:2388
 msgid ""
 "Recursive directory creation function.  Like :func:`mkdir`, but makes all "
 "intermediate-level directories needed to contain the leaf directory."
 msgstr ""
 
-#: library/os.rst:2390
+#: library/os.rst:2391
 msgid ""
 "The *mode* parameter is passed to :func:`mkdir` for creating the leaf "
 "directory; see :ref:`the mkdir() description <mkdir_modebits>` for how it is "
@@ -2545,27 +2545,27 @@ msgid ""
 "file permission bits of existing parent directories are not changed."
 msgstr ""
 
-#: library/os.rst:2396
+#: library/os.rst:2397
 msgid ""
 "If *exist_ok* is ``False`` (the default), a :exc:`FileExistsError` is raised "
 "if the target directory already exists."
 msgstr ""
 
-#: library/os.rst:2401
+#: library/os.rst:2402
 msgid ""
 ":func:`makedirs` will become confused if the path elements to create "
 "include :data:`pardir` (eg. \"..\" on UNIX systems)."
 msgstr ""
 
-#: library/os.rst:2404
+#: library/os.rst:2405
 msgid "This function handles UNC paths correctly."
 msgstr ""
 
-#: library/os.rst:2408
+#: library/os.rst:2409
 msgid "Added the *exist_ok* parameter."
 msgstr ""
 
-#: library/os.rst:2413
+#: library/os.rst:2414
 msgid ""
 "Before Python 3.4.1, if *exist_ok* was ``True`` and the directory existed, :"
 "func:`makedirs` would still raise an error if *mode* did not match the mode "
@@ -2573,19 +2573,19 @@ msgid ""
 "safely, it was removed in Python 3.4.1. See :issue:`21082`."
 msgstr ""
 
-#: library/os.rst:2421
+#: library/os.rst:2422
 msgid ""
 "The *mode* argument no longer affects the file permission bits of newly "
 "created intermediate-level directories."
 msgstr ""
 
-#: library/os.rst:2428
+#: library/os.rst:2429
 msgid ""
 "Create a FIFO (a named pipe) named *path* with numeric mode *mode*. The "
 "current umask value is first masked out from the mode."
 msgstr ""
 
-#: library/os.rst:2434
+#: library/os.rst:2435
 msgid ""
 "FIFOs are pipes that can be accessed like regular files.  FIFOs exist until "
 "they are deleted (for example with :func:`os.unlink`). Generally, FIFOs are "
@@ -2595,7 +2595,7 @@ msgid ""
 "rendezvous point."
 msgstr ""
 
-#: library/os.rst:2451
+#: library/os.rst:2452
 msgid ""
 "Create a filesystem node (file, device special file or named pipe) named "
 "*path*. *mode* specifies both the permissions to use and the type of node to "
@@ -2606,23 +2606,23 @@ msgid ""
 "`os.makedev`), otherwise it is ignored."
 msgstr ""
 
-#: library/os.rst:2473
+#: library/os.rst:2474
 msgid ""
 "Extract the device major number from a raw device number (usually the :attr:"
 "`st_dev` or :attr:`st_rdev` field from :c:struct:`stat`)."
 msgstr ""
 
-#: library/os.rst:2479
+#: library/os.rst:2480
 msgid ""
 "Extract the device minor number from a raw device number (usually the :attr:"
 "`st_dev` or :attr:`st_rdev` field from :c:struct:`stat`)."
 msgstr ""
 
-#: library/os.rst:2485
+#: library/os.rst:2486
 msgid "Compose a raw device number from the major and minor device numbers."
 msgstr ""
 
-#: library/os.rst:2490
+#: library/os.rst:2491
 msgid ""
 "Return system configuration information relevant to a named file. *name* "
 "specifies the configuration value to retrieve; it may be a string which is "
@@ -2633,19 +2633,19 @@ msgid ""
 "included in that mapping, passing an integer for *name* is also accepted."
 msgstr ""
 
-#: library/os.rst:3246 library/os.rst:3415
+#: library/os.rst:3247 library/os.rst:3416
 msgid ""
 "This function can support :ref:`specifying a file descriptor <path_fd>`."
 msgstr ""
 
-#: library/os.rst:2514
+#: library/os.rst:2515
 msgid ""
 "Dictionary mapping names accepted by :func:`pathconf` and :func:`fpathconf` "
 "to the integer values defined for those names by the host operating system.  "
 "This can be used to determine the set of names known to the system."
 msgstr ""
 
-#: library/os.rst:2523
+#: library/os.rst:2524
 msgid ""
 "Return a string representing the path to which the symbolic link points.  "
 "The result may be either an absolute or relative pathname; if it is "
@@ -2653,7 +2653,7 @@ msgid ""
 "join(os.path.dirname(path), result)``."
 msgstr ""
 
-#: library/os.rst:2528
+#: library/os.rst:2529
 msgid ""
 "If the *path* is a string object (directly or indirectly through a :class:"
 "`PathLike` interface), the result will also be a string object, and the call "
@@ -2661,41 +2661,41 @@ msgid ""
 "indirectly), the result will be a bytes object."
 msgstr ""
 
-#: library/os.rst:2536
+#: library/os.rst:2537
 msgid ""
 "When trying to resolve a path that may contain links, use :func:`~os.path."
 "realpath` to properly handle recursion and platform differences."
 msgstr ""
 
-#: library/os.rst:2548
+#: library/os.rst:2549
 msgid "Accepts a :term:`path-like object` on Unix."
 msgstr ""
 
-#: library/os.rst:2551
+#: library/os.rst:2552
 msgid "Accepts a :term:`path-like object` and a bytes object on Windows."
 msgstr ""
 
-#: library/os.rst:2554
+#: library/os.rst:2555
 msgid ""
 "Added support for directory junctions, and changed to return the "
 "substitution path (which typically includes ``\\\\?\\`` prefix) rather than "
 "the optional \"print name\" field that was previously returned."
 msgstr ""
 
-#: library/os.rst:2560
+#: library/os.rst:2561
 msgid ""
 "Remove (delete) the file *path*.  If *path* is a directory, an :exc:"
 "`OSError` is raised.  Use :func:`rmdir` to remove directories. If the file "
 "does not exist, a :exc:`FileNotFoundError` is raised."
 msgstr ""
 
-#: library/os.rst:2677 library/os.rst:3366
+#: library/os.rst:2678 library/os.rst:3367
 msgid ""
 "This function can support :ref:`paths relative to directory descriptors "
 "<dir_fd>`."
 msgstr ""
 
-#: library/os.rst:2567
+#: library/os.rst:2568
 msgid ""
 "On Windows, attempting to remove a file that is in use causes an exception "
 "to be raised; on Unix, the directory entry is removed but the storage "
@@ -2703,17 +2703,17 @@ msgid ""
 "longer in use."
 msgstr ""
 
-#: library/os.rst:2571
+#: library/os.rst:2572
 msgid "This function is semantically identical to :func:`unlink`."
 msgstr ""
 
-#: library/os.rst:2595 library/os.rst:3437
+#: library/os.rst:2596 library/os.rst:3438
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``os.remove`` with arguments "
 "``path``, ``dir_fd``."
 msgstr ""
 
-#: library/os.rst:2586
+#: library/os.rst:2587
 msgid ""
 "Remove directories recursively.  Works like :func:`rmdir` except that, if "
 "the leaf directory is successfully removed, :func:`removedirs`  tries to "
@@ -2725,20 +2725,20 @@ msgid ""
 "could not be successfully removed."
 msgstr ""
 
-#: library/os.rst:2603
+#: library/os.rst:2604
 msgid ""
 "Rename the file or directory *src* to *dst*. If *dst* exists, the operation "
 "will fail with an :exc:`OSError` subclass in a number of cases:"
 msgstr ""
 
-#: library/os.rst:2606
+#: library/os.rst:2607
 msgid ""
 "On Windows, if *dst* exists a :exc:`FileExistsError` is always raised. The "
 "operation may fail if *src* and *dst* are on different filesystems. Use :"
 "func:`shutil.move` to support moves to a different filesystem."
 msgstr ""
 
-#: library/os.rst:2610
+#: library/os.rst:2611
 msgid ""
 "On Unix, if *src* is a file and *dst* is a directory or vice-versa, an :exc:"
 "`IsADirectoryError` or a :exc:`NotADirectoryError` will be raised "
@@ -2750,29 +2750,29 @@ msgid ""
 "operation (this is a POSIX requirement)."
 msgstr ""
 
-#: library/os.rst:2659
+#: library/os.rst:2660
 msgid ""
 "This function can support specifying *src_dir_fd* and/or *dst_dir_fd* to "
 "supply :ref:`paths relative to directory descriptors <dir_fd>`."
 msgstr ""
 
-#: library/os.rst:2622
+#: library/os.rst:2623
 msgid ""
 "If you want cross-platform overwriting of the destination, use :func:"
 "`replace`."
 msgstr ""
 
-#: library/os.rst:2645 library/os.rst:2662
+#: library/os.rst:2646 library/os.rst:2663
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``os.rename`` with arguments "
 "``src``, ``dst``, ``src_dir_fd``, ``dst_dir_fd``."
 msgstr ""
 
-#: library/os.rst:2626
+#: library/os.rst:2627
 msgid "Added the *src_dir_fd* and *dst_dir_fd* parameters."
 msgstr ""
 
-#: library/os.rst:2635
+#: library/os.rst:2636
 msgid ""
 "Recursive directory or file renaming function. Works like :func:`rename`, "
 "except creation of any intermediate directories needed to make the new "
@@ -2781,17 +2781,17 @@ msgid ""
 "using :func:`removedirs`."
 msgstr ""
 
-#: library/os.rst:2642
+#: library/os.rst:2643
 msgid ""
 "This function can fail with the new directory structure made if you lack "
 "permissions needed to remove the leaf directory or file."
 msgstr ""
 
-#: library/os.rst:2647
+#: library/os.rst:2648
 msgid "Accepts a :term:`path-like object` for *old* and *new*."
 msgstr ""
 
-#: library/os.rst:2653
+#: library/os.rst:2654
 msgid ""
 "Rename the file or directory *src* to *dst*.  If *dst* is a non-empty "
 "directory, :exc:`OSError` will be raised.  If *dst* exists and is a file, it "
@@ -2800,7 +2800,7 @@ msgid ""
 "renaming will be an atomic operation (this is a POSIX requirement)."
 msgstr ""
 
-#: library/os.rst:2672
+#: library/os.rst:2673
 msgid ""
 "Remove (delete) the directory *path*.  If the directory does not exist or is "
 "not empty, a :exc:`FileNotFoundError` or an :exc:`OSError` is raised "
@@ -2808,13 +2808,13 @@ msgid ""
 "rmtree` can be used."
 msgstr ""
 
-#: library/os.rst:2680
+#: library/os.rst:2681
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``os.rmdir`` with arguments "
 "``path``, ``dir_fd``."
 msgstr ""
 
-#: library/os.rst:2691
+#: library/os.rst:2692
 msgid ""
 "Return an iterator of :class:`os.DirEntry` objects corresponding to the "
 "entries in the directory given by *path*. The entries are yielded in "
@@ -2824,7 +2824,7 @@ msgid ""
 "unspecified."
 msgstr ""
 
-#: library/os.rst:2698
+#: library/os.rst:2699
 msgid ""
 "Using :func:`scandir` instead of :func:`listdir` can significantly increase "
 "the performance of code that also needs file type or file attribute "
@@ -2836,7 +2836,7 @@ msgid ""
 "Unix but only requires one for symbolic links on Windows."
 msgstr ""
 
-#: library/os.rst:2708
+#: library/os.rst:2709
 msgid ""
 "*path* may be a :term:`path-like object`.  If *path* is of type ``bytes`` "
 "(directly or indirectly through the :class:`PathLike` interface), the type "
@@ -2845,30 +2845,30 @@ msgid ""
 "they will be of type ``str``."
 msgstr ""
 
-#: library/os.rst:2717
+#: library/os.rst:2718
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``os.scandir`` with argument "
 "``path``."
 msgstr ""
 
-#: library/os.rst:2719
+#: library/os.rst:2720
 msgid ""
 "The :func:`scandir` iterator supports the :term:`context manager` protocol "
 "and has the following method:"
 msgstr ""
 
-#: library/os.rst:2724
+#: library/os.rst:2725
 msgid "Close the iterator and free acquired resources."
 msgstr ""
 
-#: library/os.rst:2726
+#: library/os.rst:2727
 msgid ""
 "This is called automatically when the iterator is exhausted or garbage "
 "collected, or when an error happens during iterating.  However it is "
 "advisable to call it explicitly or use the :keyword:`with` statement."
 msgstr ""
 
-#: library/os.rst:2733
+#: library/os.rst:2734
 msgid ""
 "The following example shows a simple use of :func:`scandir` to display all "
 "the files (excluding directories) in the given *path* that don't start with "
@@ -2876,7 +2876,7 @@ msgid ""
 "system call::"
 msgstr ""
 
-#: library/os.rst:2738
+#: library/os.rst:2739
 msgid ""
 "with os.scandir(path) as it:\n"
 "    for entry in it:\n"
@@ -2884,7 +2884,7 @@ msgid ""
 "            print(entry.name)"
 msgstr ""
 
-#: library/os.rst:2745
+#: library/os.rst:2746
 msgid ""
 "On Unix-based systems, :func:`scandir` uses the system's `opendir() <https://"
 "pubs.opengroup.org/onlinepubs/009695399/functions/opendir.html>`_ and "
@@ -2895,7 +2895,7 @@ msgid ""
 "desktop/aa364428(v=vs.85).aspx>`_ functions."
 msgstr ""
 
-#: library/os.rst:2757
+#: library/os.rst:2758
 msgid ""
 "Added support for the :term:`context manager` protocol and the :func:"
 "`~scandir.close` method.  If a :func:`scandir` iterator is neither exhausted "
@@ -2903,28 +2903,28 @@ msgid ""
 "destructor."
 msgstr ""
 
-#: library/os.rst:2763
+#: library/os.rst:2764
 msgid "The function accepts a :term:`path-like object`."
 msgstr ""
 
-#: library/os.rst:2765
+#: library/os.rst:2766
 msgid "Added support for :ref:`file descriptors <path_fd>` on Unix."
 msgstr ""
 
-#: library/os.rst:2771
+#: library/os.rst:2772
 msgid ""
 "Object yielded by :func:`scandir` to expose the file path and other file "
 "attributes of a directory entry."
 msgstr ""
 
-#: library/os.rst:2774
+#: library/os.rst:2775
 msgid ""
 ":func:`scandir` will provide as much of this information as possible without "
 "making additional system calls. When a ``stat()`` or ``lstat()`` system call "
 "is made, the ``os.DirEntry`` object will cache the result."
 msgstr ""
 
-#: library/os.rst:2778
+#: library/os.rst:2779
 msgid ""
 "``os.DirEntry`` instances are not intended to be stored in long-lived data "
 "structures; if you know the file metadata has changed or if a long time has "
@@ -2932,7 +2932,7 @@ msgid ""
 "up-to-date information."
 msgstr ""
 
-#: library/os.rst:2783
+#: library/os.rst:2784
 msgid ""
 "Because the ``os.DirEntry`` methods can make operating system calls, they "
 "may also raise :exc:`OSError`. If you need very fine-grained control over "
@@ -2940,29 +2940,29 @@ msgid ""
 "methods and handle as appropriate."
 msgstr ""
 
-#: library/os.rst:2788
+#: library/os.rst:2789
 msgid ""
 "To be directly usable as a :term:`path-like object`, ``os.DirEntry`` "
 "implements the :class:`PathLike` interface."
 msgstr ""
 
-#: library/os.rst:2791
+#: library/os.rst:2792
 msgid "Attributes and methods on a ``os.DirEntry`` instance are as follows:"
 msgstr ""
 
-#: library/os.rst:2795
+#: library/os.rst:2796
 msgid ""
 "The entry's base filename, relative to the :func:`scandir` *path* argument."
 msgstr ""
 
-#: library/os.rst:2798
+#: library/os.rst:2799
 msgid ""
 "The :attr:`name` attribute will be ``bytes`` if the :func:`scandir` *path* "
 "argument is of type ``bytes`` and ``str`` otherwise.  Use :func:`~os."
 "fsdecode` to decode byte filenames."
 msgstr ""
 
-#: library/os.rst:2804
+#: library/os.rst:2805
 msgid ""
 "The entry's full path name: equivalent to ``os.path.join(scandir_path, entry."
 "name)`` where *scandir_path* is the :func:`scandir` *path* argument.  The "
@@ -2972,51 +2972,51 @@ msgid ""
 "attribute."
 msgstr ""
 
-#: library/os.rst:2811
+#: library/os.rst:2812
 msgid ""
 "The :attr:`path` attribute will be ``bytes`` if the :func:`scandir` *path* "
 "argument is of type ``bytes`` and ``str`` otherwise.  Use :func:`~os."
 "fsdecode` to decode byte filenames."
 msgstr ""
 
-#: library/os.rst:2817
+#: library/os.rst:2818
 msgid "Return the inode number of the entry."
 msgstr ""
 
-#: library/os.rst:2819
+#: library/os.rst:2820
 msgid ""
 "The result is cached on the ``os.DirEntry`` object. Use ``os.stat(entry."
 "path, follow_symlinks=False).st_ino`` to fetch up-to-date information."
 msgstr ""
 
-#: library/os.rst:2823
+#: library/os.rst:2824
 msgid ""
 "On the first, uncached call, a system call is required on Windows but not on "
 "Unix."
 msgstr ""
 
-#: library/os.rst:2828
+#: library/os.rst:2829
 msgid ""
 "Return ``True`` if this entry is a directory or a symbolic link pointing to "
 "a directory; return ``False`` if the entry is or points to any other kind of "
 "file, or if it doesn't exist anymore."
 msgstr ""
 
-#: library/os.rst:2832
+#: library/os.rst:2833
 msgid ""
 "If *follow_symlinks* is ``False``, return ``True`` only if this entry is a "
 "directory (without following symlinks); return ``False`` if the entry is any "
 "other kind of file or if it doesn't exist anymore."
 msgstr ""
 
-#: library/os.rst:2836
+#: library/os.rst:2837
 msgid ""
 "The result is cached on the ``os.DirEntry`` object, with a separate cache "
 "for *follow_symlinks* ``True`` and ``False``. Call :func:`os.stat` along "
 "with :func:`stat.S_ISDIR` to fetch up-to-date information."
 msgstr ""
 
-#: library/os.rst:2840
+#: library/os.rst:2841
 msgid ""
 "On the first, uncached call, no system call is required in most cases. "
 "Specifically, for non-symlinks, neither Windows or Unix require a system "
@@ -3026,46 +3026,46 @@ msgid ""
 "is ``False``."
 msgstr ""
 
-#: library/os.rst:2877
+#: library/os.rst:2878
 msgid ""
 "This method can raise :exc:`OSError`, such as :exc:`PermissionError`, but :"
 "exc:`FileNotFoundError` is caught and not raised."
 msgstr ""
 
-#: library/os.rst:2852
+#: library/os.rst:2853
 msgid ""
 "Return ``True`` if this entry is a file or a symbolic link pointing to a "
 "file; return ``False`` if the entry is or points to a directory or other non-"
 "file entry, or if it doesn't exist anymore."
 msgstr ""
 
-#: library/os.rst:2856
+#: library/os.rst:2857
 msgid ""
 "If *follow_symlinks* is ``False``, return ``True`` only if this entry is a "
 "file (without following symlinks); return ``False`` if the entry is a "
 "directory or other non-file entry, or if it doesn't exist anymore."
 msgstr ""
 
-#: library/os.rst:2860
+#: library/os.rst:2861
 msgid ""
 "The result is cached on the ``os.DirEntry`` object. Caching, system calls "
 "made, and exceptions raised are as per :func:`~os.DirEntry.is_dir`."
 msgstr ""
 
-#: library/os.rst:2865
+#: library/os.rst:2866
 msgid ""
 "Return ``True`` if this entry is a symbolic link (even if broken); return "
 "``False`` if the entry points to a directory or any kind of file, or if it "
 "doesn't exist anymore."
 msgstr ""
 
-#: library/os.rst:2869
+#: library/os.rst:2870
 msgid ""
 "The result is cached on the ``os.DirEntry`` object. Call :func:`os.path."
 "islink` to fetch up-to-date information."
 msgstr ""
 
-#: library/os.rst:2872
+#: library/os.rst:2873
 msgid ""
 "On the first, uncached call, no system call is required in most cases. "
 "Specifically, neither Windows or Unix require a system call, except on "
@@ -3073,48 +3073,48 @@ msgid ""
 "``dirent.d_type == DT_UNKNOWN``."
 msgstr ""
 
-#: library/os.rst:2882
+#: library/os.rst:2883
 msgid ""
 "Return ``True`` if this entry is a junction (even if broken); return "
 "``False`` if the entry points to a regular directory, any kind of file, a "
 "symlink, or if it doesn't exist anymore."
 msgstr ""
 
-#: library/os.rst:2886
+#: library/os.rst:2887
 msgid ""
 "The result is cached on the ``os.DirEntry`` object. Call :func:`os.path."
 "isjunction` to fetch up-to-date information."
 msgstr ""
 
-#: library/os.rst:2893
+#: library/os.rst:2894
 msgid ""
 "Return a :class:`stat_result` object for this entry. This method follows "
 "symbolic links by default; to stat a symbolic link add the "
 "``follow_symlinks=False`` argument."
 msgstr ""
 
-#: library/os.rst:2897
+#: library/os.rst:2898
 msgid ""
 "On Unix, this method always requires a system call. On Windows, it only "
 "requires a system call if *follow_symlinks* is ``True`` and the entry is a "
 "reparse point (for example, a symbolic link or directory junction)."
 msgstr ""
 
-#: library/os.rst:2902
+#: library/os.rst:2903
 msgid ""
 "On Windows, the ``st_ino``, ``st_dev`` and ``st_nlink`` attributes of the :"
 "class:`stat_result` are always set to zero. Call :func:`os.stat` to get "
 "these attributes."
 msgstr ""
 
-#: library/os.rst:2906
+#: library/os.rst:2907
 msgid ""
 "The result is cached on the ``os.DirEntry`` object, with a separate cache "
 "for *follow_symlinks* ``True`` and ``False``. Call :func:`os.stat` to fetch "
 "up-to-date information."
 msgstr ""
 
-#: library/os.rst:2910
+#: library/os.rst:2911
 msgid ""
 "Note that there is a nice correspondence between several attributes and "
 "methods of ``os.DirEntry`` and of :class:`pathlib.Path`.  In particular, the "
@@ -3122,13 +3122,13 @@ msgid ""
 "``is_file()``, ``is_symlink()``, ``is_junction()``, and ``stat()`` methods."
 msgstr ""
 
-#: library/os.rst:2918
+#: library/os.rst:2919
 msgid ""
 "Added support for the :class:`~os.PathLike` interface.  Added support for :"
 "class:`bytes` paths on Windows."
 msgstr ""
 
-#: library/os.rst:2922
+#: library/os.rst:2923
 msgid ""
 "The ``st_ctime`` attribute of a stat result is deprecated on Windows. The "
 "file creation time is properly available as ``st_birthtime``, and in the "
@@ -3136,7 +3136,7 @@ msgid ""
 "time, if available."
 msgstr ""
 
-#: library/os.rst:2931
+#: library/os.rst:2932
 msgid ""
 "Get the status of a file or a file descriptor. Perform the equivalent of a :"
 "c:func:`stat` system call on the given path. *path* may be specified as "
@@ -3145,19 +3145,19 @@ msgid ""
 "`stat_result` object."
 msgstr ""
 
-#: library/os.rst:2937
+#: library/os.rst:2938
 msgid ""
 "This function normally follows symlinks; to stat a symlink add the argument "
 "``follow_symlinks=False``, or use :func:`lstat`."
 msgstr ""
 
-#: library/os.rst:3806 library/os.rst:3838 library/os.rst:3858
+#: library/os.rst:3807 library/os.rst:3839 library/os.rst:3859
 msgid ""
 "This function can support :ref:`specifying a file descriptor <path_fd>` and :"
 "ref:`not following symlinks <follow_symlinks>`."
 msgstr ""
 
-#: library/os.rst:2943
+#: library/os.rst:2944
 msgid ""
 "On Windows, passing ``follow_symlinks=False`` will disable following all "
 "name-surrogate reparse points, which includes symlinks and directory "
@@ -3171,11 +3171,11 @@ msgid ""
 "junction points, which will raise the usual exceptions."
 msgstr ""
 
-#: library/os.rst:3726
+#: library/os.rst:3727
 msgid "Example::"
 msgstr ""
 
-#: library/os.rst:2958
+#: library/os.rst:2959
 msgid ""
 ">>> import os\n"
 ">>> statinfo = os.stat('somefile.txt')\n"
@@ -3187,17 +3187,17 @@ msgid ""
 "264"
 msgstr ""
 
-#: library/os.rst:2969
+#: library/os.rst:2970
 msgid ":func:`fstat` and :func:`lstat` functions."
 msgstr ""
 
-#: library/os.rst:2971
+#: library/os.rst:2972
 msgid ""
 "Added the *dir_fd* and *follow_symlinks* parameters, specifying a file "
 "descriptor instead of a path."
 msgstr ""
 
-#: library/os.rst:2978
+#: library/os.rst:2979
 msgid ""
 "On Windows, all reparse points that can be resolved by the operating system "
 "are now followed, and passing ``follow_symlinks=False`` disables following "
@@ -3207,122 +3207,122 @@ msgid ""
 "of raising an error."
 msgstr ""
 
-#: library/os.rst:2989
+#: library/os.rst:2990
 msgid ""
 "Object whose attributes correspond roughly to the members of the :c:struct:"
 "`stat` structure. It is used for the result of :func:`os.stat`, :func:`os."
 "fstat` and :func:`os.lstat`."
 msgstr ""
 
-#: library/os.rst:2993
+#: library/os.rst:2994
 msgid "Attributes:"
 msgstr ""
 
-#: library/os.rst:2997
+#: library/os.rst:2998
 msgid "File mode: file type and file mode bits (permissions)."
 msgstr ""
 
-#: library/os.rst:3001
+#: library/os.rst:3002
 msgid ""
 "Platform dependent, but if non-zero, uniquely identifies the file for a "
 "given value of ``st_dev``. Typically:"
 msgstr ""
 
-#: library/os.rst:3004
+#: library/os.rst:3005
 msgid "the inode number on Unix,"
 msgstr ""
 
-#: library/os.rst:3005
+#: library/os.rst:3006
 msgid ""
 "the `file index <https://msdn.microsoft.com/en-us/library/aa363788>`_ on "
 "Windows"
 msgstr ""
 
-#: library/os.rst:3011
+#: library/os.rst:3012
 msgid "Identifier of the device on which this file resides."
 msgstr ""
 
-#: library/os.rst:3015
+#: library/os.rst:3016
 msgid "Number of hard links."
 msgstr ""
 
-#: library/os.rst:3019
+#: library/os.rst:3020
 msgid "User identifier of the file owner."
 msgstr ""
 
-#: library/os.rst:3023
+#: library/os.rst:3024
 msgid "Group identifier of the file owner."
 msgstr ""
 
-#: library/os.rst:3027
+#: library/os.rst:3028
 msgid ""
 "Size of the file in bytes, if it is a regular file or a symbolic link. The "
 "size of a symbolic link is the length of the pathname it contains, without a "
 "terminating null byte."
 msgstr ""
 
-#: library/os.rst:3031
+#: library/os.rst:3032
 msgid "Timestamps:"
 msgstr ""
 
-#: library/os.rst:3035
+#: library/os.rst:3036
 msgid "Time of most recent access expressed in seconds."
 msgstr ""
 
-#: library/os.rst:3039
+#: library/os.rst:3040
 msgid "Time of most recent content modification expressed in seconds."
 msgstr ""
 
-#: library/os.rst:3043
+#: library/os.rst:3044
 msgid "Time of most recent metadata change expressed in seconds."
 msgstr ""
 
-#: library/os.rst:3045
+#: library/os.rst:3046
 msgid ""
 "``st_ctime`` is deprecated on Windows. Use ``st_birthtime`` for the file "
 "creation time. In the future, ``st_ctime`` will contain the time of the most "
 "recent metadata change, as for other platforms."
 msgstr ""
 
-#: library/os.rst:3052
+#: library/os.rst:3053
 msgid "Time of most recent access expressed in nanoseconds as an integer."
 msgstr ""
 
-#: library/os.rst:3058
+#: library/os.rst:3059
 msgid ""
 "Time of most recent content modification expressed in nanoseconds as an "
 "integer."
 msgstr ""
 
-#: library/os.rst:3065
+#: library/os.rst:3066
 msgid ""
 "Time of most recent metadata change expressed in nanoseconds as an integer."
 msgstr ""
 
-#: library/os.rst:3070
+#: library/os.rst:3071
 msgid ""
 "``st_ctime_ns`` is deprecated on Windows. Use ``st_birthtime_ns`` for the "
 "file creation time. In the future, ``st_ctime`` will contain the time of the "
 "most recent metadata change, as for other platforms."
 msgstr ""
 
-#: library/os.rst:3077
+#: library/os.rst:3078
 msgid ""
 "Time of file creation expressed in seconds. This attribute is not always "
 "available, and may raise :exc:`AttributeError`."
 msgstr ""
 
-#: library/os.rst:3080
+#: library/os.rst:3081
 msgid "``st_birthtime`` is now available on Windows."
 msgstr ""
 
-#: library/os.rst:3085
+#: library/os.rst:3086
 msgid ""
 "Time of file creation expressed in nanoseconds as an integer. This attribute "
 "is not always available, and may raise :exc:`AttributeError`."
 msgstr ""
 
-#: library/os.rst:3093
+#: library/os.rst:3094
 msgid ""
 "The exact meaning and resolution of the :attr:`st_atime`, :attr:`st_mtime`, :"
 "attr:`st_ctime` and :attr:`st_birthtime` attributes depend on the operating "
@@ -3332,7 +3332,7 @@ msgid ""
 "details."
 msgstr ""
 
-#: library/os.rst:3100
+#: library/os.rst:3101
 msgid ""
 "Similarly, although :attr:`st_atime_ns`, :attr:`st_mtime_ns`, :attr:"
 "`st_ctime_ns` and :attr:`st_birthtime_ns` are always expressed in "
@@ -3345,74 +3345,74 @@ msgid ""
 "`st_birthtime_ns`."
 msgstr ""
 
-#: library/os.rst:3110
+#: library/os.rst:3111
 msgid ""
 "On some Unix systems (such as Linux), the following attributes may also be "
 "available:"
 msgstr ""
 
-#: library/os.rst:3115
+#: library/os.rst:3116
 msgid ""
 "Number of 512-byte blocks allocated for file. This may be smaller than :attr:"
 "`st_size`/512 when the file has holes."
 msgstr ""
 
-#: library/os.rst:3120
+#: library/os.rst:3121
 msgid ""
 "\"Preferred\" blocksize for efficient file system I/O. Writing to a file in "
 "smaller chunks may cause an inefficient read-modify-rewrite."
 msgstr ""
 
-#: library/os.rst:3125
+#: library/os.rst:3126
 msgid "Type of device if an inode device."
 msgstr ""
 
-#: library/os.rst:3129
+#: library/os.rst:3130
 msgid "User defined flags for file."
 msgstr ""
 
-#: library/os.rst:3131
+#: library/os.rst:3132
 msgid ""
 "On other Unix systems (such as FreeBSD), the following attributes may be "
 "available (but may be only filled out if root tries to use them):"
 msgstr ""
 
-#: library/os.rst:3136
+#: library/os.rst:3137
 msgid "File generation number."
 msgstr ""
 
-#: library/os.rst:3138
+#: library/os.rst:3139
 msgid ""
 "On Solaris and derivatives, the following attributes may also be available:"
 msgstr ""
 
-#: library/os.rst:3143
+#: library/os.rst:3144
 msgid ""
 "String that uniquely identifies the type of the filesystem that contains the "
 "file."
 msgstr ""
 
-#: library/os.rst:3146
+#: library/os.rst:3147
 msgid "On macOS systems, the following attributes may also be available:"
 msgstr ""
 
-#: library/os.rst:3150
+#: library/os.rst:3151
 msgid "Real size of the file."
 msgstr ""
 
-#: library/os.rst:3154
+#: library/os.rst:3155
 msgid "Creator of the file."
 msgstr ""
 
-#: library/os.rst:3158
+#: library/os.rst:3159
 msgid "File type."
 msgstr ""
 
-#: library/os.rst:3160
+#: library/os.rst:3161
 msgid "On Windows systems, the following attributes are also available:"
 msgstr ""
 
-#: library/os.rst:3164
+#: library/os.rst:3165
 msgid ""
 "Windows file attributes: ``dwFileAttributes`` member of the "
 "``BY_HANDLE_FILE_INFORMATION`` structure returned by :c:func:`!"
@@ -3420,7 +3420,7 @@ msgid ""
 "FILE_ATTRIBUTE_ARCHIVE>` constants in the :mod:`stat` module."
 msgstr ""
 
-#: library/os.rst:3174
+#: library/os.rst:3175
 msgid ""
 "When :attr:`st_file_attributes` has the :const:`~stat."
 "FILE_ATTRIBUTE_REPARSE_POINT` set, this field contains the tag identifying "
@@ -3428,14 +3428,14 @@ msgid ""
 "IO_REPARSE_TAG_SYMLINK>` constants in the :mod:`stat` module."
 msgstr ""
 
-#: library/os.rst:3179
+#: library/os.rst:3180
 msgid ""
 "The standard module :mod:`stat` defines functions and constants that are "
 "useful for extracting information from a :c:struct:`stat` structure. (On "
 "Windows, some items are filled with dummy values.)"
 msgstr ""
 
-#: library/os.rst:3183
+#: library/os.rst:3184
 msgid ""
 "For backward compatibility, a :class:`stat_result` instance is also "
 "accessible as a tuple of at least 10 integers giving the most important (and "
@@ -3447,49 +3447,49 @@ msgid ""
 "class:`stat_result` as a tuple always returns integers."
 msgstr ""
 
-#: library/os.rst:3192
+#: library/os.rst:3193
 msgid "Windows now returns the file index as :attr:`st_ino` when available."
 msgstr ""
 
-#: library/os.rst:3196
+#: library/os.rst:3197
 msgid "Added the :attr:`st_fstype` member to Solaris/derivatives."
 msgstr ""
 
-#: library/os.rst:3199
+#: library/os.rst:3200
 msgid "Added the :attr:`st_reparse_tag` member on Windows."
 msgstr ""
 
-#: library/os.rst:3202
+#: library/os.rst:3203
 msgid ""
 "On Windows, the :attr:`st_mode` member now identifies special files as :"
 "const:`S_IFCHR`, :const:`S_IFIFO` or :const:`S_IFBLK` as appropriate."
 msgstr ""
 
-#: library/os.rst:3207
+#: library/os.rst:3208
 msgid ""
 "On Windows, :attr:`st_ctime` is deprecated. Eventually, it will contain the "
 "last metadata change time, for consistency with other platforms, but for now "
 "still contains creation time. Use :attr:`st_birthtime` for the creation time."
 msgstr ""
 
-#: library/os.rst:3213
+#: library/os.rst:3214
 msgid ""
 "On Windows, :attr:`st_ino` may now be up to 128 bits, depending on the file "
 "system. Previously it would not be above 64 bits, and larger file "
 "identifiers would be arbitrarily packed."
 msgstr ""
 
-#: library/os.rst:3217
+#: library/os.rst:3218
 msgid ""
 "On Windows, :attr:`st_rdev` no longer returns a value. Previously it would "
 "contain the same as :attr:`st_dev`, which was incorrect."
 msgstr ""
 
-#: library/os.rst:3220
+#: library/os.rst:3221
 msgid "Added the :attr:`st_birthtime` member on Windows."
 msgstr ""
 
-#: library/os.rst:3225
+#: library/os.rst:3226
 msgid ""
 "Perform a :c:func:`!statvfs` system call on the given path.  The return "
 "value is an object whose attributes describe the filesystem on the given "
@@ -3499,7 +3499,7 @@ msgid ""
 "`f_favail`, :attr:`f_flag`, :attr:`f_namemax`, :attr:`f_fsid`."
 msgstr ""
 
-#: library/os.rst:3232
+#: library/os.rst:3233
 msgid ""
 "Two module-level constants are defined for the :attr:`f_flag` attribute's "
 "bit-flags: if :const:`ST_RDONLY` is set, the filesystem is mounted read-"
@@ -3507,7 +3507,7 @@ msgid ""
 "are disabled or not supported."
 msgstr ""
 
-#: library/os.rst:3237
+#: library/os.rst:3238
 msgid ""
 "Additional module-level constants are defined for GNU/glibc based systems. "
 "These are :const:`ST_NODEV` (disallow access to device special files), :"
@@ -3520,11 +3520,11 @@ msgid ""
 "relative to mtime/ctime)."
 msgstr ""
 
-#: library/os.rst:3250
+#: library/os.rst:3251
 msgid "The :const:`ST_RDONLY` and :const:`ST_NOSUID` constants were added."
 msgstr ""
 
-#: library/os.rst:3256
+#: library/os.rst:3257
 msgid ""
 "The :const:`ST_NODEV`, :const:`ST_NOEXEC`, :const:`ST_SYNCHRONOUS`, :const:"
 "`ST_MANDLOCK`, :const:`ST_WRITE`, :const:`ST_APPEND`, :const:"
@@ -3532,11 +3532,11 @@ msgid ""
 "`ST_RELATIME` constants were added."
 msgstr ""
 
-#: library/os.rst:3265
+#: library/os.rst:3266
 msgid "Added the :attr:`f_fsid` attribute."
 msgstr ""
 
-#: library/os.rst:3271
+#: library/os.rst:3272
 msgid ""
 "A :class:`set` object indicating which functions in the :mod:`os` module "
 "accept an open file descriptor for their *dir_fd* parameter. Different "
@@ -3548,7 +3548,7 @@ msgid ""
 "(Specifying ``None`` for *dir_fd* is always supported on all platforms.)"
 msgstr ""
 
-#: library/os.rst:3281
+#: library/os.rst:3282
 msgid ""
 "To check whether a particular function accepts an open file descriptor for "
 "its *dir_fd* parameter, use the ``in`` operator on ``supports_dir_fd``. As "
@@ -3556,17 +3556,17 @@ msgid ""
 "open file descriptors for *dir_fd* on the local platform::"
 msgstr ""
 
-#: library/os.rst:3286
+#: library/os.rst:3287
 msgid "os.stat in os.supports_dir_fd"
 msgstr ""
 
-#: library/os.rst:3288
+#: library/os.rst:3289
 msgid ""
 "Currently *dir_fd* parameters only work on Unix platforms; none of them work "
 "on Windows."
 msgstr ""
 
-#: library/os.rst:3296
+#: library/os.rst:3297
 msgid ""
 "A :class:`set` object indicating whether :func:`os.access` permits "
 "specifying ``True`` for its *effective_ids* parameter on the local platform. "
@@ -3575,23 +3575,23 @@ msgid ""
 "func:`os.access`; otherwise it will be empty."
 msgstr ""
 
-#: library/os.rst:3302
+#: library/os.rst:3303
 msgid ""
 "This expression evaluates to ``True`` if :func:`os.access` supports "
 "``effective_ids=True`` on the local platform::"
 msgstr ""
 
-#: library/os.rst:3305
+#: library/os.rst:3306
 msgid "os.access in os.supports_effective_ids"
 msgstr ""
 
-#: library/os.rst:3307
+#: library/os.rst:3308
 msgid ""
 "Currently *effective_ids* is only supported on Unix platforms; it does not "
 "work on Windows."
 msgstr ""
 
-#: library/os.rst:3315
+#: library/os.rst:3316
 msgid ""
 "A :class:`set` object indicating which functions in the :mod:`os` module "
 "permit specifying their *path* parameter as an open file descriptor on the "
@@ -3600,7 +3600,7 @@ msgid ""
 "*path* arguments is not available on all platforms Python supports."
 msgstr ""
 
-#: library/os.rst:3322
+#: library/os.rst:3323
 msgid ""
 "To determine whether a particular function permits specifying an open file "
 "descriptor for its *path* parameter, use the ``in`` operator on "
@@ -3609,11 +3609,11 @@ msgid ""
 "platform::"
 msgstr ""
 
-#: library/os.rst:3328
+#: library/os.rst:3329
 msgid "os.chdir in os.supports_fd"
 msgstr ""
 
-#: library/os.rst:3335
+#: library/os.rst:3336
 msgid ""
 "A :class:`set` object indicating which functions in the :mod:`os` module "
 "accept ``False`` for their *follow_symlinks* parameter on the local "
@@ -3626,7 +3626,7 @@ msgid ""
 "on all platforms.)"
 msgstr ""
 
-#: library/os.rst:3345
+#: library/os.rst:3346
 msgid ""
 "To check whether a particular function accepts ``False`` for its "
 "*follow_symlinks* parameter, use the ``in`` operator on "
@@ -3635,15 +3635,15 @@ msgid ""
 "stat` on the local platform::"
 msgstr ""
 
-#: library/os.rst:3351
+#: library/os.rst:3352
 msgid "os.stat in os.supports_follow_symlinks"
 msgstr ""
 
-#: library/os.rst:3358
+#: library/os.rst:3359
 msgid "Create a symbolic link pointing to *src* named *dst*."
 msgstr ""
 
-#: library/os.rst:3360
+#: library/os.rst:3361
 msgid ""
 "On Windows, a symlink represents either a file or a directory, and does not "
 "morph to the target dynamically.  If the target is present, the type of the "
@@ -3653,7 +3653,7 @@ msgid ""
 "ignored."
 msgstr ""
 
-#: library/os.rst:3371
+#: library/os.rst:3372
 msgid ""
 "On newer versions of Windows 10, unprivileged accounts can create symlinks "
 "if Developer Mode is enabled. When Developer Mode is not available/enabled, "
@@ -3661,83 +3661,83 @@ msgid ""
 "must be run as an administrator."
 msgstr ""
 
-#: library/os.rst:3377
+#: library/os.rst:3378
 msgid ""
 ":exc:`OSError` is raised when the function is called by an unprivileged user."
 msgstr ""
 
-#: library/os.rst:3380
+#: library/os.rst:3381
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``os.symlink`` with arguments "
 "``src``, ``dst``, ``dir_fd``."
 msgstr ""
 
-#: library/os.rst:3390
+#: library/os.rst:3391
 msgid ""
 "Added the *dir_fd* parameter, and now allow *target_is_directory* on non-"
 "Windows platforms."
 msgstr ""
 
-#: library/os.rst:3397
+#: library/os.rst:3398
 msgid "Added support for unelevated symlinks on Windows with Developer Mode."
 msgstr ""
 
-#: library/os.rst:3403
+#: library/os.rst:3404
 msgid "Force write of everything to disk."
 msgstr ""
 
-#: library/os.rst:3412
+#: library/os.rst:3413
 msgid ""
 "Truncate the file corresponding to *path*, so that it is at most *length* "
 "bytes in size."
 msgstr ""
 
-#: library/os.rst:3417
+#: library/os.rst:3418
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``os.truncate`` with arguments "
 "``path``, ``length``."
 msgstr ""
 
-#: library/os.rst:3432
+#: library/os.rst:3433
 msgid ""
 "Remove (delete) the file *path*.  This function is semantically identical "
 "to :func:`remove`; the ``unlink`` name is its traditional Unix name.  Please "
 "see the documentation for :func:`remove` for further information."
 msgstr ""
 
-#: library/os.rst:3448
+#: library/os.rst:3449
 msgid "Set the access and modified times of the file specified by *path*."
 msgstr ""
 
-#: library/os.rst:3450
+#: library/os.rst:3451
 msgid ""
 ":func:`utime` takes two optional parameters, *times* and *ns*. These specify "
 "the times set on *path* and are used as follows:"
 msgstr ""
 
-#: library/os.rst:3453
+#: library/os.rst:3454
 msgid ""
 "If *ns* is specified, it must be a 2-tuple of the form ``(atime_ns, "
 "mtime_ns)`` where each member is an int expressing nanoseconds."
 msgstr ""
 
-#: library/os.rst:3456
+#: library/os.rst:3457
 msgid ""
 "If *times* is not ``None``, it must be a 2-tuple of the form ``(atime, "
 "mtime)`` where each member is an int or float expressing seconds."
 msgstr ""
 
-#: library/os.rst:3459
+#: library/os.rst:3460
 msgid ""
 "If *times* is ``None`` and *ns* is unspecified, this is equivalent to "
 "specifying ``ns=(atime_ns, mtime_ns)`` where both times are the current time."
 msgstr ""
 
-#: library/os.rst:3463
+#: library/os.rst:3464
 msgid "It is an error to specify tuples for both *times* and *ns*."
 msgstr ""
 
-#: library/os.rst:3465
+#: library/os.rst:3466
 msgid ""
 "Note that the exact times you set here may not be returned by a subsequent :"
 "func:`~os.stat` call, depending on the resolution with which your operating "
@@ -3747,19 +3747,19 @@ msgid ""
 "func:`utime`."
 msgstr ""
 
-#: library/os.rst:3476
+#: library/os.rst:3477
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``os.utime`` with arguments "
 "``path``, ``times``, ``ns``, ``dir_fd``."
 msgstr ""
 
-#: library/os.rst:3478
+#: library/os.rst:3479
 msgid ""
 "Added support for specifying *path* as an open file descriptor, and the "
 "*dir_fd*, *follow_symlinks*, and *ns* parameters."
 msgstr ""
 
-#: library/os.rst:3492
+#: library/os.rst:3493
 msgid ""
 "Generate the file names in a directory tree by walking the tree either top-"
 "down or bottom-up. For each directory in the tree rooted at directory *top* "
@@ -3767,7 +3767,7 @@ msgid ""
 "filenames)``."
 msgstr ""
 
-#: library/os.rst:3497
+#: library/os.rst:3498
 msgid ""
 "*dirpath* is a string, the path to the directory.  *dirnames* is a list of "
 "the names of the subdirectories in *dirpath* (including symlinks to "
@@ -3781,7 +3781,7 @@ msgid ""
 "unspecified."
 msgstr ""
 
-#: library/os.rst:3508
+#: library/os.rst:3509
 msgid ""
 "If optional argument *topdown* is ``True`` or not specified, the triple for "
 "a directory is generated before the triples for any of its subdirectories "
@@ -3792,7 +3792,7 @@ msgid ""
 "its subdirectories are generated."
 msgstr ""
 
-#: library/os.rst:3516
+#: library/os.rst:3517
 msgid ""
 "When *topdown* is ``True``, the caller can modify the *dirnames* list in-"
 "place (perhaps using :keyword:`del` or slice assignment), and :func:`walk` "
@@ -3805,7 +3805,7 @@ msgid ""
 "itself is generated."
 msgstr ""
 
-#: library/os.rst:3525
+#: library/os.rst:3526
 msgid ""
 "By default, errors from the :func:`scandir` call are ignored.  If optional "
 "argument *onerror* is specified, it should be a function; it will be called "
@@ -3815,54 +3815,54 @@ msgid ""
 "object."
 msgstr ""
 
-#: library/os.rst:3531
+#: library/os.rst:3532
 msgid ""
 "By default, :func:`walk` will not walk down into symbolic links that resolve "
 "to directories. Set *followlinks* to ``True`` to visit directories pointed "
 "to by symlinks, on systems that support them."
 msgstr ""
 
-#: library/os.rst:3537
+#: library/os.rst:3538
 msgid ""
 "Be aware that setting *followlinks* to ``True`` can lead to infinite "
 "recursion if a link points to a parent directory of itself. :func:`walk` "
 "does not keep track of the directories it visited already."
 msgstr ""
 
-#: library/os.rst:3543
+#: library/os.rst:3544
 msgid ""
 "If you pass a relative pathname, don't change the current working directory "
 "between resumptions of :func:`walk`.  :func:`walk` never changes the current "
 "directory, and assumes that its caller doesn't either."
 msgstr ""
 
-#: library/os.rst:3609
+#: library/os.rst:3610
 msgid ""
 "This example displays the number of bytes taken by non-directory files in "
 "each directory under the starting directory, except that it doesn't look "
-"under any CVS subdirectory::"
+"under any ``__pycache__`` subdirectory::"
 msgstr ""
 
-#: library/os.rst:3551
+#: library/os.rst:3552
 msgid ""
 "import os\n"
 "from os.path import join, getsize\n"
-"for root, dirs, files in os.walk('python/Lib/email'):\n"
+"for root, dirs, files in os.walk('python/Lib/xml'):\n"
 "    print(root, \"consumes\", end=\" \")\n"
 "    print(sum(getsize(join(root, name)) for name in files), end=\" \")\n"
 "    print(\"bytes in\", len(files), \"non-directory files\")\n"
-"    if 'CVS' in dirs:\n"
-"        dirs.remove('CVS')  # don't visit CVS directories"
+"    if '__pycache__' in dirs:\n"
+"        dirs.remove('__pycache__')  # don't visit __pycache__ directories"
 msgstr ""
 
-#: library/os.rst:3560
+#: library/os.rst:3561
 msgid ""
 "In the next example (simple implementation of :func:`shutil.rmtree`), "
 "walking the tree bottom-up is essential, :func:`rmdir` doesn't allow "
 "deleting a directory before the directory is empty::"
 msgstr ""
 
-#: library/os.rst:3564
+#: library/os.rst:3565
 msgid ""
 "# Delete everything reachable from the directory named in \"top\",\n"
 "# assuming there are no symbolic links.\n"
@@ -3877,31 +3877,31 @@ msgid ""
 "os.rmdir(top)"
 msgstr ""
 
-#: library/os.rst:3576
+#: library/os.rst:3577
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``os.walk`` with arguments "
 "``top``, ``topdown``, ``onerror``, ``followlinks``."
 msgstr ""
 
-#: library/os.rst:3578
+#: library/os.rst:3579
 msgid ""
 "This function now calls :func:`os.scandir` instead of :func:`os.listdir`, "
 "making it faster by reducing the number of calls to :func:`os.stat`."
 msgstr ""
 
-#: library/os.rst:3592
+#: library/os.rst:3593
 msgid ""
 "This behaves exactly like :func:`walk`, except that it yields a 4-tuple "
 "``(dirpath, dirnames, filenames, dirfd)``, and it supports ``dir_fd``."
 msgstr ""
 
-#: library/os.rst:3595
+#: library/os.rst:3596
 msgid ""
 "*dirpath*, *dirnames* and *filenames* are identical to :func:`walk` output, "
 "and *dirfd* is a file descriptor referring to the directory *dirpath*."
 msgstr ""
 
-#: library/os.rst:3598
+#: library/os.rst:3599
 msgid ""
 "This function always supports :ref:`paths relative to directory descriptors "
 "<dir_fd>` and :ref:`not following symlinks <follow_symlinks>`.  Note however "
@@ -3909,32 +3909,32 @@ msgid ""
 "*follow_symlinks* is ``False``."
 msgstr ""
 
-#: library/os.rst:3605
+#: library/os.rst:3606
 msgid ""
 "Since :func:`fwalk` yields file descriptors, those are only valid until the "
 "next iteration step, so you should duplicate them (e.g. with :func:`dup`) if "
 "you want to keep them longer."
 msgstr ""
 
-#: library/os.rst:3613
+#: library/os.rst:3614
 msgid ""
 "import os\n"
-"for root, dirs, files, rootfd in os.fwalk('python/Lib/email'):\n"
+"for root, dirs, files, rootfd in os.fwalk('python/Lib/xml'):\n"
 "    print(root, \"consumes\", end=\"\")\n"
 "    print(sum([os.stat(name, dir_fd=rootfd).st_size for name in files]),\n"
 "          end=\"\")\n"
 "    print(\"bytes in\", len(files), \"non-directory files\")\n"
-"    if 'CVS' in dirs:\n"
-"        dirs.remove('CVS')  # don't visit CVS directories"
+"    if '__pycache__' in dirs:\n"
+"        dirs.remove('__pycache__')  # don't visit __pycache__ directories"
 msgstr ""
 
-#: library/os.rst:3622
+#: library/os.rst:3623
 msgid ""
 "In the next example, walking the tree bottom-up is essential: :func:`rmdir` "
 "doesn't allow deleting a directory before the directory is empty::"
 msgstr ""
 
-#: library/os.rst:3626
+#: library/os.rst:3627
 msgid ""
 "# Delete everything reachable from the directory named in \"top\",\n"
 "# assuming there are no symbolic links.\n"
@@ -3948,17 +3948,17 @@ msgid ""
 "        os.rmdir(name, dir_fd=rootfd)"
 msgstr ""
 
-#: library/os.rst:3637
+#: library/os.rst:3638
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``os.fwalk`` with arguments "
 "``top``, ``topdown``, ``onerror``, ``follow_symlinks``, ``dir_fd``."
 msgstr ""
 
-#: library/os.rst:3646
+#: library/os.rst:3647
 msgid "Added support for :class:`bytes` paths."
 msgstr ""
 
-#: library/os.rst:3652
+#: library/os.rst:3653
 msgid ""
 "Create an anonymous file and return a file descriptor that refers to it. "
 "*flags* must be one of the ``os.MFD_*`` constants available on the system "
@@ -3966,7 +3966,7 @@ msgid ""
 "descriptor is :ref:`non-inheritable <fd_inheritance>`."
 msgstr ""
 
-#: library/os.rst:3657
+#: library/os.rst:3658
 msgid ""
 "The name supplied in *name* is used as a filename and will be displayed as "
 "the target of the corresponding symbolic link in the directory ``/proc/self/"
@@ -3976,15 +3976,15 @@ msgid ""
 "side effects."
 msgstr ""
 
-#: library/os.rst:3687
+#: library/os.rst:3688
 msgid "These flags can be passed to :func:`memfd_create`."
 msgstr ""
 
-#: library/os.rst:3691
+#: library/os.rst:3692
 msgid "The ``MFD_HUGE*`` flags are only available since Linux 4.14."
 msgstr ""
 
-#: library/os.rst:3698
+#: library/os.rst:3699
 msgid ""
 "Create and return an event file descriptor. The file descriptors supports "
 "raw :func:`read` and :func:`write` with a buffer size of 8, :func:`~select."
@@ -3993,7 +3993,7 @@ msgid ""
 "ref:`non-inheritable <fd_inheritance>`."
 msgstr ""
 
-#: library/os.rst:3704
+#: library/os.rst:3705
 msgid ""
 "*initval* is the initial value of the event counter. The initial value must "
 "be a 32 bit unsigned integer. Please note that the initial value is limited "
@@ -4001,39 +4001,39 @@ msgid ""
 "integer with a maximum value of 2\\ :sup:`64`\\ -\\ 2."
 msgstr ""
 
-#: library/os.rst:3709
+#: library/os.rst:3710
 msgid ""
 "*flags* can be constructed from :const:`EFD_CLOEXEC`, :const:`EFD_NONBLOCK`, "
 "and :const:`EFD_SEMAPHORE`."
 msgstr ""
 
-#: library/os.rst:3712
+#: library/os.rst:3713
 msgid ""
 "If :const:`EFD_SEMAPHORE` is specified and the event counter is non-zero, :"
 "func:`eventfd_read` returns 1 and decrements the counter by one."
 msgstr ""
 
-#: library/os.rst:3715
+#: library/os.rst:3716
 msgid ""
 "If :const:`EFD_SEMAPHORE` is not specified and the event counter is non-"
 "zero, :func:`eventfd_read` returns the current event counter value and "
 "resets the counter to zero."
 msgstr ""
 
-#: library/os.rst:3719
+#: library/os.rst:3720
 msgid ""
 "If the event counter is zero and :const:`EFD_NONBLOCK` is not specified, :"
 "func:`eventfd_read` blocks."
 msgstr ""
 
-#: library/os.rst:3722
+#: library/os.rst:3723
 msgid ""
 ":func:`eventfd_write` increments the event counter. Write blocks if the "
 "write operation would increment the counter to a value larger than 2\\ :sup:"
 "`64`\\ -\\ 2."
 msgstr ""
 
-#: library/os.rst:3728
+#: library/os.rst:3729
 msgid ""
 "import os\n"
 "\n"
@@ -4051,42 +4051,42 @@ msgid ""
 "    os.close(fd)"
 msgstr ""
 
-#: library/os.rst:3749
+#: library/os.rst:3750
 msgid ""
 "Read value from an :func:`eventfd` file descriptor and return a 64 bit "
 "unsigned int. The function does not verify that *fd* is an :func:`eventfd`."
 msgstr ""
 
-#: library/os.rst:3758
+#: library/os.rst:3759
 msgid ""
 "Add value to an :func:`eventfd` file descriptor. *value* must be a 64 bit "
 "unsigned int. The function does not verify that *fd* is an :func:`eventfd`."
 msgstr ""
 
-#: library/os.rst:3767
+#: library/os.rst:3768
 msgid "Set close-on-exec flag for new :func:`eventfd` file descriptor."
 msgstr ""
 
-#: library/os.rst:3775
+#: library/os.rst:3776
 msgid ""
 "Set :const:`O_NONBLOCK` status flag for new :func:`eventfd` file descriptor."
 msgstr ""
 
-#: library/os.rst:3784
+#: library/os.rst:3785
 msgid ""
 "Provide semaphore-like semantics for reads from an :func:`eventfd` file "
 "descriptor. On read the internal counter is decremented by one."
 msgstr ""
 
-#: library/os.rst:3793
+#: library/os.rst:3794
 msgid "Linux extended attributes"
 msgstr ""
 
-#: library/os.rst:3797
+#: library/os.rst:3798
 msgid "These functions are all available on Linux only."
 msgstr ""
 
-#: library/os.rst:3801
+#: library/os.rst:3802
 msgid ""
 "Return the value of the extended filesystem attribute *attribute* for "
 "*path*. *attribute* can be bytes or str (directly or indirectly through the :"
@@ -4094,17 +4094,17 @@ msgid ""
 "encoding."
 msgstr ""
 
-#: library/os.rst:3809
+#: library/os.rst:3810
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``os.getxattr`` with arguments "
 "``path``, ``attribute``."
 msgstr ""
 
-#: library/os.rst:3843 library/os.rst:3868
+#: library/os.rst:3844 library/os.rst:3869
 msgid "Accepts a :term:`path-like object` for *path* and *attribute*."
 msgstr ""
 
-#: library/os.rst:3817
+#: library/os.rst:3818
 msgid ""
 "Return a list of the extended filesystem attributes on *path*.  The "
 "attributes in the list are represented as strings decoded with the "
@@ -4112,13 +4112,13 @@ msgid ""
 "the current directory."
 msgstr ""
 
-#: library/os.rst:3825
+#: library/os.rst:3826
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``os.listxattr`` with argument "
 "``path``."
 msgstr ""
 
-#: library/os.rst:3833
+#: library/os.rst:3834
 msgid ""
 "Removes the extended filesystem attribute *attribute* from *path*. "
 "*attribute* should be bytes or str (directly or indirectly through the :"
@@ -4126,13 +4126,13 @@ msgid ""
 "`filesystem encoding and error handler`."
 msgstr ""
 
-#: library/os.rst:3841
+#: library/os.rst:3842
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``os.removexattr`` with arguments "
 "``path``, ``attribute``."
 msgstr ""
 
-#: library/os.rst:3849
+#: library/os.rst:3850
 msgid ""
 "Set the extended filesystem attribute *attribute* on *path* to *value*. "
 "*attribute* must be a bytes or str with no embedded NULs (directly or "
@@ -4144,45 +4144,45 @@ msgid ""
 "will not be created and ``EEXISTS`` will be raised."
 msgstr ""
 
-#: library/os.rst:3863
+#: library/os.rst:3864
 msgid ""
 "A bug in Linux kernel versions less than 2.6.39 caused the flags argument to "
 "be ignored on some filesystems."
 msgstr ""
 
-#: library/os.rst:3866
+#: library/os.rst:3867
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``os.setxattr`` with arguments "
 "``path``, ``attribute``, ``value``, ``flags``."
 msgstr ""
 
-#: library/os.rst:3874
+#: library/os.rst:3875
 msgid ""
 "The maximum size the value of an extended attribute can be. Currently, this "
 "is 64 KiB on Linux."
 msgstr ""
 
-#: library/os.rst:3880
+#: library/os.rst:3881
 msgid ""
 "This is a possible value for the flags argument in :func:`setxattr`. It "
 "indicates the operation must create an attribute."
 msgstr ""
 
-#: library/os.rst:3886
+#: library/os.rst:3887
 msgid ""
 "This is a possible value for the flags argument in :func:`setxattr`. It "
 "indicates the operation must replace an existing attribute."
 msgstr ""
 
-#: library/os.rst:3893
+#: library/os.rst:3894
 msgid "Process Management"
 msgstr ""
 
-#: library/os.rst:3895
+#: library/os.rst:3896
 msgid "These functions may be used to create and manage processes."
 msgstr ""
 
-#: library/os.rst:3897
+#: library/os.rst:3898
 msgid ""
 "The various :func:`exec\\* <execl>` functions take a list of arguments for "
 "the new program loaded into the process.  In each case, the first of these "
@@ -4193,7 +4193,7 @@ msgid ""
 "standard output; ``foo`` will seem to be ignored."
 msgstr ""
 
-#: library/os.rst:3908
+#: library/os.rst:3909
 msgid ""
 "Generate a :const:`SIGABRT` signal to the current process.  On Unix, the "
 "default behavior is to produce a core dump; on Windows, the process "
@@ -4202,37 +4202,37 @@ msgid ""
 "`SIGABRT` with :func:`signal.signal`."
 msgstr ""
 
-#: library/os.rst:3917
+#: library/os.rst:3918
 msgid "Add a path to the DLL search path."
 msgstr ""
 
-#: library/os.rst:3919
+#: library/os.rst:3920
 msgid ""
 "This search path is used when resolving dependencies for imported extension "
 "modules (the module itself is resolved through :data:`sys.path`), and also "
 "by :mod:`ctypes`."
 msgstr ""
 
-#: library/os.rst:3923
+#: library/os.rst:3924
 msgid ""
 "Remove the directory by calling **close()** on the returned object or using "
 "it in a :keyword:`with` statement."
 msgstr ""
 
-#: library/os.rst:3926
+#: library/os.rst:3927
 msgid ""
 "See the `Microsoft documentation <https://msdn.microsoft."
 "com/44228cf2-6306-466c-8f16-f513cd3ba8b5>`_ for more information about how "
 "DLLs are loaded."
 msgstr ""
 
-#: library/os.rst:3930
+#: library/os.rst:3931
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``os.add_dll_directory`` with "
 "argument ``path``."
 msgstr ""
 
-#: library/os.rst:3934
+#: library/os.rst:3935
 msgid ""
 "Previous versions of CPython would resolve DLLs using the default behavior "
 "for the current process. This led to inconsistencies, such as only sometimes "
@@ -4240,14 +4240,14 @@ msgid ""
 "such as ``AddDllDirectory`` having no effect."
 msgstr ""
 
-#: library/os.rst:3941
+#: library/os.rst:3942
 msgid ""
 "In 3.8, the two primary ways DLLs are loaded now explicitly override the "
 "process-wide behavior to ensure consistency. See the :ref:`porting notes "
 "<bpo-36085-whatsnew>` for information on updating libraries."
 msgstr ""
 
-#: library/os.rst:3956
+#: library/os.rst:3957
 msgid ""
 "These functions all execute a new program, replacing the current process; "
 "they do not return.  On Unix, the new executable is loaded into the current "
@@ -4255,7 +4255,7 @@ msgid ""
 "reported as :exc:`OSError` exceptions."
 msgstr ""
 
-#: library/os.rst:3961
+#: library/os.rst:3962
 msgid ""
 "The current process is replaced immediately. Open file objects and "
 "descriptors are not flushed, so if there may be data buffered on these open "
@@ -4263,7 +4263,7 @@ msgid ""
 "fsync` before calling an :func:`exec\\* <execl>` function."
 msgstr ""
 
-#: library/os.rst:3967
+#: library/os.rst:3968
 msgid ""
 "The \"l\" and \"v\" variants of the :func:`exec\\* <execl>` functions differ "
 "in how command-line arguments are passed.  The \"l\" variants are perhaps "
@@ -4276,7 +4276,7 @@ msgid ""
 "is not enforced."
 msgstr ""
 
-#: library/os.rst:3976
+#: library/os.rst:3977
 msgid ""
 "The variants which include a \"p\" near the end (:func:`execlp`, :func:"
 "`execlpe`, :func:`execvp`, and :func:`execvpe`) will use the :envvar:`PATH` "
@@ -4290,7 +4290,7 @@ msgid ""
 "even on Windows, as plain names will not be resolved."
 msgstr ""
 
-#: library/os.rst:3987
+#: library/os.rst:3988
 msgid ""
 "For :func:`execle`, :func:`execlpe`, :func:`execve`, and :func:`execvpe` "
 "(note that these all end in \"e\"), the *env* parameter must be a mapping "
@@ -4300,7 +4300,7 @@ msgid ""
 "process to inherit the environment of the current process."
 msgstr ""
 
-#: library/os.rst:3994
+#: library/os.rst:3995
 msgid ""
 "For :func:`execve` on some platforms, *path* may also be specified as an "
 "open file descriptor.  This functionality may not be supported on your "
@@ -4309,31 +4309,31 @@ msgid ""
 "`NotImplementedError`."
 msgstr ""
 
-#: library/os.rst:3999
+#: library/os.rst:4000
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``os.exec`` with arguments "
 "``path``, ``args``, ``env``."
 msgstr ""
 
-#: library/os.rst:4003
+#: library/os.rst:4004
 msgid ""
 "Added support for specifying *path* as an open file descriptor for :func:"
 "`execve`."
 msgstr ""
 
-#: library/os.rst:4012
+#: library/os.rst:4013
 msgid ""
 "Exit the process with status *n*, without calling cleanup handlers, flushing "
 "stdio buffers, etc."
 msgstr ""
 
-#: library/os.rst:4017
+#: library/os.rst:4018
 msgid ""
 "The standard way to exit is :func:`sys.exit(n) <sys.exit>`.  :func:`!_exit` "
 "should normally only be used in the child process after a :func:`fork`."
 msgstr ""
 
-#: library/os.rst:4020
+#: library/os.rst:4021
 msgid ""
 "The following exit codes are defined and can be used with :func:`_exit`, "
 "although they are not required.  These are typically used for system "
@@ -4341,139 +4341,139 @@ msgid ""
 "delivery program."
 msgstr ""
 
-#: library/os.rst:4026
+#: library/os.rst:4027
 msgid ""
 "Some of these may not be available on all Unix platforms, since there is "
 "some variation.  These constants are defined where they are defined by the "
 "underlying platform."
 msgstr ""
 
-#: library/os.rst:4033
+#: library/os.rst:4034
 msgid ""
 "Exit code that means no error occurred. May be taken from the defined value "
 "of ``EXIT_SUCCESS`` on some platforms. Generally has a value of zero."
 msgstr ""
 
-#: library/os.rst:4041
+#: library/os.rst:4042
 msgid ""
 "Exit code that means the command was used incorrectly, such as when the "
 "wrong number of arguments are given."
 msgstr ""
 
-#: library/os.rst:4049
+#: library/os.rst:4050
 msgid "Exit code that means the input data was incorrect."
 msgstr ""
 
-#: library/os.rst:4056
+#: library/os.rst:4057
 msgid "Exit code that means an input file did not exist or was not readable."
 msgstr ""
 
-#: library/os.rst:4063
+#: library/os.rst:4064
 msgid "Exit code that means a specified user did not exist."
 msgstr ""
 
-#: library/os.rst:4070
+#: library/os.rst:4071
 msgid "Exit code that means a specified host did not exist."
 msgstr ""
 
-#: library/os.rst:4077
+#: library/os.rst:4078
 msgid "Exit code that means that a required service is unavailable."
 msgstr ""
 
-#: library/os.rst:4084
+#: library/os.rst:4085
 msgid "Exit code that means an internal software error was detected."
 msgstr ""
 
-#: library/os.rst:4091
+#: library/os.rst:4092
 msgid ""
 "Exit code that means an operating system error was detected, such as the "
 "inability to fork or create a pipe."
 msgstr ""
 
-#: library/os.rst:4099
+#: library/os.rst:4100
 msgid ""
 "Exit code that means some system file did not exist, could not be opened, or "
 "had some other kind of error."
 msgstr ""
 
-#: library/os.rst:4107
+#: library/os.rst:4108
 msgid "Exit code that means a user specified output file could not be created."
 msgstr ""
 
-#: library/os.rst:4114
+#: library/os.rst:4115
 msgid ""
 "Exit code that means that an error occurred while doing I/O on some file."
 msgstr ""
 
-#: library/os.rst:4121
+#: library/os.rst:4122
 msgid ""
 "Exit code that means a temporary failure occurred.  This indicates something "
 "that may not really be an error, such as a network connection that couldn't "
 "be made during a retryable operation."
 msgstr ""
 
-#: library/os.rst:4130
+#: library/os.rst:4131
 msgid ""
 "Exit code that means that a protocol exchange was illegal, invalid, or not "
 "understood."
 msgstr ""
 
-#: library/os.rst:4138
+#: library/os.rst:4139
 msgid ""
 "Exit code that means that there were insufficient permissions to perform the "
 "operation (but not intended for file system problems)."
 msgstr ""
 
-#: library/os.rst:4146
+#: library/os.rst:4147
 msgid "Exit code that means that some kind of configuration error occurred."
 msgstr ""
 
-#: library/os.rst:4153
+#: library/os.rst:4154
 msgid "Exit code that means something like \"an entry was not found\"."
 msgstr ""
 
-#: library/os.rst:4160
+#: library/os.rst:4161
 msgid ""
 "Fork a child process.  Return ``0`` in the child and the child's process id "
 "in the parent.  If an error occurs :exc:`OSError` is raised."
 msgstr ""
 
-#: library/os.rst:4163
+#: library/os.rst:4164
 msgid ""
 "Note that some platforms including FreeBSD <= 6.3 and Cygwin have known "
 "issues when using ``fork()`` from a thread."
 msgstr ""
 
-#: library/os.rst:4166
+#: library/os.rst:4167
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``os.fork`` with no arguments."
 msgstr ""
 
-#: library/os.rst:4170
+#: library/os.rst:4171
 msgid ""
 "If you use TLS sockets in an application calling ``fork()``, see the warning "
 "in the :mod:`ssl` documentation."
 msgstr ""
 
-#: library/os.rst:4219
+#: library/os.rst:4220
 msgid ""
 "On macOS the use of this function is unsafe when mixed with using higher-"
 "level system APIs, and that includes using :mod:`urllib.request`."
 msgstr ""
 
-#: library/os.rst:4178
+#: library/os.rst:4179
 msgid ""
 "Calling ``fork()`` in a subinterpreter is no longer supported (:exc:"
 "`RuntimeError` is raised)."
 msgstr ""
 
-#: library/os.rst:4182
+#: library/os.rst:4183
 msgid ""
 "If Python is able to detect that your process has multiple threads, :func:"
 "`os.fork` now raises a :exc:`DeprecationWarning`."
 msgstr ""
 
-#: library/os.rst:4186
+#: library/os.rst:4187
 msgid ""
 "We chose to surface this as a warning, when detectable, to better inform "
 "developers of a design problem that the POSIX platform specifically notes as "
@@ -4484,21 +4484,21 @@ msgid ""
 "``free``)."
 msgstr ""
 
-#: library/os.rst:4195
+#: library/os.rst:4196
 msgid ""
 "Users of macOS or users of libc or malloc implementations other than those "
 "typically found in glibc to date are among those already more likely to "
 "experience deadlocks running such code."
 msgstr ""
 
-#: library/os.rst:4199
+#: library/os.rst:4200
 msgid ""
 "See `this discussion on fork being incompatible with threads <https://"
 "discuss.python.org/t/33555>`_ for technical details of why we're surfacing "
 "this longstanding platform compatibility problem to developers."
 msgstr ""
 
-#: library/os.rst:4209
+#: library/os.rst:4210
 msgid ""
 "Fork a child process, using a new pseudo-terminal as the child's controlling "
 "terminal. Return a pair of ``(pid, fd)``, where *pid* is ``0`` in the child, "
@@ -4507,39 +4507,38 @@ msgid ""
 "the :mod:`pty` module.  If an error occurs :exc:`OSError` is raised."
 msgstr ""
 
-#: library/os.rst:4215
+#: library/os.rst:4216
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``os.forkpty`` with no arguments."
 msgstr ""
 
-#: library/os.rst:4222
+#: library/os.rst:4223
 msgid ""
 "Calling ``forkpty()`` in a subinterpreter is no longer supported (:exc:"
 "`RuntimeError` is raised)."
 msgstr ""
 
-#: library/os.rst:4226
+#: library/os.rst:4227
 msgid ""
 "If Python is able to detect that your process has multiple threads, this now "
 "raises a :exc:`DeprecationWarning`. See the longer explanation on :func:`os."
 "fork`."
 msgstr ""
 
-#: library/os.rst:4240
+#: library/os.rst:4241
 msgid ""
 "Send signal *sig* to the process *pid*.  Constants for the specific signals "
 "available on the host platform are defined in the :mod:`signal` module."
 msgstr ""
 
-#: library/os.rst:4243
+#: library/os.rst:4244
 msgid ""
 "Windows: The :const:`signal.CTRL_C_EVENT` and :const:`signal."
 "CTRL_BREAK_EVENT` signals are special signals which can only be sent to "
 "console processes which share a common console window, e.g., some "
 "subprocesses. Any other value for *sig* will cause the process to be "
 "unconditionally killed by the TerminateProcess API, and the exit code will "
-"be set to *sig*. The Windows version of :func:`kill` additionally takes "
-"process handles to be killed."
+"be set to *sig*."
 msgstr ""
 
 #: library/os.rst:4251
@@ -5497,124 +5496,125 @@ msgid ""
 "operating system."
 msgstr ""
 
-#: library/os.rst:5064
+#: library/os.rst:5066
 msgid "The default scheduling policy."
 msgstr ""
 
-#: library/os.rst:5068
+#: library/os.rst:5070
 msgid ""
 "Scheduling policy for CPU-intensive processes that tries to preserve "
 "interactivity on the rest of the computer."
 msgstr ""
 
-#: library/os.rst:5073
+#: library/os.rst:5075
 msgid "Scheduling policy for extremely low priority background tasks."
 msgstr ""
 
-#: library/os.rst:5077
+#: library/os.rst:5079
 msgid "Scheduling policy for sporadic server programs."
 msgstr ""
 
-#: library/os.rst:5081
+#: library/os.rst:5083
 msgid "A First In First Out scheduling policy."
 msgstr ""
 
-#: library/os.rst:5085
+#: library/os.rst:5087
 msgid "A round-robin scheduling policy."
 msgstr ""
 
-#: library/os.rst:5089
+#: library/os.rst:5091
 msgid ""
 "This flag can be OR'ed with any other scheduling policy. When a process with "
 "this flag set forks, its child's scheduling policy and priority are reset to "
 "the default."
 msgstr ""
 
-#: library/os.rst:5096
+#: library/os.rst:5098
 msgid ""
 "This class represents tunable scheduling parameters used in :func:"
 "`sched_setparam`, :func:`sched_setscheduler`, and :func:`sched_getparam`. It "
 "is immutable."
 msgstr ""
 
-#: library/os.rst:5100
+#: library/os.rst:5102
 msgid "At the moment, there is only one possible parameter:"
 msgstr ""
 
-#: library/os.rst:5104
+#: library/os.rst:5106
 msgid "The scheduling priority for a scheduling policy."
 msgstr ""
 
-#: library/os.rst:5109
+#: library/os.rst:5111
 msgid ""
 "Get the minimum priority value for *policy*. *policy* is one of the "
 "scheduling policy constants above."
 msgstr ""
 
-#: library/os.rst:5115
+#: library/os.rst:5117
 msgid ""
 "Get the maximum priority value for *policy*. *policy* is one of the "
 "scheduling policy constants above."
 msgstr ""
 
-#: library/os.rst:5121
+#: library/os.rst:5123
 msgid ""
 "Set the scheduling policy for the process with PID *pid*. A *pid* of 0 means "
 "the calling process. *policy* is one of the scheduling policy constants "
 "above. *param* is a :class:`sched_param` instance."
 msgstr ""
 
-#: library/os.rst:5128
+#: library/os.rst:5130
 msgid ""
 "Return the scheduling policy for the process with PID *pid*. A *pid* of 0 "
 "means the calling process. The result is one of the scheduling policy "
 "constants above."
 msgstr ""
 
-#: library/os.rst:5135
+#: library/os.rst:5137
 msgid ""
 "Set the scheduling parameters for the process with PID *pid*. A *pid* of 0 "
 "means the calling process. *param* is a :class:`sched_param` instance."
 msgstr ""
 
-#: library/os.rst:5141
+#: library/os.rst:5143
 msgid ""
 "Return the scheduling parameters as a :class:`sched_param` instance for the "
 "process with PID *pid*. A *pid* of 0 means the calling process."
 msgstr ""
 
-#: library/os.rst:5147
+#: library/os.rst:5149
 msgid ""
 "Return the round-robin quantum in seconds for the process with PID *pid*. A "
 "*pid* of 0 means the calling process."
 msgstr ""
 
-#: library/os.rst:5153
-msgid "Voluntarily relinquish the CPU."
+#: library/os.rst:5155
+msgid ""
+"Voluntarily relinquish the CPU. See :manpage:`sched_yield(2)` for details."
 msgstr ""
 
-#: library/os.rst:5158
+#: library/os.rst:5160
 msgid ""
 "Restrict the process with PID *pid* (or the current process if zero) to a "
 "set of CPUs.  *mask* is an iterable of integers representing the set of CPUs "
 "to which the process should be restricted."
 msgstr ""
 
-#: library/os.rst:5165
+#: library/os.rst:5167
 msgid "Return the set of CPUs the process with PID *pid* is restricted to."
 msgstr ""
 
-#: library/os.rst:5167
+#: library/os.rst:5169
 msgid ""
 "If *pid* is zero, return the set of CPUs the calling thread of the current "
 "process is restricted to."
 msgstr ""
 
-#: library/os.rst:5174
+#: library/os.rst:5176
 msgid "Miscellaneous System Information"
 msgstr ""
 
-#: library/os.rst:5179
+#: library/os.rst:5181
 msgid ""
 "Return string-valued system configuration values. *name* specifies the "
 "configuration value to retrieve; it may be a string which is the name of a "
@@ -5625,13 +5625,13 @@ msgid ""
 "included in that mapping, passing an integer for *name* is also accepted."
 msgstr ""
 
-#: library/os.rst:5187
+#: library/os.rst:5189
 msgid ""
 "If the configuration value specified by *name* isn't defined, ``None`` is "
 "returned."
 msgstr ""
 
-#: library/os.rst:5190
+#: library/os.rst:5192
 msgid ""
 "If *name* is a string and is not known, :exc:`ValueError` is raised.  If a "
 "specific value for *name* is not supported by the host system, even if it is "
@@ -5639,34 +5639,34 @@ msgid ""
 "`errno.EINVAL` for the error number."
 msgstr ""
 
-#: library/os.rst:5200
+#: library/os.rst:5202
 msgid ""
 "Dictionary mapping names accepted by :func:`confstr` to the integer values "
 "defined for those names by the host operating system. This can be used to "
 "determine the set of names known to the system."
 msgstr ""
 
-#: library/os.rst:5209
+#: library/os.rst:5211
 msgid ""
 "Return the number of logical CPUs in the system. Returns ``None`` if "
 "undetermined."
 msgstr ""
 
-#: library/os.rst:5212
+#: library/os.rst:5214
 msgid ""
 "This number is not equivalent to the number of logical CPUs the current "
 "process can use. ``len(os.sched_getaffinity(0))`` gets the number of logical "
 "CPUs the calling thread of the current process is restricted to"
 msgstr ""
 
-#: library/os.rst:5221
+#: library/os.rst:5223
 msgid ""
 "Return the number of processes in the system run queue averaged over the "
 "last 1, 5, and 15 minutes or raises :exc:`OSError` if the load average was "
 "unobtainable."
 msgstr ""
 
-#: library/os.rst:5230
+#: library/os.rst:5232
 msgid ""
 "Return integer-valued system configuration values. If the configuration "
 "value specified by *name* isn't defined, ``-1`` is returned.  The comments "
@@ -5675,44 +5675,44 @@ msgid ""
 "``sysconf_names``."
 msgstr ""
 
-#: library/os.rst:5240
+#: library/os.rst:5242
 msgid ""
 "Dictionary mapping names accepted by :func:`sysconf` to the integer values "
 "defined for those names by the host operating system. This can be used to "
 "determine the set of names known to the system."
 msgstr ""
 
-#: library/os.rst:5246
+#: library/os.rst:5248
 msgid "Add ``'SC_MINSIGSTKSZ'`` name."
 msgstr ""
 
-#: library/os.rst:5249
+#: library/os.rst:5251
 msgid ""
 "The following data values are used to support path manipulation operations.  "
 "These are defined for all platforms."
 msgstr ""
 
-#: library/os.rst:5252
+#: library/os.rst:5254
 msgid ""
 "Higher-level operations on pathnames are defined in the :mod:`os.path` "
 "module."
 msgstr ""
 
-#: library/os.rst:5258
+#: library/os.rst:5260
 msgid ""
 "The constant string used by the operating system to refer to the current "
 "directory. This is ``'.'`` for Windows and POSIX. Also available via :mod:"
 "`os.path`."
 msgstr ""
 
-#: library/os.rst:5266
+#: library/os.rst:5268
 msgid ""
 "The constant string used by the operating system to refer to the parent "
 "directory. This is ``'..'`` for Windows and POSIX. Also available via :mod:"
 "`os.path`."
 msgstr ""
 
-#: library/os.rst:5275
+#: library/os.rst:5277
 msgid ""
 "The character used by the operating system to separate pathname components. "
 "This is ``'/'`` for POSIX and ``'\\\\'`` for Windows.  Note that knowing "
@@ -5721,7 +5721,7 @@ msgid ""
 "useful. Also available via :mod:`os.path`."
 msgstr ""
 
-#: library/os.rst:5285
+#: library/os.rst:5287
 msgid ""
 "An alternative character used by the operating system to separate pathname "
 "components, or ``None`` if only one separator character exists.  This is set "
@@ -5729,27 +5729,27 @@ msgid ""
 "via :mod:`os.path`."
 msgstr ""
 
-#: library/os.rst:5294
+#: library/os.rst:5296
 msgid ""
 "The character which separates the base filename from the extension; for "
 "example, the ``'.'`` in :file:`os.py`. Also available via :mod:`os.path`."
 msgstr ""
 
-#: library/os.rst:5302
+#: library/os.rst:5304
 msgid ""
 "The character conventionally used by the operating system to separate search "
 "path components (as in :envvar:`PATH`), such as ``':'`` for POSIX or ``';'`` "
 "for Windows. Also available via :mod:`os.path`."
 msgstr ""
 
-#: library/os.rst:5309
+#: library/os.rst:5311
 msgid ""
 "The default search path used by :func:`exec\\*p\\* <execl>` and :func:"
 "`spawn\\*p\\* <spawnl>` if the environment doesn't have a ``'PATH'`` key. "
 "Also available via :mod:`os.path`."
 msgstr ""
 
-#: library/os.rst:5316
+#: library/os.rst:5318
 msgid ""
 "The string used to separate (or, rather, terminate) lines on the current "
 "platform.  This may be a single character, such as ``'\\n'`` for POSIX, or "
@@ -5758,36 +5758,36 @@ msgid ""
 "default); use a single ``'\\n'`` instead, on all platforms."
 msgstr ""
 
-#: library/os.rst:5325
+#: library/os.rst:5327
 msgid ""
 "The file path of the null device. For example: ``'/dev/null'`` for POSIX, "
 "``'nul'`` for Windows.  Also available via :mod:`os.path`."
 msgstr ""
 
-#: library/os.rst:5336
+#: library/os.rst:5338
 msgid ""
 "Flags for use with the :func:`~sys.setdlopenflags` and :func:`~sys."
 "getdlopenflags` functions.  See the Unix manual page :manpage:`dlopen(3)` "
 "for what the different flags mean."
 msgstr ""
 
-#: library/os.rst:5344
+#: library/os.rst:5346
 msgid "Random numbers"
 msgstr ""
 
-#: library/os.rst:5349
+#: library/os.rst:5351
 msgid ""
 "Get up to *size* random bytes. The function can return less bytes than "
 "requested."
 msgstr ""
 
-#: library/os.rst:5352
+#: library/os.rst:5354
 msgid ""
 "These bytes can be used to seed user-space random number generators or for "
 "cryptographic purposes."
 msgstr ""
 
-#: library/os.rst:5355
+#: library/os.rst:5357
 msgid ""
 "``getrandom()`` relies on entropy gathered from device drivers and other "
 "sources of environmental noise. Unnecessarily reading large quantities of "
@@ -5795,32 +5795,32 @@ msgid ""
 "``/dev/urandom`` devices."
 msgstr ""
 
-#: library/os.rst:5360
+#: library/os.rst:5362
 msgid ""
 "The flags argument is a bit mask that can contain zero or more of the "
 "following values ORed together: :py:const:`os.GRND_RANDOM` and :py:data:"
 "`GRND_NONBLOCK`."
 msgstr ""
 
-#: library/os.rst:5364
+#: library/os.rst:5366
 msgid ""
 "See also the `Linux getrandom() manual page <https://man7.org/linux/man-"
 "pages/man2/getrandom.2.html>`_."
 msgstr ""
 
-#: library/os.rst:5373
+#: library/os.rst:5375
 msgid ""
 "Return a bytestring of *size* random bytes suitable for cryptographic use."
 msgstr ""
 
-#: library/os.rst:5375
+#: library/os.rst:5377
 msgid ""
 "This function returns random bytes from an OS-specific randomness source.  "
 "The returned data should be unpredictable enough for cryptographic "
 "applications, though its exact quality depends on the OS implementation."
 msgstr ""
 
-#: library/os.rst:5379
+#: library/os.rst:5381
 msgid ""
 "On Linux, if the ``getrandom()`` syscall is available, it is used in "
 "blocking mode: block until the system urandom entropy pool is initialized "
@@ -5830,157 +5830,157 @@ msgid ""
 "to poll until the system urandom entropy pool is initialized."
 msgstr ""
 
-#: library/os.rst:5386
+#: library/os.rst:5388
 msgid ""
 "On a Unix-like system, random bytes are read from the ``/dev/urandom`` "
 "device. If the ``/dev/urandom`` device is not available or not readable, "
 "the :exc:`NotImplementedError` exception is raised."
 msgstr ""
 
-#: library/os.rst:5390
+#: library/os.rst:5392
 msgid "On Windows, it will use ``BCryptGenRandom()``."
 msgstr ""
 
-#: library/os.rst:5393
+#: library/os.rst:5395
 msgid ""
 "The :mod:`secrets` module provides higher level functions. For an easy-to-"
 "use interface to the random number generator provided by your platform, "
 "please see :class:`random.SystemRandom`."
 msgstr ""
 
-#: library/os.rst:5397
+#: library/os.rst:5399
 msgid ""
 "On Linux 3.17 and newer, the ``getrandom()`` syscall is now used when "
 "available.  On OpenBSD 5.6 and newer, the C ``getentropy()`` function is now "
 "used. These functions avoid the usage of an internal file descriptor."
 msgstr ""
 
-#: library/os.rst:5403
+#: library/os.rst:5405
 msgid ""
 "On Linux, if the ``getrandom()`` syscall blocks (the urandom entropy pool is "
 "not initialized yet), fall back on reading ``/dev/urandom``."
 msgstr ""
 
-#: library/os.rst:5407
+#: library/os.rst:5409
 msgid ""
 "On Linux, ``getrandom()`` is now used in blocking mode to increase the "
 "security."
 msgstr ""
 
-#: library/os.rst:5411
+#: library/os.rst:5413
 msgid ""
 "On Windows, ``BCryptGenRandom()`` is used instead of ``CryptGenRandom()`` "
 "which is deprecated."
 msgstr ""
 
-#: library/os.rst:5417
+#: library/os.rst:5419
 msgid ""
 "By  default, when reading from ``/dev/random``, :func:`getrandom` blocks if "
 "no random bytes are available, and when reading from ``/dev/urandom``, it "
 "blocks if the entropy pool has not yet been initialized."
 msgstr ""
 
-#: library/os.rst:5421
+#: library/os.rst:5423
 msgid ""
 "If the :py:data:`GRND_NONBLOCK` flag is set, then :func:`getrandom` does not "
 "block in these cases, but instead immediately raises :exc:`BlockingIOError`."
 msgstr ""
 
-#: library/os.rst:5428
+#: library/os.rst:5430
 msgid ""
 "If  this  bit  is  set,  then  random bytes are drawn from the ``/dev/"
 "random`` pool instead of the ``/dev/urandom`` pool."
 msgstr ""
 
-#: library/os.rst:529 library/os.rst:731
+#: library/os.rst:530 library/os.rst:732
 msgid "user"
 msgstr ""
 
-#: library/os.rst:363
+#: library/os.rst:364
 msgid "effective id"
 msgstr ""
 
-#: library/os.rst:438 library/os.rst:456 library/os.rst:666 library/os.rst:4263
+#: library/os.rst:439 library/os.rst:457 library/os.rst:667 library/os.rst:4263
 msgid "process"
 msgstr ""
 
-#: library/os.rst:438
+#: library/os.rst:439
 msgid "group"
 msgstr ""
 
-#: library/os.rst:529
+#: library/os.rst:530
 msgid "id"
 msgstr ""
 
-#: library/os.rst:456
+#: library/os.rst:457
 msgid "id of parent"
 msgstr ""
 
-#: library/os.rst:666
+#: library/os.rst:667
 msgid "scheduling priority"
 msgstr ""
 
-#: library/os.rst:796
+#: library/os.rst:797
 msgid "environment variables"
 msgstr ""
 
-#: library/os.rst:552
+#: library/os.rst:553
 msgid "setting"
 msgstr ""
 
-#: library/os.rst:731
+#: library/os.rst:732
 msgid "id, setting"
 msgstr ""
 
-#: library/os.rst:764
+#: library/os.rst:765
 msgid "gethostname() (in module socket)"
 msgstr ""
 
-#: library/os.rst:764
+#: library/os.rst:765
 msgid "gethostbyaddr() (in module socket)"
 msgstr ""
 
-#: library/os.rst:2584
+#: library/os.rst:2585
 msgid "deleting"
 msgstr ""
 
-#: library/os.rst:2954
+#: library/os.rst:2955
 msgid "module"
 msgstr ""
 
-#: library/os.rst:1338
+#: library/os.rst:1339
 msgid "pty"
 msgstr ""
 
-#: library/os.rst:2383 library/os.rst:3488 library/os.rst:3588
+#: library/os.rst:2384 library/os.rst:3489 library/os.rst:3589
 msgid "directory"
 msgstr ""
 
-#: library/os.rst:1979
+#: library/os.rst:1980
 msgid "changing"
 msgstr ""
 
-#: library/os.rst:2383
+#: library/os.rst:2384
 msgid "creating"
 msgstr ""
 
-#: library/os.rst:2383
+#: library/os.rst:2384
 msgid "UNC paths"
 msgstr ""
 
-#: library/os.rst:2383
+#: library/os.rst:2384
 msgid "and os.makedirs()"
 msgstr ""
 
-#: library/os.rst:2954
+#: library/os.rst:2955
 msgid "stat"
 msgstr ""
 
-#: library/os.rst:3588
+#: library/os.rst:3589
 msgid "walking"
 msgstr ""
 
-#: library/os.rst:3588
+#: library/os.rst:3589
 msgid "traversal"
 msgstr ""
 
@@ -5992,38 +5992,38 @@ msgstr ""
 msgid "signalling"
 msgstr ""
 
-#: library/os.rst:5291
+#: library/os.rst:5293
 msgid ". (dot)"
 msgstr ""
 
-#: library/os.rst:5263 library/os.rst:5282 library/os.rst:5291
+#: library/os.rst:5265 library/os.rst:5284 library/os.rst:5293
 msgid "in pathnames"
 msgstr ""
 
-#: library/os.rst:5263
+#: library/os.rst:5265
 msgid ".."
 msgstr ""
 
-#: library/os.rst:5282
+#: library/os.rst:5284
 msgid "/ (slash)"
 msgstr ""
 
-#: library/os.rst:5272
+#: library/os.rst:5274
 msgid "\\ (backslash)"
 msgstr ""
 
-#: library/os.rst:5272
+#: library/os.rst:5274
 msgid "in pathnames (Windows)"
 msgstr ""
 
-#: library/os.rst:5298
+#: library/os.rst:5300
 msgid ": (colon)"
 msgstr ""
 
-#: library/os.rst:5298
+#: library/os.rst:5300
 msgid "path separator (POSIX)"
 msgstr ""
 
-#: library/os.rst:5298
+#: library/os.rst:5300
 msgid "; (semicolon)"
 msgstr ""
diff --git a/library/pdb.po b/library/pdb.po
index bcf2a2714..b9f095105 100644
--- a/library/pdb.po
+++ b/library/pdb.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -122,17 +122,17 @@ msgid ""
 "arguments of the ``p`` command."
 msgstr ""
 
-#: library/pdb.rst:78
+#: library/pdb.rst:80
 msgid ""
 "You can also invoke :mod:`pdb` from the command line to debug other "
 "scripts.  For example::"
 msgstr ""
 
-#: library/pdb.rst:81
-msgid "python -m pdb myscript.py"
+#: library/pdb.rst:83
+msgid "python -m pdb [-c command] (-m module | pyfile) [args ...]"
 msgstr ""
 
-#: library/pdb.rst:83
+#: library/pdb.rst:85
 msgid ""
 "When invoked as a module, pdb will automatically enter post-mortem debugging "
 "if the program being debugged exits abnormally.  After post-mortem debugging "
@@ -141,24 +141,31 @@ msgid ""
 "cases is more useful than quitting the debugger upon program's exit."
 msgstr ""
 
-#: library/pdb.rst:89
+#: library/pdb.rst:93
 msgid ""
-"Added the ``-c`` option to execute commands as if given in a :file:`.pdbrc` "
-"file; see :ref:`debugger-commands`."
+"To execute commands as if given in a :file:`.pdbrc` file; see :ref:`debugger-"
+"commands`."
 msgstr ""
 
-#: library/pdb.rst:93
+#: library/pdb.rst:96
+msgid "Added the ``-c`` option."
+msgstr ""
+
+#: library/pdb.rst:101
 msgid ""
-"Added the ``-m`` option to execute modules similar to the way ``python -m`` "
-"does. As with a script, the debugger will pause execution just before the "
-"first line of the module."
+"To execute modules similar to the way ``python -m`` does. As with a script, "
+"the debugger will pause execution just before the first line of the module."
 msgstr ""
 
-#: library/pdb.rst:98
+#: library/pdb.rst:104
+msgid "Added the ``-m`` option."
+msgstr ""
+
+#: library/pdb.rst:107
 msgid "Typical usage to execute a statement under control of the debugger is::"
 msgstr ""
 
-#: library/pdb.rst:100
+#: library/pdb.rst:109
 msgid ""
 ">>> import pdb\n"
 ">>> def f(x):\n"
@@ -170,11 +177,11 @@ msgid ""
 ">>>"
 msgstr ""
 
-#: library/pdb.rst:109
+#: library/pdb.rst:118
 msgid "The typical usage to inspect a crashed program is::"
 msgstr ""
 
-#: library/pdb.rst:111
+#: library/pdb.rst:120
 msgid ""
 ">>> import pdb\n"
 ">>> def f(x):\n"
@@ -192,13 +199,13 @@ msgid ""
 "(Pdb)"
 msgstr ""
 
-#: library/pdb.rst:127
+#: library/pdb.rst:136
 msgid ""
 "The module defines the following functions; each enters the debugger in a "
 "slightly different way:"
 msgstr ""
 
-#: library/pdb.rst:132
+#: library/pdb.rst:141
 msgid ""
 "Execute the *statement* (given as a string or a code object) under debugger "
 "control.  The debugger prompt appears before any code is executed; you can "
@@ -210,14 +217,14 @@ msgid ""
 "`exec` or :func:`eval` functions.)"
 msgstr ""
 
-#: library/pdb.rst:144
+#: library/pdb.rst:153
 msgid ""
 "Evaluate the *expression* (given as a string or a code object) under "
 "debugger control.  When :func:`runeval` returns, it returns the value of the "
 "*expression*.  Otherwise this function is similar to :func:`run`."
 msgstr ""
 
-#: library/pdb.rst:151
+#: library/pdb.rst:160
 msgid ""
 "Call the *function* (a function or method object, not a string) with the "
 "given arguments.  When :func:`runcall` returns, it returns whatever the "
@@ -225,7 +232,7 @@ msgid ""
 "is entered."
 msgstr ""
 
-#: library/pdb.rst:159
+#: library/pdb.rst:168
 msgid ""
 "Enter the debugger at the calling stack frame.  This is useful to hard-code "
 "a breakpoint at a given point in a program, even if the code is not "
@@ -233,11 +240,11 @@ msgid ""
 "is printed to the console just before debugging begins."
 msgstr ""
 
-#: library/pdb.rst:164
+#: library/pdb.rst:173
 msgid "The keyword-only argument *header*."
 msgstr ""
 
-#: library/pdb.rst:170
+#: library/pdb.rst:179
 msgid ""
 "Enter post-mortem debugging of the given *traceback* object.  If no "
 "*traceback* is given, it uses the one of the exception that is currently "
@@ -245,37 +252,37 @@ msgid ""
 "used)."
 msgstr ""
 
-#: library/pdb.rst:178
+#: library/pdb.rst:187
 msgid ""
 "Enter post-mortem debugging of the traceback found in :data:`sys."
 "last_traceback`."
 msgstr ""
 
-#: library/pdb.rst:182
+#: library/pdb.rst:191
 msgid ""
 "The ``run*`` functions and :func:`set_trace` are aliases for instantiating "
 "the :class:`Pdb` class and calling the method of the same name.  If you want "
 "to access further features, you have to do this yourself:"
 msgstr ""
 
-#: library/pdb.rst:189
+#: library/pdb.rst:198
 msgid ":class:`Pdb` is the debugger class."
 msgstr ""
 
-#: library/pdb.rst:191
+#: library/pdb.rst:200
 msgid ""
 "The *completekey*, *stdin* and *stdout* arguments are passed to the "
 "underlying :class:`cmd.Cmd` class; see the description there."
 msgstr ""
 
-#: library/pdb.rst:194
+#: library/pdb.rst:203
 msgid ""
 "The *skip* argument, if given, must be an iterable of glob-style module name "
 "patterns.  The debugger will not step into frames that originate in a module "
 "that matches one of these patterns. [1]_"
 msgstr ""
 
-#: library/pdb.rst:198
+#: library/pdb.rst:207
 msgid ""
 "By default, Pdb sets a handler for the SIGINT signal (which is sent when the "
 "user presses :kbd:`Ctrl-C` on the console) when you give a :pdbcmd:"
@@ -284,48 +291,48 @@ msgid ""
 "set *nosigint* to true."
 msgstr ""
 
-#: library/pdb.rst:203
+#: library/pdb.rst:212
 msgid ""
 "The *readrc* argument defaults to true and controls whether Pdb will load ."
 "pdbrc files from the filesystem."
 msgstr ""
 
-#: library/pdb.rst:206
+#: library/pdb.rst:215
 msgid "Example call to enable tracing with *skip*::"
 msgstr ""
 
-#: library/pdb.rst:208
+#: library/pdb.rst:217
 msgid "import pdb; pdb.Pdb(skip=['django.*']).set_trace()"
 msgstr ""
 
-#: library/pdb.rst:210
+#: library/pdb.rst:219
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``pdb.Pdb`` with no arguments."
 msgstr ""
 
-#: library/pdb.rst:212
+#: library/pdb.rst:221
 msgid "Added the *skip* parameter."
 msgstr ""
 
-#: library/pdb.rst:215
+#: library/pdb.rst:224
 msgid ""
 "Added the *nosigint* parameter. Previously, a SIGINT handler was never set "
 "by Pdb."
 msgstr ""
 
-#: library/pdb.rst:219
+#: library/pdb.rst:228
 msgid "The *readrc* argument."
 msgstr ""
 
-#: library/pdb.rst:227
+#: library/pdb.rst:236
 msgid "See the documentation for the functions explained above."
 msgstr ""
 
-#: library/pdb.rst:233
+#: library/pdb.rst:242
 msgid "Debugger Commands"
 msgstr ""
 
-#: library/pdb.rst:235
+#: library/pdb.rst:244
 msgid ""
 "The commands recognized by the debugger are listed below.  Most commands can "
 "be abbreviated to one or two letters as indicated; e.g. ``h(elp)`` means "
@@ -337,13 +344,13 @@ msgid ""
 "are separated by a vertical bar (``|``)."
 msgstr ""
 
-#: library/pdb.rst:244
+#: library/pdb.rst:253
 msgid ""
 "Entering a blank line repeats the last command entered.  Exception: if the "
 "last command was a :pdbcmd:`list` command, the next 11 lines are listed."
 msgstr ""
 
-#: library/pdb.rst:247
+#: library/pdb.rst:256
 msgid ""
 "Commands that the debugger doesn't recognize are assumed to be Python "
 "statements and are executed in the context of the program being debugged.  "
@@ -354,14 +361,14 @@ msgid ""
 "is not changed."
 msgstr ""
 
-#: library/pdb.rst:255
+#: library/pdb.rst:264
 msgid ""
 "The debugger supports :ref:`aliases <debugger-aliases>`.  Aliases can have "
 "parameters which allows one a certain level of adaptability to the context "
 "under examination."
 msgstr ""
 
-#: library/pdb.rst:259
+#: library/pdb.rst:268
 msgid ""
 "Multiple commands may be entered on a single line, separated by ``;;``.  (A "
 "single ``;`` is not used as it is the separator for multiple commands in a "
@@ -372,7 +379,7 @@ msgid ""
 "\"\";\"``."
 msgstr ""
 
-#: library/pdb.rst:266
+#: library/pdb.rst:275
 msgid ""
 "To set a temporary global variable, use a *convenience variable*. A "
 "*convenience variable* is a variable whose name starts with ``$``.  For "
@@ -382,27 +389,27 @@ msgid ""
 "compared to using normal variables like ``foo = 1``."
 msgstr ""
 
-#: library/pdb.rst:273
+#: library/pdb.rst:282
 msgid "There are three preset *convenience variables*:"
 msgstr ""
 
-#: library/pdb.rst:275
+#: library/pdb.rst:284
 msgid "``$_frame``: the current frame you are debugging"
 msgstr ""
 
-#: library/pdb.rst:276
+#: library/pdb.rst:285
 msgid "``$_retval``: the return value if the frame is returning"
 msgstr ""
 
-#: library/pdb.rst:277
+#: library/pdb.rst:286
 msgid "``$_exception``: the exception if the frame is raising an exception"
 msgstr ""
 
-#: library/pdb.rst:281
+#: library/pdb.rst:290
 msgid "Added the *convenience variable* feature."
 msgstr ""
 
-#: library/pdb.rst:287
+#: library/pdb.rst:296
 msgid ""
 "If a file :file:`.pdbrc` exists in the user's home directory or in the "
 "current directory, it is read with ``'utf-8'`` encoding and executed as if "
@@ -412,20 +419,20 @@ msgid ""
 "read first and aliases defined there can be overridden by the local file."
 msgstr ""
 
-#: library/pdb.rst:294
+#: library/pdb.rst:303
 msgid ""
 ":file:`.pdbrc` can now contain commands that continue debugging, such as :"
 "pdbcmd:`continue` or :pdbcmd:`next`.  Previously, these commands had no "
 "effect."
 msgstr ""
 
-#: library/pdb.rst:299
+#: library/pdb.rst:308
 msgid ""
 ":file:`.pdbrc` is now read with ``'utf-8'`` encoding. Previously, it was "
 "read with the system locale encoding."
 msgstr ""
 
-#: library/pdb.rst:306
+#: library/pdb.rst:315
 msgid ""
 "Without argument, print the list of available commands.  With a *command* as "
 "argument, print help about that command.  ``help pdb`` displays the full "
@@ -434,26 +441,26 @@ msgid ""
 "the ``!`` command."
 msgstr ""
 
-#: library/pdb.rst:314
+#: library/pdb.rst:323
 msgid ""
 "Print a stack trace, with the most recent frame at the bottom.  An arrow "
 "(``>``) indicates the current frame, which determines the context of most "
 "commands."
 msgstr ""
 
-#: library/pdb.rst:319
+#: library/pdb.rst:328
 msgid ""
 "Move the current frame *count* (default one) levels down in the stack trace "
 "(to a newer frame)."
 msgstr ""
 
-#: library/pdb.rst:324
+#: library/pdb.rst:333
 msgid ""
 "Move the current frame *count* (default one) levels up in the stack trace "
 "(to an older frame)."
 msgstr ""
 
-#: library/pdb.rst:329
+#: library/pdb.rst:338
 msgid ""
 "With a *lineno* argument, set a break there in the current file.  With a "
 "*function* argument, set a break at the first executable statement within "
@@ -464,33 +471,33 @@ msgid ""
 "refer."
 msgstr ""
 
-#: library/pdb.rst:336
+#: library/pdb.rst:345
 msgid ""
 "If a second argument is present, it is an expression which must evaluate to "
 "true before the breakpoint is honored."
 msgstr ""
 
-#: library/pdb.rst:339
+#: library/pdb.rst:348
 msgid ""
 "Without argument, list all breaks, including for each breakpoint, the number "
 "of times that breakpoint has been hit, the current ignore count, and the "
 "associated condition if any."
 msgstr ""
 
-#: library/pdb.rst:345
+#: library/pdb.rst:354
 msgid ""
 "Temporary breakpoint, which is removed automatically when it is first hit. "
 "The arguments are the same as for :pdbcmd:`break`."
 msgstr ""
 
-#: library/pdb.rst:350
+#: library/pdb.rst:359
 msgid ""
 "With a *filename:lineno* argument, clear all the breakpoints at this line. "
 "With a space separated list of breakpoint numbers, clear those breakpoints. "
 "Without argument, clear all breaks (but first ask confirmation)."
 msgstr ""
 
-#: library/pdb.rst:356
+#: library/pdb.rst:365
 msgid ""
 "Disable the breakpoints given as a space separated list of breakpoint "
 "numbers.  Disabling a breakpoint means it cannot cause the program to stop "
@@ -498,11 +505,11 @@ msgid ""
 "breakpoints and can be (re-)enabled."
 msgstr ""
 
-#: library/pdb.rst:363
+#: library/pdb.rst:372
 msgid "Enable the breakpoints specified."
 msgstr ""
 
-#: library/pdb.rst:367
+#: library/pdb.rst:376
 msgid ""
 "Set the ignore count for the given breakpoint number.  If *count* is "
 "omitted, the ignore count is set to 0.  A breakpoint becomes active when the "
@@ -511,21 +518,21 @@ msgid ""
 "associated condition evaluates to true."
 msgstr ""
 
-#: library/pdb.rst:375
+#: library/pdb.rst:384
 msgid ""
 "Set a new *condition* for the breakpoint, an expression which must evaluate "
 "to true before the breakpoint is honored.  If *condition* is absent, any "
 "existing condition is removed; i.e., the breakpoint is made unconditional."
 msgstr ""
 
-#: library/pdb.rst:381
+#: library/pdb.rst:390
 msgid ""
 "Specify a list of commands for breakpoint number *bpnumber*.  The commands "
 "themselves appear on the following lines.  Type a line containing just "
 "``end`` to terminate the commands. An example::"
 msgstr ""
 
-#: library/pdb.rst:385
+#: library/pdb.rst:394
 msgid ""
 "(Pdb) commands 1\n"
 "(com) p some_variable\n"
@@ -533,25 +540,25 @@ msgid ""
 "(Pdb)"
 msgstr ""
 
-#: library/pdb.rst:390
+#: library/pdb.rst:399
 msgid ""
 "To remove all commands from a breakpoint, type ``commands`` and follow it "
 "immediately with ``end``; that is, give no commands."
 msgstr ""
 
-#: library/pdb.rst:393
+#: library/pdb.rst:402
 msgid ""
 "With no *bpnumber* argument, ``commands`` refers to the last breakpoint set."
 msgstr ""
 
-#: library/pdb.rst:395
+#: library/pdb.rst:404
 msgid ""
 "You can use breakpoint commands to start your program up again.  Simply use "
 "the :pdbcmd:`continue` command, or :pdbcmd:`step`, or any other command that "
 "resumes execution."
 msgstr ""
 
-#: library/pdb.rst:399
+#: library/pdb.rst:408
 msgid ""
 "Specifying any command resuming execution (currently :pdbcmd:`continue`, :"
 "pdbcmd:`step`, :pdbcmd:`next`, :pdbcmd:`return`, :pdbcmd:`jump`, :pdbcmd:"
@@ -562,7 +569,7 @@ msgid ""
 "ambiguities about which list to execute."
 msgstr ""
 
-#: library/pdb.rst:408
+#: library/pdb.rst:417
 msgid ""
 "If you use the ``silent`` command in the command list, the usual message "
 "about stopping at a breakpoint is not printed.  This may be desirable for "
@@ -571,13 +578,13 @@ msgid ""
 "was reached."
 msgstr ""
 
-#: library/pdb.rst:415
+#: library/pdb.rst:424
 msgid ""
 "Execute the current line, stop at the first possible occasion (either in a "
 "function that is called or on the next line in the current function)."
 msgstr ""
 
-#: library/pdb.rst:420
+#: library/pdb.rst:429
 msgid ""
 "Continue execution until the next line in the current function is reached or "
 "it returns.  (The difference between :pdbcmd:`next` and :pdbcmd:`step` is "
@@ -586,46 +593,46 @@ msgid ""
 "line in the current function.)"
 msgstr ""
 
-#: library/pdb.rst:428
+#: library/pdb.rst:437
 msgid ""
 "Without argument, continue execution until the line with a number greater "
 "than the current one is reached."
 msgstr ""
 
-#: library/pdb.rst:431
+#: library/pdb.rst:440
 msgid ""
 "With *lineno*, continue execution until a line with a number greater or "
 "equal to *lineno* is reached.  In both cases, also stop when the current "
 "frame returns."
 msgstr ""
 
-#: library/pdb.rst:435
+#: library/pdb.rst:444
 msgid "Allow giving an explicit line number."
 msgstr ""
 
-#: library/pdb.rst:440
+#: library/pdb.rst:449
 msgid "Continue execution until the current function returns."
 msgstr ""
 
-#: library/pdb.rst:444
+#: library/pdb.rst:453
 msgid "Continue execution, only stop when a breakpoint is encountered."
 msgstr ""
 
-#: library/pdb.rst:448
+#: library/pdb.rst:457
 msgid ""
 "Set the next line that will be executed.  Only available in the bottom-most "
 "frame.  This lets you jump back and execute code again, or jump forward to "
 "skip code that you don't want to run."
 msgstr ""
 
-#: library/pdb.rst:452
+#: library/pdb.rst:461
 msgid ""
 "It should be noted that not all jumps are allowed -- for instance it is not "
 "possible to jump into the middle of a :keyword:`for` loop or out of a :"
 "keyword:`finally` clause."
 msgstr ""
 
-#: library/pdb.rst:458
+#: library/pdb.rst:467
 msgid ""
 "List source code for the current file.  Without arguments, list 11 lines "
 "around the current line or continue the previous listing.  With ``.`` as "
@@ -634,7 +641,7 @@ msgid ""
 "second argument is less than the first, it is interpreted as a count."
 msgstr ""
 
-#: library/pdb.rst:464
+#: library/pdb.rst:473
 msgid ""
 "The current line in the current frame is indicated by ``->``.  If an "
 "exception is being debugged, the line where the exception was originally "
@@ -642,67 +649,67 @@ msgid ""
 "line."
 msgstr ""
 
-#: library/pdb.rst:469
+#: library/pdb.rst:478
 msgid "Added the ``>>`` marker."
 msgstr ""
 
-#: library/pdb.rst:474
+#: library/pdb.rst:483
 msgid ""
 "List all source code for the current function or frame.  Interesting lines "
 "are marked as for :pdbcmd:`list`."
 msgstr ""
 
-#: library/pdb.rst:481
+#: library/pdb.rst:490
 msgid "Print the arguments of the current function and their current values."
 msgstr ""
 
-#: library/pdb.rst:485
+#: library/pdb.rst:494
 msgid "Evaluate *expression* in the current context and print its value."
 msgstr ""
 
-#: library/pdb.rst:489
+#: library/pdb.rst:498
 msgid ""
 "``print()`` can also be used, but is not a debugger command --- this "
 "executes the Python :func:`print` function."
 msgstr ""
 
-#: library/pdb.rst:495
+#: library/pdb.rst:504
 msgid ""
 "Like the :pdbcmd:`p` command, except the value of *expression* is pretty-"
 "printed using the :mod:`pprint` module."
 msgstr ""
 
-#: library/pdb.rst:500
+#: library/pdb.rst:509
 msgid "Print the type of *expression*."
 msgstr ""
 
-#: library/pdb.rst:504
+#: library/pdb.rst:513
 msgid "Try to get source code of *expression* and display it."
 msgstr ""
 
-#: library/pdb.rst:510
+#: library/pdb.rst:519
 msgid ""
 "Display the value of *expression* if it changed, each time execution stops "
 "in the current frame."
 msgstr ""
 
-#: library/pdb.rst:513
+#: library/pdb.rst:522
 msgid ""
 "Without *expression*, list all display expressions for the current frame."
 msgstr ""
 
-#: library/pdb.rst:517
+#: library/pdb.rst:526
 msgid ""
 "Display evaluates *expression* and compares to the result of the previous "
 "evaluation of *expression*, so when the result is mutable, display may not "
 "be able to pick up the changes."
 msgstr ""
 
-#: library/pdb.rst:521
+#: library/pdb.rst:530
 msgid "Example::"
 msgstr ""
 
-#: library/pdb.rst:523
+#: library/pdb.rst:532
 msgid ""
 "lst = []\n"
 "breakpoint()\n"
@@ -711,13 +718,13 @@ msgid ""
 "print(lst)"
 msgstr ""
 
-#: library/pdb.rst:529
+#: library/pdb.rst:538
 msgid ""
 "Display won't realize ``lst`` has been changed because the result of "
 "evaluation is modified in place by ``lst.append(1)`` before being compared::"
 msgstr ""
 
-#: library/pdb.rst:532
+#: library/pdb.rst:541
 msgid ""
 "> example.py(3)<module>()\n"
 "-> pass\n"
@@ -732,11 +739,11 @@ msgid ""
 "(Pdb)"
 msgstr ""
 
-#: library/pdb.rst:544
+#: library/pdb.rst:553
 msgid "You can do some tricks with copy mechanism to make it work::"
 msgstr ""
 
-#: library/pdb.rst:546
+#: library/pdb.rst:555
 msgid ""
 "> example.py(3)<module>()\n"
 "-> pass\n"
@@ -752,20 +759,20 @@ msgid ""
 "(Pdb)"
 msgstr ""
 
-#: library/pdb.rst:563
+#: library/pdb.rst:572
 msgid ""
 "Do not display *expression* anymore in the current frame.  Without "
 "*expression*, clear all display expressions for the current frame."
 msgstr ""
 
-#: library/pdb.rst:570
+#: library/pdb.rst:579
 msgid ""
 "Start an interactive interpreter (using the :mod:`code` module) whose global "
 "namespace contains all the (global and local) names found in the current "
 "scope."
 msgstr ""
 
-#: library/pdb.rst:580
+#: library/pdb.rst:589
 msgid ""
 "Create an alias called *name* that executes *command*.  The *command* must "
 "*not* be enclosed in quotes.  Replaceable parameters can be indicated by "
@@ -774,7 +781,7 @@ msgid ""
 "arguments are given, all aliases are listed."
 msgstr ""
 
-#: library/pdb.rst:586
+#: library/pdb.rst:595
 msgid ""
 "Aliases may be nested and can contain anything that can be legally typed at "
 "the pdb prompt.  Note that internal pdb commands *can* be overridden by "
@@ -783,13 +790,13 @@ msgid ""
 "other words in the line are left alone."
 msgstr ""
 
-#: library/pdb.rst:592
+#: library/pdb.rst:601
 msgid ""
 "As an example, here are two useful aliases (especially when placed in the :"
 "file:`.pdbrc` file)::"
 msgstr ""
 
-#: library/pdb.rst:595
+#: library/pdb.rst:604
 msgid ""
 "# Print instance variables (usage \"pi classInst\")\n"
 "alias pi for k in %1.__dict__.keys(): print(f\"%1.{k} = {%1.__dict__[k]}\")\n"
@@ -797,36 +804,36 @@ msgid ""
 "alias ps pi self"
 msgstr ""
 
-#: library/pdb.rst:602
+#: library/pdb.rst:611
 msgid "Delete the specified alias *name*."
 msgstr ""
 
-#: library/pdb.rst:606
+#: library/pdb.rst:615
 msgid ""
 "Execute the (one-line) *statement* in the context of the current stack "
 "frame. The exclamation point can be omitted unless the first word of the "
 "statement resembles a debugger command, e.g.:"
 msgstr ""
 
-#: library/pdb.rst:610
+#: library/pdb.rst:619
 msgid ""
 "(Pdb) ! n=42\n"
 "(Pdb)"
 msgstr ""
 
-#: library/pdb.rst:615
+#: library/pdb.rst:624
 msgid ""
 "To set a global variable, you can prefix the assignment command with a :"
 "keyword:`global` statement on the same line, e.g.:"
 msgstr ""
 
-#: library/pdb.rst:618
+#: library/pdb.rst:627
 msgid ""
 "(Pdb) global list_options; list_options = ['-l']\n"
 "(Pdb)"
 msgstr ""
 
-#: library/pdb.rst:626
+#: library/pdb.rst:635
 msgid ""
 "Restart the debugged Python program.  If *args* is supplied, it is split "
 "with :mod:`shlex` and the result is used as the new :data:`sys.argv`. "
@@ -834,25 +841,25 @@ msgid ""
 "`restart` is an alias for :pdbcmd:`run`."
 msgstr ""
 
-#: library/pdb.rst:633
+#: library/pdb.rst:642
 msgid "Quit from the debugger.  The program being executed is aborted."
 msgstr ""
 
-#: library/pdb.rst:637
+#: library/pdb.rst:646
 msgid ""
 "Enter a recursive debugger that steps through *code* (which is an arbitrary "
 "expression or statement to be executed in the current environment)."
 msgstr ""
 
-#: library/pdb.rst:643
+#: library/pdb.rst:652
 msgid "Print the return value for the last return of the current function."
 msgstr ""
 
-#: library/pdb.rst:646
+#: library/pdb.rst:655
 msgid "Footnotes"
 msgstr ""
 
-#: library/pdb.rst:647
+#: library/pdb.rst:656
 msgid ""
 "Whether a frame is considered to originate in a certain module is determined "
 "by the ``__name__`` in the frame globals."
@@ -878,18 +885,18 @@ msgstr ""
 msgid "cmd"
 msgstr ""
 
-#: library/pdb.rst:283
+#: library/pdb.rst:292
 msgid ".pdbrc"
 msgstr ""
 
-#: library/pdb.rst:283
+#: library/pdb.rst:292
 msgid "file"
 msgstr ""
 
-#: library/pdb.rst:283
+#: library/pdb.rst:292
 msgid "debugger"
 msgstr ""
 
-#: library/pdb.rst:283
+#: library/pdb.rst:292
 msgid "configuration"
 msgstr ""
diff --git a/library/plistlib.po b/library/plistlib.po
index 9bdf94b26..bc01ea249 100644
--- a/library/plistlib.po
+++ b/library/plistlib.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -123,103 +123,110 @@ msgstr ""
 
 #: library/plistlib.rst:77
 msgid ""
-"The parser for the binary format raises :exc:`InvalidFileException` when the "
-"file cannot be parsed."
+"The parser raises :exc:`InvalidFileException` when the file cannot be parsed."
 msgstr ""
 
-#: library/plistlib.rst:85
+#: library/plistlib.rst:84
 msgid ""
 "Load a plist from a bytes object. See :func:`load` for an explanation of the "
 "keyword arguments."
 msgstr ""
 
-#: library/plistlib.rst:93
+#: library/plistlib.rst:92
 msgid ""
-"Write *value* to a plist file. *Fp* should be a writable, binary file object."
+"Write *value* to a plist file. *fp* should be a writable, binary file object."
 msgstr ""
 
-#: library/plistlib.rst:96
+#: library/plistlib.rst:95
 msgid ""
 "The *fmt* argument specifies the format of the plist file and can be one of "
 "the following values:"
 msgstr ""
 
-#: library/plistlib.rst:99
+#: library/plistlib.rst:98
 msgid ":data:`FMT_XML`: XML formatted plist file"
 msgstr ""
 
-#: library/plistlib.rst:101
+#: library/plistlib.rst:100
 msgid ":data:`FMT_BINARY`: Binary formatted plist file"
 msgstr ""
 
-#: library/plistlib.rst:103
+#: library/plistlib.rst:102
 msgid ""
 "When *sort_keys* is true (the default) the keys for dictionaries will be "
 "written to the plist in sorted order, otherwise they will be written in the "
 "iteration order of the dictionary."
 msgstr ""
 
-#: library/plistlib.rst:107
+#: library/plistlib.rst:106
 msgid ""
 "When *skipkeys* is false (the default) the function raises :exc:`TypeError` "
 "when a key of a dictionary is not a string, otherwise such keys are skipped."
 msgstr ""
 
-#: library/plistlib.rst:110
+#: library/plistlib.rst:109
 msgid ""
 "A :exc:`TypeError` will be raised if the object is of an unsupported type or "
 "a container that contains objects of unsupported types."
 msgstr ""
 
-#: library/plistlib.rst:113
+#: library/plistlib.rst:112
 msgid ""
 "An :exc:`OverflowError` will be raised for integer values that cannot be "
 "represented in (binary) plist files."
 msgstr ""
 
-#: library/plistlib.rst:121
+#: library/plistlib.rst:120
 msgid ""
 "Return *value* as a plist-formatted bytes object. See the documentation for :"
 "func:`dump` for an explanation of the keyword arguments of this function."
 msgstr ""
 
-#: library/plistlib.rst:128
+#: library/plistlib.rst:127
 msgid "The following classes are available:"
 msgstr ""
 
-#: library/plistlib.rst:132
+#: library/plistlib.rst:131
 msgid ""
 "Wraps an :class:`int`.  This is used when reading or writing NSKeyedArchiver "
 "encoded data, which contains UID (see PList manual)."
 msgstr ""
 
-#: library/plistlib.rst:135
+#: library/plistlib.rst:134
 msgid ""
 "It has one attribute, :attr:`data`, which can be used to retrieve the int "
 "value of the UID.  :attr:`data` must be in the range ``0 <= data < 2**64``."
 msgstr ""
 
-#: library/plistlib.rst:141
+#: library/plistlib.rst:140
 msgid "The following constants are available:"
 msgstr ""
 
-#: library/plistlib.rst:145
+#: library/plistlib.rst:144
 msgid "The XML format for plist files."
 msgstr ""
 
-#: library/plistlib.rst:152
+#: library/plistlib.rst:151
 msgid "The binary format for plist files"
 msgstr ""
 
-#: library/plistlib.rst:158
-msgid "Examples"
+#: library/plistlib.rst:156
+msgid "The module defines the following exceptions:"
 msgstr ""
 
 #: library/plistlib.rst:160
+msgid "Raised when a file cannot be parsed."
+msgstr ""
+
+#: library/plistlib.rst:166
+msgid "Examples"
+msgstr ""
+
+#: library/plistlib.rst:168
 msgid "Generating a plist::"
 msgstr ""
 
-#: library/plistlib.rst:162
+#: library/plistlib.rst:170
 msgid ""
 "import datetime\n"
 "import plistlib\n"
@@ -242,11 +249,11 @@ msgid ""
 "print(plistlib.dumps(pl).decode())"
 msgstr ""
 
-#: library/plistlib.rst:182
+#: library/plistlib.rst:190
 msgid "Parsing a plist::"
 msgstr ""
 
-#: library/plistlib.rst:184
+#: library/plistlib.rst:192
 msgid ""
 "import plistlib\n"
 "\n"
diff --git a/library/pprint.po b/library/pprint.po
index 89d580bb5..1da2ff101 100644
--- a/library/pprint.po
+++ b/library/pprint.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -265,7 +265,7 @@ msgid ""
 ">>> import json\n"
 ">>> import pprint\n"
 ">>> from urllib.request import urlopen\n"
-">>> with urlopen('https://pypi.org/pypi/sampleproject/json') as resp:\n"
+">>> with urlopen('https://pypi.org/pypi/sampleproject/1.2.0/json') as resp:\n"
 "...     project_info = json.load(resp)['info']"
 msgstr ""
 
diff --git a/library/profile.po b/library/profile.po
index 892c42224..c13294f15 100644
--- a/library/profile.po
+++ b/library/profile.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -203,47 +203,48 @@ msgid ""
 "formats them in various ways."
 msgstr ""
 
-#: library/profile.rst:126
+#: library/profile.rst:128
 msgid ""
 "The files :mod:`cProfile` and :mod:`profile` can also be invoked as a script "
 "to profile another script.  For example::"
 msgstr ""
 
-#: library/profile.rst:129
+#: library/profile.rst:131
 msgid ""
 "python -m cProfile [-o output_file] [-s sort_order] (-m module | myscript.py)"
 msgstr ""
 
-#: library/profile.rst:131
-msgid "``-o`` writes the profile results to a file instead of to stdout"
+#: library/profile.rst:135
+msgid "Writes the profile results to a file instead of to stdout."
 msgstr ""
 
-#: library/profile.rst:133
+#: library/profile.rst:139
 msgid ""
-"``-s`` specifies one of the :func:`~pstats.Stats.sort_stats` sort values to "
-"sort the output by. This only applies when ``-o`` is not supplied."
+"Specifies one of the :func:`~pstats.Stats.sort_stats` sort values to sort "
+"the output by. This only applies when :option:`-o <cProfile -o>` is not "
+"supplied."
 msgstr ""
 
-#: library/profile.rst:136
-msgid "``-m`` specifies that a module is being profiled instead of a script."
+#: library/profile.rst:145
+msgid "Specifies that a module is being profiled instead of a script."
 msgstr ""
 
-#: library/profile.rst:138
+#: library/profile.rst:147
 msgid "Added the ``-m`` option to :mod:`cProfile`."
 msgstr ""
 
-#: library/profile.rst:141
+#: library/profile.rst:150
 msgid "Added the ``-m`` option to :mod:`profile`."
 msgstr ""
 
-#: library/profile.rst:144
+#: library/profile.rst:153
 msgid ""
 "The :mod:`pstats` module's :class:`~pstats.Stats` class has a variety of "
 "methods for manipulating and printing the data saved into a profile results "
 "file::"
 msgstr ""
 
-#: library/profile.rst:147
+#: library/profile.rst:156
 msgid ""
 "import pstats\n"
 "from pstats import SortKey\n"
@@ -251,7 +252,7 @@ msgid ""
 "p.strip_dirs().sort_stats(-1).print_stats()"
 msgstr ""
 
-#: library/profile.rst:152
+#: library/profile.rst:161
 msgid ""
 "The :meth:`~pstats.Stats.strip_dirs` method removed the extraneous path from "
 "all the module names. The :meth:`~pstats.Stats.sort_stats` method sorted all "
@@ -260,66 +261,66 @@ msgid ""
 "statistics.  You might try the following sort calls::"
 msgstr ""
 
-#: library/profile.rst:158
+#: library/profile.rst:167
 msgid ""
 "p.sort_stats(SortKey.NAME)\n"
 "p.print_stats()"
 msgstr ""
 
-#: library/profile.rst:161
+#: library/profile.rst:170
 msgid ""
 "The first call will actually sort the list by function name, and the second "
 "call will print out the statistics.  The following are some interesting "
 "calls to experiment with::"
 msgstr ""
 
-#: library/profile.rst:165
+#: library/profile.rst:174
 msgid "p.sort_stats(SortKey.CUMULATIVE).print_stats(10)"
 msgstr ""
 
-#: library/profile.rst:167
+#: library/profile.rst:176
 msgid ""
 "This sorts the profile by cumulative time in a function, and then only "
 "prints the ten most significant lines.  If you want to understand what "
 "algorithms are taking time, the above line is what you would use."
 msgstr ""
 
-#: library/profile.rst:171
+#: library/profile.rst:180
 msgid ""
 "If you were looking to see what functions were looping a lot, and taking a "
 "lot of time, you would do::"
 msgstr ""
 
-#: library/profile.rst:174
+#: library/profile.rst:183
 msgid "p.sort_stats(SortKey.TIME).print_stats(10)"
 msgstr ""
 
-#: library/profile.rst:176
+#: library/profile.rst:185
 msgid ""
 "to sort according to time spent within each function, and then print the "
 "statistics for the top ten functions."
 msgstr ""
 
-#: library/profile.rst:179
+#: library/profile.rst:188
 msgid "You might also try::"
 msgstr ""
 
-#: library/profile.rst:181
+#: library/profile.rst:190
 msgid "p.sort_stats(SortKey.FILENAME).print_stats('__init__')"
 msgstr ""
 
-#: library/profile.rst:183
+#: library/profile.rst:192
 msgid ""
 "This will sort all the statistics by file name, and then print out "
 "statistics for only the class init methods (since they are spelled with "
 "``__init__`` in them).  As one final example, you could try::"
 msgstr ""
 
-#: library/profile.rst:187
+#: library/profile.rst:196
 msgid "p.sort_stats(SortKey.TIME, SortKey.CUMULATIVE).print_stats(.5, 'init')"
 msgstr ""
 
-#: library/profile.rst:189
+#: library/profile.rst:198
 msgid ""
 "This line sorts statistics with a primary key of time, and a secondary key "
 "of cumulative time, and then prints out some of the statistics. To be "
@@ -328,60 +329,60 @@ msgid ""
 "list is printed."
 msgstr ""
 
-#: library/profile.rst:194
+#: library/profile.rst:203
 msgid ""
 "If you wondered what functions called the above functions, you could now "
 "(``p`` is still sorted according to the last criteria) do::"
 msgstr ""
 
-#: library/profile.rst:197
+#: library/profile.rst:206
 msgid "p.print_callers(.5, 'init')"
 msgstr ""
 
-#: library/profile.rst:199
+#: library/profile.rst:208
 msgid "and you would get a list of callers for each of the listed functions."
 msgstr ""
 
-#: library/profile.rst:201
+#: library/profile.rst:210
 msgid ""
 "If you want more functionality, you're going to have to read the manual, or "
 "guess what the following functions do::"
 msgstr ""
 
-#: library/profile.rst:204
+#: library/profile.rst:213
 msgid ""
 "p.print_callees()\n"
 "p.add('restats')"
 msgstr ""
 
-#: library/profile.rst:207
+#: library/profile.rst:216
 msgid ""
 "Invoked as a script, the :mod:`pstats` module is a statistics browser for "
 "reading and examining profile dumps.  It has a simple line-oriented "
 "interface (implemented using :mod:`cmd`) and interactive help."
 msgstr ""
 
-#: library/profile.rst:212
+#: library/profile.rst:221
 msgid ":mod:`profile` and :mod:`cProfile` Module Reference"
 msgstr ""
 
-#: library/profile.rst:218
+#: library/profile.rst:227
 msgid ""
 "Both the :mod:`profile` and :mod:`cProfile` modules provide the following "
 "functions:"
 msgstr ""
 
-#: library/profile.rst:223
+#: library/profile.rst:232
 msgid ""
 "This function takes a single argument that can be passed to the :func:`exec` "
 "function, and an optional file name.  In all cases this routine executes::"
 msgstr ""
 
-#: library/profile.rst:226
+#: library/profile.rst:235
 msgid "exec(command, __main__.__dict__, __main__.__dict__)"
 msgstr ""
 
-#: library/profile.rst:228
+#: library/profile.rst:237
 msgid ""
 "and gathers profiling statistics from the execution. If no file name is "
 "present, then this function automatically creates a :class:`~pstats.Stats` "
@@ -390,28 +391,28 @@ msgid ""
 "how the results are sorted."
 msgstr ""
 
-#: library/profile.rst:236
+#: library/profile.rst:245
 msgid ""
 "This function is similar to :func:`run`, with added arguments to supply the "
 "globals and locals dictionaries for the *command* string. This routine "
 "executes::"
 msgstr ""
 
-#: library/profile.rst:240
+#: library/profile.rst:249
 msgid "exec(command, globals, locals)"
 msgstr ""
 
-#: library/profile.rst:242
+#: library/profile.rst:251
 msgid "and gathers profiling statistics as in the :func:`run` function above."
 msgstr ""
 
-#: library/profile.rst:246
+#: library/profile.rst:255
 msgid ""
 "This class is normally only used if more precise control over profiling is "
 "needed than what the :func:`cProfile.run` function provides."
 msgstr ""
 
-#: library/profile.rst:249
+#: library/profile.rst:258
 msgid ""
 "A custom timer can be supplied for measuring how long code takes to run via "
 "the *timer* argument. This must be a function that returns a single number "
@@ -421,13 +422,13 @@ msgid ""
 "time unit would be ``.001``."
 msgstr ""
 
-#: library/profile.rst:256
+#: library/profile.rst:265
 msgid ""
 "Directly using the :class:`Profile` class allows formatting profile results "
 "without writing the profile data to a file::"
 msgstr ""
 
-#: library/profile.rst:259
+#: library/profile.rst:268
 msgid ""
 "import cProfile, pstats, io\n"
 "from pstats import SortKey\n"
@@ -442,13 +443,13 @@ msgid ""
 "print(s.getvalue())"
 msgstr ""
 
-#: library/profile.rst:271
+#: library/profile.rst:280
 msgid ""
 "The :class:`Profile` class can also be used as a context manager (supported "
 "only in :mod:`cProfile` module. see :ref:`typecontextmanager`)::"
 msgstr ""
 
-#: library/profile.rst:274
+#: library/profile.rst:283
 msgid ""
 "import cProfile\n"
 "\n"
@@ -458,49 +459,49 @@ msgid ""
 "    pr.print_stats()"
 msgstr ""
 
-#: library/profile.rst:281
+#: library/profile.rst:290
 msgid "Added context manager support."
 msgstr ""
 
-#: library/profile.rst:286
+#: library/profile.rst:295
 msgid "Start collecting profiling data. Only in :mod:`cProfile`."
 msgstr ""
 
-#: library/profile.rst:290
+#: library/profile.rst:299
 msgid "Stop collecting profiling data. Only in :mod:`cProfile`."
 msgstr ""
 
-#: library/profile.rst:294
+#: library/profile.rst:303
 msgid ""
 "Stop collecting profiling data and record the results internally as the "
 "current profile."
 msgstr ""
 
-#: library/profile.rst:299
+#: library/profile.rst:308
 msgid ""
 "Create a :class:`~pstats.Stats` object based on the current profile and "
 "print the results to stdout."
 msgstr ""
 
-#: library/profile.rst:304
+#: library/profile.rst:313
 msgid "Write the results of the current profile to *filename*."
 msgstr ""
 
-#: library/profile.rst:308
+#: library/profile.rst:317
 msgid "Profile the cmd via :func:`exec`."
 msgstr ""
 
-#: library/profile.rst:312
+#: library/profile.rst:321
 msgid ""
 "Profile the cmd via :func:`exec` with the specified global and local "
 "environment."
 msgstr ""
 
-#: library/profile.rst:317
+#: library/profile.rst:326
 msgid "Profile ``func(*args, **kwargs)``"
 msgstr ""
 
-#: library/profile.rst:319
+#: library/profile.rst:328
 msgid ""
 "Note that profiling will only work if the called command/function actually "
 "returns.  If the interpreter is terminated (e.g. via a :func:`sys.exit` call "
@@ -508,23 +509,23 @@ msgid ""
 "printed."
 msgstr ""
 
-#: library/profile.rst:327
+#: library/profile.rst:336
 msgid "The :class:`Stats` Class"
 msgstr ""
 
-#: library/profile.rst:329
+#: library/profile.rst:338
 msgid ""
 "Analysis of the profiler data is done using the :class:`~pstats.Stats` class."
 msgstr ""
 
-#: library/profile.rst:336
+#: library/profile.rst:345
 msgid ""
 "This class constructor creates an instance of a \"statistics object\" from a "
 "*filename* (or list of filenames) or from a :class:`Profile` instance. "
 "Output will be printed to the stream specified by *stream*."
 msgstr ""
 
-#: library/profile.rst:340
+#: library/profile.rst:349
 msgid ""
 "The file selected by the above constructor must have been created by the "
 "corresponding version of :mod:`profile` or :mod:`cProfile`.  To be specific, "
@@ -538,17 +539,17 @@ msgid ""
 "can be used."
 msgstr ""
 
-#: library/profile.rst:351
+#: library/profile.rst:360
 msgid ""
 "Instead of reading the profile data from a file, a :class:`cProfile.Profile` "
 "or :class:`profile.Profile` object can be used as the profile data source."
 msgstr ""
 
-#: library/profile.rst:354
+#: library/profile.rst:363
 msgid ":class:`Stats` objects have the following methods:"
 msgstr ""
 
-#: library/profile.rst:358
+#: library/profile.rst:367
 msgid ""
 "This method for the :class:`Stats` class removes all leading path "
 "information from file names.  It is very useful in reducing the size of the "
@@ -562,7 +563,7 @@ msgid ""
 "single entry."
 msgstr ""
 
-#: library/profile.rst:372
+#: library/profile.rst:381
 msgid ""
 "This method of the :class:`Stats` class accumulates additional profiling "
 "information into the current profiling object.  Its arguments should refer "
@@ -571,7 +572,7 @@ msgid ""
 "functions are automatically accumulated into single function statistics."
 msgstr ""
 
-#: library/profile.rst:382
+#: library/profile.rst:391
 msgid ""
 "Save the data loaded into the :class:`Stats` object to a file named "
 "*filename*.  The file is created if it does not exist, and is overwritten if "
@@ -579,7 +580,7 @@ msgid ""
 "the :class:`profile.Profile` and :class:`cProfile.Profile` classes."
 msgstr ""
 
-#: library/profile.rst:390
+#: library/profile.rst:399
 msgid ""
 "This method modifies the :class:`Stats` object by sorting it according to "
 "the supplied criteria.  The argument can be either a string or a SortKey "
@@ -589,7 +590,7 @@ msgid ""
 "prone."
 msgstr ""
 
-#: library/profile.rst:397
+#: library/profile.rst:406
 msgid ""
 "When more than one key is provided, then additional keys are used as "
 "secondary criteria when there is equality in all keys selected before them.  "
@@ -598,161 +599,161 @@ msgid ""
 "function names) by sorting by file name."
 msgstr ""
 
-#: library/profile.rst:403
+#: library/profile.rst:412
 msgid ""
 "For the string argument, abbreviations can be used for any key names, as "
 "long as the abbreviation is unambiguous."
 msgstr ""
 
-#: library/profile.rst:406
+#: library/profile.rst:415
 msgid "The following are the valid string and SortKey:"
 msgstr ""
 
-#: library/profile.rst:409
+#: library/profile.rst:418
 msgid "Valid String Arg"
 msgstr ""
 
-#: library/profile.rst:409
+#: library/profile.rst:418
 msgid "Valid enum Arg"
 msgstr ""
 
-#: library/profile.rst:409
+#: library/profile.rst:418
 msgid "Meaning"
 msgstr ""
 
-#: library/profile.rst:411
+#: library/profile.rst:420
 msgid "``'calls'``"
 msgstr ""
 
-#: library/profile.rst:411
+#: library/profile.rst:420
 msgid "SortKey.CALLS"
 msgstr ""
 
-#: library/profile.rst:423
+#: library/profile.rst:432
 msgid "call count"
 msgstr ""
 
-#: library/profile.rst:413
+#: library/profile.rst:422
 msgid "``'cumulative'``"
 msgstr ""
 
-#: library/profile.rst:413
+#: library/profile.rst:422
 msgid "SortKey.CUMULATIVE"
 msgstr ""
 
-#: library/profile.rst:415
+#: library/profile.rst:424
 msgid "cumulative time"
 msgstr ""
 
-#: library/profile.rst:415
+#: library/profile.rst:424
 msgid "``'cumtime'``"
 msgstr ""
 
-#: library/profile.rst:417 library/profile.rst:423 library/profile.rst:437
+#: library/profile.rst:426 library/profile.rst:432 library/profile.rst:446
 msgid "N/A"
 msgstr ""
 
-#: library/profile.rst:417
+#: library/profile.rst:426
 msgid "``'file'``"
 msgstr ""
 
-#: library/profile.rst:419 library/profile.rst:421
+#: library/profile.rst:428 library/profile.rst:430
 msgid "file name"
 msgstr ""
 
-#: library/profile.rst:419
+#: library/profile.rst:428
 msgid "``'filename'``"
 msgstr ""
 
-#: library/profile.rst:419
+#: library/profile.rst:428
 msgid "SortKey.FILENAME"
 msgstr ""
 
-#: library/profile.rst:421
+#: library/profile.rst:430
 msgid "``'module'``"
 msgstr ""
 
-#: library/profile.rst:423
+#: library/profile.rst:432
 msgid "``'ncalls'``"
 msgstr ""
 
-#: library/profile.rst:425
+#: library/profile.rst:434
 msgid "``'pcalls'``"
 msgstr ""
 
-#: library/profile.rst:425
+#: library/profile.rst:434
 msgid "SortKey.PCALLS"
 msgstr ""
 
-#: library/profile.rst:425
+#: library/profile.rst:434
 msgid "primitive call count"
 msgstr ""
 
-#: library/profile.rst:427
+#: library/profile.rst:436
 msgid "``'line'``"
 msgstr ""
 
-#: library/profile.rst:427
+#: library/profile.rst:436
 msgid "SortKey.LINE"
 msgstr ""
 
-#: library/profile.rst:427
+#: library/profile.rst:436
 msgid "line number"
 msgstr ""
 
-#: library/profile.rst:429
+#: library/profile.rst:438
 msgid "``'name'``"
 msgstr ""
 
-#: library/profile.rst:429
+#: library/profile.rst:438
 msgid "SortKey.NAME"
 msgstr ""
 
-#: library/profile.rst:429
+#: library/profile.rst:438
 msgid "function name"
 msgstr ""
 
-#: library/profile.rst:431
+#: library/profile.rst:440
 msgid "``'nfl'``"
 msgstr ""
 
-#: library/profile.rst:431
+#: library/profile.rst:440
 msgid "SortKey.NFL"
 msgstr ""
 
-#: library/profile.rst:431
+#: library/profile.rst:440
 msgid "name/file/line"
 msgstr ""
 
-#: library/profile.rst:433
+#: library/profile.rst:442
 msgid "``'stdname'``"
 msgstr ""
 
-#: library/profile.rst:433
+#: library/profile.rst:442
 msgid "SortKey.STDNAME"
 msgstr ""
 
-#: library/profile.rst:433
+#: library/profile.rst:442
 msgid "standard name"
 msgstr ""
 
-#: library/profile.rst:435
+#: library/profile.rst:444
 msgid "``'time'``"
 msgstr ""
 
-#: library/profile.rst:435
+#: library/profile.rst:444
 msgid "SortKey.TIME"
 msgstr ""
 
-#: library/profile.rst:437
+#: library/profile.rst:446
 msgid "internal time"
 msgstr ""
 
-#: library/profile.rst:437
+#: library/profile.rst:446
 msgid "``'tottime'``"
 msgstr ""
 
-#: library/profile.rst:440
+#: library/profile.rst:449
 msgid ""
 "Note that all sorts on statistics are in descending order (placing most time "
 "consuming items first), where as name, file, and line number searches are in "
@@ -766,7 +767,7 @@ msgid ""
 "SortKey.FILENAME, SortKey.LINE)``."
 msgstr ""
 
-#: library/profile.rst:451
+#: library/profile.rst:460
 msgid ""
 "For backward-compatibility reasons, the numeric arguments ``-1``, ``0``, "
 "``1``, and ``2`` are permitted.  They are interpreted as ``'stdname'``, "
@@ -775,31 +776,31 @@ msgid ""
 "used, and additional arguments will be silently ignored."
 msgstr ""
 
-#: library/profile.rst:459
+#: library/profile.rst:468
 msgid "Added the SortKey enum."
 msgstr ""
 
-#: library/profile.rst:464
+#: library/profile.rst:473
 msgid ""
 "This method for the :class:`Stats` class reverses the ordering of the basic "
 "list within the object.  Note that by default ascending vs descending order "
 "is properly selected based on the sort key of choice."
 msgstr ""
 
-#: library/profile.rst:474
+#: library/profile.rst:483
 msgid ""
 "This method for the :class:`Stats` class prints out a report as described in "
 "the :func:`profile.run` definition."
 msgstr ""
 
-#: library/profile.rst:477
+#: library/profile.rst:486
 msgid ""
 "The order of the printing is based on the last :meth:`~pstats.Stats."
 "sort_stats` operation done on the object (subject to caveats in :meth:"
 "`~pstats.Stats.add` and :meth:`~pstats.Stats.strip_dirs`)."
 msgstr ""
 
-#: library/profile.rst:482
+#: library/profile.rst:491
 msgid ""
 "The arguments provided (if any) can be used to limit the list down to the "
 "significant entries.  Initially, the list is taken to be the complete set of "
@@ -811,28 +812,28 @@ msgid ""
 "example::"
 msgstr ""
 
-#: library/profile.rst:491
+#: library/profile.rst:500
 msgid "print_stats(.1, 'foo:')"
 msgstr ""
 
-#: library/profile.rst:493
+#: library/profile.rst:502
 msgid ""
 "would first limit the printing to first 10% of list, and then only print "
 "functions that were part of filename :file:`.\\*foo:`.  In contrast, the "
 "command::"
 msgstr ""
 
-#: library/profile.rst:497
+#: library/profile.rst:506
 msgid "print_stats('foo:', .1)"
 msgstr ""
 
-#: library/profile.rst:499
+#: library/profile.rst:508
 msgid ""
 "would limit the list to all functions having file names :file:`.\\*foo:`, "
 "and then proceed to only print the first 10% of them."
 msgstr ""
 
-#: library/profile.rst:505
+#: library/profile.rst:514
 msgid ""
 "This method for the :class:`Stats` class prints a list of all functions that "
 "called each function in the profiled database.  The ordering is identical to "
@@ -842,7 +843,7 @@ msgid ""
 "produced the stats:"
 msgstr ""
 
-#: library/profile.rst:512
+#: library/profile.rst:521
 msgid ""
 "With :mod:`profile`, a number is shown in parentheses after each caller to "
 "show how many times this specific call was made.  For convenience, a second "
@@ -850,14 +851,14 @@ msgid ""
 "at the right."
 msgstr ""
 
-#: library/profile.rst:517
+#: library/profile.rst:526
 msgid ""
 "With :mod:`cProfile`, each caller is preceded by three numbers: the number "
 "of times this specific call was made, and the total and cumulative times "
 "spent in the current function while it was invoked by this specific caller."
 msgstr ""
 
-#: library/profile.rst:525
+#: library/profile.rst:534
 msgid ""
 "This method for the :class:`Stats` class prints a list of all function that "
 "were called by the indicated function.  Aside from this reversal of "
@@ -865,7 +866,7 @@ msgid ""
 "are identical to the :meth:`~pstats.Stats.print_callers` method."
 msgstr ""
 
-#: library/profile.rst:533
+#: library/profile.rst:542
 msgid ""
 "This method returns an instance of StatsProfile, which contains a mapping of "
 "function names to instances of FunctionProfile. Each FunctionProfile "
@@ -873,17 +874,17 @@ msgid ""
 "long the function took to run, how many times it was called, etc..."
 msgstr ""
 
-#: library/profile.rst:538
+#: library/profile.rst:547
 msgid ""
 "Added the following dataclasses: StatsProfile, FunctionProfile. Added the "
 "following function: get_stats_profile."
 msgstr ""
 
-#: library/profile.rst:545
+#: library/profile.rst:554
 msgid "What Is Deterministic Profiling?"
 msgstr ""
 
-#: library/profile.rst:547
+#: library/profile.rst:556
 msgid ""
 ":dfn:`Deterministic profiling` is meant to reflect the fact that all "
 "*function call*, *function return*, and *exception* events are monitored, "
@@ -896,7 +897,7 @@ msgid ""
 "being spent."
 msgstr ""
 
-#: library/profile.rst:556
+#: library/profile.rst:565
 msgid ""
 "In Python, since there is an interpreter active during execution, the "
 "presence of instrumented code is not required in order to do deterministic "
@@ -908,7 +909,7 @@ msgid ""
 "time statistics about the execution of a Python program."
 msgstr ""
 
-#: library/profile.rst:565
+#: library/profile.rst:574
 msgid ""
 "Call count statistics can be used to identify bugs in code (surprising "
 "counts), and to identify possible inline-expansion points (high call "
@@ -920,11 +921,11 @@ msgid ""
 "compared to iterative implementations."
 msgstr ""
 
-#: library/profile.rst:578
+#: library/profile.rst:587
 msgid "Limitations"
 msgstr ""
 
-#: library/profile.rst:580
+#: library/profile.rst:589
 msgid ""
 "One limitation has to do with accuracy of timing information. There is a "
 "fundamental problem with deterministic profilers involving accuracy.  The "
@@ -935,7 +936,7 @@ msgid ""
 "first error induces a second source of error."
 msgstr ""
 
-#: library/profile.rst:588
+#: library/profile.rst:597
 msgid ""
 "The second problem is that it \"takes a while\" from when an event is "
 "dispatched until the profiler's call to get the time actually *gets* the "
@@ -948,7 +949,7 @@ msgid ""
 "clock tick), but it *can* accumulate and become very significant."
 msgstr ""
 
-#: library/profile.rst:598
+#: library/profile.rst:607
 msgid ""
 "The problem is more important with :mod:`profile` than with the lower-"
 "overhead :mod:`cProfile`.  For this reason, :mod:`profile` provides a means "
@@ -962,11 +963,11 @@ msgid ""
 "calibration."
 msgstr ""
 
-#: library/profile.rst:612
+#: library/profile.rst:621
 msgid "Calibration"
 msgstr ""
 
-#: library/profile.rst:614
+#: library/profile.rst:623
 msgid ""
 "The profiler of the :mod:`profile` module subtracts a constant from each "
 "event handling time to compensate for the overhead of calling the time "
@@ -975,7 +976,7 @@ msgid ""
 "platform (see :ref:`profile-limitations`). ::"
 msgstr ""
 
-#: library/profile.rst:620
+#: library/profile.rst:629
 msgid ""
 "import profile\n"
 "pr = profile.Profile()\n"
@@ -983,7 +984,7 @@ msgid ""
 "    print(pr.calibrate(10000))"
 msgstr ""
 
-#: library/profile.rst:625
+#: library/profile.rst:634
 msgid ""
 "The method executes the number of Python calls given by the argument, "
 "directly and again under the profiler, measuring the time for both. It then "
@@ -993,19 +994,19 @@ msgid ""
 "4.04e-6."
 msgstr ""
 
-#: library/profile.rst:631
+#: library/profile.rst:640
 msgid ""
 "The object of this exercise is to get a fairly consistent result. If your "
 "computer is *very* fast, or your timer function has poor resolution, you "
 "might have to pass 100000, or even 1000000, to get consistent results."
 msgstr ""
 
-#: library/profile.rst:635
+#: library/profile.rst:644
 msgid ""
 "When you have a consistent answer, there are three ways you can use it::"
 msgstr ""
 
-#: library/profile.rst:637
+#: library/profile.rst:646
 msgid ""
 "import profile\n"
 "\n"
@@ -1020,40 +1021,40 @@ msgid ""
 "pr = profile.Profile(bias=your_computed_bias)"
 msgstr ""
 
-#: library/profile.rst:649
+#: library/profile.rst:658
 msgid ""
 "If you have a choice, you are better off choosing a smaller constant, and "
 "then your results will \"less often\" show up as negative in profile "
 "statistics."
 msgstr ""
 
-#: library/profile.rst:655
+#: library/profile.rst:664
 msgid "Using a custom timer"
 msgstr ""
 
-#: library/profile.rst:657
+#: library/profile.rst:666
 msgid ""
 "If you want to change how current time is determined (for example, to force "
 "use of wall-clock time or elapsed process time), pass the timing function "
 "you want to the :class:`Profile` class constructor::"
 msgstr ""
 
-#: library/profile.rst:661
+#: library/profile.rst:670
 msgid "pr = profile.Profile(your_time_func)"
 msgstr ""
 
-#: library/profile.rst:663
+#: library/profile.rst:672
 msgid ""
 "The resulting profiler will then call ``your_time_func``. Depending on "
 "whether you are using :class:`profile.Profile` or :class:`cProfile.Profile`, "
 "``your_time_func``'s return value will be interpreted differently:"
 msgstr ""
 
-#: library/profile.rst:667
+#: library/profile.rst:676
 msgid ":class:`profile.Profile`"
 msgstr ""
 
-#: library/profile.rst:668
+#: library/profile.rst:677
 msgid ""
 "``your_time_func`` should return a single number, or a list of numbers whose "
 "sum is the current time (like what :func:`os.times` returns).  If the "
@@ -1062,7 +1063,7 @@ msgid ""
 "routine."
 msgstr ""
 
-#: library/profile.rst:674
+#: library/profile.rst:683
 msgid ""
 "Be warned that you should calibrate the profiler class for the timer "
 "function that you choose (see :ref:`profile-calibration`).  For most "
@@ -1074,11 +1075,11 @@ msgid ""
 "along with the appropriate calibration constant."
 msgstr ""
 
-#: library/profile.rst:683
+#: library/profile.rst:692
 msgid ":class:`cProfile.Profile`"
 msgstr ""
 
-#: library/profile.rst:684
+#: library/profile.rst:693
 msgid ""
 "``your_time_func`` should return a single number.  If it returns integers, "
 "you can also invoke the class constructor with a second argument specifying "
@@ -1087,11 +1088,11 @@ msgid ""
 "you would construct the :class:`Profile` instance as follows::"
 msgstr ""
 
-#: library/profile.rst:690
+#: library/profile.rst:699
 msgid "pr = cProfile.Profile(your_integer_time_func, 0.001)"
 msgstr ""
 
-#: library/profile.rst:692
+#: library/profile.rst:701
 msgid ""
 "As the :class:`cProfile.Profile` class cannot be calibrated, custom timer "
 "functions should be used with care and should be as fast as possible.  For "
@@ -1099,7 +1100,7 @@ msgid ""
 "in the C source of the internal :mod:`!_lsprof` module."
 msgstr ""
 
-#: library/profile.rst:697
+#: library/profile.rst:706
 msgid ""
 "Python 3.3 adds several new functions in :mod:`time` that can be used to "
 "make precise measurements of process or wall-clock time. For example, see :"
diff --git a/library/readline.po b/library/readline.po
index c3964398b..b3d256ba4 100644
--- a/library/readline.po
+++ b/library/readline.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -88,13 +88,13 @@ msgstr ""
 #: library/readline.rst:60
 msgid ""
 "Execute the init line provided in the *string* argument. This calls :c:func:"
-"`rl_parse_and_bind` in the underlying library."
+"`!rl_parse_and_bind` in the underlying library."
 msgstr ""
 
 #: library/readline.rst:66
 msgid ""
 "Execute a readline initialization file. The default filename is the last "
-"filename used. This calls :c:func:`rl_read_init_file` in the underlying "
+"filename used. This calls :c:func:`!rl_read_init_file` in the underlying "
 "library."
 msgstr ""
 
@@ -108,20 +108,20 @@ msgstr ""
 
 #: library/readline.rst:78
 msgid ""
-"Return the current contents of the line buffer (:c:data:`rl_line_buffer` in "
+"Return the current contents of the line buffer (:c:data:`!rl_line_buffer` in "
 "the underlying library)."
 msgstr ""
 
 #: library/readline.rst:84
 msgid ""
 "Insert text into the line buffer at the cursor position.  This calls :c:func:"
-"`rl_insert_text` in the underlying library, but ignores the return value."
+"`!rl_insert_text` in the underlying library, but ignores the return value."
 msgstr ""
 
 #: library/readline.rst:91
 msgid ""
 "Change what's displayed on the screen to reflect the current contents of the "
-"line buffer.  This calls :c:func:`rl_redisplay` in the underlying library."
+"line buffer.  This calls :c:func:`!rl_redisplay` in the underlying library."
 msgstr ""
 
 #: library/readline.rst:96
@@ -135,22 +135,22 @@ msgstr ""
 #: library/readline.rst:103
 msgid ""
 "Load a readline history file, and append it to the history list. The default "
-"filename is :file:`~/.history`.  This calls :c:func:`read_history` in the "
+"filename is :file:`~/.history`.  This calls :c:func:`!read_history` in the "
 "underlying library."
 msgstr ""
 
 #: library/readline.rst:110
 msgid ""
 "Save the history list to a readline history file, overwriting any existing "
-"file.  The default filename is :file:`~/.history`.  This calls :c:func:"
-"`write_history` in the underlying library."
+"file.  The default filename is :file:`~/.history`.  This calls :c:func:`!"
+"write_history` in the underlying library."
 msgstr ""
 
 #: library/readline.rst:117
 msgid ""
 "Append the last *nelements* items of history to a file.  The default "
 "filename is :file:`~/.history`.  The file must already exist.  This calls :c:"
-"func:`append_history` in the underlying library.  This function only exists "
+"func:`!append_history` in the underlying library.  This function only exists "
 "if Python was compiled for a version of the library that supports it."
 msgstr ""
 
@@ -158,8 +158,8 @@ msgstr ""
 msgid ""
 "Set or return the desired number of lines to save in the history file. The :"
 "func:`write_history_file` function uses this value to truncate the history "
-"file, by calling :c:func:`history_truncate_file` in the underlying library.  "
-"Negative values imply unlimited history file size."
+"file, by calling :c:func:`!history_truncate_file` in the underlying "
+"library.  Negative values imply unlimited history file size."
 msgstr ""
 
 #: library/readline.rst:137
@@ -172,7 +172,7 @@ msgstr ""
 
 #: library/readline.rst:144
 msgid ""
-"Clear the current history.  This calls :c:func:`clear_history` in the "
+"Clear the current history.  This calls :c:func:`!clear_history` in the "
 "underlying library.  The Python function only exists if Python was compiled "
 "for a version of the library that supports it."
 msgstr ""
@@ -187,32 +187,32 @@ msgstr ""
 #: library/readline.rst:158
 msgid ""
 "Return the current contents of history item at *index*.  The item index is "
-"one-based.  This calls :c:func:`history_get` in the underlying library."
+"one-based.  This calls :c:func:`!history_get` in the underlying library."
 msgstr ""
 
 #: library/readline.rst:164
 msgid ""
 "Remove history item specified by its position from the history. The position "
-"is zero-based.  This calls :c:func:`remove_history` in the underlying "
+"is zero-based.  This calls :c:func:`!remove_history` in the underlying "
 "library."
 msgstr ""
 
 #: library/readline.rst:171
 msgid ""
 "Replace history item specified by its position with *line*. The position is "
-"zero-based.  This calls :c:func:`replace_history_entry` in the underlying "
+"zero-based.  This calls :c:func:`!replace_history_entry` in the underlying "
 "library."
 msgstr ""
 
 #: library/readline.rst:178
 msgid ""
 "Append *line* to the history buffer, as if it was the last line typed. This "
-"calls :c:func:`add_history` in the underlying library."
+"calls :c:func:`!add_history` in the underlying library."
 msgstr ""
 
 #: library/readline.rst:184
 msgid ""
-"Enable or disable automatic calls to :c:func:`add_history` when reading "
+"Enable or disable automatic calls to :c:func:`!add_history` when reading "
 "input via readline.  The *enabled* argument should be a Boolean value that "
 "when true, enables auto history, and that when false, disables auto history."
 msgstr ""
@@ -229,16 +229,16 @@ msgstr ""
 
 #: library/readline.rst:202
 msgid ""
-"Set or remove the function invoked by the :c:data:`rl_startup_hook` callback "
-"of the underlying library.  If *function* is specified, it will be used as "
-"the new hook function; if omitted or ``None``, any function already "
+"Set or remove the function invoked by the :c:data:`!rl_startup_hook` "
+"callback of the underlying library.  If *function* is specified, it will be "
+"used as the new hook function; if omitted or ``None``, any function already "
 "installed is removed.  The hook is called with no arguments just before "
 "readline prints the first prompt."
 msgstr ""
 
 #: library/readline.rst:211
 msgid ""
-"Set or remove the function invoked by the :c:data:`rl_pre_input_hook` "
+"Set or remove the function invoked by the :c:data:`!rl_pre_input_hook` "
 "callback of the underlying library.  If *function* is specified, it will be "
 "used as the new hook function; if omitted or ``None``, any function already "
 "installed is removed.  The hook is called with no arguments after the first "
@@ -274,9 +274,9 @@ msgstr ""
 #: library/readline.rst:242
 msgid ""
 "The installed completer function is invoked by the *entry_func* callback "
-"passed to :c:func:`rl_completion_matches` in the underlying library. The "
-"*text* string comes from the first parameter to the :c:data:"
-"`rl_attempted_completion_function` callback of the underlying library."
+"passed to :c:func:`!rl_completion_matches` in the underlying library. The "
+"*text* string comes from the first parameter to the :c:data:`!"
+"rl_attempted_completion_function` callback of the underlying library."
 msgstr ""
 
 #: library/readline.rst:251
@@ -287,15 +287,15 @@ msgstr ""
 
 #: library/readline.rst:256
 msgid ""
-"Get the type of completion being attempted.  This returns the :c:data:"
-"`rl_completion_type` variable in the underlying library as an integer."
+"Get the type of completion being attempted.  This returns the :c:data:`!"
+"rl_completion_type` variable in the underlying library as an integer."
 msgstr ""
 
 #: library/readline.rst:264
 msgid ""
 "Get the beginning or ending index of the completion scope. These indexes are "
-"the *start* and *end* arguments passed to the :c:data:"
-"`rl_attempted_completion_function` callback of the underlying library.  The "
+"the *start* and *end* arguments passed to the :c:data:`!"
+"rl_attempted_completion_function` callback of the underlying library.  The "
 "values may be different in the same input editing scenario based on the "
 "underlying C readline implementation. Ex: libedit is known to behave "
 "differently than libreadline."
@@ -305,7 +305,7 @@ msgstr ""
 msgid ""
 "Set or get the word delimiters for completion.  These determine the start of "
 "the word to be considered for completion (the completion scope). These "
-"functions access the :c:data:`rl_completer_word_break_characters` variable "
+"functions access the :c:data:`!rl_completer_word_break_characters` variable "
 "in the underlying library."
 msgstr ""
 
@@ -314,7 +314,7 @@ msgid ""
 "Set or remove the completion display function.  If *function* is specified, "
 "it will be used as the new completion display function; if omitted or "
 "``None``, any completion display function already installed is removed.  "
-"This sets or clears the :c:data:`rl_completion_display_matches_hook` "
+"This sets or clears the :c:data:`!rl_completion_display_matches_hook` "
 "callback in the underlying library.  The completion display function is "
 "called as ``function(substitution, [matches], longest_match_length)`` once "
 "each time matches need to be displayed."
diff --git a/library/removed.po b/library/removed.po
new file mode 100644
index 000000000..a0b29582a
--- /dev/null
+++ b/library/removed.po
@@ -0,0 +1,27 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) 2001-2025, Python Software Foundation
+# This file is distributed under the same license as the Python package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Python 3.12\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: library/removed.rst:7
+msgid "Removed Modules"
+msgstr ""
+
+#: library/removed.rst:9
+msgid ""
+"The modules described in this chapter have been removed from the Python "
+"standard library.  They are documented here to help people find replacements."
+msgstr ""
diff --git a/library/secrets.po b/library/secrets.po
index 80be91314..14f11e99d 100644
--- a/library/secrets.po
+++ b/library/secrets.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -90,7 +90,7 @@ msgstr ""
 
 #: library/secrets.rst:71
 msgid ""
-">>> token_bytes(16)  \n"
+">>> token_bytes(16)\n"
 "b'\\xebr\\x17D*t\\xae\\xd4\\xe3S\\xb6\\xe2\\xebP1\\x8b'"
 msgstr ""
 
@@ -103,7 +103,7 @@ msgstr ""
 
 #: library/secrets.rst:83
 msgid ""
-">>> token_hex(16)  \n"
+">>> token_hex(16)\n"
 "'f9bf78b9a18ce6d46a0cd2b0b86df9da'"
 msgstr ""
 
@@ -117,7 +117,7 @@ msgstr ""
 
 #: library/secrets.rst:95
 msgid ""
-">>> token_urlsafe(16)  \n"
+">>> token_urlsafe(16)\n"
 "'Drmhze6EPcv0fN_81Bj-nA'"
 msgstr ""
 
diff --git a/library/selectors.po b/library/selectors.po
index bdf27bfe8..4474ca106 100644
--- a/library/selectors.po
+++ b/library/selectors.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -158,35 +158,35 @@ msgid ""
 "implementations support the :term:`context manager` protocol."
 msgstr ""
 
-#: library/selectors.rst:108
+#: library/selectors.rst:109
 msgid "Register a file object for selection, monitoring it for I/O events."
 msgstr ""
 
-#: library/selectors.rst:110
+#: library/selectors.rst:111
 msgid ""
 "*fileobj* is the file object to monitor.  It may either be an integer file "
 "descriptor or an object with a ``fileno()`` method. *events* is a bitwise "
 "mask of events to monitor. *data* is an opaque object."
 msgstr ""
 
-#: library/selectors.rst:115
+#: library/selectors.rst:116
 msgid ""
 "This returns a new :class:`SelectorKey` instance, or raises a :exc:"
 "`ValueError` in case of invalid event mask or file descriptor, or :exc:"
 "`KeyError` if the file object is already registered."
 msgstr ""
 
-#: library/selectors.rst:121
+#: library/selectors.rst:123
 msgid ""
 "Unregister a file object from selection, removing it from monitoring. A file "
 "object shall be unregistered prior to being closed."
 msgstr ""
 
-#: library/selectors.rst:124
+#: library/selectors.rst:126
 msgid "*fileobj* must be a file object previously registered."
 msgstr ""
 
-#: library/selectors.rst:126
+#: library/selectors.rst:128
 msgid ""
 "This returns the associated :class:`SelectorKey` instance, or raises a :exc:"
 "`KeyError` if *fileobj* is not registered.  It will raise :exc:`ValueError` "
@@ -194,30 +194,30 @@ msgid ""
 "``fileno()`` method has an invalid return value)."
 msgstr ""
 
-#: library/selectors.rst:133
+#: library/selectors.rst:135
 msgid "Change a registered file object's monitored events or attached data."
 msgstr ""
 
-#: library/selectors.rst:135
+#: library/selectors.rst:137
 msgid ""
 "This is equivalent to ``BaseSelector.unregister(fileobj)`` followed by "
 "``BaseSelector.register(fileobj, events, data)``, except that it can be "
 "implemented more efficiently."
 msgstr ""
 
-#: library/selectors.rst:139
+#: library/selectors.rst:141
 msgid ""
 "This returns a new :class:`SelectorKey` instance, or raises a :exc:"
 "`ValueError` in case of invalid event mask or file descriptor, or :exc:"
 "`KeyError` if the file object is not registered."
 msgstr ""
 
-#: library/selectors.rst:145
+#: library/selectors.rst:148
 msgid ""
 "Wait until some registered file objects become ready, or the timeout expires."
 msgstr ""
 
-#: library/selectors.rst:148
+#: library/selectors.rst:151
 msgid ""
 "If ``timeout > 0``, this specifies the maximum wait time, in seconds. If "
 "``timeout <= 0``, the call won't block, and will report the currently ready "
@@ -225,26 +225,26 @@ msgid ""
 "monitored file object becomes ready."
 msgstr ""
 
-#: library/selectors.rst:154
+#: library/selectors.rst:157
 msgid ""
 "This returns a list of ``(key, events)`` tuples, one for each ready file "
 "object."
 msgstr ""
 
-#: library/selectors.rst:157
+#: library/selectors.rst:160
 msgid ""
 "*key* is the :class:`SelectorKey` instance corresponding to a ready file "
 "object. *events* is a bitmask of events ready on this file object."
 msgstr ""
 
-#: library/selectors.rst:162
+#: library/selectors.rst:165
 msgid ""
 "This method can return before any file object becomes ready or the timeout "
 "has elapsed if the current process receives a signal: in this case, an empty "
 "list will be returned."
 msgstr ""
 
-#: library/selectors.rst:166
+#: library/selectors.rst:169
 msgid ""
 "The selector is now retried with a recomputed timeout when interrupted by a "
 "signal if the signal handler did not raise an exception (see :pep:`475` for "
@@ -252,90 +252,90 @@ msgid ""
 "timeout."
 msgstr ""
 
-#: library/selectors.rst:174
+#: library/selectors.rst:177
 msgid "Close the selector."
 msgstr ""
 
-#: library/selectors.rst:176
+#: library/selectors.rst:179
 msgid ""
 "This must be called to make sure that any underlying resource is freed. The "
 "selector shall not be used once it has been closed."
 msgstr ""
 
-#: library/selectors.rst:181
+#: library/selectors.rst:184
 msgid "Return the key associated with a registered file object."
 msgstr ""
 
-#: library/selectors.rst:183
+#: library/selectors.rst:186
 msgid ""
 "This returns the :class:`SelectorKey` instance associated to this file "
 "object, or raises :exc:`KeyError` if the file object is not registered."
 msgstr ""
 
-#: library/selectors.rst:188
+#: library/selectors.rst:192
 msgid "Return a mapping of file objects to selector keys."
 msgstr ""
 
-#: library/selectors.rst:190
+#: library/selectors.rst:194
 msgid ""
 "This returns a :class:`~collections.abc.Mapping` instance mapping registered "
 "file objects to their associated :class:`SelectorKey` instance."
 msgstr ""
 
-#: library/selectors.rst:197
+#: library/selectors.rst:201
 msgid ""
 "The default selector class, using the most efficient implementation "
 "available on the current platform. This should be the default choice for "
 "most users."
 msgstr ""
 
-#: library/selectors.rst:204
+#: library/selectors.rst:208
 msgid ":func:`select.select`-based selector."
 msgstr ""
 
-#: library/selectors.rst:209
+#: library/selectors.rst:213
 msgid ":func:`select.poll`-based selector."
 msgstr ""
 
-#: library/selectors.rst:214
+#: library/selectors.rst:218
 msgid ":func:`select.epoll`-based selector."
 msgstr ""
 
-#: library/selectors.rst:218
+#: library/selectors.rst:222
 msgid ""
 "This returns the file descriptor used by the underlying :func:`select.epoll` "
 "object."
 msgstr ""
 
-#: library/selectors.rst:223
+#: library/selectors.rst:227
 msgid ":func:`select.devpoll`-based selector."
 msgstr ""
 
-#: library/selectors.rst:227
+#: library/selectors.rst:231
 msgid ""
 "This returns the file descriptor used by the underlying :func:`select."
 "devpoll` object."
 msgstr ""
 
-#: library/selectors.rst:234
+#: library/selectors.rst:238
 msgid ":func:`select.kqueue`-based selector."
 msgstr ""
 
-#: library/selectors.rst:238
+#: library/selectors.rst:242
 msgid ""
 "This returns the file descriptor used by the underlying :func:`select."
 "kqueue` object."
 msgstr ""
 
-#: library/selectors.rst:243
+#: library/selectors.rst:247
 msgid "Examples"
 msgstr ""
 
-#: library/selectors.rst:245
+#: library/selectors.rst:249
 msgid "Here is a simple echo server implementation::"
 msgstr ""
 
-#: library/selectors.rst:247
+#: library/selectors.rst:251
 msgid ""
 "import selectors\n"
 "import socket\n"
diff --git a/library/shutil.po b/library/shutil.po
index e6dfca1f2..957176c0f 100644
--- a/library/shutil.po
+++ b/library/shutil.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -616,25 +616,18 @@ msgid ""
 "now be found."
 msgstr ""
 
-#: library/shutil.rst:484
-msgid ""
-"On Windows, if *mode* includes ``os.X_OK``, executables with an extension in "
-"``PATHEXT`` will be preferred over executables without a matching extension. "
-"This brings behavior closer to that of Python 3.11."
-msgstr ""
-
-#: library/shutil.rst:492
+#: library/shutil.rst:486
 msgid ""
 "This exception collects exceptions that are raised during a multi-file "
 "operation. For :func:`copytree`, the exception argument is a list of 3-"
 "tuples (*srcname*, *dstname*, *exception*)."
 msgstr ""
 
-#: library/shutil.rst:499
+#: library/shutil.rst:493
 msgid "Platform-dependent efficient copy operations"
 msgstr ""
 
-#: library/shutil.rst:501
+#: library/shutil.rst:495
 msgid ""
 "Starting from Python 3.8, all functions involving a file copy (:func:"
 "`copyfile`, :func:`~shutil.copy`, :func:`copy2`, :func:`copytree`, and :func:"
@@ -644,54 +637,54 @@ msgid ""
 "buffers in Python as in \"``outfd.write(infd.read())``\"."
 msgstr ""
 
-#: library/shutil.rst:509
+#: library/shutil.rst:503
 msgid "On macOS `fcopyfile`_ is used to copy the file content (not metadata)."
 msgstr ""
 
-#: library/shutil.rst:511
+#: library/shutil.rst:505
 msgid "On Linux :func:`os.sendfile` is used."
 msgstr ""
 
-#: library/shutil.rst:513
+#: library/shutil.rst:507
 msgid ""
 "On Windows :func:`shutil.copyfile` uses a bigger default buffer size (1 MiB "
 "instead of 64 KiB) and a :func:`memoryview`-based variant of :func:`shutil."
 "copyfileobj` is used."
 msgstr ""
 
-#: library/shutil.rst:517
+#: library/shutil.rst:511
 msgid ""
 "If the fast-copy operation fails and no data was written in the destination "
 "file then shutil will silently fallback on using less efficient :func:"
 "`copyfileobj` function internally."
 msgstr ""
 
-#: library/shutil.rst:526
+#: library/shutil.rst:520
 msgid "copytree example"
 msgstr ""
 
-#: library/shutil.rst:528
+#: library/shutil.rst:522
 msgid "An example that uses the :func:`ignore_patterns` helper::"
 msgstr ""
 
-#: library/shutil.rst:530
+#: library/shutil.rst:524
 msgid ""
 "from shutil import copytree, ignore_patterns\n"
 "\n"
 "copytree(source, destination, ignore=ignore_patterns('*.pyc', 'tmp*'))"
 msgstr ""
 
-#: library/shutil.rst:534
+#: library/shutil.rst:528
 msgid ""
 "This will copy everything except ``.pyc`` files and files or directories "
 "whose name starts with ``tmp``."
 msgstr ""
 
-#: library/shutil.rst:537
+#: library/shutil.rst:531
 msgid "Another example that uses the *ignore* argument to add a logging call::"
 msgstr ""
 
-#: library/shutil.rst:539
+#: library/shutil.rst:533
 msgid ""
 "from shutil import copytree\n"
 "import logging\n"
@@ -703,11 +696,11 @@ msgid ""
 "copytree(source, destination, ignore=_logpath)"
 msgstr ""
 
-#: library/shutil.rst:552
+#: library/shutil.rst:546
 msgid "rmtree example"
 msgstr ""
 
-#: library/shutil.rst:554
+#: library/shutil.rst:548
 msgid ""
 "This example shows how to remove a directory tree on Windows where some of "
 "the files have their read-only bit set. It uses the onexc callback to clear "
@@ -715,7 +708,7 @@ msgid ""
 "propagate. ::"
 msgstr ""
 
-#: library/shutil.rst:559
+#: library/shutil.rst:553
 msgid ""
 "import os, stat\n"
 "import shutil\n"
@@ -728,31 +721,31 @@ msgid ""
 "shutil.rmtree(directory, onexc=remove_readonly)"
 msgstr ""
 
-#: library/shutil.rst:572
+#: library/shutil.rst:566
 msgid "Archiving operations"
 msgstr ""
 
-#: library/shutil.rst:576
+#: library/shutil.rst:570
 msgid "Added support for the *xztar* format."
 msgstr ""
 
-#: library/shutil.rst:580
+#: library/shutil.rst:574
 msgid ""
 "High-level utilities to create and read compressed and archived files are "
 "also provided.  They rely on the :mod:`zipfile` and :mod:`tarfile` modules."
 msgstr ""
 
-#: library/shutil.rst:585
+#: library/shutil.rst:579
 msgid "Create an archive file (such as zip or tar) and return its name."
 msgstr ""
 
-#: library/shutil.rst:587
+#: library/shutil.rst:581
 msgid ""
 "*base_name* is the name of the file to create, including the path, minus any "
 "format-specific extension."
 msgstr ""
 
-#: library/shutil.rst:590
+#: library/shutil.rst:584
 msgid ""
 "*format* is the archive format: one of \"zip\" (if the :mod:`zlib` module is "
 "available), \"tar\", \"gztar\" (if the :mod:`zlib` module is available), "
@@ -760,14 +753,14 @@ msgid ""
 "`lzma` module is available)."
 msgstr ""
 
-#: library/shutil.rst:595
+#: library/shutil.rst:589
 msgid ""
 "*root_dir* is a directory that will be the root directory of the archive, "
 "all paths in the archive will be relative to it; for example, we typically "
 "chdir into *root_dir* before creating the archive."
 msgstr ""
 
-#: library/shutil.rst:599
+#: library/shutil.rst:593
 msgid ""
 "*base_dir* is the directory where we start archiving from; i.e. *base_dir* "
 "will be the common prefix of all files and directories in the archive.  "
@@ -775,39 +768,39 @@ msgid ""
 "example-with-basedir` for how to use *base_dir* and *root_dir* together."
 msgstr ""
 
-#: library/shutil.rst:605
+#: library/shutil.rst:599
 msgid "*root_dir* and *base_dir* both default to the current directory."
 msgstr ""
 
-#: library/shutil.rst:607
+#: library/shutil.rst:601
 msgid ""
 "If *dry_run* is true, no archive is created, but the operations that would "
 "be executed are logged to *logger*."
 msgstr ""
 
-#: library/shutil.rst:610
+#: library/shutil.rst:604
 msgid ""
 "*owner* and *group* are used when creating a tar archive. By default, uses "
 "the current owner and group."
 msgstr ""
 
-#: library/shutil.rst:613
+#: library/shutil.rst:607
 msgid ""
 "*logger* must be an object compatible with :pep:`282`, usually an instance "
 "of :class:`logging.Logger`."
 msgstr ""
 
-#: library/shutil.rst:616
+#: library/shutil.rst:610
 msgid "The *verbose* argument is unused and deprecated."
 msgstr ""
 
-#: library/shutil.rst:618
+#: library/shutil.rst:612
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``shutil.make_archive`` with "
 "arguments ``base_name``, ``format``, ``root_dir``, ``base_dir``."
 msgstr ""
 
-#: library/shutil.rst:622
+#: library/shutil.rst:616
 msgid ""
 "This function is not thread-safe when custom archivers registered with :func:"
 "`register_archive_format` do not support the *root_dir* argument.  In this "
@@ -815,60 +808,60 @@ msgid ""
 "*root_dir* to perform archiving."
 msgstr ""
 
-#: library/shutil.rst:628
+#: library/shutil.rst:622
 msgid ""
 "The modern pax (POSIX.1-2001) format is now used instead of the legacy GNU "
 "format for archives created with ``format=\"tar\"``."
 msgstr ""
 
-#: library/shutil.rst:632
+#: library/shutil.rst:626
 msgid ""
 "This function is now made thread-safe during creation of standard ``.zip`` "
 "and tar archives."
 msgstr ""
 
-#: library/shutil.rst:638
+#: library/shutil.rst:632
 msgid ""
 "Return a list of supported formats for archiving. Each element of the "
 "returned sequence is a tuple ``(name, description)``."
 msgstr ""
 
-#: library/shutil.rst:752
+#: library/shutil.rst:746
 msgid "By default :mod:`shutil` provides these formats:"
 msgstr ""
 
-#: library/shutil.rst:643
+#: library/shutil.rst:637
 msgid "*zip*: ZIP file (if the :mod:`zlib` module is available)."
 msgstr ""
 
-#: library/shutil.rst:644
+#: library/shutil.rst:638
 msgid ""
 "*tar*: Uncompressed tar file. Uses POSIX.1-2001 pax format for new archives."
 msgstr ""
 
-#: library/shutil.rst:757
+#: library/shutil.rst:751
 msgid "*gztar*: gzip'ed tar-file (if the :mod:`zlib` module is available)."
 msgstr ""
 
-#: library/shutil.rst:758
+#: library/shutil.rst:752
 msgid "*bztar*: bzip2'ed tar-file (if the :mod:`bz2` module is available)."
 msgstr ""
 
-#: library/shutil.rst:759
+#: library/shutil.rst:753
 msgid "*xztar*: xz'ed tar-file (if the :mod:`lzma` module is available)."
 msgstr ""
 
-#: library/shutil.rst:649
+#: library/shutil.rst:643
 msgid ""
 "You can register new formats or provide your own archiver for any existing "
 "formats, by using :func:`register_archive_format`."
 msgstr ""
 
-#: library/shutil.rst:655
+#: library/shutil.rst:649
 msgid "Register an archiver for the format *name*."
 msgstr ""
 
-#: library/shutil.rst:657
+#: library/shutil.rst:651
 msgid ""
 "*function* is the callable that will be used to unpack archives. The "
 "callable will receive the *base_name* of the file to create, followed by the "
@@ -877,7 +870,7 @@ msgid ""
 "*dry_run* and *logger* (as passed in :func:`make_archive`)."
 msgstr ""
 
-#: library/shutil.rst:663
+#: library/shutil.rst:657
 msgid ""
 "If *function* has the custom attribute ``function.supports_root_dir`` set to "
 "``True``, the *root_dir* argument is passed as a keyword argument. Otherwise "
@@ -886,37 +879,37 @@ msgid ""
 "not thread-safe."
 msgstr ""
 
-#: library/shutil.rst:669
+#: library/shutil.rst:663
 msgid ""
 "If given, *extra_args* is a sequence of ``(name, value)`` pairs that will be "
 "used as extra keywords arguments when the archiver callable is used."
 msgstr ""
 
-#: library/shutil.rst:672
+#: library/shutil.rst:666
 msgid ""
 "*description* is used by :func:`get_archive_formats` which returns the list "
 "of archivers.  Defaults to an empty string."
 msgstr ""
 
-#: library/shutil.rst:675
+#: library/shutil.rst:669
 msgid "Added support for functions supporting the *root_dir* argument."
 msgstr ""
 
-#: library/shutil.rst:681
+#: library/shutil.rst:675
 msgid "Remove the archive format *name* from the list of supported formats."
 msgstr ""
 
-#: library/shutil.rst:686
+#: library/shutil.rst:680
 msgid "Unpack an archive. *filename* is the full path of the archive."
 msgstr ""
 
-#: library/shutil.rst:688
+#: library/shutil.rst:682
 msgid ""
 "*extract_dir* is the name of the target directory where the archive is "
 "unpacked. If not provided, the current working directory is used."
 msgstr ""
 
-#: library/shutil.rst:691
+#: library/shutil.rst:685
 msgid ""
 "*format* is the archive format: one of \"zip\", \"tar\", \"gztar\", "
 "\"bztar\", or \"xztar\".  Or any other format registered with :func:"
@@ -925,7 +918,7 @@ msgid ""
 "that extension.  In case none is found, a :exc:`ValueError` is raised."
 msgstr ""
 
-#: library/shutil.rst:698
+#: library/shutil.rst:692
 msgid ""
 "The keyword-only *filter* argument is passed to the underlying unpacking "
 "function. For zip files, *filter* is not accepted. For tar files, it is "
@@ -935,13 +928,13 @@ msgid ""
 "Python 3.14."
 msgstr ""
 
-#: library/shutil.rst:706
+#: library/shutil.rst:700
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``shutil.unpack_archive`` with "
 "arguments ``filename``, ``extract_dir``, ``format``."
 msgstr ""
 
-#: library/shutil.rst:710
+#: library/shutil.rst:704
 msgid ""
 "Never extract archives from untrusted sources without prior inspection. It "
 "is possible that files are created outside of the path specified in the "
@@ -949,91 +942,91 @@ msgid ""
 "with \"/\" or filenames with two dots \"..\"."
 msgstr ""
 
-#: library/shutil.rst:715
+#: library/shutil.rst:709
 msgid "Accepts a :term:`path-like object` for *filename* and *extract_dir*."
 msgstr ""
 
-#: library/shutil.rst:718
+#: library/shutil.rst:712
 msgid "Added the *filter* argument."
 msgstr ""
 
-#: library/shutil.rst:723
+#: library/shutil.rst:717
 msgid ""
 "Registers an unpack format. *name* is the name of the format and "
 "*extensions* is a list of extensions corresponding to the format, like ``."
 "zip`` for Zip files."
 msgstr ""
 
-#: library/shutil.rst:727
+#: library/shutil.rst:721
 msgid ""
 "*function* is the callable that will be used to unpack archives. The "
 "callable will receive:"
 msgstr ""
 
-#: library/shutil.rst:730
+#: library/shutil.rst:724
 msgid "the path of the archive, as a positional argument;"
 msgstr ""
 
-#: library/shutil.rst:731
+#: library/shutil.rst:725
 msgid ""
 "the directory the archive must be extracted to, as a positional argument;"
 msgstr ""
 
-#: library/shutil.rst:732
+#: library/shutil.rst:726
 msgid ""
 "possibly a *filter* keyword argument, if it was given to :func:"
 "`unpack_archive`;"
 msgstr ""
 
-#: library/shutil.rst:734
+#: library/shutil.rst:728
 msgid ""
 "additional keyword arguments, specified by *extra_args* as a sequence of "
 "``(name, value)`` tuples."
 msgstr ""
 
-#: library/shutil.rst:737
+#: library/shutil.rst:731
 msgid ""
 "*description* can be provided to describe the format, and will be returned "
 "by the :func:`get_unpack_formats` function."
 msgstr ""
 
-#: library/shutil.rst:743
+#: library/shutil.rst:737
 msgid "Unregister an unpack format. *name* is the name of the format."
 msgstr ""
 
-#: library/shutil.rst:748
+#: library/shutil.rst:742
 msgid ""
 "Return a list of all registered formats for unpacking. Each element of the "
 "returned sequence is a tuple ``(name, extensions, description)``."
 msgstr ""
 
-#: library/shutil.rst:754
+#: library/shutil.rst:748
 msgid ""
 "*zip*: ZIP file (unpacking compressed files works only if the corresponding "
 "module is available)."
 msgstr ""
 
-#: library/shutil.rst:756
+#: library/shutil.rst:750
 msgid "*tar*: uncompressed tar file."
 msgstr ""
 
-#: library/shutil.rst:761
+#: library/shutil.rst:755
 msgid ""
 "You can register new formats or provide your own unpacker for any existing "
 "formats, by using :func:`register_unpack_format`."
 msgstr ""
 
-#: library/shutil.rst:768
+#: library/shutil.rst:762
 msgid "Archiving example"
 msgstr ""
 
-#: library/shutil.rst:770
+#: library/shutil.rst:764
 msgid ""
 "In this example, we create a gzip'ed tar-file archive containing all files "
 "found in the :file:`.ssh` directory of the user::"
 msgstr ""
 
-#: library/shutil.rst:773
+#: library/shutil.rst:767
 msgid ""
 ">>> from shutil import make_archive\n"
 ">>> import os\n"
@@ -1043,11 +1036,11 @@ msgid ""
 "'/Users/tarek/myarchive.tar.gz'"
 msgstr ""
 
-#: library/shutil.rst:780
+#: library/shutil.rst:774
 msgid "The resulting archive contains:"
 msgstr ""
 
-#: library/shutil.rst:782
+#: library/shutil.rst:776
 msgid ""
 "$ tar -tzvf /Users/tarek/myarchive.tar.gz\n"
 "drwx------ tarek/staff       0 2010-02-01 16:23:40 ./\n"
@@ -1060,18 +1053,18 @@ msgid ""
 "-rw-r--r-- tarek/staff   37192 2010-02-06 18:23:10 ./known_hosts"
 msgstr ""
 
-#: library/shutil.rst:798
+#: library/shutil.rst:792
 msgid "Archiving example with *base_dir*"
 msgstr ""
 
-#: library/shutil.rst:800
+#: library/shutil.rst:794
 msgid ""
 "In this example, similar to the `one above <shutil-archiving-example_>`_, we "
 "show how to use :func:`make_archive`, but this time with the usage of "
 "*base_dir*.  We now have the following directory structure:"
 msgstr ""
 
-#: library/shutil.rst:804
+#: library/shutil.rst:798
 msgid ""
 "$ tree tmp\n"
 "tmp\n"
@@ -1082,13 +1075,13 @@ msgid ""
 "        └── do_not_add.txt"
 msgstr ""
 
-#: library/shutil.rst:814
+#: library/shutil.rst:808
 msgid ""
 "In the final archive, :file:`please_add.txt` should be included, but :file:"
 "`do_not_add.txt` should not.  Therefore we use the following::"
 msgstr ""
 
-#: library/shutil.rst:817
+#: library/shutil.rst:811
 msgid ""
 ">>> from shutil import make_archive\n"
 ">>> import os\n"
@@ -1102,40 +1095,40 @@ msgid ""
 "'/Users/tarek/my_archive.tar'"
 msgstr ""
 
-#: library/shutil.rst:828
+#: library/shutil.rst:822
 msgid "Listing the files in the resulting archive gives us:"
 msgstr ""
 
-#: library/shutil.rst:830
+#: library/shutil.rst:824
 msgid ""
 "$ python -m tarfile -l /Users/tarek/myarchive.tar\n"
 "structure/content/\n"
 "structure/content/please_add.txt"
 msgstr ""
 
-#: library/shutil.rst:838
+#: library/shutil.rst:832
 msgid "Querying the size of the output terminal"
 msgstr ""
 
-#: library/shutil.rst:842
+#: library/shutil.rst:836
 msgid "Get the size of the terminal window."
 msgstr ""
 
-#: library/shutil.rst:844
+#: library/shutil.rst:838
 msgid ""
 "For each of the two dimensions, the environment variable, ``COLUMNS`` and "
 "``LINES`` respectively, is checked. If the variable is defined and the value "
 "is a positive integer, it is used."
 msgstr ""
 
-#: library/shutil.rst:848
+#: library/shutil.rst:842
 msgid ""
 "When ``COLUMNS`` or ``LINES`` is not defined, which is the common case, the "
 "terminal connected to :data:`sys.__stdout__` is queried by invoking :func:"
 "`os.get_terminal_size`."
 msgstr ""
 
-#: library/shutil.rst:852
+#: library/shutil.rst:846
 msgid ""
 "If the terminal size cannot be successfully queried, either because the "
 "system doesn't support querying, or because we are not connected to a "
@@ -1144,17 +1137,17 @@ msgid ""
 "emulators."
 msgstr ""
 
-#: library/shutil.rst:858
+#: library/shutil.rst:852
 msgid "The value returned is a named tuple of type :class:`os.terminal_size`."
 msgstr ""
 
-#: library/shutil.rst:860
+#: library/shutil.rst:854
 msgid ""
 "See also: The Single UNIX Specification, Version 2, `Other Environment "
 "Variables`_."
 msgstr ""
 
-#: library/shutil.rst:865
+#: library/shutil.rst:859
 msgid ""
 "The ``fallback`` values are also used if :func:`os.get_terminal_size` "
 "returns zeroes."
diff --git a/library/smtpd.po b/library/smtpd.po
new file mode 100644
index 000000000..daffb4886
--- /dev/null
+++ b/library/smtpd.po
@@ -0,0 +1,40 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) 2001-2025, Python Software Foundation
+# This file is distributed under the same license as the Python package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Python 3.12\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: library/smtpd.rst:2
+msgid ":mod:`!smtpd` --- SMTP Server"
+msgstr ""
+
+#: library/smtpd.rst:10
+msgid ""
+"This module is no longer part of the Python standard library. It was :ref:"
+"`removed in Python 3.12 <whatsnew312-removed>` after being deprecated in "
+"Python 3.6.  The removal was decided in :pep:`594`."
+msgstr ""
+
+#: library/smtpd.rst:14
+msgid ""
+"A possible replacement is the third-party :pypi:`aiosmtpd` library. This "
+"library is not maintained or supported by the Python core team."
+msgstr ""
+
+#: library/smtpd.rst:17
+msgid ""
+"The last version of Python that provided the :mod:`!smtpd` module was "
+"`Python 3.11 <https://docs.python.org/3.11/library/smtpd.html>`_."
+msgstr ""
diff --git a/library/smtplib.po b/library/smtplib.po
index 3b65ae630..527fce873 100644
--- a/library/smtplib.po
+++ b/library/smtplib.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -690,11 +690,11 @@ msgid ""
 "and *to_addrs*, ``send_message`` does not transmit any :mailheader:`Bcc` or :"
 "mailheader:`Resent-Bcc` headers that may appear in *msg*.  If any of the "
 "addresses in *from_addr* and *to_addrs* contain non-ASCII characters and the "
-"server does not advertise ``SMTPUTF8`` support, an :exc:`SMTPNotSupported` "
-"error is raised.  Otherwise the ``Message`` is serialized with a clone of "
-"its :mod:`~email.policy` with the :attr:`~email.policy.EmailPolicy.utf8` "
-"attribute set to ``True``, and ``SMTPUTF8`` and ``BODY=8BITMIME`` are added "
-"to *mail_options*."
+"server does not advertise ``SMTPUTF8`` support, an :exc:"
+"`SMTPNotSupportedError` is raised.  Otherwise the ``Message`` is serialized "
+"with a clone of its :mod:`~email.policy` with the :attr:`~email.policy."
+"EmailPolicy.utf8` attribute set to ``True``, and ``SMTPUTF8`` and "
+"``BODY=8BITMIME`` are added to *mail_options*."
 msgstr ""
 
 #: library/smtplib.rst:534
diff --git a/library/socket.po b/library/socket.po
index b2165d771..6bce9fa28 100644
--- a/library/socket.po
+++ b/library/socket.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -41,12 +41,12 @@ msgstr ""
 #: library/socket.rst:470 library/socket.rst:496 library/socket.rst:514
 #: library/socket.rst:537 library/socket.rst:561 library/socket.rst:601
 #: library/socket.rst:638 library/socket.rst:662 library/socket.rst:694
-#: library/socket.rst:893 library/socket.rst:1005 library/socket.rst:1033
-#: library/socket.rst:1061 library/socket.rst:1083 library/socket.rst:1192
-#: library/socket.rst:1241 library/socket.rst:1281 library/socket.rst:1325
-#: library/socket.rst:1356 library/socket.rst:1454 library/socket.rst:1488
-#: library/socket.rst:1580 library/socket.rst:1754 library/socket.rst:1880
-#: library/socket.rst:1974 includes/wasm-notavail.rst:3
+#: library/socket.rst:893 library/socket.rst:1034 library/socket.rst:1062
+#: library/socket.rst:1090 library/socket.rst:1112 library/socket.rst:1221
+#: library/socket.rst:1270 library/socket.rst:1310 library/socket.rst:1354
+#: library/socket.rst:1385 library/socket.rst:1483 library/socket.rst:1517
+#: library/socket.rst:1609 library/socket.rst:1778 library/socket.rst:1904
+#: library/socket.rst:1998 includes/wasm-notavail.rst:3
 msgid "Availability"
 msgstr ""
 
@@ -118,7 +118,7 @@ msgid ""
 "Previously, :const:`AF_UNIX` socket paths were assumed to use UTF-8 encoding."
 msgstr ""
 
-#: library/socket.rst:1155 library/socket.rst:1958
+#: library/socket.rst:1184 library/socket.rst:1982
 msgid "Writable :term:`bytes-like object` is now accepted."
 msgstr ""
 
@@ -705,7 +705,7 @@ msgid ""
 "the :meth:`~socket.socket.ioctl` method of socket objects."
 msgstr ""
 
-#: library/socket.rst:1570
+#: library/socket.rst:1599
 msgid "``SIO_LOOPBACK_FAST_PATH`` was added."
 msgstr ""
 
@@ -817,7 +817,7 @@ msgid ""
 "This may help close a detached socket using :meth:`socket.close`."
 msgstr ""
 
-#: library/socket.rst:882 library/socket.rst:1483
+#: library/socket.rst:882 library/socket.rst:1512
 msgid "The newly created socket is :ref:`non-inheritable <fd_inheritance>`."
 msgstr ""
 
@@ -955,15 +955,15 @@ msgstr ""
 
 #: library/socket.rst:836
 msgid ""
-"If *dualstack_ipv6* is true and the platform supports it the socket will be "
-"able to accept both IPv4 and IPv6 connections, else it will raise :exc:"
-"`ValueError`. Most POSIX platforms and Windows are supposed to support this "
-"functionality. When this functionality is enabled the address returned by :"
-"meth:`socket.getpeername` when an IPv4 connection occurs will be an IPv6 "
-"address represented as an IPv4-mapped IPv6 address. If *dualstack_ipv6* is "
-"false it will explicitly disable this functionality on platforms that enable "
-"it by default (e.g. Linux). This parameter can be used in conjunction with :"
-"func:`has_dualstack_ipv6`:"
+"If *dualstack_ipv6* is true, *family* is :data:`AF_INET6` and the platform "
+"supports it the socket will be able to accept both IPv4 and IPv6 "
+"connections, else it will raise :exc:`ValueError`. Most POSIX platforms and "
+"Windows are supposed to support this functionality. When this functionality "
+"is enabled the address returned by :meth:`socket.getpeername` when an IPv4 "
+"connection occurs will be an IPv6 address represented as an IPv4-mapped IPv6 "
+"address. If *dualstack_ipv6* is false it will explicitly disable this "
+"functionality on platforms that enable it by default (e.g. Linux). This "
+"parameter can be used in conjunction with :func:`has_dualstack_ipv6`:"
 msgstr ""
 
 #: library/socket.rst:849
@@ -1033,6 +1033,11 @@ msgstr ""
 
 #: library/socket.rst:920
 msgid ""
+"This function wraps the C function ``getaddrinfo`` of the underlying system."
+msgstr ""
+
+#: library/socket.rst:922
+msgid ""
 "Translate the *host*/*port* argument into a sequence of 5-tuples that "
 "contain all the necessary arguments for creating a socket connected to that "
 "service. *host* is a domain name, a string representation of an IPv4/v6 "
@@ -1041,26 +1046,31 @@ msgid ""
 "and *port*, you can pass ``NULL`` to the underlying C API."
 msgstr ""
 
-#: library/socket.rst:927
+#: library/socket.rst:929
 msgid ""
 "The *family*, *type* and *proto* arguments can be optionally specified in "
-"order to narrow the list of addresses returned.  Passing zero as a value for "
-"each of these arguments selects the full range of results. The *flags* "
-"argument can be one or several of the ``AI_*`` constants, and will influence "
-"how results are computed and returned. For example, :const:`AI_NUMERICHOST` "
-"will disable domain name resolution and will raise an error if *host* is a "
-"domain name."
+"order to provide options and limit the list of addresses returned. Pass "
+"their default values (:data:`AF_UNSPEC`, 0, and 0, respectively) to not "
+"limit the results. See the note below for details."
+msgstr ""
+
+#: library/socket.rst:934
+msgid ""
+"The *flags* argument can be one or several of the ``AI_*`` constants, and "
+"will influence how results are computed and returned. For example, :const:"
+"`AI_NUMERICHOST` will disable domain name resolution and will raise an error "
+"if *host* is a domain name."
 msgstr ""
 
-#: library/socket.rst:935
+#: library/socket.rst:939
 msgid "The function returns a list of 5-tuples with the following structure:"
 msgstr ""
 
-#: library/socket.rst:937
+#: library/socket.rst:941
 msgid "``(family, type, proto, canonname, sockaddr)``"
 msgstr ""
 
-#: library/socket.rst:939
+#: library/socket.rst:943
 msgid ""
 "In these tuples, *family*, *type*, *proto* are all integers and are meant to "
 "be passed to the :func:`~socket.socket` function.  *canonname* will be a "
@@ -1072,20 +1082,52 @@ msgid ""
 "`AF_INET6`), and is meant to be passed to the :meth:`socket.connect` method."
 msgstr ""
 
-#: library/socket.rst:949
+#: library/socket.rst:955
+msgid ""
+"If you intend to use results from :func:`!getaddrinfo` to create a socket "
+"(rather than, for example, retrieve *canonname*), consider limiting the "
+"results by *type* (e.g. :data:`SOCK_STREAM` or :data:`SOCK_DGRAM`) and/or "
+"*proto* (e.g. :data:`IPPROTO_TCP` or :data:`IPPROTO_UDP`) that your "
+"application can handle."
+msgstr ""
+
+#: library/socket.rst:961
+msgid ""
+"The behavior with default values of *family*, *type*, *proto* and *flags* is "
+"system-specific."
+msgstr ""
+
+#: library/socket.rst:964
+msgid ""
+"Many systems (for example, most Linux configurations) will return a sorted "
+"list of all matching addresses. These addresses should generally be tried in "
+"order until a connection succeeds (possibly tried in parallel, for example, "
+"using a `Happy Eyeballs`_ algorithm). In these cases, limiting the *type* "
+"and/or *proto* can help eliminate unsuccessful or unusable connection "
+"attempts."
+msgstr ""
+
+#: library/socket.rst:971
+msgid ""
+"Some systems will, however, only return a single address. (For example, this "
+"was reported on Solaris and AIX configurations.) On these systems, limiting "
+"the *type* and/or *proto* helps ensure that this address is usable."
+msgstr ""
+
+#: library/socket.rst:976
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``socket.getaddrinfo`` with "
 "arguments ``host``, ``port``, ``family``, ``type``, ``protocol``."
 msgstr ""
 
-#: library/socket.rst:951
+#: library/socket.rst:978
 msgid ""
 "The following example fetches address information for a hypothetical TCP "
 "connection to ``example.org`` on port 80 (results may differ on your system "
 "if IPv6 isn't enabled)::"
 msgstr ""
 
-#: library/socket.rst:955
+#: library/socket.rst:982
 msgid ""
 ">>> socket.getaddrinfo(\"example.org\", 80, proto=socket.IPPROTO_TCP)\n"
 "[(socket.AF_INET6, socket.SOCK_STREAM,\n"
@@ -1094,17 +1136,17 @@ msgid ""
 " 6, '', ('93.184.216.34', 80))]"
 msgstr ""
 
-#: library/socket.rst:961
+#: library/socket.rst:988
 msgid "parameters can now be passed using keyword arguments."
 msgstr ""
 
-#: library/socket.rst:964
+#: library/socket.rst:991
 msgid ""
 "for IPv6 multicast addresses, string representing an address will not "
 "contain ``%scope_id`` part."
 msgstr ""
 
-#: library/socket.rst:970
+#: library/socket.rst:999
 msgid ""
 "Return a fully qualified domain name for *name*. If *name* is omitted or "
 "empty, it is interpreted as the local host.  To find the fully qualified "
@@ -1115,7 +1157,7 @@ msgid ""
 "``'0.0.0.0'``, the hostname from :func:`gethostname` is returned."
 msgstr ""
 
-#: library/socket.rst:981
+#: library/socket.rst:1010
 msgid ""
 "Translate a host name to IPv4 address format.  The IPv4 address is returned "
 "as a string, such as  ``'100.50.200.5'``.  If the host name is an IPv4 "
@@ -1125,13 +1167,13 @@ msgid ""
 "stack support."
 msgstr ""
 
-#: library/socket.rst:1003
+#: library/socket.rst:1032
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``socket.gethostbyname`` with "
 "argument ``hostname``."
 msgstr ""
 
-#: library/socket.rst:994
+#: library/socket.rst:1023
 msgid ""
 "Translate a host name to IPv4 address format, extended interface. Return a 3-"
 "tuple ``(hostname, aliaslist, ipaddrlist)`` where *hostname* is the host's "
@@ -1143,25 +1185,25 @@ msgid ""
 "stack support."
 msgstr ""
 
-#: library/socket.rst:1010
+#: library/socket.rst:1039
 msgid ""
 "Return a string containing the hostname of the machine where  the Python "
 "interpreter is currently executing."
 msgstr ""
 
-#: library/socket.rst:1013
+#: library/socket.rst:1042
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``socket.gethostname`` with no "
 "arguments."
 msgstr ""
 
-#: library/socket.rst:1015
+#: library/socket.rst:1044
 msgid ""
 "Note: :func:`gethostname` doesn't always return the fully qualified domain "
 "name; use :func:`getfqdn` for that."
 msgstr ""
 
-#: library/socket.rst:1023
+#: library/socket.rst:1052
 msgid ""
 "Return a 3-tuple ``(hostname, aliaslist, ipaddrlist)`` where *hostname* is "
 "the primary host name responding to the given *ip_address*, *aliaslist* is a "
@@ -1172,13 +1214,13 @@ msgid ""
 "`gethostbyaddr` supports both IPv4 and IPv6."
 msgstr ""
 
-#: library/socket.rst:1031
+#: library/socket.rst:1060
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``socket.gethostbyaddr`` with "
 "argument ``ip_address``."
 msgstr ""
 
-#: library/socket.rst:1038
+#: library/socket.rst:1067
 msgid ""
 "Translate a socket address *sockaddr* into a 2-tuple ``(host, port)``. "
 "Depending on the settings of *flags*, the result can contain a fully "
@@ -1186,24 +1228,24 @@ msgid ""
 "Similarly, *port* can contain a string port name or a numeric port number."
 msgstr ""
 
-#: library/socket.rst:1043
+#: library/socket.rst:1072
 msgid ""
 "For IPv6 addresses, ``%scope_id`` is appended to the host part if *sockaddr* "
 "contains meaningful *scope_id*. Usually this happens for multicast addresses."
 msgstr ""
 
-#: library/socket.rst:1046
+#: library/socket.rst:1075
 msgid ""
 "For more information about *flags* you can consult :manpage:`getnameinfo(3)`."
 msgstr ""
 
-#: library/socket.rst:1048
+#: library/socket.rst:1077
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``socket.getnameinfo`` with "
 "argument ``sockaddr``."
 msgstr ""
 
-#: library/socket.rst:1055
+#: library/socket.rst:1084
 msgid ""
 "Translate an internet protocol name (for example, ``'icmp'``) to a constant "
 "suitable for passing as the (optional) third argument to the :func:`~socket."
@@ -1212,66 +1254,66 @@ msgid ""
 "is chosen automatically if the protocol is omitted or zero."
 msgstr ""
 
-#: library/socket.rst:1066
+#: library/socket.rst:1095
 msgid ""
 "Translate an internet service name and protocol name to a port number for "
 "that service.  The optional protocol name, if given, should be ``'tcp'`` or "
 "``'udp'``, otherwise any protocol will match."
 msgstr ""
 
-#: library/socket.rst:1070
+#: library/socket.rst:1099
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``socket.getservbyname`` with "
 "arguments ``servicename``, ``protocolname``."
 msgstr ""
 
-#: library/socket.rst:1077
+#: library/socket.rst:1106
 msgid ""
 "Translate an internet port number and protocol name to a service name for "
 "that service.  The optional protocol name, if given, should be ``'tcp'`` or "
 "``'udp'``, otherwise any protocol will match."
 msgstr ""
 
-#: library/socket.rst:1081
+#: library/socket.rst:1110
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``socket.getservbyport`` with "
 "arguments ``port``, ``protocolname``."
 msgstr ""
 
-#: library/socket.rst:1088
+#: library/socket.rst:1117
 msgid ""
 "Convert 32-bit positive integers from network to host byte order.  On "
 "machines where the host byte order is the same as network byte order, this "
 "is a no-op; otherwise, it performs a 4-byte swap operation."
 msgstr ""
 
-#: library/socket.rst:1095
+#: library/socket.rst:1124
 msgid ""
 "Convert 16-bit positive integers from network to host byte order.  On "
 "machines where the host byte order is the same as network byte order, this "
 "is a no-op; otherwise, it performs a 2-byte swap operation."
 msgstr ""
 
-#: library/socket.rst:1117
+#: library/socket.rst:1146
 msgid ""
 "Raises :exc:`OverflowError` if *x* does not fit in a 16-bit unsigned integer."
 msgstr ""
 
-#: library/socket.rst:1106
+#: library/socket.rst:1135
 msgid ""
 "Convert 32-bit positive integers from host to network byte order.  On "
 "machines where the host byte order is the same as network byte order, this "
 "is a no-op; otherwise, it performs a 4-byte swap operation."
 msgstr ""
 
-#: library/socket.rst:1113
+#: library/socket.rst:1142
 msgid ""
 "Convert 16-bit positive integers from host to network byte order.  On "
 "machines where the host byte order is the same as network byte order, this "
 "is a no-op; otherwise, it performs a 2-byte swap operation."
 msgstr ""
 
-#: library/socket.rst:1124
+#: library/socket.rst:1153
 msgid ""
 "Convert an IPv4 address from dotted-quad string format (for example, "
 "'123.45.67.89') to 32-bit packed binary format, as a bytes object four "
@@ -1280,26 +1322,26 @@ msgid ""
 "which is the C type for the 32-bit packed binary this function returns."
 msgstr ""
 
-#: library/socket.rst:1130
+#: library/socket.rst:1159
 msgid ""
 ":func:`inet_aton` also accepts strings with less than three dots; see the "
 "Unix manual page :manpage:`inet(3)` for details."
 msgstr ""
 
-#: library/socket.rst:1133
+#: library/socket.rst:1162
 msgid ""
 "If the IPv4 address string passed to this function is invalid, :exc:"
 "`OSError` will be raised. Note that exactly what is valid depends on the "
 "underlying C implementation of :c:func:`inet_aton`."
 msgstr ""
 
-#: library/socket.rst:1137
+#: library/socket.rst:1166
 msgid ""
 ":func:`inet_aton` does not support IPv6, and :func:`inet_pton` should be "
 "used instead for IPv4/v6 dual stack support."
 msgstr ""
 
-#: library/socket.rst:1143
+#: library/socket.rst:1172
 msgid ""
 "Convert a 32-bit packed IPv4 address (a :term:`bytes-like object` four bytes "
 "in length) to its standard dotted-quad string representation (for example, "
@@ -1309,7 +1351,7 @@ msgid ""
 "argument."
 msgstr ""
 
-#: library/socket.rst:1150
+#: library/socket.rst:1179
 msgid ""
 "If the byte sequence passed to this function is not exactly 4 bytes in "
 "length, :exc:`OSError` will be raised. :func:`inet_ntoa` does not support "
@@ -1317,7 +1359,7 @@ msgid ""
 "support."
 msgstr ""
 
-#: library/socket.rst:1161
+#: library/socket.rst:1190
 msgid ""
 "Convert an IP address from its family-specific string format to a packed, "
 "binary format. :func:`inet_pton` is useful when a library or network "
@@ -1325,7 +1367,7 @@ msgid ""
 "`inet_aton`) or :c:struct:`in6_addr`."
 msgstr ""
 
-#: library/socket.rst:1166
+#: library/socket.rst:1195
 msgid ""
 "Supported values for *address_family* are currently :const:`AF_INET` and :"
 "const:`AF_INET6`. If the IP address string *ip_string* is invalid, :exc:"
@@ -1334,11 +1376,11 @@ msgid ""
 "`inet_pton`."
 msgstr ""
 
-#: library/socket.rst:1194
+#: library/socket.rst:1223
 msgid "Windows support added"
 msgstr ""
 
-#: library/socket.rst:1180
+#: library/socket.rst:1209
 msgid ""
 "Convert a packed IP address (a :term:`bytes-like object` of some number of "
 "bytes) to its standard, family-specific string representation (for example, "
@@ -1347,7 +1389,7 @@ msgid ""
 "(similar to :func:`inet_ntoa`) or :c:struct:`in6_addr`."
 msgstr ""
 
-#: library/socket.rst:1187
+#: library/socket.rst:1216
 msgid ""
 "Supported values for *address_family* are currently :const:`AF_INET` and :"
 "const:`AF_INET6`. If the bytes object *packed_ip* is not the correct length "
@@ -1355,7 +1397,7 @@ msgid ""
 "`OSError` is raised for errors from the call to :func:`inet_ntop`."
 msgstr ""
 
-#: library/socket.rst:1209
+#: library/socket.rst:1238
 msgid ""
 "Return the total length, without trailing padding, of an ancillary data item "
 "with associated data of the given *length*.  This value can often be used as "
@@ -1366,11 +1408,11 @@ msgid ""
 "the permissible range of values."
 msgstr ""
 
-#: library/socket.rst:1712 library/socket.rst:1864
+#: library/socket.rst:1736 library/socket.rst:1888
 msgid "Most Unix platforms."
 msgstr ""
 
-#: library/socket.rst:1227
+#: library/socket.rst:1256
 msgid ""
 "Return the buffer size needed for :meth:`~socket.recvmsg` to receive an "
 "ancillary data item with associated data of the given *length*, along with "
@@ -1380,7 +1422,7 @@ msgid ""
 "values."
 msgstr ""
 
-#: library/socket.rst:1235
+#: library/socket.rst:1264
 msgid ""
 "Note that some systems might support ancillary data without providing this "
 "function.  Also note that setting the buffer size using the results of this "
@@ -1388,131 +1430,131 @@ msgid ""
 "received, since additional data may be able to fit into the padding area."
 msgstr ""
 
-#: library/socket.rst:1243
+#: library/socket.rst:1272
 msgid "most Unix platforms."
 msgstr ""
 
-#: library/socket.rst:1250
+#: library/socket.rst:1279
 msgid ""
 "Return the default timeout in seconds (float) for new socket objects. A "
 "value of ``None`` indicates that new socket objects have no timeout. When "
 "the socket module is first imported, the default is ``None``."
 msgstr ""
 
-#: library/socket.rst:1257
+#: library/socket.rst:1286
 msgid ""
 "Set the default timeout in seconds (float) for new socket objects.  When the "
 "socket module is first imported, the default is ``None``.  See :meth:"
 "`~socket.settimeout` for possible values and their respective meanings."
 msgstr ""
 
-#: library/socket.rst:1265
+#: library/socket.rst:1294
 msgid ""
 "Set the machine's hostname to *name*.  This will raise an :exc:`OSError` if "
 "you don't have enough rights."
 msgstr ""
 
-#: library/socket.rst:1268
+#: library/socket.rst:1297
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``socket.sethostname`` with "
 "argument ``name``."
 msgstr ""
 
-#: library/socket.rst:1277
+#: library/socket.rst:1306
 msgid ""
 "Return a list of network interface information (index int, name string) "
 "tuples. :exc:`OSError` if the system call fails."
 msgstr ""
 
-#: library/socket.rst:1312 library/socket.rst:1329
+#: library/socket.rst:1341 library/socket.rst:1358
 msgid "Windows support was added."
 msgstr ""
 
-#: library/socket.rst:1290
+#: library/socket.rst:1319
 msgid ""
 "On Windows network interfaces have different names in different contexts "
 "(all names are examples):"
 msgstr ""
 
-#: library/socket.rst:1293
+#: library/socket.rst:1322
 msgid "UUID: ``{FB605B73-AAC2-49A6-9A2F-25416AEA0573}``"
 msgstr ""
 
-#: library/socket.rst:1294
+#: library/socket.rst:1323
 msgid "name: ``ethernet_32770``"
 msgstr ""
 
-#: library/socket.rst:1295
+#: library/socket.rst:1324
 msgid "friendly name: ``vEthernet (nat)``"
 msgstr ""
 
-#: library/socket.rst:1296
+#: library/socket.rst:1325
 msgid "description: ``Hyper-V Virtual Ethernet Adapter``"
 msgstr ""
 
-#: library/socket.rst:1298
+#: library/socket.rst:1327
 msgid ""
 "This function returns names of the second form from the list, "
 "``ethernet_32770`` in this example case."
 msgstr ""
 
-#: library/socket.rst:1304
+#: library/socket.rst:1333
 msgid ""
 "Return a network interface index number corresponding to an interface name. :"
 "exc:`OSError` if no interface with the given name exists."
 msgstr ""
 
-#: library/socket.rst:1333
+#: library/socket.rst:1362
 msgid "\"Interface name\" is a name as documented in :func:`if_nameindex`."
 msgstr ""
 
-#: library/socket.rst:1321
+#: library/socket.rst:1350
 msgid ""
 "Return a network interface name corresponding to an interface index number. :"
 "exc:`OSError` if no interface with the given index exists."
 msgstr ""
 
-#: library/socket.rst:1338
+#: library/socket.rst:1367
 msgid ""
 "Send the list of file descriptors *fds* over an :const:`AF_UNIX` socket "
 "*sock*. The *fds* parameter is a sequence of file descriptors. Consult :meth:"
 "`~socket.sendmsg` for the documentation of these parameters."
 msgstr ""
 
-#: library/socket.rst:1358
+#: library/socket.rst:1387
 msgid ""
 "Unix platforms supporting :meth:`~socket.sendmsg` and :const:`SCM_RIGHTS` "
 "mechanism."
 msgstr ""
 
-#: library/socket.rst:1352
+#: library/socket.rst:1381
 msgid ""
 "Receive up to *maxfds* file descriptors from an :const:`AF_UNIX` socket "
 "*sock*. Return ``(msg, list(fds), flags, addr)``. Consult :meth:`~socket."
 "recvmsg` for the documentation of these parameters."
 msgstr ""
 
-#: library/socket.rst:1365
+#: library/socket.rst:1394
 msgid "Any truncated integers at the end of the list of file descriptors."
 msgstr ""
 
-#: library/socket.rst:1371
+#: library/socket.rst:1400
 msgid "Socket Objects"
 msgstr ""
 
-#: library/socket.rst:1373
+#: library/socket.rst:1402
 msgid ""
 "Socket objects have the following methods.  Except for :meth:`~socket."
 "makefile`, these correspond to Unix system calls applicable to sockets."
 msgstr ""
 
-#: library/socket.rst:1377
+#: library/socket.rst:1406
 msgid ""
 "Support for the :term:`context manager` protocol was added.  Exiting the "
 "context manager is equivalent to calling :meth:`~socket.close`."
 msgstr ""
 
-#: library/socket.rst:1384
+#: library/socket.rst:1413
 msgid ""
 "Accept a connection. The socket must be bound to an address and listening "
 "for connections. The return value is a pair ``(conn, address)`` where *conn* "
@@ -1521,31 +1563,31 @@ msgid ""
 "connection."
 msgstr ""
 
-#: library/socket.rst:1485
+#: library/socket.rst:1514
 msgid "The socket is now non-inheritable."
 msgstr ""
 
-#: library/socket.rst:1625 library/socket.rst:1716 library/socket.rst:1808
-#: library/socket.rst:1870
+#: library/socket.rst:1649 library/socket.rst:1740 library/socket.rst:1832
+#: library/socket.rst:1894
 msgid ""
 "If the system call is interrupted and the signal handler does not raise an "
 "exception, the method now retries the system call instead of raising an :exc:"
 "`InterruptedError` exception (see :pep:`475` for the rationale)."
 msgstr ""
 
-#: library/socket.rst:1402
+#: library/socket.rst:1431
 msgid ""
 "Bind the socket to *address*.  The socket must not already be bound. (The "
 "format of *address* depends on the address family --- see above.)"
 msgstr ""
 
-#: library/socket.rst:1405
+#: library/socket.rst:1434
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``socket.bind`` with arguments "
 "``self``, ``address``."
 msgstr ""
 
-#: library/socket.rst:1412
+#: library/socket.rst:1441
 msgid ""
 "Mark the socket closed.  The underlying system resource (e.g. a file "
 "descriptor) is also closed when all file objects from :meth:`makefile` are "
@@ -1554,33 +1596,33 @@ msgid ""
 "flushed)."
 msgstr ""
 
-#: library/socket.rst:1418
+#: library/socket.rst:1447
 msgid ""
 "Sockets are automatically closed when they are garbage-collected, but it is "
 "recommended to :meth:`close` them explicitly, or to use a :keyword:`with` "
 "statement around them."
 msgstr ""
 
-#: library/socket.rst:1422
+#: library/socket.rst:1451
 msgid ""
 ":exc:`OSError` is now raised if an error occurs when the underlying :c:func:"
 "`close` call is made."
 msgstr ""
 
-#: library/socket.rst:1428
+#: library/socket.rst:1457
 msgid ""
 ":meth:`close` releases the resource associated with a connection but does "
 "not necessarily close the connection immediately.  If you want to close the "
 "connection in a timely fashion, call :meth:`shutdown` before :meth:`close`."
 msgstr ""
 
-#: library/socket.rst:1436
+#: library/socket.rst:1465
 msgid ""
 "Connect to a remote socket at *address*. (The format of *address* depends on "
 "the address family --- see above.)"
 msgstr ""
 
-#: library/socket.rst:1439
+#: library/socket.rst:1468
 msgid ""
 "If the connection is interrupted by a signal, the method waits until the "
 "connection completes, or raise a :exc:`TimeoutError` on timeout, if the "
@@ -1590,13 +1632,13 @@ msgid ""
 "(or the exception raised by the signal handler)."
 msgstr ""
 
-#: library/socket.rst:1466
+#: library/socket.rst:1495
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``socket.connect`` with arguments "
 "``self``, ``address``."
 msgstr ""
 
-#: library/socket.rst:1448
+#: library/socket.rst:1477
 msgid ""
 "The method now waits until the connection completes instead of raising an :"
 "exc:`InterruptedError` exception if the connection is interrupted by a "
@@ -1604,7 +1646,7 @@ msgid ""
 "blocking or has a timeout (see the :pep:`475` for the rationale)."
 msgstr ""
 
-#: library/socket.rst:1459
+#: library/socket.rst:1488
 msgid ""
 "Like ``connect(address)``, but return an error indicator instead of raising "
 "an exception for errors returned by the C-level :c:func:`connect` call "
@@ -1614,38 +1656,38 @@ msgid ""
 "asynchronous connects."
 msgstr ""
 
-#: library/socket.rst:1472
+#: library/socket.rst:1501
 msgid ""
 "Put the socket object into closed state without actually closing the "
 "underlying file descriptor.  The file descriptor is returned, and can be "
 "reused for other purposes."
 msgstr ""
 
-#: library/socket.rst:1481
+#: library/socket.rst:1510
 msgid "Duplicate the socket."
 msgstr ""
 
-#: library/socket.rst:1493
+#: library/socket.rst:1522
 msgid ""
 "Return the socket's file descriptor (a small integer), or -1 on failure. "
 "This is useful with :func:`select.select`."
 msgstr ""
 
-#: library/socket.rst:1496
+#: library/socket.rst:1525
 msgid ""
 "Under Windows the small integer returned by this method cannot be used where "
 "a file descriptor can be used (such as :func:`os.fdopen`).  Unix does not "
 "have this limitation."
 msgstr ""
 
-#: library/socket.rst:1502
+#: library/socket.rst:1531
 msgid ""
 "Get the :ref:`inheritable flag <fd_inheritance>` of the socket's file "
 "descriptor or socket's handle: ``True`` if the socket can be inherited in "
 "child processes, ``False`` if it cannot."
 msgstr ""
 
-#: library/socket.rst:1511
+#: library/socket.rst:1540
 msgid ""
 "Return the remote address to which the socket is connected.  This is useful "
 "to find out the port number of a remote IPv4/v6 socket, for instance. (The "
@@ -1653,14 +1695,14 @@ msgid ""
 "above.)  On some systems this function is not supported."
 msgstr ""
 
-#: library/socket.rst:1519
+#: library/socket.rst:1548
 msgid ""
 "Return the socket's own address.  This is useful to find out the port number "
 "of an IPv4/v6 socket, for instance. (The format of the address returned "
 "depends on the address family --- see above.)"
 msgstr ""
 
-#: library/socket.rst:1526
+#: library/socket.rst:1555
 msgid ""
 "Return the value of the given socket option (see the Unix man page :manpage:"
 "`getsockopt(2)`).  The needed symbolic constants (:ref:`SO_\\* etc. <socket-"
@@ -1673,16 +1715,16 @@ msgid ""
 "encoded as byte strings)."
 msgstr ""
 
-#: library/socket.rst:1540
+#: library/socket.rst:1569
 msgid ""
 "Return ``True`` if socket is in blocking mode, ``False`` if in non-blocking."
 msgstr ""
 
-#: library/socket.rst:1543
+#: library/socket.rst:1572
 msgid "This is equivalent to checking ``socket.gettimeout() != 0``."
 msgstr ""
 
-#: library/socket.rst:1550
+#: library/socket.rst:1579
 msgid ""
 "Return the timeout in seconds (float) associated with socket operations, or "
 "``None`` if no timeout is set.  This reflects the last call to :meth:"
@@ -1693,30 +1735,30 @@ msgstr ""
 msgid "platform"
 msgstr ""
 
-#: library/socket.rst:1557
+#: library/socket.rst:1586
 msgid "Windows"
 msgstr ""
 
-#: library/socket.rst:1559
+#: library/socket.rst:1588
 msgid ""
 "The :meth:`ioctl` method is a limited interface to the WSAIoctl system "
 "interface.  Please refer to the `Win32 documentation <https://msdn.microsoft."
 "com/en-us/library/ms741621%28VS.85%29.aspx>`_ for more information."
 msgstr ""
 
-#: library/socket.rst:1564
+#: library/socket.rst:1593
 msgid ""
 "On other platforms, the generic :func:`fcntl.fcntl` and :func:`fcntl.ioctl` "
 "functions may be used; they accept a socket object as their first argument."
 msgstr ""
 
-#: library/socket.rst:1567
+#: library/socket.rst:1596
 msgid ""
 "Currently only the following control codes are supported: ``SIO_RCVALL``, "
 "``SIO_KEEPALIVE_VALS``, and ``SIO_LOOPBACK_FAST_PATH``."
 msgstr ""
 
-#: library/socket.rst:1575
+#: library/socket.rst:1604
 msgid ""
 "Enable a server to accept connections.  If *backlog* is specified, it must "
 "be at least 0 (if it is lower, it is set to 0); it specifies the number of "
@@ -1724,11 +1766,11 @@ msgid ""
 "connections. If not specified, a default reasonable value is chosen."
 msgstr ""
 
-#: library/socket.rst:1582
+#: library/socket.rst:1611
 msgid "The *backlog* parameter is now optional."
 msgstr ""
 
-#: library/socket.rst:1591
+#: library/socket.rst:1620
 msgid ""
 "Return a :term:`file object` associated with the socket.  The exact returned "
 "type depends on the arguments given to :meth:`makefile`.  These arguments "
@@ -1737,28 +1779,28 @@ msgid ""
 "``'b'``, or a combination of those."
 msgstr ""
 
-#: library/socket.rst:1597
+#: library/socket.rst:1626
 msgid ""
 "The socket must be in blocking mode; it can have a timeout, but the file "
 "object's internal buffer may end up in an inconsistent state if a timeout "
 "occurs."
 msgstr ""
 
-#: library/socket.rst:1601
+#: library/socket.rst:1630
 msgid ""
 "Closing the file object returned by :meth:`makefile` won't close the "
 "original socket unless all other file objects have been closed and :meth:"
 "`socket.close` has been called on the socket object."
 msgstr ""
 
-#: library/socket.rst:1607
+#: library/socket.rst:1636
 msgid ""
 "On Windows, the file-like object created by :meth:`makefile` cannot be used "
 "where a file object with a file descriptor is expected, such as the stream "
 "arguments of :meth:`subprocess.Popen`."
 msgstr ""
 
-#: library/socket.rst:1614
+#: library/socket.rst:1643
 msgid ""
 "Receive data from the socket.  The return value is a bytes object "
 "representing the data received.  The maximum amount of data to be received "
@@ -1768,13 +1810,7 @@ msgid ""
 "zero."
 msgstr ""
 
-#: library/socket.rst:1622
-msgid ""
-"For best match with hardware and network realities, the value of  *bufsize* "
-"should be a relatively small power of 2, for example, 4096."
-msgstr ""
-
-#: library/socket.rst:1633
+#: library/socket.rst:1657
 msgid ""
 "Receive data from the socket.  The return value is a pair ``(bytes, "
 "address)`` where *bytes* is a bytes object representing the data received "
@@ -1784,14 +1820,14 @@ msgid ""
 "address family --- see above.)"
 msgstr ""
 
-#: library/socket.rst:1644
+#: library/socket.rst:1668
 msgid ""
 "For multicast IPv6 address, first item of *address* does not contain "
 "``%scope_id`` part anymore. In order to get full IPv6 address use :func:"
 "`getnameinfo`."
 msgstr ""
 
-#: library/socket.rst:1651
+#: library/socket.rst:1675
 msgid ""
 "Receive normal data (up to *bufsize* bytes) and ancillary data from the "
 "socket.  The *ancbufsize* argument sets the size in bytes of the internal "
@@ -1802,7 +1838,7 @@ msgid ""
 "*flags* argument defaults to 0 and has the same meaning as for :meth:`recv`."
 msgstr ""
 
-#: library/socket.rst:1661
+#: library/socket.rst:1685
 msgid ""
 "The return value is a 4-tuple: ``(data, ancdata, msg_flags, address)``.  The "
 "*data* item is a :class:`bytes` object holding the non-ancillary data "
@@ -1817,7 +1853,7 @@ msgid ""
 "socket, if available; otherwise, its value is unspecified."
 msgstr ""
 
-#: library/socket.rst:1675
+#: library/socket.rst:1699
 msgid ""
 "On some systems, :meth:`sendmsg` and :meth:`recvmsg` can be used to pass "
 "file descriptors between processes over an :const:`AF_UNIX` socket.  When "
@@ -1830,7 +1866,7 @@ msgid ""
 "descriptors received via this mechanism."
 msgstr ""
 
-#: library/socket.rst:1686
+#: library/socket.rst:1710
 msgid ""
 "Some systems do not indicate the truncated length of ancillary data items "
 "which have been only partially received.  If an item appears to extend "
@@ -1839,7 +1875,7 @@ msgid ""
 "provided it has not been truncated before the start of its associated data."
 msgstr ""
 
-#: library/socket.rst:1693
+#: library/socket.rst:1717
 msgid ""
 "On systems which support the :const:`SCM_RIGHTS` mechanism, the following "
 "function will receive up to *maxfds* file descriptors, returning the message "
@@ -1848,7 +1884,7 @@ msgid ""
 "meth:`sendmsg`. ::"
 msgstr ""
 
-#: library/socket.rst:1699
+#: library/socket.rst:1723
 msgid ""
 "import socket, array\n"
 "\n"
@@ -1865,7 +1901,7 @@ msgid ""
 "    return msg, list(fds)"
 msgstr ""
 
-#: library/socket.rst:1724
+#: library/socket.rst:1748
 msgid ""
 "Receive normal data and ancillary data from the socket, behaving as :meth:"
 "`recvmsg` would, but scatter the non-ancillary data into a series of buffers "
@@ -1878,7 +1914,7 @@ msgid ""
 "arguments have the same meaning as for :meth:`recvmsg`."
 msgstr ""
 
-#: library/socket.rst:1735
+#: library/socket.rst:1759
 msgid ""
 "The return value is a 4-tuple: ``(nbytes, ancdata, msg_flags, address)``, "
 "where *nbytes* is the total number of bytes of non-ancillary data written "
@@ -1886,11 +1922,11 @@ msgid ""
 "for :meth:`recvmsg`."
 msgstr ""
 
-#: library/socket.rst:1740
+#: library/socket.rst:1764
 msgid "Example::"
 msgstr ""
 
-#: library/socket.rst:1742
+#: library/socket.rst:1766
 msgid ""
 ">>> import socket\n"
 ">>> s1, s2 = socket.socketpair()\n"
@@ -1905,7 +1941,7 @@ msgid ""
 "[bytearray(b'Mary'), bytearray(b'01 had a 9'), bytearray(b'little lamb---')]"
 msgstr ""
 
-#: library/socket.rst:1763
+#: library/socket.rst:1787
 msgid ""
 "Receive data from the socket, writing it into *buffer* instead of creating a "
 "new bytestring.  The return value is a pair ``(nbytes, address)`` where "
@@ -1915,7 +1951,7 @@ msgid ""
 "format of *address* depends on the address family --- see above.)"
 msgstr ""
 
-#: library/socket.rst:1773
+#: library/socket.rst:1797
 msgid ""
 "Receive up to *nbytes* bytes from the socket, storing the data into a buffer "
 "rather than creating a new bytestring.  If *nbytes* is not specified (or 0), "
@@ -1924,7 +1960,7 @@ msgid ""
 "of the optional argument *flags*; it defaults to zero."
 msgstr ""
 
-#: library/socket.rst:1782
+#: library/socket.rst:1806
 msgid ""
 "Send data to the socket.  The socket must be connected to a remote socket.  "
 "The optional *flags* argument has the same meaning as for :meth:`recv` "
@@ -1934,7 +1970,7 @@ msgid ""
 "data. For further information on this topic, consult the :ref:`socket-howto`."
 msgstr ""
 
-#: library/socket.rst:1797
+#: library/socket.rst:1821
 msgid ""
 "Send data to the socket.  The socket must be connected to a remote socket.  "
 "The optional *flags* argument has the same meaning as for :meth:`recv` "
@@ -1944,13 +1980,13 @@ msgid ""
 "to determine how much data, if any, was successfully sent."
 msgstr ""
 
-#: library/socket.rst:1804
+#: library/socket.rst:1828
 msgid ""
 "The socket timeout is no longer reset each time data is sent successfully. "
 "The socket timeout is now the maximum total duration to send all data."
 msgstr ""
 
-#: library/socket.rst:1817
+#: library/socket.rst:1841
 msgid ""
 "Send data to the socket.  The socket should not be connected to a remote "
 "socket, since the destination socket is specified by *address*.  The "
@@ -1959,13 +1995,13 @@ msgid ""
 "address family --- see above.)"
 msgstr ""
 
-#: library/socket.rst:1823
+#: library/socket.rst:1847
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``socket.sendto`` with arguments "
 "``self``, ``address``."
 msgstr ""
 
-#: library/socket.rst:1833
+#: library/socket.rst:1857
 msgid ""
 "Send normal and ancillary data to the socket, gathering the non-ancillary "
 "data from a series of buffers and concatenating it into a single message.  "
@@ -1985,14 +2021,14 @@ msgid ""
 "bytes of non-ancillary data sent."
 msgstr ""
 
-#: library/socket.rst:1853
+#: library/socket.rst:1877
 msgid ""
 "The following function sends the list of file descriptors *fds* over an :"
 "const:`AF_UNIX` socket, on systems which support the :const:`SCM_RIGHTS` "
 "mechanism.  See also :meth:`recvmsg`. ::"
 msgstr ""
 
-#: library/socket.rst:1857
+#: library/socket.rst:1881
 msgid ""
 "import socket, array\n"
 "\n"
@@ -2001,20 +2037,20 @@ msgid ""
 "array(\"i\", fds))])"
 msgstr ""
 
-#: library/socket.rst:1866
+#: library/socket.rst:1890
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``socket.sendmsg`` with arguments "
 "``self``, ``address``."
 msgstr ""
 
-#: library/socket.rst:1877
+#: library/socket.rst:1901
 msgid ""
 "Specialized version of :meth:`~socket.sendmsg` for :const:`AF_ALG` socket. "
 "Set mode, IV, AEAD associated data length and flags for :const:`AF_ALG` "
 "socket."
 msgstr ""
 
-#: library/socket.rst:1886
+#: library/socket.rst:1910
 msgid ""
 "Send a file until EOF is reached by using high-performance :mod:`os."
 "sendfile` and return the total number of bytes which were sent. *file* must "
@@ -2028,38 +2064,38 @@ msgid ""
 "be of :const:`SOCK_STREAM` type. Non-blocking sockets are not supported."
 msgstr ""
 
-#: library/socket.rst:1902
+#: library/socket.rst:1926
 msgid ""
 "Set the :ref:`inheritable flag <fd_inheritance>` of the socket's file "
 "descriptor or socket's handle."
 msgstr ""
 
-#: library/socket.rst:1910
+#: library/socket.rst:1934
 msgid ""
 "Set blocking or non-blocking mode of the socket: if *flag* is false, the "
 "socket is set to non-blocking, else to blocking mode."
 msgstr ""
 
-#: library/socket.rst:1913
+#: library/socket.rst:1937
 msgid ""
 "This method is a shorthand for certain :meth:`~socket.settimeout` calls:"
 msgstr ""
 
-#: library/socket.rst:1915
+#: library/socket.rst:1939
 msgid "``sock.setblocking(True)`` is equivalent to ``sock.settimeout(None)``"
 msgstr ""
 
-#: library/socket.rst:1917
+#: library/socket.rst:1941
 msgid "``sock.setblocking(False)`` is equivalent to ``sock.settimeout(0.0)``"
 msgstr ""
 
-#: library/socket.rst:1919
+#: library/socket.rst:1943
 msgid ""
 "The method no longer applies :const:`SOCK_NONBLOCK` flag on :attr:`socket."
 "type`."
 msgstr ""
 
-#: library/socket.rst:1926
+#: library/socket.rst:1950
 msgid ""
 "Set a timeout on blocking socket operations.  The *value* argument can be a "
 "nonnegative floating-point number expressing seconds, or ``None``. If a non-"
@@ -2069,19 +2105,19 @@ msgid ""
 "blocking mode. If ``None`` is given, the socket is put in blocking mode."
 msgstr ""
 
-#: library/socket.rst:1933
+#: library/socket.rst:1957
 msgid ""
 "For further information, please consult the :ref:`notes on socket timeouts "
 "<socket-timeouts>`."
 msgstr ""
 
-#: library/socket.rst:1935
+#: library/socket.rst:1959
 msgid ""
 "The method no longer toggles :const:`SOCK_NONBLOCK` flag on :attr:`socket."
 "type`."
 msgstr ""
 
-#: library/socket.rst:1948
+#: library/socket.rst:1972
 msgid ""
 "Set the value of the given socket option (see the Unix manual page :manpage:"
 "`setsockopt(2)`).  The needed symbolic constants are defined in this module "
@@ -2094,11 +2130,11 @@ msgid ""
 "C function with ``optval=NULL`` and ``optlen=optlen``."
 msgstr ""
 
-#: library/socket.rst:1961
+#: library/socket.rst:1985
 msgid "setsockopt(level, optname, None, optlen: int) form added."
 msgstr ""
 
-#: library/socket.rst:1969
+#: library/socket.rst:1993
 msgid ""
 "Shut down one or both halves of the connection.  If *how* is :const:"
 "`SHUT_RD`, further receives are disallowed.  If *how* is :const:`SHUT_WR`, "
@@ -2106,7 +2142,7 @@ msgid ""
 "and receives are disallowed."
 msgstr ""
 
-#: library/socket.rst:1979
+#: library/socket.rst:2003
 msgid ""
 "Duplicate a socket and prepare it for sharing with a target process.  The "
 "target process must be provided with *process_id*.  The resulting bytes "
@@ -2117,48 +2153,48 @@ msgid ""
 "process."
 msgstr ""
 
-#: library/socket.rst:1991
+#: library/socket.rst:2015
 msgid ""
 "Note that there are no methods :meth:`read` or :meth:`write`; use :meth:"
 "`~socket.recv` and :meth:`~socket.send` without *flags* argument instead."
 msgstr ""
 
-#: library/socket.rst:1994
+#: library/socket.rst:2018
 msgid ""
 "Socket objects also have these (read-only) attributes that correspond to the "
 "values given to the :class:`~socket.socket` constructor."
 msgstr ""
 
-#: library/socket.rst:2000
+#: library/socket.rst:2024
 msgid "The socket family."
 msgstr ""
 
-#: library/socket.rst:2005
+#: library/socket.rst:2029
 msgid "The socket type."
 msgstr ""
 
-#: library/socket.rst:2010
+#: library/socket.rst:2034
 msgid "The socket protocol."
 msgstr ""
 
-#: library/socket.rst:2017
+#: library/socket.rst:2041
 msgid "Notes on socket timeouts"
 msgstr ""
 
-#: library/socket.rst:2019
+#: library/socket.rst:2043
 msgid ""
 "A socket object can be in one of three modes: blocking, non-blocking, or "
 "timeout.  Sockets are by default always created in blocking mode, but this "
 "can be changed by calling :func:`setdefaulttimeout`."
 msgstr ""
 
-#: library/socket.rst:2023
+#: library/socket.rst:2047
 msgid ""
 "In *blocking mode*, operations block until complete or the system returns an "
 "error (such as connection timed out)."
 msgstr ""
 
-#: library/socket.rst:2026
+#: library/socket.rst:2050
 msgid ""
 "In *non-blocking mode*, operations fail (with an error that is unfortunately "
 "system-dependent) if they cannot be completed immediately: functions from "
@@ -2166,14 +2202,14 @@ msgid ""
 "available for reading or writing."
 msgstr ""
 
-#: library/socket.rst:2031
+#: library/socket.rst:2055
 msgid ""
 "In *timeout mode*, operations fail if they cannot be completed within the "
 "timeout specified for the socket (they raise a :exc:`timeout` exception) or "
 "if the system returns an error."
 msgstr ""
 
-#: library/socket.rst:2036
+#: library/socket.rst:2060
 msgid ""
 "At the operating system level, sockets in *timeout mode* are internally set "
 "in non-blocking mode.  Also, the blocking and timeout modes are shared "
@@ -2182,11 +2218,11 @@ msgid ""
 "you decide to use the :meth:`~socket.fileno` of a socket."
 msgstr ""
 
-#: library/socket.rst:2043
+#: library/socket.rst:2067
 msgid "Timeouts and the ``connect`` method"
 msgstr ""
 
-#: library/socket.rst:2045
+#: library/socket.rst:2069
 msgid ""
 "The :meth:`~socket.connect` operation is also subject to the timeout "
 "setting, and in general it is recommended to call :meth:`~socket.settimeout` "
@@ -2196,24 +2232,24 @@ msgid ""
 "setting."
 msgstr ""
 
-#: library/socket.rst:2053
+#: library/socket.rst:2077
 msgid "Timeouts and the ``accept`` method"
 msgstr ""
 
-#: library/socket.rst:2055
+#: library/socket.rst:2079
 msgid ""
 "If :func:`getdefaulttimeout` is not :const:`None`, sockets returned by the :"
 "meth:`~socket.accept` method inherit that timeout.  Otherwise, the behaviour "
 "depends on settings of the listening socket:"
 msgstr ""
 
-#: library/socket.rst:2059
+#: library/socket.rst:2083
 msgid ""
 "if the listening socket is in *blocking mode* or in *timeout mode*, the "
 "socket returned by :meth:`~socket.accept` is in *blocking mode*;"
 msgstr ""
 
-#: library/socket.rst:2062
+#: library/socket.rst:2086
 msgid ""
 "if the listening socket is in *non-blocking mode*, whether the socket "
 "returned by :meth:`~socket.accept` is in blocking or non-blocking mode is "
@@ -2221,11 +2257,11 @@ msgid ""
 "it is recommended you manually override this setting."
 msgstr ""
 
-#: library/socket.rst:2071
+#: library/socket.rst:2095
 msgid "Example"
 msgstr ""
 
-#: library/socket.rst:2073
+#: library/socket.rst:2097
 msgid ""
 "Here are four minimal example programs using the TCP/IP protocol: a server "
 "that echoes all data that it receives back (servicing only one client), and "
@@ -2238,11 +2274,11 @@ msgid ""
 "on the new socket returned by :meth:`~socket.accept`."
 msgstr ""
 
-#: library/socket.rst:2083
+#: library/socket.rst:2107
 msgid "The first two examples support IPv4 only. ::"
 msgstr ""
 
-#: library/socket.rst:2085
+#: library/socket.rst:2109
 msgid ""
 "# Echo server program\n"
 "import socket\n"
@@ -2261,7 +2297,7 @@ msgid ""
 "            conn.sendall(data)"
 msgstr ""
 
-#: library/socket.rst:2103
+#: library/socket.rst:2127
 msgid ""
 "# Echo client program\n"
 "import socket\n"
@@ -2275,7 +2311,7 @@ msgid ""
 "print('Received', repr(data))"
 msgstr ""
 
-#: library/socket.rst:2114
+#: library/socket.rst:2138
 msgid ""
 "The next two examples are identical to the above two, but support both IPv4 "
 "and IPv6. The server side will listen to the first address family available "
@@ -2285,7 +2321,7 @@ msgid ""
 "resolution, and sends traffic to the first one connected successfully. ::"
 msgstr ""
 
-#: library/socket.rst:2121
+#: library/socket.rst:2145
 msgid ""
 "# Echo server program\n"
 "import socket\n"
@@ -2322,7 +2358,7 @@ msgid ""
 "        conn.send(data)"
 msgstr ""
 
-#: library/socket.rst:2157
+#: library/socket.rst:2181
 msgid ""
 "# Echo client program\n"
 "import socket\n"
@@ -2355,14 +2391,14 @@ msgid ""
 "print('Received', repr(data))"
 msgstr ""
 
-#: library/socket.rst:2186
+#: library/socket.rst:2210
 msgid ""
 "The next example shows how to write a very simple network sniffer with raw "
 "sockets on Windows. The example requires administrator privileges to modify "
 "the interface::"
 msgstr ""
 
-#: library/socket.rst:2190
+#: library/socket.rst:2214
 msgid ""
 "import socket\n"
 "\n"
@@ -2386,29 +2422,29 @@ msgid ""
 "s.ioctl(socket.SIO_RCVALL, socket.RCVALL_OFF)"
 msgstr ""
 
-#: library/socket.rst:2211
+#: library/socket.rst:2235
 msgid ""
 "The next example shows how to use the socket interface to communicate to a "
 "CAN network using the raw socket protocol. To use CAN with the broadcast "
 "manager protocol instead, open a socket with::"
 msgstr ""
 
-#: library/socket.rst:2215
+#: library/socket.rst:2239
 msgid "socket.socket(socket.AF_CAN, socket.SOCK_DGRAM, socket.CAN_BCM)"
 msgstr ""
 
-#: library/socket.rst:2217
+#: library/socket.rst:2241
 msgid ""
 "After binding (:const:`CAN_RAW`) or connecting (:const:`CAN_BCM`) the "
 "socket, you can use the :meth:`socket.send` and :meth:`socket.recv` "
 "operations (and their counterparts) on the socket object as usual."
 msgstr ""
 
-#: library/socket.rst:2221
+#: library/socket.rst:2245
 msgid "This last example might require special privileges::"
 msgstr ""
 
-#: library/socket.rst:2223
+#: library/socket.rst:2247
 msgid ""
 "import socket\n"
 "import struct\n"
@@ -2450,59 +2486,59 @@ msgid ""
 "        print('Error sending CAN frame')"
 msgstr ""
 
-#: library/socket.rst:2261
+#: library/socket.rst:2285
 msgid ""
 "Running an example several times with too small delay between executions, "
 "could lead to this error::"
 msgstr ""
 
-#: library/socket.rst:2264
+#: library/socket.rst:2288
 msgid "OSError: [Errno 98] Address already in use"
 msgstr ""
 
-#: library/socket.rst:2266
+#: library/socket.rst:2290
 msgid ""
 "This is because the previous execution has left the socket in a "
 "``TIME_WAIT`` state, and can't be immediately reused."
 msgstr ""
 
-#: library/socket.rst:2269
+#: library/socket.rst:2293
 msgid ""
 "There is a :mod:`socket` flag to set, in order to prevent this, :const:"
 "`socket.SO_REUSEADDR`::"
 msgstr ""
 
-#: library/socket.rst:2272
+#: library/socket.rst:2296
 msgid ""
 "s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)\n"
 "s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)\n"
 "s.bind((HOST, PORT))"
 msgstr ""
 
-#: library/socket.rst:2276
+#: library/socket.rst:2300
 msgid ""
 "the :data:`SO_REUSEADDR` flag tells the kernel to reuse a local socket in "
 "``TIME_WAIT`` state, without waiting for its natural timeout to expire."
 msgstr ""
 
-#: library/socket.rst:2282
+#: library/socket.rst:2306
 msgid ""
 "For an introduction to socket programming (in C), see the following papers:"
 msgstr ""
 
-#: library/socket.rst:2284
+#: library/socket.rst:2308
 msgid ""
 "*An Introductory 4.3BSD Interprocess Communication Tutorial*, by Stuart "
 "Sechrest"
 msgstr ""
 
-#: library/socket.rst:2286
+#: library/socket.rst:2310
 msgid ""
 "*An Advanced 4.3BSD Interprocess Communication Tutorial*, by Samuel J.  "
 "Leffler et al,"
 msgstr ""
 
-#: library/socket.rst:2289
+#: library/socket.rst:2313
 msgid ""
 "both in the UNIX Programmer's Manual, Supplementary Documents 1 (sections "
 "PS1:7 and PS1:8).  The platform-specific reference material for the various "
@@ -2521,18 +2557,18 @@ msgstr ""
 msgid "socket"
 msgstr ""
 
-#: library/socket.rst:1589
+#: library/socket.rst:1618
 msgid "I/O control"
 msgstr ""
 
-#: library/socket.rst:1589
+#: library/socket.rst:1618
 msgid "buffering"
 msgstr ""
 
-#: library/socket.rst:1946
+#: library/socket.rst:1970
 msgid "module"
 msgstr ""
 
-#: library/socket.rst:1946
+#: library/socket.rst:1970
 msgid "struct"
 msgstr ""
diff --git a/library/socketserver.po b/library/socketserver.po
index 3e43e15d3..cf7b375ef 100644
--- a/library/socketserver.po
+++ b/library/socketserver.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -327,17 +327,20 @@ msgstr ""
 
 #: library/socketserver.rst:263
 msgid ""
-"The family of protocols to which the server's socket belongs. Common "
-"examples are :const:`socket.AF_INET` and :const:`socket.AF_UNIX`."
+"The family of protocols to which the server's socket belongs.  Common "
+"examples are :const:`socket.AF_INET`, :const:`socket.AF_INET6`, and :const:"
+"`socket.AF_UNIX`.  Subclass the TCP or UDP server classes in this module "
+"with class attribute ``address_family = AF_INET6`` set if you want IPv6 "
+"server classes."
 msgstr ""
 
-#: library/socketserver.rst:269
+#: library/socketserver.rst:272
 msgid ""
 "The user-provided request handler class; an instance of this class is "
 "created for each request."
 msgstr ""
 
-#: library/socketserver.rst:275
+#: library/socketserver.rst:278
 msgid ""
 "The address on which the server is listening.  The format of addresses "
 "varies depending on the protocol family; see the documentation for the :mod:"
@@ -346,22 +349,22 @@ msgid ""
 "``('127.0.0.1', 80)``, for example."
 msgstr ""
 
-#: library/socketserver.rst:284
+#: library/socketserver.rst:287
 msgid ""
 "The socket object on which the server will listen for incoming requests."
 msgstr ""
 
-#: library/socketserver.rst:287
+#: library/socketserver.rst:290
 msgid "The server classes support the following class variables:"
 msgstr ""
 
-#: library/socketserver.rst:293
+#: library/socketserver.rst:296
 msgid ""
 "Whether the server will allow the reuse of an address.  This defaults to :"
 "const:`False`, and can be set in subclasses to change the policy."
 msgstr ""
 
-#: library/socketserver.rst:299
+#: library/socketserver.rst:302
 msgid ""
 "The size of the request queue.  If it takes a long time to process a single "
 "request, any requests that arrive while the server is busy are placed into a "
@@ -370,40 +373,40 @@ msgid ""
 "default value is usually 5, but this can be overridden by subclasses."
 msgstr ""
 
-#: library/socketserver.rst:308
+#: library/socketserver.rst:311
 msgid ""
 "The type of socket used by the server; :const:`socket.SOCK_STREAM` and :"
 "const:`socket.SOCK_DGRAM` are two common values."
 msgstr ""
 
-#: library/socketserver.rst:314
+#: library/socketserver.rst:317
 msgid ""
 "Timeout duration, measured in seconds, or :const:`None` if no timeout is "
 "desired.  If :meth:`handle_request` receives no incoming requests within the "
 "timeout period, the :meth:`handle_timeout` method is called."
 msgstr ""
 
-#: library/socketserver.rst:319
+#: library/socketserver.rst:322
 msgid ""
 "There are various server methods that can be overridden by subclasses of "
 "base server classes like :class:`TCPServer`; these methods aren't useful to "
 "external users of the server object."
 msgstr ""
 
-#: library/socketserver.rst:328
+#: library/socketserver.rst:331
 msgid ""
 "Actually processes the request by instantiating :attr:`RequestHandlerClass` "
 "and calling its :meth:`~BaseRequestHandler.handle` method."
 msgstr ""
 
-#: library/socketserver.rst:334
+#: library/socketserver.rst:337
 msgid ""
 "Must accept a request from the socket, and return a 2-tuple containing the "
 "*new* socket object to be used to communicate with the client, and the "
 "client's address."
 msgstr ""
 
-#: library/socketserver.rst:341
+#: library/socketserver.rst:344
 msgid ""
 "This function is called if the :meth:`~BaseRequestHandler.handle` method of "
 "a :attr:`RequestHandlerClass` instance raises an exception.  The default "
@@ -411,11 +414,11 @@ msgid ""
 "further requests."
 msgstr ""
 
-#: library/socketserver.rst:346
+#: library/socketserver.rst:349
 msgid "Now only called for exceptions derived from the :exc:`Exception` class."
 msgstr ""
 
-#: library/socketserver.rst:353
+#: library/socketserver.rst:356
 msgid ""
 "This function is called when the :attr:`timeout` attribute has been set to a "
 "value other than :const:`None` and the timeout period has passed with no "
@@ -424,7 +427,7 @@ msgid ""
 "threading servers this method does nothing."
 msgstr ""
 
-#: library/socketserver.rst:362
+#: library/socketserver.rst:365
 msgid ""
 "Calls :meth:`finish_request` to create an instance of the :attr:"
 "`RequestHandlerClass`.  If desired, this function can create a new process "
@@ -432,20 +435,20 @@ msgid ""
 "`ThreadingMixIn` classes do this."
 msgstr ""
 
-#: library/socketserver.rst:374
+#: library/socketserver.rst:377
 msgid ""
 "Called by the server's constructor to activate the server.  The default "
 "behavior for a TCP server just invokes :meth:`~socket.socket.listen` on the "
 "server's socket.  May be overridden."
 msgstr ""
 
-#: library/socketserver.rst:381
+#: library/socketserver.rst:384
 msgid ""
 "Called by the server's constructor to bind the socket to the desired "
 "address. May be overridden."
 msgstr ""
 
-#: library/socketserver.rst:387
+#: library/socketserver.rst:390
 msgid ""
 "Must return a Boolean value; if the value is :const:`True`, the request will "
 "be processed, and if it's :const:`False`, the request will be denied.  This "
@@ -453,17 +456,17 @@ msgid ""
 "default implementation always returns :const:`True`."
 msgstr ""
 
-#: library/socketserver.rst:393
+#: library/socketserver.rst:396
 msgid ""
 "Support for the :term:`context manager` protocol was added.  Exiting the "
 "context manager is equivalent to calling :meth:`server_close`."
 msgstr ""
 
-#: library/socketserver.rst:399
+#: library/socketserver.rst:402
 msgid "Request Handler Objects"
 msgstr ""
 
-#: library/socketserver.rst:403
+#: library/socketserver.rst:406
 msgid ""
 "This is the superclass of all request handler objects.  It defines the "
 "interface, given below.  A concrete request handler subclass must define a "
@@ -471,13 +474,13 @@ msgid ""
 "instance of the subclass is created for each request."
 msgstr ""
 
-#: library/socketserver.rst:412
+#: library/socketserver.rst:415
 msgid ""
 "Called before the :meth:`handle` method to perform any initialization "
 "actions required.  The default implementation does nothing."
 msgstr ""
 
-#: library/socketserver.rst:418
+#: library/socketserver.rst:421
 msgid ""
 "This function must do all the work required to service a request.  The "
 "default implementation does nothing.  Several instance attributes are "
@@ -486,72 +489,72 @@ msgid ""
 "`server`, in case it needs access to per-server information."
 msgstr ""
 
-#: library/socketserver.rst:424
+#: library/socketserver.rst:427
 msgid ""
 "The type of :attr:`request` is different for datagram or stream services.  "
 "For stream services, :attr:`request` is a socket object; for datagram "
 "services, :attr:`request` is a pair of string and socket."
 msgstr ""
 
-#: library/socketserver.rst:431
+#: library/socketserver.rst:434
 msgid ""
 "Called after the :meth:`handle` method to perform any clean-up actions "
 "required.  The default implementation does nothing.  If :meth:`setup` raises "
 "an exception, this function will not be called."
 msgstr ""
 
-#: library/socketserver.rst:438
+#: library/socketserver.rst:441
 msgid ""
 "The *new* :class:`socket.socket` object to be used to communicate with the "
 "client."
 msgstr ""
 
-#: library/socketserver.rst:444
+#: library/socketserver.rst:447
 msgid "Client address returned by :meth:`BaseServer.get_request`."
 msgstr ""
 
-#: library/socketserver.rst:449
+#: library/socketserver.rst:452
 msgid ":class:`BaseServer` object used for handling the request."
 msgstr ""
 
-#: library/socketserver.rst:455
+#: library/socketserver.rst:458
 msgid ""
 "These :class:`BaseRequestHandler` subclasses override the :meth:"
 "`~BaseRequestHandler.setup` and :meth:`~BaseRequestHandler.finish` methods, "
 "and provide :attr:`rfile` and :attr:`wfile` attributes."
 msgstr ""
 
-#: library/socketserver.rst:461
+#: library/socketserver.rst:464
 msgid ""
 "A file object from which receives the request is read. Support the :class:"
 "`io.BufferedIOBase` readable interface."
 msgstr ""
 
-#: library/socketserver.rst:466
+#: library/socketserver.rst:469
 msgid ""
 "A file object to which the reply is written. Support the :class:`io."
 "BufferedIOBase` writable interface"
 msgstr ""
 
-#: library/socketserver.rst:470
+#: library/socketserver.rst:473
 msgid ""
 ":attr:`wfile` also supports the :class:`io.BufferedIOBase` writable "
 "interface."
 msgstr ""
 
-#: library/socketserver.rst:476
+#: library/socketserver.rst:479
 msgid "Examples"
 msgstr ""
 
-#: library/socketserver.rst:479
+#: library/socketserver.rst:482
 msgid ":class:`socketserver.TCPServer` Example"
 msgstr ""
 
-#: library/socketserver.rst:581
+#: library/socketserver.rst:595
 msgid "This is the server side::"
 msgstr ""
 
-#: library/socketserver.rst:483
+#: library/socketserver.rst:486
 msgid ""
 "import socketserver\n"
 "\n"
@@ -566,11 +569,17 @@ msgid ""
 "\n"
 "    def handle(self):\n"
 "        # self.request is the TCP socket connected to the client\n"
-"        self.data = self.request.recv(1024).strip()\n"
-"        print(\"Received from {}:\".format(self.client_address[0]))\n"
-"        print(self.data)\n"
+"        pieces = [b'']\n"
+"        total = 0\n"
+"        while b'\\n' not in pieces[-1] and total < 10_000:\n"
+"            pieces.append(self.request.recv(2000))\n"
+"            total += len(pieces[-1])\n"
+"        self.data = b''.join(pieces)\n"
+"        print(f\"Received from {self.client_address[0]}:\")\n"
+"        print(self.data.decode(\"utf-8\"))\n"
 "        # just send back the same data, but upper-cased\n"
 "        self.request.sendall(self.data.upper())\n"
+"        # after we return, the socket will be closed.\n"
 "\n"
 "if __name__ == \"__main__\":\n"
 "    HOST, PORT = \"localhost\", 9999\n"
@@ -582,42 +591,46 @@ msgid ""
 "        server.serve_forever()"
 msgstr ""
 
-#: library/socketserver.rst:511
+#: library/socketserver.rst:520
 msgid ""
 "An alternative request handler class that makes use of streams (file-like "
 "objects that simplify communication by providing the standard file "
 "interface)::"
 msgstr ""
 
-#: library/socketserver.rst:514
+#: library/socketserver.rst:523
 msgid ""
 "class MyTCPHandler(socketserver.StreamRequestHandler):\n"
 "\n"
 "    def handle(self):\n"
-"        # self.rfile is a file-like object created by the handler;\n"
-"        # we can now use e.g. readline() instead of raw recv() calls\n"
-"        self.data = self.rfile.readline().strip()\n"
-"        print(\"{} wrote:\".format(self.client_address[0]))\n"
-"        print(self.data)\n"
+"        # self.rfile is a file-like object created by the handler.\n"
+"        # We can now use e.g. readline() instead of raw recv() calls.\n"
+"        # We limit ourselves to 10000 bytes to avoid abuse by the sender.\n"
+"        self.data = self.rfile.readline(10000).rstrip()\n"
+"        print(f\"{self.client_address[0]} wrote:\")\n"
+"        print(self.data.decode(\"utf-8\"))\n"
 "        # Likewise, self.wfile is a file-like object used to write back\n"
 "        # to the client\n"
 "        self.wfile.write(self.data.upper())"
 msgstr ""
 
-#: library/socketserver.rst:526
+#: library/socketserver.rst:536
 msgid ""
 "The difference is that the ``readline()`` call in the second handler will "
 "call ``recv()`` multiple times until it encounters a newline character, "
-"while the single ``recv()`` call in the first handler will just return what "
-"has been received so far from the client's ``sendall()`` call (typically all "
-"of it, but this is not guaranteed by the TCP protocol)."
+"while the the first handler had to use a ``recv()`` loop to accumulate data "
+"until a newline itself.  If it had just used a single ``recv()`` without the "
+"loop it would just have returned what has been received so far from the "
+"client. TCP is stream based: data arrives in the order it was sent, but "
+"there no correlation between client ``send()`` or ``sendall()`` calls and "
+"the number of ``recv()`` calls on the server required to receive it."
 msgstr ""
 
-#: library/socketserver.rst:605
+#: library/socketserver.rst:619
 msgid "This is the client side::"
 msgstr ""
 
-#: library/socketserver.rst:535
+#: library/socketserver.rst:548
 msgid ""
 "import socket\n"
 "import sys\n"
@@ -629,24 +642,25 @@ msgid ""
 "with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock:\n"
 "    # Connect to server and send data\n"
 "    sock.connect((HOST, PORT))\n"
-"    sock.sendall(bytes(data + \"\\n\", \"utf-8\"))\n"
+"    sock.sendall(bytes(data, \"utf-8\"))\n"
+"    sock.sendall(b\"\\n\")\n"
 "\n"
 "    # Receive data from the server and shut down\n"
 "    received = str(sock.recv(1024), \"utf-8\")\n"
 "\n"
-"print(\"Sent:     {}\".format(data))\n"
-"print(\"Received: {}\".format(received))"
+"print(\"Sent:    \", data)\n"
+"print(\"Received:\", received)"
 msgstr ""
 
-#: library/socketserver.rst:680
+#: library/socketserver.rst:694
 msgid "The output of the example should look something like this:"
 msgstr ""
 
-#: library/socketserver.rst:556
+#: library/socketserver.rst:570
 msgid "Server:"
 msgstr ""
 
-#: library/socketserver.rst:558
+#: library/socketserver.rst:572
 msgid ""
 "$ python TCPServer.py\n"
 "127.0.0.1 wrote:\n"
@@ -655,11 +669,11 @@ msgid ""
 "b'python is nice'"
 msgstr ""
 
-#: library/socketserver.rst:566
+#: library/socketserver.rst:580
 msgid "Client:"
 msgstr ""
 
-#: library/socketserver.rst:568
+#: library/socketserver.rst:582
 msgid ""
 "$ python TCPClient.py hello world with TCP\n"
 "Sent:     hello world with TCP\n"
@@ -669,11 +683,11 @@ msgid ""
 "Received: PYTHON IS NICE"
 msgstr ""
 
-#: library/socketserver.rst:579
+#: library/socketserver.rst:593
 msgid ":class:`socketserver.UDPServer` Example"
 msgstr ""
 
-#: library/socketserver.rst:583
+#: library/socketserver.rst:597
 msgid ""
 "import socketserver\n"
 "\n"
@@ -688,7 +702,7 @@ msgid ""
 "    def handle(self):\n"
 "        data = self.request[0].strip()\n"
 "        socket = self.request[1]\n"
-"        print(\"{} wrote:\".format(self.client_address[0]))\n"
+"        print(f\"{self.client_address[0]} wrote:\")\n"
 "        print(data)\n"
 "        socket.sendto(data.upper(), self.client_address)\n"
 "\n"
@@ -698,7 +712,7 @@ msgid ""
 "        server.serve_forever()"
 msgstr ""
 
-#: library/socketserver.rst:607
+#: library/socketserver.rst:621
 msgid ""
 "import socket\n"
 "import sys\n"
@@ -714,31 +728,31 @@ msgid ""
 "sock.sendto(bytes(data + \"\\n\", \"utf-8\"), (HOST, PORT))\n"
 "received = str(sock.recv(1024), \"utf-8\")\n"
 "\n"
-"print(\"Sent:     {}\".format(data))\n"
-"print(\"Received: {}\".format(received))"
+"print(\"Sent:    \", data)\n"
+"print(\"Received:\", received)"
 msgstr ""
 
-#: library/socketserver.rst:624
+#: library/socketserver.rst:638
 msgid ""
 "The output of the example should look exactly like for the TCP server "
 "example."
 msgstr ""
 
-#: library/socketserver.rst:628
+#: library/socketserver.rst:642
 msgid "Asynchronous Mixins"
 msgstr ""
 
-#: library/socketserver.rst:630
+#: library/socketserver.rst:644
 msgid ""
 "To build asynchronous handlers, use the :class:`ThreadingMixIn` and :class:"
 "`ForkingMixIn` classes."
 msgstr ""
 
-#: library/socketserver.rst:633
+#: library/socketserver.rst:647
 msgid "An example for the :class:`ThreadingMixIn` class::"
 msgstr ""
 
-#: library/socketserver.rst:635
+#: library/socketserver.rst:649
 msgid ""
 "import socket\n"
 "import threading\n"
@@ -786,7 +800,7 @@ msgid ""
 "        server.shutdown()"
 msgstr ""
 
-#: library/socketserver.rst:682
+#: library/socketserver.rst:696
 msgid ""
 "$ python ThreadedTCPServer.py\n"
 "Server loop running in thread: Thread-1\n"
@@ -795,7 +809,7 @@ msgid ""
 "Received: Thread-4: Hello World 3"
 msgstr ""
 
-#: library/socketserver.rst:691
+#: library/socketserver.rst:705
 msgid ""
 "The :class:`ForkingMixIn` class is used in the same way, except that the "
 "server will spawn a new process for each request. Available only on POSIX "
diff --git a/library/sqlite3.po b/library/sqlite3.po
index 855bd328d..07bd9cfa0 100644
--- a/library/sqlite3.po
+++ b/library/sqlite3.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -320,7 +320,7 @@ msgstr ""
 msgid ":ref:`sqlite3-converters`"
 msgstr ""
 
-#: library/sqlite3.rst:609
+#: library/sqlite3.rst:612
 msgid ":ref:`sqlite3-connection-context-manager`"
 msgstr ""
 
@@ -371,13 +371,10 @@ msgid ""
 "converters registered with :func:`register_converter`. Set it to any "
 "combination (using ``|``, bitwise or) of :const:`PARSE_DECLTYPES` and :const:"
 "`PARSE_COLNAMES` to enable this. Column names takes precedence over declared "
-"types if both flags are set. Types cannot be detected for generated fields "
-"(for example ``max(data)``), even when the *detect_types* parameter is set; :"
-"class:`str` will be returned instead. By default (``0``), type detection is "
-"disabled."
+"types if both flags are set. By default (``0``), type detection is disabled."
 msgstr ""
 
-#: library/sqlite3.rst:298
+#: library/sqlite3.rst:295
 msgid ""
 "Control legacy transaction handling behaviour. See :attr:`Connection."
 "isolation_level` and :ref:`sqlite3-transaction-control-isolation-level` for "
@@ -387,7 +384,7 @@ msgid ""
 "`~sqlite3.LEGACY_TRANSACTION_CONTROL` (the default)."
 msgstr ""
 
-#: library/sqlite3.rst:308
+#: library/sqlite3.rst:305
 msgid ""
 "If ``True`` (default), :exc:`ProgrammingError` will be raised if the "
 "database connection is used by a thread other than the one that created it. "
@@ -396,19 +393,19 @@ msgid ""
 "See :attr:`threadsafety` for more information."
 msgstr ""
 
-#: library/sqlite3.rst:317
+#: library/sqlite3.rst:314
 msgid ""
 "A custom subclass of :class:`Connection` to create the connection with, if "
 "not the default :class:`Connection` class."
 msgstr ""
 
-#: library/sqlite3.rst:321
+#: library/sqlite3.rst:318
 msgid ""
 "The number of statements that :mod:`!sqlite3` should internally cache for "
 "this connection, to avoid parsing overhead. By default, 128 statements."
 msgstr ""
 
-#: library/sqlite3.rst:326
+#: library/sqlite3.rst:323
 msgid ""
 "If set to ``True``, *database* is interpreted as a :abbr:`URI (Uniform "
 "Resource Identifier)` with a file path and an optional query string. The "
@@ -417,7 +414,7 @@ msgid ""
 "various :ref:`sqlite3-uri-tricks`."
 msgstr ""
 
-#: library/sqlite3.rst:335
+#: library/sqlite3.rst:332
 msgid ""
 "Control :pep:`249` transaction handling behaviour. See :attr:`Connection."
 "autocommit` and :ref:`sqlite3-transaction-control-autocommit` for more "
@@ -430,36 +427,36 @@ msgstr ""
 msgid "Return type"
 msgstr ""
 
-#: library/sqlite3.rst:346
+#: library/sqlite3.rst:343
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``sqlite3.connect`` with argument "
 "``database``."
 msgstr ""
 
-#: library/sqlite3.rst:347
+#: library/sqlite3.rst:344
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``sqlite3.connect/handle`` with "
 "argument ``connection_handle``."
 msgstr ""
 
-#: library/sqlite3.rst:349
+#: library/sqlite3.rst:346
 msgid "Added the *uri* parameter."
 msgstr ""
 
-#: library/sqlite3.rst:352
+#: library/sqlite3.rst:349
 msgid ""
 "*database* can now also be a :term:`path-like object`, not only a string."
 msgstr ""
 
-#: library/sqlite3.rst:355
+#: library/sqlite3.rst:352
 msgid "Added the ``sqlite3.connect/handle`` auditing event."
 msgstr ""
 
-#: library/sqlite3.rst:358
+#: library/sqlite3.rst:355
 msgid "Added the *autocommit* parameter."
 msgstr ""
 
-#: library/sqlite3.rst:363
+#: library/sqlite3.rst:360
 msgid ""
 "Return ``True`` if the string *statement* appears to contain one or more "
 "complete SQL statements. No syntactic verification or parsing of any kind is "
@@ -467,11 +464,11 @@ msgid ""
 "and the statement is terminated by a semicolon."
 msgstr ""
 
-#: library/sqlite3.rst:369
+#: library/sqlite3.rst:366
 msgid "For example:"
 msgstr ""
 
-#: library/sqlite3.rst:371
+#: library/sqlite3.rst:368
 msgid ""
 ">>> sqlite3.complete_statement(\"SELECT foo FROM bar;\")\n"
 "True\n"
@@ -479,20 +476,20 @@ msgid ""
 "False"
 msgstr ""
 
-#: library/sqlite3.rst:378
+#: library/sqlite3.rst:375
 msgid ""
 "This function may be useful during command-line input to determine if the "
 "entered text seems to form a complete SQL statement, or if additional input "
 "is needed before calling :meth:`~Cursor.execute`."
 msgstr ""
 
-#: library/sqlite3.rst:382
+#: library/sqlite3.rst:379
 msgid ""
 "See :func:`!runsource` in :source:`Lib/sqlite3/__main__.py` for real-world "
 "use."
 msgstr ""
 
-#: library/sqlite3.rst:387
+#: library/sqlite3.rst:384
 msgid ""
 "Enable or disable callback tracebacks. By default you will not get any "
 "tracebacks in user-defined functions, aggregates, converters, authorizer "
@@ -501,14 +498,14 @@ msgid ""
 "on :data:`sys.stderr`. Use ``False`` to disable the feature again."
 msgstr ""
 
-#: library/sqlite3.rst:396
+#: library/sqlite3.rst:393
 msgid ""
 "Errors in user-defined function callbacks are logged as unraisable "
 "exceptions. Use an :func:`unraisable hook handler <sys.unraisablehook>` for "
 "introspection of the failed callback."
 msgstr ""
 
-#: library/sqlite3.rst:402
+#: library/sqlite3.rst:399
 msgid ""
 "Register an *adapter* :term:`callable` to adapt the Python type *type* into "
 "an SQLite type. The adapter is called with a Python object of type *type* as "
@@ -516,7 +513,7 @@ msgid ""
 "natively understands <sqlite3-types>`."
 msgstr ""
 
-#: library/sqlite3.rst:410
+#: library/sqlite3.rst:407
 msgid ""
 "Register the *converter* :term:`callable` to convert SQLite objects of type "
 "*typename* into a Python object of a specific type. The converter is invoked "
@@ -526,115 +523,122 @@ msgid ""
 "type detection works."
 msgstr ""
 
-#: library/sqlite3.rst:418
+#: library/sqlite3.rst:415
 msgid ""
 "Note: *typename* and the name of the type in your query are matched case-"
 "insensitively."
 msgstr ""
 
-#: library/sqlite3.rst:425
+#: library/sqlite3.rst:422
 msgid "Module constants"
 msgstr ""
 
-#: library/sqlite3.rst:429
+#: library/sqlite3.rst:426
 msgid ""
 "Set :attr:`~Connection.autocommit` to this constant to select old style (pre-"
 "Python 3.12) transaction control behaviour. See :ref:`sqlite3-transaction-"
 "control-isolation-level` for more information."
 msgstr ""
 
-#: library/sqlite3.rst:435
+#: library/sqlite3.rst:432
 msgid ""
 "Pass this flag value to the *detect_types* parameter of :func:`connect` to "
-"look up a converter function by using the type name, parsed from the query "
-"column name, as the converter dictionary key. The type name must be wrapped "
-"in square brackets (``[]``)."
+"look up a converter function using the declared types for each column. The "
+"types are declared when the database table is created. :mod:`!sqlite3` will "
+"look up a converter function using the first word of the declared type as "
+"the converter dictionary key. For example:"
 msgstr ""
 
-#: library/sqlite3.rst:441
+#: library/sqlite3.rst:440
 msgid ""
-"SELECT p as \"p [point]\" FROM test;  ! will look up converter \"point\""
+"CREATE TABLE test(\n"
+"   i integer primary key,  ! will look up a converter named \"integer\"\n"
+"   p point,                ! will look up a converter named \"point\"\n"
+"   n number(10)            ! will look up a converter named \"number\"\n"
+" )"
 msgstr ""
 
-#: library/sqlite3.rst:445
+#: library/sqlite3.rst:448
 msgid ""
-"This flag may be combined with :const:`PARSE_DECLTYPES` using the ``|`` "
+"This flag may be combined with :const:`PARSE_COLNAMES` using the ``|`` "
 "(bitwise or) operator."
 msgstr ""
 
-#: library/sqlite3.rst:450
+#: library/sqlite3.rst:453
 msgid ""
-"Pass this flag value to the *detect_types* parameter of :func:`connect` to "
-"look up a converter function using the declared types for each column. The "
-"types are declared when the database table is created. :mod:`!sqlite3` will "
-"look up a converter function using the first word of the declared type as "
-"the converter dictionary key. For example:"
+"Generated fields (for example ``MAX(p)``) are returned as :class:`str`. Use :"
+"const:`!PARSE_COLNAMES` to enforce types for such queries."
 msgstr ""
 
 #: library/sqlite3.rst:458
 msgid ""
-"CREATE TABLE test(\n"
-"   i integer primary key,  ! will look up a converter named \"integer\"\n"
-"   p point,                ! will look up a converter named \"point\"\n"
-"   n number(10)            ! will look up a converter named \"number\"\n"
-" )"
+"Pass this flag value to the *detect_types* parameter of :func:`connect` to "
+"look up a converter function by using the type name, parsed from the query "
+"column name, as the converter dictionary key. The query column name must be "
+"wrapped in double quotes (``\"``) and the type name must be wrapped in "
+"square brackets (``[]``)."
 msgstr ""
 
-#: library/sqlite3.rst:466
+#: library/sqlite3.rst:465
 msgid ""
-"This flag may be combined with :const:`PARSE_COLNAMES` using the ``|`` "
+"SELECT MAX(p) as \"p [point]\" FROM test;  ! will look up converter \"point\""
+msgstr ""
+
+#: library/sqlite3.rst:469
+msgid ""
+"This flag may be combined with :const:`PARSE_DECLTYPES` using the ``|`` "
 "(bitwise or) operator."
 msgstr ""
 
-#: library/sqlite3.rst:473
+#: library/sqlite3.rst:476
 msgid ""
 "Flags that should be returned by the *authorizer_callback* :term:`callable` "
 "passed to :meth:`Connection.set_authorizer`, to indicate whether:"
 msgstr ""
 
-#: library/sqlite3.rst:476
+#: library/sqlite3.rst:479
 msgid "Access is allowed (:const:`!SQLITE_OK`),"
 msgstr ""
 
-#: library/sqlite3.rst:477
+#: library/sqlite3.rst:480
 msgid ""
 "The SQL statement should be aborted with an error (:const:`!SQLITE_DENY`)"
 msgstr ""
 
-#: library/sqlite3.rst:478
+#: library/sqlite3.rst:481
 msgid ""
 "The column should be treated as a ``NULL`` value (:const:`!SQLITE_IGNORE`)"
 msgstr ""
 
-#: library/sqlite3.rst:482
+#: library/sqlite3.rst:485
 msgid ""
 "String constant stating the supported DB-API level. Required by the DB-API. "
 "Hard-coded to ``\"2.0\"``."
 msgstr ""
 
-#: library/sqlite3.rst:487
+#: library/sqlite3.rst:490
 msgid ""
 "String constant stating the type of parameter marker formatting expected by "
 "the :mod:`!sqlite3` module. Required by the DB-API. Hard-coded to "
 "``\"qmark\"``."
 msgstr ""
 
-#: library/sqlite3.rst:493
+#: library/sqlite3.rst:496
 msgid "The ``named`` DB-API parameter style is also supported."
 msgstr ""
 
-#: library/sqlite3.rst:497
+#: library/sqlite3.rst:500
 msgid ""
 "Version number of the runtime SQLite library as a :class:`string <str>`."
 msgstr ""
 
-#: library/sqlite3.rst:501
+#: library/sqlite3.rst:504
 msgid ""
 "Version number of the runtime SQLite library as a :class:`tuple` of :class:"
 "`integers <int>`."
 msgstr ""
 
-#: library/sqlite3.rst:506
+#: library/sqlite3.rst:509
 msgid ""
 "Integer constant required by the DB-API 2.0, stating the level of thread "
 "safety the :mod:`!sqlite3` module supports. This attribute is set based on "
@@ -642,181 +646,181 @@ msgid ""
 "underlying SQLite library is compiled with. The SQLite threading modes are:"
 msgstr ""
 
-#: library/sqlite3.rst:511
+#: library/sqlite3.rst:514
 msgid ""
 "**Single-thread**: In this mode, all mutexes are disabled and SQLite is "
 "unsafe to use in more than a single thread at once."
 msgstr ""
 
-#: library/sqlite3.rst:513
+#: library/sqlite3.rst:516
 msgid ""
 "**Multi-thread**: In this mode, SQLite can be safely used by multiple "
 "threads provided that no single database connection is used simultaneously "
 "in two or more threads."
 msgstr ""
 
-#: library/sqlite3.rst:516
+#: library/sqlite3.rst:519
 msgid ""
 "**Serialized**: In serialized mode, SQLite can be safely used by multiple "
 "threads with no restriction."
 msgstr ""
 
-#: library/sqlite3.rst:519
+#: library/sqlite3.rst:522
 msgid ""
 "The mappings from SQLite threading modes to DB-API 2.0 threadsafety levels "
 "are as follows:"
 msgstr ""
 
-#: library/sqlite3.rst:523
+#: library/sqlite3.rst:526
 msgid "SQLite threading mode"
 msgstr ""
 
-#: library/sqlite3.rst:523
+#: library/sqlite3.rst:526
 msgid ":pep:`threadsafety <0249#threadsafety>`"
 msgstr ""
 
-#: library/sqlite3.rst:523
+#: library/sqlite3.rst:526
 msgid "`SQLITE_THREADSAFE`_"
 msgstr ""
 
-#: library/sqlite3.rst:523
+#: library/sqlite3.rst:526
 msgid "DB-API 2.0 meaning"
 msgstr ""
 
-#: library/sqlite3.rst:526
+#: library/sqlite3.rst:529
 msgid "single-thread"
 msgstr ""
 
-#: library/sqlite3.rst:526
+#: library/sqlite3.rst:529
 msgid "0"
 msgstr ""
 
-#: library/sqlite3.rst:526
+#: library/sqlite3.rst:529
 msgid "Threads may not share the module"
 msgstr ""
 
-#: library/sqlite3.rst:529
+#: library/sqlite3.rst:532
 msgid "multi-thread"
 msgstr ""
 
-#: library/sqlite3.rst:532
+#: library/sqlite3.rst:535
 msgid "1"
 msgstr ""
 
-#: library/sqlite3.rst:529
+#: library/sqlite3.rst:532
 msgid "2"
 msgstr ""
 
-#: library/sqlite3.rst:529
+#: library/sqlite3.rst:532
 msgid "Threads may share the module, but not connections"
 msgstr ""
 
-#: library/sqlite3.rst:532
+#: library/sqlite3.rst:535
 msgid "serialized"
 msgstr ""
 
-#: library/sqlite3.rst:532
+#: library/sqlite3.rst:535
 msgid "3"
 msgstr ""
 
-#: library/sqlite3.rst:532
+#: library/sqlite3.rst:535
 msgid "Threads may share the module, connections and cursors"
 msgstr ""
 
-#: library/sqlite3.rst:538
+#: library/sqlite3.rst:541
 msgid "Set *threadsafety* dynamically instead of hard-coding it to ``1``."
 msgstr ""
 
-#: library/sqlite3.rst:543
+#: library/sqlite3.rst:546
 msgid ""
 "Version number of this module as a :class:`string <str>`. This is not the "
 "version of the SQLite library."
 msgstr ""
 
-#: library/sqlite3.rst:556
+#: library/sqlite3.rst:559
 msgid ""
 "This constant used to reflect the version number of the ``pysqlite`` "
 "package, a third-party library which used to upstream changes to :mod:`!"
 "sqlite3`. Today, it carries no meaning or practical value."
 msgstr ""
 
-#: library/sqlite3.rst:553
+#: library/sqlite3.rst:556
 msgid ""
 "Version number of this module as a :class:`tuple` of :class:`integers "
 "<int>`. This is not the version of the SQLite library."
 msgstr ""
 
-#: library/sqlite3.rst:580
+#: library/sqlite3.rst:583
 msgid ""
 "These constants are used for the :meth:`Connection.setconfig` and :meth:"
 "`~Connection.getconfig` methods."
 msgstr ""
 
-#: library/sqlite3.rst:583
+#: library/sqlite3.rst:586
 msgid ""
 "The availability of these constants varies depending on the version of "
 "SQLite Python was compiled with."
 msgstr ""
 
-#: library/sqlite3.rst:590
+#: library/sqlite3.rst:593
 msgid "https://www.sqlite.org/c3ref/c_dbconfig_defensive.html"
 msgstr ""
 
-#: library/sqlite3.rst:591
+#: library/sqlite3.rst:594
 msgid "SQLite docs: Database Connection Configuration Options"
 msgstr ""
 
-#: library/sqlite3.rst:597
+#: library/sqlite3.rst:600
 msgid "Connection objects"
 msgstr ""
 
-#: library/sqlite3.rst:601
+#: library/sqlite3.rst:604
 msgid ""
 "Each open SQLite database is represented by a ``Connection`` object, which "
 "is created using :func:`sqlite3.connect`. Their main purpose is creating :"
 "class:`Cursor` objects, and :ref:`sqlite3-controlling-transactions`."
 msgstr ""
 
-#: library/sqlite3.rst:608
+#: library/sqlite3.rst:611
 msgid ":ref:`sqlite3-connection-shortcuts`"
 msgstr ""
 
-#: library/sqlite3.rst:611
+#: library/sqlite3.rst:614
 msgid "An SQLite database connection has the following attributes and methods:"
 msgstr ""
 
-#: library/sqlite3.rst:615
+#: library/sqlite3.rst:618
 msgid ""
 "Create and return a :class:`Cursor` object. The cursor method accepts a "
 "single optional parameter *factory*. If supplied, this must be a :term:"
 "`callable` returning an instance of :class:`Cursor` or its subclasses."
 msgstr ""
 
-#: library/sqlite3.rst:622
+#: library/sqlite3.rst:625
 msgid ""
 "Open a :class:`Blob` handle to an existing :abbr:`BLOB (Binary Large "
 "OBject)`."
 msgstr ""
 
-#: library/sqlite3.rst:625
+#: library/sqlite3.rst:628
 msgid "The name of the table where the blob is located."
 msgstr ""
 
-#: library/sqlite3.rst:628
+#: library/sqlite3.rst:631
 msgid "The name of the column where the blob is located."
 msgstr ""
 
-#: library/sqlite3.rst:631
+#: library/sqlite3.rst:634
 msgid "The name of the row where the blob is located."
 msgstr ""
 
-#: library/sqlite3.rst:634
+#: library/sqlite3.rst:637
 msgid ""
 "Set to ``True`` if the blob should be opened without write permissions. "
 "Defaults to ``False``."
 msgstr ""
 
-#: library/sqlite3.rst:639
+#: library/sqlite3.rst:642
 msgid ""
 "The name of the database where the blob is located. Defaults to ``\"main\"``."
 msgstr ""
@@ -825,17 +829,17 @@ msgstr ""
 msgid "Raises"
 msgstr ""
 
-#: library/sqlite3.rst:643
+#: library/sqlite3.rst:646
 msgid "When trying to open a blob in a ``WITHOUT ROWID`` table."
 msgstr ""
 
-#: library/sqlite3.rst:650
+#: library/sqlite3.rst:653
 msgid ""
 "The blob size cannot be changed using the :class:`Blob` class. Use the SQL "
 "function ``zeroblob`` to create a blob with a fixed size."
 msgstr ""
 
-#: library/sqlite3.rst:657
+#: library/sqlite3.rst:660
 msgid ""
 "Commit any pending transaction to the database. If :attr:`autocommit` is "
 "``True``, or there is no open transaction, this method does nothing. If :"
@@ -843,7 +847,7 @@ msgid ""
 "pending transaction was committed by this method."
 msgstr ""
 
-#: library/sqlite3.rst:665
+#: library/sqlite3.rst:668
 msgid ""
 "Roll back to the start of any pending transaction. If :attr:`autocommit` is "
 "``True``, or there is no open transaction, this method does nothing. If :"
@@ -851,7 +855,7 @@ msgid ""
 "pending transaction was rolled back by this method."
 msgstr ""
 
-#: library/sqlite3.rst:673
+#: library/sqlite3.rst:676
 msgid ""
 "Close the database connection. If :attr:`autocommit` is ``False``, any "
 "pending transaction is implicitly rolled back. If :attr:`!autocommit` is "
@@ -860,65 +864,65 @@ msgid ""
 "losing pending changes."
 msgstr ""
 
-#: library/sqlite3.rst:683
+#: library/sqlite3.rst:686
 msgid ""
 "Create a new :class:`Cursor` object and call :meth:`~Cursor.execute` on it "
 "with the given *sql* and *parameters*. Return the new cursor object."
 msgstr ""
 
-#: library/sqlite3.rst:689
+#: library/sqlite3.rst:692
 msgid ""
 "Create a new :class:`Cursor` object and call :meth:`~Cursor.executemany` on "
 "it with the given *sql* and *parameters*. Return the new cursor object."
 msgstr ""
 
-#: library/sqlite3.rst:695
+#: library/sqlite3.rst:698
 msgid ""
 "Create a new :class:`Cursor` object and call :meth:`~Cursor.executescript` "
 "on it with the given *sql_script*. Return the new cursor object."
 msgstr ""
 
-#: library/sqlite3.rst:701
+#: library/sqlite3.rst:704
 msgid "Create or remove a user-defined SQL function."
 msgstr ""
 
-#: library/sqlite3.rst:703
+#: library/sqlite3.rst:706
 msgid "The name of the SQL function."
 msgstr ""
 
-#: library/sqlite3.rst:706
+#: library/sqlite3.rst:709
 msgid ""
 "The number of arguments the SQL function can accept. If ``-1``, it may take "
 "any number of arguments."
 msgstr ""
 
-#: library/sqlite3.rst:710
+#: library/sqlite3.rst:713
 msgid ""
 "A :term:`callable` that is called when the SQL function is invoked. The "
 "callable must return :ref:`a type natively supported by SQLite <sqlite3-"
 "types>`. Set to ``None`` to remove an existing SQL function."
 msgstr ""
 
-#: library/sqlite3.rst:717
+#: library/sqlite3.rst:720
 msgid ""
 "If ``True``, the created SQL function is marked as `deterministic <https://"
 "sqlite.org/deterministic.html>`_, which allows SQLite to perform additional "
 "optimizations."
 msgstr ""
 
-#: library/sqlite3.rst:722
+#: library/sqlite3.rst:725
 msgid "If *deterministic* is used with SQLite versions older than 3.8.3."
 msgstr ""
 
-#: library/sqlite3.rst:725
+#: library/sqlite3.rst:728
 msgid "Added the *deterministic* parameter."
 msgstr ""
 
-#: library/sqlite3.rst:767 library/sqlite3.rst:1090 library/sqlite3.rst:1553
+#: library/sqlite3.rst:770 library/sqlite3.rst:1093 library/sqlite3.rst:1556
 msgid "Example:"
 msgstr ""
 
-#: library/sqlite3.rst:730
+#: library/sqlite3.rst:733
 msgid ""
 ">>> import hashlib\n"
 ">>> def md5sum(t):\n"
@@ -931,21 +935,21 @@ msgid ""
 ">>> con.close()"
 msgstr ""
 
-#: library/sqlite3.rst:745
+#: library/sqlite3.rst:748
 msgid "Create or remove a user-defined SQL aggregate function."
 msgstr ""
 
-#: library/sqlite3.rst:747
+#: library/sqlite3.rst:750
 msgid "The name of the SQL aggregate function."
 msgstr ""
 
-#: library/sqlite3.rst:750
+#: library/sqlite3.rst:753
 msgid ""
 "The number of arguments the SQL aggregate function can accept. If ``-1``, it "
 "may take any number of arguments."
 msgstr ""
 
-#: library/sqlite3.rst:754
+#: library/sqlite3.rst:757
 msgid ""
 "A class must implement the following methods:  * ``step()``: Add a row to "
 "the aggregate. * ``finalize()``: Return the final result of the aggregate "
@@ -954,31 +958,31 @@ msgid ""
 "*n_arg*.  Set to ``None`` to remove an existing SQL aggregate function."
 msgstr ""
 
-#: library/sqlite3.rst:755
+#: library/sqlite3.rst:758
 msgid "A class must implement the following methods:"
 msgstr ""
 
-#: library/sqlite3.rst:757
+#: library/sqlite3.rst:760
 msgid "``step()``: Add a row to the aggregate."
 msgstr ""
 
-#: library/sqlite3.rst:814
+#: library/sqlite3.rst:817
 msgid ""
 "``finalize()``: Return the final result of the aggregate as :ref:`a type "
 "natively supported by SQLite <sqlite3-types>`."
 msgstr ""
 
-#: library/sqlite3.rst:761
+#: library/sqlite3.rst:764
 msgid ""
 "The number of arguments that the ``step()`` method must accept is controlled "
 "by *n_arg*."
 msgstr ""
 
-#: library/sqlite3.rst:764
+#: library/sqlite3.rst:767
 msgid "Set to ``None`` to remove an existing SQL aggregate function."
 msgstr ""
 
-#: library/sqlite3.rst:769
+#: library/sqlite3.rst:772
 msgid ""
 "class MySum:\n"
 "    def __init__(self):\n"
@@ -1001,21 +1005,21 @@ msgid ""
 "con.close()"
 msgstr ""
 
-#: library/sqlite3.rst:799
+#: library/sqlite3.rst:802
 msgid "Create or remove a user-defined aggregate window function."
 msgstr ""
 
-#: library/sqlite3.rst:801
+#: library/sqlite3.rst:804
 msgid "The name of the SQL aggregate window function to create or remove."
 msgstr ""
 
-#: library/sqlite3.rst:804
+#: library/sqlite3.rst:807
 msgid ""
 "The number of arguments the SQL aggregate window function can accept. If "
 "``-1``, it may take any number of arguments."
 msgstr ""
 
-#: library/sqlite3.rst:808
+#: library/sqlite3.rst:811
 msgid ""
 "A class that must implement the following methods:  * ``step()``: Add a row "
 "to the current window. * ``value()``: Return the current value of the "
@@ -1027,39 +1031,39 @@ msgid ""
 "function."
 msgstr ""
 
-#: library/sqlite3.rst:809
+#: library/sqlite3.rst:812
 msgid "A class that must implement the following methods:"
 msgstr ""
 
-#: library/sqlite3.rst:811
+#: library/sqlite3.rst:814
 msgid "``step()``: Add a row to the current window."
 msgstr ""
 
-#: library/sqlite3.rst:812
+#: library/sqlite3.rst:815
 msgid "``value()``: Return the current value of the aggregate."
 msgstr ""
 
-#: library/sqlite3.rst:813
+#: library/sqlite3.rst:816
 msgid "``inverse()``: Remove a row from the current window."
 msgstr ""
 
-#: library/sqlite3.rst:817
+#: library/sqlite3.rst:820
 msgid ""
 "The number of arguments that the ``step()`` and ``value()`` methods must "
 "accept is controlled by *num_params*."
 msgstr ""
 
-#: library/sqlite3.rst:820
+#: library/sqlite3.rst:823
 msgid "Set to ``None`` to remove an existing SQL aggregate window function."
 msgstr ""
 
-#: library/sqlite3.rst:822
+#: library/sqlite3.rst:825
 msgid ""
 "If used with a version of SQLite older than 3.25.0, which does not support "
 "aggregate window functions."
 msgstr ""
 
-#: library/sqlite3.rst:832
+#: library/sqlite3.rst:835
 msgid ""
 "# Example taken from https://www.sqlite.org/windowfunctions.html#udfwinfunc\n"
 "class WindowSumInt:\n"
@@ -1107,30 +1111,30 @@ msgid ""
 "con.close()"
 msgstr ""
 
-#: library/sqlite3.rst:886
+#: library/sqlite3.rst:889
 msgid ""
 "Create a collation named *name* using the collating function *callable*. "
 "*callable* is passed two :class:`string <str>` arguments, and it should "
 "return an :class:`integer <int>`:"
 msgstr ""
 
-#: library/sqlite3.rst:890
+#: library/sqlite3.rst:893
 msgid "``1`` if the first is ordered higher than the second"
 msgstr ""
 
-#: library/sqlite3.rst:891
+#: library/sqlite3.rst:894
 msgid "``-1`` if the first is ordered lower than the second"
 msgstr ""
 
-#: library/sqlite3.rst:892
+#: library/sqlite3.rst:895
 msgid "``0`` if they are ordered equal"
 msgstr ""
 
-#: library/sqlite3.rst:894
+#: library/sqlite3.rst:897
 msgid "The following example shows a reverse sorting collation:"
 msgstr ""
 
-#: library/sqlite3.rst:896
+#: library/sqlite3.rst:899
 msgid ""
 "def collate_reverse(string1, string2):\n"
 "    if string1 == string2:\n"
@@ -1151,24 +1155,24 @@ msgid ""
 "con.close()"
 msgstr ""
 
-#: library/sqlite3.rst:922
+#: library/sqlite3.rst:925
 msgid "Remove a collation function by setting *callable* to ``None``."
 msgstr ""
 
-#: library/sqlite3.rst:924
+#: library/sqlite3.rst:927
 msgid ""
 "The collation name can contain any Unicode character.  Earlier, only ASCII "
 "characters were allowed."
 msgstr ""
 
-#: library/sqlite3.rst:931
+#: library/sqlite3.rst:934
 msgid ""
 "Call this method from a different thread to abort any queries that might be "
 "executing on the connection. Aborted queries will raise an :exc:"
 "`OperationalError`."
 msgstr ""
 
-#: library/sqlite3.rst:938
+#: library/sqlite3.rst:941
 msgid ""
 "Register :term:`callable` *authorizer_callback* to be invoked for each "
 "attempt to access a column of a table in the database. The callback should "
@@ -1177,7 +1181,7 @@ msgid ""
 "underlying SQLite library."
 msgstr ""
 
-#: library/sqlite3.rst:945
+#: library/sqlite3.rst:948
 msgid ""
 "The first argument to the callback signifies what kind of operation is to be "
 "authorized. The second and third argument will be arguments or ``None`` "
@@ -1187,7 +1191,7 @@ msgid ""
 "attempt or ``None`` if this access attempt is directly from input SQL code."
 msgstr ""
 
-#: library/sqlite3.rst:952
+#: library/sqlite3.rst:955
 msgid ""
 "Please consult the SQLite documentation about the possible values for the "
 "first argument and the meaning of the second and third argument depending on "
@@ -1195,15 +1199,15 @@ msgid ""
 "module."
 msgstr ""
 
-#: library/sqlite3.rst:956
+#: library/sqlite3.rst:959
 msgid "Passing ``None`` as *authorizer_callback* will disable the authorizer."
 msgstr ""
 
-#: library/sqlite3.rst:958
+#: library/sqlite3.rst:961
 msgid "Added support for disabling the authorizer using ``None``."
 msgstr ""
 
-#: library/sqlite3.rst:964
+#: library/sqlite3.rst:967
 msgid ""
 "Register :term:`callable` *progress_handler* to be invoked for every *n* "
 "instructions of the SQLite virtual machine. This is useful if you want to "
@@ -1211,26 +1215,26 @@ msgid ""
 "a GUI."
 msgstr ""
 
-#: library/sqlite3.rst:969
+#: library/sqlite3.rst:972
 msgid ""
 "If you want to clear any previously installed progress handler, call the "
 "method with ``None`` for *progress_handler*."
 msgstr ""
 
-#: library/sqlite3.rst:972
+#: library/sqlite3.rst:975
 msgid ""
 "Returning a non-zero value from the handler function will terminate the "
 "currently executing query and cause it to raise a :exc:`DatabaseError` "
 "exception."
 msgstr ""
 
-#: library/sqlite3.rst:979
+#: library/sqlite3.rst:982
 msgid ""
 "Register :term:`callable` *trace_callback* to be invoked for each SQL "
 "statement that is actually executed by the SQLite backend."
 msgstr ""
 
-#: library/sqlite3.rst:982
+#: library/sqlite3.rst:985
 msgid ""
 "The only argument passed to the callback is the statement (as :class:`str`) "
 "that is being executed. The return value of the callback is ignored. Note "
@@ -1240,18 +1244,18 @@ msgid ""
 "execution of triggers defined in the current database."
 msgstr ""
 
-#: library/sqlite3.rst:990
+#: library/sqlite3.rst:993
 msgid "Passing ``None`` as *trace_callback* will disable the trace callback."
 msgstr ""
 
-#: library/sqlite3.rst:993
+#: library/sqlite3.rst:996
 msgid ""
 "Exceptions raised in the trace callback are not propagated. As a development "
 "and debugging aid, use :meth:`~sqlite3.enable_callback_tracebacks` to enable "
 "printing tracebacks from exceptions raised in the trace callback."
 msgstr ""
 
-#: library/sqlite3.rst:1003
+#: library/sqlite3.rst:1006
 msgid ""
 "Enable the SQLite engine to load SQLite extensions from shared libraries if "
 "*enabled* is ``True``; else, disallow loading SQLite extensions. SQLite "
@@ -1260,7 +1264,7 @@ msgid ""
 "distributed with SQLite."
 msgstr ""
 
-#: library/sqlite3.rst:1012
+#: library/sqlite3.rst:1015
 msgid ""
 "The :mod:`!sqlite3` module is not built with loadable extension support by "
 "default, because some platforms (notably macOS) have SQLite libraries which "
@@ -1269,17 +1273,17 @@ msgid ""
 "program:`configure`."
 msgstr ""
 
-#: library/sqlite3.rst:1019
+#: library/sqlite3.rst:1022
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``sqlite3.enable_load_extension`` "
 "with arguments ``connection``, ``enabled``."
 msgstr ""
 
-#: library/sqlite3.rst:1023
+#: library/sqlite3.rst:1026
 msgid "Added the ``sqlite3.enable_load_extension`` auditing event."
 msgstr ""
 
-#: library/sqlite3.rst:1029
+#: library/sqlite3.rst:1032
 msgid ""
 "con.enable_load_extension(True)\n"
 "\n"
@@ -1309,45 +1313,45 @@ msgid ""
 "    print(row)"
 msgstr ""
 
-#: library/sqlite3.rst:1055
+#: library/sqlite3.rst:1058
 msgid ""
 "Load an SQLite extension from a shared library. Enable extension loading "
 "with :meth:`enable_load_extension` before calling this method."
 msgstr ""
 
-#: library/sqlite3.rst:1059
+#: library/sqlite3.rst:1062
 msgid "The path to the SQLite extension."
 msgstr ""
 
-#: library/sqlite3.rst:1063
+#: library/sqlite3.rst:1066
 msgid ""
 "Entry point name. If ``None`` (the default), SQLite will come up with an "
 "entry point name of its own; see the SQLite docs `Loading an Extension`_ for "
 "details."
 msgstr ""
 
-#: library/sqlite3.rst:1072
+#: library/sqlite3.rst:1075
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``sqlite3.load_extension`` with "
 "arguments ``connection``, ``path``."
 msgstr ""
 
-#: library/sqlite3.rst:1076
+#: library/sqlite3.rst:1079
 msgid "Added the ``sqlite3.load_extension`` auditing event."
 msgstr ""
 
-#: library/sqlite3.rst:1079
+#: library/sqlite3.rst:1082
 msgid "Added the *entrypoint* parameter."
 msgstr ""
 
-#: library/sqlite3.rst:1086
+#: library/sqlite3.rst:1089
 msgid ""
 "Return an :term:`iterator` to dump the database as SQL source code. Useful "
 "when saving an in-memory database for later restoration. Similar to the ``."
 "dump`` command in the :program:`sqlite3` shell."
 msgstr ""
 
-#: library/sqlite3.rst:1092
+#: library/sqlite3.rst:1095
 msgid ""
 "# Convert file example.db to SQL dump file dump.sql\n"
 "con = sqlite3.connect('example.db')\n"
@@ -1357,31 +1361,31 @@ msgid ""
 "con.close()"
 msgstr ""
 
-#: library/sqlite3.rst:1175
+#: library/sqlite3.rst:1178
 msgid ":ref:`sqlite3-howto-encoding`"
 msgstr ""
 
-#: library/sqlite3.rst:1108
+#: library/sqlite3.rst:1111
 msgid "Create a backup of an SQLite database."
 msgstr ""
 
-#: library/sqlite3.rst:1110
+#: library/sqlite3.rst:1113
 msgid ""
 "Works even if the database is being accessed by other clients or "
 "concurrently by the same connection."
 msgstr ""
 
-#: library/sqlite3.rst:1113
+#: library/sqlite3.rst:1116
 msgid "The database connection to save the backup to."
 msgstr ""
 
-#: library/sqlite3.rst:1116
+#: library/sqlite3.rst:1119
 msgid ""
 "The number of pages to copy at a time. If equal to or less than ``0``, the "
 "entire database is copied in a single step. Defaults to ``-1``."
 msgstr ""
 
-#: library/sqlite3.rst:1122
+#: library/sqlite3.rst:1125
 msgid ""
 "If set to a :term:`callable`, it is invoked with three integer arguments for "
 "every backup iteration: the *status* of the last iteration, the *remaining* "
@@ -1389,24 +1393,24 @@ msgid ""
 "Defaults to ``None``."
 msgstr ""
 
-#: library/sqlite3.rst:1131
+#: library/sqlite3.rst:1134
 msgid ""
 "The name of the database to back up. Either ``\"main\"`` (the default) for "
 "the main database, ``\"temp\"`` for the temporary database, or the name of a "
 "custom database as attached using the ``ATTACH DATABASE`` SQL statement."
 msgstr ""
 
-#: library/sqlite3.rst:1138
+#: library/sqlite3.rst:1141
 msgid ""
 "The number of seconds to sleep between successive attempts to back up "
 "remaining pages."
 msgstr ""
 
-#: library/sqlite3.rst:1142
+#: library/sqlite3.rst:1145
 msgid "Example 1, copy an existing database into another:"
 msgstr ""
 
-#: library/sqlite3.rst:1144
+#: library/sqlite3.rst:1147
 msgid ""
 "def progress(status, remaining, total):\n"
 "    print(f'Copied {total-remaining} of {total} pages...')\n"
@@ -1419,11 +1423,11 @@ msgid ""
 "src.close()"
 msgstr ""
 
-#: library/sqlite3.rst:1161
+#: library/sqlite3.rst:1164
 msgid "Example 2, copy an existing database into a transient copy:"
 msgstr ""
 
-#: library/sqlite3.rst:1163
+#: library/sqlite3.rst:1166
 msgid ""
 "src = sqlite3.connect('example.db')\n"
 "dst = sqlite3.connect(':memory:')\n"
@@ -1432,31 +1436,31 @@ msgid ""
 "src.close()"
 msgstr ""
 
-#: library/sqlite3.rst:1179
+#: library/sqlite3.rst:1182
 msgid "Get a connection runtime limit."
 msgstr ""
 
-#: library/sqlite3.rst:1181
+#: library/sqlite3.rst:1184
 msgid "The `SQLite limit category`_ to be queried."
 msgstr ""
 
-#: library/sqlite3.rst:1223
+#: library/sqlite3.rst:1226
 msgid "If *category* is not recognised by the underlying SQLite library."
 msgstr ""
 
-#: library/sqlite3.rst:1189
+#: library/sqlite3.rst:1192
 msgid ""
 "Example, query the maximum length of an SQL statement for :class:"
 "`Connection` ``con`` (the default is 1000000000):"
 msgstr ""
 
-#: library/sqlite3.rst:1199
+#: library/sqlite3.rst:1202
 msgid ""
 ">>> con.getlimit(sqlite3.SQLITE_LIMIT_SQL_LENGTH)\n"
 "1000000000"
 msgstr ""
 
-#: library/sqlite3.rst:1209
+#: library/sqlite3.rst:1212
 msgid ""
 "Set a connection runtime limit. Attempts to increase a limit above its hard "
 "upper bound are silently truncated to the hard upper bound. Regardless of "
@@ -1464,22 +1468,22 @@ msgid ""
 "returned."
 msgstr ""
 
-#: library/sqlite3.rst:1214
+#: library/sqlite3.rst:1217
 msgid "The `SQLite limit category`_ to be set."
 msgstr ""
 
-#: library/sqlite3.rst:1217
+#: library/sqlite3.rst:1220
 msgid ""
 "The value of the new limit. If negative, the current limit is unchanged."
 msgstr ""
 
-#: library/sqlite3.rst:1226
+#: library/sqlite3.rst:1229
 msgid ""
 "Example, limit the number of attached databases to 1 for :class:`Connection` "
 "``con`` (the default limit is 10):"
 msgstr ""
 
-#: library/sqlite3.rst:1229
+#: library/sqlite3.rst:1232
 msgid ""
 ">>> con.setlimit(sqlite3.SQLITE_LIMIT_ATTACHED, 1)\n"
 "10\n"
@@ -1487,25 +1491,25 @@ msgid ""
 "1"
 msgstr ""
 
-#: library/sqlite3.rst:1247
+#: library/sqlite3.rst:1250
 msgid "Query a boolean connection configuration option."
 msgstr ""
 
-#: library/sqlite3.rst:1260
+#: library/sqlite3.rst:1263
 msgid "A :ref:`SQLITE_DBCONFIG code <sqlite3-dbconfig-constants>`."
 msgstr ""
 
-#: library/sqlite3.rst:1258
+#: library/sqlite3.rst:1261
 msgid "Set a boolean connection configuration option."
 msgstr ""
 
-#: library/sqlite3.rst:1263
+#: library/sqlite3.rst:1266
 msgid ""
 "``True`` if the configuration option should be enabled (default); ``False`` "
 "if it should be disabled."
 msgstr ""
 
-#: library/sqlite3.rst:1271
+#: library/sqlite3.rst:1274
 msgid ""
 "Serialize a database into a :class:`bytes` object.  For an ordinary on-disk "
 "database file, the serialization is just a copy of the disk file.  For an in-"
@@ -1514,17 +1518,17 @@ msgid ""
 "backed up to disk."
 msgstr ""
 
-#: library/sqlite3.rst:1277
+#: library/sqlite3.rst:1280
 msgid "The database name to be serialized. Defaults to ``\"main\"``."
 msgstr ""
 
-#: library/sqlite3.rst:1285
+#: library/sqlite3.rst:1288
 msgid ""
 "This method is only available if the underlying SQLite library has the "
 "serialize API."
 msgstr ""
 
-#: library/sqlite3.rst:1293
+#: library/sqlite3.rst:1296
 msgid ""
 "Deserialize a :meth:`serialized <serialize>` database into a :class:"
 "`Connection`. This method causes the database connection to disconnect from "
@@ -1532,96 +1536,96 @@ msgid ""
 "serialization contained in *data*."
 msgstr ""
 
-#: library/sqlite3.rst:1299
+#: library/sqlite3.rst:1302
 msgid "A serialized database."
 msgstr ""
 
-#: library/sqlite3.rst:1302
+#: library/sqlite3.rst:1305
 msgid "The database name to deserialize into. Defaults to ``\"main\"``."
 msgstr ""
 
-#: library/sqlite3.rst:1306
+#: library/sqlite3.rst:1309
 msgid ""
 "If the database connection is currently involved in a read transaction or a "
 "backup operation."
 msgstr ""
 
-#: library/sqlite3.rst:1310
+#: library/sqlite3.rst:1313
 msgid "If *data* does not contain a valid SQLite database."
 msgstr ""
 
-#: library/sqlite3.rst:1313
+#: library/sqlite3.rst:1316
 msgid "If :func:`len(data) <len>` is larger than ``2**63 - 1``."
 msgstr ""
 
-#: library/sqlite3.rst:1318
+#: library/sqlite3.rst:1321
 msgid ""
 "This method is only available if the underlying SQLite library has the "
 "deserialize API."
 msgstr ""
 
-#: library/sqlite3.rst:1325
+#: library/sqlite3.rst:1328
 msgid ""
 "This attribute controls :pep:`249`-compliant transaction behaviour. :attr:`!"
 "autocommit` has three allowed values:"
 msgstr ""
 
-#: library/sqlite3.rst:1328
+#: library/sqlite3.rst:1331
 msgid ""
 "``False``: Select :pep:`249`-compliant transaction behaviour, implying that :"
 "mod:`!sqlite3` ensures a transaction is always open. Use :meth:`commit` and :"
 "meth:`rollback` to close transactions."
 msgstr ""
 
-#: library/sqlite3.rst:1332
+#: library/sqlite3.rst:1335
 msgid "This is the recommended value of :attr:`!autocommit`."
 msgstr ""
 
-#: library/sqlite3.rst:1334
+#: library/sqlite3.rst:1337
 msgid ""
 "``True``: Use SQLite's `autocommit mode`_. :meth:`commit` and :meth:"
 "`rollback` have no effect in this mode."
 msgstr ""
 
-#: library/sqlite3.rst:1337
+#: library/sqlite3.rst:1340
 msgid ""
 ":data:`LEGACY_TRANSACTION_CONTROL`: Pre-Python 3.12 (non-:pep:`249`-"
 "compliant) transaction control. See :attr:`isolation_level` for more details."
 msgstr ""
 
-#: library/sqlite3.rst:1341
+#: library/sqlite3.rst:1344
 msgid "This is currently the default value of :attr:`!autocommit`."
 msgstr ""
 
-#: library/sqlite3.rst:1343
+#: library/sqlite3.rst:1346
 msgid ""
 "Changing :attr:`!autocommit` to ``False`` will open a new transaction, and "
 "changing it to ``True`` will commit any pending transaction."
 msgstr ""
 
-#: library/sqlite3.rst:1346
+#: library/sqlite3.rst:1349
 msgid "See :ref:`sqlite3-transaction-control-autocommit` for more details."
 msgstr ""
 
-#: library/sqlite3.rst:1350
+#: library/sqlite3.rst:1353
 msgid ""
 "The :attr:`isolation_level` attribute has no effect unless :attr:"
 "`autocommit` is :data:`LEGACY_TRANSACTION_CONTROL`."
 msgstr ""
 
-#: library/sqlite3.rst:1357
+#: library/sqlite3.rst:1360
 msgid ""
 "This read-only attribute corresponds to the low-level SQLite `autocommit "
 "mode`_."
 msgstr ""
 
-#: library/sqlite3.rst:1360
+#: library/sqlite3.rst:1363
 msgid ""
 "``True`` if a transaction is active (there are uncommitted changes), "
 "``False`` otherwise."
 msgstr ""
 
-#: library/sqlite3.rst:1367
+#: library/sqlite3.rst:1370
 msgid ""
 "Controls the :ref:`legacy transaction handling mode <sqlite3-transaction-"
 "control-isolation-level>` of :mod:`!sqlite3`. If set to ``None``, "
@@ -1631,13 +1635,13 @@ msgid ""
 "<sqlite3-transaction-control-isolation-level>` is performed."
 msgstr ""
 
-#: library/sqlite3.rst:1375
+#: library/sqlite3.rst:1378
 msgid ""
 "If not overridden by the *isolation_level* parameter of :func:`connect`, the "
 "default is ``\"\"``, which is an alias for ``\"DEFERRED\"``."
 msgstr ""
 
-#: library/sqlite3.rst:1380
+#: library/sqlite3.rst:1383
 msgid ""
 "Using :attr:`autocommit` to control transaction handling is recommended over "
 "using :attr:`!isolation_level`. :attr:`!isolation_level` has no effect "
@@ -1645,7 +1649,7 @@ msgid ""
 "default)."
 msgstr ""
 
-#: library/sqlite3.rst:1387
+#: library/sqlite3.rst:1390
 msgid ""
 "The initial :attr:`~Cursor.row_factory` for :class:`Cursor` objects created "
 "from this connection. Assigning to this attribute does not affect the :attr:"
@@ -1654,32 +1658,32 @@ msgid ""
 "`tuple`."
 msgstr ""
 
-#: library/sqlite3.rst:1680 library/sqlite3.rst:1703
+#: library/sqlite3.rst:1683 library/sqlite3.rst:1706
 msgid "See :ref:`sqlite3-howto-row-factory` for more details."
 msgstr ""
 
-#: library/sqlite3.rst:1398
+#: library/sqlite3.rst:1401
 msgid ""
 "A :term:`callable` that accepts a :class:`bytes` parameter and returns a "
 "text representation of it. The callable is invoked for SQLite values with "
 "the ``TEXT`` data type. By default, this attribute is set to :class:`str`."
 msgstr ""
 
-#: library/sqlite3.rst:1403
+#: library/sqlite3.rst:1406
 msgid "See :ref:`sqlite3-howto-encoding` for more details."
 msgstr ""
 
-#: library/sqlite3.rst:1407
+#: library/sqlite3.rst:1410
 msgid ""
 "Return the total number of database rows that have been modified, inserted, "
 "or deleted since the database connection was opened."
 msgstr ""
 
-#: library/sqlite3.rst:1414
+#: library/sqlite3.rst:1417
 msgid "Cursor objects"
 msgstr ""
 
-#: library/sqlite3.rst:1416
+#: library/sqlite3.rst:1419
 msgid ""
 "A ``Cursor`` object represents a `database cursor`_ which is used to execute "
 "SQL statements, and manage the context of a fetch operation. Cursors are "
@@ -1687,45 +1691,45 @@ msgid ""
 "`connection shortcut methods <sqlite3-connection-shortcuts>`."
 msgstr ""
 
-#: library/sqlite3.rst:1423
+#: library/sqlite3.rst:1426
 msgid ""
 "Cursor objects are :term:`iterators <iterator>`, meaning that if you :meth:"
 "`~Cursor.execute` a ``SELECT`` query, you can simply iterate over the cursor "
 "to fetch the resulting rows:"
 msgstr ""
 
-#: library/sqlite3.rst:1434
+#: library/sqlite3.rst:1437
 msgid ""
 "for row in cur.execute(\"SELECT t FROM data\"):\n"
 "    print(row)"
 msgstr ""
 
-#: library/sqlite3.rst:1448
+#: library/sqlite3.rst:1451
 msgid "A :class:`Cursor` instance has the following attributes and methods."
 msgstr ""
 
-#: library/sqlite3.rst:1455
+#: library/sqlite3.rst:1458
 msgid ""
 "Execute a single SQL statement, optionally binding Python values using :ref:"
 "`placeholders <sqlite3-placeholders>`."
 msgstr ""
 
-#: library/sqlite3.rst:1459
+#: library/sqlite3.rst:1462
 msgid "A single SQL statement."
 msgstr ""
 
-#: library/sqlite3.rst:1462
+#: library/sqlite3.rst:1465
 msgid ""
 "Python values to bind to placeholders in *sql*. A :class:`!dict` if named "
 "placeholders are used. A :term:`!sequence` if unnamed placeholders are used. "
 "See :ref:`sqlite3-placeholders`."
 msgstr ""
 
-#: library/sqlite3.rst:1469
+#: library/sqlite3.rst:1472
 msgid "If *sql* contains more than one SQL statement."
 msgstr ""
 
-#: library/sqlite3.rst:1472
+#: library/sqlite3.rst:1475
 msgid ""
 "If :attr:`~Connection.autocommit` is :data:`LEGACY_TRANSACTION_CONTROL`, :"
 "attr:`~Connection.isolation_level` is not ``None``, *sql* is an ``INSERT``, "
@@ -1733,7 +1737,7 @@ msgid ""
 "transaction, a transaction is implicitly opened before executing *sql*."
 msgstr ""
 
-#: library/sqlite3.rst:1481
+#: library/sqlite3.rst:1484
 msgid ""
 ":exc:`DeprecationWarning` is emitted if :ref:`named placeholders <sqlite3-"
 "placeholders>` are used and *parameters* is a sequence instead of a :class:"
@@ -1741,37 +1745,37 @@ msgid ""
 "instead."
 msgstr ""
 
-#: library/sqlite3.rst:1487
+#: library/sqlite3.rst:1490
 msgid "Use :meth:`executescript` to execute multiple SQL statements."
 msgstr ""
 
-#: library/sqlite3.rst:1491
+#: library/sqlite3.rst:1494
 msgid ""
 "For every item in *parameters*, repeatedly execute the :ref:`parameterized "
 "<sqlite3-placeholders>` :abbr:`DML (Data Manipulation Language)` SQL "
 "statement *sql*."
 msgstr ""
 
-#: library/sqlite3.rst:1495
+#: library/sqlite3.rst:1498
 msgid "Uses the same implicit transaction handling as :meth:`~Cursor.execute`."
 msgstr ""
 
-#: library/sqlite3.rst:1497
+#: library/sqlite3.rst:1500
 msgid "A single SQL DML statement."
 msgstr ""
 
-#: library/sqlite3.rst:1500
+#: library/sqlite3.rst:1503
 msgid ""
 "An :term:`!iterable` of parameters to bind with the placeholders in *sql*. "
 "See :ref:`sqlite3-placeholders`."
 msgstr ""
 
-#: library/sqlite3.rst:1506
+#: library/sqlite3.rst:1509
 msgid ""
 "If *sql* contains more than one SQL statement, or is not a DML statement."
 msgstr ""
 
-#: library/sqlite3.rst:1512
+#: library/sqlite3.rst:1515
 msgid ""
 "rows = [\n"
 "    (\"row1\",),\n"
@@ -1781,13 +1785,13 @@ msgid ""
 "cur.executemany(\"INSERT INTO data VALUES(?)\", rows)"
 msgstr ""
 
-#: library/sqlite3.rst:1527
+#: library/sqlite3.rst:1530
 msgid ""
 "Any resulting rows are discarded, including DML statements with `RETURNING "
 "clauses`_."
 msgstr ""
 
-#: library/sqlite3.rst:1534
+#: library/sqlite3.rst:1537
 msgid ""
 ":exc:`DeprecationWarning` is emitted if :ref:`named placeholders <sqlite3-"
 "placeholders>` are used and the items in *parameters* are sequences instead "
@@ -1795,7 +1799,7 @@ msgid ""
 "be raised instead."
 msgstr ""
 
-#: library/sqlite3.rst:1543
+#: library/sqlite3.rst:1546
 msgid ""
 "Execute the SQL statements in *sql_script*. If the :attr:`~Connection."
 "autocommit` is :data:`LEGACY_TRANSACTION_CONTROL` and there is a pending "
@@ -1804,11 +1808,11 @@ msgid ""
 "added to *sql_script*."
 msgstr ""
 
-#: library/sqlite3.rst:1551
+#: library/sqlite3.rst:1554
 msgid "*sql_script* must be a :class:`string <str>`."
 msgstr ""
 
-#: library/sqlite3.rst:1555
+#: library/sqlite3.rst:1558
 msgid ""
 "# cur is an sqlite3.Cursor object\n"
 "cur.executescript(\"\"\"\n"
@@ -1820,20 +1824,20 @@ msgid ""
 "\"\"\")"
 msgstr ""
 
-#: library/sqlite3.rst:1568
+#: library/sqlite3.rst:1571
 msgid ""
 "If :attr:`~Cursor.row_factory` is ``None``, return the next row query result "
 "set as a :class:`tuple`. Else, pass it to the row factory and return its "
 "result. Return ``None`` if no more data is available."
 msgstr ""
 
-#: library/sqlite3.rst:1576
+#: library/sqlite3.rst:1579
 msgid ""
 "Return the next set of rows of a query result as a :class:`list`. Return an "
 "empty list if no more rows are available."
 msgstr ""
 
-#: library/sqlite3.rst:1579
+#: library/sqlite3.rst:1582
 msgid ""
 "The number of rows to fetch per call is specified by the *size* parameter. "
 "If *size* is not given, :attr:`arraysize` determines the number of rows to "
@@ -1841,7 +1845,7 @@ msgid ""
 "available are returned."
 msgstr ""
 
-#: library/sqlite3.rst:1585
+#: library/sqlite3.rst:1588
 msgid ""
 "Note there are performance considerations involved with the *size* "
 "parameter. For optimal performance, it is usually best to use the arraysize "
@@ -1849,36 +1853,36 @@ msgid ""
 "the same value from one :meth:`fetchmany` call to the next."
 msgstr ""
 
-#: library/sqlite3.rst:1592
+#: library/sqlite3.rst:1595
 msgid ""
 "Return all (remaining) rows of a query result as a :class:`list`. Return an "
 "empty list if no rows are available. Note that the :attr:`arraysize` "
 "attribute can affect the performance of this operation."
 msgstr ""
 
-#: library/sqlite3.rst:1599
+#: library/sqlite3.rst:1602
 msgid "Close the cursor now (rather than whenever ``__del__`` is called)."
 msgstr ""
 
-#: library/sqlite3.rst:1601
+#: library/sqlite3.rst:1604
 msgid ""
 "The cursor will be unusable from this point forward; a :exc:"
 "`ProgrammingError` exception will be raised if any operation is attempted "
 "with the cursor."
 msgstr ""
 
-#: library/sqlite3.rst:1610
+#: library/sqlite3.rst:1613
 msgid "Required by the DB-API. Does nothing in :mod:`!sqlite3`."
 msgstr ""
 
-#: library/sqlite3.rst:1614
+#: library/sqlite3.rst:1617
 msgid ""
 "Read/write attribute that controls the number of rows returned by :meth:"
 "`fetchmany`. The default value is 1 which means a single row would be "
 "fetched per call."
 msgstr ""
 
-#: library/sqlite3.rst:1619
+#: library/sqlite3.rst:1622
 msgid ""
 "Read-only attribute that provides the SQLite database :class:`Connection` "
 "belonging to the cursor.  A :class:`Cursor` object created by calling :meth:"
@@ -1886,7 +1890,7 @@ msgid ""
 "that refers to *con*:"
 msgstr ""
 
-#: library/sqlite3.rst:1624
+#: library/sqlite3.rst:1627
 msgid ""
 ">>> con = sqlite3.connect(\":memory:\")\n"
 ">>> cur = con.cursor()\n"
@@ -1895,18 +1899,18 @@ msgid ""
 ">>> con.close()"
 msgstr ""
 
-#: library/sqlite3.rst:1634
+#: library/sqlite3.rst:1637
 msgid ""
 "Read-only attribute that provides the column names of the last query. To "
 "remain compatible with the Python DB API, it returns a 7-tuple for each "
 "column where the last six items of each tuple are ``None``."
 msgstr ""
 
-#: library/sqlite3.rst:1638
+#: library/sqlite3.rst:1641
 msgid "It is set for ``SELECT`` statements without any matching rows as well."
 msgstr ""
 
-#: library/sqlite3.rst:1642
+#: library/sqlite3.rst:1645
 msgid ""
 "Read-only attribute that provides the row id of the last inserted row. It is "
 "only updated after successful ``INSERT`` or ``REPLACE`` statements using "
@@ -1916,15 +1920,15 @@ msgid ""
 "``None``."
 msgstr ""
 
-#: library/sqlite3.rst:1650
+#: library/sqlite3.rst:1653
 msgid "Inserts into ``WITHOUT ROWID`` tables are not recorded."
 msgstr ""
 
-#: library/sqlite3.rst:1652
+#: library/sqlite3.rst:1655
 msgid "Added support for the ``REPLACE`` statement."
 msgstr ""
 
-#: library/sqlite3.rst:1657
+#: library/sqlite3.rst:1660
 msgid ""
 "Read-only attribute that provides the number of modified rows for "
 "``INSERT``, ``UPDATE``, ``DELETE``, and ``REPLACE`` statements; is ``-1`` "
@@ -1934,7 +1938,7 @@ msgid ""
 "resulting rows must be fetched in order for :attr:`!rowcount` to be updated."
 msgstr ""
 
-#: library/sqlite3.rst:1668
+#: library/sqlite3.rst:1671
 msgid ""
 "Control how a row fetched from this :class:`!Cursor` is represented. If "
 "``None``, a row is represented as a :class:`tuple`. Can be set to the "
@@ -1943,18 +1947,18 @@ msgid ""
 "and returns a custom object representing an SQLite row."
 msgstr ""
 
-#: library/sqlite3.rst:1675
+#: library/sqlite3.rst:1678
 msgid ""
 "Defaults to what :attr:`Connection.row_factory` was set to when the :class:`!"
 "Cursor` was created. Assigning to this attribute does not affect :attr:"
 "`Connection.row_factory` of the parent connection."
 msgstr ""
 
-#: library/sqlite3.rst:1691
+#: library/sqlite3.rst:1694
 msgid "Row objects"
 msgstr ""
 
-#: library/sqlite3.rst:1695
+#: library/sqlite3.rst:1698
 msgid ""
 "A :class:`!Row` instance serves as a highly optimized :attr:`~Connection."
 "row_factory` for :class:`Connection` objects. It supports iteration, "
@@ -1962,28 +1966,28 @@ msgid ""
 "index."
 msgstr ""
 
-#: library/sqlite3.rst:1700
+#: library/sqlite3.rst:1703
 msgid ""
 "Two :class:`!Row` objects compare equal if they have identical column names "
 "and values."
 msgstr ""
 
-#: library/sqlite3.rst:1707
+#: library/sqlite3.rst:1710
 msgid ""
 "Return a :class:`list` of column names as :class:`strings <str>`. "
 "Immediately after a query, it is the first member of each tuple in :attr:"
 "`Cursor.description`."
 msgstr ""
 
-#: library/sqlite3.rst:1711
+#: library/sqlite3.rst:1714
 msgid "Added support of slicing."
 msgstr ""
 
-#: library/sqlite3.rst:1718
+#: library/sqlite3.rst:1721
 msgid "Blob objects"
 msgstr ""
 
-#: library/sqlite3.rst:1724
+#: library/sqlite3.rst:1727
 msgid ""
 "A :class:`Blob` instance is a :term:`file-like object` that can read and "
 "write data in an SQLite :abbr:`BLOB (Binary Large OBject)`. Call :func:"
@@ -1991,13 +1995,13 @@ msgid ""
 "and :term:`slices <slice>` for direct access to the blob data."
 msgstr ""
 
-#: library/sqlite3.rst:1729
+#: library/sqlite3.rst:1732
 msgid ""
 "Use the :class:`Blob` as a :term:`context manager` to ensure that the blob "
 "handle is closed after use."
 msgstr ""
 
-#: library/sqlite3.rst:1732
+#: library/sqlite3.rst:1735
 msgid ""
 "con = sqlite3.connect(\":memory:\")\n"
 "con.execute(\"CREATE TABLE test(blob_col blob)\")\n"
@@ -2019,18 +2023,18 @@ msgid ""
 "con.close()"
 msgstr ""
 
-#: library/sqlite3.rst:1760
+#: library/sqlite3.rst:1763
 msgid "Close the blob."
 msgstr ""
 
-#: library/sqlite3.rst:1762
+#: library/sqlite3.rst:1765
 msgid ""
 "The blob will be unusable from this point onward.  An :class:`~sqlite3."
 "Error` (or subclass) exception will be raised if any further operation is "
 "attempted with the blob."
 msgstr ""
 
-#: library/sqlite3.rst:1768
+#: library/sqlite3.rst:1771
 msgid ""
 "Read *length* bytes of data from the blob at the current offset position. If "
 "the end of the blob is reached, the data up to :abbr:`EOF (End of File)` "
@@ -2038,18 +2042,18 @@ msgid ""
 "`~Blob.read` will read until the end of the blob."
 msgstr ""
 
-#: library/sqlite3.rst:1776
+#: library/sqlite3.rst:1779
 msgid ""
 "Write *data* to the blob at the current offset.  This function cannot change "
 "the blob length.  Writing beyond the end of the blob will raise :exc:"
 "`ValueError`."
 msgstr ""
 
-#: library/sqlite3.rst:1782
+#: library/sqlite3.rst:1785
 msgid "Return the current access position of the blob."
 msgstr ""
 
-#: library/sqlite3.rst:1786
+#: library/sqlite3.rst:1789
 msgid ""
 "Set the current access position of the blob to *offset*.  The *origin* "
 "argument defaults to :const:`os.SEEK_SET` (absolute blob positioning). Other "
@@ -2057,26 +2061,26 @@ msgid ""
 "position) and :const:`os.SEEK_END` (seek relative to the blob’s end)."
 msgstr ""
 
-#: library/sqlite3.rst:1794
+#: library/sqlite3.rst:1797
 msgid "PrepareProtocol objects"
 msgstr ""
 
-#: library/sqlite3.rst:1798
+#: library/sqlite3.rst:1801
 msgid ""
 "The PrepareProtocol type's single purpose is to act as a :pep:`246` style "
 "adaption protocol for objects that can :ref:`adapt themselves <sqlite3-"
 "conform>` to :ref:`native SQLite types <sqlite3-types>`."
 msgstr ""
 
-#: library/sqlite3.rst:1806
+#: library/sqlite3.rst:1809
 msgid "Exceptions"
 msgstr ""
 
-#: library/sqlite3.rst:1808
+#: library/sqlite3.rst:1811
 msgid "The exception hierarchy is defined by the DB-API 2.0 (:pep:`249`)."
 msgstr ""
 
-#: library/sqlite3.rst:1812
+#: library/sqlite3.rst:1815
 msgid ""
 "This exception is not currently raised by the :mod:`!sqlite3` module, but "
 "may be raised by applications using :mod:`!sqlite3`, for example if a user-"
@@ -2084,39 +2088,39 @@ msgid ""
 "of :exc:`Exception`."
 msgstr ""
 
-#: library/sqlite3.rst:1819
+#: library/sqlite3.rst:1822
 msgid ""
 "The base class of the other exceptions in this module. Use this to catch all "
 "errors with one single :keyword:`except` statement. ``Error`` is a subclass "
 "of :exc:`Exception`."
 msgstr ""
 
-#: library/sqlite3.rst:1823
+#: library/sqlite3.rst:1826
 msgid ""
 "If the exception originated from within the SQLite library, the following "
 "two attributes are added to the exception:"
 msgstr ""
 
-#: library/sqlite3.rst:1828
+#: library/sqlite3.rst:1831
 msgid ""
 "The numeric error code from the `SQLite API <https://sqlite.org/rescode."
 "html>`_"
 msgstr ""
 
-#: library/sqlite3.rst:1835
+#: library/sqlite3.rst:1838
 msgid ""
 "The symbolic name of the numeric error code from the `SQLite API <https://"
 "sqlite.org/rescode.html>`_"
 msgstr ""
 
-#: library/sqlite3.rst:1842
+#: library/sqlite3.rst:1845
 msgid ""
 "Exception raised for misuse of the low-level SQLite C API. In other words, "
 "if this exception is raised, it probably indicates a bug in the :mod:`!"
 "sqlite3` module. ``InterfaceError`` is a subclass of :exc:`Error`."
 msgstr ""
 
-#: library/sqlite3.rst:1849
+#: library/sqlite3.rst:1852
 msgid ""
 "Exception raised for errors that are related to the database. This serves as "
 "the base exception for several types of database errors. It is only raised "
@@ -2124,14 +2128,14 @@ msgid ""
 "subclass of :exc:`Error`."
 msgstr ""
 
-#: library/sqlite3.rst:1856
+#: library/sqlite3.rst:1859
 msgid ""
 "Exception raised for errors caused by problems with the processed data, like "
 "numeric values out of range, and strings which are too long. ``DataError`` "
 "is a subclass of :exc:`DatabaseError`."
 msgstr ""
 
-#: library/sqlite3.rst:1862
+#: library/sqlite3.rst:1865
 msgid ""
 "Exception raised for errors that are related to the database's operation, "
 "and not necessarily under the control of the programmer. For example, the "
@@ -2139,20 +2143,20 @@ msgid ""
 "``OperationalError`` is a subclass of :exc:`DatabaseError`."
 msgstr ""
 
-#: library/sqlite3.rst:1870
+#: library/sqlite3.rst:1873
 msgid ""
 "Exception raised when the relational integrity of the database is affected, "
 "e.g. a foreign key check fails.  It is a subclass of :exc:`DatabaseError`."
 msgstr ""
 
-#: library/sqlite3.rst:1875
+#: library/sqlite3.rst:1878
 msgid ""
 "Exception raised when SQLite encounters an internal error. If this is "
 "raised, it may indicate that there is a problem with the runtime SQLite "
 "library. ``InternalError`` is a subclass of :exc:`DatabaseError`."
 msgstr ""
 
-#: library/sqlite3.rst:1882
+#: library/sqlite3.rst:1885
 msgid ""
 "Exception raised for :mod:`!sqlite3` API programming errors, for example "
 "supplying the wrong number of bindings to a query, or trying to operate on a "
@@ -2160,7 +2164,7 @@ msgid ""
 "`DatabaseError`."
 msgstr ""
 
-#: library/sqlite3.rst:1889
+#: library/sqlite3.rst:1892
 msgid ""
 "Exception raised in case a method or database API is not supported by the "
 "underlying SQLite library. For example, setting *deterministic* to ``True`` "
@@ -2169,78 +2173,78 @@ msgid ""
 "subclass of :exc:`DatabaseError`."
 msgstr ""
 
-#: library/sqlite3.rst:1899
+#: library/sqlite3.rst:1902
 msgid "SQLite and Python types"
 msgstr ""
 
-#: library/sqlite3.rst:1901
+#: library/sqlite3.rst:1904
 msgid ""
 "SQLite natively supports the following types: ``NULL``, ``INTEGER``, "
 "``REAL``, ``TEXT``, ``BLOB``."
 msgstr ""
 
-#: library/sqlite3.rst:1904
+#: library/sqlite3.rst:1907
 msgid ""
 "The following Python types can thus be sent to SQLite without any problem:"
 msgstr ""
 
-#: library/sqlite3.rst:1924
+#: library/sqlite3.rst:1927
 msgid "Python type"
 msgstr ""
 
-#: library/sqlite3.rst:1924
+#: library/sqlite3.rst:1927
 msgid "SQLite type"
 msgstr ""
 
-#: library/sqlite3.rst:1926
+#: library/sqlite3.rst:1929
 msgid "``None``"
 msgstr ""
 
-#: library/sqlite3.rst:1926
+#: library/sqlite3.rst:1929
 msgid "``NULL``"
 msgstr ""
 
-#: library/sqlite3.rst:1928
+#: library/sqlite3.rst:1931
 msgid ":class:`int`"
 msgstr ""
 
-#: library/sqlite3.rst:1928
+#: library/sqlite3.rst:1931
 msgid "``INTEGER``"
 msgstr ""
 
-#: library/sqlite3.rst:1930
+#: library/sqlite3.rst:1933
 msgid ":class:`float`"
 msgstr ""
 
-#: library/sqlite3.rst:1930
+#: library/sqlite3.rst:1933
 msgid "``REAL``"
 msgstr ""
 
-#: library/sqlite3.rst:1915
+#: library/sqlite3.rst:1918
 msgid ":class:`str`"
 msgstr ""
 
-#: library/sqlite3.rst:1932
+#: library/sqlite3.rst:1935
 msgid "``TEXT``"
 msgstr ""
 
-#: library/sqlite3.rst:1935
+#: library/sqlite3.rst:1938
 msgid ":class:`bytes`"
 msgstr ""
 
-#: library/sqlite3.rst:1935
+#: library/sqlite3.rst:1938
 msgid "``BLOB``"
 msgstr ""
 
-#: library/sqlite3.rst:1921
+#: library/sqlite3.rst:1924
 msgid "This is how SQLite types are converted to Python types by default:"
 msgstr ""
 
-#: library/sqlite3.rst:1932
+#: library/sqlite3.rst:1935
 msgid "depends on :attr:`~Connection.text_factory`, :class:`str` by default"
 msgstr ""
 
-#: library/sqlite3.rst:1938
+#: library/sqlite3.rst:1941
 msgid ""
 "The type system of the :mod:`!sqlite3` module is extensible in two ways: you "
 "can store additional Python types in an SQLite database via :ref:`object "
@@ -2249,47 +2253,47 @@ msgid ""
 "converters>`."
 msgstr ""
 
-#: library/sqlite3.rst:1948
+#: library/sqlite3.rst:1951
 msgid "Default adapters and converters (deprecated)"
 msgstr ""
 
-#: library/sqlite3.rst:1952
+#: library/sqlite3.rst:1955
 msgid ""
 "The default adapters and converters are deprecated as of Python 3.12. "
 "Instead, use the :ref:`sqlite3-adapter-converter-recipes` and tailor them to "
 "your needs."
 msgstr ""
 
-#: library/sqlite3.rst:1956
+#: library/sqlite3.rst:1959
 msgid "The deprecated default adapters and converters consist of:"
 msgstr ""
 
-#: library/sqlite3.rst:1958
+#: library/sqlite3.rst:1961
 msgid ""
 "An adapter for :class:`datetime.date` objects to :class:`strings <str>` in "
 "`ISO 8601`_ format."
 msgstr ""
 
-#: library/sqlite3.rst:1960
+#: library/sqlite3.rst:1963
 msgid ""
 "An adapter for :class:`datetime.datetime` objects to strings in ISO 8601 "
 "format."
 msgstr ""
 
-#: library/sqlite3.rst:1962
+#: library/sqlite3.rst:1965
 msgid ""
 "A converter for :ref:`declared <sqlite3-converters>` \"date\" types to :"
 "class:`datetime.date` objects."
 msgstr ""
 
-#: library/sqlite3.rst:1964
+#: library/sqlite3.rst:1967
 msgid ""
 "A converter for declared \"timestamp\" types to :class:`datetime.datetime` "
 "objects. Fractional parts will be truncated to 6 digits (microsecond "
 "precision)."
 msgstr ""
 
-#: library/sqlite3.rst:1970
+#: library/sqlite3.rst:1973
 msgid ""
 "The default \"timestamp\" converter ignores UTC offsets in the database and "
 "always returns a naive :class:`datetime.datetime` object. To preserve UTC "
@@ -2297,42 +2301,42 @@ msgid ""
 "offset-aware converter with :func:`register_converter`."
 msgstr ""
 
-#: library/sqlite3.rst:1983
+#: library/sqlite3.rst:1986
 msgid "Command-line interface"
 msgstr ""
 
-#: library/sqlite3.rst:1985
+#: library/sqlite3.rst:1988
 msgid ""
 "The :mod:`!sqlite3` module can be invoked as a script, using the "
 "interpreter's :option:`-m` switch, in order to provide a simple SQLite "
 "shell. The argument signature is as follows::"
 msgstr ""
 
-#: library/sqlite3.rst:1990
+#: library/sqlite3.rst:1993
 msgid "python -m sqlite3 [-h] [-v] [filename] [sql]"
 msgstr ""
 
-#: library/sqlite3.rst:1992
+#: library/sqlite3.rst:1995
 msgid "Type ``.quit`` or CTRL-D to exit the shell."
 msgstr ""
 
-#: library/sqlite3.rst:1998
+#: library/sqlite3.rst:2001
 msgid "Print CLI help."
 msgstr ""
 
-#: library/sqlite3.rst:2002
+#: library/sqlite3.rst:2005
 msgid "Print underlying SQLite library version."
 msgstr ""
 
-#: library/sqlite3.rst:2010
+#: library/sqlite3.rst:2013
 msgid "How-to guides"
 msgstr ""
 
-#: library/sqlite3.rst:2015
+#: library/sqlite3.rst:2018
 msgid "How to use placeholders to bind values in SQL queries"
 msgstr ""
 
-#: library/sqlite3.rst:2017
+#: library/sqlite3.rst:2020
 msgid ""
 "SQL operations usually need to use values from Python variables. However, "
 "beware of using Python's string operations to assemble queries, as they are "
@@ -2340,7 +2344,7 @@ msgid ""
 "close the single quote and inject ``OR TRUE`` to select all rows::"
 msgstr ""
 
-#: library/sqlite3.rst:2022
+#: library/sqlite3.rst:2025
 msgid ""
 ">>> # Never do this -- insecure!\n"
 ">>> symbol = input()\n"
@@ -2351,7 +2355,7 @@ msgid ""
 ">>> cur.execute(sql)"
 msgstr ""
 
-#: library/sqlite3.rst:2030
+#: library/sqlite3.rst:2033
 msgid ""
 "Instead, use the DB-API's parameter substitution. To insert a variable into "
 "a query string, use a placeholder in the string, and substitute the actual "
@@ -2359,7 +2363,7 @@ msgid ""
 "second argument of the cursor's :meth:`~Cursor.execute` method."
 msgstr ""
 
-#: library/sqlite3.rst:2035
+#: library/sqlite3.rst:2038
 msgid ""
 "An SQL statement may use one of two kinds of placeholders: question marks "
 "(qmark style) or named placeholders (named style). For the qmark style, "
@@ -2370,7 +2374,7 @@ msgid ""
 "ignored. Here's an example of both styles:"
 msgstr ""
 
-#: library/sqlite3.rst:2046
+#: library/sqlite3.rst:2049
 msgid ""
 "con = sqlite3.connect(\":memory:\")\n"
 "cur = con.execute(\"CREATE TABLE lang(name, first_appeared)\")\n"
@@ -2391,24 +2395,24 @@ msgid ""
 "con.close()"
 msgstr ""
 
-#: library/sqlite3.rst:2073
+#: library/sqlite3.rst:2076
 msgid ""
 ":pep:`249` numeric placeholders are *not* supported. If used, they will be "
 "interpreted as named placeholders."
 msgstr ""
 
-#: library/sqlite3.rst:2080
+#: library/sqlite3.rst:2083
 msgid "How to adapt custom Python types to SQLite values"
 msgstr ""
 
-#: library/sqlite3.rst:2082
+#: library/sqlite3.rst:2085
 msgid ""
 "SQLite supports only a limited set of data types natively. To store custom "
 "Python types in SQLite databases, *adapt* them to one of the :ref:`Python "
 "types SQLite natively understands <sqlite3-types>`."
 msgstr ""
 
-#: library/sqlite3.rst:2086
+#: library/sqlite3.rst:2089
 msgid ""
 "There are two ways to adapt Python objects to SQLite types: letting your "
 "object adapt itself, or using an *adapter callable*. The latter will take "
@@ -2418,11 +2422,11 @@ msgid ""
 "custom adapter functions."
 msgstr ""
 
-#: library/sqlite3.rst:2098
+#: library/sqlite3.rst:2101
 msgid "How to write adaptable objects"
 msgstr ""
 
-#: library/sqlite3.rst:2100
+#: library/sqlite3.rst:2103
 msgid ""
 "Suppose we have a :class:`!Point` class that represents a pair of "
 "coordinates, ``x`` and ``y``, in a Cartesian coordinate system. The "
@@ -2432,7 +2436,7 @@ msgid ""
 "object passed to *protocol* will be of type :class:`PrepareProtocol`."
 msgstr ""
 
-#: library/sqlite3.rst:2108
+#: library/sqlite3.rst:2111
 msgid ""
 "class Point:\n"
 "    def __init__(self, x, y):\n"
@@ -2450,18 +2454,18 @@ msgid ""
 "con.close()"
 msgstr ""
 
-#: library/sqlite3.rst:2132
+#: library/sqlite3.rst:2135
 msgid "How to register adapter callables"
 msgstr ""
 
-#: library/sqlite3.rst:2134
+#: library/sqlite3.rst:2137
 msgid ""
 "The other possibility is to create a function that converts the Python "
 "object to an SQLite-compatible type. This function can then be registered "
 "using :func:`register_adapter`."
 msgstr ""
 
-#: library/sqlite3.rst:2138
+#: library/sqlite3.rst:2141
 msgid ""
 "class Point:\n"
 "    def __init__(self, x, y):\n"
@@ -2480,68 +2484,68 @@ msgid ""
 "con.close()"
 msgstr ""
 
-#: library/sqlite3.rst:2165
+#: library/sqlite3.rst:2168
 msgid "How to convert SQLite values to custom Python types"
 msgstr ""
 
-#: library/sqlite3.rst:2167
+#: library/sqlite3.rst:2170
 msgid ""
 "Writing an adapter lets you convert *from* custom Python types *to* SQLite "
 "values. To be able to convert *from* SQLite values *to* custom Python types, "
 "we use *converters*."
 msgstr ""
 
-#: library/sqlite3.rst:2172
+#: library/sqlite3.rst:2175
 msgid ""
 "Let's go back to the :class:`!Point` class. We stored the x and y "
 "coordinates separated via semicolons as strings in SQLite."
 msgstr ""
 
-#: library/sqlite3.rst:2175
+#: library/sqlite3.rst:2178
 msgid ""
 "First, we'll define a converter function that accepts the string as a "
 "parameter and constructs a :class:`!Point` object from it."
 msgstr ""
 
-#: library/sqlite3.rst:2180
+#: library/sqlite3.rst:2183
 msgid ""
 "Converter functions are **always** passed a :class:`bytes` object, no matter "
 "the underlying SQLite data type."
 msgstr ""
 
-#: library/sqlite3.rst:2183
+#: library/sqlite3.rst:2186
 msgid ""
 "def convert_point(s):\n"
 "    x, y = map(float, s.split(b\";\"))\n"
 "    return Point(x, y)"
 msgstr ""
 
-#: library/sqlite3.rst:2189
+#: library/sqlite3.rst:2192
 msgid ""
 "We now need to tell :mod:`!sqlite3` when it should convert a given SQLite "
 "value. This is done when connecting to a database, using the *detect_types* "
 "parameter of :func:`connect`. There are three options:"
 msgstr ""
 
-#: library/sqlite3.rst:2193
+#: library/sqlite3.rst:2196
 msgid "Implicit: set *detect_types* to :const:`PARSE_DECLTYPES`"
 msgstr ""
 
-#: library/sqlite3.rst:2194
+#: library/sqlite3.rst:2197
 msgid "Explicit: set *detect_types* to :const:`PARSE_COLNAMES`"
 msgstr ""
 
-#: library/sqlite3.rst:2195
+#: library/sqlite3.rst:2198
 msgid ""
 "Both: set *detect_types* to ``sqlite3.PARSE_DECLTYPES | sqlite3."
 "PARSE_COLNAMES``. Column names take precedence over declared types."
 msgstr ""
 
-#: library/sqlite3.rst:2199
+#: library/sqlite3.rst:2202
 msgid "The following example illustrates the implicit and explicit approaches:"
 msgstr ""
 
-#: library/sqlite3.rst:2201
+#: library/sqlite3.rst:2204
 msgid ""
 "class Point:\n"
 "    def __init__(self, x, y):\n"
@@ -2583,15 +2587,15 @@ msgid ""
 "con.close()"
 msgstr ""
 
-#: library/sqlite3.rst:2252
+#: library/sqlite3.rst:2255
 msgid "Adapter and converter recipes"
 msgstr ""
 
-#: library/sqlite3.rst:2254
+#: library/sqlite3.rst:2257
 msgid "This section shows recipes for common adapters and converters."
 msgstr ""
 
-#: library/sqlite3.rst:2256
+#: library/sqlite3.rst:2259
 msgid ""
 "import datetime\n"
 "import sqlite3\n"
@@ -2629,11 +2633,11 @@ msgid ""
 "sqlite3.register_converter(\"timestamp\", convert_timestamp)"
 msgstr ""
 
-#: library/sqlite3.rst:2316
+#: library/sqlite3.rst:2319
 msgid "How to use connection shortcut methods"
 msgstr ""
 
-#: library/sqlite3.rst:2318
+#: library/sqlite3.rst:2321
 msgid ""
 "Using the :meth:`~Connection.execute`, :meth:`~Connection.executemany`, and :"
 "meth:`~Connection.executescript` methods of the :class:`Connection` class, "
@@ -2645,7 +2649,7 @@ msgid ""
 "object."
 msgstr ""
 
-#: library/sqlite3.rst:2327
+#: library/sqlite3.rst:2330
 msgid ""
 "# Create and fill the table.\n"
 "con = sqlite3.connect(\":memory:\")\n"
@@ -2669,11 +2673,11 @@ msgid ""
 "con.close()"
 msgstr ""
 
-#: library/sqlite3.rst:2359
+#: library/sqlite3.rst:2362
 msgid "How to use the connection context manager"
 msgstr ""
 
-#: library/sqlite3.rst:2361
+#: library/sqlite3.rst:2364
 msgid ""
 "A :class:`Connection` object can be used as a context manager that "
 "automatically commits or rolls back open transactions when leaving the body "
@@ -2685,21 +2689,21 @@ msgid ""
 "rolling back."
 msgstr ""
 
-#: library/sqlite3.rst:2372
+#: library/sqlite3.rst:2375
 msgid ""
 "If there is no open transaction upon leaving the body of the ``with`` "
 "statement, or if :attr:`~Connection.autocommit` is ``True``, the context "
 "manager does nothing."
 msgstr ""
 
-#: library/sqlite3.rst:2377
+#: library/sqlite3.rst:2380
 msgid ""
 "The context manager neither implicitly opens a new transaction nor closes "
 "the connection. If you need a closing context manager, consider using :meth:"
 "`contextlib.closing`."
 msgstr ""
 
-#: library/sqlite3.rst:2381
+#: library/sqlite3.rst:2384
 msgid ""
 "con = sqlite3.connect(\":memory:\")\n"
 "con.execute(\"CREATE TABLE lang(id INTEGER PRIMARY KEY, name VARCHAR "
@@ -2723,44 +2727,45 @@ msgid ""
 "con.close()"
 msgstr ""
 
-#: library/sqlite3.rst:2411
+#: library/sqlite3.rst:2414
 msgid "How to work with SQLite URIs"
 msgstr ""
 
-#: library/sqlite3.rst:2413
+#: library/sqlite3.rst:2416
 msgid "Some useful URI tricks include:"
 msgstr ""
 
-#: library/sqlite3.rst:2415
+#: library/sqlite3.rst:2418
 msgid "Open a database in read-only mode:"
 msgstr ""
 
-#: library/sqlite3.rst:2417
+#: library/sqlite3.rst:2420
 msgid ""
 ">>> con = sqlite3.connect(\"file:tutorial.db?mode=ro\", uri=True)\n"
 ">>> con.execute(\"CREATE TABLE readonly(data)\")\n"
 "Traceback (most recent call last):\n"
-"OperationalError: attempt to write a readonly database"
+"OperationalError: attempt to write a readonly database\n"
+">>> con.close()"
 msgstr ""
 
-#: library/sqlite3.rst:2424
+#: library/sqlite3.rst:2428
 msgid ""
 "Do not implicitly create a new database file if it does not already exist; "
 "will raise :exc:`~sqlite3.OperationalError` if unable to create a new file:"
 msgstr ""
 
-#: library/sqlite3.rst:2427
+#: library/sqlite3.rst:2431
 msgid ""
 ">>> con = sqlite3.connect(\"file:nosuchdb.db?mode=rw\", uri=True)\n"
 "Traceback (most recent call last):\n"
 "OperationalError: unable to open database file"
 msgstr ""
 
-#: library/sqlite3.rst:2434
+#: library/sqlite3.rst:2438
 msgid "Create a shared named in-memory database:"
 msgstr ""
 
-#: library/sqlite3.rst:2436
+#: library/sqlite3.rst:2440
 msgid ""
 "db = \"file:mem1?mode=memory&cache=shared\"\n"
 "con1 = sqlite3.connect(db, uri=True)\n"
@@ -2775,24 +2780,24 @@ msgid ""
 "con2.close()"
 msgstr ""
 
-#: library/sqlite3.rst:2450
+#: library/sqlite3.rst:2454
 msgid ""
 "More information about this feature, including a list of parameters, can be "
 "found in the `SQLite URI documentation`_."
 msgstr ""
 
-#: library/sqlite3.rst:2459
+#: library/sqlite3.rst:2463
 msgid "How to create and use row factories"
 msgstr ""
 
-#: library/sqlite3.rst:2461
+#: library/sqlite3.rst:2465
 msgid ""
 "By default, :mod:`!sqlite3` represents each row as a :class:`tuple`. If a :"
 "class:`!tuple` does not suit your needs, you can use the :class:`sqlite3."
 "Row` class or a custom :attr:`~Cursor.row_factory`."
 msgstr ""
 
-#: library/sqlite3.rst:2466
+#: library/sqlite3.rst:2470
 msgid ""
 "While :attr:`!row_factory` exists as an attribute both on the :class:"
 "`Cursor` and the :class:`Connection`, it is recommended to set :class:"
@@ -2800,7 +2805,7 @@ msgid ""
 "use the same row factory."
 msgstr ""
 
-#: library/sqlite3.rst:2471
+#: library/sqlite3.rst:2475
 msgid ""
 ":class:`!Row` provides indexed and case-insensitive named access to columns, "
 "with minimal memory overhead and performance impact over a :class:`!tuple`. "
@@ -2808,17 +2813,17 @@ msgid ""
 "attribute:"
 msgstr ""
 
-#: library/sqlite3.rst:2476
+#: library/sqlite3.rst:2480
 msgid ""
 ">>> con = sqlite3.connect(\":memory:\")\n"
 ">>> con.row_factory = sqlite3.Row"
 msgstr ""
 
-#: library/sqlite3.rst:2481
+#: library/sqlite3.rst:2485
 msgid "Queries now return :class:`!Row` objects:"
 msgstr ""
 
-#: library/sqlite3.rst:2483
+#: library/sqlite3.rst:2487
 msgid ""
 ">>> res = con.execute(\"SELECT 'Earth' AS name, 6378 AS radius\")\n"
 ">>> row = res.fetchone()\n"
@@ -2833,7 +2838,7 @@ msgid ""
 ">>> con.close()"
 msgstr ""
 
-#: library/sqlite3.rst:2499
+#: library/sqlite3.rst:2503
 msgid ""
 "The ``FROM`` clause can be omitted in the ``SELECT`` statement, as in the "
 "above example. In such cases, SQLite returns a single row with columns "
@@ -2841,25 +2846,25 @@ msgid ""
 "alias``."
 msgstr ""
 
-#: library/sqlite3.rst:2504
+#: library/sqlite3.rst:2508
 msgid ""
 "You can create a custom :attr:`~Cursor.row_factory` that returns each row as "
 "a :class:`dict`, with column names mapped to values:"
 msgstr ""
 
-#: library/sqlite3.rst:2507
+#: library/sqlite3.rst:2511
 msgid ""
 "def dict_factory(cursor, row):\n"
 "    fields = [column[0] for column in cursor.description]\n"
 "    return {key: value for key, value in zip(fields, row)}"
 msgstr ""
 
-#: library/sqlite3.rst:2513
+#: library/sqlite3.rst:2517
 msgid ""
 "Using it, queries now return a :class:`!dict` instead of a :class:`!tuple`:"
 msgstr ""
 
-#: library/sqlite3.rst:2515
+#: library/sqlite3.rst:2519
 msgid ""
 ">>> con = sqlite3.connect(\":memory:\")\n"
 ">>> con.row_factory = dict_factory\n"
@@ -2869,11 +2874,11 @@ msgid ""
 ">>> con.close()"
 msgstr ""
 
-#: library/sqlite3.rst:2524
+#: library/sqlite3.rst:2528
 msgid "The following row factory returns a :term:`named tuple`:"
 msgstr ""
 
-#: library/sqlite3.rst:2526
+#: library/sqlite3.rst:2530
 msgid ""
 "from collections import namedtuple\n"
 "\n"
@@ -2883,11 +2888,11 @@ msgid ""
 "    return cls._make(row)"
 msgstr ""
 
-#: library/sqlite3.rst:2535
+#: library/sqlite3.rst:2539
 msgid ":func:`!namedtuple_factory` can be used as follows:"
 msgstr ""
 
-#: library/sqlite3.rst:2537
+#: library/sqlite3.rst:2541
 msgid ""
 ">>> con = sqlite3.connect(\":memory:\")\n"
 ">>> con.row_factory = namedtuple_factory\n"
@@ -2902,18 +2907,18 @@ msgid ""
 ">>> con.close()"
 msgstr ""
 
-#: library/sqlite3.rst:2551
+#: library/sqlite3.rst:2555
 msgid ""
 "With some adjustments, the above recipe can be adapted to use a :class:"
 "`~dataclasses.dataclass`, or any other custom class, instead of a :class:"
 "`~collections.namedtuple`."
 msgstr ""
 
-#: library/sqlite3.rst:2559
+#: library/sqlite3.rst:2563
 msgid "How to handle non-UTF-8 text encodings"
 msgstr ""
 
-#: library/sqlite3.rst:2561
+#: library/sqlite3.rst:2565
 msgid ""
 "By default, :mod:`!sqlite3` uses :class:`str` to adapt SQLite values with "
 "the ``TEXT`` data type. This works well for UTF-8 encoded text, but it might "
@@ -2921,7 +2926,7 @@ msgid ""
 "`~Connection.text_factory` to handle such cases."
 msgstr ""
 
-#: library/sqlite3.rst:2567
+#: library/sqlite3.rst:2571
 msgid ""
 "Because of SQLite's `flexible typing`_, it is not uncommon to encounter "
 "table columns with the ``TEXT`` data type containing non-UTF-8 encodings, or "
@@ -2932,39 +2937,39 @@ msgid ""
 "text using this :attr:`~Connection.text_factory`:"
 msgstr ""
 
-#: library/sqlite3.rst:2576
+#: library/sqlite3.rst:2580
 msgid "con.text_factory = lambda data: str(data, encoding=\"latin2\")"
 msgstr ""
 
-#: library/sqlite3.rst:2580
+#: library/sqlite3.rst:2584
 msgid ""
 "For invalid UTF-8 or arbitrary data in stored in ``TEXT`` table columns, you "
 "can use the following technique, borrowed from the :ref:`unicode-howto`:"
 msgstr ""
 
-#: library/sqlite3.rst:2583
+#: library/sqlite3.rst:2587
 msgid "con.text_factory = lambda data: str(data, errors=\"surrogateescape\")"
 msgstr ""
 
-#: library/sqlite3.rst:2589
+#: library/sqlite3.rst:2593
 msgid ""
 "The :mod:`!sqlite3` module API does not support strings containing "
 "surrogates."
 msgstr ""
 
-#: library/sqlite3.rst:2594
+#: library/sqlite3.rst:2598
 msgid ":ref:`unicode-howto`"
 msgstr ""
 
-#: library/sqlite3.rst:2600
+#: library/sqlite3.rst:2604
 msgid "Explanation"
 msgstr ""
 
-#: library/sqlite3.rst:2606
+#: library/sqlite3.rst:2610
 msgid "Transaction control"
 msgstr ""
 
-#: library/sqlite3.rst:2608
+#: library/sqlite3.rst:2612
 msgid ""
 ":mod:`!sqlite3` offers multiple methods of controlling whether, when and how "
 "database transactions are opened and closed. :ref:`sqlite3-transaction-"
@@ -2972,24 +2977,24 @@ msgid ""
 "isolation-level` retains the pre-Python 3.12 behaviour."
 msgstr ""
 
-#: library/sqlite3.rst:2617
+#: library/sqlite3.rst:2621
 msgid "Transaction control via the ``autocommit`` attribute"
 msgstr ""
 
-#: library/sqlite3.rst:2619
+#: library/sqlite3.rst:2623
 msgid ""
 "The recommended way of controlling transaction behaviour is through the :"
 "attr:`Connection.autocommit` attribute, which should preferably be set using "
 "the *autocommit* parameter of :func:`connect`."
 msgstr ""
 
-#: library/sqlite3.rst:2624
+#: library/sqlite3.rst:2628
 msgid ""
 "It is suggested to set *autocommit* to ``False``, which implies :pep:`249`-"
 "compliant transaction control. This means:"
 msgstr ""
 
-#: library/sqlite3.rst:2628
+#: library/sqlite3.rst:2632
 msgid ""
 ":mod:`!sqlite3` ensures that a transaction is always open, so :func:"
 "`connect`, :meth:`Connection.commit`, and :meth:`Connection.rollback` will "
@@ -2998,21 +3003,21 @@ msgid ""
 "when opening transactions."
 msgstr ""
 
-#: library/sqlite3.rst:2633
+#: library/sqlite3.rst:2637
 msgid "Transactions should be committed explicitly using :meth:`!commit`."
 msgstr ""
 
-#: library/sqlite3.rst:2634
+#: library/sqlite3.rst:2638
 msgid "Transactions should be rolled back explicitly using :meth:`!rollback`."
 msgstr ""
 
-#: library/sqlite3.rst:2635
+#: library/sqlite3.rst:2639
 msgid ""
 "An implicit rollback is performed if the database is :meth:`~Connection."
 "close`-ed with pending changes."
 msgstr ""
 
-#: library/sqlite3.rst:2638
+#: library/sqlite3.rst:2642
 msgid ""
 "Set *autocommit* to ``True`` to enable SQLite's `autocommit mode`_. In this "
 "mode, :meth:`Connection.commit` and :meth:`Connection.rollback` have no "
@@ -3021,25 +3026,25 @@ msgid ""
 "in_transaction` to query the low-level SQLite autocommit mode."
 msgstr ""
 
-#: library/sqlite3.rst:2646
+#: library/sqlite3.rst:2650
 msgid ""
 "Set *autocommit* to :data:`LEGACY_TRANSACTION_CONTROL` to leave transaction "
 "control behaviour to the :attr:`Connection.isolation_level` attribute. See :"
 "ref:`sqlite3-transaction-control-isolation-level` for more information."
 msgstr ""
 
-#: library/sqlite3.rst:2655
+#: library/sqlite3.rst:2659
 msgid "Transaction control via the ``isolation_level`` attribute"
 msgstr ""
 
-#: library/sqlite3.rst:2659
+#: library/sqlite3.rst:2663
 msgid ""
 "The recommended way of controlling transactions is via the :attr:"
 "`~Connection.autocommit` attribute. See :ref:`sqlite3-transaction-control-"
 "autocommit`."
 msgstr ""
 
-#: library/sqlite3.rst:2663
+#: library/sqlite3.rst:2667
 msgid ""
 "If :attr:`Connection.autocommit` is set to :data:"
 "`LEGACY_TRANSACTION_CONTROL` (the default), transaction behaviour is "
@@ -3047,7 +3052,7 @@ msgid ""
 "Otherwise, :attr:`!isolation_level` has no effect."
 msgstr ""
 
-#: library/sqlite3.rst:2669
+#: library/sqlite3.rst:2673
 msgid ""
 "If the connection attribute :attr:`~Connection.isolation_level` is not "
 "``None``, new transactions are implicitly opened before :meth:`~Cursor."
@@ -3061,7 +3066,7 @@ msgid ""
 "attribute."
 msgstr ""
 
-#: library/sqlite3.rst:2682
+#: library/sqlite3.rst:2686
 msgid ""
 "If :attr:`~Connection.isolation_level` is set to ``None``, no transactions "
 "are implicitly opened at all. This leaves the underlying SQLite library in "
@@ -3071,33 +3076,33 @@ msgid ""
 "in_transaction` attribute."
 msgstr ""
 
-#: library/sqlite3.rst:2690
+#: library/sqlite3.rst:2694
 msgid ""
 "The :meth:`~Cursor.executescript` method implicitly commits any pending "
 "transaction before execution of the given SQL script, regardless of the "
 "value of :attr:`~Connection.isolation_level`."
 msgstr ""
 
-#: library/sqlite3.rst:2694
+#: library/sqlite3.rst:2698
 msgid ""
 ":mod:`!sqlite3` used to implicitly commit an open transaction before DDL "
 "statements.  This is no longer the case."
 msgstr ""
 
-#: library/sqlite3.rst:2698
+#: library/sqlite3.rst:2702
 msgid ""
 "The recommended way of controlling transactions is now via the :attr:"
 "`~Connection.autocommit` attribute."
 msgstr ""
 
-#: library/sqlite3.rst:1450
+#: library/sqlite3.rst:1453
 msgid "? (question mark)"
 msgstr ""
 
-#: library/sqlite3.rst:1451
+#: library/sqlite3.rst:1454
 msgid "in SQL statements"
 msgstr ""
 
-#: library/sqlite3.rst:1451
+#: library/sqlite3.rst:1454
 msgid ": (colon)"
 msgstr ""
diff --git a/library/ssl.po b/library/ssl.po
index fa1a99248..46befc75c 100644
--- a/library/ssl.po
+++ b/library/ssl.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -419,10 +419,10 @@ msgstr ""
 msgid ""
 ">>> import ssl\n"
 ">>> timestamp = ssl.cert_time_to_seconds(\"Jan  5 09:34:43 2018 GMT\")\n"
-">>> timestamp  \n"
+">>> timestamp\n"
 "1515144883\n"
 ">>> from datetime import datetime\n"
-">>> print(datetime.utcfromtimestamp(timestamp))  \n"
+">>> print(datetime.utcfromtimestamp(timestamp))\n"
 "2018-01-05 09:34:43"
 msgstr ""
 
@@ -2253,8 +2253,8 @@ msgstr ""
 msgid ""
 "A :class:`TLSVersion` enum member representing the highest supported TLS "
 "version. The value defaults to :attr:`TLSVersion.MAXIMUM_SUPPORTED`. The "
-"attribute is read-only for protocols other than :attr:`PROTOCOL_TLS`, :attr:"
-"`PROTOCOL_TLS_CLIENT`, and :attr:`PROTOCOL_TLS_SERVER`."
+"attribute is read-only for protocols other than :const:`PROTOCOL_TLS`, :"
+"const:`PROTOCOL_TLS_CLIENT`, and :const:`PROTOCOL_TLS_SERVER`."
 msgstr ""
 
 #: library/ssl.rst:1892
@@ -2275,7 +2275,7 @@ msgstr ""
 
 #: library/ssl.rst:1912
 msgid ""
-"Control the number of TLS 1.3 session tickets of a :attr:"
+"Control the number of TLS 1.3 session tickets of a :const:"
 "`PROTOCOL_TLS_SERVER` context. The setting has no impact on TLS 1.0 to 1.2 "
 "connections."
 msgstr ""
@@ -2862,10 +2862,11 @@ msgstr ""
 #: library/ssl.rst:2371
 msgid ""
 "The :mod:`asyncio` module supports :ref:`non-blocking SSL sockets <ssl-"
-"nonblocking>` and provides a higher level API. It polls for events using "
-"the :mod:`selectors` module and handles :exc:`SSLWantWriteError`, :exc:"
-"`SSLWantReadError` and :exc:`BlockingIOError` exceptions. It runs the SSL "
-"handshake asynchronously as well."
+"nonblocking>` and provides a higher level :ref:`Streams API <asyncio-"
+"streams>`. It polls for events using the :mod:`selectors` module and "
+"handles :exc:`SSLWantWriteError`, :exc:`SSLWantReadError` and :exc:"
+"`BlockingIOError` exceptions. It runs the SSL handshake asynchronously as "
+"well."
 msgstr ""
 
 #: library/ssl.rst:2380
diff --git a/library/statistics.po b/library/statistics.po
index f94304295..c89e142af 100644
--- a/library/statistics.po
+++ b/library/statistics.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -1403,7 +1403,7 @@ msgid ""
 ">>> X = NormalDist(10, 2.5).samples(n, seed=3652260728)\n"
 ">>> Y = NormalDist(15, 1.75).samples(n, seed=4582495471)\n"
 ">>> Z = NormalDist(50, 1.25).samples(n, seed=6582483453)\n"
-">>> quantiles(map(model, X, Y, Z))       \n"
+">>> quantiles(map(model, X, Y, Z))\n"
 "[1.4591308524824727, 1.8035946855390597, 2.175091447274739]"
 msgstr ""
 
diff --git a/library/stdtypes.po b/library/stdtypes.po
index 128b201c9..cd9bd4a57 100644
--- a/library/stdtypes.po
+++ b/library/stdtypes.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: 2023-02-01 18:55-0500\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -137,8 +137,8 @@ msgstr "İşlem"
 msgid "Result"
 msgstr "Sonuç"
 
-#: library/stdtypes.rst:276 library/stdtypes.rst:965 library/stdtypes.rst:2423
-#: library/stdtypes.rst:3642
+#: library/stdtypes.rst:276 library/stdtypes.rst:965 library/stdtypes.rst:2429
+#: library/stdtypes.rst:3648
 msgid "Notes"
 msgstr "Notlar"
 
@@ -150,7 +150,7 @@ msgstr "``x or y``"
 msgid "if *x* is true, then *x*, else *y*"
 msgstr "*x* doğruysa, *x*, aksi halde *y*"
 
-#: library/stdtypes.rst:967 library/stdtypes.rst:1181 library/stdtypes.rst:3648
+#: library/stdtypes.rst:967 library/stdtypes.rst:1181 library/stdtypes.rst:3654
 msgid "\\(1)"
 msgstr "\\(1)"
 
@@ -162,8 +162,8 @@ msgstr "``x and y``"
 msgid "if *x* is false, then *x*, else *y*"
 msgstr "*x* yanlışsa, *x*, aksi halde *y*"
 
-#: library/stdtypes.rst:289 library/stdtypes.rst:1209 library/stdtypes.rst:2435
-#: library/stdtypes.rst:3654
+#: library/stdtypes.rst:289 library/stdtypes.rst:1209 library/stdtypes.rst:2441
+#: library/stdtypes.rst:3660
 msgid "\\(2)"
 msgstr "\\(2)"
 
@@ -175,14 +175,14 @@ msgstr "``not x``"
 msgid "if *x* is false, then ``True``, else ``False``"
 msgstr "*x* yanlışsa, ``True``, aksi halde ``False``"
 
-#: library/stdtypes.rst:979 library/stdtypes.rst:2437 library/stdtypes.rst:2441
-#: library/stdtypes.rst:3656 library/stdtypes.rst:3660
-#: library/stdtypes.rst:3662
+#: library/stdtypes.rst:979 library/stdtypes.rst:2443 library/stdtypes.rst:2447
+#: library/stdtypes.rst:3662 library/stdtypes.rst:3666
+#: library/stdtypes.rst:3668
 msgid "\\(3)"
 msgstr "\\(3)"
 
-#: library/stdtypes.rst:320 library/stdtypes.rst:1016 library/stdtypes.rst:2469
-#: library/stdtypes.rst:3692
+#: library/stdtypes.rst:320 library/stdtypes.rst:1016 library/stdtypes.rst:2475
+#: library/stdtypes.rst:3698
 msgid "Notes:"
 msgstr "Notlar:"
 
@@ -233,8 +233,8 @@ msgstr ""
 msgid "This table summarizes the comparison operations:"
 msgstr "Bu tablo karşılaştırma operatörlerini özetlemektedir:"
 
-#: library/stdtypes.rst:2400 library/stdtypes.rst:3619
-#: library/stdtypes.rst:3642
+#: library/stdtypes.rst:2406 library/stdtypes.rst:3625
+#: library/stdtypes.rst:3648
 msgid "Meaning"
 msgstr "Anlamı"
 
@@ -574,7 +574,7 @@ msgstr ""
 "gerçek kısmı *re*, sanal kısmı *im* olan bir karmaşık sayı. *im* varsayılan "
 "olarak sıfırdır."
 
-#: library/stdtypes.rst:1202 library/stdtypes.rst:3679
+#: library/stdtypes.rst:1202 library/stdtypes.rst:3685
 msgid "\\(6)"
 msgstr "\\(6)"
 
@@ -610,8 +610,8 @@ msgstr "``pow(x, y)``"
 msgid "*x* to the power *y*"
 msgstr "*x* üzeri *y*"
 
-#: library/stdtypes.rst:313 library/stdtypes.rst:1194 library/stdtypes.rst:2459
-#: library/stdtypes.rst:3675 library/stdtypes.rst:3682
+#: library/stdtypes.rst:313 library/stdtypes.rst:1194 library/stdtypes.rst:2465
+#: library/stdtypes.rst:3681 library/stdtypes.rst:3688
 msgid "\\(5)"
 msgstr "\\(5)"
 
@@ -784,8 +784,8 @@ msgstr "``x | y``"
 msgid "bitwise :dfn:`or` of *x* and *y*"
 msgstr "bit düzeyinde *x* :dfn:`or` *y*"
 
-#: library/stdtypes.rst:421 library/stdtypes.rst:1216 library/stdtypes.rst:2449
-#: library/stdtypes.rst:3668
+#: library/stdtypes.rst:421 library/stdtypes.rst:1216 library/stdtypes.rst:2455
+#: library/stdtypes.rst:3674
 msgid "\\(4)"
 msgstr "\\(4)"
 
@@ -1550,9 +1550,9 @@ msgstr "Oluşturucu Tipleri"
 #, fuzzy
 msgid ""
 "Python's :term:`generator`\\s provide a convenient way to implement the "
-"iterator protocol.  If a container object's :meth:`~iterator.__iter__` "
-"method is implemented as a generator, it will automatically return an "
-"iterator object (technically, a generator object) supplying the :meth:`!"
+"iterator protocol.  If a container object's :meth:`~object.__iter__` method "
+"is implemented as a generator, it will automatically return an iterator "
+"object (technically, a generator object) supplying the :meth:`~iterator."
 "__iter__` and :meth:`~generator.__next__` methods. More information about "
 "generators can be found in :ref:`the documentation for the yield expression "
 "<yieldexpr>`."
@@ -1729,7 +1729,7 @@ msgstr ""
 "*x* 'in *s* içindeki ilk görüldüğü dizini (*i* dizininde veya sonrasında ve "
 "*j* dizininden önce)"
 
-#: library/stdtypes.rst:3650
+#: library/stdtypes.rst:3656
 msgid "\\(8)"
 msgstr "\\(8)"
 
@@ -2925,7 +2925,7 @@ msgstr ""
 msgid "Return the string encoded to :class:`bytes`."
 msgstr ""
 
-#: library/stdtypes.rst:2815
+#: library/stdtypes.rst:2821
 msgid ""
 "*encoding* defaults to ``'utf-8'``; see :ref:`standard-encodings` for "
 "possible values."
@@ -2953,11 +2953,11 @@ msgid ""
 "ref:`debug build <debug-build>` is used."
 msgstr ""
 
-#: library/stdtypes.rst:2834
+#: library/stdtypes.rst:2840
 msgid "Added support for keyword arguments."
 msgstr ""
 
-#: library/stdtypes.rst:2837
+#: library/stdtypes.rst:2843
 msgid ""
 "The value of the *errors* argument is now checked in :ref:`devmode` and in :"
 "ref:`debug mode <debug-build>`."
@@ -3226,25 +3226,32 @@ msgstr ""
 "Numeric_Type=Numeric özellik değerine sahip karakterlerdir."
 
 #: library/stdtypes.rst:1879
+#, fuzzy
+msgid ""
+"Return true if all characters in the string are printable, false if it "
+"contains at least one non-printable character."
+msgstr ""
+"Dizedeki tüm büyük harfli karakterler [4]_ küçük harfli ise ve en az bir "
+"büyük harfli karakter varsa ``True``, aksi takdirde ``False`` döndürür."
+
+#: library/stdtypes.rst:1882
+msgid ""
+"Here \"printable\" means the character is suitable for :func:`repr` to use "
+"in its output; \"non-printable\" means that :func:`repr` on built-in types "
+"will hex-escape the character.  It has no bearing on the handling of strings "
+"written to :data:`sys.stdout` or :data:`sys.stderr`."
+msgstr ""
+
+#: library/stdtypes.rst:1887
 msgid ""
-"Return ``True`` if all characters in the string are printable or the string "
-"is empty, ``False`` otherwise.  Nonprintable characters are those characters "
-"defined in the Unicode character database as \"Other\" or \"Separator\", "
-"excepting the ASCII space (0x20) which is considered printable.  (Note that "
-"printable characters in this context are those which should not be escaped "
-"when :func:`repr` is invoked on a string.  It has no bearing on the handling "
-"of strings written to :data:`sys.stdout` or :data:`sys.stderr`.)"
-msgstr ""
-"Dizedeki tüm karakterler yazdırılabilirse veya dize boşsa ``True``, aksi "
-"takdirde ``False`` döndürür.  Yazdırılamayan karakterler, yazdırılabilir "
-"olarak kabul edilen ASCII boşluğu (0x20) dışında, Unicode karakter "
-"veritabanında \"Diğer\" veya \"Ayırıcı\" olarak tanımlanan karakterlerdir.  "
-"(Bu bağlamda, yazdırılabilir karakterlerin :func:`repr` bir dize üzerinde "
-"çağrıldığında kaçılmaması gereken karakterler olduğunu unutmayın.  Bunun :"
-"data:`sys.stdout` veya :data:`sys.stderr` dosyalarına yazılan dizelerin "
-"işlenmesiyle bir ilgisi yoktur)"
-
-#: library/stdtypes.rst:1890
+"The printable characters are those which in the Unicode character database "
+"(see :mod:`unicodedata`) have a general category in group Letter, Mark, "
+"Number, Punctuation, or Symbol (L, M, N, P, or S); plus the ASCII space "
+"0x20. Nonprintable characters are those in group Separator or Other (Z or "
+"C), except the ASCII space."
+msgstr ""
+
+#: library/stdtypes.rst:1896
 msgid ""
 "Return ``True`` if there are only whitespace characters in the string and "
 "there is at least one character, ``False`` otherwise."
@@ -3252,7 +3259,7 @@ msgstr ""
 "Dizede yalnızca boşluk karakterleri varsa ve en az bir karakter varsa "
 "``True``, aksi takdirde ``False`` döndürür."
 
-#: library/stdtypes.rst:1893
+#: library/stdtypes.rst:1899
 msgid ""
 "A character is *whitespace* if in the Unicode character database (see :mod:"
 "`unicodedata`), either its general category is ``Zs`` (\"Separator, "
@@ -3262,7 +3269,7 @@ msgstr ""
 "sınıfı ``WS``, ``B`` veya ``S``’den biri ise Unicode karakter veritabanında "
 "(bkz. :mod:`unicodedata`) *beyaz boşluk karakteri*’dir."
 
-#: library/stdtypes.rst:1901
+#: library/stdtypes.rst:1907
 msgid ""
 "Return ``True`` if the string is a titlecased string and there is at least "
 "one character, for example uppercase characters may only follow uncased "
@@ -3274,7 +3281,7 @@ msgstr ""
 "karakterleri ve küçük harfli karakterler sadece büyük harfli karakterleri "
 "takip edebilir.  Aksi takdirde ``False`` döndürür."
 
-#: library/stdtypes.rst:1908
+#: library/stdtypes.rst:1914
 msgid ""
 "Return ``True`` if all cased characters [4]_ in the string are uppercase and "
 "there is at least one cased character, ``False`` otherwise."
@@ -3282,7 +3289,7 @@ msgstr ""
 "Dizedeki tüm karakterler [4]_ büyük harfli ise ve en az bir büyük harfli "
 "karakter varsa ``True``, aksi takdirde ``False`` döndürür."
 
-#: library/stdtypes.rst:1926
+#: library/stdtypes.rst:1932
 msgid ""
 "Return a string which is the concatenation of the strings in *iterable*. A :"
 "exc:`TypeError` will be raised if there are any non-string values in "
@@ -3294,7 +3301,7 @@ msgstr ""
 "olmayan değerler varsa bir :exc:`TypeError` oluşacaktır.  Öğeler arasındaki "
 "ayırıcı, bu yöntemi sağlayan dizedir."
 
-#: library/stdtypes.rst:1934
+#: library/stdtypes.rst:1940
 msgid ""
 "Return the string left justified in a string of length *width*. Padding is "
 "done using the specified *fillchar* (default is an ASCII space). The "
@@ -3305,7 +3312,7 @@ msgstr ""
 "boşluğudur). *width*, ``len(s)`` değerinden küçük veya ona eşitse orijinal "
 "dize döndürülür."
 
-#: library/stdtypes.rst:1941
+#: library/stdtypes.rst:1947
 msgid ""
 "Return a copy of the string with all the cased characters [4]_ converted to "
 "lowercase."
@@ -3313,7 +3320,7 @@ msgstr ""
 "Dizenin tüm büyük harfli karakterlerini [4]_ küçük harfe dönüştürerek bir "
 "kopyasını döndürür."
 
-#: library/stdtypes.rst:1944
+#: library/stdtypes.rst:1950
 #, fuzzy
 msgid ""
 "The lowercasing algorithm used is `described in section 3.13 'Default Case "
@@ -3322,7 +3329,7 @@ msgid ""
 msgstr ""
 "Harf küçültme algoritması, Unicode Standardının 3.13 bölümünde açıklanmıştır."
 
-#: library/stdtypes.rst:1951
+#: library/stdtypes.rst:1957
 msgid ""
 "Return a copy of the string with leading characters removed.  The *chars* "
 "argument is a string specifying the set of characters to be removed.  If "
@@ -3336,7 +3343,7 @@ msgstr ""
 "boşlukları kaldırır.  *chars* bağımsız değişkeni bir ön ek değildir; bunun "
 "yerine, değerlerinin tüm kombinasyonları çıkarılır::"
 
-#: library/stdtypes.rst:1956
+#: library/stdtypes.rst:1962
 msgid ""
 ">>> '   spacious   '.lstrip()\n"
 "'spacious   '\n"
@@ -3344,7 +3351,7 @@ msgid ""
 "'example.com'"
 msgstr ""
 
-#: library/stdtypes.rst:1961
+#: library/stdtypes.rst:1967
 msgid ""
 "See :meth:`str.removeprefix` for a method that will remove a single prefix "
 "string rather than all of a set of characters.  For example::"
@@ -3353,7 +3360,7 @@ msgstr ""
 "kaldıracak bir yöntem için :meth:`str.removeprefix` bölümüne bakın.  "
 "Örneğin::"
 
-#: library/stdtypes.rst:1964
+#: library/stdtypes.rst:1970
 msgid ""
 ">>> 'Arthur: three!'.lstrip('Arthur: ')\n"
 "'ee!'\n"
@@ -3361,7 +3368,7 @@ msgid ""
 "'three!'"
 msgstr ""
 
-#: library/stdtypes.rst:1972
+#: library/stdtypes.rst:1978
 msgid ""
 "This static method returns a translation table usable for :meth:`str."
 "translate`."
@@ -3369,7 +3376,7 @@ msgstr ""
 "Bu statik yöntem :meth:`str.translate` için kullanılabilecek bir çeviri "
 "tablosu döndürür."
 
-#: library/stdtypes.rst:1974
+#: library/stdtypes.rst:1980
 msgid ""
 "If there is only one argument, it must be a dictionary mapping Unicode "
 "ordinals (integers) or characters (strings of length 1) to Unicode ordinals, "
@@ -3382,7 +3389,7 @@ msgstr ""
 "sözlük olmalıdır.  Karakter anahtarları daha sonra sıradanlara "
 "dönüştürülecektir."
 
-#: library/stdtypes.rst:1979
+#: library/stdtypes.rst:1985
 msgid ""
 "If there are two arguments, they must be strings of equal length, and in the "
 "resulting dictionary, each character in x will be mapped to the character at "
@@ -3394,7 +3401,7 @@ msgstr ""
 "eşlenecektir. Üçüncü bir bağımsız değişken varsa, karakterleri sonuçta "
 "``None`` ile eşlenecek bir dizge olmalıdır."
 
-#: library/stdtypes.rst:1987
+#: library/stdtypes.rst:1993
 msgid ""
 "Split the string at the first occurrence of *sep*, and return a 3-tuple "
 "containing the part before the separator, the separator itself, and the part "
@@ -3406,7 +3413,7 @@ msgstr ""
 "Ayırıcı bulunamazsa, dizenin kendisini ve ardından iki boş dizeyi içeren bir "
 "3'lü döndürür."
 
-#: library/stdtypes.rst:1995
+#: library/stdtypes.rst:2001
 msgid ""
 "If the string starts with the *prefix* string, return "
 "``string[len(prefix):]``. Otherwise, return a copy of the original string::"
@@ -3414,7 +3421,7 @@ msgstr ""
 "Eğer dize *prefix* dizesi ile başlıyorsa, ``dize[len(prefix):]`` döndürür. "
 "Aksi takdirde, orijinal dizgenin bir kopyasını döndürür::"
 
-#: library/stdtypes.rst:1999
+#: library/stdtypes.rst:2005
 msgid ""
 ">>> 'TestHook'.removeprefix('Test')\n"
 "'Hook'\n"
@@ -3422,7 +3429,7 @@ msgid ""
 "'BaseTestCase'"
 msgstr ""
 
-#: library/stdtypes.rst:2009
+#: library/stdtypes.rst:2015
 msgid ""
 "If the string ends with the *suffix* string and that *suffix* is not empty, "
 "return ``string[:-len(suffix)]``. Otherwise, return a copy of the original "
@@ -3432,7 +3439,7 @@ msgstr ""
 "``dize[:-len(suffix)]`` döndürür. Aksi takdirde, orijinal dizenin bir "
 "kopyasını döndürür::"
 
-#: library/stdtypes.rst:2013
+#: library/stdtypes.rst:2019
 msgid ""
 ">>> 'MiscTests'.removesuffix('Tests')\n"
 "'Misc'\n"
@@ -3440,7 +3447,7 @@ msgid ""
 "'TmpDirMixin'"
 msgstr ""
 
-#: library/stdtypes.rst:2023
+#: library/stdtypes.rst:2029
 msgid ""
 "Return a copy of the string with all occurrences of substring *old* replaced "
 "by *new*.  If the optional argument *count* is given, only the first *count* "
@@ -3450,7 +3457,7 @@ msgstr ""
 "kopyasını döndürür.  İsteğe bağlı olarak *count* bağımsız değişkeni "
 "verilirse, yalnızca ilk *count* oluşumu değiştirilir."
 
-#: library/stdtypes.rst:2030
+#: library/stdtypes.rst:2036
 msgid ""
 "Return the highest index in the string where substring *sub* is found, such "
 "that *sub* is contained within ``s[start:end]``.  Optional arguments *start* "
@@ -3461,7 +3468,7 @@ msgstr ""
 "*end* dilim gösterimindeki gibi yorumlanır.  Başarısızlık durumunda ``-1`` "
 "döndürür."
 
-#: library/stdtypes.rst:2037
+#: library/stdtypes.rst:2043
 msgid ""
 "Like :meth:`rfind` but raises :exc:`ValueError` when the substring *sub* is "
 "not found."
@@ -3469,7 +3476,7 @@ msgstr ""
 ":meth:`rfind` gibi, ancak *sub* alt dizesi bulunamadığında :exc:`ValueError` "
 "yükseltir."
 
-#: library/stdtypes.rst:2043
+#: library/stdtypes.rst:2049
 msgid ""
 "Return the string right justified in a string of length *width*. Padding is "
 "done using the specified *fillchar* (default is an ASCII space). The "
@@ -3480,7 +3487,7 @@ msgstr ""
 "boşluğudur). *width*, ``len(s)`` değerinden küçük veya ona eşitse orijinal "
 "dize döndürülür."
 
-#: library/stdtypes.rst:2050
+#: library/stdtypes.rst:2056
 msgid ""
 "Split the string at the last occurrence of *sep*, and return a 3-tuple "
 "containing the part before the separator, the separator itself, and the part "
@@ -3492,7 +3499,7 @@ msgstr ""
 "Ayırıcı bulunamazsa, dizenin kendisini ve ardından iki boş dizeyi içeren bir "
 "3'lü döndürür."
 
-#: library/stdtypes.rst:2058
+#: library/stdtypes.rst:2064
 msgid ""
 "Return a list of the words in the string, using *sep* as the delimiter "
 "string. If *maxsplit* is given, at most *maxsplit* splits are done, the "
@@ -3506,7 +3513,7 @@ msgstr ""
 "herhangi bir boşluk dizesi ayırıcıdır.  Sağdan bölme dışında, :meth:`rsplit` "
 "aşağıda ayrıntılı olarak açıklanan :meth:`split` gibi davranır."
 
-#: library/stdtypes.rst:2067
+#: library/stdtypes.rst:2073
 msgid ""
 "Return a copy of the string with trailing characters removed.  The *chars* "
 "argument is a string specifying the set of characters to be removed.  If "
@@ -3520,7 +3527,7 @@ msgstr ""
 "boşlukları kaldırır.  *chars* bağımsız değişkeni bir ön ek değildir; bunun "
 "yerine, değerlerinin tüm kombinasyonları çıkarılır::"
 
-#: library/stdtypes.rst:2072
+#: library/stdtypes.rst:2078
 msgid ""
 ">>> '   spacious   '.rstrip()\n"
 "'   spacious'\n"
@@ -3528,7 +3535,7 @@ msgid ""
 "'mississ'"
 msgstr ""
 
-#: library/stdtypes.rst:2077
+#: library/stdtypes.rst:2083
 msgid ""
 "See :meth:`str.removesuffix` for a method that will remove a single suffix "
 "string rather than all of a set of characters.  For example::"
@@ -3537,7 +3544,7 @@ msgstr ""
 "kaldıracak bir yöntem için :meth:`str.removeprefix` bölümüne bakın.  "
 "Örneğin::"
 
-#: library/stdtypes.rst:2080
+#: library/stdtypes.rst:2086
 msgid ""
 ">>> 'Monty Python'.rstrip(' Python')\n"
 "'M'\n"
@@ -3545,7 +3552,7 @@ msgid ""
 "'Monty'"
 msgstr ""
 
-#: library/stdtypes.rst:2087
+#: library/stdtypes.rst:2093
 msgid ""
 "Return a list of the words in the string, using *sep* as the delimiter "
 "string.  If *maxsplit* is given, at most *maxsplit* splits are done (thus, "
@@ -3559,7 +3566,7 @@ msgstr ""
 "Eğer *maxsplit* belirtilmemişse veya ``-1`` ise, bölme sayısında bir "
 "sınırlama yoktur (tüm olası bölmeler yapılır)."
 
-#: library/stdtypes.rst:2093
+#: library/stdtypes.rst:2099
 #, fuzzy
 msgid ""
 "If *sep* is given, consecutive delimiters are not grouped together and are "
@@ -3575,15 +3582,15 @@ msgstr ""
 "(örneğin, ``'1<>2<>3'.split('<>')``, ``['1', '2', '3']`` döndürür). Boş bir "
 "dizeyi belirtilen bir ayırıcıyla bölmek ``['']`` döndürür."
 
-#: library/stdtypes.rst:2118 library/stdtypes.rst:2238
-#: library/stdtypes.rst:3152 library/stdtypes.rst:3261
-#: library/stdtypes.rst:3302 library/stdtypes.rst:3344
-#: library/stdtypes.rst:3376 library/stdtypes.rst:3426
-#: library/stdtypes.rst:3495 library/stdtypes.rst:3519
+#: library/stdtypes.rst:2124 library/stdtypes.rst:2244
+#: library/stdtypes.rst:3158 library/stdtypes.rst:3267
+#: library/stdtypes.rst:3308 library/stdtypes.rst:3350
+#: library/stdtypes.rst:3382 library/stdtypes.rst:3432
+#: library/stdtypes.rst:3501 library/stdtypes.rst:3525
 msgid "For example::"
 msgstr "Örneğin: ::"
 
-#: library/stdtypes.rst:2102
+#: library/stdtypes.rst:2108
 msgid ""
 ">>> '1,2,3'.split(',')\n"
 "['1', '2', '3']\n"
@@ -3595,7 +3602,7 @@ msgid ""
 "['1', '2', '3<4']"
 msgstr ""
 
-#: library/stdtypes.rst:2111
+#: library/stdtypes.rst:2117
 msgid ""
 "If *sep* is not specified or is ``None``, a different splitting algorithm is "
 "applied: runs of consecutive whitespace are regarded as a single separator, "
@@ -3610,7 +3617,7 @@ msgstr ""
 "dizeler olmaz. Dolayısıyla, boş bir dizeyi veya sadece beyaz boşluktan "
 "oluşan bir dizeyi ``None`` ayırıcısıyla bölmek ``[]`` döndürür."
 
-#: library/stdtypes.rst:2120
+#: library/stdtypes.rst:2126
 msgid ""
 ">>> '1 2 3'.split()\n"
 "['1', '2', '3']\n"
@@ -3620,7 +3627,7 @@ msgid ""
 "['1', '2', '3']"
 msgstr ""
 
-#: library/stdtypes.rst:2133
+#: library/stdtypes.rst:2139
 msgid ""
 "Return a list of the lines in the string, breaking at line boundaries.  Line "
 "breaks are not included in the resulting list unless *keepends* is given and "
@@ -3630,7 +3637,7 @@ msgstr ""
 "Satır sonları için *keepends* belirtilmediği ve true değerinde olmadığı "
 "sürece, satır sonları sonuç listesine dahil edilmez."
 
-#: library/stdtypes.rst:2137
+#: library/stdtypes.rst:2143
 msgid ""
 "This method splits on the following line boundaries.  In particular, the "
 "boundaries are a superset of :term:`universal newlines`."
@@ -3638,107 +3645,107 @@ msgstr ""
 "Bu yöntem aşağıdaki satır sınırlarında bölme yapar.  Spesifik olarak, "
 "sınırlar :term:`universal newlines` 'ın bir üst kümesidir."
 
-#: library/stdtypes.rst:2141
+#: library/stdtypes.rst:2147
 msgid "Representation"
 msgstr "Temsil"
 
-#: library/stdtypes.rst:2141
+#: library/stdtypes.rst:2147
 msgid "Description"
 msgstr "Açıklama"
 
-#: library/stdtypes.rst:2143
+#: library/stdtypes.rst:2149
 msgid "``\\n``"
 msgstr "``\\n``"
 
-#: library/stdtypes.rst:2143
+#: library/stdtypes.rst:2149
 msgid "Line Feed"
 msgstr "Satır Atlama"
 
-#: library/stdtypes.rst:2145
+#: library/stdtypes.rst:2151
 msgid "``\\r``"
 msgstr "``\\r``"
 
-#: library/stdtypes.rst:2145
+#: library/stdtypes.rst:2151
 msgid "Carriage Return"
 msgstr "Satır Başına Alma"
 
-#: library/stdtypes.rst:2147
+#: library/stdtypes.rst:2153
 msgid "``\\r\\n``"
 msgstr "``\\r\\n``"
 
-#: library/stdtypes.rst:2147
+#: library/stdtypes.rst:2153
 msgid "Carriage Return + Line Feed"
 msgstr "Satır Başına Alma + Satır Atlama"
 
-#: library/stdtypes.rst:2149
+#: library/stdtypes.rst:2155
 msgid "``\\v`` or ``\\x0b``"
 msgstr "``\\v`` or ``\\x0b``"
 
-#: library/stdtypes.rst:2149
+#: library/stdtypes.rst:2155
 msgid "Line Tabulation"
 msgstr "Satır Tablolama"
 
-#: library/stdtypes.rst:2151
+#: library/stdtypes.rst:2157
 msgid "``\\f`` or ``\\x0c``"
 msgstr "``\\f`` or ``\\x0c``"
 
-#: library/stdtypes.rst:2151
+#: library/stdtypes.rst:2157
 msgid "Form Feed"
 msgstr "Form Besleme"
 
-#: library/stdtypes.rst:2153
+#: library/stdtypes.rst:2159
 msgid "``\\x1c``"
 msgstr "``\\x1c``"
 
-#: library/stdtypes.rst:2153
+#: library/stdtypes.rst:2159
 msgid "File Separator"
 msgstr "Dosya Ayırıcı"
 
-#: library/stdtypes.rst:2155
+#: library/stdtypes.rst:2161
 msgid "``\\x1d``"
 msgstr "``\\x1d``"
 
-#: library/stdtypes.rst:2155
+#: library/stdtypes.rst:2161
 msgid "Group Separator"
 msgstr "Grup Ayırıcı"
 
-#: library/stdtypes.rst:2157
+#: library/stdtypes.rst:2163
 msgid "``\\x1e``"
 msgstr "``\\x1e``"
 
-#: library/stdtypes.rst:2157
+#: library/stdtypes.rst:2163
 msgid "Record Separator"
 msgstr "Kayıt Ayırıcı"
 
-#: library/stdtypes.rst:2159
+#: library/stdtypes.rst:2165
 msgid "``\\x85``"
 msgstr "``\\x85``"
 
-#: library/stdtypes.rst:2159
+#: library/stdtypes.rst:2165
 msgid "Next Line (C1 Control Code)"
 msgstr "Yeni Satır (C1 Denetim Kodu)"
 
-#: library/stdtypes.rst:2161
+#: library/stdtypes.rst:2167
 msgid "``\\u2028``"
 msgstr "``\\u2028``"
 
-#: library/stdtypes.rst:2161
+#: library/stdtypes.rst:2167
 msgid "Line Separator"
 msgstr "Satır Ayrıcı"
 
-#: library/stdtypes.rst:2163
+#: library/stdtypes.rst:2169
 msgid "``\\u2029``"
 msgstr "``\\u2029``"
 
-#: library/stdtypes.rst:2163
+#: library/stdtypes.rst:2169
 msgid "Paragraph Separator"
 msgstr "Paragraf Ayırıcı"
 
-#: library/stdtypes.rst:2168
+#: library/stdtypes.rst:2174
 msgid "``\\v`` and ``\\f`` added to list of line boundaries."
 msgstr "``\\v`` ve ``\\f`` satır sınırlarına eklenir."
 
-#: library/stdtypes.rst:2172
+#: library/stdtypes.rst:2178
 msgid ""
 ">>> 'ab c\\n\\nde fg\\rkl\\r\\n'.splitlines()\n"
 "['ab c', '', 'de fg', 'kl']\n"
@@ -3746,7 +3753,7 @@ msgid ""
 "['ab c\\n', '\\n', 'de fg\\r', 'kl\\r\\n']"
 msgstr ""
 
-#: library/stdtypes.rst:2177
+#: library/stdtypes.rst:2183
 msgid ""
 "Unlike :meth:`~str.split` when a delimiter string *sep* is given, this "
 "method returns an empty list for the empty string, and a terminal line break "
@@ -3756,7 +3763,7 @@ msgstr ""
 "farklı olarak, bu yöntem boş dize için boş bir liste döndürür ve bir "
 "terminal satır sonu fazladan bir satır ile sonuçlanmaz::"
 
-#: library/stdtypes.rst:2181
+#: library/stdtypes.rst:2187
 msgid ""
 ">>> \"\".splitlines()\n"
 "[]\n"
@@ -3764,11 +3771,11 @@ msgid ""
 "['One line']"
 msgstr ""
 
-#: library/stdtypes.rst:2186
+#: library/stdtypes.rst:2192
 msgid "For comparison, ``split('\\n')`` gives::"
 msgstr "Kıyaslayacak olursak ``split(‘\\n’)`` şu değeri verir::"
 
-#: library/stdtypes.rst:2188
+#: library/stdtypes.rst:2194
 msgid ""
 ">>> ''.split('\\n')\n"
 "['']\n"
@@ -3776,7 +3783,7 @@ msgid ""
 "['Two lines', '']"
 msgstr ""
 
-#: library/stdtypes.rst:2196
+#: library/stdtypes.rst:2202
 msgid ""
 "Return ``True`` if string starts with the *prefix*, otherwise return "
 "``False``. *prefix* can also be a tuple of prefixes to look for.  With "
@@ -3788,7 +3795,7 @@ msgstr ""
 "İsteğe bağlı *start* ile, o konumdan başlayan dizeyi sınar.  İsteğe bağlı "
 "*end* ile, dizeyi o konumda karşılaştırmayı durdurur."
 
-#: library/stdtypes.rst:2204
+#: library/stdtypes.rst:2210
 msgid ""
 "Return a copy of the string with the leading and trailing characters "
 "removed. The *chars* argument is a string specifying the set of characters "
@@ -3803,7 +3810,7 @@ msgstr ""
 "veya son ek değildir; bunun yerine, değerlerinin tüm kombinasyonları "
 "çıkarılır::"
 
-#: library/stdtypes.rst:2210
+#: library/stdtypes.rst:2216
 msgid ""
 ">>> '   spacious   '.strip()\n"
 "'spacious'\n"
@@ -3811,7 +3818,7 @@ msgid ""
 "'example'"
 msgstr ""
 
-#: library/stdtypes.rst:2215
+#: library/stdtypes.rst:2221
 msgid ""
 "The outermost leading and trailing *chars* argument values are stripped from "
 "the string. Characters are removed from the leading end until reaching a "
@@ -3823,14 +3830,14 @@ msgstr ""
 "karakterine ulaşılana kadar önde gelen uçtan çıkarılır. Benzer bir işlem son "
 "uçta da gerçekleşir. Örneğin::"
 
-#: library/stdtypes.rst:2221
+#: library/stdtypes.rst:2227
 msgid ""
 ">>> comment_string = '#....... Section 3.2.1 Issue #32 .......'\n"
 ">>> comment_string.strip('.#! ')\n"
 "'Section 3.2.1 Issue #32'"
 msgstr ""
 
-#: library/stdtypes.rst:2228
+#: library/stdtypes.rst:2234
 msgid ""
 "Return a copy of the string with uppercase characters converted to lowercase "
 "and vice versa. Note that it is not necessarily true that ``s.swapcase()."
@@ -3840,7 +3847,7 @@ msgstr ""
 "dizenin bir kopyasını döndürür. ``s.swapcase().swapcase() == s`` ifadesinin "
 "mutlaka doğru olması gerekmediğine dikkat edin."
 
-#: library/stdtypes.rst:2235
+#: library/stdtypes.rst:2241
 msgid ""
 "Return a titlecased version of the string where words start with an "
 "uppercase character and the remaining characters are lowercase."
@@ -3848,13 +3855,13 @@ msgstr ""
 "Sözcüklerin büyük harfle başladığı ve kalan karakterlerin küçük harf olduğu "
 "dizenin başlıklandırılmış bir sürümünü döndürür."
 
-#: library/stdtypes.rst:2240
+#: library/stdtypes.rst:2246
 msgid ""
 ">>> 'Hello world'.title()\n"
 "'Hello World'"
 msgstr ""
 
-#: library/stdtypes.rst:3463
+#: library/stdtypes.rst:3469
 msgid ""
 "The algorithm uses a simple language-independent definition of a word as "
 "groups of consecutive letters.  The definition works in many contexts but it "
@@ -3866,19 +3873,19 @@ msgstr ""
 "kısaltmalar ve iyeliklerdeki kesme işaretlerinin kelime sınırları "
 "oluşturduğu anlamına gelir ve bu istenen sonuç olmayabilir::"
 
-#: library/stdtypes.rst:2248
+#: library/stdtypes.rst:2254
 msgid ""
 ">>> \"they're bill's friends from the UK\".title()\n"
 "\"They'Re Bill'S Friends From The Uk\""
 msgstr ""
 
-#: library/stdtypes.rst:2251
+#: library/stdtypes.rst:2257
 msgid ""
 "The :func:`string.capwords` function does not have this problem, as it "
 "splits words on spaces only."
 msgstr ""
 
-#: library/stdtypes.rst:2254
+#: library/stdtypes.rst:2260
 #, fuzzy
 msgid ""
 "Alternatively, a workaround for apostrophes can be constructed using regular "
@@ -3887,7 +3894,7 @@ msgstr ""
 "Alternatif olarak, kesme işaretleri için geçici bir çözüm düzenli ifadeler "
 "kullanılarak oluşturulabilir::"
 
-#: library/stdtypes.rst:2257
+#: library/stdtypes.rst:2263
 msgid ""
 ">>> import re\n"
 ">>> def titlecase(s):\n"
@@ -3899,7 +3906,7 @@ msgid ""
 "\"They're Bill's Friends.\""
 msgstr ""
 
-#: library/stdtypes.rst:2269
+#: library/stdtypes.rst:2275
 #, fuzzy
 msgid ""
 "Return a copy of the string in which each character has been mapped through "
@@ -3921,19 +3928,19 @@ msgstr ""
 "veya karakteri kendisiyle eşlemek için bir :exc:`LookupError` istisnası "
 "oluşturmak."
 
-#: library/stdtypes.rst:2278
+#: library/stdtypes.rst:2284
 msgid ""
 "You can use :meth:`str.maketrans` to create a translation map from character-"
 "to-character mappings in different formats."
 msgstr ""
 
-#: library/stdtypes.rst:2281
+#: library/stdtypes.rst:2287
 msgid ""
 "See also the :mod:`codecs` module for a more flexible approach to custom "
 "character mappings."
 msgstr ""
 
-#: library/stdtypes.rst:2287
+#: library/stdtypes.rst:2293
 msgid ""
 "Return a copy of the string with all the cased characters [4]_ converted to "
 "uppercase.  Note that ``s.upper().isupper()`` might be ``False`` if ``s`` "
@@ -3942,7 +3949,7 @@ msgid ""
 "titlecase)."
 msgstr ""
 
-#: library/stdtypes.rst:2293
+#: library/stdtypes.rst:2299
 #, fuzzy
 msgid ""
 "The uppercasing algorithm used is `described in section 3.13 'Default Case "
@@ -3951,7 +3958,7 @@ msgid ""
 msgstr ""
 "Harf büyütme algoritması, Unicode Standardının 3.13 bölümünde açıklanmıştır."
 
-#: library/stdtypes.rst:2300
+#: library/stdtypes.rst:2306
 msgid ""
 "Return a copy of the string left filled with ASCII ``'0'`` digits to make a "
 "string of length *width*. A leading sign prefix (``'+'``/``'-'``) is handled "
@@ -3959,7 +3966,7 @@ msgid ""
 "original string is returned if *width* is less than or equal to ``len(s)``."
 msgstr ""
 
-#: library/stdtypes.rst:2308
+#: library/stdtypes.rst:2314
 msgid ""
 ">>> \"42\".zfill(5)\n"
 "'00042'\n"
@@ -3967,11 +3974,11 @@ msgid ""
 "'-0042'"
 msgstr ""
 
-#: library/stdtypes.rst:2318
+#: library/stdtypes.rst:2324
 msgid "``printf``-style String Formatting"
 msgstr ""
 
-#: library/stdtypes.rst:2331
+#: library/stdtypes.rst:2337
 msgid ""
 "The formatting operations described here exhibit a variety of quirks that "
 "lead to a number of common errors (such as failing to display tuples and "
@@ -3982,7 +3989,7 @@ msgid ""
 "or extensibility."
 msgstr ""
 
-#: library/stdtypes.rst:2339
+#: library/stdtypes.rst:2345
 msgid ""
 "String objects have one unique built-in operation: the ``%`` operator "
 "(modulo). This is also known as the string *formatting* or *interpolation* "
@@ -3992,7 +3999,7 @@ msgid ""
 "in the C language."
 msgstr ""
 
-#: library/stdtypes.rst:2345
+#: library/stdtypes.rst:2351
 msgid ""
 "If *format* requires a single argument, *values* may be a single non-tuple "
 "object. [5]_  Otherwise, *values* must be a tuple with exactly the number of "
@@ -4000,36 +4007,36 @@ msgid ""
 "example, a dictionary)."
 msgstr ""
 
-#: library/stdtypes.rst:3574
+#: library/stdtypes.rst:3580
 msgid ""
 "A conversion specifier contains two or more characters and has the following "
 "components, which must occur in this order:"
 msgstr ""
 
-#: library/stdtypes.rst:3577
+#: library/stdtypes.rst:3583
 msgid "The ``'%'`` character, which marks the start of the specifier."
 msgstr ""
 
-#: library/stdtypes.rst:3579
+#: library/stdtypes.rst:3585
 msgid ""
 "Mapping key (optional), consisting of a parenthesised sequence of characters "
 "(for example, ``(somename)``)."
 msgstr ""
 
-#: library/stdtypes.rst:3582
+#: library/stdtypes.rst:3588
 msgid ""
 "Conversion flags (optional), which affect the result of some conversion "
 "types."
 msgstr ""
 
-#: library/stdtypes.rst:3585
+#: library/stdtypes.rst:3591
 msgid ""
 "Minimum field width (optional).  If specified as an ``'*'`` (asterisk), the "
 "actual width is read from the next element of the tuple in *values*, and the "
 "object to convert comes after the minimum field width and optional precision."
 msgstr ""
 
-#: library/stdtypes.rst:3589
+#: library/stdtypes.rst:3595
 msgid ""
 "Precision (optional), given as a ``'.'`` (dot) followed by the precision.  "
 "If specified as ``'*'`` (an asterisk), the actual precision is read from the "
@@ -4037,15 +4044,15 @@ msgid ""
 "the precision."
 msgstr ""
 
-#: library/stdtypes.rst:3594
+#: library/stdtypes.rst:3600
 msgid "Length modifier (optional)."
 msgstr ""
 
-#: library/stdtypes.rst:3596
+#: library/stdtypes.rst:3602
 msgid "Conversion type."
 msgstr ""
 
-#: library/stdtypes.rst:2379
+#: library/stdtypes.rst:2385
 msgid ""
 "When the right argument is a dictionary (or other mapping type), then the "
 "formats in the string *must* include a parenthesised mapping key into that "
@@ -4053,277 +4060,277 @@ msgid ""
 "selects the value to be formatted from the mapping.  For example:"
 msgstr ""
 
-#: library/stdtypes.rst:3607
+#: library/stdtypes.rst:3613
 msgid ""
 "In this case no ``*`` specifiers may occur in a format (since they require a "
 "sequential parameter list)."
 msgstr ""
 
-#: library/stdtypes.rst:3610
+#: library/stdtypes.rst:3616
 msgid "The conversion flag characters are:"
 msgstr ""
 
-#: library/stdtypes.rst:3619
+#: library/stdtypes.rst:3625
 msgid "Flag"
 msgstr ""
 
-#: library/stdtypes.rst:3621
+#: library/stdtypes.rst:3627
 msgid "``'#'``"
 msgstr ""
 
-#: library/stdtypes.rst:3621
+#: library/stdtypes.rst:3627
 msgid ""
 "The value conversion will use the \"alternate form\" (where defined below)."
 msgstr ""
 
-#: library/stdtypes.rst:3624
+#: library/stdtypes.rst:3630
 msgid "``'0'``"
 msgstr ""
 
-#: library/stdtypes.rst:3624
+#: library/stdtypes.rst:3630
 msgid "The conversion will be zero padded for numeric values."
 msgstr ""
 
-#: library/stdtypes.rst:3626
+#: library/stdtypes.rst:3632
 msgid "``'-'``"
 msgstr ""
 
-#: library/stdtypes.rst:3626
+#: library/stdtypes.rst:3632
 msgid ""
 "The converted value is left adjusted (overrides the ``'0'`` conversion if "
 "both are given)."
 msgstr ""
 
-#: library/stdtypes.rst:3629
+#: library/stdtypes.rst:3635
 msgid "``' '``"
 msgstr ""
 
-#: library/stdtypes.rst:3629
+#: library/stdtypes.rst:3635
 msgid ""
 "(a space) A blank should be left before a positive number (or empty string) "
 "produced by a signed conversion."
 msgstr ""
 
-#: library/stdtypes.rst:3632
+#: library/stdtypes.rst:3638
 msgid "``'+'``"
 msgstr ""
 
-#: library/stdtypes.rst:3632
+#: library/stdtypes.rst:3638
 msgid ""
 "A sign character (``'+'`` or ``'-'``) will precede the conversion (overrides "
 "a \"space\" flag)."
 msgstr ""
 
-#: library/stdtypes.rst:3636
+#: library/stdtypes.rst:3642
 msgid ""
 "A length modifier (``h``, ``l``, or ``L``) may be present, but is ignored as "
 "it is not necessary for Python -- so e.g. ``%ld`` is identical to ``%d``."
 msgstr ""
 
-#: library/stdtypes.rst:3639
+#: library/stdtypes.rst:3645
 msgid "The conversion types are:"
 msgstr ""
 
-#: library/stdtypes.rst:3642
+#: library/stdtypes.rst:3648
 msgid "Conversion"
 msgstr ""
 
-#: library/stdtypes.rst:3644
+#: library/stdtypes.rst:3650
 msgid "``'d'``"
 msgstr ""
 
-#: library/stdtypes.rst:2427 library/stdtypes.rst:3646
+#: library/stdtypes.rst:2433 library/stdtypes.rst:3652
 msgid "Signed integer decimal."
 msgstr ""
 
-#: library/stdtypes.rst:3646
+#: library/stdtypes.rst:3652
 msgid "``'i'``"
 msgstr ""
 
-#: library/stdtypes.rst:3648
+#: library/stdtypes.rst:3654
 msgid "``'o'``"
 msgstr ""
 
-#: library/stdtypes.rst:3648
+#: library/stdtypes.rst:3654
 msgid "Signed octal value."
 msgstr ""
 
-#: library/stdtypes.rst:3650
+#: library/stdtypes.rst:3656
 msgid "``'u'``"
 msgstr ""
 
-#: library/stdtypes.rst:3650
+#: library/stdtypes.rst:3656
 msgid "Obsolete type -- it is identical to ``'d'``."
 msgstr ""
 
-#: library/stdtypes.rst:3652
+#: library/stdtypes.rst:3658
 msgid "``'x'``"
 msgstr ""
 
-#: library/stdtypes.rst:3652
+#: library/stdtypes.rst:3658
 msgid "Signed hexadecimal (lowercase)."
 msgstr ""
 
-#: library/stdtypes.rst:3654
+#: library/stdtypes.rst:3660
 msgid "``'X'``"
 msgstr ""
 
-#: library/stdtypes.rst:3654
+#: library/stdtypes.rst:3660
 msgid "Signed hexadecimal (uppercase)."
 msgstr ""
 
-#: library/stdtypes.rst:3656
+#: library/stdtypes.rst:3662
 msgid "``'e'``"
 msgstr ""
 
-#: library/stdtypes.rst:3656
+#: library/stdtypes.rst:3662
 msgid "Floating-point exponential format (lowercase)."
 msgstr ""
 
-#: library/stdtypes.rst:3658
+#: library/stdtypes.rst:3664
 msgid "``'E'``"
 msgstr ""
 
-#: library/stdtypes.rst:3658
+#: library/stdtypes.rst:3664
 msgid "Floating-point exponential format (uppercase)."
 msgstr ""
 
-#: library/stdtypes.rst:3660
+#: library/stdtypes.rst:3666
 msgid "``'f'``"
 msgstr ""
 
-#: library/stdtypes.rst:2443 library/stdtypes.rst:3662
+#: library/stdtypes.rst:2449 library/stdtypes.rst:3668
 msgid "Floating-point decimal format."
 msgstr ""
 
-#: library/stdtypes.rst:3662
+#: library/stdtypes.rst:3668
 msgid "``'F'``"
 msgstr ""
 
-#: library/stdtypes.rst:3664
+#: library/stdtypes.rst:3670
 msgid "``'g'``"
 msgstr ""
 
-#: library/stdtypes.rst:3664
+#: library/stdtypes.rst:3670
 msgid ""
 "Floating-point format. Uses lowercase exponential format if exponent is less "
 "than -4 or not less than precision, decimal format otherwise."
 msgstr ""
 
-#: library/stdtypes.rst:3668
+#: library/stdtypes.rst:3674
 msgid "``'G'``"
 msgstr ""
 
-#: library/stdtypes.rst:3668
+#: library/stdtypes.rst:3674
 msgid ""
 "Floating-point format. Uses uppercase exponential format if exponent is less "
 "than -4 or not less than precision, decimal format otherwise."
 msgstr ""
 
-#: library/stdtypes.rst:3672
+#: library/stdtypes.rst:3678
 msgid "``'c'``"
 msgstr ""
 
-#: library/stdtypes.rst:2453
+#: library/stdtypes.rst:2459
 msgid "Single character (accepts integer or single character string)."
 msgstr ""
 
-#: library/stdtypes.rst:3685
+#: library/stdtypes.rst:3691
 msgid "``'r'``"
 msgstr ""
 
-#: library/stdtypes.rst:2456
+#: library/stdtypes.rst:2462
 msgid "String (converts any Python object using :func:`repr`)."
 msgstr ""
 
-#: library/stdtypes.rst:3679
+#: library/stdtypes.rst:3685
 msgid "``'s'``"
 msgstr ""
 
-#: library/stdtypes.rst:2459
+#: library/stdtypes.rst:2465
 msgid "String (converts any Python object using :func:`str`)."
 msgstr ""
 
-#: library/stdtypes.rst:3682
+#: library/stdtypes.rst:3688
 msgid "``'a'``"
 msgstr ""
 
-#: library/stdtypes.rst:2462
+#: library/stdtypes.rst:2468
 msgid "String (converts any Python object using :func:`ascii`)."
 msgstr ""
 
-#: library/stdtypes.rst:3688
+#: library/stdtypes.rst:3694
 msgid "``'%'``"
 msgstr ""
 
-#: library/stdtypes.rst:3688
+#: library/stdtypes.rst:3694
 msgid "No argument is converted, results in a ``'%'`` character in the result."
 msgstr ""
 
-#: library/stdtypes.rst:3695
+#: library/stdtypes.rst:3701
 msgid ""
 "The alternate form causes a leading octal specifier (``'0o'``) to be "
 "inserted before the first digit."
 msgstr ""
 
-#: library/stdtypes.rst:3699
+#: library/stdtypes.rst:3705
 msgid ""
 "The alternate form causes a leading ``'0x'`` or ``'0X'`` (depending on "
 "whether the ``'x'`` or ``'X'`` format was used) to be inserted before the "
 "first digit."
 msgstr ""
 
-#: library/stdtypes.rst:3703
+#: library/stdtypes.rst:3709
 msgid ""
 "The alternate form causes the result to always contain a decimal point, even "
 "if no digits follow it."
 msgstr ""
 
-#: library/stdtypes.rst:3706
+#: library/stdtypes.rst:3712
 msgid ""
 "The precision determines the number of digits after the decimal point and "
 "defaults to 6."
 msgstr ""
 
-#: library/stdtypes.rst:3710
+#: library/stdtypes.rst:3716
 msgid ""
 "The alternate form causes the result to always contain a decimal point, and "
 "trailing zeroes are not removed as they would otherwise be."
 msgstr ""
 
-#: library/stdtypes.rst:3713
+#: library/stdtypes.rst:3719
 msgid ""
 "The precision determines the number of significant digits before and after "
 "the decimal point and defaults to 6."
 msgstr ""
 
-#: library/stdtypes.rst:3717
+#: library/stdtypes.rst:3723
 msgid "If precision is ``N``, the output is truncated to ``N`` characters."
 msgstr ""
 
-#: library/stdtypes.rst:3726
+#: library/stdtypes.rst:3732
 msgid "See :pep:`237`."
 msgstr ""
 
-#: library/stdtypes.rst:2499
+#: library/stdtypes.rst:2505
 msgid ""
 "Since Python strings have an explicit length, ``%s`` conversions do not "
 "assume that ``'\\0'`` is the end of the string."
 msgstr ""
 
-#: library/stdtypes.rst:2504
+#: library/stdtypes.rst:2510
 msgid ""
 "``%f`` conversions for numbers whose absolute value is over 1e50 are no "
 "longer replaced by ``%g`` conversions."
 msgstr ""
 
-#: library/stdtypes.rst:2515
+#: library/stdtypes.rst:2521
 msgid ""
 "Binary Sequence Types --- :class:`bytes`, :class:`bytearray`, :class:"
 "`memoryview`"
 msgstr ""
 
-#: library/stdtypes.rst:2523
+#: library/stdtypes.rst:2529
 msgid ""
 "The core built-in types for manipulating binary data are :class:`bytes` and :"
 "class:`bytearray`. They are supported by :class:`memoryview` which uses the :"
@@ -4331,17 +4338,17 @@ msgid ""
 "objects without needing to make a copy."
 msgstr ""
 
-#: library/stdtypes.rst:2528
+#: library/stdtypes.rst:2534
 msgid ""
 "The :mod:`array` module supports efficient storage of basic data types like "
 "32-bit integers and IEEE754 double-precision floating values."
 msgstr ""
 
-#: library/stdtypes.rst:2534
+#: library/stdtypes.rst:2540
 msgid "Bytes Objects"
 msgstr ""
 
-#: library/stdtypes.rst:2538
+#: library/stdtypes.rst:2544
 msgid ""
 "Bytes objects are immutable sequences of single bytes. Since many major "
 "binary protocols are based on the ASCII text encoding, bytes objects offer "
@@ -4349,41 +4356,41 @@ msgid ""
 "and are closely related to string objects in a variety of other ways."
 msgstr ""
 
-#: library/stdtypes.rst:2545
+#: library/stdtypes.rst:2551
 msgid ""
 "Firstly, the syntax for bytes literals is largely the same as that for "
 "string literals, except that a ``b`` prefix is added:"
 msgstr ""
 
-#: library/stdtypes.rst:2548
+#: library/stdtypes.rst:2554
 msgid "Single quotes: ``b'still allows embedded \"double\" quotes'``"
 msgstr ""
 
-#: library/stdtypes.rst:2549
+#: library/stdtypes.rst:2555
 #, fuzzy
 msgid "Double quotes: ``b\"still allows embedded 'single' quotes\"``"
 msgstr "Çift tırnak: ``b\"katıştırılmış 'tek' tırnaklara izin verir\"``"
 
-#: library/stdtypes.rst:2550
+#: library/stdtypes.rst:2556
 msgid ""
 "Triple quoted: ``b'''3 single quotes'''``, ``b\"\"\"3 double quotes\"\"\"``"
 msgstr ""
 
-#: library/stdtypes.rst:2552
+#: library/stdtypes.rst:2558
 msgid ""
 "Only ASCII characters are permitted in bytes literals (regardless of the "
 "declared source code encoding). Any binary values over 127 must be entered "
 "into bytes literals using the appropriate escape sequence."
 msgstr ""
 
-#: library/stdtypes.rst:2556
+#: library/stdtypes.rst:2562
 msgid ""
 "As with string literals, bytes literals may also use a ``r`` prefix to "
 "disable processing of escape sequences. See :ref:`strings` for more about "
 "the various forms of bytes literal, including supported escape sequences."
 msgstr ""
 
-#: library/stdtypes.rst:2560
+#: library/stdtypes.rst:2566
 msgid ""
 "While bytes literals and representations are based on ASCII text, bytes "
 "objects actually behave like immutable sequences of integers, with each "
@@ -4396,29 +4403,29 @@ msgid ""
 "compatible will usually lead to data corruption)."
 msgstr ""
 
-#: library/stdtypes.rst:2570
+#: library/stdtypes.rst:2576
 msgid ""
 "In addition to the literal forms, bytes objects can be created in a number "
 "of other ways:"
 msgstr ""
 
-#: library/stdtypes.rst:2573
+#: library/stdtypes.rst:2579
 msgid "A zero-filled bytes object of a specified length: ``bytes(10)``"
 msgstr ""
 
-#: library/stdtypes.rst:2574
+#: library/stdtypes.rst:2580
 msgid "From an iterable of integers: ``bytes(range(20))``"
 msgstr ""
 
-#: library/stdtypes.rst:2575
+#: library/stdtypes.rst:2581
 msgid "Copying existing binary data via the buffer protocol:  ``bytes(obj)``"
 msgstr ""
 
-#: library/stdtypes.rst:2577
+#: library/stdtypes.rst:2583
 msgid "Also see the :ref:`bytes <func-bytes>` built-in."
 msgstr ""
 
-#: library/stdtypes.rst:2579
+#: library/stdtypes.rst:2585
 msgid ""
 "Since 2 hexadecimal digits correspond precisely to a single byte, "
 "hexadecimal numbers are a commonly used format for describing binary data. "
@@ -4426,32 +4433,32 @@ msgid ""
 "that format:"
 msgstr ""
 
-#: library/stdtypes.rst:2585
+#: library/stdtypes.rst:2591
 msgid ""
 "This :class:`bytes` class method returns a bytes object, decoding the given "
 "string object.  The string must contain two hexadecimal digits per byte, "
 "with ASCII whitespace being ignored."
 msgstr ""
 
-#: library/stdtypes.rst:2592
+#: library/stdtypes.rst:2598
 msgid ""
 ":meth:`bytes.fromhex` now skips all ASCII whitespace in the string, not just "
 "spaces."
 msgstr ""
 
-#: library/stdtypes.rst:2596
+#: library/stdtypes.rst:2602
 msgid ""
 "A reverse conversion function exists to transform a bytes object into its "
 "hexadecimal representation."
 msgstr ""
 
-#: library/stdtypes.rst:2686
+#: library/stdtypes.rst:2692
 msgid ""
 "Return a string object containing two hexadecimal digits for each byte in "
 "the instance."
 msgstr ""
 
-#: library/stdtypes.rst:2607
+#: library/stdtypes.rst:2613
 msgid ""
 "If you want to make the hex string easier to read, you can specify a single "
 "character separator *sep* parameter to include in the output. By default, "
@@ -4460,13 +4467,13 @@ msgid ""
 "the separator position from the right, negative values from the left."
 msgstr ""
 
-#: library/stdtypes.rst:2624
+#: library/stdtypes.rst:2630
 msgid ""
 ":meth:`bytes.hex` now supports optional *sep* and *bytes_per_sep* parameters "
 "to insert separators between bytes in the hex output."
 msgstr ""
 
-#: library/stdtypes.rst:2628
+#: library/stdtypes.rst:2634
 msgid ""
 "Since bytes objects are sequences of integers (akin to a tuple), for a bytes "
 "object *b*, ``b[0]`` will be an integer, while ``b[0:1]`` will be a bytes "
@@ -4474,58 +4481,58 @@ msgid ""
 "and slicing will produce a string of length 1)"
 msgstr ""
 
-#: library/stdtypes.rst:2633
+#: library/stdtypes.rst:2639
 msgid ""
 "The representation of bytes objects uses the literal format (``b'...'``) "
 "since it is often more useful than e.g. ``bytes([46, 46, 46])``.  You can "
 "always convert a bytes object into a list of integers using ``list(b)``."
 msgstr ""
 
-#: library/stdtypes.rst:2641
+#: library/stdtypes.rst:2647
 msgid "Bytearray Objects"
 msgstr ""
 
-#: library/stdtypes.rst:2645
+#: library/stdtypes.rst:2651
 msgid ""
 ":class:`bytearray` objects are a mutable counterpart to :class:`bytes` "
 "objects."
 msgstr ""
 
-#: library/stdtypes.rst:2650
+#: library/stdtypes.rst:2656
 msgid ""
 "There is no dedicated literal syntax for bytearray objects, instead they are "
 "always created by calling the constructor:"
 msgstr ""
 
-#: library/stdtypes.rst:2653
+#: library/stdtypes.rst:2659
 msgid "Creating an empty instance: ``bytearray()``"
 msgstr ""
 
-#: library/stdtypes.rst:2654
+#: library/stdtypes.rst:2660
 msgid "Creating a zero-filled instance with a given length: ``bytearray(10)``"
 msgstr ""
 
-#: library/stdtypes.rst:2655
+#: library/stdtypes.rst:2661
 msgid "From an iterable of integers: ``bytearray(range(20))``"
 msgstr ""
 
-#: library/stdtypes.rst:2656
+#: library/stdtypes.rst:2662
 msgid ""
 "Copying existing binary data via the buffer protocol:  ``bytearray(b'Hi!')``"
 msgstr ""
 
-#: library/stdtypes.rst:2658
+#: library/stdtypes.rst:2664
 msgid ""
 "As bytearray objects are mutable, they support the :ref:`mutable <typesseq-"
 "mutable>` sequence operations in addition to the common bytes and bytearray "
 "operations described in :ref:`bytes-methods`."
 msgstr ""
 
-#: library/stdtypes.rst:2662
+#: library/stdtypes.rst:2668
 msgid "Also see the :ref:`bytearray <func-bytearray>` built-in."
 msgstr ""
 
-#: library/stdtypes.rst:2664
+#: library/stdtypes.rst:2670
 msgid ""
 "Since 2 hexadecimal digits correspond precisely to a single byte, "
 "hexadecimal numbers are a commonly used format for describing binary data. "
@@ -4533,33 +4540,33 @@ msgid ""
 "in that format:"
 msgstr ""
 
-#: library/stdtypes.rst:2670
+#: library/stdtypes.rst:2676
 msgid ""
 "This :class:`bytearray` class method returns bytearray object, decoding the "
 "given string object.  The string must contain two hexadecimal digits per "
 "byte, with ASCII whitespace being ignored."
 msgstr ""
 
-#: library/stdtypes.rst:2677
+#: library/stdtypes.rst:2683
 msgid ""
 ":meth:`bytearray.fromhex` now skips all ASCII whitespace in the string, not "
 "just spaces."
 msgstr ""
 
-#: library/stdtypes.rst:2681
+#: library/stdtypes.rst:2687
 msgid ""
 "A reverse conversion function exists to transform a bytearray object into "
 "its hexadecimal representation."
 msgstr ""
 
-#: library/stdtypes.rst:2694
+#: library/stdtypes.rst:2700
 msgid ""
 "Similar to :meth:`bytes.hex`, :meth:`bytearray.hex` now supports optional "
 "*sep* and *bytes_per_sep* parameters to insert separators between bytes in "
 "the hex output."
 msgstr ""
 
-#: library/stdtypes.rst:2699
+#: library/stdtypes.rst:2705
 msgid ""
 "Since bytearray objects are sequences of integers (akin to a list), for a "
 "bytearray object *b*, ``b[0]`` will be an integer, while ``b[0:1]`` will be "
@@ -4567,7 +4574,7 @@ msgid ""
 "both indexing and slicing will produce a string of length 1)"
 msgstr ""
 
-#: library/stdtypes.rst:2704
+#: library/stdtypes.rst:2710
 msgid ""
 "The representation of bytearray objects uses the bytes literal format "
 "(``bytearray(b'...')``) since it is often more useful than e.g. "
@@ -4575,11 +4582,11 @@ msgid ""
 "a list of integers using ``list(b)``."
 msgstr ""
 
-#: library/stdtypes.rst:2713
+#: library/stdtypes.rst:2719
 msgid "Bytes and Bytearray Operations"
 msgstr ""
 
-#: library/stdtypes.rst:2718
+#: library/stdtypes.rst:2724
 msgid ""
 "Both bytes and bytearray objects support the :ref:`common <typesseq-common>` "
 "sequence operations. They interoperate not just with operands of the same "
@@ -4588,81 +4595,81 @@ msgid ""
 "return type of the result may depend on the order of operands."
 msgstr ""
 
-#: library/stdtypes.rst:2726
+#: library/stdtypes.rst:2732
 msgid ""
 "The methods on bytes and bytearray objects don't accept strings as their "
 "arguments, just as the methods on strings don't accept bytes as their "
 "arguments.  For example, you have to write::"
 msgstr ""
 
-#: library/stdtypes.rst:2730
+#: library/stdtypes.rst:2736
 msgid ""
 "a = \"abc\"\n"
 "b = a.replace(\"a\", \"f\")"
 msgstr ""
 
-#: library/stdtypes.rst:2733
+#: library/stdtypes.rst:2739
 msgid "and::"
 msgstr ""
 
-#: library/stdtypes.rst:2735
+#: library/stdtypes.rst:2741
 msgid ""
 "a = b\"abc\"\n"
 "b = a.replace(b\"a\", b\"f\")"
 msgstr ""
 
-#: library/stdtypes.rst:2738
+#: library/stdtypes.rst:2744
 msgid ""
 "Some bytes and bytearray operations assume the use of ASCII compatible "
 "binary formats, and hence should be avoided when working with arbitrary "
 "binary data. These restrictions are covered below."
 msgstr ""
 
-#: library/stdtypes.rst:2743
+#: library/stdtypes.rst:2749
 msgid ""
 "Using these ASCII based operations to manipulate binary data that is not "
 "stored in an ASCII based format may lead to data corruption."
 msgstr ""
 
-#: library/stdtypes.rst:2746
+#: library/stdtypes.rst:2752
 msgid ""
 "The following methods on bytes and bytearray objects can be used with "
 "arbitrary binary data."
 msgstr ""
 
-#: library/stdtypes.rst:2752
+#: library/stdtypes.rst:2758
 msgid ""
 "Return the number of non-overlapping occurrences of subsequence *sub* in the "
 "range [*start*, *end*].  Optional arguments *start* and *end* are "
 "interpreted as in slice notation."
 msgstr ""
 
-#: library/stdtypes.rst:2861 library/stdtypes.rst:2949
-#: library/stdtypes.rst:2962
+#: library/stdtypes.rst:2867 library/stdtypes.rst:2955
+#: library/stdtypes.rst:2968
 msgid ""
 "The subsequence to search for may be any :term:`bytes-like object` or an "
 "integer in the range 0 to 255."
 msgstr ""
 
-#: library/stdtypes.rst:2759
+#: library/stdtypes.rst:2765
 msgid ""
 "If *sub* is empty, returns the number of empty slices between characters "
 "which is the length of the bytes object plus one."
 msgstr ""
 
-#: library/stdtypes.rst:2873 library/stdtypes.rst:2952
-#: library/stdtypes.rst:2965
+#: library/stdtypes.rst:2879 library/stdtypes.rst:2958
+#: library/stdtypes.rst:2971
 msgid "Also accept an integer in the range 0 to 255 as the subsequence."
 msgstr ""
 
-#: library/stdtypes.rst:2769
+#: library/stdtypes.rst:2775
 msgid ""
 "If the binary data starts with the *prefix* string, return "
 "``bytes[len(prefix):]``. Otherwise, return a copy of the original binary "
 "data::"
 msgstr ""
 
-#: library/stdtypes.rst:2773
+#: library/stdtypes.rst:2779
 msgid ""
 ">>> b'TestHook'.removeprefix(b'Test')\n"
 "b'Hook'\n"
@@ -4670,28 +4677,28 @@ msgid ""
 "b'BaseTestCase'"
 msgstr ""
 
-#: library/stdtypes.rst:2778
+#: library/stdtypes.rst:2784
 msgid "The *prefix* may be any :term:`bytes-like object`."
 msgstr ""
 
-#: library/stdtypes.rst:2804 library/stdtypes.rst:3030
-#: library/stdtypes.rst:3075 library/stdtypes.rst:3131
-#: library/stdtypes.rst:3220 library/stdtypes.rst:3387
-#: library/stdtypes.rst:3485 library/stdtypes.rst:3528
-#: library/stdtypes.rst:3730
+#: library/stdtypes.rst:2810 library/stdtypes.rst:3036
+#: library/stdtypes.rst:3081 library/stdtypes.rst:3137
+#: library/stdtypes.rst:3226 library/stdtypes.rst:3393
+#: library/stdtypes.rst:3491 library/stdtypes.rst:3534
+#: library/stdtypes.rst:3736
 msgid ""
 "The bytearray version of this method does *not* operate in place - it always "
 "produces a new object, even if no changes were made."
 msgstr ""
 
-#: library/stdtypes.rst:2791
+#: library/stdtypes.rst:2797
 msgid ""
 "If the binary data ends with the *suffix* string and that *suffix* is not "
 "empty, return ``bytes[:-len(suffix)]``.  Otherwise, return a copy of the "
 "original binary data::"
 msgstr ""
 
-#: library/stdtypes.rst:2795
+#: library/stdtypes.rst:2801
 msgid ""
 ">>> b'MiscTests'.removesuffix(b'Tests')\n"
 "b'Misc'\n"
@@ -4699,15 +4706,15 @@ msgid ""
 "b'TmpDirMixin'"
 msgstr ""
 
-#: library/stdtypes.rst:2800
+#: library/stdtypes.rst:2806
 msgid "The *suffix* may be any :term:`bytes-like object`."
 msgstr ""
 
-#: library/stdtypes.rst:2813
+#: library/stdtypes.rst:2819
 msgid "Return the bytes decoded to a :class:`str`."
 msgstr ""
 
-#: library/stdtypes.rst:2818
+#: library/stdtypes.rst:2824
 msgid ""
 "*errors* controls how decoding errors are handled. If ``'strict'`` (the "
 "default), a :exc:`UnicodeError` exception is raised. Other possible values "
@@ -4715,21 +4722,21 @@ msgid ""
 "`codecs.register_error`. See :ref:`error-handlers` for details."
 msgstr ""
 
-#: library/stdtypes.rst:2824
+#: library/stdtypes.rst:2830
 msgid ""
 "For performance reasons, the value of *errors* is not checked for validity "
 "unless a decoding error actually occurs, :ref:`devmode` is enabled or a :ref:"
 "`debug build <debug-build>` is used."
 msgstr ""
 
-#: library/stdtypes.rst:2830
+#: library/stdtypes.rst:2836
 msgid ""
 "Passing the *encoding* argument to :class:`str` allows decoding any :term:"
 "`bytes-like object` directly, without needing to make a temporary :class:`!"
 "bytes` or :class:`!bytearray` object."
 msgstr ""
 
-#: library/stdtypes.rst:2845
+#: library/stdtypes.rst:2851
 msgid ""
 "Return ``True`` if the binary data ends with the specified *suffix*, "
 "otherwise return ``False``.  *suffix* can also be a tuple of suffixes to "
@@ -4737,11 +4744,11 @@ msgid ""
 "optional *end*, stop comparing at that position."
 msgstr ""
 
-#: library/stdtypes.rst:2850
+#: library/stdtypes.rst:2856
 msgid "The suffix(es) to search for may be any :term:`bytes-like object`."
 msgstr ""
 
-#: library/stdtypes.rst:2856
+#: library/stdtypes.rst:2862
 msgid ""
 "Return the lowest index in the data where the subsequence *sub* is found, "
 "such that *sub* is contained in the slice ``s[start:end]``.  Optional "
@@ -4749,26 +4756,26 @@ msgid ""
 "``-1`` if *sub* is not found."
 msgstr ""
 
-#: library/stdtypes.rst:2866
+#: library/stdtypes.rst:2872
 msgid ""
 "The :meth:`~bytes.find` method should be used only if you need to know the "
 "position of *sub*.  To check if *sub* is a substring or not, use the :"
 "keyword:`in` operator::"
 msgstr ""
 
-#: library/stdtypes.rst:2870
+#: library/stdtypes.rst:2876
 msgid ""
 ">>> b'Py' in b'Python'\n"
 "True"
 msgstr ""
 
-#: library/stdtypes.rst:2880
+#: library/stdtypes.rst:2886
 msgid ""
 "Like :meth:`~bytes.find`, but raise :exc:`ValueError` when the subsequence "
 "is not found."
 msgstr ""
 
-#: library/stdtypes.rst:2893
+#: library/stdtypes.rst:2899
 msgid ""
 "Return a bytes or bytearray object which is the concatenation of the binary "
 "data sequences in *iterable*.  A :exc:`TypeError` will be raised if there "
@@ -4778,7 +4785,7 @@ msgid ""
 "method."
 msgstr ""
 
-#: library/stdtypes.rst:2904
+#: library/stdtypes.rst:2910
 msgid ""
 "This static method returns a translation table usable for :meth:`bytes."
 "translate` that will map each character in *from* into the character at the "
@@ -4786,7 +4793,7 @@ msgid ""
 "objects <bytes-like object>` and have the same length."
 msgstr ""
 
-#: library/stdtypes.rst:2915
+#: library/stdtypes.rst:2921
 msgid ""
 "Split the sequence at the first occurrence of *sep*, and return a 3-tuple "
 "containing the part before the separator, the separator itself or its "
@@ -4795,24 +4802,24 @@ msgid ""
 "by two empty bytes or bytearray objects."
 msgstr ""
 
-#: library/stdtypes.rst:2979
+#: library/stdtypes.rst:2985
 msgid "The separator to search for may be any :term:`bytes-like object`."
 msgstr ""
 
-#: library/stdtypes.rst:2928
+#: library/stdtypes.rst:2934
 msgid ""
 "Return a copy of the sequence with all occurrences of subsequence *old* "
 "replaced by *new*.  If the optional argument *count* is given, only the "
 "first *count* occurrences are replaced."
 msgstr ""
 
-#: library/stdtypes.rst:2932
+#: library/stdtypes.rst:2938
 msgid ""
 "The subsequence to search for and its replacement may be any :term:`bytes-"
 "like object`."
 msgstr ""
 
-#: library/stdtypes.rst:2944
+#: library/stdtypes.rst:2950
 msgid ""
 "Return the highest index in the sequence where the subsequence *sub* is "
 "found, such that *sub* is contained within ``s[start:end]``.  Optional "
@@ -4820,13 +4827,13 @@ msgid ""
 "``-1`` on failure."
 msgstr ""
 
-#: library/stdtypes.rst:2959
+#: library/stdtypes.rst:2965
 msgid ""
 "Like :meth:`~bytes.rfind` but raises :exc:`ValueError` when the subsequence "
 "*sub* is not found."
 msgstr ""
 
-#: library/stdtypes.rst:2972
+#: library/stdtypes.rst:2978
 msgid ""
 "Split the sequence at the last occurrence of *sep*, and return a 3-tuple "
 "containing the part before the separator, the separator itself or its "
@@ -4835,7 +4842,7 @@ msgid ""
 "followed by a copy of the original sequence."
 msgstr ""
 
-#: library/stdtypes.rst:2985
+#: library/stdtypes.rst:2991
 msgid ""
 "Return ``True`` if the binary data starts with the specified *prefix*, "
 "otherwise return ``False``.  *prefix* can also be a tuple of prefixes to "
@@ -4843,11 +4850,11 @@ msgid ""
 "optional *end*, stop comparing at that position."
 msgstr ""
 
-#: library/stdtypes.rst:2990
+#: library/stdtypes.rst:2996
 msgid "The prefix(es) to search for may be any :term:`bytes-like object`."
 msgstr ""
 
-#: library/stdtypes.rst:2996
+#: library/stdtypes.rst:3002
 msgid ""
 "Return a copy of the bytes or bytearray object where all bytes occurring in "
 "the optional argument *delete* are removed, and the remaining bytes have "
@@ -4855,28 +4862,28 @@ msgid ""
 "object of length 256."
 msgstr ""
 
-#: library/stdtypes.rst:3001
+#: library/stdtypes.rst:3007
 msgid ""
 "You can use the :func:`bytes.maketrans` method to create a translation table."
 msgstr ""
 
-#: library/stdtypes.rst:3004
+#: library/stdtypes.rst:3010
 msgid ""
 "Set the *table* argument to ``None`` for translations that only delete "
 "characters::"
 msgstr ""
 
-#: library/stdtypes.rst:3007
+#: library/stdtypes.rst:3013
 msgid ""
 ">>> b'read this short text'.translate(None, b'aeiou')\n"
 "b'rd ths shrt txt'"
 msgstr ""
 
-#: library/stdtypes.rst:3010
+#: library/stdtypes.rst:3016
 msgid "*delete* is now supported as a keyword argument."
 msgstr ""
 
-#: library/stdtypes.rst:3014
+#: library/stdtypes.rst:3020
 msgid ""
 "The following methods on bytes and bytearray objects have default behaviours "
 "that assume the use of ASCII compatible binary formats, but can still be "
@@ -4885,7 +4892,7 @@ msgid ""
 "instead produce new objects."
 msgstr ""
 
-#: library/stdtypes.rst:3023
+#: library/stdtypes.rst:3029
 msgid ""
 "Return a copy of the object centered in a sequence of length *width*. "
 "Padding is done using the specified *fillbyte* (default is an ASCII space). "
@@ -4893,7 +4900,7 @@ msgid ""
 "less than or equal to ``len(s)``."
 msgstr ""
 
-#: library/stdtypes.rst:3037
+#: library/stdtypes.rst:3043
 msgid ""
 "Return a copy of the object left justified in a sequence of length *width*. "
 "Padding is done using the specified *fillbyte* (default is an ASCII space). "
@@ -4901,7 +4908,7 @@ msgid ""
 "less than or equal to ``len(s)``."
 msgstr ""
 
-#: library/stdtypes.rst:3051
+#: library/stdtypes.rst:3057
 msgid ""
 "Return a copy of the sequence with specified leading bytes removed.  The "
 "*chars* argument is a binary sequence specifying the set of byte values to "
@@ -4911,7 +4918,7 @@ msgid ""
 "all combinations of its values are stripped::"
 msgstr ""
 
-#: library/stdtypes.rst:3058
+#: library/stdtypes.rst:3064
 msgid ""
 ">>> b'   spacious   '.lstrip()\n"
 "b'spacious   '\n"
@@ -4919,14 +4926,14 @@ msgid ""
 "b'example.com'"
 msgstr ""
 
-#: library/stdtypes.rst:3063
+#: library/stdtypes.rst:3069
 msgid ""
 "The binary sequence of byte values to remove may be any :term:`bytes-like "
 "object`. See :meth:`~bytes.removeprefix` for a method that will remove a "
 "single prefix string rather than all of a set of characters.  For example::"
 msgstr ""
 
-#: library/stdtypes.rst:3068
+#: library/stdtypes.rst:3074
 msgid ""
 ">>> b'Arthur: three!'.lstrip(b'Arthur: ')\n"
 "b'ee!'\n"
@@ -4934,7 +4941,7 @@ msgid ""
 "b'three!'"
 msgstr ""
 
-#: library/stdtypes.rst:3082
+#: library/stdtypes.rst:3088
 msgid ""
 "Return a copy of the object right justified in a sequence of length *width*. "
 "Padding is done using the specified *fillbyte* (default is an ASCII space). "
@@ -4942,7 +4949,7 @@ msgid ""
 "less than or equal to ``len(s)``."
 msgstr ""
 
-#: library/stdtypes.rst:3096
+#: library/stdtypes.rst:3102
 msgid ""
 "Split the binary sequence into subsequences of the same type, using *sep* as "
 "the delimiter string. If *maxsplit* is given, at most *maxsplit* splits are "
@@ -4952,7 +4959,7 @@ msgid ""
 "described in detail below."
 msgstr ""
 
-#: library/stdtypes.rst:3107
+#: library/stdtypes.rst:3113
 msgid ""
 "Return a copy of the sequence with specified trailing bytes removed.  The "
 "*chars* argument is a binary sequence specifying the set of byte values to "
@@ -4962,7 +4969,7 @@ msgid ""
 "all combinations of its values are stripped::"
 msgstr ""
 
-#: library/stdtypes.rst:3114
+#: library/stdtypes.rst:3120
 msgid ""
 ">>> b'   spacious   '.rstrip()\n"
 "b'   spacious'\n"
@@ -4970,14 +4977,14 @@ msgid ""
 "b'mississ'"
 msgstr ""
 
-#: library/stdtypes.rst:3119
+#: library/stdtypes.rst:3125
 msgid ""
 "The binary sequence of byte values to remove may be any :term:`bytes-like "
 "object`. See :meth:`~bytes.removesuffix` for a method that will remove a "
 "single suffix string rather than all of a set of characters.  For example::"
 msgstr ""
 
-#: library/stdtypes.rst:3124
+#: library/stdtypes.rst:3130
 msgid ""
 ">>> b'Monty Python'.rstrip(b' Python')\n"
 "b'M'\n"
@@ -4985,7 +4992,7 @@ msgid ""
 "b'Monty'"
 msgstr ""
 
-#: library/stdtypes.rst:3138
+#: library/stdtypes.rst:3144
 msgid ""
 "Split the binary sequence into subsequences of the same type, using *sep* as "
 "the delimiter string. If *maxsplit* is given and non-negative, at most "
@@ -4994,7 +5001,7 @@ msgid ""
 "limit on the number of splits (all possible splits are made)."
 msgstr ""
 
-#: library/stdtypes.rst:3144
+#: library/stdtypes.rst:3150
 #, fuzzy
 msgid ""
 "If *sep* is given, consecutive delimiters are not grouped together and are "
@@ -5011,7 +5018,7 @@ msgstr ""
 "(örneğin, ``'1<>2<>3'.split('<>')``, ``['1', '2', '3']`` döndürür). Boş bir "
 "dizeyi belirtilen bir ayırıcıyla bölmek ``['']`` döndürür."
 
-#: library/stdtypes.rst:3154
+#: library/stdtypes.rst:3160
 msgid ""
 ">>> b'1,2,3'.split(b',')\n"
 "[b'1', b'2', b'3']\n"
@@ -5023,7 +5030,7 @@ msgid ""
 "[b'1', b'2', b'3<4']"
 msgstr ""
 
-#: library/stdtypes.rst:3163
+#: library/stdtypes.rst:3169
 msgid ""
 "If *sep* is not specified or is ``None``, a different splitting algorithm is "
 "applied: runs of consecutive ASCII whitespace are regarded as a single "
@@ -5033,7 +5040,7 @@ msgid ""
 "without a specified separator returns ``[]``."
 msgstr ""
 
-#: library/stdtypes.rst:3173
+#: library/stdtypes.rst:3179
 msgid ""
 ">>> b'1 2 3'.split()\n"
 "[b'1', b'2', b'3']\n"
@@ -5043,7 +5050,7 @@ msgid ""
 "[b'1', b'2', b'3']"
 msgstr ""
 
-#: library/stdtypes.rst:3184
+#: library/stdtypes.rst:3190
 msgid ""
 "Return a copy of the sequence with specified leading and trailing bytes "
 "removed. The *chars* argument is a binary sequence specifying the set of "
@@ -5053,7 +5060,7 @@ msgid ""
 "a prefix or suffix; rather, all combinations of its values are stripped::"
 msgstr ""
 
-#: library/stdtypes.rst:3192
+#: library/stdtypes.rst:3198
 msgid ""
 ">>> b'   spacious   '.strip()\n"
 "b'spacious'\n"
@@ -5061,13 +5068,13 @@ msgid ""
 "b'example'"
 msgstr ""
 
-#: library/stdtypes.rst:3197
+#: library/stdtypes.rst:3203
 msgid ""
 "The binary sequence of byte values to remove may be any :term:`bytes-like "
 "object`."
 msgstr ""
 
-#: library/stdtypes.rst:3206
+#: library/stdtypes.rst:3212
 msgid ""
 "The following methods on bytes and bytearray objects assume the use of ASCII "
 "compatible binary formats and should not be applied to arbitrary binary "
@@ -5075,14 +5082,14 @@ msgid ""
 "operate in place, and instead produce new objects."
 msgstr ""
 
-#: library/stdtypes.rst:3214
+#: library/stdtypes.rst:3220
 msgid ""
 "Return a copy of the sequence with each byte interpreted as an ASCII "
 "character, and the first byte capitalized and the rest lowercased. Non-ASCII "
 "byte values are passed through unchanged."
 msgstr ""
 
-#: library/stdtypes.rst:3227
+#: library/stdtypes.rst:3233
 msgid ""
 "Return a copy of the sequence where all ASCII tab characters are replaced by "
 "one or more ASCII spaces, depending on the current column and the given tab "
@@ -5098,7 +5105,7 @@ msgid ""
 "by one regardless of how the byte value is represented when printed::"
 msgstr ""
 
-#: library/stdtypes.rst:3241
+#: library/stdtypes.rst:3247
 msgid ""
 ">>> b'01\\t012\\t0123\\t01234'.expandtabs()\n"
 "b'01      012     0123    01234'\n"
@@ -5106,7 +5113,7 @@ msgid ""
 "b'01  012 0123    01234'"
 msgstr ""
 
-#: library/stdtypes.rst:3255
+#: library/stdtypes.rst:3261
 msgid ""
 "Return ``True`` if all bytes in the sequence are alphabetical ASCII "
 "characters or ASCII decimal digits and the sequence is not empty, ``False`` "
@@ -5115,7 +5122,7 @@ msgid ""
 "digits are those byte values in the sequence ``b'0123456789'``."
 msgstr ""
 
-#: library/stdtypes.rst:3263
+#: library/stdtypes.rst:3269
 msgid ""
 ">>> b'ABCabc1'.isalnum()\n"
 "True\n"
@@ -5123,7 +5130,7 @@ msgid ""
 "False"
 msgstr ""
 
-#: library/stdtypes.rst:3272
+#: library/stdtypes.rst:3278
 msgid ""
 "Return ``True`` if all bytes in the sequence are alphabetic ASCII characters "
 "and the sequence is not empty, ``False`` otherwise.  Alphabetic ASCII "
@@ -5131,7 +5138,7 @@ msgid ""
 "``b'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'``."
 msgstr ""
 
-#: library/stdtypes.rst:3279
+#: library/stdtypes.rst:3285
 msgid ""
 ">>> b'ABCabc'.isalpha()\n"
 "True\n"
@@ -5139,20 +5146,20 @@ msgid ""
 "False"
 msgstr ""
 
-#: library/stdtypes.rst:3288
+#: library/stdtypes.rst:3294
 msgid ""
 "Return ``True`` if the sequence is empty or all bytes in the sequence are "
 "ASCII, ``False`` otherwise. ASCII bytes are in the range 0-0x7F."
 msgstr ""
 
-#: library/stdtypes.rst:3298
+#: library/stdtypes.rst:3304
 msgid ""
 "Return ``True`` if all bytes in the sequence are ASCII decimal digits and "
 "the sequence is not empty, ``False`` otherwise. ASCII decimal digits are "
 "those byte values in the sequence ``b'0123456789'``."
 msgstr ""
 
-#: library/stdtypes.rst:3304
+#: library/stdtypes.rst:3310
 msgid ""
 ">>> b'1234'.isdigit()\n"
 "True\n"
@@ -5160,13 +5167,13 @@ msgid ""
 "False"
 msgstr ""
 
-#: library/stdtypes.rst:3313
+#: library/stdtypes.rst:3319
 msgid ""
 "Return ``True`` if there is at least one lowercase ASCII character in the "
 "sequence and no uppercase ASCII characters, ``False`` otherwise."
 msgstr ""
 
-#: library/stdtypes.rst:3318
+#: library/stdtypes.rst:3324
 msgid ""
 ">>> b'hello world'.islower()\n"
 "True\n"
@@ -5174,15 +5181,15 @@ msgid ""
 "False"
 msgstr ""
 
-#: library/stdtypes.rst:3365 library/stdtypes.rst:3431
-#: library/stdtypes.rst:3500
+#: library/stdtypes.rst:3371 library/stdtypes.rst:3437
+#: library/stdtypes.rst:3506
 msgid ""
 "Lowercase ASCII characters are those byte values in the sequence "
 "``b'abcdefghijklmnopqrstuvwxyz'``. Uppercase ASCII characters are those byte "
 "values in the sequence ``b'ABCDEFGHIJKLMNOPQRSTUVWXYZ'``."
 msgstr ""
 
-#: library/stdtypes.rst:3331
+#: library/stdtypes.rst:3337
 msgid ""
 "Return ``True`` if all bytes in the sequence are ASCII whitespace and the "
 "sequence is not empty, ``False`` otherwise.  ASCII whitespace characters are "
@@ -5190,14 +5197,14 @@ msgid ""
 "newline, carriage return, vertical tab, form feed)."
 msgstr ""
 
-#: library/stdtypes.rst:3340
+#: library/stdtypes.rst:3346
 msgid ""
 "Return ``True`` if the sequence is ASCII titlecase and the sequence is not "
 "empty, ``False`` otherwise. See :meth:`bytes.title` for more details on the "
 "definition of \"titlecase\"."
 msgstr ""
 
-#: library/stdtypes.rst:3346
+#: library/stdtypes.rst:3352
 msgid ""
 ">>> b'Hello World'.istitle()\n"
 "True\n"
@@ -5205,14 +5212,14 @@ msgid ""
 "False"
 msgstr ""
 
-#: library/stdtypes.rst:3355
+#: library/stdtypes.rst:3361
 msgid ""
 "Return ``True`` if there is at least one uppercase alphabetic ASCII "
 "character in the sequence and no lowercase ASCII characters, ``False`` "
 "otherwise."
 msgstr ""
 
-#: library/stdtypes.rst:3360
+#: library/stdtypes.rst:3366
 msgid ""
 ">>> b'HELLO WORLD'.isupper()\n"
 "True\n"
@@ -5220,19 +5227,19 @@ msgid ""
 "False"
 msgstr ""
 
-#: library/stdtypes.rst:3373
+#: library/stdtypes.rst:3379
 msgid ""
 "Return a copy of the sequence with all the uppercase ASCII characters "
 "converted to their corresponding lowercase counterpart."
 msgstr ""
 
-#: library/stdtypes.rst:3378
+#: library/stdtypes.rst:3384
 msgid ""
 ">>> b'Hello World'.lower()\n"
 "b'hello world'"
 msgstr ""
 
-#: library/stdtypes.rst:3398
+#: library/stdtypes.rst:3404
 msgid ""
 "Return a list of the lines in the binary sequence, breaking at ASCII line "
 "boundaries. This method uses the :term:`universal newlines` approach to "
@@ -5240,7 +5247,7 @@ msgid ""
 "*keepends* is given and true."
 msgstr ""
 
-#: library/stdtypes.rst:3405
+#: library/stdtypes.rst:3411
 msgid ""
 ">>> b'ab c\\n\\nde fg\\rkl\\r\\n'.splitlines()\n"
 "[b'ab c', b'', b'de fg', b'kl']\n"
@@ -5248,14 +5255,14 @@ msgid ""
 "[b'ab c\\n', b'\\n', b'de fg\\r', b'kl\\r\\n']"
 msgstr ""
 
-#: library/stdtypes.rst:3410
+#: library/stdtypes.rst:3416
 msgid ""
 "Unlike :meth:`~bytes.split` when a delimiter string *sep* is given, this "
 "method returns an empty list for the empty string, and a terminal line break "
 "does not result in an extra line::"
 msgstr ""
 
-#: library/stdtypes.rst:3414
+#: library/stdtypes.rst:3420
 msgid ""
 ">>> b\"\".split(b'\\n'), b\"Two lines\\n\".split(b'\\n')\n"
 "([b''], [b'Two lines', b''])\n"
@@ -5263,19 +5270,19 @@ msgid ""
 "([], [b'One line'])"
 msgstr ""
 
-#: library/stdtypes.rst:3423
+#: library/stdtypes.rst:3429
 msgid ""
 "Return a copy of the sequence with all the lowercase ASCII characters "
 "converted to their corresponding uppercase counterpart and vice-versa."
 msgstr ""
 
-#: library/stdtypes.rst:3428
+#: library/stdtypes.rst:3434
 msgid ""
 ">>> b'Hello World'.swapcase()\n"
 "b'hELLO wORLD'"
 msgstr ""
 
-#: library/stdtypes.rst:3435
+#: library/stdtypes.rst:3441
 msgid ""
 "Unlike :func:`str.swapcase`, it is always the case that ``bin.swapcase()."
 "swapcase() == bin`` for the binary versions. Case conversions are "
@@ -5283,20 +5290,20 @@ msgid ""
 "Unicode code points."
 msgstr ""
 
-#: library/stdtypes.rst:3449
+#: library/stdtypes.rst:3455
 msgid ""
 "Return a titlecased version of the binary sequence where words start with an "
 "uppercase ASCII character and the remaining characters are lowercase. "
 "Uncased byte values are left unmodified."
 msgstr ""
 
-#: library/stdtypes.rst:3455
+#: library/stdtypes.rst:3461
 msgid ""
 ">>> b'Hello world'.title()\n"
 "b'Hello World'"
 msgstr ""
 
-#: library/stdtypes.rst:3458
+#: library/stdtypes.rst:3464
 msgid ""
 "Lowercase ASCII characters are those byte values in the sequence "
 "``b'abcdefghijklmnopqrstuvwxyz'``. Uppercase ASCII characters are those byte "
@@ -5304,20 +5311,20 @@ msgid ""
 "values are uncased."
 msgstr ""
 
-#: library/stdtypes.rst:3468
+#: library/stdtypes.rst:3474
 msgid ""
 ">>> b\"they're bill's friends from the UK\".title()\n"
 "b\"They'Re Bill'S Friends From The Uk\""
 msgstr ""
 
-#: library/stdtypes.rst:3471
+#: library/stdtypes.rst:3477
 msgid ""
 "A workaround for apostrophes can be constructed using regular expressions::"
 msgstr ""
 "Kesme işaretleri için geçici bir çözüm düzenli ifadeler kullanılarak "
 "oluşturulabilir::"
 
-#: library/stdtypes.rst:3473
+#: library/stdtypes.rst:3479
 msgid ""
 ">>> import re\n"
 ">>> def titlecase(s):\n"
@@ -5330,19 +5337,19 @@ msgid ""
 "b\"They're Bill's Friends.\""
 msgstr ""
 
-#: library/stdtypes.rst:3492
+#: library/stdtypes.rst:3498
 msgid ""
 "Return a copy of the sequence with all the lowercase ASCII characters "
 "converted to their corresponding uppercase counterpart."
 msgstr ""
 
-#: library/stdtypes.rst:3497
+#: library/stdtypes.rst:3503
 msgid ""
 ">>> b'Hello World'.upper()\n"
 "b'HELLO WORLD'"
 msgstr ""
 
-#: library/stdtypes.rst:3513
+#: library/stdtypes.rst:3519
 msgid ""
 "Return a copy of the sequence left filled with ASCII ``b'0'`` digits to make "
 "a sequence of length *width*. A leading sign prefix (``b'+'``/ ``b'-'``) is "
@@ -5351,7 +5358,7 @@ msgid ""
 "*width* is less than or equal to ``len(seq)``."
 msgstr ""
 
-#: library/stdtypes.rst:3521
+#: library/stdtypes.rst:3527
 msgid ""
 ">>> b\"42\".zfill(5)\n"
 "b'00042'\n"
@@ -5359,11 +5366,11 @@ msgid ""
 "b'-0042'"
 msgstr ""
 
-#: library/stdtypes.rst:3535
+#: library/stdtypes.rst:3541
 msgid "``printf``-style Bytes Formatting"
 msgstr ""
 
-#: library/stdtypes.rst:3552
+#: library/stdtypes.rst:3558
 msgid ""
 "The formatting operations described here exhibit a variety of quirks that "
 "lead to a number of common errors (such as failing to display tuples and "
@@ -5371,7 +5378,7 @@ msgid ""
 "dictionary, wrap it in a tuple."
 msgstr ""
 
-#: library/stdtypes.rst:3557
+#: library/stdtypes.rst:3563
 msgid ""
 "Bytes objects (``bytes``/``bytearray``) have one unique built-in operation: "
 "the ``%`` operator (modulo). This is also known as the bytes *formatting* or "
@@ -5381,7 +5388,7 @@ msgid ""
 "func:`sprintf` in the C language."
 msgstr ""
 
-#: library/stdtypes.rst:3564
+#: library/stdtypes.rst:3570
 msgid ""
 "If *format* requires a single argument, *values* may be a single non-tuple "
 "object. [5]_  Otherwise, *values* must be a tuple with exactly the number of "
@@ -5389,7 +5396,7 @@ msgid ""
 "example, a dictionary)."
 msgstr ""
 
-#: library/stdtypes.rst:3598
+#: library/stdtypes.rst:3604
 msgid ""
 "When the right argument is a dictionary (or other mapping type), then the "
 "formats in the bytes object *must* include a parenthesised mapping key into "
@@ -5397,73 +5404,73 @@ msgid ""
 "mapping key selects the value to be formatted from the mapping.  For example:"
 msgstr ""
 
-#: library/stdtypes.rst:3672
+#: library/stdtypes.rst:3678
 msgid "Single byte (accepts integer or single byte objects)."
 msgstr ""
 
-#: library/stdtypes.rst:3675
+#: library/stdtypes.rst:3681
 msgid "``'b'``"
 msgstr ""
 
-#: library/stdtypes.rst:3675
+#: library/stdtypes.rst:3681
 msgid ""
 "Bytes (any object that follows the :ref:`buffer protocol <bufferobjects>` or "
 "has :meth:`~object.__bytes__`)."
 msgstr ""
 
-#: library/stdtypes.rst:3679
+#: library/stdtypes.rst:3685
 msgid ""
 "``'s'`` is an alias for ``'b'`` and should only be used for Python2/3 code "
 "bases."
 msgstr ""
 
-#: library/stdtypes.rst:3682
+#: library/stdtypes.rst:3688
 msgid ""
 "Bytes (converts any Python object using ``repr(obj).encode('ascii', "
 "'backslashreplace')``)."
 msgstr ""
 
-#: library/stdtypes.rst:3685
+#: library/stdtypes.rst:3691
 msgid ""
 "``'r'`` is an alias for ``'a'`` and should only be used for Python2/3 code "
 "bases."
 msgstr ""
 
-#: library/stdtypes.rst:3685
+#: library/stdtypes.rst:3691
 msgid "\\(7)"
 msgstr ""
 
-#: library/stdtypes.rst:3720
+#: library/stdtypes.rst:3726
 msgid "``b'%s'`` is deprecated, but will not be removed during the 3.x series."
 msgstr ""
 
-#: library/stdtypes.rst:3723
+#: library/stdtypes.rst:3729
 msgid "``b'%r'`` is deprecated, but will not be removed during the 3.x series."
 msgstr ""
 
-#: library/stdtypes.rst:3735
+#: library/stdtypes.rst:3741
 msgid ":pep:`461` - Adding % formatting to bytes and bytearray"
 msgstr ""
 
-#: library/stdtypes.rst:3742
+#: library/stdtypes.rst:3748
 msgid "Memory Views"
 msgstr ""
 
-#: library/stdtypes.rst:3744
+#: library/stdtypes.rst:3750
 msgid ""
 ":class:`memoryview` objects allow Python code to access the internal data of "
 "an object that supports the :ref:`buffer protocol <bufferobjects>` without "
 "copying."
 msgstr ""
 
-#: library/stdtypes.rst:3750
+#: library/stdtypes.rst:3756
 msgid ""
 "Create a :class:`memoryview` that references *object*.  *object* must "
 "support the buffer protocol.  Built-in objects that support the buffer "
 "protocol include :class:`bytes` and :class:`bytearray`."
 msgstr ""
 
-#: library/stdtypes.rst:3754
+#: library/stdtypes.rst:3760
 msgid ""
 "A :class:`memoryview` has the notion of an *element*, which is the atomic "
 "memory unit handled by the originating *object*.  For many simple types such "
@@ -5471,32 +5478,32 @@ msgid ""
 "other types such as :class:`array.array` may have bigger elements."
 msgstr ""
 
-#: library/stdtypes.rst:3759
+#: library/stdtypes.rst:3765
 msgid ""
 "``len(view)`` is equal to the length of :class:`~memoryview.tolist`, which "
 "is the nested list representation of the view. If ``view.ndim = 1``, this is "
 "equal to the number of elements in the view."
 msgstr ""
 
-#: library/stdtypes.rst:3763
+#: library/stdtypes.rst:3769
 msgid ""
 "If ``view.ndim == 0``, ``len(view)`` now raises :exc:`TypeError` instead of "
 "returning 1."
 msgstr ""
 
-#: library/stdtypes.rst:3766
+#: library/stdtypes.rst:3772
 msgid ""
 "The :class:`~memoryview.itemsize` attribute will give you the number of "
 "bytes in a single element."
 msgstr ""
 
-#: library/stdtypes.rst:3769
+#: library/stdtypes.rst:3775
 msgid ""
 "A :class:`memoryview` supports slicing and indexing to expose its data. One-"
 "dimensional slicing will result in a subview::"
 msgstr ""
 
-#: library/stdtypes.rst:3772
+#: library/stdtypes.rst:3778
 msgid ""
 ">>> v = memoryview(b'abcefg')\n"
 ">>> v[1]\n"
@@ -5509,7 +5516,7 @@ msgid ""
 "b'bce'"
 msgstr ""
 
-#: library/stdtypes.rst:3782
+#: library/stdtypes.rst:3788
 msgid ""
 "If :class:`~memoryview.format` is one of the native format specifiers from "
 "the :mod:`struct` module, indexing with an integer or a tuple of integers is "
@@ -5520,11 +5527,11 @@ msgid ""
 "memoryviews can be indexed with the empty tuple."
 msgstr ""
 
-#: library/stdtypes.rst:3791
+#: library/stdtypes.rst:3797
 msgid "Here is an example with a non-byte format::"
 msgstr ""
 
-#: library/stdtypes.rst:3793
+#: library/stdtypes.rst:3799
 msgid ""
 ">>> import array\n"
 ">>> a = array.array('l', [-11111111, 22222222, -33333333, 44444444])\n"
@@ -5537,13 +5544,13 @@ msgid ""
 "[-11111111, -33333333]"
 msgstr ""
 
-#: library/stdtypes.rst:3803
+#: library/stdtypes.rst:3809
 msgid ""
 "If the underlying object is writable, the memoryview supports one-"
 "dimensional slice assignment. Resizing is not allowed::"
 msgstr ""
 
-#: library/stdtypes.rst:3806
+#: library/stdtypes.rst:3812
 msgid ""
 ">>> data = bytearray(b'abcefg')\n"
 ">>> v = memoryview(data)\n"
@@ -5565,14 +5572,14 @@ msgid ""
 "bytearray(b'z1spam')"
 msgstr ""
 
-#: library/stdtypes.rst:3824
+#: library/stdtypes.rst:3830
 msgid ""
 "One-dimensional memoryviews of :term:`hashable` (read-only) types with "
 "formats 'B', 'b' or 'c' are also hashable. The hash is defined as ``hash(m) "
 "== hash(m.tobytes())``::"
 msgstr ""
 
-#: library/stdtypes.rst:3828
+#: library/stdtypes.rst:3834
 msgid ""
 ">>> v = memoryview(b'abcefg')\n"
 ">>> hash(v) == hash(b'abcefg')\n"
@@ -5583,40 +5590,40 @@ msgid ""
 "True"
 msgstr ""
 
-#: library/stdtypes.rst:3836
+#: library/stdtypes.rst:3842
 msgid ""
 "One-dimensional memoryviews can now be sliced. One-dimensional memoryviews "
 "with formats 'B', 'b' or 'c' are now :term:`hashable`."
 msgstr ""
 
-#: library/stdtypes.rst:3840
+#: library/stdtypes.rst:3846
 msgid ""
 "memoryview is now registered automatically with :class:`collections.abc."
 "Sequence`"
 msgstr ""
 
-#: library/stdtypes.rst:3844
+#: library/stdtypes.rst:3850
 msgid "memoryviews can now be indexed with tuple of integers."
 msgstr ""
 
-#: library/stdtypes.rst:3847
+#: library/stdtypes.rst:3853
 msgid ":class:`memoryview` has several methods:"
 msgstr ""
 
-#: library/stdtypes.rst:3851
+#: library/stdtypes.rst:3857
 msgid ""
 "A memoryview and a :pep:`3118` exporter are equal if their shapes are "
 "equivalent and if all corresponding values are equal when the operands' "
 "respective format codes are interpreted using :mod:`struct` syntax."
 msgstr ""
 
-#: library/stdtypes.rst:3855
+#: library/stdtypes.rst:3861
 msgid ""
 "For the subset of :mod:`struct` format strings currently supported by :meth:"
 "`tolist`, ``v`` and ``w`` are equal if ``v.tolist() == w.tolist()``::"
 msgstr ""
 
-#: library/stdtypes.rst:3858
+#: library/stdtypes.rst:3864
 msgid ""
 ">>> import array\n"
 ">>> a = array.array('I', [1, 2, 3, 4, 5])\n"
@@ -5635,14 +5642,14 @@ msgid ""
 "True"
 msgstr ""
 
-#: library/stdtypes.rst:3874
+#: library/stdtypes.rst:3880
 msgid ""
 "If either format string is not supported by the :mod:`struct` module, then "
 "the objects will always compare as unequal (even if the format strings and "
 "buffer contents are identical)::"
 msgstr ""
 
-#: library/stdtypes.rst:3878
+#: library/stdtypes.rst:3884
 msgid ""
 ">>> from ctypes import BigEndianStructure, c_long\n"
 ">>> class BEPoint(BigEndianStructure):\n"
@@ -5657,25 +5664,25 @@ msgid ""
 "False"
 msgstr ""
 
-#: library/stdtypes.rst:3890
+#: library/stdtypes.rst:3896
 msgid ""
 "Note that, as with floating-point numbers, ``v is w`` does *not* imply ``v "
 "== w`` for memoryview objects."
 msgstr ""
 
-#: library/stdtypes.rst:3893
+#: library/stdtypes.rst:3899
 msgid ""
 "Previous versions compared the raw memory disregarding the item format and "
 "the logical array structure."
 msgstr ""
 
-#: library/stdtypes.rst:3899
+#: library/stdtypes.rst:3905
 msgid ""
 "Return the data in the buffer as a bytestring.  This is equivalent to "
 "calling the :class:`bytes` constructor on the memoryview. ::"
 msgstr ""
 
-#: library/stdtypes.rst:3902
+#: library/stdtypes.rst:3908
 msgid ""
 ">>> m = memoryview(b\"abc\")\n"
 ">>> m.tobytes()\n"
@@ -5684,7 +5691,7 @@ msgid ""
 "b'abc'"
 msgstr ""
 
-#: library/stdtypes.rst:3908
+#: library/stdtypes.rst:3914
 msgid ""
 "For non-contiguous arrays the result is equal to the flattened list "
 "representation with all elements converted to bytes. :meth:`tobytes` "
@@ -5692,7 +5699,7 @@ msgid ""
 "module syntax."
 msgstr ""
 
-#: library/stdtypes.rst:3913
+#: library/stdtypes.rst:3919
 msgid ""
 "*order* can be {'C', 'F', 'A'}.  When *order* is 'C' or 'F', the data of the "
 "original array is converted to C or Fortran order. For contiguous views, 'A' "
@@ -5701,31 +5708,31 @@ msgid ""
 "to C first. *order=None* is the same as *order='C'*."
 msgstr ""
 
-#: library/stdtypes.rst:3922
+#: library/stdtypes.rst:3928
 msgid ""
 "Return a string object containing two hexadecimal digits for each byte in "
 "the buffer. ::"
 msgstr ""
 
-#: library/stdtypes.rst:3925
+#: library/stdtypes.rst:3931
 msgid ""
 ">>> m = memoryview(b\"abc\")\n"
 ">>> m.hex()\n"
 "'616263'"
 msgstr ""
 
-#: library/stdtypes.rst:3931
+#: library/stdtypes.rst:3937
 msgid ""
 "Similar to :meth:`bytes.hex`, :meth:`memoryview.hex` now supports optional "
 "*sep* and *bytes_per_sep* parameters to insert separators between bytes in "
 "the hex output."
 msgstr ""
 
-#: library/stdtypes.rst:3938
+#: library/stdtypes.rst:3944
 msgid "Return the data in the buffer as a list of elements. ::"
 msgstr ""
 
-#: library/stdtypes.rst:3940
+#: library/stdtypes.rst:3946
 msgid ""
 ">>> memoryview(b'abc').tolist()\n"
 "[97, 98, 99]\n"
@@ -5736,19 +5743,19 @@ msgid ""
 "[1.1, 2.2, 3.3]"
 msgstr ""
 
-#: library/stdtypes.rst:3948
+#: library/stdtypes.rst:3954
 msgid ""
 ":meth:`tolist` now supports all single character native formats in :mod:"
 "`struct` module syntax as well as multi-dimensional representations."
 msgstr ""
 
-#: library/stdtypes.rst:3955
+#: library/stdtypes.rst:3961
 msgid ""
 "Return a readonly version of the memoryview object.  The original memoryview "
 "object is unchanged. ::"
 msgstr ""
 
-#: library/stdtypes.rst:3958
+#: library/stdtypes.rst:3964
 msgid ""
 ">>> m = memoryview(bytearray(b'abc'))\n"
 ">>> mm = m.toreadonly()\n"
@@ -5763,7 +5770,7 @@ msgid ""
 "[43, 98, 99]"
 msgstr ""
 
-#: library/stdtypes.rst:3974
+#: library/stdtypes.rst:3980
 msgid ""
 "Release the underlying buffer exposed by the memoryview object.  Many "
 "objects take special actions when a view is held on them (for example, a :"
@@ -5772,14 +5779,14 @@ msgid ""
 "resources) as soon as possible."
 msgstr ""
 
-#: library/stdtypes.rst:3980
+#: library/stdtypes.rst:3986
 msgid ""
 "After this method has been called, any further operation on the view raises "
 "a :class:`ValueError` (except :meth:`release` itself which can be called "
 "multiple times)::"
 msgstr ""
 
-#: library/stdtypes.rst:3984
+#: library/stdtypes.rst:3990
 msgid ""
 ">>> m = memoryview(b'abc')\n"
 ">>> m.release()\n"
@@ -5789,13 +5796,13 @@ msgid ""
 "ValueError: operation forbidden on released memoryview object"
 msgstr ""
 
-#: library/stdtypes.rst:3991
+#: library/stdtypes.rst:3997
 msgid ""
 "The context management protocol can be used for a similar effect, using the "
 "``with`` statement::"
 msgstr ""
 
-#: library/stdtypes.rst:3994
+#: library/stdtypes.rst:4000
 msgid ""
 ">>> with memoryview(b'abc') as m:\n"
 "...     m[0]\n"
@@ -5807,7 +5814,7 @@ msgid ""
 "ValueError: operation forbidden on released memoryview object"
 msgstr ""
 
-#: library/stdtypes.rst:4007
+#: library/stdtypes.rst:4013
 msgid ""
 "Cast a memoryview to a new format or shape. *shape* defaults to "
 "``[byte_length//new_itemsize]``, which means that the result view will be "
@@ -5816,7 +5823,7 @@ msgid ""
 "contiguous -> 1D."
 msgstr ""
 
-#: library/stdtypes.rst:4013
+#: library/stdtypes.rst:4019
 msgid ""
 "The destination format is restricted to a single element native format in :"
 "mod:`struct` syntax. One of the formats must be a byte format ('B', 'b' or "
@@ -5824,11 +5831,11 @@ msgid ""
 "Note that all byte lengths may depend on the operating system."
 msgstr ""
 
-#: library/stdtypes.rst:4019
+#: library/stdtypes.rst:4025
 msgid "Cast 1D/long to 1D/unsigned bytes::"
 msgstr ""
 
-#: library/stdtypes.rst:4021
+#: library/stdtypes.rst:4027
 msgid ""
 ">>> import array\n"
 ">>> a = array.array('l', [1,2,3])\n"
@@ -5852,11 +5859,11 @@ msgid ""
 "24"
 msgstr ""
 
-#: library/stdtypes.rst:4042
+#: library/stdtypes.rst:4048
 msgid "Cast 1D/unsigned bytes to 1D/char::"
 msgstr ""
 
-#: library/stdtypes.rst:4044
+#: library/stdtypes.rst:4050
 msgid ""
 ">>> b = bytearray(b'zyz')\n"
 ">>> x = memoryview(b)\n"
@@ -5870,11 +5877,11 @@ msgid ""
 "bytearray(b'ayz')"
 msgstr ""
 
-#: library/stdtypes.rst:4055
+#: library/stdtypes.rst:4061
 msgid "Cast 1D/bytes to 3D/ints to 1D/signed char::"
 msgstr ""
 
-#: library/stdtypes.rst:4057
+#: library/stdtypes.rst:4063
 msgid ""
 ">>> import struct\n"
 ">>> buf = struct.pack(\"i\"*12, *list(range(12)))\n"
@@ -5901,11 +5908,11 @@ msgid ""
 "48"
 msgstr ""
 
-#: library/stdtypes.rst:4081
+#: library/stdtypes.rst:4087
 msgid "Cast 1D/unsigned long to 2D/unsigned long::"
 msgstr ""
 
-#: library/stdtypes.rst:4083
+#: library/stdtypes.rst:4089
 msgid ""
 ">>> buf = struct.pack(\"L\"*6, *list(range(6)))\n"
 ">>> x = memoryview(buf)\n"
@@ -5918,19 +5925,19 @@ msgid ""
 "[[0, 1, 2], [3, 4, 5]]"
 msgstr ""
 
-#: library/stdtypes.rst:4095
+#: library/stdtypes.rst:4101
 msgid "The source format is no longer restricted when casting to a byte view."
 msgstr ""
 
-#: library/stdtypes.rst:4098
+#: library/stdtypes.rst:4104
 msgid "There are also several readonly attributes available:"
 msgstr ""
 
-#: library/stdtypes.rst:4102
+#: library/stdtypes.rst:4108
 msgid "The underlying object of the memoryview::"
 msgstr ""
 
-#: library/stdtypes.rst:4104
+#: library/stdtypes.rst:4110
 msgid ""
 ">>> b  = bytearray(b'xyz')\n"
 ">>> m = memoryview(b)\n"
@@ -5938,14 +5945,14 @@ msgid ""
 "True"
 msgstr ""
 
-#: library/stdtypes.rst:4113
+#: library/stdtypes.rst:4119
 msgid ""
 "``nbytes == product(shape) * itemsize == len(m.tobytes())``. This is the "
 "amount of space in bytes that the array would use in a contiguous "
 "representation. It is not necessarily equal to ``len(m)``::"
 msgstr ""
 
-#: library/stdtypes.rst:4117
+#: library/stdtypes.rst:4123
 msgid ""
 ">>> import array\n"
 ">>> a = array.array('i', [1,2,3,4,5])\n"
@@ -5963,11 +5970,11 @@ msgid ""
 "12"
 msgstr ""
 
-#: library/stdtypes.rst:4132
+#: library/stdtypes.rst:4138
 msgid "Multi-dimensional arrays::"
 msgstr ""
 
-#: library/stdtypes.rst:4134
+#: library/stdtypes.rst:4140
 msgid ""
 ">>> import struct\n"
 ">>> buf = struct.pack(\"d\"*12, *[1.5*x for x in range(12)])\n"
@@ -5981,11 +5988,11 @@ msgid ""
 "96"
 msgstr ""
 
-#: library/stdtypes.rst:4149
+#: library/stdtypes.rst:4155
 msgid "A bool indicating whether the memory is read only."
 msgstr ""
 
-#: library/stdtypes.rst:4153
+#: library/stdtypes.rst:4159
 msgid ""
 "A string containing the format (in :mod:`struct` module style) for each "
 "element in the view. A memoryview can be created from exporters with "
@@ -5993,17 +6000,17 @@ msgid ""
 "restricted to native single element formats."
 msgstr ""
 
-#: library/stdtypes.rst:4158
+#: library/stdtypes.rst:4164
 msgid ""
 "format ``'B'`` is now handled according to the struct module syntax. This "
 "means that ``memoryview(b'abc')[0] == b'abc'[0] == 97``."
 msgstr ""
 
-#: library/stdtypes.rst:4164
+#: library/stdtypes.rst:4170
 msgid "The size in bytes of each element of the memoryview::"
 msgstr ""
 
-#: library/stdtypes.rst:4166
+#: library/stdtypes.rst:4172
 msgid ""
 ">>> import array, struct\n"
 ">>> m = memoryview(array.array('H', [32000, 32001, 32002]))\n"
@@ -6015,49 +6022,49 @@ msgid ""
 "True"
 msgstr ""
 
-#: library/stdtypes.rst:4177
+#: library/stdtypes.rst:4183
 msgid ""
 "An integer indicating how many dimensions of a multi-dimensional array the "
 "memory represents."
 msgstr ""
 
-#: library/stdtypes.rst:4182
+#: library/stdtypes.rst:4188
 msgid ""
 "A tuple of integers the length of :attr:`ndim` giving the shape of the "
 "memory as an N-dimensional array."
 msgstr ""
 
-#: library/stdtypes.rst:4193
+#: library/stdtypes.rst:4199
 msgid "An empty tuple instead of ``None`` when ndim = 0."
 msgstr ""
 
-#: library/stdtypes.rst:4190
+#: library/stdtypes.rst:4196
 msgid ""
 "A tuple of integers the length of :attr:`ndim` giving the size in bytes to "
 "access each element for each dimension of the array."
 msgstr ""
 
-#: library/stdtypes.rst:4198
+#: library/stdtypes.rst:4204
 msgid "Used internally for PIL-style arrays. The value is informational only."
 msgstr ""
 
-#: library/stdtypes.rst:4202
+#: library/stdtypes.rst:4208
 msgid "A bool indicating whether the memory is C-:term:`contiguous`."
 msgstr "Belleğin C-:term:`contiguous` olup olmadığını gösteren bir bool."
 
-#: library/stdtypes.rst:4208
+#: library/stdtypes.rst:4214
 msgid "A bool indicating whether the memory is Fortran :term:`contiguous`."
 msgstr "Belleğin Fortran :term:`contiguous` olup olmadığını gösteren bir bool."
 
-#: library/stdtypes.rst:4214
+#: library/stdtypes.rst:4220
 msgid "A bool indicating whether the memory is :term:`contiguous`."
 msgstr "Belleğin :term:`contiguous` olup olmadığını gösteren bir bool."
 
-#: library/stdtypes.rst:4222
+#: library/stdtypes.rst:4228
 msgid "Set Types --- :class:`set`, :class:`frozenset`"
 msgstr "Set Türleri --- :class:`set`, :class:`frozenset`"
 
-#: library/stdtypes.rst:4226
+#: library/stdtypes.rst:4232
 msgid ""
 "A :dfn:`set` object is an unordered collection of distinct :term:`hashable` "
 "objects. Common uses include membership testing, removing duplicates from a "
@@ -6073,7 +6080,7 @@ msgstr ""
 "için yerleşik :class:`dict`, :class:`list` ve :class:`tuple` sınıflarına ve :"
 "mod:`collections` modülüne bakın)"
 
-#: library/stdtypes.rst:4233
+#: library/stdtypes.rst:4239
 msgid ""
 "Like other collections, sets support ``x in set``, ``len(set)``, and ``for x "
 "in set``.  Being an unordered collection, sets do not record element "
@@ -6085,7 +6092,7 @@ msgstr ""
 "eleman konumunu veya ekleme sırasını kaydetmez.  Buna göre, kümeler "
 "dizinleme, dilimleme veya sıra benzeri davranışları desteklemez."
 
-#: library/stdtypes.rst:4238
+#: library/stdtypes.rst:4244
 msgid ""
 "There are currently two built-in set types, :class:`set` and :class:"
 "`frozenset`. The :class:`set` type is mutable --- the contents can be "
@@ -6104,7 +6111,7 @@ msgstr ""
 "term:`hashable` --- içeriği oluşturulduktan sonra değiştirilemez; bu nedenle "
 "bir sözlük anahtarı veya başka bir kümenin öğesi olarak kullanılabilir."
 
-#: library/stdtypes.rst:4246
+#: library/stdtypes.rst:4252
 msgid ""
 "Non-empty sets (not frozensets) can be created by placing a comma-separated "
 "list of elements within braces, for example: ``{'jack', 'sjoerd'}``, in "
@@ -6114,11 +6121,11 @@ msgstr ""
 "parantez içine virgülle ayrılmış bir öğe listesi yerleştirilerek "
 "oluşturulabilir, örneğin: ``{'jack', 'sjoerd'}``."
 
-#: library/stdtypes.rst:4250
+#: library/stdtypes.rst:4256
 msgid "The constructors for both classes work the same:"
 msgstr "Her iki sınıfın kurucuları aynı şekilde çalışır:"
 
-#: library/stdtypes.rst:4255
+#: library/stdtypes.rst:4261
 msgid ""
 "Return a new set or frozenset object whose elements are taken from "
 "*iterable*.  The elements of a set must be :term:`hashable`.  To represent "
@@ -6130,24 +6137,24 @@ msgstr ""
 "kümelerini temsil etmek için, iç kümeler :class:`frozenset` nesneleri "
 "olmalıdır.  Eğer *iterable* belirtilmemişse, yeni bir boş küme döndürülür."
 
-#: library/stdtypes.rst:4261
+#: library/stdtypes.rst:4267
 msgid "Sets can be created by several means:"
 msgstr "Setler çeşitli yollarla oluşturulabilir:"
 
-#: library/stdtypes.rst:4263
+#: library/stdtypes.rst:4269
 msgid ""
 "Use a comma-separated list of elements within braces: ``{'jack', 'sjoerd'}``"
 msgstr ""
 "Parantez içinde virgülle ayrılmış bir öğe listesi kullanın: ``{'jack', "
 "'sjoerd'}``"
 
-#: library/stdtypes.rst:4264
+#: library/stdtypes.rst:4270
 msgid ""
 "Use a set comprehension: ``{c for c in 'abracadabra' if c not in 'abc'}``"
 msgstr ""
 "Bir küme kavrayışı kullanın: ``{c for c in 'abracadabra' if c not in 'abc'}``"
 
-#: library/stdtypes.rst:4265
+#: library/stdtypes.rst:4271
 msgid ""
 "Use the type constructor: ``set()``, ``set('foobar')``, ``set(['a', 'b', "
 "'foo'])``"
@@ -6155,26 +6162,26 @@ msgstr ""
 "Tür kurucusunu kullanın: ``set()``, ``set('foobar')``, ``set(['a', 'b', "
 "'foo'])``"
 
-#: library/stdtypes.rst:4267
+#: library/stdtypes.rst:4273
 msgid ""
 "Instances of :class:`set` and :class:`frozenset` provide the following "
 "operations:"
 msgstr ""
 ":class:`set` ve :class:`frozenset` örnekleri aşağıdaki işlemleri sağlar:"
 
-#: library/stdtypes.rst:4272
+#: library/stdtypes.rst:4278
 msgid "Return the number of elements in set *s* (cardinality of *s*)."
 msgstr "*s* kümesindeki eleman sayısını döndürür (*s*'nin kardinalitesi)."
 
-#: library/stdtypes.rst:4276
+#: library/stdtypes.rst:4282
 msgid "Test *x* for membership in *s*."
 msgstr "*x*'i *s* üyeliği için test edin."
 
-#: library/stdtypes.rst:4280
+#: library/stdtypes.rst:4286
 msgid "Test *x* for non-membership in *s*."
 msgstr "*x*'in *s*'ye üye olup olmadığını test edin."
 
-#: library/stdtypes.rst:4284
+#: library/stdtypes.rst:4290
 msgid ""
 "Return ``True`` if the set has no elements in common with *other*.  Sets are "
 "disjoint if and only if their intersection is the empty set."
@@ -6182,11 +6189,11 @@ msgstr ""
 "Kümenin *other* kümelerle ortak hiçbir elemanı yoksa ``True`` döndürür.  "
 "Kümeler, ancak ve ancak kesişimleri boş küme ise ayrıktır."
 
-#: library/stdtypes.rst:4290
+#: library/stdtypes.rst:4296
 msgid "Test whether every element in the set is in *other*."
 msgstr "Kümedeki her elemanın *other* içinde olup olmadığını test edin."
 
-#: library/stdtypes.rst:4294
+#: library/stdtypes.rst:4300
 msgid ""
 "Test whether the set is a proper subset of *other*, that is, ``set <= other "
 "and set != other``."
@@ -6194,11 +6201,11 @@ msgstr ""
 "Kümenin *other* kümenin uygun bir alt kümesi olup olmadığını, yani ``set <= "
 "other and set != other`` olup olmadığını test eder."
 
-#: library/stdtypes.rst:4300
+#: library/stdtypes.rst:4306
 msgid "Test whether every element in *other* is in the set."
 msgstr "Kümedeki her elemanın *other* içinde olup olmadığını test edin."
 
-#: library/stdtypes.rst:4304
+#: library/stdtypes.rst:4310
 msgid ""
 "Test whether the set is a proper superset of *other*, that is, ``set >= "
 "other and set != other``."
@@ -6206,33 +6213,33 @@ msgstr ""
 "Kümenin *other* kümenin uygun bir üst kümesi olup olmadığını, yani ``set >= "
 "other and set != other`` olup olmadığını test edin."
 
-#: library/stdtypes.rst:4310
+#: library/stdtypes.rst:4316
 msgid "Return a new set with elements from the set and all others."
 msgstr ""
 "Kümedeki ve diğer tüm kümelerdeki elemanları içeren yeni bir küme döndürür."
 
-#: library/stdtypes.rst:4315
+#: library/stdtypes.rst:4321
 msgid "Return a new set with elements common to the set and all others."
 msgstr ""
 "Küme ve diğer tüm kümeler için ortak öğeler içeren yeni bir küme döndürür."
 
-#: library/stdtypes.rst:4320
+#: library/stdtypes.rst:4326
 msgid "Return a new set with elements in the set that are not in the others."
 msgstr ""
 "Küme içinde diğerlerinde olmayan elemanlar içeren yeni bir küme döndürür."
 
-#: library/stdtypes.rst:4325
+#: library/stdtypes.rst:4331
 msgid ""
 "Return a new set with elements in either the set or *other* but not both."
 msgstr ""
 "Elemanları ya kümede ya da *diğer* kümede olan ancak her ikisinde de olmayan "
 "yeni bir küme döndürür."
 
-#: library/stdtypes.rst:4329
+#: library/stdtypes.rst:4335
 msgid "Return a shallow copy of the set."
 msgstr "Kümenin yüzeysel bir kopyasını döndürür."
 
-#: library/stdtypes.rst:4332
+#: library/stdtypes.rst:4338
 msgid ""
 "Note, the non-operator versions of :meth:`union`, :meth:`intersection`, :"
 "meth:`difference`, :meth:`symmetric_difference`, :meth:`issubset`, and :meth:"
@@ -6250,7 +6257,7 @@ msgstr ""
 "\n"
 "Translated with www.DeepL.com/Translator (free version)"
 
-#: library/stdtypes.rst:4339
+#: library/stdtypes.rst:4345
 msgid ""
 "Both :class:`set` and :class:`frozenset` support set to set comparisons. Two "
 "sets are equal if and only if every element of each set is contained in the "
@@ -6269,7 +6276,7 @@ msgstr ""
 "\n"
 "Translated with www.DeepL.com/Translator (free version)"
 
-#: library/stdtypes.rst:4346
+#: library/stdtypes.rst:4352
 msgid ""
 "Instances of :class:`set` are compared to instances of :class:`frozenset` "
 "based on their members.  For example, ``set('abc') == frozenset('abc')`` "
@@ -6279,7 +6286,7 @@ msgstr ""
 "karşılaştırılır.  Örneğin, ``set('abc') == frozenset('abc')`` ``True`` "
 "döndürür ve ``set('abc') in set([frozenset('abc')])`` de öyle."
 
-#: library/stdtypes.rst:4350
+#: library/stdtypes.rst:4356
 msgid ""
 "The subset and equality comparisons do not generalize to a total ordering "
 "function.  For example, any two nonempty disjoint sets are not equal and are "
@@ -6291,7 +6298,7 @@ msgstr ""
 "değildir ve birbirinin alt kümesi değildir, bu nedenle aşağıdakilerin *all* "
 "``Yanlış`` döndürür: ``a<b``, ``a==b`` veya ``a>b``."
 
-#: library/stdtypes.rst:4355
+#: library/stdtypes.rst:4361
 msgid ""
 "Since sets only define partial ordering (subset relationships), the output "
 "of the :meth:`list.sort` method is undefined for lists of sets."
@@ -6299,11 +6306,11 @@ msgstr ""
 "Kümeler yalnızca kısmi sıralama (alt küme ilişkileri) tanımladığından, :meth:"
 "`list.sort` yönteminin çıktısı küme listeleri için tanımsızdır."
 
-#: library/stdtypes.rst:4358
+#: library/stdtypes.rst:4364
 msgid "Set elements, like dictionary keys, must be :term:`hashable`."
 msgstr "Sözlük anahtarları gibi küme öğeleri de :term:`hashable` olmalıdır."
 
-#: library/stdtypes.rst:4360
+#: library/stdtypes.rst:4366
 msgid ""
 "Binary operations that mix :class:`set` instances with :class:`frozenset` "
 "return the type of the first operand.  For example: ``frozenset('ab') | "
@@ -6313,7 +6320,7 @@ msgstr ""
 "ilk işlenenin türünü döndürür.  Örneğin: ``frozenset('ab') | set('bc')`` "
 "bir :class:`frozenset` örneği döndürür."
 
-#: library/stdtypes.rst:4364
+#: library/stdtypes.rst:4370
 msgid ""
 "The following table lists operations available for :class:`set` that do not "
 "apply to immutable instances of :class:`frozenset`:"
@@ -6321,31 +6328,31 @@ msgstr ""
 "Aşağıdaki tabloda :class:`set` için kullanılabilen ve :class:`frozenset` 'in "
 "değişmez örneklerine uygulanmayan işlemler listelenmektedir:"
 
-#: library/stdtypes.rst:4370
+#: library/stdtypes.rst:4376
 msgid "Update the set, adding elements from all others."
 msgstr "Diğer tüm öğeleri ekleyerek seti güncelleyin."
 
-#: library/stdtypes.rst:4375
+#: library/stdtypes.rst:4381
 msgid "Update the set, keeping only elements found in it and all others."
 msgstr ""
 "Yalnızca içinde bulunan öğeleri ve diğerlerini koruyarak seti güncelleyin."
 
-#: library/stdtypes.rst:4380
+#: library/stdtypes.rst:4386
 msgid "Update the set, removing elements found in others."
 msgstr "Diğerlerinde bulunan öğeleri kaldırarak kümeyi güncelleyin."
 
-#: library/stdtypes.rst:4385
+#: library/stdtypes.rst:4391
 msgid ""
 "Update the set, keeping only elements found in either set, but not in both."
 msgstr ""
 "Kümeyi güncelleyin, yalnızca her iki kümede de bulunan öğeleri saklayın, "
 "ancak her ikisinde de bulunmayın."
 
-#: library/stdtypes.rst:4389
+#: library/stdtypes.rst:4395
 msgid "Add element *elem* to the set."
 msgstr "Kümeye *elem* öğesini ekleyin."
 
-#: library/stdtypes.rst:4393
+#: library/stdtypes.rst:4399
 msgid ""
 "Remove element *elem* from the set.  Raises :exc:`KeyError` if *elem* is not "
 "contained in the set."
@@ -6353,11 +6360,11 @@ msgstr ""
 "Kümeden *elem* elemanını kaldırır.  Eğer *elem* kümede bulunmuyorsa :exc:"
 "`KeyError` değerini yükseltir."
 
-#: library/stdtypes.rst:4398
+#: library/stdtypes.rst:4404
 msgid "Remove element *elem* from the set if it is present."
 msgstr "Eğer varsa *elem* öğesini kümeden kaldırır."
 
-#: library/stdtypes.rst:4402
+#: library/stdtypes.rst:4408
 msgid ""
 "Remove and return an arbitrary element from the set.  Raises :exc:`KeyError` "
 "if the set is empty."
@@ -6365,11 +6372,11 @@ msgstr ""
 "Kümeden rastgele bir elemanı kaldırır ve döndürür.  Küme boşsa :exc:"
 "`KeyError` değerini yükseltir."
 
-#: library/stdtypes.rst:4407
+#: library/stdtypes.rst:4413
 msgid "Remove all elements from the set."
 msgstr "Kümeden tüm öğeleri kaldırın."
 
-#: library/stdtypes.rst:4410
+#: library/stdtypes.rst:4416
 msgid ""
 "Note, the non-operator versions of the :meth:`update`, :meth:"
 "`intersection_update`, :meth:`difference_update`, and :meth:"
@@ -6380,7 +6387,7 @@ msgstr ""
 "ve :meth:`symmetric_difference_update` metotlarının operatör olmayan "
 "versiyonları herhangi bir iterable'ı argüman olarak kabul edecektir."
 
-#: library/stdtypes.rst:4415
+#: library/stdtypes.rst:4421
 #, fuzzy
 msgid ""
 "Note, the *elem* argument to the :meth:`~object.__contains__`, :meth:"
@@ -6391,11 +6398,11 @@ msgstr ""
 "*elem* argümanı bir küme olabilir.  Eş değer bir frozenset aramayı "
 "desteklemek için, *elem*'den geçici bir tane oluşturulur."
 
-#: library/stdtypes.rst:4424
+#: library/stdtypes.rst:4430
 msgid "Mapping Types --- :class:`dict`"
 msgstr "Mapping Types --- :class:`dict`"
 
-#: library/stdtypes.rst:4434
+#: library/stdtypes.rst:4440
 msgid ""
 "A :term:`mapping` object maps :term:`hashable` values to arbitrary objects. "
 "Mappings are mutable objects.  There is currently only one standard mapping "
@@ -6409,7 +6416,7 @@ msgstr ""
 "class:`list`, :class:`set` ve :class:`tuple` sınıflarına ve :mod:"
 "`collections` modülüne bakın)."
 
-#: library/stdtypes.rst:4440
+#: library/stdtypes.rst:4446
 msgid ""
 "A dictionary's keys are *almost* arbitrary values.  Values that are not :"
 "term:`hashable`, that is, values containing lists, dictionaries or other "
@@ -6424,7 +6431,7 @@ msgstr ""
 "``True`` gibi) aynı sözlük girdisini indekslemek için birbirinin yerine "
 "kullanılabilir."
 
-#: library/stdtypes.rst:4451
+#: library/stdtypes.rst:4457
 msgid ""
 "Return a new dictionary initialized from an optional positional argument and "
 "a possibly empty set of keyword arguments."
@@ -6432,27 +6439,27 @@ msgstr ""
 "İsteğe bağlı bir konumsal bağımsız değişken ve muhtemelen boş bir anahtar "
 "sözcük bağımsız değişken kümesinden başlatılan yeni bir sözlük döndürür."
 
-#: library/stdtypes.rst:4454
+#: library/stdtypes.rst:4460
 msgid "Dictionaries can be created by several means:"
 msgstr "Sözlükler çeşitli yollarla oluşturulabilir:"
 
-#: library/stdtypes.rst:4456
+#: library/stdtypes.rst:4462
 msgid ""
 "Use a comma-separated list of ``key: value`` pairs within braces: ``{'jack': "
 "4098, 'sjoerd': 4127}`` or ``{4098: 'jack', 4127: 'sjoerd'}``"
 msgstr ""
 
-#: library/stdtypes.rst:4458
+#: library/stdtypes.rst:4464
 msgid "Use a dict comprehension: ``{}``, ``{x: x ** 2 for x in range(10)}``"
 msgstr ""
 
-#: library/stdtypes.rst:4459
+#: library/stdtypes.rst:4465
 msgid ""
 "Use the type constructor: ``dict()``, ``dict([('foo', 100), ('bar', "
 "200)])``, ``dict(foo=100, bar=200)``"
 msgstr ""
 
-#: library/stdtypes.rst:4462
+#: library/stdtypes.rst:4468
 msgid ""
 "If no positional argument is given, an empty dictionary is created. If a "
 "positional argument is given and it defines a ``keys()`` method, a "
@@ -6465,7 +6472,7 @@ msgid ""
 "that key becomes the corresponding value in the new dictionary."
 msgstr ""
 
-#: library/stdtypes.rst:4472
+#: library/stdtypes.rst:4478
 msgid ""
 "If keyword arguments are given, the keyword arguments and their values are "
 "added to the dictionary created from the positional argument.  If a key "
@@ -6473,13 +6480,13 @@ msgid ""
 "the value from the positional argument."
 msgstr ""
 
-#: library/stdtypes.rst:4477
+#: library/stdtypes.rst:4483
 msgid ""
 "To illustrate, the following examples all return a dictionary equal to "
 "``{\"one\": 1, \"two\": 2, \"three\": 3}``::"
 msgstr ""
 
-#: library/stdtypes.rst:4480
+#: library/stdtypes.rst:4486
 msgid ""
 ">>> a = dict(one=1, two=2, three=3)\n"
 ">>> b = {'one': 1, 'two': 2, 'three': 3}\n"
@@ -6491,33 +6498,33 @@ msgid ""
 "True"
 msgstr ""
 
-#: library/stdtypes.rst:4489
+#: library/stdtypes.rst:4495
 msgid ""
 "Providing keyword arguments as in the first example only works for keys that "
 "are valid Python identifiers.  Otherwise, any valid keys can be used."
 msgstr ""
 
-#: library/stdtypes.rst:4493
+#: library/stdtypes.rst:4499
 msgid ""
 "These are the operations that dictionaries support (and therefore, custom "
 "mapping types should support too):"
 msgstr ""
 
-#: library/stdtypes.rst:4498
+#: library/stdtypes.rst:4504
 msgid "Return a list of all the keys used in the dictionary *d*."
 msgstr ""
 
-#: library/stdtypes.rst:4502
+#: library/stdtypes.rst:4508
 msgid "Return the number of items in the dictionary *d*."
 msgstr ""
 
-#: library/stdtypes.rst:4506
+#: library/stdtypes.rst:4512
 msgid ""
 "Return the item of *d* with key *key*.  Raises a :exc:`KeyError` if *key* is "
 "not in the map."
 msgstr ""
 
-#: library/stdtypes.rst:4511
+#: library/stdtypes.rst:4517
 msgid ""
 "If a subclass of dict defines a method :meth:`__missing__` and *key* is not "
 "present, the ``d[key]`` operation calls that method with the key *key* as "
@@ -6528,7 +6535,7 @@ msgid ""
 "an instance variable::"
 msgstr ""
 
-#: library/stdtypes.rst:4519
+#: library/stdtypes.rst:4525
 msgid ""
 ">>> class Counter(dict):\n"
 "...     def __missing__(self, key):\n"
@@ -6542,51 +6549,51 @@ msgid ""
 "1"
 msgstr ""
 
-#: library/stdtypes.rst:4530
+#: library/stdtypes.rst:4536
 msgid ""
 "The example above shows part of the implementation of :class:`collections."
 "Counter`.  A different ``__missing__`` method is used by :class:`collections."
 "defaultdict`."
 msgstr ""
 
-#: library/stdtypes.rst:4536
+#: library/stdtypes.rst:4542
 msgid "Set ``d[key]`` to *value*."
 msgstr ""
 
-#: library/stdtypes.rst:4540
+#: library/stdtypes.rst:4546
 msgid ""
 "Remove ``d[key]`` from *d*.  Raises a :exc:`KeyError` if *key* is not in the "
 "map."
 msgstr ""
 
-#: library/stdtypes.rst:4545
+#: library/stdtypes.rst:4551
 msgid "Return ``True`` if *d* has a key *key*, else ``False``."
 msgstr ""
 
-#: library/stdtypes.rst:4549
+#: library/stdtypes.rst:4555
 msgid "Equivalent to ``not key in d``."
 msgstr ""
 
-#: library/stdtypes.rst:4553
+#: library/stdtypes.rst:4559
 msgid ""
 "Return an iterator over the keys of the dictionary.  This is a shortcut for "
 "``iter(d.keys())``."
 msgstr ""
 
-#: library/stdtypes.rst:4558
+#: library/stdtypes.rst:4564
 msgid "Remove all items from the dictionary."
 msgstr ""
 
-#: library/stdtypes.rst:4562
+#: library/stdtypes.rst:4568
 msgid "Return a shallow copy of the dictionary."
 msgstr ""
 
-#: library/stdtypes.rst:4566
+#: library/stdtypes.rst:4572
 msgid ""
 "Create a new dictionary with keys from *iterable* and values set to *value*."
 msgstr ""
 
-#: library/stdtypes.rst:4568
+#: library/stdtypes.rst:4574
 msgid ""
 ":meth:`fromkeys` is a class method that returns a new dictionary. *value* "
 "defaults to ``None``.  All of the values refer to just a single instance, so "
@@ -6595,70 +6602,70 @@ msgid ""
 "<dict>` instead."
 msgstr ""
 
-#: library/stdtypes.rst:4576
+#: library/stdtypes.rst:4582
 msgid ""
 "Return the value for *key* if *key* is in the dictionary, else *default*. If "
 "*default* is not given, it defaults to ``None``, so that this method never "
 "raises a :exc:`KeyError`."
 msgstr ""
 
-#: library/stdtypes.rst:4582
+#: library/stdtypes.rst:4588
 msgid ""
 "Return a new view of the dictionary's items (``(key, value)`` pairs). See "
 "the :ref:`documentation of view objects <dict-views>`."
 msgstr ""
 
-#: library/stdtypes.rst:4587
+#: library/stdtypes.rst:4593
 msgid ""
 "Return a new view of the dictionary's keys.  See the :ref:`documentation of "
 "view objects <dict-views>`."
 msgstr ""
 
-#: library/stdtypes.rst:4592
+#: library/stdtypes.rst:4598
 msgid ""
 "If *key* is in the dictionary, remove it and return its value, else return "
 "*default*.  If *default* is not given and *key* is not in the dictionary, a :"
 "exc:`KeyError` is raised."
 msgstr ""
 
-#: library/stdtypes.rst:4598
+#: library/stdtypes.rst:4604
 msgid ""
 "Remove and return a ``(key, value)`` pair from the dictionary. Pairs are "
 "returned in :abbr:`LIFO (last-in, first-out)` order."
 msgstr ""
 
-#: library/stdtypes.rst:4601
+#: library/stdtypes.rst:4607
 msgid ""
 ":meth:`popitem` is useful to destructively iterate over a dictionary, as "
 "often used in set algorithms.  If the dictionary is empty, calling :meth:"
 "`popitem` raises a :exc:`KeyError`."
 msgstr ""
 
-#: library/stdtypes.rst:4605
+#: library/stdtypes.rst:4611
 msgid ""
 "LIFO order is now guaranteed. In prior versions, :meth:`popitem` would "
 "return an arbitrary key/value pair."
 msgstr ""
 
-#: library/stdtypes.rst:4611
+#: library/stdtypes.rst:4617
 msgid ""
 "Return a reverse iterator over the keys of the dictionary. This is a "
 "shortcut for ``reversed(d.keys())``."
 msgstr ""
 
-#: library/stdtypes.rst:4618
+#: library/stdtypes.rst:4624
 msgid ""
 "If *key* is in the dictionary, return its value.  If not, insert *key* with "
 "a value of *default* and return *default*.  *default* defaults to ``None``."
 msgstr ""
 
-#: library/stdtypes.rst:4624
+#: library/stdtypes.rst:4630
 msgid ""
 "Update the dictionary with the key/value pairs from *other*, overwriting "
 "existing keys.  Return ``None``."
 msgstr ""
 
-#: library/stdtypes.rst:4627
+#: library/stdtypes.rst:4633
 msgid ""
 ":meth:`update` accepts either another object with a ``keys()`` method (in "
 "which case :meth:`~object.__getitem__` is called with every key returned "
@@ -6667,54 +6674,54 @@ msgid ""
 "is then updated with those key/value pairs: ``d.update(red=1, blue=2)``."
 msgstr ""
 
-#: library/stdtypes.rst:4635
+#: library/stdtypes.rst:4641
 msgid ""
 "Return a new view of the dictionary's values.  See the :ref:`documentation "
 "of view objects <dict-views>`."
 msgstr ""
 
-#: library/stdtypes.rst:4638
+#: library/stdtypes.rst:4644
 msgid ""
 "An equality comparison between one ``dict.values()`` view and another will "
 "always return ``False``. This also applies when comparing ``dict.values()`` "
 "to itself::"
 msgstr ""
 
-#: library/stdtypes.rst:4642
+#: library/stdtypes.rst:4648
 msgid ""
 ">>> d = {'a': 1}\n"
 ">>> d.values() == d.values()\n"
 "False"
 msgstr ""
 
-#: library/stdtypes.rst:4648
+#: library/stdtypes.rst:4654
 msgid ""
 "Create a new dictionary with the merged keys and values of *d* and *other*, "
 "which must both be dictionaries. The values of *other* take priority when "
 "*d* and *other* share keys."
 msgstr ""
 
-#: library/stdtypes.rst:4656
+#: library/stdtypes.rst:4662
 msgid ""
 "Update the dictionary *d* with keys and values from *other*, which may be "
 "either a :term:`mapping` or an :term:`iterable` of key/value pairs. The "
 "values of *other* take priority when *d* and *other* share keys."
 msgstr ""
 
-#: library/stdtypes.rst:4662
+#: library/stdtypes.rst:4668
 msgid ""
 "Dictionaries compare equal if and only if they have the same ``(key, "
 "value)`` pairs (regardless of ordering). Order comparisons ('<', '<=', '>=', "
 "'>') raise :exc:`TypeError`."
 msgstr ""
 
-#: library/stdtypes.rst:4666
+#: library/stdtypes.rst:4672
 msgid ""
 "Dictionaries preserve insertion order.  Note that updating a key does not "
 "affect the order.  Keys added after deletion are inserted at the end. ::"
 msgstr ""
 
-#: library/stdtypes.rst:4669
+#: library/stdtypes.rst:4675
 msgid ""
 ">>> d = {\"one\": 1, \"two\": 2, \"three\": 3, \"four\": 4}\n"
 ">>> d\n"
@@ -6732,17 +6739,17 @@ msgid ""
 "{'one': 42, 'three': 3, 'four': 4, 'two': None}"
 msgstr ""
 
-#: library/stdtypes.rst:4684
+#: library/stdtypes.rst:4690
 msgid ""
 "Dictionary order is guaranteed to be insertion order.  This behavior was an "
 "implementation detail of CPython from 3.6."
 msgstr ""
 
-#: library/stdtypes.rst:4688
+#: library/stdtypes.rst:4694
 msgid "Dictionaries and dictionary views are reversible. ::"
 msgstr ""
 
-#: library/stdtypes.rst:4690
+#: library/stdtypes.rst:4696
 msgid ""
 ">>> d = {\"one\": 1, \"two\": 2, \"three\": 3, \"four\": 4}\n"
 ">>> d\n"
@@ -6755,21 +6762,21 @@ msgid ""
 "[('four', 4), ('three', 3), ('two', 2), ('one', 1)]"
 msgstr ""
 
-#: library/stdtypes.rst:4700
+#: library/stdtypes.rst:4706
 msgid "Dictionaries are now reversible."
 msgstr ""
 
-#: library/stdtypes.rst:4705
+#: library/stdtypes.rst:4711
 msgid ""
 ":class:`types.MappingProxyType` can be used to create a read-only view of a :"
 "class:`dict`."
 msgstr ""
 
-#: library/stdtypes.rst:4712
+#: library/stdtypes.rst:4718
 msgid "Dictionary view objects"
 msgstr ""
 
-#: library/stdtypes.rst:4714
+#: library/stdtypes.rst:4720
 msgid ""
 "The objects returned by :meth:`dict.keys`, :meth:`dict.values` and :meth:"
 "`dict.items` are *view objects*.  They provide a dynamic view on the "
@@ -6777,23 +6784,23 @@ msgid ""
 "reflects these changes."
 msgstr ""
 
-#: library/stdtypes.rst:4719
+#: library/stdtypes.rst:4725
 msgid ""
 "Dictionary views can be iterated over to yield their respective data, and "
 "support membership tests:"
 msgstr ""
 
-#: library/stdtypes.rst:4724
+#: library/stdtypes.rst:4730
 msgid "Return the number of entries in the dictionary."
 msgstr ""
 
-#: library/stdtypes.rst:4728
+#: library/stdtypes.rst:4734
 msgid ""
 "Return an iterator over the keys, values or items (represented as tuples of "
 "``(key, value)``) in the dictionary."
 msgstr ""
 
-#: library/stdtypes.rst:4731
+#: library/stdtypes.rst:4737
 msgid ""
 "Keys and values are iterated over in insertion order. This allows the "
 "creation of ``(value, key)`` pairs using :func:`zip`: ``pairs = zip(d."
@@ -6801,39 +6808,39 @@ msgid ""
 "[(v, k) for (k, v) in d.items()]``."
 msgstr ""
 
-#: library/stdtypes.rst:4736
+#: library/stdtypes.rst:4742
 msgid ""
 "Iterating views while adding or deleting entries in the dictionary may raise "
 "a :exc:`RuntimeError` or fail to iterate over all entries."
 msgstr ""
 
-#: library/stdtypes.rst:4739
+#: library/stdtypes.rst:4745
 msgid "Dictionary order is guaranteed to be insertion order."
 msgstr ""
 
-#: library/stdtypes.rst:4744
+#: library/stdtypes.rst:4750
 msgid ""
 "Return ``True`` if *x* is in the underlying dictionary's keys, values or "
 "items (in the latter case, *x* should be a ``(key, value)`` tuple)."
 msgstr ""
 
-#: library/stdtypes.rst:4749
+#: library/stdtypes.rst:4755
 msgid ""
 "Return a reverse iterator over the keys, values or items of the dictionary. "
 "The view will be iterated in reverse order of the insertion."
 msgstr ""
 
-#: library/stdtypes.rst:4752
+#: library/stdtypes.rst:4758
 msgid "Dictionary views are now reversible."
 msgstr ""
 
-#: library/stdtypes.rst:4757
+#: library/stdtypes.rst:4763
 msgid ""
 "Return a :class:`types.MappingProxyType` that wraps the original dictionary "
 "to which the view refers."
 msgstr ""
 
-#: library/stdtypes.rst:4762
+#: library/stdtypes.rst:4768
 msgid ""
 "Keys views are set-like since their entries are unique and :term:`hashable`. "
 "Items views also have set-like operations since the (key, value) pairs are "
@@ -6847,11 +6854,11 @@ msgid ""
 "input."
 msgstr ""
 
-#: library/stdtypes.rst:4774
+#: library/stdtypes.rst:4780
 msgid "An example of dictionary view usage::"
 msgstr ""
 
-#: library/stdtypes.rst:4776
+#: library/stdtypes.rst:4782
 msgid ""
 ">>> dishes = {'eggs': 2, 'sausage': 1, 'bacon': 1, 'spam': 500}\n"
 ">>> keys = dishes.keys()\n"
@@ -6892,11 +6899,11 @@ msgid ""
 "500"
 msgstr ""
 
-#: library/stdtypes.rst:4818
+#: library/stdtypes.rst:4824
 msgid "Context Manager Types"
 msgstr "Bağlam Yöneticisi Türleri"
 
-#: library/stdtypes.rst:4825
+#: library/stdtypes.rst:4831
 msgid ""
 "Python's :keyword:`with` statement supports the concept of a runtime context "
 "defined by a context manager.  This is implemented using a pair of methods "
@@ -6904,7 +6911,7 @@ msgid ""
 "before the statement body is executed and exited when the statement ends:"
 msgstr ""
 
-#: library/stdtypes.rst:4833
+#: library/stdtypes.rst:4839
 msgid ""
 "Enter the runtime context and return either this object or another object "
 "related to the runtime context. The value returned by this method is bound "
@@ -6912,14 +6919,14 @@ msgid ""
 "using this context manager."
 msgstr ""
 
-#: library/stdtypes.rst:4838
+#: library/stdtypes.rst:4844
 msgid ""
 "An example of a context manager that returns itself is a :term:`file "
 "object`. File objects return themselves from __enter__() to allow :func:"
 "`open` to be used as the context expression in a :keyword:`with` statement."
 msgstr ""
 
-#: library/stdtypes.rst:4842
+#: library/stdtypes.rst:4848
 msgid ""
 "An example of a context manager that returns a related object is the one "
 "returned by :func:`decimal.localcontext`. These managers set the active "
@@ -6929,7 +6936,7 @@ msgid ""
 "the :keyword:`!with` statement."
 msgstr ""
 
-#: library/stdtypes.rst:4852
+#: library/stdtypes.rst:4858
 msgid ""
 "Exit the runtime context and return a Boolean flag indicating if any "
 "exception that occurred should be suppressed. If an exception occurred while "
@@ -6938,7 +6945,7 @@ msgid ""
 "arguments are ``None``."
 msgstr ""
 
-#: library/stdtypes.rst:4857
+#: library/stdtypes.rst:4863
 msgid ""
 "Returning a true value from this method will cause the :keyword:`with` "
 "statement to suppress the exception and continue execution with the "
@@ -6949,7 +6956,7 @@ msgid ""
 "statement."
 msgstr ""
 
-#: library/stdtypes.rst:4864
+#: library/stdtypes.rst:4870
 msgid ""
 "The exception passed in should never be reraised explicitly - instead, this "
 "method should return a false value to indicate that the method completed "
@@ -6958,7 +6965,7 @@ msgid ""
 "__exit__` method has actually failed."
 msgstr ""
 
-#: library/stdtypes.rst:4870
+#: library/stdtypes.rst:4876
 msgid ""
 "Python defines several context managers to support easy thread "
 "synchronisation, prompt closure of files or other objects, and simpler "
@@ -6967,7 +6974,7 @@ msgid ""
 "management protocol. See the :mod:`contextlib` module for some examples."
 msgstr ""
 
-#: library/stdtypes.rst:4876
+#: library/stdtypes.rst:4882
 msgid ""
 "Python's :term:`generator`\\s and the :class:`contextlib.contextmanager` "
 "decorator provide a convenient way to implement these protocols.  If a "
@@ -6977,7 +6984,7 @@ msgid ""
 "rather than the iterator produced by an undecorated generator function."
 msgstr ""
 
-#: library/stdtypes.rst:4883
+#: library/stdtypes.rst:4889
 msgid ""
 "Note that there is no specific slot for any of these methods in the type "
 "structure for Python objects in the Python/C API. Extension types wanting to "
@@ -6986,23 +6993,23 @@ msgid ""
 "a single class dictionary lookup is negligible."
 msgstr ""
 
-#: library/stdtypes.rst:4891
+#: library/stdtypes.rst:4897
 msgid ""
 "Type Annotation Types --- :ref:`Generic Alias <types-genericalias>`, :ref:"
 "`Union <types-union>`"
 msgstr ""
 
-#: library/stdtypes.rst:4896
+#: library/stdtypes.rst:4902
 msgid ""
 "The core built-in types for :term:`type annotations <annotation>` are :ref:"
 "`Generic Alias <types-genericalias>` and :ref:`Union <types-union>`."
 msgstr ""
 
-#: library/stdtypes.rst:4903
+#: library/stdtypes.rst:4909
 msgid "Generic Alias Type"
 msgstr "Genel Takma Ad Türü"
 
-#: library/stdtypes.rst:4909
+#: library/stdtypes.rst:4915
 msgid ""
 "``GenericAlias`` objects are generally created by :ref:`subscripting "
 "<subscriptions>` a class. They are most often used with :ref:`container "
@@ -7012,13 +7019,13 @@ msgid ""
 "are intended primarily for use with :term:`type annotations <annotation>`."
 msgstr ""
 
-#: library/stdtypes.rst:4919
+#: library/stdtypes.rst:4925
 msgid ""
 "It is generally only possible to subscript a class if the class implements "
 "the special method :meth:`~object.__class_getitem__`."
 msgstr ""
 
-#: library/stdtypes.rst:4922
+#: library/stdtypes.rst:4928
 msgid ""
 "A ``GenericAlias`` object acts as a proxy for a :term:`generic type`, "
 "implementing *parameterized generics*."
@@ -7026,7 +7033,7 @@ msgstr ""
 "Bir ``GenericAlias`` nesnesi, :term:`generic type` için bir vekil olarak "
 "hareket eder ve *parameterized generics* uygular."
 
-#: library/stdtypes.rst:4925
+#: library/stdtypes.rst:4931
 msgid ""
 "For a container class, the argument(s) supplied to a :ref:`subscription "
 "<subscriptions>` of the class may indicate the type(s) of the elements an "
@@ -7035,7 +7042,7 @@ msgid ""
 "`bytes`."
 msgstr ""
 
-#: library/stdtypes.rst:4931
+#: library/stdtypes.rst:4937
 msgid ""
 "For a class which defines :meth:`~object.__class_getitem__` but is not a "
 "container, the argument(s) supplied to a subscription of the class will "
@@ -7044,7 +7051,7 @@ msgid ""
 "the :class:`str` data type and the :class:`bytes` data type:"
 msgstr ""
 
-#: library/stdtypes.rst:4937
+#: library/stdtypes.rst:4943
 msgid ""
 "If ``x = re.search('foo', 'foo')``, ``x`` will be a :ref:`re.Match <match-"
 "objects>` object where the return values of ``x.group(0)`` and ``x[0]`` will "
@@ -7052,7 +7059,7 @@ msgid ""
 "annotations with the ``GenericAlias`` ``re.Match[str]``."
 msgstr ""
 
-#: library/stdtypes.rst:4943
+#: library/stdtypes.rst:4949
 msgid ""
 "If ``y = re.search(b'bar', b'bar')``, (note the ``b`` for :class:`bytes`), "
 "``y`` will also be an instance of ``re.Match``, but the return values of ``y."
@@ -7061,7 +7068,7 @@ msgid ""
 "objects>` objects with ``re.Match[bytes]``."
 msgstr ""
 
-#: library/stdtypes.rst:4949
+#: library/stdtypes.rst:4955
 msgid ""
 "``GenericAlias`` objects are instances of the class :class:`types."
 "GenericAlias`, which can also be used to create ``GenericAlias`` objects "
@@ -7070,7 +7077,7 @@ msgstr ""
 "``GenericAlias`` nesneleri, doğrudan ``GenericAlias`` nesneleri oluşturmak "
 "için de kullanılabilen :class:`types.GenericAlias` sınıfının örnekleridir."
 
-#: library/stdtypes.rst:4955
+#: library/stdtypes.rst:4961
 msgid ""
 "Creates a ``GenericAlias`` representing a type ``T`` parameterized by types "
 "*X*, *Y*, and more depending on the ``T`` used. For example, a function "
@@ -7081,13 +7088,13 @@ msgstr ""
 "Örneğin, :class:`float` elemanları içeren bir :class:`list` bekleyen bir "
 "fonksiyon::"
 
-#: library/stdtypes.rst:4960
+#: library/stdtypes.rst:4966
 msgid ""
 "def average(values: list[float]) -> float:\n"
 "    return sum(values) / len(values)"
 msgstr ""
 
-#: library/stdtypes.rst:4963
+#: library/stdtypes.rst:4969
 msgid ""
 "Another example for :term:`mapping` objects, using a :class:`dict`, which is "
 "a generic type expecting two type parameters representing the key type and "
@@ -7099,13 +7106,13 @@ msgstr ""
 "başka bir örnek.  Bu örnekte, fonksiyon :class:`str` türünde anahtarları ve :"
 "class:`int` türünde değerleri olan bir ``dict`` bekler::"
 
-#: library/stdtypes.rst:4968
+#: library/stdtypes.rst:4974
 msgid ""
 "def send_post_request(url: str, body: dict[str, int]) -> None:\n"
 "    ..."
 msgstr ""
 
-#: library/stdtypes.rst:4971
+#: library/stdtypes.rst:4977
 msgid ""
 "The builtin functions :func:`isinstance` and :func:`issubclass` do not "
 "accept ``GenericAlias`` types for their second argument::"
@@ -7113,7 +7120,7 @@ msgstr ""
 "Yerleşik :func:`isinstance` ve :func:`issubclass` işlevleri ikinci "
 "argümanları için ``GenericAlias`` türlerini kabul etmez::"
 
-#: library/stdtypes.rst:4974
+#: library/stdtypes.rst:4980
 msgid ""
 ">>> isinstance([1, 2], list[str])\n"
 "Traceback (most recent call last):\n"
@@ -7121,7 +7128,7 @@ msgid ""
 "TypeError: isinstance() argument 2 cannot be a parameterized generic"
 msgstr ""
 
-#: library/stdtypes.rst:4979
+#: library/stdtypes.rst:4985
 msgid ""
 "The Python runtime does not enforce :term:`type annotations <annotation>`. "
 "This extends to generic types and their type parameters. When creating a "
@@ -7135,14 +7142,14 @@ msgstr ""
 "elemanlar türlerine göre kontrol edilmez. Örneğin, aşağıdaki kod tavsiye "
 "edilmez, ancak hatasız çalışacaktır::"
 
-#: library/stdtypes.rst:4985
+#: library/stdtypes.rst:4991
 msgid ""
 ">>> t = list[str]\n"
 ">>> t([1, 2, 3])\n"
 "[1, 2, 3]"
 msgstr ""
 
-#: library/stdtypes.rst:4989
+#: library/stdtypes.rst:4995
 msgid ""
 "Furthermore, parameterized generics erase type parameters during object "
 "creation::"
@@ -7150,7 +7157,7 @@ msgstr ""
 "Ayrıca, parametrelendirilmiş jenerikler nesne oluşturma sırasında tip "
 "parametrelerini siler::"
 
-#: library/stdtypes.rst:4992
+#: library/stdtypes.rst:4998
 msgid ""
 ">>> t = list[str]\n"
 ">>> type(t)\n"
@@ -7161,7 +7168,7 @@ msgid ""
 "<class 'list'>"
 msgstr ""
 
-#: library/stdtypes.rst:5000
+#: library/stdtypes.rst:5006
 msgid ""
 "Calling :func:`repr` or :func:`str` on a generic shows the parameterized "
 "type::"
@@ -7169,7 +7176,7 @@ msgstr ""
 "Bir jenerik üzerinde :func:`repr` veya :func:`str` çağrısı "
 "parametrelendirilmiş türü gösterir::"
 
-#: library/stdtypes.rst:5002
+#: library/stdtypes.rst:5008
 msgid ""
 ">>> repr(list[int])\n"
 "'list[int]'\n"
@@ -7178,7 +7185,7 @@ msgid ""
 "'list[int]'"
 msgstr ""
 
-#: library/stdtypes.rst:5008
+#: library/stdtypes.rst:5014
 msgid ""
 "The :meth:`~object.__getitem__` method of generic containers will raise an "
 "exception to disallow mistakes like ``dict[str][str]``::"
@@ -7186,7 +7193,7 @@ msgstr ""
 "Genel kapsayıcıların :meth:`~object.__getitem__` metodu, ``dict[str][str]`` "
 "gibi hatalara izin vermemek için bir istisna oluşturacaktır::"
 
-#: library/stdtypes.rst:5011
+#: library/stdtypes.rst:5017
 msgid ""
 ">>> dict[str][str]\n"
 "Traceback (most recent call last):\n"
@@ -7194,7 +7201,7 @@ msgid ""
 "TypeError: dict[str] is not a generic class"
 msgstr ""
 
-#: library/stdtypes.rst:5016
+#: library/stdtypes.rst:5022
 msgid ""
 "However, such expressions are valid when :ref:`type variables <generics>` "
 "are used.  The index must have as many elements as there are type variable "
@@ -7204,7 +7211,7 @@ msgstr ""
 "geçerlidir.  Dizin, ``GenericAlias`` nesnesinin :attr:`~genericalias."
 "__args__` öğesindeki tür değişkeni öğeleri kadar öğeye sahip olmalıdır::"
 
-#: library/stdtypes.rst:5020
+#: library/stdtypes.rst:5026
 msgid ""
 ">>> from typing import TypeVar\n"
 ">>> Y = TypeVar('Y')\n"
@@ -7212,11 +7219,11 @@ msgid ""
 "dict[str, int]"
 msgstr ""
 
-#: library/stdtypes.rst:5027
+#: library/stdtypes.rst:5033
 msgid "Standard Generic Classes"
 msgstr "Standart Jenerik Sınıflar"
 
-#: library/stdtypes.rst:5029
+#: library/stdtypes.rst:5035
 msgid ""
 "The following standard library classes support parameterized generics. This "
 "list is non-exhaustive."
@@ -7224,241 +7231,251 @@ msgstr ""
 "Bu standart kütüphane sınıfları parametrelendirilmiş jenerikleri destekler. "
 "Bu liste kapsamlı değildir."
 
-#: library/stdtypes.rst:5032
+#: library/stdtypes.rst:5038
 msgid ":class:`tuple`"
 msgstr ":class:`tuple`"
 
-#: library/stdtypes.rst:5033
+#: library/stdtypes.rst:5039
 msgid ":class:`list`"
 msgstr ":class:`list`"
 
-#: library/stdtypes.rst:5034
+#: library/stdtypes.rst:5040
 msgid ":class:`dict`"
 msgstr ":class:`dict`"
 
-#: library/stdtypes.rst:5035
+#: library/stdtypes.rst:5041
 msgid ":class:`set`"
 msgstr ":class:`set`"
 
-#: library/stdtypes.rst:5036
+#: library/stdtypes.rst:5042
 msgid ":class:`frozenset`"
 msgstr ":class:`frozenset`"
 
-#: library/stdtypes.rst:5037
+#: library/stdtypes.rst:5043
 msgid ":class:`type`"
 msgstr ":class:`type`"
 
-#: library/stdtypes.rst:5038
+#: library/stdtypes.rst:5044
+#, fuzzy
+msgid ":class:`asyncio.Future`"
+msgstr ":class:`tuple`"
+
+#: library/stdtypes.rst:5045
+#, fuzzy
+msgid ":class:`asyncio.Task`"
+msgstr ":class:`list`"
+
+#: library/stdtypes.rst:5046
 msgid ":class:`collections.deque`"
 msgstr ":class:`collections.deque`"
 
-#: library/stdtypes.rst:5039
+#: library/stdtypes.rst:5047
 msgid ":class:`collections.defaultdict`"
 msgstr ":class:`collections.defaultdict`"
 
-#: library/stdtypes.rst:5040
+#: library/stdtypes.rst:5048
 msgid ":class:`collections.OrderedDict`"
 msgstr ":class:`collections.OrderedDict`"
 
-#: library/stdtypes.rst:5041
+#: library/stdtypes.rst:5049
 msgid ":class:`collections.Counter`"
 msgstr ":class:`collections.Counter`"
 
-#: library/stdtypes.rst:5042
+#: library/stdtypes.rst:5050
 msgid ":class:`collections.ChainMap`"
 msgstr ":class:`collections.ChainMap`"
 
-#: library/stdtypes.rst:5043
+#: library/stdtypes.rst:5051
 msgid ":class:`collections.abc.Awaitable`"
 msgstr ":class:`collections.abc.Awaitable`"
 
-#: library/stdtypes.rst:5044
+#: library/stdtypes.rst:5052
 msgid ":class:`collections.abc.Coroutine`"
 msgstr ":class:`collections.abc.Coroutine`"
 
-#: library/stdtypes.rst:5045
+#: library/stdtypes.rst:5053
 msgid ":class:`collections.abc.AsyncIterable`"
 msgstr ":class:`collections.abc.AsyncIterable`"
 
-#: library/stdtypes.rst:5046
+#: library/stdtypes.rst:5054
 msgid ":class:`collections.abc.AsyncIterator`"
 msgstr ":class:`collections.abc.AsyncIterator`"
 
-#: library/stdtypes.rst:5047
+#: library/stdtypes.rst:5055
 msgid ":class:`collections.abc.AsyncGenerator`"
 msgstr ":class:`collections.abc.AsyncGenerator`"
 
-#: library/stdtypes.rst:5048
+#: library/stdtypes.rst:5056
 msgid ":class:`collections.abc.Iterable`"
 msgstr ":class:`collections.abc.Iterable`"
 
-#: library/stdtypes.rst:5049
+#: library/stdtypes.rst:5057
 msgid ":class:`collections.abc.Iterator`"
 msgstr ":class:`collections.abc.Iterator`"
 
-#: library/stdtypes.rst:5050
+#: library/stdtypes.rst:5058
 msgid ":class:`collections.abc.Generator`"
 msgstr ":class:`collections.abc.Generator`"
 
-#: library/stdtypes.rst:5051
+#: library/stdtypes.rst:5059
 msgid ":class:`collections.abc.Reversible`"
 msgstr ":class:`collections.abc.Reversible`"
 
-#: library/stdtypes.rst:5052
+#: library/stdtypes.rst:5060
 msgid ":class:`collections.abc.Container`"
 msgstr ":class:`collections.abc.Container`"
 
-#: library/stdtypes.rst:5053
+#: library/stdtypes.rst:5061
 msgid ":class:`collections.abc.Collection`"
 msgstr ":class:`collections.abc.Collection`"
 
-#: library/stdtypes.rst:5054
+#: library/stdtypes.rst:5062
 msgid ":class:`collections.abc.Callable`"
 msgstr ":class:`collections.abc.Callable`"
 
-#: library/stdtypes.rst:5055
+#: library/stdtypes.rst:5063
 msgid ":class:`collections.abc.Set`"
 msgstr ":class:`collections.abc.Set`"
 
-#: library/stdtypes.rst:5056
+#: library/stdtypes.rst:5064
 msgid ":class:`collections.abc.MutableSet`"
 msgstr ":class:`collections.abc.MutableSet`"
 
-#: library/stdtypes.rst:5057
+#: library/stdtypes.rst:5065
 msgid ":class:`collections.abc.Mapping`"
 msgstr ":class:`collections.abc.Mapping`"
 
-#: library/stdtypes.rst:5058
+#: library/stdtypes.rst:5066
 msgid ":class:`collections.abc.MutableMapping`"
 msgstr ":class:`collections.abc.MutableMapping`"
 
-#: library/stdtypes.rst:5059
+#: library/stdtypes.rst:5067
 msgid ":class:`collections.abc.Sequence`"
 msgstr ":class:`collections.abc.Sequence`"
 
-#: library/stdtypes.rst:5060
+#: library/stdtypes.rst:5068
 msgid ":class:`collections.abc.MutableSequence`"
 msgstr ":class:`collections.abc.MutableSequence`"
 
-#: library/stdtypes.rst:5061
+#: library/stdtypes.rst:5069
 msgid ":class:`collections.abc.ByteString`"
 msgstr ":class:`collections.abc.ByteString`"
 
-#: library/stdtypes.rst:5062
+#: library/stdtypes.rst:5070
 msgid ":class:`collections.abc.MappingView`"
 msgstr ":class:`collections.abc.MappingView`"
 
-#: library/stdtypes.rst:5063
+#: library/stdtypes.rst:5071
 msgid ":class:`collections.abc.KeysView`"
 msgstr ":class:`collections.abc.KeysView`"
 
-#: library/stdtypes.rst:5064
+#: library/stdtypes.rst:5072
 msgid ":class:`collections.abc.ItemsView`"
 msgstr ":class:`collections.abc.ItemsView`"
 
-#: library/stdtypes.rst:5065
+#: library/stdtypes.rst:5073
 msgid ":class:`collections.abc.ValuesView`"
 msgstr ":class:`collections.abc.ValuesView`"
 
-#: library/stdtypes.rst:5066
+#: library/stdtypes.rst:5074
 msgid ":class:`contextlib.AbstractContextManager`"
 msgstr ":class:`contextlib.AbstractContextManager`"
 
-#: library/stdtypes.rst:5067
+#: library/stdtypes.rst:5075
 msgid ":class:`contextlib.AbstractAsyncContextManager`"
 msgstr ":class:`contextlib.AbstractAsyncContextManager`"
 
-#: library/stdtypes.rst:5068
+#: library/stdtypes.rst:5076
 msgid ":class:`dataclasses.Field`"
 msgstr ":class:`dataclasses.Field`"
 
-#: library/stdtypes.rst:5069
+#: library/stdtypes.rst:5077
 msgid ":class:`functools.cached_property`"
 msgstr ":class:`functools.cached_property`"
 
-#: library/stdtypes.rst:5070
+#: library/stdtypes.rst:5078
 msgid ":class:`functools.partialmethod`"
 msgstr ""
 
-#: library/stdtypes.rst:5071
+#: library/stdtypes.rst:5079
 msgid ":class:`os.PathLike`"
 msgstr ":class:`os.PathLike`"
 
-#: library/stdtypes.rst:5072
+#: library/stdtypes.rst:5080
 msgid ":class:`queue.LifoQueue`"
 msgstr ":class:`queue.LifoQueue`"
 
-#: library/stdtypes.rst:5073
+#: library/stdtypes.rst:5081
 msgid ":class:`queue.Queue`"
 msgstr ":class:`queue.Queue`"
 
-#: library/stdtypes.rst:5074
+#: library/stdtypes.rst:5082
 msgid ":class:`queue.PriorityQueue`"
 msgstr ":class:`queue.PriorityQueue`"
 
-#: library/stdtypes.rst:5075
+#: library/stdtypes.rst:5083
 msgid ":class:`queue.SimpleQueue`"
 msgstr ":class:`tuple`"
 
-#: library/stdtypes.rst:5076
+#: library/stdtypes.rst:5084
 msgid ":ref:`re.Pattern <re-objects>`"
 msgstr ":ref:`re.Pattern <re-objects>`"
 
-#: library/stdtypes.rst:5077
+#: library/stdtypes.rst:5085
 msgid ":ref:`re.Match <match-objects>`"
 msgstr ":ref:`re.Match <match-objects>`"
 
-#: library/stdtypes.rst:5078
+#: library/stdtypes.rst:5086
 msgid ":class:`shelve.BsdDbShelf`"
 msgstr ":class:`shelve.BsdDbShelf`"
 
-#: library/stdtypes.rst:5079
+#: library/stdtypes.rst:5087
 msgid ":class:`shelve.DbfilenameShelf`"
 msgstr ":class:`shelve.DbfilenameShelf`"
 
-#: library/stdtypes.rst:5080
+#: library/stdtypes.rst:5088
 msgid ":class:`shelve.Shelf`"
 msgstr ":class:`shelve.Shelf`"
 
-#: library/stdtypes.rst:5081
+#: library/stdtypes.rst:5089
 msgid ":class:`types.MappingProxyType`"
 msgstr ":class:`types.MappingProxyType`"
 
-#: library/stdtypes.rst:5082
+#: library/stdtypes.rst:5090
 msgid ":class:`weakref.WeakKeyDictionary`"
 msgstr ""
 
-#: library/stdtypes.rst:5083
+#: library/stdtypes.rst:5091
 msgid ":class:`weakref.WeakMethod`"
 msgstr ""
 
-#: library/stdtypes.rst:5084
+#: library/stdtypes.rst:5092
 msgid ":class:`weakref.WeakSet`"
 msgstr ":class:`weakref.WeakSet`"
 
-#: library/stdtypes.rst:5085
+#: library/stdtypes.rst:5093
 msgid ":class:`weakref.WeakValueDictionary`"
 msgstr ""
 
-#: library/stdtypes.rst:5090
+#: library/stdtypes.rst:5098
 msgid "Special Attributes of ``GenericAlias`` objects"
 msgstr "``GenericAlias`` objesinin Özel Öznitelikleri"
 
-#: library/stdtypes.rst:5092
+#: library/stdtypes.rst:5100
 msgid "All parameterized generics implement special read-only attributes."
 msgstr "Tüm parametreli jenerikler özel salt okunur öznitelikler uygular."
 
-#: library/stdtypes.rst:5096
+#: library/stdtypes.rst:5104
 msgid "This attribute points at the non-parameterized generic class::"
 msgstr "Bu öznitelik, parametrelendirilmemiş genel sınıfa işaret eder::"
 
-#: library/stdtypes.rst:5098
+#: library/stdtypes.rst:5106
 msgid ""
 ">>> list[int].__origin__\n"
 "<class 'list'>"
 msgstr ""
 
-#: library/stdtypes.rst:5104
+#: library/stdtypes.rst:5112
 msgid ""
 "This attribute is a :class:`tuple` (possibly of length 1) of generic types "
 "passed to the original :meth:`~object.__class_getitem__` of the generic "
@@ -7468,13 +7485,13 @@ msgstr ""
 "öğesine iletilen jenerik tiplerinden bir :class:`tuple` 'dır (muhtemelen 1 "
 "uzunluğunda)::"
 
-#: library/stdtypes.rst:5108
+#: library/stdtypes.rst:5116
 msgid ""
 ">>> dict[str, list[int]].__args__\n"
 "(<class 'str'>, list[int])"
 msgstr ""
 
-#: library/stdtypes.rst:5114
+#: library/stdtypes.rst:5122
 msgid ""
 "This attribute is a lazily computed tuple (possibly empty) of unique type "
 "variables found in ``__args__``::"
@@ -7482,7 +7499,7 @@ msgstr ""
 "Bu öznitelik, ''__args__'' içinde bulunan benzersiz tür değişkenlerin tembel "
 "bir şekilde hesaplanmış bir demetidir (muhtemelen boş):"
 
-#: library/stdtypes.rst:5117
+#: library/stdtypes.rst:5125
 msgid ""
 ">>> from typing import TypeVar\n"
 "\n"
@@ -7491,7 +7508,7 @@ msgid ""
 "(~T,)"
 msgstr ""
 
-#: library/stdtypes.rst:5125
+#: library/stdtypes.rst:5133
 msgid ""
 "A ``GenericAlias`` object with :class:`typing.ParamSpec` parameters may not "
 "have correct ``__parameters__`` after substitution because :class:`typing."
@@ -7501,49 +7518,49 @@ msgstr ""
 "değiştirildikten sonra doğru ``__parameters__`` olmayabilir çünkü :class:"
 "`typing.ParamSpec` öncelikle statik tip kontrolü için tasarlanmıştır."
 
-#: library/stdtypes.rst:5132
+#: library/stdtypes.rst:5140
 msgid ""
 "A boolean that is true if the alias has been unpacked using the ``*`` "
 "operator (see :data:`~typing.TypeVarTuple`)."
 msgstr ""
 
-#: library/stdtypes.rst:5140
+#: library/stdtypes.rst:5148
 msgid ":pep:`484` - Type Hints"
 msgstr ""
 
-#: library/stdtypes.rst:5141
+#: library/stdtypes.rst:5149
 msgid "Introducing Python's framework for type annotations."
 msgstr ""
 
-#: library/stdtypes.rst:5143
+#: library/stdtypes.rst:5151
 msgid ":pep:`585` - Type Hinting Generics In Standard Collections"
 msgstr ""
 ":pep:`585` - Standart Koleksiyonlarda Tip İma Etme (Type Hinting) Jenerikleri"
 
-#: library/stdtypes.rst:5144
+#: library/stdtypes.rst:5152
 msgid ""
 "Introducing the ability to natively parameterize standard-library classes, "
 "provided they implement the special class method :meth:`~object."
 "__class_getitem__`."
 msgstr ""
 
-#: library/stdtypes.rst:5148
+#: library/stdtypes.rst:5156
 msgid ""
 ":ref:`Generics`, :ref:`user-defined generics <user-defined-generics>` and :"
 "class:`typing.Generic`"
 msgstr ""
 
-#: library/stdtypes.rst:5149
+#: library/stdtypes.rst:5157
 msgid ""
 "Documentation on how to implement generic classes that can be parameterized "
 "at runtime and understood by static type-checkers."
 msgstr ""
 
-#: library/stdtypes.rst:5158
+#: library/stdtypes.rst:5166
 msgid "Union Type"
 msgstr "Sendika Türü"
 
-#: library/stdtypes.rst:5164
+#: library/stdtypes.rst:5172
 msgid ""
 "A union object holds the value of the ``|`` (bitwise or) operation on "
 "multiple :ref:`type objects <bltin-type-objects>`.  These types are intended "
@@ -7557,7 +7574,7 @@ msgstr ""
 "Birleşim türü ifadesi, aşağıdakilere kıyasla daha temiz tür ipucu sözdizimi "
 "sağlar :data:`typing.Union`."
 
-#: library/stdtypes.rst:5171
+#: library/stdtypes.rst:5179
 msgid ""
 "Defines a union object which holds types *X*, *Y*, and so forth. ``X | Y`` "
 "means either X or Y.  It is equivalent to ``typing.Union[X, Y]``. For "
@@ -7568,13 +7585,13 @@ msgstr ""
 "anlamına gelir.  Bu, ``typing.Union[X, Y]`` ile eş değerdir. Örneğin, "
 "aşağıdaki işlev :class:`int` veya :class:`float`::"
 
-#: library/stdtypes.rst:5176
+#: library/stdtypes.rst:5184
 msgid ""
 "def square(number: int | float) -> int | float:\n"
 "    return number ** 2"
 msgstr ""
 
-#: library/stdtypes.rst:5181
+#: library/stdtypes.rst:5189
 msgid ""
 "The ``|`` operand cannot be used at runtime to define unions where one or "
 "more members is a forward reference. For example, ``int | \"Foo\"``, where "
@@ -7583,54 +7600,54 @@ msgid ""
 "a string, e.g. ``\"int | Foo\"``."
 msgstr ""
 
-#: library/stdtypes.rst:5189
+#: library/stdtypes.rst:5197
 msgid ""
 "Union objects can be tested for equality with other union objects.  Details:"
 msgstr ""
 "Birlik nesneleri, diğer birlik nesneleriyle eşitlik açısından test "
 "edilebilir.  Detaylar:"
 
-#: library/stdtypes.rst:5191
+#: library/stdtypes.rst:5199
 msgid "Unions of unions are flattened::"
 msgstr "Birliklerin birlikleri düzleştirimiştir::"
 
-#: library/stdtypes.rst:5193
+#: library/stdtypes.rst:5201
 msgid "(int | str) | float == int | str | float"
 msgstr ""
 
-#: library/stdtypes.rst:5195
+#: library/stdtypes.rst:5203
 msgid "Redundant types are removed::"
 msgstr "Gereksiz türler kaldırılır::"
 
-#: library/stdtypes.rst:5197
+#: library/stdtypes.rst:5205
 msgid "int | str | int == int | str"
 msgstr ""
 
-#: library/stdtypes.rst:5199
+#: library/stdtypes.rst:5207
 msgid "When comparing unions, the order is ignored::"
 msgstr "Birlikleri karşılaştırırken, sipariş göz ardı edilir::"
 
-#: library/stdtypes.rst:5201
+#: library/stdtypes.rst:5209
 msgid "int | str == str | int"
 msgstr ""
 
-#: library/stdtypes.rst:5203
+#: library/stdtypes.rst:5211
 msgid "It is compatible with :data:`typing.Union`::"
 msgstr ":data:`typing.Union`:: ile uyumludur:"
 
-#: library/stdtypes.rst:5205
+#: library/stdtypes.rst:5213
 msgid "int | str == typing.Union[int, str]"
 msgstr ""
 
-#: library/stdtypes.rst:5207
+#: library/stdtypes.rst:5215
 msgid "Optional types can be spelled as a union with ``None``::"
 msgstr "İsteğe bağlı türler ``None``:: ile bir birlik olarak yazılabilir:"
 
-#: library/stdtypes.rst:5209
+#: library/stdtypes.rst:5217
 msgid "str | None == typing.Optional[str]"
 msgstr ""
 
-#: library/stdtypes.rst:5214
+#: library/stdtypes.rst:5222
 msgid ""
 "Calls to :func:`isinstance` and :func:`issubclass` are also supported with a "
 "union object::"
@@ -7638,20 +7655,20 @@ msgstr ""
 ":func:`isinstance` ve :func:`issubclass` çağrıları da bir birlik nesnesiyle "
 "desteklenir::"
 
-#: library/stdtypes.rst:5217
+#: library/stdtypes.rst:5225
 msgid ""
 ">>> isinstance(\"\", int | str)\n"
 "True"
 msgstr ""
 
-#: library/stdtypes.rst:5220
+#: library/stdtypes.rst:5228
 #, fuzzy
 msgid ""
 "However, :ref:`parameterized generics <types-genericalias>` in union objects "
 "cannot be checked::"
 msgstr "Ancak, :ref:`types-genericalias` içeren union nesneleri kullanılamaz::"
 
-#: library/stdtypes.rst:5223
+#: library/stdtypes.rst:5231
 msgid ""
 ">>> isinstance(1, int | list[int])  # short-circuit evaluation\n"
 "True\n"
@@ -7661,7 +7678,7 @@ msgid ""
 "TypeError: isinstance() argument 2 cannot be a parameterized generic"
 msgstr ""
 
-#: library/stdtypes.rst:5230
+#: library/stdtypes.rst:5238
 msgid ""
 "The user-exposed type for the union object can be accessed from :data:`types."
 "UnionType` and used for :func:`isinstance` checks.  An object cannot be "
@@ -7671,7 +7688,7 @@ msgstr ""
 "erişilebilir ve :func:`isinstance` kontrolleri için kullanılabilir.  Bir "
 "nesne şu türden örneklenemez::"
 
-#: library/stdtypes.rst:5234
+#: library/stdtypes.rst:5242
 msgid ""
 ">>> import types\n"
 ">>> isinstance(int | str, types.UnionType)\n"
@@ -7682,7 +7699,7 @@ msgid ""
 "TypeError: cannot create 'types.UnionType' instances"
 msgstr ""
 
-#: library/stdtypes.rst:5243
+#: library/stdtypes.rst:5251
 #, fuzzy
 msgid ""
 "The :meth:`!__or__` method for type objects was added to support the syntax "
@@ -7693,7 +7710,7 @@ msgstr ""
 "için eklendi.  Eğer bir metaclass :meth:`__or__` metodunu uygularsa, Union "
 "bunu geçersiz kılabilir::"
 
-#: library/stdtypes.rst:5247
+#: library/stdtypes.rst:5255
 msgid ""
 ">>> class M(type):\n"
 "...     def __or__(self, other):\n"
@@ -7708,15 +7725,15 @@ msgid ""
 "int | C"
 msgstr ""
 
-#: library/stdtypes.rst:5263
+#: library/stdtypes.rst:5271
 msgid ":pep:`604` -- PEP proposing the ``X | Y`` syntax and the Union type."
 msgstr ":pep:`604` -- ``X | Y`` sözdizimini ve Birlik türünü öneren PEP."
 
-#: library/stdtypes.rst:5271
+#: library/stdtypes.rst:5279
 msgid "Other Built-in Types"
 msgstr "Diğer Yerleşik Tipler"
 
-#: library/stdtypes.rst:5273
+#: library/stdtypes.rst:5281
 msgid ""
 "The interpreter supports several other kinds of objects. Most of these "
 "support only one or two operations."
@@ -7724,11 +7741,11 @@ msgstr ""
 "Yorumlayıcı başka nesne türlerini de destekler. Bunların çoğu yalnızca bir "
 "veya iki işlemi destekler."
 
-#: library/stdtypes.rst:5280
+#: library/stdtypes.rst:5288
 msgid "Modules"
 msgstr "Modüller"
 
-#: library/stdtypes.rst:5282
+#: library/stdtypes.rst:5290
 msgid ""
 "The only special operation on a module is attribute access: ``m.name``, "
 "where *m* is a module and *name* accesses a name defined in *m*'s symbol "
@@ -7746,7 +7763,7 @@ msgstr ""
 "bunun yerine bir yerlerde *foo* adında bir modül için (harici) bir "
 "*tanımlama* gerektirir)"
 
-#: library/stdtypes.rst:5289
+#: library/stdtypes.rst:5297
 msgid ""
 "A special attribute of every module is :attr:`~object.__dict__`. This is the "
 "dictionary containing the module's symbol table. Modifying this dictionary "
@@ -7764,7 +7781,7 @@ msgstr ""
 "`` yazamazsınız).  :attr:`~object.__dict__` öğesinin doğrudan değiştirilmesi "
 "önerilmez."
 
-#: library/stdtypes.rst:5297
+#: library/stdtypes.rst:5305
 msgid ""
 "Modules built into the interpreter are written like this: ``<module "
 "'sys' (built-in)>``.  If loaded from a file, they are written as ``<module "
@@ -7774,19 +7791,19 @@ msgstr ""
 "'sys' (built-in)>``.  Eğer bir dosyadan yüklenmişlerse, ``<module 'os' from "
 "'/usr/local/lib/pythonX.Y/os.pyc'>`` şeklinde yazılırlar."
 
-#: library/stdtypes.rst:5305
+#: library/stdtypes.rst:5313
 msgid "Classes and Class Instances"
 msgstr "Sınıflar ve Sınıf Örnekleri"
 
-#: library/stdtypes.rst:5307
+#: library/stdtypes.rst:5315
 msgid "See :ref:`objects` and :ref:`class` for these."
 msgstr "Bunlar için :ref:`class` ve :ref:`objects`  bakın."
 
-#: library/stdtypes.rst:5313
+#: library/stdtypes.rst:5321
 msgid "Functions"
 msgstr "Fonksiyonlar"
 
-#: library/stdtypes.rst:5315
+#: library/stdtypes.rst:5323
 msgid ""
 "Function objects are created by function definitions.  The only operation on "
 "a function object is to call it: ``func(argument-list)``."
@@ -7795,7 +7812,7 @@ msgstr ""
 "fonksiyon nesnesi üzerindeki tek işlem onu çağırmaktır: ``func(argument-"
 "list)``."
 
-#: library/stdtypes.rst:5318
+#: library/stdtypes.rst:5326
 msgid ""
 "There are really two flavors of function objects: built-in functions and "
 "user-defined functions.  Both support the same operation (to call the "
@@ -7807,15 +7824,15 @@ msgstr ""
 "çağırmak için), ancak uygulama farklıdır, dolayısıyla farklı nesne türleri "
 "vardır."
 
-#: library/stdtypes.rst:5322
+#: library/stdtypes.rst:5330
 msgid "See :ref:`function` for more information."
 msgstr "Daha fazla bilgi için :ref:`function` bölümüne bakınız."
 
-#: library/stdtypes.rst:5328
+#: library/stdtypes.rst:5336
 msgid "Methods"
 msgstr "Yöntemler"
 
-#: library/stdtypes.rst:5332
+#: library/stdtypes.rst:5340
 #, fuzzy
 msgid ""
 "Methods are functions that are called using the attribute notation. There "
@@ -7828,7 +7845,7 @@ msgstr ""
 "yöntemleri.  Yerleşik yöntemler, onları destekleyen türlerle birlikte "
 "tanımlanır."
 
-#: library/stdtypes.rst:5337
+#: library/stdtypes.rst:5345
 #, fuzzy
 msgid ""
 "If you access a method (a function defined in a class namespace) through an "
@@ -7850,7 +7867,7 @@ msgstr ""
 "``m(arg-1, arg-2, ..., arg-n)`` çağrısı tamamen ``m.__func__(m.__self__, "
 "arg-1, arg-2, ..., arg-n)`` çağrısına eş değerdir."
 
-#: library/stdtypes.rst:5348
+#: library/stdtypes.rst:5356
 #, fuzzy
 msgid ""
 "Like :ref:`function objects <user-defined-funcs>`, bound method objects "
@@ -7869,7 +7886,7 @@ msgstr ""
 "ayarlamak için, bunu temel işlev nesnesi üzerinde açıkça ayarlamanız "
 "gerekir::"
 
-#: library/stdtypes.rst:5356
+#: library/stdtypes.rst:5364
 msgid ""
 ">>> class C:\n"
 "...     def method(self):\n"
@@ -7885,16 +7902,16 @@ msgid ""
 "'my name is method'"
 msgstr ""
 
-#: library/stdtypes.rst:5371
+#: library/stdtypes.rst:5379
 #, fuzzy
 msgid "See :ref:`instance-methods` for more information."
 msgstr "Daha fazla bilgi için :ref:`types` sayfasına bakın."
 
-#: library/stdtypes.rst:5379
+#: library/stdtypes.rst:5387
 msgid "Code Objects"
 msgstr "Kod Nesneleri"
 
-#: library/stdtypes.rst:5385
+#: library/stdtypes.rst:5393
 #, fuzzy
 msgid ""
 "Code objects are used by the implementation to represent \"pseudo-compiled\" "
@@ -7911,7 +7928,7 @@ msgstr ""
 "tarafından döndürülür ve  :attr:`__code__` niteliği aracılığıyla işlev "
 "nesnelerinden çıkarılabilir. Ayrıca :mod:`code` modülüne de bakınız."
 
-#: library/stdtypes.rst:5392
+#: library/stdtypes.rst:5400
 #, fuzzy
 msgid ""
 "Accessing :attr:`~function.__code__` raises an :ref:`auditing event "
@@ -7921,7 +7938,7 @@ msgstr ""
 "``__code__`` 'e erişmek,``obj`` ve ``\"__code__\"`` argümanlarıyla :ref:"
 "`denetim etkinliği <auditing>` ``object.__getattr__`` oluşturur."
 
-#: library/stdtypes.rst:5399
+#: library/stdtypes.rst:5407
 msgid ""
 "A code object can be executed or evaluated by passing it (instead of a "
 "source string) to the :func:`exec` or :func:`eval`  built-in functions."
@@ -7929,15 +7946,15 @@ msgstr ""
 "Bir kod nesnesi (kaynak dize yerine) :func:`exec` veya :func:`eval` yerleşik "
 "işlevlerine geçirilerek yürütülebilir veya değerlendirilebilir."
 
-#: library/stdtypes.rst:5402
+#: library/stdtypes.rst:5410
 msgid "See :ref:`types` for more information."
 msgstr "Daha fazla bilgi için :ref:`types` sayfasına bakın."
 
-#: library/stdtypes.rst:5408
+#: library/stdtypes.rst:5416
 msgid "Type Objects"
 msgstr "Type Objects"
 
-#: library/stdtypes.rst:5414
+#: library/stdtypes.rst:5422
 msgid ""
 "Type objects represent the various object types.  An object's type is "
 "accessed by the built-in function :func:`type`.  There are no special "
@@ -7949,15 +7966,15 @@ msgstr ""
 "işlem yoktur.  Standart modül :mod:`types` tüm standart yerleşik türler için "
 "isimleri tanımlar."
 
-#: library/stdtypes.rst:5419
+#: library/stdtypes.rst:5427
 msgid "Types are written like this: ``<class 'int'>``."
 msgstr "Türler şu şekilde yazılır: ``<class 'int'>``."
 
-#: library/stdtypes.rst:5425
+#: library/stdtypes.rst:5433
 msgid "The Null Object"
 msgstr "Null Nesne"
 
-#: library/stdtypes.rst:5427
+#: library/stdtypes.rst:5435
 msgid ""
 "This object is returned by functions that don't explicitly return a value.  "
 "It supports no special operations.  There is exactly one null object, named "
@@ -7967,15 +7984,15 @@ msgstr ""
 "operasyonları desteklemez.  Tam olarak ``None`` (yerleşik bir ad) adlı bir "
 "null nesne vardır.  ``type(None)()`` aynı singleton'u üretir."
 
-#: library/stdtypes.rst:5431
+#: library/stdtypes.rst:5439
 msgid "It is written as ``None``."
 msgstr "''Yok'' olarak yazılmıştır."
 
-#: library/stdtypes.rst:5438
+#: library/stdtypes.rst:5446
 msgid "The Ellipsis Object"
 msgstr "Üç Nokta Nesnesi"
 
-#: library/stdtypes.rst:5440
+#: library/stdtypes.rst:5448
 msgid ""
 "This object is commonly used by slicing (see :ref:`slicings`).  It supports "
 "no special operations.  There is exactly one ellipsis object, named :const:"
@@ -7987,15 +8004,15 @@ msgstr ""
 "ad) adında bir elips nesnesi vardır.  ``type(Ellipsis)()``, :const:"
 "`Ellipsis` singletonunu üretir."
 
-#: library/stdtypes.rst:5445
+#: library/stdtypes.rst:5453
 msgid "It is written as ``Ellipsis`` or ``...``."
 msgstr "``Ellipsis`` veya ``...`` olarak yazılmıştır."
 
-#: library/stdtypes.rst:5451
+#: library/stdtypes.rst:5459
 msgid "The NotImplemented Object"
 msgstr "NotImplemented Nesnesi"
 
-#: library/stdtypes.rst:5453
+#: library/stdtypes.rst:5461
 #, fuzzy
 msgid ""
 "This object is returned from comparisons and binary operations when they are "
@@ -8008,16 +8025,16 @@ msgstr ""
 "ref:`comparisons` sayfasına bakın.  Tam olarak bir ``NotImplemented`` "
 "nesnesi vardır. ``type(NotImplemented)()``, singleton örneğini üretir."
 
-#: library/stdtypes.rst:5458
+#: library/stdtypes.rst:5466
 #, fuzzy
 msgid "It is written as :code:`NotImplemented`."
 msgstr "''NotImplemented'' olarak yazılmıştır."
 
-#: library/stdtypes.rst:5464
+#: library/stdtypes.rst:5472
 msgid "Internal Objects"
 msgstr "İç Nesneler"
 
-#: library/stdtypes.rst:5466
+#: library/stdtypes.rst:5474
 #, fuzzy
 msgid ""
 "See :ref:`types` for this information.  It describes :ref:`stack frame "
@@ -8027,11 +8044,11 @@ msgstr ""
 "Bu bilgi için :ref:`types` sayfasına bakın.  Yığın çerçeve nesnelerini, geri "
 "izleme nesnelerini ve dilim nesnelerini açıklar."
 
-#: library/stdtypes.rst:5474
+#: library/stdtypes.rst:5482
 msgid "Special Attributes"
 msgstr "Özel Özellikler"
 
-#: library/stdtypes.rst:5476
+#: library/stdtypes.rst:5484
 msgid ""
 "The implementation adds a few special read-only attributes to several object "
 "types, where they are relevant.  Some of these are not reported by the :func:"
@@ -8041,12 +8058,12 @@ msgstr ""
 "öznitelik ekler.  Bunlardan bazıları :func:`dir` yerleşik işlevi tarafından "
 "bildirilmez."
 
-#: library/stdtypes.rst:5483
+#: library/stdtypes.rst:5491
 msgid ""
 "The name of the class, function, method, descriptor, or generator instance."
 msgstr "Sınıf, fonksiyon, yöntem, tanımlayıcı veya üretici örneğinin adı."
 
-#: library/stdtypes.rst:5489
+#: library/stdtypes.rst:5497
 msgid ""
 "The :term:`qualified name` of the class, function, method, descriptor, or "
 "generator instance."
@@ -8054,27 +8071,27 @@ msgstr ""
 "Sınıf, fonksiyon, yöntem, tanımlayıcı veya üretici örneğinin :term:"
 "`qualified name`."
 
-#: library/stdtypes.rst:5497
+#: library/stdtypes.rst:5505
 msgid "The name of the module in which a class or function was defined."
 msgstr ""
 
-#: library/stdtypes.rst:5502
+#: library/stdtypes.rst:5510
 msgid ""
 "The documentation string of a class or function, or ``None`` if undefined."
 msgstr ""
 
-#: library/stdtypes.rst:5507
+#: library/stdtypes.rst:5515
 msgid ""
 "The :ref:`type parameters <type-params>` of generic classes, functions, and :"
 "ref:`type aliases <type-aliases>`. For classes and functions that are not "
 "generic, this will be an empty tuple."
 msgstr ""
 
-#: library/stdtypes.rst:5517
+#: library/stdtypes.rst:5525
 msgid "Integer string conversion length limitation"
 msgstr ""
 
-#: library/stdtypes.rst:5519
+#: library/stdtypes.rst:5527
 msgid ""
 "CPython has a global limit for converting between :class:`int` and :class:"
 "`str` to mitigate denial of service attacks. This limit *only* applies to "
@@ -8082,7 +8099,7 @@ msgid ""
 "binary conversions are unlimited. The limit can be configured."
 msgstr ""
 
-#: library/stdtypes.rst:5524
+#: library/stdtypes.rst:5532
 msgid ""
 "The :class:`int` type in CPython is an arbitrary length number stored in "
 "binary form (commonly known as a \"bignum\"). There exists no algorithm that "
@@ -8092,24 +8109,24 @@ msgid ""
 "value such as ``int('1' * 500_000)`` can take over a second on a fast CPU."
 msgstr ""
 
-#: library/stdtypes.rst:5531
+#: library/stdtypes.rst:5539
 msgid ""
 "Limiting conversion size offers a practical way to avoid :cve:`2020-10735`."
 msgstr ""
 
-#: library/stdtypes.rst:5533
+#: library/stdtypes.rst:5541
 msgid ""
 "The limit is applied to the number of digit characters in the input or "
 "output string when a non-linear conversion algorithm would be involved.  "
 "Underscores and the sign are not counted towards the limit."
 msgstr ""
 
-#: library/stdtypes.rst:5537
+#: library/stdtypes.rst:5545
 msgid ""
 "When an operation would exceed the limit, a :exc:`ValueError` is raised:"
 msgstr ""
 
-#: library/stdtypes.rst:5539
+#: library/stdtypes.rst:5547
 msgid ""
 ">>> import sys\n"
 ">>> sys.set_int_max_str_digits(4300)  # Illustrative, this is the default.\n"
@@ -8133,7 +8150,7 @@ msgid ""
 ">>> assert int(hex(i_squared), base=16) == i*i  # Hexadecimal is unlimited."
 msgstr ""
 
-#: library/stdtypes.rst:5559
+#: library/stdtypes.rst:5567
 msgid ""
 "The default limit is 4300 digits as provided in :data:`sys.int_info."
 "default_max_str_digits <sys.int_info>`. The lowest limit that can be "
@@ -8141,11 +8158,11 @@ msgid ""
 "str_digits_check_threshold <sys.int_info>`."
 msgstr ""
 
-#: library/stdtypes.rst:5564
+#: library/stdtypes.rst:5572
 msgid "Verification:"
 msgstr "Doğrulama"
 
-#: library/stdtypes.rst:5566
+#: library/stdtypes.rst:5574
 msgid ""
 ">>> import sys\n"
 ">>> assert sys.int_info.default_max_str_digits == 4300, sys.int_info\n"
@@ -8156,91 +8173,91 @@ msgid ""
 "..."
 msgstr ""
 
-#: library/stdtypes.rst:5579
+#: library/stdtypes.rst:5587
 msgid "Affected APIs"
 msgstr ""
 
-#: library/stdtypes.rst:5581
+#: library/stdtypes.rst:5589
 msgid ""
 "The limitation only applies to potentially slow conversions between :class:"
 "`int` and :class:`str` or :class:`bytes`:"
 msgstr ""
 
-#: library/stdtypes.rst:5584
+#: library/stdtypes.rst:5592
 msgid "``int(string)`` with default base 10."
 msgstr ""
 
-#: library/stdtypes.rst:5585
+#: library/stdtypes.rst:5593
 msgid "``int(string, base)`` for all bases that are not a power of 2."
 msgstr ""
 
-#: library/stdtypes.rst:5586
+#: library/stdtypes.rst:5594
 msgid "``str(integer)``."
 msgstr ""
 
-#: library/stdtypes.rst:5587
+#: library/stdtypes.rst:5595
 msgid "``repr(integer)``."
 msgstr ""
 
-#: library/stdtypes.rst:5588
+#: library/stdtypes.rst:5596
 msgid ""
 "any other string conversion to base 10, for example ``f\"{integer}\"``, "
 "``\"{}\".format(integer)``, or ``b\"%d\" % integer``."
 msgstr ""
 
-#: library/stdtypes.rst:5591
+#: library/stdtypes.rst:5599
 msgid "The limitations do not apply to functions with a linear algorithm:"
 msgstr ""
 
-#: library/stdtypes.rst:5593
+#: library/stdtypes.rst:5601
 msgid "``int(string, base)`` with base 2, 4, 8, 16, or 32."
 msgstr ""
 
-#: library/stdtypes.rst:5594
+#: library/stdtypes.rst:5602
 msgid ":func:`int.from_bytes` and :func:`int.to_bytes`."
 msgstr ""
 
-#: library/stdtypes.rst:5595
+#: library/stdtypes.rst:5603
 msgid ":func:`hex`, :func:`oct`, :func:`bin`."
 msgstr ""
 
-#: library/stdtypes.rst:5596
+#: library/stdtypes.rst:5604
 msgid ":ref:`formatspec` for hex, octal, and binary numbers."
 msgstr ""
 
-#: library/stdtypes.rst:5597
+#: library/stdtypes.rst:5605
 #, fuzzy
 msgid ":class:`str` to :class:`float`."
 msgstr ":class:`str` 'den :class:`float` 'a."
 
-#: library/stdtypes.rst:5598
+#: library/stdtypes.rst:5606
 msgid ":class:`str` to :class:`decimal.Decimal`."
 msgstr ""
 
-#: library/stdtypes.rst:5601
+#: library/stdtypes.rst:5609
 msgid "Configuring the limit"
 msgstr ""
 
-#: library/stdtypes.rst:5603
+#: library/stdtypes.rst:5611
 msgid ""
 "Before Python starts up you can use an environment variable or an "
 "interpreter command line flag to configure the limit:"
 msgstr ""
 
-#: library/stdtypes.rst:5606
+#: library/stdtypes.rst:5614
 msgid ""
 ":envvar:`PYTHONINTMAXSTRDIGITS`, e.g. ``PYTHONINTMAXSTRDIGITS=640 python3`` "
 "to set the limit to 640 or ``PYTHONINTMAXSTRDIGITS=0 python3`` to disable "
 "the limitation."
 msgstr ""
 
-#: library/stdtypes.rst:5609
+#: library/stdtypes.rst:5617
 msgid ""
 ":option:`-X int_max_str_digits <-X>`, e.g. ``python3 -X "
 "int_max_str_digits=640``"
 msgstr ""
 
-#: library/stdtypes.rst:5611
+#: library/stdtypes.rst:5619
 msgid ""
 ":data:`sys.flags.int_max_str_digits` contains the value of :envvar:"
 "`PYTHONINTMAXSTRDIGITS` or :option:`-X int_max_str_digits <-X>`. If both the "
@@ -8249,38 +8266,38 @@ msgid ""
 "int_info.default_max_str_digits` was used during initialization."
 msgstr ""
 
-#: library/stdtypes.rst:5617
+#: library/stdtypes.rst:5625
 msgid ""
 "From code, you can inspect the current limit and set a new one using these :"
 "mod:`sys` APIs:"
 msgstr ""
 
-#: library/stdtypes.rst:5620
+#: library/stdtypes.rst:5628
 msgid ""
 ":func:`sys.get_int_max_str_digits` and :func:`sys.set_int_max_str_digits` "
 "are a getter and setter for the interpreter-wide limit. Subinterpreters have "
 "their own limit."
 msgstr ""
 
-#: library/stdtypes.rst:5624
+#: library/stdtypes.rst:5632
 msgid ""
 "Information about the default and minimum can be found in :data:`sys."
 "int_info`:"
 msgstr ""
 
-#: library/stdtypes.rst:5626
+#: library/stdtypes.rst:5634
 msgid ""
 ":data:`sys.int_info.default_max_str_digits <sys.int_info>` is the compiled-"
 "in default limit."
 msgstr ""
 
-#: library/stdtypes.rst:5628
+#: library/stdtypes.rst:5636
 msgid ""
 ":data:`sys.int_info.str_digits_check_threshold <sys.int_info>` is the lowest "
 "accepted value for the limit (other than 0 which disables it)."
 msgstr ""
 
-#: library/stdtypes.rst:5635
+#: library/stdtypes.rst:5643
 msgid ""
 "Setting a low limit *can* lead to problems. While rare, code exists that "
 "contains integer constants in decimal in their source that exceed the "
@@ -8292,7 +8309,7 @@ msgid ""
 "constants is to convert them to ``0x`` hexadecimal form as it has no limit."
 msgstr ""
 
-#: library/stdtypes.rst:5644
+#: library/stdtypes.rst:5652
 msgid ""
 "Test your application thoroughly if you use a low limit. Ensure your tests "
 "run with the limit set early via the environment or flag so that it applies "
@@ -8300,11 +8317,11 @@ msgid ""
 "to precompile ``.py`` sources to ``.pyc`` files."
 msgstr ""
 
-#: library/stdtypes.rst:5650
+#: library/stdtypes.rst:5658
 msgid "Recommended configuration"
 msgstr ""
 
-#: library/stdtypes.rst:5652
+#: library/stdtypes.rst:5660
 msgid ""
 "The default :data:`sys.int_info.default_max_str_digits` is expected to be "
 "reasonable for most applications. If your application requires a different "
@@ -8312,11 +8329,11 @@ msgid ""
 "as these APIs were added in security patch releases in versions before 3.12."
 msgstr ""
 
-#: library/stdtypes.rst:5657
+#: library/stdtypes.rst:5665
 msgid "Example::"
 msgstr "Örnek::"
 
-#: library/stdtypes.rst:5659
+#: library/stdtypes.rst:5667
 msgid ""
 ">>> import sys\n"
 ">>> if hasattr(sys, \"set_int_max_str_digits\"):\n"
@@ -8329,15 +8346,15 @@ msgid ""
 "...         sys.set_int_max_str_digits(lower_bound)"
 msgstr ""
 
-#: library/stdtypes.rst:5669
+#: library/stdtypes.rst:5677
 msgid "If you need to disable it entirely, set it to ``0``."
 msgstr ""
 
-#: library/stdtypes.rst:5673
+#: library/stdtypes.rst:5681
 msgid "Footnotes"
 msgstr "Dipnotlar"
 
-#: library/stdtypes.rst:5674
+#: library/stdtypes.rst:5682
 msgid ""
 "Additional information on these special methods may be found in the Python "
 "Reference Manual (:ref:`customization`)."
@@ -8345,7 +8362,7 @@ msgstr ""
 "Bu özel yöntemler hakkında daha fazla bilgi Python Referans El Kitabında (:"
 "ref:`customization`) bulunabilir."
 
-#: library/stdtypes.rst:5677
+#: library/stdtypes.rst:5685
 msgid ""
 "As a consequence, the list ``[1, 2]`` is considered equal to ``[1.0, 2.0]``, "
 "and similarly for tuples."
@@ -8353,12 +8370,12 @@ msgstr ""
 "Sonuç olarak, ``[1, 2]`` listesi ``[1.0, 2.0]`` ve benzer şekilde demetler "
 "için eşit kabul edilir."
 
-#: library/stdtypes.rst:5680
+#: library/stdtypes.rst:5688
 msgid "They must have since the parser can't tell the type of the operands."
 msgstr ""
 "Ayrıştırıcı, işlenenlerin türünü söyleyemediğinden sahip olmaları gerekir."
 
-#: library/stdtypes.rst:5682
+#: library/stdtypes.rst:5690
 msgid ""
 "Cased characters are those with general category property being one of "
 "\"Lu\" (Letter, uppercase), \"Ll\" (Letter, lowercase), or \"Lt\" (Letter, "
@@ -8368,7 +8385,7 @@ msgstr ""
 "\"Ll\" (Harf, küçük harf) veya \"Lt\" (Harf, başlık) karakterlerinden biri "
 "olan karakterlerdir."
 
-#: library/stdtypes.rst:5685
+#: library/stdtypes.rst:5693
 msgid ""
 "To format only a tuple you should therefore provide a singleton tuple whose "
 "only element is the tuple to be formatted."
@@ -8382,11 +8399,11 @@ msgid "built-in"
 msgstr "Gömülü Türler"
 
 #: library/stdtypes.rst:316 library/stdtypes.rst:950 library/stdtypes.rst:1139
-#: library/stdtypes.rst:4426 library/stdtypes.rst:5410
+#: library/stdtypes.rst:4432 library/stdtypes.rst:5418
 msgid "types"
 msgstr ""
 
-#: library/stdtypes.rst:1154 library/stdtypes.rst:4426
+#: library/stdtypes.rst:1154 library/stdtypes.rst:4432
 msgid "statement"
 msgstr ""
 
@@ -8508,9 +8525,9 @@ msgstr "``is not``"
 
 #: library/stdtypes.rst:208 library/stdtypes.rst:1117 library/stdtypes.rst:1260
 #: library/stdtypes.rst:1383 library/stdtypes.rst:1540
-#: library/stdtypes.rst:2536 library/stdtypes.rst:4224
-#: library/stdtypes.rst:4905 library/stdtypes.rst:5330
-#: library/stdtypes.rst:5374
+#: library/stdtypes.rst:2542 library/stdtypes.rst:4230
+#: library/stdtypes.rst:4911 library/stdtypes.rst:5338
+#: library/stdtypes.rst:5382
 #, fuzzy
 msgid "object"
 msgstr "Kod Nesneleri"
@@ -8603,8 +8620,8 @@ msgstr ""
 msgid "arithmetic"
 msgstr ""
 
-#: library/stdtypes.rst:950 library/stdtypes.rst:4426 library/stdtypes.rst:5395
-#: library/stdtypes.rst:5410
+#: library/stdtypes.rst:950 library/stdtypes.rst:4432 library/stdtypes.rst:5403
+#: library/stdtypes.rst:5418
 msgid "built-in function"
 msgstr ""
 
@@ -8621,7 +8638,7 @@ msgstr ""
 msgid "complex"
 msgstr ":func:`complex`"
 
-#: library/stdtypes.rst:2393 library/stdtypes.rst:3612
+#: library/stdtypes.rst:2399 library/stdtypes.rst:3618
 msgid "+ (plus)"
 msgstr ""
 
@@ -8635,11 +8652,11 @@ msgstr "Grup Ayırıcı"
 msgid "binary operator"
 msgstr "Satır Ayrıcı"
 
-#: library/stdtypes.rst:2393 library/stdtypes.rst:3612
+#: library/stdtypes.rst:2399 library/stdtypes.rst:3618
 msgid "- (minus)"
 msgstr ""
 
-#: library/stdtypes.rst:2350 library/stdtypes.rst:3569
+#: library/stdtypes.rst:2356 library/stdtypes.rst:3575
 msgid "* (asterisk)"
 msgstr ""
 
@@ -8651,7 +8668,7 @@ msgstr ""
 msgid "//"
 msgstr ""
 
-#: library/stdtypes.rst:2320 library/stdtypes.rst:3537
+#: library/stdtypes.rst:2326 library/stdtypes.rst:3543
 msgid "% (percent)"
 msgstr ""
 
@@ -8659,7 +8676,7 @@ msgstr ""
 msgid "**"
 msgstr ""
 
-#: library/stdtypes.rst:393 library/stdtypes.rst:1154 library/stdtypes.rst:4426
+#: library/stdtypes.rst:393 library/stdtypes.rst:1154 library/stdtypes.rst:4432
 #, fuzzy
 msgid "operations on"
 msgstr "İşlem"
@@ -8669,7 +8686,7 @@ msgstr "İşlem"
 msgid "conjugate() (complex number method)"
 msgstr "*c* karmaşık sayısının eşleniği"
 
-#: library/stdtypes.rst:1606 library/stdtypes.rst:5410
+#: library/stdtypes.rst:1606 library/stdtypes.rst:5418
 #, fuzzy
 msgid "module"
 msgstr "Modüller"
@@ -8738,7 +8755,7 @@ msgstr ""
 msgid "iterator protocol"
 msgstr ""
 
-#: library/stdtypes.rst:4820
+#: library/stdtypes.rst:4826
 msgid "protocol"
 msgstr ""
 
@@ -8765,7 +8782,7 @@ msgstr ""
 msgid "iteration over"
 msgstr "İşlem"
 
-#: library/stdtypes.rst:4426
+#: library/stdtypes.rst:4432
 msgid "len"
 msgstr ""
 
@@ -8847,12 +8864,12 @@ msgstr ""
 msgid "list"
 msgstr ""
 
-#: library/stdtypes.rst:2517 library/stdtypes.rst:2715
-#: library/stdtypes.rst:3537
+#: library/stdtypes.rst:2523 library/stdtypes.rst:2721
+#: library/stdtypes.rst:3543
 msgid "bytearray"
 msgstr ""
 
-#: library/stdtypes.rst:4426 library/stdtypes.rst:5410
+#: library/stdtypes.rst:4432 library/stdtypes.rst:5418
 msgid "type"
 msgstr ""
 
@@ -8860,7 +8877,7 @@ msgstr ""
 msgid "assignment"
 msgstr ""
 
-#: library/stdtypes.rst:4426
+#: library/stdtypes.rst:4432
 msgid "del"
 msgstr ""
 
@@ -8901,7 +8918,7 @@ msgstr ""
 msgid "range"
 msgstr "Aralıklar"
 
-#: library/stdtypes.rst:1553 library/stdtypes.rst:2320
+#: library/stdtypes.rst:1553 library/stdtypes.rst:2326
 msgid "string"
 msgstr ""
 
@@ -8923,16 +8940,16 @@ msgstr ""
 msgid "io.StringIO"
 msgstr ""
 
-#: library/stdtypes.rst:2509
+#: library/stdtypes.rst:2515
 msgid "buffer protocol"
 msgstr ""
 
-#: library/stdtypes.rst:2517 library/stdtypes.rst:2715
-#: library/stdtypes.rst:3537
+#: library/stdtypes.rst:2523 library/stdtypes.rst:2721
+#: library/stdtypes.rst:3543
 msgid "bytes"
 msgstr ""
 
-#: library/stdtypes.rst:2715
+#: library/stdtypes.rst:2721
 #, fuzzy
 msgid "methods"
 msgstr "Yöntemler"
@@ -8941,194 +8958,213 @@ msgstr "Yöntemler"
 msgid "re"
 msgstr ""
 
-#: library/stdtypes.rst:3391
+#: library/stdtypes.rst:3397
 msgid "universal newlines"
 msgstr ""
 
-#: library/stdtypes.rst:2128
+#: library/stdtypes.rst:2134
 msgid "str.splitlines method"
 msgstr ""
 
-#: library/stdtypes.rst:2320
+#: library/stdtypes.rst:2326
 msgid "formatting, string (%)"
 msgstr ""
 
-#: library/stdtypes.rst:2320
+#: library/stdtypes.rst:2326
 msgid "interpolation, string (%)"
 msgstr ""
 
-#: library/stdtypes.rst:2320
+#: library/stdtypes.rst:2326
 msgid "formatting, printf"
 msgstr ""
 
-#: library/stdtypes.rst:2320
+#: library/stdtypes.rst:2326
 msgid "interpolation, printf"
 msgstr ""
 
-#: library/stdtypes.rst:3537
+#: library/stdtypes.rst:3543
 msgid "printf-style formatting"
 msgstr ""
 
-#: library/stdtypes.rst:3537
+#: library/stdtypes.rst:3543
 msgid "sprintf-style formatting"
 msgstr ""
 
-#: library/stdtypes.rst:3569
+#: library/stdtypes.rst:3575
 msgid "() (parentheses)"
 msgstr ""
 
-#: library/stdtypes.rst:2393 library/stdtypes.rst:3612
+#: library/stdtypes.rst:2399 library/stdtypes.rst:3618
 msgid "in printf-style formatting"
 msgstr ""
 
-#: library/stdtypes.rst:3569
+#: library/stdtypes.rst:3575
 msgid ". (dot)"
 msgstr ""
 
-#: library/stdtypes.rst:3612
+#: library/stdtypes.rst:3618
 msgid "# (hash)"
 msgstr ""
 
-#: library/stdtypes.rst:3612
+#: library/stdtypes.rst:3618
 msgid "space"
 msgstr ""
 
-#: library/stdtypes.rst:2509
+#: library/stdtypes.rst:2515
 #, fuzzy
 msgid "binary sequence types"
 msgstr "Değiştirilebilir Dizi Tipleri"
 
-#: library/stdtypes.rst:2517
+#: library/stdtypes.rst:2523
 msgid "memoryview"
 msgstr ""
 
-#: library/stdtypes.rst:2517
+#: library/stdtypes.rst:2523
 msgid "array"
 msgstr ""
 
-#: library/stdtypes.rst:3391
+#: library/stdtypes.rst:3397
 msgid "bytes.splitlines method"
 msgstr ""
 
-#: library/stdtypes.rst:3391
+#: library/stdtypes.rst:3397
 msgid "bytearray.splitlines method"
 msgstr ""
 
-#: library/stdtypes.rst:3537
+#: library/stdtypes.rst:3543
 msgid "formatting"
 msgstr ""
 
-#: library/stdtypes.rst:3537
+#: library/stdtypes.rst:3543
 msgid "bytes (%)"
 msgstr ""
 
-#: library/stdtypes.rst:3537
+#: library/stdtypes.rst:3543
 msgid "bytearray (%)"
 msgstr ""
 
-#: library/stdtypes.rst:3537
+#: library/stdtypes.rst:3543
 #, fuzzy
 msgid "interpolation"
 msgstr "Satır Tablolama"
 
-#: library/stdtypes.rst:4224
+#: library/stdtypes.rst:4230
 msgid "set"
 msgstr ""
 
-#: library/stdtypes.rst:4426
+#: library/stdtypes.rst:4432
 msgid "mapping"
 msgstr ""
 
-#: library/stdtypes.rst:4426
+#: library/stdtypes.rst:4432
 msgid "dictionary"
 msgstr ""
 
-#: library/stdtypes.rst:4509
+#: library/stdtypes.rst:4515
 msgid "__missing__()"
 msgstr ""
 
-#: library/stdtypes.rst:4820
+#: library/stdtypes.rst:4826
 #, fuzzy
 msgid "context manager"
 msgstr "Bağlam Yöneticisi Türleri"
 
-#: library/stdtypes.rst:4820
+#: library/stdtypes.rst:4826
 msgid "context management protocol"
 msgstr ""
 
-#: library/stdtypes.rst:4820
+#: library/stdtypes.rst:4826
 #, fuzzy
 msgid "context management"
 msgstr "Bağlam Yöneticisi Türleri"
 
-#: library/stdtypes.rst:4893
+#: library/stdtypes.rst:4899
 msgid "annotation"
 msgstr ""
 
-#: library/stdtypes.rst:4893
+#: library/stdtypes.rst:4899
 msgid "type annotation; type hint"
 msgstr ""
 
-#: library/stdtypes.rst:4905
+#: library/stdtypes.rst:4911
 #, fuzzy
 msgid "GenericAlias"
 msgstr "Genel Takma Ad Türü"
 
-#: library/stdtypes.rst:4905
+#: library/stdtypes.rst:4911
 msgid "Generic"
 msgstr ""
 
-#: library/stdtypes.rst:4905
+#: library/stdtypes.rst:4911
 msgid "Alias"
 msgstr ""
 
-#: library/stdtypes.rst:5160
+#: library/stdtypes.rst:5168
 #, fuzzy
 msgid "Union"
 msgstr "Sendika Türü"
 
-#: library/stdtypes.rst:5160
+#: library/stdtypes.rst:5168
 msgid "union"
 msgstr ""
 
-#: library/stdtypes.rst:5330
+#: library/stdtypes.rst:5338
 #, fuzzy
 msgid "method"
 msgstr "Yöntemler"
 
-#: library/stdtypes.rst:5374
+#: library/stdtypes.rst:5382
 msgid "code"
 msgstr ""
 
-#: library/stdtypes.rst:5374
+#: library/stdtypes.rst:5382
 #, fuzzy
 msgid "code object"
 msgstr "Kod Nesneleri"
 
-#: library/stdtypes.rst:5381
+#: library/stdtypes.rst:5389
 msgid "compile"
 msgstr ""
 
-#: library/stdtypes.rst:5381
+#: library/stdtypes.rst:5389
 msgid "__code__ (function object attribute)"
 msgstr ""
 
-#: library/stdtypes.rst:5395
+#: library/stdtypes.rst:5403
 msgid "exec"
 msgstr ""
 
-#: library/stdtypes.rst:5395
+#: library/stdtypes.rst:5403
 msgid "eval"
 msgstr ""
 
-#: library/stdtypes.rst:5434
+#: library/stdtypes.rst:5442
 msgid "..."
 msgstr ""
 
-#: library/stdtypes.rst:5434
+#: library/stdtypes.rst:5442
 msgid "ellipsis literal"
 msgstr ""
 
+#~ msgid ""
+#~ "Return ``True`` if all characters in the string are printable or the "
+#~ "string is empty, ``False`` otherwise.  Nonprintable characters are those "
+#~ "characters defined in the Unicode character database as \"Other\" or "
+#~ "\"Separator\", excepting the ASCII space (0x20) which is considered "
+#~ "printable.  (Note that printable characters in this context are those "
+#~ "which should not be escaped when :func:`repr` is invoked on a string.  It "
+#~ "has no bearing on the handling of strings written to :data:`sys.stdout` "
+#~ "or :data:`sys.stderr`.)"
+#~ msgstr ""
+#~ "Dizedeki tüm karakterler yazdırılabilirse veya dize boşsa ``True``, aksi "
+#~ "takdirde ``False`` döndürür.  Yazdırılamayan karakterler, yazdırılabilir "
+#~ "olarak kabul edilen ASCII boşluğu (0x20) dışında, Unicode karakter "
+#~ "veritabanında \"Diğer\" veya \"Ayırıcı\" olarak tanımlanan "
+#~ "karakterlerdir.  (Bu bağlamda, yazdırılabilir karakterlerin :func:`repr` "
+#~ "bir dize üzerinde çağrıldığında kaçılmaması gereken karakterler olduğunu "
+#~ "unutmayın.  Bunun :data:`sys.stdout` veya :data:`sys.stderr` dosyalarına "
+#~ "yazılan dizelerin işlenmesiyle bir ilgisi yoktur)"
+
 #~ msgid ""
 #~ "A dictionary or other mapping object used to store an object's (writable) "
 #~ "attributes."
diff --git a/library/string.po b/library/string.po
index e4cfb62af..7d53736d6 100644
--- a/library/string.po
+++ b/library/string.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -77,25 +77,32 @@ msgid ""
 "the ``C`` locale: ``!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~``."
 msgstr ""
 
-#: library/string.rst:64
+#: library/string.rst:65
 msgid ""
-"String of ASCII characters which are considered printable.  This is a "
-"combination of :const:`digits`, :const:`ascii_letters`, :const:"
+"String of ASCII characters which are considered printable by Python. This is "
+"a combination of :const:`digits`, :const:`ascii_letters`, :const:"
 "`punctuation`, and :const:`whitespace`."
 msgstr ""
 
 #: library/string.rst:71
 msgid ""
+"By design, :meth:`string.printable.isprintable() <str.isprintable>` returns :"
+"const:`False`. In particular, ``string.printable`` is not printable in the "
+"POSIX sense (see :manpage:`LC_CTYPE <locale(5)>`)."
+msgstr ""
+
+#: library/string.rst:78
+msgid ""
 "A string containing all ASCII characters that are considered whitespace. "
 "This includes the characters space, tab, linefeed, return, formfeed, and "
 "vertical tab."
 msgstr ""
 
-#: library/string.rst:79
+#: library/string.rst:86
 msgid "Custom String Formatting"
 msgstr ""
 
-#: library/string.rst:81
+#: library/string.rst:88
 msgid ""
 "The built-in string class provides the ability to do complex variable "
 "substitutions and value formatting via the :meth:`~str.format` method "
@@ -105,24 +112,24 @@ msgid ""
 "method."
 msgstr ""
 
-#: library/string.rst:90
+#: library/string.rst:97
 msgid "The :class:`Formatter` class has the following public methods:"
 msgstr ""
 
-#: library/string.rst:94
+#: library/string.rst:101
 msgid ""
 "The primary API method.  It takes a format string and an arbitrary set of "
 "positional and keyword arguments. It is just a wrapper that calls :meth:"
 "`vformat`."
 msgstr ""
 
-#: library/string.rst:98
+#: library/string.rst:105
 msgid ""
 "A format string argument is now :ref:`positional-only <positional-"
 "only_parameter>`."
 msgstr ""
 
-#: library/string.rst:104
+#: library/string.rst:111
 msgid ""
 "This function does the actual work of formatting.  It is exposed as a "
 "separate function for cases where you want to pass in a predefined "
@@ -132,13 +139,13 @@ msgid ""
 "and replacement fields.  It calls the various methods described below."
 msgstr ""
 
-#: library/string.rst:112
+#: library/string.rst:119
 msgid ""
 "In addition, the :class:`Formatter` defines a number of methods that are "
 "intended to be replaced by subclasses:"
 msgstr ""
 
-#: library/string.rst:117
+#: library/string.rst:124
 msgid ""
 "Loop over the format_string and return an iterable of tuples "
 "(*literal_text*, *field_name*, *format_spec*, *conversion*).  This is used "
@@ -146,7 +153,7 @@ msgid ""
 "replacement fields."
 msgstr ""
 
-#: library/string.rst:122
+#: library/string.rst:129
 msgid ""
 "The values in the tuple conceptually represent a span of literal text "
 "followed by a single replacement field.  If there is no literal text (which "
@@ -156,7 +163,7 @@ msgid ""
 "be ``None``."
 msgstr ""
 
-#: library/string.rst:131
+#: library/string.rst:138
 msgid ""
 "Given *field_name* as returned by :meth:`parse` (see above), convert it to "
 "an object to be formatted.  Returns a tuple (obj, used_key).  The default "
@@ -166,7 +173,7 @@ msgid ""
 "*key* parameter to :meth:`get_value`."
 msgstr ""
 
-#: library/string.rst:140
+#: library/string.rst:147
 msgid ""
 "Retrieve a given field value.  The *key* argument will be either an integer "
 "or a string.  If it is an integer, it represents the index of the positional "
@@ -174,21 +181,21 @@ msgid ""
 "in *kwargs*."
 msgstr ""
 
-#: library/string.rst:145
+#: library/string.rst:152
 msgid ""
 "The *args* parameter is set to the list of positional arguments to :meth:"
 "`vformat`, and the *kwargs* parameter is set to the dictionary of keyword "
 "arguments."
 msgstr ""
 
-#: library/string.rst:149
+#: library/string.rst:156
 msgid ""
 "For compound field names, these functions are only called for the first "
 "component of the field name; subsequent components are handled through "
 "normal attribute and indexing operations."
 msgstr ""
 
-#: library/string.rst:153
+#: library/string.rst:160
 msgid ""
 "So for example, the field expression '0.name' would cause :meth:`get_value` "
 "to be called with a *key* argument of 0.  The ``name`` attribute will be "
@@ -196,13 +203,13 @@ msgid ""
 "`getattr` function."
 msgstr ""
 
-#: library/string.rst:158
+#: library/string.rst:165
 msgid ""
 "If the index or keyword refers to an item that does not exist, then an :exc:"
 "`IndexError` or :exc:`KeyError` should be raised."
 msgstr ""
 
-#: library/string.rst:163
+#: library/string.rst:170
 msgid ""
 "Implement checking for unused arguments if desired.  The arguments to this "
 "function is the set of all argument keys that were actually referred to in "
@@ -212,24 +219,24 @@ msgid ""
 "meth:`check_unused_args` is assumed to raise an exception if the check fails."
 msgstr ""
 
-#: library/string.rst:173
+#: library/string.rst:180
 msgid ""
 ":meth:`format_field` simply calls the global :func:`format` built-in.  The "
 "method is provided so that subclasses can override it."
 msgstr ""
 
-#: library/string.rst:178
+#: library/string.rst:185
 msgid ""
 "Converts the value (returned by :meth:`get_field`) given a conversion type "
 "(as in the tuple returned by the :meth:`parse` method).  The default version "
 "understands 's' (str), 'r' (repr) and 'a' (ascii) conversion types."
 msgstr ""
 
-#: library/string.rst:187
+#: library/string.rst:194
 msgid "Format String Syntax"
 msgstr ""
 
-#: library/string.rst:189
+#: library/string.rst:196
 msgid ""
 "The :meth:`str.format` method and the :class:`Formatter` class share the "
 "same syntax for format strings (although in the case of :class:`Formatter`, "
@@ -239,7 +246,7 @@ msgid ""
 "expressions."
 msgstr ""
 
-#: library/string.rst:202
+#: library/string.rst:209
 msgid ""
 "Format strings contain \"replacement fields\" surrounded by curly braces ``{}"
 "``. Anything that is not contained in braces is considered literal text, "
@@ -248,11 +255,11 @@ msgid ""
 "``."
 msgstr ""
 
-#: library/string.rst:207
+#: library/string.rst:214
 msgid "The grammar for a replacement field is as follows:"
 msgstr ""
 
-#: library/string.rst:219
+#: library/string.rst:226
 msgid ""
 "In less formal terms, the replacement field can start with a *field_name* "
 "that specifies the object whose value is to be formatted and inserted into "
@@ -262,11 +269,11 @@ msgid ""
 "specify a non-default format for the replacement value."
 msgstr ""
 
-#: library/string.rst:226
+#: library/string.rst:233
 msgid "See also the :ref:`formatspec` section."
 msgstr ""
 
-#: library/string.rst:228
+#: library/string.rst:235
 msgid ""
 "The *field_name* itself begins with an *arg_name* that is either a number or "
 "a keyword.  If it's a number, it refers to a positional argument, and if "
@@ -283,22 +290,22 @@ msgid ""
 "lookup using :meth:`~object.__getitem__`."
 msgstr ""
 
-#: library/string.rst:242
+#: library/string.rst:249
 msgid ""
 "The positional argument specifiers can be omitted for :meth:`str.format`, so "
 "``'{} {}'.format(a, b)`` is equivalent to ``'{0} {1}'.format(a, b)``."
 msgstr ""
 
-#: library/string.rst:246
+#: library/string.rst:253
 msgid ""
 "The positional argument specifiers can be omitted for :class:`Formatter`."
 msgstr ""
 
-#: library/string.rst:249
+#: library/string.rst:256
 msgid "Some simple format string examples::"
 msgstr ""
 
-#: library/string.rst:251
+#: library/string.rst:258
 msgid ""
 "\"First, thou shalt count to {0}\"  # References first positional argument\n"
 "\"Bring me a {}\"                   # Implicitly references the first "
@@ -311,7 +318,7 @@ msgid ""
 "'players'."
 msgstr ""
 
-#: library/string.rst:258
+#: library/string.rst:265
 msgid ""
 "The *conversion* field causes a type coercion before formatting.  Normally, "
 "the job of formatting a value is done by the :meth:`~object.__format__` "
@@ -321,25 +328,25 @@ msgid ""
 "`~object.__format__`, the normal formatting logic is bypassed."
 msgstr ""
 
-#: library/string.rst:265
+#: library/string.rst:272
 msgid ""
 "Three conversion flags are currently supported: ``'!s'`` which calls :func:"
 "`str` on the value, ``'!r'`` which calls :func:`repr` and ``'!a'`` which "
 "calls :func:`ascii`."
 msgstr ""
 
-#: library/string.rst:269
+#: library/string.rst:276
 msgid "Some examples::"
 msgstr ""
 
-#: library/string.rst:271
+#: library/string.rst:278
 msgid ""
 "\"Harold's a clever {0!s}\"        # Calls str() on the argument first\n"
 "\"Bring out the holy {name!r}\"    # Calls repr() on the argument first\n"
 "\"More {!a}\"                      # Calls ascii() on the argument first"
 msgstr ""
 
-#: library/string.rst:275
+#: library/string.rst:282
 msgid ""
 "The *format_spec* field contains a specification of how the value should be "
 "presented, including such details as field width, alignment, padding, "
@@ -347,13 +354,13 @@ msgid ""
 "\"formatting mini-language\" or interpretation of the *format_spec*."
 msgstr ""
 
-#: library/string.rst:280
+#: library/string.rst:287
 msgid ""
 "Most built-in types support a common formatting mini-language, which is "
 "described in the next section."
 msgstr ""
 
-#: library/string.rst:283
+#: library/string.rst:290
 msgid ""
 "A *format_spec* field can also include nested replacement fields within it. "
 "These nested replacement fields may contain a field name, conversion flag "
@@ -363,15 +370,15 @@ msgid ""
 "to be dynamically specified."
 msgstr ""
 
-#: library/string.rst:290
+#: library/string.rst:297
 msgid "See the :ref:`formatexamples` section for some examples."
 msgstr ""
 
-#: library/string.rst:296
+#: library/string.rst:303
 msgid "Format Specification Mini-Language"
 msgstr ""
 
-#: library/string.rst:298
+#: library/string.rst:305
 msgid ""
 "\"Format specifications\" are used within replacement fields contained "
 "within a format string to define how individual values are presented (see :"
@@ -380,25 +387,25 @@ msgid ""
 "how the format specification is to be interpreted."
 msgstr ""
 
-#: library/string.rst:305
+#: library/string.rst:312
 msgid ""
 "Most built-in types implement the following options for format "
 "specifications, although some of the formatting options are only supported "
 "by the numeric types."
 msgstr ""
 
-#: library/string.rst:308
+#: library/string.rst:315
 msgid ""
 "A general convention is that an empty format specification produces the same "
 "result as if you had called :func:`str` on the value. A non-empty format "
 "specification typically modifies the result."
 msgstr ""
 
-#: library/string.rst:312
+#: library/string.rst:319
 msgid "The general form of a *standard format specifier* is:"
 msgstr ""
 
-#: library/string.rst:324
+#: library/string.rst:333
 msgid ""
 "If a valid *align* value is specified, it can be preceded by a *fill* "
 "character that can be any character and defaults to a space if omitted. It "
@@ -409,113 +416,114 @@ msgid ""
 "the :func:`format` function."
 msgstr ""
 
-#: library/string.rst:333
+#: library/string.rst:342
 msgid "The meaning of the various alignment options is as follows:"
 msgstr ""
 
-#: library/string.rst:373
+#: library/string.rst:383 library/string.rst:442
 msgid "Option"
 msgstr ""
 
-#: library/string.rst:373 library/string.rst:467 library/string.rst:502
+#: library/string.rst:383 library/string.rst:481 library/string.rst:527
 msgid "Meaning"
 msgstr ""
 
-#: library/string.rst:344
+#: library/string.rst:353
 msgid "``'<'``"
 msgstr ""
 
-#: library/string.rst:344
+#: library/string.rst:353
 msgid ""
 "Forces the field to be left-aligned within the available space (this is the "
 "default for most objects)."
 msgstr ""
 
-#: library/string.rst:347
+#: library/string.rst:356
 msgid "``'>'``"
 msgstr ""
 
-#: library/string.rst:347
+#: library/string.rst:356
 msgid ""
 "Forces the field to be right-aligned within the available space (this is the "
 "default for numbers)."
 msgstr ""
 
-#: library/string.rst:350
+#: library/string.rst:359
 msgid "``'='``"
 msgstr ""
 
-#: library/string.rst:350
+#: library/string.rst:359
 msgid ""
 "Forces the padding to be placed after the sign (if any) but before the "
 "digits.  This is used for printing fields in the form '+000000120'. This "
-"alignment option is only valid for numeric types.  It becomes the default "
-"for numbers when '0' immediately precedes the field width."
+"alignment option is only valid for numeric types, excluding :class:"
+"`complex`. It becomes the default for numbers when '0' immediately precedes "
+"the field width."
 msgstr ""
 
-#: library/string.rst:356
+#: library/string.rst:366
 msgid "``'^'``"
 msgstr ""
 
-#: library/string.rst:356
+#: library/string.rst:366
 msgid "Forces the field to be centered within the available space."
 msgstr ""
 
-#: library/string.rst:360
+#: library/string.rst:370
 msgid ""
 "Note that unless a minimum field width is defined, the field width will "
 "always be the same size as the data to fill it, so that the alignment option "
 "has no meaning in this case."
 msgstr ""
 
-#: library/string.rst:364
+#: library/string.rst:374
 msgid ""
 "The *sign* option is only valid for number types, and can be one of the "
 "following:"
 msgstr ""
 
-#: library/string.rst:375
+#: library/string.rst:385
 msgid "``'+'``"
 msgstr ""
 
-#: library/string.rst:375
+#: library/string.rst:385
 msgid ""
-"indicates that a sign should be used for both positive as well as negative "
+"Indicates that a sign should be used for both positive as well as negative "
 "numbers."
 msgstr ""
 
-#: library/string.rst:378
+#: library/string.rst:388
 msgid "``'-'``"
 msgstr ""
 
-#: library/string.rst:378
+#: library/string.rst:388
 msgid ""
-"indicates that a sign should be used only for negative numbers (this is the "
+"Indicates that a sign should be used only for negative numbers (this is the "
 "default behavior)."
 msgstr ""
 
-#: library/string.rst:381
+#: library/string.rst:391
 msgid "space"
 msgstr ""
 
-#: library/string.rst:381
+#: library/string.rst:391
 msgid ""
-"indicates that a leading space should be used on positive numbers, and a "
+"Indicates that a leading space should be used on positive numbers, and a "
 "minus sign on negative numbers."
 msgstr ""
 
-#: library/string.rst:388
+#: library/string.rst:398
 msgid ""
 "The ``'z'`` option coerces negative zero floating-point values to positive "
 "zero after rounding to the format precision.  This option is only valid for "
 "floating-point presentation types."
 msgstr ""
 
-#: library/string.rst:392
+#: library/string.rst:402
 msgid "Added the ``'z'`` option (see also :pep:`682`)."
 msgstr ""
 
-#: library/string.rst:397
+#: library/string.rst:407
 msgid ""
 "The ``'#'`` option causes the \"alternate form\" to be used for the "
 "conversion.  The alternate form is defined differently for different types.  "
@@ -529,51 +537,71 @@ msgid ""
 "and ``'G'`` conversions, trailing zeros are not removed from the result."
 msgstr ""
 
-#: library/string.rst:411
+#: library/string.rst:419
 msgid ""
-"The ``','`` option signals the use of a comma for a thousands separator. For "
-"a locale aware separator, use the ``'n'`` integer presentation type instead."
+"The *width* is a decimal integer defining the minimum total field width, "
+"including any prefixes, separators, and other formatting characters. If not "
+"specified, then the field width will be determined by the content."
 msgstr ""
 
-#: library/string.rst:415
-msgid "Added the ``','`` option (see also :pep:`378`)."
+#: library/string.rst:423
+msgid ""
+"When no explicit alignment is given, preceding the *width* field by a zero "
+"(``'0'``) character enables sign-aware zero-padding for numeric types, "
+"excluding :class:`complex`.  This is equivalent to a *fill* character of "
+"``'0'`` with an *alignment* type of ``'='``."
 msgstr ""
 
-#: library/string.rst:420
+#: library/string.rst:428
 msgid ""
-"The ``'_'`` option signals the use of an underscore for a thousands "
-"separator for floating-point presentation types and for integer presentation "
-"type ``'d'``.  For integer presentation types ``'b'``, ``'o'``, ``'x'``, and "
-"``'X'``, underscores will be inserted every 4 digits.  For other "
-"presentation types, specifying this option is an error."
+"Preceding the *width* field by ``'0'`` no longer affects the default "
+"alignment for strings."
 msgstr ""
 
-#: library/string.rst:427
-msgid "Added the ``'_'`` option (see also :pep:`515`)."
+#: library/string.rst:433
+msgid ""
+"The *grouping* option after the *width* field specifies a digit group "
+"separator for the integral part of a number. It can be one of the following:"
+msgstr ""
+
+#: library/string.rst:444
+msgid "``','``"
 msgstr ""
 
-#: library/string.rst:430
+#: library/string.rst:444
 msgid ""
-"*width* is a decimal integer defining the minimum total field width, "
-"including any prefixes, separators, and other formatting characters. If not "
-"specified, then the field width will be determined by the content."
+"Inserts a comma every 3 digits for integer presentation type ``'d'`` and "
+"floating-point presentation types, excluding ``'n'``. For other presentation "
+"types, this option is not supported."
+msgstr ""
+
+#: library/string.rst:450
+msgid "``'_'``"
 msgstr ""
 
-#: library/string.rst:434
+#: library/string.rst:450
 msgid ""
-"When no explicit alignment is given, preceding the *width* field by a zero "
-"(``'0'``) character enables sign-aware zero-padding for numeric types.  This "
-"is equivalent to a *fill* character of ``'0'`` with an *alignment* type of "
-"``'='``."
+"Inserts an underscore every 3 digits for integer presentation type ``'d'`` "
+"and floating-point presentation types, excluding ``'n'``. For integer "
+"presentation types ``'b'``, ``'o'``, ``'x'``, and ``'X'``, underscores are "
+"inserted every 4 digits. For other presentation types, this option is not "
+"supported."
 msgstr ""
 
-#: library/string.rst:439
+#: library/string.rst:460
 msgid ""
-"Preceding the *width* field by ``'0'`` no longer affects the default "
-"alignment for strings."
+"For a locale aware separator, use the ``'n'`` presentation type instead."
+msgstr ""
+
+#: library/string.rst:462
+msgid "Added the ``','`` option (see also :pep:`378`)."
+msgstr ""
+
+#: library/string.rst:465
+msgid "Added the ``'_'`` option (see also :pep:`515`)."
 msgstr ""
 
-#: library/string.rst:443
+#: library/string.rst:468
 msgid ""
 "The *precision* is a decimal integer indicating how many digits should be "
 "displayed after the decimal point for presentation types ``'f'`` and "
@@ -584,108 +612,108 @@ msgid ""
 "types."
 msgstr ""
 
-#: library/string.rst:451
+#: library/string.rst:476
 msgid "Finally, the *type* determines how the data should be presented."
 msgstr ""
 
-#: library/string.rst:453
+#: library/string.rst:478
 msgid "The available string presentation types are:"
 msgstr ""
 
-#: library/string.rst:467 library/string.rst:502
+#: library/string.rst:492 library/string.rst:527
 msgid "Type"
 msgstr ""
 
-#: library/string.rst:458
+#: library/string.rst:483
 msgid "``'s'``"
 msgstr ""
 
-#: library/string.rst:458
+#: library/string.rst:483
 msgid "String format. This is the default type for strings and may be omitted."
 msgstr ""
 
-#: library/string.rst:490 library/string.rst:575
+#: library/string.rst:515 library/string.rst:601
 msgid "None"
 msgstr ""
 
-#: library/string.rst:461
+#: library/string.rst:486
 msgid "The same as ``'s'``."
 msgstr ""
 
-#: library/string.rst:464
+#: library/string.rst:489
 msgid "The available integer presentation types are:"
 msgstr ""
 
-#: library/string.rst:469
+#: library/string.rst:494
 msgid "``'b'``"
 msgstr ""
 
-#: library/string.rst:469
+#: library/string.rst:494
 msgid "Binary format. Outputs the number in base 2."
 msgstr ""
 
-#: library/string.rst:471
+#: library/string.rst:496
 msgid "``'c'``"
 msgstr ""
 
-#: library/string.rst:471
+#: library/string.rst:496
 msgid ""
 "Character. Converts the integer to the corresponding unicode character "
 "before printing."
 msgstr ""
 
-#: library/string.rst:474
+#: library/string.rst:499
 msgid "``'d'``"
 msgstr ""
 
-#: library/string.rst:474
+#: library/string.rst:499
 msgid "Decimal Integer. Outputs the number in base 10."
 msgstr ""
 
-#: library/string.rst:476
+#: library/string.rst:501
 msgid "``'o'``"
 msgstr ""
 
-#: library/string.rst:476
+#: library/string.rst:501
 msgid "Octal format. Outputs the number in base 8."
 msgstr ""
 
-#: library/string.rst:478
+#: library/string.rst:503
 msgid "``'x'``"
 msgstr ""
 
-#: library/string.rst:478
+#: library/string.rst:503
 msgid ""
 "Hex format. Outputs the number in base 16, using lower-case letters for the "
 "digits above 9."
 msgstr ""
 
-#: library/string.rst:481
+#: library/string.rst:506
 msgid "``'X'``"
 msgstr ""
 
-#: library/string.rst:481
+#: library/string.rst:506
 msgid ""
 "Hex format. Outputs the number in base 16, using upper-case letters for the "
 "digits above 9. In case ``'#'`` is specified, the prefix ``'0x'`` will be "
 "upper-cased to ``'0X'`` as well."
 msgstr ""
 
-#: library/string.rst:568
+#: library/string.rst:593
 msgid "``'n'``"
 msgstr ""
 
-#: library/string.rst:486
+#: library/string.rst:511
 msgid ""
 "Number. This is the same as ``'d'``, except that it uses the current locale "
-"setting to insert the appropriate number separator characters."
+"setting to insert the appropriate digit group separators."
 msgstr ""
 
-#: library/string.rst:490
+#: library/string.rst:515
 msgid "The same as ``'d'``."
 msgstr ""
 
-#: library/string.rst:493
+#: library/string.rst:518
 msgid ""
 "In addition to the above presentation types, integers can be formatted with "
 "the floating-point presentation types listed below (except ``'n'`` and "
@@ -693,17 +721,17 @@ msgid ""
 "floating-point number before formatting."
 msgstr ""
 
-#: library/string.rst:498
+#: library/string.rst:523
 msgid ""
 "The available presentation types for :class:`float` and :class:`~decimal."
 "Decimal` values are:"
 msgstr ""
 
-#: library/string.rst:504
+#: library/string.rst:529
 msgid "``'e'``"
 msgstr ""
 
-#: library/string.rst:504
+#: library/string.rst:529
 msgid ""
 "Scientific notation. For a given precision ``p``, formats the number in "
 "scientific notation with the letter 'e' separating the coefficient from the "
@@ -715,21 +743,21 @@ msgid ""
 "is used."
 msgstr ""
 
-#: library/string.rst:515
+#: library/string.rst:540
 msgid "``'E'``"
 msgstr ""
 
-#: library/string.rst:515
+#: library/string.rst:540
 msgid ""
 "Scientific notation. Same as ``'e'`` except it uses an upper case 'E' as the "
 "separator character."
 msgstr ""
 
-#: library/string.rst:518
+#: library/string.rst:543
 msgid "``'f'``"
 msgstr ""
 
-#: library/string.rst:518
+#: library/string.rst:543
 msgid ""
 "Fixed-point notation. For a given precision ``p``, formats the number as a "
 "decimal number with exactly ``p`` digits following the decimal point. With "
@@ -739,21 +767,21 @@ msgid ""
 "point is omitted unless the ``#`` option is used."
 msgstr ""
 
-#: library/string.rst:527
+#: library/string.rst:552
 msgid "``'F'``"
 msgstr ""
 
-#: library/string.rst:527
+#: library/string.rst:552
 msgid ""
 "Fixed-point notation. Same as ``'f'``, but converts ``nan`` to  ``NAN`` and "
 "``inf`` to ``INF``."
 msgstr ""
 
-#: library/string.rst:530
+#: library/string.rst:555
 msgid "``'g'``"
 msgstr ""
 
-#: library/string.rst:530
+#: library/string.rst:555
 msgid ""
 "General format.  For a given precision ``p >= 1``, this rounds the number to "
 "``p`` significant digits and then formats the result in either fixed-point "
@@ -761,7 +789,7 @@ msgid ""
 "``0`` is treated as equivalent to a precision of ``1``."
 msgstr ""
 
-#: library/string.rst:537
+#: library/string.rst:562
 msgid ""
 "The precise rules are as follows: suppose that the result formatted with "
 "presentation type ``'e'`` and precision ``p-1`` would have exponent "
@@ -774,7 +802,7 @@ msgid ""
 "unless the ``'#'`` option is used."
 msgstr ""
 
-#: library/string.rst:550
+#: library/string.rst:575
 msgid ""
 "With no precision given, uses a precision of ``6`` significant digits for :"
 "class:`float`. For :class:`~decimal.Decimal`, the coefficient of the result "
@@ -784,40 +812,41 @@ msgid ""
 "notation is used otherwise."
 msgstr ""
 
-#: library/string.rst:559
+#: library/string.rst:584
 msgid ""
 "Positive and negative infinity, positive and negative zero, and nans, are "
 "formatted as ``inf``, ``-inf``, ``0``, ``-0`` and ``nan`` respectively, "
 "regardless of the precision."
 msgstr ""
 
-#: library/string.rst:564
+#: library/string.rst:589
 msgid "``'G'``"
 msgstr ""
 
-#: library/string.rst:564
+#: library/string.rst:589
 msgid ""
 "General format. Same as ``'g'`` except switches to ``'E'`` if the number "
 "gets too large. The representations of infinity and NaN are uppercased, too."
 msgstr ""
 
-#: library/string.rst:568
+#: library/string.rst:593
 msgid ""
 "Number. This is the same as ``'g'``, except that it uses the current locale "
-"setting to insert the appropriate number separator characters."
+"setting to insert the appropriate digit group separators for the integral "
+"part of a number."
 msgstr ""
 
-#: library/string.rst:572
+#: library/string.rst:598
 msgid "``'%'``"
 msgstr ""
 
-#: library/string.rst:572
+#: library/string.rst:598
 msgid ""
 "Percentage. Multiplies the number by 100 and displays in fixed (``'f'``) "
 "format, followed by a percent sign."
 msgstr ""
 
-#: library/string.rst:575
+#: library/string.rst:601
 msgid ""
 "For :class:`float` this is like the ``'g'`` type, except that when fixed-"
 "point notation is used to format the result, it always includes at least one "
@@ -826,47 +855,67 @@ msgid ""
 "as large as needed to represent the given value faithfully."
 msgstr ""
 
-#: library/string.rst:583
+#: library/string.rst:609
 msgid ""
 "For :class:`~decimal.Decimal`, this is the same as either ``'g'`` or ``'G'`` "
 "depending on the value of ``context.capitals`` for the current decimal "
 "context."
 msgstr ""
 
-#: library/string.rst:587
+#: library/string.rst:613
 msgid ""
 "The overall effect is to match the output of :func:`str` as altered by the "
 "other format modifiers."
 msgstr ""
 
-#: library/string.rst:595
+#: library/string.rst:617
+msgid ""
+"The result should be correctly rounded to a given precision ``p`` of digits "
+"after the decimal point.  The rounding mode for :class:`float` matches that "
+"of the :func:`round` builtin.  For :class:`~decimal.Decimal`, the rounding "
+"mode of the current :ref:`context <decimal-context>` will be used."
+msgstr ""
+
+#: library/string.rst:622
+msgid ""
+"The available presentation types for :class:`complex` are the same as those "
+"for :class:`float` (``'%'`` is not allowed).  Both the real and imaginary "
+"components of a complex number are formatted as floating-point numbers, "
+"according to the specified presentation type.  They are separated by the "
+"mandatory sign of the imaginary part, the latter being terminated by a ``j`` "
+"suffix.  If the presentation type is missing, the result will match the "
+"output of :func:`str` (complex numbers with a non-zero real part are also "
+"surrounded by parentheses), possibly altered by other format modifiers."
+msgstr ""
+
+#: library/string.rst:635
 msgid "Format examples"
 msgstr ""
 
-#: library/string.rst:597
+#: library/string.rst:637
 msgid ""
 "This section contains examples of the :meth:`str.format` syntax and "
 "comparison with the old ``%``-formatting."
 msgstr ""
 
-#: library/string.rst:600
+#: library/string.rst:640
 msgid ""
 "In most of the cases the syntax is similar to the old ``%``-formatting, with "
 "the addition of the ``{}`` and with ``:`` used instead of ``%``. For "
 "example, ``'%03.2f'`` can be translated to ``'{:03.2f}'``."
 msgstr ""
 
-#: library/string.rst:604
+#: library/string.rst:644
 msgid ""
 "The new format syntax also supports new and different options, shown in the "
 "following examples."
 msgstr ""
 
-#: library/string.rst:607
+#: library/string.rst:647
 msgid "Accessing arguments by position::"
 msgstr ""
 
-#: library/string.rst:609
+#: library/string.rst:649
 msgid ""
 ">>> '{0}, {1}, {2}'.format('a', 'b', 'c')\n"
 "'a, b, c'\n"
@@ -881,11 +930,11 @@ msgid ""
 "'abracadabra'"
 msgstr ""
 
-#: library/string.rst:620
+#: library/string.rst:660
 msgid "Accessing arguments by name::"
 msgstr ""
 
-#: library/string.rst:622
+#: library/string.rst:662
 msgid ""
 ">>> 'Coordinates: {latitude}, {longitude}'.format(latitude='37.24N', "
 "longitude='-115.81W')\n"
@@ -895,11 +944,11 @@ msgid ""
 "'Coordinates: 37.24N, -115.81W'"
 msgstr ""
 
-#: library/string.rst:628
+#: library/string.rst:668
 msgid "Accessing arguments' attributes::"
 msgstr ""
 
-#: library/string.rst:630
+#: library/string.rst:670
 msgid ""
 ">>> c = 3-5j\n"
 ">>> ('The complex number {0} is formed from the real part {0.real} '\n"
@@ -916,33 +965,33 @@ msgid ""
 "'Point(4, 2)'"
 msgstr ""
 
-#: library/string.rst:643
+#: library/string.rst:683
 msgid "Accessing arguments' items::"
 msgstr ""
 
-#: library/string.rst:645
+#: library/string.rst:685
 msgid ""
 ">>> coord = (3, 5)\n"
 ">>> 'X: {0[0]};  Y: {0[1]}'.format(coord)\n"
 "'X: 3;  Y: 5'"
 msgstr ""
 
-#: library/string.rst:649
+#: library/string.rst:689
 msgid "Replacing ``%s`` and ``%r``::"
 msgstr ""
 
-#: library/string.rst:651
+#: library/string.rst:691
 msgid ""
 ">>> \"repr() shows quotes: {!r}; str() doesn't: {!s}\".format('test1', "
 "'test2')\n"
 "\"repr() shows quotes: 'test1'; str() doesn't: test2\""
 msgstr ""
 
-#: library/string.rst:654
+#: library/string.rst:694
 msgid "Aligning the text and specifying a width::"
 msgstr ""
 
-#: library/string.rst:656
+#: library/string.rst:696
 msgid ""
 ">>> '{:<30}'.format('left aligned')\n"
 "'left aligned                  '\n"
@@ -954,11 +1003,11 @@ msgid ""
 "'***********centered***********'"
 msgstr ""
 
-#: library/string.rst:665
+#: library/string.rst:705
 msgid "Replacing ``%+f``, ``%-f``, and ``% f`` and specifying a sign::"
 msgstr ""
 
-#: library/string.rst:667
+#: library/string.rst:707
 msgid ""
 ">>> '{:+f}; {:+f}'.format(3.14, -3.14)  # show it always\n"
 "'+3.140000; -3.140000'\n"
@@ -969,12 +1018,12 @@ msgid ""
 "'3.140000; -3.140000'"
 msgstr ""
 
-#: library/string.rst:674
+#: library/string.rst:714
 msgid ""
 "Replacing ``%x`` and ``%o`` and converting the value to different bases::"
 msgstr ""
 
-#: library/string.rst:676
+#: library/string.rst:716
 msgid ""
 ">>> # format also supports binary numbers\n"
 ">>> \"int: {0:d};  hex: {0:x};  oct: {0:o};  bin: {0:b}\".format(42)\n"
@@ -984,21 +1033,27 @@ msgid ""
 "'int: 42;  hex: 0x2a;  oct: 0o52;  bin: 0b101010'"
 msgstr ""
 
-#: library/string.rst:683
-msgid "Using the comma as a thousands separator::"
+#: library/string.rst:723
+msgid "Using the comma or the underscore as a digit group separator::"
 msgstr ""
 
-#: library/string.rst:685
+#: library/string.rst:725
 msgid ""
 ">>> '{:,}'.format(1234567890)\n"
-"'1,234,567,890'"
+"'1,234,567,890'\n"
+">>> '{:_}'.format(1234567890)\n"
+"'1_234_567_890'\n"
+">>> '{:_b}'.format(1234567890)\n"
+"'100_1001_1001_0110_0000_0010_1101_0010'\n"
+">>> '{:_x}'.format(1234567890)\n"
+"'4996_02d2'"
 msgstr ""
 
-#: library/string.rst:688
+#: library/string.rst:734
 msgid "Expressing a percentage::"
 msgstr ""
 
-#: library/string.rst:690
+#: library/string.rst:736
 msgid ""
 ">>> points = 19\n"
 ">>> total = 22\n"
@@ -1006,11 +1061,11 @@ msgid ""
 "'Correct answers: 86.36%'"
 msgstr ""
 
-#: library/string.rst:695
+#: library/string.rst:741
 msgid "Using type-specific formatting::"
 msgstr ""
 
-#: library/string.rst:697
+#: library/string.rst:743
 msgid ""
 ">>> import datetime\n"
 ">>> d = datetime.datetime(2010, 7, 4, 12, 15, 58)\n"
@@ -1018,11 +1073,11 @@ msgid ""
 "'2010-07-04 12:15:58'"
 msgstr ""
 
-#: library/string.rst:702
+#: library/string.rst:748
 msgid "Nesting arguments and more complex examples::"
 msgstr ""
 
-#: library/string.rst:704
+#: library/string.rst:750
 msgid ""
 ">>> for align, text in zip('<^>', ['left', 'center', 'right']):\n"
 "...     '{0:{fill}{align}16}'.format(text, fill=align, align=align)\n"
@@ -1038,7 +1093,7 @@ msgid ""
 "3232235521\n"
 ">>>\n"
 ">>> width = 5\n"
-">>> for num in range(5,12): \n"
+">>> for num in range(5,12):\n"
 "...     for base in 'dXob':\n"
 "...         print('{0:{width}{base}}'.format(num, base=base, width=width), "
 "end=' ')\n"
@@ -1053,11 +1108,11 @@ msgid ""
 "   11     B    13  1011"
 msgstr ""
 
-#: library/string.rst:736
+#: library/string.rst:782
 msgid "Template strings"
 msgstr ""
 
-#: library/string.rst:738
+#: library/string.rst:784
 msgid ""
 "Template strings provide simpler string substitutions as described in :pep:"
 "`292`.  A primary use case for template strings is for internationalization "
@@ -1067,17 +1122,17 @@ msgid ""
 "the `flufl.i18n <https://flufli18n.readthedocs.io/en/latest/>`_ package."
 msgstr ""
 
-#: library/string.rst:748
+#: library/string.rst:794
 msgid ""
 "Template strings support ``$``-based substitutions, using the following "
 "rules:"
 msgstr ""
 
-#: library/string.rst:750
+#: library/string.rst:796
 msgid "``$$`` is an escape; it is replaced with a single ``$``."
 msgstr ""
 
-#: library/string.rst:752
+#: library/string.rst:798
 msgid ""
 "``$identifier`` names a substitution placeholder matching a mapping key of "
 "``\"identifier\"``.  By default, ``\"identifier\"`` is restricted to any "
@@ -1087,30 +1142,30 @@ msgid ""
 "specification."
 msgstr ""
 
-#: library/string.rst:759
+#: library/string.rst:805
 msgid ""
 "``${identifier}`` is equivalent to ``$identifier``.  It is required when "
 "valid identifier characters follow the placeholder but are not part of the "
 "placeholder, such as ``\"${noun}ification\"``."
 msgstr ""
 
-#: library/string.rst:763
+#: library/string.rst:809
 msgid ""
 "Any other appearance of ``$`` in the string will result in a :exc:"
 "`ValueError` being raised."
 msgstr ""
 
-#: library/string.rst:766
+#: library/string.rst:812
 msgid ""
 "The :mod:`string` module provides a :class:`Template` class that implements "
 "these rules.  The methods of :class:`Template` are:"
 msgstr ""
 
-#: library/string.rst:772
+#: library/string.rst:818
 msgid "The constructor takes a single argument which is the template string."
 msgstr ""
 
-#: library/string.rst:777
+#: library/string.rst:823
 msgid ""
 "Performs the template substitution, returning a new string.  *mapping* is "
 "any dictionary-like object with keys that match the placeholders in the "
@@ -1119,7 +1174,7 @@ msgid ""
 "there are duplicates, the placeholders from *kwds* take precedence."
 msgstr ""
 
-#: library/string.rst:786
+#: library/string.rst:832
 msgid ""
 "Like :meth:`substitute`, except that if placeholders are missing from "
 "*mapping* and *kwds*, instead of raising a :exc:`KeyError` exception, the "
@@ -1128,7 +1183,7 @@ msgid ""
 "simply return ``$`` instead of raising :exc:`ValueError`."
 msgstr ""
 
-#: library/string.rst:792
+#: library/string.rst:838
 msgid ""
 "While other exceptions may still occur, this method is called \"safe\" "
 "because it always tries to return a usable string instead of raising an "
@@ -1138,33 +1193,33 @@ msgid ""
 "Python identifiers."
 msgstr ""
 
-#: library/string.rst:802
+#: library/string.rst:848
 msgid ""
 "Returns false if the template has invalid placeholders that will cause :meth:"
 "`substitute` to raise :exc:`ValueError`."
 msgstr ""
 
-#: library/string.rst:810
+#: library/string.rst:856
 msgid ""
 "Returns a list of the valid identifiers in the template, in the order they "
 "first appear, ignoring any invalid identifiers."
 msgstr ""
 
-#: library/string.rst:815
+#: library/string.rst:861
 msgid ":class:`Template` instances also provide one public data attribute:"
 msgstr ""
 
-#: library/string.rst:819
+#: library/string.rst:865
 msgid ""
 "This is the object passed to the constructor's *template* argument.  In "
 "general, you shouldn't change it, but read-only access is not enforced."
 msgstr ""
 
-#: library/string.rst:822
+#: library/string.rst:868
 msgid "Here is an example of how to use a Template::"
 msgstr ""
 
-#: library/string.rst:824
+#: library/string.rst:870
 msgid ""
 ">>> from string import Template\n"
 ">>> s = Template('$who likes $what')\n"
@@ -1183,7 +1238,7 @@ msgid ""
 "'tim likes $what'"
 msgstr ""
 
-#: library/string.rst:840
+#: library/string.rst:886
 msgid ""
 "Advanced usage: you can derive subclasses of :class:`Template` to customize "
 "the placeholder syntax, delimiter character, or the entire regular "
@@ -1191,7 +1246,7 @@ msgid ""
 "these class attributes:"
 msgstr ""
 
-#: library/string.rst:845
+#: library/string.rst:891
 msgid ""
 "*delimiter* -- This is the literal string describing a placeholder "
 "introducing delimiter.  The default value is ``$``.  Note that this should "
@@ -1201,7 +1256,7 @@ msgid ""
 "the subclass's class namespace)."
 msgstr ""
 
-#: library/string.rst:852
+#: library/string.rst:898
 msgid ""
 "*idpattern* -- This is the regular expression describing the pattern for non-"
 "braced placeholders.  The default value is the regular expression ``(?a:[_a-"
@@ -1209,19 +1264,19 @@ msgid ""
 "pattern will also apply to braced placeholders."
 msgstr ""
 
-#: library/string.rst:859
+#: library/string.rst:905
 msgid ""
 "Since default *flags* is ``re.IGNORECASE``, pattern ``[a-z]`` can match with "
 "some non-ASCII characters. That's why we use the local ``a`` flag here."
 msgstr ""
 
-#: library/string.rst:863
+#: library/string.rst:909
 msgid ""
 "*braceidpattern* can be used to define separate patterns used inside and "
 "outside the braces."
 msgstr ""
 
-#: library/string.rst:867
+#: library/string.rst:913
 msgid ""
 "*braceidpattern* -- This is like *idpattern* but describes the pattern for "
 "braced placeholders.  Defaults to ``None`` which means to fall back to "
@@ -1230,7 +1285,7 @@ msgid ""
 "unbraced placeholders."
 msgstr ""
 
-#: library/string.rst:875
+#: library/string.rst:921
 msgid ""
 "*flags* -- The regular expression flags that will be applied when compiling "
 "the regular expression used for recognizing substitutions.  The default "
@@ -1239,7 +1294,7 @@ msgid ""
 "regular expressions."
 msgstr ""
 
-#: library/string.rst:883
+#: library/string.rst:929
 msgid ""
 "Alternatively, you can provide the entire regular expression pattern by "
 "overriding the class attribute *pattern*.  If you do this, the value must be "
@@ -1248,41 +1303,41 @@ msgid ""
 "placeholder rule:"
 msgstr ""
 
-#: library/string.rst:889
+#: library/string.rst:935
 msgid ""
 "*escaped* -- This group matches the escape sequence, e.g. ``$$``, in the "
 "default pattern."
 msgstr ""
 
-#: library/string.rst:892
+#: library/string.rst:938
 msgid ""
 "*named* -- This group matches the unbraced placeholder name; it should not "
 "include the delimiter in capturing group."
 msgstr ""
 
-#: library/string.rst:895
+#: library/string.rst:941
 msgid ""
 "*braced* -- This group matches the brace enclosed placeholder name; it "
 "should not include either the delimiter or braces in the capturing group."
 msgstr ""
 
-#: library/string.rst:898
+#: library/string.rst:944
 msgid ""
 "*invalid* -- This group matches any other delimiter pattern (usually a "
 "single delimiter), and it should appear last in the regular expression."
 msgstr ""
 
-#: library/string.rst:901
+#: library/string.rst:947
 msgid ""
 "The methods on this class will raise :exc:`ValueError` if the pattern "
 "matches the template without one of these named groups matching."
 msgstr ""
 
-#: library/string.rst:906
+#: library/string.rst:952
 msgid "Helper functions"
 msgstr ""
 
-#: library/string.rst:910
+#: library/string.rst:956
 msgid ""
 "Split the argument into words using :meth:`str.split`, capitalize each word "
 "using :meth:`str.capitalize`, and join the capitalized words using :meth:"
@@ -1292,75 +1347,74 @@ msgid ""
 "the words."
 msgstr ""
 
-#: library/string.rst:195
+#: library/string.rst:202
 msgid "{} (curly brackets)"
 msgstr ""
 
-#: library/string.rst:335 library/string.rst:386 library/string.rst:409
-#: library/string.rst:418
+#: library/string.rst:344 library/string.rst:396 library/string.rst:437
 msgid "in string formatting"
 msgstr ""
 
-#: library/string.rst:195
+#: library/string.rst:202
 msgid ". (dot)"
 msgstr ""
 
-#: library/string.rst:195
+#: library/string.rst:202
 msgid "[] (square brackets)"
 msgstr ""
 
-#: library/string.rst:195
+#: library/string.rst:202
 msgid "! (exclamation)"
 msgstr ""
 
-#: library/string.rst:195
+#: library/string.rst:202
 msgid ": (colon)"
 msgstr ""
 
-#: library/string.rst:335
+#: library/string.rst:344
 msgid "< (less)"
 msgstr ""
 
-#: library/string.rst:335
+#: library/string.rst:344
 msgid "> (greater)"
 msgstr ""
 
-#: library/string.rst:335
+#: library/string.rst:344
 msgid "= (equals)"
 msgstr ""
 
-#: library/string.rst:335
+#: library/string.rst:344
 msgid "^ (caret)"
 msgstr ""
 
-#: library/string.rst:367
+#: library/string.rst:377
 msgid "+ (plus)"
 msgstr ""
 
-#: library/string.rst:367
+#: library/string.rst:377
 msgid "- (minus)"
 msgstr ""
 
-#: library/string.rst:386
+#: library/string.rst:396
 msgid "z"
 msgstr ""
 
-#: library/string.rst:395
+#: library/string.rst:405
 msgid "# (hash)"
 msgstr ""
 
-#: library/string.rst:409
+#: library/string.rst:437
 msgid ", (comma)"
 msgstr ""
 
-#: library/string.rst:418
+#: library/string.rst:437
 msgid "_ (underscore)"
 msgstr ""
 
-#: library/string.rst:746
+#: library/string.rst:792
 msgid "$ (dollar)"
 msgstr ""
 
-#: library/string.rst:746
+#: library/string.rst:792
 msgid "in template strings"
 msgstr ""
diff --git a/library/sys.po b/library/sys.po
index 41153f80d..b4956b914 100644
--- a/library/sys.po
+++ b/library/sys.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -24,7 +24,8 @@ msgstr ""
 msgid ""
 "This module provides access to some variables used or maintained by the "
 "interpreter and to functions that interact strongly with the interpreter. It "
-"is always available."
+"is always available. Unless explicitly noted otherwise, all variables are "
+"read-only."
 msgstr ""
 
 #: library/sys.rst:16
@@ -39,8 +40,8 @@ msgid ""
 "removed)."
 msgstr ""
 
-#: library/sys.rst:288 library/sys.rst:747 library/sys.rst:978
-#: library/sys.rst:1707 library/sys.rst:1730 library/sys.rst:1982
+#: library/sys.rst:288 library/sys.rst:747 library/sys.rst:1007
+#: library/sys.rst:1736 library/sys.rst:1759 library/sys.rst:2011
 msgid "Availability"
 msgstr ""
 
@@ -957,8 +958,8 @@ msgstr ""
 
 #: library/sys.rst:754
 msgid ""
-"Return the name of the current default string encoding used by the Unicode "
-"implementation."
+"Return ``'utf-8'``. This is the name of the default string encoding, used in "
+"methods like :meth:`str.encode`."
 msgstr ""
 
 #: library/sys.rst:760
@@ -1095,7 +1096,7 @@ msgstr ""
 
 #: library/sys.rst:873
 msgid ""
-"Return the interpreter's \"thread switch interval\"; see :func:"
+"Return the interpreter's \"thread switch interval\" in seconds; see :func:"
 "`setswitchinterval`."
 msgstr ""
 
@@ -1135,15 +1136,48 @@ msgid ""
 "argument ``depth``."
 msgstr ""
 
+#: library/sys.rst:912
+msgid ""
+"This function only exists if CPython was built using the specialized "
+"configure option :option:`--with-trace-refs`. It is intended only for "
+"debugging garbage-collection issues."
+msgstr ""
+
 #: library/sys.rst:916
+msgid ""
+"Return a list of up to *limit* dynamically allocated Python objects. If "
+"*type* is given, only objects of that exact type (not subtypes) are included."
+msgstr ""
+
+#: library/sys.rst:920
+msgid ""
+"Objects from the list are not safe to use. Specifically, the result will "
+"include objects from all interpreters that share their object allocator "
+"state (that is, ones created with :c:member:`PyInterpreterConfig."
+"use_main_obmalloc` set to 1 or using :c:func:`Py_NewInterpreter`, and the :"
+"ref:`main interpreter <sub-interpreter-support>`). Mixing objects from "
+"different interpreters may lead to crashes or other unexpected behavior."
+msgstr ""
+
+#: library/sys.rst:931
+msgid ""
+"This function should be used for specialized purposes only. It is not "
+"guaranteed to exist in all implementations of Python."
+msgstr ""
+
+#: library/sys.rst:936
+msgid "The result may include objects from other interpreters."
+msgstr ""
+
+#: library/sys.rst:945
 msgid "Get the profiler function as set by :func:`setprofile`."
 msgstr ""
 
-#: library/sys.rst:925
+#: library/sys.rst:954
 msgid "Get the trace function as set by :func:`settrace`."
 msgstr ""
 
-#: library/sys.rst:929
+#: library/sys.rst:958
 msgid ""
 "The :func:`gettrace` function is intended only for implementing debuggers, "
 "profilers, coverage tools and the like.  Its behavior is part of the "
@@ -1151,7 +1185,7 @@ msgid ""
 "thus may not be available in all Python implementations."
 msgstr ""
 
-#: library/sys.rst:937
+#: library/sys.rst:966
 msgid ""
 "Return a named tuple describing the Windows version currently running.  The "
 "named elements are *major*, *minor*, *build*, *platform*, *service_pack*, "
@@ -1163,54 +1197,54 @@ msgid ""
 "first 5 elements are retrievable by indexing."
 msgstr ""
 
-#: library/sys.rst:948
+#: library/sys.rst:977
 msgid "*platform* will be ``2`` (VER_PLATFORM_WIN32_NT)."
 msgstr ""
 
-#: library/sys.rst:950
+#: library/sys.rst:979
 msgid "*product_type* may be one of the following values:"
 msgstr ""
 
-#: library/sys.rst:953
+#: library/sys.rst:982
 msgid "Constant"
 msgstr ""
 
-#: library/sys.rst:953
+#: library/sys.rst:982
 msgid "Meaning"
 msgstr ""
 
-#: library/sys.rst:955
+#: library/sys.rst:984
 msgid "``1`` (VER_NT_WORKSTATION)"
 msgstr ""
 
-#: library/sys.rst:955
+#: library/sys.rst:984
 msgid "The system is a workstation."
 msgstr ""
 
-#: library/sys.rst:957
+#: library/sys.rst:986
 msgid "``2`` (VER_NT_DOMAIN_CONTROLLER)"
 msgstr ""
 
-#: library/sys.rst:957
+#: library/sys.rst:986
 msgid "The system is a domain controller."
 msgstr ""
 
-#: library/sys.rst:960
+#: library/sys.rst:989
 msgid "``3`` (VER_NT_SERVER)"
 msgstr ""
 
-#: library/sys.rst:960
+#: library/sys.rst:989
 msgid "The system is a server, but not a domain controller."
 msgstr ""
 
-#: library/sys.rst:964
+#: library/sys.rst:993
 msgid ""
 "This function wraps the Win32 :c:func:`!GetVersionEx` function; see the "
 "Microsoft documentation on :c:func:`!OSVERSIONINFOEX` for more information "
 "about these fields."
 msgstr ""
 
-#: library/sys.rst:968
+#: library/sys.rst:997
 msgid ""
 "*platform_version* returns the major version, minor version and build number "
 "of the current operating system, rather than the version that is being "
@@ -1218,24 +1252,24 @@ msgid ""
 "feature detection."
 msgstr ""
 
-#: library/sys.rst:974
+#: library/sys.rst:1003
 msgid ""
 "*platform_version* derives the version from kernel32.dll which can be of a "
 "different version than the OS version. Please use :mod:`platform` module for "
 "achieving accurate OS version."
 msgstr ""
 
-#: library/sys.rst:980
+#: library/sys.rst:1009
 msgid ""
 "Changed to a named tuple and added *service_pack_minor*, "
 "*service_pack_major*, *suite_mask*, and *product_type*."
 msgstr ""
 
-#: library/sys.rst:984
+#: library/sys.rst:1013
 msgid "Added *platform_version*"
 msgstr ""
 
-#: library/sys.rst:990
+#: library/sys.rst:1019
 msgid ""
 "Returns an *asyncgen_hooks* object, which is similar to a :class:"
 "`~collections.namedtuple` of the form ``(firstiter, finalizer)``, where "
@@ -1245,71 +1279,71 @@ msgid ""
 "loop."
 msgstr ""
 
-#: library/sys.rst:997
+#: library/sys.rst:1026
 msgid "See :pep:`525` for more details."
 msgstr ""
 
-#: library/sys.rst:1678
+#: library/sys.rst:1707
 msgid ""
 "This function has been added on a provisional basis (see :pep:`411` for "
 "details.)"
 msgstr ""
 
-#: library/sys.rst:1007
+#: library/sys.rst:1036
 msgid ""
 "Get the current coroutine origin tracking depth, as set by :func:"
 "`set_coroutine_origin_tracking_depth`."
 msgstr ""
 
-#: library/sys.rst:1699
+#: library/sys.rst:1728
 msgid ""
 "This function has been added on a provisional basis (see :pep:`411` for "
 "details.)  Use it only for debugging purposes."
 msgstr ""
 
-#: library/sys.rst:1019
+#: library/sys.rst:1048
 msgid ""
 "A :term:`named tuple` giving parameters of the numeric hash implementation.  "
 "For more details about hashing of numeric types, see :ref:`numeric-hash`."
 msgstr ""
 
-#: library/sys.rst:1025
+#: library/sys.rst:1054
 msgid "The width in bits used for hash values"
 msgstr ""
 
-#: library/sys.rst:1029
+#: library/sys.rst:1058
 msgid "The prime modulus P used for numeric hash scheme"
 msgstr ""
 
-#: library/sys.rst:1033
+#: library/sys.rst:1062
 msgid "The hash value returned for a positive infinity"
 msgstr ""
 
-#: library/sys.rst:1037
+#: library/sys.rst:1066
 msgid "(This attribute is no longer used)"
 msgstr ""
 
-#: library/sys.rst:1041
+#: library/sys.rst:1070
 msgid "The multiplier used for the imaginary part of a complex number"
 msgstr ""
 
-#: library/sys.rst:1045
+#: library/sys.rst:1074
 msgid "The name of the algorithm for hashing of str, bytes, and memoryview"
 msgstr ""
 
-#: library/sys.rst:1049
+#: library/sys.rst:1078
 msgid "The internal output size of the hash algorithm"
 msgstr ""
 
-#: library/sys.rst:1053
+#: library/sys.rst:1082
 msgid "The size of the seed key of the hash algorithm"
 msgstr ""
 
-#: library/sys.rst:1057
+#: library/sys.rst:1086
 msgid "Added *algorithm*, *hash_bits* and *seed_bits*"
 msgstr ""
 
-#: library/sys.rst:1063
+#: library/sys.rst:1092
 msgid ""
 "The version number encoded as a single integer.  This is guaranteed to "
 "increase with each version, including proper support for non-production "
@@ -1317,7 +1351,7 @@ msgid ""
 "version 1.5.2, use::"
 msgstr ""
 
-#: library/sys.rst:1067
+#: library/sys.rst:1096
 msgid ""
 "if sys.hexversion >= 0x010502F0:\n"
 "    # use some advanced feature\n"
@@ -1327,7 +1361,7 @@ msgid ""
 "    ..."
 msgstr ""
 
-#: library/sys.rst:1074
+#: library/sys.rst:1103
 msgid ""
 "This is called ``hexversion`` since it only really looks meaningful when "
 "viewed as the result of passing it to the built-in :func:`hex` function.  "
@@ -1335,25 +1369,25 @@ msgid ""
 "human-friendly encoding of the same information."
 msgstr ""
 
-#: library/sys.rst:1079
+#: library/sys.rst:1108
 msgid "More details of ``hexversion`` can be found at :ref:`apiabiversion`."
 msgstr ""
 
-#: library/sys.rst:1084
+#: library/sys.rst:1113
 msgid ""
 "An object containing information about the implementation of the currently "
 "running Python interpreter.  The following attributes are required to exist "
 "in all Python implementations."
 msgstr ""
 
-#: library/sys.rst:1088
+#: library/sys.rst:1117
 msgid ""
 "*name* is the implementation's identifier, e.g. ``'cpython'``.  The actual "
 "string is defined by the Python implementation, but it is guaranteed to be "
 "lower case."
 msgstr ""
 
-#: library/sys.rst:1092
+#: library/sys.rst:1121
 msgid ""
 "*version* is a named tuple, in the same format as :data:`sys.version_info`.  "
 "It represents the version of the Python *implementation*.  This has a "
@@ -1365,13 +1399,13 @@ msgid ""
 "the same value, since it is the reference implementation."
 msgstr ""
 
-#: library/sys.rst:1102
+#: library/sys.rst:1131
 msgid ""
 "*hexversion* is the implementation version in hexadecimal format, like :data:"
 "`sys.hexversion`."
 msgstr ""
 
-#: library/sys.rst:1105
+#: library/sys.rst:1134
 msgid ""
 "*cache_tag* is the tag used by the import machinery in the filenames of "
 "cached modules.  By convention, it would be a composite of the "
@@ -1380,7 +1414,7 @@ msgid ""
 "set to ``None``, it indicates that module caching should be disabled."
 msgstr ""
 
-#: library/sys.rst:1112
+#: library/sys.rst:1141
 msgid ""
 ":data:`sys.implementation` may contain additional attributes specific to the "
 "Python implementation.  These non-standard attributes must start with an "
@@ -1390,47 +1424,47 @@ msgid ""
 "versions, however.)  See :pep:`421` for more information."
 msgstr ""
 
-#: library/sys.rst:1123
+#: library/sys.rst:1152
 msgid ""
 "The addition of new required attributes must go through the normal PEP "
 "process. See :pep:`421` for more information."
 msgstr ""
 
-#: library/sys.rst:1128
+#: library/sys.rst:1157
 msgid ""
 "A :term:`named tuple` that holds information about Python's internal "
 "representation of integers.  The attributes are read only."
 msgstr ""
 
-#: library/sys.rst:1133
+#: library/sys.rst:1162
 msgid ""
 "The number of bits held in each digit. Python integers are stored internally "
 "in base ``2**int_info.bits_per_digit``."
 msgstr ""
 
-#: library/sys.rst:1138
+#: library/sys.rst:1167
 msgid "The size in bytes of the C type used to represent a digit."
 msgstr ""
 
-#: library/sys.rst:1142
+#: library/sys.rst:1171
 msgid ""
 "The default value for :func:`sys.get_int_max_str_digits` when it is not "
 "otherwise explicitly configured."
 msgstr ""
 
-#: library/sys.rst:1147
+#: library/sys.rst:1176
 msgid ""
 "The minimum non-zero value for :func:`sys.set_int_max_str_digits`, :envvar:"
 "`PYTHONINTMAXSTRDIGITS`, or :option:`-X int_max_str_digits <-X>`."
 msgstr ""
 
-#: library/sys.rst:1154
+#: library/sys.rst:1183
 msgid ""
 "Added :attr:`~int_info.default_max_str_digits` and :attr:`~int_info."
 "str_digits_check_threshold`."
 msgstr ""
 
-#: library/sys.rst:1160
+#: library/sys.rst:1189
 msgid ""
 "When this attribute exists, its value is automatically called (with no "
 "arguments) when the interpreter is launched in :ref:`interactive mode <tut-"
@@ -1439,13 +1473,13 @@ msgid ""
 "<rlcompleter-config>`."
 msgstr ""
 
-#: library/sys.rst:1168
+#: library/sys.rst:1197
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``cpython.run_interactivehook`` "
 "with the hook object as the argument when the hook is called on startup."
 msgstr ""
 
-#: library/sys.rst:1177
+#: library/sys.rst:1206
 msgid ""
 "Enter *string* in the table of \"interned\" strings and return the interned "
 "string -- which is *string* itself or a copy. Interning strings is useful to "
@@ -1457,19 +1491,19 @@ msgid ""
 "attributes have interned keys."
 msgstr ""
 
-#: library/sys.rst:1185
+#: library/sys.rst:1214
 msgid ""
 "Interned strings are not immortal; you must keep a reference to the return "
 "value of :func:`intern` around to benefit from it."
 msgstr ""
 
-#: library/sys.rst:1191
+#: library/sys.rst:1220
 msgid ""
 "Return :const:`True` if the Python interpreter is :term:`shutting down "
 "<interpreter shutdown>`, :const:`False` otherwise."
 msgstr ""
 
-#: library/sys.rst:1198
+#: library/sys.rst:1227
 msgid ""
 "This variable is not always defined; it is set to the exception instance "
 "when an exception is not handled and the interpreter prints an error message "
@@ -1480,34 +1514,34 @@ msgid ""
 "more information.)"
 msgstr ""
 
-#: library/sys.rst:1212
+#: library/sys.rst:1241
 msgid ""
 "These three variables are deprecated; use :data:`sys.last_exc` instead. They "
 "hold the legacy representation of ``sys.last_exc``, as returned from :func:"
 "`exc_info` above."
 msgstr ""
 
-#: library/sys.rst:1218
+#: library/sys.rst:1247
 msgid ""
 "An integer giving the maximum value a variable of type :c:type:`Py_ssize_t` "
 "can take.  It's usually ``2**31 - 1`` on a 32-bit platform and ``2**63 - 1`` "
 "on a 64-bit platform."
 msgstr ""
 
-#: library/sys.rst:1225
+#: library/sys.rst:1254
 msgid ""
 "An integer giving the value of the largest Unicode code point, i.e. "
 "``1114111`` (``0x10FFFF`` in hexadecimal)."
 msgstr ""
 
-#: library/sys.rst:1228
+#: library/sys.rst:1257
 msgid ""
 "Before :pep:`393`, ``sys.maxunicode`` used to be either ``0xFFFF`` or "
 "``0x10FFFF``, depending on the configuration option that specified whether "
 "Unicode characters were stored as UCS-2 or UCS-4."
 msgstr ""
 
-#: library/sys.rst:1236
+#: library/sys.rst:1265
 msgid ""
 "A list of :term:`meta path finder` objects that have their :meth:`~importlib."
 "abc.MetaPathFinder.find_spec` methods called to see if one of the objects "
@@ -1520,40 +1554,40 @@ msgid ""
 "``None`` if the module cannot be found."
 msgstr ""
 
-#: library/sys.rst:1249
+#: library/sys.rst:1278
 msgid ":class:`importlib.abc.MetaPathFinder`"
 msgstr ""
 
-#: library/sys.rst:1250
+#: library/sys.rst:1279
 msgid ""
 "The abstract base class defining the interface of finder objects on :data:"
 "`meta_path`."
 msgstr ""
 
-#: library/sys.rst:1252
+#: library/sys.rst:1281
 msgid ":class:`importlib.machinery.ModuleSpec`"
 msgstr ""
 
-#: library/sys.rst:1253
+#: library/sys.rst:1282
 msgid ""
 "The concrete class which :meth:`~importlib.abc.MetaPathFinder.find_spec` "
 "should return instances of."
 msgstr ""
 
-#: library/sys.rst:1259
+#: library/sys.rst:1288
 msgid ""
 ":term:`Module specs <module spec>` were introduced in Python 3.4, by :pep:"
 "`451`."
 msgstr ""
 
-#: library/sys.rst:1264
+#: library/sys.rst:1293
 msgid ""
 "Removed the fallback that looked for a :meth:`!find_module` method if a :"
 "data:`meta_path` entry didn't have a :meth:`~importlib.abc.MetaPathFinder."
 "find_spec` method."
 msgstr ""
 
-#: library/sys.rst:1270
+#: library/sys.rst:1299
 msgid ""
 "This is a dictionary that maps module names to modules which have already "
 "been loaded.  This can be manipulated to force reloading of modules and "
@@ -1565,13 +1599,13 @@ msgid ""
 "other threads."
 msgstr ""
 
-#: library/sys.rst:1282
+#: library/sys.rst:1311
 msgid ""
 "The list of the original command line arguments passed to the Python "
 "executable."
 msgstr ""
 
-#: library/sys.rst:1285
+#: library/sys.rst:1314
 msgid ""
 "The elements of :data:`sys.orig_argv` are the arguments to the Python "
 "interpreter, while the elements of :data:`sys.argv` are the arguments to the "
@@ -1579,68 +1613,68 @@ msgid ""
 "in :data:`sys.orig_argv` and missing from :data:`sys.argv`."
 msgstr ""
 
-#: library/sys.rst:1297
+#: library/sys.rst:1326
 msgid ""
 "A list of strings that specifies the search path for modules. Initialized "
 "from the environment variable :envvar:`PYTHONPATH`, plus an installation-"
 "dependent default."
 msgstr ""
 
-#: library/sys.rst:1301
+#: library/sys.rst:1330
 msgid ""
 "By default, as initialized upon program startup, a potentially unsafe path "
 "is prepended to :data:`sys.path` (*before* the entries inserted as a result "
 "of :envvar:`PYTHONPATH`):"
 msgstr ""
 
-#: library/sys.rst:1305
+#: library/sys.rst:1334
 msgid ""
 "``python -m module`` command line: prepend the current working directory."
 msgstr ""
 
-#: library/sys.rst:1307
+#: library/sys.rst:1336
 msgid ""
 "``python script.py`` command line: prepend the script's directory. If it's a "
 "symbolic link, resolve symbolic links."
 msgstr ""
 
-#: library/sys.rst:1309
+#: library/sys.rst:1338
 msgid ""
 "``python -c code`` and ``python`` (REPL) command lines: prepend an empty "
 "string, which means the current working directory."
 msgstr ""
 
-#: library/sys.rst:1312
+#: library/sys.rst:1341
 msgid ""
 "To not prepend this potentially unsafe path, use the :option:`-P` command "
 "line option or the :envvar:`PYTHONSAFEPATH` environment variable."
 msgstr ""
 
-#: library/sys.rst:1315
+#: library/sys.rst:1344
 msgid ""
 "A program is free to modify this list for its own purposes.  Only strings "
 "should be added to :data:`sys.path`; all other data types are ignored during "
 "import."
 msgstr ""
 
-#: library/sys.rst:1321
+#: library/sys.rst:1350
 msgid ""
 "Module :mod:`site` This describes how to use .pth files to extend :data:`sys."
 "path`."
 msgstr ""
 
-#: library/sys.rst:1326
+#: library/sys.rst:1355
 msgid ""
 "A list of callables that take a path argument to try to create a :term:"
 "`finder` for the path. If a finder can be created, it is to be returned by "
 "the callable, else raise :exc:`ImportError`."
 msgstr ""
 
-#: library/sys.rst:1341
+#: library/sys.rst:1370
 msgid "Originally specified in :pep:`302`."
 msgstr ""
 
-#: library/sys.rst:1335
+#: library/sys.rst:1364
 msgid ""
 "A dictionary acting as a cache for :term:`finder` objects. The keys are "
 "paths that have been passed to :data:`sys.path_hooks` and the values are the "
@@ -1648,13 +1682,13 @@ msgid ""
 "is found on :data:`sys.path_hooks` then ``None`` is stored."
 msgstr ""
 
-#: library/sys.rst:1346
+#: library/sys.rst:1375
 msgid ""
 "This string contains a platform identifier that can be used to append "
 "platform-specific components to :data:`sys.path`, for instance."
 msgstr ""
 
-#: library/sys.rst:1349
+#: library/sys.rst:1378
 msgid ""
 "For Unix systems, except on Linux and AIX, this is the lowercased OS name as "
 "returned by ``uname -s`` with the first part of the version as returned by "
@@ -1663,7 +1697,7 @@ msgid ""
 "version, it is therefore recommended to use the following idiom::"
 msgstr ""
 
-#: library/sys.rst:1355
+#: library/sys.rst:1384
 msgid ""
 "if sys.platform.startswith('freebsd'):\n"
 "    # FreeBSD-specific code here...\n"
@@ -1673,75 +1707,75 @@ msgid ""
 "    # AIX-specific code here..."
 msgstr ""
 
-#: library/sys.rst:1362
+#: library/sys.rst:1391
 msgid "For other systems, the values are:"
 msgstr ""
 
-#: library/sys.rst:1365
+#: library/sys.rst:1394
 msgid "System"
 msgstr ""
 
-#: library/sys.rst:1365
+#: library/sys.rst:1394
 msgid "``platform`` value"
 msgstr ""
 
-#: library/sys.rst:1367
+#: library/sys.rst:1396
 msgid "AIX"
 msgstr ""
 
-#: library/sys.rst:1367
+#: library/sys.rst:1396
 msgid "``'aix'``"
 msgstr ""
 
-#: library/sys.rst:1368
+#: library/sys.rst:1397
 msgid "Emscripten"
 msgstr ""
 
-#: library/sys.rst:1368
+#: library/sys.rst:1397
 msgid "``'emscripten'``"
 msgstr ""
 
-#: library/sys.rst:1369
+#: library/sys.rst:1398
 msgid "Linux"
 msgstr ""
 
-#: library/sys.rst:1369
+#: library/sys.rst:1398
 msgid "``'linux'``"
 msgstr ""
 
-#: library/sys.rst:1370
+#: library/sys.rst:1399
 msgid "WASI"
 msgstr ""
 
-#: library/sys.rst:1370
+#: library/sys.rst:1399
 msgid "``'wasi'``"
 msgstr ""
 
-#: library/sys.rst:1371
+#: library/sys.rst:1400
 msgid "Windows"
 msgstr ""
 
-#: library/sys.rst:1371
+#: library/sys.rst:1400
 msgid "``'win32'``"
 msgstr ""
 
-#: library/sys.rst:1372
+#: library/sys.rst:1401
 msgid "Windows/Cygwin"
 msgstr ""
 
-#: library/sys.rst:1372
+#: library/sys.rst:1401
 msgid "``'cygwin'``"
 msgstr ""
 
-#: library/sys.rst:1373
+#: library/sys.rst:1402
 msgid "macOS"
 msgstr ""
 
-#: library/sys.rst:1373
+#: library/sys.rst:1402
 msgid "``'darwin'``"
 msgstr ""
 
-#: library/sys.rst:1376
+#: library/sys.rst:1405
 msgid ""
 "On Linux, :data:`sys.platform` doesn't contain the major version anymore. It "
 "is always ``'linux'``, instead of ``'linux2'`` or ``'linux3'``.  Since older "
@@ -1749,7 +1783,7 @@ msgid ""
 "the ``startswith`` idiom presented above."
 msgstr ""
 
-#: library/sys.rst:1382
+#: library/sys.rst:1411
 msgid ""
 "On AIX, :data:`sys.platform` doesn't contain the major version anymore. It "
 "is always ``'aix'``, instead of ``'aix5'`` or ``'aix7'``.  Since older "
@@ -1757,57 +1791,57 @@ msgid ""
 "the ``startswith`` idiom presented above."
 msgstr ""
 
-#: library/sys.rst:1390
+#: library/sys.rst:1419
 msgid ""
 ":data:`os.name` has a coarser granularity.  :func:`os.uname` gives system-"
 "dependent version information."
 msgstr ""
 
-#: library/sys.rst:1393
+#: library/sys.rst:1422
 msgid ""
 "The :mod:`platform` module provides detailed checks for the system's "
 "identity."
 msgstr ""
 
-#: library/sys.rst:1399
+#: library/sys.rst:1428
 msgid ""
 "Name of the platform-specific library directory. It is used to build the "
 "path of standard library and the paths of installed extension modules."
 msgstr ""
 
-#: library/sys.rst:1402
+#: library/sys.rst:1431
 msgid ""
 "It is equal to ``\"lib\"`` on most platforms. On Fedora and SuSE, it is "
 "equal to ``\"lib64\"`` on 64-bit platforms which gives the following ``sys."
 "path`` paths (where ``X.Y`` is the Python ``major.minor`` version):"
 msgstr ""
 
-#: library/sys.rst:1406
+#: library/sys.rst:1435
 msgid ""
 "``/usr/lib64/pythonX.Y/``: Standard library (like ``os.py`` of the :mod:`os` "
 "module)"
 msgstr ""
 
-#: library/sys.rst:1408
+#: library/sys.rst:1437
 msgid ""
 "``/usr/lib64/pythonX.Y/lib-dynload/``: C extension modules of the standard "
 "library (like the :mod:`errno` module, the exact filename is platform "
 "specific)"
 msgstr ""
 
-#: library/sys.rst:1411
+#: library/sys.rst:1440
 msgid ""
 "``/usr/lib/pythonX.Y/site-packages/`` (always use ``lib``, not :data:`sys."
 "platlibdir`): Third-party modules"
 msgstr ""
 
-#: library/sys.rst:1413
+#: library/sys.rst:1442
 msgid ""
 "``/usr/lib64/pythonX.Y/site-packages/``: C extension modules of third-party "
 "packages"
 msgstr ""
 
-#: library/sys.rst:1421
+#: library/sys.rst:1450
 msgid ""
 "A string giving the site-specific directory prefix where the platform "
 "independent Python files are installed; on Unix, the default is :file:`/usr/"
@@ -1816,14 +1850,14 @@ msgid ""
 "derived paths."
 msgstr ""
 
-#: library/sys.rst:1427
+#: library/sys.rst:1456
 msgid ""
 "If a :ref:`virtual environment <venv-def>` is in effect, this value will be "
 "changed in ``site.py`` to point to the virtual environment. The value for "
 "the Python installation will still be available, via :data:`base_prefix`."
 msgstr ""
 
-#: library/sys.rst:1442
+#: library/sys.rst:1471
 msgid ""
 "Strings specifying the primary and secondary prompt of the interpreter.  "
 "These are only defined if the interpreter is in interactive mode.  Their "
@@ -1833,7 +1867,7 @@ msgid ""
 "used to implement a dynamic prompt."
 msgstr ""
 
-#: library/sys.rst:1452
+#: library/sys.rst:1481
 msgid ""
 "Set the flags used by the interpreter for :c:func:`dlopen` calls, such as "
 "when the interpreter loads extension modules.  Among other things, this will "
@@ -1844,14 +1878,14 @@ msgid ""
 "g. :const:`os.RTLD_LAZY`)."
 msgstr ""
 
-#: library/sys.rst:1464
+#: library/sys.rst:1493
 msgid ""
 "Set the :ref:`integer string conversion length limitation "
 "<int_max_str_digits>` used by this interpreter. See also :func:"
 "`get_int_max_str_digits`."
 msgstr ""
 
-#: library/sys.rst:1476
+#: library/sys.rst:1505
 msgid ""
 "Set the system's profile function, which allows you to implement a Python "
 "source code profiler in Python.  See chapter :ref:`profile` for more "
@@ -1866,14 +1900,14 @@ msgid ""
 "in the profile function will cause itself unset."
 msgstr ""
 
-#: library/sys.rst:1488
+#: library/sys.rst:1517
 msgid ""
 "The same tracing mechanism is used for :func:`!setprofile` as :func:"
 "`settrace`. To trace calls with :func:`!setprofile` inside a tracing "
 "function (e.g. in a debugger breakpoint), see :func:`call_tracing`."
 msgstr ""
 
-#: library/sys.rst:1492
+#: library/sys.rst:1521
 msgid ""
 "Profile functions should have three arguments: *frame*, *event*, and *arg*. "
 "*frame* is the current stack frame.  *event* is a string: ``'call'``, "
@@ -1881,71 +1915,71 @@ msgid ""
 "depends on the event type."
 msgstr ""
 
-#: library/sys.rst:1584
+#: library/sys.rst:1613
 msgid "The events have the following meaning:"
 msgstr ""
 
-#: library/sys.rst:1586
+#: library/sys.rst:1615
 msgid "``'call'``"
 msgstr ""
 
-#: library/sys.rst:1500
+#: library/sys.rst:1529
 msgid ""
 "A function is called (or some other code block entered).  The profile "
 "function is called; *arg* is ``None``."
 msgstr ""
 
-#: library/sys.rst:1601
+#: library/sys.rst:1630
 msgid "``'return'``"
 msgstr ""
 
-#: library/sys.rst:1504
+#: library/sys.rst:1533
 msgid ""
 "A function (or other code block) is about to return.  The profile function "
 "is called; *arg* is the value that will be returned, or ``None`` if the "
 "event is caused by an exception being raised."
 msgstr ""
 
-#: library/sys.rst:1508
+#: library/sys.rst:1537
 msgid "``'c_call'``"
 msgstr ""
 
-#: library/sys.rst:1509
+#: library/sys.rst:1538
 msgid ""
 "A C function is about to be called.  This may be an extension function or a "
 "built-in.  *arg* is the C function object."
 msgstr ""
 
-#: library/sys.rst:1512
+#: library/sys.rst:1541
 msgid "``'c_return'``"
 msgstr ""
 
-#: library/sys.rst:1513
+#: library/sys.rst:1542
 msgid "A C function has returned. *arg* is the C function object."
 msgstr ""
 
-#: library/sys.rst:1515
+#: library/sys.rst:1544
 msgid "``'c_exception'``"
 msgstr ""
 
-#: library/sys.rst:1516
+#: library/sys.rst:1545
 msgid "A C function has raised an exception.  *arg* is the C function object."
 msgstr ""
 
-#: library/sys.rst:1518
+#: library/sys.rst:1547
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``sys.setprofile`` with no "
 "arguments."
 msgstr ""
 
-#: library/sys.rst:1523
+#: library/sys.rst:1552
 msgid ""
 "Set the maximum depth of the Python interpreter stack to *limit*.  This "
 "limit prevents infinite recursion from causing an overflow of the C stack "
 "and crashing Python."
 msgstr ""
 
-#: library/sys.rst:1527
+#: library/sys.rst:1556
 msgid ""
 "The highest possible limit is platform-dependent.  A user may need to set "
 "the limit higher when they have a program that requires deep recursion and a "
@@ -1953,19 +1987,19 @@ msgid ""
 "because a too-high limit can lead to a crash."
 msgstr ""
 
-#: library/sys.rst:1532
+#: library/sys.rst:1561
 msgid ""
 "If the new limit is too low at the current recursion depth, a :exc:"
 "`RecursionError` exception is raised."
 msgstr ""
 
-#: library/sys.rst:1535
+#: library/sys.rst:1564
 msgid ""
 "A :exc:`RecursionError` exception is now raised if the new limit is too low "
 "at the current recursion depth."
 msgstr ""
 
-#: library/sys.rst:1542
+#: library/sys.rst:1571
 msgid ""
 "Set the interpreter's thread switch interval (in seconds).  This floating-"
 "point value determines the ideal duration of the \"timeslices\" allocated to "
@@ -1976,7 +2010,7 @@ msgid ""
 "scheduler."
 msgstr ""
 
-#: library/sys.rst:1559
+#: library/sys.rst:1588
 msgid ""
 "Set the system's trace function, which allows you to implement a Python "
 "source code debugger in Python.  The function is thread-specific; for a "
@@ -1985,7 +2019,7 @@ msgid ""
 "`threading.settrace`."
 msgstr ""
 
-#: library/sys.rst:1564
+#: library/sys.rst:1593
 msgid ""
 "Trace functions should have three arguments: *frame*, *event*, and *arg*. "
 "*frame* is the current stack frame.  *event* is a string: ``'call'``, "
@@ -1993,7 +2027,7 @@ msgid ""
 "the event type."
 msgstr ""
 
-#: library/sys.rst:1569
+#: library/sys.rst:1598
 msgid ""
 "The trace function is invoked (with *event* set to ``'call'``) whenever a "
 "new local scope is entered; it should return a reference to a local trace "
@@ -2001,36 +2035,36 @@ msgid ""
 "traced."
 msgstr ""
 
-#: library/sys.rst:1574
+#: library/sys.rst:1603
 msgid ""
 "The local trace function should return a reference to itself, or to another "
 "function which would then be used as the local trace function for the scope."
 msgstr ""
 
-#: library/sys.rst:1577
+#: library/sys.rst:1606
 msgid ""
 "If there is any error occurred in the trace function, it will be unset, just "
 "like ``settrace(None)`` is called."
 msgstr ""
 
-#: library/sys.rst:1581
+#: library/sys.rst:1610
 msgid ""
 "Tracing is disabled while calling the trace function (e.g. a function set "
 "by :func:`!settrace`). For recursive tracing see :func:`call_tracing`."
 msgstr ""
 
-#: library/sys.rst:1587
+#: library/sys.rst:1616
 msgid ""
 "A function is called (or some other code block entered).  The global trace "
 "function is called; *arg* is ``None``; the return value specifies the local "
 "trace function."
 msgstr ""
 
-#: library/sys.rst:1591
+#: library/sys.rst:1620
 msgid "``'line'``"
 msgstr ""
 
-#: library/sys.rst:1592
+#: library/sys.rst:1621
 msgid ""
 "The interpreter is about to execute a new line of code or re-execute the "
 "condition of a loop.  The local trace function is called; *arg* is ``None``; "
@@ -2040,7 +2074,7 @@ msgid ""
 "to :const:`False` on that :ref:`frame <frame-objects>`."
 msgstr ""
 
-#: library/sys.rst:1602
+#: library/sys.rst:1631
 msgid ""
 "A function (or other code block) is about to return.  The local trace "
 "function is called; *arg* is the value that will be returned, or ``None`` if "
@@ -2048,22 +2082,22 @@ msgid ""
 "return value is ignored."
 msgstr ""
 
-#: library/sys.rst:1607
+#: library/sys.rst:1636
 msgid "``'exception'``"
 msgstr ""
 
-#: library/sys.rst:1608
+#: library/sys.rst:1637
 msgid ""
 "An exception has occurred.  The local trace function is called; *arg* is a "
 "tuple ``(exception, value, traceback)``; the return value specifies the new "
 "local trace function."
 msgstr ""
 
-#: library/sys.rst:1612
+#: library/sys.rst:1641
 msgid "``'opcode'``"
 msgstr ""
 
-#: library/sys.rst:1613
+#: library/sys.rst:1642
 msgid ""
 "The interpreter is about to execute a new opcode (see :mod:`dis` for opcode "
 "details).  The local trace function is called; *arg* is ``None``; the return "
@@ -2073,13 +2107,13 @@ msgid ""
 "objects>`."
 msgstr ""
 
-#: library/sys.rst:1620
+#: library/sys.rst:1649
 msgid ""
 "Note that as an exception is propagated down the chain of callers, an "
 "``'exception'`` event is generated at each level."
 msgstr ""
 
-#: library/sys.rst:1623
+#: library/sys.rst:1652
 msgid ""
 "For more fine-grained usage, it's possible to set a trace function by "
 "assigning ``frame.f_trace = tracefunc`` explicitly, rather than relying on "
@@ -2093,17 +2127,17 @@ msgid ""
 "on each frame)."
 msgstr ""
 
-#: library/sys.rst:1634
+#: library/sys.rst:1663
 msgid "For more information on code and frame objects, refer to :ref:`types`."
 msgstr ""
 
-#: library/sys.rst:1636
+#: library/sys.rst:1665
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``sys.settrace`` with no "
 "arguments."
 msgstr ""
 
-#: library/sys.rst:1640
+#: library/sys.rst:1669
 msgid ""
 "The :func:`settrace` function is intended only for implementing debuggers, "
 "profilers, coverage tools and the like.  Its behavior is part of the "
@@ -2111,13 +2145,13 @@ msgid ""
 "thus may not be available in all Python implementations."
 msgstr ""
 
-#: library/sys.rst:1647
+#: library/sys.rst:1676
 msgid ""
 "``'opcode'`` event type added; :attr:`~frame.f_trace_lines` and :attr:"
 "`~frame.f_trace_opcodes` attributes added to frames"
 msgstr ""
 
-#: library/sys.rst:1650
+#: library/sys.rst:1679
 msgid ""
 "``'opcode'`` event will only be emitted if :attr:`~frame.f_trace_opcodes` of "
 "at least one frame has been set to :const:`True` before :func:`settrace` is "
@@ -2125,7 +2159,7 @@ msgid ""
 "previous versions."
 msgstr ""
 
-#: library/sys.rst:1658
+#: library/sys.rst:1687
 msgid ""
 "Accepts two optional keyword arguments which are callables that accept an :"
 "term:`asynchronous generator iterator` as an argument. The *firstiter* "
@@ -2134,32 +2168,32 @@ msgid ""
 "about to be garbage collected."
 msgstr ""
 
-#: library/sys.rst:1664
+#: library/sys.rst:1693
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``sys."
 "set_asyncgen_hooks_firstiter`` with no arguments."
 msgstr ""
 
-#: library/sys.rst:1666
+#: library/sys.rst:1695
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``sys."
 "set_asyncgen_hooks_finalizer`` with no arguments."
 msgstr ""
 
-#: library/sys.rst:1668
+#: library/sys.rst:1697
 msgid ""
 "Two auditing events are raised because the underlying API consists of two "
 "calls, each of which must raise its own event."
 msgstr ""
 
-#: library/sys.rst:1671
+#: library/sys.rst:1700
 msgid ""
 "See :pep:`525` for more details, and for a reference example of a "
 "*finalizer* method see the implementation of ``asyncio.Loop."
 "shutdown_asyncgens`` in :source:`Lib/asyncio/base_events.py`"
 msgstr ""
 
-#: library/sys.rst:1683
+#: library/sys.rst:1712
 msgid ""
 "Allows enabling or disabling coroutine origin tracking. When enabled, the "
 "``cr_origin`` attribute on coroutine objects will contain a tuple of "
@@ -2168,100 +2202,100 @@ msgid ""
 "disabled, ``cr_origin`` will be ``None``."
 msgstr ""
 
-#: library/sys.rst:1690
+#: library/sys.rst:1719
 msgid ""
 "To enable, pass a *depth* value greater than zero; this sets the number of "
 "frames whose information will be captured. To disable, pass set *depth* to "
 "zero."
 msgstr ""
 
-#: library/sys.rst:1694
+#: library/sys.rst:1723
 msgid "This setting is thread-specific."
 msgstr ""
 
-#: library/sys.rst:1704
+#: library/sys.rst:1733
 msgid ""
 "Activate the stack profiler trampoline *backend*. The only supported backend "
 "is ``\"perf\"``."
 msgstr ""
 
-#: library/sys.rst:1713
+#: library/sys.rst:1742
 msgid ":ref:`perf_profiling`"
 msgstr ""
 
-#: library/sys.rst:1714
+#: library/sys.rst:1743
 msgid "https://perf.wiki.kernel.org"
 msgstr ""
 
-#: library/sys.rst:1718
+#: library/sys.rst:1747
 msgid "Deactivate the current stack profiler trampoline backend."
 msgstr ""
 
-#: library/sys.rst:1720
+#: library/sys.rst:1749
 msgid "If no stack profiler is activated, this function has no effect."
 msgstr ""
 
-#: library/sys.rst:1728
+#: library/sys.rst:1757
 msgid "Return ``True`` if a stack profiler trampoline is active."
 msgstr ""
 
-#: library/sys.rst:1736
+#: library/sys.rst:1765
 msgid ""
 "Changes the :term:`filesystem encoding and error handler` to 'mbcs' and "
 "'replace' respectively, for consistency with versions of Python prior to 3.6."
 msgstr ""
 
-#: library/sys.rst:1740
+#: library/sys.rst:1769
 msgid ""
 "This is equivalent to defining the :envvar:`PYTHONLEGACYWINDOWSFSENCODING` "
 "environment variable before launching Python."
 msgstr ""
 
-#: library/sys.rst:1743
+#: library/sys.rst:1772
 msgid ""
 "See also :func:`sys.getfilesystemencoding` and :func:`sys."
 "getfilesystemencodeerrors`."
 msgstr ""
 
-#: library/sys.rst:1748
+#: library/sys.rst:1777
 msgid "See :pep:`529` for more details."
 msgstr ""
 
-#: library/sys.rst:1755
+#: library/sys.rst:1784
 msgid ""
 ":term:`File objects <file object>` used by the interpreter for standard "
 "input, output and errors:"
 msgstr ""
 
-#: library/sys.rst:1758
+#: library/sys.rst:1787
 msgid ""
 "``stdin`` is used for all interactive input (including calls to :func:"
 "`input`);"
 msgstr ""
 
-#: library/sys.rst:1760
+#: library/sys.rst:1789
 msgid ""
 "``stdout`` is used for the output of :func:`print` and :term:`expression` "
 "statements and for the prompts of :func:`input`;"
 msgstr ""
 
-#: library/sys.rst:1762
+#: library/sys.rst:1791
 msgid "The interpreter's own prompts and its error messages go to ``stderr``."
 msgstr ""
 
-#: library/sys.rst:1764
+#: library/sys.rst:1793
 msgid ""
 "These streams are regular :term:`text files <text file>` like those returned "
 "by the :func:`open` function.  Their parameters are chosen as follows:"
 msgstr ""
 
-#: library/sys.rst:1768
+#: library/sys.rst:1797
 msgid ""
 "The encoding and error handling are is initialized from :c:member:`PyConfig."
 "stdio_encoding` and :c:member:`PyConfig.stdio_errors`."
 msgstr ""
 
-#: library/sys.rst:1771
+#: library/sys.rst:1800
 msgid ""
 "On Windows, UTF-8 is used for the console device.  Non-character devices "
 "such as disk files and pipes use the system locale encoding (i.e. the ANSI "
@@ -2272,14 +2306,14 @@ msgid ""
 "initially attached to a console."
 msgstr ""
 
-#: library/sys.rst:1780
+#: library/sys.rst:1809
 msgid ""
 "The special behaviour of the console can be overridden by setting the "
 "environment variable PYTHONLEGACYWINDOWSSTDIO before starting Python. In "
 "that case, the console codepages are used as for any other character device."
 msgstr ""
 
-#: library/sys.rst:1785
+#: library/sys.rst:1814
 msgid ""
 "Under all platforms, you can override the character encoding by setting the :"
 "envvar:`PYTHONIOENCODING` environment variable before starting Python or by "
@@ -2288,7 +2322,7 @@ msgid ""
 "only applies when :envvar:`PYTHONLEGACYWINDOWSSTDIO` is also set."
 msgstr ""
 
-#: library/sys.rst:1792
+#: library/sys.rst:1821
 msgid ""
 "When interactive, the ``stdout`` stream is line-buffered. Otherwise, it is "
 "block-buffered like regular text files.  The ``stderr`` stream is line-"
@@ -2297,19 +2331,19 @@ msgid ""
 "`PYTHONUNBUFFERED` environment variable."
 msgstr ""
 
-#: library/sys.rst:1798
+#: library/sys.rst:1827
 msgid ""
 "Non-interactive ``stderr`` is now line-buffered instead of fully buffered."
 msgstr ""
 
-#: library/sys.rst:1804
+#: library/sys.rst:1833
 msgid ""
 "To write or read binary data from/to the standard streams, use the "
 "underlying binary :data:`~io.TextIOBase.buffer` object.  For example, to "
 "write bytes to :data:`stdout`, use ``sys.stdout.buffer.write(b'abc')``."
 msgstr ""
 
-#: library/sys.rst:1808
+#: library/sys.rst:1837
 msgid ""
 "However, if you are writing a library (and do not control in which context "
 "its code will be executed), be aware that the standard streams may be "
@@ -2317,7 +2351,7 @@ msgid ""
 "support the :attr:`!buffer` attribute."
 msgstr ""
 
-#: library/sys.rst:1818
+#: library/sys.rst:1847
 msgid ""
 "These objects contain the original values of ``stdin``, ``stderr`` and "
 "``stdout`` at the start of the program.  They are used during finalization, "
@@ -2325,7 +2359,7 @@ msgid ""
 "``sys.std*`` object has been redirected."
 msgstr ""
 
-#: library/sys.rst:1823
+#: library/sys.rst:1852
 msgid ""
 "It can also be used to restore the actual files to known working file "
 "objects in case they have been overwritten with a broken object.  However, "
@@ -2333,7 +2367,7 @@ msgid ""
 "before replacing it, and restore the saved object."
 msgstr ""
 
-#: library/sys.rst:1829
+#: library/sys.rst:1858
 msgid ""
 "Under some conditions ``stdin``, ``stdout`` and ``stderr`` as well as the "
 "original values ``__stdin__``, ``__stdout__`` and ``__stderr__`` can be "
@@ -2341,12 +2375,12 @@ msgid ""
 "to a console and Python apps started with :program:`pythonw`."
 msgstr ""
 
-#: library/sys.rst:1837
+#: library/sys.rst:1866
 msgid ""
 "A frozenset of strings containing the names of standard library modules."
 msgstr ""
 
-#: library/sys.rst:1839
+#: library/sys.rst:1868
 msgid ""
 "It is the same on all platforms. Modules which are not available on some "
 "platforms and modules disabled at Python build are also listed. All module "
@@ -2354,7 +2388,7 @@ msgid ""
 "modules are excluded."
 msgstr ""
 
-#: library/sys.rst:1844
+#: library/sys.rst:1873
 msgid ""
 "For packages, only the main package is listed: sub-packages and sub-modules "
 "are not listed. For example, the ``email`` package is listed, but the "
@@ -2362,60 +2396,60 @@ msgid ""
 "listed."
 msgstr ""
 
-#: library/sys.rst:1849
+#: library/sys.rst:1878
 msgid "See also the :data:`sys.builtin_module_names` list."
 msgstr ""
 
-#: library/sys.rst:1856
+#: library/sys.rst:1885
 msgid ""
 "A :term:`named tuple` holding information about the thread implementation."
 msgstr ""
 
-#: library/sys.rst:1861
+#: library/sys.rst:1890
 msgid "The name of the thread implementation:"
 msgstr ""
 
-#: library/sys.rst:1863
+#: library/sys.rst:1892
 msgid "``\"nt\"``: Windows threads"
 msgstr ""
 
-#: library/sys.rst:1864
+#: library/sys.rst:1893
 msgid "``\"pthread\"``: POSIX threads"
 msgstr ""
 
-#: library/sys.rst:1865
+#: library/sys.rst:1894
 msgid ""
 "``\"pthread-stubs\"``: stub POSIX threads (on WebAssembly platforms without "
 "threading support)"
 msgstr ""
 
-#: library/sys.rst:1867
+#: library/sys.rst:1896
 msgid "``\"solaris\"``: Solaris threads"
 msgstr ""
 
-#: library/sys.rst:1871
+#: library/sys.rst:1900
 msgid "The name of the lock implementation:"
 msgstr ""
 
-#: library/sys.rst:1873
+#: library/sys.rst:1902
 msgid "``\"semaphore\"``: a lock uses a semaphore"
 msgstr ""
 
-#: library/sys.rst:1874
+#: library/sys.rst:1903
 msgid "``\"mutex+cond\"``: a lock uses a mutex and a condition variable"
 msgstr ""
 
-#: library/sys.rst:1875
+#: library/sys.rst:1904
 msgid "``None`` if this information is unknown"
 msgstr ""
 
-#: library/sys.rst:1879
+#: library/sys.rst:1908
 msgid ""
 "The name and version of the thread library. It is a string, or ``None`` if "
 "this information is unknown."
 msgstr ""
 
-#: library/sys.rst:1887
+#: library/sys.rst:1916
 msgid ""
 "When this variable is set to an integer value, it determines the maximum "
 "number of levels of traceback information printed when an unhandled "
@@ -2424,73 +2458,73 @@ msgid ""
 "are printed."
 msgstr ""
 
-#: library/sys.rst:1895
+#: library/sys.rst:1924
 msgid "Handle an unraisable exception."
 msgstr ""
 
-#: library/sys.rst:1897
+#: library/sys.rst:1926
 msgid ""
 "Called when an exception has occurred but there is no way for Python to "
 "handle it. For example, when a destructor raises an exception or during "
 "garbage collection (:func:`gc.collect`)."
 msgstr ""
 
-#: library/sys.rst:1901
+#: library/sys.rst:1930
 msgid "The *unraisable* argument has the following attributes:"
 msgstr ""
 
-#: library/sys.rst:1903
+#: library/sys.rst:1932
 msgid ":attr:`!exc_type`: Exception type."
 msgstr ""
 
-#: library/sys.rst:1904
+#: library/sys.rst:1933
 msgid ":attr:`!exc_value`: Exception value, can be ``None``."
 msgstr ""
 
-#: library/sys.rst:1905
+#: library/sys.rst:1934
 msgid ":attr:`!exc_traceback`: Exception traceback, can be ``None``."
 msgstr ""
 
-#: library/sys.rst:1906
+#: library/sys.rst:1935
 msgid ":attr:`!err_msg`: Error message, can be ``None``."
 msgstr ""
 
-#: library/sys.rst:1907
+#: library/sys.rst:1936
 msgid ":attr:`!object`: Object causing the exception, can be ``None``."
 msgstr ""
 
-#: library/sys.rst:1909
+#: library/sys.rst:1938
 msgid ""
 "The default hook formats :attr:`!err_msg` and :attr:`!object` as: "
 "``f'{err_msg}: {object!r}'``; use \"Exception ignored in\" error message if :"
 "attr:`!err_msg` is ``None``."
 msgstr ""
 
-#: library/sys.rst:1913
+#: library/sys.rst:1942
 msgid ""
 ":func:`sys.unraisablehook` can be overridden to control how unraisable "
 "exceptions are handled."
 msgstr ""
 
-#: library/sys.rst:1918
+#: library/sys.rst:1947
 msgid ":func:`excepthook` which handles uncaught exceptions."
 msgstr ""
 
-#: library/sys.rst:1922
+#: library/sys.rst:1951
 msgid ""
 "Storing :attr:`!exc_value` using a custom hook can create a reference cycle. "
 "It should be cleared explicitly to break the reference cycle when the "
 "exception is no longer needed."
 msgstr ""
 
-#: library/sys.rst:1926
+#: library/sys.rst:1955
 msgid ""
 "Storing :attr:`!object` using a custom hook can resurrect it if it is set to "
 "an object which is being finalized. Avoid storing :attr:`!object` after the "
 "custom hook completes to avoid resurrecting objects."
 msgstr ""
 
-#: library/sys.rst:1932
+#: library/sys.rst:1961
 msgid ""
 "Raise an auditing event ``sys.unraisablehook`` with arguments *hook*, "
 "*unraisable* when an exception that cannot be handled occurs. The "
@@ -2498,7 +2532,7 @@ msgid ""
 "hook has been set, *hook* may be ``None``."
 msgstr ""
 
-#: library/sys.rst:1941
+#: library/sys.rst:1970
 msgid ""
 "A string containing the version number of the Python interpreter plus "
 "additional information on the build number and compiler used.  This string "
@@ -2507,13 +2541,13 @@ msgid ""
 "functions provided by the :mod:`platform` module."
 msgstr ""
 
-#: library/sys.rst:1950
+#: library/sys.rst:1979
 msgid ""
 "The C API version for this interpreter.  Programmers may find this useful "
 "when debugging version conflicts between Python and extension modules."
 msgstr ""
 
-#: library/sys.rst:1956
+#: library/sys.rst:1985
 msgid ""
 "A tuple containing the five components of the version number: *major*, "
 "*minor*, *micro*, *releaselevel*, and *serial*.  All values except "
@@ -2524,18 +2558,18 @@ msgid ""
 "version_info.major`` and so on."
 msgstr ""
 
-#: library/sys.rst:1964
+#: library/sys.rst:1993
 msgid "Added named component attributes."
 msgstr ""
 
-#: library/sys.rst:1969
+#: library/sys.rst:1998
 msgid ""
 "This is an implementation detail of the warnings framework; do not modify "
 "this value.  Refer to the :mod:`warnings` module for more information on the "
 "warnings framework."
 msgstr ""
 
-#: library/sys.rst:1976
+#: library/sys.rst:2005
 msgid ""
 "The version number used to form registry keys on Windows platforms. This is "
 "stored as string resource 1000 in the Python DLL.  The value is normally the "
@@ -2544,20 +2578,20 @@ msgid ""
 "has no effect on the registry keys used by Python."
 msgstr ""
 
-#: library/sys.rst:1988
+#: library/sys.rst:2017
 msgid ""
 "Namespace containing functions and constants for register callbacks and "
 "controlling monitoring events. See  :mod:`sys.monitoring` for details."
 msgstr ""
 
-#: library/sys.rst:1994
+#: library/sys.rst:2023
 msgid ""
 "A dictionary of the various implementation-specific flags passed through "
 "the :option:`-X` command-line option.  Option names are either mapped to "
 "their values, if given explicitly, or to :const:`True`.  Example:"
 msgstr ""
 
-#: library/sys.rst:1998
+#: library/sys.rst:2027
 msgid ""
 "$ ./python -Xa=b -Xc\n"
 "Python 3.2a3+ (py3k, Oct 16 2010, 20:14:50)\n"
@@ -2569,18 +2603,18 @@ msgid ""
 "{'a': 'b', 'c': True}"
 msgstr ""
 
-#: library/sys.rst:2010
+#: library/sys.rst:2039
 msgid ""
 "This is a CPython-specific way of accessing options passed through :option:`-"
 "X`.  Other implementations may export them through other means, or not at "
 "all."
 msgstr ""
 
-#: library/sys.rst:2018
+#: library/sys.rst:2047
 msgid "Citations"
 msgstr ""
 
-#: library/sys.rst:2019
+#: library/sys.rst:2048
 msgid ""
 "ISO/IEC 9899:1999.  \"Programming languages -- C.\"  A public draft of this "
 "standard is available at https://www.open-std.org/jtc1/sc22/wg14/www/docs/"
@@ -2599,50 +2633,50 @@ msgstr ""
 msgid "traceback"
 msgstr ""
 
-#: library/sys.rst:1472
+#: library/sys.rst:1501
 msgid "profile function"
 msgstr ""
 
-#: library/sys.rst:1472
+#: library/sys.rst:1501
 msgid "profiler"
 msgstr ""
 
-#: library/sys.rst:1555
+#: library/sys.rst:1584
 msgid "trace function"
 msgstr ""
 
-#: library/sys.rst:1555
+#: library/sys.rst:1584
 msgid "debugger"
 msgstr ""
 
-#: library/sys.rst:1295
+#: library/sys.rst:1324
 msgid "module"
 msgstr ""
 
-#: library/sys.rst:1295
+#: library/sys.rst:1324
 msgid "search"
 msgstr ""
 
-#: library/sys.rst:1295
+#: library/sys.rst:1324
 msgid "path"
 msgstr ""
 
-#: library/sys.rst:1436
+#: library/sys.rst:1465
 msgid "interpreter prompts"
 msgstr ""
 
-#: library/sys.rst:1436
+#: library/sys.rst:1465
 msgid "prompts, interpreter"
 msgstr ""
 
-#: library/sys.rst:1436
+#: library/sys.rst:1465
 msgid ">>>"
 msgstr ""
 
-#: library/sys.rst:1436
+#: library/sys.rst:1465
 msgid "interpreter prompt"
 msgstr ""
 
-#: library/sys.rst:1436
+#: library/sys.rst:1465
 msgid "..."
 msgstr ""
diff --git a/library/sysconfig.po b/library/sysconfig.po
index 0c7aeffe7..1de9e03b6 100644
--- a/library/sysconfig.po
+++ b/library/sysconfig.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -642,78 +642,82 @@ msgid "Windows will return one of:"
 msgstr ""
 
 #: library/sysconfig.rst:391
-msgid "win-amd64 (64bit Windows on AMD64, aka x86_64, Intel64, and EM64T)"
+msgid "win-amd64 (64-bit Windows on AMD64, aka x86_64, Intel64, and EM64T)"
 msgstr ""
 
 #: library/sysconfig.rst:392
+msgid "win-arm64 (64-bit Windows on ARM64, aka AArch64)"
+msgstr ""
+
+#: library/sysconfig.rst:393
 msgid "win32 (all others - specifically, sys.platform is returned)"
 msgstr ""
 
-#: library/sysconfig.rst:394
+#: library/sysconfig.rst:395
 msgid "macOS can return:"
 msgstr ""
 
-#: library/sysconfig.rst:396
+#: library/sysconfig.rst:397
 msgid "macosx-10.6-ppc"
 msgstr ""
 
-#: library/sysconfig.rst:397
+#: library/sysconfig.rst:398
 msgid "macosx-10.4-ppc64"
 msgstr ""
 
-#: library/sysconfig.rst:398
+#: library/sysconfig.rst:399
 msgid "macosx-10.3-i386"
 msgstr ""
 
-#: library/sysconfig.rst:399
+#: library/sysconfig.rst:400
 msgid "macosx-10.4-fat"
 msgstr ""
 
-#: library/sysconfig.rst:401
+#: library/sysconfig.rst:402
 msgid ""
 "For other non-POSIX platforms, currently just returns :data:`sys.platform`."
 msgstr ""
 
-#: library/sysconfig.rst:406
+#: library/sysconfig.rst:407
 msgid ""
 "Return ``True`` if the running Python interpreter was built from source and "
 "is being run from its built location, and not from a location resulting from "
 "e.g. running ``make install`` or installing via a binary installer."
 msgstr ""
 
-#: library/sysconfig.rst:413
+#: library/sysconfig.rst:414
 msgid "Parse a :file:`config.h`\\-style file."
 msgstr ""
 
-#: library/sysconfig.rst:415
+#: library/sysconfig.rst:416
 msgid ""
 "*fp* is a file-like object pointing to the :file:`config.h`\\-like file."
 msgstr ""
 
-#: library/sysconfig.rst:417
+#: library/sysconfig.rst:418
 msgid ""
 "A dictionary containing name/value pairs is returned.  If an optional "
 "dictionary is passed in as the second argument, it is used instead of a new "
 "dictionary, and updated with the values read in the file."
 msgstr ""
 
-#: library/sysconfig.rst:424
+#: library/sysconfig.rst:425
 msgid "Return the path of :file:`pyconfig.h`."
 msgstr ""
 
-#: library/sysconfig.rst:428
+#: library/sysconfig.rst:429
 msgid "Return the path of :file:`Makefile`."
 msgstr ""
 
-#: library/sysconfig.rst:433
+#: library/sysconfig.rst:434
 msgid "Using :mod:`sysconfig` as a script"
 msgstr ""
 
-#: library/sysconfig.rst:435
+#: library/sysconfig.rst:436
 msgid "You can use :mod:`sysconfig` as a script with Python's *-m* option:"
 msgstr ""
 
-#: library/sysconfig.rst:437
+#: library/sysconfig.rst:438
 msgid ""
 "$ python -m sysconfig\n"
 "Platform: \"macosx-10.4-i386\"\n"
@@ -738,7 +742,7 @@ msgid ""
 "        ..."
 msgstr ""
 
-#: library/sysconfig.rst:461
+#: library/sysconfig.rst:462
 msgid ""
 "This call will print in the standard output the information returned by :"
 "func:`get_platform`, :func:`get_python_version`, :func:`get_path` and :func:"
diff --git a/library/time.po b/library/time.po
index 739e19225..74fa7d58f 100644
--- a/library/time.po
+++ b/library/time.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: 2023-03-01 11:44+0300\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -90,15 +90,13 @@ msgstr ""
 
 #: library/time.rst:55
 msgid ""
-"UTC is Coordinated Universal Time (formerly known as Greenwich Mean Time, or "
-"GMT).  The acronym UTC is not a mistake but a compromise between English and "
-"French."
+"UTC is `Coordinated Universal Time`_ and superseded `Greenwich Mean Time`_ "
+"or GMT as the basis of international timekeeping. The acronym UTC is not a "
+"mistake but conforms to an earlier, language-agnostic naming scheme for time "
+"standards such as UT0, UT1, and UT2."
 msgstr ""
-"UTC, Koordineli Evrensel Zaman (eski haliyle Greenwich Ortalama Zamanı, ya "
-"da GMT) anlamına gelir. UTC kısaltması bir hata değil, İngilizce ve "
-"Fransızca arasında bir uzlaşmadır."
 
-#: library/time.rst:61
+#: library/time.rst:65
 msgid ""
 "DST is Daylight Saving Time, an adjustment of the timezone by (usually) one "
 "hour during part of the year.  DST rules are magic (determined by local law) "
@@ -112,7 +110,7 @@ msgstr ""
 "kuralları (genellikle esneklik için bir sistem dosyasından okunur) içeren "
 "bir tabloya sahiptir ve Gerçek Bilgeliğin tek kaynağıdır."
 
-#: library/time.rst:67
+#: library/time.rst:71
 msgid ""
 "The precision of the various real-time functions may be less than suggested "
 "by the units in which their value or argument is expressed. E.g. on most "
@@ -122,7 +120,7 @@ msgstr ""
 "veya argümanlarının ifade edildiği önerilerden daha az olabilir. Örneği çoğu "
 "Unix sistemlerinde, saat yalnızca 50 veya 100 defa \"çalışır\"."
 
-#: library/time.rst:71
+#: library/time.rst:75
 #, fuzzy
 msgid ""
 "On the other hand, the precision of :func:`.time` and :func:`sleep` is "
@@ -139,7 +137,7 @@ msgstr ""
 "`sleep` sıfıra eşit olmayan kesirli zamanı kabul eder (Unix :c:func:"
 "`select`, mümkün olduğunda bunu uygulamak için kullanılır)."
 
-#: library/time.rst:78
+#: library/time.rst:82
 msgid ""
 "The time value as returned by :func:`gmtime`, :func:`localtime`, and :func:"
 "`strptime`, and accepted by :func:`asctime`, :func:`mktime` and :func:"
@@ -153,12 +151,12 @@ msgstr ""
 "`gmtime`, :func:`localtime`, ve :func:`strptime` tarafından döndürülen "
 "değerler ayrıca ayrı alanlar için ayrı öznitelik isimleri sunar."
 
-#: library/time.rst:84
+#: library/time.rst:88
 msgid "See :class:`struct_time` for a description of these objects."
 msgstr ""
 "Bu nesnelerin açıklamalarını görmek için :class:`struct_time`'a göz at."
 
-#: library/time.rst:86
+#: library/time.rst:90
 #, fuzzy
 msgid ""
 "The :class:`struct_time` type was extended to provide the :attr:"
@@ -169,7 +167,7 @@ msgstr ""
 "özniteliklerini platform ``struct tm``'e ilişkin üyeleri desteklediğinde "
 "sağlayabilmek için genişletilmiştir."
 
-#: library/time.rst:92
+#: library/time.rst:96
 #, fuzzy
 msgid ""
 "The :class:`struct_time` attributes :attr:`~struct_time.tm_gmtoff` and :attr:"
@@ -178,57 +176,57 @@ msgstr ""
 ":class:`struct_time` öznitelikleri :attr:`tm_gmtoff` ve :attr:`tm_zone` "
 "artık bütün platformlarda mevcut."
 
-#: library/time.rst:97
+#: library/time.rst:101
 msgid "Use the following functions to convert between time representations:"
 msgstr ""
 "Zaman temsilleri arasında dönüşüm yapmak için belirtilen fonksiyonları "
 "kullanın:"
 
-#: library/time.rst:100
+#: library/time.rst:104
 msgid "From"
 msgstr "Den"
 
-#: library/time.rst:100
+#: library/time.rst:104
 msgid "To"
 msgstr "Karşı"
 
-#: library/time.rst:100
+#: library/time.rst:104
 msgid "Use"
 msgstr "Kullan"
 
-#: library/time.rst:102 library/time.rst:108 library/time.rst:111
+#: library/time.rst:106 library/time.rst:112 library/time.rst:115
 msgid "seconds since the epoch"
 msgstr "zamanın başlangıcından beri geçen saniye"
 
-#: library/time.rst:108
+#: library/time.rst:112
 msgid ":class:`struct_time` in UTC"
 msgstr "UTC içinde :class:`struct_time`"
 
-#: library/time.rst:102
+#: library/time.rst:106
 msgid ":func:`gmtime`"
 msgstr ":func:`gmtime`"
 
-#: library/time.rst:111
+#: library/time.rst:115
 msgid ":class:`struct_time` in local time"
 msgstr "yerel zaman içinde :class:`struct_time`"
 
-#: library/time.rst:105
+#: library/time.rst:109
 msgid ":func:`localtime`"
 msgstr ":func:`localtime`"
 
-#: library/time.rst:108
+#: library/time.rst:112
 msgid ":func:`calendar.timegm`"
 msgstr ":func:`calendar.timegm`"
 
-#: library/time.rst:111
+#: library/time.rst:115
 msgid ":func:`mktime`"
 msgstr ":func:`mktime`"
 
-#: library/time.rst:119
+#: library/time.rst:123
 msgid "Functions"
 msgstr "Fonksiyonlar"
 
-#: library/time.rst:123
+#: library/time.rst:127
 msgid ""
 "Convert a tuple or :class:`struct_time` representing a time as returned by :"
 "func:`gmtime` or :func:`localtime` to a string of the following form: ``'Sun "
@@ -241,7 +239,7 @@ msgstr ""
 "uzunluğundadır ve gün tek harfliyse boşluk karakteriyle doldurulur, örnek: "
 "``'Wed Jun  9 04:26:40 1993'``."
 
-#: library/time.rst:129
+#: library/time.rst:133
 msgid ""
 "If *t* is not provided, the current time as returned by :func:`localtime` is "
 "used. Locale information is not used by :func:`asctime`."
@@ -249,14 +247,14 @@ msgstr ""
 "Eğer *t* sağlanmamışsa, :func:`localtime` tarafından döndürülen şimdiki "
 "zaman kullanılır. Yerel bilgi :func:`asctime` tarafından kullanılmaz."
 
-#: library/time.rst:134
+#: library/time.rst:138
 msgid ""
 "Unlike the C function of the same name, :func:`asctime` does not add a "
 "trailing newline."
 msgstr ""
 "Aynı isimli C fonksiyonunun aksine, :func:`asctime` sona yeni satır eklemez."
 
-#: library/time.rst:139
+#: library/time.rst:143
 msgid ""
 "Return the *clk_id* of the thread-specific CPU-time clock for the specified "
 "*thread_id*."
@@ -264,7 +262,7 @@ msgstr ""
 "Belirtilen *thread_id* için iş parçacığına özgü CPU-zaman saatinin *clk_id* "
 "değerini döndürür."
 
-#: library/time.rst:141
+#: library/time.rst:145
 msgid ""
 "Use :func:`threading.get_ident` or the :attr:`~threading.Thread.ident` "
 "attribute of :class:`threading.Thread` objects to get a suitable value for "
@@ -274,7 +272,7 @@ msgstr ""
 "veya :class:`threading.Thread` nesnelerinin :attr:`~threading.Thread.ident` "
 "özniteliğini kullanın."
 
-#: library/time.rst:146
+#: library/time.rst:150
 msgid ""
 "Passing an invalid or expired *thread_id* may result in undefined behavior, "
 "such as segmentation fault."
@@ -282,14 +280,14 @@ msgstr ""
 "Geçersiz veya süresi geçmiş bir *thread_id* girişi yapmak, bölümleme hatası "
 "gibi, tanımlanmamış bir davranış ortaya koyabilir."
 
-#: library/time.rst:161 library/time.rst:183 library/time.rst:205
-#: library/time.rst:729 library/time.rst:836 library/time.rst:856
-#: library/time.rst:874 library/time.rst:893 library/time.rst:915
-#: library/time.rst:928
+#: library/time.rst:165 library/time.rst:187 library/time.rst:209
+#: library/time.rst:742 library/time.rst:849 library/time.rst:869
+#: library/time.rst:887 library/time.rst:906 library/time.rst:928
+#: library/time.rst:941
 msgid "Availability"
 msgstr ""
 
-#: library/time.rst:151
+#: library/time.rst:155
 msgid ""
 "See the man page for :manpage:`pthread_getcpuclockid(3)` for further "
 "information."
@@ -297,7 +295,7 @@ msgstr ""
 "Daha fazla bilgi için :manpage:`pthread_getcpuclockid(3)` el kitabına göz "
 "atın."
 
-#: library/time.rst:158
+#: library/time.rst:162
 msgid ""
 "Return the resolution (precision) of the specified clock *clk_id*.  Refer "
 "to :ref:`time-clock-id-constants` for a list of accepted values for *clk_id*."
@@ -305,7 +303,7 @@ msgstr ""
 "Belirtilen *clk_id* saatinin netliğini (kesinliğini) döndür. *clk_id*'e "
 "uygun değerlerin bir listesi için :ref:`time-clock-id-constants`'a bakınız."
 
-#: library/time.rst:168
+#: library/time.rst:172
 msgid ""
 "Return the time of the specified clock *clk_id*.  Refer to :ref:`time-clock-"
 "id-constants` for a list of accepted values for *clk_id*."
@@ -313,7 +311,7 @@ msgstr ""
 "Belirtilen *clk_id* saatinin zamanını döndür. *clk_id*'e uygun değerlerin "
 "bir listesi için :ref:`time-clock-id-constants`'a bakınız."
 
-#: library/time.rst:171
+#: library/time.rst:175
 msgid ""
 "Use :func:`clock_gettime_ns` to avoid the precision loss caused by the :"
 "class:`float` type."
@@ -321,13 +319,13 @@ msgstr ""
 ":class:`float` türü sebebiyle oluşan kesinlik kaybından kaçınmak için :func:"
 "`clock_gettime_ns` kullanın."
 
-#: library/time.rst:181
+#: library/time.rst:185
 msgid "Similar to :func:`clock_gettime` but return time as nanoseconds."
 msgstr ""
 ":func:`clock_gettime`'a benzer şekilde ama zamanı nanosaniyeler şeklinde "
 "döndürür."
 
-#: library/time.rst:190
+#: library/time.rst:194
 msgid ""
 "Set the time of the specified clock *clk_id*.  Currently, :data:"
 "`CLOCK_REALTIME` is the only accepted value for *clk_id*."
@@ -335,7 +333,7 @@ msgstr ""
 "Belirtilen *clk_id* saatinin zamanını ayarla. Şu anda, *clk_id* için kabul "
 "edilen tek değer :data:`CLOCK_REALTIME`'dır."
 
-#: library/time.rst:193
+#: library/time.rst:197
 msgid ""
 "Use :func:`clock_settime_ns` to avoid the precision loss caused by the :"
 "class:`float` type."
@@ -343,12 +341,12 @@ msgstr ""
 ":class:`float` türü sebebiyle oluşan kesinlik kaybından kaçınmak için :func:"
 "`clock_settime_ns` kullanın."
 
-#: library/time.rst:203
+#: library/time.rst:207
 msgid "Similar to :func:`clock_settime` but set time with nanoseconds."
 msgstr ""
 ":func:`clock_settime`'a benzer şekilde ama zamanı nanosaniyeler ile ayarlar."
 
-#: library/time.rst:212
+#: library/time.rst:216
 msgid ""
 "Convert a time expressed in seconds since the epoch_ to a string of a form: "
 "``'Sun Jun 20 23:21:05 1993'`` representing local time. The day field is two "
@@ -360,7 +358,7 @@ msgstr ""
 "1993'``. Gün alanı iki karakter uzunluğundadır ve gün tek basamaklıysa "
 "boşluk bırakılır, örneğin: ``'Wed Jun  9 04:26:40 1993'``."
 
-#: library/time.rst:217
+#: library/time.rst:221
 msgid ""
 "If *secs* is not provided or :const:`None`, the current time as returned by :"
 "func:`.time` is used. ``ctime(secs)`` is equivalent to "
@@ -371,7 +369,7 @@ msgstr ""
 "mevcut zaman kullanılır. ``ctime(secs)`` ``asctime(localtime(secs))``'e "
 "karşılıktır. Yerel ayar bilgisi :func:`ctime` tarafından kullanılmaz."
 
-#: library/time.rst:225
+#: library/time.rst:229
 msgid ""
 "Get information on the specified clock as a namespace object. Supported "
 "clock names and the corresponding functions to read their value are:"
@@ -379,31 +377,31 @@ msgstr ""
 "Belirtilen saat için namespace nesnesi şeklinde bilgi edinin. Desteklenen "
 "saat isimleri ve onların değerlerini okumaya ilişkin fonksiyonlar şunlardır:"
 
-#: library/time.rst:229
+#: library/time.rst:233
 msgid "``'monotonic'``: :func:`time.monotonic`"
 msgstr "``'monotonic'``: :func:`time.monotonic`"
 
-#: library/time.rst:230
+#: library/time.rst:234
 msgid "``'perf_counter'``: :func:`time.perf_counter`"
 msgstr "``'perf_counter'``: :func:`time.perf_counter`"
 
-#: library/time.rst:231
+#: library/time.rst:235
 msgid "``'process_time'``: :func:`time.process_time`"
 msgstr "``'process_time'``: :func:`time.process_time`"
 
-#: library/time.rst:232
+#: library/time.rst:236
 msgid "``'thread_time'``: :func:`time.thread_time`"
 msgstr "``'thread_time'``: :func:`time.thread_time`"
 
-#: library/time.rst:233
+#: library/time.rst:237
 msgid "``'time'``: :func:`time.time`"
 msgstr "``'time'``: :func:`time.time`"
 
-#: library/time.rst:235
+#: library/time.rst:239
 msgid "The result has the following attributes:"
 msgstr "Sonuç şu özniteliklere sahiptir:"
 
-#: library/time.rst:237
+#: library/time.rst:241
 msgid ""
 "*adjustable*: ``True`` if the clock can be changed automatically (e.g. by a "
 "NTP daemon) or manually by the system administrator, ``False`` otherwise"
@@ -412,7 +410,7 @@ msgstr ""
 "yöneticisi tarafından değiştirilebiliyorsa *adjustable*: ``True``, tersi "
 "için ``False``"
 
-#: library/time.rst:239
+#: library/time.rst:243
 msgid ""
 "*implementation*: The name of the underlying C function used to get the "
 "clock value.  Refer to :ref:`time-clock-id-constants` for possible values."
@@ -421,17 +419,17 @@ msgstr ""
 "fonksiyonunun ismidir. Muhtemel değerler için :ref:`time-clock-id-"
 "constants`'a bakınız."
 
-#: library/time.rst:241
+#: library/time.rst:245
 msgid ""
 "*monotonic*: ``True`` if the clock cannot go backward, ``False`` otherwise"
 msgstr ""
 "*monotonic*: Saat geriye doğru gidemiyorsa ``True``, aksi halde ``False``"
 
-#: library/time.rst:243
+#: library/time.rst:247
 msgid "*resolution*: The resolution of the clock in seconds (:class:`float`)"
 msgstr "*resolution*: Saatin saniyeler halindeki netliği (:class:`float`)"
 
-#: library/time.rst:250
+#: library/time.rst:254
 msgid ""
 "Convert a time expressed in seconds since the epoch_ to a :class:"
 "`struct_time` in UTC in which the dst flag is always zero.  If *secs* is not "
@@ -447,7 +445,7 @@ msgstr ""
 "`struct_time` nesnesinin açıklaması için yukarıya bakın. Bu fonksiyonun "
 "tersi için :func:`calendar.timegm` konusuna bakın."
 
-#: library/time.rst:260
+#: library/time.rst:264
 msgid ""
 "Like :func:`gmtime` but converts to local time.  If *secs* is not provided "
 "or :const:`None`, the current time as returned by :func:`.time` is used.  "
@@ -458,7 +456,7 @@ msgstr ""
 "kullanılır.  Belirli bir süre için DST uygulandığında dst bayrağı ``1`` "
 "olarak ayarlanır."
 
-#: library/time.rst:264
+#: library/time.rst:268
 msgid ""
 ":func:`localtime` may raise :exc:`OverflowError`, if the timestamp is "
 "outside the range of values supported by the platform C :c:func:`localtime` "
@@ -472,7 +470,7 @@ msgstr ""
 "`OSError` veya :c:func:`gmtime` hatasını. Bunun 1970 ile 2038 arasındaki "
 "yıllarla sınırlı olması yaygın bir durumdur."
 
-#: library/time.rst:273
+#: library/time.rst:277
 #, fuzzy
 msgid ""
 "This is the inverse function of :func:`localtime`.  Its argument is the :"
@@ -494,7 +492,7 @@ msgstr ""
 "kitaplıkları tarafından yakalanıp yakalanmadığına bağlıdır). Bir zaman "
 "oluşturabileceği en erken tarih, platforma bağlıdır."
 
-#: library/time.rst:285
+#: library/time.rst:289
 msgid ""
 "Return the value (in fractional seconds) of a monotonic clock, i.e. a clock "
 "that cannot go backwards.  The clock is not affected by system clock "
@@ -506,7 +504,7 @@ msgstr ""
 "Döndürülen değerin referans noktası tanımlanmamıştır, böylece sadece iki "
 "aramanın sonuçları arasındaki fark geçerlidir."
 
-#: library/time.rst:290
+#: library/time.rst:294
 msgid ""
 "Use :func:`monotonic_ns` to avoid the precision loss caused by the :class:"
 "`float` type."
@@ -514,21 +512,21 @@ msgstr ""
 ":class:`float` türünün sebep olduğu kesinlik kaybından kaçınmak için :func:"
 "`monotonic_ns` kullanın."
 
-#: library/time.rst:295
+#: library/time.rst:299
 msgid "The function is now always available and always system-wide."
 msgstr "Fonksiyon artık her zaman mevcut ve her zaman sistem çapında."
 
-#: library/time.rst:298
+#: library/time.rst:302
 msgid "On macOS, the function is now system-wide."
 msgstr "macOS için, fonksiyon artık sistem çapında."
 
-#: library/time.rst:304
+#: library/time.rst:308
 msgid "Similar to :func:`monotonic`, but return time as nanoseconds."
 msgstr ""
 ":func:`monotonic`'e benzer şekilde, ama zamanı nanosaniyeler şeklinde "
 "döndürür."
 
-#: library/time.rst:313
+#: library/time.rst:317
 msgid ""
 "Return the value (in fractional seconds) of a performance counter, i.e. a "
 "clock with the highest available resolution to measure a short duration.  It "
@@ -542,7 +540,7 @@ msgstr ""
 "değerin referans noktası tanımsızdır, yani sadece iki çağrının sonuçları "
 "arasındaki fark geçerlidir."
 
-#: library/time.rst:319
+#: library/time.rst:323
 msgid ""
 "Use :func:`perf_counter_ns` to avoid the precision loss caused by the :class:"
 "`float` type."
@@ -550,17 +548,17 @@ msgstr ""
 ":class:`float` türü sebebiyle oluşan kesinlik kaybından kaçınmak için :func:"
 "`perf_counter_ns` kullanın."
 
-#: library/time.rst:324
+#: library/time.rst:328
 msgid "On Windows, the function is now system-wide."
 msgstr "Windows için, fonksiyon artık sistem çapında."
 
-#: library/time.rst:329
+#: library/time.rst:333
 msgid "Similar to :func:`perf_counter`, but return time as nanoseconds."
 msgstr ""
 ":func:`perf_counter`'a benzer şekilde, ama zamanı nanosaniyeler şeklinde "
 "döndürür."
 
-#: library/time.rst:341
+#: library/time.rst:345
 msgid ""
 "Return the value (in fractional seconds) of the sum of the system and user "
 "CPU time of the current process.  It does not include time elapsed during "
@@ -573,7 +571,7 @@ msgstr ""
 "Tanım gereği işlem çapındadır.  Döndürülen değerin referans noktası "
 "tanımsızdır, yani sadece iki çağrının sonuçları arasındaki fark geçerlidir."
 
-#: library/time.rst:347
+#: library/time.rst:351
 msgid ""
 "Use :func:`process_time_ns` to avoid the precision loss caused by the :class:"
 "`float` type."
@@ -581,13 +579,13 @@ msgstr ""
 ":class:`float` türü sebebiyle oluşan kesinlik kaybından kaçınmak için :func:"
 "`process_time_ns` kullanın."
 
-#: library/time.rst:354
+#: library/time.rst:358
 msgid "Similar to :func:`process_time` but return time as nanoseconds."
 msgstr ""
 ":func:`process_time`'a benzer şekilde, ama zamanı nanosaniyeler şeklinde "
 "döndürür."
 
-#: library/time.rst:360
+#: library/time.rst:364
 #, fuzzy
 msgid ""
 "Suspend execution of the calling thread for the given number of seconds. The "
@@ -598,7 +596,7 @@ msgstr ""
 "alın. Argüman, daha kesin bir uyku zamanını belirtmek için kayan noktalı bir "
 "sayı olabilir."
 
-#: library/time.rst:364
+#: library/time.rst:368
 msgid ""
 "If the sleep is interrupted by a signal and no exception is raised by the "
 "signal handler, the sleep is restarted with a recomputed timeout."
@@ -607,7 +605,7 @@ msgstr ""
 "tarafından herhangi bir istisna yükseltilmezse, uyku yeniden hesaplanmış bir "
 "zaman aşımıyla tekrar başlar."
 
-#: library/time.rst:367
+#: library/time.rst:371
 msgid ""
 "The suspension time may be longer than requested by an arbitrary amount, "
 "because of the scheduling of other activity in the system."
@@ -616,14 +614,20 @@ msgstr ""
 "tutulabilir, sebebiyse diğer aktivitelerin sistem içerisindeki "
 "planlanmasıdır."
 
-#: library/time.rst:370
+#: library/time.rst:375
+#, fuzzy
+msgid "Windows implementation"
+msgstr "Unix uyarlaması:"
+
+#: library/time.rst:376
+#, fuzzy
 msgid ""
 "On Windows, if *secs* is zero, the thread relinquishes the remainder of its "
 "time slice to any other thread that is ready to run. If there are no other "
 "threads ready to run, the function returns immediately, and the thread "
 "continues execution.  On Windows 8.1 and newer the implementation uses a "
-"`high-resolution timer <https://docs.microsoft.com/en-us/windows-hardware/"
-"drivers/kernel/high-resolution-timers>`_ which provides resolution of 100 "
+"`high-resolution timer <https://learn.microsoft.com/windows-hardware/drivers/"
+"kernel/high-resolution-timers>`_ which provides resolution of 100 "
 "nanoseconds. If *secs* is zero, ``Sleep(0)`` is used."
 msgstr ""
 "Windows'ta *secs* sıfırsa, iş parçacığı zaman diliminin geri kalanını "
@@ -634,25 +638,37 @@ msgstr ""
 "en-us/windows-hardware/drivers/kernel/high-Definition-timers>`_ kullanır. "
 "*secs* sıfırsa, ``Sleep(0)`` kullanılır."
 
-#: library/time.rst:378
-msgid "Unix implementation:"
+#: library/time.rst:385
+#, fuzzy
+msgid "Unix implementation"
 msgstr "Unix uyarlaması:"
 
-#: library/time.rst:380
+#: library/time.rst:386
 msgid "Use ``clock_nanosleep()`` if available (resolution: 1 nanosecond);"
 msgstr ""
 "Kullanılabilirse ``clock_nanosleep()`` kullanın (netlik: 1 nanosaniye);"
 
-#: library/time.rst:381
+#: library/time.rst:387
 msgid "Or use ``nanosleep()`` if available (resolution: 1 nanosecond);"
 msgstr ""
 "Ya da kullanılabiliyorsa ``nanosleep()`` kullanın (netlik: 1 nanosaniye);"
 
-#: library/time.rst:382
+#: library/time.rst:388
 msgid "Or use ``select()`` (resolution: 1 microsecond)."
 msgstr "Ya da ``select()`` kullanın (netlik: 1 mikrosaniye)."
 
-#: library/time.rst:384
+#: library/time.rst:392
+msgid ""
+"To emulate a \"no-op\", use :keyword:`pass` instead of ``time.sleep(0)``."
+msgstr ""
+
+#: library/time.rst:394
+msgid ""
+"To voluntarily relinquish the CPU, specify a real-time :ref:`scheduling "
+"policy <os-scheduling-policy>` and use :func:`os.sched_yield` instead."
+msgstr ""
+
+#: library/time.rst:397
 msgid ""
 "The function now sleeps at least *secs* even if the sleep is interrupted by "
 "a signal, except if the signal handler raises an exception (see :pep:`475` "
@@ -662,7 +678,7 @@ msgstr ""
 "sinyal işleyicisi tarafından bir istisna yükseltilmesi durumu hariç "
 "(açıklaması için :pep:`475`'e göz atın)."
 
-#: library/time.rst:389
+#: library/time.rst:402
 msgid ""
 "On Unix, the ``clock_nanosleep()`` and ``nanosleep()`` functions are now "
 "used if available. On Windows, a waitable timer is now used."
@@ -671,7 +687,7 @@ msgstr ""
 "kullanılabiliyor. Windows'da, artık beklenebilir bir zamanlayıcı "
 "kullanılıyor."
 
-#: library/time.rst:398
+#: library/time.rst:411
 msgid ""
 "Convert a tuple or :class:`struct_time` representing a time as returned by :"
 "func:`gmtime` or :func:`localtime` to a string as specified by the *format* "
@@ -686,7 +702,7 @@ msgstr ""
 "bir dize olmalıdır.  :exc:`ValueError`, *t* içindeki herhangi bir alan izin "
 "verilen aralığın dışındaysa yükseltilir."
 
-#: library/time.rst:404
+#: library/time.rst:417
 msgid ""
 "0 is a legal argument for any position in the time tuple; if it is normally "
 "illegal the value is forced to a correct one."
@@ -694,7 +710,7 @@ msgstr ""
 "0 zaman demeti içerisindeki herhangi bir pozisyon için geçerli bir "
 "argümandır; normalde geçersiz ise, değer doğru bir değere zorlanır."
 
-#: library/time.rst:407
+#: library/time.rst:420
 msgid ""
 "The following directives can be embedded in the *format* string. They are "
 "shown without the optional field width and precision specification, and are "
@@ -704,152 +720,152 @@ msgstr ""
 "genişliği ve kesinlik belirtimi olmadan gösterilirler ve :func:`strftime` "
 "sonucunda belirtilen karakterlerle değiştirilirler:"
 
-#: library/time.rst:412
+#: library/time.rst:425
 msgid "Directive"
 msgstr "Yönerge"
 
-#: library/time.rst:412
+#: library/time.rst:425
 msgid "Meaning"
 msgstr "Anlamı"
 
-#: library/time.rst:412
+#: library/time.rst:425
 msgid "Notes"
 msgstr "Notlar"
 
-#: library/time.rst:414
+#: library/time.rst:427
 msgid "``%a``"
 msgstr "``%a``"
 
-#: library/time.rst:414
+#: library/time.rst:427
 msgid "Locale's abbreviated weekday name."
 msgstr "Yerel ayarın kısaltılmış hafta içi ismi."
 
-#: library/time.rst:417
+#: library/time.rst:430
 msgid "``%A``"
 msgstr "``%A``"
 
-#: library/time.rst:417
+#: library/time.rst:430
 msgid "Locale's full weekday name."
 msgstr "Yerel ayarın tam hafta içi ismi."
 
-#: library/time.rst:419
+#: library/time.rst:432
 msgid "``%b``"
 msgstr "``%b``"
 
-#: library/time.rst:419
+#: library/time.rst:432
 msgid "Locale's abbreviated month name."
 msgstr "Yerel ayarın kısaltılmış ay ismi."
 
-#: library/time.rst:422
+#: library/time.rst:435
 msgid "``%B``"
 msgstr "``%B``"
 
-#: library/time.rst:422
+#: library/time.rst:435
 msgid "Locale's full month name."
 msgstr "Yerel ayarın tam ay ismi."
 
-#: library/time.rst:424
+#: library/time.rst:437
 msgid "``%c``"
 msgstr "``%c``"
 
-#: library/time.rst:424
+#: library/time.rst:437
 msgid "Locale's appropriate date and time representation."
 msgstr "Yerel ayarın uygun tarih ve zaman gösterimi."
 
-#: library/time.rst:427
+#: library/time.rst:440
 msgid "``%d``"
 msgstr "``%d``"
 
-#: library/time.rst:427
+#: library/time.rst:440
 msgid "Day of the month as a decimal number [01,31]."
 msgstr "Onluk sayı şeklinde ayın günü [01,31]."
 
-#: library/time.rst:430
+#: library/time.rst:443
 msgid "``%f``"
 msgstr ""
 
-#: library/time.rst:430
+#: library/time.rst:443
 #, fuzzy
 msgid "Microseconds as a decimal number"
 msgstr "Onluk sayı şeklinde saniye [00,61]."
 
-#: library/time.rst:431
+#: library/time.rst:444
 msgid "[000000,999999]."
 msgstr ""
 
-#: library/time.rst:430
+#: library/time.rst:443
 msgid "\\(1)"
 msgstr "\\(1)"
 
-#: library/time.rst:434
+#: library/time.rst:447
 msgid "``%H``"
 msgstr "``%H``"
 
-#: library/time.rst:434
+#: library/time.rst:447
 msgid "Hour (24-hour clock) as a decimal number [00,23]."
 msgstr "Onluk sayı şeklinde saat (24-saatlik sistem) [00,23]."
 
-#: library/time.rst:437
+#: library/time.rst:450
 msgid "``%I``"
 msgstr "``%I``"
 
-#: library/time.rst:437
+#: library/time.rst:450
 msgid "Hour (12-hour clock) as a decimal number [01,12]."
 msgstr "Onluk sayı şeklinde saat (12-saatlik sistem) [01,12]."
 
-#: library/time.rst:440
+#: library/time.rst:453
 msgid "``%j``"
 msgstr "``%j``"
 
-#: library/time.rst:440
+#: library/time.rst:453
 msgid "Day of the year as a decimal number [001,366]."
 msgstr "Onluk sayı şeklinde yılın günü [001,366]."
 
-#: library/time.rst:443
+#: library/time.rst:456
 msgid "``%m``"
 msgstr "``%m``"
 
-#: library/time.rst:443
+#: library/time.rst:456
 msgid "Month as a decimal number [01,12]."
 msgstr "Onluk sayı şeklinde ay [01,12]."
 
-#: library/time.rst:446
+#: library/time.rst:459
 msgid "``%M``"
 msgstr "``%M``"
 
-#: library/time.rst:446
+#: library/time.rst:459
 msgid "Minute as a decimal number [00,59]."
 msgstr "Onluk sayı şeklinde dakika [00,59]."
 
-#: library/time.rst:449
+#: library/time.rst:462
 msgid "``%p``"
 msgstr "``%p``"
 
-#: library/time.rst:449
+#: library/time.rst:462
 msgid "Locale's equivalent of either AM or PM."
 msgstr "Yerel ayarın AM veya PM'e göre karşılığı."
 
-#: library/time.rst:449
+#: library/time.rst:462
 msgid "\\(2)"
 msgstr "\\(2)"
 
-#: library/time.rst:452
+#: library/time.rst:465
 msgid "``%S``"
 msgstr "``%S``"
 
-#: library/time.rst:452
+#: library/time.rst:465
 msgid "Second as a decimal number [00,61]."
 msgstr "Onluk sayı şeklinde saniye [00,61]."
 
-#: library/time.rst:452
+#: library/time.rst:465
 msgid "\\(3)"
 msgstr "\\(3)"
 
-#: library/time.rst:455
+#: library/time.rst:468
 msgid "``%U``"
 msgstr "``%U``"
 
-#: library/time.rst:455
+#: library/time.rst:468
 msgid ""
 "Week number of the year (Sunday as the first day of the week) as a decimal "
 "number [00,53]. All days in a new year preceding the first Sunday are "
@@ -859,32 +875,32 @@ msgstr ""
 "numarası [00,53]. Yeni bir yılın ilk Pazar gününden önceki tüm günleri 0. "
 "hafta olarak kabul edilir."
 
-#: library/time.rst:469
+#: library/time.rst:482
 msgid "\\(4)"
 msgstr ""
 
-#: library/time.rst:463
+#: library/time.rst:476
 msgid "``%u``"
 msgstr ""
 
-#: library/time.rst:463
+#: library/time.rst:476
 #, fuzzy
 msgid "Day of the week (Monday is 1; Sunday is 7) as a decimal number [1, 7]."
 msgstr "Onluk sayı şeklinde ayın günü [01,31]."
 
-#: library/time.rst:466
+#: library/time.rst:479
 msgid "``%w``"
 msgstr "``%w``"
 
-#: library/time.rst:466
+#: library/time.rst:479
 msgid "Weekday as a decimal number [0(Sunday),6]."
 msgstr "Onluk sayı şeklinde hafta içi [0(Sunday),6]."
 
-#: library/time.rst:469
+#: library/time.rst:482
 msgid "``%W``"
 msgstr "``%W``"
 
-#: library/time.rst:469
+#: library/time.rst:482
 msgid ""
 "Week number of the year (Monday as the first day of the week) as a decimal "
 "number [00,53]. All days in a new year preceding the first Monday are "
@@ -894,43 +910,43 @@ msgstr ""
 "numarası [00,53]. Yeni bir yılın ilk Pazartesi gününden önceki tüm günleri "
 "0. hafta olarak kabul edilir."
 
-#: library/time.rst:477
+#: library/time.rst:490
 msgid "``%x``"
 msgstr "``%x``"
 
-#: library/time.rst:477
+#: library/time.rst:490
 msgid "Locale's appropriate date representation."
 msgstr "Yerel ayarın uygun tarih gösterimi."
 
-#: library/time.rst:480
+#: library/time.rst:493
 msgid "``%X``"
 msgstr "``%X``"
 
-#: library/time.rst:480
+#: library/time.rst:493
 msgid "Locale's appropriate time representation."
 msgstr "Yerel ayarın uygun zaman gösterimi."
 
-#: library/time.rst:483
+#: library/time.rst:496
 msgid "``%y``"
 msgstr "``%y``"
 
-#: library/time.rst:483
+#: library/time.rst:496
 msgid "Year without century as a decimal number [00,99]."
 msgstr "Onluk sayı şeklinde yüzyıl olmadan yıl [00,99]."
 
-#: library/time.rst:486
+#: library/time.rst:499
 msgid "``%Y``"
 msgstr "``%Y``"
 
-#: library/time.rst:486
+#: library/time.rst:499
 msgid "Year with century as a decimal number."
 msgstr "Onluk sayı şeklinde yüzyıl ile birlikte yıl."
 
-#: library/time.rst:489
+#: library/time.rst:502
 msgid "``%z``"
 msgstr "``%z``"
 
-#: library/time.rst:489
+#: library/time.rst:502
 msgid ""
 "Time zone offset indicating a positive or negative time difference from UTC/"
 "GMT of the form +HHMM or -HHMM, where H represents decimal hour digits and M "
@@ -940,51 +956,51 @@ msgstr ""
 "farkını gösteren saat dilimi farkı, burada H ondalık saat hanelerini ve M "
 "ondalık dakika hanelerini temsil eder [-23:59, +23:59]. [1]_"
 
-#: library/time.rst:495
+#: library/time.rst:508
 msgid "``%Z``"
 msgstr "``%Z``"
 
-#: library/time.rst:495
+#: library/time.rst:508
 msgid "Time zone name (no characters if no time zone exists). Deprecated. [1]_"
 msgstr ""
 "Yerel zaman ismi (yerel zaman bulunmuyorsa karakter girmeyin). Kullanımdan "
 "kaldırıldı. [1]_"
 
-#: library/time.rst:498
+#: library/time.rst:511
 msgid "``%G``"
 msgstr ""
 
-#: library/time.rst:498
+#: library/time.rst:511
 msgid ""
 "ISO 8601 year (similar to ``%Y`` but follows the rules for the ISO 8601 "
 "calendar year). The year starts with the week that contains the first "
 "Thursday of the calendar year."
 msgstr ""
 
-#: library/time.rst:503
+#: library/time.rst:516
 msgid "``%V``"
 msgstr ""
 
-#: library/time.rst:503
+#: library/time.rst:516
 msgid ""
 "ISO 8601 week number (as a decimal number [01,53]). The first week of the "
 "year is the one that contains the first Thursday of the year. Weeks start on "
 "Monday."
 msgstr ""
 
-#: library/time.rst:508
+#: library/time.rst:521
 msgid "``%%``"
 msgstr "``%%``"
 
-#: library/time.rst:508
+#: library/time.rst:521
 msgid "A literal ``'%'`` character."
 msgstr "Gerçek bir ``'%'`` karakteri."
 
-#: library/time.rst:511
+#: library/time.rst:524
 msgid "Notes:"
 msgstr "Notlar:"
 
-#: library/time.rst:514
+#: library/time.rst:527
 msgid ""
 "The ``%f`` format directive only applies to :func:`strptime`, not to :func:"
 "`strftime`. However, see also :meth:`datetime.datetime.strptime` and :meth:"
@@ -992,7 +1008,7 @@ msgid ""
 "to microseconds <format-codes>`."
 msgstr ""
 
-#: library/time.rst:520
+#: library/time.rst:533
 msgid ""
 "When used with the :func:`strptime` function, the ``%p`` directive only "
 "affects the output hour field if the ``%I`` directive is used to parse the "
@@ -1002,7 +1018,7 @@ msgstr ""
 "ayrıştırmak için ``%I`` yönergesi kullanılıyorsa, çıkış saati alanını "
 "etkiler."
 
-#: library/time.rst:526
+#: library/time.rst:539
 msgid ""
 "The range really is ``0`` to ``61``; value ``60`` is valid in timestamps "
 "representing `leap seconds`_ and value ``61`` is supported for historical "
@@ -1012,7 +1028,7 @@ msgstr ""
 "seconds`_ 'u temsil eden zaman damgalarında geçerlidir ve ``61`` değeriyse "
 "tarihsel nedenlerden ötürü desteklenmektedir."
 
-#: library/time.rst:531
+#: library/time.rst:544
 msgid ""
 "When used with the :func:`strptime` function, ``%U`` and ``%W`` are only "
 "used in calculations when the day of the week and the year are specified."
@@ -1020,7 +1036,7 @@ msgstr ""
 "``%U`` ve ``%W`` ifadeleri, :func:`strptime` fonksiyonu ile kullanıldığında, "
 "yalnızca haftanın günü ve yıl belirtilmişse hesaplamalarda kullanılır."
 
-#: library/time.rst:534
+#: library/time.rst:547
 msgid ""
 "Here is an example, a format for dates compatible with that specified  in "
 "the :rfc:`2822` Internet email standard.  [1]_ ::"
@@ -1028,14 +1044,14 @@ msgstr ""
 "İşte bir örnek, :rfc:`2822` İnternet e-posta standardında belirtilenle "
 "uyumlu tarih biçimi.  [1]_ ::"
 
-#: library/time.rst:537
+#: library/time.rst:550
 msgid ""
 ">>> from time import gmtime, strftime\n"
 ">>> strftime(\"%a, %d %b %Y %H:%M:%S +0000\", gmtime())\n"
 "'Thu, 28 Jun 2001 14:17:15 +0000'"
 msgstr ""
 
-#: library/time.rst:541
+#: library/time.rst:554
 msgid ""
 "Additional directives may be supported on certain platforms, but only the "
 "ones listed here have a meaning standardized by ANSI C.  To see the full set "
@@ -1047,7 +1063,7 @@ msgstr ""
 "Platformunuzda desteklenen tüm biçim kodlarını görmek için :manpage:"
 "`strftime(3)` belgelerine bakın."
 
-#: library/time.rst:546
+#: library/time.rst:559
 msgid ""
 "On some platforms, an optional field width and precision specification can "
 "immediately follow the initial ``'%'`` of a directive in the following "
@@ -1059,7 +1075,7 @@ msgstr ""
 "bu da taşınabilir değil. Alan genişliği, 3 olduğu ``%j`` dışında normalde "
 "2'dir."
 
-#: library/time.rst:557
+#: library/time.rst:570
 msgid ""
 "Parse a string representing a time according to a format.  The return value "
 "is a :class:`struct_time` as returned by :func:`gmtime` or :func:`localtime`."
@@ -1068,7 +1084,7 @@ msgstr ""
 "değeri, :func:`gmtime` veya :func:`localtime` tarafından döndürülen bir :"
 "class:`struct_time` şeklindedir."
 
-#: library/time.rst:561
+#: library/time.rst:574
 msgid ""
 "The *format* parameter uses the same directives as those used by :func:"
 "`strftime`; it defaults to ``\"%a %b %d %H:%M:%S %Y\"`` which matches the "
@@ -1087,11 +1103,11 @@ msgstr ""
 "0, 0, 0, 0, 1, -1)`` şeklindedir. Hem *string* hem de *format* dize "
 "olmalıdır."
 
-#: library/time.rst:569
+#: library/time.rst:582
 msgid "For example:"
 msgstr "Örnek olarak:"
 
-#: library/time.rst:576
+#: library/time.rst:589
 msgid ""
 "Support for the ``%Z`` directive is based on the values contained in "
 "``tzname`` and whether ``daylight`` is true.  Because of this, it is "
@@ -1103,7 +1119,7 @@ msgstr ""
 "zaman bilinen (ve gün ışığından yararlanma saat dilimleri olarak kabul "
 "edilen) UTC ve GMT'yi tanımak dışında platforma özgüdür."
 
-#: library/time.rst:581
+#: library/time.rst:594
 msgid ""
 "Only the directives specified in the documentation are supported.  Because "
 "``strftime()`` is implemented per platform it can sometimes offer more "
@@ -1116,7 +1132,7 @@ msgstr ""
 "sunabilir.  Ancak ``strptime()`` herhangi bir platformdan bağımsızdır ve bu "
 "nedenle desteklendiği belgelenmeyen mevcut tüm yönergeleri desteklemeyebilir."
 
-#: library/time.rst:590
+#: library/time.rst:603
 msgid ""
 "The type of the time value sequence returned by :func:`gmtime`, :func:"
 "`localtime`, and :func:`strptime`.  It is an object with a :term:`named "
@@ -1128,105 +1144,105 @@ msgstr ""
 "nesnedir: değerlere dizin ve öznitelik adıyla erişilebilir.  Aşağıdaki "
 "değerler mevcuttur:"
 
-#: library/time.rst:597
+#: library/time.rst:610
 msgid "Index"
 msgstr "Dizin"
 
-#: library/time.rst:598
+#: library/time.rst:611
 msgid "Attribute"
 msgstr "Öznitelik"
 
-#: library/time.rst:599
+#: library/time.rst:612
 msgid "Values"
 msgstr "Değerler"
 
-#: library/time.rst:601
+#: library/time.rst:614
 msgid "0"
 msgstr "0"
 
-#: library/time.rst:603
+#: library/time.rst:616
 msgid "(for example, 1993)"
 msgstr "(örnek olarak, 1993)"
 
-#: library/time.rst:605
+#: library/time.rst:618
 msgid "1"
 msgstr "1"
 
-#: library/time.rst:607
+#: library/time.rst:620
 msgid "range [1, 12]"
 msgstr "[1, 12] aralığı"
 
-#: library/time.rst:609
+#: library/time.rst:622
 msgid "2"
 msgstr "2"
 
-#: library/time.rst:611
+#: library/time.rst:624
 msgid "range [1, 31]"
 msgstr "[1, 31] aralığı"
 
-#: library/time.rst:613
+#: library/time.rst:626
 msgid "3"
 msgstr "3"
 
-#: library/time.rst:615
+#: library/time.rst:628
 msgid "range [0, 23]"
 msgstr "[0, 23] aralığı"
 
-#: library/time.rst:617
+#: library/time.rst:630
 msgid "4"
 msgstr "4"
 
-#: library/time.rst:619
+#: library/time.rst:632
 msgid "range [0, 59]"
 msgstr "[0, 59] aralığa"
 
-#: library/time.rst:621
+#: library/time.rst:634
 msgid "5"
 msgstr "5"
 
-#: library/time.rst:623
+#: library/time.rst:636
 #, fuzzy
 msgid "range [0, 61]; see :ref:`Note (2) <leap-second>` in :func:`strftime`"
 msgstr "[0, 61] aralığı; :func:`strftime` içinde **(2)** açıklamasına göz atın"
 
-#: library/time.rst:625
+#: library/time.rst:638
 msgid "6"
 msgstr "6"
 
-#: library/time.rst:627
+#: library/time.rst:640
 #, fuzzy
 msgid "range [0, 6]; Monday is 0"
 msgstr "[0, 6] aralığı, Pazartesi 0'dır"
 
-#: library/time.rst:629
+#: library/time.rst:642
 msgid "7"
 msgstr "7"
 
-#: library/time.rst:631
+#: library/time.rst:644
 msgid "range [1, 366]"
 msgstr "[1, 366] aralığı"
 
-#: library/time.rst:633
+#: library/time.rst:646
 msgid "8"
 msgstr "8"
 
-#: library/time.rst:635
+#: library/time.rst:648
 msgid "0, 1 or -1; see below"
 msgstr "0, 1 veya -1; aşağıya bakınız"
 
-#: library/time.rst:641
+#: library/time.rst:654
 msgid "N/A"
 msgstr "N/A"
 
-#: library/time.rst:639
+#: library/time.rst:652
 msgid "abbreviation of timezone name"
 msgstr "saat diliminin adının kısaltması"
 
-#: library/time.rst:643
+#: library/time.rst:656
 msgid "offset east of UTC in seconds"
 msgstr "UTC'nin doğusundaki saniye farkı"
 
-#: library/time.rst:645
+#: library/time.rst:658
 msgid ""
 "Note that unlike the C structure, the month value is a range of [1, 12], not "
 "[0, 11]."
@@ -1234,7 +1250,7 @@ msgstr ""
 "C yapısından farklı olarak, ay değerinin menzili [1, 12] arasındadır, [0, "
 "11] değil."
 
-#: library/time.rst:648
+#: library/time.rst:661
 msgid ""
 "In calls to :func:`mktime`, :attr:`tm_isdst` may be set to 1 when daylight "
 "savings time is in effect, and 0 when it is not.  A value of -1 indicates "
@@ -1245,7 +1261,7 @@ msgstr ""
 "1, etkin değilken 0 olarak ayarlanabilir.  -1 değeri bunun bilinmediğini "
 "gösterir ve genellikle doğru durumun doldurulmasıyla sonuçlanır."
 
-#: library/time.rst:652
+#: library/time.rst:665
 msgid ""
 "When a tuple with an incorrect length is passed to a function expecting a :"
 "class:`struct_time`, or having elements of the wrong type, a :exc:"
@@ -1255,7 +1271,7 @@ msgstr ""
 "iletildiğinde, veya yanlış türde elemanlara sahip olmak, bir :exc:"
 "`TypeError` yükseltir."
 
-#: library/time.rst:658
+#: library/time.rst:671
 #, fuzzy
 msgid ""
 "Return the time in seconds since the epoch_ as a floating-point number. The "
@@ -1270,7 +1286,7 @@ msgstr ""
 "saniye cinsinden süreye dahil edilmez. Bu genellikle `Unix time <https://en."
 "wikipedia.org/wiki/Unix_time>`_ olarak anılır."
 
-#: library/time.rst:664
+#: library/time.rst:677
 #, fuzzy
 msgid ""
 "Note that even though the time is always returned as a floating-point "
@@ -1284,7 +1300,7 @@ msgstr ""
 "Bu fonksiyon normalde azalmayan değerler döndürürken, sistem saati iki çağrı "
 "arasında geri ayarlanmışsa önceki çağrıdan daha düşük bir değer döndürebilir."
 
-#: library/time.rst:670
+#: library/time.rst:683
 msgid ""
 "The number returned by :func:`.time` may be converted into a more common "
 "time format (i.e. year, month, day, hour, etc...) in UTC by passing it to :"
@@ -1299,7 +1315,7 @@ msgstr ""
 "iki durumda da, takvim tarihinin bileşenlerine nitelikler olarak "
 "erişilebilen bir :class:`struct_time` nesnesi döndürülür."
 
-#: library/time.rst:677
+#: library/time.rst:690
 msgid ""
 "Use :func:`time_ns` to avoid the precision loss caused by the :class:`float` "
 "type."
@@ -1307,7 +1323,7 @@ msgstr ""
 ":class:`float` türünden kaynaklanan kesinlik kaybından kaçınmak için :func:"
 "`time_ns` kullanınız."
 
-#: library/time.rst:683
+#: library/time.rst:696
 msgid ""
 "Similar to :func:`~time.time` but returns time as an integer number of "
 "nanoseconds since the epoch_."
@@ -1315,7 +1331,7 @@ msgstr ""
 ":func:`~time.time`'ye benzer, ancak zamanı, epoch_ 'den bu yana geçen "
 "nanosaniyelerin tamsayısı olarak döndürür."
 
-#: library/time.rst:696
+#: library/time.rst:709
 msgid ""
 "Return the value (in fractional seconds) of the sum of the system and user "
 "CPU time of the current thread.  It does not include time elapsed during "
@@ -1329,7 +1345,7 @@ msgstr ""
 "noktası tanımsızdır, böylece sadece aynı iş parçacığındaki iki çağrının "
 "sonuçları arasındaki fark geçerlidir."
 
-#: library/time.rst:702
+#: library/time.rst:715
 msgid ""
 "Use :func:`thread_time_ns` to avoid the precision loss caused by the :class:"
 "`float` type."
@@ -1337,17 +1353,17 @@ msgstr ""
 ":class:`float` türünün neden olduğu kesinlik kaybını önlemek için :func:"
 "`thread_time_ns` kullanın."
 
-#: library/time.rst:707
+#: library/time.rst:720
 msgid "Unix systems supporting ``CLOCK_THREAD_CPUTIME_ID``."
 msgstr "Unix sistemler ``CLOCK_THREAD_CPUTIME_ID`` destekliyor."
 
-#: library/time.rst:714
+#: library/time.rst:727
 msgid "Similar to :func:`thread_time` but return time as nanoseconds."
 msgstr ""
 ":func:`thread_time` ile benzer şekilde ama zamanı nanosaniyeler şeklinde "
 "döndürür."
 
-#: library/time.rst:721
+#: library/time.rst:734
 msgid ""
 "Reset the time conversion rules used by the library routines. The "
 "environment variable :envvar:`TZ` specifies how this is done. It will also "
@@ -1366,7 +1382,7 @@ msgstr ""
 "ışığından yararlanma saatinin uygulandığı geçmiş, şimdi veya gelecek bir "
 "zaman varsa sıfırdan farklı)."
 
-#: library/time.rst:733
+#: library/time.rst:746
 msgid ""
 "Although in many cases, changing the :envvar:`TZ` environment variable may "
 "affect the output of functions like :func:`localtime` without calling :func:"
@@ -1376,11 +1392,11 @@ msgstr ""
 "gibi işlevlerin çıktısını :func:`tzset` çağırmadan etkileyebilirse de, bu "
 "davranışa güvenilmemelidir."
 
-#: library/time.rst:737
+#: library/time.rst:750
 msgid "The :envvar:`TZ` environment variable should contain no whitespace."
 msgstr ":envvar:`TZ` çevre değişkeni boşluk karakteri içermemelidir."
 
-#: library/time.rst:739
+#: library/time.rst:752
 msgid ""
 "The standard format of the :envvar:`TZ` environment variable is (whitespace "
 "added for clarity)::"
@@ -1388,19 +1404,19 @@ msgstr ""
 ":envvar:`TZ` çevre değişkeninin standart biçimi (boşluk karakteri açıklık "
 "için eklenmiştir)::"
 
-#: library/time.rst:742
+#: library/time.rst:755
 msgid "std offset [dst [offset [,start[/time], end[/time]]]]"
 msgstr ""
 
-#: library/time.rst:744
+#: library/time.rst:757
 msgid "Where the components are:"
 msgstr "Bileşenlerin olduğu yerde:"
 
-#: library/time.rst:746
+#: library/time.rst:759
 msgid "``std`` and ``dst``"
 msgstr "``std`` ve ``dst``"
 
-#: library/time.rst:747
+#: library/time.rst:760
 msgid ""
 "Three or more alphanumerics giving the timezone abbreviations. These will be "
 "propagated into time.tzname"
@@ -1408,11 +1424,11 @@ msgstr ""
 "Üç veya daha fazla harfler ve sayılar saat dilimi kısaltmalarını veriyor. "
 "Bunlar time.tzname içine yayılacaktır"
 
-#: library/time.rst:750
+#: library/time.rst:763
 msgid "``offset``"
 msgstr "``offset``"
 
-#: library/time.rst:751
+#: library/time.rst:764
 msgid ""
 "The offset has the form: ``± hh[:mm[:ss]]``. This indicates the value added "
 "the local time to arrive at UTC.  If preceded by a '-', the timezone is east "
@@ -1425,11 +1441,11 @@ msgstr ""
 "bir sapma yoksa, yaz saatinin standart saatten bir saat ileri olduğu "
 "varsayılır."
 
-#: library/time.rst:756
+#: library/time.rst:769
 msgid "``start[/time], end[/time]``"
 msgstr "``start[/time], end[/time]``"
 
-#: library/time.rst:757
+#: library/time.rst:770
 msgid ""
 "Indicates when to change to and back from DST. The format of the start and "
 "end dates are one of the following:"
@@ -1437,11 +1453,11 @@ msgstr ""
 "DST'ye ne zaman geçileceğini ve DST'den geri dönüleceğini gösterir. "
 "Başlangıç ve bitiş tarihlerinin biçimi aşağıdakilerden biridir:"
 
-#: library/time.rst:760
+#: library/time.rst:773
 msgid ":samp:`J{n}`"
 msgstr ":samp:`J{n}`"
 
-#: library/time.rst:761
+#: library/time.rst:774
 msgid ""
 "The Julian day *n* (1 <= *n* <= 365). Leap days are not counted, so in all "
 "years February 28 is day 59 and March 1 is day 60."
@@ -1449,11 +1465,11 @@ msgstr ""
 "Jülyen günü *n* (1 <= *n* <= 365). Artık günler sayılmaz, yani bütün "
 "yıllarda 28 Şubat 59. gün ve 1 Mart 60. gündür."
 
-#: library/time.rst:764
+#: library/time.rst:777
 msgid ":samp:`{n}`"
 msgstr ":samp:`{n}`"
 
-#: library/time.rst:765
+#: library/time.rst:778
 msgid ""
 "The zero-based Julian day (0 <= *n* <= 365). Leap days are counted, and it "
 "is possible to refer to February 29."
@@ -1461,11 +1477,11 @@ msgstr ""
 "Sıfır tabanlı Jülyen günü (0 <= *n* <= 365). Artık günler dahil edilmiştir, "
 "ve 29 Şubat'tan bahsetmek mümkündür."
 
-#: library/time.rst:768
+#: library/time.rst:781
 msgid ":samp:`M{m}.{n}.{d}`"
 msgstr ":samp:`M{m}.{n}.{d}`"
 
-#: library/time.rst:769
+#: library/time.rst:782
 msgid ""
 "The *d*'th day (0 <= *d* <= 6) of week *n* of month *m* of the year (1 <= "
 "*n* <= 5, 1 <= *m* <= 12, where week 5 means \"the last *d* day in month "
@@ -1476,7 +1492,7 @@ msgstr ""
 "5, 1 <= *m* <= 12, burada 5. hafta \"the last *d* day in month *m*\" "
 "anlamına gelir ve dördüncü veya beşinci haftada olabilir)."
 
-#: library/time.rst:775
+#: library/time.rst:788
 msgid ""
 "``time`` has the same format as ``offset`` except that no leading sign ('-' "
 "or '+') is allowed. The default, if time is not given, is 02:00:00."
@@ -1485,7 +1501,7 @@ msgstr ""
 "haricinde aynı biçime sahiptir. Zaman verilmemişse, varsayılan olarak "
 "02:00:00'dır."
 
-#: library/time.rst:780
+#: library/time.rst:793
 msgid ""
 ">>> os.environ['TZ'] = 'EST+05EDT,M4.1.0,M10.5.0'\n"
 ">>> time.tzset()\n"
@@ -1497,7 +1513,7 @@ msgid ""
 "'16:08:12 05/08/03 AEST'"
 msgstr ""
 
-#: library/time.rst:789
+#: library/time.rst:802
 msgid ""
 "On many Unix systems (including \\*BSD, Linux, Solaris, and Darwin), it is "
 "more convenient to use the system's zoneinfo (:manpage:`tzfile(5)`)  "
@@ -1516,7 +1532,7 @@ msgstr ""
 "Eastern'``, ``'Australia/Melbourne'``, ``'Egypt'`` veya  ``'Europe/"
 "Amsterdam'``. ::"
 
-#: library/time.rst:797
+#: library/time.rst:810
 msgid ""
 ">>> os.environ['TZ'] = 'US/Eastern'\n"
 ">>> time.tzset()\n"
@@ -1528,11 +1544,11 @@ msgid ""
 "('EET', 'EEST')"
 msgstr ""
 
-#: library/time.rst:810
+#: library/time.rst:823
 msgid "Clock ID Constants"
 msgstr "Saat Kimliği Sabitleri"
 
-#: library/time.rst:812
+#: library/time.rst:825
 msgid ""
 "These constants are used as parameters for :func:`clock_getres` and :func:"
 "`clock_gettime`."
@@ -1540,7 +1556,7 @@ msgstr ""
 "Şu sabitler :func:`clock_getres` ve :func:`clock_gettime` için parametre "
 "olarak kullanılırlar."
 
-#: library/time.rst:817
+#: library/time.rst:830
 msgid ""
 "Identical to :data:`CLOCK_MONOTONIC`, except it also includes any time that "
 "the system is suspended."
@@ -1548,7 +1564,7 @@ msgstr ""
 ":data:`CLOCK_MONOTONIC` ile aynı şekilde, ancak o sistemin askıya alındığı "
 "herhangi bir zamanı da içerir."
 
-#: library/time.rst:820
+#: library/time.rst:833
 msgid ""
 "This allows applications to get a suspend-aware monotonic  clock  without "
 "having to deal with the complications of :data:`CLOCK_REALTIME`, which may "
@@ -1560,7 +1576,7 @@ msgstr ""
 "değiştirildiğinde süreksizliklere sahip olabilecek, askıya alma farkında "
 "monoton bir saat elde etmelerini sağlar."
 
-#: library/time.rst:832
+#: library/time.rst:845
 msgid ""
 "The Solaris OS has a ``CLOCK_HIGHRES`` timer that attempts to use an optimal "
 "hardware source, and may give close to nanosecond resolution. "
@@ -1570,7 +1586,7 @@ msgstr ""
 "yakın kesinlik sağlayabilen bir ``CLOCK_HIGHRES`` zamanlayıcıya sahiptir. "
 "``CLOCK_HIGHRES`` ayarlanamaz, yüksek kesinlikli saattir."
 
-#: library/time.rst:843
+#: library/time.rst:856
 msgid ""
 "Clock that cannot be set and represents monotonic time since some "
 "unspecified starting point."
@@ -1578,7 +1594,7 @@ msgstr ""
 "Belirsiz başlangıç noktasından beri ayarlanamayan ve monoton zamanı temsil "
 "eden saat."
 
-#: library/time.rst:853
+#: library/time.rst:866
 msgid ""
 "Similar to :data:`CLOCK_MONOTONIC`, but provides access to a raw hardware-"
 "based time that is not subject to NTP adjustments."
@@ -1586,11 +1602,11 @@ msgstr ""
 ":data:`CLOCK_MONOTONIC` ile benzer, ama NTP ayarlamalarına tabii olmayan "
 "donanım bazlı ham zamana erişim sağlar."
 
-#: library/time.rst:872
+#: library/time.rst:885
 msgid "High-resolution per-process timer from the CPU."
 msgstr "CPU'dan yüksek kesinlikli işlem başına zamanlayıcısı."
 
-#: library/time.rst:880
+#: library/time.rst:893
 msgid ""
 "`International Atomic Time <https://www.nist.gov/pml/time-and-frequency-"
 "division/nist-time-frequently-asked-questions-faq#tai>`_"
@@ -1598,7 +1614,7 @@ msgstr ""
 "`International Atomic Time <https://www.nist.gov/pml/time-and-frequency-"
 "division/nist-time-frequently-asked-questions-faq#tai>`_"
 
-#: library/time.rst:882
+#: library/time.rst:895
 msgid ""
 "The system must have a current leap second table in order for this to give "
 "the correct answer.  PTP or NTP software can maintain a leap second table."
@@ -1607,11 +1623,11 @@ msgstr ""
 "tablosuna sahip olması gerekir.  PTP veya NTP yazılımı artık saniye "
 "tablosunu sürdürebilir."
 
-#: library/time.rst:891
+#: library/time.rst:904
 msgid "Thread-specific CPU-time clock."
 msgstr "İş parçacığına özgü CPU zamanlayıcı saati."
 
-#: library/time.rst:900
+#: library/time.rst:913
 msgid ""
 "Time whose absolute value is the time the system has been running and not "
 "suspended, providing accurate uptime measurement, both absolute and interval."
@@ -1619,7 +1635,7 @@ msgstr ""
 "Mutlak değeri sistemin çalıştığı ve askıya alınmadığı süre olan süre, hem "
 "mutlak hem de aralıklı olarak doğru çalışma süresi ölçümü sağlar."
 
-#: library/time.rst:911
+#: library/time.rst:924
 msgid ""
 "Clock that increments monotonically, tracking the time since an arbitrary "
 "point, unaffected by frequency or time adjustments and not incremented while "
@@ -1629,14 +1645,14 @@ msgstr ""
 "ediyor, sıklıktan ve zaman ayarlamalarından etkilenmiyor ve sistem "
 "uykudayken artmıyor."
 
-#: library/time.rst:919
+#: library/time.rst:932
 msgid ""
 "The following constant is the only parameter that can be sent to :func:"
 "`clock_settime`."
 msgstr ""
 "Aşağıdaki sabit :func:`clock_settime`'a gönderilebilecek tek parametredir."
 
-#: library/time.rst:925
+#: library/time.rst:938
 msgid ""
 "System-wide real-time clock.  Setting this clock requires appropriate "
 "privileges."
@@ -1644,11 +1660,11 @@ msgstr ""
 "Sistem çapında gerçek zamanlı saat.  Bu saati ayarlamak uygun izinleri "
 "gerektirir."
 
-#: library/time.rst:936
+#: library/time.rst:949
 msgid "Timezone Constants"
 msgstr "Saat dilimi Sabitleri"
 
-#: library/time.rst:940
+#: library/time.rst:953
 msgid ""
 "The offset of the local DST timezone, in seconds west of UTC, if one is "
 "defined. This is negative if the local DST timezone is east of UTC (as in "
@@ -1660,13 +1676,13 @@ msgstr ""
 "Avrupa'da olduğu gibi) bu negatiftir.  Bunu yalnızca ``daylight`` sıfır "
 "değilse kullanın.  Aşağıdaki nota bakın."
 
-#: library/time.rst:946
+#: library/time.rst:959
 msgid "Nonzero if a DST timezone is defined.  See note below."
 msgstr ""
 "Sıfırdan farklı, eğer bir DST saat dilimi tanımlanmışsa.  Aşağıdaki nota göz "
 "atın."
 
-#: library/time.rst:950
+#: library/time.rst:963
 msgid ""
 "The offset of the local (non-DST) timezone, in seconds west of UTC (negative "
 "in most of Western Europe, positive in the US, zero in the UK).  See note "
@@ -1676,7 +1692,7 @@ msgstr ""
 "farkı (Batı Avrupa'nın çoğunda negatif, ABD'de pozitif, Birleşik Krallık'ta "
 "sıfır).  Aşağıdaki nota bakın."
 
-#: library/time.rst:955
+#: library/time.rst:968
 msgid ""
 "A tuple of two strings: the first is the name of the local non-DST timezone, "
 "the second is the name of the local DST timezone.  If no DST timezone is "
@@ -1686,7 +1702,7 @@ msgstr ""
 "ikincisi yerel DST saat diliminin ismi.  DST saat dilimi tanımlanmamışsa, "
 "ikinci dize kullanılmamalı.  Aşağıdaki nota bakın."
 
-#: library/time.rst:961
+#: library/time.rst:974
 #, fuzzy
 msgid ""
 "For the above Timezone constants (:data:`altzone`, :data:`daylight`, :data:"
@@ -1703,19 +1719,19 @@ msgstr ""
 "almak için :func:`localtime`'den :attr:`tm_gmtoff` ve :attr:`tm_zone` "
 "sonuçlarının kullanılması önerilir."
 
-#: library/time.rst:970
+#: library/time.rst:983
 msgid "Module :mod:`datetime`"
 msgstr ":mod:`datetime` modülü"
 
-#: library/time.rst:971
+#: library/time.rst:984
 msgid "More object-oriented interface to dates and times."
 msgstr "Tarihler ve zamanlar için daha fazla nesne tabanlı arayüz."
 
-#: library/time.rst:973
+#: library/time.rst:986
 msgid "Module :mod:`locale`"
 msgstr ":mod:`locale` modülü"
 
-#: library/time.rst:974
+#: library/time.rst:987
 msgid ""
 "Internationalization services.  The locale setting affects the "
 "interpretation of many format specifiers in :func:`strftime` and :func:"
@@ -1724,11 +1740,11 @@ msgstr ""
 "Uluslararasılaştırma servisleri.  Yerel ayar, :func:`strftime` ve :func:"
 "`strptime` içindeki birçok biçim belirticisinin yorumlanmasını etkiler."
 
-#: library/time.rst:977
+#: library/time.rst:990
 msgid "Module :mod:`calendar`"
 msgstr ":mod:`calendar` modülü"
 
-#: library/time.rst:978
+#: library/time.rst:991
 msgid ""
 "General calendar-related functions.   :func:`~calendar.timegm` is the "
 "inverse of :func:`gmtime` from this module."
@@ -1736,11 +1752,11 @@ msgstr ""
 "Genel takvim ile alakalı fonksiyonlar.   :func:`~calendar.timegm` bu "
 "modüldeki :func:`gmtime`'in tersidir."
 
-#: library/time.rst:982
+#: library/time.rst:995
 msgid "Footnotes"
 msgstr "Dipnotlar"
 
-#: library/time.rst:983
+#: library/time.rst:996
 msgid ""
 "The use of ``%Z`` is now deprecated, but the ``%z`` escape that expands to "
 "the preferred hour/minute offset is not supported by all ANSI C libraries. "
@@ -1782,30 +1798,39 @@ msgstr ""
 msgid "Greenwich Mean Time"
 msgstr ""
 
-#: library/time.rst:59
+#: library/time.rst:63
 msgid "Daylight Saving Time"
 msgstr ""
 
-#: library/time.rst:336 library/time.rst:691
+#: library/time.rst:340 library/time.rst:704
 msgid "benchmarking"
 msgstr ""
 
-#: library/time.rst:691
+#: library/time.rst:704
 msgid "CPU time"
 msgstr ""
 
-#: library/time.rst:691
+#: library/time.rst:704
 msgid "processor time"
 msgstr ""
 
-#: library/time.rst:552
+#: library/time.rst:565
 msgid "% (percent)"
 msgstr ""
 
-#: library/time.rst:552
+#: library/time.rst:565
 msgid "datetime format"
 msgstr ""
 
+#~ msgid ""
+#~ "UTC is Coordinated Universal Time (formerly known as Greenwich Mean Time, "
+#~ "or GMT).  The acronym UTC is not a mistake but a compromise between "
+#~ "English and French."
+#~ msgstr ""
+#~ "UTC, Koordineli Evrensel Zaman (eski haliyle Greenwich Ortalama Zamanı, "
+#~ "ya da GMT) anlamına gelir. UTC kısaltması bir hata değil, İngilizce ve "
+#~ "Fransızca arasında bir uzlaşmadır."
+
 #~ msgid ":ref:`Availability <availability>`: Unix"
 #~ msgstr ":ref:`Availability <availability>`: Unix"
 
diff --git a/library/token.po b/library/token.po
index 096fe9525..34ef9eb3f 100644
--- a/library/token.po
+++ b/library/token.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -285,21 +285,27 @@ msgid ""
 "only produced when :func:`ast.parse` is invoked with ``type_comments=True``."
 msgstr ""
 
-#: library/token.rst:82
+#: library/token.rst:84
+msgid ""
+"A dictionary mapping the string representation of a token to its numeric "
+"code."
+msgstr ""
+
+#: library/token.rst:89
 msgid "Added :data:`AWAIT` and :data:`ASYNC` tokens."
 msgstr ""
 
-#: library/token.rst:85
+#: library/token.rst:92
 msgid "Added :data:`COMMENT`, :data:`NL` and :data:`ENCODING` tokens."
 msgstr ""
 
-#: library/token.rst:88
+#: library/token.rst:95
 msgid ""
 "Removed :data:`AWAIT` and :data:`ASYNC` tokens. \"async\" and \"await\" are "
 "now tokenized as :data:`NAME` tokens."
 msgstr ""
 
-#: library/token.rst:92
+#: library/token.rst:99
 msgid ""
 "Added :data:`TYPE_COMMENT`, :data:`TYPE_IGNORE`, :data:`COLONEQUAL`. Added :"
 "data:`AWAIT` and :data:`ASYNC` tokens back (they're needed to support "
diff --git a/library/tokenize.po b/library/tokenize.po
index 2e9fb4594..1d04a9687 100644
--- a/library/tokenize.po
+++ b/library/tokenize.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -138,40 +138,39 @@ msgstr ""
 
 #: library/tokenize.rst:94
 msgid ""
-"The reconstructed script is returned as a single string.  The result is "
-"guaranteed to tokenize back to match the input so that the conversion is "
-"lossless and round-trips are assured.  The guarantee applies only to the "
-"token type and token string as the spacing between tokens (column positions) "
-"may change."
+"The result is guaranteed to tokenize back to match the input so that the "
+"conversion is lossless and round-trips are assured.  The guarantee applies "
+"only to the token type and token string as the spacing between tokens "
+"(column positions) may change."
 msgstr ""
 
-#: library/tokenize.rst:100
+#: library/tokenize.rst:99
 msgid ""
 "It returns bytes, encoded using the :data:`~token.ENCODING` token, which is "
 "the first token sequence output by :func:`.tokenize`. If there is no "
 "encoding token in the input, it returns a str instead."
 msgstr ""
 
-#: library/tokenize.rst:105
+#: library/tokenize.rst:104
 msgid ""
 ":func:`.tokenize` needs to detect the encoding of source files it tokenizes. "
 "The function it uses to do this is available:"
 msgstr ""
 
-#: library/tokenize.rst:110
+#: library/tokenize.rst:109
 msgid ""
 "The :func:`detect_encoding` function is used to detect the encoding that "
 "should be used to decode a Python source file. It requires one argument, "
 "readline, in the same way as the :func:`.tokenize` generator."
 msgstr ""
 
-#: library/tokenize.rst:114
+#: library/tokenize.rst:113
 msgid ""
 "It will call readline a maximum of twice, and return the encoding used (as a "
 "string) and a list of any lines (not decoded from bytes) it has read in."
 msgstr ""
 
-#: library/tokenize.rst:118
+#: library/tokenize.rst:117
 msgid ""
 "It detects the encoding from the presence of a UTF-8 BOM or an encoding "
 "cookie as specified in :pep:`263`. If both a BOM and a cookie are present, "
@@ -179,90 +178,90 @@ msgid ""
 "found, ``'utf-8-sig'`` will be returned as an encoding."
 msgstr ""
 
-#: library/tokenize.rst:123
+#: library/tokenize.rst:122
 msgid ""
 "If no encoding is specified, then the default of ``'utf-8'`` will be "
 "returned."
 msgstr ""
 
-#: library/tokenize.rst:126
+#: library/tokenize.rst:125
 msgid ""
 "Use :func:`.open` to open Python source files: it uses :func:"
 "`detect_encoding` to detect the file encoding."
 msgstr ""
 
-#: library/tokenize.rst:132
+#: library/tokenize.rst:131
 msgid ""
 "Open a file in read only mode using the encoding detected by :func:"
 "`detect_encoding`."
 msgstr ""
 
-#: library/tokenize.rst:139
+#: library/tokenize.rst:138
 msgid ""
 "Raised when either a docstring or expression that may be split over several "
 "lines is not completed anywhere in the file, for example::"
 msgstr ""
 
-#: library/tokenize.rst:142
+#: library/tokenize.rst:141
 msgid ""
 "\"\"\"Beginning of\n"
 "docstring"
 msgstr ""
 
-#: library/tokenize.rst:145
+#: library/tokenize.rst:144
 msgid "or::"
 msgstr ""
 
-#: library/tokenize.rst:147
+#: library/tokenize.rst:146
 msgid ""
 "[1,\n"
 " 2,\n"
 " 3"
 msgstr ""
 
-#: library/tokenize.rst:154
+#: library/tokenize.rst:153
 msgid "Command-Line Usage"
 msgstr ""
 
-#: library/tokenize.rst:158
+#: library/tokenize.rst:157
 msgid ""
 "The :mod:`tokenize` module can be executed as a script from the command "
 "line. It is as simple as:"
 msgstr ""
 
-#: library/tokenize.rst:161
+#: library/tokenize.rst:160
 msgid "python -m tokenize [-e] [filename.py]"
 msgstr ""
 
-#: library/tokenize.rst:165
+#: library/tokenize.rst:164
 msgid "The following options are accepted:"
 msgstr ""
 
-#: library/tokenize.rst:171
+#: library/tokenize.rst:170
 msgid "show this help message and exit"
 msgstr ""
 
-#: library/tokenize.rst:175
+#: library/tokenize.rst:174
 msgid "display token names using the exact type"
 msgstr ""
 
-#: library/tokenize.rst:177
+#: library/tokenize.rst:176
 msgid ""
 "If :file:`filename.py` is specified its contents are tokenized to stdout. "
 "Otherwise, tokenization is performed on stdin."
 msgstr ""
 
-#: library/tokenize.rst:181
+#: library/tokenize.rst:180
 msgid "Examples"
 msgstr ""
 
-#: library/tokenize.rst:183
+#: library/tokenize.rst:182
 msgid ""
 "Example of a script rewriter that transforms float literals into Decimal "
 "objects::"
 msgstr ""
 
-#: library/tokenize.rst:186
+#: library/tokenize.rst:185
 msgid ""
 "from tokenize import tokenize, untokenize, NUMBER, STRING, NAME, OP\n"
 "from io import BytesIO\n"
@@ -305,11 +304,11 @@ msgid ""
 "    return untokenize(result).decode('utf-8')"
 msgstr ""
 
-#: library/tokenize.rst:225
+#: library/tokenize.rst:224
 msgid "Example of tokenizing from the command line.  The script::"
 msgstr ""
 
-#: library/tokenize.rst:227
+#: library/tokenize.rst:226
 msgid ""
 "def say_hello():\n"
 "    print(\"Hello, World!\")\n"
@@ -317,7 +316,7 @@ msgid ""
 "say_hello()"
 msgstr ""
 
-#: library/tokenize.rst:232
+#: library/tokenize.rst:231
 msgid ""
 "will be tokenized to the following output where the first column is the "
 "range of the line/column coordinates where the token is found, the second "
@@ -325,7 +324,7 @@ msgid ""
 "token (if any)"
 msgstr ""
 
-#: library/tokenize.rst:236
+#: library/tokenize.rst:235
 msgid ""
 "$ python -m tokenize hello.py\n"
 "0,0-0,0:            ENCODING       'utf-8'\n"
@@ -350,12 +349,12 @@ msgid ""
 "5,0-5,0:            ENDMARKER      ''"
 msgstr ""
 
-#: library/tokenize.rst:260
+#: library/tokenize.rst:259
 msgid ""
 "The exact token type names can be displayed using the :option:`-e` option:"
 msgstr ""
 
-#: library/tokenize.rst:262
+#: library/tokenize.rst:261
 msgid ""
 "$ python -m tokenize -e hello.py\n"
 "0,0-0,0:            ENCODING       'utf-8'\n"
@@ -380,13 +379,13 @@ msgid ""
 "5,0-5,0:            ENDMARKER      ''"
 msgstr ""
 
-#: library/tokenize.rst:286
+#: library/tokenize.rst:285
 msgid ""
 "Example of tokenizing a file programmatically, reading unicode strings "
 "instead of bytes with :func:`generate_tokens`::"
 msgstr ""
 
-#: library/tokenize.rst:289
+#: library/tokenize.rst:288
 msgid ""
 "import tokenize\n"
 "\n"
@@ -396,11 +395,11 @@ msgid ""
 "        print(token)"
 msgstr ""
 
-#: library/tokenize.rst:296
+#: library/tokenize.rst:295
 msgid "Or reading bytes directly with :func:`.tokenize`::"
 msgstr ""
 
-#: library/tokenize.rst:298
+#: library/tokenize.rst:297
 msgid ""
 "import tokenize\n"
 "\n"
diff --git a/library/traceback.po b/library/traceback.po
index c580d326e..b14adf261 100644
--- a/library/traceback.po
+++ b/library/traceback.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -148,26 +148,26 @@ msgid ""
 "when printing an unhandled exception."
 msgstr ""
 
-#: library/traceback.rst:201
+#: library/traceback.rst:208
 msgid "The *etype* argument is ignored and inferred from the type of *value*."
 msgstr ""
 
-#: library/traceback.rst:184
+#: library/traceback.rst:191
 msgid ""
 "The *etype* parameter has been renamed to *exc* and is now positional-only."
 msgstr ""
 
 #: library/traceback.rst:114
 msgid ""
-"This is a shorthand for ``print_exception(sys.exception(), limit, file, "
-"chain)``."
+"This is a shorthand for ``print_exception(sys.exception(), limit=limit, "
+"file=file, chain=chain)``."
 msgstr ""
 
 #: library/traceback.rst:120
 msgid ""
-"This is a shorthand for ``print_exception(sys.last_exc, limit, file, "
-"chain)``.  In general it will work only after an exception has reached an "
-"interactive prompt (see :data:`sys.last_exc`)."
+"This is a shorthand for ``print_exception(sys.last_exc, limit=limit, "
+"file=file, chain=chain)``.  In general it will work only after an exception "
+"has reached an interactive prompt (see :data:`sys.last_exc`)."
 msgstr ""
 
 #: library/traceback.rst:127
@@ -203,6 +203,13 @@ msgstr ""
 
 #: library/traceback.rst:162
 msgid ""
+"Print the list of tuples as returned by :func:`extract_tb` or :func:"
+"`extract_stack` as a formatted stack trace to the given file. If *file* is "
+"``None``, the output is written to :data:`sys.stderr`."
+msgstr ""
+
+#: library/traceback.rst:169
+msgid ""
 "Given a list of tuples or :class:`FrameSummary` objects as returned by :func:"
 "`extract_tb` or :func:`extract_stack`, return a list of strings ready for "
 "printing.  Each string in the resulting list corresponds to the item with "
@@ -211,7 +218,7 @@ msgid ""
 "text line is not ``None``."
 msgstr ""
 
-#: library/traceback.rst:172
+#: library/traceback.rst:179
 msgid ""
 "Format the exception part of a traceback using an exception value such as "
 "given by :data:`sys.last_value`.  The return value is a list of strings, "
@@ -222,20 +229,20 @@ msgid ""
 "contains the exception's :attr:`notes <BaseException.__notes__>`."
 msgstr ""
 
-#: library/traceback.rst:180
+#: library/traceback.rst:187
 msgid ""
 "Since Python 3.10, instead of passing *value*, an exception object can be "
 "passed as the first argument.  If *value* is provided, the first argument is "
 "ignored in order to provide backwards compatibility."
 msgstr ""
 
-#: library/traceback.rst:188
+#: library/traceback.rst:195
 msgid ""
 "The returned list now includes any :attr:`notes <BaseException.__notes__>` "
 "attached to the exception."
 msgstr ""
 
-#: library/traceback.rst:195
+#: library/traceback.rst:202
 msgid ""
 "Format a stack trace and the exception information.  The arguments  have the "
 "same meaning as the corresponding arguments to :func:`print_exception`.  The "
@@ -244,69 +251,69 @@ msgid ""
 "printed, exactly the same text is printed as does :func:`print_exception`."
 msgstr ""
 
-#: library/traceback.rst:204
+#: library/traceback.rst:211
 msgid ""
 "This function's behavior and signature were modified to match :func:"
 "`print_exception`."
 msgstr ""
 
-#: library/traceback.rst:211
+#: library/traceback.rst:218
 msgid ""
 "This is like ``print_exc(limit)`` but returns a string instead of printing "
 "to a file."
 msgstr ""
 
-#: library/traceback.rst:217
+#: library/traceback.rst:224
 msgid "A shorthand for ``format_list(extract_tb(tb, limit))``."
 msgstr ""
 
-#: library/traceback.rst:222
+#: library/traceback.rst:229
 msgid "A shorthand for ``format_list(extract_stack(f, limit))``."
 msgstr ""
 
-#: library/traceback.rst:226
+#: library/traceback.rst:233
 msgid ""
 "Clears the local variables of all the stack frames in a :ref:`traceback "
 "<traceback-objects>` *tb* by calling the :meth:`~frame.clear` method of "
 "each :ref:`frame object <frame-objects>`."
 msgstr ""
 
-#: library/traceback.rst:235
+#: library/traceback.rst:242
 msgid ""
 "Walk a stack following :attr:`f.f_back <frame.f_back>` from the given frame, "
 "yielding the frame and line number for each frame. If *f* is ``None``, the "
 "current stack is used. This helper is used with :meth:`StackSummary.extract`."
 msgstr ""
 
-#: library/traceback.rst:244
+#: library/traceback.rst:251
 msgid ""
 "Walk a traceback following :attr:`~traceback.tb_next` yielding the frame and "
 "line number for each frame. This helper is used with :meth:`StackSummary."
 "extract`."
 msgstr ""
 
-#: library/traceback.rst:252
+#: library/traceback.rst:259
 msgid ":class:`!TracebackException` Objects"
 msgstr ""
 
-#: library/traceback.rst:256
+#: library/traceback.rst:263
 msgid ""
 ":class:`!TracebackException` objects are created from actual exceptions to "
 "capture data for later printing.  They offer a more lightweight method of "
 "storing this information by avoiding holding references to :ref:"
-"`traceback<traceback-objects>` and :ref:`frame<frame-objects>` objects In "
+"`traceback<traceback-objects>` and :ref:`frame<frame-objects>` objects. In "
 "addition, they expose more options to configure the output compared to the "
 "module-level functions described above."
 msgstr ""
 
-#: library/traceback.rst:265
+#: library/traceback.rst:272
 msgid ""
 "Capture an exception for later rendering. The meaning of *limit*, "
 "*lookup_lines* and *capture_locals* are as for the :class:`StackSummary` "
 "class."
 msgstr ""
 
-#: library/traceback.rst:269
+#: library/traceback.rst:276
 msgid ""
 "If *compact* is true, only data that is required by :class:`!"
 "TracebackException`'s :meth:`format` method is saved in the class "
@@ -314,12 +321,12 @@ msgid ""
 "if :attr:`__cause__` is ``None`` and :attr:`__suppress_context__` is false."
 msgstr ""
 
-#: library/traceback.rst:368
+#: library/traceback.rst:375
 msgid ""
 "Note that when locals are captured, they are also shown in the traceback."
 msgstr ""
 
-#: library/traceback.rst:277
+#: library/traceback.rst:284
 msgid ""
 "*max_group_width* and *max_group_depth* control the formatting of exception "
 "groups (see :exc:`BaseExceptionGroup`). The depth refers to the nesting "
@@ -328,124 +335,124 @@ msgid ""
 "limit is exceeded."
 msgstr ""
 
-#: library/traceback.rst:283
+#: library/traceback.rst:290
 msgid "Added the *compact* parameter."
 msgstr ""
 
-#: library/traceback.rst:286
+#: library/traceback.rst:293
 msgid "Added the *max_group_width* and *max_group_depth* parameters."
 msgstr ""
 
-#: library/traceback.rst:291
+#: library/traceback.rst:298
 msgid ""
 "A :class:`!TracebackException` of the original :attr:`~BaseException."
 "__cause__`."
 msgstr ""
 
-#: library/traceback.rst:296
+#: library/traceback.rst:303
 msgid ""
 "A :class:`!TracebackException` of the original :attr:`~BaseException."
 "__context__`."
 msgstr ""
 
-#: library/traceback.rst:301
+#: library/traceback.rst:308
 msgid ""
 "If ``self`` represents an :exc:`ExceptionGroup`, this field holds a list of :"
 "class:`!TracebackException` instances representing the nested exceptions. "
 "Otherwise it is ``None``."
 msgstr ""
 
-#: library/traceback.rst:309
+#: library/traceback.rst:316
 msgid ""
 "The :attr:`~BaseException.__suppress_context__` value from the original "
 "exception."
 msgstr ""
 
-#: library/traceback.rst:314
+#: library/traceback.rst:321
 msgid ""
 "The :attr:`~BaseException.__notes__` value from the original exception, or "
 "``None`` if the exception does not have any notes. If it is not ``None`` is "
 "it formatted in the traceback after the exception string."
 msgstr ""
 
-#: library/traceback.rst:323
+#: library/traceback.rst:330
 msgid "A :class:`StackSummary` representing the traceback."
 msgstr ""
 
-#: library/traceback.rst:327
+#: library/traceback.rst:334
 msgid "The class of the original traceback."
 msgstr ""
 
-#: library/traceback.rst:331
+#: library/traceback.rst:338
 msgid "For syntax errors - the file name where the error occurred."
 msgstr ""
 
-#: library/traceback.rst:335
+#: library/traceback.rst:342
 msgid "For syntax errors - the line number where the error occurred."
 msgstr ""
 
-#: library/traceback.rst:339
+#: library/traceback.rst:346
 msgid ""
 "For syntax errors - the end line number where the error occurred. Can be "
 "``None`` if not present."
 msgstr ""
 
-#: library/traceback.rst:346
+#: library/traceback.rst:353
 msgid "For syntax errors - the text where the error occurred."
 msgstr ""
 
-#: library/traceback.rst:350
+#: library/traceback.rst:357
 msgid "For syntax errors - the offset into the text where the error occurred."
 msgstr ""
 
-#: library/traceback.rst:354
+#: library/traceback.rst:361
 msgid ""
 "For syntax errors - the end offset into the text where the error occurred. "
 "Can be ``None`` if not present."
 msgstr ""
 
-#: library/traceback.rst:361
+#: library/traceback.rst:368
 msgid "For syntax errors - the compiler error message."
 msgstr ""
 
-#: library/traceback.rst:365
+#: library/traceback.rst:372
 msgid ""
 "Capture an exception for later rendering. *limit*, *lookup_lines* and "
 "*capture_locals* are as for the :class:`StackSummary` class."
 msgstr ""
 
-#: library/traceback.rst:372
+#: library/traceback.rst:379
 msgid ""
 "Print to *file* (default ``sys.stderr``) the exception information returned "
 "by :meth:`format`."
 msgstr ""
 
-#: library/traceback.rst:379
+#: library/traceback.rst:386
 msgid "Format the exception."
 msgstr ""
 
-#: library/traceback.rst:381
+#: library/traceback.rst:388
 msgid ""
 "If *chain* is not ``True``, :attr:`__cause__` and :attr:`__context__` will "
 "not be formatted."
 msgstr ""
 
-#: library/traceback.rst:384
+#: library/traceback.rst:391
 msgid ""
 "The return value is a generator of strings, each ending in a newline and "
 "some containing internal newlines. :func:`~traceback.print_exception` is a "
 "wrapper around this method which just prints the lines to a file."
 msgstr ""
 
-#: library/traceback.rst:390
+#: library/traceback.rst:397
 msgid "Format the exception part of the traceback."
 msgstr ""
 
-#: library/traceback.rst:392
+#: library/traceback.rst:399
 msgid "The return value is a generator of strings, each ending in a newline."
 msgstr ""
 
-#: library/traceback.rst:394
+#: library/traceback.rst:401
 msgid ""
 "The generator emits the exception's message followed by its notes (if it has "
 "any). The exception message is normally a single string; however, for :exc:"
@@ -453,28 +460,28 @@ msgid ""
 "display detailed information about where the syntax error occurred."
 msgstr ""
 
-#: library/traceback.rst:400
+#: library/traceback.rst:407
 msgid ""
 "The exception's :attr:`notes <BaseException.__notes__>` are now included in "
 "the output."
 msgstr ""
 
-#: library/traceback.rst:407
+#: library/traceback.rst:414
 msgid ":class:`!StackSummary` Objects"
 msgstr ""
 
-#: library/traceback.rst:411
+#: library/traceback.rst:418
 msgid ""
 ":class:`!StackSummary` objects represent a call stack ready for formatting."
 msgstr ""
 
-#: library/traceback.rst:417
+#: library/traceback.rst:424
 msgid ""
 "Construct a :class:`!StackSummary` object from a frame generator (such as is "
 "returned by :func:`~traceback.walk_stack` or :func:`~traceback.walk_tb`)."
 msgstr ""
 
-#: library/traceback.rst:421
+#: library/traceback.rst:428
 msgid ""
 "If *limit* is supplied, only this many frames are taken from *frame_gen*. If "
 "*lookup_lines* is ``False``, the returned :class:`FrameSummary` objects will "
@@ -484,20 +491,20 @@ msgid ""
 "class:`!FrameSummary` are captured as object representations."
 msgstr ""
 
-#: library/traceback.rst:429
+#: library/traceback.rst:436
 msgid ""
 "Exceptions raised from :func:`repr` on a local variable (when "
 "*capture_locals* is ``True``) are no longer propagated to the caller."
 msgstr ""
 
-#: library/traceback.rst:435
+#: library/traceback.rst:442
 msgid ""
 "Construct a :class:`!StackSummary` object from a supplied list of :class:"
 "`FrameSummary` objects or old-style list of tuples.  Each tuple should be a "
 "4-tuple with *filename*, *lineno*, *name*, *line* as the elements."
 msgstr ""
 
-#: library/traceback.rst:442
+#: library/traceback.rst:449
 msgid ""
 "Returns a list of strings ready for printing.  Each string in the resulting "
 "list corresponds to a single :ref:`frame <frame-objects>` from the stack. "
@@ -505,18 +512,18 @@ msgid ""
 "well, for those items with source text lines."
 msgstr ""
 
-#: library/traceback.rst:448
+#: library/traceback.rst:455
 msgid ""
 "For long sequences of the same frame and line, the first few repetitions are "
 "shown, followed by a summary line stating the exact number of further "
 "repetitions."
 msgstr ""
 
-#: library/traceback.rst:452
+#: library/traceback.rst:459
 msgid "Long sequences of repeated frames are now abbreviated."
 msgstr ""
 
-#: library/traceback.rst:457
+#: library/traceback.rst:464
 msgid ""
 "Returns a string for printing one of the :ref:`frames <frame-objects>` "
 "involved in the stack. This method is called for each :class:`FrameSummary` "
@@ -524,17 +531,17 @@ msgid ""
 "the frame is omitted from the output."
 msgstr ""
 
-#: library/traceback.rst:467
+#: library/traceback.rst:474
 msgid ":class:`!FrameSummary` Objects"
 msgstr ""
 
-#: library/traceback.rst:471
+#: library/traceback.rst:478
 msgid ""
 "A :class:`!FrameSummary` object represents a single :ref:`frame <frame-"
 "objects>` in a :ref:`traceback <traceback-objects>`."
 msgstr ""
 
-#: library/traceback.rst:476
+#: library/traceback.rst:485
 msgid ""
 "Represents a single :ref:`frame <frame-objects>` in the :ref:`traceback "
 "<traceback-objects>` or stack that is being formatted or printed. It may "
@@ -548,38 +555,56 @@ msgid ""
 "display."
 msgstr ""
 
-#: library/traceback.rst:487
+#: library/traceback.rst:496
 msgid ":class:`!FrameSummary` instances have the following attributes:"
 msgstr ""
 
-#: library/traceback.rst:491
+#: library/traceback.rst:500
 msgid ""
 "The filename of the source code for this frame. Equivalent to accessing :"
 "attr:`f.f_code.co_filename <codeobject.co_filename>` on a :ref:`frame object "
 "<frame-objects>` *f*."
 msgstr ""
 
-#: library/traceback.rst:497
+#: library/traceback.rst:506
 msgid "The line number of the source code for this frame."
 msgstr ""
 
-#: library/traceback.rst:501
+#: library/traceback.rst:510
 msgid ""
 "Equivalent to accessing :attr:`f.f_code.co_name <codeobject.co_name>` on a :"
 "ref:`frame object <frame-objects>` *f*."
 msgstr ""
 
-#: library/traceback.rst:506
+#: library/traceback.rst:515
 msgid ""
 "A string representing the source code for this frame, with leading and "
 "trailing whitespace stripped. If the source is not available, it is ``None``."
 msgstr ""
 
-#: library/traceback.rst:513
+#: library/traceback.rst:521
+msgid ""
+"The last line number of the source code for this frame. By default, it is "
+"set to ``None`` and indexation starts from 1."
+msgstr ""
+
+#: library/traceback.rst:526
+msgid ""
+"The column number of the source code for this frame. By default, it is "
+"``None`` and indexation starts from 0."
+msgstr ""
+
+#: library/traceback.rst:531
+msgid ""
+"The last column number of the source code for this frame. By default, it is "
+"``None`` and indexation starts from 0."
+msgstr ""
+
+#: library/traceback.rst:538
 msgid "Examples of Using the Module-Level Functions"
 msgstr ""
 
-#: library/traceback.rst:515
+#: library/traceback.rst:540
 msgid ""
 "This simple example implements a basic read-eval-print loop, similar to (but "
 "less useful than) the standard Python interactive interpreter loop.  For a "
@@ -587,7 +612,7 @@ msgid ""
 "`code` module. ::"
 msgstr ""
 
-#: library/traceback.rst:520
+#: library/traceback.rst:545
 msgid ""
 "import sys, traceback\n"
 "\n"
@@ -606,13 +631,13 @@ msgid ""
 "    run_user_code(envdir)"
 msgstr ""
 
-#: library/traceback.rst:537
+#: library/traceback.rst:562
 msgid ""
 "The following example demonstrates the different ways to print and format "
 "the exception and traceback:"
 msgstr ""
 
-#: library/traceback.rst:540
+#: library/traceback.rst:565
 msgid ""
 "import sys, traceback\n"
 "\n"
@@ -644,11 +669,11 @@ msgid ""
 "    print(\"*** tb_lineno:\", exc.__traceback__.tb_lineno)"
 msgstr ""
 
-#: library/traceback.rst:571
+#: library/traceback.rst:596
 msgid "The output for the example would look similar to this:"
 msgstr ""
 
-#: library/traceback.rst:573
+#: library/traceback.rst:598
 msgid ""
 "*** print_tb:\n"
 "  File \"<doctest...>\", line 10, in <module>\n"
@@ -693,13 +718,13 @@ msgid ""
 "*** tb_lineno: 10"
 msgstr ""
 
-#: library/traceback.rst:613
+#: library/traceback.rst:638
 msgid ""
 "The following example shows the different ways to print and format the "
 "stack::"
 msgstr ""
 
-#: library/traceback.rst:615
+#: library/traceback.rst:640
 msgid ""
 ">>> import traceback\n"
 ">>> def another_function():\n"
@@ -727,11 +752,11 @@ msgid ""
 "format_stack()))\\n']"
 msgstr ""
 
-#: library/traceback.rst:639
+#: library/traceback.rst:664
 msgid "This last example demonstrates the final few formatting functions:"
 msgstr ""
 
-#: library/traceback.rst:641
+#: library/traceback.rst:666
 msgid ""
 ">>> import traceback\n"
 ">>> traceback.format_list([('spam.py', 3, '<module>', 'spam.eggs()'),\n"
@@ -743,15 +768,15 @@ msgid ""
 "['IndexError: tuple index out of range\\n']"
 msgstr ""
 
-#: library/traceback.rst:655
+#: library/traceback.rst:680
 msgid "Examples of Using :class:`TracebackException`"
 msgstr ""
 
-#: library/traceback.rst:657
+#: library/traceback.rst:682
 msgid "With the helper class, we have more options::"
 msgstr ""
 
-#: library/traceback.rst:659
+#: library/traceback.rst:684
 msgid ""
 ">>> import sys\n"
 ">>> from traceback import TracebackException\n"
diff --git a/library/turtle.po b/library/turtle.po
index 47d623b67..0f85a4cde 100644
--- a/library/turtle.po
+++ b/library/turtle.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -1451,8 +1451,8 @@ msgid ""
 ">>> turtle.heading()\n"
 "90.0\n"
 "\n"
-"Change angle measurement unit to grad (also known as gon,\n"
-"grade, or gradian and equals 1/100-th of the right angle.)\n"
+">>> # Change angle measurement unit to grad (also known as gon,\n"
+">>> # grade, or gradian and equals 1/100-th of the right angle.)\n"
 ">>> turtle.degrees(400.0)\n"
 ">>> turtle.heading()\n"
 "100.0\n"
diff --git a/library/typing.po b/library/typing.po
index 96237b95c..354f07b6c 100644
--- a/library/typing.po
+++ b/library/typing.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -91,8 +91,7 @@ msgid ""
 msgstr ""
 
 #: library/typing.rst:56
-msgid ""
-"`\"Static Typing with Python\" <https://typing.readthedocs.io/en/latest/>`_"
+msgid "`\"Static Typing with Python\" <https://typing.python.org/en/latest/>`_"
 msgstr ""
 
 #: library/typing.rst:57
@@ -109,7 +108,7 @@ msgstr ""
 msgid ""
 "The canonical, up-to-date specification of the Python type system can be "
 "found at `\"Specification for the Python type system\" <https://typing."
-"readthedocs.io/en/latest/spec/index.html>`_."
+"python.org/en/latest/spec/index.html>`_."
 msgstr ""
 
 #: library/typing.rst:72
@@ -326,7 +325,7 @@ msgid ""
 "of type :class:`int` and returns a :class:`str`."
 msgstr ""
 
-#: library/typing.rst:2916 library/typing.rst:3064
+#: library/typing.rst:2907 library/typing.rst:3055
 msgid "For example:"
 msgstr ""
 
@@ -415,7 +414,7 @@ msgid ""
 "ReturnType]`` respectively."
 msgstr ""
 
-#: library/typing.rst:3543
+#: library/typing.rst:3534
 msgid ""
 "``Callable`` now supports :class:`ParamSpec` and :data:`Concatenate`. See :"
 "pep:`612` for more details."
@@ -1244,8 +1243,8 @@ msgid ""
 "or :class:`bytes` arguments but cannot allow the two to mix."
 msgstr ""
 
-#: library/typing.rst:961 library/typing.rst:1184 library/typing.rst:1467
-#: library/typing.rst:2856
+#: library/typing.rst:961 library/typing.rst:1184 library/typing.rst:1453
+#: library/typing.rst:2847
 msgid "For example::"
 msgstr ""
 
@@ -1291,7 +1290,7 @@ msgid ""
 "``LiteralString``."
 msgstr ""
 
-#: library/typing.rst:1982
+#: library/typing.rst:1968
 msgid "Example:"
 msgstr ""
 
@@ -1681,7 +1680,7 @@ msgid ""
 "sum_threadsafe([1.1, 2.2, 3.3])"
 msgstr ""
 
-#: library/typing.rst:1950
+#: library/typing.rst:1936
 msgid ""
 ":pep:`612` -- Parameter Specification Variables (the PEP which introduced "
 "``ParamSpec`` and ``Concatenate``)"
@@ -1691,7 +1690,7 @@ msgstr ""
 msgid ":class:`ParamSpec`"
 msgstr ""
 
-#: library/typing.rst:1953
+#: library/typing.rst:1939
 msgid ":ref:`annotating-callables`"
 msgstr ""
 
@@ -1792,7 +1791,7 @@ msgid ""
 "    TIMEOUT = 1  # Error reported by type checker"
 msgstr ""
 
-#: library/typing.rst:2872
+#: library/typing.rst:2863
 msgid ""
 "There is no runtime checking of these properties. See :pep:`591` for more "
 "details."
@@ -1875,26 +1874,22 @@ msgid ""
 msgstr ""
 
 #: library/typing.rst:1318
-msgid "Details of the syntax:"
-msgstr ""
-
-#: library/typing.rst:1320
-msgid "The first argument to ``Annotated`` must be a valid type"
-msgstr ""
-
-#: library/typing.rst:1322
 msgid ""
-"Multiple metadata elements can be supplied (``Annotated`` supports variadic "
-"arguments)::"
+"The first argument to ``Annotated`` must be a valid type. Multiple metadata "
+"elements can be supplied as ``Annotated`` supports variadic arguments. The "
+"order of the metadata elements is preserved and matters for equality checks::"
 msgstr ""
 
-#: library/typing.rst:1325
+#: library/typing.rst:1322
 msgid ""
 "@dataclass\n"
 "class ctype:\n"
-"    kind: str\n"
+"     kind: str\n"
+"\n"
+"a1 = Annotated[int, ValueRange(3, 10), ctype(\"char\")]\n"
+"a2 = Annotated[int, ctype(\"char\"), ValueRange(3, 10)]\n"
 "\n"
-"Annotated[int, ValueRange(3, 10), ctype(\"char\")]"
+"assert a1 != a2  # Order matters"
 msgstr ""
 
 #: library/typing.rst:1331
@@ -1906,30 +1901,11 @@ msgstr ""
 
 #: library/typing.rst:1335
 msgid ""
-"``Annotated`` must be subscripted with at least two arguments "
-"( ``Annotated[int]`` is not valid)"
-msgstr ""
-
-#: library/typing.rst:1338
-msgid ""
-"The order of the metadata elements is preserved and matters for equality "
-"checks::"
-msgstr ""
-
-#: library/typing.rst:1341
-msgid ""
-"assert Annotated[int, ValueRange(3, 10), ctype(\"char\")] != Annotated[\n"
-"    int, ctype(\"char\"), ValueRange(3, 10)\n"
-"]"
-msgstr ""
-
-#: library/typing.rst:1345
-msgid ""
 "Nested ``Annotated`` types are flattened. The order of the metadata elements "
 "starts with the innermost annotation::"
 msgstr ""
 
-#: library/typing.rst:1348
+#: library/typing.rst:1338
 msgid ""
 "assert Annotated[Annotated[int, ValueRange(3, 10)], ctype(\"char\")] == "
 "Annotated[\n"
@@ -1937,22 +1913,22 @@ msgid ""
 "]"
 msgstr ""
 
-#: library/typing.rst:1352
+#: library/typing.rst:1342
 msgid "Duplicated metadata elements are not removed::"
 msgstr ""
 
-#: library/typing.rst:1354
+#: library/typing.rst:1344
 msgid ""
 "assert Annotated[int, ValueRange(3, 10)] != Annotated[\n"
 "    int, ValueRange(3, 10), ValueRange(3, 10)\n"
 "]"
 msgstr ""
 
-#: library/typing.rst:1358
+#: library/typing.rst:1348
 msgid "``Annotated`` can be used with nested and generic aliases:"
 msgstr ""
 
-#: library/typing.rst:1360
+#: library/typing.rst:1350
 msgid ""
 "@dataclass\n"
 "class MaxLen:\n"
@@ -1966,35 +1942,29 @@ msgid ""
 "type V = Vec[int]"
 msgstr ""
 
-#: library/typing.rst:1372
+#: library/typing.rst:1362
 msgid "``Annotated`` cannot be used with an unpacked :class:`TypeVarTuple`::"
 msgstr ""
 
-#: library/typing.rst:1374
-msgid "type Variadic[*Ts] = Annotated[*Ts, Ann1]  # NOT valid"
-msgstr ""
-
-#: library/typing.rst:1376
-msgid "This would be equivalent to::"
-msgstr ""
-
-#: library/typing.rst:1378
-msgid "Annotated[T1, T2, T3, ..., Ann1]"
+#: library/typing.rst:1364
+msgid ""
+"type Variadic[*Ts] = Annotated[*Ts, Ann1] = Annotated[T1, T2, T3, ..., "
+"Ann1]  # NOT valid"
 msgstr ""
 
-#: library/typing.rst:1380
+#: library/typing.rst:1366
 msgid ""
-"where ``T1``, ``T2``, etc. are :class:`TypeVars <TypeVar>`. This would be "
-"invalid: only one type should be passed to Annotated."
+"where ``T1``, ``T2``, ... are :class:`TypeVars <TypeVar>`. This is invalid "
+"as only one type should be passed to Annotated."
 msgstr ""
 
-#: library/typing.rst:1383
+#: library/typing.rst:1369
 msgid ""
 "By default, :func:`get_type_hints` strips the metadata from annotations. "
 "Pass ``include_extras=True`` to have the metadata preserved:"
 msgstr ""
 
-#: library/typing.rst:1386
+#: library/typing.rst:1372
 msgid ""
 ">>> from typing import Annotated, get_type_hints\n"
 ">>> def func(x: Annotated[int, \"metadata\"]) -> None: pass\n"
@@ -2005,13 +1975,13 @@ msgid ""
 "{'x': typing.Annotated[int, 'metadata'], 'return': <class 'NoneType'>}"
 msgstr ""
 
-#: library/typing.rst:1396
+#: library/typing.rst:1382
 msgid ""
 "At runtime, the metadata associated with an ``Annotated`` type can be "
 "retrieved via the :attr:`!__metadata__` attribute:"
 msgstr ""
 
-#: library/typing.rst:1399
+#: library/typing.rst:1385
 msgid ""
 ">>> from typing import Annotated\n"
 ">>> X = Annotated[int, \"very\", \"important\", \"metadata\"]\n"
@@ -2021,13 +1991,13 @@ msgid ""
 "('very', 'important', 'metadata')"
 msgstr ""
 
-#: library/typing.rst:1408
+#: library/typing.rst:1394
 msgid ""
-"At runtime, if you want to retrieve the original type wrapped by "
-"``Annotated``, use the :attr:`!__origin__` attribute:"
+"If you want to retrieve the original type wrapped by ``Annotated``, use the :"
+"attr:`!__origin__` attribute:"
 msgstr ""
 
-#: library/typing.rst:1411
+#: library/typing.rst:1397
 msgid ""
 ">>> from typing import Annotated, get_origin\n"
 ">>> Password = Annotated[str, \"secret\"]\n"
@@ -2035,36 +2005,36 @@ msgid ""
 "<class 'str'>"
 msgstr ""
 
-#: library/typing.rst:1418
+#: library/typing.rst:1404
 msgid "Note that using :func:`get_origin` will return ``Annotated`` itself:"
 msgstr ""
 
-#: library/typing.rst:1420
+#: library/typing.rst:1406
 msgid ""
 ">>> get_origin(Password)\n"
 "<class 'typing.Annotated'>"
 msgstr ""
 
-#: library/typing.rst:1427
+#: library/typing.rst:1413
 msgid ":pep:`593` - Flexible function and variable annotations"
 msgstr ""
 
-#: library/typing.rst:1428
+#: library/typing.rst:1414
 msgid "The PEP introducing ``Annotated`` to the standard library."
 msgstr ""
 
-#: library/typing.rst:1435
+#: library/typing.rst:1421
 msgid "Special typing construct for marking user-defined type guard functions."
 msgstr ""
 
-#: library/typing.rst:1437
+#: library/typing.rst:1423
 msgid ""
 "``TypeGuard`` can be used to annotate the return type of a user-defined type "
 "guard function.  ``TypeGuard`` only accepts a single type argument. At "
 "runtime, functions marked this way should return a boolean."
 msgstr ""
 
-#: library/typing.rst:1441
+#: library/typing.rst:1427
 msgid ""
 "``TypeGuard`` aims to benefit *type narrowing* -- a technique used by static "
 "type checkers to determine a more precise type of an expression within a "
@@ -2073,7 +2043,7 @@ msgid ""
 "conditional expression here is sometimes referred to as a \"type guard\"::"
 msgstr ""
 
-#: library/typing.rst:1447
+#: library/typing.rst:1433
 msgid ""
 "def is_str(val: str | float):\n"
 "    # \"isinstance\" type guard\n"
@@ -2085,30 +2055,30 @@ msgid ""
 "        ..."
 msgstr ""
 
-#: library/typing.rst:1456
+#: library/typing.rst:1442
 msgid ""
 "Sometimes it would be convenient to use a user-defined boolean function as a "
 "type guard.  Such a function should use ``TypeGuard[...]`` as its return "
 "type to alert static type checkers to this intention."
 msgstr ""
 
-#: library/typing.rst:1460
+#: library/typing.rst:1446
 msgid ""
 "Using  ``-> TypeGuard`` tells the static type checker that for a given "
 "function:"
 msgstr ""
 
-#: library/typing.rst:1463
+#: library/typing.rst:1449
 msgid "The return value is a boolean."
 msgstr ""
 
-#: library/typing.rst:1464
+#: library/typing.rst:1450
 msgid ""
 "If the return value is ``True``, the type of its argument is the type inside "
 "``TypeGuard``."
 msgstr ""
 
-#: library/typing.rst:1469
+#: library/typing.rst:1455
 msgid ""
 "def is_str_list(val: list[object]) -> TypeGuard[list[str]]:\n"
 "    '''Determines whether all objects in the list are strings'''\n"
@@ -2123,21 +2093,21 @@ msgid ""
 "        print(\"Not a list of strings!\")"
 msgstr ""
 
-#: library/typing.rst:1481
+#: library/typing.rst:1467
 msgid ""
 "If ``is_str_list`` is a class or instance method, then the type in "
 "``TypeGuard`` maps to the type of the second parameter (after ``cls`` or "
 "``self``)."
 msgstr ""
 
-#: library/typing.rst:1485
+#: library/typing.rst:1471
 msgid ""
 "In short, the form ``def foo(arg: TypeA) -> TypeGuard[TypeB]: ...``, means "
 "that if ``foo(arg)`` returns ``True``, then ``arg`` narrows from ``TypeA`` "
 "to ``TypeB``."
 msgstr ""
 
-#: library/typing.rst:1491
+#: library/typing.rst:1477
 msgid ""
 "``TypeB`` need not be a narrower form of ``TypeA`` -- it can even be a wider "
 "form. The main reason is to allow for things like narrowing ``list[object]`` "
@@ -2146,24 +2116,24 @@ msgid ""
 "guards is left to the user."
 msgstr ""
 
-#: library/typing.rst:1497
+#: library/typing.rst:1483
 msgid ""
 "``TypeGuard`` also works with type variables.  See :pep:`647` for more "
 "details."
 msgstr ""
 
-#: library/typing.rst:1504
+#: library/typing.rst:1490
 msgid "Typing operator to conceptually mark an object as having been unpacked."
 msgstr ""
 
-#: library/typing.rst:1506
+#: library/typing.rst:1492
 msgid ""
 "For example, using the unpack operator ``*`` on a :ref:`type variable tuple "
 "<typevartuple>` is equivalent to using ``Unpack`` to mark the type variable "
 "tuple as having been unpacked::"
 msgstr ""
 
-#: library/typing.rst:1510
+#: library/typing.rst:1496
 msgid ""
 "Ts = TypeVarTuple('Ts')\n"
 "tup: tuple[*Ts]\n"
@@ -2171,7 +2141,7 @@ msgid ""
 "tup: tuple[Unpack[Ts]]"
 msgstr ""
 
-#: library/typing.rst:1515
+#: library/typing.rst:1501
 msgid ""
 "In fact, ``Unpack`` can be used interchangeably with ``*`` in the context "
 "of :class:`typing.TypeVarTuple <TypeVarTuple>` and :class:`builtins.tuple "
@@ -2179,7 +2149,7 @@ msgid ""
 "versions of Python, where ``*`` couldn't be used in certain places::"
 msgstr ""
 
-#: library/typing.rst:1521
+#: library/typing.rst:1507
 msgid ""
 "# In older versions of Python, TypeVarTuple and Unpack\n"
 "# are located in the `typing_extensions` backports package.\n"
@@ -2190,13 +2160,13 @@ msgid ""
 "tup: tuple[Unpack[Ts]]  # Semantically equivalent, and backwards-compatible"
 msgstr ""
 
-#: library/typing.rst:1529
+#: library/typing.rst:1515
 msgid ""
 "``Unpack`` can also be used along with :class:`typing.TypedDict` for typing "
 "``**kwargs`` in a function signature::"
 msgstr ""
 
-#: library/typing.rst:1532
+#: library/typing.rst:1518
 msgid ""
 "from typing import TypedDict, Unpack\n"
 "\n"
@@ -2209,23 +2179,23 @@ msgid ""
 "def foo(**kwargs: Unpack[Movie]): ..."
 msgstr ""
 
-#: library/typing.rst:1542
+#: library/typing.rst:1528
 msgid ""
 "See :pep:`692` for more details on using ``Unpack`` for ``**kwargs`` typing."
 msgstr ""
 
-#: library/typing.rst:1547
+#: library/typing.rst:1533
 msgid "Building generic types and type aliases"
 msgstr ""
 
-#: library/typing.rst:1549
+#: library/typing.rst:1535
 msgid ""
 "The following classes should not be used directly as annotations. Their "
 "intended purpose is to be building blocks for creating generic types and "
 "type aliases."
 msgstr ""
 
-#: library/typing.rst:1553
+#: library/typing.rst:1539
 msgid ""
 "These objects can be created through special syntax (:ref:`type parameter "
 "lists <type-params>` and the :keyword:`type` statement). For compatibility "
@@ -2233,17 +2203,17 @@ msgid ""
 "syntax, as documented below."
 msgstr ""
 
-#: library/typing.rst:1560
+#: library/typing.rst:1546
 msgid "Abstract base class for generic types."
 msgstr ""
 
-#: library/typing.rst:1562
+#: library/typing.rst:1548
 msgid ""
 "A generic type is typically declared by adding a list of type parameters "
 "after the class name::"
 msgstr ""
 
-#: library/typing.rst:1565
+#: library/typing.rst:1551
 msgid ""
 "class Mapping[KT, VT]:\n"
 "    def __getitem__(self, key: KT) -> VT:\n"
@@ -2251,17 +2221,17 @@ msgid ""
 "        # Etc."
 msgstr ""
 
-#: library/typing.rst:1570
+#: library/typing.rst:1556
 msgid ""
 "Such a class implicitly inherits from ``Generic``. The runtime semantics of "
 "this syntax are discussed in the :ref:`Language Reference <generic-classes>`."
 msgstr ""
 
-#: library/typing.rst:1574
+#: library/typing.rst:1560
 msgid "This class can then be used as follows::"
 msgstr ""
 
-#: library/typing.rst:1576
+#: library/typing.rst:1562
 msgid ""
 "def lookup_name[X, Y](mapping: Mapping[X, Y], key: X, default: Y) -> Y:\n"
 "    try:\n"
@@ -2270,20 +2240,20 @@ msgid ""
 "        return default"
 msgstr ""
 
-#: library/typing.rst:1582
+#: library/typing.rst:1568
 msgid ""
 "Here the brackets after the function name indicate a :ref:`generic function "
 "<generic-functions>`."
 msgstr ""
 
-#: library/typing.rst:1585
+#: library/typing.rst:1571
 msgid ""
 "For backwards compatibility, generic classes can also be declared by "
 "explicitly inheriting from ``Generic``. In this case, the type parameters "
 "must be declared separately::"
 msgstr ""
 
-#: library/typing.rst:1590
+#: library/typing.rst:1576
 msgid ""
 "KT = TypeVar('KT')\n"
 "VT = TypeVar('VT')\n"
@@ -2294,32 +2264,33 @@ msgid ""
 "        # Etc."
 msgstr ""
 
-#: library/typing.rst:1602
+#: library/typing.rst:1588
 msgid "Type variable."
 msgstr ""
 
-#: library/typing.rst:1604
+#: library/typing.rst:1590
 msgid ""
 "The preferred way to construct a type variable is via the dedicated syntax "
 "for :ref:`generic functions <generic-functions>`, :ref:`generic classes "
 "<generic-classes>`, and :ref:`generic type aliases <generic-type-aliases>`::"
 msgstr ""
 
-#: library/typing.rst:1609
+#: library/typing.rst:1595
 msgid ""
 "class Sequence[T]:  # T is a TypeVar\n"
 "    ..."
 msgstr ""
 
-#: library/typing.rst:1612
+#: library/typing.rst:1598
 msgid ""
-"This syntax can also be used to create bound and constrained type variables::"
+"This syntax can also be used to create bounded and constrained type "
+"variables::"
 msgstr ""
 
-#: library/typing.rst:1615
+#: library/typing.rst:1601
 msgid ""
-"class StrSequence[S: str]:  # S is a TypeVar bound to str\n"
-"    ...\n"
+"class StrSequence[S: str]:  # S is a TypeVar with a `str` upper bound;\n"
+"    ...                     # we can say that S is \"bounded by `str`\"\n"
 "\n"
 "\n"
 "class StrOrBytesSequence[A: (str, bytes)]:  # A is a TypeVar constrained to "
@@ -2327,20 +2298,20 @@ msgid ""
 "    ..."
 msgstr ""
 
-#: library/typing.rst:1622
+#: library/typing.rst:1608
 msgid ""
 "However, if desired, reusable type variables can also be constructed "
 "manually, like so::"
 msgstr ""
 
-#: library/typing.rst:1624
+#: library/typing.rst:1610
 msgid ""
 "T = TypeVar('T')  # Can be anything\n"
 "S = TypeVar('S', bound=str)  # Can be any subtype of str\n"
 "A = TypeVar('A', str, bytes)  # Must be exactly str or bytes"
 msgstr ""
 
-#: library/typing.rst:1628
+#: library/typing.rst:1614
 msgid ""
 "Type variables exist primarily for the benefit of static type checkers.  "
 "They serve as the parameters for generic types as well as for generic "
@@ -2348,7 +2319,7 @@ msgid ""
 "information on generic types.  Generic functions work as follows::"
 msgstr ""
 
-#: library/typing.rst:1634
+#: library/typing.rst:1620
 msgid ""
 "def repeat[T](x: T, n: int) -> Sequence[T]:\n"
 "    \"\"\"Return a list containing n references to x.\"\"\"\n"
@@ -2366,13 +2337,13 @@ msgid ""
 "    return x + y"
 msgstr ""
 
-#: library/typing.rst:1649
+#: library/typing.rst:1635
 msgid ""
-"Note that type variables can be *bound*, *constrained*, or neither, but "
-"cannot be both bound *and* constrained."
+"Note that type variables can be *bounded*, *constrained*, or neither, but "
+"cannot be both bounded *and* constrained."
 msgstr ""
 
-#: library/typing.rst:1652
+#: library/typing.rst:1638
 msgid ""
 "The variance of type variables is inferred by type checkers when they are "
 "created through the :ref:`type parameter syntax <type-params>` or when "
@@ -2382,14 +2353,14 @@ msgid ""
 "invariant. See :pep:`484` and :pep:`695` for more details."
 msgstr ""
 
-#: library/typing.rst:1660
+#: library/typing.rst:1646
 msgid ""
-"Bound type variables and constrained type variables have different semantics "
-"in several important ways. Using a *bound* type variable means that the "
-"``TypeVar`` will be solved using the most specific type possible::"
+"Bounded type variables and constrained type variables have different "
+"semantics in several important ways. Using a *bounded* type variable means "
+"that the ``TypeVar`` will be solved using the most specific type possible::"
 msgstr ""
 
-#: library/typing.rst:1664
+#: library/typing.rst:1650
 msgid ""
 "x = print_capitalized('a string')\n"
 "reveal_type(x)  # revealed type is str\n"
@@ -2403,13 +2374,13 @@ msgid ""
 "z = print_capitalized(45)  # error: int is not a subtype of str"
 msgstr ""
 
-#: library/typing.rst:1675
+#: library/typing.rst:1661
 msgid ""
-"Type variables can be bound to concrete types, abstract types (ABCs or "
-"protocols), and even unions of types::"
+"The upper bound of a type variable can be a concrete type, abstract type "
+"(ABC or Protocol), or even a union of types::"
 msgstr ""
 
-#: library/typing.rst:1678
+#: library/typing.rst:1664
 msgid ""
 "# Can be anything with an __abs__ method\n"
 "def print_abs[T: SupportsAbs](arg: T) -> None:\n"
@@ -2420,13 +2391,13 @@ msgid ""
 "V = TypeVar('V', bound=SupportsAbs)  # Can be anything with an __abs__ method"
 msgstr ""
 
-#: library/typing.rst:1687
+#: library/typing.rst:1673
 msgid ""
 "Using a *constrained* type variable, however, means that the ``TypeVar`` can "
 "only ever be solved as being exactly one of the constraints given::"
 msgstr ""
 
-#: library/typing.rst:1690
+#: library/typing.rst:1676
 msgid ""
 "a = concatenate('one', 'two')\n"
 "reveal_type(a)  # revealed type is str\n"
@@ -2439,80 +2410,80 @@ msgid ""
 "or bytes in a function call, but not both"
 msgstr ""
 
-#: library/typing.rst:1698
+#: library/typing.rst:1684
 msgid "At runtime, ``isinstance(x, T)`` will raise :exc:`TypeError`."
 msgstr ""
 
-#: library/typing.rst:1702
+#: library/typing.rst:1688
 msgid "The name of the type variable."
 msgstr ""
 
-#: library/typing.rst:1706
+#: library/typing.rst:1692
 msgid "Whether the type var has been explicitly marked as covariant."
 msgstr ""
 
-#: library/typing.rst:1710
+#: library/typing.rst:1696
 msgid "Whether the type var has been explicitly marked as contravariant."
 msgstr ""
 
-#: library/typing.rst:1714
+#: library/typing.rst:1700
 msgid ""
 "Whether the type variable's variance should be inferred by type checkers."
 msgstr ""
 
-#: library/typing.rst:1720
-msgid "The bound of the type variable, if any."
+#: library/typing.rst:1706
+msgid "The upper bound of the type variable, if any."
 msgstr ""
 
-#: library/typing.rst:1724
+#: library/typing.rst:1710
 msgid ""
 "For type variables created through :ref:`type parameter syntax <type-"
 "params>`, the bound is evaluated only when the attribute is accessed, not "
 "when the type variable is created (see :ref:`lazy-evaluation`)."
 msgstr ""
 
-#: library/typing.rst:1730
+#: library/typing.rst:1716
 msgid "A tuple containing the constraints of the type variable, if any."
 msgstr ""
 
-#: library/typing.rst:1734
+#: library/typing.rst:1720
 msgid ""
 "For type variables created through :ref:`type parameter syntax <type-"
 "params>`, the constraints are evaluated only when the attribute is accessed, "
 "not when the type variable is created (see :ref:`lazy-evaluation`)."
 msgstr ""
 
-#: library/typing.rst:1740
+#: library/typing.rst:1726
 msgid ""
 "Type variables can now be declared using the :ref:`type parameter <type-"
 "params>` syntax introduced by :pep:`695`. The ``infer_variance`` parameter "
 "was added."
 msgstr ""
 
-#: library/typing.rst:1748
+#: library/typing.rst:1734
 msgid ""
 "Type variable tuple. A specialized form of :ref:`type variable <typevar>` "
 "that enables *variadic* generics."
 msgstr ""
 
-#: library/typing.rst:1751
+#: library/typing.rst:1737
 msgid ""
 "Type variable tuples can be declared in :ref:`type parameter lists <type-"
 "params>` using a single asterisk (``*``) before the name::"
 msgstr ""
 
-#: library/typing.rst:1754
+#: library/typing.rst:1740
 msgid ""
 "def move_first_element_to_last[T, *Ts](tup: tuple[T, *Ts]) -> tuple[*Ts, "
 "T]:\n"
 "    return (*tup[1:], tup[0])"
 msgstr ""
 
-#: library/typing.rst:1757
+#: library/typing.rst:1743
 msgid "Or by explicitly invoking the ``TypeVarTuple`` constructor::"
 msgstr ""
 
-#: library/typing.rst:1759
+#: library/typing.rst:1745
 msgid ""
 "T = TypeVar(\"T\")\n"
 "Ts = TypeVarTuple(\"Ts\")\n"
@@ -2521,7 +2492,7 @@ msgid ""
 "    return (*tup[1:], tup[0])"
 msgstr ""
 
-#: library/typing.rst:1765
+#: library/typing.rst:1751
 msgid ""
 "A normal type variable enables parameterization with a single type. A type "
 "variable tuple, in contrast, allows parameterization with an *arbitrary* "
@@ -2529,7 +2500,7 @@ msgid ""
 "wrapped in a tuple. For example::"
 msgstr ""
 
-#: library/typing.rst:1770
+#: library/typing.rst:1756
 msgid ""
 "# T is bound to int, Ts is bound to ()\n"
 "# Return value is (1,), which has type tuple[int]\n"
@@ -2549,7 +2520,7 @@ msgid ""
 "move_first_element_to_last(tup=())"
 msgstr ""
 
-#: library/typing.rst:1787
+#: library/typing.rst:1773
 msgid ""
 "Note the use of the unpacking operator ``*`` in ``tuple[T, *Ts]``. "
 "Conceptually, you can think of ``Ts`` as a tuple of type variables ``(T1, "
@@ -2559,26 +2530,26 @@ msgid ""
 "<Unpack>` instead, as ``Unpack[Ts]``.)"
 msgstr ""
 
-#: library/typing.rst:1795
+#: library/typing.rst:1781
 msgid ""
 "Type variable tuples must *always* be unpacked. This helps distinguish type "
 "variable tuples from normal type variables::"
 msgstr ""
 
-#: library/typing.rst:1798
+#: library/typing.rst:1784
 msgid ""
 "x: Ts          # Not valid\n"
 "x: tuple[Ts]   # Not valid\n"
 "x: tuple[*Ts]  # The correct way to do it"
 msgstr ""
 
-#: library/typing.rst:1802
+#: library/typing.rst:1788
 msgid ""
 "Type variable tuples can be used in the same contexts as normal type "
 "variables. For example, in class definitions, arguments, and return types::"
 msgstr ""
 
-#: library/typing.rst:1805
+#: library/typing.rst:1791
 msgid ""
 "class Array[*Shape]:\n"
 "    def __getitem__(self, key: tuple[*Shape]) -> float: ...\n"
@@ -2586,12 +2557,12 @@ msgid ""
 "    def get_shape(self) -> tuple[*Shape]: ..."
 msgstr ""
 
-#: library/typing.rst:1810
+#: library/typing.rst:1796
 msgid ""
 "Type variable tuples can be happily combined with normal type variables:"
 msgstr ""
 
-#: library/typing.rst:1812
+#: library/typing.rst:1798
 msgid ""
 "class Array[DType, *Shape]:  # This is fine\n"
 "    pass\n"
@@ -2606,26 +2577,26 @@ msgid ""
 "int_array_2d: Array[int, Height, Width] = Array()  # Yup, fine too"
 msgstr ""
 
-#: library/typing.rst:1826
+#: library/typing.rst:1812
 msgid ""
 "However, note that at most one type variable tuple may appear in a single "
 "list of type arguments or type parameters::"
 msgstr ""
 
-#: library/typing.rst:1829
+#: library/typing.rst:1815
 msgid ""
 "x: tuple[*Ts, *Ts]            # Not valid\n"
 "class Array[*Shape, *Shape]:  # Not valid\n"
 "    pass"
 msgstr ""
 
-#: library/typing.rst:1833
+#: library/typing.rst:1819
 msgid ""
 "Finally, an unpacked type variable tuple can be used as the type annotation "
 "of ``*args``::"
 msgstr ""
 
-#: library/typing.rst:1836
+#: library/typing.rst:1822
 msgid ""
 "def call_soon[*Ts](\n"
 "    callback: Callable[[*Ts], None],\n"
@@ -2635,7 +2606,7 @@ msgid ""
 "    callback(*args)"
 msgstr ""
 
-#: library/typing.rst:1843
+#: library/typing.rst:1829
 msgid ""
 "In contrast to non-unpacked annotations of ``*args`` - e.g. ``*args: int``, "
 "which would specify that *all* arguments are ``int`` - ``*args: *Ts`` "
@@ -2644,47 +2615,47 @@ msgid ""
 "``call_soon`` match the types of the (positional) arguments of ``callback``."
 msgstr ""
 
-#: library/typing.rst:1850
+#: library/typing.rst:1836
 msgid "See :pep:`646` for more details on type variable tuples."
 msgstr ""
 
-#: library/typing.rst:1854
+#: library/typing.rst:1840
 msgid "The name of the type variable tuple."
 msgstr ""
 
-#: library/typing.rst:1860
+#: library/typing.rst:1846
 msgid ""
 "Type variable tuples can now be declared using the :ref:`type parameter "
 "<type-params>` syntax introduced by :pep:`695`."
 msgstr ""
 
-#: library/typing.rst:1865
+#: library/typing.rst:1851
 msgid ""
 "Parameter specification variable.  A specialized version of :ref:`type "
 "variables <typevar>`."
 msgstr ""
 
-#: library/typing.rst:1868
+#: library/typing.rst:1854
 msgid ""
 "In :ref:`type parameter lists <type-params>`, parameter specifications can "
 "be declared with two asterisks (``**``)::"
 msgstr ""
 
-#: library/typing.rst:1871
+#: library/typing.rst:1857
 msgid "type IntFunc[**P] = Callable[P, int]"
 msgstr ""
 
-#: library/typing.rst:1873
+#: library/typing.rst:1859
 msgid ""
 "For compatibility with Python 3.11 and earlier, ``ParamSpec`` objects can "
 "also be created as follows::"
 msgstr ""
 
-#: library/typing.rst:1876
+#: library/typing.rst:1862
 msgid "P = ParamSpec('P')"
 msgstr ""
 
-#: library/typing.rst:1878
+#: library/typing.rst:1864
 msgid ""
 "Parameter specification variables exist primarily for the benefit of static "
 "type checkers.  They are used to forward the parameter types of one callable "
@@ -2694,7 +2665,7 @@ msgid ""
 "See :class:`Generic` for more information on generic types."
 msgstr ""
 
-#: library/typing.rst:1885
+#: library/typing.rst:1871
 msgid ""
 "For example, to add basic logging to a function, one can create a decorator "
 "``add_logging`` to log function calls.  The parameter specification variable "
@@ -2702,7 +2673,7 @@ msgid ""
 "new callable returned by it have inter-dependent type parameters::"
 msgstr ""
 
-#: library/typing.rst:1890
+#: library/typing.rst:1876
 msgid ""
 "from collections.abc import Callable\n"
 "import logging\n"
@@ -2720,27 +2691,27 @@ msgid ""
 "    return x + y"
 msgstr ""
 
-#: library/typing.rst:1905
+#: library/typing.rst:1891
 msgid ""
 "Without ``ParamSpec``, the simplest way to annotate this previously was to "
-"use a :class:`TypeVar` with bound ``Callable[..., Any]``.  However this "
-"causes two problems:"
+"use a :class:`TypeVar` with upper bound ``Callable[..., Any]``.  However "
+"this causes two problems:"
 msgstr ""
 
-#: library/typing.rst:1909
+#: library/typing.rst:1895
 msgid ""
 "The type checker can't type check the ``inner`` function because ``*args`` "
 "and ``**kwargs`` have to be typed :data:`Any`."
 msgstr ""
 
-#: library/typing.rst:1911
+#: library/typing.rst:1897
 msgid ""
 ":func:`~cast` may be required in the body of the ``add_logging`` decorator "
 "when returning the ``inner`` function, or the static type checker must be "
 "told to ignore the ``return inner``."
 msgstr ""
 
-#: library/typing.rst:1918
+#: library/typing.rst:1904
 msgid ""
 "Since ``ParamSpec`` captures both positional and keyword parameters, ``P."
 "args`` and ``P.kwargs`` can be used to split a ``ParamSpec`` into its "
@@ -2753,11 +2724,11 @@ msgid ""
 "`ParamSpecKwargs`."
 msgstr ""
 
-#: library/typing.rst:1930
+#: library/typing.rst:1916
 msgid "The name of the parameter specification."
 msgstr ""
 
-#: library/typing.rst:1932
+#: library/typing.rst:1918
 msgid ""
 "Parameter specification variables created with ``covariant=True`` or "
 "``contravariant=True`` can be used to declare covariant or contravariant "
@@ -2766,23 +2737,23 @@ msgid ""
 "decided."
 msgstr ""
 
-#: library/typing.rst:1942
+#: library/typing.rst:1928
 msgid ""
 "Parameter specifications can now be declared using the :ref:`type parameter "
 "<type-params>` syntax introduced by :pep:`695`."
 msgstr ""
 
-#: library/typing.rst:1946
+#: library/typing.rst:1932
 msgid ""
 "Only parameter specification variables defined in global scope can be "
 "pickled."
 msgstr ""
 
-#: library/typing.rst:1952
+#: library/typing.rst:1938
 msgid ":data:`Concatenate`"
 msgstr ""
 
-#: library/typing.rst:1958
+#: library/typing.rst:1944
 msgid ""
 "Arguments and keyword arguments attributes of a :class:`ParamSpec`. The ``P."
 "args`` attribute of a ``ParamSpec`` is an instance of ``ParamSpecArgs``, and "
@@ -2790,13 +2761,13 @@ msgid ""
 "runtime introspection and have no special meaning to static type checkers."
 msgstr ""
 
-#: library/typing.rst:1963
+#: library/typing.rst:1949
 msgid ""
 "Calling :func:`get_origin` on either of these objects will return the "
 "original ``ParamSpec``:"
 msgstr ""
 
-#: library/typing.rst:1966
+#: library/typing.rst:1952
 msgid ""
 ">>> from typing import ParamSpec, get_origin\n"
 ">>> P = ParamSpec(\"P\")\n"
@@ -2806,46 +2777,46 @@ msgid ""
 "True"
 msgstr ""
 
-#: library/typing.rst:1980
+#: library/typing.rst:1966
 msgid "The type of type aliases created through the :keyword:`type` statement."
 msgstr ""
 
-#: library/typing.rst:1984
+#: library/typing.rst:1970
 msgid ""
 ">>> type Alias = int\n"
 ">>> type(Alias)\n"
 "<class 'typing.TypeAliasType'>"
 msgstr ""
 
-#: library/typing.rst:1994
+#: library/typing.rst:1980
 msgid "The name of the type alias:"
 msgstr ""
 
-#: library/typing.rst:1996
+#: library/typing.rst:1982
 msgid ""
 ">>> type Alias = int\n"
 ">>> Alias.__name__\n"
 "'Alias'"
 msgstr ""
 
-#: library/typing.rst:2004
+#: library/typing.rst:1990
 msgid "The module in which the type alias was defined::"
 msgstr ""
 
-#: library/typing.rst:2006
+#: library/typing.rst:1992
 msgid ""
 ">>> type Alias = int\n"
 ">>> Alias.__module__\n"
 "'__main__'"
 msgstr ""
 
-#: library/typing.rst:2012
+#: library/typing.rst:1998
 msgid ""
 "The type parameters of the type alias, or an empty tuple if the alias is not "
 "generic:"
 msgstr ""
 
-#: library/typing.rst:2015
+#: library/typing.rst:2001
 msgid ""
 ">>> type ListOrSet[T] = list[T] | set[T]\n"
 ">>> ListOrSet.__type_params__\n"
@@ -2855,14 +2826,14 @@ msgid ""
 "()"
 msgstr ""
 
-#: library/typing.rst:2026
+#: library/typing.rst:2012
 msgid ""
 "The type alias's value. This is :ref:`lazily evaluated <lazy-evaluation>`, "
 "so names used in the definition of the alias are not resolved until the "
 "``__value__`` attribute is accessed:"
 msgstr ""
 
-#: library/typing.rst:2030
+#: library/typing.rst:2016
 msgid ""
 ">>> type Mutually = Recursive\n"
 ">>> type Recursive = Mutually\n"
@@ -2876,46 +2847,46 @@ msgid ""
 "Mutually"
 msgstr ""
 
-#: library/typing.rst:2044
+#: library/typing.rst:2030
 msgid "Other special directives"
 msgstr ""
 
-#: library/typing.rst:2046
+#: library/typing.rst:2032
 msgid ""
 "These functions and classes should not be used directly as annotations. "
 "Their intended purpose is to be building blocks for creating and declaring "
 "types."
 msgstr ""
 
-#: library/typing.rst:2052
+#: library/typing.rst:2038
 msgid "Typed version of :func:`collections.namedtuple`."
 msgstr ""
 
-#: library/typing.rst:2133 library/typing.rst:3104
+#: library/typing.rst:2119 library/typing.rst:3095
 msgid "Usage::"
 msgstr ""
 
-#: library/typing.rst:2056
+#: library/typing.rst:2042
 msgid ""
 "class Employee(NamedTuple):\n"
 "    name: str\n"
 "    id: int"
 msgstr ""
 
-#: library/typing.rst:2060
+#: library/typing.rst:2046
 msgid "This is equivalent to::"
 msgstr ""
 
-#: library/typing.rst:2062
+#: library/typing.rst:2048
 msgid "Employee = collections.namedtuple('Employee', ['name', 'id'])"
 msgstr ""
 
-#: library/typing.rst:2064
+#: library/typing.rst:2050
 msgid ""
 "To give a field a default value, you can assign to it in the class body::"
 msgstr ""
 
-#: library/typing.rst:2066
+#: library/typing.rst:2052
 msgid ""
 "class Employee(NamedTuple):\n"
 "    name: str\n"
@@ -2925,12 +2896,12 @@ msgid ""
 "assert employee.id == 3"
 msgstr ""
 
-#: library/typing.rst:2073
+#: library/typing.rst:2059
 msgid ""
 "Fields with a default value must come after any fields without a default."
 msgstr ""
 
-#: library/typing.rst:2075
+#: library/typing.rst:2061
 msgid ""
 "The resulting class has an extra attribute ``__annotations__`` giving a dict "
 "that maps the field names to the field types.  (The field names are in the "
@@ -2939,11 +2910,11 @@ msgid ""
 "API.)"
 msgstr ""
 
-#: library/typing.rst:2081
+#: library/typing.rst:2067
 msgid "``NamedTuple`` subclasses can also have docstrings and methods::"
 msgstr ""
 
-#: library/typing.rst:2083
+#: library/typing.rst:2069
 msgid ""
 "class Employee(NamedTuple):\n"
 "    \"\"\"Represents an employee.\"\"\"\n"
@@ -2954,22 +2925,22 @@ msgid ""
 "        return f'<Employee {self.name}, id={self.id}>'"
 msgstr ""
 
-#: library/typing.rst:2091
+#: library/typing.rst:2077
 msgid "``NamedTuple`` subclasses can be generic::"
 msgstr ""
 
-#: library/typing.rst:2093
+#: library/typing.rst:2079
 msgid ""
 "class Group[T](NamedTuple):\n"
 "    key: T\n"
 "    group: list[T]"
 msgstr ""
 
-#: library/typing.rst:2097
+#: library/typing.rst:2083
 msgid "Backward-compatible usage::"
 msgstr ""
 
-#: library/typing.rst:2099
+#: library/typing.rst:2085
 msgid ""
 "# For creating a generic NamedTuple on Python 3.11\n"
 "T = TypeVar(\"T\")\n"
@@ -2982,85 +2953,85 @@ msgid ""
 "Employee = NamedTuple('Employee', [('name', str), ('id', int)])"
 msgstr ""
 
-#: library/typing.rst:2109
+#: library/typing.rst:2095
 msgid "Added support for :pep:`526` variable annotation syntax."
 msgstr ""
 
-#: library/typing.rst:2112
+#: library/typing.rst:2098
 msgid "Added support for default values, methods, and docstrings."
 msgstr ""
 
-#: library/typing.rst:2115
+#: library/typing.rst:2101
 msgid ""
 "The ``_field_types`` and ``__annotations__`` attributes are now regular "
 "dictionaries instead of instances of ``OrderedDict``."
 msgstr ""
 
-#: library/typing.rst:2119
+#: library/typing.rst:2105
 msgid ""
 "Removed the ``_field_types`` attribute in favor of the more standard "
 "``__annotations__`` attribute which has the same information."
 msgstr ""
 
-#: library/typing.rst:2123
+#: library/typing.rst:2109
 msgid "Added support for generic namedtuples."
 msgstr ""
 
-#: library/typing.rst:2128
+#: library/typing.rst:2114
 msgid "Helper class to create low-overhead :ref:`distinct types <distinct>`."
 msgstr ""
 
-#: library/typing.rst:2130
+#: library/typing.rst:2116
 msgid ""
 "A ``NewType`` is considered a distinct type by a typechecker. At runtime, "
 "however, calling a ``NewType`` returns its argument unchanged."
 msgstr ""
 
-#: library/typing.rst:2135
+#: library/typing.rst:2121
 msgid ""
 "UserId = NewType('UserId', int)  # Declare the NewType \"UserId\"\n"
 "first_user = UserId(1)  # \"UserId\" returns the argument unchanged at "
 "runtime"
 msgstr ""
 
-#: library/typing.rst:2140
+#: library/typing.rst:2126
 msgid "The module in which the new type is defined."
 msgstr ""
 
-#: library/typing.rst:2144
+#: library/typing.rst:2130
 msgid "The name of the new type."
 msgstr ""
 
-#: library/typing.rst:2148
+#: library/typing.rst:2134
 msgid "The type that the new type is based on."
 msgstr ""
 
-#: library/typing.rst:2152
+#: library/typing.rst:2138
 msgid "``NewType`` is now a class rather than a function."
 msgstr ""
 
-#: library/typing.rst:2157
+#: library/typing.rst:2143
 msgid "Base class for protocol classes."
 msgstr ""
 
-#: library/typing.rst:2159
+#: library/typing.rst:2145
 msgid "Protocol classes are defined like this::"
 msgstr ""
 
-#: library/typing.rst:2161
+#: library/typing.rst:2147
 msgid ""
 "class Proto(Protocol):\n"
 "    def meth(self) -> int:\n"
 "        ..."
 msgstr ""
 
-#: library/typing.rst:2165
+#: library/typing.rst:2151
 msgid ""
 "Such classes are primarily used with static type checkers that recognize "
 "structural subtyping (static duck-typing), for example::"
 msgstr ""
 
-#: library/typing.rst:2168
+#: library/typing.rst:2154
 msgid ""
 "class C:\n"
 "    def meth(self) -> int:\n"
@@ -3072,7 +3043,7 @@ msgid ""
 "func(C())  # Passes static type check"
 msgstr ""
 
-#: library/typing.rst:2177
+#: library/typing.rst:2163
 msgid ""
 "See :pep:`544` for more details. Protocol classes decorated with :func:"
 "`runtime_checkable` (described later) act as simple-minded runtime protocols "
@@ -3080,24 +3051,24 @@ msgid ""
 "signatures."
 msgstr ""
 
-#: library/typing.rst:2182
+#: library/typing.rst:2168
 msgid "Protocol classes can be generic, for example::"
 msgstr ""
 
-#: library/typing.rst:2184
+#: library/typing.rst:2170
 msgid ""
 "class GenProto[T](Protocol):\n"
 "    def meth(self) -> T:\n"
 "        ..."
 msgstr ""
 
-#: library/typing.rst:2188
+#: library/typing.rst:2174
 msgid ""
 "In code that needs to be compatible with Python 3.11 or older, generic "
 "Protocols can be written as follows::"
 msgstr ""
 
-#: library/typing.rst:2191
+#: library/typing.rst:2177
 msgid ""
 "T = TypeVar(\"T\")\n"
 "\n"
@@ -3106,11 +3077,11 @@ msgid ""
 "        ..."
 msgstr ""
 
-#: library/typing.rst:2201
+#: library/typing.rst:2187
 msgid "Mark a protocol class as a runtime protocol."
 msgstr ""
 
-#: library/typing.rst:2203
+#: library/typing.rst:2189
 msgid ""
 "Such a protocol can be used with :func:`isinstance` and :func:`issubclass`. "
 "This raises :exc:`TypeError` when applied to a non-protocol class.  This "
@@ -3119,7 +3090,7 @@ msgid ""
 "Iterable`.  For example::"
 msgstr ""
 
-#: library/typing.rst:2208
+#: library/typing.rst:2194
 msgid ""
 "@runtime_checkable\n"
 "class Closable(Protocol):\n"
@@ -3135,7 +3106,7 @@ msgid ""
 "assert isinstance(threading.Thread(name='Bob'), Named)"
 msgstr ""
 
-#: library/typing.rst:2223
+#: library/typing.rst:2209
 msgid ""
 ":func:`!runtime_checkable` will check only the presence of the required "
 "methods or attributes, not their type signatures or types. For example, :"
@@ -3146,7 +3117,7 @@ msgid ""
 "(instantiate) :class:`ssl.SSLObject`."
 msgstr ""
 
-#: library/typing.rst:2234
+#: library/typing.rst:2220
 msgid ""
 "An :func:`isinstance` check against a runtime-checkable protocol can be "
 "surprisingly slow compared to an ``isinstance()`` check against a non-"
@@ -3154,7 +3125,7 @@ msgid ""
 "calls for structural checks in performance-sensitive code."
 msgstr ""
 
-#: library/typing.rst:2242
+#: library/typing.rst:2228
 msgid ""
 "The internal implementation of :func:`isinstance` checks against runtime-"
 "checkable protocols now uses :func:`inspect.getattr_static` to look up "
@@ -3164,7 +3135,7 @@ msgid ""
 "versa. Most users are unlikely to be affected by this change."
 msgstr ""
 
-#: library/typing.rst:2251
+#: library/typing.rst:2237
 msgid ""
 "The members of a runtime-checkable protocol are now considered \"frozen\" at "
 "runtime as soon as the class has been created. Monkey-patching attributes "
@@ -3173,13 +3144,13 @@ msgid ""
 "`\"What's new in Python 3.12\" <whatsnew-typing-py312>` for more details."
 msgstr ""
 
-#: library/typing.rst:2262
+#: library/typing.rst:2248
 msgid ""
 "Special construct to add type hints to a dictionary. At runtime it is a "
 "plain :class:`dict`."
 msgstr ""
 
-#: library/typing.rst:2265
+#: library/typing.rst:2251
 msgid ""
 "``TypedDict`` declares a dictionary type that expects all of its instances "
 "to have a certain set of keys, where each key is associated with a value of "
@@ -3187,7 +3158,7 @@ msgid ""
 "enforced by type checkers. Usage::"
 msgstr ""
 
-#: library/typing.rst:2271
+#: library/typing.rst:2257
 msgid ""
 "class Point2D(TypedDict):\n"
 "    x: int\n"
@@ -3200,60 +3171,65 @@ msgid ""
 "assert Point2D(x=1, y=2, label='first') == dict(x=1, y=2, label='first')"
 msgstr ""
 
-#: library/typing.rst:2281
+#: library/typing.rst:2267
 msgid ""
 "To allow using this feature with older versions of Python that do not "
 "support :pep:`526`, ``TypedDict`` supports two additional equivalent "
 "syntactic forms:"
 msgstr ""
 
-#: library/typing.rst:2285
+#: library/typing.rst:2271
 msgid "Using a literal :class:`dict` as the second argument::"
 msgstr ""
 
-#: library/typing.rst:2287
+#: library/typing.rst:2273
 msgid "Point2D = TypedDict('Point2D', {'x': int, 'y': int, 'label': str})"
 msgstr ""
 
-#: library/typing.rst:2289
+#: library/typing.rst:2275
 msgid "Using keyword arguments::"
 msgstr ""
 
-#: library/typing.rst:2291
+#: library/typing.rst:2277
 msgid "Point2D = TypedDict('Point2D', x=int, y=int, label=str)"
 msgstr ""
 
-#: library/typing.rst:2293
+#: library/typing.rst:2279
 msgid ""
 "The keyword-argument syntax is deprecated in 3.11 and will be removed in "
 "3.13. It may also be unsupported by static type checkers."
 msgstr ""
 
-#: library/typing.rst:2297
+#: library/typing.rst:2283
 msgid ""
-"The functional syntax should also be used when any of the keys are not "
-"valid :ref:`identifiers <identifiers>`, for example because they are "
-"keywords or contain hyphens. Example::"
+"This functional syntax allows defining keys which are not valid :ref:"
+"`identifiers <identifiers>`, for example because they are keywords or "
+"contain hyphens, or when key names must not be :ref:`mangled <private-name-"
+"mangling>` like regular private names::"
 msgstr ""
 
-#: library/typing.rst:2301
+#: library/typing.rst:2288
 msgid ""
 "# raises SyntaxError\n"
 "class Point2D(TypedDict):\n"
 "    in: int  # 'in' is a keyword\n"
 "    x-y: int  # name with hyphens\n"
 "\n"
+"class Definition(TypedDict):\n"
+"    __schema: str  # mangled to `_Definition__schema`\n"
+"\n"
 "# OK, functional syntax\n"
-"Point2D = TypedDict('Point2D', {'in': int, 'x-y': int})"
+"Point2D = TypedDict('Point2D', {'in': int, 'x-y': int})\n"
+"Definition = TypedDict('Definition', {'__schema': str})  # not mangled"
 msgstr ""
 
-#: library/typing.rst:2309
+#: library/typing.rst:2300
 msgid ""
 "By default, all keys must be present in a ``TypedDict``. It is possible to "
 "mark individual keys as non-required using :data:`NotRequired`::"
 msgstr ""
 
-#: library/typing.rst:2312
+#: library/typing.rst:2303
 msgid ""
 "class Point2D(TypedDict):\n"
 "    x: int\n"
@@ -3265,19 +3241,19 @@ msgid ""
 "NotRequired[str]})"
 msgstr ""
 
-#: library/typing.rst:2320
+#: library/typing.rst:2311
 msgid ""
 "This means that a ``Point2D`` ``TypedDict`` can have the ``label`` key "
 "omitted."
 msgstr ""
 
-#: library/typing.rst:2323
+#: library/typing.rst:2314
 msgid ""
 "It is also possible to mark all keys as non-required by default by "
 "specifying a totality of ``False``::"
 msgstr ""
 
-#: library/typing.rst:2326
+#: library/typing.rst:2317
 msgid ""
 "class Point2D(TypedDict, total=False):\n"
 "    x: int\n"
@@ -3287,7 +3263,7 @@ msgid ""
 "Point2D = TypedDict('Point2D', {'x': int, 'y': int}, total=False)"
 msgstr ""
 
-#: library/typing.rst:2333
+#: library/typing.rst:2324
 msgid ""
 "This means that a ``Point2D`` ``TypedDict`` can have any of the keys "
 "omitted. A type checker is only expected to support a literal ``False`` or "
@@ -3295,13 +3271,13 @@ msgid ""
 "and makes all items defined in the class body required."
 msgstr ""
 
-#: library/typing.rst:2338
+#: library/typing.rst:2329
 msgid ""
 "Individual keys of a ``total=False`` ``TypedDict`` can be marked as required "
 "using :data:`Required`::"
 msgstr ""
 
-#: library/typing.rst:2341
+#: library/typing.rst:2332
 msgid ""
 "class Point2D(TypedDict, total=False):\n"
 "    x: Required[int]\n"
@@ -3316,25 +3292,25 @@ msgid ""
 "}, total=False)"
 msgstr ""
 
-#: library/typing.rst:2353
+#: library/typing.rst:2344
 msgid ""
 "It is possible for a ``TypedDict`` type to inherit from one or more other "
 "``TypedDict`` types using the class-based syntax. Usage::"
 msgstr ""
 
-#: library/typing.rst:2357
+#: library/typing.rst:2348
 msgid ""
 "class Point3D(Point2D):\n"
 "    z: int"
 msgstr ""
 
-#: library/typing.rst:2360
+#: library/typing.rst:2351
 msgid ""
 "``Point3D`` has three items: ``x``, ``y`` and ``z``. It is equivalent to "
 "this definition::"
 msgstr ""
 
-#: library/typing.rst:2363
+#: library/typing.rst:2354
 msgid ""
 "class Point3D(TypedDict):\n"
 "    x: int\n"
@@ -3342,13 +3318,13 @@ msgid ""
 "    z: int"
 msgstr ""
 
-#: library/typing.rst:2368
+#: library/typing.rst:2359
 msgid ""
 "A ``TypedDict`` cannot inherit from a non-\\ ``TypedDict`` class, except "
 "for :class:`Generic`. For example::"
 msgstr ""
 
-#: library/typing.rst:2371
+#: library/typing.rst:2362
 msgid ""
 "class X(TypedDict):\n"
 "    x: int\n"
@@ -3363,24 +3339,24 @@ msgid ""
 "class XZ(X, Z): pass  # raises TypeError"
 msgstr ""
 
-#: library/typing.rst:2383
+#: library/typing.rst:2374
 msgid "A ``TypedDict`` can be generic::"
 msgstr ""
 
-#: library/typing.rst:2385
+#: library/typing.rst:2376
 msgid ""
 "class Group[T](TypedDict):\n"
 "    key: T\n"
 "    group: list[T]"
 msgstr ""
 
-#: library/typing.rst:2389
+#: library/typing.rst:2380
 msgid ""
 "To create a generic ``TypedDict`` that is compatible with Python 3.11 or "
 "lower, inherit from :class:`Generic` explicitly:"
 msgstr ""
 
-#: library/typing.rst:2392
+#: library/typing.rst:2383
 msgid ""
 "T = TypeVar(\"T\")\n"
 "\n"
@@ -3389,19 +3365,19 @@ msgid ""
 "    group: list[T]"
 msgstr ""
 
-#: library/typing.rst:2400
+#: library/typing.rst:2391
 msgid ""
 "A ``TypedDict`` can be introspected via annotations dicts (see :ref:"
 "`annotations-howto` for more information on annotations best practices), :"
 "attr:`__total__`, :attr:`__required_keys__`, and :attr:`__optional_keys__`."
 msgstr ""
 
-#: library/typing.rst:2406
+#: library/typing.rst:2397
 msgid ""
 "``Point2D.__total__`` gives the value of the ``total`` argument. Example:"
 msgstr ""
 
-#: library/typing.rst:2409
+#: library/typing.rst:2400
 msgid ""
 ">>> from typing import TypedDict\n"
 ">>> class Point2D(TypedDict): pass\n"
@@ -3415,7 +3391,7 @@ msgid ""
 "True"
 msgstr ""
 
-#: library/typing.rst:2422
+#: library/typing.rst:2413
 msgid ""
 "This attribute reflects *only* the value of the ``total`` argument to the "
 "current ``TypedDict`` class, not whether the class is semantically total. "
@@ -3426,21 +3402,21 @@ msgid ""
 "introspection."
 msgstr ""
 
-#: library/typing.rst:2435
+#: library/typing.rst:2426
 msgid ""
 "``Point2D.__required_keys__`` and ``Point2D.__optional_keys__`` return :"
 "class:`frozenset` objects containing required and non-required keys, "
 "respectively."
 msgstr ""
 
-#: library/typing.rst:2438
+#: library/typing.rst:2429
 msgid ""
 "Keys marked with :data:`Required` will always appear in "
 "``__required_keys__`` and keys marked with :data:`NotRequired` will always "
 "appear in ``__optional_keys__``."
 msgstr ""
 
-#: library/typing.rst:2441
+#: library/typing.rst:2432
 msgid ""
 "For backwards compatibility with Python 3.10 and below, it is also possible "
 "to use inheritance to declare both required and non-required keys in the "
@@ -3449,7 +3425,7 @@ msgid ""
 "``TypedDict`` with a different value for ``total``:"
 msgstr ""
 
-#: library/typing.rst:2448
+#: library/typing.rst:2439
 msgid ""
 ">>> class Point2D(TypedDict, total=False):\n"
 "...     x: int\n"
@@ -3464,7 +3440,7 @@ msgid ""
 "True"
 msgstr ""
 
-#: library/typing.rst:2466
+#: library/typing.rst:2457
 msgid ""
 "If ``from __future__ import annotations`` is used or if annotations are "
 "given as strings, annotations are not evaluated when the ``TypedDict`` is "
@@ -3473,121 +3449,121 @@ msgid ""
 "attributes may be incorrect."
 msgstr ""
 
-#: library/typing.rst:2472
+#: library/typing.rst:2463
 msgid ""
 "See :pep:`589` for more examples and detailed rules of using ``TypedDict``."
 msgstr ""
 
-#: library/typing.rst:2476
+#: library/typing.rst:2467
 msgid ""
 "Added support for marking individual keys as :data:`Required` or :data:"
 "`NotRequired`. See :pep:`655`."
 msgstr ""
 
-#: library/typing.rst:2480
+#: library/typing.rst:2471
 msgid "Added support for generic ``TypedDict``\\ s."
 msgstr ""
 
-#: library/typing.rst:2484
+#: library/typing.rst:2475
 msgid "Protocols"
 msgstr ""
 
-#: library/typing.rst:2486
+#: library/typing.rst:2477
 msgid ""
 "The following protocols are provided by the typing module. All are decorated "
 "with :func:`@runtime_checkable <runtime_checkable>`."
 msgstr ""
 
-#: library/typing.rst:2491
+#: library/typing.rst:2482
 msgid ""
 "An ABC with one abstract method ``__abs__`` that is covariant in its return "
 "type."
 msgstr ""
 
-#: library/typing.rst:2496
+#: library/typing.rst:2487
 msgid "An ABC with one abstract method ``__bytes__``."
 msgstr ""
 
-#: library/typing.rst:2500
+#: library/typing.rst:2491
 msgid "An ABC with one abstract method ``__complex__``."
 msgstr ""
 
-#: library/typing.rst:2504
+#: library/typing.rst:2495
 msgid "An ABC with one abstract method ``__float__``."
 msgstr ""
 
-#: library/typing.rst:2508
+#: library/typing.rst:2499
 msgid "An ABC with one abstract method ``__index__``."
 msgstr ""
 
-#: library/typing.rst:2514
+#: library/typing.rst:2505
 msgid "An ABC with one abstract method ``__int__``."
 msgstr ""
 
-#: library/typing.rst:2518
+#: library/typing.rst:2509
 msgid ""
 "An ABC with one abstract method ``__round__`` that is covariant in its "
 "return type."
 msgstr ""
 
-#: library/typing.rst:2522
+#: library/typing.rst:2513
 msgid "ABCs for working with IO"
 msgstr ""
 
-#: library/typing.rst:2528
+#: library/typing.rst:2519
 msgid ""
 "Generic type ``IO[AnyStr]`` and its subclasses ``TextIO(IO[str])`` and "
 "``BinaryIO(IO[bytes])`` represent the types of I/O streams such as returned "
 "by :func:`open`."
 msgstr ""
 
-#: library/typing.rst:2534
+#: library/typing.rst:2525
 msgid "Functions and decorators"
 msgstr ""
 
-#: library/typing.rst:2538
+#: library/typing.rst:2529
 msgid "Cast a value to a type."
 msgstr ""
 
-#: library/typing.rst:2540
+#: library/typing.rst:2531
 msgid ""
 "This returns the value unchanged.  To the type checker this signals that the "
 "return value has the designated type, but at runtime we intentionally don't "
 "check anything (we want this to be as fast as possible)."
 msgstr ""
 
-#: library/typing.rst:2547
+#: library/typing.rst:2538
 msgid ""
 "Ask a static type checker to confirm that *val* has an inferred type of "
 "*typ*."
 msgstr ""
 
-#: library/typing.rst:2549
+#: library/typing.rst:2540
 msgid ""
 "At runtime this does nothing: it returns the first argument unchanged with "
 "no checks or side effects, no matter the actual type of the argument."
 msgstr ""
 
-#: library/typing.rst:2552
+#: library/typing.rst:2543
 msgid ""
 "When a static type checker encounters a call to ``assert_type()``, it emits "
 "an error if the value is not of the specified type::"
 msgstr ""
 
-#: library/typing.rst:2555
+#: library/typing.rst:2546
 msgid ""
 "def greet(name: str) -> None:\n"
 "    assert_type(name, str)  # OK, inferred type of `name` is `str`\n"
 "    assert_type(name, int)  # type checker error"
 msgstr ""
 
-#: library/typing.rst:2559
+#: library/typing.rst:2550
 msgid ""
 "This function is useful for ensuring the type checker's understanding of a "
 "script is in line with the developer's intentions::"
 msgstr ""
 
-#: library/typing.rst:2562
+#: library/typing.rst:2553
 msgid ""
 "def complex_function(arg: object):\n"
 "    # Do some complex type-narrowing logic,\n"
@@ -3597,16 +3573,16 @@ msgid ""
 "    assert_type(arg, int)"
 msgstr ""
 
-#: library/typing.rst:2573
+#: library/typing.rst:2564
 msgid ""
 "Ask a static type checker to confirm that a line of code is unreachable."
 msgstr ""
 
-#: library/typing.rst:2575
+#: library/typing.rst:2566
 msgid "Example::"
 msgstr ""
 
-#: library/typing.rst:2577
+#: library/typing.rst:2568
 msgid ""
 "def int_or_str(arg: int | str) -> None:\n"
 "    match arg:\n"
@@ -3618,14 +3594,14 @@ msgid ""
 "            assert_never(unreachable)"
 msgstr ""
 
-#: library/typing.rst:2586
+#: library/typing.rst:2577
 msgid ""
 "Here, the annotations allow the type checker to infer that the last case can "
 "never execute, because ``arg`` is either an :class:`int` or a :class:`str`, "
 "and both options are covered by earlier cases."
 msgstr ""
 
-#: library/typing.rst:2591
+#: library/typing.rst:2582
 msgid ""
 "If a type checker finds that a call to ``assert_never()`` is reachable, it "
 "will emit an error. For example, if the type annotation for ``arg`` was "
@@ -3635,59 +3611,59 @@ msgid ""
 "passed in must be the bottom type, :data:`Never`, and nothing else."
 msgstr ""
 
-#: library/typing.rst:2599
+#: library/typing.rst:2590
 msgid "At runtime, this throws an exception when called."
 msgstr ""
 
-#: library/typing.rst:2602
+#: library/typing.rst:2593
 msgid ""
-"`Unreachable Code and Exhaustiveness Checking <https://typing.readthedocs.io/"
-"en/latest/guides/unreachable.html>`__ has more information about "
-"exhaustiveness checking with static typing."
+"`Unreachable Code and Exhaustiveness Checking <https://typing.python.org/en/"
+"latest/guides/unreachable.html>`__ has more information about exhaustiveness "
+"checking with static typing."
 msgstr ""
 
-#: library/typing.rst:2610
+#: library/typing.rst:2601
 msgid "Ask a static type checker to reveal the inferred type of an expression."
 msgstr ""
 
-#: library/typing.rst:2612
+#: library/typing.rst:2603
 msgid ""
 "When a static type checker encounters a call to this function, it emits a "
 "diagnostic with the inferred type of the argument. For example::"
 msgstr ""
 
-#: library/typing.rst:2615
+#: library/typing.rst:2606
 msgid ""
 "x: int = 1\n"
 "reveal_type(x)  # Revealed type is \"builtins.int\""
 msgstr ""
 
-#: library/typing.rst:2618
+#: library/typing.rst:2609
 msgid ""
 "This can be useful when you want to debug how your type checker handles a "
 "particular piece of code."
 msgstr ""
 
-#: library/typing.rst:2621
+#: library/typing.rst:2612
 msgid ""
 "At runtime, this function prints the runtime type of its argument to :data:"
 "`sys.stderr` and returns the argument unchanged (allowing the call to be "
 "used within an expression)::"
 msgstr ""
 
-#: library/typing.rst:2625
+#: library/typing.rst:2616
 msgid ""
 "x = reveal_type(1)  # prints \"Runtime type is int\"\n"
 "print(x)  # prints \"1\""
 msgstr ""
 
-#: library/typing.rst:2628
+#: library/typing.rst:2619
 msgid ""
 "Note that the runtime type may be different from (more or less specific "
 "than) the type statically inferred by a type checker."
 msgstr ""
 
-#: library/typing.rst:2631
+#: library/typing.rst:2622
 msgid ""
 "Most type checkers support ``reveal_type()`` anywhere, even if the name is "
 "not imported from ``typing``. Importing the name from ``typing``, however, "
@@ -3695,13 +3671,13 @@ msgid ""
 "clearly."
 msgstr ""
 
-#: library/typing.rst:2642
+#: library/typing.rst:2633
 msgid ""
 "Decorator to mark an object as providing :func:`dataclass <dataclasses."
 "dataclass>`-like behavior."
 msgstr ""
 
-#: library/typing.rst:2645
+#: library/typing.rst:2636
 msgid ""
 "``dataclass_transform`` may be used to decorate a class, metaclass, or a "
 "function that is itself a decorator. The presence of "
@@ -3710,11 +3686,11 @@ msgid ""
 "to :func:`@dataclasses.dataclass <dataclasses.dataclass>`."
 msgstr ""
 
-#: library/typing.rst:2652
+#: library/typing.rst:2643
 msgid "Example usage with a decorator function:"
 msgstr ""
 
-#: library/typing.rst:2654
+#: library/typing.rst:2645
 msgid ""
 "@dataclass_transform()\n"
 "def create_model[T](cls: type[T]) -> type[T]:\n"
@@ -3727,11 +3703,11 @@ msgid ""
 "    name: str"
 msgstr ""
 
-#: library/typing.rst:2666
+#: library/typing.rst:2657
 msgid "On a base class::"
 msgstr ""
 
-#: library/typing.rst:2668
+#: library/typing.rst:2659
 msgid ""
 "@dataclass_transform()\n"
 "class ModelBase: ...\n"
@@ -3741,11 +3717,11 @@ msgid ""
 "    name: str"
 msgstr ""
 
-#: library/typing.rst:2675
+#: library/typing.rst:2666
 msgid "On a metaclass::"
 msgstr ""
 
-#: library/typing.rst:2677
+#: library/typing.rst:2668
 msgid ""
 "@dataclass_transform()\n"
 "class ModelMeta(type): ...\n"
@@ -3757,7 +3733,7 @@ msgid ""
 "    name: str"
 msgstr ""
 
-#: library/typing.rst:2686
+#: library/typing.rst:2677
 msgid ""
 "The ``CustomerModel`` classes defined above will be treated by type checkers "
 "similarly to classes created with :func:`@dataclasses.dataclass <dataclasses."
@@ -3765,7 +3741,7 @@ msgid ""
 "``__init__`` methods that accept ``id`` and ``name``."
 msgstr ""
 
-#: library/typing.rst:2692
+#: library/typing.rst:2683
 msgid ""
 "The decorated class, metaclass, or function may accept the following bool "
 "arguments which type checkers will assume have the same effect as they would "
@@ -3775,7 +3751,7 @@ msgid ""
 "arguments (``True`` or ``False``) to be statically evaluated."
 msgstr ""
 
-#: library/typing.rst:2700
+#: library/typing.rst:2691
 msgid ""
 "The arguments to the ``dataclass_transform`` decorator can be used to "
 "customize the default behaviors of the decorated class, metaclass, or "
@@ -3786,90 +3762,90 @@ msgstr ""
 msgid "Parameters"
 msgstr ""
 
-#: library/typing.rst:2704
+#: library/typing.rst:2695
 msgid ""
 "Indicates whether the ``eq`` parameter is assumed to be ``True`` or "
 "``False`` if it is omitted by the caller. Defaults to ``True``."
 msgstr ""
 
-#: library/typing.rst:2709
+#: library/typing.rst:2700
 msgid ""
 "Indicates whether the ``order`` parameter is assumed to be ``True`` or "
 "``False`` if it is omitted by the caller. Defaults to ``False``."
 msgstr ""
 
-#: library/typing.rst:2714
+#: library/typing.rst:2705
 msgid ""
 "Indicates whether the ``kw_only`` parameter is assumed to be ``True`` or "
 "``False`` if it is omitted by the caller. Defaults to ``False``."
 msgstr ""
 
-#: library/typing.rst:2719
+#: library/typing.rst:2710
 msgid ""
 "Indicates whether the ``frozen`` parameter is assumed to be ``True`` or "
 "``False`` if it is omitted by the caller. Defaults to ``False``.  .. "
 "versionadded:: 3.12"
 msgstr ""
 
-#: library/typing.rst:2720
+#: library/typing.rst:2711
 msgid ""
 "Indicates whether the ``frozen`` parameter is assumed to be ``True`` or "
 "``False`` if it is omitted by the caller. Defaults to ``False``."
 msgstr ""
 
-#: library/typing.rst:2726
+#: library/typing.rst:2717
 msgid ""
 "Specifies a static list of supported classes or functions that describe "
 "fields, similar to :func:`dataclasses.field`. Defaults to ``()``."
 msgstr ""
 
-#: library/typing.rst:2732
+#: library/typing.rst:2723
 msgid ""
 "Arbitrary other keyword arguments are accepted in order to allow for "
 "possible future extensions."
 msgstr ""
 
-#: library/typing.rst:2736
+#: library/typing.rst:2727
 msgid ""
 "Type checkers recognize the following optional parameters on field "
 "specifiers:"
 msgstr ""
 
-#: library/typing.rst:2739
+#: library/typing.rst:2730
 msgid "**Recognised parameters for field specifiers**"
 msgstr ""
 
-#: library/typing.rst:2743
+#: library/typing.rst:2734
 msgid "Parameter name"
 msgstr ""
 
-#: library/typing.rst:2744
+#: library/typing.rst:2735
 msgid "Description"
 msgstr ""
 
-#: library/typing.rst:2745
+#: library/typing.rst:2736
 msgid "``init``"
 msgstr ""
 
-#: library/typing.rst:2746
+#: library/typing.rst:2737
 msgid ""
 "Indicates whether the field should be included in the synthesized "
 "``__init__`` method. If unspecified, ``init`` defaults to ``True``."
 msgstr ""
 
-#: library/typing.rst:2749
+#: library/typing.rst:2740
 msgid "``default``"
 msgstr ""
 
-#: library/typing.rst:2750
+#: library/typing.rst:2741
 msgid "Provides the default value for the field."
 msgstr ""
 
-#: library/typing.rst:2751
+#: library/typing.rst:2742
 msgid "``default_factory``"
 msgstr ""
 
-#: library/typing.rst:2752
+#: library/typing.rst:2743
 msgid ""
 "Provides a runtime callback that returns the default value for the field. If "
 "neither ``default`` nor ``default_factory`` are specified, the field is "
@@ -3877,19 +3853,19 @@ msgid ""
 "is instantiated."
 msgstr ""
 
-#: library/typing.rst:2757
+#: library/typing.rst:2748
 msgid "``factory``"
 msgstr ""
 
-#: library/typing.rst:2758
+#: library/typing.rst:2749
 msgid "An alias for the ``default_factory`` parameter on field specifiers."
 msgstr ""
 
-#: library/typing.rst:2759
+#: library/typing.rst:2750
 msgid "``kw_only``"
 msgstr ""
 
-#: library/typing.rst:2760
+#: library/typing.rst:2751
 msgid ""
 "Indicates whether the field should be marked as keyword-only. If ``True``, "
 "the field will be keyword-only. If ``False``, it will not be keyword-only. "
@@ -3899,32 +3875,32 @@ msgid ""
 "will be used."
 msgstr ""
 
-#: library/typing.rst:2766
+#: library/typing.rst:2757
 msgid "``alias``"
 msgstr ""
 
-#: library/typing.rst:2767
+#: library/typing.rst:2758
 msgid ""
 "Provides an alternative name for the field. This alternative name is used in "
 "the synthesized ``__init__`` method."
 msgstr ""
 
-#: library/typing.rst:2770
+#: library/typing.rst:2761
 msgid ""
 "At runtime, this decorator records its arguments in the "
 "``__dataclass_transform__`` attribute on the decorated object. It has no "
 "other runtime effect."
 msgstr ""
 
-#: library/typing.rst:2774
+#: library/typing.rst:2765
 msgid "See :pep:`681` for more details."
 msgstr ""
 
-#: library/typing.rst:2782
+#: library/typing.rst:2773
 msgid "Decorator for creating overloaded functions and methods."
 msgstr ""
 
-#: library/typing.rst:2784
+#: library/typing.rst:2775
 msgid ""
 "The ``@overload`` decorator allows describing functions and methods that "
 "support multiple different combinations of argument types. A series of "
@@ -3932,7 +3908,7 @@ msgid ""
 "``@overload``-decorated definition (for the same function/method)."
 msgstr ""
 
-#: library/typing.rst:2789
+#: library/typing.rst:2780
 msgid ""
 "``@overload``-decorated definitions are for the benefit of the type checker "
 "only, since they will be overwritten by the non-``@overload``-decorated "
@@ -3942,13 +3918,13 @@ msgid ""
 "`NotImplementedError`."
 msgstr ""
 
-#: library/typing.rst:2797
+#: library/typing.rst:2788
 msgid ""
 "An example of overload that gives a more precise type than can be expressed "
 "using a union or a type variable:"
 msgstr ""
 
-#: library/typing.rst:2800
+#: library/typing.rst:2791
 msgid ""
 "@overload\n"
 "def process(response: None) -> None:\n"
@@ -3963,24 +3939,24 @@ msgid ""
 "    ...  # actual implementation goes here"
 msgstr ""
 
-#: library/typing.rst:2814
+#: library/typing.rst:2805
 msgid ""
 "See :pep:`484` for more details and comparison with other typing semantics."
 msgstr ""
 
-#: library/typing.rst:2816
+#: library/typing.rst:2807
 msgid ""
 "Overloaded functions can now be introspected at runtime using :func:"
 "`get_overloads`."
 msgstr ""
 
-#: library/typing.rst:2823
+#: library/typing.rst:2814
 msgid ""
 "Return a sequence of :func:`@overload <overload>`-decorated definitions for "
 "*func*."
 msgstr ""
 
-#: library/typing.rst:2826
+#: library/typing.rst:2817
 msgid ""
 "*func* is the function object for the implementation of the overloaded "
 "function. For example, given the definition of ``process`` in the "
@@ -3990,32 +3966,32 @@ msgid ""
 "returns an empty sequence."
 msgstr ""
 
-#: library/typing.rst:2833
+#: library/typing.rst:2824
 msgid ""
 "``get_overloads()`` can be used for introspecting an overloaded function at "
 "runtime."
 msgstr ""
 
-#: library/typing.rst:2841
+#: library/typing.rst:2832
 msgid "Clear all registered overloads in the internal registry."
 msgstr ""
 
-#: library/typing.rst:2843
+#: library/typing.rst:2834
 msgid "This can be used to reclaim the memory used by the registry."
 msgstr ""
 
-#: library/typing.rst:2850
+#: library/typing.rst:2841
 msgid "Decorator to indicate final methods and final classes."
 msgstr ""
 
-#: library/typing.rst:2852
+#: library/typing.rst:2843
 msgid ""
 "Decorating a method with ``@final`` indicates to a type checker that the "
 "method cannot be overridden in a subclass. Decorating a class with "
 "``@final`` indicates that it cannot be subclassed."
 msgstr ""
 
-#: library/typing.rst:2858
+#: library/typing.rst:2849
 msgid ""
 "class Base:\n"
 "    @final\n"
@@ -4032,7 +4008,7 @@ msgid ""
 "    ..."
 msgstr ""
 
-#: library/typing.rst:2877
+#: library/typing.rst:2868
 msgid ""
 "The decorator will now attempt to set a ``__final__`` attribute to ``True`` "
 "on the decorated object. Thus, a check like ``if getattr(obj, \"__final__\", "
@@ -4042,11 +4018,11 @@ msgid ""
 "exception."
 msgstr ""
 
-#: library/typing.rst:2888
+#: library/typing.rst:2879
 msgid "Decorator to indicate that annotations are not type hints."
 msgstr ""
 
-#: library/typing.rst:2890
+#: library/typing.rst:2881
 msgid ""
 "This works as a class or function :term:`decorator`.  With a class, it "
 "applies recursively to all methods and classes defined in that class (but "
@@ -4054,34 +4030,34 @@ msgid ""
 "will ignore all annotations in a function or class with this decorator."
 msgstr ""
 
-#: library/typing.rst:2896
+#: library/typing.rst:2887
 msgid "``@no_type_check`` mutates the decorated object in place."
 msgstr ""
 
-#: library/typing.rst:2900
+#: library/typing.rst:2891
 msgid "Decorator to give another decorator the :func:`no_type_check` effect."
 msgstr ""
 
-#: library/typing.rst:2902
+#: library/typing.rst:2893
 msgid ""
 "This wraps the decorator with something that wraps the decorated function "
 "in :func:`no_type_check`."
 msgstr ""
 
-#: library/typing.rst:2908
+#: library/typing.rst:2899
 msgid ""
 "Decorator to indicate that a method in a subclass is intended to override a "
 "method or attribute in a superclass."
 msgstr ""
 
-#: library/typing.rst:2911
+#: library/typing.rst:2902
 msgid ""
 "Type checkers should emit an error if a method decorated with ``@override`` "
 "does not, in fact, override anything. This helps prevent bugs that may occur "
 "when a base class is changed without an equivalent change to a child class."
 msgstr ""
 
-#: library/typing.rst:2918
+#: library/typing.rst:2909
 msgid ""
 "class Base:\n"
 "    def log_status(self) -> None:\n"
@@ -4097,11 +4073,11 @@ msgid ""
 "        ..."
 msgstr ""
 
-#: library/typing.rst:2933
+#: library/typing.rst:2924
 msgid "There is no runtime checking of this property."
 msgstr ""
 
-#: library/typing.rst:2935
+#: library/typing.rst:2926
 msgid ""
 "The decorator will attempt to set an ``__override__`` attribute to ``True`` "
 "on the decorated object. Thus, a check like ``if getattr(obj, "
@@ -4111,22 +4087,22 @@ msgid ""
 "without raising an exception."
 msgstr ""
 
-#: library/typing.rst:2942
+#: library/typing.rst:2933
 msgid "See :pep:`698` for more details."
 msgstr ""
 
-#: library/typing.rst:2949
+#: library/typing.rst:2940
 msgid "Decorator to mark a class or function as unavailable at runtime."
 msgstr ""
 
-#: library/typing.rst:2951
+#: library/typing.rst:2942
 msgid ""
 "This decorator is itself not available at runtime. It is mainly intended to "
 "mark classes that are defined in type stub files if an implementation "
 "returns an instance of a private class::"
 msgstr ""
 
-#: library/typing.rst:2955
+#: library/typing.rst:2946
 msgid ""
 "@type_check_only\n"
 "class Response:  # private or not available at runtime\n"
@@ -4136,29 +4112,29 @@ msgid ""
 "def fetch_response() -> Response: ..."
 msgstr ""
 
-#: library/typing.rst:2962
+#: library/typing.rst:2953
 msgid ""
 "Note that returning instances of private classes is not recommended. It is "
 "usually preferable to make such classes public."
 msgstr ""
 
-#: library/typing.rst:2966
+#: library/typing.rst:2957
 msgid "Introspection helpers"
 msgstr ""
 
-#: library/typing.rst:2970
+#: library/typing.rst:2961
 msgid ""
 "Return a dictionary containing type hints for a function, method, module or "
 "class object."
 msgstr ""
 
-#: library/typing.rst:2973
+#: library/typing.rst:2964
 msgid ""
 "This is often the same as ``obj.__annotations__``, but this function makes "
 "the following changes to the annotations dictionary:"
 msgstr ""
 
-#: library/typing.rst:2976
+#: library/typing.rst:2967
 msgid ""
 "Forward references encoded as string literals or :class:`ForwardRef` objects "
 "are handled by evaluating them in *globalns*, *localns*, and (where "
@@ -4167,17 +4143,17 @@ msgid ""
 "inferred from *obj*."
 msgstr ""
 
-#: library/typing.rst:2981
+#: library/typing.rst:2972
 msgid "``None`` is replaced with :class:`types.NoneType`."
 msgstr ""
 
-#: library/typing.rst:2982
+#: library/typing.rst:2973
 msgid ""
 "If :func:`@no_type_check <no_type_check>` has been applied to *obj*, an "
 "empty dictionary is returned."
 msgstr ""
 
-#: library/typing.rst:2984
+#: library/typing.rst:2975
 msgid ""
 "If *obj* is a class ``C``, the function returns a dictionary that merges "
 "annotations from ``C``'s base classes with those on ``C`` directly. This is "
@@ -4187,20 +4163,20 @@ msgid ""
 "annotations on classes appearing later in the method resolution order."
 msgstr ""
 
-#: library/typing.rst:2991
+#: library/typing.rst:2982
 msgid ""
 "The function recursively replaces all occurrences of ``Annotated[T, ...]`` "
 "with ``T``, unless *include_extras* is set to ``True`` (see :class:"
 "`Annotated` for more information)."
 msgstr ""
 
-#: library/typing.rst:2995
+#: library/typing.rst:2986
 msgid ""
 "See also :func:`inspect.get_annotations`, a lower-level function that "
 "returns annotations more directly."
 msgstr ""
 
-#: library/typing.rst:3000
+#: library/typing.rst:2991
 msgid ""
 "If any forward references in the annotations of *obj* are not resolvable or "
 "are not valid Python code, this function will raise an exception such as :"
@@ -4209,26 +4185,26 @@ msgid ""
 "imported under :data:`if TYPE_CHECKING <TYPE_CHECKING>`."
 msgstr ""
 
-#: library/typing.rst:3006
+#: library/typing.rst:2997
 msgid ""
 "Added ``include_extras`` parameter as part of :pep:`593`. See the "
 "documentation on :data:`Annotated` for more information."
 msgstr ""
 
-#: library/typing.rst:3010
+#: library/typing.rst:3001
 msgid ""
 "Previously, ``Optional[t]`` was added for function and method annotations if "
 "a default value equal to ``None`` was set. Now the annotation is returned "
 "unchanged."
 msgstr ""
 
-#: library/typing.rst:3017
+#: library/typing.rst:3008
 msgid ""
 "Get the unsubscripted version of a type: for a typing object of the form "
 "``X[Y, Z, ...]`` return ``X``."
 msgstr ""
 
-#: library/typing.rst:3020
+#: library/typing.rst:3011
 msgid ""
 "If ``X`` is a typing-module alias for a builtin or :mod:`collections` class, "
 "it will be normalized to the original class. If ``X`` is an instance of :"
@@ -4236,11 +4212,11 @@ msgid ""
 "class:`ParamSpec`. Return ``None`` for unsupported objects."
 msgstr ""
 
-#: library/typing.rst:3050
+#: library/typing.rst:3041
 msgid "Examples:"
 msgstr ""
 
-#: library/typing.rst:3028
+#: library/typing.rst:3019
 msgid ""
 "assert get_origin(str) is None\n"
 "assert get_origin(Dict[str, int]) is dict\n"
@@ -4251,13 +4227,13 @@ msgid ""
 "assert get_origin(P.kwargs) is P"
 msgstr ""
 
-#: library/typing.rst:3042
+#: library/typing.rst:3033
 msgid ""
 "Get type arguments with all substitutions performed: for a typing object of "
 "the form ``X[Y, Z, ...]`` return ``(Y, Z, ...)``."
 msgstr ""
 
-#: library/typing.rst:3045
+#: library/typing.rst:3036
 msgid ""
 "If ``X`` is a union or :class:`Literal` contained in another generic type, "
 "the order of ``(Y, Z, ...)`` may be different from the order of the original "
@@ -4265,18 +4241,18 @@ msgid ""
 "objects."
 msgstr ""
 
-#: library/typing.rst:3052
+#: library/typing.rst:3043
 msgid ""
 "assert get_args(int) == ()\n"
 "assert get_args(Dict[int, str]) == (int, str)\n"
 "assert get_args(Union[int, str]) == (int, str)"
 msgstr ""
 
-#: library/typing.rst:3062
+#: library/typing.rst:3053
 msgid "Check if a type is a :class:`TypedDict`."
 msgstr ""
 
-#: library/typing.rst:3066
+#: library/typing.rst:3057
 msgid ""
 "class Film(TypedDict):\n"
 "    title: str\n"
@@ -4290,36 +4266,36 @@ msgid ""
 "assert not is_typeddict(TypedDict)"
 msgstr ""
 
-#: library/typing.rst:3083
+#: library/typing.rst:3074
 msgid ""
 "Class used for internal typing representation of string forward references."
 msgstr ""
 
-#: library/typing.rst:3085
+#: library/typing.rst:3076
 msgid ""
 "For example, ``List[\"SomeClass\"]`` is implicitly transformed into "
 "``List[ForwardRef(\"SomeClass\")]``.  ``ForwardRef`` should not be "
 "instantiated by a user, but may be used by introspection tools."
 msgstr ""
 
-#: library/typing.rst:3090
+#: library/typing.rst:3081
 msgid ""
 ":pep:`585` generic types such as ``list[\"SomeClass\"]`` will not be "
 "implicitly transformed into ``list[ForwardRef(\"SomeClass\")]`` and thus "
 "will not automatically resolve to ``list[SomeClass]``."
 msgstr ""
 
-#: library/typing.rst:3097
+#: library/typing.rst:3088
 msgid "Constant"
 msgstr ""
 
-#: library/typing.rst:3101
+#: library/typing.rst:3092
 msgid ""
 "A special constant that is assumed to be ``True`` by 3rd party static type "
 "checkers. It is ``False`` at runtime."
 msgstr ""
 
-#: library/typing.rst:3106
+#: library/typing.rst:3097
 msgid ""
 "if TYPE_CHECKING:\n"
 "    import expensive_mod\n"
@@ -4328,7 +4304,7 @@ msgid ""
 "    local_var: expensive_mod.AnotherType = other_fun()"
 msgstr ""
 
-#: library/typing.rst:3112
+#: library/typing.rst:3103
 msgid ""
 "The first type annotation must be enclosed in quotes, making it a \"forward "
 "reference\", to hide the ``expensive_mod`` reference from the interpreter "
@@ -4336,7 +4312,7 @@ msgid ""
 "second annotation does not need to be enclosed in quotes."
 msgstr ""
 
-#: library/typing.rst:3119
+#: library/typing.rst:3110
 msgid ""
 "If ``from __future__ import annotations`` is used, annotations are not "
 "evaluated at function definition time. Instead, they are stored as strings "
@@ -4344,11 +4320,11 @@ msgid ""
 "annotation (see :pep:`563`)."
 msgstr ""
 
-#: library/typing.rst:3131
+#: library/typing.rst:3122
 msgid "Deprecated aliases"
 msgstr ""
 
-#: library/typing.rst:3133
+#: library/typing.rst:3124
 msgid ""
 "This module defines several deprecated aliases to pre-existing standard "
 "library classes. These were originally included in the typing module in "
@@ -4357,7 +4333,7 @@ msgid ""
 "existing classes were enhanced to support ``[]`` (see :pep:`585`)."
 msgstr ""
 
-#: library/typing.rst:3140
+#: library/typing.rst:3131
 msgid ""
 "The redundant types are deprecated as of Python 3.9. However, while the "
 "aliases may be removed at some point, removal of these aliases is not "
@@ -4365,7 +4341,7 @@ msgid ""
 "the interpreter for these aliases."
 msgstr ""
 
-#: library/typing.rst:3145
+#: library/typing.rst:3136
 msgid ""
 "If at some point it is decided to remove these deprecated aliases, a "
 "deprecation warning will be issued by the interpreter for at least two "
@@ -4373,38 +4349,38 @@ msgid ""
 "typing module without deprecation warnings until at least Python 3.14."
 msgstr ""
 
-#: library/typing.rst:3150
+#: library/typing.rst:3141
 msgid ""
 "Type checkers are encouraged to flag uses of the deprecated types if the "
 "program they are checking targets a minimum Python version of 3.9 or newer."
 msgstr ""
 
-#: library/typing.rst:3156
+#: library/typing.rst:3147
 msgid "Aliases to built-in types"
 msgstr ""
 
-#: library/typing.rst:3160
+#: library/typing.rst:3151
 msgid "Deprecated alias to :class:`dict`."
 msgstr ""
 
-#: library/typing.rst:3162
+#: library/typing.rst:3153
 msgid ""
 "Note that to annotate arguments, it is preferred to use an abstract "
 "collection type such as :class:`~collections.abc.Mapping` rather than to "
 "use :class:`dict` or :class:`!typing.Dict`."
 msgstr ""
 
-#: library/typing.rst:3166
+#: library/typing.rst:3157
 msgid ""
 ":class:`builtins.dict <dict>` now supports subscripting (``[]``). See :pep:"
 "`585` and :ref:`types-genericalias`."
 msgstr ""
 
-#: library/typing.rst:3172
+#: library/typing.rst:3163
 msgid "Deprecated alias to :class:`list`."
 msgstr ""
 
-#: library/typing.rst:3174
+#: library/typing.rst:3165
 msgid ""
 "Note that to annotate arguments, it is preferred to use an abstract "
 "collection type such as :class:`~collections.abc.Sequence` or :class:"
@@ -4412,142 +4388,142 @@ msgid ""
 "typing.List`."
 msgstr ""
 
-#: library/typing.rst:3179
+#: library/typing.rst:3170
 msgid ""
 ":class:`builtins.list <list>` now supports subscripting (``[]``). See :pep:"
 "`585` and :ref:`types-genericalias`."
 msgstr ""
 
-#: library/typing.rst:3185
+#: library/typing.rst:3176
 msgid "Deprecated alias to :class:`builtins.set <set>`."
 msgstr ""
 
-#: library/typing.rst:3187
+#: library/typing.rst:3178
 msgid ""
 "Note that to annotate arguments, it is preferred to use an abstract "
 "collection type such as :class:`collections.abc.Set` rather than to use :"
 "class:`set` or :class:`typing.Set`."
 msgstr ""
 
-#: library/typing.rst:3191
+#: library/typing.rst:3182
 msgid ""
 ":class:`builtins.set <set>` now supports subscripting (``[]``). See :pep:"
 "`585` and :ref:`types-genericalias`."
 msgstr ""
 
-#: library/typing.rst:3197
+#: library/typing.rst:3188
 msgid "Deprecated alias to :class:`builtins.frozenset <frozenset>`."
 msgstr ""
 
-#: library/typing.rst:3199
+#: library/typing.rst:3190
 msgid ""
 ":class:`builtins.frozenset <frozenset>` now supports subscripting (``[]``). "
 "See :pep:`585` and :ref:`types-genericalias`."
 msgstr ""
 
-#: library/typing.rst:3206
+#: library/typing.rst:3197
 msgid "Deprecated alias for :class:`tuple`."
 msgstr ""
 
-#: library/typing.rst:3208
+#: library/typing.rst:3199
 msgid ""
 ":class:`tuple` and ``Tuple`` are special-cased in the type system; see :ref:"
 "`annotating-tuples` for more details."
 msgstr ""
 
-#: library/typing.rst:3211
+#: library/typing.rst:3202
 msgid ""
 ":class:`builtins.tuple <tuple>` now supports subscripting (``[]``). See :pep:"
 "`585` and :ref:`types-genericalias`."
 msgstr ""
 
-#: library/typing.rst:3217
+#: library/typing.rst:3208
 msgid "Deprecated alias to :class:`type`."
 msgstr ""
 
-#: library/typing.rst:3219
+#: library/typing.rst:3210
 msgid ""
 "See :ref:`type-of-class-objects` for details on using :class:`type` or "
 "``typing.Type`` in type annotations."
 msgstr ""
 
-#: library/typing.rst:3224
+#: library/typing.rst:3215
 msgid ""
 ":class:`builtins.type <type>` now supports subscripting (``[]``). See :pep:"
 "`585` and :ref:`types-genericalias`."
 msgstr ""
 
-#: library/typing.rst:3231
+#: library/typing.rst:3222
 msgid "Aliases to types in :mod:`collections`"
 msgstr ""
 
-#: library/typing.rst:3235
+#: library/typing.rst:3226
 msgid "Deprecated alias to :class:`collections.defaultdict`."
 msgstr ""
 
-#: library/typing.rst:3239
+#: library/typing.rst:3230
 msgid ""
 ":class:`collections.defaultdict` now supports subscripting (``[]``). See :"
 "pep:`585` and :ref:`types-genericalias`."
 msgstr ""
 
-#: library/typing.rst:3245
+#: library/typing.rst:3236
 msgid "Deprecated alias to :class:`collections.OrderedDict`."
 msgstr ""
 
-#: library/typing.rst:3249
+#: library/typing.rst:3240
 msgid ""
 ":class:`collections.OrderedDict` now supports subscripting (``[]``). See :"
 "pep:`585` and :ref:`types-genericalias`."
 msgstr ""
 
-#: library/typing.rst:3255
+#: library/typing.rst:3246
 msgid "Deprecated alias to :class:`collections.ChainMap`."
 msgstr ""
 
-#: library/typing.rst:3259
+#: library/typing.rst:3250
 msgid ""
 ":class:`collections.ChainMap` now supports subscripting (``[]``). See :pep:"
 "`585` and :ref:`types-genericalias`."
 msgstr ""
 
-#: library/typing.rst:3265
+#: library/typing.rst:3256
 msgid "Deprecated alias to :class:`collections.Counter`."
 msgstr ""
 
-#: library/typing.rst:3269
+#: library/typing.rst:3260
 msgid ""
 ":class:`collections.Counter` now supports subscripting (``[]``). See :pep:"
 "`585` and :ref:`types-genericalias`."
 msgstr ""
 
-#: library/typing.rst:3275
+#: library/typing.rst:3266
 msgid "Deprecated alias to :class:`collections.deque`."
 msgstr ""
 
-#: library/typing.rst:3279
+#: library/typing.rst:3270
 msgid ""
 ":class:`collections.deque` now supports subscripting (``[]``). See :pep:"
 "`585` and :ref:`types-genericalias`."
 msgstr ""
 
-#: library/typing.rst:3286
+#: library/typing.rst:3277
 msgid "Aliases to other concrete types"
 msgstr ""
 
-#: library/typing.rst:3288
+#: library/typing.rst:3279
 msgid ""
 "The ``typing.io`` namespace is deprecated and will be removed. These types "
 "should be directly imported from ``typing`` instead."
 msgstr ""
 
-#: library/typing.rst:3295
+#: library/typing.rst:3286
 msgid ""
 "Deprecated aliases corresponding to the return types from :func:`re.compile` "
 "and :func:`re.match`."
 msgstr ""
 
-#: library/typing.rst:3298
+#: library/typing.rst:3289
 msgid ""
 "These types (and the corresponding functions) are generic over :data:"
 "`AnyStr`. ``Pattern`` can be specialised as ``Pattern[str]`` or "
@@ -4555,361 +4531,361 @@ msgid ""
 "``Match[bytes]``."
 msgstr ""
 
-#: library/typing.rst:3303
+#: library/typing.rst:3294
 msgid ""
 "The ``typing.re`` namespace is deprecated and will be removed. These types "
 "should be directly imported from ``typing`` instead."
 msgstr ""
 
-#: library/typing.rst:3307
+#: library/typing.rst:3298
 msgid ""
 "Classes ``Pattern`` and ``Match`` from :mod:`re` now support ``[]``. See :"
 "pep:`585` and :ref:`types-genericalias`."
 msgstr ""
 
-#: library/typing.rst:3313
+#: library/typing.rst:3304
 msgid "Deprecated alias for :class:`str`."
 msgstr ""
 
-#: library/typing.rst:3315
+#: library/typing.rst:3306
 msgid ""
 "``Text`` is provided to supply a forward compatible path for Python 2 code: "
 "in Python 2, ``Text`` is an alias for ``unicode``."
 msgstr ""
 
-#: library/typing.rst:3319
+#: library/typing.rst:3310
 msgid ""
 "Use ``Text`` to indicate that a value must contain a unicode string in a "
 "manner that is compatible with both Python 2 and Python 3::"
 msgstr ""
 
-#: library/typing.rst:3322
+#: library/typing.rst:3313
 msgid ""
 "def add_unicode_checkmark(text: Text) -> Text:\n"
 "    return text + u' \\u2713'"
 msgstr ""
 
-#: library/typing.rst:3327
+#: library/typing.rst:3318
 msgid ""
 "Python 2 is no longer supported, and most type checkers also no longer "
 "support type checking Python 2 code. Removal of the alias is not currently "
 "planned, but users are encouraged to use :class:`str` instead of ``Text``."
 msgstr ""
 
-#: library/typing.rst:3337
+#: library/typing.rst:3328
 msgid "Aliases to container ABCs in :mod:`collections.abc`"
 msgstr ""
 
-#: library/typing.rst:3341
+#: library/typing.rst:3332
 msgid "Deprecated alias to :class:`collections.abc.Set`."
 msgstr ""
 
-#: library/typing.rst:3343
+#: library/typing.rst:3334
 msgid ""
 ":class:`collections.abc.Set` now supports subscripting (``[]``). See :pep:"
 "`585` and :ref:`types-genericalias`."
 msgstr ""
 
-#: library/typing.rst:3349
+#: library/typing.rst:3340
 msgid ""
 "This type represents the types :class:`bytes`, :class:`bytearray`, and :"
 "class:`memoryview` of byte sequences."
 msgstr ""
 
-#: library/typing.rst:3352
+#: library/typing.rst:3343
 msgid ""
 "Prefer :class:`collections.abc.Buffer`, or a union like ``bytes | bytearray "
 "| memoryview``."
 msgstr ""
 
-#: library/typing.rst:3357
+#: library/typing.rst:3348
 msgid "Deprecated alias to :class:`collections.abc.Collection`."
 msgstr ""
 
-#: library/typing.rst:3361
+#: library/typing.rst:3352
 msgid ""
 ":class:`collections.abc.Collection` now supports subscripting (``[]``). See :"
 "pep:`585` and :ref:`types-genericalias`."
 msgstr ""
 
-#: library/typing.rst:3367
+#: library/typing.rst:3358
 msgid "Deprecated alias to :class:`collections.abc.Container`."
 msgstr ""
 
-#: library/typing.rst:3369
+#: library/typing.rst:3360
 msgid ""
 ":class:`collections.abc.Container` now supports subscripting (``[]``). See :"
 "pep:`585` and :ref:`types-genericalias`."
 msgstr ""
 
-#: library/typing.rst:3375
+#: library/typing.rst:3366
 msgid "Deprecated alias to :class:`collections.abc.ItemsView`."
 msgstr ""
 
-#: library/typing.rst:3377
+#: library/typing.rst:3368
 msgid ""
 ":class:`collections.abc.ItemsView` now supports subscripting (``[]``). See :"
 "pep:`585` and :ref:`types-genericalias`."
 msgstr ""
 
-#: library/typing.rst:3383
+#: library/typing.rst:3374
 msgid "Deprecated alias to :class:`collections.abc.KeysView`."
 msgstr ""
 
-#: library/typing.rst:3385
+#: library/typing.rst:3376
 msgid ""
 ":class:`collections.abc.KeysView` now supports subscripting (``[]``). See :"
 "pep:`585` and :ref:`types-genericalias`."
 msgstr ""
 
-#: library/typing.rst:3391
+#: library/typing.rst:3382
 msgid "Deprecated alias to :class:`collections.abc.Mapping`."
 msgstr ""
 
-#: library/typing.rst:3393
+#: library/typing.rst:3384
 msgid ""
 ":class:`collections.abc.Mapping` now supports subscripting (``[]``). See :"
 "pep:`585` and :ref:`types-genericalias`."
 msgstr ""
 
-#: library/typing.rst:3399
+#: library/typing.rst:3390
 msgid "Deprecated alias to :class:`collections.abc.MappingView`."
 msgstr ""
 
-#: library/typing.rst:3401
+#: library/typing.rst:3392
 msgid ""
 ":class:`collections.abc.MappingView` now supports subscripting (``[]``). "
 "See :pep:`585` and :ref:`types-genericalias`."
 msgstr ""
 
-#: library/typing.rst:3407
+#: library/typing.rst:3398
 msgid "Deprecated alias to :class:`collections.abc.MutableMapping`."
 msgstr ""
 
-#: library/typing.rst:3409
+#: library/typing.rst:3400
 msgid ""
 ":class:`collections.abc.MutableMapping` now supports subscripting (``[]``). "
 "See :pep:`585` and :ref:`types-genericalias`."
 msgstr ""
 
-#: library/typing.rst:3416
+#: library/typing.rst:3407
 msgid "Deprecated alias to :class:`collections.abc.MutableSequence`."
 msgstr ""
 
-#: library/typing.rst:3418
+#: library/typing.rst:3409
 msgid ""
 ":class:`collections.abc.MutableSequence` now supports subscripting (``[]``). "
 "See :pep:`585` and :ref:`types-genericalias`."
 msgstr ""
 
-#: library/typing.rst:3425
+#: library/typing.rst:3416
 msgid "Deprecated alias to :class:`collections.abc.MutableSet`."
 msgstr ""
 
-#: library/typing.rst:3427
+#: library/typing.rst:3418
 msgid ""
 ":class:`collections.abc.MutableSet` now supports subscripting (``[]``). See :"
 "pep:`585` and :ref:`types-genericalias`."
 msgstr ""
 
-#: library/typing.rst:3433
+#: library/typing.rst:3424
 msgid "Deprecated alias to :class:`collections.abc.Sequence`."
 msgstr ""
 
-#: library/typing.rst:3435
+#: library/typing.rst:3426
 msgid ""
 ":class:`collections.abc.Sequence` now supports subscripting (``[]``). See :"
 "pep:`585` and :ref:`types-genericalias`."
 msgstr ""
 
-#: library/typing.rst:3441
+#: library/typing.rst:3432
 msgid "Deprecated alias to :class:`collections.abc.ValuesView`."
 msgstr ""
 
-#: library/typing.rst:3443
+#: library/typing.rst:3434
 msgid ""
 ":class:`collections.abc.ValuesView` now supports subscripting (``[]``). See :"
 "pep:`585` and :ref:`types-genericalias`."
 msgstr ""
 
-#: library/typing.rst:3450
+#: library/typing.rst:3441
 msgid "Aliases to asynchronous ABCs in :mod:`collections.abc`"
 msgstr ""
 
-#: library/typing.rst:3454
+#: library/typing.rst:3445
 msgid "Deprecated alias to :class:`collections.abc.Coroutine`."
 msgstr ""
 
-#: library/typing.rst:3456
+#: library/typing.rst:3447
 msgid ""
 "See :ref:`annotating-generators-and-coroutines` for details on using :class:"
 "`collections.abc.Coroutine` and ``typing.Coroutine`` in type annotations."
 msgstr ""
 
-#: library/typing.rst:3462
+#: library/typing.rst:3453
 msgid ""
 ":class:`collections.abc.Coroutine` now supports subscripting (``[]``). See :"
 "pep:`585` and :ref:`types-genericalias`."
 msgstr ""
 
-#: library/typing.rst:3468
+#: library/typing.rst:3459
 msgid "Deprecated alias to :class:`collections.abc.AsyncGenerator`."
 msgstr ""
 
-#: library/typing.rst:3470
+#: library/typing.rst:3461
 msgid ""
 "See :ref:`annotating-generators-and-coroutines` for details on using :class:"
 "`collections.abc.AsyncGenerator` and ``typing.AsyncGenerator`` in type "
 "annotations."
 msgstr ""
 
-#: library/typing.rst:3476
+#: library/typing.rst:3467
 msgid ""
 ":class:`collections.abc.AsyncGenerator` now supports subscripting (``[]``). "
 "See :pep:`585` and :ref:`types-genericalias`."
 msgstr ""
 
-#: library/typing.rst:3483
+#: library/typing.rst:3474
 msgid "Deprecated alias to :class:`collections.abc.AsyncIterable`."
 msgstr ""
 
-#: library/typing.rst:3487
+#: library/typing.rst:3478
 msgid ""
 ":class:`collections.abc.AsyncIterable` now supports subscripting (``[]``). "
 "See :pep:`585` and :ref:`types-genericalias`."
 msgstr ""
 
-#: library/typing.rst:3493
+#: library/typing.rst:3484
 msgid "Deprecated alias to :class:`collections.abc.AsyncIterator`."
 msgstr ""
 
-#: library/typing.rst:3497
+#: library/typing.rst:3488
 msgid ""
 ":class:`collections.abc.AsyncIterator` now supports subscripting (``[]``). "
 "See :pep:`585` and :ref:`types-genericalias`."
 msgstr ""
 
-#: library/typing.rst:3503
+#: library/typing.rst:3494
 msgid "Deprecated alias to :class:`collections.abc.Awaitable`."
 msgstr ""
 
-#: library/typing.rst:3507
+#: library/typing.rst:3498
 msgid ""
 ":class:`collections.abc.Awaitable` now supports subscripting (``[]``). See :"
 "pep:`585` and :ref:`types-genericalias`."
 msgstr ""
 
-#: library/typing.rst:3514
+#: library/typing.rst:3505
 msgid "Aliases to other ABCs in :mod:`collections.abc`"
 msgstr ""
 
-#: library/typing.rst:3518
+#: library/typing.rst:3509
 msgid "Deprecated alias to :class:`collections.abc.Iterable`."
 msgstr ""
 
-#: library/typing.rst:3520
+#: library/typing.rst:3511
 msgid ""
 ":class:`collections.abc.Iterable` now supports subscripting (``[]``). See :"
 "pep:`585` and :ref:`types-genericalias`."
 msgstr ""
 
-#: library/typing.rst:3526
+#: library/typing.rst:3517
 msgid "Deprecated alias to :class:`collections.abc.Iterator`."
 msgstr ""
 
-#: library/typing.rst:3528
+#: library/typing.rst:3519
 msgid ""
 ":class:`collections.abc.Iterator` now supports subscripting (``[]``). See :"
 "pep:`585` and :ref:`types-genericalias`."
 msgstr ""
 
-#: library/typing.rst:3534
+#: library/typing.rst:3525
 msgid "Deprecated alias to :class:`collections.abc.Callable`."
 msgstr ""
 
-#: library/typing.rst:3536
+#: library/typing.rst:3527
 msgid ""
 "See :ref:`annotating-callables` for details on how to use :class:"
 "`collections.abc.Callable` and ``typing.Callable`` in type annotations."
 msgstr ""
 
-#: library/typing.rst:3539
+#: library/typing.rst:3530
 msgid ""
 ":class:`collections.abc.Callable` now supports subscripting (``[]``). See :"
 "pep:`585` and :ref:`types-genericalias`."
 msgstr ""
 
-#: library/typing.rst:3549
+#: library/typing.rst:3540
 msgid "Deprecated alias to :class:`collections.abc.Generator`."
 msgstr ""
 
-#: library/typing.rst:3551
+#: library/typing.rst:3542
 msgid ""
 "See :ref:`annotating-generators-and-coroutines` for details on using :class:"
 "`collections.abc.Generator` and ``typing.Generator`` in type annotations."
 msgstr ""
 
-#: library/typing.rst:3555
+#: library/typing.rst:3546
 msgid ""
 ":class:`collections.abc.Generator` now supports subscripting (``[]``). See :"
 "pep:`585` and :ref:`types-genericalias`."
 msgstr ""
 
-#: library/typing.rst:3561
+#: library/typing.rst:3552
 msgid "Deprecated alias to :class:`collections.abc.Hashable`."
 msgstr ""
 
-#: library/typing.rst:3563
+#: library/typing.rst:3554
 msgid "Use :class:`collections.abc.Hashable` directly instead."
 msgstr ""
 
-#: library/typing.rst:3568
+#: library/typing.rst:3559
 msgid "Deprecated alias to :class:`collections.abc.Reversible`."
 msgstr ""
 
-#: library/typing.rst:3570
+#: library/typing.rst:3561
 msgid ""
 ":class:`collections.abc.Reversible` now supports subscripting (``[]``). See :"
 "pep:`585` and :ref:`types-genericalias`."
 msgstr ""
 
-#: library/typing.rst:3576
+#: library/typing.rst:3567
 msgid "Deprecated alias to :class:`collections.abc.Sized`."
 msgstr ""
 
-#: library/typing.rst:3578
+#: library/typing.rst:3569
 msgid "Use :class:`collections.abc.Sized` directly instead."
 msgstr ""
 
-#: library/typing.rst:3584
+#: library/typing.rst:3575
 msgid "Aliases to :mod:`contextlib` ABCs"
 msgstr ""
 
-#: library/typing.rst:3588
+#: library/typing.rst:3579
 msgid "Deprecated alias to :class:`contextlib.AbstractContextManager`."
 msgstr ""
 
-#: library/typing.rst:3592
+#: library/typing.rst:3583
 msgid ""
 ":class:`contextlib.AbstractContextManager` now supports subscripting "
 "(``[]``). See :pep:`585` and :ref:`types-genericalias`."
 msgstr ""
 
-#: library/typing.rst:3599
+#: library/typing.rst:3590
 msgid "Deprecated alias to :class:`contextlib.AbstractAsyncContextManager`."
 msgstr ""
 
-#: library/typing.rst:3603
+#: library/typing.rst:3594
 msgid ""
 ":class:`contextlib.AbstractAsyncContextManager` now supports subscripting "
 "(``[]``). See :pep:`585` and :ref:`types-genericalias`."
 msgstr ""
 
-#: library/typing.rst:3609
+#: library/typing.rst:3600
 msgid "Deprecation Timeline of Major Features"
 msgstr ""
 
-#: library/typing.rst:3611
+#: library/typing.rst:3602
 msgid ""
 "Certain features in ``typing`` are deprecated and may be removed in a future "
 "version of Python. The following table summarizes major deprecations for "
@@ -4917,98 +4893,98 @@ msgid ""
 "listed."
 msgstr ""
 
-#: library/typing.rst:3618
+#: library/typing.rst:3609
 msgid "Feature"
 msgstr ""
 
-#: library/typing.rst:3619
+#: library/typing.rst:3610
 msgid "Deprecated in"
 msgstr ""
 
-#: library/typing.rst:3620
+#: library/typing.rst:3611
 msgid "Projected removal"
 msgstr ""
 
-#: library/typing.rst:3621
+#: library/typing.rst:3612
 msgid "PEP/issue"
 msgstr ""
 
-#: library/typing.rst:3622
+#: library/typing.rst:3613
 msgid "``typing.io`` and ``typing.re`` submodules"
 msgstr ""
 
-#: library/typing.rst:3623
+#: library/typing.rst:3614
 msgid "3.8"
 msgstr ""
 
-#: library/typing.rst:3624
+#: library/typing.rst:3615
 msgid "3.13"
 msgstr ""
 
-#: library/typing.rst:3625
+#: library/typing.rst:3616
 msgid ":issue:`38291`"
 msgstr ""
 
-#: library/typing.rst:3626
+#: library/typing.rst:3617
 msgid "``typing`` versions of standard collections"
 msgstr ""
 
-#: library/typing.rst:3631
+#: library/typing.rst:3622
 msgid "3.9"
 msgstr ""
 
-#: library/typing.rst:3628
+#: library/typing.rst:3619
 msgid "Undecided (see :ref:`deprecated-aliases` for more information)"
 msgstr ""
 
-#: library/typing.rst:3629
+#: library/typing.rst:3620
 msgid ":pep:`585`"
 msgstr ""
 
-#: library/typing.rst:3630
+#: library/typing.rst:3621
 msgid ":class:`typing.ByteString`"
 msgstr ""
 
-#: library/typing.rst:3632
+#: library/typing.rst:3623
 msgid "3.14"
 msgstr ""
 
-#: library/typing.rst:3633
+#: library/typing.rst:3624
 msgid ":gh:`91896`"
 msgstr ""
 
-#: library/typing.rst:3634
+#: library/typing.rst:3625
 msgid ":data:`typing.Text`"
 msgstr ""
 
-#: library/typing.rst:3635
+#: library/typing.rst:3626
 msgid "3.11"
 msgstr ""
 
-#: library/typing.rst:3640 library/typing.rst:3644
+#: library/typing.rst:3631 library/typing.rst:3635
 msgid "Undecided"
 msgstr ""
 
-#: library/typing.rst:3637
+#: library/typing.rst:3628
 msgid ":gh:`92332`"
 msgstr ""
 
-#: library/typing.rst:3638
+#: library/typing.rst:3629
 msgid ":class:`typing.Hashable` and :class:`typing.Sized`"
 msgstr ""
 
-#: library/typing.rst:3643
+#: library/typing.rst:3634
 msgid "3.12"
 msgstr ""
 
-#: library/typing.rst:3641
+#: library/typing.rst:3632
 msgid ":gh:`94309`"
 msgstr ""
 
-#: library/typing.rst:3642
+#: library/typing.rst:3633
 msgid ":data:`typing.TypeAlias`"
 msgstr ""
 
-#: library/typing.rst:3645
+#: library/typing.rst:3636
 msgid ":pep:`695`"
 msgstr ""
diff --git a/library/unittest.mock.po b/library/unittest.mock.po
index 73e548262..8c2540d4f 100644
--- a/library/unittest.mock.po
+++ b/library/unittest.mock.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -398,7 +398,7 @@ msgid ""
 ">>> mock('hello')\n"
 "5\n"
 ">>> mock.reset_mock(return_value=True)\n"
-">>> mock('hello')  \n"
+">>> mock('hello')\n"
 "<Mock name='mock()' id='...'>"
 msgstr ""
 
@@ -415,7 +415,7 @@ msgid ""
 "  ...\n"
 "ValueError\n"
 ">>> mock.reset_mock(side_effect=True)\n"
-">>> mock('hello')  \n"
+">>> mock('hello')\n"
 "<Mock name='mock()' id='...'>"
 msgstr ""
 
@@ -1879,7 +1879,7 @@ msgstr ""
 msgid ""
 "Now we want to test ``some_function`` but we want to mock out ``SomeClass`` "
 "using :func:`patch`. The problem is that when we import module b, which we "
-"will have to do then it imports ``SomeClass`` from module a. If we use :func:"
+"will have to do when it imports ``SomeClass`` from module a. If we use :func:"
 "`patch` to mock out ``a.SomeClass`` then it will have no effect on our test; "
 "module b already has a reference to the *real* ``SomeClass`` and it looks "
 "like our patching had no effect."
diff --git a/library/unittest.po b/library/unittest.po
index 9e8fcbe8f..edab80ea7 100644
--- a/library/unittest.po
+++ b/library/unittest.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -2186,7 +2186,7 @@ msgid ""
 "coroutines as test functions."
 msgstr ""
 
-#: library/unittest.rst:1576
+#: library/unittest.rst:1577
 msgid ""
 "Method called to prepare the test fixture. This is called after :meth:"
 "`setUp`. This is called immediately before calling the test method; other "
@@ -2195,7 +2195,7 @@ msgid ""
 "implementation does nothing."
 msgstr ""
 
-#: library/unittest.rst:1584
+#: library/unittest.rst:1586
 msgid ""
 "Method called immediately after the test method has been called and the "
 "result recorded.  This is called before :meth:`tearDown`. This is called "
@@ -2208,11 +2208,11 @@ msgid ""
 "the outcome of the test method. The default implementation does nothing."
 msgstr ""
 
-#: library/unittest.rst:1596
+#: library/unittest.rst:1598
 msgid "This method accepts a coroutine that can be used as a cleanup function."
 msgstr ""
 
-#: library/unittest.rst:1600
+#: library/unittest.rst:1603
 msgid ""
 "Enter the supplied :term:`asynchronous context manager`.  If successful, "
 "also add its :meth:`~object.__aexit__` method as a cleanup function by :meth:"
@@ -2220,7 +2220,7 @@ msgid ""
 "method."
 msgstr ""
 
-#: library/unittest.rst:1610
+#: library/unittest.rst:1613
 msgid ""
 "Sets up a new event loop to run the test, collecting the result into the :"
 "class:`TestResult` object passed as *result*.  If *result* is omitted or "
@@ -2230,11 +2230,11 @@ msgid ""
 "cancelled."
 msgstr ""
 
-#: library/unittest.rst:1618
+#: library/unittest.rst:1621
 msgid "An example illustrating the order::"
 msgstr ""
 
-#: library/unittest.rst:1620
+#: library/unittest.rst:1623
 msgid ""
 "from unittest import IsolatedAsyncioTestCase\n"
 "\n"
@@ -2272,14 +2272,14 @@ msgid ""
 "    unittest.main()"
 msgstr ""
 
-#: library/unittest.rst:1654
+#: library/unittest.rst:1657
 msgid ""
 "After running the test, ``events`` would contain ``[\"setUp\", "
 "\"asyncSetUp\", \"test_response\", \"asyncTearDown\", \"tearDown\", "
 "\"cleanup\"]``."
 msgstr ""
 
-#: library/unittest.rst:1659
+#: library/unittest.rst:1662
 msgid ""
 "This class implements the portion of the :class:`TestCase` interface which "
 "allows the test runner to drive the test, but does not provide the methods "
@@ -2288,11 +2288,11 @@ msgid ""
 "`unittest`-based test framework."
 msgstr ""
 
-#: library/unittest.rst:1669
+#: library/unittest.rst:1672
 msgid "Grouping tests"
 msgstr ""
 
-#: library/unittest.rst:1673
+#: library/unittest.rst:1676
 msgid ""
 "This class represents an aggregation of individual test cases and test "
 "suites. The class presents the interface needed by the test runner to allow "
@@ -2300,14 +2300,14 @@ msgid ""
 "is the same as iterating over the suite, running each test individually."
 msgstr ""
 
-#: library/unittest.rst:1678
+#: library/unittest.rst:1681
 msgid ""
 "If *tests* is given, it must be an iterable of individual test cases or "
 "other test suites that will be used to build the suite initially. Additional "
 "methods are provided to add test cases and suites to the collection later on."
 msgstr ""
 
-#: library/unittest.rst:1682
+#: library/unittest.rst:1685
 msgid ""
 ":class:`TestSuite` objects behave much like :class:`TestCase` objects, "
 "except they do not actually implement a test.  Instead, they are used to "
@@ -2316,47 +2316,47 @@ msgid ""
 "instances:"
 msgstr ""
 
-#: library/unittest.rst:1690
+#: library/unittest.rst:1693
 msgid "Add a :class:`TestCase` or :class:`TestSuite` to the suite."
 msgstr ""
 
-#: library/unittest.rst:1695
+#: library/unittest.rst:1698
 msgid ""
 "Add all the tests from an iterable of :class:`TestCase` and :class:"
 "`TestSuite` instances to this test suite."
 msgstr ""
 
-#: library/unittest.rst:1698
+#: library/unittest.rst:1701
 msgid ""
 "This is equivalent to iterating over *tests*, calling :meth:`addTest` for "
 "each element."
 msgstr ""
 
-#: library/unittest.rst:1701
+#: library/unittest.rst:1704
 msgid ":class:`TestSuite` shares the following methods with :class:`TestCase`:"
 msgstr ""
 
-#: library/unittest.rst:1706
+#: library/unittest.rst:1709
 msgid ""
 "Run the tests associated with this suite, collecting the result into the "
 "test result object passed as *result*.  Note that unlike :meth:`TestCase."
 "run`, :meth:`TestSuite.run` requires the result object to be passed in."
 msgstr ""
 
-#: library/unittest.rst:1714
+#: library/unittest.rst:1717
 msgid ""
 "Run the tests associated with this suite without collecting the result. This "
 "allows exceptions raised by the test to be propagated to the caller and can "
 "be used to support running tests under a debugger."
 msgstr ""
 
-#: library/unittest.rst:1721
+#: library/unittest.rst:1724
 msgid ""
 "Return the number of tests represented by this test object, including all "
 "individual tests and sub-suites."
 msgstr ""
 
-#: library/unittest.rst:1727
+#: library/unittest.rst:1730
 msgid ""
 "Tests grouped by a :class:`TestSuite` are always accessed by iteration. "
 "Subclasses can lazily provide tests by overriding :meth:`!__iter__`. Note "
@@ -2368,31 +2368,31 @@ msgid ""
 "overrides :meth:`TestSuite._removeTestAtIndex` to preserve test references."
 msgstr ""
 
-#: library/unittest.rst:1737
+#: library/unittest.rst:1740
 msgid ""
 "In earlier versions the :class:`TestSuite` accessed tests directly rather "
 "than through iteration, so overriding :meth:`!__iter__` wasn't sufficient "
 "for providing tests."
 msgstr ""
 
-#: library/unittest.rst:1742
+#: library/unittest.rst:1745
 msgid ""
 "In earlier versions the :class:`TestSuite` held references to each :class:"
 "`TestCase` after :meth:`TestSuite.run`. Subclasses can restore that behavior "
 "by overriding :meth:`TestSuite._removeTestAtIndex`."
 msgstr ""
 
-#: library/unittest.rst:1747
+#: library/unittest.rst:1750
 msgid ""
 "In the typical usage of a :class:`TestSuite` object, the :meth:`run` method "
 "is invoked by a :class:`TestRunner` rather than by the end-user test harness."
 msgstr ""
 
-#: library/unittest.rst:1752
+#: library/unittest.rst:1755
 msgid "Loading and running tests"
 msgstr ""
 
-#: library/unittest.rst:1756
+#: library/unittest.rst:1759
 msgid ""
 "The :class:`TestLoader` class is used to create test suites from classes and "
 "modules.  Normally, there is no need to create an instance of this class; "
@@ -2401,11 +2401,11 @@ msgid ""
 "customization of some configurable properties."
 msgstr ""
 
-#: library/unittest.rst:1762
+#: library/unittest.rst:1765
 msgid ":class:`TestLoader` objects have the following attributes:"
 msgstr ""
 
-#: library/unittest.rst:1767
+#: library/unittest.rst:1770
 msgid ""
 "A list of the non-fatal errors encountered while loading tests. Not reset by "
 "the loader at any point. Fatal errors are signalled by the relevant method "
@@ -2413,17 +2413,17 @@ msgid ""
 "synthetic test that will raise the original error when run."
 msgstr ""
 
-#: library/unittest.rst:1776
+#: library/unittest.rst:1779
 msgid ":class:`TestLoader` objects have the following methods:"
 msgstr ""
 
-#: library/unittest.rst:1781
+#: library/unittest.rst:1784
 msgid ""
 "Return a suite of all test cases contained in the :class:`TestCase`\\ -"
 "derived :class:`testCaseClass`."
 msgstr ""
 
-#: library/unittest.rst:1784
+#: library/unittest.rst:1787
 msgid ""
 "A test case instance is created for each method named by :meth:"
 "`getTestCaseNames`. By default these are the method names beginning with "
@@ -2432,14 +2432,14 @@ msgid ""
 "method instead."
 msgstr ""
 
-#: library/unittest.rst:1793
+#: library/unittest.rst:1796
 msgid ""
 "Return a suite of all test cases contained in the given module. This method "
 "searches *module* for classes derived from :class:`TestCase` and creates an "
 "instance of the class for each test method defined for the class."
 msgstr ""
 
-#: library/unittest.rst:1800
+#: library/unittest.rst:1803
 msgid ""
 "While using a hierarchy of :class:`TestCase`\\ -derived classes can be "
 "convenient in sharing fixtures and helper functions, defining test methods "
@@ -2448,7 +2448,7 @@ msgid ""
 "fixtures are different and defined in subclasses."
 msgstr ""
 
-#: library/unittest.rst:1806
+#: library/unittest.rst:1809
 msgid ""
 "If a module provides a ``load_tests`` function it will be called to load the "
 "tests. This allows modules to customize test loading. This is the "
@@ -2456,24 +2456,24 @@ msgid ""
 "argument to ``load_tests``."
 msgstr ""
 
-#: library/unittest.rst:1811
+#: library/unittest.rst:1814
 msgid "Support for ``load_tests`` added."
 msgstr ""
 
-#: library/unittest.rst:1814
+#: library/unittest.rst:1817
 msgid "Support for a keyword-only argument *pattern* has been added."
 msgstr ""
 
-#: library/unittest.rst:1817
+#: library/unittest.rst:1820
 msgid ""
 "The undocumented and unofficial *use_load_tests* parameter has been removed."
 msgstr ""
 
-#: library/unittest.rst:1824
+#: library/unittest.rst:1827
 msgid "Return a suite of all test cases given a string specifier."
 msgstr ""
 
-#: library/unittest.rst:1826
+#: library/unittest.rst:1829
 msgid ""
 "The specifier *name* is a \"dotted name\" that may resolve either to a "
 "module, a test case class, a test method within a test case class, a :class:"
@@ -2484,7 +2484,7 @@ msgid ""
 "object\"."
 msgstr ""
 
-#: library/unittest.rst:1834
+#: library/unittest.rst:1837
 msgid ""
 "For example, if you have a module :mod:`SampleTests` containing a :class:"
 "`TestCase`\\ -derived class :class:`SampleTestCase` with three test methods "
@@ -2497,31 +2497,31 @@ msgid ""
 "a side-effect."
 msgstr ""
 
-#: library/unittest.rst:1844
+#: library/unittest.rst:1847
 msgid "The method optionally resolves *name* relative to the given *module*."
 msgstr ""
 
-#: library/unittest.rst:1846
+#: library/unittest.rst:1849
 msgid ""
 "If an :exc:`ImportError` or :exc:`AttributeError` occurs while traversing "
 "*name* then a synthetic test that raises that error when run will be "
 "returned. These errors are included in the errors accumulated by self.errors."
 msgstr ""
 
-#: library/unittest.rst:1855
+#: library/unittest.rst:1858
 msgid ""
 "Similar to :meth:`loadTestsFromName`, but takes a sequence of names rather "
 "than a single name.  The return value is a test suite which supports all the "
 "tests defined for each name."
 msgstr ""
 
-#: library/unittest.rst:1862
+#: library/unittest.rst:1865
 msgid ""
 "Return a sorted sequence of method names found within *testCaseClass*; this "
 "should be a subclass of :class:`TestCase`."
 msgstr ""
 
-#: library/unittest.rst:1868
+#: library/unittest.rst:1871
 msgid ""
 "Find all the test modules by recursing into subdirectories from the "
 "specified start directory, and return a TestSuite object containing them. "
@@ -2530,14 +2530,14 @@ msgid ""
 "Python identifiers) will be loaded."
 msgstr ""
 
-#: library/unittest.rst:1874
+#: library/unittest.rst:1877
 msgid ""
 "All test modules must be importable from the top level of the project. If "
 "the start directory is not the top level directory then *top_level_dir* must "
 "be specified separately."
 msgstr ""
 
-#: library/unittest.rst:1878
+#: library/unittest.rst:1881
 msgid ""
 "If importing a module fails, for example due to a syntax error, then this "
 "will be recorded as a single error and discovery will continue.  If the "
@@ -2545,7 +2545,7 @@ msgid ""
 "as a skip instead of an error."
 msgstr ""
 
-#: library/unittest.rst:1883
+#: library/unittest.rst:1886
 msgid ""
 "If a package (a directory containing a file named :file:`__init__.py`) is "
 "found, the package will be checked for a ``load_tests`` function. If this "
@@ -2555,103 +2555,103 @@ msgid ""
 "itself calls ``loader.discover``."
 msgstr ""
 
-#: library/unittest.rst:1891
+#: library/unittest.rst:1894
 msgid ""
 "If ``load_tests`` exists then discovery does *not* recurse into the package, "
 "``load_tests`` is responsible for loading all tests in the package."
 msgstr ""
 
-#: library/unittest.rst:1895
+#: library/unittest.rst:1898
 msgid ""
 "The pattern is deliberately not stored as a loader attribute so that "
 "packages can continue discovery themselves."
 msgstr ""
 
-#: library/unittest.rst:1898
+#: library/unittest.rst:1901
 msgid ""
 "*top_level_dir* is stored internally, and used as a default to any nested "
 "calls to ``discover()``. That is, if a package's ``load_tests`` calls "
 "``loader.discover()``, it does not need to pass this argument."
 msgstr ""
 
-#: library/unittest.rst:1902
+#: library/unittest.rst:1905
 msgid "*start_dir* can be a dotted module name as well as a directory."
 msgstr ""
 
-#: library/unittest.rst:1906
+#: library/unittest.rst:1909
 msgid ""
 "Modules that raise :exc:`SkipTest` on import are recorded as skips, not "
 "errors."
 msgstr ""
 
-#: library/unittest.rst:1910
+#: library/unittest.rst:1913
 msgid "*start_dir* can be a :term:`namespace packages <namespace package>`."
 msgstr ""
 
-#: library/unittest.rst:1913
+#: library/unittest.rst:1916
 msgid ""
 "Paths are sorted before being imported so that execution order is the same "
 "even if the underlying file system's ordering is not dependent on file name."
 msgstr ""
 
-#: library/unittest.rst:1918
+#: library/unittest.rst:1921
 msgid ""
 "Found packages are now checked for ``load_tests`` regardless of whether "
 "their path matches *pattern*, because it is impossible for a package name to "
 "match the default pattern."
 msgstr ""
 
-#: library/unittest.rst:1923
+#: library/unittest.rst:1926
 msgid ""
 "*start_dir* can not be a :term:`namespace packages <namespace package>`. It "
 "has been broken since Python 3.7 and Python 3.11 officially remove it."
 msgstr ""
 
-#: library/unittest.rst:1927
+#: library/unittest.rst:1930
 msgid "*top_level_dir* is only stored for the duration of *discover* call."
 msgstr ""
 
-#: library/unittest.rst:1931
+#: library/unittest.rst:1934
 msgid ""
 "The following attributes of a :class:`TestLoader` can be configured either "
 "by subclassing or assignment on an instance:"
 msgstr ""
 
-#: library/unittest.rst:1937
+#: library/unittest.rst:1940
 msgid ""
 "String giving the prefix of method names which will be interpreted as test "
 "methods.  The default value is ``'test'``."
 msgstr ""
 
-#: library/unittest.rst:1940
+#: library/unittest.rst:1943
 msgid ""
 "This affects :meth:`getTestCaseNames` and all the ``loadTestsFrom*`` methods."
 msgstr ""
 
-#: library/unittest.rst:1946
+#: library/unittest.rst:1949
 msgid ""
 "Function to be used to compare method names when sorting them in :meth:"
 "`getTestCaseNames` and all the ``loadTestsFrom*`` methods."
 msgstr ""
 
-#: library/unittest.rst:1952
+#: library/unittest.rst:1955
 msgid ""
 "Callable object that constructs a test suite from a list of tests. No "
 "methods on the resulting object are needed.  The default value is the :class:"
 "`TestSuite` class."
 msgstr ""
 
-#: library/unittest.rst:1969
+#: library/unittest.rst:1972
 msgid "This affects all the ``loadTestsFrom*`` methods."
 msgstr ""
 
-#: library/unittest.rst:1960
+#: library/unittest.rst:1963
 msgid ""
 "List of Unix shell-style wildcard test name patterns that test methods have "
 "to match to be included in test suites (see ``-k`` option)."
 msgstr ""
 
-#: library/unittest.rst:1963
+#: library/unittest.rst:1966
 msgid ""
 "If this attribute is not ``None`` (the default), all test methods to be "
 "included in test suites must match one of the patterns in this list. Note "
@@ -2660,13 +2660,13 @@ msgid ""
 "have to be converted using ``*`` wildcards."
 msgstr ""
 
-#: library/unittest.rst:1976
+#: library/unittest.rst:1979
 msgid ""
 "This class is used to compile information about which tests have succeeded "
 "and which have failed."
 msgstr ""
 
-#: library/unittest.rst:1979
+#: library/unittest.rst:1982
 msgid ""
 "A :class:`TestResult` object stores the results of a set of tests.  The :"
 "class:`TestCase` and :class:`TestSuite` classes ensure that results are "
@@ -2674,7 +2674,7 @@ msgid ""
 "outcome of tests."
 msgstr ""
 
-#: library/unittest.rst:1984
+#: library/unittest.rst:1987
 msgid ""
 "Testing frameworks built on top of :mod:`unittest` may want access to the :"
 "class:`TestResult` object generated by running a set of tests for reporting "
@@ -2682,61 +2682,61 @@ msgid ""
 "`TestRunner.run` method for this purpose."
 msgstr ""
 
-#: library/unittest.rst:1989
+#: library/unittest.rst:1992
 msgid ""
 ":class:`TestResult` instances have the following attributes that will be of "
 "interest when inspecting the results of running a set of tests:"
 msgstr ""
 
-#: library/unittest.rst:1995
+#: library/unittest.rst:1998
 msgid ""
 "A list containing 2-tuples of :class:`TestCase` instances and strings "
 "holding formatted tracebacks. Each tuple represents a test which raised an "
 "unexpected exception."
 msgstr ""
 
-#: library/unittest.rst:2001
+#: library/unittest.rst:2004
 msgid ""
 "A list containing 2-tuples of :class:`TestCase` instances and strings "
 "holding formatted tracebacks. Each tuple represents a test where a failure "
 "was explicitly signalled using the :ref:`assert\\* methods <assert-methods>`."
 msgstr ""
 
-#: library/unittest.rst:2007
+#: library/unittest.rst:2010
 msgid ""
 "A list containing 2-tuples of :class:`TestCase` instances and strings "
 "holding the reason for skipping the test."
 msgstr ""
 
-#: library/unittest.rst:2014
+#: library/unittest.rst:2017
 msgid ""
 "A list containing 2-tuples of :class:`TestCase` instances and strings "
 "holding formatted tracebacks.  Each tuple represents an expected failure or "
 "error of the test case."
 msgstr ""
 
-#: library/unittest.rst:2020
+#: library/unittest.rst:2023
 msgid ""
 "A list containing :class:`TestCase` instances that were marked as expected "
 "failures, but succeeded."
 msgstr ""
 
-#: library/unittest.rst:2025
+#: library/unittest.rst:2028
 msgid ""
 "A list containing 2-tuples of test case names and floats representing the "
 "elapsed time of each test which was run."
 msgstr ""
 
-#: library/unittest.rst:2032
+#: library/unittest.rst:2035
 msgid ""
 "Set to ``True`` when the execution of tests should stop by :meth:`stop`."
 msgstr ""
 
-#: library/unittest.rst:2036
+#: library/unittest.rst:2039
 msgid "The total number of tests run so far."
 msgstr ""
 
-#: library/unittest.rst:2040
+#: library/unittest.rst:2043
 msgid ""
 "If set to true, ``sys.stdout`` and ``sys.stderr`` will be buffered in "
 "between :meth:`startTest` and :meth:`stopTest` being called. Collected "
@@ -2745,29 +2745,29 @@ msgid ""
 "error message."
 msgstr ""
 
-#: library/unittest.rst:2049
+#: library/unittest.rst:2052
 msgid ""
 "If set to true :meth:`stop` will be called on the first failure or error, "
 "halting the test run."
 msgstr ""
 
-#: library/unittest.rst:2056
+#: library/unittest.rst:2059
 msgid "If set to true then local variables will be shown in tracebacks."
 msgstr ""
 
-#: library/unittest.rst:2062
+#: library/unittest.rst:2065
 msgid ""
 "Return ``True`` if all tests run so far have passed, otherwise returns "
 "``False``."
 msgstr ""
 
-#: library/unittest.rst:2065
+#: library/unittest.rst:2068
 msgid ""
 "Returns ``False`` if there were any :attr:`unexpectedSuccesses` from tests "
 "marked with the :func:`expectedFailure` decorator."
 msgstr ""
 
-#: library/unittest.rst:2071
+#: library/unittest.rst:2074
 msgid ""
 "This method can be called to signal that the set of tests being run should "
 "be aborted by setting the :attr:`shouldStop` attribute to ``True``. :class:"
@@ -2775,7 +2775,7 @@ msgid ""
 "additional tests."
 msgstr ""
 
-#: library/unittest.rst:2076
+#: library/unittest.rst:2079
 msgid ""
 "For example, this feature is used by the :class:`TextTestRunner` class to "
 "stop the test framework when the user signals an interrupt from the "
@@ -2783,7 +2783,7 @@ msgid ""
 "implementations can use this in a similar manner."
 msgstr ""
 
-#: library/unittest.rst:2081
+#: library/unittest.rst:2084
 msgid ""
 "The following methods of the :class:`TestResult` class are used to maintain "
 "the internal data structures, and may be extended in subclasses to support "
@@ -2791,141 +2791,141 @@ msgid ""
 "tools which support interactive reporting while tests are being run."
 msgstr ""
 
-#: library/unittest.rst:2089
+#: library/unittest.rst:2092
 msgid "Called when the test case *test* is about to be run."
 msgstr ""
 
-#: library/unittest.rst:2093
+#: library/unittest.rst:2096
 msgid ""
 "Called after the test case *test* has been executed, regardless of the "
 "outcome."
 msgstr ""
 
-#: library/unittest.rst:2098
+#: library/unittest.rst:2101
 msgid "Called once before any tests are executed."
 msgstr ""
 
-#: library/unittest.rst:2105
+#: library/unittest.rst:2108
 msgid "Called once after all tests are executed."
 msgstr ""
 
-#: library/unittest.rst:2112
+#: library/unittest.rst:2115
 msgid ""
 "Called when the test case *test* raises an unexpected exception. *err* is a "
 "tuple of the form returned by :func:`sys.exc_info`: ``(type, value, "
 "traceback)``."
 msgstr ""
 
-#: library/unittest.rst:2116
+#: library/unittest.rst:2119
 msgid ""
 "The default implementation appends a tuple ``(test, formatted_err)`` to the "
 "instance's :attr:`errors` attribute, where *formatted_err* is a formatted "
 "traceback derived from *err*."
 msgstr ""
 
-#: library/unittest.rst:2123
+#: library/unittest.rst:2126
 msgid ""
 "Called when the test case *test* signals a failure. *err* is a tuple of the "
 "form returned by :func:`sys.exc_info`: ``(type, value, traceback)``."
 msgstr ""
 
-#: library/unittest.rst:2126
+#: library/unittest.rst:2129
 msgid ""
 "The default implementation appends a tuple ``(test, formatted_err)`` to the "
 "instance's :attr:`failures` attribute, where *formatted_err* is a formatted "
 "traceback derived from *err*."
 msgstr ""
 
-#: library/unittest.rst:2133
+#: library/unittest.rst:2136
 msgid "Called when the test case *test* succeeds."
 msgstr ""
 
-#: library/unittest.rst:2135
+#: library/unittest.rst:2138
 msgid "The default implementation does nothing."
 msgstr ""
 
-#: library/unittest.rst:2140
+#: library/unittest.rst:2143
 msgid ""
 "Called when the test case *test* is skipped.  *reason* is the reason the "
 "test gave for skipping."
 msgstr ""
 
-#: library/unittest.rst:2143
+#: library/unittest.rst:2146
 msgid ""
 "The default implementation appends a tuple ``(test, reason)`` to the "
 "instance's :attr:`skipped` attribute."
 msgstr ""
 
-#: library/unittest.rst:2149
+#: library/unittest.rst:2152
 msgid ""
 "Called when the test case *test* fails or errors, but was marked with the :"
 "func:`expectedFailure` decorator."
 msgstr ""
 
-#: library/unittest.rst:2152
+#: library/unittest.rst:2155
 msgid ""
 "The default implementation appends a tuple ``(test, formatted_err)`` to the "
 "instance's :attr:`expectedFailures` attribute, where *formatted_err* is a "
 "formatted traceback derived from *err*."
 msgstr ""
 
-#: library/unittest.rst:2159
+#: library/unittest.rst:2162
 msgid ""
 "Called when the test case *test* was marked with the :func:`expectedFailure` "
 "decorator, but succeeded."
 msgstr ""
 
-#: library/unittest.rst:2162
+#: library/unittest.rst:2165
 msgid ""
 "The default implementation appends the test to the instance's :attr:"
 "`unexpectedSuccesses` attribute."
 msgstr ""
 
-#: library/unittest.rst:2168
+#: library/unittest.rst:2171
 msgid ""
 "Called when a subtest finishes.  *test* is the test case corresponding to "
 "the test method.  *subtest* is a custom :class:`TestCase` instance "
 "describing the subtest."
 msgstr ""
 
-#: library/unittest.rst:2172
+#: library/unittest.rst:2175
 msgid ""
 "If *outcome* is :const:`None`, the subtest succeeded.  Otherwise, it failed "
 "with an exception where *outcome* is a tuple of the form returned by :func:"
 "`sys.exc_info`: ``(type, value, traceback)``."
 msgstr ""
 
-#: library/unittest.rst:2176
+#: library/unittest.rst:2179
 msgid ""
 "The default implementation does nothing when the outcome is a success, and "
 "records subtest failures as normal failures."
 msgstr ""
 
-#: library/unittest.rst:2183
+#: library/unittest.rst:2186
 msgid ""
 "Called when the test case finishes.  *elapsed* is the time represented in "
 "seconds, and it includes the execution of cleanup functions."
 msgstr ""
 
-#: library/unittest.rst:2190
+#: library/unittest.rst:2193
 msgid ""
 "A concrete implementation of :class:`TestResult` used by the :class:"
 "`TextTestRunner`. Subclasses should accept ``**kwargs`` to ensure "
 "compatibility as the interface changes."
 msgstr ""
 
-#: library/unittest.rst:2196
+#: library/unittest.rst:2199
 msgid "Added the *durations* keyword parameter."
 msgstr ""
 
-#: library/unittest.rst:2201
+#: library/unittest.rst:2204
 msgid ""
 "Instance of the :class:`TestLoader` class intended to be shared.  If no "
 "customization of the :class:`TestLoader` is needed, this instance can be "
 "used instead of repeatedly creating new instances."
 msgstr ""
 
-#: library/unittest.rst:2210
+#: library/unittest.rst:2213
 msgid ""
 "A basic test runner implementation that outputs results to a stream. If "
 "*stream* is ``None``, the default, :data:`sys.stderr` is used as the output "
@@ -2936,7 +2936,7 @@ msgid ""
 "unittest."
 msgstr ""
 
-#: library/unittest.rst:2217
+#: library/unittest.rst:2220
 msgid ""
 "By default this runner shows :exc:`DeprecationWarning`, :exc:"
 "`PendingDeprecationWarning`, :exc:`ResourceWarning` and :exc:`ImportWarning` "
@@ -2946,32 +2946,32 @@ msgid ""
 "``None``."
 msgstr ""
 
-#: library/unittest.rst:2225
+#: library/unittest.rst:2228
 msgid "Added the *warnings* parameter."
 msgstr ""
 
-#: library/unittest.rst:2228
+#: library/unittest.rst:2231
 msgid ""
 "The default stream is set to :data:`sys.stderr` at instantiation time rather "
 "than import time."
 msgstr ""
 
-#: library/unittest.rst:2232
+#: library/unittest.rst:2235
 msgid "Added the *tb_locals* parameter."
 msgstr ""
 
-#: library/unittest.rst:2235
+#: library/unittest.rst:2238
 msgid "Added the *durations* parameter."
 msgstr ""
 
-#: library/unittest.rst:2240
+#: library/unittest.rst:2243
 msgid ""
 "This method returns the instance of ``TestResult`` used by :meth:`run`. It "
 "is not intended to be called directly, but can be overridden in subclasses "
 "to provide a custom ``TestResult``."
 msgstr ""
 
-#: library/unittest.rst:2244
+#: library/unittest.rst:2247
 msgid ""
 "``_makeResult()`` instantiates the class or callable passed in the "
 "``TextTestRunner`` constructor as the ``resultclass`` argument. It defaults "
@@ -2979,11 +2979,11 @@ msgid ""
 "class is instantiated with the following arguments::"
 msgstr ""
 
-#: library/unittest.rst:2249
+#: library/unittest.rst:2252
 msgid "stream, descriptions, verbosity"
 msgstr ""
 
-#: library/unittest.rst:2253
+#: library/unittest.rst:2256
 msgid ""
 "This method is the main public interface to the ``TextTestRunner``. This "
 "method takes a :class:`TestSuite` or :class:`TestCase` instance. A :class:"
@@ -2991,7 +2991,7 @@ msgid ""
 "run and the results printed to stdout."
 msgstr ""
 
-#: library/unittest.rst:2264
+#: library/unittest.rst:2267
 msgid ""
 "A command-line program that loads a set of tests from *module* and runs "
 "them; this is primarily for making test modules conveniently executable. The "
@@ -2999,25 +2999,25 @@ msgid ""
 "of a test script::"
 msgstr ""
 
-#: library/unittest.rst:2269
+#: library/unittest.rst:2272
 msgid ""
 "if __name__ == '__main__':\n"
 "    unittest.main()"
 msgstr ""
 
-#: library/unittest.rst:2272
+#: library/unittest.rst:2275
 msgid ""
 "You can run tests with more detailed information by passing in the verbosity "
 "argument::"
 msgstr ""
 
-#: library/unittest.rst:2275
+#: library/unittest.rst:2278
 msgid ""
 "if __name__ == '__main__':\n"
 "    unittest.main(verbosity=2)"
 msgstr ""
 
-#: library/unittest.rst:2278
+#: library/unittest.rst:2281
 msgid ""
 "The *defaultTest* argument is either the name of a single test or an "
 "iterable of test names to run if no test names are specified via *argv*.  If "
@@ -3025,14 +3025,14 @@ msgid ""
 "tests found in *module* are run."
 msgstr ""
 
-#: library/unittest.rst:2283
+#: library/unittest.rst:2286
 msgid ""
 "The *argv* argument can be a list of options passed to the program, with the "
 "first element being the program name.  If not specified or ``None``, the "
 "values of :data:`sys.argv` are used."
 msgstr ""
 
-#: library/unittest.rst:2287
+#: library/unittest.rst:2290
 msgid ""
 "The *testRunner* argument can either be a test runner class or an already "
 "created instance of it. By default ``main`` calls :func:`sys.exit` with an "
@@ -3040,32 +3040,32 @@ msgid ""
 "code of 5 indicates that no tests were run or skipped."
 msgstr ""
 
-#: library/unittest.rst:2292
+#: library/unittest.rst:2295
 msgid ""
 "The *testLoader* argument has to be a :class:`TestLoader` instance, and "
 "defaults to :data:`defaultTestLoader`."
 msgstr ""
 
-#: library/unittest.rst:2295
+#: library/unittest.rst:2298
 msgid ""
 "``main`` supports being used from the interactive interpreter by passing in "
 "the argument ``exit=False``. This displays the result on standard output "
 "without calling :func:`sys.exit`::"
 msgstr ""
 
-#: library/unittest.rst:2299
+#: library/unittest.rst:2302
 msgid ""
 ">>> from unittest import main\n"
 ">>> main(module='test_module', exit=False)"
 msgstr ""
 
-#: library/unittest.rst:2302
+#: library/unittest.rst:2305
 msgid ""
 "The *failfast*, *catchbreak* and *buffer* parameters have the same effect as "
 "the same-name `command-line options`_."
 msgstr ""
 
-#: library/unittest.rst:2305
+#: library/unittest.rst:2308
 msgid ""
 "The *warnings* argument specifies the :ref:`warning filter <warning-filter>` "
 "that should be used while running the tests.  If it's not specified, it will "
@@ -3074,60 +3074,60 @@ msgid ""
 "to ``'default'``."
 msgstr ""
 
-#: library/unittest.rst:2311
+#: library/unittest.rst:2314
 msgid ""
 "Calling ``main`` returns an object with the ``result`` attribute that "
 "contains the result of the tests run as a :class:`unittest.TestResult`."
 msgstr ""
 
-#: library/unittest.rst:2314
+#: library/unittest.rst:2317
 msgid "The *exit* parameter was added."
 msgstr ""
 
-#: library/unittest.rst:2317
+#: library/unittest.rst:2320
 msgid ""
 "The *verbosity*, *failfast*, *catchbreak*, *buffer* and *warnings* "
 "parameters were added."
 msgstr ""
 
-#: library/unittest.rst:2321
+#: library/unittest.rst:2324
 msgid ""
 "The *defaultTest* parameter was changed to also accept an iterable of test "
 "names."
 msgstr ""
 
-#: library/unittest.rst:2329
+#: library/unittest.rst:2332
 msgid "load_tests Protocol"
 msgstr ""
 
-#: library/unittest.rst:2333
+#: library/unittest.rst:2336
 msgid ""
 "Modules or packages can customize how tests are loaded from them during "
 "normal test runs or test discovery by implementing a function called "
 "``load_tests``."
 msgstr ""
 
-#: library/unittest.rst:2336
+#: library/unittest.rst:2339
 msgid ""
 "If a test module defines ``load_tests`` it will be called by :meth:"
 "`TestLoader.loadTestsFromModule` with the following arguments::"
 msgstr ""
 
-#: library/unittest.rst:2371
+#: library/unittest.rst:2374
 msgid "load_tests(loader, standard_tests, pattern)"
 msgstr ""
 
-#: library/unittest.rst:2341
+#: library/unittest.rst:2344
 msgid ""
 "where *pattern* is passed straight through from ``loadTestsFromModule``.  It "
 "defaults to ``None``."
 msgstr ""
 
-#: library/unittest.rst:2344
+#: library/unittest.rst:2347
 msgid "It should return a :class:`TestSuite`."
 msgstr ""
 
-#: library/unittest.rst:2346
+#: library/unittest.rst:2349
 msgid ""
 "*loader* is the instance of :class:`TestLoader` doing the loading. "
 "*standard_tests* are the tests that would be loaded by default from the "
@@ -3136,13 +3136,13 @@ msgid ""
 "packages as part of test discovery."
 msgstr ""
 
-#: library/unittest.rst:2352
+#: library/unittest.rst:2355
 msgid ""
 "A typical ``load_tests`` function that loads tests from a specific set of :"
 "class:`TestCase` classes may look like::"
 msgstr ""
 
-#: library/unittest.rst:2355
+#: library/unittest.rst:2358
 msgid ""
 "test_cases = (TestCase1, TestCase2, TestCase3)\n"
 "\n"
@@ -3154,7 +3154,7 @@ msgid ""
 "    return suite"
 msgstr ""
 
-#: library/unittest.rst:2364
+#: library/unittest.rst:2367
 msgid ""
 "If discovery is started in a directory containing a package, either from the "
 "command line or by calling :meth:`TestLoader.discover`, then the package :"
@@ -3164,21 +3164,21 @@ msgid ""
 "left up to ``load_tests`` which is called with the following arguments::"
 msgstr ""
 
-#: library/unittest.rst:2373
+#: library/unittest.rst:2376
 msgid ""
 "This should return a :class:`TestSuite` representing all the tests from the "
 "package. (``standard_tests`` will only contain tests collected from :file:"
 "`__init__.py`.)"
 msgstr ""
 
-#: library/unittest.rst:2377
+#: library/unittest.rst:2380
 msgid ""
 "Because the pattern is passed into ``load_tests`` the package is free to "
 "continue (and potentially modify) test discovery. A 'do nothing' "
 "``load_tests`` function for a test package would look like::"
 msgstr ""
 
-#: library/unittest.rst:2381
+#: library/unittest.rst:2384
 msgid ""
 "def load_tests(loader, standard_tests, pattern):\n"
 "    # top level directory cached on loader instance\n"
@@ -3188,17 +3188,17 @@ msgid ""
 "    return standard_tests"
 msgstr ""
 
-#: library/unittest.rst:2388
+#: library/unittest.rst:2391
 msgid ""
 "Discovery no longer checks package names for matching *pattern* due to the "
 "impossibility of package names matching the default pattern."
 msgstr ""
 
-#: library/unittest.rst:2395
+#: library/unittest.rst:2398
 msgid "Class and Module Fixtures"
 msgstr ""
 
-#: library/unittest.rst:2397
+#: library/unittest.rst:2400
 msgid ""
 "Class and module level fixtures are implemented in :class:`TestSuite`. When "
 "the test suite encounters a test from a new class then :meth:`tearDownClass` "
@@ -3206,27 +3206,27 @@ msgid ""
 "`setUpClass` from the new class."
 msgstr ""
 
-#: library/unittest.rst:2402
+#: library/unittest.rst:2405
 msgid ""
 "Similarly if a test is from a different module from the previous test then "
 "``tearDownModule`` from the previous module is run, followed by "
 "``setUpModule`` from the new module."
 msgstr ""
 
-#: library/unittest.rst:2406
+#: library/unittest.rst:2409
 msgid ""
 "After all the tests have run the final ``tearDownClass`` and "
 "``tearDownModule`` are run."
 msgstr ""
 
-#: library/unittest.rst:2409
+#: library/unittest.rst:2412
 msgid ""
 "Note that shared fixtures do not play well with [potential] features like "
 "test parallelization and they break test isolation. They should be used with "
 "care."
 msgstr ""
 
-#: library/unittest.rst:2412
+#: library/unittest.rst:2415
 msgid ""
 "The default ordering of tests created by the unittest test loaders is to "
 "group all tests from the same modules and classes together. This will lead "
@@ -3236,14 +3236,14 @@ msgid ""
 "functions may be called multiple times in a single test run."
 msgstr ""
 
-#: library/unittest.rst:2419
+#: library/unittest.rst:2422
 msgid ""
 "Shared fixtures are not intended to work with suites with non-standard "
 "ordering. A ``BaseTestSuite`` still exists for frameworks that don't want to "
 "support shared fixtures."
 msgstr ""
 
-#: library/unittest.rst:2423
+#: library/unittest.rst:2426
 msgid ""
 "If there are any exceptions raised during one of the shared fixture "
 "functions the test is reported as an error. Because there is no "
@@ -3253,15 +3253,15 @@ msgid ""
 "matter, but if you are a framework author it may be relevant."
 msgstr ""
 
-#: library/unittest.rst:2432
+#: library/unittest.rst:2435
 msgid "setUpClass and tearDownClass"
 msgstr ""
 
-#: library/unittest.rst:2434
+#: library/unittest.rst:2437
 msgid "These must be implemented as class methods::"
 msgstr ""
 
-#: library/unittest.rst:2436
+#: library/unittest.rst:2439
 msgid ""
 "import unittest\n"
 "\n"
@@ -3275,14 +3275,14 @@ msgid ""
 "        cls._connection.destroy()"
 msgstr ""
 
-#: library/unittest.rst:2447
+#: library/unittest.rst:2450
 msgid ""
 "If you want the ``setUpClass`` and ``tearDownClass`` on base classes called "
 "then you must call up to them yourself. The implementations in :class:"
 "`TestCase` are empty."
 msgstr ""
 
-#: library/unittest.rst:2451
+#: library/unittest.rst:2454
 msgid ""
 "If an exception is raised during a ``setUpClass`` then the tests in the "
 "class are not run and the ``tearDownClass`` is not run. Skipped classes will "
@@ -3291,15 +3291,15 @@ msgid ""
 "instead of as an error."
 msgstr ""
 
-#: library/unittest.rst:2459
+#: library/unittest.rst:2462
 msgid "setUpModule and tearDownModule"
 msgstr ""
 
-#: library/unittest.rst:2461
+#: library/unittest.rst:2464
 msgid "These should be implemented as functions::"
 msgstr ""
 
-#: library/unittest.rst:2463
+#: library/unittest.rst:2466
 msgid ""
 "def setUpModule():\n"
 "    createConnection()\n"
@@ -3308,7 +3308,7 @@ msgid ""
 "    closeConnection()"
 msgstr ""
 
-#: library/unittest.rst:2469
+#: library/unittest.rst:2472
 msgid ""
 "If an exception is raised in a ``setUpModule`` then none of the tests in the "
 "module will be run and the ``tearDownModule`` will not be run. If the "
@@ -3316,13 +3316,13 @@ msgid ""
 "having been skipped instead of as an error."
 msgstr ""
 
-#: library/unittest.rst:2474
+#: library/unittest.rst:2477
 msgid ""
 "To add cleanup code that must be run even in the case of an exception, use "
 "``addModuleCleanup``:"
 msgstr ""
 
-#: library/unittest.rst:2480
+#: library/unittest.rst:2483
 msgid ""
 "Add a function to be called after :func:`tearDownModule` to cleanup "
 "resources used during the test class. Functions will be called in reverse "
@@ -3331,13 +3331,13 @@ msgid ""
 "`addModuleCleanup` when they are added."
 msgstr ""
 
-#: library/unittest.rst:2486
+#: library/unittest.rst:2489
 msgid ""
 "If :meth:`setUpModule` fails, meaning that :func:`tearDownModule` is not "
 "called, then any cleanup functions added will still be called."
 msgstr ""
 
-#: library/unittest.rst:2494
+#: library/unittest.rst:2497
 msgid ""
 "Enter the supplied :term:`context manager`.  If successful, also add its :"
 "meth:`~object.__exit__` method as a cleanup function by :func:"
@@ -3345,30 +3345,30 @@ msgid ""
 "method."
 msgstr ""
 
-#: library/unittest.rst:2504
+#: library/unittest.rst:2507
 msgid ""
 "This function is called unconditionally after :func:`tearDownModule`, or "
 "after :func:`setUpModule` if :func:`setUpModule` raises an exception."
 msgstr ""
 
-#: library/unittest.rst:2507
+#: library/unittest.rst:2510
 msgid ""
 "It is responsible for calling all the cleanup functions added by :func:"
 "`addModuleCleanup`. If you need cleanup functions to be called *prior* to :"
 "func:`tearDownModule` then you can call :func:`doModuleCleanups` yourself."
 msgstr ""
 
-#: library/unittest.rst:2512
+#: library/unittest.rst:2515
 msgid ""
 ":func:`doModuleCleanups` pops methods off the stack of cleanup functions one "
 "at a time, so it can be called at any time."
 msgstr ""
 
-#: library/unittest.rst:2519
+#: library/unittest.rst:2522
 msgid "Signal Handling"
 msgstr ""
 
-#: library/unittest.rst:2523
+#: library/unittest.rst:2526
 msgid ""
 "The :option:`-c/--catch <unittest -c>` command-line option to unittest, "
 "along with the ``catchbreak`` parameter to :func:`unittest.main`, provide "
@@ -3378,7 +3378,7 @@ msgid ""
 "A second control-c will raise a :exc:`KeyboardInterrupt` in the usual way."
 msgstr ""
 
-#: library/unittest.rst:2530
+#: library/unittest.rst:2533
 msgid ""
 "The control-c handling signal handler attempts to remain compatible with "
 "code or tests that install their own :const:`signal.SIGINT` handler. If the "
@@ -3390,48 +3390,48 @@ msgid ""
 "disabled the :func:`removeHandler` decorator can be used."
 msgstr ""
 
-#: library/unittest.rst:2539
+#: library/unittest.rst:2542
 msgid ""
 "There are a few utility functions for framework authors to enable control-c "
 "handling functionality within test frameworks."
 msgstr ""
 
-#: library/unittest.rst:2544
+#: library/unittest.rst:2547
 msgid ""
 "Install the control-c handler. When a :const:`signal.SIGINT` is received "
 "(usually in response to the user pressing control-c) all registered results "
 "have :meth:`~TestResult.stop` called."
 msgstr ""
 
-#: library/unittest.rst:2551
+#: library/unittest.rst:2554
 msgid ""
 "Register a :class:`TestResult` object for control-c handling. Registering a "
 "result stores a weak reference to it, so it doesn't prevent the result from "
 "being garbage collected."
 msgstr ""
 
-#: library/unittest.rst:2555
+#: library/unittest.rst:2558
 msgid ""
 "Registering a :class:`TestResult` object has no side-effects if control-c "
 "handling is not enabled, so test frameworks can unconditionally register all "
 "results they create independently of whether or not handling is enabled."
 msgstr ""
 
-#: library/unittest.rst:2562
+#: library/unittest.rst:2565
 msgid ""
 "Remove a registered result. Once a result has been removed then :meth:"
 "`~TestResult.stop` will no longer be called on that result object in "
 "response to a control-c."
 msgstr ""
 
-#: library/unittest.rst:2569
+#: library/unittest.rst:2572
 msgid ""
 "When called without arguments this function removes the control-c handler if "
 "it has been installed. This function can also be used as a test decorator to "
 "temporarily remove the handler while the test is being executed::"
 msgstr ""
 
-#: library/unittest.rst:2573
+#: library/unittest.rst:2576
 msgid ""
 "@unittest.removeHandler\n"
 "def test_signal_handling(self):\n"
diff --git a/library/urllib.parse.po b/library/urllib.parse.po
index 3dd0601e1..db4da83ca 100644
--- a/library/urllib.parse.po
+++ b/library/urllib.parse.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -147,19 +147,19 @@ msgid ""
 "accessed by index or as named attributes, which are:"
 msgstr ""
 
-#: library/urllib.parse.rst:302 library/urllib.parse.rst:415
+#: library/urllib.parse.rst:302 library/urllib.parse.rst:424
 msgid "Attribute"
 msgstr ""
 
-#: library/urllib.parse.rst:302 library/urllib.parse.rst:415
+#: library/urllib.parse.rst:302 library/urllib.parse.rst:424
 msgid "Index"
 msgstr ""
 
-#: library/urllib.parse.rst:302 library/urllib.parse.rst:415
+#: library/urllib.parse.rst:302 library/urllib.parse.rst:424
 msgid "Value"
 msgstr ""
 
-#: library/urllib.parse.rst:302 library/urllib.parse.rst:415
+#: library/urllib.parse.rst:302 library/urllib.parse.rst:424
 msgid "Value if not present"
 msgstr ""
 
@@ -167,7 +167,7 @@ msgstr ""
 msgid ":attr:`scheme`"
 msgstr ""
 
-#: library/urllib.parse.rst:304 library/urllib.parse.rst:417
+#: library/urllib.parse.rst:304 library/urllib.parse.rst:426
 msgid "0"
 msgstr ""
 
@@ -183,7 +183,7 @@ msgstr ""
 msgid ":attr:`netloc`"
 msgstr ""
 
-#: library/urllib.parse.rst:306 library/urllib.parse.rst:419
+#: library/urllib.parse.rst:306 library/urllib.parse.rst:428
 msgid "1"
 msgstr ""
 
@@ -193,7 +193,7 @@ msgstr ""
 
 #: library/urllib.parse.rst:119 library/urllib.parse.rst:124
 #: library/urllib.parse.rst:306 library/urllib.parse.rst:310
-#: library/urllib.parse.rst:417 library/urllib.parse.rst:419
+#: library/urllib.parse.rst:426 library/urllib.parse.rst:428
 msgid "empty string"
 msgstr ""
 
@@ -233,7 +233,7 @@ msgstr ""
 msgid "Query component"
 msgstr ""
 
-#: library/urllib.parse.rst:312 library/urllib.parse.rst:419
+#: library/urllib.parse.rst:312 library/urllib.parse.rst:428
 msgid ":attr:`fragment`"
 msgstr ""
 
@@ -241,7 +241,7 @@ msgstr ""
 msgid "5"
 msgstr ""
 
-#: library/urllib.parse.rst:312 library/urllib.parse.rst:419
+#: library/urllib.parse.rst:312 library/urllib.parse.rst:428
 msgid "Fragment identifier"
 msgstr ""
 
@@ -457,7 +457,7 @@ msgid ""
 "(addressing scheme, network location, path, query, fragment identifier)."
 msgstr ""
 
-#: library/urllib.parse.rst:411
+#: library/urllib.parse.rst:420
 msgid ""
 "The return value is a :term:`named tuple`, its items can be accessed by "
 "index or as named attributes:"
@@ -528,11 +528,20 @@ msgid ""
 "and :func:`urlunsplit`, removing possible *scheme* and *netloc* parts."
 msgstr ""
 
-#: library/urllib.parse.rst:401
+#: library/urllib.parse.rst:400
+msgid ""
+"Because an absolute URL may be passed as the ``url`` parameter, it is "
+"generally **not secure** to use ``urljoin`` with an attacker-controlled "
+"``url``. For example in, ``urljoin(\"https://website.com/users/\", "
+"username)``, if ``username`` can contain an absolute URL, the result of "
+"``urljoin`` will be the absolute URL."
+msgstr ""
+
+#: library/urllib.parse.rst:410
 msgid "Behavior updated to match the semantics defined in :rfc:`3986`."
 msgstr ""
 
-#: library/urllib.parse.rst:406
+#: library/urllib.parse.rst:415
 msgid ""
 "If *url* contains a fragment identifier, return a modified version of *url* "
 "with no fragment identifier, and the fragment identifier as a separate "
@@ -540,25 +549,25 @@ msgid ""
 "unmodified and an empty string."
 msgstr ""
 
-#: library/urllib.parse.rst:417
+#: library/urllib.parse.rst:426
 msgid ":attr:`url`"
 msgstr ""
 
-#: library/urllib.parse.rst:417
+#: library/urllib.parse.rst:426
 msgid "URL with no fragment"
 msgstr ""
 
-#: library/urllib.parse.rst:422
+#: library/urllib.parse.rst:431
 msgid ""
 "See section :ref:`urlparse-result-object` for more information on the result "
 "object."
 msgstr ""
 
-#: library/urllib.parse.rst:425
+#: library/urllib.parse.rst:434
 msgid "Result is a structured object rather than a simple 2-tuple."
 msgstr ""
 
-#: library/urllib.parse.rst:430
+#: library/urllib.parse.rst:439
 msgid ""
 "Extract the url from a wrapped URL (that is, a string formatted as ``<URL:"
 "scheme://host/path>``, ``<scheme://host/path>``, ``URL:scheme://host/path`` "
@@ -566,11 +575,11 @@ msgid ""
 "without changes."
 msgstr ""
 
-#: library/urllib.parse.rst:438
+#: library/urllib.parse.rst:447
 msgid "URL parsing security"
 msgstr ""
 
-#: library/urllib.parse.rst:440
+#: library/urllib.parse.rst:449
 msgid ""
 "The :func:`urlsplit` and :func:`urlparse` APIs do not perform **validation** "
 "of inputs.  They may not raise errors on inputs that other applications "
@@ -579,14 +588,14 @@ msgid ""
 "rather than purity."
 msgstr ""
 
-#: library/urllib.parse.rst:446
+#: library/urllib.parse.rst:455
 msgid ""
 "Instead of raising an exception on unusual input, they may instead return "
 "some component parts as empty strings. Or components may contain more than "
 "perhaps they should."
 msgstr ""
 
-#: library/urllib.parse.rst:450
+#: library/urllib.parse.rst:459
 msgid ""
 "We recommend that users of these APIs where the values may be used anywhere "
 "with security implications code defensively. Do some verification within "
@@ -595,7 +604,7 @@ msgid ""
 "that ``hostname``?  etc."
 msgstr ""
 
-#: library/urllib.parse.rst:456
+#: library/urllib.parse.rst:465
 msgid ""
 "What constitutes a URL is not universally well defined.  Different "
 "applications have different needs and desired constraints.  For instance the "
@@ -607,11 +616,11 @@ msgid ""
 "API behavior changes."
 msgstr ""
 
-#: library/urllib.parse.rst:467
+#: library/urllib.parse.rst:476
 msgid "Parsing ASCII Encoded Bytes"
 msgstr ""
 
-#: library/urllib.parse.rst:469
+#: library/urllib.parse.rst:478
 msgid ""
 "The URL parsing functions were originally designed to operate on character "
 "strings only. In practice, it is useful to be able to manipulate properly "
@@ -620,14 +629,14 @@ msgid ""
 "`bytearray` objects in addition to :class:`str` objects."
 msgstr ""
 
-#: library/urllib.parse.rst:475
+#: library/urllib.parse.rst:484
 msgid ""
 "If :class:`str` data is passed in, the result will also contain only :class:"
 "`str` data. If :class:`bytes` or :class:`bytearray` data is passed in, the "
 "result will contain only :class:`bytes` data."
 msgstr ""
 
-#: library/urllib.parse.rst:479
+#: library/urllib.parse.rst:488
 msgid ""
 "Attempting to mix :class:`str` data with :class:`bytes` or :class:"
 "`bytearray` in a single function call will result in a :exc:`TypeError` "
@@ -635,7 +644,7 @@ msgid ""
 "trigger :exc:`UnicodeDecodeError`."
 msgstr ""
 
-#: library/urllib.parse.rst:484
+#: library/urllib.parse.rst:493
 msgid ""
 "To support easier conversion of result objects between :class:`str` and :"
 "class:`bytes`, all return values from URL parsing functions provide either "
@@ -648,14 +657,14 @@ msgid ""
 "`str` data (for :meth:`decode` methods)."
 msgstr ""
 
-#: library/urllib.parse.rst:495
+#: library/urllib.parse.rst:504
 msgid ""
 "Applications that need to operate on potentially improperly quoted URLs that "
 "may contain non-ASCII data will need to do their own decoding from bytes to "
 "characters before invoking the URL parsing methods."
 msgstr ""
 
-#: library/urllib.parse.rst:499
+#: library/urllib.parse.rst:508
 msgid ""
 "The behaviour described in this section applies only to the URL parsing "
 "functions. The URL quoting functions use their own rules when producing or "
@@ -663,15 +672,15 @@ msgid ""
 "URL quoting functions."
 msgstr ""
 
-#: library/urllib.parse.rst:504
+#: library/urllib.parse.rst:513
 msgid "URL parsing functions now accept ASCII encoded byte sequences"
 msgstr ""
 
-#: library/urllib.parse.rst:511
+#: library/urllib.parse.rst:520
 msgid "Structured Parse Results"
 msgstr ""
 
-#: library/urllib.parse.rst:513
+#: library/urllib.parse.rst:522
 msgid ""
 "The result objects from the :func:`urlparse`, :func:`urlsplit`  and :func:"
 "`urldefrag` functions are subclasses of the :class:`tuple` type. These "
@@ -680,7 +689,7 @@ msgid ""
 "section, as well as an additional method:"
 msgstr ""
 
-#: library/urllib.parse.rst:521
+#: library/urllib.parse.rst:530
 msgid ""
 "Return the re-combined version of the original URL as a string. This may "
 "differ from the original URL in that the scheme may be normalized to lower "
@@ -688,72 +697,72 @@ msgid ""
 "queries, and fragment identifiers will be removed."
 msgstr ""
 
-#: library/urllib.parse.rst:526
+#: library/urllib.parse.rst:535
 msgid ""
 "For :func:`urldefrag` results, only empty fragment identifiers will be "
 "removed. For :func:`urlsplit` and :func:`urlparse` results, all noted "
 "changes will be made to the URL returned by this method."
 msgstr ""
 
-#: library/urllib.parse.rst:530
+#: library/urllib.parse.rst:539
 msgid ""
 "The result of this method remains unchanged if passed back through the "
 "original parsing function:"
 msgstr ""
 
-#: library/urllib.parse.rst:543
+#: library/urllib.parse.rst:552
 msgid ""
 "The following classes provide the implementations of the structured parse "
 "results when operating on :class:`str` objects:"
 msgstr ""
 
-#: library/urllib.parse.rst:548
+#: library/urllib.parse.rst:557
 msgid ""
 "Concrete class for :func:`urldefrag` results containing :class:`str` data. "
 "The :meth:`encode` method returns a :class:`DefragResultBytes` instance."
 msgstr ""
 
-#: library/urllib.parse.rst:556
+#: library/urllib.parse.rst:565
 msgid ""
 "Concrete class for :func:`urlparse` results containing :class:`str` data. "
 "The :meth:`encode` method returns a :class:`ParseResultBytes` instance."
 msgstr ""
 
-#: library/urllib.parse.rst:562
+#: library/urllib.parse.rst:571
 msgid ""
 "Concrete class for :func:`urlsplit` results containing :class:`str` data. "
 "The :meth:`encode` method returns a :class:`SplitResultBytes` instance."
 msgstr ""
 
-#: library/urllib.parse.rst:567
+#: library/urllib.parse.rst:576
 msgid ""
 "The following classes provide the implementations of the parse results when "
 "operating on :class:`bytes` or :class:`bytearray` objects:"
 msgstr ""
 
-#: library/urllib.parse.rst:572
+#: library/urllib.parse.rst:581
 msgid ""
 "Concrete class for :func:`urldefrag` results containing :class:`bytes` data. "
 "The :meth:`decode` method returns a :class:`DefragResult` instance."
 msgstr ""
 
-#: library/urllib.parse.rst:580
+#: library/urllib.parse.rst:589
 msgid ""
 "Concrete class for :func:`urlparse` results containing :class:`bytes` data. "
 "The :meth:`decode` method returns a :class:`ParseResult` instance."
 msgstr ""
 
-#: library/urllib.parse.rst:588
+#: library/urllib.parse.rst:597
 msgid ""
 "Concrete class for :func:`urlsplit` results containing :class:`bytes` data. "
 "The :meth:`decode` method returns a :class:`SplitResult` instance."
 msgstr ""
 
-#: library/urllib.parse.rst:596
+#: library/urllib.parse.rst:605
 msgid "URL Quoting"
 msgstr ""
 
-#: library/urllib.parse.rst:598
+#: library/urllib.parse.rst:607
 msgid ""
 "The URL quoting functions focus on taking program data and making it safe "
 "for use as URL components by quoting special characters and appropriately "
@@ -762,7 +771,7 @@ msgid ""
 "isn't already covered by the URL parsing functions above."
 msgstr ""
 
-#: library/urllib.parse.rst:606
+#: library/urllib.parse.rst:615
 msgid ""
 "Replace special characters in *string* using the :samp:`%{xx}` escape. "
 "Letters, digits, and the characters ``'_.-~'`` are never quoted. By default, "
@@ -771,17 +780,17 @@ msgid ""
 "not be quoted --- its default value is ``'/'``."
 msgstr ""
 
-#: library/urllib.parse.rst:658 library/urllib.parse.rst:687
+#: library/urllib.parse.rst:667 library/urllib.parse.rst:696
 msgid "*string* may be either a :class:`str` or a :class:`bytes` object."
 msgstr ""
 
-#: library/urllib.parse.rst:614
+#: library/urllib.parse.rst:623
 msgid ""
 "Moved from :rfc:`2396` to :rfc:`3986` for quoting URL strings. \"~\" is now "
 "included in the set of unreserved characters."
 msgstr ""
 
-#: library/urllib.parse.rst:618
+#: library/urllib.parse.rst:627
 msgid ""
 "The optional *encoding* and *errors* parameters specify how to deal with non-"
 "ASCII characters, as accepted by the :meth:`str.encode` method. *encoding* "
@@ -791,17 +800,17 @@ msgid ""
 "`TypeError` is raised."
 msgstr ""
 
-#: library/urllib.parse.rst:626
+#: library/urllib.parse.rst:635
 msgid ""
 "Note that ``quote(string, safe, encoding, errors)`` is equivalent to "
 "``quote_from_bytes(string.encode(encoding, errors), safe)``."
 msgstr ""
 
-#: library/urllib.parse.rst:629
+#: library/urllib.parse.rst:638
 msgid "Example: ``quote('/El Niño/')`` yields ``'/El%20Ni%C3%B1o/'``."
 msgstr ""
 
-#: library/urllib.parse.rst:634
+#: library/urllib.parse.rst:643
 msgid ""
 "Like :func:`quote`, but also replace spaces with plus signs, as required for "
 "quoting HTML form values when building up a query string to go into a URL. "
@@ -809,21 +818,21 @@ msgid ""
 "*safe*.  It also does not have *safe* default to ``'/'``."
 msgstr ""
 
-#: library/urllib.parse.rst:639
+#: library/urllib.parse.rst:648
 msgid "Example: ``quote_plus('/El Niño/')`` yields ``'%2FEl+Ni%C3%B1o%2F'``."
 msgstr ""
 
-#: library/urllib.parse.rst:644
+#: library/urllib.parse.rst:653
 msgid ""
 "Like :func:`quote`, but accepts a :class:`bytes` object rather than a :class:"
 "`str`, and does not perform string-to-bytes encoding."
 msgstr ""
 
-#: library/urllib.parse.rst:647
+#: library/urllib.parse.rst:656
 msgid "Example: ``quote_from_bytes(b'a&\\xef')`` yields ``'a%26%EF'``."
 msgstr ""
 
-#: library/urllib.parse.rst:653
+#: library/urllib.parse.rst:662
 msgid ""
 "Replace :samp:`%{xx}` escapes with their single-character equivalent. The "
 "optional *encoding* and *errors* parameters specify how to decode percent-"
@@ -831,52 +840,52 @@ msgid ""
 "decode` method."
 msgstr ""
 
-#: library/urllib.parse.rst:660
+#: library/urllib.parse.rst:669
 msgid ""
 "*encoding* defaults to ``'utf-8'``. *errors* defaults to ``'replace'``, "
 "meaning invalid sequences are replaced by a placeholder character."
 msgstr ""
 
-#: library/urllib.parse.rst:664
+#: library/urllib.parse.rst:673
 msgid "Example: ``unquote('/El%20Ni%C3%B1o/')`` yields ``'/El Niño/'``."
 msgstr ""
 
-#: library/urllib.parse.rst:666
+#: library/urllib.parse.rst:675
 msgid ""
 "*string* parameter supports bytes and str objects (previously only str)."
 msgstr ""
 
-#: library/urllib.parse.rst:674
+#: library/urllib.parse.rst:683
 msgid ""
 "Like :func:`unquote`, but also replace plus signs with spaces, as required "
 "for unquoting HTML form values."
 msgstr ""
 
-#: library/urllib.parse.rst:677
+#: library/urllib.parse.rst:686
 msgid "*string* must be a :class:`str`."
 msgstr ""
 
-#: library/urllib.parse.rst:679
+#: library/urllib.parse.rst:688
 msgid "Example: ``unquote_plus('/El+Ni%C3%B1o/')`` yields ``'/El Niño/'``."
 msgstr ""
 
-#: library/urllib.parse.rst:684
+#: library/urllib.parse.rst:693
 msgid ""
 "Replace :samp:`%{xx}` escapes with their single-octet equivalent, and return "
 "a :class:`bytes` object."
 msgstr ""
 
-#: library/urllib.parse.rst:689
+#: library/urllib.parse.rst:698
 msgid ""
 "If it is a :class:`str`, unescaped non-ASCII characters in *string* are "
 "encoded into UTF-8 bytes."
 msgstr ""
 
-#: library/urllib.parse.rst:692
+#: library/urllib.parse.rst:701
 msgid "Example: ``unquote_to_bytes('a%26%EF')`` yields ``b'a&\\xef'``."
 msgstr ""
 
-#: library/urllib.parse.rst:698
+#: library/urllib.parse.rst:707
 msgid ""
 "Convert a mapping object or a sequence of two-element tuples, which may "
 "contain :class:`str` or :class:`bytes` objects, to a percent-encoded ASCII "
@@ -885,7 +894,7 @@ msgid ""
 "be encoded to bytes, otherwise it would result in a :exc:`TypeError`."
 msgstr ""
 
-#: library/urllib.parse.rst:705
+#: library/urllib.parse.rst:714
 msgid ""
 "The resulting string is a series of ``key=value`` pairs separated by ``'&'`` "
 "characters, where both *key* and *value* are quoted using the *quote_via* "
@@ -898,7 +907,7 @@ msgid ""
 "``quote`` and specify a value for *safe*."
 msgstr ""
 
-#: library/urllib.parse.rst:715
+#: library/urllib.parse.rst:724
 msgid ""
 "When a sequence of two-element tuples is used as the *query* argument, the "
 "first element of each tuple is a key and the second is a value. The value "
@@ -909,49 +918,49 @@ msgid ""
 "order of parameter tuples in the sequence."
 msgstr ""
 
-#: library/urllib.parse.rst:723
+#: library/urllib.parse.rst:732
 msgid ""
 "The *safe*, *encoding*, and *errors* parameters are passed down to "
 "*quote_via* (the *encoding* and *errors* parameters are only passed when a "
 "query element is a :class:`str`)."
 msgstr ""
 
-#: library/urllib.parse.rst:727
+#: library/urllib.parse.rst:736
 msgid ""
 "To reverse this encoding process, :func:`parse_qs` and :func:`parse_qsl` are "
 "provided in this module to parse query strings into Python data structures."
 msgstr ""
 
-#: library/urllib.parse.rst:730
+#: library/urllib.parse.rst:739
 msgid ""
 "Refer to :ref:`urllib examples <urllib-examples>` to find out how the :func:"
 "`urllib.parse.urlencode` method can be used for generating the query string "
 "of a URL or data for a POST request."
 msgstr ""
 
-#: library/urllib.parse.rst:734
+#: library/urllib.parse.rst:743
 msgid "*query* supports bytes and string objects."
 msgstr ""
 
-#: library/urllib.parse.rst:737
+#: library/urllib.parse.rst:746
 msgid "Added the *quote_via* parameter."
 msgstr ""
 
-#: library/urllib.parse.rst:743
+#: library/urllib.parse.rst:752
 msgid "`WHATWG`_ -  URL Living standard"
 msgstr ""
 
-#: library/urllib.parse.rst:744
+#: library/urllib.parse.rst:753
 msgid ""
 "Working Group for the URL Standard that defines URLs, domains, IP addresses, "
 "the application/x-www-form-urlencoded format, and their API."
 msgstr ""
 
-#: library/urllib.parse.rst:747
+#: library/urllib.parse.rst:756
 msgid ":rfc:`3986` - Uniform Resource Identifiers"
 msgstr ""
 
-#: library/urllib.parse.rst:748
+#: library/urllib.parse.rst:757
 msgid ""
 "This is the current standard (STD66). Any changes to urllib.parse module "
 "should conform to this. Certain deviations could be observed, which are "
@@ -959,48 +968,48 @@ msgid ""
 "requirements as commonly observed in major browsers."
 msgstr ""
 
-#: library/urllib.parse.rst:753
+#: library/urllib.parse.rst:762
 msgid ":rfc:`2732` - Format for Literal IPv6 Addresses in URL's."
 msgstr ""
 
-#: library/urllib.parse.rst:754
+#: library/urllib.parse.rst:763
 msgid "This specifies the parsing requirements of IPv6 URLs."
 msgstr ""
 
-#: library/urllib.parse.rst:756
+#: library/urllib.parse.rst:765
 msgid ":rfc:`2396` - Uniform Resource Identifiers (URI): Generic Syntax"
 msgstr ""
 
-#: library/urllib.parse.rst:757
+#: library/urllib.parse.rst:766
 msgid ""
 "Document describing the generic syntactic requirements for both Uniform "
 "Resource Names (URNs) and Uniform Resource Locators (URLs)."
 msgstr ""
 
-#: library/urllib.parse.rst:760
+#: library/urllib.parse.rst:769
 msgid ":rfc:`2368` - The mailto URL scheme."
 msgstr ""
 
-#: library/urllib.parse.rst:761
+#: library/urllib.parse.rst:770
 msgid "Parsing requirements for mailto URL schemes."
 msgstr ""
 
-#: library/urllib.parse.rst:763
+#: library/urllib.parse.rst:772
 msgid ":rfc:`1808` - Relative Uniform Resource Locators"
 msgstr ""
 
-#: library/urllib.parse.rst:764
+#: library/urllib.parse.rst:773
 msgid ""
 "This Request For Comments includes the rules for joining an absolute and a "
 "relative URL, including a fair number of \"Abnormal Examples\" which govern "
 "the treatment of border cases."
 msgstr ""
 
-#: library/urllib.parse.rst:768
+#: library/urllib.parse.rst:777
 msgid ":rfc:`1738` - Uniform Resource Locators (URL)"
 msgstr ""
 
-#: library/urllib.parse.rst:769
+#: library/urllib.parse.rst:778
 msgid "This specifies the formal syntax and semantics of absolute URLs."
 msgstr ""
 
diff --git a/library/urllib.request.po b/library/urllib.request.po
index 145b2e9d0..5963ca291 100644
--- a/library/urllib.request.po
+++ b/library/urllib.request.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -239,21 +239,38 @@ msgstr ""
 
 #: library/urllib.request.rst:163
 msgid ""
-"Convert the pathname *path* from the local syntax for a path to the form "
-"used in the path component of a URL.  This does not produce a complete URL.  "
-"The return value will already be quoted using the :func:`~urllib.parse."
-"quote` function."
+"Convert the given local path to a ``file:`` URL. This function uses :func:"
+"`~urllib.parse.quote` function to encode the path. For historical reasons, "
+"the return value omits the ``file:`` scheme prefix. This example shows the "
+"function being used on Windows::"
 msgstr ""
 
-#: library/urllib.request.rst:170
+#: library/urllib.request.rst:168
 msgid ""
-"Convert the path component *path* from a percent-encoded URL to the local "
-"syntax for a path.  This does not accept a complete URL.  This function "
-"uses :func:`~urllib.parse.unquote` to decode *path*."
+">>> from urllib.request import pathname2url\n"
+">>> path = 'C:\\\\Program Files'\n"
+">>> 'file:' + pathname2url(path)\n"
+"'file:///C:/Program%20Files'"
 msgstr ""
 
 #: library/urllib.request.rst:176
 msgid ""
+"Convert the given ``file:`` URL to a local path. This function uses :func:"
+"`~urllib.parse.unquote` to decode the URL. For historical reasons, the given "
+"value *must* omit the ``file:`` scheme prefix. This example shows the "
+"function being used on Windows::"
+msgstr ""
+
+#: library/urllib.request.rst:181
+msgid ""
+">>> from urllib.request import url2pathname\n"
+">>> url = 'file:///C:/Program%20Files'\n"
+">>> url2pathname(url.removeprefix('file:'))\n"
+"'C:\\\\Program Files'"
+msgstr ""
+
+#: library/urllib.request.rst:188
+msgid ""
 "This helper function returns a dictionary of scheme to proxy server URL "
 "mappings. It scans the environment for variables named ``<scheme>_proxy``, "
 "in a case insensitive approach, for all operating systems first, and when it "
@@ -262,7 +279,7 @@ msgid ""
 "uppercase environment variables exist (and disagree), lowercase is preferred."
 msgstr ""
 
-#: library/urllib.request.rst:186
+#: library/urllib.request.rst:198
 msgid ""
 "If the environment variable ``REQUEST_METHOD`` is set, which usually "
 "indicates your script is running in a CGI environment, the environment "
@@ -273,19 +290,19 @@ msgid ""
 "(or at least the ``_proxy`` suffix)."
 msgstr ""
 
-#: library/urllib.request.rst:195
+#: library/urllib.request.rst:207
 msgid "The following classes are provided:"
 msgstr ""
 
-#: library/urllib.request.rst:199
+#: library/urllib.request.rst:211
 msgid "This class is an abstraction of a URL request."
 msgstr ""
 
-#: library/urllib.request.rst:201
+#: library/urllib.request.rst:213
 msgid "*url* should be a string containing a valid, properly encoded URL."
 msgstr ""
 
-#: library/urllib.request.rst:203
+#: library/urllib.request.rst:215
 msgid ""
 "*data* must be an object specifying additional data to send to the server, "
 "or ``None`` if no such data is needed.  Currently HTTP requests are the only "
@@ -298,7 +315,7 @@ msgid ""
 "iterables."
 msgstr ""
 
-#: library/urllib.request.rst:213
+#: library/urllib.request.rst:225
 msgid ""
 "For an HTTP POST request method, *data* should be a buffer in the standard :"
 "mimetype:`application/x-www-form-urlencoded` format.  The :func:`urllib."
@@ -307,7 +324,7 @@ msgid ""
 "being used as the *data* parameter."
 msgstr ""
 
-#: library/urllib.request.rst:219
+#: library/urllib.request.rst:231
 msgid ""
 "*headers* should be a dictionary, and will be treated as if :meth:"
 "`add_header` was called with each key and value as arguments. This is often "
@@ -320,7 +337,7 @@ msgid ""
 "case."
 msgstr ""
 
-#: library/urllib.request.rst:230
+#: library/urllib.request.rst:242
 msgid ""
 "An appropriate ``Content-Type`` header should be included if the *data* "
 "argument is present.  If this header has not been provided and *data* is not "
@@ -328,13 +345,13 @@ msgid ""
 "as a default."
 msgstr ""
 
-#: library/urllib.request.rst:235
+#: library/urllib.request.rst:247
 msgid ""
 "The next two arguments are only of interest for correct handling of third-"
 "party HTTP cookies:"
 msgstr ""
 
-#: library/urllib.request.rst:238
+#: library/urllib.request.rst:250
 msgid ""
 "*origin_req_host* should be the request-host of the origin transaction, as "
 "defined by :rfc:`2965`.  It defaults to ``http.cookiejar."
@@ -344,7 +361,7 @@ msgid ""
 "for the page containing the image."
 msgstr ""
 
-#: library/urllib.request.rst:246
+#: library/urllib.request.rst:258
 msgid ""
 "*unverifiable* should indicate whether the request is unverifiable, as "
 "defined by :rfc:`2965`.  It defaults to ``False``.  An unverifiable request "
@@ -353,7 +370,7 @@ msgid ""
 "option to approve the automatic fetching of the image, this should be true."
 msgstr ""
 
-#: library/urllib.request.rst:253
+#: library/urllib.request.rst:265
 msgid ""
 "*method* should be a string that indicates the HTTP request method that will "
 "be used (e.g. ``'HEAD'``).  If provided, its value is stored in the :attr:"
@@ -363,7 +380,7 @@ msgid ""
 "attribute in the class itself."
 msgstr ""
 
-#: library/urllib.request.rst:261
+#: library/urllib.request.rst:273
 msgid ""
 "The request will not work as expected if the data object is unable to "
 "deliver its content more than once (e.g. a file or an iterable that can "
@@ -373,49 +390,49 @@ msgid ""
 "library."
 msgstr ""
 
-#: library/urllib.request.rst:268
+#: library/urllib.request.rst:280
 msgid ":attr:`Request.method` argument is added to the Request class."
 msgstr ""
 
-#: library/urllib.request.rst:271
+#: library/urllib.request.rst:283
 msgid "Default :attr:`Request.method` may be indicated at the class level."
 msgstr ""
 
-#: library/urllib.request.rst:274
+#: library/urllib.request.rst:286
 msgid ""
 "Do not raise an error if the ``Content-Length`` has not been provided and "
 "*data* is neither ``None`` nor a bytes object. Fall back to use chunked "
 "transfer encoding instead."
 msgstr ""
 
-#: library/urllib.request.rst:281
+#: library/urllib.request.rst:293
 msgid ""
 "The :class:`OpenerDirector` class opens URLs via :class:`BaseHandler`\\ s "
 "chained together. It manages the chaining of handlers, and recovery from "
 "errors."
 msgstr ""
 
-#: library/urllib.request.rst:287
+#: library/urllib.request.rst:299
 msgid ""
 "This is the base class for all registered handlers --- and handles only the "
 "simple mechanics of registration."
 msgstr ""
 
-#: library/urllib.request.rst:293
+#: library/urllib.request.rst:305
 msgid ""
 "A class which defines a default handler for HTTP error responses; all "
 "responses are turned into :exc:`~urllib.error.HTTPError` exceptions."
 msgstr ""
 
-#: library/urllib.request.rst:299
+#: library/urllib.request.rst:311
 msgid "A class to handle redirections."
 msgstr ""
 
-#: library/urllib.request.rst:304
+#: library/urllib.request.rst:316
 msgid "A class to handle HTTP Cookies."
 msgstr ""
 
-#: library/urllib.request.rst:309
+#: library/urllib.request.rst:321
 msgid ""
 "Cause requests to go through a proxy. If *proxies* is given, it must be a "
 "dictionary mapping protocol names to URLs of proxies. The default is to read "
@@ -426,11 +443,11 @@ msgid ""
 "Configuration Framework."
 msgstr ""
 
-#: library/urllib.request.rst:317
+#: library/urllib.request.rst:329
 msgid "To disable autodetected proxy pass an empty dictionary."
 msgstr ""
 
-#: library/urllib.request.rst:319
+#: library/urllib.request.rst:331
 msgid ""
 "The :envvar:`no_proxy` environment variable can be used to specify hosts "
 "which shouldn't be reached via proxy; if set, it should be a comma-separated "
@@ -438,24 +455,24 @@ msgid ""
 "``cern.ch,ncsa.uiuc.edu,some.host:8080``."
 msgstr ""
 
-#: library/urllib.request.rst:326
+#: library/urllib.request.rst:338
 msgid ""
 "``HTTP_PROXY`` will be ignored if a variable ``REQUEST_METHOD`` is set; see "
 "the documentation on :func:`~urllib.request.getproxies`."
 msgstr ""
 
-#: library/urllib.request.rst:332
+#: library/urllib.request.rst:344
 msgid "Keep a database of  ``(realm, uri) -> (user, password)`` mappings."
 msgstr ""
 
-#: library/urllib.request.rst:337
+#: library/urllib.request.rst:349
 msgid ""
 "Keep a database of  ``(realm, uri) -> (user, password)`` mappings. A realm "
 "of ``None`` is considered a catch-all realm, which is searched if no other "
 "realm fits."
 msgstr ""
 
-#: library/urllib.request.rst:344
+#: library/urllib.request.rst:356
 msgid ""
 "A variant of :class:`HTTPPasswordMgrWithDefaultRealm` that also has a "
 "database of ``uri -> is_authenticated`` mappings.  Can be used by a "
@@ -463,7 +480,7 @@ msgid ""
 "immediately instead of waiting for a ``401`` response first."
 msgstr ""
 
-#: library/urllib.request.rst:354
+#: library/urllib.request.rst:366
 msgid ""
 "This is a mixin class that helps with HTTP authentication, both to the "
 "remote host and to a proxy. *password_mgr*, if given, should be something "
@@ -482,11 +499,11 @@ msgid ""
 "will automatically include the authentication credentials."
 msgstr ""
 
-#: library/urllib.request.rst:371
+#: library/urllib.request.rst:383
 msgid "Added ``is_authenticated`` support."
 msgstr ""
 
-#: library/urllib.request.rst:377
+#: library/urllib.request.rst:389
 msgid ""
 "Handle authentication with the remote host. *password_mgr*, if given, should "
 "be something that is compatible with :class:`HTTPPasswordMgr`; refer to "
@@ -495,7 +512,7 @@ msgid ""
 "presented with a wrong Authentication scheme."
 msgstr ""
 
-#: library/urllib.request.rst:420
+#: library/urllib.request.rst:432
 msgid ""
 "Handle authentication with the proxy. *password_mgr*, if given, should be "
 "something that is compatible with :class:`HTTPPasswordMgr`; refer to "
@@ -503,7 +520,7 @@ msgid ""
 "be supported."
 msgstr ""
 
-#: library/urllib.request.rst:394
+#: library/urllib.request.rst:406
 msgid ""
 "This is a mixin class that helps with HTTP authentication, both to the "
 "remote host and to a proxy. *password_mgr*, if given, should be something "
@@ -511,7 +528,7 @@ msgid ""
 "`http-password-mgr` for information on the interface that must be supported."
 msgstr ""
 
-#: library/urllib.request.rst:403
+#: library/urllib.request.rst:415
 msgid ""
 "Handle authentication with the remote host. *password_mgr*, if given, should "
 "be something that is compatible with :class:`HTTPPasswordMgr`; refer to "
@@ -524,108 +541,108 @@ msgid ""
 "Digest or Basic."
 msgstr ""
 
-#: library/urllib.request.rst:413
+#: library/urllib.request.rst:425
 msgid "Raise :exc:`ValueError` on unsupported Authentication Scheme."
 msgstr ""
 
-#: library/urllib.request.rst:428
+#: library/urllib.request.rst:440
 msgid "A class to handle opening of HTTP URLs."
 msgstr ""
 
-#: library/urllib.request.rst:433
+#: library/urllib.request.rst:445
 msgid ""
 "A class to handle opening of HTTPS URLs.  *context* and *check_hostname* "
 "have the same meaning as in :class:`http.client.HTTPSConnection`."
 msgstr ""
 
-#: library/urllib.request.rst:436
+#: library/urllib.request.rst:448
 msgid "*context* and *check_hostname* were added."
 msgstr ""
 
-#: library/urllib.request.rst:442
+#: library/urllib.request.rst:454
 msgid "Open local files."
 msgstr ""
 
-#: library/urllib.request.rst:446
+#: library/urllib.request.rst:458
 msgid "Open data URLs."
 msgstr ""
 
-#: library/urllib.request.rst:452
+#: library/urllib.request.rst:464
 msgid "Open FTP URLs."
 msgstr ""
 
-#: library/urllib.request.rst:457
+#: library/urllib.request.rst:469
 msgid ""
 "Open FTP URLs, keeping a cache of open FTP connections to minimize delays."
 msgstr ""
 
-#: library/urllib.request.rst:462
+#: library/urllib.request.rst:474
 msgid "A catch-all class to handle unknown URLs."
 msgstr ""
 
-#: library/urllib.request.rst:1173
+#: library/urllib.request.rst:1185
 msgid "Process HTTP error responses."
 msgstr ""
 
-#: library/urllib.request.rst:473
+#: library/urllib.request.rst:485
 msgid "Request Objects"
 msgstr ""
 
-#: library/urllib.request.rst:475
+#: library/urllib.request.rst:487
 msgid ""
 "The following methods describe :class:`Request`'s public interface, and so "
 "all may be overridden in subclasses.  It also defines several public "
 "attributes that can be used by clients to inspect the parsed request."
 msgstr ""
 
-#: library/urllib.request.rst:482
+#: library/urllib.request.rst:494
 msgid "The original URL passed to the constructor."
 msgstr ""
 
-#: library/urllib.request.rst:486
+#: library/urllib.request.rst:498
 msgid ""
 "Request.full_url is a property with setter, getter and a deleter. Getting :"
 "attr:`~Request.full_url` returns the original request URL with the fragment, "
 "if it was present."
 msgstr ""
 
-#: library/urllib.request.rst:492
+#: library/urllib.request.rst:504
 msgid "The URI scheme."
 msgstr ""
 
-#: library/urllib.request.rst:496
+#: library/urllib.request.rst:508
 msgid ""
 "The URI authority, typically a host, but may also contain a port separated "
 "by a colon."
 msgstr ""
 
-#: library/urllib.request.rst:501
+#: library/urllib.request.rst:513
 msgid "The original host for the request, without port."
 msgstr ""
 
-#: library/urllib.request.rst:505
+#: library/urllib.request.rst:517
 msgid ""
 "The URI path.  If the :class:`Request` uses a proxy, then selector will be "
 "the full URL that is passed to the proxy."
 msgstr ""
 
-#: library/urllib.request.rst:510
+#: library/urllib.request.rst:522
 msgid "The entity body for the request, or ``None`` if not specified."
 msgstr ""
 
-#: library/urllib.request.rst:512
+#: library/urllib.request.rst:524
 msgid ""
 "Changing value of :attr:`Request.data` now deletes \"Content-Length\" header "
 "if it was previously set or calculated."
 msgstr ""
 
-#: library/urllib.request.rst:518
+#: library/urllib.request.rst:530
 msgid ""
 "boolean, indicates whether the request is unverifiable as defined by :rfc:"
 "`2965`."
 msgstr ""
 
-#: library/urllib.request.rst:523
+#: library/urllib.request.rst:535
 msgid ""
 "The HTTP request method to use.  By default its value is :const:`None`, "
 "which means that :meth:`~Request.get_method` will do its normal computation "
@@ -636,13 +653,13 @@ msgid ""
 "argument."
 msgstr ""
 
-#: library/urllib.request.rst:533
+#: library/urllib.request.rst:545
 msgid ""
 "A default value can now be set in subclasses; previously it could only be "
 "set via the constructor argument."
 msgstr ""
 
-#: library/urllib.request.rst:540
+#: library/urllib.request.rst:552
 msgid ""
 "Return a string indicating the HTTP request method.  If :attr:`Request."
 "method` is not ``None``, return its value, otherwise return ``'GET'`` if :"
@@ -650,11 +667,11 @@ msgid ""
 "meaningful for HTTP requests."
 msgstr ""
 
-#: library/urllib.request.rst:545
+#: library/urllib.request.rst:557
 msgid "get_method now looks at the value of :attr:`Request.method`."
 msgstr ""
 
-#: library/urllib.request.rst:551
+#: library/urllib.request.rst:563
 msgid ""
 "Add another header to the request.  Headers are currently ignored by all "
 "handlers except HTTP handlers, where they are added to the list of headers "
@@ -666,64 +683,64 @@ msgid ""
 "headers added using this method are also added to redirected requests."
 msgstr ""
 
-#: library/urllib.request.rst:563
+#: library/urllib.request.rst:575
 msgid "Add a header that will not be added to a redirected request."
 msgstr ""
 
-#: library/urllib.request.rst:568
+#: library/urllib.request.rst:580
 msgid ""
 "Return whether the instance has the named header (checks both regular and "
 "unredirected)."
 msgstr ""
 
-#: library/urllib.request.rst:574
+#: library/urllib.request.rst:586
 msgid ""
 "Remove named header from the request instance (both from regular and "
 "unredirected headers)."
 msgstr ""
 
-#: library/urllib.request.rst:582
+#: library/urllib.request.rst:594
 msgid "Return the URL given in the constructor."
 msgstr ""
 
-#: library/urllib.request.rst:586
+#: library/urllib.request.rst:598
 msgid "Returns :attr:`Request.full_url`"
 msgstr ""
 
-#: library/urllib.request.rst:591
+#: library/urllib.request.rst:603
 msgid ""
 "Prepare the request by connecting to a proxy server. The *host* and *type* "
 "will replace those of the instance, and the instance's selector will be the "
 "original URL given in the constructor."
 msgstr ""
 
-#: library/urllib.request.rst:598
+#: library/urllib.request.rst:610
 msgid ""
 "Return the value of the given header. If the header is not present, return "
 "the default value."
 msgstr ""
 
-#: library/urllib.request.rst:604
+#: library/urllib.request.rst:616
 msgid ""
 "Return a list of tuples (header_name, header_value) of the Request headers."
 msgstr ""
 
-#: library/urllib.request.rst:606
+#: library/urllib.request.rst:618
 msgid ""
 "The request methods add_data, has_data, get_data, get_type, get_host, "
 "get_selector, get_origin_req_host and is_unverifiable that were deprecated "
 "since 3.3 have been removed."
 msgstr ""
 
-#: library/urllib.request.rst:615
+#: library/urllib.request.rst:627
 msgid "OpenerDirector Objects"
 msgstr ""
 
-#: library/urllib.request.rst:617
+#: library/urllib.request.rst:629
 msgid ":class:`OpenerDirector` instances have the following methods:"
 msgstr ""
 
-#: library/urllib.request.rst:622
+#: library/urllib.request.rst:634
 msgid ""
 "*handler* should be an instance of :class:`BaseHandler`.  The following "
 "methods are searched, and added to the possible chains (note that HTTP "
@@ -734,53 +751,53 @@ msgid ""
 "`http_error_404` would handle HTTP 404 errors."
 msgstr ""
 
-#: library/urllib.request.rst:630
+#: library/urllib.request.rst:642
 msgid ""
 ":meth:`!<protocol>_open` --- signal that the handler knows how to open "
 "*protocol* URLs."
 msgstr ""
 
-#: library/urllib.request.rst:633
+#: library/urllib.request.rst:645
 msgid "See |protocol_open|_ for more information."
 msgstr ""
 
-#: library/urllib.request.rst:635
+#: library/urllib.request.rst:647
 msgid ""
 ":meth:`!http_error_\\<type\\>` --- signal that the handler knows how to "
 "handle HTTP errors with HTTP error code *type*."
 msgstr ""
 
-#: library/urllib.request.rst:638
+#: library/urllib.request.rst:650
 msgid "See |http_error_nnn|_ for more information."
 msgstr ""
 
-#: library/urllib.request.rst:640
+#: library/urllib.request.rst:652
 msgid ""
 ":meth:`!<protocol>_error` --- signal that the handler knows how to handle "
 "errors from (non-\\ ``http``) *protocol*."
 msgstr ""
 
-#: library/urllib.request.rst:643
+#: library/urllib.request.rst:655
 msgid ""
 ":meth:`!<protocol>_request` --- signal that the handler knows how to pre-"
 "process *protocol* requests."
 msgstr ""
 
-#: library/urllib.request.rst:646
+#: library/urllib.request.rst:658
 msgid "See |protocol_request|_ for more information."
 msgstr ""
 
-#: library/urllib.request.rst:648
+#: library/urllib.request.rst:660
 msgid ""
 ":meth:`!<protocol>_response` --- signal that the handler knows how to post-"
 "process *protocol* responses."
 msgstr ""
 
-#: library/urllib.request.rst:651
+#: library/urllib.request.rst:663
 msgid "See |protocol_response|_ for more information."
 msgstr ""
 
-#: library/urllib.request.rst:660
+#: library/urllib.request.rst:672
 msgid ""
 "Open the given *url* (which can be a request object or a string), optionally "
 "passing the given *data*. Arguments, return values and exceptions raised are "
@@ -792,7 +809,7 @@ msgid ""
 "HTTP, HTTPS and FTP connections."
 msgstr ""
 
-#: library/urllib.request.rst:672
+#: library/urllib.request.rst:684
 msgid ""
 "Handle an error of the given protocol.  This will call the registered error "
 "handlers for the given protocol with the given arguments (which are protocol "
@@ -801,28 +818,28 @@ msgid ""
 "http_error_\\<type\\>` methods of the handler classes."
 msgstr ""
 
-#: library/urllib.request.rst:678
+#: library/urllib.request.rst:690
 msgid ""
 "Return values and exceptions raised are the same as those of :func:`urlopen`."
 msgstr ""
 
-#: library/urllib.request.rst:680
+#: library/urllib.request.rst:692
 msgid "OpenerDirector objects open URLs in three stages:"
 msgstr ""
 
-#: library/urllib.request.rst:682
+#: library/urllib.request.rst:694
 msgid ""
 "The order in which these methods are called within each stage is determined "
 "by sorting the handler instances."
 msgstr ""
 
-#: library/urllib.request.rst:685
+#: library/urllib.request.rst:697
 msgid ""
 "Every handler with a method named like :meth:`!<protocol>_request` has that "
 "method called to pre-process the request."
 msgstr ""
 
-#: library/urllib.request.rst:688
+#: library/urllib.request.rst:700
 msgid ""
 "Handlers with a method named like :meth:`!<protocol>_open` are called to "
 "handle the request. This stage ends when a handler either returns a non-\\ :"
@@ -830,7 +847,7 @@ msgid ""
 "`~urllib.error.URLError`).  Exceptions are allowed to propagate."
 msgstr ""
 
-#: library/urllib.request.rst:693
+#: library/urllib.request.rst:705
 msgid ""
 "In fact, the above algorithm is first tried for methods named :meth:"
 "`~BaseHandler.default_open`.  If all such methods return :const:`None`, the "
@@ -839,64 +856,64 @@ msgid ""
 "named :meth:`~BaseHandler.unknown_open`."
 msgstr ""
 
-#: library/urllib.request.rst:699
+#: library/urllib.request.rst:711
 msgid ""
 "Note that the implementation of these methods may involve calls of the "
 "parent :class:`OpenerDirector` instance's :meth:`~OpenerDirector.open` and :"
 "meth:`~OpenerDirector.error` methods."
 msgstr ""
 
-#: library/urllib.request.rst:703
+#: library/urllib.request.rst:715
 msgid ""
 "Every handler with a method named like :meth:`!<protocol>_response` has that "
 "method called to post-process the response."
 msgstr ""
 
-#: library/urllib.request.rst:710
+#: library/urllib.request.rst:722
 msgid "BaseHandler Objects"
 msgstr ""
 
-#: library/urllib.request.rst:712
+#: library/urllib.request.rst:724
 msgid ""
 ":class:`BaseHandler` objects provide a couple of methods that are directly "
 "useful, and others that are meant to be used by derived classes.  These are "
 "intended for direct use:"
 msgstr ""
 
-#: library/urllib.request.rst:719
+#: library/urllib.request.rst:731
 msgid "Add a director as parent."
 msgstr ""
 
-#: library/urllib.request.rst:724
+#: library/urllib.request.rst:736
 msgid "Remove any parents."
 msgstr ""
 
-#: library/urllib.request.rst:726
+#: library/urllib.request.rst:738
 msgid ""
 "The following attribute and methods should only be used by classes derived "
 "from :class:`BaseHandler`."
 msgstr ""
 
-#: library/urllib.request.rst:731
+#: library/urllib.request.rst:743
 msgid ""
 "The convention has been adopted that subclasses defining :meth:`!"
 "<protocol>_request` or :meth:`!<protocol>_response` methods are named :class:"
 "`!\\*Processor`; all others are named :class:`!\\*Handler`."
 msgstr ""
 
-#: library/urllib.request.rst:738
+#: library/urllib.request.rst:750
 msgid ""
 "A valid :class:`OpenerDirector`, which can be used to open using a different "
 "protocol, or handle errors."
 msgstr ""
 
-#: library/urllib.request.rst:744
+#: library/urllib.request.rst:756
 msgid ""
 "This method is *not* defined in :class:`BaseHandler`, but subclasses should "
 "define it if they want to catch all URLs."
 msgstr ""
 
-#: library/urllib.request.rst:747
+#: library/urllib.request.rst:759
 msgid ""
 "This method, if implemented, will be called by the parent :class:"
 "`OpenerDirector`.  It should return a file-like object as described in the "
@@ -906,38 +923,38 @@ msgid ""
 "`MemoryError` should not be mapped to :exc:`~urllib.error.URLError`)."
 msgstr ""
 
-#: library/urllib.request.rst:754
+#: library/urllib.request.rst:766
 msgid "This method will be called before any protocol-specific open method."
 msgstr ""
 
-#: library/urllib.request.rst:761
+#: library/urllib.request.rst:773
 msgid ""
 "This method is *not* defined in :class:`BaseHandler`, but subclasses should "
 "define it if they want to handle URLs with the given protocol."
 msgstr ""
 
-#: library/urllib.request.rst:764
+#: library/urllib.request.rst:776
 msgid ""
 "This method, if defined, will be called by the parent :class:"
 "`OpenerDirector`. Return values should be the same as for  :meth:"
 "`~BaseHandler.default_open`."
 msgstr ""
 
-#: library/urllib.request.rst:770
+#: library/urllib.request.rst:782
 msgid ""
 "This method is *not* defined in :class:`BaseHandler`, but subclasses should "
 "define it if they want to catch all URLs with no specific registered handler "
 "to open it."
 msgstr ""
 
-#: library/urllib.request.rst:774
+#: library/urllib.request.rst:786
 msgid ""
 "This method, if implemented, will be called by the :attr:`parent` :class:"
 "`OpenerDirector`.  Return values should be the same as for :meth:"
 "`default_open`."
 msgstr ""
 
-#: library/urllib.request.rst:781
+#: library/urllib.request.rst:793
 msgid ""
 "This method is *not* defined in :class:`BaseHandler`, but subclasses should "
 "override it if they intend to provide a catch-all for otherwise unhandled "
@@ -946,7 +963,7 @@ msgid ""
 "other circumstances."
 msgstr ""
 
-#: library/urllib.request.rst:786
+#: library/urllib.request.rst:798
 msgid ""
 "*req* will be a :class:`Request` object, *fp* will be a file-like object "
 "with the HTTP error body, *code* will be the three-digit code of the error, "
@@ -954,49 +971,49 @@ msgid ""
 "mapping object with the headers of the error."
 msgstr ""
 
-#: library/urllib.request.rst:791
+#: library/urllib.request.rst:803
 msgid ""
 "Return values and exceptions raised should be the same as those of :func:"
 "`urlopen`."
 msgstr ""
 
-#: library/urllib.request.rst:798
+#: library/urllib.request.rst:810
 msgid ""
 "*nnn* should be a three-digit HTTP error code.  This method is also not "
 "defined in :class:`BaseHandler`, but will be called, if it exists, on an "
 "instance of a subclass, when an HTTP error with code *nnn* occurs."
 msgstr ""
 
-#: library/urllib.request.rst:802
+#: library/urllib.request.rst:814
 msgid "Subclasses should override this method to handle specific HTTP errors."
 msgstr ""
 
-#: library/urllib.request.rst:804
+#: library/urllib.request.rst:816
 msgid ""
 "Arguments, return values and exceptions raised should be the same as for :"
 "meth:`~BaseHandler.http_error_default`."
 msgstr ""
 
-#: library/urllib.request.rst:812
+#: library/urllib.request.rst:824
 msgid ""
 "This method is *not* defined in :class:`BaseHandler`, but subclasses should "
 "define it if they want to pre-process requests of the given protocol."
 msgstr ""
 
-#: library/urllib.request.rst:815
+#: library/urllib.request.rst:827
 msgid ""
 "This method, if defined, will be called by the parent :class:"
 "`OpenerDirector`. *req* will be a :class:`Request` object. The return value "
 "should be a :class:`Request` object."
 msgstr ""
 
-#: library/urllib.request.rst:824
+#: library/urllib.request.rst:836
 msgid ""
 "This method is *not* defined in :class:`BaseHandler`, but subclasses should "
 "define it if they want to post-process responses of the given protocol."
 msgstr ""
 
-#: library/urllib.request.rst:827
+#: library/urllib.request.rst:839
 msgid ""
 "This method, if defined, will be called by the parent :class:"
 "`OpenerDirector`. *req* will be a :class:`Request` object. *response* will "
@@ -1005,25 +1022,25 @@ msgid ""
 "return value of :func:`urlopen`."
 msgstr ""
 
-#: library/urllib.request.rst:837
+#: library/urllib.request.rst:849
 msgid "HTTPRedirectHandler Objects"
 msgstr ""
 
-#: library/urllib.request.rst:841
+#: library/urllib.request.rst:853
 msgid ""
 "Some HTTP redirections require action from this module's client code.  If "
 "this is the case, :exc:`~urllib.error.HTTPError` is raised.  See :rfc:`2616` "
 "for details of the precise meanings of the various redirection codes."
 msgstr ""
 
-#: library/urllib.request.rst:845
+#: library/urllib.request.rst:857
 msgid ""
 "An :exc:`~urllib.error.HTTPError` exception raised as a security "
 "consideration if the HTTPRedirectHandler is presented with a redirected URL "
 "which is not an HTTP, HTTPS or FTP URL."
 msgstr ""
 
-#: library/urllib.request.rst:852
+#: library/urllib.request.rst:864
 msgid ""
 "Return a :class:`Request` or ``None`` in response to a redirect. This is "
 "called by the default implementations of the :meth:`!http_error_30\\*` "
@@ -1034,7 +1051,7 @@ msgid ""
 "URL, or return ``None`` if you can't but another handler might."
 msgstr ""
 
-#: library/urllib.request.rst:862
+#: library/urllib.request.rst:874
 msgid ""
 "The default implementation of this method does not strictly follow :rfc:"
 "`2616`, which says that 301 and 302 responses to ``POST`` requests must not "
@@ -1043,54 +1060,54 @@ msgid ""
 "POST to a ``GET``, and the default implementation reproduces this behavior."
 msgstr ""
 
-#: library/urllib.request.rst:871
+#: library/urllib.request.rst:883
 msgid ""
 "Redirect to the ``Location:`` or ``URI:`` URL.  This method is called by the "
 "parent :class:`OpenerDirector` when getting an HTTP 'moved permanently' "
 "response."
 msgstr ""
 
-#: library/urllib.request.rst:877
+#: library/urllib.request.rst:889
 msgid ""
 "The same as :meth:`http_error_301`, but called for the 'found' response."
 msgstr ""
 
-#: library/urllib.request.rst:882
+#: library/urllib.request.rst:894
 msgid ""
 "The same as :meth:`http_error_301`, but called for the 'see other' response."
 msgstr ""
 
-#: library/urllib.request.rst:887
+#: library/urllib.request.rst:899
 msgid ""
 "The same as :meth:`http_error_301`, but called for the 'temporary redirect' "
 "response. It does not allow changing the request method from ``POST`` to "
 "``GET``."
 msgstr ""
 
-#: library/urllib.request.rst:894
+#: library/urllib.request.rst:906
 msgid ""
 "The same as :meth:`http_error_301`, but called for the 'permanent redirect' "
 "response. It does not allow changing the request method from ``POST`` to "
 "``GET``."
 msgstr ""
 
-#: library/urllib.request.rst:904
+#: library/urllib.request.rst:916
 msgid "HTTPCookieProcessor Objects"
 msgstr ""
 
-#: library/urllib.request.rst:906
+#: library/urllib.request.rst:918
 msgid ":class:`HTTPCookieProcessor` instances have one attribute:"
 msgstr ""
 
-#: library/urllib.request.rst:910
+#: library/urllib.request.rst:922
 msgid "The :class:`http.cookiejar.CookieJar` in which cookies are stored."
 msgstr ""
 
-#: library/urllib.request.rst:916
+#: library/urllib.request.rst:928
 msgid "ProxyHandler Objects"
 msgstr ""
 
-#: library/urllib.request.rst:922
+#: library/urllib.request.rst:934
 msgid ""
 "The :class:`ProxyHandler` will have a method :meth:`!<protocol>_open` for "
 "every *protocol* which has a proxy in the *proxies* dictionary given in the "
@@ -1099,17 +1116,17 @@ msgid ""
 "actually execute the protocol."
 msgstr ""
 
-#: library/urllib.request.rst:932
+#: library/urllib.request.rst:944
 msgid "HTTPPasswordMgr Objects"
 msgstr ""
 
-#: library/urllib.request.rst:934
+#: library/urllib.request.rst:946
 msgid ""
 "These methods are available on :class:`HTTPPasswordMgr` and :class:"
 "`HTTPPasswordMgrWithDefaultRealm` objects."
 msgstr ""
 
-#: library/urllib.request.rst:940
+#: library/urllib.request.rst:952
 msgid ""
 "*uri* can be either a single URI, or a sequence of URIs. *realm*, *user* and "
 "*passwd* must be strings. This causes ``(user, passwd)`` to be used as "
@@ -1117,30 +1134,30 @@ msgid ""
 "of the given URIs is given."
 msgstr ""
 
-#: library/urllib.request.rst:948
+#: library/urllib.request.rst:960
 msgid ""
 "Get user/password for given realm and URI, if any.  This method will return "
 "``(None, None)`` if there is no matching user/password."
 msgstr ""
 
-#: library/urllib.request.rst:951
+#: library/urllib.request.rst:963
 msgid ""
 "For :class:`HTTPPasswordMgrWithDefaultRealm` objects, the realm ``None`` "
 "will be searched if the given *realm* has no matching user/password."
 msgstr ""
 
-#: library/urllib.request.rst:958
+#: library/urllib.request.rst:970
 msgid "HTTPPasswordMgrWithPriorAuth Objects"
 msgstr ""
 
-#: library/urllib.request.rst:960
+#: library/urllib.request.rst:972
 msgid ""
 "This password manager extends :class:`HTTPPasswordMgrWithDefaultRealm` to "
 "support tracking URIs for which authentication credentials should always be "
 "sent."
 msgstr ""
 
-#: library/urllib.request.rst:967
+#: library/urllib.request.rst:979
 msgid ""
 "*realm*, *uri*, *user*, *passwd* are as for :meth:`HTTPPasswordMgr."
 "add_password`.  *is_authenticated* sets the initial value of the "
@@ -1148,25 +1165,25 @@ msgid ""
 "*is_authenticated* is specified as ``True``, *realm* is ignored."
 msgstr ""
 
-#: library/urllib.request.rst:975
+#: library/urllib.request.rst:987
 msgid "Same as for :class:`HTTPPasswordMgrWithDefaultRealm` objects"
 msgstr ""
 
-#: library/urllib.request.rst:981
+#: library/urllib.request.rst:993
 msgid ""
 "Update the ``is_authenticated`` flag for the given *uri* or list of URIs."
 msgstr ""
 
-#: library/urllib.request.rst:987
+#: library/urllib.request.rst:999
 msgid ""
 "Returns the current state of the ``is_authenticated`` flag for the given URI."
 msgstr ""
 
-#: library/urllib.request.rst:994
+#: library/urllib.request.rst:1006
 msgid "AbstractBasicAuthHandler Objects"
 msgstr ""
 
-#: library/urllib.request.rst:999
+#: library/urllib.request.rst:1011
 msgid ""
 "Handle an authentication request by getting a user/password pair, and re-"
 "trying the request.  *authreq* should be the name of the header where the "
@@ -1175,7 +1192,7 @@ msgid ""
 "`Request` object, and *headers* should be the error headers."
 msgstr ""
 
-#: library/urllib.request.rst:1005
+#: library/urllib.request.rst:1017
 msgid ""
 "*host* is either an authority (e.g. ``\"python.org\"``) or a URL containing "
 "an authority component (e.g. ``\"http://python.org/\"``). In either case, "
@@ -1183,24 +1200,24 @@ msgid ""
 "and ``\"python.org:80\"`` are fine, ``\"joe:password@python.org\"`` is not)."
 msgstr ""
 
-#: library/urllib.request.rst:1014
+#: library/urllib.request.rst:1026
 msgid "HTTPBasicAuthHandler Objects"
 msgstr ""
 
-#: library/urllib.request.rst:1019 library/urllib.request.rst:1030
-#: library/urllib.request.rst:1055 library/urllib.request.rst:1066
+#: library/urllib.request.rst:1031 library/urllib.request.rst:1042
+#: library/urllib.request.rst:1067 library/urllib.request.rst:1078
 msgid "Retry the request with authentication information, if available."
 msgstr ""
 
-#: library/urllib.request.rst:1025
+#: library/urllib.request.rst:1037
 msgid "ProxyBasicAuthHandler Objects"
 msgstr ""
 
-#: library/urllib.request.rst:1036
+#: library/urllib.request.rst:1048
 msgid "AbstractDigestAuthHandler Objects"
 msgstr ""
 
-#: library/urllib.request.rst:1041
+#: library/urllib.request.rst:1053
 msgid ""
 "*authreq* should be the name of the header where the information about the "
 "realm is included in the request, *host* should be the host to authenticate "
@@ -1208,55 +1225,55 @@ msgid ""
 "should be the error headers."
 msgstr ""
 
-#: library/urllib.request.rst:1050
+#: library/urllib.request.rst:1062
 msgid "HTTPDigestAuthHandler Objects"
 msgstr ""
 
-#: library/urllib.request.rst:1061
+#: library/urllib.request.rst:1073
 msgid "ProxyDigestAuthHandler Objects"
 msgstr ""
 
-#: library/urllib.request.rst:1072
+#: library/urllib.request.rst:1084
 msgid "HTTPHandler Objects"
 msgstr ""
 
-#: library/urllib.request.rst:1077
+#: library/urllib.request.rst:1089
 msgid ""
 "Send an HTTP request, which can be either GET or POST, depending on ``req."
 "has_data()``."
 msgstr ""
 
-#: library/urllib.request.rst:1084
+#: library/urllib.request.rst:1096
 msgid "HTTPSHandler Objects"
 msgstr ""
 
-#: library/urllib.request.rst:1089
+#: library/urllib.request.rst:1101
 msgid ""
 "Send an HTTPS request, which can be either GET or POST, depending on ``req."
 "has_data()``."
 msgstr ""
 
-#: library/urllib.request.rst:1096
+#: library/urllib.request.rst:1108
 msgid "FileHandler Objects"
 msgstr ""
 
-#: library/urllib.request.rst:1101
+#: library/urllib.request.rst:1113
 msgid ""
 "Open the file locally, if there is no host name, or the host name is "
 "``'localhost'``."
 msgstr ""
 
-#: library/urllib.request.rst:1104
+#: library/urllib.request.rst:1116
 msgid ""
 "This method is applicable only for local hostnames.  When a remote hostname "
 "is given, a :exc:`~urllib.error.URLError` is raised."
 msgstr ""
 
-#: library/urllib.request.rst:1112
+#: library/urllib.request.rst:1124
 msgid "DataHandler Objects"
 msgstr ""
 
-#: library/urllib.request.rst:1116
+#: library/urllib.request.rst:1128
 msgid ""
 "Read a data URL. This kind of URL contains the content encoded in the URL "
 "itself. The data URL syntax is specified in :rfc:`2397`. This implementation "
@@ -1266,51 +1283,51 @@ msgid ""
 "implementation will raise a :exc:`ValueError` in that case."
 msgstr ""
 
-#: library/urllib.request.rst:1127
+#: library/urllib.request.rst:1139
 msgid "FTPHandler Objects"
 msgstr ""
 
-#: library/urllib.request.rst:1132
+#: library/urllib.request.rst:1144
 msgid ""
 "Open the FTP file indicated by *req*. The login is always done with empty "
 "username and password."
 msgstr ""
 
-#: library/urllib.request.rst:1139
+#: library/urllib.request.rst:1151
 msgid "CacheFTPHandler Objects"
 msgstr ""
 
-#: library/urllib.request.rst:1141
+#: library/urllib.request.rst:1153
 msgid ""
 ":class:`CacheFTPHandler` objects are :class:`FTPHandler` objects with the "
 "following additional methods:"
 msgstr ""
 
-#: library/urllib.request.rst:1147
+#: library/urllib.request.rst:1159
 msgid "Set timeout of connections to *t* seconds."
 msgstr ""
 
-#: library/urllib.request.rst:1152
+#: library/urllib.request.rst:1164
 msgid "Set maximum number of cached connections to *m*."
 msgstr ""
 
-#: library/urllib.request.rst:1158
+#: library/urllib.request.rst:1170
 msgid "UnknownHandler Objects"
 msgstr ""
 
-#: library/urllib.request.rst:1163
+#: library/urllib.request.rst:1175
 msgid "Raise a :exc:`~urllib.error.URLError` exception."
 msgstr ""
 
-#: library/urllib.request.rst:1169
+#: library/urllib.request.rst:1181
 msgid "HTTPErrorProcessor Objects"
 msgstr ""
 
-#: library/urllib.request.rst:1175
+#: library/urllib.request.rst:1187
 msgid "For 200 error codes, the response object is returned immediately."
 msgstr ""
 
-#: library/urllib.request.rst:1177
+#: library/urllib.request.rst:1189
 msgid ""
 "For non-200 error codes, this simply passes the job on to the :meth:`!"
 "http_error_\\<type\\>` handler methods, via :meth:`OpenerDirector.error`. "
@@ -1318,46 +1335,43 @@ msgid ""
 "error.HTTPError` if no other handler handles the error."
 msgstr ""
 
-#: library/urllib.request.rst:1185
+#: library/urllib.request.rst:1197
 msgid "Process HTTPS error responses."
 msgstr ""
 
-#: library/urllib.request.rst:1187
+#: library/urllib.request.rst:1199
 msgid "The behavior is same as :meth:`http_response`."
 msgstr ""
 
-#: library/urllib.request.rst:1193
+#: library/urllib.request.rst:1205
 msgid "Examples"
 msgstr ""
 
-#: library/urllib.request.rst:1195
+#: library/urllib.request.rst:1207
 msgid ""
 "In addition to the examples below, more examples are given in :ref:`urllib-"
 "howto`."
 msgstr ""
 
-#: library/urllib.request.rst:1198
+#: library/urllib.request.rst:1210
 msgid ""
 "This example gets the python.org main page and displays the first 300 bytes "
-"of it. ::"
+"of it::"
 msgstr ""
 
-#: library/urllib.request.rst:1201
+#: library/urllib.request.rst:1213
 msgid ""
 ">>> import urllib.request\n"
 ">>> with urllib.request.urlopen('http://www.python.org/') as f:\n"
 "...     print(f.read(300))\n"
 "...\n"
-"b'<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n"
-"\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\\n\\n\\n<html\n"
-"xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" "
-"lang=\"en\">\\n\\n<head>\\n\n"
-"<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" /"
-">\\n\n"
-"<title>Python Programming '"
+"b'<!doctype html>\\n<!--[if lt IE 7]>   <html class=\"no-js ie6 lt-ie7 lt-"
+"ie8 lt-ie9\">   <![endif]-->\\n<!--[if IE 7]>      <html class=\"no-js ie7 "
+"lt-ie8 lt-ie9\">          <![endif]-->\\n<!--[if IE 8]>      <html "
+"class=\"no-js ie8 lt-ie9\">"
 msgstr ""
 
-#: library/urllib.request.rst:1211
+#: library/urllib.request.rst:1219
 msgid ""
 "Note that urlopen returns a bytes object.  This is because there is no way "
 "for urlopen to automatically determine the encoding of the byte stream it "
@@ -1366,51 +1380,65 @@ msgid ""
 "appropriate encoding."
 msgstr ""
 
-#: library/urllib.request.rst:1217
+#: library/urllib.request.rst:1225
 msgid ""
-"The following W3C document, https://www.w3.org/International/O-charset\\ , "
-"lists the various ways in which an (X)HTML or an XML document could have "
+"The following HTML spec document, https://html.spec.whatwg.org/#charset, "
+"lists the various ways in which an HTML or an XML document could have "
 "specified its encoding information."
 msgstr ""
 
-#: library/urllib.request.rst:1221
+#: library/urllib.request.rst:1229
+msgid ""
+"For additional information, see the W3C document: https://www.w3.org/"
+"International/questions/qa-html-encoding-declarations."
+msgstr ""
+
+#: library/urllib.request.rst:1231
 msgid ""
 "As the python.org website uses *utf-8* encoding as specified in its meta "
-"tag, we will use the same for decoding the bytes object. ::"
+"tag, we will use the same for decoding the bytes object::"
 msgstr ""
 
-#: library/urllib.request.rst:1224
+#: library/urllib.request.rst:1234
 msgid ""
 ">>> with urllib.request.urlopen('http://www.python.org/') as f:\n"
 "...     print(f.read(100).decode('utf-8'))\n"
 "...\n"
-"<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n"
-"\"http://www.w3.org/TR/xhtml1/DTD/xhtm"
+"<!doctype html>\n"
+"<!--[if lt IE 7]>   <html class=\"no-js ie6 lt-ie7 lt-ie8 lt-ie9\">   <!"
+"[endif]-->\n"
+"<!-"
 msgstr ""
 
-#: library/urllib.request.rst:1230
+#: library/urllib.request.rst:1241
 msgid ""
 "It is also possible to achieve the same result without using the :term:"
-"`context manager` approach. ::"
+"`context manager` approach::"
 msgstr ""
 
-#: library/urllib.request.rst:1233
+#: library/urllib.request.rst:1244
 msgid ""
 ">>> import urllib.request\n"
 ">>> f = urllib.request.urlopen('http://www.python.org/')\n"
-">>> print(f.read(100).decode('utf-8'))\n"
-"<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n"
-"\"http://www.w3.org/TR/xhtml1/DTD/xhtm"
+">>> try:\n"
+"...     print(f.read(100).decode('utf-8'))\n"
+"... finally:\n"
+"...     f.close()\n"
+"...\n"
+"<!doctype html>\n"
+"<!--[if lt IE 7]>   <html class=\"no-js ie6 lt-ie7 lt-ie8 lt-ie9\">   <!"
+"[endif]-->\n"
+"<!--"
 msgstr ""
 
-#: library/urllib.request.rst:1239
+#: library/urllib.request.rst:1255
 msgid ""
 "In the following example, we are sending a data-stream to the stdin of a CGI "
 "and reading the data it returns to us. Note that this example will only work "
 "when the Python installation supports SSL. ::"
 msgstr ""
 
-#: library/urllib.request.rst:1243
+#: library/urllib.request.rst:1259
 msgid ""
 ">>> import urllib.request\n"
 ">>> req = urllib.request.Request(url='https://localhost/cgi-bin/test.cgi',\n"
@@ -1421,11 +1449,11 @@ msgid ""
 "Got Data: \"This data is passed to stdin of the CGI\""
 msgstr ""
 
-#: library/urllib.request.rst:1251
+#: library/urllib.request.rst:1267
 msgid "The code for the sample CGI used in the above example is::"
 msgstr ""
 
-#: library/urllib.request.rst:1253
+#: library/urllib.request.rst:1269
 msgid ""
 "#!/usr/bin/env python\n"
 "import sys\n"
@@ -1433,11 +1461,11 @@ msgid ""
 "print('Content-type: text/plain\\n\\nGot Data: \"%s\"' % data)"
 msgstr ""
 
-#: library/urllib.request.rst:1258
+#: library/urllib.request.rst:1274
 msgid "Here is an example of doing a ``PUT`` request using :class:`Request`::"
 msgstr ""
 
-#: library/urllib.request.rst:1260
+#: library/urllib.request.rst:1276
 msgid ""
 "import urllib.request\n"
 "DATA = b'some data'\n"
@@ -1449,11 +1477,11 @@ msgid ""
 "print(f.reason)"
 msgstr ""
 
-#: library/urllib.request.rst:1268
+#: library/urllib.request.rst:1284
 msgid "Use of Basic HTTP Authentication::"
 msgstr ""
 
-#: library/urllib.request.rst:1270
+#: library/urllib.request.rst:1286
 msgid ""
 "import urllib.request\n"
 "# Create an OpenerDirector with support for Basic HTTP Authentication...\n"
@@ -1465,10 +1493,11 @@ msgid ""
 "opener = urllib.request.build_opener(auth_handler)\n"
 "# ...and install it globally so it can be used with urlopen.\n"
 "urllib.request.install_opener(opener)\n"
-"urllib.request.urlopen('http://www.example.com/login.html')"
+"with urllib.request.urlopen('http://www.example.com/login.html') as f:\n"
+"    print(f.read().decode('utf-8'))"
 msgstr ""
 
-#: library/urllib.request.rst:1282
+#: library/urllib.request.rst:1299
 msgid ""
 ":func:`build_opener` provides many handlers by default, including a :class:"
 "`ProxyHandler`.  By default, :class:`ProxyHandler` uses the environment "
@@ -1477,14 +1506,14 @@ msgid ""
 "read to obtain the HTTP proxy's URL."
 msgstr ""
 
-#: library/urllib.request.rst:1288
+#: library/urllib.request.rst:1305
 msgid ""
 "This example replaces the default :class:`ProxyHandler` with one that uses "
 "programmatically supplied proxy URLs, and adds proxy authorization support "
 "with :class:`ProxyBasicAuthHandler`. ::"
 msgstr ""
 
-#: library/urllib.request.rst:1292
+#: library/urllib.request.rst:1309
 msgid ""
 "proxy_handler = urllib.request.ProxyHandler({'http': 'http://www.example."
 "com:3128/'})\n"
@@ -1493,55 +1522,58 @@ msgid ""
 "\n"
 "opener = urllib.request.build_opener(proxy_handler, proxy_auth_handler)\n"
 "# This time, rather than install the OpenerDirector, we use it directly:\n"
-"opener.open('http://www.example.com/login.html')"
+"with opener.open('http://www.example.com/login.html') as f:\n"
+"   print(f.read().decode('utf-8'))"
 msgstr ""
 
-#: library/urllib.request.rst:1300
+#: library/urllib.request.rst:1318
 msgid "Adding HTTP headers:"
 msgstr ""
 
-#: library/urllib.request.rst:1302
+#: library/urllib.request.rst:1320
 msgid "Use the *headers* argument to the :class:`Request` constructor, or::"
 msgstr ""
 
-#: library/urllib.request.rst:1304
+#: library/urllib.request.rst:1322
 msgid ""
 "import urllib.request\n"
 "req = urllib.request.Request('http://www.example.com/')\n"
 "req.add_header('Referer', 'http://www.python.org/')\n"
 "# Customize the default User-Agent header value:\n"
 "req.add_header('User-Agent', 'urllib-example/0.1 (Contact: . . .)')\n"
-"r = urllib.request.urlopen(req)"
+"with urllib.request.urlopen(req) as f:\n"
+"    print(f.read().decode('utf-8'))"
 msgstr ""
 
-#: library/urllib.request.rst:1311
+#: library/urllib.request.rst:1331
 msgid ""
 ":class:`OpenerDirector` automatically adds a :mailheader:`User-Agent` header "
 "to every :class:`Request`.  To change this::"
 msgstr ""
 
-#: library/urllib.request.rst:1314
+#: library/urllib.request.rst:1334
 msgid ""
 "import urllib.request\n"
 "opener = urllib.request.build_opener()\n"
 "opener.addheaders = [('User-agent', 'Mozilla/5.0')]\n"
-"opener.open('http://www.example.com/')"
+"with opener.open('http://www.example.com/') as f:\n"
+"   print(f.read().decode('utf-8'))"
 msgstr ""
 
-#: library/urllib.request.rst:1319
+#: library/urllib.request.rst:1340
 msgid ""
 "Also, remember that a few standard headers (:mailheader:`Content-Length`, :"
 "mailheader:`Content-Type` and :mailheader:`Host`) are added when the :class:"
 "`Request` is passed to :func:`urlopen` (or :meth:`OpenerDirector.open`)."
 msgstr ""
 
-#: library/urllib.request.rst:1326
+#: library/urllib.request.rst:1347
 msgid ""
 "Here is an example session that uses the ``GET`` method to retrieve a URL "
 "containing parameters::"
 msgstr ""
 
-#: library/urllib.request.rst:1329
+#: library/urllib.request.rst:1350
 msgid ""
 ">>> import urllib.request\n"
 ">>> import urllib.parse\n"
@@ -1552,14 +1584,14 @@ msgid ""
 "..."
 msgstr ""
 
-#: library/urllib.request.rst:1337
+#: library/urllib.request.rst:1358
 msgid ""
 "The following example uses the ``POST`` method instead. Note that params "
 "output from urlencode is encoded to bytes before it is sent to urlopen as "
 "data::"
 msgstr ""
 
-#: library/urllib.request.rst:1340
+#: library/urllib.request.rst:1361
 msgid ""
 ">>> import urllib.request\n"
 ">>> import urllib.parse\n"
@@ -1571,13 +1603,13 @@ msgid ""
 "..."
 msgstr ""
 
-#: library/urllib.request.rst:1348
+#: library/urllib.request.rst:1369
 msgid ""
 "The following example uses an explicitly specified HTTP proxy, overriding "
 "environment settings::"
 msgstr ""
 
-#: library/urllib.request.rst:1351
+#: library/urllib.request.rst:1372
 msgid ""
 ">>> import urllib.request\n"
 ">>> proxies = {'http': 'http://proxy.example.com:8080/'}\n"
@@ -1587,13 +1619,13 @@ msgid ""
 "..."
 msgstr ""
 
-#: library/urllib.request.rst:1358
+#: library/urllib.request.rst:1379
 msgid ""
 "The following example uses no proxies at all, overriding environment "
 "settings::"
 msgstr ""
 
-#: library/urllib.request.rst:1360
+#: library/urllib.request.rst:1381
 msgid ""
 ">>> import urllib.request\n"
 ">>> opener = urllib.request.FancyURLopener({})\n"
@@ -1602,18 +1634,18 @@ msgid ""
 "..."
 msgstr ""
 
-#: library/urllib.request.rst:1368
+#: library/urllib.request.rst:1389
 msgid "Legacy interface"
 msgstr ""
 
-#: library/urllib.request.rst:1370
+#: library/urllib.request.rst:1391
 msgid ""
 "The following functions and classes are ported from the Python 2 module "
 "``urllib`` (as opposed to ``urllib2``).  They might become deprecated at "
 "some point in the future."
 msgstr ""
 
-#: library/urllib.request.rst:1376
+#: library/urllib.request.rst:1397
 msgid ""
 "Copy a network object denoted by a URL to a local file. If the URL points to "
 "a local file, the object will not be copied unless filename is supplied. "
@@ -1623,7 +1655,7 @@ msgid ""
 "a remote object). Exceptions are the same as for :func:`urlopen`."
 msgstr ""
 
-#: library/urllib.request.rst:1383
+#: library/urllib.request.rst:1404
 msgid ""
 "The second argument, if present, specifies the file location to copy to (if "
 "absent, the location will be a tempfile with a generated name). The third "
@@ -1635,11 +1667,11 @@ msgid ""
 "file size in response to a retrieval request."
 msgstr ""
 
-#: library/urllib.request.rst:1392
+#: library/urllib.request.rst:1413
 msgid "The following example illustrates the most common usage scenario::"
 msgstr ""
 
-#: library/urllib.request.rst:1394
+#: library/urllib.request.rst:1415
 msgid ""
 ">>> import urllib.request\n"
 ">>> local_filename, headers = urllib.request.urlretrieve('http://python."
@@ -1648,7 +1680,7 @@ msgid ""
 ">>> html.close()"
 msgstr ""
 
-#: library/urllib.request.rst:1399
+#: library/urllib.request.rst:1420
 msgid ""
 "If the *url* uses the :file:`http:` scheme identifier, the optional *data* "
 "argument may be given to specify a ``POST`` request (normally the request "
@@ -1657,7 +1689,7 @@ msgid ""
 "parse.urlencode` function."
 msgstr ""
 
-#: library/urllib.request.rst:1405
+#: library/urllib.request.rst:1426
 msgid ""
 ":func:`urlretrieve` will raise :exc:`~urllib.error.ContentTooShortError` "
 "when it detects that the amount of data available  was less than the "
@@ -1665,40 +1697,40 @@ msgid ""
 "This can occur, for example, when the  download is interrupted."
 msgstr ""
 
-#: library/urllib.request.rst:1410
+#: library/urllib.request.rst:1431
 msgid ""
 "The *Content-Length* is treated as a lower bound: if there's more data  to "
 "read, urlretrieve reads more data, but if less data is available,  it raises "
 "the exception."
 msgstr ""
 
-#: library/urllib.request.rst:1414
+#: library/urllib.request.rst:1435
 msgid ""
 "You can still retrieve the downloaded data in this case, it is stored in "
 "the :attr:`!content` attribute of the exception instance."
 msgstr ""
 
-#: library/urllib.request.rst:1417
+#: library/urllib.request.rst:1438
 msgid ""
 "If no *Content-Length* header was supplied, urlretrieve can not check the "
 "size of the data it has downloaded, and just returns it.  In this case you "
 "just have to assume that the download was successful."
 msgstr ""
 
-#: library/urllib.request.rst:1423
+#: library/urllib.request.rst:1444
 msgid ""
 "Cleans up temporary files that may have been left behind by previous calls "
 "to :func:`urlretrieve`."
 msgstr ""
 
-#: library/urllib.request.rst:1430
+#: library/urllib.request.rst:1451
 msgid ""
 "Base class for opening and reading URLs.  Unless you need to support opening "
 "objects using schemes other than :file:`http:`, :file:`ftp:`, or :file:`file:"
 "`, you probably want to use :class:`FancyURLopener`."
 msgstr ""
 
-#: library/urllib.request.rst:1434
+#: library/urllib.request.rst:1455
 msgid ""
 "By default, the :class:`URLopener` class sends a :mailheader:`User-Agent` "
 "header of ``urllib/VVV``, where *VVV* is the :mod:`urllib` version number. "
@@ -1708,7 +1740,7 @@ msgid ""
 "subclass definition."
 msgstr ""
 
-#: library/urllib.request.rst:1440
+#: library/urllib.request.rst:1461
 msgid ""
 "The optional *proxies* parameter should be a dictionary mapping scheme names "
 "to proxy URLs, where an empty dictionary turns proxies off completely.  Its "
@@ -1716,7 +1748,7 @@ msgid ""
 "be used if present, as discussed in the definition of :func:`urlopen`, above."
 msgstr ""
 
-#: library/urllib.request.rst:1445
+#: library/urllib.request.rst:1466
 msgid ""
 "Additional keyword parameters, collected in *x509*, may be used for "
 "authentication of the client when using the :file:`https:` scheme.  The "
@@ -1724,13 +1756,13 @@ msgid ""
 "certificate; both are needed to support client authentication."
 msgstr ""
 
-#: library/urllib.request.rst:1450
+#: library/urllib.request.rst:1471
 msgid ""
 ":class:`URLopener` objects will raise an :exc:`OSError` exception if the "
 "server returns an error code."
 msgstr ""
 
-#: library/urllib.request.rst:1455
+#: library/urllib.request.rst:1476
 msgid ""
 "Open *fullurl* using the appropriate protocol.  This method sets up cache "
 "and proxy information, then calls the appropriate open method with its input "
@@ -1739,15 +1771,15 @@ msgid ""
 "`urlopen`."
 msgstr ""
 
-#: library/urllib.request.rst:1461
+#: library/urllib.request.rst:1482
 msgid "This method always quotes *fullurl* using :func:`~urllib.parse.quote`."
 msgstr ""
 
-#: library/urllib.request.rst:1465
+#: library/urllib.request.rst:1486
 msgid "Overridable interface to open unknown URL types."
 msgstr ""
 
-#: library/urllib.request.rst:1470
+#: library/urllib.request.rst:1491
 msgid ""
 "Retrieves the contents of *url* and places it in *filename*.  The return "
 "value is a tuple consisting of a local filename and either an :class:`email."
@@ -1764,7 +1796,7 @@ msgid ""
 "*reporthook* is ignored for local URLs."
 msgstr ""
 
-#: library/urllib.request.rst:1483
+#: library/urllib.request.rst:1504
 msgid ""
 "If the *url* uses the :file:`http:` scheme identifier, the optional *data* "
 "argument may be given to specify a ``POST`` request (normally the request "
@@ -1773,7 +1805,7 @@ msgid ""
 "urlencode` function."
 msgstr ""
 
-#: library/urllib.request.rst:1492
+#: library/urllib.request.rst:1513
 msgid ""
 "Variable that specifies the user agent of the opener object.  To get :mod:"
 "`urllib` to tell servers that it is a particular user agent, set this in a "
@@ -1781,7 +1813,7 @@ msgid ""
 "constructor."
 msgstr ""
 
-#: library/urllib.request.rst:1502
+#: library/urllib.request.rst:1523
 msgid ""
 ":class:`FancyURLopener` subclasses :class:`URLopener` providing default "
 "handling for the following HTTP response codes: 301, 302, 303, 307 and 401.  "
@@ -1792,14 +1824,14 @@ msgid ""
 "defaults to 10."
 msgstr ""
 
-#: library/urllib.request.rst:1509
+#: library/urllib.request.rst:1530
 msgid ""
 "For all other response codes, the method :meth:`~BaseHandler."
 "http_error_default` is called which you can override in subclasses to handle "
 "the error appropriately."
 msgstr ""
 
-#: library/urllib.request.rst:1514
+#: library/urllib.request.rst:1535
 msgid ""
 "According to the letter of :rfc:`2616`, 301 and 302 responses to POST "
 "requests must not be automatically redirected without confirmation by the "
@@ -1808,13 +1840,13 @@ msgid ""
 "behaviour."
 msgstr ""
 
-#: library/urllib.request.rst:1519
+#: library/urllib.request.rst:1540
 msgid ""
 "The parameters to the constructor are the same as those for :class:"
 "`URLopener`."
 msgstr ""
 
-#: library/urllib.request.rst:1523
+#: library/urllib.request.rst:1544
 msgid ""
 "When performing basic authentication, a :class:`FancyURLopener` instance "
 "calls its :meth:`prompt_user_passwd` method.  The default implementation "
@@ -1823,59 +1855,59 @@ msgid ""
 "needed."
 msgstr ""
 
-#: library/urllib.request.rst:1528
+#: library/urllib.request.rst:1549
 msgid ""
 "The :class:`FancyURLopener` class offers one additional method that should "
 "be overloaded to provide the appropriate behavior:"
 msgstr ""
 
-#: library/urllib.request.rst:1533
+#: library/urllib.request.rst:1554
 msgid ""
 "Return information needed to authenticate the user at the given host in the "
 "specified security realm.  The return value should be a tuple, ``(user, "
 "password)``, which can be used for basic authentication."
 msgstr ""
 
-#: library/urllib.request.rst:1537
+#: library/urllib.request.rst:1558
 msgid ""
 "The implementation prompts for this information on the terminal; an "
 "application should override this method to use an appropriate interaction "
 "model in the local environment."
 msgstr ""
 
-#: library/urllib.request.rst:1543
+#: library/urllib.request.rst:1564
 msgid ":mod:`urllib.request` Restrictions"
 msgstr ""
 
-#: library/urllib.request.rst:1549
+#: library/urllib.request.rst:1570
 msgid ""
 "Currently, only the following protocols are supported: HTTP (versions 0.9 "
 "and 1.0), FTP, local files, and data URLs."
 msgstr ""
 
-#: library/urllib.request.rst:1552
+#: library/urllib.request.rst:1573
 msgid "Added support for data URLs."
 msgstr ""
 
-#: library/urllib.request.rst:1554
+#: library/urllib.request.rst:1575
 msgid ""
 "The caching feature of :func:`urlretrieve` has been disabled until someone "
 "finds the time to hack proper processing of Expiration time headers."
 msgstr ""
 
-#: library/urllib.request.rst:1557
+#: library/urllib.request.rst:1578
 msgid ""
 "There should be a function to query whether a particular URL is in the cache."
 msgstr ""
 
-#: library/urllib.request.rst:1559
+#: library/urllib.request.rst:1580
 msgid ""
 "For backward compatibility, if a URL appears to point to a local file but "
 "the file can't be opened, the URL is re-interpreted using the FTP protocol.  "
 "This can sometimes cause confusing error messages."
 msgstr ""
 
-#: library/urllib.request.rst:1563
+#: library/urllib.request.rst:1584
 msgid ""
 "The :func:`urlopen` and :func:`urlretrieve` functions can cause arbitrarily "
 "long delays while waiting for a network connection to be set up.  This means "
@@ -1883,7 +1915,7 @@ msgid ""
 "functions without using threads."
 msgstr ""
 
-#: library/urllib.request.rst:1572
+#: library/urllib.request.rst:1593
 msgid ""
 "The data returned by :func:`urlopen` or :func:`urlretrieve` is the raw data "
 "returned by the server.  This may be binary data (such as an image), plain "
@@ -1893,7 +1925,7 @@ msgid ""
 "module :mod:`html.parser` to parse it."
 msgstr ""
 
-#: library/urllib.request.rst:1581
+#: library/urllib.request.rst:1602
 msgid ""
 "The code handling the FTP protocol cannot differentiate between a file and a "
 "directory.  This can lead to unexpected behavior when attempting to read a "
@@ -1911,11 +1943,11 @@ msgid ""
 "meet your needs."
 msgstr ""
 
-#: library/urllib.request.rst:1598
+#: library/urllib.request.rst:1619
 msgid ":mod:`urllib.response` --- Response classes used by urllib"
 msgstr ""
 
-#: library/urllib.request.rst:1603
+#: library/urllib.request.rst:1624
 msgid ""
 "The :mod:`urllib.response` module defines functions and classes which define "
 "a minimal file-like interface, including ``read()`` and ``readline()``. "
@@ -1924,46 +1956,46 @@ msgid ""
 "addinfourl` instance:"
 msgstr ""
 
-#: library/urllib.request.rst:1612
+#: library/urllib.request.rst:1633
 msgid ""
 "URL of the resource retrieved, commonly used to determine if a redirect was "
 "followed."
 msgstr ""
 
-#: library/urllib.request.rst:1616
+#: library/urllib.request.rst:1637
 msgid ""
 "Returns the headers of the response in the form of an :class:`~email.message."
 "EmailMessage` instance."
 msgstr ""
 
-#: library/urllib.request.rst:1622
+#: library/urllib.request.rst:1643
 msgid "Status code returned by server."
 msgstr ""
 
-#: library/urllib.request.rst:1626
+#: library/urllib.request.rst:1647
 msgid "Deprecated in favor of :attr:`~addinfourl.url`."
 msgstr ""
 
-#: library/urllib.request.rst:1631
+#: library/urllib.request.rst:1652
 msgid "Deprecated in favor of :attr:`~addinfourl.headers`."
 msgstr ""
 
-#: library/urllib.request.rst:1636 library/urllib.request.rst:1641
+#: library/urllib.request.rst:1657 library/urllib.request.rst:1662
 msgid "Deprecated in favor of :attr:`~addinfourl.status`."
 msgstr ""
 
-#: library/urllib.request.rst:1545 library/urllib.request.rst:1568
+#: library/urllib.request.rst:1566 library/urllib.request.rst:1589
 msgid "HTTP"
 msgstr ""
 
-#: library/urllib.request.rst:1545 library/urllib.request.rst:1568
+#: library/urllib.request.rst:1566 library/urllib.request.rst:1589
 msgid "protocol"
 msgstr ""
 
-#: library/urllib.request.rst:1545 library/urllib.request.rst:1579
+#: library/urllib.request.rst:1566 library/urllib.request.rst:1600
 msgid "FTP"
 msgstr ""
 
-#: library/urllib.request.rst:1568
+#: library/urllib.request.rst:1589
 msgid "HTML"
 msgstr ""
diff --git a/library/uuid.po b/library/uuid.po
index 9561b9be8..28b89db5c 100644
--- a/library/uuid.po
+++ b/library/uuid.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -219,7 +219,7 @@ msgid ""
 "unique, while the latter are not."
 msgstr ""
 
-#: library/uuid.rst:187
+#: library/uuid.rst:185
 msgid ""
 "Generate a UUID from a host ID, sequence number, and the current time. If "
 "*node* is not given, :func:`getnode` is used to obtain the hardware address. "
@@ -227,111 +227,111 @@ msgid ""
 "random 14-bit sequence number is chosen."
 msgstr ""
 
-#: library/uuid.rst:197
+#: library/uuid.rst:193
 msgid ""
 "Generate a UUID based on the MD5 hash of a namespace identifier (which is a "
 "UUID) and a name (which is a :class:`bytes` object or a string that will be "
 "encoded using UTF-8)."
 msgstr ""
 
-#: library/uuid.rst:206
+#: library/uuid.rst:200
 msgid "Generate a random UUID."
 msgstr ""
 
-#: library/uuid.rst:213
+#: library/uuid.rst:205
 msgid ""
 "Generate a UUID based on the SHA-1 hash of a namespace identifier (which is "
 "a UUID) and a name (which is a :class:`bytes` object or a string that will "
 "be encoded using UTF-8)."
 msgstr ""
 
-#: library/uuid.rst:219
+#: library/uuid.rst:210
 msgid ""
 "The :mod:`uuid` module defines the following namespace identifiers for use "
 "with :func:`uuid3` or :func:`uuid5`."
 msgstr ""
 
-#: library/uuid.rst:225
+#: library/uuid.rst:216
 msgid ""
 "When this namespace is specified, the *name* string is a fully qualified "
 "domain name."
 msgstr ""
 
-#: library/uuid.rst:231
+#: library/uuid.rst:222
 msgid "When this namespace is specified, the *name* string is a URL."
 msgstr ""
 
-#: library/uuid.rst:236
+#: library/uuid.rst:227
 msgid "When this namespace is specified, the *name* string is an ISO OID."
 msgstr ""
 
-#: library/uuid.rst:241
+#: library/uuid.rst:232
 msgid ""
 "When this namespace is specified, the *name* string is an X.500 DN in DER or "
 "a text output format."
 msgstr ""
 
-#: library/uuid.rst:244
+#: library/uuid.rst:235
 msgid ""
 "The :mod:`uuid` module defines the following constants for the possible "
 "values of the :attr:`~UUID.variant` attribute:"
 msgstr ""
 
-#: library/uuid.rst:250
+#: library/uuid.rst:241
 msgid "Reserved for NCS compatibility."
 msgstr ""
 
-#: library/uuid.rst:255
+#: library/uuid.rst:246
 msgid "Specifies the UUID layout given in :rfc:`4122`."
 msgstr ""
 
-#: library/uuid.rst:260
+#: library/uuid.rst:251
 msgid "Reserved for Microsoft compatibility."
 msgstr ""
 
-#: library/uuid.rst:265
+#: library/uuid.rst:256
 msgid "Reserved for future definition."
 msgstr ""
 
-#: library/uuid.rst:270
+#: library/uuid.rst:261
 msgid ":rfc:`4122` - A Universally Unique IDentifier (UUID) URN Namespace"
 msgstr ""
 
-#: library/uuid.rst:271
+#: library/uuid.rst:262
 msgid ""
 "This specification defines a Uniform Resource Name namespace for UUIDs, the "
 "internal format of UUIDs, and methods of generating UUIDs."
 msgstr ""
 
-#: library/uuid.rst:278
+#: library/uuid.rst:269
 msgid "Command-Line Usage"
 msgstr ""
 
-#: library/uuid.rst:282
+#: library/uuid.rst:273
 msgid ""
 "The :mod:`uuid` module can be executed as a script from the command line."
 msgstr ""
 
-#: library/uuid.rst:284
+#: library/uuid.rst:275
 msgid ""
 "python -m uuid [-h] [-u {uuid1,uuid3,uuid4,uuid5}] [-n NAMESPACE] [-N NAME]"
 msgstr ""
 
-#: library/uuid.rst:288
+#: library/uuid.rst:279
 msgid "The following options are accepted:"
 msgstr ""
 
-#: library/uuid.rst:294
+#: library/uuid.rst:285
 msgid "Show the help message and exit."
 msgstr ""
 
-#: library/uuid.rst:299
+#: library/uuid.rst:290
 msgid ""
 "Specify the function name to use to generate the uuid. By default :func:"
 "`uuid4` is used."
 msgstr ""
 
-#: library/uuid.rst:305
+#: library/uuid.rst:296
 msgid ""
 "The namespace is a ``UUID``, or ``@ns`` where ``ns`` is a well-known "
 "predefined UUID addressed by namespace name. Such as ``@dns``, ``@url``, "
@@ -339,21 +339,21 @@ msgid ""
 "functions."
 msgstr ""
 
-#: library/uuid.rst:312
+#: library/uuid.rst:303
 msgid ""
 "The name used as part of generating the uuid. Only required for :func:"
 "`uuid3` / :func:`uuid5` functions."
 msgstr ""
 
-#: library/uuid.rst:319
+#: library/uuid.rst:310
 msgid "Example"
 msgstr ""
 
-#: library/uuid.rst:321
+#: library/uuid.rst:312
 msgid "Here are some examples of typical usage of the :mod:`uuid` module::"
 msgstr ""
 
-#: library/uuid.rst:323
+#: library/uuid.rst:314
 msgid ""
 ">>> import uuid\n"
 "\n"
@@ -389,17 +389,17 @@ msgid ""
 "UUID('00010203-0405-0607-0809-0a0b0c0d0e0f')"
 msgstr ""
 
-#: library/uuid.rst:360
+#: library/uuid.rst:351
 msgid "Command-Line Example"
 msgstr ""
 
-#: library/uuid.rst:362
+#: library/uuid.rst:353
 msgid ""
 "Here are some examples of typical usage of the :mod:`uuid` command line "
 "interface:"
 msgstr ""
 
-#: library/uuid.rst:364
+#: library/uuid.rst:355
 msgid ""
 "# generate a random uuid - by default uuid4() is used\n"
 "$ python -m uuid\n"
@@ -410,23 +410,3 @@ msgid ""
 "# generate a uuid using uuid5\n"
 "$ python -m uuid -u uuid5 -n @url -N example.com"
 msgstr ""
-
-#: library/uuid.rst:182
-msgid "getnode"
-msgstr ""
-
-#: library/uuid.rst:192
-msgid "uuid1"
-msgstr ""
-
-#: library/uuid.rst:201
-msgid "uuid3"
-msgstr ""
-
-#: library/uuid.rst:208
-msgid "uuid4"
-msgstr ""
-
-#: library/uuid.rst:217
-msgid "uuid5"
-msgstr ""
diff --git a/library/warnings.po b/library/warnings.po
index 2932d88ea..35367847f 100644
--- a/library/warnings.po
+++ b/library/warnings.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -352,11 +352,39 @@ msgid ""
 "\"default\" action is applied (hence its name)."
 msgstr ""
 
-#: library/warnings.rst:184
+#: library/warnings.rst:185
+msgid "Repeated Warning Suppression Criteria"
+msgstr ""
+
+#: library/warnings.rst:187
+msgid ""
+"The filters that suppress repeated warnings apply the following criteria to "
+"determine if a warning is considered a repeat:"
+msgstr ""
+
+#: library/warnings.rst:189
+msgid ""
+"``\"default\"``: A warning is considered a repeat only if the (*message*, "
+"*category*, *module*, *lineno*) are all the same."
+msgstr ""
+
+#: library/warnings.rst:190
+msgid ""
+"``\"module\"``: A warning is considered a repeat if the (*message*, "
+"*category*, *module*) are the same, ignoring the line number."
+msgstr ""
+
+#: library/warnings.rst:191
+msgid ""
+"``\"once\"``: A warning is considered a repeat if the (*message*, "
+"*category*) are the same, ignoring the module and line number."
+msgstr ""
+
+#: library/warnings.rst:197
 msgid "Describing Warning Filters"
 msgstr ""
 
-#: library/warnings.rst:186
+#: library/warnings.rst:199
 msgid ""
 "The warnings filter is initialized by :option:`-W` options passed to the "
 "Python interpreter command line and the :envvar:`PYTHONWARNINGS` environment "
@@ -366,17 +394,17 @@ msgid ""
 "after printing a message to :data:`sys.stderr`)."
 msgstr ""
 
-#: library/warnings.rst:193
+#: library/warnings.rst:206
 msgid ""
 "Individual warnings filters are specified as a sequence of fields separated "
 "by colons::"
 msgstr ""
 
-#: library/warnings.rst:196
+#: library/warnings.rst:209
 msgid "action:message:category:module:line"
 msgstr ""
 
-#: library/warnings.rst:198
+#: library/warnings.rst:211
 msgid ""
 "The meaning of each of these fields is as described in :ref:`warning-"
 "filter`. When listing multiple filters on a single line (as for :envvar:"
@@ -386,14 +414,14 @@ msgid ""
 "precedence over earlier ones)."
 msgstr ""
 
-#: library/warnings.rst:205
+#: library/warnings.rst:218
 msgid ""
 "Commonly used warning filters apply to either all warnings, warnings in a "
 "particular category, or warnings raised by particular modules or packages. "
 "Some examples::"
 msgstr ""
 
-#: library/warnings.rst:209
+#: library/warnings.rst:222
 msgid ""
 "default                      # Show all warnings (even those ignored by "
 "default)\n"
@@ -406,24 +434,24 @@ msgid ""
 "error:::mymodule             # Convert warnings to errors in \"mymodule\""
 msgstr ""
 
-#: library/warnings.rst:221
+#: library/warnings.rst:234
 msgid "Default Warning Filter"
 msgstr ""
 
-#: library/warnings.rst:223
+#: library/warnings.rst:236
 msgid ""
 "By default, Python installs several warning filters, which can be overridden "
 "by the :option:`-W` command-line option, the :envvar:`PYTHONWARNINGS` "
 "environment variable and calls to :func:`filterwarnings`."
 msgstr ""
 
-#: library/warnings.rst:227
+#: library/warnings.rst:240
 msgid ""
 "In regular release builds, the default warning filter has the following "
 "entries (in order of precedence)::"
 msgstr ""
 
-#: library/warnings.rst:230
+#: library/warnings.rst:243
 msgid ""
 "default::DeprecationWarning:__main__\n"
 "ignore::DeprecationWarning\n"
@@ -432,36 +460,36 @@ msgid ""
 "ignore::ResourceWarning"
 msgstr ""
 
-#: library/warnings.rst:236
+#: library/warnings.rst:249
 msgid ""
 "In a :ref:`debug build <debug-build>`, the list of default warning filters "
 "is empty."
 msgstr ""
 
-#: library/warnings.rst:238
+#: library/warnings.rst:251
 msgid ""
 ":exc:`DeprecationWarning` is now ignored by default in addition to :exc:"
 "`PendingDeprecationWarning`."
 msgstr ""
 
-#: library/warnings.rst:242
+#: library/warnings.rst:255
 msgid ""
 ":exc:`DeprecationWarning` is once again shown by default when triggered "
 "directly by code in ``__main__``."
 msgstr ""
 
-#: library/warnings.rst:246
+#: library/warnings.rst:259
 msgid ""
 ":exc:`BytesWarning` no longer appears in the default filter list and is "
 "instead configured via :data:`sys.warnoptions` when :option:`-b` is "
 "specified twice."
 msgstr ""
 
-#: library/warnings.rst:255
+#: library/warnings.rst:268
 msgid "Overriding the default filter"
 msgstr ""
 
-#: library/warnings.rst:257
+#: library/warnings.rst:270
 msgid ""
 "Developers of applications written in Python may wish to hide *all* Python "
 "level warnings from their users by default, and only display them when "
@@ -471,7 +499,7 @@ msgid ""
 "disabled::"
 msgstr ""
 
-#: library/warnings.rst:263
+#: library/warnings.rst:276
 msgid ""
 "import sys\n"
 "\n"
@@ -480,14 +508,14 @@ msgid ""
 "    warnings.simplefilter(\"ignore\")"
 msgstr ""
 
-#: library/warnings.rst:269
+#: library/warnings.rst:282
 msgid ""
 "Developers of test runners for Python code are advised to instead ensure "
 "that *all* warnings are displayed by default for the code under test, using "
 "code like::"
 msgstr ""
 
-#: library/warnings.rst:273
+#: library/warnings.rst:286
 msgid ""
 "import sys\n"
 "\n"
@@ -497,7 +525,7 @@ msgid ""
 "    os.environ[\"PYTHONWARNINGS\"] = \"default\" # Also affect subprocesses"
 msgstr ""
 
-#: library/warnings.rst:280
+#: library/warnings.rst:293
 msgid ""
 "Finally, developers of interactive shells that run user code in a namespace "
 "other than ``__main__`` are advised to ensure that :exc:`DeprecationWarning` "
@@ -505,18 +533,18 @@ msgid ""
 "``user_ns`` is the module used to execute code entered interactively)::"
 msgstr ""
 
-#: library/warnings.rst:285
+#: library/warnings.rst:298
 msgid ""
 "import warnings\n"
 "warnings.filterwarnings(\"default\", category=DeprecationWarning,\n"
 "                                   module=user_ns.get(\"__name__\"))"
 msgstr ""
 
-#: library/warnings.rst:293
+#: library/warnings.rst:306
 msgid "Temporarily Suppressing Warnings"
 msgstr ""
 
-#: library/warnings.rst:295
+#: library/warnings.rst:308
 msgid ""
 "If you are using code that you know will raise a warning, such as a "
 "deprecated function, but do not want to see the warning (even when warnings "
@@ -524,7 +552,7 @@ msgid ""
 "to suppress the warning using the :class:`catch_warnings` context manager::"
 msgstr ""
 
-#: library/warnings.rst:300
+#: library/warnings.rst:313
 msgid ""
 "import warnings\n"
 "\n"
@@ -536,7 +564,7 @@ msgid ""
 "    fxn()"
 msgstr ""
 
-#: library/warnings.rst:309
+#: library/warnings.rst:322
 msgid ""
 "While within the context manager all warnings will simply be ignored. This "
 "allows you to use known-deprecated code without having to see the warning "
@@ -546,11 +574,11 @@ msgid ""
 "context manager at the same time, the behavior is undefined."
 msgstr ""
 
-#: library/warnings.rst:321
+#: library/warnings.rst:334
 msgid "Testing Warnings"
 msgstr ""
 
-#: library/warnings.rst:323
+#: library/warnings.rst:336
 msgid ""
 "To test warnings raised by code, use the :class:`catch_warnings` context "
 "manager. With it you can temporarily mutate the warnings filter to "
@@ -558,7 +586,7 @@ msgid ""
 "raised warnings to check::"
 msgstr ""
 
-#: library/warnings.rst:328
+#: library/warnings.rst:341
 msgid ""
 "import warnings\n"
 "\n"
@@ -576,7 +604,7 @@ msgid ""
 "    assert \"deprecated\" in str(w[-1].message)"
 msgstr ""
 
-#: library/warnings.rst:343
+#: library/warnings.rst:356
 msgid ""
 "One can also cause all warnings to be exceptions by using ``error`` instead "
 "of ``always``. One thing to be aware of is that if a warning has already "
@@ -585,7 +613,7 @@ msgid ""
 "registry related to the warning has been cleared."
 msgstr ""
 
-#: library/warnings.rst:349
+#: library/warnings.rst:362
 msgid ""
 "Once the context manager exits, the warnings filter is restored to its state "
 "when the context was entered. This prevents tests from changing the warnings "
@@ -596,7 +624,7 @@ msgid ""
 "manager at the same time, the behavior is undefined."
 msgstr ""
 
-#: library/warnings.rst:357
+#: library/warnings.rst:370
 msgid ""
 "When testing multiple operations that raise the same kind of warning, it is "
 "important to test them in a manner that confirms each operation is raising a "
@@ -606,18 +634,18 @@ msgid ""
 "entries from the warnings list before each new operation)."
 msgstr ""
 
-#: library/warnings.rst:368
+#: library/warnings.rst:381
 msgid "Updating Code For New Versions of Dependencies"
 msgstr ""
 
-#: library/warnings.rst:370
+#: library/warnings.rst:383
 msgid ""
 "Warning categories that are primarily of interest to Python developers "
 "(rather than end users of applications written in Python) are ignored by "
 "default."
 msgstr ""
 
-#: library/warnings.rst:373
+#: library/warnings.rst:386
 msgid ""
 "Notably, this \"ignored by default\" list includes :exc:`DeprecationWarning` "
 "(for every module except ``__main__``), which means developers should make "
@@ -626,14 +654,14 @@ msgid ""
 "(whether in the standard library or third party packages)."
 msgstr ""
 
-#: library/warnings.rst:379
+#: library/warnings.rst:392
 msgid ""
 "In the ideal case, the code will have a suitable test suite, and the test "
 "runner will take care of implicitly enabling all warnings when running tests "
 "(the test runner provided by the :mod:`unittest` module does this)."
 msgstr ""
 
-#: library/warnings.rst:383
+#: library/warnings.rst:396
 msgid ""
 "In less ideal cases, applications can be checked for use of deprecated "
 "interfaces by passing :option:`-Wd <-W>` to the Python interpreter (this is "
@@ -645,11 +673,11 @@ msgid ""
 "what is possible."
 msgstr ""
 
-#: library/warnings.rst:396
+#: library/warnings.rst:409
 msgid "Available Functions"
 msgstr ""
 
-#: library/warnings.rst:401
+#: library/warnings.rst:414
 msgid ""
 "Issue a warning, or maybe ignore it or raise an exception.  The *category* "
 "argument, if given, must be a :ref:`warning category class <warning-"
@@ -662,20 +690,20 @@ msgid ""
 "functions written in Python, like this::"
 msgstr ""
 
-#: library/warnings.rst:410
+#: library/warnings.rst:423
 msgid ""
 "def deprecated_api(message):\n"
 "    warnings.warn(message, DeprecationWarning, stacklevel=2)"
 msgstr ""
 
-#: library/warnings.rst:413
+#: library/warnings.rst:426
 msgid ""
 "This makes the warning refer to ``deprecated_api``'s caller, rather than to "
 "the source of ``deprecated_api`` itself (since the latter would defeat the "
 "purpose of the warning message)."
 msgstr ""
 
-#: library/warnings.rst:417
+#: library/warnings.rst:430
 msgid ""
 "The *skip_file_prefixes* keyword argument can be used to indicate which "
 "stack frames are ignored when counting stack levels. This can be useful when "
@@ -687,7 +715,7 @@ msgid ""
 "outside of the current package you might write::"
 msgstr ""
 
-#: library/warnings.rst:426
+#: library/warnings.rst:439
 msgid ""
 "# example/lower.py\n"
 "_warn_skips = (os.path.dirname(__file__),)\n"
@@ -704,28 +732,28 @@ msgid ""
 "    lower.one_way(**kw)"
 msgstr ""
 
-#: library/warnings.rst:440
+#: library/warnings.rst:453
 msgid ""
 "This makes the warning refer to both the ``example.lower.one_way()`` and "
 "``package.higher.another_way()`` call sites only from calling code living "
 "outside of ``example`` package."
 msgstr ""
 
-#: library/warnings.rst:470
+#: library/warnings.rst:483
 msgid ""
 "*source*, if supplied, is the destroyed object which emitted a :exc:"
 "`ResourceWarning`."
 msgstr ""
 
-#: library/warnings.rst:447
+#: library/warnings.rst:460
 msgid "Added *source* parameter."
 msgstr ""
 
-#: library/warnings.rst:450
+#: library/warnings.rst:463
 msgid "Added *skip_file_prefixes*."
 msgstr ""
 
-#: library/warnings.rst:456
+#: library/warnings.rst:469
 msgid ""
 "This is a low-level interface to the functionality of :func:`warn`, passing "
 "in explicitly the message, category, filename and line number, and "
@@ -737,7 +765,7 @@ msgid ""
 "case *category* will be ignored."
 msgstr ""
 
-#: library/warnings.rst:465
+#: library/warnings.rst:478
 msgid ""
 "*module_globals*, if supplied, should be the global namespace in use by the "
 "code for which the warning is issued.  (This argument is used to support "
@@ -745,11 +773,11 @@ msgid ""
 "import sources)."
 msgstr ""
 
-#: library/warnings.rst:473
+#: library/warnings.rst:486
 msgid "Add the *source* parameter."
 msgstr ""
 
-#: library/warnings.rst:479
+#: library/warnings.rst:492
 msgid ""
 "Write a warning to a file.  The default implementation calls "
 "``formatwarning(message, category, filename, lineno, line)`` and writes the "
@@ -760,7 +788,7 @@ msgid ""
 "line specified by *filename* and *lineno*."
 msgstr ""
 
-#: library/warnings.rst:490
+#: library/warnings.rst:503
 msgid ""
 "Format a warning the standard way.  This returns a string which may contain "
 "embedded newlines and ends in a newline.  *line* is a line of source code to "
@@ -769,7 +797,7 @@ msgid ""
 "*lineno*."
 msgstr ""
 
-#: library/warnings.rst:499
+#: library/warnings.rst:512
 msgid ""
 "Insert an entry into the list of :ref:`warnings filter specifications "
 "<warning-filter>`.  The entry is inserted at the front by default; if "
@@ -781,7 +809,7 @@ msgid ""
 "everything."
 msgstr ""
 
-#: library/warnings.rst:511
+#: library/warnings.rst:524
 msgid ""
 "Insert a simple entry into the list of :ref:`warnings filter specifications "
 "<warning-filter>`.  The meaning of the function parameters is as for :func:"
@@ -790,18 +818,18 @@ msgid ""
 "and line number match."
 msgstr ""
 
-#: library/warnings.rst:520
+#: library/warnings.rst:533
 msgid ""
 "Reset the warnings filter.  This discards the effect of all previous calls "
 "to :func:`filterwarnings`, including that of the :option:`-W` command line "
 "options and calls to :func:`simplefilter`."
 msgstr ""
 
-#: library/warnings.rst:526
+#: library/warnings.rst:539
 msgid "Available Context Managers"
 msgstr ""
 
-#: library/warnings.rst:530
+#: library/warnings.rst:543
 msgid ""
 "A context manager that copies and, upon exit, restores the warnings filter "
 "and the :func:`showwarning` function. If the *record* argument is :const:"
@@ -812,27 +840,27 @@ msgid ""
 "has attributes with the same names as the arguments to :func:`showwarning`."
 msgstr ""
 
-#: library/warnings.rst:539
+#: library/warnings.rst:552
 msgid ""
 "The *module* argument takes a module that will be used instead of the module "
 "returned when you import :mod:`warnings` whose filter will be protected. "
 "This argument exists primarily for testing the :mod:`warnings` module itself."
 msgstr ""
 
-#: library/warnings.rst:544
+#: library/warnings.rst:557
 msgid ""
 "If the *action* argument is not ``None``, the remaining arguments are passed "
 "to :func:`simplefilter` as if it were called immediately on entering the "
 "context."
 msgstr ""
 
-#: library/warnings.rst:548
+#: library/warnings.rst:561
 msgid ""
 "See :ref:`warning-filter` for the meaning of the *category* and *lineno* "
 "parameters."
 msgstr ""
 
-#: library/warnings.rst:553
+#: library/warnings.rst:566
 msgid ""
 "The :class:`catch_warnings` manager works by replacing and then later "
 "restoring the module's :func:`showwarning` function and internal list of "
@@ -840,7 +868,7 @@ msgid ""
 "state and therefore is not thread-safe."
 msgstr ""
 
-#: library/warnings.rst:561
+#: library/warnings.rst:574
 msgid "Added the *action*, *category*, *lineno*, and *append* parameters."
 msgstr ""
 
diff --git a/library/webbrowser.po b/library/webbrowser.po
index a292fe9cd..9bca9f485 100644
--- a/library/webbrowser.po
+++ b/library/webbrowser.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -58,16 +58,26 @@ msgid ""
 "launch a new browser and wait."
 msgstr ""
 
-#: library/webbrowser.rst:36
+#: library/webbrowser.rst:38
 msgid ""
 "The script :program:`webbrowser` can be used as a command-line interface for "
 "the module. It accepts a URL as the argument. It accepts the following "
-"optional parameters: ``-n`` opens the URL in a new browser window, if "
-"possible; ``-t`` opens the URL in a new browser page (\"tab\"). The options "
-"are, naturally, mutually exclusive.  Usage example::"
+"optional parameters:"
 msgstr ""
 
-#: library/webbrowser.rst:42
+#: library/webbrowser.rst:44
+msgid "Opens the URL in a new browser window, if possible."
+msgstr ""
+
+#: library/webbrowser.rst:48
+msgid "Opens the URL in a new browser tab."
+msgstr ""
+
+#: library/webbrowser.rst:50
+msgid "The options are, naturally, mutually exclusive.  Usage example:"
+msgstr ""
+
+#: library/webbrowser.rst:52
 msgid "python -m webbrowser -t \"https://www.python.org\""
 msgstr ""
 
@@ -82,19 +92,19 @@ msgid ""
 "more information."
 msgstr ""
 
-#: library/webbrowser.rst:46
+#: library/webbrowser.rst:58
 msgid "The following exception is defined:"
 msgstr ""
 
-#: library/webbrowser.rst:51
+#: library/webbrowser.rst:63
 msgid "Exception raised when a browser control error occurs."
 msgstr ""
 
-#: library/webbrowser.rst:53
+#: library/webbrowser.rst:65
 msgid "The following functions are defined:"
 msgstr ""
 
-#: library/webbrowser.rst:58
+#: library/webbrowser.rst:70
 msgid ""
 "Display *url* using the default browser. If *new* is 0, the *url* is opened "
 "in the same browser window if possible.  If *new* is 1, a new browser window "
@@ -104,44 +114,44 @@ msgid ""
 "the setting of this variable)."
 msgstr ""
 
-#: library/webbrowser.rst:79 library/webbrowser.rst:87
+#: library/webbrowser.rst:91 library/webbrowser.rst:99
 msgid ""
 "Returns ``True`` if a browser was successfully launched, ``False`` otherwise."
 msgstr ""
 
-#: library/webbrowser.rst:67
+#: library/webbrowser.rst:79
 msgid ""
 "Note that on some platforms, trying to open a filename using this function, "
 "may work and start the operating system's associated program.  However, this "
 "is neither supported nor portable."
 msgstr ""
 
-#: library/webbrowser.rst:71
+#: library/webbrowser.rst:83
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``webbrowser.open`` with argument "
 "``url``."
 msgstr ""
 
-#: library/webbrowser.rst:76
+#: library/webbrowser.rst:88
 msgid ""
 "Open *url* in a new window of the default browser, if possible, otherwise, "
 "open *url* in the only browser window."
 msgstr ""
 
-#: library/webbrowser.rst:84
+#: library/webbrowser.rst:96
 msgid ""
 "Open *url* in a new page (\"tab\") of the default browser, if possible, "
 "otherwise equivalent to :func:`open_new`."
 msgstr ""
 
-#: library/webbrowser.rst:92
+#: library/webbrowser.rst:104
 msgid ""
 "Return a controller object for the browser type *using*.  If *using* is "
 "``None``, return a controller for a default browser appropriate to the "
 "caller's environment."
 msgstr ""
 
-#: library/webbrowser.rst:99
+#: library/webbrowser.rst:111
 msgid ""
 "Register the browser type *name*.  Once a browser type is registered, the :"
 "func:`get` function can return a controller for that browser type.  If "
@@ -150,7 +160,7 @@ msgid ""
 "provided, *constructor* will never be called, and may be ``None``."
 msgstr ""
 
-#: library/webbrowser.rst:105
+#: library/webbrowser.rst:117
 msgid ""
 "Setting *preferred* to ``True`` makes this browser a preferred result for a :"
 "func:`get` call with no argument.  Otherwise, this entry point is only "
@@ -159,178 +169,178 @@ msgid ""
 "declare."
 msgstr ""
 
-#: library/webbrowser.rst:111
+#: library/webbrowser.rst:123
 msgid "*preferred* keyword-only parameter was added."
 msgstr ""
 
-#: library/webbrowser.rst:114
+#: library/webbrowser.rst:126
 msgid ""
 "A number of browser types are predefined.  This table gives the type names "
 "that may be passed to the :func:`get` function and the corresponding "
 "instantiations for the controller classes, all defined in this module."
 msgstr ""
 
-#: library/webbrowser.rst:119
+#: library/webbrowser.rst:131
 msgid "Type Name"
 msgstr ""
 
-#: library/webbrowser.rst:119
+#: library/webbrowser.rst:131
 msgid "Class Name"
 msgstr ""
 
-#: library/webbrowser.rst:119
+#: library/webbrowser.rst:131
 msgid "Notes"
 msgstr ""
 
-#: library/webbrowser.rst:121
+#: library/webbrowser.rst:133
 msgid "``'mozilla'``"
 msgstr ""
 
-#: library/webbrowser.rst:123
+#: library/webbrowser.rst:135
 msgid ":class:`Mozilla('mozilla')`"
 msgstr ""
 
-#: library/webbrowser.rst:123
+#: library/webbrowser.rst:135
 msgid "``'firefox'``"
 msgstr ""
 
-#: library/webbrowser.rst:125
+#: library/webbrowser.rst:137
 msgid "``'epiphany'``"
 msgstr ""
 
-#: library/webbrowser.rst:125
+#: library/webbrowser.rst:137
 msgid ":class:`Epiphany('epiphany')`"
 msgstr ""
 
-#: library/webbrowser.rst:127
+#: library/webbrowser.rst:139
 msgid "``'kfmclient'``"
 msgstr ""
 
-#: library/webbrowser.rst:129 library/webbrowser.rst:131
+#: library/webbrowser.rst:141 library/webbrowser.rst:143
 msgid ":class:`Konqueror()`"
 msgstr ""
 
-#: library/webbrowser.rst:129 library/webbrowser.rst:131
+#: library/webbrowser.rst:141 library/webbrowser.rst:143
 msgid "\\(1)"
 msgstr ""
 
-#: library/webbrowser.rst:129
+#: library/webbrowser.rst:141
 msgid "``'konqueror'``"
 msgstr ""
 
-#: library/webbrowser.rst:131
+#: library/webbrowser.rst:143
 msgid "``'kfm'``"
 msgstr ""
 
-#: library/webbrowser.rst:133
+#: library/webbrowser.rst:145
 msgid "``'opera'``"
 msgstr ""
 
-#: library/webbrowser.rst:133
+#: library/webbrowser.rst:145
 msgid ":class:`Opera()`"
 msgstr ""
 
-#: library/webbrowser.rst:135
+#: library/webbrowser.rst:147
 msgid "``'links'``"
 msgstr ""
 
-#: library/webbrowser.rst:135
+#: library/webbrowser.rst:147
 msgid ":class:`GenericBrowser('links')`"
 msgstr ""
 
-#: library/webbrowser.rst:137
+#: library/webbrowser.rst:149
 msgid "``'elinks'``"
 msgstr ""
 
-#: library/webbrowser.rst:137
+#: library/webbrowser.rst:149
 msgid ":class:`Elinks('elinks')`"
 msgstr ""
 
-#: library/webbrowser.rst:139
+#: library/webbrowser.rst:151
 msgid "``'lynx'``"
 msgstr ""
 
-#: library/webbrowser.rst:139
+#: library/webbrowser.rst:151
 msgid ":class:`GenericBrowser('lynx')`"
 msgstr ""
 
-#: library/webbrowser.rst:141
+#: library/webbrowser.rst:153
 msgid "``'w3m'``"
 msgstr ""
 
-#: library/webbrowser.rst:141
+#: library/webbrowser.rst:153
 msgid ":class:`GenericBrowser('w3m')`"
 msgstr ""
 
-#: library/webbrowser.rst:143
+#: library/webbrowser.rst:155
 msgid "``'windows-default'``"
 msgstr ""
 
-#: library/webbrowser.rst:143
+#: library/webbrowser.rst:155
 msgid ":class:`WindowsDefault`"
 msgstr ""
 
-#: library/webbrowser.rst:143
+#: library/webbrowser.rst:155
 msgid "\\(2)"
 msgstr ""
 
-#: library/webbrowser.rst:145
+#: library/webbrowser.rst:157
 msgid "``'macosx'``"
 msgstr ""
 
-#: library/webbrowser.rst:145
+#: library/webbrowser.rst:157
 msgid ":class:`MacOSXOSAScript('default')`"
 msgstr ""
 
-#: library/webbrowser.rst:147
+#: library/webbrowser.rst:159
 msgid "\\(3)"
 msgstr ""
 
-#: library/webbrowser.rst:147
+#: library/webbrowser.rst:159
 msgid "``'safari'``"
 msgstr ""
 
-#: library/webbrowser.rst:147
+#: library/webbrowser.rst:159
 msgid ":class:`MacOSXOSAScript('safari')`"
 msgstr ""
 
-#: library/webbrowser.rst:149
+#: library/webbrowser.rst:161
 msgid "``'google-chrome'``"
 msgstr ""
 
-#: library/webbrowser.rst:149
+#: library/webbrowser.rst:161
 msgid ":class:`Chrome('google-chrome')`"
 msgstr ""
 
-#: library/webbrowser.rst:151
+#: library/webbrowser.rst:163
 msgid "``'chrome'``"
 msgstr ""
 
-#: library/webbrowser.rst:151
+#: library/webbrowser.rst:163
 msgid ":class:`Chrome('chrome')`"
 msgstr ""
 
-#: library/webbrowser.rst:153
+#: library/webbrowser.rst:165
 msgid "``'chromium'``"
 msgstr ""
 
-#: library/webbrowser.rst:153
+#: library/webbrowser.rst:165
 msgid ":class:`Chromium('chromium')`"
 msgstr ""
 
-#: library/webbrowser.rst:155
+#: library/webbrowser.rst:167
 msgid "``'chromium-browser'``"
 msgstr ""
 
-#: library/webbrowser.rst:155
+#: library/webbrowser.rst:167
 msgid ":class:`Chromium('chromium-browser')`"
 msgstr ""
 
-#: library/webbrowser.rst:158
+#: library/webbrowser.rst:170
 msgid "Notes:"
 msgstr ""
 
-#: library/webbrowser.rst:161
+#: library/webbrowser.rst:173
 msgid ""
 "\"Konqueror\" is the file manager for the KDE desktop environment for Unix, "
 "and only makes sense to use if KDE is running.  Some way of reliably "
@@ -340,34 +350,34 @@ msgid ""
 "best strategy for running Konqueror."
 msgstr ""
 
-#: library/webbrowser.rst:168
+#: library/webbrowser.rst:180
 msgid "Only on Windows platforms."
 msgstr ""
 
-#: library/webbrowser.rst:171
+#: library/webbrowser.rst:183
 msgid "Only on macOS platform."
 msgstr ""
 
-#: library/webbrowser.rst:173
+#: library/webbrowser.rst:185
 msgid "Support for Chrome/Chromium has been added."
 msgstr ""
 
-#: library/webbrowser.rst:176
+#: library/webbrowser.rst:188
 msgid ""
 "Support for several obsolete browsers has been removed. Removed browsers "
 "include Grail, Mosaic, Netscape, Galeon, Skipstone, Iceape, and Firefox "
 "versions 35 and below."
 msgstr ""
 
-#: library/webbrowser.rst:181
+#: library/webbrowser.rst:193
 msgid ":class:`MacOSX` is deprecated, use :class:`MacOSXOSAScript` instead."
 msgstr ""
 
-#: library/webbrowser.rst:184
+#: library/webbrowser.rst:196
 msgid "Here are some simple examples::"
 msgstr ""
 
-#: library/webbrowser.rst:186
+#: library/webbrowser.rst:198
 msgid ""
 "url = 'https://docs.python.org/'\n"
 "\n"
@@ -378,45 +388,45 @@ msgid ""
 "webbrowser.open_new(url)"
 msgstr ""
 
-#: library/webbrowser.rst:198
+#: library/webbrowser.rst:210
 msgid "Browser Controller Objects"
 msgstr ""
 
-#: library/webbrowser.rst:200
+#: library/webbrowser.rst:212
 msgid ""
 "Browser controllers provide these methods which parallel three of the module-"
 "level convenience functions:"
 msgstr ""
 
-#: library/webbrowser.rst:206
+#: library/webbrowser.rst:218
 msgid "System-dependent name for the browser."
 msgstr ""
 
-#: library/webbrowser.rst:211
+#: library/webbrowser.rst:223
 msgid ""
 "Display *url* using the browser handled by this controller. If *new* is 1, a "
 "new browser window is opened if possible. If *new* is 2, a new browser page "
 "(\"tab\") is opened if possible."
 msgstr ""
 
-#: library/webbrowser.rst:218
+#: library/webbrowser.rst:230
 msgid ""
 "Open *url* in a new window of the browser handled by this controller, if "
 "possible, otherwise, open *url* in the only browser window.  Alias :func:"
 "`open_new`."
 msgstr ""
 
-#: library/webbrowser.rst:225
+#: library/webbrowser.rst:237
 msgid ""
 "Open *url* in a new page (\"tab\") of the browser handled by this "
 "controller, if possible, otherwise equivalent to :func:`open_new`."
 msgstr ""
 
-#: library/webbrowser.rst:230
+#: library/webbrowser.rst:242
 msgid "Footnotes"
 msgstr ""
 
-#: library/webbrowser.rst:231
+#: library/webbrowser.rst:243
 msgid ""
 "Executables named here without a full path will be searched in the "
 "directories given in the :envvar:`PATH` environment variable."
diff --git a/library/winsound.po b/library/winsound.po
index a87cee3f0..8bb71d05a 100644
--- a/library/winsound.po
+++ b/library/winsound.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -186,18 +186,25 @@ msgstr ""
 msgid "Return immediately if the sound driver is busy."
 msgstr ""
 
-#: library/winsound.rst:160
+#: library/winsound.rst:140
+msgid ""
+"The *sound* parameter is an application-specific alias in the registry. This "
+"flag can be combined with the :const:`SND_ALIAS` flag to specify an "
+"application-defined sound alias."
+msgstr ""
+
+#: library/winsound.rst:167
 msgid "Play the ``SystemDefault`` sound."
 msgstr ""
 
-#: library/winsound.rst:145
+#: library/winsound.rst:152
 msgid "Play the ``SystemExclamation`` sound."
 msgstr ""
 
-#: library/winsound.rst:150
+#: library/winsound.rst:157
 msgid "Play the ``SystemHand`` sound."
 msgstr ""
 
-#: library/winsound.rst:155
+#: library/winsound.rst:162
 msgid "Play the ``SystemQuestion`` sound."
 msgstr ""
diff --git a/library/wsgiref.po b/library/wsgiref.po
index 1a981146b..a64903d2a 100644
--- a/library/wsgiref.po
+++ b/library/wsgiref.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -159,11 +159,13 @@ msgid ""
 "actual WSGI servers or applications, since the data is fake!"
 msgstr ""
 
-#: library/wsgiref.rst:170 library/wsgiref.rst:426
-msgid "Example usage::"
+#: library/wsgiref.rst:122
+msgid ""
+"Example usage (see also :func:`~wsgiref.simple_server.demo_app` for another "
+"example)::"
 msgstr ""
 
-#: library/wsgiref.rst:124
+#: library/wsgiref.rst:125
 msgid ""
 "from wsgiref.util import setup_testing_defaults\n"
 "from wsgiref.simple_server import make_server\n"
@@ -187,19 +189,19 @@ msgid ""
 "    httpd.serve_forever()"
 msgstr ""
 
-#: library/wsgiref.rst:146
+#: library/wsgiref.rst:147
 msgid ""
 "In addition to the environment functions above, the :mod:`wsgiref.util` "
 "module also provides these miscellaneous utilities:"
 msgstr ""
 
-#: library/wsgiref.rst:152
+#: library/wsgiref.rst:153
 msgid ""
 "Return ``True`` if 'header_name' is an HTTP/1.1 \"Hop-by-Hop\" header, as "
 "defined by :rfc:`2616`."
 msgstr ""
 
-#: library/wsgiref.rst:158
+#: library/wsgiref.rst:159
 msgid ""
 "A concrete implementation of the :class:`wsgiref.types.FileWrapper` protocol "
 "used to convert a file-like object to an :term:`iterator`. The resulting "
@@ -209,14 +211,18 @@ msgid ""
 "`read` returns an empty bytestring, iteration is ended and is not resumable."
 msgstr ""
 
-#: library/wsgiref.rst:166
+#: library/wsgiref.rst:167
 msgid ""
 "If *filelike* has a :meth:`close` method, the returned object will also have "
 "a :meth:`close` method, and it will invoke the *filelike* object's :meth:"
 "`close` method when called."
 msgstr ""
 
-#: library/wsgiref.rst:172
+#: library/wsgiref.rst:294 library/wsgiref.rst:429
+msgid "Example usage::"
+msgstr ""
+
+#: library/wsgiref.rst:173
 msgid ""
 "from io import StringIO\n"
 "from wsgiref.util import FileWrapper\n"
@@ -229,28 +235,28 @@ msgid ""
 "    print(chunk)"
 msgstr ""
 
-#: library/wsgiref.rst:182
+#: library/wsgiref.rst:183
 msgid "Support for :meth:`~object.__getitem__` method has been removed."
 msgstr ""
 
-#: library/wsgiref.rst:187
+#: library/wsgiref.rst:188
 msgid ":mod:`wsgiref.headers` -- WSGI response header tools"
 msgstr ""
 
-#: library/wsgiref.rst:193
+#: library/wsgiref.rst:194
 msgid ""
 "This module provides a single class, :class:`Headers`, for convenient "
 "manipulation of WSGI response headers using a mapping-like interface."
 msgstr ""
 
-#: library/wsgiref.rst:199
+#: library/wsgiref.rst:200
 msgid ""
 "Create a mapping-like object wrapping *headers*, which must be a list of "
 "header name/value tuples as described in :pep:`3333`. The default value of "
 "*headers* is an empty list."
 msgstr ""
 
-#: library/wsgiref.rst:203
+#: library/wsgiref.rst:204
 msgid ""
 ":class:`Headers` objects support typical mapping operations including :meth:"
 "`~object.__getitem__`, :meth:`~dict.get`, :meth:`~object.__setitem__`, :meth:"
@@ -263,7 +269,7 @@ msgid ""
 "the end of the wrapped list."
 msgstr ""
 
-#: library/wsgiref.rst:213
+#: library/wsgiref.rst:214
 msgid ""
 "Unlike a dictionary, :class:`Headers` objects do not raise an error when you "
 "try to get or delete a key that isn't in the wrapped header list. Getting a "
@@ -271,7 +277,7 @@ msgid ""
 "does nothing."
 msgstr ""
 
-#: library/wsgiref.rst:218
+#: library/wsgiref.rst:219
 msgid ""
 ":class:`Headers` objects also support :meth:`keys`, :meth:`values`, and :"
 "meth:`items` methods.  The lists returned by :meth:`keys` and :meth:`items` "
@@ -282,7 +288,7 @@ msgid ""
 "list."
 msgstr ""
 
-#: library/wsgiref.rst:225
+#: library/wsgiref.rst:226
 msgid ""
 "Calling ``bytes()`` on a :class:`Headers` object returns a formatted "
 "bytestring suitable for transmission as HTTP response headers.  Each header "
@@ -291,18 +297,18 @@ msgid ""
 "terminated with a blank line."
 msgstr ""
 
-#: library/wsgiref.rst:231
+#: library/wsgiref.rst:232
 msgid ""
 "In addition to their mapping interface and formatting features, :class:"
 "`Headers` objects also have the following methods for querying and adding "
 "multi-valued headers, and for adding headers with MIME parameters:"
 msgstr ""
 
-#: library/wsgiref.rst:238
+#: library/wsgiref.rst:239
 msgid "Return a list of all the values for the named header."
 msgstr ""
 
-#: library/wsgiref.rst:240
+#: library/wsgiref.rst:241
 msgid ""
 "The returned list will be sorted in the order they appeared in the original "
 "header list or were added to this instance, and may contain duplicates.  Any "
@@ -310,13 +316,13 @@ msgid ""
 "no fields exist with the given name, returns an empty list."
 msgstr ""
 
-#: library/wsgiref.rst:248
+#: library/wsgiref.rst:249
 msgid ""
 "Add a (possibly multi-valued) header, with optional MIME parameters "
 "specified via keyword arguments."
 msgstr ""
 
-#: library/wsgiref.rst:251
+#: library/wsgiref.rst:252
 msgid ""
 "*name* is the header field to add.  Keyword arguments can be used to set "
 "MIME parameters for the header field.  Each parameter must be a string or "
@@ -328,27 +334,27 @@ msgid ""
 "a value.)  Example usage::"
 msgstr ""
 
-#: library/wsgiref.rst:259
+#: library/wsgiref.rst:260
 msgid "h.add_header('content-disposition', 'attachment', filename='bud.gif')"
 msgstr ""
 
-#: library/wsgiref.rst:261
+#: library/wsgiref.rst:262
 msgid "The above will add a header that looks like this::"
 msgstr ""
 
-#: library/wsgiref.rst:263
+#: library/wsgiref.rst:264
 msgid "Content-Disposition: attachment; filename=\"bud.gif\""
 msgstr ""
 
-#: library/wsgiref.rst:266
+#: library/wsgiref.rst:267
 msgid "*headers* parameter is optional."
 msgstr ""
 
-#: library/wsgiref.rst:271
+#: library/wsgiref.rst:272
 msgid ":mod:`wsgiref.simple_server` -- a simple WSGI HTTP server"
 msgstr ""
 
-#: library/wsgiref.rst:277
+#: library/wsgiref.rst:278
 msgid ""
 "This module implements a simple HTTP server (based on :mod:`http.server`) "
 "that serves WSGI applications.  Each server instance serves a single WSGI "
@@ -359,7 +365,7 @@ msgid ""
 "`wsgiref.util`.)"
 msgstr ""
 
-#: library/wsgiref.rst:288
+#: library/wsgiref.rst:289
 msgid ""
 "Create a new WSGI server listening on *host* and *port*, accepting "
 "connections for *app*.  The return value is an instance of the supplied "
@@ -368,7 +374,7 @@ msgid ""
 "pep:`3333`."
 msgstr ""
 
-#: library/wsgiref.rst:295
+#: library/wsgiref.rst:296
 msgid ""
 "from wsgiref.simple_server import make_server, demo_app\n"
 "\n"
@@ -382,7 +388,7 @@ msgid ""
 "    httpd.handle_request()"
 msgstr ""
 
-#: library/wsgiref.rst:309
+#: library/wsgiref.rst:310
 msgid ""
 "This function is a small but complete WSGI application that returns a text "
 "page containing the message \"Hello world!\" and a list of the key/value "
@@ -391,51 +397,57 @@ msgid ""
 "WSGI application correctly."
 msgstr ""
 
-#: library/wsgiref.rst:318
+#: library/wsgiref.rst:316
+msgid ""
+"The *start_response* callable should follow the :class:`.StartResponse` "
+"protocol."
+msgstr ""
+
+#: library/wsgiref.rst:321
 msgid ""
 "Create a :class:`WSGIServer` instance.  *server_address* should be a ``(host,"
 "port)`` tuple, and *RequestHandlerClass* should be the subclass of :class:"
 "`http.server.BaseHTTPRequestHandler` that will be used to process requests."
 msgstr ""
 
-#: library/wsgiref.rst:323
+#: library/wsgiref.rst:326
 msgid ""
 "You do not normally need to call this constructor, as the :func:"
 "`make_server` function can handle all the details for you."
 msgstr ""
 
-#: library/wsgiref.rst:326
+#: library/wsgiref.rst:329
 msgid ""
 ":class:`WSGIServer` is a subclass of :class:`http.server.HTTPServer`, so all "
 "of its methods (such as :meth:`serve_forever` and :meth:`handle_request`) "
 "are available. :class:`WSGIServer` also provides these WSGI-specific methods:"
 msgstr ""
 
-#: library/wsgiref.rst:333
+#: library/wsgiref.rst:336
 msgid ""
 "Sets the callable *application* as the WSGI application that will receive "
 "requests."
 msgstr ""
 
-#: library/wsgiref.rst:339
+#: library/wsgiref.rst:342
 msgid "Returns the currently set application callable."
 msgstr ""
 
-#: library/wsgiref.rst:341
+#: library/wsgiref.rst:344
 msgid ""
 "Normally, however, you do not need to use these additional methods, as :meth:"
 "`set_app` is normally called by :func:`make_server`, and the :meth:`get_app` "
 "exists mainly for the benefit of request handler instances."
 msgstr ""
 
-#: library/wsgiref.rst:348
+#: library/wsgiref.rst:351
 msgid ""
 "Create an HTTP handler for the given *request* (i.e. a socket), "
 "*client_address* (a ``(host,port)`` tuple), and *server* (:class:"
 "`WSGIServer` instance)."
 msgstr ""
 
-#: library/wsgiref.rst:351
+#: library/wsgiref.rst:354
 msgid ""
 "You do not need to create instances of this class directly; they are "
 "automatically created as needed by :class:`WSGIServer` objects.  You can, "
@@ -444,7 +456,7 @@ msgid ""
 "subclasses:"
 msgstr ""
 
-#: library/wsgiref.rst:360
+#: library/wsgiref.rst:363
 msgid ""
 "Return a :data:`~wsgiref.types.WSGIEnvironment` dictionary for a request.  "
 "The default implementation copies the contents of the :class:`WSGIServer` "
@@ -454,24 +466,24 @@ msgid ""
 "variables as specified in :pep:`3333`."
 msgstr ""
 
-#: library/wsgiref.rst:371
+#: library/wsgiref.rst:374
 msgid ""
 "Return the object that should be used as the ``wsgi.errors`` stream. The "
 "default implementation just returns ``sys.stderr``."
 msgstr ""
 
-#: library/wsgiref.rst:377
+#: library/wsgiref.rst:380
 msgid ""
 "Process the HTTP request.  The default implementation creates a handler "
 "instance using a :mod:`wsgiref.handlers` class to implement the actual WSGI "
 "application interface."
 msgstr ""
 
-#: library/wsgiref.rst:383
+#: library/wsgiref.rst:386
 msgid ":mod:`wsgiref.validate` --- WSGI conformance checker"
 msgstr ""
 
-#: library/wsgiref.rst:389
+#: library/wsgiref.rst:392
 msgid ""
 "When creating new WSGI application objects, frameworks, servers, or "
 "middleware, it can be useful to validate the new code's conformance using :"
@@ -481,7 +493,7 @@ msgid ""
 "conformance."
 msgstr ""
 
-#: library/wsgiref.rst:396
+#: library/wsgiref.rst:399
 msgid ""
 "Note that this utility does not guarantee complete :pep:`3333` compliance; "
 "an absence of errors from this module does not necessarily mean that errors "
@@ -490,13 +502,13 @@ msgid ""
 "compliant."
 msgstr ""
 
-#: library/wsgiref.rst:401
+#: library/wsgiref.rst:404
 msgid ""
 "This module is based on the :mod:`paste.lint` module from Ian Bicking's "
 "\"Python Paste\" library."
 msgstr ""
 
-#: library/wsgiref.rst:407
+#: library/wsgiref.rst:410
 msgid ""
 "Wrap *application* and return a new WSGI application object.  The returned "
 "application will forward all requests to the original *application*, and "
@@ -504,7 +516,7 @@ msgid ""
 "conforming to the WSGI specification and to :rfc:`2616`."
 msgstr ""
 
-#: library/wsgiref.rst:412
+#: library/wsgiref.rst:415
 msgid ""
 "Any detected nonconformance results in an :exc:`AssertionError` being "
 "raised; note, however, that how these errors are handled is server-"
@@ -515,7 +527,7 @@ msgid ""
 "stream."
 msgstr ""
 
-#: library/wsgiref.rst:419
+#: library/wsgiref.rst:422
 msgid ""
 "This wrapper may also generate output using the :mod:`warnings` module to "
 "indicate behaviors that are questionable but which may not actually be "
@@ -525,7 +537,7 @@ msgid ""
 "object)."
 msgstr ""
 
-#: library/wsgiref.rst:428
+#: library/wsgiref.rst:431
 msgid ""
 "from wsgiref.validate import validator\n"
 "from wsgiref.simple_server import make_server\n"
@@ -549,11 +561,11 @@ msgid ""
 "    httpd.serve_forever()"
 msgstr ""
 
-#: library/wsgiref.rst:451
+#: library/wsgiref.rst:454
 msgid ":mod:`wsgiref.handlers` -- server/gateway base classes"
 msgstr ""
 
-#: library/wsgiref.rst:457
+#: library/wsgiref.rst:460
 msgid ""
 "This module provides base handler classes for implementing WSGI servers and "
 "gateways.  These base classes handle most of the work of communicating with "
@@ -561,7 +573,7 @@ msgid ""
 "with input, output, and error streams."
 msgstr ""
 
-#: library/wsgiref.rst:465
+#: library/wsgiref.rst:468
 msgid ""
 "CGI-based invocation via ``sys.stdin``, ``sys.stdout``, ``sys.stderr`` and "
 "``os.environ``.  This is useful when you have a WSGI application and want to "
@@ -569,7 +581,7 @@ msgid ""
 "``app`` is the WSGI application object you wish to invoke."
 msgstr ""
 
-#: library/wsgiref.rst:470
+#: library/wsgiref.rst:473
 msgid ""
 "This class is a subclass of :class:`BaseCGIHandler` that sets ``wsgi."
 "run_once`` to true, ``wsgi.multithread`` to false, and ``wsgi.multiprocess`` "
@@ -577,21 +589,21 @@ msgid ""
 "CGI streams and environment."
 msgstr ""
 
-#: library/wsgiref.rst:478
+#: library/wsgiref.rst:481
 msgid ""
 "A specialized alternative to :class:`CGIHandler`, for use when deploying on "
 "Microsoft's IIS web server, without having set the config allowPathInfo "
 "option (IIS>=7) or metabase allowPathInfoForScriptMappings (IIS<7)."
 msgstr ""
 
-#: library/wsgiref.rst:482
+#: library/wsgiref.rst:485
 msgid ""
 "By default, IIS gives a ``PATH_INFO`` that duplicates the ``SCRIPT_NAME`` at "
 "the front, causing problems for WSGI applications that wish to implement "
 "routing. This handler strips any such duplicated path."
 msgstr ""
 
-#: library/wsgiref.rst:486
+#: library/wsgiref.rst:489
 msgid ""
 "IIS can be configured to pass the correct ``PATH_INFO``, but this causes "
 "another bug where ``PATH_TRANSLATED`` is wrong. Luckily this variable is "
@@ -602,7 +614,7 @@ msgid ""
 "because there is still no UI for it.)."
 msgstr ""
 
-#: library/wsgiref.rst:494
+#: library/wsgiref.rst:497
 msgid ""
 "There is no way for CGI code to tell whether the option was set, so a "
 "separate handler class is provided.  It is used in the same way as :class:"
@@ -610,7 +622,7 @@ msgid ""
 "is the WSGI application object you wish to invoke."
 msgstr ""
 
-#: library/wsgiref.rst:504
+#: library/wsgiref.rst:507
 msgid ""
 "Similar to :class:`CGIHandler`, but instead of using the :mod:`sys` and :mod:"
 "`os` modules, the CGI environment and I/O streams are specified explicitly. "
@@ -619,7 +631,7 @@ msgid ""
 "the handler instance."
 msgstr ""
 
-#: library/wsgiref.rst:510
+#: library/wsgiref.rst:513
 msgid ""
 "This class is a subclass of :class:`SimpleHandler` intended for use with "
 "software other than HTTP \"origin servers\".  If you are writing a gateway "
@@ -628,14 +640,14 @@ msgid ""
 "this instead of :class:`SimpleHandler`."
 msgstr ""
 
-#: library/wsgiref.rst:519
+#: library/wsgiref.rst:522
 msgid ""
 "Similar to :class:`BaseCGIHandler`, but designed for use with HTTP origin "
 "servers.  If you are writing an HTTP server implementation, you will "
 "probably want to subclass this instead of :class:`BaseCGIHandler`."
 msgstr ""
 
-#: library/wsgiref.rst:523
+#: library/wsgiref.rst:526
 msgid ""
 "This class is a subclass of :class:`BaseHandler`.  It overrides the :meth:`!"
 "__init__`, :meth:`~BaseHandler.get_stdin`, :meth:`~BaseHandler.get_stderr`, :"
@@ -646,41 +658,41 @@ msgid ""
 "`environ` attributes."
 msgstr ""
 
-#: library/wsgiref.rst:532
+#: library/wsgiref.rst:535
 msgid ""
 "The :meth:`~io.BufferedIOBase.write` method of *stdout* should write each "
 "chunk in full, like :class:`io.BufferedIOBase`."
 msgstr ""
 
-#: library/wsgiref.rst:538
+#: library/wsgiref.rst:541
 msgid ""
 "This is an abstract base class for running WSGI applications.  Each instance "
 "will handle a single HTTP request, although in principle you could create a "
 "subclass that was reusable for multiple requests."
 msgstr ""
 
-#: library/wsgiref.rst:542
+#: library/wsgiref.rst:545
 msgid ""
 ":class:`BaseHandler` instances have only one method intended for external "
 "use:"
 msgstr ""
 
-#: library/wsgiref.rst:547
+#: library/wsgiref.rst:550
 msgid "Run the specified WSGI application, *app*."
 msgstr ""
 
-#: library/wsgiref.rst:549
+#: library/wsgiref.rst:552
 msgid ""
 "All of the other :class:`BaseHandler` methods are invoked by this method in "
 "the process of running the application, and thus exist primarily to allow "
 "customizing the process."
 msgstr ""
 
-#: library/wsgiref.rst:553
+#: library/wsgiref.rst:556
 msgid "The following methods MUST be overridden in a subclass:"
 msgstr ""
 
-#: library/wsgiref.rst:558
+#: library/wsgiref.rst:561
 msgid ""
 "Buffer the bytes *data* for transmission to the client.  It's okay if this "
 "method actually transmits the data; :class:`BaseHandler` just separates "
@@ -688,33 +700,33 @@ msgid ""
 "actually has such a distinction."
 msgstr ""
 
-#: library/wsgiref.rst:566
+#: library/wsgiref.rst:569
 msgid ""
 "Force buffered data to be transmitted to the client.  It's okay if this "
 "method is a no-op (i.e., if :meth:`_write` actually sends the data)."
 msgstr ""
 
-#: library/wsgiref.rst:572
+#: library/wsgiref.rst:575
 msgid ""
 "Return an object compatible with :class:`~wsgiref.types.InputStream` "
 "suitable for use as the ``wsgi.input`` of the request currently being "
 "processed."
 msgstr ""
 
-#: library/wsgiref.rst:579
+#: library/wsgiref.rst:582
 msgid ""
 "Return an object compatible with :class:`~wsgiref.types.ErrorStream` "
 "suitable for use as the ``wsgi.errors`` of the request currently being "
 "processed."
 msgstr ""
 
-#: library/wsgiref.rst:586
+#: library/wsgiref.rst:589
 msgid ""
 "Insert CGI variables for the current request into the :attr:`environ` "
 "attribute."
 msgstr ""
 
-#: library/wsgiref.rst:588
+#: library/wsgiref.rst:591
 msgid ""
 "Here are some other methods and attributes you may wish to override. This "
 "list is only a summary, however, and does not include every method that can "
@@ -723,32 +735,32 @@ msgid ""
 "`BaseHandler` subclass."
 msgstr ""
 
-#: library/wsgiref.rst:594
+#: library/wsgiref.rst:597
 msgid "Attributes and methods for customizing the WSGI environment:"
 msgstr ""
 
-#: library/wsgiref.rst:599
+#: library/wsgiref.rst:602
 msgid ""
 "The value to be used for the ``wsgi.multithread`` environment variable.  It "
 "defaults to true in :class:`BaseHandler`, but may have a different default "
 "(or be set by the constructor) in the other subclasses."
 msgstr ""
 
-#: library/wsgiref.rst:606
+#: library/wsgiref.rst:609
 msgid ""
 "The value to be used for the ``wsgi.multiprocess`` environment variable.  It "
 "defaults to true in :class:`BaseHandler`, but may have a different default "
 "(or be set by the constructor) in the other subclasses."
 msgstr ""
 
-#: library/wsgiref.rst:613
+#: library/wsgiref.rst:616
 msgid ""
 "The value to be used for the ``wsgi.run_once`` environment variable.  It "
 "defaults to false in :class:`BaseHandler`, but :class:`CGIHandler` sets it "
 "to true by default."
 msgstr ""
 
-#: library/wsgiref.rst:620
+#: library/wsgiref.rst:623
 msgid ""
 "The default environment variables to be included in every request's WSGI "
 "environment.  By default, this is a copy of ``os.environ`` at the time that :"
@@ -758,7 +770,7 @@ msgid ""
 "classes and instances."
 msgstr ""
 
-#: library/wsgiref.rst:630
+#: library/wsgiref.rst:633
 msgid ""
 "If the :attr:`origin_server` attribute is set, this attribute's value is "
 "used to set the default ``SERVER_SOFTWARE`` WSGI environment variable, and "
@@ -767,13 +779,13 @@ msgid ""
 "are not HTTP origin servers."
 msgstr ""
 
-#: library/wsgiref.rst:636
+#: library/wsgiref.rst:639
 msgid ""
 "The term \"Python\" is replaced with implementation specific term like "
 "\"CPython\", \"Jython\" etc."
 msgstr ""
 
-#: library/wsgiref.rst:642
+#: library/wsgiref.rst:645
 msgid ""
 "Return the URL scheme being used for the current request.  The default "
 "implementation uses the :func:`guess_scheme` function from :mod:`wsgiref."
@@ -781,7 +793,7 @@ msgid ""
 "the current request's :attr:`environ` variables."
 msgstr ""
 
-#: library/wsgiref.rst:650
+#: library/wsgiref.rst:653
 msgid ""
 "Set the :attr:`environ` attribute to a fully populated WSGI environment.  "
 "The default implementation uses all of the above methods and attributes, "
@@ -791,11 +803,11 @@ msgid ""
 "attribute is a true value and the :attr:`server_software` attribute is set."
 msgstr ""
 
-#: library/wsgiref.rst:657
+#: library/wsgiref.rst:660
 msgid "Methods and attributes for customizing exception handling:"
 msgstr ""
 
-#: library/wsgiref.rst:662
+#: library/wsgiref.rst:665
 msgid ""
 "Log the *exc_info* tuple in the server log.  *exc_info* is a ``(type, value, "
 "traceback)`` tuple.  The default implementation simply writes the traceback "
@@ -805,33 +817,35 @@ msgid ""
 "suitable."
 msgstr ""
 
-#: library/wsgiref.rst:671
+#: library/wsgiref.rst:674
 msgid ""
 "The maximum number of frames to include in tracebacks output by the default :"
 "meth:`log_exception` method.  If ``None``, all frames are included."
 msgstr ""
 
-#: library/wsgiref.rst:677
+#: library/wsgiref.rst:680
 msgid ""
 "This method is a WSGI application to generate an error page for the user.  "
 "It is only invoked if an error occurs before headers are sent to the client."
 msgstr ""
 
-#: library/wsgiref.rst:680
+#: library/wsgiref.rst:683
 msgid ""
 "This method can access the current error using ``sys.exception()``, and "
 "should pass that information to *start_response* when calling it (as "
-"described in the \"Error Handling\" section of :pep:`3333`)."
+"described in the \"Error Handling\" section of :pep:`3333`). In particular, "
+"the *start_response* callable should follow the :class:`.StartResponse` "
+"protocol."
 msgstr ""
 
-#: library/wsgiref.rst:684
+#: library/wsgiref.rst:689
 msgid ""
 "The default implementation just uses the :attr:`error_status`, :attr:"
 "`error_headers`, and :attr:`error_body` attributes to generate an output "
 "page.  Subclasses can override this to produce more dynamic error output."
 msgstr ""
 
-#: library/wsgiref.rst:688
+#: library/wsgiref.rst:693
 msgid ""
 "Note, however, that it's not recommended from a security perspective to spit "
 "out diagnostics to any old user; ideally, you should have to do something "
@@ -839,40 +853,40 @@ msgid ""
 "doesn't include any."
 msgstr ""
 
-#: library/wsgiref.rst:696
+#: library/wsgiref.rst:701
 msgid ""
 "The HTTP status used for error responses.  This should be a status string as "
 "defined in :pep:`3333`; it defaults to a 500 code and message."
 msgstr ""
 
-#: library/wsgiref.rst:702
+#: library/wsgiref.rst:707
 msgid ""
 "The HTTP headers used for error responses.  This should be a list of WSGI "
 "response headers (``(name, value)`` tuples), as described in :pep:`3333`.  "
 "The default list just sets the content type to ``text/plain``."
 msgstr ""
 
-#: library/wsgiref.rst:709
+#: library/wsgiref.rst:714
 msgid ""
 "The error response body.  This should be an HTTP response body bytestring. "
 "It defaults to the plain text, \"A server error occurred.  Please contact "
 "the administrator.\""
 msgstr ""
 
-#: library/wsgiref.rst:713
+#: library/wsgiref.rst:718
 msgid ""
 "Methods and attributes for :pep:`3333`'s \"Optional Platform-Specific File "
 "Handling\" feature:"
 msgstr ""
 
-#: library/wsgiref.rst:719
+#: library/wsgiref.rst:724
 msgid ""
 "A ``wsgi.file_wrapper`` factory, compatible with :class:`wsgiref.types."
 "FileWrapper`, or ``None``.  The default value of this attribute is the :"
 "class:`wsgiref.util.FileWrapper` class."
 msgstr ""
 
-#: library/wsgiref.rst:726
+#: library/wsgiref.rst:731
 msgid ""
 "Override to implement platform-specific file transmission.  This method is "
 "called only if the application's return value is an instance of the class "
@@ -882,11 +896,11 @@ msgid ""
 "of this method just returns a false value."
 msgstr ""
 
-#: library/wsgiref.rst:733
+#: library/wsgiref.rst:738
 msgid "Miscellaneous methods and attributes:"
 msgstr ""
 
-#: library/wsgiref.rst:738
+#: library/wsgiref.rst:743
 msgid ""
 "This attribute should be set to a true value if the handler's :meth:`_write` "
 "and :meth:`_flush` are being used to communicate directly to the client, "
@@ -894,19 +908,19 @@ msgid ""
 "special ``Status:`` header."
 msgstr ""
 
-#: library/wsgiref.rst:743
+#: library/wsgiref.rst:748
 msgid ""
 "This attribute's default value is true in :class:`BaseHandler`, but false "
 "in :class:`BaseCGIHandler` and :class:`CGIHandler`."
 msgstr ""
 
-#: library/wsgiref.rst:749
+#: library/wsgiref.rst:754
 msgid ""
 "If :attr:`origin_server` is true, this string attribute is used to set the "
 "HTTP version of the response set to the client.  It defaults to ``\"1.0\"``."
 msgstr ""
 
-#: library/wsgiref.rst:755
+#: library/wsgiref.rst:760
 msgid ""
 "Transcode CGI variables from ``os.environ`` to :pep:`3333` \"bytes in "
 "unicode\" strings, returning a new dictionary.  This function is used by :"
@@ -918,65 +932,68 @@ msgid ""
 "than ISO-8859-1 (e.g. Unix systems using UTF-8)."
 msgstr ""
 
-#: library/wsgiref.rst:764
+#: library/wsgiref.rst:769
 msgid ""
 "If you are implementing a CGI-based handler of your own, you probably want "
 "to use this routine instead of just copying values out of ``os.environ`` "
 "directly."
 msgstr ""
 
-#: library/wsgiref.rst:772
+#: library/wsgiref.rst:777
 msgid ":mod:`wsgiref.types` -- WSGI types for static type checking"
 msgstr ""
 
-#: library/wsgiref.rst:778
+#: library/wsgiref.rst:783
 msgid ""
 "This module provides various types for static type checking as described in :"
 "pep:`3333`."
 msgstr ""
 
-#: library/wsgiref.rst:786
+#: library/wsgiref.rst:791
 msgid ""
 "A :class:`typing.Protocol` describing :pep:`start_response() <3333#the-start-"
 "response-callable>` callables (:pep:`3333`)."
 msgstr ""
 
-#: library/wsgiref.rst:792
+#: library/wsgiref.rst:797
 msgid "A type alias describing a WSGI environment dictionary."
 msgstr ""
 
-#: library/wsgiref.rst:796
+#: library/wsgiref.rst:801
 msgid "A type alias describing a WSGI application callable."
 msgstr ""
 
-#: library/wsgiref.rst:800
+#: library/wsgiref.rst:805
 msgid ""
 "A :class:`typing.Protocol` describing a :pep:`WSGI Input Stream <3333#input-"
 "and-error-streams>`."
 msgstr ""
 
-#: library/wsgiref.rst:805
+#: library/wsgiref.rst:810
 msgid ""
 "A :class:`typing.Protocol` describing a :pep:`WSGI Error Stream <3333#input-"
 "and-error-streams>`."
 msgstr ""
 
-#: library/wsgiref.rst:810
+#: library/wsgiref.rst:815
 msgid ""
 "A :class:`typing.Protocol` describing a :pep:`file wrapper <3333#optional-"
 "platform-specific-file-handling>`. See :class:`wsgiref.util.FileWrapper` for "
 "a concrete implementation of this protocol."
 msgstr ""
 
-#: library/wsgiref.rst:817
+#: library/wsgiref.rst:822
 msgid "Examples"
 msgstr ""
 
-#: library/wsgiref.rst:819
-msgid "This is a working \"Hello World\" WSGI application::"
+#: library/wsgiref.rst:824
+msgid ""
+"This is a working \"Hello World\" WSGI application, where the "
+"*start_response* callable should follow the :class:`.StartResponse` "
+"protocol::"
 msgstr ""
 
-#: library/wsgiref.rst:821
+#: library/wsgiref.rst:827
 msgid ""
 "\"\"\"\n"
 "Every WSGI application must have an application object - a callable\n"
@@ -1005,13 +1022,13 @@ msgid ""
 "    httpd.serve_forever()"
 msgstr ""
 
-#: library/wsgiref.rst:848
+#: library/wsgiref.rst:854
 msgid ""
 "Example of a WSGI application serving the current directory, accept optional "
 "directory and port number (default: 8000) on the command line::"
 msgstr ""
 
-#: library/wsgiref.rst:851
+#: library/wsgiref.rst:857
 msgid ""
 "\"\"\"\n"
 "Small wsgiref based web server. Takes a path to serve from and an\n"
diff --git a/library/xmlrpc.client.po b/library/xmlrpc.client.po
index c18b32be9..a73de4826 100644
--- a/library/xmlrpc.client.po
+++ b/library/xmlrpc.client.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -84,29 +84,29 @@ msgid ""
 "class:`bytes` and :class:`bytearray` objects may be passed to calls. The "
 "*headers* parameter is an optional sequence of HTTP headers to send with "
 "each request, expressed as a sequence of 2-tuples representing the header "
-"name and value. (e.g. ``[('Header-Name', 'value')]``). The obsolete "
-"*use_datetime* flag is similar to *use_builtin_types* but it applies only to "
-"date/time values."
+"name and value. (e.g. ``[('Header-Name', 'value')]``). If an HTTPS URL is "
+"provided, *context* may be :class:`ssl.SSLContext` and configures the SSL "
+"settings of the underlying HTTPS connection. The obsolete *use_datetime* "
+"flag is similar to *use_builtin_types* but it applies only to date/time "
+"values."
 msgstr ""
 
 #: library/xmlrpc.client.rst:549
 msgid "The *use_builtin_types* flag was added."
 msgstr ""
 
-#: library/xmlrpc.client.rst:70
+#: library/xmlrpc.client.rst:72
 msgid "The *headers* parameter was added."
 msgstr ""
 
-#: library/xmlrpc.client.rst:73
+#: library/xmlrpc.client.rst:75
 msgid ""
 "Both the HTTP and HTTPS transports support the URL syntax extension for HTTP "
 "Basic Authentication: ``http://user:pass@host:port/path``.  The  ``user:"
 "pass`` portion will be base64-encoded as an HTTP 'Authorization' header, and "
 "sent to the remote server as part of the connection process when invoking an "
 "XML-RPC method.  You only need to use this if the remote server requires a "
-"Basic Authentication user and password. If an HTTPS URL is provided, "
-"*context* may be :class:`ssl.SSLContext` and configures the SSL settings of "
-"the underlying HTTPS connection."
+"Basic Authentication user and password."
 msgstr ""
 
 #: library/xmlrpc.client.rst:82
diff --git a/library/xmlrpc.po b/library/xmlrpc.po
index a26b921e8..be004d2b5 100644
--- a/library/xmlrpc.po
+++ b/library/xmlrpc.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-09-18 19:05+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -20,23 +20,23 @@ msgstr ""
 msgid ":mod:`!xmlrpc` --- XMLRPC server and client modules"
 msgstr ""
 
-#: library/xmlrpc.rst:4
+#: library/xmlrpc.rst:7
 msgid ""
 "XML-RPC is a Remote Procedure Call method that uses XML passed via HTTP as a "
 "transport.  With it, a client can call methods with parameters on a remote "
 "server (the server is named by a URI) and get back structured data."
 msgstr ""
 
-#: library/xmlrpc.rst:8
+#: library/xmlrpc.rst:11
 msgid ""
 "``xmlrpc`` is a package that collects server and client modules implementing "
 "XML-RPC.  The modules are:"
 msgstr ""
 
-#: library/xmlrpc.rst:11
+#: library/xmlrpc.rst:14
 msgid ":mod:`xmlrpc.client`"
 msgstr ""
 
-#: library/xmlrpc.rst:12
+#: library/xmlrpc.rst:15
 msgid ":mod:`xmlrpc.server`"
 msgstr ""
diff --git a/library/zipfile.po b/library/zipfile.po
index 087613921..ee4d1e8b5 100644
--- a/library/zipfile.po
+++ b/library/zipfile.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -204,7 +204,7 @@ msgid ""
 "accepted (see :class:`bz2 <bz2.BZ2File>` for more information)."
 msgstr ""
 
-#: library/zipfile.rst:735
+#: library/zipfile.rst:743
 msgid ""
 "The *strict_timestamps* argument, when set to ``False``, allows to zip files "
 "older than 1980-01-01 at the cost of setting the timestamp to 1980-01-01. "
@@ -263,7 +263,7 @@ msgstr ""
 msgid "Added support for :mod:`bzip2 <bz2>` and :mod:`lzma` compression."
 msgstr ""
 
-#: library/zipfile.rst:648
+#: library/zipfile.rst:656
 msgid "ZIP64 extensions are enabled by default."
 msgstr ""
 
@@ -628,20 +628,31 @@ msgid ""
 "file.txt', 'dir/', or ''. Defaults to the empty string, indicating the root."
 msgstr ""
 
-#: library/zipfile.rst:531
+#: library/zipfile.rst:532
+msgid ""
+"The :class:`Path` class does not sanitize filenames within the ZIP archive. "
+"Unlike the :meth:`ZipFile.extract` and :meth:`ZipFile.extractall` methods, "
+"it is the caller's responsibility to validate or sanitize filenames to "
+"prevent path traversal vulnerabilities (e.g., filenames containing \"..\" or "
+"absolute paths). When handling untrusted archives, consider resolving "
+"filenames using :func:`os.path.abspath` and checking against the target "
+"directory with :func:`os.path.commonpath`."
+msgstr ""
+
+#: library/zipfile.rst:539
 msgid ""
 "Path objects expose the following features of :mod:`pathlib.Path` objects:"
 msgstr ""
 
-#: library/zipfile.rst:534
+#: library/zipfile.rst:542
 msgid "Path objects are traversable using the ``/`` operator or ``joinpath``."
 msgstr ""
 
-#: library/zipfile.rst:538
+#: library/zipfile.rst:546
 msgid "The final path component."
 msgstr ""
 
-#: library/zipfile.rst:542
+#: library/zipfile.rst:550
 msgid ""
 "Invoke :meth:`ZipFile.open` on the current path. Allows opening for read or "
 "write, text or binary through supported modes: 'r', 'w', 'rb', 'wb'. "
@@ -650,12 +661,12 @@ msgid ""
 "``pwd`` parameter to :meth:`ZipFile.open`."
 msgstr ""
 
-#: library/zipfile.rst:551
+#: library/zipfile.rst:559
 msgid ""
 "Added support for text and binary modes for open. Default mode is now text."
 msgstr ""
 
-#: library/zipfile.rst:606
+#: library/zipfile.rst:614
 msgid ""
 "The ``encoding`` parameter can be supplied as a positional argument without "
 "causing a :exc:`TypeError`. As it could in 3.9. Code needing to be "
@@ -663,124 +674,124 @@ msgid ""
 "TextIOWrapper` arguments, ``encoding`` included, as keywords."
 msgstr ""
 
-#: library/zipfile.rst:563
+#: library/zipfile.rst:571
 msgid "Enumerate the children of the current directory."
 msgstr ""
 
-#: library/zipfile.rst:567
+#: library/zipfile.rst:575
 msgid "Return ``True`` if the current context references a directory."
 msgstr ""
 
-#: library/zipfile.rst:571
+#: library/zipfile.rst:579
 msgid "Return ``True`` if the current context references a file."
 msgstr ""
 
-#: library/zipfile.rst:575
+#: library/zipfile.rst:583
 msgid ""
 "Return ``True`` if the current context references a file or directory in the "
 "zip file."
 msgstr ""
 
-#: library/zipfile.rst:580
+#: library/zipfile.rst:588
 msgid "The file extension of the final component."
 msgstr ""
 
-#: library/zipfile.rst:582
+#: library/zipfile.rst:590
 msgid "Added :data:`Path.suffix` property."
 msgstr ""
 
-#: library/zipfile.rst:587
+#: library/zipfile.rst:595
 msgid "The final path component, without its suffix."
 msgstr ""
 
-#: library/zipfile.rst:589
+#: library/zipfile.rst:597
 msgid "Added :data:`Path.stem` property."
 msgstr ""
 
-#: library/zipfile.rst:594
+#: library/zipfile.rst:602
 msgid "A list of the path’s file extensions."
 msgstr ""
 
-#: library/zipfile.rst:596
+#: library/zipfile.rst:604
 msgid "Added :data:`Path.suffixes` property."
 msgstr ""
 
-#: library/zipfile.rst:601
+#: library/zipfile.rst:609
 msgid ""
 "Read the current file as unicode text. Positional and keyword arguments are "
 "passed through to :class:`io.TextIOWrapper` (except ``buffer``, which is "
 "implied by the context)."
 msgstr ""
 
-#: library/zipfile.rst:614
+#: library/zipfile.rst:622
 msgid "Read the current file as bytes."
 msgstr ""
 
-#: library/zipfile.rst:618
+#: library/zipfile.rst:626
 msgid ""
 "Return a new Path object with each of the *other* arguments joined. The "
 "following are equivalent::"
 msgstr ""
 
-#: library/zipfile.rst:621
+#: library/zipfile.rst:629
 msgid ""
 ">>> Path(...).joinpath('child').joinpath('grandchild')\n"
 ">>> Path(...).joinpath('child', 'grandchild')\n"
 ">>> Path(...) / 'child' / 'grandchild'"
 msgstr ""
 
-#: library/zipfile.rst:625
+#: library/zipfile.rst:633
 msgid ""
 "Prior to 3.10, ``joinpath`` was undocumented and accepted exactly one "
 "parameter."
 msgstr ""
 
-#: library/zipfile.rst:629
+#: library/zipfile.rst:637
 msgid ""
 "The :pypi:`zipp` project provides backports of the latest path object "
 "functionality to older Pythons. Use ``zipp.Path`` in place of ``zipfile."
 "Path`` for early access to changes."
 msgstr ""
 
-#: library/zipfile.rst:637
+#: library/zipfile.rst:645
 msgid "PyZipFile Objects"
 msgstr ""
 
-#: library/zipfile.rst:639
+#: library/zipfile.rst:647
 msgid ""
 "The :class:`PyZipFile` constructor takes the same parameters as the :class:"
 "`ZipFile` constructor, and one additional parameter, *optimize*."
 msgstr ""
 
-#: library/zipfile.rst:645
+#: library/zipfile.rst:653
 msgid "Added the *optimize* parameter."
 msgstr ""
 
-#: library/zipfile.rst:651
+#: library/zipfile.rst:659
 msgid ""
 "Instances have one method in addition to those of :class:`ZipFile` objects:"
 msgstr ""
 
-#: library/zipfile.rst:655
+#: library/zipfile.rst:663
 msgid ""
 "Search for files :file:`\\*.py` and add the corresponding file to the "
 "archive."
 msgstr ""
 
-#: library/zipfile.rst:658
+#: library/zipfile.rst:666
 msgid ""
 "If the *optimize* parameter to :class:`PyZipFile` was not given or ``-1``, "
 "the corresponding file is a :file:`\\*.pyc` file, compiling if necessary."
 msgstr ""
 
-#: library/zipfile.rst:661
+#: library/zipfile.rst:669
 msgid ""
 "If the *optimize* parameter to :class:`PyZipFile` was ``0``, ``1`` or ``2``, "
 "only files with that optimization level (see :func:`compile`) are added to "
 "the archive, compiling if necessary."
 msgstr ""
 
-#: library/zipfile.rst:665
+#: library/zipfile.rst:673
 msgid ""
 "If *pathname* is a file, the filename must end with :file:`.py`, and just "
 "the (corresponding :file:`\\*.pyc`) file is added at the top level (no path "
@@ -793,11 +804,11 @@ msgid ""
 "in sorted order."
 msgstr ""
 
-#: library/zipfile.rst:675
+#: library/zipfile.rst:683
 msgid "*basename* is intended for internal use only."
 msgstr ""
 
-#: library/zipfile.rst:677
+#: library/zipfile.rst:685
 msgid ""
 "*filterfunc*, if given, must be a function taking a single string argument.  "
 "It will be passed each path (including each individual full file path) "
@@ -808,7 +819,7 @@ msgid ""
 "exclude them::"
 msgstr ""
 
-#: library/zipfile.rst:685
+#: library/zipfile.rst:693
 msgid ""
 ">>> zf = PyZipFile('myprog.zip')\n"
 ">>> def notests(s):\n"
@@ -818,11 +829,11 @@ msgid ""
 ">>> zf.writepy('myprog', filterfunc=notests)"
 msgstr ""
 
-#: library/zipfile.rst:692
+#: library/zipfile.rst:700
 msgid "The :meth:`writepy` method makes archives with file names like this::"
 msgstr ""
 
-#: library/zipfile.rst:695
+#: library/zipfile.rst:703
 msgid ""
 "string.pyc                   # Top level name\n"
 "test/__init__.pyc            # Package directory\n"
@@ -831,302 +842,302 @@ msgid ""
 "test/bogus/myfile.pyc        # Submodule test.bogus.myfile"
 msgstr ""
 
-#: library/zipfile.rst:701
+#: library/zipfile.rst:709
 msgid "Added the *filterfunc* parameter."
 msgstr ""
 
-#: library/zipfile.rst:704
+#: library/zipfile.rst:712
 msgid "The *pathname* parameter accepts a :term:`path-like object`."
 msgstr ""
 
-#: library/zipfile.rst:707
+#: library/zipfile.rst:715
 msgid "Recursion sorts directory entries."
 msgstr ""
 
-#: library/zipfile.rst:714
+#: library/zipfile.rst:722
 msgid "ZipInfo Objects"
 msgstr ""
 
-#: library/zipfile.rst:716
+#: library/zipfile.rst:724
 msgid ""
 "Instances of the :class:`ZipInfo` class are returned by the :meth:`.getinfo` "
 "and :meth:`.infolist` methods of :class:`ZipFile` objects.  Each object "
 "stores information about a single member of the ZIP archive."
 msgstr ""
 
-#: library/zipfile.rst:720
+#: library/zipfile.rst:728
 msgid ""
 "There is one classmethod to make a :class:`ZipInfo` instance for a "
 "filesystem file:"
 msgstr ""
 
-#: library/zipfile.rst:726
+#: library/zipfile.rst:734
 msgid ""
 "Construct a :class:`ZipInfo` instance for a file on the filesystem, in "
 "preparation for adding it to a zip file."
 msgstr ""
 
-#: library/zipfile.rst:729
+#: library/zipfile.rst:737
 msgid "*filename* should be the path to a file or directory on the filesystem."
 msgstr ""
 
-#: library/zipfile.rst:731
+#: library/zipfile.rst:739
 msgid ""
 "If *arcname* is specified, it is used as the name within the archive. If "
 "*arcname* is not specified, the name will be the same as *filename*, but "
 "with any drive letter and leading path separators removed."
 msgstr ""
 
-#: library/zipfile.rst:743
+#: library/zipfile.rst:751
 msgid "The *filename* parameter accepts a :term:`path-like object`."
 msgstr ""
 
-#: library/zipfile.rst:746
+#: library/zipfile.rst:754
 msgid "Added the *strict_timestamps* keyword-only parameter."
 msgstr ""
 
-#: library/zipfile.rst:750
+#: library/zipfile.rst:758
 msgid "Instances have the following methods and attributes:"
 msgstr ""
 
-#: library/zipfile.rst:754
+#: library/zipfile.rst:762
 msgid "Return ``True`` if this archive member is a directory."
 msgstr ""
 
-#: library/zipfile.rst:756
+#: library/zipfile.rst:764
 msgid "This uses the entry's name: directories should always end with ``/``."
 msgstr ""
 
-#: library/zipfile.rst:763
+#: library/zipfile.rst:771
 msgid "Name of the file in the archive."
 msgstr ""
 
-#: library/zipfile.rst:768
+#: library/zipfile.rst:776
 msgid ""
 "The time and date of the last modification to the archive member.  This is a "
 "tuple of six values:"
 msgstr ""
 
-#: library/zipfile.rst:772
+#: library/zipfile.rst:780
 msgid "Index"
 msgstr ""
 
-#: library/zipfile.rst:772
+#: library/zipfile.rst:780
 msgid "Value"
 msgstr ""
 
-#: library/zipfile.rst:774
+#: library/zipfile.rst:782
 msgid "``0``"
 msgstr ""
 
-#: library/zipfile.rst:774
+#: library/zipfile.rst:782
 msgid "Year (>= 1980)"
 msgstr ""
 
-#: library/zipfile.rst:776
+#: library/zipfile.rst:784
 msgid "``1``"
 msgstr ""
 
-#: library/zipfile.rst:776
+#: library/zipfile.rst:784
 msgid "Month (one-based)"
 msgstr ""
 
-#: library/zipfile.rst:778
+#: library/zipfile.rst:786
 msgid "``2``"
 msgstr ""
 
-#: library/zipfile.rst:778
+#: library/zipfile.rst:786
 msgid "Day of month (one-based)"
 msgstr ""
 
-#: library/zipfile.rst:780
+#: library/zipfile.rst:788
 msgid "``3``"
 msgstr ""
 
-#: library/zipfile.rst:780
+#: library/zipfile.rst:788
 msgid "Hours (zero-based)"
 msgstr ""
 
-#: library/zipfile.rst:782
+#: library/zipfile.rst:790
 msgid "``4``"
 msgstr ""
 
-#: library/zipfile.rst:782
+#: library/zipfile.rst:790
 msgid "Minutes (zero-based)"
 msgstr ""
 
-#: library/zipfile.rst:784
+#: library/zipfile.rst:792
 msgid "``5``"
 msgstr ""
 
-#: library/zipfile.rst:784
+#: library/zipfile.rst:792
 msgid "Seconds (zero-based)"
 msgstr ""
 
-#: library/zipfile.rst:789
+#: library/zipfile.rst:797
 msgid "The ZIP file format does not support timestamps before 1980."
 msgstr ""
 
-#: library/zipfile.rst:794
+#: library/zipfile.rst:802
 msgid "Type of compression for the archive member."
 msgstr ""
 
-#: library/zipfile.rst:799
+#: library/zipfile.rst:807
 msgid "Comment for the individual archive member as a :class:`bytes` object."
 msgstr ""
 
-#: library/zipfile.rst:804
+#: library/zipfile.rst:812
 msgid ""
 "Expansion field data.  The `PKZIP Application Note`_ contains some comments "
 "on the internal structure of the data contained in this :class:`bytes` "
 "object."
 msgstr ""
 
-#: library/zipfile.rst:811
+#: library/zipfile.rst:819
 msgid "System which created ZIP archive."
 msgstr ""
 
-#: library/zipfile.rst:816
+#: library/zipfile.rst:824
 msgid "PKZIP version which created ZIP archive."
 msgstr ""
 
-#: library/zipfile.rst:821
+#: library/zipfile.rst:829
 msgid "PKZIP version needed to extract archive."
 msgstr ""
 
-#: library/zipfile.rst:826
+#: library/zipfile.rst:834
 msgid "Must be zero."
 msgstr ""
 
-#: library/zipfile.rst:831
+#: library/zipfile.rst:839
 msgid "ZIP flag bits."
 msgstr ""
 
-#: library/zipfile.rst:836
+#: library/zipfile.rst:844
 msgid "Volume number of file header."
 msgstr ""
 
-#: library/zipfile.rst:841
+#: library/zipfile.rst:849
 msgid "Internal attributes."
 msgstr ""
 
-#: library/zipfile.rst:846
+#: library/zipfile.rst:854
 msgid "External file attributes."
 msgstr ""
 
-#: library/zipfile.rst:851
+#: library/zipfile.rst:859
 msgid "Byte offset to the file header."
 msgstr ""
 
-#: library/zipfile.rst:856
+#: library/zipfile.rst:864
 msgid "CRC-32 of the uncompressed file."
 msgstr ""
 
-#: library/zipfile.rst:861
+#: library/zipfile.rst:869
 msgid "Size of the compressed data."
 msgstr ""
 
-#: library/zipfile.rst:866
+#: library/zipfile.rst:874
 msgid "Size of the uncompressed file."
 msgstr ""
 
-#: library/zipfile.rst:873
+#: library/zipfile.rst:881
 msgid "Command-Line Interface"
 msgstr ""
 
-#: library/zipfile.rst:875
+#: library/zipfile.rst:883
 msgid ""
 "The :mod:`zipfile` module provides a simple command-line interface to "
 "interact with ZIP archives."
 msgstr ""
 
-#: library/zipfile.rst:878
+#: library/zipfile.rst:886
 msgid ""
 "If you want to create a new ZIP archive, specify its name after the :option:"
 "`-c` option and then list the filename(s) that should be included:"
 msgstr ""
 
-#: library/zipfile.rst:881
+#: library/zipfile.rst:889
 msgid "$ python -m zipfile -c monty.zip spam.txt eggs.txt"
 msgstr ""
 
-#: library/zipfile.rst:885
+#: library/zipfile.rst:893
 msgid "Passing a directory is also acceptable:"
 msgstr ""
 
-#: library/zipfile.rst:887
+#: library/zipfile.rst:895
 msgid "$ python -m zipfile -c monty.zip life-of-brian_1979/"
 msgstr ""
 
-#: library/zipfile.rst:891
+#: library/zipfile.rst:899
 msgid ""
 "If you want to extract a ZIP archive into the specified directory, use the :"
 "option:`-e` option:"
 msgstr ""
 
-#: library/zipfile.rst:894
+#: library/zipfile.rst:902
 msgid "$ python -m zipfile -e monty.zip target-dir/"
 msgstr ""
 
-#: library/zipfile.rst:898
+#: library/zipfile.rst:906
 msgid "For a list of the files in a ZIP archive, use the :option:`-l` option:"
 msgstr ""
 
-#: library/zipfile.rst:900
+#: library/zipfile.rst:908
 msgid "$ python -m zipfile -l monty.zip"
 msgstr ""
 
-#: library/zipfile.rst:906
+#: library/zipfile.rst:914
 msgid "Command-line options"
 msgstr ""
 
-#: library/zipfile.rst:911
+#: library/zipfile.rst:919
 msgid "List files in a zipfile."
 msgstr ""
 
-#: library/zipfile.rst:916
+#: library/zipfile.rst:924
 msgid "Create zipfile from source files."
 msgstr ""
 
-#: library/zipfile.rst:921
+#: library/zipfile.rst:929
 msgid "Extract zipfile into target directory."
 msgstr ""
 
-#: library/zipfile.rst:926
+#: library/zipfile.rst:934
 msgid "Test whether the zipfile is valid or not."
 msgstr ""
 
-#: library/zipfile.rst:930
+#: library/zipfile.rst:938
 msgid ""
 "Specify encoding of member names for :option:`-l`, :option:`-e` and :option:"
 "`-t`."
 msgstr ""
 
-#: library/zipfile.rst:937
+#: library/zipfile.rst:945
 msgid "Decompression pitfalls"
 msgstr ""
 
-#: library/zipfile.rst:939
+#: library/zipfile.rst:947
 msgid ""
 "The extraction in zipfile module might fail due to some pitfalls listed "
 "below."
 msgstr ""
 
-#: library/zipfile.rst:942
+#: library/zipfile.rst:950
 msgid "From file itself"
 msgstr ""
 
-#: library/zipfile.rst:944
+#: library/zipfile.rst:952
 msgid ""
 "Decompression may fail due to incorrect password / CRC checksum / ZIP format "
 "or unsupported compression method / decryption."
 msgstr ""
 
-#: library/zipfile.rst:948
+#: library/zipfile.rst:956
 msgid "File System limitations"
 msgstr ""
 
-#: library/zipfile.rst:950
+#: library/zipfile.rst:958
 msgid ""
 "Exceeding limitations on different file systems can cause decompression "
 "failed. Such as allowable characters in the directory entries, length of the "
@@ -1134,33 +1145,33 @@ msgid ""
 "files, etc."
 msgstr ""
 
-#: library/zipfile.rst:957
+#: library/zipfile.rst:965
 msgid "Resources limitations"
 msgstr ""
 
-#: library/zipfile.rst:959
+#: library/zipfile.rst:967
 msgid ""
 "The lack of memory or disk volume would lead to decompression failed. For "
 "example, decompression bombs (aka `ZIP bomb`_) apply to zipfile library that "
 "can cause disk volume exhaustion."
 msgstr ""
 
-#: library/zipfile.rst:964
+#: library/zipfile.rst:972
 msgid "Interruption"
 msgstr ""
 
-#: library/zipfile.rst:966
+#: library/zipfile.rst:974
 msgid ""
 "Interruption during the decompression, such as pressing control-C or killing "
 "the decompression process may result in incomplete decompression of the "
 "archive."
 msgstr ""
 
-#: library/zipfile.rst:970
+#: library/zipfile.rst:978
 msgid "Default behaviors of extraction"
 msgstr ""
 
-#: library/zipfile.rst:972
+#: library/zipfile.rst:980
 msgid ""
 "Not knowing the default extraction behaviors can cause unexpected "
 "decompression results. For example, when extracting the same archive twice, "
diff --git a/license.po b/license.po
index 2c9ccfa4e..c805c1d56 100644
--- a/license.po
+++ b/license.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: 2022-12-28 16:31-0500\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -26,9 +26,10 @@ msgid "History of the software"
 msgstr "Yazılımın tarihçesi"
 
 #: license.rst:13
+#, fuzzy
 msgid ""
 "Python was created in the early 1990s by Guido van Rossum at Stichting "
-"Mathematisch Centrum (CWI, see https://www.cwi.nl/) in the Netherlands as a "
+"Mathematisch Centrum (CWI, see https://www.cwi.nl) in the Netherlands as a "
 "successor of a language called ABC.  Guido remains Python's principal "
 "author, although it includes many contributions from others."
 msgstr ""
@@ -38,9 +39,10 @@ msgstr ""
 "rağmen, Python'un ana yazarı olmaya devam ediyor."
 
 #: license.rst:18
+#, fuzzy
 msgid ""
 "In 1995, Guido continued his work on Python at the Corporation for National "
-"Research Initiatives (CNRI, see https://www.cnri.reston.va.us/) in Reston, "
+"Research Initiatives (CNRI, see https://www.cnri.reston.va.us) in Reston, "
 "Virginia where he released several versions of the software."
 msgstr ""
 "1995'te Guido, yazılımın çeşitli sürümlerini yayınladığı Virginia, "
@@ -48,14 +50,15 @@ msgstr ""
 "cnri.reston.va.us/) Python üzerindeki çalışmalarına devam etti."
 
 #: license.rst:22
+#, fuzzy
 msgid ""
 "In May 2000, Guido and the Python core development team moved to BeOpen.com "
 "to form the BeOpen PythonLabs team.  In October of the same year, the "
-"PythonLabs team moved to Digital Creations (now Zope Corporation; see "
-"https://www.zope.org/).  In 2001, the Python Software Foundation (PSF, see "
-"https://www.python.org/psf/) was formed, a non-profit organization created "
-"specifically to own Python-related Intellectual Property.  Zope Corporation "
-"is a sponsoring member of the PSF."
+"PythonLabs team moved to Digital Creations, which became Zope Corporation.  "
+"In 2001, the Python Software Foundation (PSF, see https://www.python.org/"
+"psf/) was formed, a non-profit organization created specifically to own "
+"Python-related Intellectual Property.  Zope Corporation was a sponsoring "
+"member of the PSF."
 msgstr ""
 "Mayıs 2000'de, Guido ve Python çekirdek geliştirme ekibi, BeOpen PythonLabs "
 "ekibini oluşturmak için BeOpen.com'a taşındı. Aynı yılın Ekim ayında "
@@ -66,11 +69,11 @@ msgstr ""
 "Zope Corporation, PSF'nin sponsor üyesidir."
 
 #: license.rst:30
+#, fuzzy
 msgid ""
-"All Python releases are Open Source (see https://opensource.org/ for the "
-"Open Source Definition). Historically, most, but not all, Python releases "
-"have also been GPL-compatible; the table below summarizes the various "
-"releases."
+"All Python releases are Open Source (see https://opensource.org for the Open "
+"Source Definition). Historically, most, but not all, Python releases have "
+"also been GPL-compatible; the table below summarizes the various releases."
 msgstr ""
 "Tüm Python sürümleri Açık Kaynaklıdır (Açık Kaynak Tanımı için bkz. https://"
 "opensource.org/). Tarihsel olarak, tümü olmasa da çoğu Python sürümleri de "
@@ -93,7 +96,8 @@ msgid "Owner"
 msgstr "Sahibi"
 
 #: license.rst:35
-msgid "GPL compatible?"
+#, fuzzy
+msgid "GPL-compatible? (1)"
 msgstr "GPL uyumlu mu?"
 
 #: license.rst:37
@@ -144,7 +148,7 @@ msgstr "1.5.2"
 msgid "2000"
 msgstr "2000"
 
-#: license.rst:45 license.rst:47
+#: license.rst:47
 msgid "no"
 msgstr "hayır"
 
@@ -164,6 +168,10 @@ msgstr "1.6.1"
 msgid "2001"
 msgstr "2001"
 
+#: license.rst:45
+msgid "yes (2)"
+msgstr ""
+
 #: license.rst:47
 msgid "2.1"
 msgstr "2.1"
@@ -209,8 +217,9 @@ msgid "2001-now"
 msgstr "2001-Günümüz"
 
 #: license.rst:62
+#, fuzzy
 msgid ""
-"GPL-compatible doesn't mean that we're distributing Python under the GPL.  "
+"GPL-compatible doesn't mean that we're distributing Python under the GPL. "
 "All Python licenses, unlike the GPL, let you distribute a modified version "
 "without making your changes open source. The GPL-compatible licenses make it "
 "possible to combine Python with other software that is released under the "
@@ -224,36 +233,46 @@ msgstr ""
 
 #: license.rst:68
 msgid ""
+"According to Richard Stallman, 1.6.1 is not GPL-compatible, because its "
+"license has a choice of law clause. According to CNRI, however, Stallman's "
+"lawyer has told CNRI's lawyer that 1.6.1 is \"not incompatible\" with the "
+"GPL."
+msgstr ""
+
+#: license.rst:72
+msgid ""
 "Thanks to the many outside volunteers who have worked under Guido's "
 "direction to make these releases possible."
 msgstr ""
 "Bu yayınları mümkün kılmak için Guido'nun yönetimi altında çalışan birçok "
 "gönüllüye teşekkürler."
 
-#: license.rst:73
+#: license.rst:77
 msgid "Terms and conditions for accessing or otherwise using Python"
 msgstr ""
 "Python'a erişmek veya başka bir şekilde kullanmak için şartlar ve koşullar"
 
-#: license.rst:75
+#: license.rst:79
+#, fuzzy
 msgid ""
-"Python software and documentation are licensed under the :ref:`PSF License "
-"Agreement <PSF-license>`."
+"Python software and documentation are licensed under the Python Software "
+"Foundation License Version 2."
 msgstr ""
 "Python yazılımı ve belgeleri :ref:`PSF Lisans Anlaşması <PSF-license>` "
 "kapsamında lisanslanmıştır."
 
-#: license.rst:78
+#: license.rst:82
+#, fuzzy
 msgid ""
 "Starting with Python 3.8.6, examples, recipes, and other code in the "
-"documentation are dual licensed under the PSF License Agreement and the :ref:"
+"documentation are dual licensed under the PSF License Version 2 and the :ref:"
 "`Zero-Clause BSD license <BSD0>`."
 msgstr ""
 "Python 3.8.6'dan başlayarak, belgelerdeki örnekler, tarifler ve diğer "
 "kodlar, PSF Lisans Sözleşmesi ve :ref:`Zero-Clause BSD license <BSD0>` "
 "kapsamında çift lisanslıdır."
 
-#: license.rst:82
+#: license.rst:86
 msgid ""
 "Some software incorporated into Python is under different licenses. The "
 "licenses are listed with code falling under that license. See :ref:"
@@ -263,17 +282,17 @@ msgstr ""
 "Lisanslar, bu lisansa giren kodla listelenir. Bu lisansların eksik listesi "
 "için bkz. :ref:`OtherLicenses`."
 
-#: license.rst:90
-msgid "PSF LICENSE AGREEMENT FOR PYTHON |release|"
-msgstr "PYTHON İÇİN PSF LİSANS ANLAŞMASI |release|"
-
 #: license.rst:94
+msgid "PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2"
+msgstr ""
+
+#: license.rst:98
 msgid ""
 "1. This LICENSE AGREEMENT is between the Python Software Foundation "
 "(\"PSF\"), and\n"
 "   the Individual or Organization (\"Licensee\") accessing and otherwise "
-"using Python\n"
-"   |release| software in source or binary form and its associated "
+"using this\n"
+"   software (\"Python\") in source or binary form and its associated "
 "documentation.\n"
 "\n"
 "2. Subject to the terms and conditions of this License Agreement, PSF "
@@ -282,40 +301,34 @@ msgid ""
 "reproduce,\n"
 "   analyze, test, perform and/or display publicly, prepare derivative "
 "works,\n"
-"   distribute, and otherwise use Python |release| alone or in any "
-"derivative\n"
+"   distribute, and otherwise use Python alone or in any derivative\n"
 "   version, provided, however, that PSF's License Agreement and PSF's notice "
 "of\n"
 "   copyright, i.e., \"Copyright © 2001-2023 Python Software Foundation; All "
 "Rights\n"
-"   Reserved\" are retained in Python |release| alone or in any derivative "
-"version\n"
+"   Reserved\" are retained in Python alone or in any derivative version\n"
 "   prepared by Licensee.\n"
 "\n"
 "3. In the event Licensee prepares a derivative work that is based on or\n"
-"   incorporates Python |release| or any part thereof, and wants to make the\n"
+"   incorporates Python or any part thereof, and wants to make the\n"
 "   derivative work available to others as provided herein, then Licensee "
 "hereby\n"
 "   agrees to include in any such work a brief summary of the changes made to "
-"Python\n"
-"   |release|.\n"
+"Python.\n"
 "\n"
-"4. PSF is making Python |release| available to Licensee on an \"AS IS\" "
-"basis.\n"
+"4. PSF is making Python available to Licensee on an \"AS IS\" basis.\n"
 "   PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED.  BY WAY "
 "OF\n"
 "   EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND DISCLAIMS ANY "
 "REPRESENTATION OR\n"
 "   WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT "
 "THE\n"
-"   USE OF PYTHON |release| WILL NOT INFRINGE ANY THIRD PARTY RIGHTS.\n"
+"   USE OF PYTHON WILL NOT INFRINGE ANY THIRD PARTY RIGHTS.\n"
 "\n"
-"5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON |"
-"release|\n"
+"5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON\n"
 "   FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT "
 "OF\n"
-"   MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON |release|, OR ANY "
-"DERIVATIVE\n"
+"   MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON, OR ANY DERIVATIVE\n"
 "   THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.\n"
 "\n"
 "6. This License Agreement will automatically terminate upon a material "
@@ -332,20 +345,19 @@ msgid ""
 "or any\n"
 "   third party.\n"
 "\n"
-"8. By copying, installing or otherwise using Python |release|, Licensee "
-"agrees\n"
+"8. By copying, installing or otherwise using Python, Licensee agrees\n"
 "   to be bound by the terms and conditions of this License Agreement."
 msgstr ""
 
-#: license.rst:138
+#: license.rst:141
 msgid "BEOPEN.COM LICENSE AGREEMENT FOR PYTHON 2.0"
 msgstr "PYTHON 2.0 İÇİN BEOPEN.COM LİSANS SÖZLEŞMESİ"
 
-#: license.rst:140
+#: license.rst:143
 msgid "BEOPEN PYTHON OPEN SOURCE LICENSE AGREEMENT VERSION 1"
 msgstr "BEOPEN PYTHON AÇIK KAYNAK LİSANS SÖZLEŞMESİ SÜRÜM 1"
 
-#: license.rst:144
+#: license.rst:147
 msgid ""
 "1. This LICENSE AGREEMENT is between BeOpen.com (\"BeOpen\"), having an "
 "office at\n"
@@ -411,11 +423,11 @@ msgid ""
 "   bound by the terms and conditions of this License Agreement."
 msgstr ""
 
-#: license.rst:185
+#: license.rst:188
 msgid "CNRI LICENSE AGREEMENT FOR PYTHON 1.6.1"
 msgstr "PYTHON 1.6.1 İÇİN CNRI LİSANS ANLAŞMASI"
 
-#: license.rst:189
+#: license.rst:192
 msgid ""
 "1. This LICENSE AGREEMENT is between the Corporation for National Research\n"
 "   Initiatives, having an office at 1895 Preston White Drive, Reston, VA "
@@ -449,7 +461,7 @@ msgid ""
 "handle):\n"
 "   1895.22/1013.  This Agreement may also be obtained from a proxy server on "
 "the\n"
-"   internet using the following URL: http://hdl.handle.net/1895.22/1013.\"\n"
+"   internet using the following URL: http://hdl.handle.net/1895.22/1013\".\n"
 "\n"
 "3. In the event Licensee prepares a derivative work that is based on or\n"
 "   incorporates Python 1.6.1 or any part thereof, and wants to make the "
@@ -515,11 +527,11 @@ msgid ""
 "   conditions of this License Agreement."
 msgstr ""
 
-#: license.rst:250
+#: license.rst:253
 msgid "CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2"
 msgstr "0.9.0 ARASI 1.2 PYTHON İÇİN CWI LİSANS SÖZLEŞMESİ"
 
-#: license.rst:254
+#: license.rst:257
 msgid ""
 "Copyright © 1991 - 1995, Stichting Mathematisch Centrum Amsterdam, The\n"
 "Netherlands.  All rights reserved.\n"
@@ -550,11 +562,12 @@ msgid ""
 "SOFTWARE."
 msgstr ""
 
-#: license.rst:277
-msgid "ZERO-CLAUSE BSD LICENSE FOR CODE IN THE PYTHON |release| DOCUMENTATION"
+#: license.rst:280
+#, fuzzy
+msgid "ZERO-CLAUSE BSD LICENSE FOR CODE IN THE PYTHON DOCUMENTATION"
 msgstr "PYTHON |release| BELGELERİNDEKİ KOD İÇİN SIFIR MADDE BSD LİSANSI"
 
-#: license.rst:281
+#: license.rst:284
 msgid ""
 "Permission to use, copy, modify, and/or distribute this software for any\n"
 "purpose with or without fee is hereby granted.\n"
@@ -571,11 +584,11 @@ msgid ""
 "PERFORMANCE OF THIS SOFTWARE."
 msgstr ""
 
-#: license.rst:296
+#: license.rst:299
 msgid "Licenses and Acknowledgements for Incorporated Software"
 msgstr "Tüzel Yazılımlar için Lisanslar ve Onaylar"
 
-#: license.rst:298
+#: license.rst:301
 msgid ""
 "This section is an incomplete, but growing list of licenses and "
 "acknowledgements for third-party software incorporated in the Python "
@@ -584,11 +597,11 @@ msgstr ""
 "Bu bölüm, Python dağıtımına dahil edilmiş üçüncü taraf yazılımlar için "
 "tamamlanmamış ancak büyüyen bir lisans ve onay listesidir."
 
-#: license.rst:303
+#: license.rst:306
 msgid "Mersenne Twister"
 msgstr "Mersenne Twister'ı"
 
-#: license.rst:305
+#: license.rst:308
 msgid ""
 "The :mod:`!_random` C extension underlying the :mod:`random` module includes "
 "code based on a download from http://www.math.sci.hiroshima-u.ac.jp/~m-mat/"
@@ -600,7 +613,7 @@ msgstr ""
 "adresinden indirilen kodu temel alır. Orijinal koddan kelimesi kelimesine "
 "yorumlar aşağıdadır::"
 
-#: license.rst:310
+#: license.rst:313
 msgid ""
 "A C-program for MT19937, with initialization improved 2002/1/26.\n"
 "Coded by Takuji Nishimura and Makoto Matsumoto.\n"
@@ -645,11 +658,11 @@ msgid ""
 "email: m-mat @ math.sci.hiroshima-u.ac.jp (remove space)"
 msgstr ""
 
-#: license.rst:353
+#: license.rst:356
 msgid "Sockets"
 msgstr "Soketler"
 
-#: license.rst:355
+#: license.rst:358
 msgid ""
 "The :mod:`socket` module uses the functions, :c:func:`!getaddrinfo`, and :c:"
 "func:`!getnameinfo`, which are coded in separate source files from the WIDE "
@@ -659,7 +672,7 @@ msgstr ""
 "ayrı kaynak dosyalarında kodlanan :c:func:`!getaddrinfo` ve :c:func:`!"
 "getnameinfo` fonksiyonlarını kullanır. ::"
 
-#: license.rst:359
+#: license.rst:362
 msgid ""
 "Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.\n"
 "All rights reserved.\n"
@@ -676,7 +689,7 @@ msgid ""
 "   may be used to endorse or promote products derived from this software\n"
 "   without specific prior written permission.\n"
 "\n"
-"THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND\n"
+"THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS \"AS IS\" AND\n"
 "ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n"
 "IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n"
 "ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE\n"
@@ -689,11 +702,11 @@ msgid ""
 "SUCH DAMAGE."
 msgstr ""
 
-#: license.rst:388
+#: license.rst:391
 msgid "Asynchronous socket services"
 msgstr "Asenkron soket hizmetleri"
 
-#: license.rst:390
+#: license.rst:393
 #, fuzzy
 msgid ""
 "The :mod:`!test.support.asynchat` and :mod:`!test.support.asyncore` modules "
@@ -701,7 +714,7 @@ msgid ""
 msgstr ""
 ":mod:`asynchat` ve :mod:`asyncore` modülleri aşağıdaki uyarıyı içerir::"
 
-#: license.rst:393
+#: license.rst:396
 msgid ""
 "Copyright 1996 by Sam Rushing\n"
 "\n"
@@ -725,15 +738,15 @@ msgid ""
 "CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE."
 msgstr ""
 
-#: license.rst:416
+#: license.rst:419
 msgid "Cookie management"
 msgstr "Çerez yönetimi"
 
-#: license.rst:418
+#: license.rst:421
 msgid "The :mod:`http.cookies` module contains the following notice::"
 msgstr ":mod:`http.cookies` modülü aşağıdaki uyarıyı içerir::"
 
-#: license.rst:420
+#: license.rst:423
 msgid ""
 "Copyright 2000 by Timothy O'Malley <timo@alum.mit.edu>\n"
 "\n"
@@ -758,15 +771,15 @@ msgid ""
 "PERFORMANCE OF THIS SOFTWARE."
 msgstr ""
 
-#: license.rst:444
+#: license.rst:447
 msgid "Execution tracing"
 msgstr "Çalıştırma izleme"
 
-#: license.rst:446
+#: license.rst:449
 msgid "The :mod:`trace` module contains the following notice::"
 msgstr ":mod:`trace` modülü aşağıdaki uyarıyı içerir::"
 
-#: license.rst:448
+#: license.rst:451
 msgid ""
 "portions copyright 2001, Autonomous Zones Industries, Inc., all rights...\n"
 "err...  reserved and offered to the public under the terms of the\n"
@@ -796,15 +809,15 @@ msgid ""
 "distribution of the software without specific, written prior permission."
 msgstr ""
 
-#: license.rst:477
+#: license.rst:480
 msgid "UUencode and UUdecode functions"
 msgstr "UUencode ve UUdecode fonksiyonları"
 
-#: license.rst:479
+#: license.rst:482
 msgid "The :mod:`uu` module contains the following notice::"
 msgstr ":mod:`uu` modülü aşağıdaki uyarıyı içerir::"
 
-#: license.rst:481
+#: license.rst:484
 msgid ""
 "Copyright 1994 by Lance Ellinghouse\n"
 "Cathedral City, California Republic, United States of America.\n"
@@ -831,15 +844,15 @@ msgid ""
 "- Arguments more compliant with Python standard"
 msgstr ""
 
-#: license.rst:507
+#: license.rst:510
 msgid "XML Remote Procedure Calls"
 msgstr "XML Uzaktan Yordam Çağrıları"
 
-#: license.rst:509
+#: license.rst:512
 msgid "The :mod:`xmlrpc.client` module contains the following notice::"
 msgstr ":mod:`xmlrpc.client` modülü aşağıdaki uyarıyı içerir::"
 
-#: license.rst:511
+#: license.rst:514
 msgid ""
 "    The XML-RPC client interface is\n"
 "\n"
@@ -869,15 +882,15 @@ msgid ""
 "OF THIS SOFTWARE."
 msgstr ""
 
-#: license.rst:540
+#: license.rst:543
 msgid "test_epoll"
 msgstr "test_epoll"
 
-#: license.rst:542
+#: license.rst:545
 msgid "The :mod:`!test.test_epoll` module contains the following notice::"
 msgstr ":mod:`!test.test_epoll` modülü aşağıdaki uyarıyı içerir::"
 
-#: license.rst:544
+#: license.rst:547
 msgid ""
 "Copyright (c) 2001-2006 Twisted Matrix Laboratories.\n"
 "\n"
@@ -901,17 +914,17 @@ msgid ""
 "WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."
 msgstr ""
 
-#: license.rst:566
+#: license.rst:569
 msgid "Select kqueue"
 msgstr "kqueue seçin"
 
-#: license.rst:568
+#: license.rst:571
 msgid ""
 "The :mod:`select` module contains the following notice for the kqueue "
 "interface::"
 msgstr ":mod:`select` modülü, kqueue arayüzü için aşağıdaki uyarıyı içerir::"
 
-#: license.rst:571
+#: license.rst:574
 msgid ""
 "Copyright (c) 2000 Doug White, 2006 James Knight, 2007 Christian Heimes\n"
 "All rights reserved.\n"
@@ -925,7 +938,7 @@ msgid ""
 "   notice, this list of conditions and the following disclaimer in the\n"
 "   documentation and/or other materials provided with the distribution.\n"
 "\n"
-"THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND\n"
+"THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS \"AS IS\" AND\n"
 "ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n"
 "IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n"
 "ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE\n"
@@ -938,11 +951,11 @@ msgid ""
 "SUCH DAMAGE."
 msgstr ""
 
-#: license.rst:597
+#: license.rst:600
 msgid "SipHash24"
 msgstr "SipHash24"
 
-#: license.rst:599
+#: license.rst:602
 msgid ""
 "The file :file:`Python/pyhash.c` contains Marek Majkowski' implementation of "
 "Dan Bernstein's SipHash24 algorithm. It contains the following note::"
@@ -950,7 +963,7 @@ msgstr ""
 ":file:`Python/pyhash.c` dosyası, Dan Bernstein'ın SipHash24 algoritmasının "
 "Marek Majkowski uygulamasını içerir. Burada aşağıdaki not yer alır::"
 
-#: license.rst:602
+#: license.rst:605
 msgid ""
 "<MIT License>\n"
 "Copyright (c) 2013  Marek Majkowski <marek@popcount.org>\n"
@@ -978,11 +991,11 @@ msgid ""
 "   Jean-Philippe Aumasson (https://131002.net/siphash/siphash24.c)"
 msgstr ""
 
-#: license.rst:626
+#: license.rst:629
 msgid "strtod and dtoa"
 msgstr "strtod ve dtoa"
 
-#: license.rst:628
+#: license.rst:631
 msgid ""
 "The file :file:`Python/dtoa.c`, which supplies C functions dtoa and strtod "
 "for conversion of C doubles to and from strings, is derived from the file of "
@@ -998,7 +1011,7 @@ msgstr ""
 "Mart 2009'da alınan orijinal dosya aşağıdaki telif hakkı ve lisans "
 "bildirimini içerir::"
 
-#: license.rst:635
+#: license.rst:638
 msgid ""
 "/****************************************************************\n"
 " *\n"
@@ -1021,11 +1034,11 @@ msgid ""
 " ***************************************************************/"
 msgstr ""
 
-#: license.rst:656
+#: license.rst:659
 msgid "OpenSSL"
 msgstr "OpenSSL"
 
-#: license.rst:658
+#: license.rst:661
 #, fuzzy
 msgid ""
 "The modules :mod:`hashlib`, :mod:`posix`, :mod:`ssl`, :mod:`crypt` use the "
@@ -1041,7 +1054,7 @@ msgstr ""
 "kütüphanelerinin bir kopyasını içerebilir, bu nedenle buraya OpenSSL "
 "lisansının bir kopyasını ekliyoruz::"
 
-#: license.rst:666
+#: license.rst:669
 msgid ""
 "                              Apache License\n"
 "                        Version 2.0, January 2004\n"
@@ -1221,11 +1234,11 @@ msgid ""
 "END OF TERMS AND CONDITIONS"
 msgstr ""
 
-#: license.rst:845
+#: license.rst:848
 msgid "expat"
 msgstr "expat"
 
-#: license.rst:847
+#: license.rst:850
 #, fuzzy
 msgid ""
 "The :mod:`pyexpat <xml.parsers.expat>` extension is built using an included "
@@ -1236,7 +1249,7 @@ msgstr ""
 "yapılandırılmadığı sürece, expat kaynaklarının dahil edildiği bir kopya "
 "kullanılarak oluşturulur::"
 
-#: license.rst:850
+#: license.rst:853
 msgid ""
 "Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd\n"
 "                               and Clark Cooper\n"
@@ -1261,11 +1274,11 @@ msgid ""
 "SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."
 msgstr ""
 
-#: license.rst:874
+#: license.rst:877
 msgid "libffi"
 msgstr "libffi"
 
-#: license.rst:876
+#: license.rst:879
 msgid ""
 "The :mod:`!_ctypes` C extension underlying the :mod:`ctypes` module is built "
 "using an included copy of the libffi sources unless the build is configured "
@@ -1275,13 +1288,13 @@ msgstr ""
 "with-system-libffi`` olarak yapılandırılmadığı sürece libffi kaynaklarının "
 "dahil edildiği bir kopya kullanılarak oluşturulur::"
 
-#: license.rst:880
+#: license.rst:883
 msgid ""
 "Copyright (c) 1996-2008  Red Hat, Inc and others.\n"
 "\n"
 "Permission is hereby granted, free of charge, to any person obtaining\n"
 "a copy of this software and associated documentation files (the\n"
-"``Software''), to deal in the Software without restriction, including\n"
+"\"Software\"), to deal in the Software without restriction, including\n"
 "without limitation the rights to use, copy, modify, merge, publish,\n"
 "distribute, sublicense, and/or sell copies of the Software, and to\n"
 "permit persons to whom the Software is furnished to do so, subject to\n"
@@ -1290,7 +1303,7 @@ msgid ""
 "The above copyright notice and this permission notice shall be included\n"
 "in all copies or substantial portions of the Software.\n"
 "\n"
-"THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,\n"
+"THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n"
 "EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n"
 "MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n"
 "NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n"
@@ -1300,11 +1313,11 @@ msgid ""
 "DEALINGS IN THE SOFTWARE."
 msgstr ""
 
-#: license.rst:904
+#: license.rst:907
 msgid "zlib"
 msgstr "zlib"
 
-#: license.rst:906
+#: license.rst:909
 msgid ""
 "The :mod:`zlib` extension is built using an included copy of the zlib "
 "sources if the zlib version found on the system is too old to be used for "
@@ -1314,7 +1327,7 @@ msgstr ""
 "kullanılamayacak kadar eskiyse, zlib kaynaklarının dahil edildiği bir kopya "
 "kullanılarak oluşturulur::"
 
-#: license.rst:910
+#: license.rst:913
 msgid ""
 "Copyright (C) 1995-2011 Jean-loup Gailly and Mark Adler\n"
 "\n"
@@ -1340,11 +1353,11 @@ msgid ""
 "jloup@gzip.org          madler@alumni.caltech.edu"
 msgstr ""
 
-#: license.rst:935
+#: license.rst:938
 msgid "cfuhash"
 msgstr "cfuhash"
 
-#: license.rst:937
+#: license.rst:940
 msgid ""
 "The implementation of the hash table used by the :mod:`tracemalloc` is based "
 "on the cfuhash project::"
@@ -1352,7 +1365,7 @@ msgstr ""
 ":mod:`tracemalloc` tarafından kullanılan hash tablosunun uygulanması cfuhash "
 "projesine dayanmaktadır::"
 
-#: license.rst:940
+#: license.rst:943
 msgid ""
 "Copyright (c) 2005 Don Owens\n"
 "All rights reserved.\n"
@@ -1389,11 +1402,11 @@ msgid ""
 "OF THE POSSIBILITY OF SUCH DAMAGE."
 msgstr ""
 
-#: license.rst:976
+#: license.rst:979
 msgid "libmpdec"
 msgstr "libmpdec"
 
-#: license.rst:978
+#: license.rst:981
 #, fuzzy
 msgid ""
 "The :mod:`!_decimal` C extension underlying the :mod:`decimal` module is "
@@ -1404,7 +1417,7 @@ msgstr ""
 "yapılandırılmadığı sürece libmpdec kitaplığının dahil edildiği bir kopya "
 "kullanılarak oluşturulur::"
 
-#: license.rst:982
+#: license.rst:985
 msgid ""
 "Copyright (c) 2008-2020 Stefan Krah. All rights reserved.\n"
 "\n"
@@ -1432,11 +1445,11 @@ msgid ""
 "SUCH DAMAGE."
 msgstr ""
 
-#: license.rst:1009
+#: license.rst:1012
 msgid "W3C C14N test suite"
 msgstr "W3C C14N test paketi"
 
-#: license.rst:1011
+#: license.rst:1014
 msgid ""
 "The C14N 2.0 test suite in the :mod:`test` package (``Lib/test/xmltestdata/"
 "c14n-20/``) was retrieved from the W3C website at https://www.w3.org/TR/xml-"
@@ -1446,7 +1459,7 @@ msgstr ""
 "``), https://www.w3.org/TR/xml-c14n2-testcases/ adresindeki W3C web "
 "sitesinden alınmıştır ve 3 maddeli BSD lisansı altında dağıtılmaktadır::"
 
-#: license.rst:1016
+#: license.rst:1019
 msgid ""
 "Copyright (c) 2013 W3C(R) (MIT, ERCIM, Keio, Beihang),\n"
 "All Rights Reserved.\n"
@@ -1477,11 +1490,11 @@ msgid ""
 "OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
 msgstr ""
 
-#: license.rst:1046
+#: license.rst:1049
 msgid "Audioop"
 msgstr "Audioop"
 
-#: license.rst:1048
+#: license.rst:1051
 #, fuzzy
 msgid ""
 "The audioop module uses the code base in g771.c file of the SoX project. "
@@ -1489,57 +1502,57 @@ msgid ""
 msgstr ""
 "Audioop modülü, SoX projesinin g771.c dosyasındaki kod tabanını kullanır::"
 
-#: license.rst:1051
+#: license.rst:1054
 msgid ""
 "This source code is a product of Sun Microsystems, Inc. and is provided for "
 "unrestricted use.  Users may copy or modify this source code without charge."
 msgstr ""
 
-#: license.rst:1055
+#: license.rst:1058
 msgid ""
 "SUN SOURCE CODE IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING "
 "THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR "
 "PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE."
 msgstr ""
 
-#: license.rst:1059
+#: license.rst:1062
 msgid ""
 "Sun source code is provided with no support and without any obligation on "
 "the part of Sun Microsystems, Inc. to assist in its use, correction, "
 "modification or enhancement."
 msgstr ""
 
-#: license.rst:1063
+#: license.rst:1066
 msgid ""
 "SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE "
 "INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS SOFTWARE OR "
 "ANY PART THEREOF."
 msgstr ""
 
-#: license.rst:1067
+#: license.rst:1070
 msgid ""
 "In no event will Sun Microsystems, Inc. be liable for any lost revenue or "
 "profits or other special, indirect and consequential damages, even if Sun "
 "has been advised of the possibility of such damages."
 msgstr ""
 
-#: license.rst:1071
+#: license.rst:1074
 msgid ""
 "Sun Microsystems, Inc. 2550 Garcia Avenue Mountain View, California  94043"
 msgstr ""
 
-#: license.rst:1077
+#: license.rst:1080
 msgid "asyncio"
 msgstr ""
 
-#: license.rst:1079
+#: license.rst:1082
 msgid ""
 "Parts of the :mod:`asyncio` module are incorporated from `uvloop 0.16 "
 "<https://github.com/MagicStack/uvloop/tree/v0.16.0>`_, which is distributed "
 "under the MIT license::"
 msgstr ""
 
-#: license.rst:1083
+#: license.rst:1086
 msgid ""
 "Copyright (c) 2015-2021 MagicStack Inc.  http://magic.io\n"
 "\n"
@@ -1562,3 +1575,6 @@ msgid ""
 "OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n"
 "WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."
 msgstr ""
+
+#~ msgid "PSF LICENSE AGREEMENT FOR PYTHON |release|"
+#~ msgstr "PYTHON İÇİN PSF LİSANS ANLAŞMASI |release|"
diff --git a/reference/compound_stmts.po b/reference/compound_stmts.po
index 1d36c7894..ffae219c5 100644
--- a/reference/compound_stmts.po
+++ b/reference/compound_stmts.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -562,8 +562,8 @@ msgid ""
 "the normal location for the kind of exit that was taken."
 msgstr ""
 
-#: reference/compound_stmts.rst:526 reference/compound_stmts.rst:1547
-#: reference/compound_stmts.rst:1588
+#: reference/compound_stmts.rst:526 reference/compound_stmts.rst:1549
+#: reference/compound_stmts.rst:1590
 msgid "The following code::"
 msgstr ""
 
@@ -574,7 +574,7 @@ msgid ""
 msgstr ""
 
 #: reference/compound_stmts.rst:531 reference/compound_stmts.rst:556
-#: reference/compound_stmts.rst:1593
+#: reference/compound_stmts.rst:1595
 msgid "is semantically equivalent to::"
 msgstr ""
 
@@ -1463,7 +1463,7 @@ msgstr ""
 msgid ":class:`int`"
 msgstr ""
 
-#: reference/compound_stmts.rst:1160 reference/compound_stmts.rst:1863
+#: reference/compound_stmts.rst:1160 reference/compound_stmts.rst:1865
 msgid ":class:`list`"
 msgstr ""
 
@@ -1475,7 +1475,7 @@ msgstr ""
 msgid ":class:`str`"
 msgstr ""
 
-#: reference/compound_stmts.rst:1163 reference/compound_stmts.rst:1866
+#: reference/compound_stmts.rst:1163 reference/compound_stmts.rst:1868
 msgid ":class:`tuple`"
 msgstr ""
 
@@ -1525,7 +1525,7 @@ msgid ""
 "ref:`types`):"
 msgstr ""
 
-#: reference/compound_stmts.rst:1228
+#: reference/compound_stmts.rst:1230
 msgid ""
 "A function definition is an executable statement.  Its execution binds the "
 "function name in the current local namespace to a function object (a wrapper "
@@ -1534,13 +1534,13 @@ msgid ""
 "used when the function is called."
 msgstr ""
 
-#: reference/compound_stmts.rst:1234
+#: reference/compound_stmts.rst:1236
 msgid ""
 "The function definition does not execute the function body; this gets "
 "executed only when the function is called. [#]_"
 msgstr ""
 
-#: reference/compound_stmts.rst:1240
+#: reference/compound_stmts.rst:1242
 msgid ""
 "A function definition may be wrapped by one or more :term:`decorator` "
 "expressions. Decorator expressions are evaluated when the function is "
@@ -1551,37 +1551,37 @@ msgid ""
 "example, the following code ::"
 msgstr ""
 
-#: reference/compound_stmts.rst:1247
+#: reference/compound_stmts.rst:1249
 msgid ""
 "@f1(arg)\n"
 "@f2\n"
 "def func(): pass"
 msgstr ""
 
-#: reference/compound_stmts.rst:1251 reference/compound_stmts.rst:1446
+#: reference/compound_stmts.rst:1253 reference/compound_stmts.rst:1448
 msgid "is roughly equivalent to ::"
 msgstr ""
 
-#: reference/compound_stmts.rst:1253
+#: reference/compound_stmts.rst:1255
 msgid ""
 "def func(): pass\n"
 "func = f1(arg)(f2(func))"
 msgstr ""
 
-#: reference/compound_stmts.rst:1256
+#: reference/compound_stmts.rst:1258
 msgid ""
 "except that the original function is not temporarily bound to the name "
 "``func``."
 msgstr ""
 
-#: reference/compound_stmts.rst:1258
+#: reference/compound_stmts.rst:1260
 msgid ""
 "Functions may be decorated with any valid :token:`~python-grammar:"
 "assignment_expression`. Previously, the grammar was much more restrictive; "
 "see :pep:`614` for details."
 msgstr ""
 
-#: reference/compound_stmts.rst:1263
+#: reference/compound_stmts.rst:1265
 msgid ""
 "A list of :ref:`type parameters <type-params>` may be given in square "
 "brackets between the function's name and the opening parenthesis for its "
@@ -1591,11 +1591,11 @@ msgid ""
 "functions` for more."
 msgstr ""
 
-#: reference/compound_stmts.rst:1270 reference/compound_stmts.rst:1465
+#: reference/compound_stmts.rst:1272 reference/compound_stmts.rst:1467
 msgid "Type parameter lists are new in Python 3.12."
 msgstr ""
 
-#: reference/compound_stmts.rst:1278
+#: reference/compound_stmts.rst:1280
 msgid ""
 "When one or more :term:`parameters <parameter>` have the form *parameter* "
 "``=`` *expression*, the function is said to have \"default parameter values."
@@ -1606,7 +1606,7 @@ msgid ""
 "syntactic restriction that is not expressed by the grammar."
 msgstr ""
 
-#: reference/compound_stmts.rst:1286
+#: reference/compound_stmts.rst:1288
 msgid ""
 "**Default parameter values are evaluated from left to right when the "
 "function definition is executed.** This means that the expression is "
@@ -1619,7 +1619,7 @@ msgid ""
 "the default, and explicitly test for it in the body of the function, e.g.::"
 msgstr ""
 
-#: reference/compound_stmts.rst:1296
+#: reference/compound_stmts.rst:1298
 msgid ""
 "def whats_on_the_telly(penguin=None):\n"
 "    if penguin is None:\n"
@@ -1628,7 +1628,7 @@ msgid ""
 "    return penguin"
 msgstr ""
 
-#: reference/compound_stmts.rst:1307
+#: reference/compound_stmts.rst:1309
 msgid ""
 "Function call semantics are described in more detail in section :ref:"
 "`calls`. A function call always assigns values to all parameters mentioned "
@@ -1644,13 +1644,13 @@ msgid ""
 "positional arguments."
 msgstr ""
 
-#: reference/compound_stmts.rst:1319
+#: reference/compound_stmts.rst:1321
 msgid ""
 "The ``/`` function parameter syntax may be used to indicate positional-only "
 "parameters. See :pep:`570` for details."
 msgstr ""
 
-#: reference/compound_stmts.rst:1328
+#: reference/compound_stmts.rst:1330
 msgid ""
 "Parameters may have an :term:`annotation <function annotation>` of the form "
 "\"``: expression``\" following the parameter name.  Any parameter may have "
@@ -1669,13 +1669,13 @@ msgid ""
 "in the source code."
 msgstr ""
 
-#: reference/compound_stmts.rst:1342
+#: reference/compound_stmts.rst:1344
 msgid ""
 "Parameters of the form \"``*identifier``\" may have an annotation \"``: "
 "*expression``\". See :pep:`646`."
 msgstr ""
 
-#: reference/compound_stmts.rst:1348
+#: reference/compound_stmts.rst:1350
 msgid ""
 "It is also possible to create anonymous functions (functions not bound to a "
 "name), for immediate use in expressions.  This uses lambda expressions, "
@@ -1687,7 +1687,7 @@ msgid ""
 "execution of multiple statements and annotations."
 msgstr ""
 
-#: reference/compound_stmts.rst:1356
+#: reference/compound_stmts.rst:1358
 msgid ""
 "**Programmer's note:** Functions are first-class objects.  A \"``def``\" "
 "statement executed inside a function definition defines a local function "
@@ -1696,61 +1696,61 @@ msgid ""
 "See section :ref:`naming` for details."
 msgstr ""
 
-#: reference/compound_stmts.rst:1364
+#: reference/compound_stmts.rst:1366
 msgid ":pep:`3107` - Function Annotations"
 msgstr ""
 
-#: reference/compound_stmts.rst:1365
+#: reference/compound_stmts.rst:1367
 msgid "The original specification for function annotations."
 msgstr ""
 
-#: reference/compound_stmts.rst:1367
+#: reference/compound_stmts.rst:1369
 msgid ":pep:`484` - Type Hints"
 msgstr ""
 
-#: reference/compound_stmts.rst:1368
+#: reference/compound_stmts.rst:1370
 msgid "Definition of a standard meaning for annotations: type hints."
 msgstr ""
 
-#: reference/compound_stmts.rst:1370
+#: reference/compound_stmts.rst:1372
 msgid ":pep:`526` - Syntax for Variable Annotations"
 msgstr ""
 
-#: reference/compound_stmts.rst:1371
+#: reference/compound_stmts.rst:1373
 msgid ""
 "Ability to type hint variable declarations, including class variables and "
 "instance variables."
 msgstr ""
 
-#: reference/compound_stmts.rst:1374
+#: reference/compound_stmts.rst:1376
 msgid ":pep:`563` - Postponed Evaluation of Annotations"
 msgstr ""
 
-#: reference/compound_stmts.rst:1375
+#: reference/compound_stmts.rst:1377
 msgid ""
 "Support for forward references within annotations by preserving annotations "
 "in a string form at runtime instead of eager evaluation."
 msgstr ""
 
-#: reference/compound_stmts.rst:1378
+#: reference/compound_stmts.rst:1380
 msgid ":pep:`318` - Decorators for Functions and Methods"
 msgstr ""
 
-#: reference/compound_stmts.rst:1379
+#: reference/compound_stmts.rst:1381
 msgid ""
 "Function and method decorators were introduced. Class decorators were "
 "introduced in :pep:`3129`."
 msgstr ""
 
-#: reference/compound_stmts.rst:1385
+#: reference/compound_stmts.rst:1387
 msgid "Class definitions"
 msgstr ""
 
-#: reference/compound_stmts.rst:1400
+#: reference/compound_stmts.rst:1402
 msgid "A class definition defines a class object (see section :ref:`types`):"
 msgstr ""
 
-#: reference/compound_stmts.rst:1407
+#: reference/compound_stmts.rst:1409
 msgid ""
 "A class definition is an executable statement.  The inheritance list usually "
 "gives a list of base classes (see :ref:`metaclasses` for more advanced "
@@ -1759,23 +1759,23 @@ msgid ""
 "default, from the base class :class:`object`; hence, ::"
 msgstr ""
 
-#: reference/compound_stmts.rst:1413
+#: reference/compound_stmts.rst:1415
 msgid ""
 "class Foo:\n"
 "    pass"
 msgstr ""
 
-#: reference/compound_stmts.rst:1416
+#: reference/compound_stmts.rst:1418
 msgid "is equivalent to ::"
 msgstr ""
 
-#: reference/compound_stmts.rst:1418
+#: reference/compound_stmts.rst:1420
 msgid ""
 "class Foo(object):\n"
 "    pass"
 msgstr ""
 
-#: reference/compound_stmts.rst:1421
+#: reference/compound_stmts.rst:1423
 msgid ""
 "The class's suite is then executed in a new execution frame (see :ref:"
 "`naming`), using a newly created local namespace and the original global "
@@ -1787,7 +1787,7 @@ msgid ""
 "original local namespace."
 msgstr ""
 
-#: reference/compound_stmts.rst:1430
+#: reference/compound_stmts.rst:1432
 msgid ""
 "The order in which attributes are defined in the class body is preserved in "
 "the new class's :attr:`~type.__dict__`.  Note that this is reliable only "
@@ -1795,43 +1795,43 @@ msgid ""
 "using the definition syntax."
 msgstr ""
 
-#: reference/compound_stmts.rst:1435
+#: reference/compound_stmts.rst:1437
 msgid ""
 "Class creation can be customized heavily using :ref:`metaclasses "
 "<metaclasses>`."
 msgstr ""
 
-#: reference/compound_stmts.rst:1440
+#: reference/compound_stmts.rst:1442
 msgid "Classes can also be decorated: just like when decorating functions, ::"
 msgstr ""
 
-#: reference/compound_stmts.rst:1442
+#: reference/compound_stmts.rst:1444
 msgid ""
 "@f1(arg)\n"
 "@f2\n"
 "class Foo: pass"
 msgstr ""
 
-#: reference/compound_stmts.rst:1448
+#: reference/compound_stmts.rst:1450
 msgid ""
 "class Foo: pass\n"
 "Foo = f1(arg)(f2(Foo))"
 msgstr ""
 
-#: reference/compound_stmts.rst:1451
+#: reference/compound_stmts.rst:1453
 msgid ""
 "The evaluation rules for the decorator expressions are the same as for "
 "function decorators.  The result is then bound to the class name."
 msgstr ""
 
-#: reference/compound_stmts.rst:1454
+#: reference/compound_stmts.rst:1456
 msgid ""
 "Classes may be decorated with any valid :token:`~python-grammar:"
 "assignment_expression`. Previously, the grammar was much more restrictive; "
 "see :pep:`614` for details."
 msgstr ""
 
-#: reference/compound_stmts.rst:1459
+#: reference/compound_stmts.rst:1461
 msgid ""
 "A list of :ref:`type parameters <type-params>` may be given in square "
 "brackets immediately after the class's name. This indicates to static type "
@@ -1840,7 +1840,7 @@ msgid ""
 "`generic-classes` for more."
 msgstr ""
 
-#: reference/compound_stmts.rst:1468
+#: reference/compound_stmts.rst:1470
 msgid ""
 "**Programmer's note:** Variables defined in the class definition are class "
 "attributes; they are shared by instances.  Instance attributes can be set in "
@@ -1853,35 +1853,35 @@ msgid ""
 "implementation details."
 msgstr ""
 
-#: reference/compound_stmts.rst:1480
+#: reference/compound_stmts.rst:1482
 msgid ":pep:`3115` - Metaclasses in Python 3000"
 msgstr ""
 
-#: reference/compound_stmts.rst:1481
+#: reference/compound_stmts.rst:1483
 msgid ""
 "The proposal that changed the declaration of metaclasses to the current "
 "syntax, and the semantics for how classes with metaclasses are constructed."
 msgstr ""
 
-#: reference/compound_stmts.rst:1485
+#: reference/compound_stmts.rst:1487
 msgid ":pep:`3129` - Class Decorators"
 msgstr ""
 
-#: reference/compound_stmts.rst:1486
+#: reference/compound_stmts.rst:1488
 msgid ""
 "The proposal that added class decorators.  Function and method decorators "
 "were introduced in :pep:`318`."
 msgstr ""
 
-#: reference/compound_stmts.rst:1493
+#: reference/compound_stmts.rst:1495
 msgid "Coroutines"
 msgstr ""
 
-#: reference/compound_stmts.rst:1501
+#: reference/compound_stmts.rst:1503
 msgid "Coroutine function definition"
 msgstr ""
 
-#: reference/compound_stmts.rst:1511
+#: reference/compound_stmts.rst:1513
 msgid ""
 "Execution of Python coroutines can be suspended and resumed at many points "
 "(see :term:`coroutine`). :keyword:`await` expressions, :keyword:`async for` "
@@ -1889,53 +1889,53 @@ msgid ""
 "function."
 msgstr ""
 
-#: reference/compound_stmts.rst:1515
+#: reference/compound_stmts.rst:1517
 msgid ""
 "Functions defined with ``async def`` syntax are always coroutine functions, "
 "even if they do not contain ``await`` or ``async`` keywords."
 msgstr ""
 
-#: reference/compound_stmts.rst:1518
+#: reference/compound_stmts.rst:1520
 msgid ""
 "It is a :exc:`SyntaxError` to use a ``yield from`` expression inside the "
 "body of a coroutine function."
 msgstr ""
 
-#: reference/compound_stmts.rst:1521
+#: reference/compound_stmts.rst:1523
 msgid "An example of a coroutine function::"
 msgstr ""
 
-#: reference/compound_stmts.rst:1523
+#: reference/compound_stmts.rst:1525
 msgid ""
 "async def func(param1, param2):\n"
 "    do_stuff()\n"
 "    await some_coroutine()"
 msgstr ""
 
-#: reference/compound_stmts.rst:1527
+#: reference/compound_stmts.rst:1529
 msgid ""
 "``await`` and ``async`` are now keywords; previously they were only treated "
 "as such inside the body of a coroutine function."
 msgstr ""
 
-#: reference/compound_stmts.rst:1535
+#: reference/compound_stmts.rst:1537
 msgid "The :keyword:`!async for` statement"
 msgstr ""
 
-#: reference/compound_stmts.rst:1540
+#: reference/compound_stmts.rst:1542
 msgid ""
 "An :term:`asynchronous iterable` provides an ``__aiter__`` method that "
 "directly returns an :term:`asynchronous iterator`, which can call "
 "asynchronous code in its ``__anext__`` method."
 msgstr ""
 
-#: reference/compound_stmts.rst:1544
+#: reference/compound_stmts.rst:1546
 msgid ""
 "The ``async for`` statement allows convenient iteration over asynchronous "
 "iterables."
 msgstr ""
 
-#: reference/compound_stmts.rst:1549
+#: reference/compound_stmts.rst:1551
 msgid ""
 "async for TARGET in ITER:\n"
 "    SUITE\n"
@@ -1943,11 +1943,11 @@ msgid ""
 "    SUITE2"
 msgstr ""
 
-#: reference/compound_stmts.rst:1554
+#: reference/compound_stmts.rst:1556
 msgid "Is semantically equivalent to::"
 msgstr ""
 
-#: reference/compound_stmts.rst:1556
+#: reference/compound_stmts.rst:1558
 msgid ""
 "iter = (ITER)\n"
 "iter = type(iter).__aiter__(iter)\n"
@@ -1964,34 +1964,34 @@ msgid ""
 "    SUITE2"
 msgstr ""
 
-#: reference/compound_stmts.rst:1570
+#: reference/compound_stmts.rst:1572
 msgid ""
 "See also :meth:`~object.__aiter__` and :meth:`~object.__anext__` for details."
 msgstr ""
 
-#: reference/compound_stmts.rst:1572
+#: reference/compound_stmts.rst:1574
 msgid ""
 "It is a :exc:`SyntaxError` to use an ``async for`` statement outside the "
 "body of a coroutine function."
 msgstr ""
 
-#: reference/compound_stmts.rst:1580
+#: reference/compound_stmts.rst:1582
 msgid "The :keyword:`!async with` statement"
 msgstr ""
 
-#: reference/compound_stmts.rst:1585
+#: reference/compound_stmts.rst:1587
 msgid ""
 "An :term:`asynchronous context manager` is a :term:`context manager` that is "
 "able to suspend execution in its *enter* and *exit* methods."
 msgstr ""
 
-#: reference/compound_stmts.rst:1590
+#: reference/compound_stmts.rst:1592
 msgid ""
 "async with EXPRESSION as TARGET:\n"
 "    SUITE"
 msgstr ""
 
-#: reference/compound_stmts.rst:1595
+#: reference/compound_stmts.rst:1597
 msgid ""
 "manager = (EXPRESSION)\n"
 "aenter = type(manager).__aenter__\n"
@@ -2011,40 +2011,40 @@ msgid ""
 "        await aexit(manager, None, None, None)"
 msgstr ""
 
-#: reference/compound_stmts.rst:1612
+#: reference/compound_stmts.rst:1614
 msgid ""
 "See also :meth:`~object.__aenter__` and :meth:`~object.__aexit__` for "
 "details."
 msgstr ""
 
-#: reference/compound_stmts.rst:1614
+#: reference/compound_stmts.rst:1616
 msgid ""
 "It is a :exc:`SyntaxError` to use an ``async with`` statement outside the "
 "body of a coroutine function."
 msgstr ""
 
-#: reference/compound_stmts.rst:1619
+#: reference/compound_stmts.rst:1621
 msgid ":pep:`492` - Coroutines with async and await syntax"
 msgstr ""
 
-#: reference/compound_stmts.rst:1620
+#: reference/compound_stmts.rst:1622
 msgid ""
 "The proposal that made coroutines a proper standalone concept in Python, and "
 "added supporting syntax."
 msgstr ""
 
-#: reference/compound_stmts.rst:1626
+#: reference/compound_stmts.rst:1628
 msgid "Type parameter lists"
 msgstr ""
 
-#: reference/compound_stmts.rst:1640
+#: reference/compound_stmts.rst:1642
 msgid ""
 ":ref:`Functions <def>` (including :ref:`coroutines <async def>`), :ref:"
 "`classes <class>` and :ref:`type aliases <type>` may contain a type "
 "parameter list::"
 msgstr ""
 
-#: reference/compound_stmts.rst:1644
+#: reference/compound_stmts.rst:1646
 msgid ""
 "def max[T](args: list[T]) -> T:\n"
 "    ...\n"
@@ -2062,7 +2062,7 @@ msgid ""
 "type ListOrSet[T] = list[T] | set[T]"
 msgstr ""
 
-#: reference/compound_stmts.rst:1659
+#: reference/compound_stmts.rst:1661
 msgid ""
 "Semantically, this indicates that the function, class, or type alias is "
 "generic over a type variable. This information is primarily used by static "
@@ -2070,7 +2070,7 @@ msgid ""
 "generic counterparts."
 msgstr ""
 
-#: reference/compound_stmts.rst:1664
+#: reference/compound_stmts.rst:1666
 msgid ""
 "Type parameters are declared in square brackets (``[]``) immediately after "
 "the name of the function, class, or type alias. The type parameters are "
@@ -2082,36 +2082,36 @@ msgid ""
 "wraps the creation of the generic object."
 msgstr ""
 
-#: reference/compound_stmts.rst:1673
+#: reference/compound_stmts.rst:1675
 msgid ""
 "Generic functions, classes, and type aliases have a :attr:`~definition."
 "__type_params__` attribute listing their type parameters."
 msgstr ""
 
-#: reference/compound_stmts.rst:1676
+#: reference/compound_stmts.rst:1678
 msgid "Type parameters come in three kinds:"
 msgstr ""
 
-#: reference/compound_stmts.rst:1678
+#: reference/compound_stmts.rst:1680
 msgid ""
 ":data:`typing.TypeVar`, introduced by a plain name (e.g., ``T``). "
 "Semantically, this represents a single type to a type checker."
 msgstr ""
 
-#: reference/compound_stmts.rst:1680
+#: reference/compound_stmts.rst:1682
 msgid ""
 ":data:`typing.TypeVarTuple`, introduced by a name prefixed with a single "
 "asterisk (e.g., ``*Ts``). Semantically, this stands for a tuple of any "
 "number of types."
 msgstr ""
 
-#: reference/compound_stmts.rst:1683
+#: reference/compound_stmts.rst:1685
 msgid ""
 ":data:`typing.ParamSpec`, introduced by a name prefixed with two asterisks "
 "(e.g., ``**P``). Semantically, this stands for the parameters of a callable."
 msgstr ""
 
-#: reference/compound_stmts.rst:1686
+#: reference/compound_stmts.rst:1688
 msgid ""
 ":data:`typing.TypeVar` declarations can define *bounds* and *constraints* "
 "with a colon (``:``) followed by an expression. A single expression after "
@@ -2123,7 +2123,7 @@ msgid ""
 "variables can only take on one of the types in the list of constraints."
 msgstr ""
 
-#: reference/compound_stmts.rst:1695
+#: reference/compound_stmts.rst:1697
 msgid ""
 "For :data:`!typing.TypeVar`\\ s declared using the type parameter list "
 "syntax, the bound and constraints are not evaluated when the generic object "
@@ -2133,19 +2133,19 @@ msgid ""
 "<annotation-scopes>`."
 msgstr ""
 
-#: reference/compound_stmts.rst:1701
+#: reference/compound_stmts.rst:1703
 msgid ""
 ":data:`typing.TypeVarTuple`\\ s and :data:`typing.ParamSpec`\\ s cannot have "
 "bounds or constraints."
 msgstr ""
 
-#: reference/compound_stmts.rst:1704
+#: reference/compound_stmts.rst:1706
 msgid ""
 "The following example indicates the full set of allowed type parameter "
 "declarations::"
 msgstr ""
 
-#: reference/compound_stmts.rst:1706
+#: reference/compound_stmts.rst:1708
 msgid ""
 "def overly_generic[\n"
 "   SimpleTypeVar,\n"
@@ -2161,23 +2161,23 @@ msgid ""
 "): ..."
 msgstr ""
 
-#: reference/compound_stmts.rst:1722
+#: reference/compound_stmts.rst:1724
 msgid "Generic functions"
 msgstr ""
 
-#: reference/compound_stmts.rst:1724
+#: reference/compound_stmts.rst:1726
 msgid "Generic functions are declared as follows::"
 msgstr ""
 
-#: reference/compound_stmts.rst:1726
+#: reference/compound_stmts.rst:1728
 msgid "def func[T](arg: T): ..."
 msgstr ""
 
-#: reference/compound_stmts.rst:1728 reference/compound_stmts.rst:1788
+#: reference/compound_stmts.rst:1730 reference/compound_stmts.rst:1790
 msgid "This syntax is equivalent to::"
 msgstr ""
 
-#: reference/compound_stmts.rst:1730
+#: reference/compound_stmts.rst:1732
 msgid ""
 "annotation-def TYPE_PARAMS_OF_func():\n"
 "    T = typing.TypeVar(\"T\")\n"
@@ -2187,7 +2187,7 @@ msgid ""
 "func = TYPE_PARAMS_OF_func()"
 msgstr ""
 
-#: reference/compound_stmts.rst:1737
+#: reference/compound_stmts.rst:1739
 msgid ""
 "Here ``annotation-def`` indicates an :ref:`annotation scope <annotation-"
 "scopes>`, which is not actually bound to any name at runtime. (One other "
@@ -2196,33 +2196,33 @@ msgid ""
 "data:`typing.TypeVar` directly.)"
 msgstr ""
 
-#: reference/compound_stmts.rst:1743
+#: reference/compound_stmts.rst:1745
 msgid ""
 "The annotations of generic functions are evaluated within the annotation "
 "scope used for declaring the type parameters, but the function's defaults "
 "and decorators are not."
 msgstr ""
 
-#: reference/compound_stmts.rst:1747
+#: reference/compound_stmts.rst:1749
 msgid ""
 "The following example illustrates the scoping rules for these cases, as well "
 "as for additional flavors of type parameters::"
 msgstr ""
 
-#: reference/compound_stmts.rst:1750
+#: reference/compound_stmts.rst:1752
 msgid ""
 "@decorator\n"
 "def func[T: int, *Ts, **P](*args: *Ts, arg: Callable[P, T] = some_default):\n"
 "    ..."
 msgstr ""
 
-#: reference/compound_stmts.rst:1754
+#: reference/compound_stmts.rst:1756
 msgid ""
 "Except for the :ref:`lazy evaluation <lazy-evaluation>` of the :class:"
 "`~typing.TypeVar` bound, this is equivalent to::"
 msgstr ""
 
-#: reference/compound_stmts.rst:1757
+#: reference/compound_stmts.rst:1759
 msgid ""
 "DEFAULT_OF_arg = some_default\n"
 "\n"
@@ -2244,25 +2244,25 @@ msgid ""
 "func = decorator(TYPE_PARAMS_OF_func())"
 msgstr ""
 
-#: reference/compound_stmts.rst:1776
+#: reference/compound_stmts.rst:1778
 msgid ""
 "The capitalized names like ``DEFAULT_OF_arg`` are not actually bound at "
 "runtime."
 msgstr ""
 
-#: reference/compound_stmts.rst:1782
+#: reference/compound_stmts.rst:1784
 msgid "Generic classes"
 msgstr ""
 
-#: reference/compound_stmts.rst:1784
+#: reference/compound_stmts.rst:1786
 msgid "Generic classes are declared as follows::"
 msgstr ""
 
-#: reference/compound_stmts.rst:1786
+#: reference/compound_stmts.rst:1788
 msgid "class Bag[T]: ..."
 msgstr ""
 
-#: reference/compound_stmts.rst:1790
+#: reference/compound_stmts.rst:1792
 msgid ""
 "annotation-def TYPE_PARAMS_OF_Bag():\n"
 "    T = typing.TypeVar(\"T\")\n"
@@ -2273,14 +2273,14 @@ msgid ""
 "Bag = TYPE_PARAMS_OF_Bag()"
 msgstr ""
 
-#: reference/compound_stmts.rst:1798
+#: reference/compound_stmts.rst:1800
 msgid ""
 "Here again ``annotation-def`` (not a real keyword) indicates an :ref:"
 "`annotation scope <annotation-scopes>`, and the name ``TYPE_PARAMS_OF_Bag`` "
 "is not actually bound at runtime."
 msgstr ""
 
-#: reference/compound_stmts.rst:1802
+#: reference/compound_stmts.rst:1804
 msgid ""
 "Generic classes implicitly inherit from :data:`typing.Generic`. The base "
 "classes and keyword arguments of generic classes are evaluated within the "
@@ -2288,17 +2288,17 @@ msgid ""
 "that scope. This is illustrated by this example::"
 msgstr ""
 
-#: reference/compound_stmts.rst:1808
+#: reference/compound_stmts.rst:1810
 msgid ""
 "@decorator\n"
 "class Bag(Base[T], arg=T): ..."
 msgstr ""
 
-#: reference/compound_stmts.rst:1811
+#: reference/compound_stmts.rst:1813
 msgid "This is equivalent to::"
 msgstr ""
 
-#: reference/compound_stmts.rst:1813
+#: reference/compound_stmts.rst:1815
 msgid ""
 "annotation-def TYPE_PARAMS_OF_Bag():\n"
 "    T = typing.TypeVar(\"T\")\n"
@@ -2309,27 +2309,27 @@ msgid ""
 "Bag = decorator(TYPE_PARAMS_OF_Bag())"
 msgstr ""
 
-#: reference/compound_stmts.rst:1824
+#: reference/compound_stmts.rst:1826
 msgid "Generic type aliases"
 msgstr ""
 
-#: reference/compound_stmts.rst:1826
+#: reference/compound_stmts.rst:1828
 msgid ""
 "The :keyword:`type` statement can also be used to create a generic type "
 "alias::"
 msgstr ""
 
-#: reference/compound_stmts.rst:1828
+#: reference/compound_stmts.rst:1830
 msgid "type ListOrSet[T] = list[T] | set[T]"
 msgstr ""
 
-#: reference/compound_stmts.rst:1830
+#: reference/compound_stmts.rst:1832
 msgid ""
 "Except for the :ref:`lazy evaluation <lazy-evaluation>` of the value, this "
 "is equivalent to::"
 msgstr ""
 
-#: reference/compound_stmts.rst:1833
+#: reference/compound_stmts.rst:1835
 msgid ""
 "annotation-def TYPE_PARAMS_OF_ListOrSet():\n"
 "    T = typing.TypeVar(\"T\")\n"
@@ -2342,104 +2342,104 @@ msgid ""
 "ListOrSet = TYPE_PARAMS_OF_ListOrSet()"
 msgstr ""
 
-#: reference/compound_stmts.rst:1842
+#: reference/compound_stmts.rst:1844
 msgid ""
 "Here, ``annotation-def`` (not a real keyword) indicates an :ref:`annotation "
 "scope <annotation-scopes>`. The capitalized names like "
 "``TYPE_PARAMS_OF_ListOrSet`` are not actually bound at runtime."
 msgstr ""
 
-#: reference/compound_stmts.rst:1847
+#: reference/compound_stmts.rst:1849
 msgid "Footnotes"
 msgstr ""
 
-#: reference/compound_stmts.rst:1848
+#: reference/compound_stmts.rst:1850
 msgid ""
 "The exception is propagated to the invocation stack unless there is a :"
 "keyword:`finally` clause which happens to raise another exception. That new "
 "exception causes the old one to be lost."
 msgstr ""
 
-#: reference/compound_stmts.rst:1852
+#: reference/compound_stmts.rst:1854
 msgid "In pattern matching, a sequence is defined as one of the following:"
 msgstr ""
 
-#: reference/compound_stmts.rst:1854
+#: reference/compound_stmts.rst:1856
 msgid "a class that inherits from :class:`collections.abc.Sequence`"
 msgstr ""
 
-#: reference/compound_stmts.rst:1855
+#: reference/compound_stmts.rst:1857
 msgid ""
 "a Python class that has been registered as :class:`collections.abc.Sequence`"
 msgstr ""
 
-#: reference/compound_stmts.rst:1856
+#: reference/compound_stmts.rst:1858
 msgid ""
 "a builtin class that has its (CPython) :c:macro:`Py_TPFLAGS_SEQUENCE` bit set"
 msgstr ""
 
-#: reference/compound_stmts.rst:1857 reference/compound_stmts.rst:1876
+#: reference/compound_stmts.rst:1859 reference/compound_stmts.rst:1878
 msgid "a class that inherits from any of the above"
 msgstr ""
 
-#: reference/compound_stmts.rst:1859
+#: reference/compound_stmts.rst:1861
 msgid "The following standard library classes are sequences:"
 msgstr ""
 
-#: reference/compound_stmts.rst:1861
+#: reference/compound_stmts.rst:1863
 msgid ":class:`array.array`"
 msgstr ""
 
-#: reference/compound_stmts.rst:1862
+#: reference/compound_stmts.rst:1864
 msgid ":class:`collections.deque`"
 msgstr ""
 
-#: reference/compound_stmts.rst:1864
+#: reference/compound_stmts.rst:1866
 msgid ":class:`memoryview`"
 msgstr ""
 
-#: reference/compound_stmts.rst:1865
+#: reference/compound_stmts.rst:1867
 msgid ":class:`range`"
 msgstr ""
 
-#: reference/compound_stmts.rst:1868
+#: reference/compound_stmts.rst:1870
 msgid ""
 "Subject values of type ``str``, ``bytes``, and ``bytearray`` do not match "
 "sequence patterns."
 msgstr ""
 
-#: reference/compound_stmts.rst:1871
+#: reference/compound_stmts.rst:1873
 msgid "In pattern matching, a mapping is defined as one of the following:"
 msgstr ""
 
-#: reference/compound_stmts.rst:1873
+#: reference/compound_stmts.rst:1875
 msgid "a class that inherits from :class:`collections.abc.Mapping`"
 msgstr ""
 
-#: reference/compound_stmts.rst:1874
+#: reference/compound_stmts.rst:1876
 msgid ""
 "a Python class that has been registered as :class:`collections.abc.Mapping`"
 msgstr ""
 
-#: reference/compound_stmts.rst:1875
+#: reference/compound_stmts.rst:1877
 msgid ""
 "a builtin class that has its (CPython) :c:macro:`Py_TPFLAGS_MAPPING` bit set"
 msgstr ""
 
-#: reference/compound_stmts.rst:1878
+#: reference/compound_stmts.rst:1880
 msgid ""
 "The standard library classes :class:`dict` and :class:`types."
 "MappingProxyType` are mappings."
 msgstr ""
 
-#: reference/compound_stmts.rst:1881
+#: reference/compound_stmts.rst:1883
 msgid ""
 "A string literal appearing as the first statement in the function body is "
 "transformed into the function's :attr:`~function.__doc__` attribute and "
 "therefore the function's :term:`docstring`."
 msgstr ""
 
-#: reference/compound_stmts.rst:1885
+#: reference/compound_stmts.rst:1887
 msgid ""
 "A string literal appearing as the first statement in the class body is "
 "transformed into the namespace's :attr:`~type.__doc__` item and therefore "
@@ -2455,9 +2455,9 @@ msgstr ""
 #: reference/compound_stmts.rst:169 reference/compound_stmts.rst:207
 #: reference/compound_stmts.rst:390 reference/compound_stmts.rst:437
 #: reference/compound_stmts.rst:471 reference/compound_stmts.rst:588
-#: reference/compound_stmts.rst:1195 reference/compound_stmts.rst:1387
-#: reference/compound_stmts.rst:1497 reference/compound_stmts.rst:1531
-#: reference/compound_stmts.rst:1576
+#: reference/compound_stmts.rst:1195 reference/compound_stmts.rst:1389
+#: reference/compound_stmts.rst:1499 reference/compound_stmts.rst:1533
+#: reference/compound_stmts.rst:1578
 msgid "statement"
 msgstr ""
 
@@ -2499,7 +2499,7 @@ msgstr ""
 #: reference/compound_stmts.rst:144 reference/compound_stmts.rst:207
 #: reference/compound_stmts.rst:327 reference/compound_stmts.rst:390
 #: reference/compound_stmts.rst:408 reference/compound_stmts.rst:471
-#: reference/compound_stmts.rst:588 reference/compound_stmts.rst:1507
+#: reference/compound_stmts.rst:588 reference/compound_stmts.rst:1509
 msgid "keyword"
 msgstr ""
 
@@ -2510,15 +2510,15 @@ msgstr ""
 #: reference/compound_stmts.rst:86 reference/compound_stmts.rst:111
 #: reference/compound_stmts.rst:144 reference/compound_stmts.rst:207
 #: reference/compound_stmts.rst:471 reference/compound_stmts.rst:588
-#: reference/compound_stmts.rst:1195 reference/compound_stmts.rst:1323
-#: reference/compound_stmts.rst:1387
+#: reference/compound_stmts.rst:1195 reference/compound_stmts.rst:1325
+#: reference/compound_stmts.rst:1389
 msgid ": (colon)"
 msgstr ""
 
 #: reference/compound_stmts.rst:86 reference/compound_stmts.rst:111
 #: reference/compound_stmts.rst:144 reference/compound_stmts.rst:207
 #: reference/compound_stmts.rst:471 reference/compound_stmts.rst:588
-#: reference/compound_stmts.rst:1195 reference/compound_stmts.rst:1387
+#: reference/compound_stmts.rst:1195 reference/compound_stmts.rst:1389
 msgid "compound statement"
 msgstr ""
 
@@ -2557,7 +2557,7 @@ msgid "list"
 msgstr ""
 
 #: reference/compound_stmts.rst:144 reference/compound_stmts.rst:298
-#: reference/compound_stmts.rst:1195 reference/compound_stmts.rst:1387
+#: reference/compound_stmts.rst:1195 reference/compound_stmts.rst:1389
 msgid "object"
 msgstr ""
 
@@ -2623,7 +2623,7 @@ msgid "with statement"
 msgstr ""
 
 #: reference/compound_stmts.rst:471 reference/compound_stmts.rst:1195
-#: reference/compound_stmts.rst:1387
+#: reference/compound_stmts.rst:1389
 msgid ", (comma)"
 msgstr ""
 
@@ -2663,13 +2663,13 @@ msgstr ""
 msgid "AS pattern, OR pattern, capture pattern, wildcard pattern"
 msgstr ""
 
-#: reference/compound_stmts.rst:1186 reference/compound_stmts.rst:1273
+#: reference/compound_stmts.rst:1186 reference/compound_stmts.rst:1275
 msgid "parameter"
 msgstr ""
 
 #: reference/compound_stmts.rst:1186 reference/compound_stmts.rst:1195
-#: reference/compound_stmts.rst:1237 reference/compound_stmts.rst:1273
-#: reference/compound_stmts.rst:1302
+#: reference/compound_stmts.rst:1239 reference/compound_stmts.rst:1275
+#: reference/compound_stmts.rst:1304
 msgid "function definition"
 msgstr ""
 
@@ -2677,19 +2677,19 @@ msgstr ""
 msgid "def"
 msgstr ""
 
-#: reference/compound_stmts.rst:1195 reference/compound_stmts.rst:1323
+#: reference/compound_stmts.rst:1195 reference/compound_stmts.rst:1325
 msgid "function"
 msgstr ""
 
-#: reference/compound_stmts.rst:1195 reference/compound_stmts.rst:1387
+#: reference/compound_stmts.rst:1195 reference/compound_stmts.rst:1389
 msgid "definition"
 msgstr ""
 
-#: reference/compound_stmts.rst:1195 reference/compound_stmts.rst:1387
+#: reference/compound_stmts.rst:1195 reference/compound_stmts.rst:1389
 msgid "name"
 msgstr ""
 
-#: reference/compound_stmts.rst:1195 reference/compound_stmts.rst:1387
+#: reference/compound_stmts.rst:1195 reference/compound_stmts.rst:1389
 msgid "binding"
 msgstr ""
 
@@ -2697,7 +2697,7 @@ msgstr ""
 msgid "user-defined function"
 msgstr ""
 
-#: reference/compound_stmts.rst:1195 reference/compound_stmts.rst:1387
+#: reference/compound_stmts.rst:1195 reference/compound_stmts.rst:1389
 msgid "() (parentheses)"
 msgstr ""
 
@@ -2705,106 +2705,106 @@ msgstr ""
 msgid "parameter list"
 msgstr ""
 
-#: reference/compound_stmts.rst:1237 reference/compound_stmts.rst:1437
+#: reference/compound_stmts.rst:1239 reference/compound_stmts.rst:1439
 msgid "@ (at)"
 msgstr ""
 
-#: reference/compound_stmts.rst:1273
+#: reference/compound_stmts.rst:1275
 msgid "default"
 msgstr ""
 
-#: reference/compound_stmts.rst:1273
+#: reference/compound_stmts.rst:1275
 msgid "value"
 msgstr ""
 
-#: reference/compound_stmts.rst:1273
+#: reference/compound_stmts.rst:1275
 msgid "argument"
 msgstr ""
 
-#: reference/compound_stmts.rst:1273
+#: reference/compound_stmts.rst:1275
 msgid "= (equals)"
 msgstr ""
 
-#: reference/compound_stmts.rst:1302
+#: reference/compound_stmts.rst:1304
 msgid "/ (slash)"
 msgstr ""
 
-#: reference/compound_stmts.rst:1302
+#: reference/compound_stmts.rst:1304
 msgid "* (asterisk)"
 msgstr ""
 
-#: reference/compound_stmts.rst:1302
+#: reference/compound_stmts.rst:1304
 msgid "**"
 msgstr ""
 
-#: reference/compound_stmts.rst:1323
+#: reference/compound_stmts.rst:1325
 msgid "annotations"
 msgstr ""
 
-#: reference/compound_stmts.rst:1323
+#: reference/compound_stmts.rst:1325
 msgid "->"
 msgstr ""
 
-#: reference/compound_stmts.rst:1323
+#: reference/compound_stmts.rst:1325
 msgid "function annotations"
 msgstr ""
 
-#: reference/compound_stmts.rst:1346
+#: reference/compound_stmts.rst:1348
 msgid "lambda"
 msgstr ""
 
-#: reference/compound_stmts.rst:1346
+#: reference/compound_stmts.rst:1348
 msgid "expression"
 msgstr ""
 
-#: reference/compound_stmts.rst:1387
+#: reference/compound_stmts.rst:1389
 msgid "class"
 msgstr ""
 
-#: reference/compound_stmts.rst:1387
+#: reference/compound_stmts.rst:1389
 msgid "execution"
 msgstr ""
 
-#: reference/compound_stmts.rst:1387
+#: reference/compound_stmts.rst:1389
 msgid "frame"
 msgstr ""
 
-#: reference/compound_stmts.rst:1387
+#: reference/compound_stmts.rst:1389
 msgid "inheritance"
 msgstr ""
 
-#: reference/compound_stmts.rst:1387
+#: reference/compound_stmts.rst:1389
 msgid "docstring"
 msgstr ""
 
-#: reference/compound_stmts.rst:1387 reference/compound_stmts.rst:1437
+#: reference/compound_stmts.rst:1389 reference/compound_stmts.rst:1439
 msgid "class definition"
 msgstr ""
 
-#: reference/compound_stmts.rst:1387
+#: reference/compound_stmts.rst:1389
 msgid "expression list"
 msgstr ""
 
-#: reference/compound_stmts.rst:1497
+#: reference/compound_stmts.rst:1499
 msgid "async def"
 msgstr ""
 
-#: reference/compound_stmts.rst:1507
+#: reference/compound_stmts.rst:1509
 msgid "async"
 msgstr ""
 
-#: reference/compound_stmts.rst:1507
+#: reference/compound_stmts.rst:1509
 msgid "await"
 msgstr ""
 
-#: reference/compound_stmts.rst:1531
+#: reference/compound_stmts.rst:1533
 msgid "async for"
 msgstr ""
 
-#: reference/compound_stmts.rst:1576
+#: reference/compound_stmts.rst:1578
 msgid "async with"
 msgstr ""
 
-#: reference/compound_stmts.rst:1630
+#: reference/compound_stmts.rst:1632
 msgid "type parameters"
 msgstr ""
diff --git a/reference/datamodel.po b/reference/datamodel.po
index 35853b059..c61574f90 100644
--- a/reference/datamodel.po
+++ b/reference/datamodel.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -1130,7 +1130,7 @@ msgstr ""
 #: reference/datamodel.rst:1010
 msgid ""
 "Setting :attr:`!__loader__` on a module while failing to set :attr:`!"
-"__spec__.loader` is deprecated. In Python 3.14, :attr:`!__loader__` will "
+"__spec__.loader` is deprecated. In Python 3.16, :attr:`!__loader__` will "
 "cease to be set or taken into consideration by the import system or the "
 "standard library."
 msgstr ""
@@ -1559,7 +1559,7 @@ msgstr ""
 #: reference/datamodel.rst:1429
 msgid ""
 "This attribute of code objects is deprecated, and may be removed in Python "
-"3.14."
+"3.15."
 msgstr ""
 
 #: reference/datamodel.rst:1434
diff --git a/reference/expressions.po b/reference/expressions.po
index cc147946a..0e897a665 100644
--- a/reference/expressions.po
+++ b/reference/expressions.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -713,7 +713,7 @@ msgid ""
 "*value* may be cleared."
 msgstr ""
 
-#: reference/expressions.rst:795
+#: reference/expressions.rst:798
 msgid ""
 "The second signature \\(type\\[, value\\[, traceback\\]\\]\\) is deprecated "
 "and may be removed in a future version of Python."
@@ -868,7 +868,7 @@ msgid ""
 "which are used to control the execution of a generator function."
 msgstr ""
 
-#: reference/expressions.rst:750
+#: reference/expressions.rst:751
 msgid ""
 "Returns an awaitable which when run starts to execute the asynchronous "
 "generator or resumes it at the last executed yield expression.  When an "
@@ -883,12 +883,12 @@ msgid ""
 "has completed."
 msgstr ""
 
-#: reference/expressions.rst:762
+#: reference/expressions.rst:763
 msgid ""
 "This method is normally called implicitly by a :keyword:`async for` loop."
 msgstr ""
 
-#: reference/expressions.rst:767
+#: reference/expressions.rst:769
 msgid ""
 "Returns an awaitable which when run resumes the execution of the "
 "asynchronous generator. As with the :meth:`~generator.send` method for a "
@@ -903,7 +903,7 @@ msgid ""
 "receive the value."
 msgstr ""
 
-#: reference/expressions.rst:783
+#: reference/expressions.rst:786
 msgid ""
 "Returns an awaitable that raises an exception of type ``type`` at the point "
 "where the asynchronous generator was paused, and returns the next value "
@@ -915,7 +915,7 @@ msgid ""
 "that exception propagates to the caller of the awaitable."
 msgstr ""
 
-#: reference/expressions.rst:803
+#: reference/expressions.rst:807
 msgid ""
 "Returns an awaitable that when run will throw a :exc:`GeneratorExit` into "
 "the asynchronous generator function at the point where it was paused. If the "
@@ -931,25 +931,25 @@ msgid ""
 "will return an awaitable that does nothing."
 msgstr ""
 
-#: reference/expressions.rst:819
+#: reference/expressions.rst:823
 msgid "Primaries"
 msgstr ""
 
-#: reference/expressions.rst:823
+#: reference/expressions.rst:827
 msgid ""
 "Primaries represent the most tightly bound operations of the language. Their "
 "syntax is:"
 msgstr ""
 
-#: reference/expressions.rst:833
+#: reference/expressions.rst:837
 msgid "Attribute references"
 msgstr ""
 
-#: reference/expressions.rst:839
+#: reference/expressions.rst:843
 msgid "An attribute reference is a primary followed by a period and a name:"
 msgstr ""
 
-#: reference/expressions.rst:849
+#: reference/expressions.rst:853
 msgid ""
 "The primary must evaluate to an object of a type that supports attribute "
 "references, which most objects do.  This object is then asked to produce the "
@@ -958,7 +958,7 @@ msgid ""
 "reference may yield different objects."
 msgstr ""
 
-#: reference/expressions.rst:855
+#: reference/expressions.rst:859
 msgid ""
 "This production can be customized by overriding the :meth:`~object."
 "__getattribute__` method or the :meth:`~object.__getattr__` method.  The :"
@@ -966,17 +966,17 @@ msgid ""
 "or raises :exc:`AttributeError` if the attribute is not available."
 msgstr ""
 
-#: reference/expressions.rst:861
+#: reference/expressions.rst:865
 msgid ""
 "If an :exc:`AttributeError` is raised and the object has a :meth:`!"
 "__getattr__` method, that method is called as a fallback."
 msgstr ""
 
-#: reference/expressions.rst:867
+#: reference/expressions.rst:871
 msgid "Subscriptions"
 msgstr ""
 
-#: reference/expressions.rst:882
+#: reference/expressions.rst:886
 msgid ""
 "The subscription of an instance of a :ref:`container class <sequence-types>` "
 "will generally select an element from the container. The subscription of a :"
@@ -984,13 +984,13 @@ msgid ""
 "`GenericAlias <types-genericalias>` object."
 msgstr ""
 
-#: reference/expressions.rst:890
+#: reference/expressions.rst:894
 msgid ""
 "When an object is subscripted, the interpreter will evaluate the primary and "
 "the expression list."
 msgstr ""
 
-#: reference/expressions.rst:893
+#: reference/expressions.rst:897
 msgid ""
 "The primary must evaluate to an object that supports subscription. An object "
 "may support subscription through defining one or both of :meth:`~object."
@@ -1000,7 +1000,7 @@ msgid ""
 "called instead of ``__getitem__``, see :ref:`classgetitem-versus-getitem`."
 msgstr ""
 
-#: reference/expressions.rst:900
+#: reference/expressions.rst:904
 msgid ""
 "If the expression list contains at least one comma, or if any of the "
 "expressions are starred, the expression list will evaluate to a :class:"
@@ -1008,17 +1008,17 @@ msgid ""
 "expression list will evaluate to the value of the list's sole member."
 msgstr ""
 
-#: reference/expressions.rst:905
+#: reference/expressions.rst:909
 msgid "Expressions in an expression list may be starred. See :pep:`646`."
 msgstr ""
 
-#: reference/expressions.rst:908
+#: reference/expressions.rst:912
 msgid ""
 "For built-in objects, there are two types of objects that support "
 "subscription via :meth:`~object.__getitem__`:"
 msgstr ""
 
-#: reference/expressions.rst:911
+#: reference/expressions.rst:915
 msgid ""
 "Mappings. If the primary is a :term:`mapping`, the expression list must "
 "evaluate to an object whose value is one of the keys of the mapping, and the "
@@ -1026,7 +1026,7 @@ msgid ""
 "An example of a builtin mapping class is the :class:`dict` class."
 msgstr ""
 
-#: reference/expressions.rst:915
+#: reference/expressions.rst:919
 msgid ""
 "Sequences. If the primary is a :term:`sequence`, the expression list must "
 "evaluate to an :class:`int` or a :class:`slice` (as discussed in the "
@@ -1034,7 +1034,7 @@ msgid ""
 "`str`, :class:`list` and :class:`tuple` classes."
 msgstr ""
 
-#: reference/expressions.rst:920
+#: reference/expressions.rst:924
 msgid ""
 "The formal syntax makes no special provision for negative indices in :term:"
 "`sequences <sequence>`. However, built-in sequences all provide a :meth:"
@@ -1048,25 +1048,25 @@ msgid ""
 "explicitly add that support."
 msgstr ""
 
-#: reference/expressions.rst:934
+#: reference/expressions.rst:938
 msgid ""
 "A :class:`string <str>` is a special kind of sequence whose items are "
 "*characters*. A character is not a separate data type but a string of "
 "exactly one character."
 msgstr ""
 
-#: reference/expressions.rst:942
+#: reference/expressions.rst:946
 msgid "Slicings"
 msgstr ""
 
-#: reference/expressions.rst:956
+#: reference/expressions.rst:960
 msgid ""
 "A slicing selects a range of items in a sequence object (e.g., a string, "
 "tuple or list).  Slicings may be used as expressions or as targets in "
 "assignment or :keyword:`del` statements.  The syntax for a slicing:"
 msgstr ""
 
-#: reference/expressions.rst:969
+#: reference/expressions.rst:973
 msgid ""
 "There is ambiguity in the formal syntax here: anything that looks like an "
 "expression list also looks like a slice list, so any subscription can be "
@@ -1076,7 +1076,7 @@ msgid ""
 "the case if the slice list contains no proper slice)."
 msgstr ""
 
-#: reference/expressions.rst:981
+#: reference/expressions.rst:985
 msgid ""
 "The semantics for a slicing are as follows.  The primary is indexed (using "
 "the same :meth:`~object.__getitem__` method as normal subscription) with a "
@@ -1091,23 +1091,23 @@ msgid ""
 "missing expressions."
 msgstr ""
 
-#: reference/expressions.rst:1005
+#: reference/expressions.rst:1009
 msgid "Calls"
 msgstr ""
 
-#: reference/expressions.rst:1007
+#: reference/expressions.rst:1011
 msgid ""
 "A call calls a callable object (e.g., a :term:`function`) with a possibly "
 "empty series of :term:`arguments <argument>`:"
 msgstr ""
 
-#: reference/expressions.rst:1024
+#: reference/expressions.rst:1028
 msgid ""
 "An optional trailing comma may be present after the positional and keyword "
 "arguments but does not affect the semantics."
 msgstr ""
 
-#: reference/expressions.rst:1030
+#: reference/expressions.rst:1034
 msgid ""
 "The primary must evaluate to a callable object (user-defined functions, "
 "built-in functions, methods of built-in objects, class objects, methods of "
@@ -1117,7 +1117,7 @@ msgid ""
 "formal :term:`parameter` lists."
 msgstr ""
 
-#: reference/expressions.rst:1038
+#: reference/expressions.rst:1042
 msgid ""
 "If keyword arguments are present, they are first converted to positional "
 "arguments, as follows.  First, a list of unfilled slots is created for the "
@@ -1138,7 +1138,7 @@ msgid ""
 "filled slots is used as the argument list for the call."
 msgstr ""
 
-#: reference/expressions.rst:1058
+#: reference/expressions.rst:1062
 msgid ""
 "An implementation may provide built-in functions whose positional parameters "
 "do not have names, even if they are 'named' for the purpose of "
@@ -1147,7 +1147,7 @@ msgid ""
 "`PyArg_ParseTuple` to parse their arguments."
 msgstr ""
 
-#: reference/expressions.rst:1064
+#: reference/expressions.rst:1068
 msgid ""
 "If there are more positional arguments than there are formal parameter "
 "slots, a :exc:`TypeError` exception is raised, unless a formal parameter "
@@ -1156,7 +1156,7 @@ msgid ""
 "empty tuple if there were no excess positional arguments)."
 msgstr ""
 
-#: reference/expressions.rst:1070
+#: reference/expressions.rst:1074
 msgid ""
 "If any keyword argument does not correspond to a formal parameter name, a :"
 "exc:`TypeError` exception is raised, unless a formal parameter using the "
@@ -1166,7 +1166,7 @@ msgid ""
 "(new) empty dictionary if there were no excess keyword arguments."
 msgstr ""
 
-#: reference/expressions.rst:1081
+#: reference/expressions.rst:1085
 msgid ""
 "If the syntax ``*expression`` appears in the function call, ``expression`` "
 "must evaluate to an :term:`iterable`.  Elements from these iterables are "
@@ -1176,14 +1176,14 @@ msgid ""
 "*y1*, ..., *yM*, *x3*, *x4*."
 msgstr ""
 
-#: reference/expressions.rst:1088
+#: reference/expressions.rst:1092
 msgid ""
 "A consequence of this is that although the ``*expression`` syntax may appear "
 "*after* explicit keyword arguments, it is processed *before* the keyword "
 "arguments (and any ``**expression`` arguments -- see below).  So::"
 msgstr ""
 
-#: reference/expressions.rst:1092
+#: reference/expressions.rst:1096
 msgid ""
 ">>> def f(a, b):\n"
 "...     print(a, b)\n"
@@ -1198,13 +1198,13 @@ msgid ""
 "1 2"
 msgstr ""
 
-#: reference/expressions.rst:1104
+#: reference/expressions.rst:1108
 msgid ""
 "It is unusual for both keyword arguments and the ``*expression`` syntax to "
 "be used in the same call, so in practice this confusion does not often arise."
 msgstr ""
 
-#: reference/expressions.rst:1110
+#: reference/expressions.rst:1114
 msgid ""
 "If the syntax ``**expression`` appears in the function call, ``expression`` "
 "must evaluate to a :term:`mapping`, the contents of which are treated as "
@@ -1213,7 +1213,7 @@ msgid ""
 "a :exc:`TypeError` exception is raised."
 msgstr ""
 
-#: reference/expressions.rst:1116
+#: reference/expressions.rst:1120
 msgid ""
 "When ``**expression`` is used, each key in this mapping must be a string. "
 "Each value from the mapping is assigned to the first formal parameter "
@@ -1225,110 +1225,112 @@ msgid ""
 "is raised."
 msgstr ""
 
-#: reference/expressions.rst:1126
+#: reference/expressions.rst:1130
 msgid ""
 "Formal parameters using the syntax ``*identifier`` or ``**identifier`` "
 "cannot be used as positional argument slots or as keyword argument names."
 msgstr ""
 
-#: reference/expressions.rst:1129
+#: reference/expressions.rst:1133
 msgid ""
 "Function calls accept any number of ``*`` and ``**`` unpackings, positional "
 "arguments may follow iterable unpackings (``*``), and keyword arguments may "
 "follow dictionary unpackings (``**``). Originally proposed by :pep:`448`."
 msgstr ""
 
-#: reference/expressions.rst:1135
+#: reference/expressions.rst:1139
 msgid ""
 "A call always returns some value, possibly ``None``, unless it raises an "
 "exception.  How this value is computed depends on the type of the callable "
 "object."
 msgstr ""
 
-#: reference/expressions.rst:1139
+#: reference/expressions.rst:1143
 msgid "If it is---"
 msgstr ""
 
-#: reference/expressions.rst:1141
+#: reference/expressions.rst:1145
 msgid "a user-defined function:"
 msgstr ""
 
-#: reference/expressions.rst:1148
+#: reference/expressions.rst:1152
 msgid ""
 "The code block for the function is executed, passing it the argument list.  "
 "The first thing the code block will do is bind the formal parameters to the "
 "arguments; this is described in section :ref:`function`.  When the code "
 "block executes a :keyword:`return` statement, this specifies the return "
-"value of the function call."
+"value of the function call.  If execution reaches the end of the code block "
+"without executing a :keyword:`return` statement, the return value is "
+"``None``."
 msgstr ""
 
-#: reference/expressions.rst:1154
+#: reference/expressions.rst:1159
 msgid "a built-in function or method:"
 msgstr ""
 
-#: reference/expressions.rst:1165
+#: reference/expressions.rst:1170
 msgid ""
 "The result is up to the interpreter; see :ref:`built-in-funcs` for the "
 "descriptions of built-in functions and methods."
 msgstr ""
 
-#: reference/expressions.rst:1168
+#: reference/expressions.rst:1173
 msgid "a class object:"
 msgstr ""
 
-#: reference/expressions.rst:1173
+#: reference/expressions.rst:1178
 msgid "A new instance of that class is returned."
 msgstr ""
 
-#: reference/expressions.rst:1175
+#: reference/expressions.rst:1180
 msgid "a class instance method:"
 msgstr ""
 
-#: reference/expressions.rst:1181
+#: reference/expressions.rst:1186
 msgid ""
 "The corresponding user-defined function is called, with an argument list "
 "that is one longer than the argument list of the call: the instance becomes "
 "the first argument."
 msgstr ""
 
-#: reference/expressions.rst:1185
+#: reference/expressions.rst:1190
 msgid "a class instance:"
 msgstr ""
 
-#: reference/expressions.rst:1190
+#: reference/expressions.rst:1195
 msgid ""
 "The class must define a :meth:`~object.__call__` method; the effect is then "
 "the same as if that method was called."
 msgstr ""
 
-#: reference/expressions.rst:1996
+#: reference/expressions.rst:2001
 msgid "Await expression"
 msgstr ""
 
-#: reference/expressions.rst:1200
+#: reference/expressions.rst:1205
 msgid ""
 "Suspend the execution of :term:`coroutine` on an :term:`awaitable` object. "
 "Can only be used inside a :term:`coroutine function`."
 msgstr ""
 
-#: reference/expressions.rst:1212
+#: reference/expressions.rst:1217
 msgid "The power operator"
 msgstr ""
 
-#: reference/expressions.rst:1218
+#: reference/expressions.rst:1223
 msgid ""
 "The power operator binds more tightly than unary operators on its left; it "
 "binds less tightly than unary operators on its right.  The syntax is:"
 msgstr ""
 
-#: reference/expressions.rst:1224
+#: reference/expressions.rst:1229
 msgid ""
 "Thus, in an unparenthesized sequence of power and unary operators, the "
 "operators are evaluated from right to left (this does not constrain the "
 "evaluation order for the operands): ``-1**2`` results in ``-1``."
 msgstr ""
 
-#: reference/expressions.rst:1228
+#: reference/expressions.rst:1233
 msgid ""
 "The power operator has the same semantics as the built-in :func:`pow` "
 "function, when called with two arguments: it yields its left argument raised "
@@ -1336,7 +1338,7 @@ msgid ""
 "converted to a common type, and the result is of that type."
 msgstr ""
 
-#: reference/expressions.rst:1233
+#: reference/expressions.rst:1238
 msgid ""
 "For int operands, the result has the same type as the operands unless the "
 "second argument is negative; in that case, all arguments are converted to "
@@ -1344,41 +1346,41 @@ msgid ""
 "``100``, but ``10**-2`` returns ``0.01``."
 msgstr ""
 
-#: reference/expressions.rst:1238
+#: reference/expressions.rst:1243
 msgid ""
 "Raising ``0.0`` to a negative power results in a :exc:`ZeroDivisionError`. "
 "Raising a negative number to a fractional power results in a :class:"
 "`complex` number. (In earlier versions it raised a :exc:`ValueError`.)"
 msgstr ""
 
-#: reference/expressions.rst:1242
+#: reference/expressions.rst:1247
 msgid ""
 "This operation can be customized using the special :meth:`~object.__pow__` "
 "and :meth:`~object.__rpow__` methods."
 msgstr ""
 
-#: reference/expressions.rst:1248
+#: reference/expressions.rst:1253
 msgid "Unary arithmetic and bitwise operations"
 msgstr ""
 
-#: reference/expressions.rst:1254
+#: reference/expressions.rst:1259
 msgid "All unary arithmetic and bitwise operations have the same priority:"
 msgstr ""
 
-#: reference/expressions.rst:1265
+#: reference/expressions.rst:1270
 msgid ""
 "The unary ``-`` (minus) operator yields the negation of its numeric "
 "argument; the operation can be overridden with the :meth:`~object.__neg__` "
 "special method."
 msgstr ""
 
-#: reference/expressions.rst:1273
+#: reference/expressions.rst:1278
 msgid ""
 "The unary ``+`` (plus) operator yields its numeric argument unchanged; the "
 "operation can be overridden with the :meth:`~object.__pos__` special method."
 msgstr ""
 
-#: reference/expressions.rst:1280
+#: reference/expressions.rst:1285
 msgid ""
 "The unary ``~`` (invert) operator yields the bitwise inversion of its "
 "integer argument.  The bitwise inversion of ``x`` is defined as ``-(x+1)``.  "
@@ -1386,17 +1388,17 @@ msgid ""
 "meth:`~object.__invert__` special method."
 msgstr ""
 
-#: reference/expressions.rst:1289
+#: reference/expressions.rst:1294
 msgid ""
 "In all three cases, if the argument does not have the proper type, a :exc:"
 "`TypeError` exception is raised."
 msgstr ""
 
-#: reference/expressions.rst:1296
+#: reference/expressions.rst:1301
 msgid "Binary arithmetic operations"
 msgstr ""
 
-#: reference/expressions.rst:1300
+#: reference/expressions.rst:1305
 msgid ""
 "The binary arithmetic operations have the conventional priority levels.  "
 "Note that some of these operations also apply to certain non-numeric types.  "
@@ -1404,7 +1406,7 @@ msgid ""
 "multiplicative operators and one for additive operators:"
 msgstr ""
 
-#: reference/expressions.rst:1315
+#: reference/expressions.rst:1320
 msgid ""
 "The ``*`` (multiplication) operator yields the product of its arguments.  "
 "The arguments must either both be numbers, or one argument must be an "
@@ -1414,25 +1416,25 @@ msgid ""
 "an empty sequence."
 msgstr ""
 
-#: reference/expressions.rst:1321
+#: reference/expressions.rst:1326
 msgid ""
 "This operation can be customized using the special :meth:`~object.__mul__` "
 "and :meth:`~object.__rmul__` methods."
 msgstr ""
 
-#: reference/expressions.rst:1328
+#: reference/expressions.rst:1333
 msgid ""
 "The ``@`` (at) operator is intended to be used for matrix multiplication.  "
 "No builtin Python types implement this operator."
 msgstr ""
 
-#: reference/expressions.rst:1331
+#: reference/expressions.rst:1336
 msgid ""
 "This operation can be customized using the special :meth:`~object."
 "__matmul__` and :meth:`~object.__rmatmul__` methods."
 msgstr ""
 
-#: reference/expressions.rst:1342
+#: reference/expressions.rst:1347
 msgid ""
 "The ``/`` (division) and ``//`` (floor division) operators yield the "
 "quotient of their arguments.  The numeric arguments are first converted to a "
@@ -1442,7 +1444,7 @@ msgid ""
 "the :exc:`ZeroDivisionError` exception."
 msgstr ""
 
-#: reference/expressions.rst:1349
+#: reference/expressions.rst:1354
 msgid ""
 "The division operation can be customized using the special :meth:`~object."
 "__truediv__` and :meth:`~object.__rtruediv__` methods. The floor division "
@@ -1450,7 +1452,7 @@ msgid ""
 "and :meth:`~object.__rfloordiv__` methods."
 msgstr ""
 
-#: reference/expressions.rst:1358
+#: reference/expressions.rst:1363
 msgid ""
 "The ``%`` (modulo) operator yields the remainder from the division of the "
 "first argument by the second.  The numeric arguments are first converted to "
@@ -1462,7 +1464,7 @@ msgid ""
 "absolute value of the second operand [#]_."
 msgstr ""
 
-#: reference/expressions.rst:1367
+#: reference/expressions.rst:1372
 msgid ""
 "The floor division and modulo operators are connected by the following "
 "identity: ``x == (x//y)*y + (x%y)``.  Floor division and modulo are also "
@@ -1470,7 +1472,7 @@ msgid ""
 "y, x%y)``. [#]_."
 msgstr ""
 
-#: reference/expressions.rst:1372
+#: reference/expressions.rst:1377
 msgid ""
 "In addition to performing the modulo operation on numbers, the ``%`` "
 "operator is also overloaded by string objects to perform old-style string "
@@ -1479,20 +1481,20 @@ msgid ""
 "formatting`."
 msgstr ""
 
-#: reference/expressions.rst:1377
+#: reference/expressions.rst:1382
 msgid ""
 "The *modulo* operation can be customized using the special :meth:`~object."
 "__mod__` and :meth:`~object.__rmod__` methods."
 msgstr ""
 
-#: reference/expressions.rst:1380
+#: reference/expressions.rst:1385
 msgid ""
 "The floor division operator, the modulo operator, and the :func:`divmod` "
 "function are not defined for complex numbers.  Instead, convert to a "
 "floating-point number using the :func:`abs` function if appropriate."
 msgstr ""
 
-#: reference/expressions.rst:1389
+#: reference/expressions.rst:1394
 msgid ""
 "The ``+`` (addition) operator yields the sum of its arguments.  The "
 "arguments must either both be numbers or both be sequences of the same "
@@ -1500,40 +1502,40 @@ msgid ""
 "then added together. In the latter case, the sequences are concatenated."
 msgstr ""
 
-#: reference/expressions.rst:1394
+#: reference/expressions.rst:1399
 msgid ""
 "This operation can be customized using the special :meth:`~object.__add__` "
 "and :meth:`~object.__radd__` methods."
 msgstr ""
 
-#: reference/expressions.rst:1402
+#: reference/expressions.rst:1407
 msgid ""
 "The ``-`` (subtraction) operator yields the difference of its arguments.  "
 "The numeric arguments are first converted to a common type."
 msgstr ""
 
-#: reference/expressions.rst:1405
+#: reference/expressions.rst:1410
 msgid ""
 "This operation can be customized using the special :meth:`~object.__sub__` "
 "and :meth:`~object.__rsub__` methods."
 msgstr ""
 
-#: reference/expressions.rst:1412
+#: reference/expressions.rst:1417
 msgid "Shifting operations"
 msgstr ""
 
-#: reference/expressions.rst:1419
+#: reference/expressions.rst:1424
 msgid ""
 "The shifting operations have lower priority than the arithmetic operations:"
 msgstr ""
 
-#: reference/expressions.rst:1424
+#: reference/expressions.rst:1429
 msgid ""
 "These operators accept integers as arguments.  They shift the first argument "
 "to the left or right by the number of bits given by the second argument."
 msgstr ""
 
-#: reference/expressions.rst:1427
+#: reference/expressions.rst:1432
 msgid ""
 "The left shift operation can be customized using the special :meth:`~object."
 "__lshift__` and :meth:`~object.__rlshift__` methods. The right shift "
@@ -1541,46 +1543,46 @@ msgid ""
 "and :meth:`~object.__rrshift__` methods."
 msgstr ""
 
-#: reference/expressions.rst:1434
+#: reference/expressions.rst:1439
 msgid ""
 "A right shift by *n* bits is defined as floor division by ``pow(2,n)``.  A "
 "left shift by *n* bits is defined as multiplication with ``pow(2,n)``."
 msgstr ""
 
-#: reference/expressions.rst:1441
+#: reference/expressions.rst:1446
 msgid "Binary bitwise operations"
 msgstr ""
 
-#: reference/expressions.rst:1445
+#: reference/expressions.rst:1450
 msgid "Each of the three bitwise operations has a different priority level:"
 msgstr ""
 
-#: reference/expressions.rst:1456
+#: reference/expressions.rst:1461
 msgid ""
 "The ``&`` operator yields the bitwise AND of its arguments, which must be "
 "integers or one of them must be a custom object overriding :meth:`~object."
 "__and__` or :meth:`~object.__rand__` special methods."
 msgstr ""
 
-#: reference/expressions.rst:1465
+#: reference/expressions.rst:1470
 msgid ""
 "The ``^`` operator yields the bitwise XOR (exclusive OR) of its arguments, "
 "which must be integers or one of them must be a custom object overriding :"
 "meth:`~object.__xor__` or :meth:`~object.__rxor__` special methods."
 msgstr ""
 
-#: reference/expressions.rst:1474
+#: reference/expressions.rst:1479
 msgid ""
 "The ``|`` operator yields the bitwise (inclusive) OR of its arguments, which "
 "must be integers or one of them must be a custom object overriding :meth:"
 "`~object.__or__` or :meth:`~object.__ror__` special methods."
 msgstr ""
 
-#: reference/expressions.rst:1482
+#: reference/expressions.rst:1487
 msgid "Comparisons"
 msgstr ""
 
-#: reference/expressions.rst:1494
+#: reference/expressions.rst:1499
 msgid ""
 "Unlike C, all comparison operations in Python have the same priority, which "
 "is lower than that of any arithmetic, shifting or bitwise operation.  Also "
@@ -1588,14 +1590,14 @@ msgid ""
 "conventional in mathematics:"
 msgstr ""
 
-#: reference/expressions.rst:1504
+#: reference/expressions.rst:1509
 msgid ""
 "Comparisons yield boolean values: ``True`` or ``False``. Custom :dfn:`rich "
 "comparison methods` may return non-boolean values. In this case Python will "
 "call :func:`bool` on such value in boolean contexts."
 msgstr ""
 
-#: reference/expressions.rst:1510
+#: reference/expressions.rst:1515
 msgid ""
 "Comparisons can be chained arbitrarily, e.g., ``x < y <= z`` is equivalent "
 "to ``x < y and y <= z``, except that ``y`` is evaluated only once (but in "
@@ -1603,7 +1605,7 @@ msgid ""
 "false)."
 msgstr ""
 
-#: reference/expressions.rst:1514
+#: reference/expressions.rst:1519
 msgid ""
 "Formally, if *a*, *b*, *c*, ..., *y*, *z* are expressions and *op1*, "
 "*op2*, ..., *opN* are comparison operators, then ``a op1 b op2 c ... y opN "
@@ -1611,24 +1613,24 @@ msgid ""
 "each expression is evaluated at most once."
 msgstr ""
 
-#: reference/expressions.rst:1519
+#: reference/expressions.rst:1524
 msgid ""
 "Note that ``a op1 b op2 c`` doesn't imply any kind of comparison between *a* "
 "and *c*, so that, e.g., ``x < y > z`` is perfectly legal (though perhaps not "
 "pretty)."
 msgstr ""
 
-#: reference/expressions.rst:1526
+#: reference/expressions.rst:1531
 msgid "Value comparisons"
 msgstr ""
 
-#: reference/expressions.rst:1528
+#: reference/expressions.rst:1533
 msgid ""
 "The operators ``<``, ``>``, ``==``, ``>=``, ``<=``, and ``!=`` compare the "
 "values of two objects.  The objects do not need to have the same type."
 msgstr ""
 
-#: reference/expressions.rst:1531
+#: reference/expressions.rst:1536
 msgid ""
 "Chapter :ref:`objects` states that objects have a value (in addition to type "
 "and identity).  The value of an object is a rather abstract notion in "
@@ -1640,7 +1642,7 @@ msgid ""
 "indirectly, by means of their comparison implementation."
 msgstr ""
 
-#: reference/expressions.rst:1540
+#: reference/expressions.rst:1545
 msgid ""
 "Because all types are (direct or indirect) subtypes of :class:`object`, they "
 "inherit the default comparison behavior from :class:`object`.  Types can "
@@ -1648,7 +1650,7 @@ msgid ""
 "methods` like :meth:`~object.__lt__`, described in :ref:`customization`."
 msgstr ""
 
-#: reference/expressions.rst:1546
+#: reference/expressions.rst:1551
 msgid ""
 "The default behavior for equality comparison (``==`` and ``!=``) is based on "
 "the identity of the objects.  Hence, equality comparison of instances with "
@@ -1658,14 +1660,14 @@ msgid ""
 "``x is y`` implies ``x == y``)."
 msgstr ""
 
-#: reference/expressions.rst:1553
+#: reference/expressions.rst:1558
 msgid ""
 "A default order comparison (``<``, ``>``, ``<=``, and ``>=``) is not "
 "provided; an attempt raises :exc:`TypeError`.  A motivation for this default "
 "behavior is the lack of a similar invariant as for equality."
 msgstr ""
 
-#: reference/expressions.rst:1557
+#: reference/expressions.rst:1562
 msgid ""
 "The behavior of the default equality comparison, that instances with "
 "different identities are always unequal, may be in contrast to what types "
@@ -1674,13 +1676,13 @@ msgid ""
 "in fact, a number of built-in types have done that."
 msgstr ""
 
-#: reference/expressions.rst:1563
+#: reference/expressions.rst:1568
 msgid ""
 "The following list describes the comparison behavior of the most important "
 "built-in types."
 msgstr ""
 
-#: reference/expressions.rst:1566
+#: reference/expressions.rst:1571
 msgid ""
 "Numbers of built-in numeric types (:ref:`typesnumeric`) and of the standard "
 "library types :class:`fractions.Fraction` and :class:`decimal.Decimal` can "
@@ -1690,7 +1692,7 @@ msgid ""
 "of precision."
 msgstr ""
 
-#: reference/expressions.rst:1573
+#: reference/expressions.rst:1578
 msgid ""
 "The not-a-number values ``float('NaN')`` and ``decimal.Decimal('NaN')`` are "
 "special.  Any ordered comparison of a number to a not-a-number value is "
@@ -1700,32 +1702,32 @@ msgid ""
 "is compliant with IEEE 754."
 msgstr ""
 
-#: reference/expressions.rst:1580
+#: reference/expressions.rst:1585
 msgid ""
 "``None`` and :data:`NotImplemented` are singletons.  :PEP:`8` advises that "
 "comparisons for singletons should always be done with ``is`` or ``is not``, "
 "never the equality operators."
 msgstr ""
 
-#: reference/expressions.rst:1584
+#: reference/expressions.rst:1589
 msgid ""
 "Binary sequences (instances of :class:`bytes` or :class:`bytearray`) can be "
 "compared within and across their types.  They compare lexicographically "
 "using the numeric values of their elements."
 msgstr ""
 
-#: reference/expressions.rst:1588
+#: reference/expressions.rst:1593
 msgid ""
 "Strings (instances of :class:`str`) compare lexicographically using the "
 "numerical Unicode code points (the result of the built-in function :func:"
 "`ord`) of their characters. [#]_"
 msgstr ""
 
-#: reference/expressions.rst:1592
+#: reference/expressions.rst:1597
 msgid "Strings and binary sequences cannot be directly compared."
 msgstr ""
 
-#: reference/expressions.rst:1594
+#: reference/expressions.rst:1599
 msgid ""
 "Sequences (instances of :class:`tuple`, :class:`list`, or :class:`range`) "
 "can be compared only within each of their types, with the restriction that "
@@ -1734,7 +1736,7 @@ msgid ""
 "raises :exc:`TypeError`."
 msgstr ""
 
-#: reference/expressions.rst:1600
+#: reference/expressions.rst:1605
 msgid ""
 "Sequences compare lexicographically using comparison of corresponding "
 "elements.  The built-in containers typically assume identical objects are "
@@ -1742,19 +1744,19 @@ msgid ""
 "objects to improve performance and to maintain their internal invariants."
 msgstr ""
 
-#: reference/expressions.rst:1605
+#: reference/expressions.rst:1610
 msgid ""
 "Lexicographical comparison between built-in collections works as follows:"
 msgstr ""
 
-#: reference/expressions.rst:1607
+#: reference/expressions.rst:1612
 msgid ""
 "For two collections to compare equal, they must be of the same type, have "
 "the same length, and each pair of corresponding elements must compare equal "
 "(for example, ``[1,2] == (1,2)`` is false because the type is not the same)."
 msgstr ""
 
-#: reference/expressions.rst:1612
+#: reference/expressions.rst:1617
 msgid ""
 "Collections that support order comparison are ordered the same as their "
 "first unequal elements (for example, ``[1,2,x] <= [1,2,y]`` has the same "
@@ -1763,25 +1765,25 @@ msgid ""
 "true)."
 msgstr ""
 
-#: reference/expressions.rst:1618
+#: reference/expressions.rst:1623
 msgid ""
 "Mappings (instances of :class:`dict`) compare equal if and only if they have "
 "equal ``(key, value)`` pairs. Equality comparison of the keys and values "
 "enforces reflexivity."
 msgstr ""
 
-#: reference/expressions.rst:1622
+#: reference/expressions.rst:1627
 msgid ""
 "Order comparisons (``<``, ``>``, ``<=``, and ``>=``) raise :exc:`TypeError`."
 msgstr ""
 
-#: reference/expressions.rst:1624
+#: reference/expressions.rst:1629
 msgid ""
 "Sets (instances of :class:`set` or :class:`frozenset`) can be compared "
 "within and across their types."
 msgstr ""
 
-#: reference/expressions.rst:1627
+#: reference/expressions.rst:1632
 msgid ""
 "They define order comparison operators to mean subset and superset tests.  "
 "Those relations do not define total orderings (for example, the two sets "
@@ -1792,110 +1794,110 @@ msgid ""
 "sets as inputs)."
 msgstr ""
 
-#: reference/expressions.rst:1635
+#: reference/expressions.rst:1640
 msgid "Comparison of sets enforces reflexivity of its elements."
 msgstr ""
 
-#: reference/expressions.rst:1637
+#: reference/expressions.rst:1642
 msgid ""
 "Most other built-in types have no comparison methods implemented, so they "
 "inherit the default comparison behavior."
 msgstr ""
 
-#: reference/expressions.rst:1640
+#: reference/expressions.rst:1645
 msgid ""
 "User-defined classes that customize their comparison behavior should follow "
 "some consistency rules, if possible:"
 msgstr ""
 
-#: reference/expressions.rst:1643
+#: reference/expressions.rst:1648
 msgid ""
 "Equality comparison should be reflexive. In other words, identical objects "
 "should compare equal:"
 msgstr ""
 
-#: reference/expressions.rst:1646
+#: reference/expressions.rst:1651
 msgid "``x is y`` implies ``x == y``"
 msgstr ""
 
-#: reference/expressions.rst:1648
+#: reference/expressions.rst:1653
 msgid ""
 "Comparison should be symmetric. In other words, the following expressions "
 "should have the same result:"
 msgstr ""
 
-#: reference/expressions.rst:1651
+#: reference/expressions.rst:1656
 msgid "``x == y`` and ``y == x``"
 msgstr ""
 
-#: reference/expressions.rst:1653
+#: reference/expressions.rst:1658
 msgid "``x != y`` and ``y != x``"
 msgstr ""
 
-#: reference/expressions.rst:1655
+#: reference/expressions.rst:1660
 msgid "``x < y`` and ``y > x``"
 msgstr ""
 
-#: reference/expressions.rst:1657
+#: reference/expressions.rst:1662
 msgid "``x <= y`` and ``y >= x``"
 msgstr ""
 
-#: reference/expressions.rst:1659
+#: reference/expressions.rst:1664
 msgid ""
 "Comparison should be transitive. The following (non-exhaustive) examples "
 "illustrate that:"
 msgstr ""
 
-#: reference/expressions.rst:1662
+#: reference/expressions.rst:1667
 msgid "``x > y and y > z`` implies ``x > z``"
 msgstr ""
 
-#: reference/expressions.rst:1664
+#: reference/expressions.rst:1669
 msgid "``x < y and y <= z`` implies ``x < z``"
 msgstr ""
 
-#: reference/expressions.rst:1666
+#: reference/expressions.rst:1671
 msgid ""
 "Inverse comparison should result in the boolean negation. In other words, "
 "the following expressions should have the same result:"
 msgstr ""
 
-#: reference/expressions.rst:1669
+#: reference/expressions.rst:1674
 msgid "``x == y`` and ``not x != y``"
 msgstr ""
 
-#: reference/expressions.rst:1671
+#: reference/expressions.rst:1676
 msgid "``x < y`` and ``not x >= y`` (for total ordering)"
 msgstr ""
 
-#: reference/expressions.rst:1673
+#: reference/expressions.rst:1678
 msgid "``x > y`` and ``not x <= y`` (for total ordering)"
 msgstr ""
 
-#: reference/expressions.rst:1675
+#: reference/expressions.rst:1680
 msgid ""
 "The last two expressions apply to totally ordered collections (e.g. to "
 "sequences, but not to sets or mappings). See also the :func:`~functools."
 "total_ordering` decorator."
 msgstr ""
 
-#: reference/expressions.rst:1679
+#: reference/expressions.rst:1684
 msgid ""
 "The :func:`hash` result should be consistent with equality. Objects that are "
 "equal should either have the same hash value, or be marked as unhashable."
 msgstr ""
 
-#: reference/expressions.rst:1683
+#: reference/expressions.rst:1688
 msgid ""
 "Python does not enforce these consistency rules. In fact, the not-a-number "
 "values are an example for not following these rules."
 msgstr ""
 
-#: reference/expressions.rst:1692
+#: reference/expressions.rst:1697
 msgid "Membership test operations"
 msgstr ""
 
-#: reference/expressions.rst:1694
+#: reference/expressions.rst:1699
 msgid ""
 "The operators :keyword:`in` and :keyword:`not in` test for membership.  ``x "
 "in s`` evaluates to ``True`` if *x* is a member of *s*, and ``False`` "
@@ -1906,7 +1908,7 @@ msgid ""
 "expression ``x in y`` is equivalent to ``any(x is e or x == e for e in y)``."
 msgstr ""
 
-#: reference/expressions.rst:1702
+#: reference/expressions.rst:1707
 msgid ""
 "For the string and bytes types, ``x in y`` is ``True`` if and only if *x* is "
 "a substring of *y*.  An equivalent test is ``y.find(x) != -1``.  Empty "
@@ -1914,14 +1916,14 @@ msgid ""
 "``\"\" in \"abc\"`` will return ``True``."
 msgstr ""
 
-#: reference/expressions.rst:1707
+#: reference/expressions.rst:1712
 msgid ""
 "For user-defined classes which define the :meth:`~object.__contains__` "
 "method, ``x in y`` returns ``True`` if ``y.__contains__(x)`` returns a true "
 "value, and ``False`` otherwise."
 msgstr ""
 
-#: reference/expressions.rst:1711
+#: reference/expressions.rst:1716
 msgid ""
 "For user-defined classes which do not define :meth:`~object.__contains__` "
 "but do define :meth:`~object.__iter__`, ``x in y`` is ``True`` if some value "
@@ -1930,7 +1932,7 @@ msgid ""
 "it is as if :keyword:`in` raised that exception."
 msgstr ""
 
-#: reference/expressions.rst:1717
+#: reference/expressions.rst:1722
 msgid ""
 "Lastly, the old-style iteration protocol is tried: if a class defines :meth:"
 "`~object.__getitem__`, ``x in y`` is ``True`` if and only if there is a non-"
@@ -1939,17 +1941,17 @@ msgid ""
 "exception is raised, it is as if :keyword:`in` raised that exception)."
 msgstr ""
 
-#: reference/expressions.rst:1729
+#: reference/expressions.rst:1734
 msgid ""
 "The operator :keyword:`not in` is defined to have the inverse truth value "
 "of :keyword:`in`."
 msgstr ""
 
-#: reference/expressions.rst:1742
+#: reference/expressions.rst:1747
 msgid "Identity comparisons"
 msgstr ""
 
-#: reference/expressions.rst:1744
+#: reference/expressions.rst:1749
 msgid ""
 "The operators :keyword:`is` and :keyword:`is not` test for an object's "
 "identity: ``x is y`` is true if and only if *x* and *y* are the same "
@@ -1957,11 +1959,11 @@ msgid ""
 "``x is not y`` yields the inverse truth value. [#]_"
 msgstr ""
 
-#: reference/expressions.rst:1756
+#: reference/expressions.rst:1761
 msgid "Boolean operations"
 msgstr ""
 
-#: reference/expressions.rst:1767
+#: reference/expressions.rst:1772
 msgid ""
 "In the context of Boolean operations, and also when expressions are used by "
 "control flow statements, the following values are interpreted as false: "
@@ -1972,25 +1974,25 @@ msgid ""
 "__bool__` method."
 msgstr ""
 
-#: reference/expressions.rst:1776
+#: reference/expressions.rst:1781
 msgid ""
 "The operator :keyword:`not` yields ``True`` if its argument is false, "
 "``False`` otherwise."
 msgstr ""
 
-#: reference/expressions.rst:1781
+#: reference/expressions.rst:1786
 msgid ""
 "The expression ``x and y`` first evaluates *x*; if *x* is false, its value "
 "is returned; otherwise, *y* is evaluated and the resulting value is returned."
 msgstr ""
 
-#: reference/expressions.rst:1786
+#: reference/expressions.rst:1791
 msgid ""
 "The expression ``x or y`` first evaluates *x*; if *x* is true, its value is "
 "returned; otherwise, *y* is evaluated and the resulting value is returned."
 msgstr ""
 
-#: reference/expressions.rst:1789
+#: reference/expressions.rst:1794
 msgid ""
 "Note that neither :keyword:`and` nor :keyword:`or` restrict the value and "
 "type they return to ``False`` and ``True``, but rather return the last "
@@ -2001,11 +2003,11 @@ msgid ""
 "argument (for example, ``not 'foo'`` produces ``False`` rather than ``''``.)"
 msgstr ""
 
-#: reference/expressions.rst:1805
+#: reference/expressions.rst:1810
 msgid "Assignment expressions"
 msgstr ""
 
-#: reference/expressions.rst:1810
+#: reference/expressions.rst:1815
 msgid ""
 "An assignment expression (sometimes also called a \"named expression\" or "
 "\"walrus\") assigns an :token:`~python-grammar:expression` to an :token:"
@@ -2013,27 +2015,27 @@ msgid ""
 "`~python-grammar:expression`."
 msgstr ""
 
-#: reference/expressions.rst:1815
+#: reference/expressions.rst:1820
 msgid "One common use case is when handling matched regular expressions:"
 msgstr ""
 
-#: reference/expressions.rst:1817
+#: reference/expressions.rst:1822
 msgid ""
 "if matching := pattern.search(data):\n"
 "    do_something(matching)"
 msgstr ""
 
-#: reference/expressions.rst:1822
+#: reference/expressions.rst:1827
 msgid "Or, when processing a file stream in chunks:"
 msgstr ""
 
-#: reference/expressions.rst:1824
+#: reference/expressions.rst:1829
 msgid ""
 "while chunk := file.read(9000):\n"
 "    process(chunk)"
 msgstr ""
 
-#: reference/expressions.rst:1829
+#: reference/expressions.rst:1834
 msgid ""
 "Assignment expressions must be surrounded by parentheses when used as "
 "expression statements and when used as sub-expressions in slicing, "
@@ -2043,36 +2045,36 @@ msgid ""
 "and ``while`` statements."
 msgstr ""
 
-#: reference/expressions.rst:1837
+#: reference/expressions.rst:1842
 msgid "See :pep:`572` for more details about assignment expressions."
 msgstr ""
 
-#: reference/expressions.rst:1844
+#: reference/expressions.rst:1849
 msgid "Conditional expressions"
 msgstr ""
 
-#: reference/expressions.rst:1856
+#: reference/expressions.rst:1861
 msgid ""
 "Conditional expressions (sometimes called a \"ternary operator\") have the "
 "lowest priority of all Python operations."
 msgstr ""
 
-#: reference/expressions.rst:1859
+#: reference/expressions.rst:1864
 msgid ""
 "The expression ``x if C else y`` first evaluates the condition, *C* rather "
 "than *x*. If *C* is true, *x* is evaluated and its value is returned; "
 "otherwise, *y* is evaluated and its value is returned."
 msgstr ""
 
-#: reference/expressions.rst:1863
+#: reference/expressions.rst:1868
 msgid "See :pep:`308` for more details about conditional expressions."
 msgstr ""
 
-#: reference/expressions.rst:1870
+#: reference/expressions.rst:1875
 msgid "Lambdas"
 msgstr ""
 
-#: reference/expressions.rst:1881
+#: reference/expressions.rst:1886
 msgid ""
 "Lambda expressions (sometimes called lambda forms) are used to create "
 "anonymous functions. The expression ``lambda parameters: expression`` yields "
@@ -2080,31 +2082,31 @@ msgid ""
 "defined with:"
 msgstr ""
 
-#: reference/expressions.rst:1885
+#: reference/expressions.rst:1890
 msgid ""
 "def <lambda>(parameters):\n"
 "    return expression"
 msgstr ""
 
-#: reference/expressions.rst:1890
+#: reference/expressions.rst:1895
 msgid ""
 "See section :ref:`function` for the syntax of parameter lists.  Note that "
 "functions created with lambda expressions cannot contain statements or "
 "annotations."
 msgstr ""
 
-#: reference/expressions.rst:1898
+#: reference/expressions.rst:1903
 msgid "Expression lists"
 msgstr ""
 
-#: reference/expressions.rst:1914
+#: reference/expressions.rst:1919
 msgid ""
 "Except when part of a list or set display, an expression list containing at "
 "least one comma yields a tuple.  The length of the tuple is the number of "
 "expressions in the list.  The expressions are evaluated from left to right."
 msgstr ""
 
-#: reference/expressions.rst:1923
+#: reference/expressions.rst:1928
 msgid ""
 "An asterisk ``*`` denotes :dfn:`iterable unpacking`.  Its operand must be "
 "an :term:`iterable`.  The iterable is expanded into a sequence of items, "
@@ -2112,16 +2114,16 @@ msgid ""
 "unpacking."
 msgstr ""
 
-#: reference/expressions.rst:1928
+#: reference/expressions.rst:1933
 msgid ""
 "Iterable unpacking in expression lists, originally proposed by :pep:`448`."
 msgstr ""
 
-#: reference/expressions.rst:1931
+#: reference/expressions.rst:1936
 msgid "Any item in an expression list may be starred. See :pep:`646`."
 msgstr ""
 
-#: reference/expressions.rst:1936
+#: reference/expressions.rst:1941
 msgid ""
 "A trailing comma is required only to create a one-item tuple, such as ``1,"
 "``; it is optional in all other cases. A single expression without a "
@@ -2130,24 +2132,24 @@ msgid ""
 "``()``.)"
 msgstr ""
 
-#: reference/expressions.rst:1947
+#: reference/expressions.rst:1952
 msgid "Evaluation order"
 msgstr ""
 
-#: reference/expressions.rst:1951
+#: reference/expressions.rst:1956
 msgid ""
 "Python evaluates expressions from left to right.  Notice that while "
 "evaluating an assignment, the right-hand side is evaluated before the left-"
 "hand side."
 msgstr ""
 
-#: reference/expressions.rst:1954
+#: reference/expressions.rst:1959
 msgid ""
 "In the following lines, expressions will be evaluated in the arithmetic "
 "order of their suffixes::"
 msgstr ""
 
-#: reference/expressions.rst:1957
+#: reference/expressions.rst:1962
 msgid ""
 "expr1, expr2, expr3, expr4\n"
 "(expr1, expr2, expr3, expr4)\n"
@@ -2157,11 +2159,11 @@ msgid ""
 "expr3, expr4 = expr1, expr2"
 msgstr ""
 
-#: reference/expressions.rst:1968
+#: reference/expressions.rst:1973
 msgid "Operator precedence"
 msgstr ""
 
-#: reference/expressions.rst:1973
+#: reference/expressions.rst:1978
 msgid ""
 "The following table summarizes the operator precedence in Python, from "
 "highest precedence (most binding) to lowest precedence (least binding).  "
@@ -2171,176 +2173,176 @@ msgid ""
 "group from right to left)."
 msgstr ""
 
-#: reference/expressions.rst:1979
+#: reference/expressions.rst:1984
 msgid ""
 "Note that comparisons, membership tests, and identity tests, all have the "
 "same precedence and have a left-to-right chaining feature as described in "
 "the :ref:`comparisons` section."
 msgstr ""
 
-#: reference/expressions.rst:1985
+#: reference/expressions.rst:1990
 msgid "Operator"
 msgstr ""
 
-#: reference/expressions.rst:1985
+#: reference/expressions.rst:1990
 msgid "Description"
 msgstr ""
 
-#: reference/expressions.rst:1987
+#: reference/expressions.rst:1992
 msgid "``(expressions...)``,"
 msgstr ""
 
-#: reference/expressions.rst:1989
+#: reference/expressions.rst:1994
 msgid "``[expressions...]``, ``{key: value...}``, ``{expressions...}``"
 msgstr ""
 
-#: reference/expressions.rst:1987
+#: reference/expressions.rst:1992
 msgid ""
 "Binding or parenthesized expression, list display, dictionary display, set "
 "display"
 msgstr ""
 
-#: reference/expressions.rst:1993
+#: reference/expressions.rst:1998
 msgid "``x[index]``, ``x[index:index]``, ``x(arguments...)``, ``x.attribute``"
 msgstr ""
 
-#: reference/expressions.rst:1993
+#: reference/expressions.rst:1998
 msgid "Subscription, slicing, call, attribute reference"
 msgstr ""
 
-#: reference/expressions.rst:1996
+#: reference/expressions.rst:2001
 msgid ":keyword:`await x <await>`"
 msgstr ""
 
-#: reference/expressions.rst:1998
+#: reference/expressions.rst:2003
 msgid "``**``"
 msgstr ""
 
-#: reference/expressions.rst:1998
+#: reference/expressions.rst:2003
 msgid "Exponentiation [#]_"
 msgstr ""
 
-#: reference/expressions.rst:2000
+#: reference/expressions.rst:2005
 msgid "``+x``, ``-x``, ``~x``"
 msgstr ""
 
-#: reference/expressions.rst:2000
+#: reference/expressions.rst:2005
 msgid "Positive, negative, bitwise NOT"
 msgstr ""
 
-#: reference/expressions.rst:2002
+#: reference/expressions.rst:2007
 msgid "``*``, ``@``, ``/``, ``//``, ``%``"
 msgstr ""
 
-#: reference/expressions.rst:2002
+#: reference/expressions.rst:2007
 msgid ""
 "Multiplication, matrix multiplication, division, floor division, remainder "
 "[#]_"
 msgstr ""
 
-#: reference/expressions.rst:2006
+#: reference/expressions.rst:2011
 msgid "``+``, ``-``"
 msgstr ""
 
-#: reference/expressions.rst:2006
+#: reference/expressions.rst:2011
 msgid "Addition and subtraction"
 msgstr ""
 
-#: reference/expressions.rst:2008
+#: reference/expressions.rst:2013
 msgid "``<<``, ``>>``"
 msgstr ""
 
-#: reference/expressions.rst:2008
+#: reference/expressions.rst:2013
 msgid "Shifts"
 msgstr ""
 
-#: reference/expressions.rst:2010
+#: reference/expressions.rst:2015
 msgid "``&``"
 msgstr ""
 
-#: reference/expressions.rst:2010
+#: reference/expressions.rst:2015
 msgid "Bitwise AND"
 msgstr ""
 
-#: reference/expressions.rst:2012
+#: reference/expressions.rst:2017
 msgid "``^``"
 msgstr ""
 
-#: reference/expressions.rst:2012
+#: reference/expressions.rst:2017
 msgid "Bitwise XOR"
 msgstr ""
 
-#: reference/expressions.rst:2014
+#: reference/expressions.rst:2019
 msgid "``|``"
 msgstr ""
 
-#: reference/expressions.rst:2014
+#: reference/expressions.rst:2019
 msgid "Bitwise OR"
 msgstr ""
 
-#: reference/expressions.rst:2016
+#: reference/expressions.rst:2021
 msgid ""
 ":keyword:`in`, :keyword:`not in`, :keyword:`is`, :keyword:`is not`, ``<``, "
 "``<=``, ``>``, ``>=``, ``!=``, ``==``"
 msgstr ""
 
-#: reference/expressions.rst:2016
+#: reference/expressions.rst:2021
 msgid "Comparisons, including membership tests and identity tests"
 msgstr ""
 
-#: reference/expressions.rst:2020
+#: reference/expressions.rst:2025
 msgid ":keyword:`not x <not>`"
 msgstr ""
 
-#: reference/expressions.rst:2020
+#: reference/expressions.rst:2025
 msgid "Boolean NOT"
 msgstr ""
 
-#: reference/expressions.rst:2022
+#: reference/expressions.rst:2027
 msgid ":keyword:`and`"
 msgstr ""
 
-#: reference/expressions.rst:2022
+#: reference/expressions.rst:2027
 msgid "Boolean AND"
 msgstr ""
 
-#: reference/expressions.rst:2024
+#: reference/expressions.rst:2029
 msgid ":keyword:`or`"
 msgstr ""
 
-#: reference/expressions.rst:2024
+#: reference/expressions.rst:2029
 msgid "Boolean OR"
 msgstr ""
 
-#: reference/expressions.rst:2026
+#: reference/expressions.rst:2031
 msgid ":keyword:`if <if_expr>` -- :keyword:`!else`"
 msgstr ""
 
-#: reference/expressions.rst:2026
+#: reference/expressions.rst:2031
 msgid "Conditional expression"
 msgstr ""
 
-#: reference/expressions.rst:2028
+#: reference/expressions.rst:2033
 msgid ":keyword:`lambda`"
 msgstr ""
 
-#: reference/expressions.rst:2028
+#: reference/expressions.rst:2033
 msgid "Lambda expression"
 msgstr ""
 
-#: reference/expressions.rst:2030
+#: reference/expressions.rst:2035
 msgid "``:=``"
 msgstr ""
 
-#: reference/expressions.rst:2030
+#: reference/expressions.rst:2035
 msgid "Assignment expression"
 msgstr ""
 
-#: reference/expressions.rst:2035
+#: reference/expressions.rst:2040
 msgid "Footnotes"
 msgstr ""
 
-#: reference/expressions.rst:2036
+#: reference/expressions.rst:2041
 msgid ""
 "While ``abs(x%y) < abs(y)`` is true mathematically, for floats it may not be "
 "true numerically due to roundoff.  For example, and assuming a platform on "
@@ -2352,7 +2354,7 @@ msgid ""
 "approach is more appropriate depends on the application."
 msgstr ""
 
-#: reference/expressions.rst:2045
+#: reference/expressions.rst:2050
 msgid ""
 "If x is very close to an exact integer multiple of y, it's possible for ``x//"
 "y`` to be one larger than ``(x-x%y)//y`` due to rounding.  In such cases, "
@@ -2360,7 +2362,7 @@ msgid ""
 "* y + x % y`` be very close to ``x``."
 msgstr ""
 
-#: reference/expressions.rst:2050
+#: reference/expressions.rst:2055
 msgid ""
 "The Unicode standard distinguishes between :dfn:`code points` (e.g. U+0041) "
 "and :dfn:`abstract characters` (e.g. \"LATIN CAPITAL LETTER A\"). While most "
@@ -2374,7 +2376,7 @@ msgid ""
 "(COMBINING CEDILLA)."
 msgstr ""
 
-#: reference/expressions.rst:2061
+#: reference/expressions.rst:2066
 msgid ""
 "The comparison operators on strings compare at the level of Unicode code "
 "points. This may be counter-intuitive to humans.  For example, ``\"\\u00C7\" "
@@ -2382,13 +2384,13 @@ msgid ""
 "same abstract character \"LATIN CAPITAL LETTER C WITH CEDILLA\"."
 msgstr ""
 
-#: reference/expressions.rst:2066
+#: reference/expressions.rst:2071
 msgid ""
 "To compare strings at the level of abstract characters (that is, in a way "
 "intuitive to humans), use :func:`unicodedata.normalize`."
 msgstr ""
 
-#: reference/expressions.rst:2069
+#: reference/expressions.rst:2074
 msgid ""
 "Due to automatic garbage-collection, free lists, and the dynamic nature of "
 "descriptors, you may notice seemingly unusual behaviour in certain uses of "
@@ -2396,20 +2398,20 @@ msgid ""
 "instance methods, or constants.  Check their documentation for more info."
 msgstr ""
 
-#: reference/expressions.rst:2074
+#: reference/expressions.rst:2079
 msgid ""
 "The power operator ``**`` binds less tightly than an arithmetic or bitwise "
 "unary operator on its right, that is, ``2**-1`` is ``0.5``."
 msgstr ""
 
-#: reference/expressions.rst:2077
+#: reference/expressions.rst:2082
 msgid ""
 "The ``%`` operator is also used for string formatting; the same precedence "
 "applies."
 msgstr ""
 
-#: reference/expressions.rst:393 reference/expressions.rst:1758
-#: reference/expressions.rst:1872 reference/expressions.rst:1900
+#: reference/expressions.rst:393 reference/expressions.rst:1763
+#: reference/expressions.rst:1877 reference/expressions.rst:1905
 msgid "expression"
 msgstr ""
 
@@ -2417,7 +2419,7 @@ msgstr ""
 msgid "BNF"
 msgstr ""
 
-#: reference/expressions.rst:1250 reference/expressions.rst:1298
+#: reference/expressions.rst:1255 reference/expressions.rst:1303
 msgid "arithmetic"
 msgstr ""
 
@@ -2438,8 +2440,8 @@ msgid "identifier"
 msgstr ""
 
 #: reference/expressions.rst:569 reference/expressions.rst:746
-#: reference/expressions.rst:844 reference/expressions.rst:1336
-#: reference/expressions.rst:1432
+#: reference/expressions.rst:848 reference/expressions.rst:1341
+#: reference/expressions.rst:1437
 msgid "exception"
 msgstr ""
 
@@ -2477,9 +2479,9 @@ msgstr ""
 
 #: reference/expressions.rst:275 reference/expressions.rst:329
 #: reference/expressions.rst:393 reference/expressions.rst:736
-#: reference/expressions.rst:873 reference/expressions.rst:994
-#: reference/expressions.rst:1155 reference/expressions.rst:1176
-#: reference/expressions.rst:1912
+#: reference/expressions.rst:877 reference/expressions.rst:998
+#: reference/expressions.rst:1160 reference/expressions.rst:1181
+#: reference/expressions.rst:1917
 msgid "object"
 msgstr ""
 
@@ -2487,7 +2489,7 @@ msgstr ""
 msgid "parenthesized form"
 msgstr ""
 
-#: reference/expressions.rst:393 reference/expressions.rst:994
+#: reference/expressions.rst:393 reference/expressions.rst:998
 msgid "() (parentheses)"
 msgstr ""
 
@@ -2499,16 +2501,16 @@ msgstr ""
 msgid "empty"
 msgstr ""
 
-#: reference/expressions.rst:873 reference/expressions.rst:1912
+#: reference/expressions.rst:877 reference/expressions.rst:1917
 msgid "tuple"
 msgstr ""
 
-#: reference/expressions.rst:1934
+#: reference/expressions.rst:1939
 msgid "comma"
 msgstr ""
 
 #: reference/expressions.rst:275 reference/expressions.rst:329
-#: reference/expressions.rst:994 reference/expressions.rst:1900
+#: reference/expressions.rst:998 reference/expressions.rst:1905
 msgid ", (comma)"
 msgstr ""
 
@@ -2524,7 +2526,7 @@ msgstr ""
 msgid "in comprehensions"
 msgstr ""
 
-#: reference/expressions.rst:1846
+#: reference/expressions.rst:1851
 msgid "if"
 msgstr ""
 
@@ -2532,12 +2534,12 @@ msgstr ""
 msgid "async for"
 msgstr ""
 
-#: reference/expressions.rst:1194
+#: reference/expressions.rst:1199
 msgid "await"
 msgstr ""
 
-#: reference/expressions.rst:844 reference/expressions.rst:950
-#: reference/expressions.rst:1900
+#: reference/expressions.rst:848 reference/expressions.rst:954
+#: reference/expressions.rst:1905
 msgid "list"
 msgstr ""
 
@@ -2545,7 +2547,7 @@ msgstr ""
 msgid "display"
 msgstr ""
 
-#: reference/expressions.rst:869
+#: reference/expressions.rst:873
 msgid "[] (square brackets)"
 msgstr ""
 
@@ -2553,7 +2555,7 @@ msgstr ""
 msgid "list expression"
 msgstr ""
 
-#: reference/expressions.rst:301 reference/expressions.rst:1900
+#: reference/expressions.rst:301 reference/expressions.rst:1905
 msgid "expression list"
 msgstr ""
 
@@ -2569,7 +2571,7 @@ msgstr ""
 msgid "set expression"
 msgstr ""
 
-#: reference/expressions.rst:355 reference/expressions.rst:873
+#: reference/expressions.rst:355 reference/expressions.rst:877
 msgid "dictionary"
 msgstr ""
 
@@ -2589,7 +2591,7 @@ msgstr ""
 msgid "dictionary expression"
 msgstr ""
 
-#: reference/expressions.rst:944 reference/expressions.rst:1872
+#: reference/expressions.rst:948 reference/expressions.rst:1877
 msgid ": (colon)"
 msgstr ""
 
@@ -2601,11 +2603,11 @@ msgstr ""
 msgid "in dictionary displays"
 msgstr ""
 
-#: reference/expressions.rst:1077 reference/expressions.rst:1919
+#: reference/expressions.rst:1081 reference/expressions.rst:1924
 msgid "unpacking"
 msgstr ""
 
-#: reference/expressions.rst:1107 reference/expressions.rst:1214
+#: reference/expressions.rst:1111 reference/expressions.rst:1219
 msgid "**"
 msgstr ""
 
@@ -2621,7 +2623,7 @@ msgstr ""
 msgid "generator expression"
 msgstr ""
 
-#: reference/expressions.rst:1194
+#: reference/expressions.rst:1199
 msgid "keyword"
 msgstr ""
 
@@ -2633,7 +2635,7 @@ msgstr ""
 msgid "from"
 msgstr ""
 
-#: reference/expressions.rst:1142 reference/expressions.rst:1872
+#: reference/expressions.rst:1146 reference/expressions.rst:1877
 msgid "function"
 msgstr ""
 
@@ -2649,7 +2651,7 @@ msgstr ""
 msgid "StopIteration"
 msgstr ""
 
-#: reference/expressions.rst:798
+#: reference/expressions.rst:801
 msgid "GeneratorExit"
 msgstr ""
 
@@ -2665,470 +2667,470 @@ msgstr ""
 msgid "StopAsyncIteration"
 msgstr ""
 
-#: reference/expressions.rst:821
+#: reference/expressions.rst:825
 msgid "primary"
 msgstr ""
 
-#: reference/expressions.rst:835
+#: reference/expressions.rst:839
 msgid "attribute"
 msgstr ""
 
-#: reference/expressions.rst:835
+#: reference/expressions.rst:839
 msgid "reference"
 msgstr ""
 
-#: reference/expressions.rst:835
+#: reference/expressions.rst:839
 msgid ". (dot)"
 msgstr ""
 
-#: reference/expressions.rst:835
+#: reference/expressions.rst:839
 msgid "attribute reference"
 msgstr ""
 
-#: reference/expressions.rst:844
+#: reference/expressions.rst:848
 msgid "AttributeError"
 msgstr ""
 
-#: reference/expressions.rst:844
+#: reference/expressions.rst:848
 msgid "module"
 msgstr ""
 
-#: reference/expressions.rst:869
+#: reference/expressions.rst:873
 msgid "subscription"
 msgstr ""
 
-#: reference/expressions.rst:950 reference/expressions.rst:1723
+#: reference/expressions.rst:954 reference/expressions.rst:1728
 msgid "sequence"
 msgstr ""
 
-#: reference/expressions.rst:873
+#: reference/expressions.rst:877
 msgid "mapping"
 msgstr ""
 
-#: reference/expressions.rst:930 reference/expressions.rst:950
+#: reference/expressions.rst:934 reference/expressions.rst:954
 msgid "string"
 msgstr ""
 
-#: reference/expressions.rst:930
+#: reference/expressions.rst:934
 msgid "item"
 msgstr ""
 
-#: reference/expressions.rst:930
+#: reference/expressions.rst:934
 msgid "character"
 msgstr ""
 
-#: reference/expressions.rst:944
+#: reference/expressions.rst:948
 msgid "slicing"
 msgstr ""
 
-#: reference/expressions.rst:944
+#: reference/expressions.rst:948
 msgid "slice"
 msgstr ""
 
-#: reference/expressions.rst:976
+#: reference/expressions.rst:980
 msgid "start (slice object attribute)"
 msgstr ""
 
-#: reference/expressions.rst:976
+#: reference/expressions.rst:980
 msgid "stop (slice object attribute)"
 msgstr ""
 
-#: reference/expressions.rst:976
+#: reference/expressions.rst:980
 msgid "step (slice object attribute)"
 msgstr ""
 
-#: reference/expressions.rst:994
+#: reference/expressions.rst:998
 msgid "callable"
 msgstr ""
 
-#: reference/expressions.rst:1142 reference/expressions.rst:1169
-#: reference/expressions.rst:1186
+#: reference/expressions.rst:1146 reference/expressions.rst:1174
+#: reference/expressions.rst:1191
 msgid "call"
 msgstr ""
 
-#: reference/expressions.rst:994
+#: reference/expressions.rst:998
 msgid "argument"
 msgstr ""
 
-#: reference/expressions.rst:1027
+#: reference/expressions.rst:1031
 msgid "call semantics"
 msgstr ""
 
-#: reference/expressions.rst:994
+#: reference/expressions.rst:998
 msgid "argument list"
 msgstr ""
 
-#: reference/expressions.rst:994
+#: reference/expressions.rst:998
 msgid "= (equals)"
 msgstr ""
 
-#: reference/expressions.rst:1077 reference/expressions.rst:1107
+#: reference/expressions.rst:1081 reference/expressions.rst:1111
 msgid "in function calls"
 msgstr ""
 
-#: reference/expressions.rst:1027
+#: reference/expressions.rst:1031
 msgid "parameter"
 msgstr ""
 
-#: reference/expressions.rst:1311 reference/expressions.rst:1919
+#: reference/expressions.rst:1316 reference/expressions.rst:1924
 msgid "* (asterisk)"
 msgstr ""
 
-#: reference/expressions.rst:1142
+#: reference/expressions.rst:1146
 msgid "user-defined"
 msgstr ""
 
-#: reference/expressions.rst:1142
+#: reference/expressions.rst:1146
 msgid "user-defined function"
 msgstr ""
 
-#: reference/expressions.rst:1155
+#: reference/expressions.rst:1160
 msgid "built-in function"
 msgstr ""
 
-#: reference/expressions.rst:1155
+#: reference/expressions.rst:1160
 msgid "method"
 msgstr ""
 
-#: reference/expressions.rst:1155
+#: reference/expressions.rst:1160
 msgid "built-in method"
 msgstr ""
 
-#: reference/expressions.rst:1169
+#: reference/expressions.rst:1174
 msgid "class"
 msgstr ""
 
-#: reference/expressions.rst:1169
+#: reference/expressions.rst:1174
 msgid "class object"
 msgstr ""
 
-#: reference/expressions.rst:1176
+#: reference/expressions.rst:1181
 msgid "class instance"
 msgstr ""
 
-#: reference/expressions.rst:1186
+#: reference/expressions.rst:1191
 msgid "instance"
 msgstr ""
 
-#: reference/expressions.rst:1186
+#: reference/expressions.rst:1191
 msgid "__call__() (object method)"
 msgstr ""
 
-#: reference/expressions.rst:1214
+#: reference/expressions.rst:1219
 msgid "power"
 msgstr ""
 
-#: reference/expressions.rst:1250 reference/expressions.rst:1414
-#: reference/expressions.rst:1758
+#: reference/expressions.rst:1255 reference/expressions.rst:1419
+#: reference/expressions.rst:1763
 msgid "operation"
 msgstr ""
 
-#: reference/expressions.rst:1259 reference/expressions.rst:1276
-#: reference/expressions.rst:1324 reference/expressions.rst:1354
-#: reference/expressions.rst:1397 reference/expressions.rst:1452
-#: reference/expressions.rst:1469 reference/expressions.rst:1723
-#: reference/expressions.rst:1774 reference/expressions.rst:1784
-#: reference/expressions.rst:1970
+#: reference/expressions.rst:1264 reference/expressions.rst:1281
+#: reference/expressions.rst:1329 reference/expressions.rst:1359
+#: reference/expressions.rst:1402 reference/expressions.rst:1457
+#: reference/expressions.rst:1474 reference/expressions.rst:1728
+#: reference/expressions.rst:1779 reference/expressions.rst:1789
+#: reference/expressions.rst:1975
 msgid "operator"
 msgstr ""
 
-#: reference/expressions.rst:1250
+#: reference/expressions.rst:1255
 msgid "unary"
 msgstr ""
 
-#: reference/expressions.rst:1443 reference/expressions.rst:1460
-#: reference/expressions.rst:1469
+#: reference/expressions.rst:1448 reference/expressions.rst:1465
+#: reference/expressions.rst:1474
 msgid "bitwise"
 msgstr ""
 
-#: reference/expressions.rst:1259
+#: reference/expressions.rst:1264
 msgid "negation"
 msgstr ""
 
-#: reference/expressions.rst:1259
+#: reference/expressions.rst:1264
 msgid "minus"
 msgstr ""
 
-#: reference/expressions.rst:1397
+#: reference/expressions.rst:1402
 msgid "- (minus)"
 msgstr ""
 
-#: reference/expressions.rst:1268
+#: reference/expressions.rst:1273
 msgid "unary operator"
 msgstr ""
 
-#: reference/expressions.rst:1268
+#: reference/expressions.rst:1273
 msgid "plus"
 msgstr ""
 
-#: reference/expressions.rst:1384
+#: reference/expressions.rst:1389
 msgid "+ (plus)"
 msgstr ""
 
-#: reference/expressions.rst:1276
+#: reference/expressions.rst:1281
 msgid "inversion"
 msgstr ""
 
-#: reference/expressions.rst:1276
+#: reference/expressions.rst:1281
 msgid "~ (tilde)"
 msgstr ""
 
-#: reference/expressions.rst:1287
+#: reference/expressions.rst:1292
 msgid "TypeError"
 msgstr ""
 
-#: reference/expressions.rst:1443
+#: reference/expressions.rst:1448
 msgid "binary"
 msgstr ""
 
-#: reference/expressions.rst:1311
+#: reference/expressions.rst:1316
 msgid "multiplication"
 msgstr ""
 
-#: reference/expressions.rst:1324
+#: reference/expressions.rst:1329
 msgid "matrix multiplication"
 msgstr ""
 
-#: reference/expressions.rst:1324
+#: reference/expressions.rst:1329
 msgid "@ (at)"
 msgstr ""
 
-#: reference/expressions.rst:1336
+#: reference/expressions.rst:1341
 msgid "ZeroDivisionError"
 msgstr ""
 
-#: reference/expressions.rst:1336
+#: reference/expressions.rst:1341
 msgid "division"
 msgstr ""
 
-#: reference/expressions.rst:1336
+#: reference/expressions.rst:1341
 msgid "/ (slash)"
 msgstr ""
 
-#: reference/expressions.rst:1336
+#: reference/expressions.rst:1341
 msgid "//"
 msgstr ""
 
-#: reference/expressions.rst:1354
+#: reference/expressions.rst:1359
 msgid "modulo"
 msgstr ""
 
-#: reference/expressions.rst:1354
+#: reference/expressions.rst:1359
 msgid "% (percent)"
 msgstr ""
 
-#: reference/expressions.rst:1384
+#: reference/expressions.rst:1389
 msgid "addition"
 msgstr ""
 
-#: reference/expressions.rst:1397
+#: reference/expressions.rst:1402
 msgid "binary operator"
 msgstr ""
 
-#: reference/expressions.rst:1397
+#: reference/expressions.rst:1402
 msgid "subtraction"
 msgstr ""
 
-#: reference/expressions.rst:1414
+#: reference/expressions.rst:1419
 msgid "shifting"
 msgstr ""
 
-#: reference/expressions.rst:1414
+#: reference/expressions.rst:1419
 msgid "<<"
 msgstr ""
 
-#: reference/expressions.rst:1414
+#: reference/expressions.rst:1419
 msgid ">>"
 msgstr ""
 
-#: reference/expressions.rst:1432
+#: reference/expressions.rst:1437
 msgid "ValueError"
 msgstr ""
 
-#: reference/expressions.rst:1779
+#: reference/expressions.rst:1784
 msgid "and"
 msgstr ""
 
-#: reference/expressions.rst:1452
+#: reference/expressions.rst:1457
 msgid "& (ampersand)"
 msgstr ""
 
-#: reference/expressions.rst:1460
+#: reference/expressions.rst:1465
 msgid "xor"
 msgstr ""
 
-#: reference/expressions.rst:1460
+#: reference/expressions.rst:1465
 msgid "exclusive"
 msgstr ""
 
-#: reference/expressions.rst:1469 reference/expressions.rst:1784
+#: reference/expressions.rst:1474 reference/expressions.rst:1789
 msgid "or"
 msgstr ""
 
-#: reference/expressions.rst:1460
+#: reference/expressions.rst:1465
 msgid "^ (caret)"
 msgstr ""
 
-#: reference/expressions.rst:1469
+#: reference/expressions.rst:1474
 msgid "inclusive"
 msgstr ""
 
-#: reference/expressions.rst:1469
+#: reference/expressions.rst:1474
 msgid "| (vertical bar)"
 msgstr ""
 
-#: reference/expressions.rst:1484
+#: reference/expressions.rst:1489
 msgid "comparison"
 msgstr ""
 
-#: reference/expressions.rst:1484
+#: reference/expressions.rst:1489
 msgid "C"
 msgstr ""
 
-#: reference/expressions.rst:1484
+#: reference/expressions.rst:1489
 msgid "language"
 msgstr ""
 
-#: reference/expressions.rst:1484
+#: reference/expressions.rst:1489
 msgid "< (less)"
 msgstr ""
 
-#: reference/expressions.rst:1484
+#: reference/expressions.rst:1489
 msgid "> (greater)"
 msgstr ""
 
-#: reference/expressions.rst:1484
+#: reference/expressions.rst:1489
 msgid "<="
 msgstr ""
 
-#: reference/expressions.rst:1484
+#: reference/expressions.rst:1489
 msgid ">="
 msgstr ""
 
-#: reference/expressions.rst:1484
+#: reference/expressions.rst:1489
 msgid "=="
 msgstr ""
 
-#: reference/expressions.rst:1484
+#: reference/expressions.rst:1489
 msgid "!="
 msgstr ""
 
-#: reference/expressions.rst:1508
+#: reference/expressions.rst:1513
 msgid "chaining"
 msgstr ""
 
-#: reference/expressions.rst:1508
+#: reference/expressions.rst:1513
 msgid "comparisons"
 msgstr ""
 
-#: reference/expressions.rst:1723
+#: reference/expressions.rst:1728
 msgid "in"
 msgstr ""
 
-#: reference/expressions.rst:1723
+#: reference/expressions.rst:1728
 msgid "not in"
 msgstr ""
 
-#: reference/expressions.rst:1723
+#: reference/expressions.rst:1728
 msgid "membership"
 msgstr ""
 
-#: reference/expressions.rst:1732
+#: reference/expressions.rst:1737
 msgid "test"
 msgstr ""
 
-#: reference/expressions.rst:1732
+#: reference/expressions.rst:1737
 msgid "is"
 msgstr ""
 
-#: reference/expressions.rst:1732
+#: reference/expressions.rst:1737
 msgid "is not"
 msgstr ""
 
-#: reference/expressions.rst:1732
+#: reference/expressions.rst:1737
 msgid "identity"
 msgstr ""
 
-#: reference/expressions.rst:1758
+#: reference/expressions.rst:1763
 msgid "Conditional"
 msgstr ""
 
-#: reference/expressions.rst:1758
+#: reference/expressions.rst:1763
 msgid "Boolean"
 msgstr ""
 
-#: reference/expressions.rst:1774
+#: reference/expressions.rst:1779
 msgid "not"
 msgstr ""
 
-#: reference/expressions.rst:1798
+#: reference/expressions.rst:1803
 msgid ":= (colon equals)"
 msgstr ""
 
-#: reference/expressions.rst:1798
+#: reference/expressions.rst:1803
 msgid "assignment expression"
 msgstr ""
 
-#: reference/expressions.rst:1798
+#: reference/expressions.rst:1803
 msgid "walrus operator"
 msgstr ""
 
-#: reference/expressions.rst:1798
+#: reference/expressions.rst:1803
 msgid "named expression"
 msgstr ""
 
-#: reference/expressions.rst:1846
+#: reference/expressions.rst:1851
 msgid "conditional"
 msgstr ""
 
-#: reference/expressions.rst:1846
+#: reference/expressions.rst:1851
 msgid "ternary"
 msgstr ""
 
-#: reference/expressions.rst:1846
+#: reference/expressions.rst:1851
 msgid "conditional expression"
 msgstr ""
 
-#: reference/expressions.rst:1846
+#: reference/expressions.rst:1851
 msgid "else"
 msgstr ""
 
-#: reference/expressions.rst:1872
+#: reference/expressions.rst:1877
 msgid "lambda"
 msgstr ""
 
-#: reference/expressions.rst:1872
+#: reference/expressions.rst:1877
 msgid "form"
 msgstr ""
 
-#: reference/expressions.rst:1872
+#: reference/expressions.rst:1877
 msgid "anonymous"
 msgstr ""
 
-#: reference/expressions.rst:1872
+#: reference/expressions.rst:1877
 msgid "lambda expression"
 msgstr ""
 
-#: reference/expressions.rst:1919
+#: reference/expressions.rst:1924
 msgid "iterable"
 msgstr ""
 
-#: reference/expressions.rst:1919
+#: reference/expressions.rst:1924
 msgid "in expression lists"
 msgstr ""
 
-#: reference/expressions.rst:1934
+#: reference/expressions.rst:1939
 msgid "trailing"
 msgstr ""
 
-#: reference/expressions.rst:1949
+#: reference/expressions.rst:1954
 msgid "evaluation"
 msgstr ""
 
-#: reference/expressions.rst:1949
+#: reference/expressions.rst:1954
 msgid "order"
 msgstr ""
 
-#: reference/expressions.rst:1970
+#: reference/expressions.rst:1975
 msgid "precedence"
 msgstr ""
diff --git a/reference/grammar.po b/reference/grammar.po
index 7289b9105..f3612c11e 100644
--- a/reference/grammar.po
+++ b/reference/grammar.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -279,8 +279,8 @@ msgid ""
 "import_from[stmt_ty]:\n"
 "    | 'from' a=('.' | '...')* b=dotted_name 'import' c=import_from_targets "
 "{\n"
-"        _PyAST_ImportFrom(b->v.Name.id, c, _PyPegen_seq_count_dots(a), "
-"EXTRA) }\n"
+"        _PyPegen_checked_future_import(p, b->v.Name.id, c, "
+"_PyPegen_seq_count_dots(a), EXTRA) }\n"
 "    | 'from' a=('.' | '...')+ 'import' b=import_from_targets {\n"
 "        _PyAST_ImportFrom(NULL, b, _PyPegen_seq_count_dots(a), EXTRA) }\n"
 "import_from_targets[asdl_alias_seq*]:\n"
diff --git a/reference/import.po b/reference/import.po
index ed9c9f434..779bd7cd4 100644
--- a/reference/import.po
+++ b/reference/import.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -172,11 +172,11 @@ msgid ""
 "__init__.py`` respectively."
 msgstr ""
 
-#: reference/import.rst:127
+#: reference/import.rst:129
 msgid "Namespace packages"
 msgstr ""
 
-#: reference/import.rst:133
+#: reference/import.rst:135
 msgid ""
 "A namespace package is a composite of various :term:`portions <portion>`, "
 "where each portion contributes a subpackage to the parent package.  Portions "
@@ -187,7 +187,7 @@ msgid ""
 "concrete representation."
 msgstr ""
 
-#: reference/import.rst:141
+#: reference/import.rst:143
 msgid ""
 "Namespace packages do not use an ordinary list for their ``__path__`` "
 "attribute. They instead use a custom iterable type which will automatically "
@@ -196,7 +196,7 @@ msgid ""
 "top level package) changes."
 msgstr ""
 
-#: reference/import.rst:147
+#: reference/import.rst:149
 msgid ""
 "With namespace packages, there is no ``parent/__init__.py`` file.  In fact, "
 "there may be multiple ``parent`` directories found during import search, "
@@ -206,15 +206,15 @@ msgid ""
 "or one of its subpackages is imported."
 msgstr ""
 
-#: reference/import.rst:154
+#: reference/import.rst:156
 msgid "See also :pep:`420` for the namespace package specification."
 msgstr ""
 
-#: reference/import.rst:158
+#: reference/import.rst:160
 msgid "Searching"
 msgstr ""
 
-#: reference/import.rst:160
+#: reference/import.rst:162
 msgid ""
 "To begin the search, Python needs the :term:`fully qualified <qualified "
 "name>` name of the module (or package, but for the purposes of this "
@@ -224,7 +224,7 @@ msgid ""
 "functions."
 msgstr ""
 
-#: reference/import.rst:166
+#: reference/import.rst:168
 msgid ""
 "This name will be used in various phases of the import search, and it may be "
 "the dotted path to a submodule, e.g. ``foo.bar.baz``.  In this case, Python "
@@ -233,11 +233,11 @@ msgid ""
 "is raised."
 msgstr ""
 
-#: reference/import.rst:173
+#: reference/import.rst:175
 msgid "The module cache"
 msgstr ""
 
-#: reference/import.rst:178
+#: reference/import.rst:180
 msgid ""
 "The first place checked during import search is :data:`sys.modules`.  This "
 "mapping serves as a cache of all modules that have been previously imported, "
@@ -247,7 +247,7 @@ msgid ""
 "module object."
 msgstr ""
 
-#: reference/import.rst:185
+#: reference/import.rst:187
 msgid ""
 "During import, the module name is looked up in :data:`sys.modules` and if "
 "present, the associated value is the module satisfying the import, and the "
@@ -256,7 +256,7 @@ msgid ""
 "continue searching for the module."
 msgstr ""
 
-#: reference/import.rst:191
+#: reference/import.rst:193
 msgid ""
 ":data:`sys.modules` is writable.  Deleting a key may not destroy the "
 "associated module (as other modules may hold references to it), but it will "
@@ -266,7 +266,7 @@ msgid ""
 "`ModuleNotFoundError`."
 msgstr ""
 
-#: reference/import.rst:198
+#: reference/import.rst:200
 msgid ""
 "Beware though, as if you keep a reference to the module object, invalidate "
 "its cache entry in :data:`sys.modules`, and then re-import the named module, "
@@ -275,11 +275,11 @@ msgid ""
 "module contents by rerunning the module's code."
 msgstr ""
 
-#: reference/import.rst:208
+#: reference/import.rst:210
 msgid "Finders and loaders"
 msgstr ""
 
-#: reference/import.rst:215
+#: reference/import.rst:217
 msgid ""
 "If the named module is not found in :data:`sys.modules`, then Python's "
 "import protocol is invoked to find and load the module.  This protocol "
@@ -291,7 +291,7 @@ msgid ""
 "module."
 msgstr ""
 
-#: reference/import.rst:223
+#: reference/import.rst:225
 msgid ""
 "Python includes a number of default finders and importers.  The first one "
 "knows how to locate built-in modules, and the second knows how to locate "
@@ -301,13 +301,13 @@ msgid ""
 "locatable resource, such as those identified by URLs."
 msgstr ""
 
-#: reference/import.rst:230
+#: reference/import.rst:232
 msgid ""
 "The import machinery is extensible, so new finders can be added to extend "
 "the range and scope of module searching."
 msgstr ""
 
-#: reference/import.rst:233
+#: reference/import.rst:235
 msgid ""
 "Finders do not actually load modules.  If they can find the named module, "
 "they return a :dfn:`module spec`, an encapsulation of the module's import-"
@@ -315,32 +315,32 @@ msgid ""
 "module."
 msgstr ""
 
-#: reference/import.rst:237
+#: reference/import.rst:239
 msgid ""
 "The following sections describe the protocol for finders and loaders in more "
 "detail, including how you can create and register new ones to extend the "
 "import machinery."
 msgstr ""
 
-#: reference/import.rst:241
+#: reference/import.rst:243
 msgid ""
 "In previous versions of Python, finders returned :term:`loaders <loader>` "
 "directly, whereas now they return module specs which *contain* loaders. "
 "Loaders are still used during import but have fewer responsibilities."
 msgstr ""
 
-#: reference/import.rst:247
+#: reference/import.rst:249
 msgid "Import hooks"
 msgstr ""
 
-#: reference/import.rst:257
+#: reference/import.rst:259
 msgid ""
 "The import machinery is designed to be extensible; the primary mechanism for "
 "this are the *import hooks*.  There are two types of import hooks: *meta "
 "hooks* and *import path hooks*."
 msgstr ""
 
-#: reference/import.rst:261
+#: reference/import.rst:263
 msgid ""
 "Meta hooks are called at the start of import processing, before any other "
 "import processing has occurred, other than :data:`sys.modules` cache look "
@@ -349,7 +349,7 @@ msgid ""
 "finder objects to :data:`sys.meta_path`, as described below."
 msgstr ""
 
-#: reference/import.rst:267
+#: reference/import.rst:269
 msgid ""
 "Import path hooks are called as part of :data:`sys.path` (or ``package."
 "__path__``) processing, at the point where their associated path item is "
@@ -357,11 +357,11 @@ msgid ""
 "data:`sys.path_hooks` as described below."
 msgstr ""
 
-#: reference/import.rst:274
+#: reference/import.rst:276
 msgid "The meta path"
 msgstr ""
 
-#: reference/import.rst:280
+#: reference/import.rst:282
 msgid ""
 "When the named module is not found in :data:`sys.modules`, Python next "
 "searches :data:`sys.meta_path`, which contains a list of meta path finder "
@@ -373,7 +373,7 @@ msgid ""
 "named module or not."
 msgstr ""
 
-#: reference/import.rst:289
+#: reference/import.rst:291
 msgid ""
 "If the meta path finder knows how to handle the named module, it returns a "
 "spec object.  If it cannot handle the named module, it returns ``None``.  "
@@ -382,7 +382,7 @@ msgid ""
 "exceptions raised are simply propagated up, aborting the import process."
 msgstr ""
 
-#: reference/import.rst:295
+#: reference/import.rst:297
 msgid ""
 "The :meth:`~importlib.abc.MetaPathFinder.find_spec` method of meta path "
 "finders is called with two or three arguments.  The first is the fully "
@@ -396,7 +396,7 @@ msgid ""
 "system passes in a target module only during reload."
 msgstr ""
 
-#: reference/import.rst:306
+#: reference/import.rst:308
 msgid ""
 "The meta path may be traversed multiple times for a single import request. "
 "For example, assuming none of the modules involved has already been cached, "
@@ -408,14 +408,14 @@ msgid ""
 "will call ``mpf.find_spec(\"foo.bar.baz\", foo.bar.__path__, None)``."
 msgstr ""
 
-#: reference/import.rst:316
+#: reference/import.rst:318
 msgid ""
 "Some meta path finders only support top level imports. These importers will "
 "always return ``None`` when anything other than ``None`` is passed as the "
 "second argument."
 msgstr ""
 
-#: reference/import.rst:320
+#: reference/import.rst:322
 msgid ""
 "Python's default :data:`sys.meta_path` has three meta path finders, one that "
 "knows how to import built-in modules, one that knows how to import frozen "
@@ -423,7 +423,7 @@ msgid ""
 "path` (i.e. the :term:`path based finder`)."
 msgstr ""
 
-#: reference/import.rst:325
+#: reference/import.rst:327
 msgid ""
 "The :meth:`~importlib.abc.MetaPathFinder.find_spec` method of meta path "
 "finders replaced :meth:`!find_module`, which is now deprecated.  While it "
@@ -432,30 +432,30 @@ msgid ""
 "find_spec`."
 msgstr ""
 
-#: reference/import.rst:332
+#: reference/import.rst:334
 msgid ""
 "Use of :meth:`!find_module` by the import system now raises :exc:"
 "`ImportWarning`."
 msgstr ""
 
-#: reference/import.rst:336
+#: reference/import.rst:338
 msgid ""
 ":meth:`!find_module` has been removed. Use :meth:`~importlib.abc."
 "MetaPathFinder.find_spec` instead."
 msgstr ""
 
-#: reference/import.rst:342
+#: reference/import.rst:344
 msgid "Loading"
 msgstr ""
 
-#: reference/import.rst:344
+#: reference/import.rst:346
 msgid ""
 "If and when a module spec is found, the import machinery will use it (and "
 "the loader it contains) when loading the module.  Here is an approximation "
 "of what happens during the loading portion of import::"
 msgstr ""
 
-#: reference/import.rst:348
+#: reference/import.rst:350
 msgid ""
 "module = None\n"
 "if spec.loader is not None and hasattr(spec.loader, 'create_module'):\n"
@@ -487,17 +487,17 @@ msgid ""
 "return sys.modules[spec.name]"
 msgstr ""
 
-#: reference/import.rst:377
+#: reference/import.rst:379
 msgid "Note the following details:"
 msgstr ""
 
-#: reference/import.rst:379
+#: reference/import.rst:381
 msgid ""
 "If there is an existing module object with the given name in :data:`sys."
 "modules`, import will have already returned it."
 msgstr ""
 
-#: reference/import.rst:382
+#: reference/import.rst:384
 msgid ""
 "The module will exist in :data:`sys.modules` before the loader executes the "
 "module code.  This is crucial because the module code may (directly or "
@@ -506,7 +506,7 @@ msgid ""
 "best."
 msgstr ""
 
-#: reference/import.rst:388
+#: reference/import.rst:390
 msgid ""
 "If loading fails, the failing module -- and only the failing module -- gets "
 "removed from :data:`sys.modules`.  Any module already in the :data:`sys."
@@ -515,7 +515,7 @@ msgid ""
 "the failing module is left in :data:`sys.modules`."
 msgstr ""
 
-#: reference/import.rst:394
+#: reference/import.rst:396
 msgid ""
 "After the module is created but before execution, the import machinery sets "
 "the import-related module attributes (\"_init_module_attrs\" in the pseudo-"
@@ -523,31 +523,31 @@ msgid ""
 "attrs>`."
 msgstr ""
 
-#: reference/import.rst:399
+#: reference/import.rst:401
 msgid ""
 "Module execution is the key moment of loading in which the module's "
 "namespace gets populated.  Execution is entirely delegated to the loader, "
 "which gets to decide what gets populated and how."
 msgstr ""
 
-#: reference/import.rst:403
+#: reference/import.rst:405
 msgid ""
 "The module created during loading and passed to exec_module() may not be the "
 "one returned at the end of import [#fnlo]_."
 msgstr ""
 
-#: reference/import.rst:406
+#: reference/import.rst:408
 msgid ""
 "The import system has taken over the boilerplate responsibilities of "
 "loaders.  These were previously performed by the :meth:`importlib.abc.Loader."
 "load_module` method."
 msgstr ""
 
-#: reference/import.rst:412
+#: reference/import.rst:414
 msgid "Loaders"
 msgstr ""
 
-#: reference/import.rst:414
+#: reference/import.rst:416
 msgid ""
 "Module loaders provide the critical function of loading: module execution. "
 "The import machinery calls the :meth:`importlib.abc.Loader.exec_module` "
@@ -555,32 +555,32 @@ msgid ""
 "returned from :meth:`~importlib.abc.Loader.exec_module` is ignored."
 msgstr ""
 
-#: reference/import.rst:419
+#: reference/import.rst:421
 msgid "Loaders must satisfy the following requirements:"
 msgstr ""
 
-#: reference/import.rst:421
+#: reference/import.rst:423
 msgid ""
 "If the module is a Python module (as opposed to a built-in module or a "
 "dynamically loaded extension), the loader should execute the module's code "
 "in the module's global name space (``module.__dict__``)."
 msgstr ""
 
-#: reference/import.rst:425
+#: reference/import.rst:427
 msgid ""
 "If the loader cannot execute the module, it should raise an :exc:"
 "`ImportError`, although any other exception raised during :meth:`~importlib."
 "abc.Loader.exec_module` will be propagated."
 msgstr ""
 
-#: reference/import.rst:429
+#: reference/import.rst:431
 msgid ""
 "In many cases, the finder and loader can be the same object; in such cases "
 "the :meth:`~importlib.abc.MetaPathFinder.find_spec` method would just return "
 "a spec with the loader set to ``self``."
 msgstr ""
 
-#: reference/import.rst:433
+#: reference/import.rst:435
 msgid ""
 "Module loaders may opt in to creating the module object during loading by "
 "implementing a :meth:`~importlib.abc.Loader.create_module` method. It takes "
@@ -590,18 +590,18 @@ msgid ""
 "will create the new module itself."
 msgstr ""
 
-#: reference/import.rst:440
+#: reference/import.rst:442
 msgid "The :meth:`~importlib.abc.Loader.create_module` method of loaders."
 msgstr ""
 
-#: reference/import.rst:443
+#: reference/import.rst:445
 msgid ""
 "The :meth:`~importlib.abc.Loader.load_module` method was replaced by :meth:"
 "`~importlib.abc.Loader.exec_module` and the import machinery assumed all the "
 "boilerplate responsibilities of loading."
 msgstr ""
 
-#: reference/import.rst:448
+#: reference/import.rst:450
 msgid ""
 "For compatibility with existing loaders, the import machinery will use the "
 "``load_module()`` method of loaders if it exists and the loader does not "
@@ -609,14 +609,14 @@ msgid ""
 "deprecated and loaders should implement ``exec_module()`` instead."
 msgstr ""
 
-#: reference/import.rst:453
+#: reference/import.rst:455
 msgid ""
 "The ``load_module()`` method must implement all the boilerplate loading "
 "functionality described above in addition to executing the module.  All the "
 "same constraints apply, with some additional clarification:"
 msgstr ""
 
-#: reference/import.rst:457
+#: reference/import.rst:459
 msgid ""
 "If there is an existing module object with the given name in :data:`sys."
 "modules`, the loader must use that existing module. (Otherwise, :func:"
@@ -625,40 +625,40 @@ msgid ""
 "add it to :data:`sys.modules`."
 msgstr ""
 
-#: reference/import.rst:463
+#: reference/import.rst:465
 msgid ""
 "The module *must* exist in :data:`sys.modules` before the loader executes "
 "the module code, to prevent unbounded recursion or multiple loading."
 msgstr ""
 
-#: reference/import.rst:467
+#: reference/import.rst:469
 msgid ""
 "If loading fails, the loader must remove any modules it has inserted into :"
 "data:`sys.modules`, but it must remove **only** the failing module(s), and "
 "only if the loader itself has loaded the module(s) explicitly."
 msgstr ""
 
-#: reference/import.rst:472
+#: reference/import.rst:474
 msgid ""
 "A :exc:`DeprecationWarning` is raised when ``exec_module()`` is defined but "
 "``create_module()`` is not."
 msgstr ""
 
-#: reference/import.rst:476
+#: reference/import.rst:478
 msgid ""
 "An :exc:`ImportError` is raised when ``exec_module()`` is defined but "
 "``create_module()`` is not."
 msgstr ""
 
-#: reference/import.rst:480
+#: reference/import.rst:482
 msgid "Use of ``load_module()`` will raise :exc:`ImportWarning`."
 msgstr ""
 
-#: reference/import.rst:484
+#: reference/import.rst:486
 msgid "Submodules"
 msgstr ""
 
-#: reference/import.rst:486
+#: reference/import.rst:488
 msgid ""
 "When a submodule is loaded using any mechanism (e.g. ``importlib`` APIs, the "
 "``import`` or ``import-from`` statements, or built-in ``__import__()``) a "
@@ -668,28 +668,28 @@ msgid ""
 "submodule.  Let's say you have the following directory structure::"
 msgstr ""
 
-#: reference/import.rst:493
+#: reference/import.rst:495
 msgid ""
 "spam/\n"
 "    __init__.py\n"
 "    foo.py"
 msgstr ""
 
-#: reference/import.rst:497
+#: reference/import.rst:499
 msgid "and ``spam/__init__.py`` has the following line in it::"
 msgstr ""
 
-#: reference/import.rst:499
+#: reference/import.rst:501
 msgid "from .foo import Foo"
 msgstr ""
 
-#: reference/import.rst:501
+#: reference/import.rst:503
 msgid ""
 "then executing the following puts name bindings for ``foo`` and ``Foo`` in "
 "the ``spam`` module::"
 msgstr ""
 
-#: reference/import.rst:504
+#: reference/import.rst:506
 msgid ""
 ">>> import spam\n"
 ">>> spam.foo\n"
@@ -698,7 +698,7 @@ msgid ""
 "<class 'spam.foo.Foo'>"
 msgstr ""
 
-#: reference/import.rst:510
+#: reference/import.rst:512
 msgid ""
 "Given Python's familiar name binding rules this might seem surprising, but "
 "it's actually a fundamental feature of the import system.  The invariant "
@@ -707,11 +707,11 @@ msgid ""
 "``foo`` attribute of the former."
 msgstr ""
 
-#: reference/import.rst:519
+#: reference/import.rst:521
 msgid "Module specs"
 msgstr ""
 
-#: reference/import.rst:521
+#: reference/import.rst:523
 msgid ""
 "The import machinery uses a variety of information about each module during "
 "import, especially before loading.  Most of the information is common to all "
@@ -719,7 +719,7 @@ msgid ""
 "related information on a per-module basis."
 msgstr ""
 
-#: reference/import.rst:526
+#: reference/import.rst:528
 msgid ""
 "Using a spec during import allows state to be transferred between import "
 "system components, e.g. between the finder that creates the module spec and "
@@ -728,7 +728,7 @@ msgid ""
 "a module spec the loader had that responsibility."
 msgstr ""
 
-#: reference/import.rst:532
+#: reference/import.rst:534
 msgid ""
 "The module's spec is exposed as :attr:`module.__spec__`. Setting :attr:`!"
 "__spec__` appropriately applies equally to :ref:`modules initialized during "
@@ -736,17 +736,17 @@ msgid ""
 "attr:`!__spec__` is :ref:`set to None in some cases <main_spec>`."
 msgstr ""
 
-#: reference/import.rst:538
+#: reference/import.rst:540
 msgid ""
 "See :class:`~importlib.machinery.ModuleSpec` for details on the contents of "
 "the module spec."
 msgstr ""
 
-#: reference/import.rst:546
+#: reference/import.rst:548
 msgid "__path__ attributes on modules"
 msgstr ""
 
-#: reference/import.rst:548
+#: reference/import.rst:550
 msgid ""
 "The :attr:`~module.__path__` attribute should be a (possibly empty) :term:"
 "`sequence` of strings enumerating the locations where the package's "
@@ -754,7 +754,7 @@ msgid ""
 "attribute, it is a :term:`package`."
 msgstr ""
 
-#: reference/import.rst:553
+#: reference/import.rst:555
 msgid ""
 "A package's :attr:`~module.__path__` attribute is used during imports of its "
 "subpackages. Within the import machinery, it functions much the same as :"
@@ -763,14 +763,14 @@ msgid ""
 "than :data:`!sys.path`."
 msgstr ""
 
-#: reference/import.rst:560
+#: reference/import.rst:562
 msgid ""
 "The same rules used for :data:`sys.path` also apply to a package's :attr:`!"
 "__path__`. :data:`sys.path_hooks` (described below) are consulted when "
 "traversing a package's :attr:`!__path__`."
 msgstr ""
 
-#: reference/import.rst:564
+#: reference/import.rst:566
 msgid ""
 "A package's ``__init__.py`` file may set or alter the package's :attr:"
 "`~module.__path__` attribute, and this was typically the way namespace "
@@ -780,18 +780,18 @@ msgid ""
 "automatically sets :attr:`!__path__` correctly for the namespace package."
 msgstr ""
 
-#: reference/import.rst:573
+#: reference/import.rst:575
 msgid "Module reprs"
 msgstr ""
 
-#: reference/import.rst:575
+#: reference/import.rst:577
 msgid ""
 "By default, all modules have a usable repr, however depending on the "
 "attributes set above, and in the module's spec, you can more explicitly "
 "control the repr of module objects."
 msgstr ""
 
-#: reference/import.rst:579
+#: reference/import.rst:581
 msgid ""
 "If the module has a spec (``__spec__``), the import machinery will try to "
 "generate a repr from it.  If that fails or there is no spec, the import "
@@ -801,45 +801,45 @@ msgid ""
 "for whatever information is missing."
 msgstr ""
 
-#: reference/import.rst:586
+#: reference/import.rst:588
 msgid "Here are the exact rules used:"
 msgstr ""
 
-#: reference/import.rst:588
+#: reference/import.rst:590
 msgid ""
 "If the module has a ``__spec__`` attribute, the information in the spec is "
 "used to generate the repr.  The \"name\", \"loader\", \"origin\", and "
 "\"has_location\" attributes are consulted."
 msgstr ""
 
-#: reference/import.rst:592
+#: reference/import.rst:594
 msgid ""
 "If the module has a ``__file__`` attribute, this is used as part of the "
 "module's repr."
 msgstr ""
 
-#: reference/import.rst:595
+#: reference/import.rst:597
 msgid ""
 "If the module has no ``__file__`` but does have a ``__loader__`` that is not "
 "``None``, then the loader's repr is used as part of the module's repr."
 msgstr ""
 
-#: reference/import.rst:598
+#: reference/import.rst:600
 msgid "Otherwise, just use the module's ``__name__`` in the repr."
 msgstr ""
 
-#: reference/import.rst:600
+#: reference/import.rst:602
 msgid ""
 "Use of :meth:`!module_repr`, having been deprecated since Python 3.4, was "
 "removed in Python 3.12 and is no longer called during the resolution of a "
 "module's repr."
 msgstr ""
 
-#: reference/import.rst:608
+#: reference/import.rst:610
 msgid "Cached bytecode invalidation"
 msgstr ""
 
-#: reference/import.rst:610
+#: reference/import.rst:612
 msgid ""
 "Before Python loads cached bytecode from a ``.pyc`` file, it checks whether "
 "the cache is up-to-date with the source ``.py`` file. By default, Python "
@@ -849,7 +849,7 @@ msgid ""
 "source's metadata."
 msgstr ""
 
-#: reference/import.rst:617
+#: reference/import.rst:619
 msgid ""
 "Python also supports \"hash-based\" cache files, which store a hash of the "
 "source file's contents rather than its metadata. There are two variants of "
@@ -863,17 +863,17 @@ msgid ""
 "option:`--check-hash-based-pycs` flag."
 msgstr ""
 
-#: reference/import.rst:628
+#: reference/import.rst:630
 msgid ""
 "Added hash-based ``.pyc`` files. Previously, Python only supported timestamp-"
 "based invalidation of bytecode caches."
 msgstr ""
 
-#: reference/import.rst:634
+#: reference/import.rst:636
 msgid "The Path Based Finder"
 msgstr ""
 
-#: reference/import.rst:639
+#: reference/import.rst:641
 msgid ""
 "As mentioned previously, Python comes with several default meta path "
 "finders. One of these, called the :term:`path based finder` (:class:"
@@ -882,14 +882,14 @@ msgid ""
 "a location to search for modules."
 msgstr ""
 
-#: reference/import.rst:645
+#: reference/import.rst:647
 msgid ""
 "The path based finder itself doesn't know how to import anything. Instead, "
 "it traverses the individual path entries, associating each of them with a "
 "path entry finder that knows how to handle that particular kind of path."
 msgstr ""
 
-#: reference/import.rst:649
+#: reference/import.rst:651
 msgid ""
 "The default set of path entry finders implement all the semantics for "
 "finding modules on the file system, handling special file types such as "
@@ -900,14 +900,14 @@ msgid ""
 "from zipfiles."
 msgstr ""
 
-#: reference/import.rst:656
+#: reference/import.rst:658
 msgid ""
 "Path entries need not be limited to file system locations.  They can refer "
 "to URLs, database queries, or any other location that can be specified as a "
 "string."
 msgstr ""
 
-#: reference/import.rst:660
+#: reference/import.rst:662
 msgid ""
 "The path based finder provides additional hooks and protocols so that you "
 "can extend and customize the types of searchable path entries.  For example, "
@@ -918,7 +918,7 @@ msgid ""
 "from the web."
 msgstr ""
 
-#: reference/import.rst:668
+#: reference/import.rst:670
 msgid ""
 "A word of warning: this section and the previous both use the term *finder*, "
 "distinguishing between them by using the terms :term:`meta path finder` and :"
@@ -929,7 +929,7 @@ msgid ""
 "process, as keyed off the :data:`sys.meta_path` traversal."
 msgstr ""
 
-#: reference/import.rst:676
+#: reference/import.rst:678
 msgid ""
 "By contrast, path entry finders are in a sense an implementation detail of "
 "the path based finder, and in fact, if the path based finder were to be "
@@ -937,11 +937,11 @@ msgid ""
 "would be invoked."
 msgstr ""
 
-#: reference/import.rst:683
+#: reference/import.rst:685
 msgid "Path entry finders"
 msgstr ""
 
-#: reference/import.rst:691
+#: reference/import.rst:693
 msgid ""
 "The :term:`path based finder` is responsible for finding and loading Python "
 "modules and packages whose location is specified with a string :term:`path "
@@ -949,7 +949,7 @@ msgid ""
 "not be limited to this."
 msgstr ""
 
-#: reference/import.rst:696
+#: reference/import.rst:698
 msgid ""
 "As a meta path finder, the :term:`path based finder` implements the :meth:"
 "`~importlib.abc.MetaPathFinder.find_spec` protocol previously described, "
@@ -957,7 +957,7 @@ msgid ""
 "modules are found and loaded from the :term:`import path`."
 msgstr ""
 
-#: reference/import.rst:701
+#: reference/import.rst:703
 msgid ""
 "Three variables are used by the :term:`path based finder`, :data:`sys."
 "path`, :data:`sys.path_hooks` and :data:`sys.path_importer_cache`.  The "
@@ -965,7 +965,7 @@ msgid ""
 "additional ways that the import machinery can be customized."
 msgstr ""
 
-#: reference/import.rst:706
+#: reference/import.rst:708
 msgid ""
 ":data:`sys.path` contains a list of strings providing search locations for "
 "modules and packages.  It is initialized from the :envvar:`PYTHONPATH` "
@@ -977,7 +977,7 @@ msgid ""
 "other data types are ignored."
 msgstr ""
 
-#: reference/import.rst:715
+#: reference/import.rst:717
 msgid ""
 "The :term:`path based finder` is a :term:`meta path finder`, so the import "
 "machinery begins the :term:`import path` search by calling the path based "
@@ -989,7 +989,7 @@ msgid ""
 "top level import and :data:`sys.path` is used."
 msgstr ""
 
-#: reference/import.rst:724
+#: reference/import.rst:726
 msgid ""
 "The path based finder iterates over every entry in the search path, and for "
 "each of these, looks for an appropriate :term:`path entry finder` (:class:"
@@ -1005,7 +1005,7 @@ msgid ""
 "finder to perform the path entry search again."
 msgstr ""
 
-#: reference/import.rst:737
+#: reference/import.rst:739
 msgid ""
 "If the path entry is not present in the cache, the path based finder "
 "iterates over every callable in :data:`sys.path_hooks`.  Each of the :term:"
@@ -1021,7 +1021,7 @@ msgid ""
 "decode the argument, it should raise :exc:`ImportError`."
 msgstr ""
 
-#: reference/import.rst:751
+#: reference/import.rst:753
 msgid ""
 "If :data:`sys.path_hooks` iteration ends with no :term:`path entry finder` "
 "being returned, then the path based finder's :meth:`~importlib.machinery."
@@ -1031,7 +1031,7 @@ msgid ""
 "could not find the module."
 msgstr ""
 
-#: reference/import.rst:758
+#: reference/import.rst:760
 msgid ""
 "If a :term:`path entry finder` *is* returned by one of the :term:`path entry "
 "hook` callables on :data:`sys.path_hooks`, then the following protocol is "
@@ -1039,7 +1039,7 @@ msgid ""
 "the module."
 msgstr ""
 
-#: reference/import.rst:763
+#: reference/import.rst:765
 msgid ""
 "The current working directory -- denoted by an empty string -- is handled "
 "slightly differently from other entries on :data:`sys.path`. First, if the "
@@ -1051,18 +1051,18 @@ msgid ""
 "and not the empty string."
 msgstr ""
 
-#: reference/import.rst:773
+#: reference/import.rst:775
 msgid "Path entry finder protocol"
 msgstr ""
 
-#: reference/import.rst:775
+#: reference/import.rst:777
 msgid ""
 "In order to support imports of modules and initialized packages and also to "
 "contribute portions to namespace packages, path entry finders must implement "
 "the :meth:`~importlib.abc.PathEntryFinder.find_spec` method."
 msgstr ""
 
-#: reference/import.rst:779
+#: reference/import.rst:781
 msgid ""
 ":meth:`~importlib.abc.PathEntryFinder.find_spec` takes two arguments: the "
 "fully qualified name of the module being imported, and the (optional) target "
@@ -1070,21 +1070,21 @@ msgid ""
 "spec will always have \"loader\" set (with one exception)."
 msgstr ""
 
-#: reference/import.rst:784
+#: reference/import.rst:786
 msgid ""
 "To indicate to the import machinery that the spec represents a namespace :"
 "term:`portion`, the path entry finder sets ``submodule_search_locations`` to "
 "a list containing the portion."
 msgstr ""
 
-#: reference/import.rst:788
+#: reference/import.rst:790
 msgid ""
 ":meth:`~importlib.abc.PathEntryFinder.find_spec` replaced :meth:`!"
 "find_loader` and :meth:`!find_module`, both of which are now deprecated, but "
 "will be used if ``find_spec()`` is not defined."
 msgstr ""
 
-#: reference/import.rst:794
+#: reference/import.rst:796
 msgid ""
 "Older path entry finders may implement one of these two deprecated methods "
 "instead of ``find_spec()``.  The methods are still respected for the sake of "
@@ -1092,14 +1092,14 @@ msgid ""
 "path entry finder, the legacy methods are ignored."
 msgstr ""
 
-#: reference/import.rst:799
+#: reference/import.rst:801
 msgid ""
 ":meth:`!find_loader` takes one argument, the fully qualified name of the "
 "module being imported.  ``find_loader()`` returns a 2-tuple where the first "
 "item is the loader and the second item is a namespace :term:`portion`."
 msgstr ""
 
-#: reference/import.rst:804
+#: reference/import.rst:806
 msgid ""
 "For backwards compatibility with other implementations of the import "
 "protocol, many path entry finders also support the same, traditional "
@@ -1109,7 +1109,7 @@ msgid ""
 "initial call to the path hook)."
 msgstr ""
 
-#: reference/import.rst:811
+#: reference/import.rst:813
 msgid ""
 "The ``find_module()`` method on path entry finders is deprecated, as it does "
 "not allow the path entry finder to contribute portions to namespace "
@@ -1118,28 +1118,28 @@ msgid ""
 "preference to ``find_module()``."
 msgstr ""
 
-#: reference/import.rst:817
+#: reference/import.rst:819
 msgid ""
 "Calls to :meth:`!find_module` and :meth:`!find_loader` by the import system "
 "will raise :exc:`ImportWarning`."
 msgstr ""
 
-#: reference/import.rst:822
+#: reference/import.rst:824
 msgid "``find_module()`` and ``find_loader()`` have been removed."
 msgstr ""
 
-#: reference/import.rst:827
+#: reference/import.rst:829
 msgid "Replacing the standard import system"
 msgstr ""
 
-#: reference/import.rst:829
+#: reference/import.rst:831
 msgid ""
 "The most reliable mechanism for replacing the entire import system is to "
 "delete the default contents of :data:`sys.meta_path`, replacing them "
 "entirely with a custom meta path hook."
 msgstr ""
 
-#: reference/import.rst:833
+#: reference/import.rst:835
 msgid ""
 "If it is acceptable to only alter the behaviour of import statements without "
 "affecting other APIs that access the import system, then replacing the "
@@ -1148,7 +1148,7 @@ msgid ""
 "statements within that module."
 msgstr ""
 
-#: reference/import.rst:839
+#: reference/import.rst:841
 msgid ""
 "To selectively prevent the import of some modules from a hook early on the "
 "meta path (rather than disabling the standard import system entirely), it is "
@@ -1158,11 +1158,11 @@ msgid ""
 "exception terminates it immediately."
 msgstr ""
 
-#: reference/import.rst:849
+#: reference/import.rst:851
 msgid "Package Relative Imports"
 msgstr ""
 
-#: reference/import.rst:851
+#: reference/import.rst:853
 msgid ""
 "Relative imports use leading dots. A single leading dot indicates a relative "
 "import, starting with the current package. Two or more leading dots indicate "
@@ -1170,7 +1170,7 @@ msgid ""
 "after the first. For example, given the following package layout::"
 msgstr ""
 
-#: reference/import.rst:856
+#: reference/import.rst:858
 msgid ""
 "package/\n"
 "    __init__.py\n"
@@ -1184,13 +1184,13 @@ msgid ""
 "    moduleA.py"
 msgstr ""
 
-#: reference/import.rst:867
+#: reference/import.rst:869
 msgid ""
 "In either ``subpackage1/moduleX.py`` or ``subpackage1/__init__.py``, the "
 "following are valid relative imports::"
 msgstr ""
 
-#: reference/import.rst:870
+#: reference/import.rst:872
 msgid ""
 "from .moduleY import spam\n"
 "from .moduleY import spam as ham\n"
@@ -1200,28 +1200,28 @@ msgid ""
 "from ..moduleA import foo"
 msgstr ""
 
-#: reference/import.rst:877
+#: reference/import.rst:879
 msgid ""
 "Absolute imports may use either the ``import <>`` or ``from <> import <>`` "
 "syntax, but relative imports may only use the second form; the reason for "
 "this is that::"
 msgstr ""
 
-#: reference/import.rst:881
+#: reference/import.rst:883
 msgid "import XXX.YYY.ZZZ"
 msgstr ""
 
-#: reference/import.rst:883
+#: reference/import.rst:885
 msgid ""
 "should expose ``XXX.YYY.ZZZ`` as a usable expression, but .moduleY is not a "
 "valid expression."
 msgstr ""
 
-#: reference/import.rst:890
+#: reference/import.rst:892
 msgid "Special considerations for __main__"
 msgstr ""
 
-#: reference/import.rst:892
+#: reference/import.rst:894
 msgid ""
 "The :mod:`__main__` module is a special case relative to Python's import "
 "system.  As noted :ref:`elsewhere <programs>`, the ``__main__`` module is "
@@ -1232,17 +1232,17 @@ msgid ""
 "interpreter is invoked."
 msgstr ""
 
-#: reference/import.rst:903
+#: reference/import.rst:905
 msgid "__main__.__spec__"
 msgstr ""
 
-#: reference/import.rst:905
+#: reference/import.rst:907
 msgid ""
 "Depending on how :mod:`__main__` is initialized, ``__main__.__spec__`` gets "
 "set appropriately or to ``None``."
 msgstr ""
 
-#: reference/import.rst:908
+#: reference/import.rst:910
 msgid ""
 "When Python is started with the :option:`-m` option, ``__spec__`` is set to "
 "the module spec of the corresponding module or package. ``__spec__`` is also "
@@ -1250,30 +1250,30 @@ msgid ""
 "directory, zipfile or other :data:`sys.path` entry."
 msgstr ""
 
-#: reference/import.rst:913
+#: reference/import.rst:915
 msgid ""
 "In :ref:`the remaining cases <using-on-interface-options>` ``__main__."
 "__spec__`` is set to ``None``, as the code used to populate the :mod:"
 "`__main__` does not correspond directly with an importable module:"
 msgstr ""
 
-#: reference/import.rst:917
+#: reference/import.rst:919
 msgid "interactive prompt"
 msgstr ""
 
-#: reference/import.rst:918
+#: reference/import.rst:920
 msgid ":option:`-c` option"
 msgstr ""
 
-#: reference/import.rst:919
+#: reference/import.rst:921
 msgid "running from stdin"
 msgstr ""
 
-#: reference/import.rst:920
+#: reference/import.rst:922
 msgid "running directly from a source or bytecode file"
 msgstr ""
 
-#: reference/import.rst:922
+#: reference/import.rst:924
 msgid ""
 "Note that ``__main__.__spec__`` is always ``None`` in the last case, *even "
 "if* the file could technically be imported directly as a module instead. Use "
@@ -1281,7 +1281,7 @@ msgid ""
 "`__main__`."
 msgstr ""
 
-#: reference/import.rst:927
+#: reference/import.rst:929
 msgid ""
 "Note also that even when ``__main__`` corresponds with an importable module "
 "and ``__main__.__spec__`` is set accordingly, they're still considered "
@@ -1290,11 +1290,11 @@ msgid ""
 "populate the ``__main__`` namespace, and not during normal import."
 msgstr ""
 
-#: reference/import.rst:935
+#: reference/import.rst:937
 msgid "References"
 msgstr ""
 
-#: reference/import.rst:937
+#: reference/import.rst:939
 msgid ""
 "The import machinery has evolved considerably since Python's early days.  "
 "The original `specification for packages <https://www.python.org/doc/essays/"
@@ -1302,37 +1302,37 @@ msgid ""
 "since the writing of that document."
 msgstr ""
 
-#: reference/import.rst:942
+#: reference/import.rst:944
 msgid ""
 "The original specification for :data:`sys.meta_path` was :pep:`302`, with "
 "subsequent extension in :pep:`420`."
 msgstr ""
 
-#: reference/import.rst:945
+#: reference/import.rst:947
 msgid ""
 ":pep:`420` introduced :term:`namespace packages <namespace package>` for "
 "Python 3.3.  :pep:`420` also introduced the :meth:`!find_loader` protocol as "
 "an alternative to :meth:`!find_module`."
 msgstr ""
 
-#: reference/import.rst:949
+#: reference/import.rst:951
 msgid ""
 ":pep:`366` describes the addition of the ``__package__`` attribute for "
 "explicit relative imports in main modules."
 msgstr ""
 
-#: reference/import.rst:952
+#: reference/import.rst:954
 msgid ""
 ":pep:`328` introduced absolute and explicit relative imports and initially "
 "proposed ``__name__`` for semantics :pep:`366` would eventually specify for "
 "``__package__``."
 msgstr ""
 
-#: reference/import.rst:956
+#: reference/import.rst:958
 msgid ":pep:`338` defines executing modules as scripts."
 msgstr ""
 
-#: reference/import.rst:958
+#: reference/import.rst:960
 msgid ""
 ":pep:`451` adds the encapsulation of per-module import state in spec "
 "objects.  It also off-loads most of the boilerplate responsibilities of "
@@ -1341,15 +1341,15 @@ msgid ""
 "finders and loaders."
 msgstr ""
 
-#: reference/import.rst:965
+#: reference/import.rst:967
 msgid "Footnotes"
 msgstr ""
 
-#: reference/import.rst:966
+#: reference/import.rst:968
 msgid "See :class:`types.ModuleType`."
 msgstr ""
 
-#: reference/import.rst:968
+#: reference/import.rst:970
 msgid ""
 "The importlib implementation avoids using the return value directly. "
 "Instead, it gets the module object by looking the module name up in :data:"
@@ -1362,7 +1362,7 @@ msgstr ""
 msgid "import machinery"
 msgstr ""
 
-#: reference/import.rst:95 reference/import.rst:129
+#: reference/import.rst:95 reference/import.rst:131
 msgid "package"
 msgstr ""
 
@@ -1370,82 +1370,82 @@ msgstr ""
 msgid "regular"
 msgstr ""
 
-#: reference/import.rst:129
+#: reference/import.rst:131
 msgid "namespace"
 msgstr ""
 
-#: reference/import.rst:129
+#: reference/import.rst:131
 msgid "portion"
 msgstr ""
 
-#: reference/import.rst:175
+#: reference/import.rst:177
 msgid "sys.modules"
 msgstr ""
 
-#: reference/import.rst:276
+#: reference/import.rst:278
 msgid "finder"
 msgstr ""
 
-#: reference/import.rst:210
+#: reference/import.rst:212
 msgid "loader"
 msgstr ""
 
-#: reference/import.rst:210
+#: reference/import.rst:212
 msgid "module spec"
 msgstr ""
 
-#: reference/import.rst:249
+#: reference/import.rst:251
 msgid "import hooks"
 msgstr ""
 
-#: reference/import.rst:249
+#: reference/import.rst:251
 msgid "meta hooks"
 msgstr ""
 
-#: reference/import.rst:249
+#: reference/import.rst:251
 msgid "path hooks"
 msgstr ""
 
-#: reference/import.rst:249
+#: reference/import.rst:251
 msgid "hooks"
 msgstr ""
 
-#: reference/import.rst:249
+#: reference/import.rst:251
 msgid "import"
 msgstr ""
 
-#: reference/import.rst:249
+#: reference/import.rst:251
 msgid "meta"
 msgstr ""
 
-#: reference/import.rst:249
+#: reference/import.rst:251
 msgid "path"
 msgstr ""
 
-#: reference/import.rst:276
+#: reference/import.rst:278
 msgid "sys.meta_path"
 msgstr ""
 
-#: reference/import.rst:276
+#: reference/import.rst:278
 msgid "find_spec"
 msgstr ""
 
-#: reference/import.rst:636
+#: reference/import.rst:638
 msgid "path based finder"
 msgstr ""
 
-#: reference/import.rst:685
+#: reference/import.rst:687
 msgid "sys.path"
 msgstr ""
 
-#: reference/import.rst:685
+#: reference/import.rst:687
 msgid "sys.path_hooks"
 msgstr ""
 
-#: reference/import.rst:685
+#: reference/import.rst:687
 msgid "sys.path_importer_cache"
 msgstr ""
 
-#: reference/import.rst:685
+#: reference/import.rst:687
 msgid "PYTHONPATH"
 msgstr ""
diff --git a/reference/lexical_analysis.po b/reference/lexical_analysis.po
index c3be894f0..dbc58c82d 100644
--- a/reference/lexical_analysis.po
+++ b/reference/lexical_analysis.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -22,12 +22,13 @@ msgstr ""
 
 #: reference/lexical_analysis.rst:10
 msgid ""
-"A Python program is read by a *parser*.  Input to the parser is a stream of "
-"*tokens*, generated by the *lexical analyzer*.  This chapter describes how "
-"the lexical analyzer breaks a file into tokens."
+"A Python program is read by a *parser*.  Input to the parser is a stream of :"
+"term:`tokens <token>`, generated by the *lexical analyzer* (also known as "
+"the *tokenizer*). This chapter describes how the lexical analyzer breaks a "
+"file into tokens."
 msgstr ""
 
-#: reference/lexical_analysis.rst:14
+#: reference/lexical_analysis.rst:15
 msgid ""
 "Python reads program text as Unicode code points; the encoding of a source "
 "file can be given by an encoding declaration and defaults to UTF-8, see :pep:"
@@ -35,19 +36,19 @@ msgid ""
 "`SyntaxError` is raised."
 msgstr ""
 
-#: reference/lexical_analysis.rst:23
+#: reference/lexical_analysis.rst:24
 msgid "Line structure"
 msgstr ""
 
-#: reference/lexical_analysis.rst:27
+#: reference/lexical_analysis.rst:28
 msgid "A Python program is divided into a number of *logical lines*."
 msgstr ""
 
-#: reference/lexical_analysis.rst:33
+#: reference/lexical_analysis.rst:34
 msgid "Logical lines"
 msgstr ""
 
-#: reference/lexical_analysis.rst:37
+#: reference/lexical_analysis.rst:38
 msgid ""
 "The end of a logical line is represented by the token NEWLINE.  Statements "
 "cannot cross logical line boundaries except where NEWLINE is allowed by the "
@@ -56,11 +57,11 @@ msgid ""
 "implicit *line joining* rules."
 msgstr ""
 
-#: reference/lexical_analysis.rst:47
+#: reference/lexical_analysis.rst:48
 msgid "Physical lines"
 msgstr ""
 
-#: reference/lexical_analysis.rst:49
+#: reference/lexical_analysis.rst:50
 msgid ""
 "A physical line is a sequence of characters terminated by an end-of-line "
 "sequence.  In source files and strings, any of the standard platform line "
@@ -71,18 +72,18 @@ msgid ""
 "input also serves as an implicit terminator for the final physical line."
 msgstr ""
 
-#: reference/lexical_analysis.rst:57
+#: reference/lexical_analysis.rst:58
 msgid ""
 "When embedding Python, source code strings should be passed to Python APIs "
 "using the standard C conventions for newline characters (the ``\\n`` "
 "character, representing ASCII LF, is the line terminator)."
 msgstr ""
 
-#: reference/lexical_analysis.rst:65
+#: reference/lexical_analysis.rst:66
 msgid "Comments"
 msgstr ""
 
-#: reference/lexical_analysis.rst:70
+#: reference/lexical_analysis.rst:71
 msgid ""
 "A comment starts with a hash character (``#``) that is not part of a string "
 "literal, and ends at the end of the physical line.  A comment signifies the "
@@ -90,11 +91,11 @@ msgid ""
 "Comments are ignored by the syntax."
 msgstr ""
 
-#: reference/lexical_analysis.rst:79
+#: reference/lexical_analysis.rst:80
 msgid "Encoding declarations"
 msgstr ""
 
-#: reference/lexical_analysis.rst:84
+#: reference/lexical_analysis.rst:85
 msgid ""
 "If a comment in the first or second line of the Python script matches the "
 "regular expression ``coding[=:]\\s*([-\\w.]+)``, this comment is processed "
@@ -104,41 +105,41 @@ msgid ""
 "comment-only line. The recommended forms of an encoding expression are ::"
 msgstr ""
 
-#: reference/lexical_analysis.rst:91
+#: reference/lexical_analysis.rst:92
 msgid "# -*- coding: <encoding-name> -*-"
 msgstr ""
 
-#: reference/lexical_analysis.rst:93
+#: reference/lexical_analysis.rst:94
 msgid "which is recognized also by GNU Emacs, and ::"
 msgstr ""
 
-#: reference/lexical_analysis.rst:95
+#: reference/lexical_analysis.rst:96
 msgid "# vim:fileencoding=<encoding-name>"
 msgstr ""
 
-#: reference/lexical_analysis.rst:97
+#: reference/lexical_analysis.rst:98
 msgid "which is recognized by Bram Moolenaar's VIM."
 msgstr ""
 
-#: reference/lexical_analysis.rst:99
+#: reference/lexical_analysis.rst:100
 msgid ""
 "If no encoding declaration is found, the default encoding is UTF-8.  If the "
 "implicit or explicit encoding of a file is UTF-8, an initial UTF-8 byte-"
 "order mark (b'\\xef\\xbb\\xbf') is ignored rather than being a syntax error."
 msgstr ""
 
-#: reference/lexical_analysis.rst:103
+#: reference/lexical_analysis.rst:104
 msgid ""
 "If an encoding is declared, the encoding name must be recognized by Python "
 "(see :ref:`standard-encodings`). The encoding is used for all lexical "
 "analysis, including string literals, comments and identifiers."
 msgstr ""
 
-#: reference/lexical_analysis.rst:112
+#: reference/lexical_analysis.rst:113
 msgid "Explicit line joining"
 msgstr ""
 
-#: reference/lexical_analysis.rst:116
+#: reference/lexical_analysis.rst:117
 msgid ""
 "Two or more physical lines may be joined into logical lines using backslash "
 "characters (``\\``), as follows: when a physical line ends in a backslash "
@@ -147,7 +148,7 @@ msgid ""
 "following end-of-line character.  For example::"
 msgstr ""
 
-#: reference/lexical_analysis.rst:122
+#: reference/lexical_analysis.rst:123
 msgid ""
 "if 1900 < year < 2100 and 1 <= month <= 12 \\\n"
 "   and 1 <= day <= 31 and 0 <= hour < 24 \\\n"
@@ -155,7 +156,7 @@ msgid ""
 "        return 1"
 msgstr ""
 
-#: reference/lexical_analysis.rst:127
+#: reference/lexical_analysis.rst:128
 msgid ""
 "A line ending in a backslash cannot carry a comment.  A backslash does not "
 "continue a comment.  A backslash does not continue a token except for string "
@@ -164,17 +165,17 @@ msgid ""
 "line outside a string literal."
 msgstr ""
 
-#: reference/lexical_analysis.rst:137
+#: reference/lexical_analysis.rst:138
 msgid "Implicit line joining"
 msgstr ""
 
-#: reference/lexical_analysis.rst:139
+#: reference/lexical_analysis.rst:140
 msgid ""
 "Expressions in parentheses, square brackets or curly braces can be split "
 "over more than one physical line without using backslashes. For example::"
 msgstr ""
 
-#: reference/lexical_analysis.rst:142
+#: reference/lexical_analysis.rst:143
 msgid ""
 "month_names = ['Januari', 'Februari', 'Maart',      # These are the\n"
 "               'April',   'Mei',      'Juni',       # Dutch names\n"
@@ -182,7 +183,7 @@ msgid ""
 "               'Oktober', 'November', 'December']   # of the year"
 msgstr ""
 
-#: reference/lexical_analysis.rst:147
+#: reference/lexical_analysis.rst:148
 msgid ""
 "Implicitly continued lines can carry comments.  The indentation of the "
 "continuation lines is not important.  Blank continuation lines are allowed. "
@@ -191,11 +192,11 @@ msgid ""
 "that case they cannot carry comments."
 msgstr ""
 
-#: reference/lexical_analysis.rst:157
+#: reference/lexical_analysis.rst:158
 msgid "Blank lines"
 msgstr ""
 
-#: reference/lexical_analysis.rst:161
+#: reference/lexical_analysis.rst:162
 msgid ""
 "A logical line that contains only spaces, tabs, formfeeds and possibly a "
 "comment, is ignored (i.e., no NEWLINE token is generated).  During "
@@ -206,18 +207,18 @@ msgid ""
 "statement."
 msgstr ""
 
-#: reference/lexical_analysis.rst:172
+#: reference/lexical_analysis.rst:173
 msgid "Indentation"
 msgstr ""
 
-#: reference/lexical_analysis.rst:176
+#: reference/lexical_analysis.rst:177
 msgid ""
 "Leading whitespace (spaces and tabs) at the beginning of a logical line is "
 "used to compute the indentation level of the line, which in turn is used to "
 "determine the grouping of statements."
 msgstr ""
 
-#: reference/lexical_analysis.rst:180
+#: reference/lexical_analysis.rst:181
 msgid ""
 "Tabs are replaced (from left to right) by one to eight spaces such that the "
 "total number of characters up to and including the replacement is a multiple "
@@ -228,14 +229,14 @@ msgid ""
 "the indentation."
 msgstr ""
 
-#: reference/lexical_analysis.rst:188
+#: reference/lexical_analysis.rst:189
 msgid ""
 "Indentation is rejected as inconsistent if a source file mixes tabs and "
 "spaces in a way that makes the meaning dependent on the worth of a tab in "
 "spaces; a :exc:`TabError` is raised in that case."
 msgstr ""
 
-#: reference/lexical_analysis.rst:192
+#: reference/lexical_analysis.rst:193
 msgid ""
 "**Cross-platform compatibility note:** because of the nature of text editors "
 "on non-UNIX platforms, it is unwise to use a mixture of spaces and tabs for "
@@ -243,7 +244,7 @@ msgid ""
 "different platforms may explicitly limit the maximum indentation level."
 msgstr ""
 
-#: reference/lexical_analysis.rst:197
+#: reference/lexical_analysis.rst:198
 msgid ""
 "A formfeed character may be present at the start of the line; it will be "
 "ignored for the indentation calculations above.  Formfeed characters "
@@ -251,13 +252,13 @@ msgid ""
 "instance, they may reset the space count to zero)."
 msgstr ""
 
-#: reference/lexical_analysis.rst:204
+#: reference/lexical_analysis.rst:205
 msgid ""
 "The indentation levels of consecutive lines are used to generate INDENT and "
 "DEDENT tokens, using a stack, as follows."
 msgstr ""
 
-#: reference/lexical_analysis.rst:207
+#: reference/lexical_analysis.rst:208
 msgid ""
 "Before the first line of the file is read, a single zero is pushed on the "
 "stack; this will never be popped off again.  The numbers pushed on the stack "
@@ -271,13 +272,13 @@ msgid ""
 "number remaining on the stack that is larger than zero."
 msgstr ""
 
-#: reference/lexical_analysis.rst:218
+#: reference/lexical_analysis.rst:219
 msgid ""
 "Here is an example of a correctly (though confusingly) indented piece of "
 "Python code::"
 msgstr ""
 
-#: reference/lexical_analysis.rst:221
+#: reference/lexical_analysis.rst:222
 msgid ""
 "def perm(l):\n"
 "        # Compute the list of all permutations of l\n"
@@ -292,11 +293,11 @@ msgid ""
 "    return r"
 msgstr ""
 
-#: reference/lexical_analysis.rst:233
+#: reference/lexical_analysis.rst:234
 msgid "The following example shows various indentation errors::"
 msgstr ""
 
-#: reference/lexical_analysis.rst:235
+#: reference/lexical_analysis.rst:236
 msgid ""
 " def perm(l):                       # error: first line indented\n"
 "for i in range(len(l)):             # error: not indented\n"
@@ -307,18 +308,18 @@ msgid ""
 "            return r                # error: inconsistent dedent"
 msgstr ""
 
-#: reference/lexical_analysis.rst:243
+#: reference/lexical_analysis.rst:244
 msgid ""
 "(Actually, the first three errors are detected by the parser; only the last "
 "error is found by the lexical analyzer --- the indentation of ``return r`` "
 "does not match a level popped off the stack.)"
 msgstr ""
 
-#: reference/lexical_analysis.rst:251
+#: reference/lexical_analysis.rst:252
 msgid "Whitespace between tokens"
 msgstr ""
 
-#: reference/lexical_analysis.rst:253
+#: reference/lexical_analysis.rst:254
 msgid ""
 "Except at the beginning of a logical line or in string literals, the "
 "whitespace characters space, tab and formfeed can be used interchangeably to "
@@ -327,11 +328,11 @@ msgid ""
 "is one token, but a b is two tokens)."
 msgstr ""
 
-#: reference/lexical_analysis.rst:263
+#: reference/lexical_analysis.rst:264
 msgid "Other tokens"
 msgstr ""
 
-#: reference/lexical_analysis.rst:265
+#: reference/lexical_analysis.rst:266
 msgid ""
 "Besides NEWLINE, INDENT and DEDENT, the following categories of tokens "
 "exist: *identifiers*, *keywords*, *literals*, *operators*, and *delimiters*. "
@@ -341,24 +342,24 @@ msgid ""
 "from left to right."
 msgstr ""
 
-#: reference/lexical_analysis.rst:275
+#: reference/lexical_analysis.rst:276
 msgid "Identifiers and keywords"
 msgstr ""
 
-#: reference/lexical_analysis.rst:279
+#: reference/lexical_analysis.rst:280
 msgid ""
 "Identifiers (also referred to as *names*) are described by the following "
 "lexical definitions."
 msgstr ""
 
-#: reference/lexical_analysis.rst:282
+#: reference/lexical_analysis.rst:283
 msgid ""
 "The syntax of identifiers in Python is based on the Unicode standard annex "
 "UAX-31, with elaboration and changes as defined below; see also :pep:`3131` "
 "for further details."
 msgstr ""
 
-#: reference/lexical_analysis.rst:286
+#: reference/lexical_analysis.rst:287
 msgid ""
 "Within the ASCII range (U+0001..U+007F), the valid characters for "
 "identifiers include the uppercase and lowercase letters ``A`` through ``Z``, "
@@ -369,90 +370,90 @@ msgid ""
 "`unicodedata` module."
 msgstr ""
 
-#: reference/lexical_analysis.rst:294
+#: reference/lexical_analysis.rst:295
 msgid "Identifiers are unlimited in length.  Case is significant."
 msgstr ""
 
-#: reference/lexical_analysis.rst:303
+#: reference/lexical_analysis.rst:304
 msgid "The Unicode category codes mentioned above stand for:"
 msgstr ""
 
-#: reference/lexical_analysis.rst:305
+#: reference/lexical_analysis.rst:306
 msgid "*Lu* - uppercase letters"
 msgstr ""
 
-#: reference/lexical_analysis.rst:306
+#: reference/lexical_analysis.rst:307
 msgid "*Ll* - lowercase letters"
 msgstr ""
 
-#: reference/lexical_analysis.rst:307
+#: reference/lexical_analysis.rst:308
 msgid "*Lt* - titlecase letters"
 msgstr ""
 
-#: reference/lexical_analysis.rst:308
+#: reference/lexical_analysis.rst:309
 msgid "*Lm* - modifier letters"
 msgstr ""
 
-#: reference/lexical_analysis.rst:309
+#: reference/lexical_analysis.rst:310
 msgid "*Lo* - other letters"
 msgstr ""
 
-#: reference/lexical_analysis.rst:310
+#: reference/lexical_analysis.rst:311
 msgid "*Nl* - letter numbers"
 msgstr ""
 
-#: reference/lexical_analysis.rst:311
+#: reference/lexical_analysis.rst:312
 msgid "*Mn* - nonspacing marks"
 msgstr ""
 
-#: reference/lexical_analysis.rst:312
+#: reference/lexical_analysis.rst:313
 msgid "*Mc* - spacing combining marks"
 msgstr ""
 
-#: reference/lexical_analysis.rst:313
+#: reference/lexical_analysis.rst:314
 msgid "*Nd* - decimal numbers"
 msgstr ""
 
-#: reference/lexical_analysis.rst:314
+#: reference/lexical_analysis.rst:315
 msgid "*Pc* - connector punctuations"
 msgstr ""
 
-#: reference/lexical_analysis.rst:315
+#: reference/lexical_analysis.rst:316
 msgid ""
 "*Other_ID_Start* - explicit list of characters in `PropList.txt <https://www."
 "unicode.org/Public/15.0.0/ucd/PropList.txt>`_ to support backwards "
 "compatibility"
 msgstr ""
 
-#: reference/lexical_analysis.rst:318
+#: reference/lexical_analysis.rst:319
 msgid "*Other_ID_Continue* - likewise"
 msgstr ""
 
-#: reference/lexical_analysis.rst:320
+#: reference/lexical_analysis.rst:321
 msgid ""
 "All identifiers are converted into the normal form NFKC while parsing; "
 "comparison of identifiers is based on NFKC."
 msgstr ""
 
-#: reference/lexical_analysis.rst:323
+#: reference/lexical_analysis.rst:324
 msgid ""
 "A non-normative HTML file listing all valid identifier characters for "
 "Unicode 15.0.0 can be found at https://www.unicode.org/Public/15.0.0/ucd/"
 "DerivedCoreProperties.txt"
 msgstr ""
 
-#: reference/lexical_analysis.rst:331
+#: reference/lexical_analysis.rst:332
 msgid "Keywords"
 msgstr ""
 
-#: reference/lexical_analysis.rst:337
+#: reference/lexical_analysis.rst:338
 msgid ""
 "The following identifiers are used as reserved words, or *keywords* of the "
 "language, and cannot be used as ordinary identifiers.  They must be spelled "
 "exactly as written here:"
 msgstr ""
 
-#: reference/lexical_analysis.rst:341
+#: reference/lexical_analysis.rst:342
 msgid ""
 "False      await      else       import     pass\n"
 "None       break      except     in         raise\n"
@@ -463,11 +464,11 @@ msgid ""
 "async      elif       if         or         yield"
 msgstr ""
 
-#: reference/lexical_analysis.rst:355
+#: reference/lexical_analysis.rst:356
 msgid "Soft Keywords"
 msgstr ""
 
-#: reference/lexical_analysis.rst:361
+#: reference/lexical_analysis.rst:362
 msgid ""
 "Some identifiers are only reserved under specific contexts. These are known "
 "as *soft keywords*.  The identifiers ``match``, ``case``, ``type`` and ``_`` "
@@ -475,82 +476,82 @@ msgid ""
 "is done at the parser level, not when tokenizing."
 msgstr ""
 
-#: reference/lexical_analysis.rst:366
+#: reference/lexical_analysis.rst:367
 msgid ""
 "As soft keywords, their use in the grammar is possible while still "
 "preserving compatibility with existing code that uses these names as "
 "identifier names."
 msgstr ""
 
-#: reference/lexical_analysis.rst:370
+#: reference/lexical_analysis.rst:371
 msgid ""
 "``match``, ``case``, and ``_`` are used in the :keyword:`match` statement. "
 "``type`` is used in the :keyword:`type` statement."
 msgstr ""
 
-#: reference/lexical_analysis.rst:373
+#: reference/lexical_analysis.rst:374
 msgid "``type`` is now a soft keyword."
 msgstr ""
 
-#: reference/lexical_analysis.rst:382
+#: reference/lexical_analysis.rst:383
 msgid "Reserved classes of identifiers"
 msgstr ""
 
-#: reference/lexical_analysis.rst:384
+#: reference/lexical_analysis.rst:385
 msgid ""
 "Certain classes of identifiers (besides keywords) have special meanings.  "
 "These classes are identified by the patterns of leading and trailing "
 "underscore characters:"
 msgstr ""
 
-#: reference/lexical_analysis.rst:388
+#: reference/lexical_analysis.rst:389
 msgid "``_*``"
 msgstr ""
 
-#: reference/lexical_analysis.rst:389
+#: reference/lexical_analysis.rst:390
 msgid "Not imported by ``from module import *``."
 msgstr ""
 
-#: reference/lexical_analysis.rst:391
+#: reference/lexical_analysis.rst:392
 msgid "``_``"
 msgstr ""
 
-#: reference/lexical_analysis.rst:392
+#: reference/lexical_analysis.rst:393
 msgid ""
 "In a ``case`` pattern within a :keyword:`match` statement, ``_`` is a :ref:"
 "`soft keyword <soft-keywords>` that denotes a :ref:`wildcard <wildcard-"
 "patterns>`."
 msgstr ""
 
-#: reference/lexical_analysis.rst:396
+#: reference/lexical_analysis.rst:397
 msgid ""
 "Separately, the interactive interpreter makes the result of the last "
 "evaluation available in the variable ``_``. (It is stored in the :mod:"
 "`builtins` module, alongside built-in functions like ``print``.)"
 msgstr ""
 
-#: reference/lexical_analysis.rst:401
+#: reference/lexical_analysis.rst:402
 msgid ""
 "Elsewhere, ``_`` is a regular identifier. It is often used to name "
 "\"special\" items, but it is not special to Python itself."
 msgstr ""
 
-#: reference/lexical_analysis.rst:406
+#: reference/lexical_analysis.rst:407
 msgid ""
 "The name ``_`` is often used in conjunction with internationalization; refer "
 "to the documentation for the :mod:`gettext` module for more information on "
 "this convention."
 msgstr ""
 
-#: reference/lexical_analysis.rst:410
+#: reference/lexical_analysis.rst:411
 msgid "It is also commonly used for unused variables."
 msgstr ""
 
-#: reference/lexical_analysis.rst:412
+#: reference/lexical_analysis.rst:413
 msgid "``__*__``"
 msgstr ""
 
-#: reference/lexical_analysis.rst:413
+#: reference/lexical_analysis.rst:414
 msgid ""
 "System-defined names, informally known as \"dunder\" names. These names are "
 "defined by the interpreter and its implementation (including the standard "
@@ -560,11 +561,11 @@ msgid ""
 "explicitly documented use, is subject to breakage without warning."
 msgstr ""
 
-#: reference/lexical_analysis.rst:420
+#: reference/lexical_analysis.rst:421
 msgid "``__*``"
 msgstr ""
 
-#: reference/lexical_analysis.rst:421
+#: reference/lexical_analysis.rst:422
 msgid ""
 "Class-private names.  Names in this category, when used within the context "
 "of a class definition, are re-written to use a mangled form to help avoid "
@@ -572,23 +573,23 @@ msgid ""
 "section :ref:`atom-identifiers`."
 msgstr ""
 
-#: reference/lexical_analysis.rst:430
+#: reference/lexical_analysis.rst:431
 msgid "Literals"
 msgstr ""
 
-#: reference/lexical_analysis.rst:434
+#: reference/lexical_analysis.rst:435
 msgid "Literals are notations for constant values of some built-in types."
 msgstr ""
 
-#: reference/lexical_analysis.rst:445
+#: reference/lexical_analysis.rst:446
 msgid "String and Bytes literals"
 msgstr ""
 
-#: reference/lexical_analysis.rst:447
+#: reference/lexical_analysis.rst:448
 msgid "String literals are described by the following lexical definitions:"
 msgstr ""
 
-#: reference/lexical_analysis.rst:472
+#: reference/lexical_analysis.rst:473
 msgid ""
 "One syntactic restriction not indicated by these productions is that "
 "whitespace is not allowed between the :token:`~python-grammar:stringprefix` "
@@ -598,7 +599,7 @@ msgid ""
 "`encodings`."
 msgstr ""
 
-#: reference/lexical_analysis.rst:482
+#: reference/lexical_analysis.rst:483
 msgid ""
 "In plain English: Both types of literals can be enclosed in matching single "
 "quotes (``'``) or double quotes (``\"``).  They can also be enclosed in "
@@ -611,7 +612,7 @@ msgid ""
 "sequences>` below for examples."
 msgstr ""
 
-#: reference/lexical_analysis.rst:495
+#: reference/lexical_analysis.rst:496
 msgid ""
 "Bytes literals are always prefixed with ``'b'`` or ``'B'``; they produce an "
 "instance of the :class:`bytes` type instead of the :class:`str` type.  They "
@@ -619,7 +620,7 @@ msgid ""
 "greater must be expressed with escapes."
 msgstr ""
 
-#: reference/lexical_analysis.rst:504
+#: reference/lexical_analysis.rst:505
 msgid ""
 "Both string and bytes literals may optionally be prefixed with a letter "
 "``'r'`` or ``'R'``; such constructs are called :dfn:`raw string literals` "
@@ -628,20 +629,20 @@ msgid ""
 "escapes are not treated specially."
 msgstr ""
 
-#: reference/lexical_analysis.rst:510
+#: reference/lexical_analysis.rst:511
 msgid ""
 "The ``'rb'`` prefix of raw bytes literals has been added as a synonym of "
 "``'br'``."
 msgstr ""
 
-#: reference/lexical_analysis.rst:514
+#: reference/lexical_analysis.rst:515
 msgid ""
 "Support for the unicode legacy literal (``u'value'``) was reintroduced to "
 "simplify the maintenance of dual Python 2.x and 3.x codebases. See :pep:"
 "`414` for more information."
 msgstr ""
 
-#: reference/lexical_analysis.rst:522
+#: reference/lexical_analysis.rst:523
 msgid ""
 "A string literal with ``'f'`` or ``'F'`` in its prefix is a :dfn:`formatted "
 "string literal`; see :ref:`f-strings`.  The ``'f'`` may be combined with "
@@ -649,7 +650,7 @@ msgid ""
 "are possible, but formatted bytes literals are not."
 msgstr ""
 
-#: reference/lexical_analysis.rst:527
+#: reference/lexical_analysis.rst:528
 msgid ""
 "In triple-quoted literals, unescaped newlines and quotes are allowed (and "
 "are retained), except that three unescaped quotes in a row terminate the "
@@ -657,250 +658,250 @@ msgid ""
 "either ``'`` or ``\"``.)"
 msgstr ""
 
-#: reference/lexical_analysis.rst:550
+#: reference/lexical_analysis.rst:551
 msgid "Escape sequences"
 msgstr ""
 
-#: reference/lexical_analysis.rst:552
+#: reference/lexical_analysis.rst:553
 msgid ""
 "Unless an ``'r'`` or ``'R'`` prefix is present, escape sequences in string "
 "and bytes literals are interpreted according to rules similar to those used "
 "by Standard C.  The recognized escape sequences are:"
 msgstr ""
 
-#: reference/lexical_analysis.rst:557 reference/lexical_analysis.rst:590
+#: reference/lexical_analysis.rst:558 reference/lexical_analysis.rst:591
 msgid "Escape Sequence"
 msgstr ""
 
-#: reference/lexical_analysis.rst:557 reference/lexical_analysis.rst:590
+#: reference/lexical_analysis.rst:558 reference/lexical_analysis.rst:591
 msgid "Meaning"
 msgstr ""
 
-#: reference/lexical_analysis.rst:557 reference/lexical_analysis.rst:590
+#: reference/lexical_analysis.rst:558 reference/lexical_analysis.rst:591
 msgid "Notes"
 msgstr ""
 
-#: reference/lexical_analysis.rst:559
+#: reference/lexical_analysis.rst:560
 msgid "``\\``\\ <newline>"
 msgstr ""
 
-#: reference/lexical_analysis.rst:559
+#: reference/lexical_analysis.rst:560
 msgid "Backslash and newline ignored"
 msgstr ""
 
-#: reference/lexical_analysis.rst:559
+#: reference/lexical_analysis.rst:560
 msgid "\\(1)"
 msgstr ""
 
-#: reference/lexical_analysis.rst:561
+#: reference/lexical_analysis.rst:562
 msgid "``\\\\``"
 msgstr ""
 
-#: reference/lexical_analysis.rst:561
+#: reference/lexical_analysis.rst:562
 msgid "Backslash (``\\``)"
 msgstr ""
 
-#: reference/lexical_analysis.rst:563
+#: reference/lexical_analysis.rst:564
 msgid "``\\'``"
 msgstr ""
 
-#: reference/lexical_analysis.rst:563
+#: reference/lexical_analysis.rst:564
 msgid "Single quote (``'``)"
 msgstr ""
 
-#: reference/lexical_analysis.rst:565
+#: reference/lexical_analysis.rst:566
 msgid "``\\\"``"
 msgstr ""
 
-#: reference/lexical_analysis.rst:565
+#: reference/lexical_analysis.rst:566
 msgid "Double quote (``\"``)"
 msgstr ""
 
-#: reference/lexical_analysis.rst:567
+#: reference/lexical_analysis.rst:568
 msgid "``\\a``"
 msgstr ""
 
-#: reference/lexical_analysis.rst:567
+#: reference/lexical_analysis.rst:568
 msgid "ASCII Bell (BEL)"
 msgstr ""
 
-#: reference/lexical_analysis.rst:569
+#: reference/lexical_analysis.rst:570
 msgid "``\\b``"
 msgstr ""
 
-#: reference/lexical_analysis.rst:569
+#: reference/lexical_analysis.rst:570
 msgid "ASCII Backspace (BS)"
 msgstr ""
 
-#: reference/lexical_analysis.rst:571
+#: reference/lexical_analysis.rst:572
 msgid "``\\f``"
 msgstr ""
 
-#: reference/lexical_analysis.rst:571
+#: reference/lexical_analysis.rst:572
 msgid "ASCII Formfeed (FF)"
 msgstr ""
 
-#: reference/lexical_analysis.rst:573
+#: reference/lexical_analysis.rst:574
 msgid "``\\n``"
 msgstr ""
 
-#: reference/lexical_analysis.rst:573
+#: reference/lexical_analysis.rst:574
 msgid "ASCII Linefeed (LF)"
 msgstr ""
 
-#: reference/lexical_analysis.rst:575
+#: reference/lexical_analysis.rst:576
 msgid "``\\r``"
 msgstr ""
 
-#: reference/lexical_analysis.rst:575
+#: reference/lexical_analysis.rst:576
 msgid "ASCII Carriage Return (CR)"
 msgstr ""
 
-#: reference/lexical_analysis.rst:577
+#: reference/lexical_analysis.rst:578
 msgid "``\\t``"
 msgstr ""
 
-#: reference/lexical_analysis.rst:577
+#: reference/lexical_analysis.rst:578
 msgid "ASCII Horizontal Tab (TAB)"
 msgstr ""
 
-#: reference/lexical_analysis.rst:579
+#: reference/lexical_analysis.rst:580
 msgid "``\\v``"
 msgstr ""
 
-#: reference/lexical_analysis.rst:579
+#: reference/lexical_analysis.rst:580
 msgid "ASCII Vertical Tab (VT)"
 msgstr ""
 
-#: reference/lexical_analysis.rst:581
+#: reference/lexical_analysis.rst:582
 msgid ":samp:`\\\\\\\\{ooo}`"
 msgstr ""
 
-#: reference/lexical_analysis.rst:581
+#: reference/lexical_analysis.rst:582
 msgid "Character with octal value *ooo*"
 msgstr ""
 
-#: reference/lexical_analysis.rst:581
+#: reference/lexical_analysis.rst:582
 msgid "(2,4)"
 msgstr ""
 
-#: reference/lexical_analysis.rst:584
+#: reference/lexical_analysis.rst:585
 msgid ":samp:`\\\\x{hh}`"
 msgstr ""
 
-#: reference/lexical_analysis.rst:584
+#: reference/lexical_analysis.rst:585
 msgid "Character with hex value *hh*"
 msgstr ""
 
-#: reference/lexical_analysis.rst:584
+#: reference/lexical_analysis.rst:585
 msgid "(3,4)"
 msgstr ""
 
-#: reference/lexical_analysis.rst:587
+#: reference/lexical_analysis.rst:588
 msgid "Escape sequences only recognized in string literals are:"
 msgstr ""
 
-#: reference/lexical_analysis.rst:592
+#: reference/lexical_analysis.rst:593
 msgid ":samp:`\\\\N\\\\{{name}\\\\}`"
 msgstr ""
 
-#: reference/lexical_analysis.rst:592
+#: reference/lexical_analysis.rst:593
 msgid "Character named *name* in the Unicode database"
 msgstr ""
 
-#: reference/lexical_analysis.rst:592
+#: reference/lexical_analysis.rst:593
 msgid "\\(5)"
 msgstr ""
 
-#: reference/lexical_analysis.rst:595
+#: reference/lexical_analysis.rst:596
 msgid ":samp:`\\\\u{xxxx}`"
 msgstr ""
 
-#: reference/lexical_analysis.rst:595
+#: reference/lexical_analysis.rst:596
 msgid "Character with 16-bit hex value *xxxx*"
 msgstr ""
 
-#: reference/lexical_analysis.rst:595
+#: reference/lexical_analysis.rst:596
 msgid "\\(6)"
 msgstr ""
 
-#: reference/lexical_analysis.rst:598
+#: reference/lexical_analysis.rst:599
 msgid ":samp:`\\\\U{xxxxxxxx}`"
 msgstr ""
 
-#: reference/lexical_analysis.rst:598
+#: reference/lexical_analysis.rst:599
 msgid "Character with 32-bit hex value *xxxxxxxx*"
 msgstr ""
 
-#: reference/lexical_analysis.rst:598
+#: reference/lexical_analysis.rst:599
 msgid "\\(7)"
 msgstr ""
 
-#: reference/lexical_analysis.rst:602
+#: reference/lexical_analysis.rst:603
 msgid "Notes:"
 msgstr ""
 
-#: reference/lexical_analysis.rst:605
+#: reference/lexical_analysis.rst:606
 msgid "A backslash can be added at the end of a line to ignore the newline::"
 msgstr ""
 
-#: reference/lexical_analysis.rst:607
+#: reference/lexical_analysis.rst:608
 msgid ""
 ">>> 'This string will not include \\\n"
 "... backslashes or newline characters.'\n"
 "'This string will not include backslashes or newline characters.'"
 msgstr ""
 
-#: reference/lexical_analysis.rst:611
+#: reference/lexical_analysis.rst:612
 msgid ""
 "The same result can be achieved using :ref:`triple-quoted strings "
 "<strings>`, or parentheses and :ref:`string literal concatenation <string-"
 "concatenation>`."
 msgstr ""
 
-#: reference/lexical_analysis.rst:616
+#: reference/lexical_analysis.rst:617
 msgid "As in Standard C, up to three octal digits are accepted."
 msgstr ""
 
-#: reference/lexical_analysis.rst:618
+#: reference/lexical_analysis.rst:619
 msgid ""
 "Octal escapes with value larger than ``0o377`` produce a :exc:"
 "`DeprecationWarning`."
 msgstr ""
 
-#: reference/lexical_analysis.rst:622
+#: reference/lexical_analysis.rst:623
 msgid ""
 "Octal escapes with value larger than ``0o377`` produce a :exc:"
 "`SyntaxWarning`. In a future Python version they will be eventually a :exc:"
 "`SyntaxError`."
 msgstr ""
 
-#: reference/lexical_analysis.rst:628
+#: reference/lexical_analysis.rst:629
 msgid "Unlike in Standard C, exactly two hex digits are required."
 msgstr ""
 
-#: reference/lexical_analysis.rst:631
+#: reference/lexical_analysis.rst:632
 msgid ""
 "In a bytes literal, hexadecimal and octal escapes denote the byte with the "
 "given value. In a string literal, these escapes denote a Unicode character "
 "with the given value."
 msgstr ""
 
-#: reference/lexical_analysis.rst:636
+#: reference/lexical_analysis.rst:637
 msgid "Support for name aliases [#]_ has been added."
 msgstr ""
 
-#: reference/lexical_analysis.rst:640
+#: reference/lexical_analysis.rst:641
 msgid "Exactly four hex digits are required."
 msgstr ""
 
-#: reference/lexical_analysis.rst:643
+#: reference/lexical_analysis.rst:644
 msgid ""
 "Any Unicode character can be encoded this way.  Exactly eight hex digits are "
 "required."
 msgstr ""
 
-#: reference/lexical_analysis.rst:649
+#: reference/lexical_analysis.rst:650
 msgid ""
 "Unlike Standard C, all unrecognized escape sequences are left in the string "
 "unchanged, i.e., *the backslash is left in the result*.  (This behavior is "
@@ -910,17 +911,17 @@ msgid ""
 "category of unrecognized escapes for bytes literals."
 msgstr ""
 
-#: reference/lexical_analysis.rst:656
+#: reference/lexical_analysis.rst:657
 msgid "Unrecognized escape sequences produce a :exc:`DeprecationWarning`."
 msgstr ""
 
-#: reference/lexical_analysis.rst:659
+#: reference/lexical_analysis.rst:660
 msgid ""
 "Unrecognized escape sequences produce a :exc:`SyntaxWarning`. In a future "
 "Python version they will be eventually a :exc:`SyntaxError`."
 msgstr ""
 
-#: reference/lexical_analysis.rst:663
+#: reference/lexical_analysis.rst:664
 msgid ""
 "Even in a raw literal, quotes can be escaped with a backslash, but the "
 "backslash remains in the result; for example, ``r\"\\\"\"`` is a valid "
@@ -933,11 +934,11 @@ msgid ""
 "continuation."
 msgstr ""
 
-#: reference/lexical_analysis.rst:676
+#: reference/lexical_analysis.rst:677
 msgid "String literal concatenation"
 msgstr ""
 
-#: reference/lexical_analysis.rst:678
+#: reference/lexical_analysis.rst:679
 msgid ""
 "Multiple adjacent string or bytes literals (delimited by whitespace), "
 "possibly using different quoting conventions, are allowed, and their meaning "
@@ -947,14 +948,14 @@ msgid ""
 "lines, or even to add comments to parts of strings, for example::"
 msgstr ""
 
-#: reference/lexical_analysis.rst:685
+#: reference/lexical_analysis.rst:686
 msgid ""
 "re.compile(\"[A-Za-z_]\"       # letter or underscore\n"
 "           \"[A-Za-z0-9_]*\"   # letter, digit or underscore\n"
 "          )"
 msgstr ""
 
-#: reference/lexical_analysis.rst:689
+#: reference/lexical_analysis.rst:690
 msgid ""
 "Note that this feature is defined at the syntactical level, but implemented "
 "at compile time.  The '+' operator must be used to concatenate string "
@@ -964,11 +965,11 @@ msgid ""
 "with plain string literals."
 msgstr ""
 
-#: reference/lexical_analysis.rst:712
+#: reference/lexical_analysis.rst:713
 msgid "f-strings"
 msgstr ""
 
-#: reference/lexical_analysis.rst:716
+#: reference/lexical_analysis.rst:717
 msgid ""
 "A :dfn:`formatted string literal` or :dfn:`f-string` is a string literal "
 "that is prefixed with ``'f'`` or ``'F'``.  These strings may contain "
@@ -977,14 +978,14 @@ msgid ""
 "are really expressions evaluated at run time."
 msgstr ""
 
-#: reference/lexical_analysis.rst:722
+#: reference/lexical_analysis.rst:723
 msgid ""
 "Escape sequences are decoded like in ordinary string literals (except when a "
 "literal is also marked as a raw string).  After decoding, the grammar for "
 "the contents of the string is:"
 msgstr ""
 
-#: reference/lexical_analysis.rst:736
+#: reference/lexical_analysis.rst:737
 msgid ""
 "The parts of the string outside curly braces are treated literally, except "
 "that any doubled curly braces ``'{{'`` or ``'}}'`` are replaced with the "
@@ -997,7 +998,7 @@ msgid ""
 "replacement field ends with a closing curly bracket ``'}'``."
 msgstr ""
 
-#: reference/lexical_analysis.rst:746
+#: reference/lexical_analysis.rst:747
 msgid ""
 "Expressions in formatted string literals are treated like regular Python "
 "expressions surrounded by parentheses, with a few exceptions. An empty "
@@ -1011,27 +1012,27 @@ msgid ""
 "replacement fields must be closed in a different line."
 msgstr ""
 
-#: reference/lexical_analysis.rst:757
+#: reference/lexical_analysis.rst:758
 msgid ""
 ">>> f\"abc{a # This is a comment }\"\n"
 "... + 3}\"\n"
 "'abc5'"
 msgstr ""
 
-#: reference/lexical_analysis.rst:763
+#: reference/lexical_analysis.rst:764
 msgid ""
 "Prior to Python 3.7, an :keyword:`await` expression and comprehensions "
 "containing an :keyword:`async for` clause were illegal in the expressions in "
 "formatted string literals due to a problem with the implementation."
 msgstr ""
 
-#: reference/lexical_analysis.rst:768
+#: reference/lexical_analysis.rst:769
 msgid ""
 "Prior to Python 3.12, comments were not allowed inside f-string replacement "
 "fields."
 msgstr ""
 
-#: reference/lexical_analysis.rst:772
+#: reference/lexical_analysis.rst:773
 msgid ""
 "When the equal sign ``'='`` is provided, the output will have the expression "
 "text, the ``'='`` and the evaluated value. Spaces after the opening brace "
@@ -1042,18 +1043,18 @@ msgid ""
 "r'`` is declared."
 msgstr ""
 
-#: reference/lexical_analysis.rst:780
+#: reference/lexical_analysis.rst:781
 msgid "The equal sign ``'='``."
 msgstr ""
 
-#: reference/lexical_analysis.rst:783
+#: reference/lexical_analysis.rst:784
 msgid ""
 "If a conversion is specified, the result of evaluating the expression is "
 "converted before formatting.  Conversion ``'!s'`` calls :func:`str` on the "
 "result, ``'!r'`` calls :func:`repr`, and ``'!a'`` calls :func:`ascii`."
 msgstr ""
 
-#: reference/lexical_analysis.rst:787
+#: reference/lexical_analysis.rst:788
 msgid ""
 "The result is then formatted using the :func:`format` protocol.  The format "
 "specifier is passed to the :meth:`~object.__format__` method of the "
@@ -1062,7 +1063,7 @@ msgid ""
 "value of the whole string."
 msgstr ""
 
-#: reference/lexical_analysis.rst:793
+#: reference/lexical_analysis.rst:794
 msgid ""
 "Top-level format specifiers may include nested replacement fields. These "
 "nested fields may include their own conversion fields and :ref:`format "
@@ -1071,17 +1072,17 @@ msgid ""
 "as that used by the :meth:`str.format` method."
 msgstr ""
 
-#: reference/lexical_analysis.rst:799
+#: reference/lexical_analysis.rst:800
 msgid ""
 "Formatted string literals may be concatenated, but replacement fields cannot "
 "be split across literals."
 msgstr ""
 
-#: reference/lexical_analysis.rst:802
+#: reference/lexical_analysis.rst:803
 msgid "Some examples of formatted string literals::"
 msgstr ""
 
-#: reference/lexical_analysis.rst:804
+#: reference/lexical_analysis.rst:805
 msgid ""
 ">>> name = \"Fred\"\n"
 ">>> f\"He said his name is {name!r}.\"\n"
@@ -1113,32 +1114,32 @@ msgid ""
 "'line = \"The mill\\'s closed\" '"
 msgstr ""
 
-#: reference/lexical_analysis.rst:834
+#: reference/lexical_analysis.rst:835
 msgid ""
 "Reusing the outer f-string quoting type inside a replacement field is "
 "permitted::"
 msgstr ""
 
-#: reference/lexical_analysis.rst:837
+#: reference/lexical_analysis.rst:838
 msgid ""
 ">>> a = dict(x=2)\n"
 ">>> f\"abc {a[\"x\"]} def\"\n"
 "'abc 2 def'"
 msgstr ""
 
-#: reference/lexical_analysis.rst:841
+#: reference/lexical_analysis.rst:842
 msgid ""
 "Prior to Python 3.12, reuse of the same quoting type of the outer f-string "
 "inside a replacement field was not possible."
 msgstr ""
 
-#: reference/lexical_analysis.rst:845
+#: reference/lexical_analysis.rst:846
 msgid ""
 "Backslashes are also allowed in replacement fields and are evaluated the "
 "same way as in any other context::"
 msgstr ""
 
-#: reference/lexical_analysis.rst:848
+#: reference/lexical_analysis.rst:849
 msgid ""
 ">>> a = [\"a\", \"b\", \"c\"]\n"
 ">>> print(f\"List a contains:\\n{\"\\n\".join(a)}\")\n"
@@ -1148,19 +1149,19 @@ msgid ""
 "c"
 msgstr ""
 
-#: reference/lexical_analysis.rst:855
+#: reference/lexical_analysis.rst:856
 msgid ""
 "Prior to Python 3.12, backslashes were not permitted inside an f-string "
 "replacement field."
 msgstr ""
 
-#: reference/lexical_analysis.rst:859
+#: reference/lexical_analysis.rst:860
 msgid ""
 "Formatted string literals cannot be used as docstrings, even if they do not "
 "include expressions."
 msgstr ""
 
-#: reference/lexical_analysis.rst:864
+#: reference/lexical_analysis.rst:865
 msgid ""
 ">>> def foo():\n"
 "...     f\"Not a docstring\"\n"
@@ -1169,83 +1170,83 @@ msgid ""
 "True"
 msgstr ""
 
-#: reference/lexical_analysis.rst:870
+#: reference/lexical_analysis.rst:871
 msgid ""
 "See also :pep:`498` for the proposal that added formatted string literals, "
 "and :meth:`str.format`, which uses a related format string mechanism."
 msgstr ""
 
-#: reference/lexical_analysis.rst:877
+#: reference/lexical_analysis.rst:878
 msgid "Numeric literals"
 msgstr ""
 
-#: reference/lexical_analysis.rst:883
+#: reference/lexical_analysis.rst:884
 msgid ""
 "There are three types of numeric literals: integers, floating-point numbers, "
 "and imaginary numbers.  There are no complex literals (complex numbers can "
 "be formed by adding a real number and an imaginary number)."
 msgstr ""
 
-#: reference/lexical_analysis.rst:887
+#: reference/lexical_analysis.rst:888
 msgid ""
 "Note that numeric literals do not include a sign; a phrase like ``-1`` is "
 "actually an expression composed of the unary operator '``-``' and the "
 "literal ``1``."
 msgstr ""
 
-#: reference/lexical_analysis.rst:901
+#: reference/lexical_analysis.rst:902
 msgid "Integer literals"
 msgstr ""
 
-#: reference/lexical_analysis.rst:903
+#: reference/lexical_analysis.rst:904
 msgid "Integer literals are described by the following lexical definitions:"
 msgstr ""
 
-#: reference/lexical_analysis.rst:917
+#: reference/lexical_analysis.rst:918
 msgid ""
 "There is no limit for the length of integer literals apart from what can be "
 "stored in available memory."
 msgstr ""
 
-#: reference/lexical_analysis.rst:920
+#: reference/lexical_analysis.rst:921
 msgid ""
 "Underscores are ignored for determining the numeric value of the literal.  "
 "They can be used to group digits for enhanced readability.  One underscore "
 "can occur between digits, and after base specifiers like ``0x``."
 msgstr ""
 
-#: reference/lexical_analysis.rst:924
+#: reference/lexical_analysis.rst:925
 msgid ""
 "Note that leading zeros in a non-zero decimal number are not allowed. This "
 "is for disambiguation with C-style octal literals, which Python used before "
 "version 3.0."
 msgstr ""
 
-#: reference/lexical_analysis.rst:928
+#: reference/lexical_analysis.rst:929
 msgid "Some examples of integer literals::"
 msgstr ""
 
-#: reference/lexical_analysis.rst:930
+#: reference/lexical_analysis.rst:931
 msgid ""
 "7     2147483647                        0o177    0b100110111\n"
 "3     79228162514264337593543950336     0o377    0xdeadbeef\n"
 "      100_000_000_000                   0b_1110_0101"
 msgstr ""
 
-#: reference/lexical_analysis.rst:934 reference/lexical_analysis.rst:966
+#: reference/lexical_analysis.rst:935 reference/lexical_analysis.rst:967
 msgid "Underscores are now allowed for grouping purposes in literals."
 msgstr ""
 
-#: reference/lexical_analysis.rst:945
+#: reference/lexical_analysis.rst:946
 msgid "Floating-point literals"
 msgstr ""
 
-#: reference/lexical_analysis.rst:947
+#: reference/lexical_analysis.rst:948
 msgid ""
 "Floating-point literals are described by the following lexical definitions:"
 msgstr ""
 
-#: reference/lexical_analysis.rst:957
+#: reference/lexical_analysis.rst:958
 msgid ""
 "Note that the integer and exponent parts are always interpreted using radix "
 "10. For example, ``077e010`` is legal, and denotes the same number as "
@@ -1254,23 +1255,23 @@ msgid ""
 "grouping."
 msgstr ""
 
-#: reference/lexical_analysis.rst:962
+#: reference/lexical_analysis.rst:963
 msgid "Some examples of floating-point literals::"
 msgstr ""
 
-#: reference/lexical_analysis.rst:964
+#: reference/lexical_analysis.rst:965
 msgid "3.14    10.    .001    1e100    3.14e-10    0e0    3.14_15_93"
 msgstr ""
 
-#: reference/lexical_analysis.rst:975
+#: reference/lexical_analysis.rst:976
 msgid "Imaginary literals"
 msgstr ""
 
-#: reference/lexical_analysis.rst:977
+#: reference/lexical_analysis.rst:978
 msgid "Imaginary literals are described by the following lexical definitions:"
 msgstr ""
 
-#: reference/lexical_analysis.rst:982
+#: reference/lexical_analysis.rst:983
 msgid ""
 "An imaginary literal yields a complex number with a real part of 0.0.  "
 "Complex numbers are represented as a pair of floating-point numbers and have "
@@ -1279,34 +1280,34 @@ msgid ""
 "Some examples of imaginary literals::"
 msgstr ""
 
-#: reference/lexical_analysis.rst:988
+#: reference/lexical_analysis.rst:989
 msgid "3.14j   10.j    10j     .001j   1e100j   3.14e-10j   3.14_15_93j"
 msgstr ""
 
-#: reference/lexical_analysis.rst:994
+#: reference/lexical_analysis.rst:995
 msgid "Operators"
 msgstr ""
 
-#: reference/lexical_analysis.rst:998
+#: reference/lexical_analysis.rst:999
 msgid "The following tokens are operators:"
 msgstr ""
 
-#: reference/lexical_analysis.rst:1000
+#: reference/lexical_analysis.rst:1001
 msgid ""
 "+       -       *       **      /       //      %      @\n"
 "<<      >>      &       |       ^       ~       :=\n"
 "<       >       <=      >=      ==      !="
 msgstr ""
 
-#: reference/lexical_analysis.rst:1011
+#: reference/lexical_analysis.rst:1012
 msgid "Delimiters"
 msgstr ""
 
-#: reference/lexical_analysis.rst:1015
+#: reference/lexical_analysis.rst:1016
 msgid "The following tokens serve as delimiters in the grammar:"
 msgstr ""
 
-#: reference/lexical_analysis.rst:1017
+#: reference/lexical_analysis.rst:1018
 msgid ""
 "(       )       [       ]       {       }\n"
 ",       :       !       .       ;       @       =\n"
@@ -1314,7 +1315,7 @@ msgid ""
 "@=      &=      |=      ^=      >>=     <<=     **="
 msgstr ""
 
-#: reference/lexical_analysis.rst:1024
+#: reference/lexical_analysis.rst:1025
 msgid ""
 "The period can also occur in floating-point and imaginary literals.  A "
 "sequence of three periods has a special meaning as an ellipsis literal. The "
@@ -1322,31 +1323,31 @@ msgid ""
 "as delimiters, but also perform an operation."
 msgstr ""
 
-#: reference/lexical_analysis.rst:1029
+#: reference/lexical_analysis.rst:1030
 msgid ""
 "The following printing ASCII characters have special meaning as part of "
 "other tokens or are otherwise significant to the lexical analyzer:"
 msgstr ""
 
-#: reference/lexical_analysis.rst:1032
+#: reference/lexical_analysis.rst:1033
 msgid "'       \"       #       \\"
 msgstr ""
 
-#: reference/lexical_analysis.rst:1036
+#: reference/lexical_analysis.rst:1037
 msgid ""
 "The following printing ASCII characters are not used in Python.  Their "
 "occurrence outside string literals and comments is an unconditional error:"
 msgstr ""
 
-#: reference/lexical_analysis.rst:1039
+#: reference/lexical_analysis.rst:1040
 msgid "$       ?       `"
 msgstr ""
 
-#: reference/lexical_analysis.rst:1045
+#: reference/lexical_analysis.rst:1046
 msgid "Footnotes"
 msgstr ""
 
-#: reference/lexical_analysis.rst:1046
+#: reference/lexical_analysis.rst:1047
 msgid "https://www.unicode.org/Public/15.0.0/ucd/NameAliases.txt"
 msgstr ""
 
@@ -1362,404 +1363,404 @@ msgstr ""
 msgid "token"
 msgstr ""
 
-#: reference/lexical_analysis.rst:25
+#: reference/lexical_analysis.rst:26
 msgid "line structure"
 msgstr ""
 
-#: reference/lexical_analysis.rst:35
+#: reference/lexical_analysis.rst:36
 msgid "logical line"
 msgstr ""
 
-#: reference/lexical_analysis.rst:35 reference/lexical_analysis.rst:114
-#: reference/lexical_analysis.rst:531
+#: reference/lexical_analysis.rst:36 reference/lexical_analysis.rst:115
+#: reference/lexical_analysis.rst:532
 msgid "physical line"
 msgstr ""
 
-#: reference/lexical_analysis.rst:35 reference/lexical_analysis.rst:114
+#: reference/lexical_analysis.rst:36 reference/lexical_analysis.rst:115
 msgid "line joining"
 msgstr ""
 
-#: reference/lexical_analysis.rst:35
+#: reference/lexical_analysis.rst:36
 msgid "NEWLINE token"
 msgstr ""
 
-#: reference/lexical_analysis.rst:67
+#: reference/lexical_analysis.rst:68
 msgid "comment"
 msgstr ""
 
-#: reference/lexical_analysis.rst:67
+#: reference/lexical_analysis.rst:68
 msgid "hash character"
 msgstr ""
 
-#: reference/lexical_analysis.rst:67 reference/lexical_analysis.rst:81
+#: reference/lexical_analysis.rst:68 reference/lexical_analysis.rst:82
 msgid "# (hash)"
 msgstr ""
 
-#: reference/lexical_analysis.rst:81
+#: reference/lexical_analysis.rst:82
 msgid "source character set"
 msgstr ""
 
-#: reference/lexical_analysis.rst:81
+#: reference/lexical_analysis.rst:82
 msgid "encoding declarations (source file)"
 msgstr ""
 
-#: reference/lexical_analysis.rst:81
+#: reference/lexical_analysis.rst:82
 msgid "source encoding declaration"
 msgstr ""
 
-#: reference/lexical_analysis.rst:114
+#: reference/lexical_analysis.rst:115
 msgid "line continuation"
 msgstr ""
 
-#: reference/lexical_analysis.rst:114
+#: reference/lexical_analysis.rst:115
 msgid "backslash character"
 msgstr ""
 
-#: reference/lexical_analysis.rst:159
+#: reference/lexical_analysis.rst:160
 msgid "blank line"
 msgstr ""
 
-#: reference/lexical_analysis.rst:174
+#: reference/lexical_analysis.rst:175
 msgid "indentation"
 msgstr ""
 
-#: reference/lexical_analysis.rst:174
+#: reference/lexical_analysis.rst:175
 msgid "leading whitespace"
 msgstr ""
 
-#: reference/lexical_analysis.rst:174
+#: reference/lexical_analysis.rst:175
 msgid "space"
 msgstr ""
 
-#: reference/lexical_analysis.rst:174
+#: reference/lexical_analysis.rst:175
 msgid "tab"
 msgstr ""
 
-#: reference/lexical_analysis.rst:174
+#: reference/lexical_analysis.rst:175
 msgid "grouping"
 msgstr ""
 
-#: reference/lexical_analysis.rst:174
+#: reference/lexical_analysis.rst:175
 msgid "statement grouping"
 msgstr ""
 
-#: reference/lexical_analysis.rst:202
+#: reference/lexical_analysis.rst:203
 msgid "INDENT token"
 msgstr ""
 
-#: reference/lexical_analysis.rst:202
+#: reference/lexical_analysis.rst:203
 msgid "DEDENT token"
 msgstr ""
 
-#: reference/lexical_analysis.rst:277
+#: reference/lexical_analysis.rst:278
 msgid "identifier"
 msgstr ""
 
-#: reference/lexical_analysis.rst:277
+#: reference/lexical_analysis.rst:278
 msgid "name"
 msgstr ""
 
-#: reference/lexical_analysis.rst:333 reference/lexical_analysis.rst:357
+#: reference/lexical_analysis.rst:334 reference/lexical_analysis.rst:358
 msgid "keyword"
 msgstr ""
 
-#: reference/lexical_analysis.rst:333
+#: reference/lexical_analysis.rst:334
 msgid "reserved word"
 msgstr ""
 
-#: reference/lexical_analysis.rst:357
+#: reference/lexical_analysis.rst:358
 msgid "soft keyword"
 msgstr ""
 
-#: reference/lexical_analysis.rst:376
+#: reference/lexical_analysis.rst:377
 msgid "_, identifiers"
 msgstr ""
 
-#: reference/lexical_analysis.rst:376
+#: reference/lexical_analysis.rst:377
 msgid "__, identifiers"
 msgstr ""
 
-#: reference/lexical_analysis.rst:432
+#: reference/lexical_analysis.rst:433
 msgid "literal"
 msgstr ""
 
-#: reference/lexical_analysis.rst:432
+#: reference/lexical_analysis.rst:433
 msgid "constant"
 msgstr ""
 
-#: reference/lexical_analysis.rst:437 reference/lexical_analysis.rst:478
+#: reference/lexical_analysis.rst:438 reference/lexical_analysis.rst:479
 msgid "string literal"
 msgstr ""
 
-#: reference/lexical_analysis.rst:437 reference/lexical_analysis.rst:491
+#: reference/lexical_analysis.rst:438 reference/lexical_analysis.rst:492
 msgid "bytes literal"
 msgstr ""
 
-#: reference/lexical_analysis.rst:437
+#: reference/lexical_analysis.rst:438
 msgid "ASCII"
 msgstr ""
 
-#: reference/lexical_analysis.rst:437
+#: reference/lexical_analysis.rst:438
 msgid "' (single quote)"
 msgstr ""
 
-#: reference/lexical_analysis.rst:437
+#: reference/lexical_analysis.rst:438
 msgid "\" (double quote)"
 msgstr ""
 
-#: reference/lexical_analysis.rst:437
+#: reference/lexical_analysis.rst:438
 msgid "u'"
 msgstr ""
 
-#: reference/lexical_analysis.rst:437
+#: reference/lexical_analysis.rst:438
 msgid "u\""
 msgstr ""
 
-#: reference/lexical_analysis.rst:478
+#: reference/lexical_analysis.rst:479
 msgid "triple-quoted string"
 msgstr ""
 
-#: reference/lexical_analysis.rst:478
+#: reference/lexical_analysis.rst:479
 msgid "Unicode Consortium"
 msgstr ""
 
-#: reference/lexical_analysis.rst:478
+#: reference/lexical_analysis.rst:479
 msgid "raw string"
 msgstr ""
 
-#: reference/lexical_analysis.rst:478
+#: reference/lexical_analysis.rst:479
 msgid "\"\"\""
 msgstr ""
 
-#: reference/lexical_analysis.rst:478
+#: reference/lexical_analysis.rst:479
 msgid "'''"
 msgstr ""
 
-#: reference/lexical_analysis.rst:491
+#: reference/lexical_analysis.rst:492
 msgid "b'"
 msgstr ""
 
-#: reference/lexical_analysis.rst:491
+#: reference/lexical_analysis.rst:492
 msgid "b\""
 msgstr ""
 
-#: reference/lexical_analysis.rst:500
+#: reference/lexical_analysis.rst:501
 msgid "r'"
 msgstr ""
 
-#: reference/lexical_analysis.rst:500
+#: reference/lexical_analysis.rst:501
 msgid "raw string literal"
 msgstr ""
 
-#: reference/lexical_analysis.rst:500
+#: reference/lexical_analysis.rst:501
 msgid "r\""
 msgstr ""
 
-#: reference/lexical_analysis.rst:518
+#: reference/lexical_analysis.rst:519
 msgid "f'"
 msgstr ""
 
-#: reference/lexical_analysis.rst:518 reference/lexical_analysis.rst:696
+#: reference/lexical_analysis.rst:519 reference/lexical_analysis.rst:697
 msgid "formatted string literal"
 msgstr ""
 
-#: reference/lexical_analysis.rst:518
+#: reference/lexical_analysis.rst:519
 msgid "f\""
 msgstr ""
 
-#: reference/lexical_analysis.rst:531
+#: reference/lexical_analysis.rst:532
 msgid "escape sequence"
 msgstr ""
 
-#: reference/lexical_analysis.rst:531
+#: reference/lexical_analysis.rst:532
 msgid "Standard C"
 msgstr ""
 
-#: reference/lexical_analysis.rst:531
+#: reference/lexical_analysis.rst:532
 msgid "C"
 msgstr ""
 
-#: reference/lexical_analysis.rst:531
+#: reference/lexical_analysis.rst:532
 msgid "\\ (backslash)"
 msgstr ""
 
-#: reference/lexical_analysis.rst:531
+#: reference/lexical_analysis.rst:532
 msgid "\\\\"
 msgstr ""
 
-#: reference/lexical_analysis.rst:531
+#: reference/lexical_analysis.rst:532
 msgid "\\a"
 msgstr ""
 
-#: reference/lexical_analysis.rst:531
+#: reference/lexical_analysis.rst:532
 msgid "\\b"
 msgstr ""
 
-#: reference/lexical_analysis.rst:531
+#: reference/lexical_analysis.rst:532
 msgid "\\f"
 msgstr ""
 
-#: reference/lexical_analysis.rst:531
+#: reference/lexical_analysis.rst:532
 msgid "\\n"
 msgstr ""
 
-#: reference/lexical_analysis.rst:531
+#: reference/lexical_analysis.rst:532
 msgid "\\r"
 msgstr ""
 
-#: reference/lexical_analysis.rst:531
+#: reference/lexical_analysis.rst:532
 msgid "\\t"
 msgstr ""
 
-#: reference/lexical_analysis.rst:531
+#: reference/lexical_analysis.rst:532
 msgid "\\v"
 msgstr ""
 
-#: reference/lexical_analysis.rst:531
+#: reference/lexical_analysis.rst:532
 msgid "\\x"
 msgstr ""
 
-#: reference/lexical_analysis.rst:531
+#: reference/lexical_analysis.rst:532
 msgid "\\N"
 msgstr ""
 
-#: reference/lexical_analysis.rst:531
+#: reference/lexical_analysis.rst:532
 msgid "\\u"
 msgstr ""
 
-#: reference/lexical_analysis.rst:531
+#: reference/lexical_analysis.rst:532
 msgid "\\U"
 msgstr ""
 
-#: reference/lexical_analysis.rst:647
+#: reference/lexical_analysis.rst:648
 msgid "unrecognized escape sequence"
 msgstr ""
 
-#: reference/lexical_analysis.rst:696
+#: reference/lexical_analysis.rst:697
 msgid "interpolated string literal"
 msgstr ""
 
-#: reference/lexical_analysis.rst:696
+#: reference/lexical_analysis.rst:697
 msgid "string"
 msgstr ""
 
-#: reference/lexical_analysis.rst:696
+#: reference/lexical_analysis.rst:697
 msgid "formatted literal"
 msgstr ""
 
-#: reference/lexical_analysis.rst:696
+#: reference/lexical_analysis.rst:697
 msgid "interpolated literal"
 msgstr ""
 
-#: reference/lexical_analysis.rst:696
+#: reference/lexical_analysis.rst:697
 msgid "f-string"
 msgstr ""
 
-#: reference/lexical_analysis.rst:696
+#: reference/lexical_analysis.rst:697
 msgid "fstring"
 msgstr ""
 
-#: reference/lexical_analysis.rst:696
+#: reference/lexical_analysis.rst:697
 msgid "{} (curly brackets)"
 msgstr ""
 
-#: reference/lexical_analysis.rst:696
+#: reference/lexical_analysis.rst:697
 msgid "in formatted string literal"
 msgstr ""
 
-#: reference/lexical_analysis.rst:696
+#: reference/lexical_analysis.rst:697
 msgid "! (exclamation)"
 msgstr ""
 
-#: reference/lexical_analysis.rst:696
+#: reference/lexical_analysis.rst:697
 msgid ": (colon)"
 msgstr ""
 
-#: reference/lexical_analysis.rst:696
+#: reference/lexical_analysis.rst:697
 msgid "= (equals)"
 msgstr ""
 
-#: reference/lexical_analysis.rst:696
+#: reference/lexical_analysis.rst:697
 msgid "for help in debugging using string literals"
 msgstr ""
 
-#: reference/lexical_analysis.rst:879
+#: reference/lexical_analysis.rst:880
 msgid "number"
 msgstr ""
 
-#: reference/lexical_analysis.rst:879
+#: reference/lexical_analysis.rst:880
 msgid "numeric literal"
 msgstr ""
 
-#: reference/lexical_analysis.rst:879 reference/lexical_analysis.rst:892
+#: reference/lexical_analysis.rst:880 reference/lexical_analysis.rst:893
 msgid "integer literal"
 msgstr ""
 
-#: reference/lexical_analysis.rst:879
+#: reference/lexical_analysis.rst:880
 msgid "floating-point literal"
 msgstr ""
 
-#: reference/lexical_analysis.rst:879
+#: reference/lexical_analysis.rst:880
 msgid "hexadecimal literal"
 msgstr ""
 
-#: reference/lexical_analysis.rst:879
+#: reference/lexical_analysis.rst:880
 msgid "octal literal"
 msgstr ""
 
-#: reference/lexical_analysis.rst:879
+#: reference/lexical_analysis.rst:880
 msgid "binary literal"
 msgstr ""
 
-#: reference/lexical_analysis.rst:879
+#: reference/lexical_analysis.rst:880
 msgid "decimal literal"
 msgstr ""
 
-#: reference/lexical_analysis.rst:879
+#: reference/lexical_analysis.rst:880
 msgid "imaginary literal"
 msgstr ""
 
-#: reference/lexical_analysis.rst:879
+#: reference/lexical_analysis.rst:880
 msgid "complex literal"
 msgstr ""
 
-#: reference/lexical_analysis.rst:892
+#: reference/lexical_analysis.rst:893
 msgid "0b"
 msgstr ""
 
-#: reference/lexical_analysis.rst:892
+#: reference/lexical_analysis.rst:893
 msgid "0o"
 msgstr ""
 
-#: reference/lexical_analysis.rst:892
+#: reference/lexical_analysis.rst:893
 msgid "0x"
 msgstr ""
 
-#: reference/lexical_analysis.rst:892 reference/lexical_analysis.rst:938
+#: reference/lexical_analysis.rst:893 reference/lexical_analysis.rst:939
 msgid "_ (underscore)"
 msgstr ""
 
-#: reference/lexical_analysis.rst:892 reference/lexical_analysis.rst:938
-#: reference/lexical_analysis.rst:970
+#: reference/lexical_analysis.rst:893 reference/lexical_analysis.rst:939
+#: reference/lexical_analysis.rst:971
 msgid "in numeric literal"
 msgstr ""
 
-#: reference/lexical_analysis.rst:938
+#: reference/lexical_analysis.rst:939
 msgid ". (dot)"
 msgstr ""
 
-#: reference/lexical_analysis.rst:938
+#: reference/lexical_analysis.rst:939
 msgid "e"
 msgstr ""
 
-#: reference/lexical_analysis.rst:970
+#: reference/lexical_analysis.rst:971
 msgid "j"
 msgstr ""
 
-#: reference/lexical_analysis.rst:996
+#: reference/lexical_analysis.rst:997
 msgid "operators"
 msgstr ""
 
-#: reference/lexical_analysis.rst:1013
+#: reference/lexical_analysis.rst:1014
 msgid "delimiters"
 msgstr ""
diff --git a/reference/simple_stmts.po b/reference/simple_stmts.po
index 70127a27b..d0bbb0d43 100644
--- a/reference/simple_stmts.po
+++ b/reference/simple_stmts.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -442,12 +442,13 @@ msgstr ""
 msgid ""
 "These equivalences assume that :const:`__debug__` and :exc:`AssertionError` "
 "refer to the built-in variables with those names.  In the current "
-"implementation, the built-in variable :const:`__debug__` is ``True`` under "
-"normal circumstances, ``False`` when optimization is requested (command line "
-"option :option:`-O`).  The current code generator emits no code for an "
-"assert statement when optimization is requested at compile time.  Note that "
-"it is unnecessary to include the source code for the expression that failed "
-"in the error message; it will be displayed as part of the stack trace."
+"implementation, the built-in variable ``__debug__`` is ``True`` under normal "
+"circumstances, ``False`` when optimization is requested (command line "
+"option :option:`-O`).  The current code generator emits no code for an :"
+"keyword:`assert` statement when optimization is requested at compile time.  "
+"Note that it is unnecessary to include the source code for the expression "
+"that failed in the error message; it will be displayed as part of the stack "
+"trace."
 msgstr ""
 
 #: reference/simple_stmts.rst:416
@@ -564,7 +565,7 @@ msgstr ""
 #: reference/simple_stmts.rst:533
 msgid ""
 "A :keyword:`yield` statement is semantically equivalent to a :ref:`yield "
-"expression <yieldexpr>`. The yield statement can be used to omit the "
+"expression <yieldexpr>`. The ``yield`` statement can be used to omit the "
 "parentheses that would otherwise be required in the equivalent yield "
 "expression statement. For example, the yield statements ::"
 msgstr ""
@@ -589,8 +590,9 @@ msgstr ""
 msgid ""
 "Yield expressions and statements are only used when defining a :term:"
 "`generator` function, and are only used in the body of the generator "
-"function.  Using yield in a function definition is sufficient to cause that "
-"definition to create a generator function instead of a normal function."
+"function.  Using :keyword:`yield` in a function definition is sufficient to "
+"cause that definition to create a generator function instead of a normal "
+"function."
 msgstr ""
 
 #: reference/simple_stmts.rst:551
@@ -1100,35 +1102,20 @@ msgstr ""
 
 #: reference/simple_stmts.rst:967
 msgid ""
-"The :keyword:`global` statement is a declaration which holds for the entire "
-"current code block.  It means that the listed identifiers are to be "
-"interpreted as globals.  It would be impossible to assign to a global "
+"The :keyword:`global` statement causes the listed identifiers to be "
+"interpreted as globals. It would be impossible to assign to a global "
 "variable without :keyword:`!global`, although free variables may refer to "
 "globals without being declared global."
 msgstr ""
 
-#: reference/simple_stmts.rst:973
+#: reference/simple_stmts.rst:972
 msgid ""
-"Names listed in a :keyword:`global` statement must not be used in the same "
-"code block textually preceding that :keyword:`!global` statement."
+"The :keyword:`global` statement applies to the entire scope of a function or "
+"class body. A :exc:`SyntaxError` is raised if a variable is used or assigned "
+"to prior to its global declaration in the scope."
 msgstr ""
 
-#: reference/simple_stmts.rst:976
-msgid ""
-"Names listed in a :keyword:`global` statement must not be defined as formal "
-"parameters, or as targets in :keyword:`with` statements or :keyword:`except` "
-"clauses, or in a :keyword:`for` target list, :keyword:`class` definition, "
-"function definition, :keyword:`import` statement, or variable annotation."
-msgstr ""
-
-#: reference/simple_stmts.rst:983
-msgid ""
-"The current implementation does not enforce some of these restrictions, but "
-"programs should not abuse this freedom, as future implementations may "
-"enforce them or silently change the meaning of the program."
-msgstr ""
-
-#: reference/simple_stmts.rst:992
+#: reference/simple_stmts.rst:981
 msgid ""
 "**Programmer's note:** :keyword:`global` is a directive to the parser.  It "
 "applies only to code parsed at the same time as the :keyword:`!global` "
@@ -1140,11 +1127,11 @@ msgid ""
 "func:`compile` functions."
 msgstr ""
 
-#: reference/simple_stmts.rst:1004
+#: reference/simple_stmts.rst:993
 msgid "The :keyword:`!nonlocal` statement"
 msgstr ""
 
-#: reference/simple_stmts.rst:1012
+#: reference/simple_stmts.rst:1001
 msgid ""
 "When the definition of a function or class is nested (enclosed) within the "
 "definitions of other functions, its nonlocal scopes are the local scopes of "
@@ -1156,64 +1143,64 @@ msgid ""
 "`SyntaxError` is raised."
 msgstr ""
 
-#: reference/simple_stmts.rst:1021
+#: reference/simple_stmts.rst:1010
 msgid ""
-"The nonlocal statement applies to the entire scope of a function or class "
-"body. A :exc:`SyntaxError` is raised if a variable is used or assigned to "
-"prior to its nonlocal declaration in the scope."
+"The :keyword:`nonlocal` statement applies to the entire scope of a function "
+"or class body. A :exc:`SyntaxError` is raised if a variable is used or "
+"assigned to prior to its nonlocal declaration in the scope."
 msgstr ""
 
-#: reference/simple_stmts.rst:1027
+#: reference/simple_stmts.rst:1016
 msgid ":pep:`3104` - Access to Names in Outer Scopes"
 msgstr ""
 
-#: reference/simple_stmts.rst:1028
+#: reference/simple_stmts.rst:1017
 msgid "The specification for the :keyword:`nonlocal` statement."
 msgstr ""
 
-#: reference/simple_stmts.rst:1030
+#: reference/simple_stmts.rst:1019
 msgid ""
 "**Programmer's note:** :keyword:`nonlocal` is a directive to the parser and "
 "applies only to code parsed along with it.  See the note for the :keyword:"
 "`global` statement."
 msgstr ""
 
-#: reference/simple_stmts.rst:1038
+#: reference/simple_stmts.rst:1027
 msgid "The :keyword:`!type` statement"
 msgstr ""
 
-#: reference/simple_stmts.rst:1045
+#: reference/simple_stmts.rst:1034
 msgid ""
 "The :keyword:`!type` statement declares a type alias, which is an instance "
 "of :class:`typing.TypeAliasType`."
 msgstr ""
 
-#: reference/simple_stmts.rst:1048
+#: reference/simple_stmts.rst:1037
 msgid "For example, the following statement creates a type alias::"
 msgstr ""
 
-#: reference/simple_stmts.rst:1050
+#: reference/simple_stmts.rst:1039
 msgid "type Point = tuple[float, float]"
 msgstr ""
 
-#: reference/simple_stmts.rst:1052
+#: reference/simple_stmts.rst:1041
 msgid "This code is roughly equivalent to::"
 msgstr ""
 
-#: reference/simple_stmts.rst:1054
+#: reference/simple_stmts.rst:1043
 msgid ""
 "annotation-def VALUE_OF_Point():\n"
 "    return tuple[float, float]\n"
 "Point = typing.TypeAliasType(\"Point\", VALUE_OF_Point())"
 msgstr ""
 
-#: reference/simple_stmts.rst:1058
+#: reference/simple_stmts.rst:1047
 msgid ""
 "``annotation-def`` indicates an :ref:`annotation scope <annotation-scopes>`, "
 "which behaves mostly like a function, but with several small differences."
 msgstr ""
 
-#: reference/simple_stmts.rst:1061
+#: reference/simple_stmts.rst:1050
 msgid ""
 "The value of the type alias is evaluated in the annotation scope. It is not "
 "evaluated when the type alias is created, but only when the value is "
@@ -1222,21 +1209,21 @@ msgid ""
 "not yet defined."
 msgstr ""
 
-#: reference/simple_stmts.rst:1067
+#: reference/simple_stmts.rst:1056
 msgid ""
 "Type aliases may be made generic by adding a :ref:`type parameter list <type-"
 "params>` after the name. See :ref:`generic-type-aliases` for more."
 msgstr ""
 
-#: reference/simple_stmts.rst:1070
+#: reference/simple_stmts.rst:1059
 msgid ":keyword:`!type` is a :ref:`soft keyword <soft-keywords>`."
 msgstr ""
 
-#: reference/simple_stmts.rst:1076
+#: reference/simple_stmts.rst:1065
 msgid ":pep:`695` - Type Parameter Syntax"
 msgstr ""
 
-#: reference/simple_stmts.rst:1077
+#: reference/simple_stmts.rst:1066
 msgid ""
 "Introduced the :keyword:`!type` statement and syntax for generic classes and "
 "functions."
@@ -1250,7 +1237,7 @@ msgstr ""
 #: reference/simple_stmts.rst:382 reference/simple_stmts.rst:447
 #: reference/simple_stmts.rst:486 reference/simple_stmts.rst:559
 #: reference/simple_stmts.rst:718 reference/simple_stmts.rst:873
-#: reference/simple_stmts.rst:1006 reference/simple_stmts.rst:1040
+#: reference/simple_stmts.rst:995 reference/simple_stmts.rst:1029
 msgid "statement"
 msgstr ""
 
@@ -1263,7 +1250,7 @@ msgstr ""
 msgid "list"
 msgstr ""
 
-#: reference/simple_stmts.rst:987
+#: reference/simple_stmts.rst:976
 msgid "built-in function"
 msgstr ""
 
@@ -1351,7 +1338,7 @@ msgid "target"
 msgstr ""
 
 #: reference/simple_stmts.rst:382 reference/simple_stmts.rst:959
-#: reference/simple_stmts.rst:1006
+#: reference/simple_stmts.rst:995
 msgid ", (comma)"
 msgstr ""
 
@@ -1677,26 +1664,26 @@ msgstr ""
 msgid "future statement"
 msgstr ""
 
-#: reference/simple_stmts.rst:1006
+#: reference/simple_stmts.rst:995
 msgid "identifier list"
 msgstr ""
 
-#: reference/simple_stmts.rst:987
+#: reference/simple_stmts.rst:976
 msgid "exec"
 msgstr ""
 
-#: reference/simple_stmts.rst:987
+#: reference/simple_stmts.rst:976
 msgid "eval"
 msgstr ""
 
-#: reference/simple_stmts.rst:987
+#: reference/simple_stmts.rst:976
 msgid "compile"
 msgstr ""
 
-#: reference/simple_stmts.rst:1006
+#: reference/simple_stmts.rst:995
 msgid "nonlocal"
 msgstr ""
 
-#: reference/simple_stmts.rst:1040
+#: reference/simple_stmts.rst:1029
 msgid "type"
 msgstr ""
diff --git a/sphinx.po b/sphinx.po
index ee6a66418..7a603d643 100644
--- a/sphinx.po
+++ b/sphinx.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: 2022-12-28 16:25-0500\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -33,116 +33,116 @@ msgstr "Kaynağı Göster"
 msgid "Download"
 msgstr "İndir"
 
-#: tools/templates/download.html:16
+#: tools/templates/download.html:30
 #, fuzzy
 msgid "Download Python %(dl_version)s Documentation"
 msgstr "Dokümantasyonu indir"
 
-#: tools/templates/download.html:18
+#: tools/templates/download.html:32
 msgid "Last updated on: %(last_updated)s."
 msgstr ""
 
-#: tools/templates/download.html:20
+#: tools/templates/download.html:34
 msgid ""
 "To download an archive containing all the documents for this version of\n"
 "Python in one of various formats, follow one of links in this table."
 msgstr ""
 
-#: tools/templates/download.html:25
+#: tools/templates/download.html:39
 msgid "Format"
 msgstr ""
 
-#: tools/templates/download.html:26
+#: tools/templates/download.html:40
 msgid "Packed as .zip"
 msgstr ""
 
-#: tools/templates/download.html:27
+#: tools/templates/download.html:41
 msgid "Packed as .tar.bz2"
 msgstr ""
 
-#: tools/templates/download.html:30
+#: tools/templates/download.html:44
 msgid "PDF"
 msgstr ""
 
-#: tools/templates/download.html:31
+#: tools/templates/download.html:45
 msgid ""
 "<a href=\"%(dl_base)s/python-%(dl_version)s-docs-pdf-a4.zip\">Download</a> "
 "(ca. %(download_size)s MiB)"
 msgstr ""
 
-#: tools/templates/download.html:32
+#: tools/templates/download.html:46
 msgid ""
 "<a href=\"%(dl_base)s/python-%(dl_version)s-docs-pdf-a4.tar.bz2\">Download</"
 "a> (ca. %(download_size)s MiB)"
 msgstr ""
 
-#: tools/templates/download.html:35
+#: tools/templates/download.html:49
 msgid "HTML"
 msgstr ""
 
-#: tools/templates/download.html:36
+#: tools/templates/download.html:50
 msgid ""
 "<a href=\"%(dl_base)s/python-%(dl_version)s-docs-html.zip\">Download</a> "
 "(ca. %(download_size)s MiB)"
 msgstr ""
 
-#: tools/templates/download.html:37
+#: tools/templates/download.html:51
 msgid ""
 "<a href=\"%(dl_base)s/python-%(dl_version)s-docs-html.tar.bz2\">Download</a> "
 "(ca. %(download_size)s MiB)"
 msgstr ""
 
-#: tools/templates/download.html:40
+#: tools/templates/download.html:54
 msgid "Plain text"
 msgstr ""
 
-#: tools/templates/download.html:41
+#: tools/templates/download.html:55
 msgid ""
 "<a href=\"%(dl_base)s/python-%(dl_version)s-docs-text.zip\">Download</a> "
 "(ca. %(download_size)s MiB)"
 msgstr ""
 
-#: tools/templates/download.html:42
+#: tools/templates/download.html:56
 msgid ""
 "<a href=\"%(dl_base)s/python-%(dl_version)s-docs-text.tar.bz2\">Download</a> "
 "(ca. %(download_size)s MiB)"
 msgstr ""
 
-#: tools/templates/download.html:45
+#: tools/templates/download.html:59
 msgid "Texinfo"
 msgstr ""
 
-#: tools/templates/download.html:46
+#: tools/templates/download.html:60
 msgid ""
 "<a href=\"%(dl_base)s/python-%(dl_version)s-docs-texinfo.zip\">Download</a> "
 "(ca. %(download_size)s MiB)"
 msgstr ""
 
-#: tools/templates/download.html:47
+#: tools/templates/download.html:61
 msgid ""
 "<a href=\"%(dl_base)s/python-%(dl_version)s-docs-texinfo.tar.bz2\">Download</"
 "a> (ca. %(download_size)s MiB)"
 msgstr ""
 
-#: tools/templates/download.html:50
+#: tools/templates/download.html:64
 msgid "EPUB"
 msgstr ""
 
-#: tools/templates/download.html:51
+#: tools/templates/download.html:65
 msgid ""
 "<a href=\"%(dl_base)s/python-%(dl_version)s-docs.epub\">Download</a> (ca. "
 "%(download_size)s MiB)"
 msgstr ""
 
-#: tools/templates/download.html:56
+#: tools/templates/download.html:70
 msgid "These archives contain all the content in the documentation."
 msgstr ""
 
-#: tools/templates/download.html:59
+#: tools/templates/download.html:73
 msgid "Unpacking"
 msgstr ""
 
-#: tools/templates/download.html:61
+#: tools/templates/download.html:75
 msgid ""
 "Unix users should download the .tar.bz2 archives; these are bzipped tar\n"
 "archives and can be handled in the usual way using tar and the bzip2\n"
@@ -153,17 +153,17 @@ msgid ""
 "best compression and fastest download times."
 msgstr ""
 
-#: tools/templates/download.html:67
+#: tools/templates/download.html:81
 msgid ""
 "Windows users can use the ZIP archives since those are customary on that\n"
 "platform. These are created on Unix using the Info-ZIP zip program."
 msgstr ""
 
-#: tools/templates/download.html:71
+#: tools/templates/download.html:85
 msgid "Problems"
 msgstr ""
 
-#: tools/templates/download.html:73
+#: tools/templates/download.html:87
 msgid ""
 "If you have comments or suggestions for the Python documentation, please "
 "send\n"
@@ -171,107 +171,111 @@ msgid ""
 msgstr ""
 
 #: tools/templates/dummy.html:6
-msgid "CPython implementation detail:"
-msgstr "CPython uygulama ayrıntısı:"
-
-#: tools/templates/dummy.html:7
-msgid ""
-"Deprecated since version {deprecated}, will be removed in version {removed}"
-msgstr ""
-"Sürüm {deprecated} 'den beri kullanım dışı, sürüm {removed} 'da kaldırılacak"
-
-#: tools/templates/dummy.html:8
-msgid "Deprecated since version {deprecated}, removed in version {removed}"
+msgid "Availability"
 msgstr ""
-"Sürüm {deprecated} 'den beri kullanım dışı, sürüm {removed} 'da kaldırıldı"
 
-#: tools/templates/dummy.html:12
+#: tools/templates/dummy.html:10
 msgid "Part of the"
 msgstr "Bir parçası"
 
-#: tools/templates/dummy.html:13
+#: tools/templates/dummy.html:11
 msgid "Limited API"
 msgstr "Sınırlı API"
 
-#: tools/templates/dummy.html:14
+#: tools/templates/dummy.html:12
 msgid "Stable ABI"
 msgstr "Kararlı ABI"
 
-#: tools/templates/dummy.html:15
+#: tools/templates/dummy.html:13
 msgid "(as an opaque struct)"
 msgstr "(bir opak yapı olarak)"
 
-#: tools/templates/dummy.html:16
+#: tools/templates/dummy.html:14
 msgid "(including all members)"
 msgstr "(tüm üyeler dahil)"
 
-#: tools/templates/dummy.html:17
+#: tools/templates/dummy.html:15
 msgid "since version %s"
 msgstr "%s sürümünden beri"
 
-#: tools/templates/dummy.html:18
+#: tools/templates/dummy.html:16
 msgid "(Only some members are part of the stable ABI.)"
 msgstr "(Sadece bazı üyeler kararlı ABI'ın bir parçasıdır.)"
 
-#: tools/templates/dummy.html:19
+#: tools/templates/dummy.html:17
 msgid "This is"
 msgstr "Bu"
 
-#: tools/templates/dummy.html:20
+#: tools/templates/dummy.html:18
 msgid "Unstable API"
 msgstr "Kararsız API"
 
-#: tools/templates/dummy.html:21
+#: tools/templates/dummy.html:19
 msgid ". It may change without warning in minor releases."
 msgstr ". Bu, küçük (minor) sürümlerde uyarı olmadan değişebilir."
 
-#: tools/templates/dummy.html:22
+#: tools/templates/dummy.html:20
 msgid "Return value: Always NULL."
 msgstr "Döndürdüğü değer: Her zaman NULL."
 
-#: tools/templates/dummy.html:23
+#: tools/templates/dummy.html:21
 msgid "Return value: New reference."
 msgstr "Döndürdüğü değer: Yeni referans."
 
-#: tools/templates/dummy.html:24
+#: tools/templates/dummy.html:22
 msgid "Return value: Borrowed reference."
 msgstr "Döndürdüğü değer: Ödünç alınmış referans."
 
-#: tools/templates/dummy.html:28
+#: tools/templates/dummy.html:26
+msgid "CPython implementation detail:"
+msgstr "CPython uygulama ayrıntısı:"
+
+#: tools/templates/dummy.html:30
+msgid ""
+"Deprecated since version {deprecated}, will be removed in version {removed}"
+msgstr ""
+"Sürüm {deprecated} 'den beri kullanım dışı, sürüm {removed} 'da kaldırılacak"
+
+#: tools/templates/dummy.html:31
+msgid "Deprecated since version {deprecated}, removed in version {removed}"
+msgstr ""
+"Sürüm {deprecated} 'den beri kullanım dışı, sürüm {removed} 'da kaldırıldı"
+
+#: tools/templates/dummy.html:35
 msgid "in development"
 msgstr "geliştirme aşamasında"
 
-#: tools/templates/dummy.html:29
+#: tools/templates/dummy.html:36
 msgid "pre-release"
 msgstr "önsürüm"
 
-#: tools/templates/dummy.html:30
+#: tools/templates/dummy.html:37
 msgid "stable"
 msgstr "kararlı"
 
-#: tools/templates/dummy.html:31
+#: tools/templates/dummy.html:38
 msgid "security-fixes"
 msgstr "güvenlik düzeltmeleri"
 
-#: tools/templates/dummy.html:32
+#: tools/templates/dummy.html:39
 msgid "EOL"
 msgstr "EOL"
 
-#: tools/templates/indexcontent.html:8
+#: tools/templates/indexcontent.html:21
 msgid "Welcome! This is the official documentation for Python %(release)s."
 msgstr ""
 "Hoş geldin! Bu sayfada, Python %(release)s için resmi dokümantasyonu "
 "bulabilirsin."
 
-#: tools/templates/indexcontent.html:10
+#: tools/templates/indexcontent.html:23
 msgid "Documentation sections:"
 msgstr ""
 
-#: tools/templates/indexcontent.html:13
+#: tools/templates/indexcontent.html:26
 msgid "What's new in Python %(version)s?"
 msgstr "Python %(version)s sürümündeki yenilikler nelerdir?"
 
-#: tools/templates/indexcontent.html:14
+#: tools/templates/indexcontent.html:27
 #, fuzzy
 msgid ""
 "Or <a href=\"%(whatsnew_index)s\">all \"What's new\" documents since Python "
@@ -280,183 +284,183 @@ msgstr ""
 "veya 2.0'dan bu yana <a href=\"%(whatsnew_index)s\">tüm \"Yenilikler\" "
 "belgeleri</a>"
 
-#: tools/templates/indexcontent.html:15
+#: tools/templates/indexcontent.html:28
 msgid "Tutorial"
 msgstr "Öğretici"
 
-#: tools/templates/indexcontent.html:16
+#: tools/templates/indexcontent.html:29
 msgid "Start here: a tour of Python's syntax and features"
 msgstr ""
 
-#: tools/templates/indexcontent.html:17
+#: tools/templates/indexcontent.html:30
 #, fuzzy
 msgid "Library reference"
 msgstr "Kütüphane Referansı"
 
-#: tools/templates/indexcontent.html:18
+#: tools/templates/indexcontent.html:31
 msgid "Standard library and builtins"
 msgstr ""
 
-#: tools/templates/indexcontent.html:19
+#: tools/templates/indexcontent.html:32
 #, fuzzy
 msgid "Language reference"
 msgstr "Dil Referansı"
 
-#: tools/templates/indexcontent.html:20
+#: tools/templates/indexcontent.html:33
 #, fuzzy
 msgid "Syntax and language elements"
 msgstr "söz dizimi ve dil öğelerini açıklar"
 
-#: tools/templates/indexcontent.html:21
+#: tools/templates/indexcontent.html:34
 #, fuzzy
 msgid "Python setup and usage"
 msgstr "Python Kurulumu ve Kullanımı"
 
-#: tools/templates/indexcontent.html:22
+#: tools/templates/indexcontent.html:35
 msgid "How to install, configure, and use Python"
 msgstr ""
 
-#: tools/templates/indexcontent.html:23
+#: tools/templates/indexcontent.html:36
 msgid "Python HOWTOs"
 msgstr "Python NASIL'ları"
 
-#: tools/templates/indexcontent.html:24
+#: tools/templates/indexcontent.html:37
 msgid "In-depth topic manuals"
 msgstr ""
 
-#: tools/templates/indexcontent.html:26
+#: tools/templates/indexcontent.html:39
 #, fuzzy
 msgid "Installing Python modules"
 msgstr "Python Modüllerini Yükleme"
 
-#: tools/templates/indexcontent.html:27
+#: tools/templates/indexcontent.html:40
 msgid "Third-party modules and PyPI.org"
 msgstr ""
 
-#: tools/templates/indexcontent.html:28
+#: tools/templates/indexcontent.html:41
 #, fuzzy
 msgid "Distributing Python modules"
 msgstr "Python Modüllerini Dağıtma"
 
-#: tools/templates/indexcontent.html:29
+#: tools/templates/indexcontent.html:42
 #, fuzzy
 msgid "Publishing modules for use by other people"
 msgstr "modülleri başkaları tarafından yüklenmek üzere yayımlama"
 
-#: tools/templates/indexcontent.html:30
+#: tools/templates/indexcontent.html:43
 #, fuzzy
 msgid "Extending and embedding"
 msgstr "Genişletme ve Gömme"
 
-#: tools/templates/indexcontent.html:31
+#: tools/templates/indexcontent.html:44
 #, fuzzy
 msgid "For C/C++ programmers"
 msgstr "C/C++ programcıları için öğretici"
 
-#: tools/templates/indexcontent.html:32
+#: tools/templates/indexcontent.html:45
 #, fuzzy
 msgid "Python's C API"
 msgstr "Python/C API (Uygulama Programlama Arayüzü)"
 
-#: tools/templates/indexcontent.html:33
+#: tools/templates/indexcontent.html:46
 msgid "C API reference"
 msgstr ""
 
-#: tools/templates/indexcontent.html:34
+#: tools/templates/indexcontent.html:47
 msgid "FAQs"
 msgstr "SSS (Sıkça Sorulan Sorular)"
 
-#: tools/templates/indexcontent.html:35
+#: tools/templates/indexcontent.html:48
 #, fuzzy
 msgid "Frequently asked questions (with answers!)"
 msgstr "sıkça sorulan sorular (cevaplarla!)"
 
-#: tools/templates/indexcontent.html:36
+#: tools/templates/indexcontent.html:49
 msgid "Deprecations"
 msgstr ""
 
-#: tools/templates/indexcontent.html:37
+#: tools/templates/indexcontent.html:50
 msgid "Deprecated functionality"
 msgstr ""
 
-#: tools/templates/indexcontent.html:41
+#: tools/templates/indexcontent.html:54
 msgid "Indices, glossary, and search:"
 msgstr ""
 
-#: tools/templates/indexcontent.html:44
+#: tools/templates/indexcontent.html:57
 #, fuzzy
 msgid "Global module index"
 msgstr "Genel Modül Endeksi"
 
-#: tools/templates/indexcontent.html:45
+#: tools/templates/indexcontent.html:58
 msgid "All modules and libraries"
 msgstr ""
 
-#: tools/templates/indexcontent.html:46
+#: tools/templates/indexcontent.html:59
 #, fuzzy
 msgid "General index"
 msgstr "Genel Endeks"
 
-#: tools/templates/indexcontent.html:47
+#: tools/templates/indexcontent.html:60
 #, fuzzy
 msgid "All functions, classes, and terms"
 msgstr "tüm fonksiyonlar, sınıflar, terimler"
 
-#: tools/templates/indexcontent.html:48
+#: tools/templates/indexcontent.html:61
 msgid "Glossary"
 msgstr "Sözlük"
 
-#: tools/templates/indexcontent.html:49
+#: tools/templates/indexcontent.html:62
 msgid "Terms explained"
 msgstr ""
 
-#: tools/templates/indexcontent.html:51
+#: tools/templates/indexcontent.html:64
 msgid "Search page"
 msgstr "Arama sayfası"
 
-#: tools/templates/indexcontent.html:52
+#: tools/templates/indexcontent.html:65
 #, fuzzy
 msgid "Search this documentation"
 msgstr "bu dokümantasyonu ara"
 
-#: tools/templates/indexcontent.html:53
+#: tools/templates/indexcontent.html:66
 #, fuzzy
 msgid "Complete table of contents"
 msgstr "Bütün İçeriklerin Tablosu"
 
-#: tools/templates/indexcontent.html:54
+#: tools/templates/indexcontent.html:67
 #, fuzzy
 msgid "Lists all sections and subsections"
 msgstr "tüm bölümleri ve alt bölümleri listeler"
 
-#: tools/templates/indexcontent.html:58
+#: tools/templates/indexcontent.html:71
 #, fuzzy
 msgid "Project information:"
 msgstr "Meta bilgiler:"
 
-#: tools/templates/indexcontent.html:61
+#: tools/templates/indexcontent.html:74
 #, fuzzy
 msgid "Reporting issues"
 msgstr "Hataları bildirme"
 
-#: tools/templates/indexcontent.html:62
+#: tools/templates/indexcontent.html:75
 msgid "Contributing to Docs"
 msgstr "Dokümantasyona Katkıda Bulunma"
 
-#: tools/templates/indexcontent.html:63
+#: tools/templates/indexcontent.html:76
 msgid "Download the documentation"
 msgstr "Dokümantasyonu indir"
 
-#: tools/templates/indexcontent.html:65
+#: tools/templates/indexcontent.html:78
 #, fuzzy
 msgid "History and license of Python"
 msgstr "Python'un tarihçesi ve Lisansı"
 
-#: tools/templates/indexcontent.html:66
+#: tools/templates/indexcontent.html:79
 msgid "Copyright"
 msgstr "Telif Hakkı"
 
-#: tools/templates/indexcontent.html:67
+#: tools/templates/indexcontent.html:80
 msgid "About the documentation"
 msgstr "Dokümantasyon hakkında"
 
diff --git a/tutorial/datastructures.po b/tutorial/datastructures.po
index dfe5d3722..336ef441f 100644
--- a/tutorial/datastructures.po
+++ b/tutorial/datastructures.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: 2022-12-28 21:39+0300\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -200,9 +200,9 @@ msgstr "Listeleri Yığın Olarak Kullanma"
 msgid ""
 "The list methods make it very easy to use a list as a stack, where the last "
 "element added is the first element retrieved (\"last-in, first-out\").  To "
-"add an item to the top of the stack, use :meth:`~list.append`.  To retrieve "
-"an item from the top of the stack, use :meth:`~list.pop` without an explicit "
-"index.  For example::"
+"add an item to the top of the stack, use :meth:`!append`.  To retrieve an "
+"item from the top of the stack, use :meth:`!pop` without an explicit index.  "
+"For example::"
 msgstr ""
 "Liste yöntemleri, bir listeyi, eklenen son öğenin alınan ilk öğe olduğu bir "
 "yığın olarak kullanmayı çok kolaylaştırır (\"son giren ilk çıkar\").  "
@@ -532,9 +532,9 @@ msgstr ":keyword:`!del` ifadesi"
 #, fuzzy
 msgid ""
 "There is a way to remove an item from a list given its index instead of its "
-"value: the :keyword:`del` statement.  This differs from the :meth:`~list."
-"pop` method which returns a value.  The :keyword:`!del` statement can also "
-"be used to remove slices from a list or clear the entire list (which we did "
+"value: the :keyword:`del` statement.  This differs from the :meth:`!pop` "
+"method which returns a value.  The :keyword:`!del` statement can also be "
+"used to remove slices from a list or clear the entire list (which we did "
 "earlier by assignment of an empty list to the slice).  For example::"
 msgstr ""
 "Değer yerine indeksi verilen bir öğeyi listeden kaldırmanın bir yolu "
@@ -798,8 +798,8 @@ msgid ""
 "can be used as keys if they contain only strings, numbers, or tuples; if a "
 "tuple contains any mutable object either directly or indirectly, it cannot "
 "be used as a key. You can't use lists as keys, since lists can be modified "
-"in place using index assignments, slice assignments, or methods like :meth:"
-"`~list.append` and :meth:`~list.extend`."
+"in place using index assignments, slice assignments, or methods like :meth:`!"
+"append` and :meth:`!extend`."
 msgstr ""
 "Python'da yerleşik olarak bulunan bir başka kullanışlı veri türü de "
 "*sözlüktür* (bkz :ref:`typesmapping`). Sözlükler bazen diğer dillerde "
diff --git a/tutorial/errors.po b/tutorial/errors.po
index 85e7eb440..1ff9f4930 100644
--- a/tutorial/errors.po
+++ b/tutorial/errors.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: 2022-12-28 22:18+0300\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -56,12 +56,10 @@ msgstr ""
 #: tutorial/errors.rst:26
 #, fuzzy
 msgid ""
-"The parser repeats the offending line and displays little 'arrow's pointing "
-"at the token in the line where the error was detected.  The error may be "
-"caused by the absence of a token *before* the indicated token.  In the "
-"example, the error is detected at the function :func:`print`, since a colon "
-"(``':'``) is missing before it.  File name and line number are printed so "
-"you know where to look in case the input came from a script."
+"The parser repeats the offending line and displays little arrows pointing at "
+"the place where the error was detected.  Note that this is not always the "
+"place that needs to be fixed.  In the example, the error is detected at the "
+"function :func:`print`, since a colon (``':'``) is missing just before it."
 msgstr ""
 "Ayrıştırıcı, hatalı satırı yineler ve hatanın algılandığı en erken noktayı "
 "gösteren küçük bir 'ok' görüntüler. Hata oktan *önceki* dizgede meydana  "
@@ -70,11 +68,17 @@ msgstr ""
 "numarası yazdırılır, böylece girişin bir komut dosyasından gelmesi durumunda "
 "nereye bakacağınızı bilirsiniz."
 
-#: tutorial/errors.rst:37
+#: tutorial/errors.rst:31
+msgid ""
+"The file name (``<stdin>`` in our example) and line number are printed so "
+"you know where to look in case the input came from a file."
+msgstr ""
+
+#: tutorial/errors.rst:38
 msgid "Exceptions"
 msgstr "Özel Durumlar"
 
-#: tutorial/errors.rst:39
+#: tutorial/errors.rst:40
 msgid ""
 "Even if a statement or expression is syntactically correct, it may cause an "
 "error when an attempt is made to execute it. Errors detected during "
@@ -90,7 +94,7 @@ msgstr ""
 "öğreneceksiniz.  Ancak, çoğu özel durum programlar tarafından önlenemez ve "
 "burada gösterildiği gibi hata iletileriyle sonuçlanır::"
 
-#: tutorial/errors.rst:45
+#: tutorial/errors.rst:46
 msgid ""
 ">>> 10 * (1/0)\n"
 "Traceback (most recent call last):\n"
@@ -106,7 +110,7 @@ msgid ""
 "TypeError: can only concatenate str (not \"int\") to str"
 msgstr ""
 
-#: tutorial/errors.rst:58
+#: tutorial/errors.rst:59
 msgid ""
 "The last line of the error message indicates what happened. Exceptions come "
 "in different types, and the type is printed as part of the message: the "
@@ -126,7 +130,7 @@ msgstr ""
 "kural olmasına rağmen). Standart özel durum adları gömülü tanımlayıcılardır "
 "(ayrılmış anahtar sözcükler değildir)."
 
-#: tutorial/errors.rst:66
+#: tutorial/errors.rst:67
 msgid ""
 "The rest of the line provides detail based on the type of exception and what "
 "caused it."
@@ -134,7 +138,7 @@ msgstr ""
 "Satırın geri kalanı, özel durum türüne ve buna neyin neden olduğuna bağlı "
 "olarak ayrıntı gösterir."
 
-#: tutorial/errors.rst:69
+#: tutorial/errors.rst:70
 msgid ""
 "The preceding part of the error message shows the context where the "
 "exception occurred, in the form of a stack traceback. In general it contains "
@@ -146,17 +150,17 @@ msgstr ""
 "bir yığın izleme listesi içerir; ancak, standart girişten okunan satırları "
 "görüntülemez."
 
-#: tutorial/errors.rst:74
+#: tutorial/errors.rst:75
 msgid ""
 ":ref:`bltin-exceptions` lists the built-in exceptions and their meanings."
 msgstr ""
 ":ref:`bltin-exceptions` yerleşik özel durumları ve anlamlarını listeler."
 
-#: tutorial/errors.rst:80
+#: tutorial/errors.rst:81
 msgid "Handling Exceptions"
 msgstr "Özel Durumları İşleme"
 
-#: tutorial/errors.rst:82
+#: tutorial/errors.rst:83
 msgid ""
 "It is possible to write programs that handle selected exceptions. Look at "
 "the following example, which asks the user for input until a valid integer "
@@ -171,7 +175,7 @@ msgstr ""
 "sistemi ne destekliyorsa onu kullanarak); kullanıcı kaynaklı kesintilerin :"
 "exc:`KeyboardInterrupt` özel durumu ile gösterildiğini unutmayın. ::"
 
-#: tutorial/errors.rst:88
+#: tutorial/errors.rst:89
 msgid ""
 ">>> while True:\n"
 "...     try:\n"
@@ -182,11 +186,11 @@ msgid ""
 "..."
 msgstr ""
 
-#: tutorial/errors.rst:96
+#: tutorial/errors.rst:97
 msgid "The :keyword:`try` statement works as follows."
 msgstr ":keyword:`try` ifadesi aşağıdaki gibi çalışır."
 
-#: tutorial/errors.rst:98
+#: tutorial/errors.rst:99
 msgid ""
 "First, the *try clause* (the statement(s) between the :keyword:`try` and :"
 "keyword:`except` keywords) is executed."
@@ -194,7 +198,7 @@ msgstr ""
 "İlk olarak, *try yan tümcesi* (:keyword:`try` ve :keyword:`except` anahtar "
 "kelimeleri arasındaki ifadeler) yürütülür."
 
-#: tutorial/errors.rst:101
+#: tutorial/errors.rst:102
 msgid ""
 "If no exception occurs, the *except clause* is skipped and execution of the :"
 "keyword:`try` statement is finished."
@@ -202,7 +206,7 @@ msgstr ""
 "Özel durum oluşmazsa, *except yan tümcesi* atlanır ve :keyword:`try` "
 "ifadesinin yürütülmesi tamamlanır."
 
-#: tutorial/errors.rst:104
+#: tutorial/errors.rst:105
 msgid ""
 "If an exception occurs during execution of the :keyword:`try` clause, the "
 "rest of the clause is skipped.  Then, if its type matches the exception "
@@ -214,7 +218,7 @@ msgstr ""
 "türü ile karşılaşılırsa, *except yan tümcesi* yürütülür ve try/except "
 "bloğundan sonra yürütme devam eder."
 
-#: tutorial/errors.rst:109
+#: tutorial/errors.rst:110
 #, fuzzy
 msgid ""
 "If an exception occurs which does not match the exception named in the "
@@ -227,7 +231,7 @@ msgstr ""
 "bulunamazsa, bu bir *işlenmeyen özel durum* olur ve yürütme yukarıda "
 "gösterildiği gibi bir iletiyle durur."
 
-#: tutorial/errors.rst:113
+#: tutorial/errors.rst:114
 msgid ""
 "A :keyword:`try` statement may have more than one *except clause*, to "
 "specify handlers for different exceptions.  At most one handler will be "
@@ -243,13 +247,13 @@ msgstr ""
 "işleyicilerinde işlemez.  *except yan tümcesi* birden çok özel durumu "
 "parantezli demet olarak adlandırabilir, örneğin::"
 
-#: tutorial/errors.rst:119
+#: tutorial/errors.rst:120
 msgid ""
 "... except (RuntimeError, TypeError, NameError):\n"
 "...     pass"
 msgstr ""
 
-#: tutorial/errors.rst:122
+#: tutorial/errors.rst:123
 #, fuzzy
 msgid ""
 "A class in an :keyword:`except` clause matches exceptions which are "
@@ -263,7 +267,7 @@ msgstr ""
 "temel sınıfla uyumlu olmadığından  tersi olamaz). Örneğin, aşağıdaki kod B, "
 "C, D'yi bu sırada yazdırır::"
 
-#: tutorial/errors.rst:127
+#: tutorial/errors.rst:128
 msgid ""
 "class B(Exception):\n"
 "    pass\n"
@@ -285,7 +289,7 @@ msgid ""
 "        print(\"B\")"
 msgstr ""
 
-#: tutorial/errors.rst:146
+#: tutorial/errors.rst:147
 msgid ""
 "Note that if the *except clauses* were reversed (with ``except B`` first), "
 "it would have printed B, B, B --- the first matching *except clause* is "
@@ -295,7 +299,7 @@ msgstr ""
 "B, B şeklinde yazdırılacaktır --- ilk eşleşen *except yan tümcesi* "
 "tetiklenir."
 
-#: tutorial/errors.rst:149
+#: tutorial/errors.rst:150
 msgid ""
 "When an exception occurs, it may have associated values, also known as the "
 "exception's *arguments*. The presence and types of the arguments depend on "
@@ -304,7 +308,7 @@ msgstr ""
 "Bir istisna oluştuğunda, istisnanın *argümanı* olarak da bilinen ilişkili "
 "bir değeri olabilir. Argümanın varlığı ve türü, istisna türüne bağlıdır."
 
-#: tutorial/errors.rst:153
+#: tutorial/errors.rst:154
 #, fuzzy
 msgid ""
 "The *except clause* may specify a variable after the exception name.  The "
@@ -319,7 +323,7 @@ msgstr ""
 "yerleşik istisna türleri :meth:`__str__`, ``.args`` öğesine açıkça erişmeden "
 "tüm argümanları yazdırmak için tanımlar.  ::"
 
-#: tutorial/errors.rst:159
+#: tutorial/errors.rst:160
 msgid ""
 ">>> try:\n"
 "...     raise Exception('spam', 'eggs')\n"
@@ -340,7 +344,7 @@ msgid ""
 "y = eggs"
 msgstr ""
 
-#: tutorial/errors.rst:176
+#: tutorial/errors.rst:177
 #, fuzzy
 msgid ""
 "The exception's :meth:`~object.__str__` output is printed as the last part "
@@ -349,7 +353,7 @@ msgstr ""
 "İstisnanın :meth:`__str__` çıktısı, işlenmeyen istisnalar için mesajın son "
 "kısmı ('ayrıntı') olarak yazdırılır."
 
-#: tutorial/errors.rst:179
+#: tutorial/errors.rst:180
 msgid ""
 ":exc:`BaseException` is the common base class of all exceptions. One of its "
 "subclasses, :exc:`Exception`, is the base class of all the non-fatal "
@@ -367,7 +371,7 @@ msgstr ""
 "exc:`SystemExit` ve bir kullanıcı programı kesmek istediğinde ortaya çıkan :"
 "exc:`KeyboardInterrupt` içerir."
 
-#: tutorial/errors.rst:187
+#: tutorial/errors.rst:188
 msgid ""
 ":exc:`Exception` can be used as a wildcard that catches (almost) everything. "
 "However, it is good practice to be as specific as possible with the types of "
@@ -379,7 +383,7 @@ msgstr ""
 "türleri konusunda mümkün olduğunca spesifik olmak ve beklenmeyen "
 "istisnaların yayılmasına izin vermek iyi bir uygulamadır."
 
-#: tutorial/errors.rst:192
+#: tutorial/errors.rst:193
 msgid ""
 "The most common pattern for handling :exc:`Exception` is to print or log the "
 "exception and then re-raise it (allowing a caller to handle the exception as "
@@ -389,7 +393,7 @@ msgstr ""
 "log'a kaydetmek ve ardından yeniden yükseltmektir (arayanın istisnayı da "
 "işlemesine izin verir)::"
 
-#: tutorial/errors.rst:196
+#: tutorial/errors.rst:197
 msgid ""
 "import sys\n"
 "\n"
@@ -406,7 +410,7 @@ msgid ""
 "    raise"
 msgstr ""
 
-#: tutorial/errors.rst:210
+#: tutorial/errors.rst:211
 msgid ""
 "The :keyword:`try` ... :keyword:`except` statement has an optional *else "
 "clause*, which, when present, must follow all *except clauses*.  It is "
@@ -418,7 +422,7 @@ msgstr ""
 "izlemelidir.  *try yan tümcesi* bir özel durum oluşturmazsa yürütülmesi "
 "gereken kod için yararlıdır. Mesela::"
 
-#: tutorial/errors.rst:215
+#: tutorial/errors.rst:216
 msgid ""
 "for arg in sys.argv[1:]:\n"
 "    try:\n"
@@ -430,7 +434,7 @@ msgid ""
 "        f.close()"
 msgstr ""
 
-#: tutorial/errors.rst:224
+#: tutorial/errors.rst:225
 msgid ""
 "The use of the :keyword:`!else` clause is better than adding additional code "
 "to the :keyword:`try` clause because it avoids accidentally catching an "
@@ -442,7 +446,7 @@ msgstr ""
 "korunan kod tarafından oluşturulmamış bir istisnayı yakalamayı önler. ... :"
 "keyword:`!except` ifadesi."
 
-#: tutorial/errors.rst:229
+#: tutorial/errors.rst:230
 msgid ""
 "Exception handlers do not handle only exceptions that occur immediately in "
 "the *try clause*, but also those that occur inside functions that are called "
@@ -452,7 +456,7 @@ msgstr ""
 "istisnaları değil, aynı zamanda *try yan tümcesinde* çağrılan (dolaylı "
 "olarak da olsa) işlevlerin içinde oluşan istisnaları da işler. Örneğin::"
 
-#: tutorial/errors.rst:233
+#: tutorial/errors.rst:234
 msgid ""
 ">>> def this_fails():\n"
 "...     x = 1/0\n"
@@ -465,11 +469,11 @@ msgid ""
 "Handling run-time error: division by zero"
 msgstr ""
 
-#: tutorial/errors.rst:247
+#: tutorial/errors.rst:248
 msgid "Raising Exceptions"
 msgstr "Hata Yükseltme"
 
-#: tutorial/errors.rst:249
+#: tutorial/errors.rst:250
 msgid ""
 "The :keyword:`raise` statement allows the programmer to force a specified "
 "exception to occur. For example::"
@@ -477,7 +481,7 @@ msgstr ""
 ":keyword:`raise` ifadesi, programcının belirli bir istisnanın "
 "gerçekleşmesini zorlamasını sağlar. Örneğin::"
 
-#: tutorial/errors.rst:252
+#: tutorial/errors.rst:253
 msgid ""
 ">>> raise NameError('HiThere')\n"
 "Traceback (most recent call last):\n"
@@ -485,7 +489,7 @@ msgid ""
 "NameError: HiThere"
 msgstr ""
 
-#: tutorial/errors.rst:257
+#: tutorial/errors.rst:258
 msgid ""
 "The sole argument to :keyword:`raise` indicates the exception to be raised. "
 "This must be either an exception instance or an exception class (a class "
@@ -499,11 +503,11 @@ msgstr ""
 "olmalıdır.  Bir istisna sınıfı iletilirse, yapıcısını hiçbir argüman olmadan "
 "çağırarak dolaylı olarak başlatılır::"
 
-#: tutorial/errors.rst:263
+#: tutorial/errors.rst:264
 msgid "raise ValueError  # shorthand for 'raise ValueError()'"
 msgstr ""
 
-#: tutorial/errors.rst:265
+#: tutorial/errors.rst:266
 msgid ""
 "If you need to determine whether an exception was raised but don't intend to "
 "handle it, a simpler form of the :keyword:`raise` statement allows you to re-"
@@ -513,7 +517,7 @@ msgstr ""
 "onu işlemeyi düşünmüyorsanız, :keyword:`raise` ifadesinin daha basit bir "
 "biçimi, istisnayı yeniden oluşturmanıza olanak tanır::"
 
-#: tutorial/errors.rst:269
+#: tutorial/errors.rst:270
 msgid ""
 ">>> try:\n"
 "...     raise NameError('HiThere')\n"
@@ -527,11 +531,11 @@ msgid ""
 "NameError: HiThere"
 msgstr ""
 
-#: tutorial/errors.rst:284
+#: tutorial/errors.rst:285
 msgid "Exception Chaining"
 msgstr "İstisna Zincirleme"
 
-#: tutorial/errors.rst:286
+#: tutorial/errors.rst:287
 msgid ""
 "If an unhandled exception occurs inside an :keyword:`except` section, it "
 "will have the exception being handled attached to it and included in the "
@@ -541,7 +545,7 @@ msgstr ""
 "istisnanın kendisine eklenmiş olarak işlenmesi ve şu hata mesajına dahil "
 "edilmesi gerekir::"
 
-#: tutorial/errors.rst:290
+#: tutorial/errors.rst:291
 msgid ""
 ">>> try:\n"
 "...     open(\"database.sqlite\")\n"
@@ -559,7 +563,7 @@ msgid ""
 "RuntimeError: unable to handle error"
 msgstr ""
 
-#: tutorial/errors.rst:305
+#: tutorial/errors.rst:306
 msgid ""
 "To indicate that an exception is a direct consequence of another, the :"
 "keyword:`raise` statement allows an optional :keyword:`from<raise>` clause::"
@@ -568,17 +572,17 @@ msgstr ""
 "sonucu olduğunu belirtmek için isteğe bağlı :keyword:`from<raise>` yan "
 "tümcesine izin verir::"
 
-#: tutorial/errors.rst:308
+#: tutorial/errors.rst:309
 msgid ""
 "# exc must be exception instance or None.\n"
 "raise RuntimeError from exc"
 msgstr ""
 
-#: tutorial/errors.rst:311
+#: tutorial/errors.rst:312
 msgid "This can be useful when you are transforming exceptions. For example::"
 msgstr "Bu, özel durumları dönüştürürken yararlı olabilir. Mesela::"
 
-#: tutorial/errors.rst:313
+#: tutorial/errors.rst:314
 msgid ""
 ">>> def func():\n"
 "...     raise ConnectionError\n"
@@ -600,7 +604,7 @@ msgid ""
 "RuntimeError: Failed to open database"
 msgstr ""
 
-#: tutorial/errors.rst:332
+#: tutorial/errors.rst:333
 msgid ""
 "It also allows disabling automatic exception chaining using the ``from "
 "None`` idiom::"
@@ -608,7 +612,7 @@ msgstr ""
 "Ayrıca, ``from None`` deyimi kullanılarak otomatik istisna zincirlemenin "
 "devre dışı bırakılmasına izin verir::"
 
-#: tutorial/errors.rst:335
+#: tutorial/errors.rst:336
 msgid ""
 ">>> try:\n"
 "...     open('database.sqlite')\n"
@@ -620,18 +624,18 @@ msgid ""
 "RuntimeError"
 msgstr ""
 
-#: tutorial/errors.rst:344
+#: tutorial/errors.rst:345
 msgid ""
 "For more information about chaining mechanics, see :ref:`bltin-exceptions`."
 msgstr ""
 "Zincirleme mekaniği hakkında daha fazla bilgi için bkz. :ref:`bltin-"
 "exceptions`."
 
-#: tutorial/errors.rst:350
+#: tutorial/errors.rst:351
 msgid "User-defined Exceptions"
 msgstr "Kullanıcı Tanımlı İstisnalar"
 
-#: tutorial/errors.rst:352
+#: tutorial/errors.rst:353
 msgid ""
 "Programs may name their own exceptions by creating a new exception class "
 "(see :ref:`tut-classes` for more about Python classes).  Exceptions should "
@@ -643,7 +647,7 @@ msgstr ""
 "`tut-classes` ).  Özel durumlar genellikle doğrudan veya dolaylı olarak :exc:"
 "`Exception` sınıfından türetilmelidir."
 
-#: tutorial/errors.rst:356
+#: tutorial/errors.rst:357
 msgid ""
 "Exception classes can be defined which do anything any other class can do, "
 "but are usually kept simple, often only offering a number of attributes that "
@@ -655,7 +659,7 @@ msgstr ""
 "istisna için işleyiciler tarafından hatayla ilgili bilgilerin çıkarılmasına "
 "izin veren bir dizi öznitelik sunar."
 
-#: tutorial/errors.rst:360
+#: tutorial/errors.rst:361
 msgid ""
 "Most exceptions are defined with names that end in \"Error\", similar to the "
 "naming of the standard exceptions."
@@ -663,7 +667,7 @@ msgstr ""
 "Çoğu özel durum, standart özel durumların adlandırışına benzer şekilde "
 "\"Hata\" ile biten adlarla tanımlanır."
 
-#: tutorial/errors.rst:363
+#: tutorial/errors.rst:364
 msgid ""
 "Many standard modules define their own exceptions to report errors that may "
 "occur in functions they define."
@@ -671,11 +675,11 @@ msgstr ""
 "Birçok standart modül, tanımladıkları işlevlerde oluşabilecek hataları "
 "raporlamak için kendi istisnalarını tanımlar."
 
-#: tutorial/errors.rst:370
+#: tutorial/errors.rst:371
 msgid "Defining Clean-up Actions"
 msgstr "Temizleme Eylemlerini Tanımlama"
 
-#: tutorial/errors.rst:372
+#: tutorial/errors.rst:373
 msgid ""
 "The :keyword:`try` statement has another optional clause which is intended "
 "to define clean-up actions that must be executed under all circumstances.  "
@@ -684,7 +688,7 @@ msgstr ""
 ":keyword:`try` deyimi, her koşulda yürütülmesi gereken temizleme eylemlerini "
 "tanımlamayı amaçlayan başka bir opsiyonel yan tümceye sahiptir.  Mesela::"
 
-#: tutorial/errors.rst:376
+#: tutorial/errors.rst:377
 msgid ""
 ">>> try:\n"
 "...     raise KeyboardInterrupt\n"
@@ -697,7 +701,7 @@ msgid ""
 "KeyboardInterrupt"
 msgstr ""
 
-#: tutorial/errors.rst:386
+#: tutorial/errors.rst:387
 msgid ""
 "If a :keyword:`finally` clause is present, the :keyword:`!finally` clause "
 "will execute as the last task before the :keyword:`try` statement completes. "
@@ -711,7 +715,7 @@ msgstr ""
 "oluşturup oluşturmadığından bağımsız çalışır. Aşağıdaki noktalarda, bir "
 "istisna oluştuğunda daha karmaşık durumlar anlatılmaktadır:"
 
-#: tutorial/errors.rst:392
+#: tutorial/errors.rst:393
 msgid ""
 "If an exception occurs during execution of the :keyword:`!try` clause, the "
 "exception may be handled by an :keyword:`except` clause. If the exception is "
@@ -723,7 +727,7 @@ msgstr ""
 "bir :keyword:`!except` yan tümcesi tarafından ele alınmıyorsa, istisna :"
 "keyword:`!finally` yan tümcesi yürütüldükten sonra yeniden oluşturulur."
 
-#: tutorial/errors.rst:398
+#: tutorial/errors.rst:399
 msgid ""
 "An exception could occur during execution of an :keyword:`!except` or :"
 "keyword:`!else` clause. Again, the exception is re-raised after the :keyword:"
@@ -733,7 +737,7 @@ msgstr ""
 "sırasında bir istisna oluşabilir. Yine, istisna, :keyword:`!finally` yan "
 "tümcesi yürütüldükten sonra yeniden oluşturulur."
 
-#: tutorial/errors.rst:402
+#: tutorial/errors.rst:403
 msgid ""
 "If the :keyword:`!finally` clause executes a :keyword:`break`, :keyword:"
 "`continue` or :keyword:`return` statement, exceptions are not re-raised."
@@ -741,7 +745,7 @@ msgstr ""
 ":keyword:`!finally` yan tümcesi bir :keyword:`break`, :keyword:`continue` "
 "veya :keyword:`return` deyimini yürütürse, istisnalar yeniden oluşturulmaz."
 
-#: tutorial/errors.rst:406
+#: tutorial/errors.rst:407
 msgid ""
 "If the :keyword:`!try` statement reaches a :keyword:`break`, :keyword:"
 "`continue` or :keyword:`return` statement, the :keyword:`!finally` clause "
@@ -753,7 +757,7 @@ msgstr ""
 "keyword:`!break`, :keyword:`!continue` veya :keyword:`!return` ifadesinin "
 "yürütülmesinin hemen öncesinde yürütülür."
 
-#: tutorial/errors.rst:412
+#: tutorial/errors.rst:413
 msgid ""
 "If a :keyword:`!finally` clause includes a :keyword:`!return` statement, the "
 "returned value will be the one from the :keyword:`!finally` clause's :"
@@ -765,11 +769,11 @@ msgstr ""
 "return` ifadesindeki değer olacaktır, :keyword:`!try` yan tümcesinin :"
 "keyword:`!return` ifadesindeki değer değil."
 
-#: tutorial/errors.rst:418
+#: tutorial/errors.rst:419
 msgid "For example::"
 msgstr "Mesela::"
 
-#: tutorial/errors.rst:420
+#: tutorial/errors.rst:421
 msgid ""
 ">>> def bool_return():\n"
 "...     try:\n"
@@ -781,11 +785,11 @@ msgid ""
 "False"
 msgstr ""
 
-#: tutorial/errors.rst:429
+#: tutorial/errors.rst:430
 msgid "A more complicated example::"
 msgstr "Daha karmaşık bir örnek::"
 
-#: tutorial/errors.rst:431
+#: tutorial/errors.rst:432
 msgid ""
 ">>> def divide(x, y):\n"
 "...     try:\n"
@@ -811,7 +815,7 @@ msgid ""
 "TypeError: unsupported operand type(s) for /: 'str' and 'str'"
 msgstr ""
 
-#: tutorial/errors.rst:454
+#: tutorial/errors.rst:455
 msgid ""
 "As you can see, the :keyword:`finally` clause is executed in any event.  "
 "The :exc:`TypeError` raised by dividing two strings is not handled by the :"
@@ -823,7 +827,7 @@ msgstr ""
 "tarafından işlenmez ve bu nedenle :keyword:`!finally` yan tümcesi "
 "yürütüldikten sonra yeniden yükseltilir."
 
-#: tutorial/errors.rst:459
+#: tutorial/errors.rst:460
 msgid ""
 "In real world applications, the :keyword:`finally` clause is useful for "
 "releasing external resources (such as files or network connections), "
@@ -833,11 +837,11 @@ msgstr ""
 "kullanımının başarılı olup olmadığına bakılmaksızın dış kaynakları (dosyalar "
 "veya ağ bağlantıları gibi) serbest bırakmak için yararlıdır."
 
-#: tutorial/errors.rst:467
+#: tutorial/errors.rst:468
 msgid "Predefined Clean-up Actions"
 msgstr "Önceden Tanımlanmış Temizleme Eylemleri"
 
-#: tutorial/errors.rst:469
+#: tutorial/errors.rst:470
 msgid ""
 "Some objects define standard clean-up actions to be undertaken when the "
 "object is no longer needed, regardless of whether or not the operation using "
@@ -849,13 +853,13 @@ msgstr ""
 "standart temizleme eylemlerini tanımlar. Bir dosyayı açmaya ve içeriğini "
 "ekrana yazdırmaya çalışan aşağıdaki örneğe bakın. ::"
 
-#: tutorial/errors.rst:474
+#: tutorial/errors.rst:475
 msgid ""
 "for line in open(\"myfile.txt\"):\n"
 "    print(line, end=\"\")"
 msgstr ""
 
-#: tutorial/errors.rst:477
+#: tutorial/errors.rst:478
 msgid ""
 "The problem with this code is that it leaves the file open for an "
 "indeterminate amount of time after this part of the code has finished "
@@ -870,14 +874,14 @@ msgstr ""
 "keyword:`with` ifadesi, dosyalar gibi nesnelerin her zaman hızlı ve doğru "
 "temizlenmesini sağlayacak şekilde kullanılmasına izin verir. ::"
 
-#: tutorial/errors.rst:483
+#: tutorial/errors.rst:484
 msgid ""
 "with open(\"myfile.txt\") as f:\n"
 "    for line in f:\n"
 "        print(line, end=\"\")"
 msgstr ""
 
-#: tutorial/errors.rst:487
+#: tutorial/errors.rst:488
 msgid ""
 "After the statement is executed, the file *f* is always closed, even if a "
 "problem was encountered while processing the lines. Objects which, like "
@@ -888,11 +892,11 @@ msgstr ""
 "bile *f* dosyası her zaman kapatılır. Dosyalar gibi önceden tanımlanmış "
 "temizleme eylemleri sağlayan nesneler dokümantasyonlarında bunu gösterir."
 
-#: tutorial/errors.rst:495
+#: tutorial/errors.rst:496
 msgid "Raising and Handling Multiple Unrelated Exceptions"
 msgstr "Birden Fazla Alakasız İstisna Oluşturma ve İşleme"
 
-#: tutorial/errors.rst:497
+#: tutorial/errors.rst:498
 msgid ""
 "There are situations where it is necessary to report several exceptions that "
 "have occurred. This is often the case in concurrency frameworks, when "
@@ -906,7 +910,7 @@ msgstr ""
 "yerine yürütmeye devam etmenin ve birden çok hata toplamanın istendiği başka "
 "kullanım durumları da vardır."
 
-#: tutorial/errors.rst:503
+#: tutorial/errors.rst:504
 msgid ""
 "The builtin :exc:`ExceptionGroup` wraps a list of exception instances so "
 "that they can be raised together. It is an exception itself, so it can be "
@@ -916,7 +920,7 @@ msgstr ""
 "örneklerinin bir listesini sarar. Kendisi bir istisnadır, bu nedenle "
 "herhangi bir istisna gibi yakalanabilir. ::"
 
-#: tutorial/errors.rst:507
+#: tutorial/errors.rst:508
 msgid ""
 ">>> def f():\n"
 "...     excs = [OSError('error 1'), SystemError('error 2')]\n"
@@ -941,7 +945,7 @@ msgid ""
 ">>>"
 msgstr ""
 
-#: tutorial/errors.rst:529
+#: tutorial/errors.rst:530
 msgid ""
 "By using ``except*`` instead of ``except``, we can selectively handle only "
 "the exceptions in the group that match a certain type. In the following "
@@ -955,7 +959,7 @@ msgstr ""
 "tüm istisnaların diğer yan tümcelere yayılmasına ve sonunda yeniden ortaya "
 "çıkmasına izin verirken, belirli bir türdeki grup istisnalarını çıkarır. ::"
 
-#: tutorial/errors.rst:536
+#: tutorial/errors.rst:537
 msgid ""
 ">>> def f():\n"
 "...     raise ExceptionGroup(\n"
@@ -994,7 +998,7 @@ msgid ""
 ">>>"
 msgstr ""
 
-#: tutorial/errors.rst:572
+#: tutorial/errors.rst:573
 msgid ""
 "Note that the exceptions nested in an exception group must be instances, not "
 "types. This is because in practice the exceptions would typically be ones "
@@ -1006,7 +1010,7 @@ msgstr ""
 "olarak, aşağıdaki kalıp boyunca program tarafından önceden oluşturulmuş ve "
 "yakalanmış olanlar olmasıdır::"
 
-#: tutorial/errors.rst:577
+#: tutorial/errors.rst:578
 msgid ""
 ">>> excs = []\n"
 "... for test in tests:\n"
@@ -1020,11 +1024,11 @@ msgid ""
 "..."
 msgstr ""
 
-#: tutorial/errors.rst:592
+#: tutorial/errors.rst:593
 msgid "Enriching Exceptions with Notes"
 msgstr "İstisnaları Notlarla Zenginleştirme"
 
-#: tutorial/errors.rst:594
+#: tutorial/errors.rst:595
 msgid ""
 "When an exception is created in order to be raised, it is usually "
 "initialized with information that describes the error that has occurred. "
@@ -1041,7 +1045,7 @@ msgstr ""
 "``add_note(note)`` metodu vardır. Standart geri işleme (traceback) "
 "oluşturma, tüm notları istisnadan sonra eklendikleri sırayla içerir. ::"
 
-#: tutorial/errors.rst:601
+#: tutorial/errors.rst:602
 msgid ""
 ">>> try:\n"
 "...     raise TypeError('bad type')\n"
@@ -1058,7 +1062,7 @@ msgid ""
 ">>>"
 msgstr ""
 
-#: tutorial/errors.rst:615
+#: tutorial/errors.rst:616
 msgid ""
 "For example, when collecting exceptions into an exception group, we may want "
 "to add context information for the individual errors. In the following each "
@@ -1068,7 +1072,7 @@ msgstr ""
 "bağlam bilgisi eklemek isteyebiliriz. Aşağıda, gruptaki her özel durum, bu "
 "hatanın ne zaman oluştuğunu gösteren bir nota sahiptir. ::"
 
-#: tutorial/errors.rst:619
+#: tutorial/errors.rst:620
 msgid ""
 ">>> def f():\n"
 "...     raise OSError('operation failed')\n"
diff --git a/tutorial/interactive.po b/tutorial/interactive.po
index ee4f05cee..ad8fc0b7b 100644
--- a/tutorial/interactive.po
+++ b/tutorial/interactive.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-09-18 19:05+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: 2022-02-13 20:23+0300\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -71,13 +71,14 @@ msgid "Alternatives to the Interactive Interpreter"
 msgstr "Etkileşimli Yorumlayıcıya Alternatifler"
 
 #: tutorial/interactive.rst:38
+#, fuzzy
 msgid ""
 "This facility is an enormous step forward compared to earlier versions of "
 "the interpreter; however, some wishes are left: It would be nice if the "
 "proper indentation were suggested on continuation lines (the parser knows if "
-"an indent token is required next).  The completion mechanism might use the "
-"interpreter's symbol table.  A command to check (or even suggest) matching "
-"parentheses, quotes, etc., would also be useful."
+"an :data:`~token.INDENT` token is required next).  The completion mechanism "
+"might use the interpreter's symbol table.  A command to check (or even "
+"suggest) matching parentheses, quotes, etc., would also be useful."
 msgstr ""
 "Bu olanak, tercümanın önceki sürümleriyle karşılaştırıldığında ileriye doğru "
 "atılmış çok büyük bir adımdır; ancak, bazı eksiklikler var: Devam "
diff --git a/tutorial/introduction.po b/tutorial/introduction.po
index b313108fe..8f9705496 100644
--- a/tutorial/introduction.po
+++ b/tutorial/introduction.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: 2024-02-27 22:42+0300\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -357,41 +357,34 @@ msgstr ""
 "<faq-programming-raw-string-backslash>` 'e bakın."
 
 #: tutorial/introduction.rst:197
+#, fuzzy
 msgid ""
 "String literals can span multiple lines.  One way is using triple-quotes: "
-"``\"\"\"...\"\"\"`` or ``'''...'''``.  End of lines are automatically "
-"included in the string, but it's possible to prevent this by adding a ``\\`` "
-"at the end of the line.  The following example::"
+"``\"\"\"...\"\"\"`` or ``'''...'''``.  End-of-line characters are "
+"automatically included in the string, but it's possible to prevent this by "
+"adding a ``\\`` at the end of the line.  In the following example, the "
+"initial newline is not included::"
 msgstr ""
 "Dize sabitleri birden çok satıra yayılabilir. Bunun bir yolu üçlü tırnak "
 "kullanmaktır: ``\"\"\"...\"\"\"`` veya ``'''...'''``. Satır sonu otomatik "
 "olarak dizeye dahil edilir, ancak satırın sonuna ``\\`` ekleyerek bunu "
 "önlemek mümkündür. Aşağıdaki örnek::"
 
-#: tutorial/introduction.rst:202
+#: tutorial/introduction.rst:203
 msgid ""
-"print(\"\"\"\\\n"
+">>> print(\"\"\"\\\n"
+"... Usage: thingy [OPTIONS]\n"
+"...      -h                        Display this usage message\n"
+"...      -H hostname               Hostname to connect to\n"
+"... \"\"\")\n"
 "Usage: thingy [OPTIONS]\n"
 "     -h                        Display this usage message\n"
 "     -H hostname               Hostname to connect to\n"
-"\"\"\")"
-msgstr ""
-
-#: tutorial/introduction.rst:208
-msgid ""
-"produces the following output (note that the initial newline is not "
-"included):"
+"\n"
+">>>"
 msgstr ""
-"aşağıdaki çıktıyı üretir (ilk yeni satırın dahil olmadığını unutmayın):"
 
-#: tutorial/introduction.rst:210
-msgid ""
-"Usage: thingy [OPTIONS]\n"
-"     -h                        Display this usage message\n"
-"     -H hostname               Hostname to connect to"
-msgstr ""
-
-#: tutorial/introduction.rst:216
+#: tutorial/introduction.rst:214
 msgid ""
 "Strings can be concatenated (glued together) with the ``+`` operator, and "
 "repeated with ``*``::"
@@ -399,14 +392,14 @@ msgstr ""
 "Dizeler ``+`` operatörüyle birleştirilebilir (birbirine yapıştırılabilir) ve "
 "``*`` ile tekrarlanabilir::"
 
-#: tutorial/introduction.rst:219
+#: tutorial/introduction.rst:217
 msgid ""
 ">>> # 3 times 'un', followed by 'ium'\n"
 ">>> 3 * 'un' + 'ium'\n"
 "'unununium'"
 msgstr ""
 
-#: tutorial/introduction.rst:223
+#: tutorial/introduction.rst:221
 msgid ""
 "Two or more *string literals* (i.e. the ones enclosed between quotes) next "
 "to each other are automatically concatenated. ::"
@@ -414,19 +407,19 @@ msgstr ""
 "Yan yana iki veya daha fazla *dize sabiti* (yani, tırnak işaretleri arasına "
 "alınanlar) otomatik olarak birleştirilir. ::"
 
-#: tutorial/introduction.rst:226
+#: tutorial/introduction.rst:224
 msgid ""
 ">>> 'Py' 'thon'\n"
 "'Python'"
 msgstr ""
 
-#: tutorial/introduction.rst:229
+#: tutorial/introduction.rst:227
 msgid ""
 "This feature is particularly useful when you want to break long strings::"
 msgstr ""
 "Bu özellik, özellikle uzun dizeleri kırmak istediğinizde kullanışlıdır::"
 
-#: tutorial/introduction.rst:231
+#: tutorial/introduction.rst:229
 msgid ""
 ">>> text = ('Put several strings within parentheses '\n"
 "...         'to have them joined together.')\n"
@@ -434,13 +427,13 @@ msgid ""
 "'Put several strings within parentheses to have them joined together.'"
 msgstr ""
 
-#: tutorial/introduction.rst:236
+#: tutorial/introduction.rst:234
 msgid ""
 "This only works with two literals though, not with variables or expressions::"
 msgstr ""
 "Bu, değişkenler veya ifadelerle değil, yalnızca iki sabit değerle çalışır::"
 
-#: tutorial/introduction.rst:238
+#: tutorial/introduction.rst:236
 msgid ""
 ">>> prefix = 'Py'\n"
 ">>> prefix 'thon'  # can't concatenate a variable and a string literal\n"
@@ -455,20 +448,20 @@ msgid ""
 "SyntaxError: invalid syntax"
 msgstr ""
 
-#: tutorial/introduction.rst:250
+#: tutorial/introduction.rst:248
 msgid ""
 "If you want to concatenate variables or a variable and a literal, use ``+``::"
 msgstr ""
 "Değişkenleri veya bir değişkeni ve bir sabiti birleştirmek istiyorsanız, "
 "``+`` kullanın:"
 
-#: tutorial/introduction.rst:252
+#: tutorial/introduction.rst:250
 msgid ""
 ">>> prefix + 'thon'\n"
 "'Python'"
 msgstr ""
 
-#: tutorial/introduction.rst:255
+#: tutorial/introduction.rst:253
 msgid ""
 "Strings can be *indexed* (subscripted), with the first character having "
 "index 0. There is no separate character type; a character is simply a string "
@@ -478,7 +471,7 @@ msgstr ""
 "olabilir). Karakterler için ayrı bir tür yoktur; karakterler yalnızca *bir* "
 "uzunluğunda dizelerdir::"
 
-#: tutorial/introduction.rst:259
+#: tutorial/introduction.rst:257
 msgid ""
 ">>> word = 'Python'\n"
 ">>> word[0]  # character in position 0\n"
@@ -487,12 +480,12 @@ msgid ""
 "'n'"
 msgstr ""
 
-#: tutorial/introduction.rst:265
+#: tutorial/introduction.rst:263
 msgid ""
 "Indices may also be negative numbers, to start counting from the right::"
 msgstr "Sağdan saymaya başlamak için indeksler negatif sayılar da olabilir::"
 
-#: tutorial/introduction.rst:267
+#: tutorial/introduction.rst:265
 msgid ""
 ">>> word[-1]  # last character\n"
 "'n'\n"
@@ -502,12 +495,12 @@ msgid ""
 "'P'"
 msgstr ""
 
-#: tutorial/introduction.rst:274
+#: tutorial/introduction.rst:272
 msgid "Note that since -0 is the same as 0, negative indices start from -1."
 msgstr ""
 "-0 ile 0 aynı olduğundan, negatif endekslerin -1'den başladığını unutmayın."
 
-#: tutorial/introduction.rst:276
+#: tutorial/introduction.rst:274
 #, fuzzy
 msgid ""
 "In addition to indexing, *slicing* is also supported.  While indexing is "
@@ -518,7 +511,7 @@ msgstr ""
 "etmek için indeksleme kullanılırken, *dilimleme* alt dizeyi elde etmenizi "
 "sağlar::"
 
-#: tutorial/introduction.rst:279
+#: tutorial/introduction.rst:277
 msgid ""
 ">>> word[0:2]  # characters from position 0 (included) to 2 (excluded)\n"
 "'Py'\n"
@@ -526,7 +519,7 @@ msgid ""
 "'tho'"
 msgstr ""
 
-#: tutorial/introduction.rst:284
+#: tutorial/introduction.rst:282
 msgid ""
 "Slice indices have useful defaults; an omitted first index defaults to zero, "
 "an omitted second index defaults to the size of the string being sliced. ::"
@@ -535,7 +528,7 @@ msgstr ""
 "varsayılanı sıfırdır, atlanmış bir ikinci dizin varsayılanı dilimlenmekte "
 "olan dizenin boyutudur. ::"
 
-#: tutorial/introduction.rst:287
+#: tutorial/introduction.rst:285
 msgid ""
 ">>> word[:2]   # character from the beginning to position 2 (excluded)\n"
 "'Py'\n"
@@ -545,7 +538,7 @@ msgid ""
 "'on'"
 msgstr ""
 
-#: tutorial/introduction.rst:294
+#: tutorial/introduction.rst:292
 msgid ""
 "Note how the start is always included, and the end always excluded.  This "
 "makes sure that ``s[:i] + s[i:]`` is always equal to ``s``::"
@@ -554,7 +547,7 @@ msgstr ""
 "dikkat edin. Bu, ``s[:i] + s[i:]`` değerinin her zaman ``s`` değerine eşit "
 "olmasını sağlar::"
 
-#: tutorial/introduction.rst:297
+#: tutorial/introduction.rst:295
 msgid ""
 ">>> word[:2] + word[2:]\n"
 "'Python'\n"
@@ -562,7 +555,7 @@ msgid ""
 "'Python'"
 msgstr ""
 
-#: tutorial/introduction.rst:302
+#: tutorial/introduction.rst:300
 msgid ""
 "One way to remember how slices work is to think of the indices as pointing "
 "*between* characters, with the left edge of the first character numbered 0. "
@@ -574,7 +567,7 @@ msgstr ""
 "Ardından, *n* karakterli bir dizenin son karakterinin sağ kenarında *n* "
 "dizini vardır, örneğin::"
 
-#: tutorial/introduction.rst:307
+#: tutorial/introduction.rst:305
 msgid ""
 " +---+---+---+---+---+---+\n"
 " | P | y | t | h | o | n |\n"
@@ -583,7 +576,7 @@ msgid ""
 "-6  -5  -4  -3  -2  -1"
 msgstr ""
 
-#: tutorial/introduction.rst:313
+#: tutorial/introduction.rst:311
 msgid ""
 "The first row of numbers gives the position of the indices 0...6 in the "
 "string; the second row gives the corresponding negative indices. The slice "
@@ -594,7 +587,7 @@ msgstr ""
 "karşılık gelen negatif endeksleri verir. *i* ile *j* arasındaki dilim, "
 "sırasıyla *i* ve *j* etiketli kenarlar arasındaki tüm karakterlerden oluşur."
 
-#: tutorial/introduction.rst:318
+#: tutorial/introduction.rst:316
 msgid ""
 "For non-negative indices, the length of a slice is the difference of the "
 "indices, if both are within bounds.  For example, the length of "
@@ -603,11 +596,11 @@ msgstr ""
 "Negatif olmayan indeksler için, her ikisi de sınırlar içindeyse, bir dilimin "
 "uzunluğu indekslerin farkıdır. Örneğin, ``kelime[1:3]`` 'ün uzunluğu 2'dir."
 
-#: tutorial/introduction.rst:322
+#: tutorial/introduction.rst:320
 msgid "Attempting to use an index that is too large will result in an error::"
 msgstr "Çok büyük bir dizin kullanmaya çalışmak bir hataya neden olur::"
 
-#: tutorial/introduction.rst:324
+#: tutorial/introduction.rst:322
 msgid ""
 ">>> word[42]  # the word only has 6 characters\n"
 "Traceback (most recent call last):\n"
@@ -615,7 +608,7 @@ msgid ""
 "IndexError: string index out of range"
 msgstr ""
 
-#: tutorial/introduction.rst:329
+#: tutorial/introduction.rst:327
 msgid ""
 "However, out of range slice indexes are handled gracefully when used for "
 "slicing::"
@@ -623,7 +616,7 @@ msgstr ""
 "Ancak, aralık dışı dilim endeksleri, dilimleme için kullanıldığında zarif "
 "bir şekilde işlenir::"
 
-#: tutorial/introduction.rst:332
+#: tutorial/introduction.rst:330
 msgid ""
 ">>> word[4:42]\n"
 "'on'\n"
@@ -631,7 +624,7 @@ msgid ""
 "''"
 msgstr ""
 
-#: tutorial/introduction.rst:337
+#: tutorial/introduction.rst:335
 msgid ""
 "Python strings cannot be changed --- they are :term:`immutable`. Therefore, "
 "assigning to an indexed position in the string results in an error::"
@@ -639,7 +632,7 @@ msgstr ""
 "Python dizeleri değiştirilemez --- bunlar :term:`immutable` 'dır. Bu "
 "nedenle, dizide dizine alınmış bir konuma atamak bir hatayla sonuçlanır::"
 
-#: tutorial/introduction.rst:340
+#: tutorial/introduction.rst:338
 msgid ""
 ">>> word[0] = 'J'\n"
 "Traceback (most recent call last):\n"
@@ -651,11 +644,11 @@ msgid ""
 "TypeError: 'str' object does not support item assignment"
 msgstr ""
 
-#: tutorial/introduction.rst:349
+#: tutorial/introduction.rst:347
 msgid "If you need a different string, you should create a new one::"
 msgstr "Farklı bir dizeye ihtiyacınız varsa, yeni bir tane oluşturmalısınız::"
 
-#: tutorial/introduction.rst:351
+#: tutorial/introduction.rst:349
 msgid ""
 ">>> 'J' + word[1:]\n"
 "'Jython'\n"
@@ -663,22 +656,22 @@ msgid ""
 "'Pypy'"
 msgstr ""
 
-#: tutorial/introduction.rst:356
+#: tutorial/introduction.rst:354
 msgid "The built-in function :func:`len` returns the length of a string::"
 msgstr "Yerleşik işlev :func:`len`, bir dizenin uzunluğunu döndürür::"
 
-#: tutorial/introduction.rst:358
+#: tutorial/introduction.rst:356
 msgid ""
 ">>> s = 'supercalifragilisticexpialidocious'\n"
 ">>> len(s)\n"
 "34"
 msgstr ""
 
-#: tutorial/introduction.rst:365
+#: tutorial/introduction.rst:363
 msgid ":ref:`textseq`"
 msgstr ":ref:`textseq`"
 
-#: tutorial/introduction.rst:366
+#: tutorial/introduction.rst:364
 msgid ""
 "Strings are examples of *sequence types*, and support the common operations "
 "supported by such types."
@@ -686,37 +679,37 @@ msgstr ""
 "Dizeler, *sıra türlerinin* örnekleridir ve bu türler tarafından desteklenen "
 "genel işlemleri destekler."
 
-#: tutorial/introduction.rst:369
+#: tutorial/introduction.rst:367
 msgid ":ref:`string-methods`"
 msgstr ":ref:`dize-yöntemleri <string-methods>`"
 
-#: tutorial/introduction.rst:370
+#: tutorial/introduction.rst:368
 msgid ""
 "Strings support a large number of methods for basic transformations and "
 "searching."
 msgstr "Dizeler, temel dönüşümler ve arama için çok sayıda yöntemi destekler."
 
-#: tutorial/introduction.rst:373
+#: tutorial/introduction.rst:371
 msgid ":ref:`f-strings`"
 msgstr ":ref:`f-strings`"
 
-#: tutorial/introduction.rst:374
+#: tutorial/introduction.rst:372
 msgid "String literals that have embedded expressions."
 msgstr "Gömülü ifadelere sahip dize sabitleri."
 
-#: tutorial/introduction.rst:376
+#: tutorial/introduction.rst:374
 msgid ":ref:`formatstrings`"
 msgstr ":ref:`formatstrings`"
 
-#: tutorial/introduction.rst:377
+#: tutorial/introduction.rst:375
 msgid "Information about string formatting with :meth:`str.format`."
 msgstr ":meth:`str.format` ile dize biçimlendirme hakkında bilgi."
 
-#: tutorial/introduction.rst:379
+#: tutorial/introduction.rst:377
 msgid ":ref:`old-string-formatting`"
 msgstr ":ref:`old-string-formatting`"
 
-#: tutorial/introduction.rst:380
+#: tutorial/introduction.rst:378
 msgid ""
 "The old formatting operations invoked when strings are the left operand of "
 "the ``%`` operator are described in more detail here."
@@ -724,11 +717,11 @@ msgstr ""
 "Dizeler ``%`` operatörünün sol işleneni olduğunda çağrılan eski "
 "biçimlendirme işlemleri burada daha ayrıntılı olarak açıklanmaktadır."
 
-#: tutorial/introduction.rst:387
+#: tutorial/introduction.rst:385
 msgid "Lists"
 msgstr "Listeler"
 
-#: tutorial/introduction.rst:389
+#: tutorial/introduction.rst:387
 msgid ""
 "Python knows a number of *compound* data types, used to group together other "
 "values.  The most versatile is the *list*, which can be written as a list of "
@@ -741,14 +734,14 @@ msgstr ""
 "Listeler farklı türde ögeler içerebilir, ancak genellikle ögelerin tümü aynı "
 "türdedir. ::"
 
-#: tutorial/introduction.rst:394
+#: tutorial/introduction.rst:392
 msgid ""
 ">>> squares = [1, 4, 9, 16, 25]\n"
 ">>> squares\n"
 "[1, 4, 9, 16, 25]"
 msgstr ""
 
-#: tutorial/introduction.rst:398
+#: tutorial/introduction.rst:396
 msgid ""
 "Like strings (and all other built-in :term:`sequence` types), lists can be "
 "indexed and sliced::"
@@ -756,7 +749,7 @@ msgstr ""
 "Dizeler gibi (ve diğer tüm yerleşik :term:`sequence` türleri), listeler "
 "dizine alınabilir ve dilimlenebilir::"
 
-#: tutorial/introduction.rst:401
+#: tutorial/introduction.rst:399
 msgid ""
 ">>> squares[0]  # indexing returns the item\n"
 "1\n"
@@ -766,17 +759,17 @@ msgid ""
 "[9, 16, 25]"
 msgstr ""
 
-#: tutorial/introduction.rst:408
+#: tutorial/introduction.rst:406
 msgid "Lists also support operations like concatenation::"
 msgstr "Ayrıca listeler birleştirme gibi işlemleri de destekler::"
 
-#: tutorial/introduction.rst:410
+#: tutorial/introduction.rst:408
 msgid ""
 ">>> squares + [36, 49, 64, 81, 100]\n"
 "[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]"
 msgstr ""
 
-#: tutorial/introduction.rst:413
+#: tutorial/introduction.rst:411
 msgid ""
 "Unlike strings, which are :term:`immutable`, lists are a :term:`mutable` "
 "type, i.e. it is possible to change their content::"
@@ -784,7 +777,7 @@ msgstr ""
 ":term:`immutable` olan dizelerin aksine, listeler :term:`mutable` "
 "türündedir, yani içeriklerini değiştirmek mümkündür::"
 
-#: tutorial/introduction.rst:416
+#: tutorial/introduction.rst:414
 msgid ""
 ">>> cubes = [1, 8, 27, 65, 125]  # something's wrong here\n"
 ">>> 4 ** 3  # the cube of 4 is 64, not 65!\n"
@@ -794,7 +787,7 @@ msgid ""
 "[1, 8, 27, 64, 125]"
 msgstr ""
 
-#: tutorial/introduction.rst:423
+#: tutorial/introduction.rst:421
 #, fuzzy
 msgid ""
 "You can also add new items at the end of the list, by using the :meth:`!list."
@@ -804,7 +797,7 @@ msgstr ""
 "öğeler ekleyebilirsiniz (yöntemler hakkında daha fazla bilgiyi daha sonra "
 "göreceğiz)::"
 
-#: tutorial/introduction.rst:426
+#: tutorial/introduction.rst:424
 msgid ""
 ">>> cubes.append(216)  # add the cube of 6\n"
 ">>> cubes.append(7 ** 3)  # and the cube of 7\n"
@@ -812,7 +805,7 @@ msgid ""
 "[1, 8, 27, 64, 125, 216, 343]"
 msgstr ""
 
-#: tutorial/introduction.rst:431
+#: tutorial/introduction.rst:429
 msgid ""
 "Simple assignment in Python never copies data. When you assign a list to a "
 "variable, the variable refers to the *existing list*. Any changes you make "
@@ -820,7 +813,7 @@ msgid ""
 "that refer to it.::"
 msgstr ""
 
-#: tutorial/introduction.rst:436
+#: tutorial/introduction.rst:434
 msgid ""
 ">>> rgb = [\"Red\", \"Green\", \"Blue\"]\n"
 ">>> rgba = rgb\n"
@@ -831,7 +824,7 @@ msgid ""
 "[\"Red\", \"Green\", \"Blue\", \"Alph\"]"
 msgstr ""
 
-#: tutorial/introduction.rst:444
+#: tutorial/introduction.rst:442
 msgid ""
 "All slice operations return a new list containing the requested elements.  "
 "This means that the following slice returns a :ref:`shallow copy "
@@ -841,7 +834,7 @@ msgstr ""
 "aşağıdaki dilimin listenin bir :ref:`shallow copy <shallow_vs_deep_copy>` "
 "döndürdüğü anlamına gelir::"
 
-#: tutorial/introduction.rst:448
+#: tutorial/introduction.rst:446
 msgid ""
 ">>> correct_rgba = rgba[:]\n"
 ">>> correct_rgba[-1] = \"Alpha\"\n"
@@ -851,7 +844,7 @@ msgid ""
 "[\"Red\", \"Green\", \"Blue\", \"Alph\"]"
 msgstr ""
 
-#: tutorial/introduction.rst:455
+#: tutorial/introduction.rst:453
 msgid ""
 "Assignment to slices is also possible, and this can even change the size of "
 "the list or clear it entirely::"
@@ -859,7 +852,7 @@ msgstr ""
 "Dilimlere atama da mümkündür ve bu, listenin boyutunu bile değiştirebilir "
 "veya tamamen temizleyebilir::"
 
-#: tutorial/introduction.rst:458
+#: tutorial/introduction.rst:456
 msgid ""
 ">>> letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g']\n"
 ">>> letters\n"
@@ -878,18 +871,18 @@ msgid ""
 "[]"
 msgstr ""
 
-#: tutorial/introduction.rst:474
+#: tutorial/introduction.rst:472
 msgid "The built-in function :func:`len` also applies to lists::"
 msgstr "Yerleşik işlev :func:`len` ayrıca listeler için de geçerlidir::"
 
-#: tutorial/introduction.rst:476
+#: tutorial/introduction.rst:474
 msgid ""
 ">>> letters = ['a', 'b', 'c', 'd']\n"
 ">>> len(letters)\n"
 "4"
 msgstr ""
 
-#: tutorial/introduction.rst:480
+#: tutorial/introduction.rst:478
 msgid ""
 "It is possible to nest lists (create lists containing other lists), for "
 "example::"
@@ -897,7 +890,7 @@ msgstr ""
 "Listeleri iç içe yerleştirmek (diğer listeleri içeren listeler oluşturmak) "
 "mümkündür, örneğin::"
 
-#: tutorial/introduction.rst:483
+#: tutorial/introduction.rst:481
 msgid ""
 ">>> a = ['a', 'b', 'c']\n"
 ">>> n = [1, 2, 3]\n"
@@ -910,11 +903,11 @@ msgid ""
 "'b'"
 msgstr ""
 
-#: tutorial/introduction.rst:496
+#: tutorial/introduction.rst:494
 msgid "First Steps Towards Programming"
 msgstr "Programlamaya Doğru İlk Adımlar"
 
-#: tutorial/introduction.rst:498
+#: tutorial/introduction.rst:496
 msgid ""
 "Of course, we can use Python for more complicated tasks than adding two and "
 "two together.  For instance, we can write an initial sub-sequence of the "
@@ -925,7 +918,7 @@ msgstr ""
 "kullanabiliriz. Örneğin, `Fibonacci serisinin <https://en.wikipedia.org/wiki/"
 "Fibonacci_sequence>`_ ilk alt dizisini aşağıdaki gibi yazabiliriz:"
 
-#: tutorial/introduction.rst:503
+#: tutorial/introduction.rst:501
 msgid ""
 ">>> # Fibonacci series:\n"
 ">>> # the sum of two elements defines the next\n"
@@ -943,11 +936,11 @@ msgid ""
 "8"
 msgstr ""
 
-#: tutorial/introduction.rst:518
+#: tutorial/introduction.rst:516
 msgid "This example introduces several new features."
 msgstr "Bu örnek, birkaç yeni özellik sunar."
 
-#: tutorial/introduction.rst:520
+#: tutorial/introduction.rst:518
 msgid ""
 "The first line contains a *multiple assignment*: the variables ``a`` and "
 "``b`` simultaneously get the new values 0 and 1.  On the last line this is "
@@ -959,7 +952,7 @@ msgstr ""
 "1 değerlerini alır. Tarafların tümü, herhangi bir görev yapılmadan önce "
 "değerlendirilir. Sağ taraftaki ifadeler soldan sağa doğru değerlendirilir."
 
-#: tutorial/introduction.rst:526
+#: tutorial/introduction.rst:524
 msgid ""
 "The :keyword:`while` loop executes as long as the condition (here: ``a < "
 "10``) remains true.  In Python, like in C, any non-zero integer value is "
@@ -979,7 +972,7 @@ msgstr ""
 "(küçüktür), ``>`` (büyüktür), ``==`` (eşittir), ``<=`` ( küçük veya eşit), "
 "``>=`` (büyük veya eşit) ve ``!=`` (eşit değil)."
 
-#: tutorial/introduction.rst:535
+#: tutorial/introduction.rst:533
 msgid ""
 "The *body* of the loop is *indented*: indentation is Python's way of "
 "grouping statements.  At the interactive prompt, you have to type a tab or "
@@ -1000,7 +993,7 @@ msgstr ""
 "tahmin edemez). Bir temel blok içindeki her satırın aynı miktarda girintili "
 "olması gerektiğini unutmayın."
 
-#: tutorial/introduction.rst:544
+#: tutorial/introduction.rst:542
 #, fuzzy
 msgid ""
 "The :func:`print` function writes the value of the argument(s) it is given. "
@@ -1017,14 +1010,14 @@ msgstr ""
 "işaretleri olmadan yazdırılır ve öğelerin arasına bir boşluk eklenir, "
 "böylece şunları güzel bir şekilde biçimlendirebilirsiniz:"
 
-#: tutorial/introduction.rst:551
+#: tutorial/introduction.rst:549
 msgid ""
 ">>> i = 256*256\n"
 ">>> print('The value of i is', i)\n"
 "The value of i is 65536"
 msgstr ""
 
-#: tutorial/introduction.rst:555
+#: tutorial/introduction.rst:553
 msgid ""
 "The keyword argument *end* can be used to avoid the newline after the "
 "output, or end the output with a different string::"
@@ -1032,7 +1025,7 @@ msgstr ""
 "*end* anahtar sözcüğü argümanı, çıktıdan sonra yeni satırı önlemek veya "
 "çıktıyı farklı bir dizeyle bitirmek için kullanılabilir::"
 
-#: tutorial/introduction.rst:558
+#: tutorial/introduction.rst:556
 msgid ""
 ">>> a, b = 0, 1\n"
 ">>> while a < 1000:\n"
@@ -1042,11 +1035,11 @@ msgid ""
 "0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,"
 msgstr ""
 
-#: tutorial/introduction.rst:567
+#: tutorial/introduction.rst:565
 msgid "Footnotes"
 msgstr "Dipnotlar"
 
-#: tutorial/introduction.rst:568
+#: tutorial/introduction.rst:566
 msgid ""
 "Since ``**`` has higher precedence than ``-``, ``-3**2`` will be interpreted "
 "as ``-(3**2)`` and thus result in ``-9``.  To avoid this and get ``9``, you "
@@ -1056,7 +1049,7 @@ msgstr ""
 "(3**2)`` olarak yorumlanacak ve dolayısıyla ``-9`` ile sonuçlanacaktır. "
 "Bundan kaçınmak ve ``9`` elde etmek için ``(-3)**2`` kullanabilirsiniz."
 
-#: tutorial/introduction.rst:572
+#: tutorial/introduction.rst:570
 msgid ""
 "Unlike other languages, special characters such as ``\\n`` have the same "
 "meaning with both single (``'...'``) and double (``\"...\"``) quotes. The "
@@ -1077,6 +1070,12 @@ msgstr ""
 msgid "comment"
 msgstr "yorum"
 
+#~ msgid ""
+#~ "produces the following output (note that the initial newline is not "
+#~ "included):"
+#~ msgstr ""
+#~ "aşağıdaki çıktıyı üretir (ilk yeni satırın dahil olmadığını unutmayın):"
+
 #~ msgid "Strings"
 #~ msgstr "Dizeler"
 
diff --git a/tutorial/modules.po b/tutorial/modules.po
index 21632b7e4..ce3f4fa9b 100644
--- a/tutorial/modules.po
+++ b/tutorial/modules.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: 2024-04-10 21:30+0300\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -618,7 +618,7 @@ msgid ""
 ">>> import fibo, sys\n"
 ">>> dir(fibo)\n"
 "['__name__', 'fib', 'fib2']\n"
-">>> dir(sys)  \n"
+">>> dir(sys)\n"
 "['__breakpointhook__', '__displayhook__', '__doc__', '__excepthook__',\n"
 " '__interactivehook__', '__loader__', '__name__', '__package__', "
 "'__spec__',\n"
@@ -684,7 +684,7 @@ msgstr ""
 #: tutorial/modules.rst:354
 msgid ""
 ">>> import builtins\n"
-">>> dir(builtins)  \n"
+">>> dir(builtins)\n"
 "['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException',\n"
 " 'BlockingIOError', 'BrokenPipeError', 'BufferError', 'BytesWarning',\n"
 " 'ChildProcessError', 'ConnectionAbortedError', 'ConnectionError',\n"
diff --git a/using/cmdline.po b/using/cmdline.po
index 92a6f0c9b..71d03dfa7 100644
--- a/using/cmdline.po
+++ b/using/cmdline.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -229,7 +229,7 @@ msgid ""
 "path`."
 msgstr ""
 
-#: using/cmdline.rst:723
+#: using/cmdline.rst:729
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``cpython.run_stdin`` with no "
 "arguments."
@@ -405,26 +405,46 @@ msgid "See also the :option:`-P` and :option:`-I` (isolated) options."
 msgstr ""
 
 #: using/cmdline.rst:292
+msgid "Enter interactive mode after execution."
+msgstr ""
+
+#: using/cmdline.rst:294
 msgid ""
-"When a script is passed as first argument or the :option:`-c` option is "
-"used, enter interactive mode after executing the script or the command, even "
-"when :data:`sys.stdin` does not appear to be a terminal.  The :envvar:"
-"`PYTHONSTARTUP` file is not read."
+"Using the :option:`-i` option will enter interactive mode in any of the "
+"following circumstances\\:"
+msgstr ""
+
+#: using/cmdline.rst:296
+msgid "When a script is passed as first argument"
 msgstr ""
 
 #: using/cmdline.rst:297
+msgid "When the :option:`-c` option is used"
+msgstr ""
+
+#: using/cmdline.rst:298
+msgid "When the :option:`-m` option is used"
+msgstr ""
+
+#: using/cmdline.rst:300
+msgid ""
+"Interactive mode will start even when :data:`sys.stdin` does not appear to "
+"be a terminal. The :envvar:`PYTHONSTARTUP` file is not read."
+msgstr ""
+
+#: using/cmdline.rst:303
 msgid ""
 "This can be useful to inspect global variables or a stack trace when a "
 "script raises an exception.  See also :envvar:`PYTHONINSPECT`."
 msgstr ""
 
-#: using/cmdline.rst:303
+#: using/cmdline.rst:309
 msgid ""
 "Run Python in isolated mode. This also implies :option:`-E`, :option:`-P` "
 "and :option:`-s` options."
 msgstr ""
 
-#: using/cmdline.rst:306
+#: using/cmdline.rst:312
 msgid ""
 "In isolated mode :data:`sys.path` contains neither the script's directory "
 "nor the user's site-packages directory. All ``PYTHON*`` environment "
@@ -432,7 +452,7 @@ msgid ""
 "the user from injecting malicious code."
 msgstr ""
 
-#: using/cmdline.rst:316
+#: using/cmdline.rst:322
 msgid ""
 "Remove assert statements and any code conditional on the value of :const:"
 "`__debug__`.  Augment the filename for compiled (:term:`bytecode`) files by "
@@ -440,58 +460,58 @@ msgid ""
 "envvar:`PYTHONOPTIMIZE`."
 msgstr ""
 
-#: using/cmdline.rst:331
+#: using/cmdline.rst:337
 msgid "Modify ``.pyc`` filenames according to :pep:`488`."
 msgstr ""
 
-#: using/cmdline.rst:327
+#: using/cmdline.rst:333
 msgid ""
 "Do :option:`-O` and also discard docstrings.  Augment the filename for "
 "compiled (:term:`bytecode`) files by adding ``.opt-2`` before the ``.pyc`` "
 "extension (see :pep:`488`)."
 msgstr ""
 
-#: using/cmdline.rst:337
+#: using/cmdline.rst:343
 msgid "Don't prepend a potentially unsafe path to :data:`sys.path`:"
 msgstr ""
 
-#: using/cmdline.rst:339
+#: using/cmdline.rst:345
 msgid ""
 "``python -m module`` command line: Don't prepend the current working "
 "directory."
 msgstr ""
 
-#: using/cmdline.rst:341
+#: using/cmdline.rst:347
 msgid ""
 "``python script.py`` command line: Don't prepend the script's directory. If "
 "it's a symbolic link, resolve symbolic links."
 msgstr ""
 
-#: using/cmdline.rst:343
+#: using/cmdline.rst:349
 msgid ""
 "``python -c code`` and ``python`` (REPL) command lines: Don't prepend an "
 "empty string, which means the current working directory."
 msgstr ""
 
-#: using/cmdline.rst:346
+#: using/cmdline.rst:352
 msgid ""
 "See also the :envvar:`PYTHONSAFEPATH` environment variable, and :option:`-E` "
 "and :option:`-I` (isolated) options."
 msgstr ""
 
-#: using/cmdline.rst:354
+#: using/cmdline.rst:360
 msgid ""
 "Don't display the copyright and version messages even in interactive mode."
 msgstr ""
 
-#: using/cmdline.rst:361
+#: using/cmdline.rst:367
 msgid ""
 "Turn on hash randomization. This option only has an effect if the :envvar:"
 "`PYTHONHASHSEED` environment variable is set to ``0``, since hash "
 "randomization is enabled by default."
 msgstr ""
 
-#: using/cmdline.rst:365
+#: using/cmdline.rst:371
 msgid ""
 "On previous versions of Python, this option turns on hash randomization, so "
 "that the :meth:`~object.__hash__` values of str and bytes objects are "
@@ -500,7 +520,7 @@ msgid ""
 "between repeated invocations of Python."
 msgstr ""
 
-#: using/cmdline.rst:371
+#: using/cmdline.rst:377
 msgid ""
 "Hash randomization is intended to provide protection against a denial-of-"
 "service caused by carefully chosen inputs that exploit the worst case "
@@ -508,31 +528,31 @@ msgid ""
 "http://ocert.org/advisories/ocert-2011-003.html for details."
 msgstr ""
 
-#: using/cmdline.rst:376
+#: using/cmdline.rst:382
 msgid ""
 ":envvar:`PYTHONHASHSEED` allows you to set a fixed value for the hash seed "
 "secret."
 msgstr ""
 
-#: using/cmdline.rst:381
+#: using/cmdline.rst:387
 msgid "The option is no longer ignored."
 msgstr ""
 
-#: using/cmdline.rst:387
+#: using/cmdline.rst:393
 msgid ""
 "Don't add the :data:`user site-packages directory <site.USER_SITE>` to :data:"
 "`sys.path`."
 msgstr ""
 
-#: using/cmdline.rst:390
+#: using/cmdline.rst:396
 msgid "See also :envvar:`PYTHONNOUSERSITE`."
 msgstr ""
 
-#: using/cmdline.rst:816 using/cmdline.rst:828
+#: using/cmdline.rst:822 using/cmdline.rst:834
 msgid ":pep:`370` -- Per user site-packages directory"
 msgstr ""
 
-#: using/cmdline.rst:399
+#: using/cmdline.rst:405
 msgid ""
 "Disable the import of the module :mod:`site` and the site-dependent "
 "manipulations of :data:`sys.path` that it entails.  Also disable these "
@@ -540,21 +560,21 @@ msgid ""
 "main` if you want them to be triggered)."
 msgstr ""
 
-#: using/cmdline.rst:407
+#: using/cmdline.rst:413
 msgid ""
 "Force the stdout and stderr streams to be unbuffered.  This option has no "
 "effect on the stdin stream."
 msgstr ""
 
-#: using/cmdline.rst:410
+#: using/cmdline.rst:416
 msgid "See also :envvar:`PYTHONUNBUFFERED`."
 msgstr ""
 
-#: using/cmdline.rst:412
+#: using/cmdline.rst:418
 msgid "The text layer of the stdout and stderr streams now is unbuffered."
 msgstr ""
 
-#: using/cmdline.rst:418
+#: using/cmdline.rst:424
 msgid ""
 "Print a message each time a module is initialized, showing the place "
 "(filename or built-in module) from which it is loaded.  When given twice (:"
@@ -562,30 +582,30 @@ msgid ""
 "searching for a module.  Also provides information on module cleanup at exit."
 msgstr ""
 
-#: using/cmdline.rst:423
+#: using/cmdline.rst:429
 msgid ""
 "The :mod:`site` module reports the site-specific paths and :file:`.pth` "
 "files being processed."
 msgstr ""
 
-#: using/cmdline.rst:427
+#: using/cmdline.rst:433
 msgid "See also :envvar:`PYTHONVERBOSE`."
 msgstr ""
 
-#: using/cmdline.rst:433
+#: using/cmdline.rst:439
 msgid ""
 "Warning control. Python's warning machinery by default prints warning "
 "messages to :data:`sys.stderr`."
 msgstr ""
 
-#: using/cmdline.rst:844
+#: using/cmdline.rst:850
 msgid ""
 "The simplest settings apply a particular action unconditionally to all "
 "warnings emitted by a process (even those that are otherwise ignored by "
 "default)::"
 msgstr ""
 
-#: using/cmdline.rst:440
+#: using/cmdline.rst:446
 msgid ""
 "-Wdefault  # Warn once per call location\n"
 "-Werror    # Convert to exceptions\n"
@@ -596,41 +616,41 @@ msgid ""
 "-Wignore   # Never warn"
 msgstr ""
 
-#: using/cmdline.rst:448
+#: using/cmdline.rst:454
 msgid ""
 "The action names can be abbreviated as desired and the interpreter will "
 "resolve them to the appropriate action name. For example, ``-Wi`` is the "
 "same as ``-Wignore``."
 msgstr ""
 
-#: using/cmdline.rst:452
+#: using/cmdline.rst:458
 msgid "The full form of argument is::"
 msgstr ""
 
-#: using/cmdline.rst:454
+#: using/cmdline.rst:460
 msgid "action:message:category:module:lineno"
 msgstr ""
 
-#: using/cmdline.rst:456
+#: using/cmdline.rst:462
 msgid ""
 "Empty fields match all values; trailing empty fields may be omitted. For "
 "example ``-W ignore::DeprecationWarning`` ignores all DeprecationWarning "
 "warnings."
 msgstr ""
 
-#: using/cmdline.rst:460
+#: using/cmdline.rst:466
 msgid ""
 "The *action* field is as explained above but only applies to warnings that "
 "match the remaining fields."
 msgstr ""
 
-#: using/cmdline.rst:463
+#: using/cmdline.rst:469
 msgid ""
 "The *message* field must match the whole warning message; this match is case-"
 "insensitive."
 msgstr ""
 
-#: using/cmdline.rst:466
+#: using/cmdline.rst:472
 msgid ""
 "The *category* field matches the warning category (ex: "
 "``DeprecationWarning``). This must be a class name; the match test whether "
@@ -638,19 +658,19 @@ msgid ""
 "warning category."
 msgstr ""
 
-#: using/cmdline.rst:471
+#: using/cmdline.rst:477
 msgid ""
 "The *module* field matches the (fully qualified) module name; this match is "
 "case-sensitive."
 msgstr ""
 
-#: using/cmdline.rst:474
+#: using/cmdline.rst:480
 msgid ""
 "The *lineno* field matches the line number, where zero matches all line "
 "numbers and is thus equivalent to an omitted line number."
 msgstr ""
 
-#: using/cmdline.rst:477
+#: using/cmdline.rst:483
 msgid ""
 "Multiple :option:`-W` options can be given; when a warning matches more than "
 "one option, the action for the last matching option is performed. Invalid :"
@@ -658,7 +678,7 @@ msgid ""
 "invalid options when the first warning is issued)."
 msgstr ""
 
-#: using/cmdline.rst:482
+#: using/cmdline.rst:488
 msgid ""
 "Warnings can also be controlled using the :envvar:`PYTHONWARNINGS` "
 "environment variable and from within a Python program using the :mod:"
@@ -666,31 +686,31 @@ msgid ""
 "can be used to use a regular expression on the warning message."
 msgstr ""
 
-#: using/cmdline.rst:856
+#: using/cmdline.rst:862
 msgid ""
 "See :ref:`warning-filter` and :ref:`describing-warning-filters` for more "
 "details."
 msgstr ""
 
-#: using/cmdline.rst:493
+#: using/cmdline.rst:499
 msgid ""
 "Skip the first line of the source, allowing use of non-Unix forms of ``#!"
 "cmd``.  This is intended for a DOS specific hack only."
 msgstr ""
 
-#: using/cmdline.rst:499
+#: using/cmdline.rst:505
 msgid ""
 "Reserved for various implementation-specific options.  CPython currently "
 "defines the following possible values:"
 msgstr ""
 
-#: using/cmdline.rst:502
+#: using/cmdline.rst:508
 msgid ""
 "``-X faulthandler`` to enable :mod:`faulthandler`. See also :envvar:"
 "`PYTHONFAULTHANDLER`."
 msgstr ""
 
-#: using/cmdline.rst:507
+#: using/cmdline.rst:513
 msgid ""
 "``-X showrefcount`` to output the total reference count and number of used "
 "memory blocks when the program finishes or after each statement in the "
@@ -698,7 +718,7 @@ msgid ""
 "build>`."
 msgstr ""
 
-#: using/cmdline.rst:514
+#: using/cmdline.rst:520
 msgid ""
 "``-X tracemalloc`` to start tracing Python memory allocations using the :mod:"
 "`tracemalloc` module. By default, only the most recent frame is stored in a "
@@ -707,14 +727,14 @@ msgid ""
 "envvar:`PYTHONTRACEMALLOC` for more information."
 msgstr ""
 
-#: using/cmdline.rst:523
+#: using/cmdline.rst:529
 msgid ""
 "``-X int_max_str_digits`` configures the :ref:`integer string conversion "
 "length limitation <int_max_str_digits>`.  See also :envvar:"
 "`PYTHONINTMAXSTRDIGITS`."
 msgstr ""
 
-#: using/cmdline.rst:529
+#: using/cmdline.rst:535
 msgid ""
 "``-X importtime`` to show how long each import takes. It shows module name, "
 "cumulative time (including nested imports) and self time (excluding nested "
@@ -723,35 +743,35 @@ msgid ""
 "asyncio'``.  See also :envvar:`PYTHONPROFILEIMPORTTIME`."
 msgstr ""
 
-#: using/cmdline.rst:537
+#: using/cmdline.rst:543
 msgid ""
 "``-X dev``: enable :ref:`Python Development Mode <devmode>`, introducing "
 "additional runtime checks that are too expensive to be enabled by default.  "
 "See also :envvar:`PYTHONDEVMODE`."
 msgstr ""
 
-#: using/cmdline.rst:543
+#: using/cmdline.rst:549
 msgid ""
 "``-X utf8`` enables the :ref:`Python UTF-8 Mode <utf8-mode>`. ``-X utf8=0`` "
 "explicitly disables :ref:`Python UTF-8 Mode <utf8-mode>` (even when it would "
 "otherwise activate automatically). See also :envvar:`PYTHONUTF8`."
 msgstr ""
 
-#: using/cmdline.rst:550
+#: using/cmdline.rst:556
 msgid ""
 "``-X pycache_prefix=PATH`` enables writing ``.pyc`` files to a parallel tree "
 "rooted at the given directory instead of to the code tree. See also :envvar:"
 "`PYTHONPYCACHEPREFIX`."
 msgstr ""
 
-#: using/cmdline.rst:556
+#: using/cmdline.rst:562
 msgid ""
 "``-X warn_default_encoding`` issues a :class:`EncodingWarning` when the "
 "locale-specific default encoding is used for opening files. See also :envvar:"
 "`PYTHONWARNDEFAULTENCODING`."
 msgstr ""
 
-#: using/cmdline.rst:562
+#: using/cmdline.rst:568
 msgid ""
 "``-X no_debug_ranges`` disables the inclusion of the tables mapping extra "
 "location information (end line, start column offset and end column offset) "
@@ -761,7 +781,7 @@ msgid ""
 "envvar:`PYTHONNODEBUGRANGES`."
 msgstr ""
 
-#: using/cmdline.rst:571
+#: using/cmdline.rst:577
 msgid ""
 "``-X frozen_modules`` determines whether or not frozen modules are ignored "
 "by the import machinery.  A value of \"on\" means they get imported and "
@@ -772,7 +792,7 @@ msgid ""
 "are always used, even if this flag is set to \"off\"."
 msgstr ""
 
-#: using/cmdline.rst:581
+#: using/cmdline.rst:587
 msgid ""
 "``-X perf`` enables support for the Linux ``perf`` profiler. When this "
 "option is provided, the ``perf`` profiler will be able to report Python "
@@ -781,33 +801,33 @@ msgid ""
 "also :envvar:`PYTHONPERFSUPPORT` and :ref:`perf_profiling`."
 msgstr ""
 
-#: using/cmdline.rst:589
+#: using/cmdline.rst:595
 msgid ""
 "It also allows passing arbitrary values and retrieving them through the :"
 "data:`sys._xoptions` dictionary."
 msgstr ""
 
-#: using/cmdline.rst:594
+#: using/cmdline.rst:600
 msgid "Removed the ``-X showalloccount`` option."
 msgstr ""
 
-#: using/cmdline.rst:597
+#: using/cmdline.rst:603
 msgid "Removed the ``-X oldparser`` option."
 msgstr ""
 
-#: using/cmdline.rst:602
+#: using/cmdline.rst:608
 msgid "Options you shouldn't use"
 msgstr ""
 
-#: using/cmdline.rst:606
+#: using/cmdline.rst:612
 msgid "Reserved for use by Jython_."
 msgstr ""
 
-#: using/cmdline.rst:614
+#: using/cmdline.rst:620
 msgid "Environment variables"
 msgstr ""
 
-#: using/cmdline.rst:616
+#: using/cmdline.rst:622
 msgid ""
 "These environment variables influence Python's behavior, they are processed "
 "before the command-line switches other than -E or -I.  It is customary that "
@@ -815,7 +835,7 @@ msgid ""
 "conflict."
 msgstr ""
 
-#: using/cmdline.rst:623
+#: using/cmdline.rst:629
 msgid ""
 "Change the location of the standard Python libraries.  By default, the "
 "libraries are searched in :file:`{prefix}/lib/python{version}` and :file:"
@@ -824,14 +844,14 @@ msgid ""
 "file:`/usr/local`."
 msgstr ""
 
-#: using/cmdline.rst:629
+#: using/cmdline.rst:635
 msgid ""
 "When :envvar:`PYTHONHOME` is set to a single directory, its value replaces "
 "both :file:`{prefix}` and :file:`{exec_prefix}`.  To specify different "
 "values for these, set :envvar:`PYTHONHOME` to :file:`{prefix}:{exec_prefix}`."
 msgstr ""
 
-#: using/cmdline.rst:636
+#: using/cmdline.rst:642
 msgid ""
 "Augment the default search path for module files.  The format is the same as "
 "the shell's :envvar:`PATH`: one or more directory pathnames separated by :"
@@ -839,21 +859,21 @@ msgid ""
 "existent directories are silently ignored."
 msgstr ""
 
-#: using/cmdline.rst:641
+#: using/cmdline.rst:647
 msgid ""
 "In addition to normal directories, individual :envvar:`PYTHONPATH` entries "
 "may refer to zipfiles containing pure Python modules (in either source or "
 "compiled form). Extension modules cannot be imported from zipfiles."
 msgstr ""
 
-#: using/cmdline.rst:645
+#: using/cmdline.rst:651
 msgid ""
 "The default search path is installation dependent, but generally begins "
 "with :file:`{prefix}/lib/python{version}` (see :envvar:`PYTHONHOME` above).  "
 "It is *always* appended to :envvar:`PYTHONPATH`."
 msgstr ""
 
-#: using/cmdline.rst:649
+#: using/cmdline.rst:655
 msgid ""
 "An additional directory will be inserted in the search path in front of :"
 "envvar:`PYTHONPATH` as described above under :ref:`using-on-interface-"
@@ -861,19 +881,19 @@ msgid ""
 "the variable :data:`sys.path`."
 msgstr ""
 
-#: using/cmdline.rst:657
+#: using/cmdline.rst:663
 msgid ""
 "If this is set to a non-empty string, don't prepend a potentially unsafe "
 "path to :data:`sys.path`: see the :option:`-P` option for details."
 msgstr ""
 
-#: using/cmdline.rst:665
+#: using/cmdline.rst:671
 msgid ""
 "If this is set to a non-empty string, it overrides the :data:`sys."
 "platlibdir` value."
 msgstr ""
 
-#: using/cmdline.rst:673
+#: using/cmdline.rst:679
 msgid ""
 "If this is the name of a readable file, the Python commands in that file are "
 "executed before the first prompt is displayed in interactive mode.  The file "
@@ -884,20 +904,20 @@ msgid ""
 "file."
 msgstr ""
 
-#: using/cmdline.rst:682
+#: using/cmdline.rst:688
 msgid ""
 "Raises an :ref:`auditing event <auditing>` ``cpython.run_startup`` with the "
 "filename as the argument when called on startup."
 msgstr ""
 
-#: using/cmdline.rst:688
+#: using/cmdline.rst:694
 msgid ""
 "If this is set to a non-empty string it is equivalent to specifying the :"
 "option:`-O` option.  If set to an integer, it is equivalent to specifying :"
 "option:`-O` multiple times."
 msgstr ""
 
-#: using/cmdline.rst:695
+#: using/cmdline.rst:701
 msgid ""
 "If this is set, it names a callable using dotted-path notation.  The module "
 "containing the callable will be imported and then the callable will be run "
@@ -908,62 +928,62 @@ msgid ""
 "breakpointhook` to do nothing but return immediately."
 msgstr ""
 
-#: using/cmdline.rst:707
+#: using/cmdline.rst:713
 msgid ""
 "If this is set to a non-empty string it is equivalent to specifying the :"
 "option:`-d` option.  If set to an integer, it is equivalent to specifying :"
 "option:`-d` multiple times."
 msgstr ""
 
-#: using/cmdline.rst:711
+#: using/cmdline.rst:717
 msgid ""
 "This environment variable requires a :ref:`debug build of Python <debug-"
 "build>`, otherwise it's ignored."
 msgstr ""
 
-#: using/cmdline.rst:717
+#: using/cmdline.rst:723
 msgid ""
 "If this is set to a non-empty string it is equivalent to specifying the :"
 "option:`-i` option."
 msgstr ""
 
-#: using/cmdline.rst:720
+#: using/cmdline.rst:726
 msgid ""
 "This variable can also be modified by Python code using :data:`os.environ` "
 "to force inspect mode on program termination."
 msgstr ""
 
-#: using/cmdline.rst:725
+#: using/cmdline.rst:731
 msgid "(also 3.11.10, 3.10.15, 3.9.20, and 3.8.20) Emits audit events."
 msgstr ""
 
-#: using/cmdline.rst:731
+#: using/cmdline.rst:737
 msgid ""
 "If this is set to a non-empty string it is equivalent to specifying the :"
 "option:`-u` option."
 msgstr ""
 
-#: using/cmdline.rst:737
+#: using/cmdline.rst:743
 msgid ""
 "If this is set to a non-empty string it is equivalent to specifying the :"
 "option:`-v` option.  If set to an integer, it is equivalent to specifying :"
 "option:`-v` multiple times."
 msgstr ""
 
-#: using/cmdline.rst:744
+#: using/cmdline.rst:750
 msgid ""
 "If this is set, Python ignores case in :keyword:`import` statements.  This "
 "only works on Windows and macOS."
 msgstr ""
 
-#: using/cmdline.rst:750
+#: using/cmdline.rst:756
 msgid ""
 "If this is set to a non-empty string, Python won't try to write ``.pyc`` "
 "files on the import of source modules.  This is equivalent to specifying "
 "the :option:`-B` option."
 msgstr ""
 
-#: using/cmdline.rst:757
+#: using/cmdline.rst:763
 msgid ""
 "If this is set, Python will write ``.pyc`` files in a mirror directory tree "
 "at this path, instead of in ``__pycache__`` directories within the source "
@@ -971,40 +991,40 @@ msgid ""
 "``pycache_prefix=PATH`` option."
 msgstr ""
 
-#: using/cmdline.rst:767
+#: using/cmdline.rst:773
 msgid ""
 "If this variable is not set or set to ``random``, a random value is used to "
 "seed the hashes of str and bytes objects."
 msgstr ""
 
-#: using/cmdline.rst:770
+#: using/cmdline.rst:776
 msgid ""
 "If :envvar:`PYTHONHASHSEED` is set to an integer value, it is used as a "
 "fixed seed for generating the hash() of the types covered by the hash "
 "randomization."
 msgstr ""
 
-#: using/cmdline.rst:774
+#: using/cmdline.rst:780
 msgid ""
 "Its purpose is to allow repeatable hashing, such as for selftests for the "
 "interpreter itself, or to allow a cluster of python processes to share hash "
 "values."
 msgstr ""
 
-#: using/cmdline.rst:778
+#: using/cmdline.rst:784
 msgid ""
 "The integer must be a decimal number in the range [0,4294967295].  "
 "Specifying the value 0 will disable hash randomization."
 msgstr ""
 
-#: using/cmdline.rst:785
+#: using/cmdline.rst:791
 msgid ""
 "If this variable is set to an integer, it is used to configure the "
 "interpreter's global :ref:`integer string conversion length limitation "
 "<int_max_str_digits>`."
 msgstr ""
 
-#: using/cmdline.rst:793
+#: using/cmdline.rst:799
 msgid ""
 "If this is set before running the interpreter, it overrides the encoding "
 "used for stdin/stdout/stderr, in the syntax ``encodingname:errorhandler``.  "
@@ -1012,17 +1032,17 @@ msgid ""
 "have the same meaning as in :func:`str.encode`."
 msgstr ""
 
-#: using/cmdline.rst:798
+#: using/cmdline.rst:804
 msgid ""
 "For stderr, the ``:errorhandler`` part is ignored; the handler will always "
 "be ``'backslashreplace'``."
 msgstr ""
 
-#: using/cmdline.rst:801
+#: using/cmdline.rst:807
 msgid "The ``encodingname`` part is now optional."
 msgstr ""
 
-#: using/cmdline.rst:804
+#: using/cmdline.rst:810
 msgid ""
 "On Windows, the encoding specified by this variable is ignored for "
 "interactive console buffers unless :envvar:`PYTHONLEGACYWINDOWSSTDIO` is "
@@ -1030,13 +1050,13 @@ msgid ""
 "not affected."
 msgstr ""
 
-#: using/cmdline.rst:811
+#: using/cmdline.rst:817
 msgid ""
 "If this is set, Python won't add the :data:`user site-packages directory "
 "<site.USER_SITE>` to :data:`sys.path`."
 msgstr ""
 
-#: using/cmdline.rst:821
+#: using/cmdline.rst:827
 msgid ""
 "Defines the :data:`user base directory <site.USER_BASE>`, which is used to "
 "compute the path of the :data:`user site-packages directory <site."
@@ -1044,20 +1064,20 @@ msgid ""
 "``python -m pip install --user``."
 msgstr ""
 
-#: using/cmdline.rst:833
+#: using/cmdline.rst:839
 msgid ""
 "If this environment variable is set, ``sys.argv[0]`` will be set to its "
 "value instead of the value got through the C runtime.  Only works on macOS."
 msgstr ""
 
-#: using/cmdline.rst:839
+#: using/cmdline.rst:845
 msgid ""
 "This is equivalent to the :option:`-W` option. If set to a comma separated "
 "string, it is equivalent to specifying :option:`-W` multiple times, with "
 "filters later in the list taking precedence over those earlier in the list."
 msgstr ""
 
-#: using/cmdline.rst:848
+#: using/cmdline.rst:854
 msgid ""
 "PYTHONWARNINGS=default  # Warn once per call location\n"
 "PYTHONWARNINGS=error    # Convert to exceptions\n"
@@ -1068,7 +1088,7 @@ msgid ""
 "PYTHONWARNINGS=ignore   # Never warn"
 msgstr ""
 
-#: using/cmdline.rst:862
+#: using/cmdline.rst:868
 msgid ""
 "If this environment variable is set to a non-empty string, :func:"
 "`faulthandler.enable` is called at startup: install a handler for :const:"
@@ -1077,7 +1097,7 @@ msgid ""
 "traceback. This is equivalent to :option:`-X` ``faulthandler`` option."
 msgstr ""
 
-#: using/cmdline.rst:874
+#: using/cmdline.rst:880
 msgid ""
 "If this environment variable is set to a non-empty string, start tracing "
 "Python memory allocations using the :mod:`tracemalloc` module. The value of "
@@ -1087,90 +1107,90 @@ msgid ""
 "is equivalent to setting the :option:`-X` ``tracemalloc`` option."
 msgstr ""
 
-#: using/cmdline.rst:887
+#: using/cmdline.rst:893
 msgid ""
 "If this environment variable is set to a non-empty string, Python will show "
 "how long each import takes. This is equivalent to setting the :option:`-X` "
 "``importtime`` option."
 msgstr ""
 
-#: using/cmdline.rst:896
+#: using/cmdline.rst:902
 msgid ""
 "If this environment variable is set to a non-empty string, enable the :ref:"
 "`debug mode <asyncio-debug-mode>` of the :mod:`asyncio` module."
 msgstr ""
 
-#: using/cmdline.rst:904
+#: using/cmdline.rst:910
 msgid "Set the Python memory allocators and/or install debug hooks."
 msgstr ""
 
-#: using/cmdline.rst:906
+#: using/cmdline.rst:912
 msgid "Set the family of memory allocators used by Python:"
 msgstr ""
 
-#: using/cmdline.rst:908
+#: using/cmdline.rst:914
 msgid ""
 "``default``: use the :ref:`default memory allocators <default-memory-"
 "allocators>`."
 msgstr ""
 
-#: using/cmdline.rst:910
+#: using/cmdline.rst:916
 msgid ""
 "``malloc``: use the :c:func:`malloc` function of the C library for all "
 "domains (:c:macro:`PYMEM_DOMAIN_RAW`, :c:macro:`PYMEM_DOMAIN_MEM`, :c:macro:"
 "`PYMEM_DOMAIN_OBJ`)."
 msgstr ""
 
-#: using/cmdline.rst:913
+#: using/cmdline.rst:919
 msgid ""
 "``pymalloc``: use the :ref:`pymalloc allocator <pymalloc>` for :c:macro:"
 "`PYMEM_DOMAIN_MEM` and :c:macro:`PYMEM_DOMAIN_OBJ` domains and use the :c:"
 "func:`malloc` function for the :c:macro:`PYMEM_DOMAIN_RAW` domain."
 msgstr ""
 
-#: using/cmdline.rst:917
+#: using/cmdline.rst:923
 msgid "Install :ref:`debug hooks <pymem-debug-hooks>`:"
 msgstr ""
 
-#: using/cmdline.rst:919
+#: using/cmdline.rst:925
 msgid ""
 "``debug``: install debug hooks on top of the :ref:`default memory allocators "
 "<default-memory-allocators>`."
 msgstr ""
 
-#: using/cmdline.rst:921
+#: using/cmdline.rst:927
 msgid "``malloc_debug``: same as ``malloc`` but also install debug hooks."
 msgstr ""
 
-#: using/cmdline.rst:922
+#: using/cmdline.rst:928
 msgid "``pymalloc_debug``: same as ``pymalloc`` but also install debug hooks."
 msgstr ""
 
-#: using/cmdline.rst:926
+#: using/cmdline.rst:932
 msgid "Added the ``\"default\"`` allocator."
 msgstr ""
 
-#: using/cmdline.rst:932
+#: using/cmdline.rst:938
 msgid ""
 "If set to a non-empty string, Python will print statistics of the :ref:"
 "`pymalloc memory allocator <pymalloc>` every time a new pymalloc object "
 "arena is created, and on shutdown."
 msgstr ""
 
-#: using/cmdline.rst:936
+#: using/cmdline.rst:942
 msgid ""
 "This variable is ignored if the :envvar:`PYTHONMALLOC` environment variable "
 "is used to force the :c:func:`malloc` allocator of the C library, or if "
 "Python is configured without ``pymalloc`` support."
 msgstr ""
 
-#: using/cmdline.rst:940
+#: using/cmdline.rst:946
 msgid ""
 "This variable can now also be used on Python compiled in release mode. It "
 "now has no effect if set to an empty string."
 msgstr ""
 
-#: using/cmdline.rst:947
+#: using/cmdline.rst:953
 msgid ""
 "If set to a non-empty string, the default :term:`filesystem encoding and "
 "error handler` mode will revert to their pre-3.6 values of 'mbcs' and "
@@ -1178,41 +1198,41 @@ msgid ""
 "'surrogatepass' are used."
 msgstr ""
 
-#: using/cmdline.rst:952
+#: using/cmdline.rst:958
 msgid ""
 "This may also be enabled at runtime with :func:`sys."
 "_enablelegacywindowsfsencoding`."
 msgstr ""
 
-#: using/cmdline.rst:969 using/cmdline.rst:1020
+#: using/cmdline.rst:975 using/cmdline.rst:1026
 msgid "Availability"
 msgstr ""
 
-#: using/cmdline.rst:957
+#: using/cmdline.rst:963
 msgid "See :pep:`529` for more details."
 msgstr ""
 
-#: using/cmdline.rst:962
+#: using/cmdline.rst:968
 msgid ""
 "If set to a non-empty string, does not use the new console reader and "
 "writer. This means that Unicode characters will be encoded according to the "
 "active console code page, rather than using utf-8."
 msgstr ""
 
-#: using/cmdline.rst:966
+#: using/cmdline.rst:972
 msgid ""
 "This variable is ignored if the standard streams are redirected (to files or "
 "pipes) rather than referring to console buffers."
 msgstr ""
 
-#: using/cmdline.rst:976
+#: using/cmdline.rst:982
 msgid ""
 "If set to the value ``0``, causes the main Python command line application "
 "to skip coercing the legacy ASCII-based C and POSIX locales to a more "
 "capable UTF-8 based alternative."
 msgstr ""
 
-#: using/cmdline.rst:980
+#: using/cmdline.rst:986
 msgid ""
 "If this variable is *not* set (or is set to a value other than ``0``), the "
 "``LC_ALL`` locale override environment variable is also not set, and the "
@@ -1223,19 +1243,19 @@ msgid ""
 "runtime:"
 msgstr ""
 
-#: using/cmdline.rst:988
+#: using/cmdline.rst:994
 msgid "``C.UTF-8``"
 msgstr ""
 
-#: using/cmdline.rst:989
+#: using/cmdline.rst:995
 msgid "``C.utf8``"
 msgstr ""
 
-#: using/cmdline.rst:990
+#: using/cmdline.rst:996
 msgid "``UTF-8``"
 msgstr ""
 
-#: using/cmdline.rst:992
+#: using/cmdline.rst:998
 msgid ""
 "If setting one of these locale categories succeeds, then the ``LC_CTYPE`` "
 "environment variable will also be set accordingly in the current process "
@@ -1248,7 +1268,7 @@ msgid ""
 "(such as Python's own :func:`locale.getdefaultlocale`)."
 msgstr ""
 
-#: using/cmdline.rst:1002
+#: using/cmdline.rst:1008
 msgid ""
 "Configuring one of these locales (either explicitly or via the above "
 "implicit locale coercion) automatically enables the ``surrogateescape`` :ref:"
@@ -1258,7 +1278,7 @@ msgid ""
 "envvar:`PYTHONIOENCODING` as usual."
 msgstr ""
 
-#: using/cmdline.rst:1009
+#: using/cmdline.rst:1015
 msgid ""
 "For debugging purposes, setting ``PYTHONCOERCECLOCALE=warn`` will cause "
 "Python to emit warning messages on ``stderr`` if either the locale coercion "
@@ -1266,7 +1286,7 @@ msgid ""
 "active when the Python runtime is initialized."
 msgstr ""
 
-#: using/cmdline.rst:1014
+#: using/cmdline.rst:1020
 msgid ""
 "Also note that even when locale coercion is disabled, or when it fails to "
 "find a suitable target locale, :envvar:`PYTHONUTF8` will still activate by "
@@ -1275,11 +1295,11 @@ msgid ""
 "system interfaces."
 msgstr ""
 
-#: using/cmdline.rst:1022
+#: using/cmdline.rst:1028
 msgid "See :pep:`538` for more details."
 msgstr ""
 
-#: using/cmdline.rst:1028
+#: using/cmdline.rst:1034
 msgid ""
 "If this environment variable is set to a non-empty string, enable :ref:"
 "`Python Development Mode <devmode>`, introducing additional runtime checks "
@@ -1287,31 +1307,31 @@ msgid ""
 "setting the :option:`-X` ``dev`` option."
 msgstr ""
 
-#: using/cmdline.rst:1037
+#: using/cmdline.rst:1043
 msgid "If set to ``1``, enable the :ref:`Python UTF-8 Mode <utf8-mode>`."
 msgstr ""
 
-#: using/cmdline.rst:1039
+#: using/cmdline.rst:1045
 msgid "If set to ``0``, disable the :ref:`Python UTF-8 Mode <utf8-mode>`."
 msgstr ""
 
-#: using/cmdline.rst:1041
+#: using/cmdline.rst:1047
 msgid ""
 "Setting any other non-empty string causes an error during interpreter "
 "initialisation."
 msgstr ""
 
-#: using/cmdline.rst:1048
+#: using/cmdline.rst:1054
 msgid ""
 "If this environment variable is set to a non-empty string, issue a :class:"
 "`EncodingWarning` when the locale-specific default encoding is used."
 msgstr ""
 
-#: using/cmdline.rst:1051
+#: using/cmdline.rst:1057
 msgid "See :ref:`io-encoding-warning` for details."
 msgstr ""
 
-#: using/cmdline.rst:1057
+#: using/cmdline.rst:1063
 msgid ""
 "If this variable is set, it disables the inclusion of the tables mapping "
 "extra location information (end line, start column offset and end column "
@@ -1320,38 +1340,38 @@ msgid ""
 "visual location indicators when the interpreter displays tracebacks."
 msgstr ""
 
-#: using/cmdline.rst:1067
+#: using/cmdline.rst:1073
 msgid ""
 "If this variable is set to a nonzero value, it enables support for the Linux "
 "``perf`` profiler so Python calls can be detected by it."
 msgstr ""
 
-#: using/cmdline.rst:1070
+#: using/cmdline.rst:1076
 msgid "If set to ``0``, disable Linux ``perf`` profiler support."
 msgstr ""
 
-#: using/cmdline.rst:1072
+#: using/cmdline.rst:1078
 msgid ""
 "See also the :option:`-X perf <-X>` command-line option and :ref:"
 "`perf_profiling`."
 msgstr ""
 
-#: using/cmdline.rst:1079
+#: using/cmdline.rst:1085
 msgid "Debug-mode variables"
 msgstr ""
 
-#: using/cmdline.rst:1083
+#: using/cmdline.rst:1089
 msgid ""
 "If set, Python will dump objects and reference counts still alive after "
 "shutting down the interpreter."
 msgstr ""
 
-#: using/cmdline.rst:1093
+#: using/cmdline.rst:1099
 msgid ""
 "Need Python configured with the :option:`--with-trace-refs` build option."
 msgstr ""
 
-#: using/cmdline.rst:1090
+#: using/cmdline.rst:1096
 msgid ""
 "If set, Python will dump objects and reference counts still alive after "
 "shutting down the interpreter into a file called *FILENAME*."
diff --git a/using/configure.po b/using/configure.po
index b1c0bfa8b..c6896c8a2 100644
--- a/using/configure.po
+++ b/using/configure.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -691,7 +691,7 @@ msgid "Define the ``Py_TRACE_REFS`` macro."
 msgstr ""
 
 #: using/configure.rst:462
-msgid "Add :func:`!sys.getobjects` function."
+msgid "Add :func:`sys.getobjects` function."
 msgstr ""
 
 #: using/configure.rst:463
@@ -940,48 +940,57 @@ msgid "Options:"
 msgstr ""
 
 #: using/configure.rst:662
-msgid "``universal2``;"
+msgid "``universal2`` (x86-64 and arm64);"
 msgstr ""
 
 #: using/configure.rst:663
-msgid "``32-bit``;"
+msgid "``32-bit`` (PPC and i386);"
 msgstr ""
 
 #: using/configure.rst:664
-msgid "``64-bit``;"
+msgid "``64-bit``  (PPC64 and x86-64);"
 msgstr ""
 
 #: using/configure.rst:665
-msgid "``3-way``;"
+msgid "``3-way`` (i386, PPC and x86-64);"
 msgstr ""
 
 #: using/configure.rst:666
-msgid "``intel``;"
+msgid "``intel`` (i386 and x86-64);"
 msgstr ""
 
 #: using/configure.rst:667
-msgid "``intel-32``;"
+msgid "``intel-32`` (i386);"
 msgstr ""
 
 #: using/configure.rst:668
-msgid "``intel-64``;"
+msgid "``intel-64`` (x86-64);"
 msgstr ""
 
 #: using/configure.rst:669
-msgid "``all``."
+msgid "``all``  (PPC, i386, PPC64 and x86-64)."
 msgstr ""
 
-#: using/configure.rst:673
+#: using/configure.rst:671
+msgid ""
+"Note that values for this configuration item are *not* the same as the "
+"identifiers used for universal binary wheels on macOS. See the Python "
+"Packaging User Guide for details on the `packaging platform compatibility "
+"tags used on macOS <https://packaging.python.org/en/latest/specifications/"
+"platform-compatibility-tags/#macos>`_"
+msgstr ""
+
+#: using/configure.rst:679
 msgid ""
 "Specify the name for the python framework on macOS only valid when :option:"
 "`--enable-framework` is set (default: ``Python``)."
 msgstr ""
 
-#: using/configure.rst:678
+#: using/configure.rst:684
 msgid "Cross Compiling Options"
 msgstr ""
 
-#: using/configure.rst:680
+#: using/configure.rst:686
 msgid ""
 "Cross compiling, also known as cross building, can be used to build Python "
 "for another CPU architecture or platform. Cross compiling requires a Python "
@@ -989,28 +998,28 @@ msgid ""
 "match the version of the cross compiled host Python."
 msgstr ""
 
-#: using/configure.rst:687
+#: using/configure.rst:693
 msgid ""
 "configure for building on BUILD, usually guessed by :program:`config.guess`."
 msgstr ""
 
-#: using/configure.rst:691
+#: using/configure.rst:697
 msgid "cross-compile to build programs to run on HOST (target platform)"
 msgstr ""
 
-#: using/configure.rst:695
+#: using/configure.rst:701
 msgid "path to build ``python`` binary for cross compiling"
 msgstr ""
 
-#: using/configure.rst:701
+#: using/configure.rst:707
 msgid "An environment variable that points to a file with configure overrides."
 msgstr ""
 
-#: using/configure.rst:703
+#: using/configure.rst:709
 msgid "Example *config.site* file:"
 msgstr ""
 
-#: using/configure.rst:705
+#: using/configure.rst:711
 msgid ""
 "# config.site-aarch64\n"
 "ac_cv_buggy_getaddrinfo=no\n"
@@ -1018,11 +1027,11 @@ msgid ""
 "ac_cv_file__dev_ptc=no"
 msgstr ""
 
-#: using/configure.rst:713
+#: using/configure.rst:719
 msgid "Cross compiling example::"
 msgstr ""
 
-#: using/configure.rst:715
+#: using/configure.rst:721
 msgid ""
 "CONFIG_SITE=config.site-aarch64 ../configure \\\n"
 "    --build=x86_64-pc-linux-gnu \\\n"
@@ -1030,70 +1039,70 @@ msgid ""
 "    --with-build-python=../x86_64/python"
 msgstr ""
 
-#: using/configure.rst:722
+#: using/configure.rst:728
 msgid "Python Build System"
 msgstr ""
 
-#: using/configure.rst:725
+#: using/configure.rst:731
 msgid "Main files of the build system"
 msgstr ""
 
-#: using/configure.rst:727
+#: using/configure.rst:733
 msgid ":file:`configure.ac` => :file:`configure`;"
 msgstr ""
 
-#: using/configure.rst:728
+#: using/configure.rst:734
 msgid ""
 ":file:`Makefile.pre.in` => :file:`Makefile` (created by :file:`configure`);"
 msgstr ""
 
-#: using/configure.rst:729
+#: using/configure.rst:735
 msgid ":file:`pyconfig.h` (created by :file:`configure`);"
 msgstr ""
 
-#: using/configure.rst:730
+#: using/configure.rst:736
 msgid ""
 ":file:`Modules/Setup`: C extensions built by the Makefile using :file:"
 "`Module/makesetup` shell script;"
 msgstr ""
 
-#: using/configure.rst:734
+#: using/configure.rst:740
 msgid "Main build steps"
 msgstr ""
 
-#: using/configure.rst:736
+#: using/configure.rst:742
 msgid "C files (``.c``) are built as object files (``.o``)."
 msgstr ""
 
-#: using/configure.rst:737
+#: using/configure.rst:743
 msgid "A static ``libpython`` library (``.a``) is created from objects files."
 msgstr ""
 
-#: using/configure.rst:738
+#: using/configure.rst:744
 msgid ""
 "``python.o`` and the static ``libpython`` library are linked into the final "
 "``python`` program."
 msgstr ""
 
-#: using/configure.rst:740
+#: using/configure.rst:746
 msgid "C extensions are built by the Makefile (see :file:`Modules/Setup`)."
 msgstr ""
 
-#: using/configure.rst:743
+#: using/configure.rst:749
 msgid "Main Makefile targets"
 msgstr ""
 
-#: using/configure.rst:745
+#: using/configure.rst:751
 msgid "``make``: Build Python with the standard library."
 msgstr ""
 
-#: using/configure.rst:746
+#: using/configure.rst:752
 msgid ""
 "``make platform:``: build the ``python`` program, but don't build the "
 "standard library extension modules."
 msgstr ""
 
-#: using/configure.rst:748
+#: using/configure.rst:754
 msgid ""
 "``make profile-opt``: build Python using Profile Guided Optimization (PGO). "
 "You can use the configure :option:`--enable-optimizations` option to make "
@@ -1101,46 +1110,46 @@ msgid ""
 "``make``)."
 msgstr ""
 
-#: using/configure.rst:752
+#: using/configure.rst:758
 msgid ""
 "``make buildbottest``: Build Python and run the Python test suite, the same "
 "way than buildbots test Python. Set ``TESTTIMEOUT`` variable (in seconds) to "
 "change the test timeout (1200 by default: 20 minutes)."
 msgstr ""
 
-#: using/configure.rst:755
+#: using/configure.rst:761
 msgid "``make install``: Build and install Python."
 msgstr ""
 
-#: using/configure.rst:756
+#: using/configure.rst:762
 msgid ""
 "``make regen-all``: Regenerate (almost) all generated files; ``make regen-"
 "stdlib-module-names`` and ``autoconf`` must be run separately for the "
 "remaining generated files."
 msgstr ""
 
-#: using/configure.rst:759
+#: using/configure.rst:765
 msgid "``make clean``: Remove built files."
 msgstr ""
 
-#: using/configure.rst:760
+#: using/configure.rst:766
 msgid ""
 "``make distclean``: Same than ``make clean``, but remove also files created "
 "by the configure script."
 msgstr ""
 
-#: using/configure.rst:764
+#: using/configure.rst:770
 msgid "C extensions"
 msgstr ""
 
-#: using/configure.rst:766
+#: using/configure.rst:772
 msgid ""
 "Some C extensions are built as built-in modules, like the ``sys`` module. "
 "They are built with the ``Py_BUILD_CORE_BUILTIN`` macro defined. Built-in "
 "modules have no ``__file__`` attribute:"
 msgstr ""
 
-#: using/configure.rst:770
+#: using/configure.rst:776
 msgid ""
 ">>> import sys\n"
 ">>> sys\n"
@@ -1151,14 +1160,14 @@ msgid ""
 "AttributeError: module 'sys' has no attribute '__file__'"
 msgstr ""
 
-#: using/configure.rst:780
+#: using/configure.rst:786
 msgid ""
 "Other C extensions are built as dynamic libraries, like the ``_asyncio`` "
 "module. They are built with the ``Py_BUILD_CORE_MODULE`` macro defined. "
 "Example on Linux x86-64:"
 msgstr ""
 
-#: using/configure.rst:784
+#: using/configure.rst:790
 msgid ""
 ">>> import _asyncio\n"
 ">>> _asyncio\n"
@@ -1168,7 +1177,7 @@ msgid ""
 "'/usr/lib64/python3.9/lib-dynload/_asyncio.cpython-39-x86_64-linux-gnu.so'"
 msgstr ""
 
-#: using/configure.rst:792
+#: using/configure.rst:798
 msgid ""
 ":file:`Modules/Setup` is used to generate Makefile targets to build C "
 "extensions. At the beginning of the files, C extensions are built as built-"
@@ -1176,303 +1185,303 @@ msgid ""
 "dynamic libraries."
 msgstr ""
 
-#: using/configure.rst:796
+#: using/configure.rst:802
 msgid ""
 "The :c:macro:`!PyAPI_FUNC()`, :c:macro:`!PyAPI_DATA()` and :c:macro:"
 "`PyMODINIT_FUNC` macros of :file:`Include/exports.h` are defined differently "
 "depending if the ``Py_BUILD_CORE_MODULE`` macro is defined:"
 msgstr ""
 
-#: using/configure.rst:800
+#: using/configure.rst:806
 msgid "Use ``Py_EXPORTED_SYMBOL`` if the ``Py_BUILD_CORE_MODULE`` is defined"
 msgstr ""
 
-#: using/configure.rst:801
+#: using/configure.rst:807
 msgid "Use ``Py_IMPORTED_SYMBOL`` otherwise."
 msgstr ""
 
-#: using/configure.rst:803
+#: using/configure.rst:809
 msgid ""
 "If the ``Py_BUILD_CORE_BUILTIN`` macro is used by mistake on a C extension "
 "built as a shared library, its :samp:`PyInit_{xxx}()` function is not "
 "exported, causing an :exc:`ImportError` on import."
 msgstr ""
 
-#: using/configure.rst:809
+#: using/configure.rst:815
 msgid "Compiler and linker flags"
 msgstr ""
 
-#: using/configure.rst:811
+#: using/configure.rst:817
 msgid ""
 "Options set by the ``./configure`` script and environment variables and used "
 "by ``Makefile``."
 msgstr ""
 
-#: using/configure.rst:815
+#: using/configure.rst:821
 msgid "Preprocessor flags"
 msgstr ""
 
-#: using/configure.rst:819
+#: using/configure.rst:825
 msgid ""
 "Value of :envvar:`CPPFLAGS` variable passed to the ``./configure`` script."
 msgstr ""
 
-#: using/configure.rst:825
+#: using/configure.rst:831
 msgid ""
 "(Objective) C/C++ preprocessor flags, e.g. :samp:`-I{include_dir}` if you "
 "have headers in a nonstandard directory *include_dir*."
 msgstr ""
 
-#: using/configure.rst:1018
+#: using/configure.rst:1024
 msgid ""
 "Both :envvar:`CPPFLAGS` and :envvar:`LDFLAGS` need to contain the shell's "
 "value to be able to build extension modules using the directories specified "
 "in the environment variables."
 msgstr ""
 
-#: using/configure.rst:838
+#: using/configure.rst:844
 msgid ""
 "Extra preprocessor flags added for building the interpreter object files."
 msgstr ""
 
-#: using/configure.rst:840
+#: using/configure.rst:846
 msgid ""
 "Default: ``$(BASECPPFLAGS) -I. -I$(srcdir)/Include $(CONFIGURE_CPPFLAGS) "
 "$(CPPFLAGS)``."
 msgstr ""
 
-#: using/configure.rst:845
+#: using/configure.rst:851
 msgid "Compiler flags"
 msgstr ""
 
-#: using/configure.rst:849
+#: using/configure.rst:855
 msgid "C compiler command."
 msgstr ""
 
-#: using/configure.rst:851
+#: using/configure.rst:857
 msgid "Example: ``gcc -pthread``."
 msgstr ""
 
-#: using/configure.rst:855
+#: using/configure.rst:861
 msgid "C++ compiler command."
 msgstr ""
 
-#: using/configure.rst:857
+#: using/configure.rst:863
 msgid "Example: ``g++ -pthread``."
 msgstr ""
 
-#: using/configure.rst:861
+#: using/configure.rst:867
 msgid "C compiler flags."
 msgstr ""
 
-#: using/configure.rst:865
+#: using/configure.rst:871
 msgid ""
 ":envvar:`CFLAGS_NODIST` is used for building the interpreter and stdlib C "
 "extensions.  Use it when a compiler flag should *not* be part of :envvar:"
 "`CFLAGS` once Python is installed (:gh:`65320`)."
 msgstr ""
 
-#: using/configure.rst:869
+#: using/configure.rst:875
 msgid "In particular, :envvar:`CFLAGS` should not contain:"
 msgstr ""
 
-#: using/configure.rst:871
+#: using/configure.rst:877
 msgid ""
 "the compiler flag ``-I`` (for setting the search path for include files). "
 "The ``-I`` flags are processed from left to right, and any flags in :envvar:"
 "`CFLAGS` would take precedence over user- and package-supplied ``-I`` flags."
 msgstr ""
 
-#: using/configure.rst:876
+#: using/configure.rst:882
 msgid ""
 "hardening flags such as ``-Werror`` because distributions cannot control "
 "whether packages installed by users conform to such heightened standards."
 msgstr ""
 
-#: using/configure.rst:884
+#: using/configure.rst:890
 msgid ""
 "Options passed to the :mod:`compileall` command line when building PYC files "
 "in ``make install``. Default: ``-j0``."
 msgstr ""
 
-#: using/configure.rst:891
+#: using/configure.rst:897
 msgid "Extra C compiler flags."
 msgstr ""
 
-#: using/configure.rst:895
+#: using/configure.rst:901
 msgid ""
 "Value of :envvar:`CFLAGS` variable passed to the ``./configure`` script."
 msgstr ""
 
-#: using/configure.rst:902
+#: using/configure.rst:908
 msgid ""
 "Value of :envvar:`CFLAGS_NODIST` variable passed to the ``./configure`` "
 "script."
 msgstr ""
 
-#: using/configure.rst:909
+#: using/configure.rst:915
 msgid "Base compiler flags."
 msgstr ""
 
-#: using/configure.rst:913
+#: using/configure.rst:919
 msgid "Optimization flags."
 msgstr ""
 
-#: using/configure.rst:917
+#: using/configure.rst:923
 msgid "Strict or non-strict aliasing flags used to compile ``Python/dtoa.c``."
 msgstr ""
 
-#: using/configure.rst:923
+#: using/configure.rst:929
 msgid "Compiler flags used to build a shared library."
 msgstr ""
 
-#: using/configure.rst:925
+#: using/configure.rst:931
 msgid "For example, ``-fPIC`` is used on Linux and on BSD."
 msgstr ""
 
-#: using/configure.rst:929
+#: using/configure.rst:935
 msgid "Extra C flags added for building the interpreter object files."
 msgstr ""
 
-#: using/configure.rst:931
+#: using/configure.rst:937
 msgid ""
 "Default: ``$(CCSHARED)`` when :option:`--enable-shared` is used, or an empty "
 "string otherwise."
 msgstr ""
 
-#: using/configure.rst:936
+#: using/configure.rst:942
 msgid ""
 "Default: ``$(BASECFLAGS) $(OPT) $(CONFIGURE_CFLAGS) $(CFLAGS) "
 "$(EXTRA_CFLAGS)``."
 msgstr ""
 
-#: using/configure.rst:940
+#: using/configure.rst:946
 msgid ""
 "Default: ``$(CONFIGURE_CFLAGS_NODIST) $(CFLAGS_NODIST) -I$(srcdir)/Include/"
 "internal``."
 msgstr ""
 
-#: using/configure.rst:946
+#: using/configure.rst:952
 msgid "C flags used for building the interpreter object files."
 msgstr ""
 
-#: using/configure.rst:948
+#: using/configure.rst:954
 msgid ""
 "Default: ``$(PY_CFLAGS) $(PY_CFLAGS_NODIST) $(PY_CPPFLAGS) "
 "$(CFLAGSFORSHARED)``."
 msgstr ""
 
-#: using/configure.rst:954
+#: using/configure.rst:960
 msgid "Default: ``$(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE``."
 msgstr ""
 
-#: using/configure.rst:960
+#: using/configure.rst:966
 msgid ""
 "Compiler flags to build a standard library extension module as a built-in "
 "module, like the :mod:`posix` module."
 msgstr ""
 
-#: using/configure.rst:963
+#: using/configure.rst:969
 msgid "Default: ``$(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE_BUILTIN``."
 msgstr ""
 
-#: using/configure.rst:969
+#: using/configure.rst:975
 msgid "Purify command. Purify is a memory debugger program."
 msgstr ""
 
-#: using/configure.rst:971
+#: using/configure.rst:977
 msgid "Default: empty string (not used)."
 msgstr ""
 
-#: using/configure.rst:975
+#: using/configure.rst:981
 msgid "Linker flags"
 msgstr ""
 
-#: using/configure.rst:979
+#: using/configure.rst:985
 msgid ""
 "Linker command used to build programs like ``python`` and ``_testembed``."
 msgstr ""
 
-#: using/configure.rst:981
+#: using/configure.rst:987
 msgid "Default: ``$(PURIFY) $(CC)``."
 msgstr ""
 
-#: using/configure.rst:985
+#: using/configure.rst:991
 msgid ""
 "Value of :envvar:`LDFLAGS` variable passed to the ``./configure`` script."
 msgstr ""
 
-#: using/configure.rst:987
+#: using/configure.rst:993
 msgid ""
 "Avoid assigning :envvar:`CFLAGS`, :envvar:`LDFLAGS`, etc. so users can use "
 "them on the command line to append to these values without stomping the pre-"
 "set values."
 msgstr ""
 
-#: using/configure.rst:995
+#: using/configure.rst:1001
 msgid ""
 ":envvar:`LDFLAGS_NODIST` is used in the same manner as :envvar:"
 "`CFLAGS_NODIST`.  Use it when a linker flag should *not* be part of :envvar:"
 "`LDFLAGS` once Python is installed (:gh:`65320`)."
 msgstr ""
 
-#: using/configure.rst:999
+#: using/configure.rst:1005
 msgid "In particular, :envvar:`LDFLAGS` should not contain:"
 msgstr ""
 
-#: using/configure.rst:1001
+#: using/configure.rst:1007
 msgid ""
 "the compiler flag ``-L`` (for setting the search path for libraries). The ``-"
 "L`` flags are processed from left to right, and any flags in :envvar:"
 "`LDFLAGS` would take precedence over user- and package-supplied ``-L`` flags."
 msgstr ""
 
-#: using/configure.rst:1008
+#: using/configure.rst:1014
 msgid ""
 "Value of :envvar:`LDFLAGS_NODIST` variable passed to the ``./configure`` "
 "script."
 msgstr ""
 
-#: using/configure.rst:1015
+#: using/configure.rst:1021
 msgid ""
 "Linker flags, e.g. :samp:`-L{lib_dir}` if you have libraries in a "
 "nonstandard directory *lib_dir*."
 msgstr ""
 
-#: using/configure.rst:1024
+#: using/configure.rst:1030
 msgid ""
 "Linker flags to pass libraries to the linker when linking the Python "
 "executable."
 msgstr ""
 
-#: using/configure.rst:1027
+#: using/configure.rst:1033
 msgid "Example: ``-lrt``."
 msgstr ""
 
-#: using/configure.rst:1031
+#: using/configure.rst:1037
 msgid "Command to build a shared library."
 msgstr ""
 
-#: using/configure.rst:1033
+#: using/configure.rst:1039
 msgid "Default: ``@LDSHARED@ $(PY_LDFLAGS)``."
 msgstr ""
 
-#: using/configure.rst:1037
+#: using/configure.rst:1043
 msgid "Command to build ``libpython`` shared library."
 msgstr ""
 
-#: using/configure.rst:1039
+#: using/configure.rst:1045
 msgid "Default: ``@BLDSHARED@ $(PY_CORE_LDFLAGS)``."
 msgstr ""
 
-#: using/configure.rst:1043
+#: using/configure.rst:1049
 msgid "Default: ``$(CONFIGURE_LDFLAGS) $(LDFLAGS)``."
 msgstr ""
 
-#: using/configure.rst:1047
+#: using/configure.rst:1053
 msgid "Default: ``$(CONFIGURE_LDFLAGS_NODIST) $(LDFLAGS_NODIST)``."
 msgstr ""
 
-#: using/configure.rst:1053
+#: using/configure.rst:1059
 msgid "Linker flags used for building the interpreter object files."
 msgstr ""
diff --git a/using/editors.po b/using/editors.po
index f24415323..a091bcbc6 100644
--- a/using/editors.po
+++ b/using/editors.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-12-17 01:28+0300\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -27,9 +27,28 @@ msgid ""
 "checks."
 msgstr ""
 
-#: using/editors.rst:12
+#: using/editors.rst:14
+msgid "IDLE --- Python editor and shell"
+msgstr ""
+
+#: using/editors.rst:16
+msgid ""
+"IDLE is Python’s Integrated Development and Learning Environment and is "
+"generally bundled with Python installs. If you are on Linux and do not have "
+"IDLE installed see :ref:`Installing IDLE on Linux "
+"<installing_idle_on_linux>`. For more information see the :ref:`IDLE docs "
+"<idle>`."
+msgstr ""
+
+#: using/editors.rst:22
+msgid "Other Editors and IDEs"
+msgstr ""
+
+#: using/editors.rst:24
 msgid ""
-"Please go to `Python Editors <https://wiki.python.org/moin/PythonEditors>`_ "
-"and `Integrated Development Environments <https://wiki.python.org/moin/"
-"IntegratedDevelopmentEnvironments>`_ for a comprehensive list."
+"Python's community wiki has information submitted by the community on "
+"Editors and IDEs. Please go to `Python Editors <https://wiki.python.org/moin/"
+"PythonEditors>`_ and `Integrated Development Environments <https://wiki."
+"python.org/moin/IntegratedDevelopmentEnvironments>`_ for a comprehensive "
+"list."
 msgstr ""
diff --git a/using/unix.po b/using/unix.po
index bd9203969..765a4b13c 100644
--- a/using/unix.po
+++ b/using/unix.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -77,23 +77,65 @@ msgstr ""
 msgid "for Slackware users"
 msgstr ""
 
-#: using/unix.rst:40
+#: using/unix.rst:41
+msgid "Installing IDLE"
+msgstr ""
+
+#: using/unix.rst:43
+msgid "In some cases, IDLE might not be included in your Python installation."
+msgstr ""
+
+#: using/unix.rst:45
+msgid "For Debian and Ubuntu users::"
+msgstr ""
+
+#: using/unix.rst:47
+msgid ""
+"sudo apt update\n"
+"sudo apt install idle"
+msgstr ""
+
+#: using/unix.rst:50
+msgid "For Fedora, RHEL, and CentOS users::"
+msgstr ""
+
+#: using/unix.rst:52
+msgid "sudo dnf install python3-idle"
+msgstr ""
+
+#: using/unix.rst:54
+msgid "For SUSE and OpenSUSE users::"
+msgstr ""
+
+#: using/unix.rst:56
+msgid "sudo zypper install python3-idle"
+msgstr ""
+
+#: using/unix.rst:58
+msgid "For Alpine Linux users::"
+msgstr ""
+
+#: using/unix.rst:60
+msgid "sudo apk add python3-idle"
+msgstr ""
+
+#: using/unix.rst:65
 msgid "On FreeBSD and OpenBSD"
 msgstr ""
 
-#: using/unix.rst:42
+#: using/unix.rst:67
 msgid "FreeBSD users, to add the package use::"
 msgstr ""
 
-#: using/unix.rst:44
+#: using/unix.rst:69
 msgid "pkg install python3"
 msgstr ""
 
-#: using/unix.rst:46
+#: using/unix.rst:71
 msgid "OpenBSD users, to add the package use::"
 msgstr ""
 
-#: using/unix.rst:48
+#: using/unix.rst:73
 msgid ""
 "pkg_add -r python\n"
 "\n"
@@ -101,21 +143,21 @@ msgid ""
 "architecture here>/python-<version>.tgz"
 msgstr ""
 
-#: using/unix.rst:52
+#: using/unix.rst:77
 msgid "For example i386 users get the 2.5.1 version of Python using::"
 msgstr ""
 
-#: using/unix.rst:54
+#: using/unix.rst:79
 msgid ""
 "pkg_add ftp://ftp.openbsd.org/pub/OpenBSD/4.2/packages/i386/python-2.5.1p2."
 "tgz"
 msgstr ""
 
-#: using/unix.rst:60
+#: using/unix.rst:85
 msgid "Building Python"
 msgstr ""
 
-#: using/unix.rst:62
+#: using/unix.rst:87
 msgid ""
 "If you want to compile CPython yourself, first thing you should do is get "
 "the `source <https://www.python.org/downloads/source/>`_. You can download "
@@ -124,36 +166,36 @@ msgid ""
 "contribute patches, you will need a clone.)"
 msgstr ""
 
-#: using/unix.rst:68
+#: using/unix.rst:93
 msgid "The build process consists of the usual commands::"
 msgstr ""
 
-#: using/unix.rst:70
+#: using/unix.rst:95
 msgid ""
 "./configure\n"
 "make\n"
 "make install"
 msgstr ""
 
-#: using/unix.rst:74
+#: using/unix.rst:99
 msgid ""
 ":ref:`Configuration options <configure-options>` and caveats for specific "
 "Unix platforms are extensively documented in the :source:`README.rst` file "
 "in the root of the Python source tree."
 msgstr ""
 
-#: using/unix.rst:80
+#: using/unix.rst:105
 msgid ""
 "``make install`` can overwrite or masquerade the :file:`python3` binary. "
 "``make altinstall`` is therefore recommended instead of ``make install`` "
 "since it only installs :file:`{exec_prefix}/bin/python{version}`."
 msgstr ""
 
-#: using/unix.rst:86
+#: using/unix.rst:111
 msgid "Python-related paths and files"
 msgstr ""
 
-#: using/unix.rst:88
+#: using/unix.rst:113
 msgid ""
 "These are subject to difference depending on local installation "
 "conventions; :option:`prefix <--prefix>` and :option:`exec_prefix <--exec-"
@@ -161,92 +203,92 @@ msgid ""
 "software; they may be the same."
 msgstr ""
 
-#: using/unix.rst:93
+#: using/unix.rst:118
 msgid ""
 "For example, on most Linux systems, the default for both is :file:`/usr`."
 msgstr ""
 
-#: using/unix.rst:96
+#: using/unix.rst:121
 msgid "File/directory"
 msgstr ""
 
-#: using/unix.rst:96
+#: using/unix.rst:121
 msgid "Meaning"
 msgstr ""
 
-#: using/unix.rst:98
+#: using/unix.rst:123
 msgid ":file:`{exec_prefix}/bin/python3`"
 msgstr ""
 
-#: using/unix.rst:98
+#: using/unix.rst:123
 msgid "Recommended location of the interpreter."
 msgstr ""
 
-#: using/unix.rst:100
+#: using/unix.rst:125
 msgid ""
 ":file:`{prefix}/lib/python{version}`, :file:`{exec_prefix}/lib/"
 "python{version}`"
 msgstr ""
 
-#: using/unix.rst:100
+#: using/unix.rst:125
 msgid ""
 "Recommended locations of the directories containing the standard modules."
 msgstr ""
 
-#: using/unix.rst:103
+#: using/unix.rst:128
 msgid ""
 ":file:`{prefix}/include/python{version}`, :file:`{exec_prefix}/include/"
 "python{version}`"
 msgstr ""
 
-#: using/unix.rst:103
+#: using/unix.rst:128
 msgid ""
 "Recommended locations of the directories containing the include files needed "
 "for developing Python extensions and embedding the interpreter."
 msgstr ""
 
-#: using/unix.rst:111
+#: using/unix.rst:136
 msgid "Miscellaneous"
 msgstr ""
 
-#: using/unix.rst:113
+#: using/unix.rst:138
 msgid ""
 "To easily use Python scripts on Unix, you need to make them executable, e.g. "
 "with"
 msgstr ""
 
-#: using/unix.rst:116
+#: using/unix.rst:141
 msgid "$ chmod +x script"
 msgstr ""
 
-#: using/unix.rst:120
+#: using/unix.rst:145
 msgid ""
 "and put an appropriate Shebang line at the top of the script.  A good choice "
 "is usually ::"
 msgstr ""
 
-#: using/unix.rst:123
+#: using/unix.rst:148
 msgid "#!/usr/bin/env python3"
 msgstr ""
 
-#: using/unix.rst:125
+#: using/unix.rst:150
 msgid ""
 "which searches for the Python interpreter in the whole :envvar:`PATH`.  "
 "However, some Unices may not have the :program:`env` command, so you may "
 "need to hardcode ``/usr/bin/python3`` as the interpreter path."
 msgstr ""
 
-#: using/unix.rst:129
+#: using/unix.rst:154
 msgid ""
 "To use shell commands in your Python scripts, look at the :mod:`subprocess` "
 "module."
 msgstr ""
 
-#: using/unix.rst:134
+#: using/unix.rst:159
 msgid "Custom OpenSSL"
 msgstr ""
 
-#: using/unix.rst:136
+#: using/unix.rst:161
 msgid ""
 "To use your vendor's OpenSSL configuration and system trust store, locate "
 "the directory with ``openssl.cnf`` file or symlink in ``/etc``. On most "
@@ -255,19 +297,19 @@ msgid ""
 "directory."
 msgstr ""
 
-#: using/unix.rst:142
+#: using/unix.rst:167
 msgid ""
 "$ find /etc/ -name openssl.cnf -printf \"%h\\n\"\n"
 "/etc/ssl"
 msgstr ""
 
-#: using/unix.rst:147
+#: using/unix.rst:172
 msgid ""
 "Download, build, and install OpenSSL. Make sure you use ``install_sw`` and "
 "not ``install``. The ``install_sw`` target does not override ``openssl.cnf``."
 msgstr ""
 
-#: using/unix.rst:151
+#: using/unix.rst:176
 msgid ""
 "$ curl -O https://www.openssl.org/source/openssl-VERSION.tar.gz\n"
 "$ tar xzf openssl-VERSION\n"
@@ -282,13 +324,13 @@ msgid ""
 "$ popd"
 msgstr ""
 
-#: using/unix.rst:165
+#: using/unix.rst:190
 msgid ""
 "Build Python with custom OpenSSL (see the configure ``--with-openssl`` and "
 "``--with-openssl-rpath`` options)"
 msgstr ""
 
-#: using/unix.rst:168
+#: using/unix.rst:193
 msgid ""
 "$ pushd python-3.x.x\n"
 "$ ./configure -C \\\n"
@@ -299,7 +341,7 @@ msgid ""
 "$ make altinstall"
 msgstr ""
 
-#: using/unix.rst:180
+#: using/unix.rst:205
 msgid ""
 "Patch releases of OpenSSL have a backwards compatible ABI. You don't need to "
 "recompile Python to update OpenSSL. It's sufficient to replace the custom "
diff --git a/using/windows.po b/using/windows.po
index ed72df740..62aca9413 100644
--- a/using/windows.po
+++ b/using/windows.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -804,7 +804,7 @@ msgid ""
 "For more detail on the technical basis for these limitations, please consult "
 "Microsoft's documentation on packaged full-trust apps, currently available "
 "at `docs.microsoft.com/en-us/windows/msix/desktop/desktop-to-uwp-behind-the-"
-"scenes <https://docs.microsoft.com/en-us/windows/msix/desktop/desktop-to-uwp-"
+"scenes <https://learn.microsoft.com/windows/msix/desktop/desktop-to-uwp-"
 "behind-the-scenes>`_"
 msgstr ""
 
@@ -911,7 +911,7 @@ msgstr ""
 #: using/windows.rst:477
 msgid ""
 "The embedded distribution does not include the `Microsoft C Runtime <https://"
-"docs.microsoft.com/en-US/cpp/windows/latest-supported-vc-redist#visual-"
+"learn.microsoft.com/cpp/windows/latest-supported-vc-redist#visual-"
 "studio-2015-2017-2019-and-2022>`_ and it is the responsibility of the "
 "application installer to provide this. The runtime may have already been "
 "installed on a user's system previously or automatically via Windows Update, "
@@ -1137,8 +1137,7 @@ msgstr ""
 
 #: using/windows.rst:621
 msgid ""
-"https://docs.microsoft.com/en-us/windows/win32/procthread/environment-"
-"variables"
+"https://learn.microsoft.com/windows/win32/procthread/environment-variables"
 msgstr ""
 
 #: using/windows.rst:622
@@ -1147,8 +1146,8 @@ msgstr ""
 
 #: using/windows.rst:624
 msgid ""
-"https://docs.microsoft.com/en-us/windows-server/administration/windows-"
-"commands/set_1"
+"https://learn.microsoft.com/windows-server/administration/windows-commands/"
+"set_1"
 msgstr ""
 
 #: using/windows.rst:625
@@ -1157,8 +1156,8 @@ msgstr ""
 
 #: using/windows.rst:627
 msgid ""
-"https://docs.microsoft.com/en-us/windows-server/administration/windows-"
-"commands/setx"
+"https://learn.microsoft.com/windows-server/administration/windows-commands/"
+"setx"
 msgstr ""
 
 #: using/windows.rst:628
@@ -2124,7 +2123,7 @@ msgstr ""
 
 #: using/windows.rst:1224
 msgid ""
-"`Component Object Model <https://docs.microsoft.com/en-us/windows/win32/com/"
+"`Component Object Model <https://learn.microsoft.com/windows/win32/com/"
 "component-object-model--com--portal>`_ (COM)"
 msgstr ""
 
@@ -2142,7 +2141,7 @@ msgstr ""
 
 #: using/windows.rst:1230
 msgid ""
-"`Microsoft Foundation Classes <https://docs.microsoft.com/en-us/cpp/mfc/mfc-"
+"`Microsoft Foundation Classes <https://learn.microsoft.com/cpp/mfc/mfc-"
 "desktop-applications>`_ (MFC) user interfaces"
 msgstr ""
 
diff --git a/whatsnew/2.3.po b/whatsnew/2.3.po
index 9a4e10b9c..14fa35559 100644
--- a/whatsnew/2.3.po
+++ b/whatsnew/2.3.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -500,7 +500,7 @@ msgid ""
 "Other systems also allow Unicode strings as file names but convert them to "
 "byte strings before passing them to the system, which can cause a :exc:"
 "`UnicodeError` to be raised. Applications can test whether arbitrary Unicode "
-"strings are supported as file names by checking :attr:`os.path."
+"strings are supported as file names by checking :const:`os.path."
 "supports_unicode_filenames`, a Boolean value."
 msgstr ""
 
diff --git a/whatsnew/2.7.po b/whatsnew/2.7.po
index 993adb5be..b1d20a227 100644
--- a/whatsnew/2.7.po
+++ b/whatsnew/2.7.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -1464,7 +1464,7 @@ msgid ""
 ">>> for letter in 'here is a sample of english text':\n"
 "...   c[letter] += 1\n"
 "...\n"
-">>> c \n"
+">>> c\n"
 "Counter({' ': 6, 'e': 5, 's': 3, 'a': 2, 'i': 2, 'h': 2,\n"
 "'l': 2, 't': 2, 'g': 1, 'f': 1, 'm': 1, 'o': 1, 'n': 1,\n"
 "'p': 1, 'r': 1, 'x': 1})\n"
@@ -2210,7 +2210,7 @@ msgstr ""
 
 #: whatsnew/2.7.rst:1605
 msgid ""
-"The :attr:`sys.version_info` value is now a named tuple, with attributes "
+"The :data:`sys.version_info` value is now a named tuple, with attributes "
 "named :attr:`!major`, :attr:`!minor`, :attr:`!micro`, :attr:`!releaselevel`, "
 "and :attr:`!serial`.  (Contributed by Ross Light; :issue:`4285`.)"
 msgstr ""
diff --git a/whatsnew/3.0.po b/whatsnew/3.0.po
index 87b29d22c..daa03f126 100644
--- a/whatsnew/3.0.po
+++ b/whatsnew/3.0.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -157,7 +157,7 @@ msgstr ""
 
 #: whatsnew/3.0.rst:153
 msgid ""
-"Also, the :meth:`dict.iterkeys`, :meth:`dict.iteritems` and :meth:`dict."
+"Also, the :meth:`!dict.iterkeys`, :meth:`!dict.iteritems` and :meth:`!dict."
 "itervalues` methods are no longer supported."
 msgstr ""
 
@@ -184,7 +184,7 @@ msgstr ""
 
 #: whatsnew/3.0.rst:173
 msgid ""
-":func:`range` now behaves like :func:`xrange` used to behave, except it "
+":func:`range` now behaves like :func:`!xrange` used to behave, except it "
 "works with values of arbitrary size.  The latter no longer exists."
 msgstr ""
 
@@ -214,18 +214,19 @@ msgstr ""
 
 #: whatsnew/3.0.rst:195
 msgid ""
-":meth:`builtin.sorted` and :meth:`list.sort` no longer accept the *cmp* "
-"argument providing a comparison function.  Use the *key* argument instead. N."
-"B. the *key* and *reverse* arguments are now \"keyword-only\"."
+":meth:`sorted` and :meth:`list.sort` no longer accept the *cmp* argument "
+"providing a comparison function.  Use the *key* argument instead. N.B. the "
+"*key* and *reverse* arguments are now \"keyword-only\"."
 msgstr ""
 
 #: whatsnew/3.0.rst:200
 msgid ""
-"The :func:`cmp` function should be treated as gone, and the :meth:`__cmp__` "
-"special method is no longer supported.  Use :meth:`__lt__` for sorting, :"
-"meth:`__eq__` with :meth:`__hash__`, and other rich comparisons as needed. "
-"(If you really need the :func:`cmp` functionality, you could use the "
-"expression ``(a > b) - (a < b)`` as the equivalent for ``cmp(a, b)``.)"
+"The :func:`!cmp` function should be treated as gone, and the :meth:`!"
+"__cmp__` special method is no longer supported.  Use :meth:`~object.__lt__` "
+"for sorting, :meth:`~object.__eq__` with :meth:`~object.__hash__`, and other "
+"rich comparisons as needed. (If you really need the :func:`!cmp` "
+"functionality, you could use the expression ``(a > b) - (a < b)`` as the "
+"equivalent for ``cmp(a, b)``.)"
 msgstr ""
 
 #: whatsnew/3.0.rst:207
@@ -234,9 +235,9 @@ msgstr ""
 
 #: whatsnew/3.0.rst:209
 msgid ""
-":pep:`237`: Essentially, :class:`long` renamed to :class:`int`. That is, "
+":pep:`237`: Essentially, :class:`!long` renamed to :class:`int`. That is, "
 "there is only one built-in integral type, named :class:`int`; but it behaves "
-"mostly like the old :class:`long` type."
+"mostly like the old :class:`!long` type."
 msgstr ""
 
 #: whatsnew/3.0.rst:213
@@ -248,11 +249,11 @@ msgstr ""
 
 #: whatsnew/3.0.rst:217
 msgid ""
-"The :data:`sys.maxint` constant was removed, since there is no longer a "
+"The :data:`!sys.maxint` constant was removed, since there is no longer a "
 "limit to the value of integers.  However, :data:`sys.maxsize` can be used as "
 "an integer larger than any practical list or string index.  It conforms to "
 "the implementation's \"natural\" integer size and is typically the same as :"
-"data:`sys.maxint` in previous releases on the same platform (assuming the "
+"data:`!sys.maxint` in previous releases on the same platform (assuming the "
 "same build options)."
 msgstr ""
 
@@ -297,7 +298,7 @@ msgid ""
 "uses Unicode, encodings or binary data most likely has to change.  The "
 "change is for the better, as in the 2.x world there were numerous bugs "
 "having to do with mixing encoded and unencoded text.  To be prepared in "
-"Python 2.x, start using :class:`unicode` for all unencoded text, and :class:"
+"Python 2.x, start using :class:`!unicode` for all unencoded text, and :class:"
 "`str` for binary or encoded data only.  Then the ``2to3`` tool will do most "
 "of the work for you."
 msgstr ""
@@ -322,7 +323,8 @@ msgid ""
 "Like :class:`str`, the :class:`bytes` type is immutable.  There is a "
 "separate *mutable* type to hold buffered binary data, :class:`bytearray`.  "
 "Nearly all APIs that accept :class:`bytes` also accept :class:`bytearray`.  "
-"The mutable API is based on :class:`collections.MutableSequence`."
+"The mutable API is based on :class:`collections.MutableSequence <collections."
+"abc.MutableSequence>`."
 msgstr ""
 
 #: whatsnew/3.0.rst:274
@@ -337,10 +339,10 @@ msgstr ""
 
 #: whatsnew/3.0.rst:281
 msgid ""
-"The built-in :class:`basestring` abstract type was removed.  Use :class:"
+"The built-in :class:`!basestring` abstract type was removed.  Use :class:"
 "`str` instead.  The :class:`str` and :class:`bytes` types don't have "
 "functionality enough in common to warrant a shared base class.  The ``2to3`` "
-"tool (see below) replaces every occurrence of :class:`basestring` with :"
+"tool (see below) replaces every occurrence of :class:`!basestring` with :"
 "class:`str`."
 msgstr ""
 
@@ -442,9 +444,9 @@ msgid ""
 ":pep:`3107`: Function argument and return value annotations.  This provides "
 "a standardized way of annotating a function's parameters and return value.  "
 "There are no semantics attached to such annotations except that they can be "
-"introspected at runtime using the :attr:`~object.__annotations__` "
-"attribute.  The intent is to encourage experimentation through metaclasses, "
-"decorators or frameworks."
+"introspected at runtime using the :attr:`!__annotations__` attribute.  The "
+"intent is to encourage experimentation through metaclasses, decorators or "
+"frameworks."
 msgstr ""
 
 #: whatsnew/3.0.rst:363
@@ -570,7 +572,7 @@ msgstr ""
 
 #: whatsnew/3.0.rst:431
 msgid ""
-"The module-global :data:`__metaclass__` variable is no longer supported.  "
+"The module-global :data:`!__metaclass__` variable is no longer supported.  "
 "(It was a crutch to make it easier to default to new-style classes without "
 "deriving every class from :class:`object`.)"
 msgstr ""
@@ -714,15 +716,15 @@ msgid ""
 "and has additional keyword arguments *encoding*, *errors*, *newline* and "
 "*closefd*.  Also note that an invalid *mode* argument now raises :exc:"
 "`ValueError`, not :exc:`IOError`.  The binary file object underlying a text "
-"file object can be accessed as :attr:`f.buffer` (but beware that the text "
+"file object can be accessed as :attr:`!f.buffer` (but beware that the text "
 "object maintains a buffer of itself in order to speed up the encoding and "
 "decoding operations)."
 msgstr ""
 
 #: whatsnew/3.0.rst:529
 msgid ""
-":ref:`pep-3118`.  The old builtin :func:`buffer` is now really gone; the new "
-"builtin :func:`memoryview` provides (mostly) similar functionality."
+":ref:`pep-3118`.  The old builtin :func:`!buffer` is now really gone; the "
+"new builtin :func:`memoryview` provides (mostly) similar functionality."
 msgstr ""
 
 #: whatsnew/3.0.rst:533
@@ -730,8 +732,9 @@ msgid ""
 ":ref:`pep-3119`.  The :mod:`abc` module and the ABCs defined in the :mod:"
 "`collections` module plays a somewhat more prominent role in the language "
 "now, and built-in collection types like :class:`dict` and :class:`list` "
-"conform to the :class:`collections.MutableMapping` and :class:`collections."
-"MutableSequence` ABCs, respectively."
+"conform to the :class:`collections.MutableMapping <collections.abc."
+"MutableMapping>` and :class:`collections.MutableSequence <collections.abc."
+"MutableSequence>` ABCs, respectively."
 msgstr ""
 
 #: whatsnew/3.0.rst:539
@@ -898,10 +901,10 @@ msgstr ""
 
 #: whatsnew/3.0.rst:615
 msgid ""
-":mod:`tkinter` (all :mod:`Tkinter`-related modules except :mod:`turtle`).  "
-"The target audience of :mod:`turtle` doesn't really care about :mod:"
-"`tkinter`.  Also note that as of Python 2.6, the functionality of :mod:"
-"`turtle` has been greatly enhanced."
+":mod:`tkinter` (all ``Tkinter``-related modules except :mod:`turtle`).  The "
+"target audience of :mod:`turtle` doesn't really care about :mod:`tkinter`.  "
+"Also note that as of Python 2.6, the functionality of :mod:`turtle` has been "
+"greatly enhanced."
 msgstr ""
 
 #: whatsnew/3.0.rst:620
@@ -927,23 +930,23 @@ msgstr ""
 
 #: whatsnew/3.0.rst:631
 msgid ""
-"Cleanup of the :mod:`sys` module: removed :func:`sys.exitfunc`, :func:`sys."
-"exc_clear`, :data:`sys.exc_type`, :data:`sys.exc_value`, :data:`sys."
+"Cleanup of the :mod:`sys` module: removed :func:`!sys.exitfunc`, :func:`!sys."
+"exc_clear`, :data:`!sys.exc_type`, :data:`!sys.exc_value`, :data:`!sys."
 "exc_traceback`.  (Note that :data:`sys.last_type` etc. remain.)"
 msgstr ""
 
 #: whatsnew/3.0.rst:636
 msgid ""
-"Cleanup of the :class:`array.array` type: the :meth:`read` and :meth:`write` "
-"methods are gone; use :meth:`fromfile` and :meth:`tofile` instead.  Also, "
-"the ``'c'`` typecode for array is gone -- use either ``'b'`` for bytes or "
-"``'u'`` for Unicode characters."
+"Cleanup of the :class:`array.array` type: the :meth:`!read` and :meth:`!"
+"write` methods are gone; use :meth:`~array.array.fromfile` and :meth:`~array."
+"array.tofile` instead.  Also, the ``'c'`` typecode for array is gone -- use "
+"either ``'b'`` for bytes or ``'u'`` for Unicode characters."
 msgstr ""
 
 #: whatsnew/3.0.rst:642
 msgid ""
-"Cleanup of the :mod:`operator` module: removed :func:`sequenceIncludes` and :"
-"func:`isCallable`."
+"Cleanup of the :mod:`operator` module: removed :func:`!sequenceIncludes` "
+"and :func:`!isCallable`."
 msgstr ""
 
 #: whatsnew/3.0.rst:645
@@ -954,7 +957,8 @@ msgid ""
 msgstr ""
 
 #: whatsnew/3.0.rst:649
-msgid "Cleanup of the :mod:`random` module: removed the :func:`jumpahead` API."
+msgid ""
+"Cleanup of the :mod:`random` module: removed the :func:`!jumpahead` API."
 msgstr ""
 
 #: whatsnew/3.0.rst:651
@@ -963,8 +967,8 @@ msgstr ""
 
 #: whatsnew/3.0.rst:653
 msgid ""
-"The functions :func:`os.tmpnam`, :func:`os.tempnam` and :func:`os.tmpfile` "
-"have been removed in favor of the :mod:`tempfile` module."
+"The functions :func:`!os.tmpnam`, :func:`!os.tempnam` and :func:`!os."
+"tmpfile` have been removed in favor of the :mod:`tempfile` module."
 msgstr ""
 
 #: whatsnew/3.0.rst:657
@@ -975,19 +979,19 @@ msgstr ""
 
 #: whatsnew/3.0.rst:661
 msgid ""
-":data:`string.letters` and its friends (:data:`string.lowercase` and :data:"
-"`string.uppercase`) are gone.  Use :data:`string.ascii_letters` etc. "
-"instead.  (The reason for the removal is that :data:`string.letters` and "
+":data:`!string.letters` and its friends (:data:`!string.lowercase` and :data:"
+"`!string.uppercase`) are gone.  Use :data:`string.ascii_letters` etc. "
+"instead.  (The reason for the removal is that :data:`!string.letters` and "
 "friends had locale-specific behavior, which is a bad idea for such "
 "attractively named global \"constants\".)"
 msgstr ""
 
 #: whatsnew/3.0.rst:668
 msgid ""
-"Renamed module :mod:`__builtin__` to :mod:`builtins` (removing the "
-"underscores, adding an 's').  The :data:`__builtins__` variable found in "
+"Renamed module :mod:`!__builtin__` to :mod:`builtins` (removing the "
+"underscores, adding an 's').  The :data:`!__builtins__` variable found in "
 "most global namespaces is unchanged.  To modify a builtin, you should use :"
-"mod:`builtins`, not :data:`__builtins__`!"
+"mod:`builtins`, not :data:`!__builtins__`!"
 msgstr ""
 
 #: whatsnew/3.0.rst:675
@@ -1032,13 +1036,13 @@ msgid ""
 msgstr ""
 
 #: whatsnew/3.0.rst:705
-msgid ":exc:`StandardError` was removed."
+msgid ":exc:`!StandardError` was removed."
 msgstr ""
 
 #: whatsnew/3.0.rst:707
 msgid ""
-"Exceptions no longer behave as sequences.  Use the :attr:`args` attribute "
-"instead."
+"Exceptions no longer behave as sequences.  Use the :attr:`~BaseException."
+"args` attribute instead."
 msgstr ""
 
 #: whatsnew/3.0.rst:710
@@ -1124,10 +1128,10 @@ msgstr ""
 
 #: whatsnew/3.0.rst:768
 msgid ""
-":meth:`__getslice__`, :meth:`__setslice__` and :meth:`__delslice__` were "
+":meth:`!__getslice__`, :meth:`!__setslice__` and :meth:`!__delslice__` were "
 "killed.  The syntax ``a[i:j]`` now translates to ``a.__getitem__(slice(i, "
-"j))`` (or :meth:`__setitem__` or :meth:`__delitem__`, when used as an "
-"assignment or deletion target, respectively)."
+"j))`` (or :meth:`~object.__setitem__` or :meth:`~object.__delitem__`, when "
+"used as an assignment or deletion target, respectively)."
 msgstr ""
 
 #: whatsnew/3.0.rst:774
@@ -1138,13 +1142,13 @@ msgstr ""
 
 #: whatsnew/3.0.rst:777
 msgid ""
-"The :meth:`__oct__` and :meth:`__hex__` special methods are removed -- :func:"
-"`oct` and :func:`hex` use :meth:`__index__` now to convert the argument to "
-"an integer."
+"The :meth:`!__oct__` and :meth:`!__hex__` special methods are removed -- :"
+"func:`oct` and :func:`hex` use :meth:`~object.__index__` now to convert the "
+"argument to an integer."
 msgstr ""
 
 #: whatsnew/3.0.rst:781
-msgid "Removed support for :attr:`__members__` and :attr:`__methods__`."
+msgid "Removed support for :attr:`!__members__` and :attr:`!__methods__`."
 msgstr ""
 
 #: whatsnew/3.0.rst:783
@@ -1178,7 +1182,7 @@ msgstr ""
 
 #: whatsnew/3.0.rst:805
 msgid ""
-":pep:`3111`: :func:`raw_input` was renamed to :func:`input`.  That is, the "
+":pep:`3111`: :func:`!raw_input` was renamed to :func:`input`.  That is, the "
 "new :func:`input` function reads a line from :data:`sys.stdin` and returns "
 "it with the trailing newline stripped. It raises :exc:`EOFError` if the "
 "input is terminated prematurely. To get the old behavior of :func:`input`, "
@@ -1203,53 +1207,53 @@ msgid ""
 msgstr ""
 
 #: whatsnew/3.0.rst:823
-msgid "Moved :func:`intern` to :func:`sys.intern`."
+msgid "Moved :func:`!intern` to :func:`sys.intern`."
 msgstr ""
 
 #: whatsnew/3.0.rst:825
 msgid ""
-"Removed: :func:`apply`.  Instead of ``apply(f, args)`` use ``f(*args)``."
+"Removed: :func:`!apply`.  Instead of ``apply(f, args)`` use ``f(*args)``."
 msgstr ""
 
 #: whatsnew/3.0.rst:828
 msgid ""
 "Removed :func:`callable`.  Instead of ``callable(f)`` you can use "
-"``isinstance(f, collections.Callable)``.  The :func:`operator.isCallable` "
+"``isinstance(f, collections.Callable)``.  The :func:`!operator.isCallable` "
 "function is also gone."
 msgstr ""
 
 #: whatsnew/3.0.rst:832
 msgid ""
-"Removed :func:`coerce`.  This function no longer serves a purpose now that "
+"Removed :func:`!coerce`.  This function no longer serves a purpose now that "
 "classic classes are gone."
 msgstr ""
 
 #: whatsnew/3.0.rst:835
 msgid ""
-"Removed :func:`execfile`.  Instead of ``execfile(fn)`` use ``exec(open(fn)."
+"Removed :func:`!execfile`.  Instead of ``execfile(fn)`` use ``exec(open(fn)."
 "read())``."
 msgstr ""
 
 #: whatsnew/3.0.rst:838
 msgid ""
-"Removed the :class:`file` type.  Use :func:`open`.  There are now several "
+"Removed the :class:`!file` type.  Use :func:`open`.  There are now several "
 "different kinds of streams that open can return in the :mod:`io` module."
 msgstr ""
 
 #: whatsnew/3.0.rst:841
 msgid ""
-"Removed :func:`reduce`.  Use :func:`functools.reduce` if you really need it; "
-"however, 99 percent of the time an explicit :keyword:`for` loop is more "
+"Removed :func:`!reduce`.  Use :func:`functools.reduce` if you really need "
+"it; however, 99 percent of the time an explicit :keyword:`for` loop is more "
 "readable."
 msgstr ""
 
 #: whatsnew/3.0.rst:845
-msgid "Removed :func:`reload`.  Use :func:`!imp.reload`."
+msgid "Removed :func:`!reload`.  Use :func:`!imp.reload`."
 msgstr ""
 
 #: whatsnew/3.0.rst:847
 msgid ""
-"Removed. :meth:`dict.has_key` -- use the :keyword:`in` operator instead."
+"Removed. :meth:`!dict.has_key` -- use the :keyword:`in` operator instead."
 msgstr ""
 
 #: whatsnew/3.0.rst:854
diff --git a/whatsnew/3.12.po b/whatsnew/3.12.po
index 09a68fcd7..11f27cc06 100644
--- a/whatsnew/3.12.po
+++ b/whatsnew/3.12.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -255,7 +255,7 @@ msgid ""
 "<unittest-TestCase-removed-aliases_>`_."
 msgstr ""
 
-#: whatsnew/3.12.rst:1837
+#: whatsnew/3.12.rst:1851
 msgid "New Features"
 msgstr ""
 
@@ -1150,37 +1150,49 @@ msgid ""
 msgstr ""
 
 #: whatsnew/3.12.rst:822
-msgid "pdb"
+msgid "platform"
 msgstr ""
 
 #: whatsnew/3.12.rst:824
 msgid ""
+"Add support for detecting Windows 11 and Windows Server releases past 2012. "
+"Previously, lookups on Windows Server platforms newer than Windows Server "
+"2012 and on Windows 11 would return ``Windows-10``. (Contributed by Steve "
+"Dower in :gh:`89545`.)"
+msgstr ""
+
+#: whatsnew/3.12.rst:830
+msgid "pdb"
+msgstr ""
+
+#: whatsnew/3.12.rst:832
+msgid ""
 "Add convenience variables to hold values temporarily for debug session and "
 "provide quick access to values like the current frame or the return value. "
 "(Contributed by Tian Gao in :gh:`103693`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:830
+#: whatsnew/3.12.rst:838
 msgid "random"
 msgstr ""
 
-#: whatsnew/3.12.rst:832
+#: whatsnew/3.12.rst:840
 msgid ""
 "Add :func:`random.binomialvariate`. (Contributed by Raymond Hettinger in :gh:"
 "`81620`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:835
+#: whatsnew/3.12.rst:843
 msgid ""
 "Add a default of ``lambd=1.0`` to :func:`random.expovariate`. (Contributed "
 "by Raymond Hettinger in :gh:`100234`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:839
+#: whatsnew/3.12.rst:847
 msgid "shutil"
 msgstr ""
 
-#: whatsnew/3.12.rst:841
+#: whatsnew/3.12.rst:849
 msgid ""
 ":func:`shutil.make_archive` now passes the *root_dir* argument to custom "
 "archivers which support it. In this case it no longer temporarily changes "
@@ -1188,7 +1200,7 @@ msgid ""
 "archiving. (Contributed by Serhiy Storchaka in :gh:`74696`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:847
+#: whatsnew/3.12.rst:855
 msgid ""
 ":func:`shutil.rmtree` now accepts a new argument *onexc* which is an error "
 "handler like *onerror* but which expects an exception instance rather than a "
@@ -1196,14 +1208,14 @@ msgid ""
 "Katriel in :gh:`102828`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:852
+#: whatsnew/3.12.rst:860
 msgid ""
 ":func:`shutil.which` now consults the *PATHEXT* environment variable to find "
 "matches within *PATH* on Windows even when the given *cmd* includes a "
 "directory component. (Contributed by Charles Machalow in :gh:`103179`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:857
+#: whatsnew/3.12.rst:865
 msgid ""
 ":func:`shutil.which` will call ``NeedCurrentDirectoryForExePathW`` when "
 "querying for executables on Windows to determine if the current working "
@@ -1211,24 +1223,24 @@ msgid ""
 "Machalow in :gh:`103179`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:862
+#: whatsnew/3.12.rst:870
 msgid ""
 ":func:`shutil.which` will return a path matching the *cmd* with a component "
 "from ``PATHEXT`` prior to a direct match elsewhere in the search path on "
 "Windows. (Contributed by Charles Machalow in :gh:`103179`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1541
+#: whatsnew/3.12.rst:1555
 msgid "sqlite3"
 msgstr ""
 
-#: whatsnew/3.12.rst:870
+#: whatsnew/3.12.rst:878
 msgid ""
 "Add a :ref:`command-line interface <sqlite3-cli>`. (Contributed by Erlend E. "
 "Aasland in :gh:`77617`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:873
+#: whatsnew/3.12.rst:881
 msgid ""
 "Add the :attr:`sqlite3.Connection.autocommit` attribute to :class:`sqlite3."
 "Connection` and the *autocommit* parameter to :func:`sqlite3.connect` to "
@@ -1236,43 +1248,43 @@ msgid ""
 "control-autocommit>`. (Contributed by Erlend E. Aasland in :gh:`83638`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:880
+#: whatsnew/3.12.rst:888
 msgid ""
 "Add *entrypoint* keyword-only parameter to :meth:`sqlite3.Connection."
 "load_extension`, for overriding the SQLite extension entry point. "
 "(Contributed by Erlend E. Aasland in :gh:`103015`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:885
+#: whatsnew/3.12.rst:893
 msgid ""
 "Add :meth:`sqlite3.Connection.getconfig` and :meth:`sqlite3.Connection."
 "setconfig` to :class:`sqlite3.Connection` to make configuration changes to a "
 "database connection. (Contributed by Erlend E. Aasland in :gh:`103489`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:891
+#: whatsnew/3.12.rst:899
 msgid "statistics"
 msgstr ""
 
-#: whatsnew/3.12.rst:893
+#: whatsnew/3.12.rst:901
 msgid ""
 "Extend :func:`statistics.correlation` to include as a ``ranked`` method for "
 "computing the Spearman correlation of ranked data. (Contributed by Raymond "
 "Hettinger in :gh:`95861`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:898
+#: whatsnew/3.12.rst:2318
 msgid "sys"
 msgstr ""
 
-#: whatsnew/3.12.rst:900
+#: whatsnew/3.12.rst:908
 msgid ""
 "Add the :mod:`sys.monitoring` namespace to expose the new :ref:`PEP 669 "
 "<whatsnew312-pep669>` monitoring API. (Contributed by Mark Shannon in :gh:"
 "`103082`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:904
+#: whatsnew/3.12.rst:912
 msgid ""
 "Add :func:`sys.activate_stack_trampoline` and :func:`sys."
 "deactivate_stack_trampoline` for activating and deactivating stack profiler "
@@ -1282,7 +1294,7 @@ msgid ""
 "Shannon in :gh:`96123`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:913
+#: whatsnew/3.12.rst:921
 msgid ""
 "Add :data:`sys.last_exc` which holds the last unhandled exception that was "
 "raised (for post-mortem debugging use cases). Deprecate the three fields "
@@ -1291,14 +1303,14 @@ msgid ""
 "Katriel in :gh:`102778`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1736
+#: whatsnew/3.12.rst:1750
 msgid ""
 ":func:`sys._current_exceptions` now returns a mapping from thread-id to an "
 "exception instance, rather than to a ``(typ, exc, tb)`` tuple. (Contributed "
 "by Irit Katriel in :gh:`103176`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:923
+#: whatsnew/3.12.rst:931
 msgid ""
 ":func:`sys.setrecursionlimit` and :func:`sys.getrecursionlimit`. The "
 "recursion limit now applies only to Python code. Builtin functions do not "
@@ -1306,23 +1318,23 @@ msgid ""
 "prevents recursion from causing a virtual machine crash."
 msgstr ""
 
-#: whatsnew/3.12.rst:929
+#: whatsnew/3.12.rst:937
 msgid "tempfile"
 msgstr ""
 
-#: whatsnew/3.12.rst:931
+#: whatsnew/3.12.rst:939
 msgid ""
 "The :class:`tempfile.NamedTemporaryFile` function has a new optional "
 "parameter *delete_on_close* (Contributed by Evgeny Zorin in :gh:`58451`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:933
+#: whatsnew/3.12.rst:941
 msgid ""
 ":func:`tempfile.mkdtemp` now always returns an absolute path, even if the "
 "argument provided to the *dir* parameter is a relative path."
 msgstr ""
 
-#: whatsnew/3.12.rst:935
+#: whatsnew/3.12.rst:943
 msgid ""
 "As of 3.12.4 on Windows, the default mode ``0o700`` used by :func:`tempfile."
 "mkdtemp` now limits access to the new directory due to changes to :func:`os."
@@ -1330,11 +1342,11 @@ msgid ""
 "Dower in :gh:`118486`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:941
+#: whatsnew/3.12.rst:949
 msgid "threading"
 msgstr ""
 
-#: whatsnew/3.12.rst:943
+#: whatsnew/3.12.rst:951
 msgid ""
 "Add :func:`threading.settrace_all_threads` and :func:`threading."
 "setprofile_all_threads` that allow to set tracing and profiling functions in "
@@ -1342,11 +1354,11 @@ msgid ""
 "Galindo in :gh:`93503`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:949
+#: whatsnew/3.12.rst:957
 msgid "tkinter"
 msgstr ""
 
-#: whatsnew/3.12.rst:951
+#: whatsnew/3.12.rst:959
 msgid ""
 "``tkinter.Canvas.coords()`` now flattens its arguments. It now accepts not "
 "only coordinates as separate arguments (``x1, y1, x2, y2, ...``) and a "
@@ -1356,11 +1368,11 @@ msgid ""
 "in :gh:`94473`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:960
+#: whatsnew/3.12.rst:968
 msgid "tokenize"
 msgstr ""
 
-#: whatsnew/3.12.rst:962
+#: whatsnew/3.12.rst:970
 msgid ""
 "The :mod:`tokenize` module includes the changes introduced in :pep:`701`. "
 "(Contributed by Marta Gómez Macías and Pablo Galindo in :gh:`102856`.) See :"
@@ -1368,22 +1380,22 @@ msgid ""
 "to the :mod:`tokenize` module."
 msgstr ""
 
-#: whatsnew/3.12.rst:968
+#: whatsnew/3.12.rst:976
 msgid "types"
 msgstr ""
 
-#: whatsnew/3.12.rst:970
+#: whatsnew/3.12.rst:978
 msgid ""
 "Add :func:`types.get_original_bases` to allow for further introspection of :"
 "ref:`user-defined-generics` when subclassed. (Contributed by James Hilton-"
 "Balfe and Alex Waygood in :gh:`101827`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:977
+#: whatsnew/3.12.rst:985
 msgid "typing"
 msgstr ""
 
-#: whatsnew/3.12.rst:979
+#: whatsnew/3.12.rst:987
 msgid ""
 ":func:`isinstance` checks against :func:`runtime-checkable protocols <typing."
 "runtime_checkable>` now use :func:`inspect.getattr_static` rather than :func:"
@@ -1396,7 +1408,7 @@ msgid ""
 "affected by this change. (Contributed by Alex Waygood in :gh:`102433`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:990
+#: whatsnew/3.12.rst:998
 msgid ""
 "The members of a runtime-checkable protocol are now considered \"frozen\" at "
 "runtime as soon as the class has been created. Monkey-patching attributes "
@@ -1404,7 +1416,7 @@ msgid ""
 "on :func:`isinstance` checks comparing objects to the protocol. For example::"
 msgstr ""
 
-#: whatsnew/3.12.rst:995
+#: whatsnew/3.12.rst:1003
 msgid ""
 ">>> from typing import Protocol, runtime_checkable\n"
 ">>> @runtime_checkable\n"
@@ -1425,13 +1437,13 @@ msgid ""
 "True"
 msgstr ""
 
-#: whatsnew/3.12.rst:1012
+#: whatsnew/3.12.rst:1020
 msgid ""
 "This change was made in order to speed up ``isinstance()`` checks against "
 "runtime-checkable protocols."
 msgstr ""
 
-#: whatsnew/3.12.rst:1015
+#: whatsnew/3.12.rst:1023
 msgid ""
 "The performance profile of :func:`isinstance` checks against :func:`runtime-"
 "checkable protocols <typing.runtime_checkable>` has changed significantly. "
@@ -1442,39 +1454,39 @@ msgid ""
 "`74690` and :gh:`103193`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1023
+#: whatsnew/3.12.rst:1031
 msgid ""
 "All :data:`typing.TypedDict` and :data:`typing.NamedTuple` classes now have "
 "the ``__orig_bases__`` attribute. (Contributed by Adrian Garcia Badaracco "
 "in :gh:`103699`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1027
+#: whatsnew/3.12.rst:1035
 msgid ""
 "Add ``frozen_default`` parameter to :func:`typing.dataclass_transform`. "
 "(Contributed by Erik De Bonte in :gh:`99957`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1031
+#: whatsnew/3.12.rst:1039
 msgid "unicodedata"
 msgstr ""
 
-#: whatsnew/3.12.rst:1033
+#: whatsnew/3.12.rst:1041
 msgid ""
 "The Unicode database has been updated to version 15.0.0. (Contributed by "
 "Benjamin Peterson in :gh:`96734`)."
 msgstr ""
 
-#: whatsnew/3.12.rst:1581
+#: whatsnew/3.12.rst:1595
 msgid "unittest"
 msgstr ""
 
-#: whatsnew/3.12.rst:1039
+#: whatsnew/3.12.rst:1047
 msgid ""
 "Add a ``--durations`` command line option, showing the N slowest test cases::"
 msgstr ""
 
-#: whatsnew/3.12.rst:1041
+#: whatsnew/3.12.rst:1049
 msgid ""
 "python3 -m unittest --durations=3 lib.tests.test_threading\n"
 ".....\n"
@@ -1491,39 +1503,39 @@ msgid ""
 "OK (skipped=3)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1055
+#: whatsnew/3.12.rst:1063
 msgid "(Contributed by Giampaolo Rodola in :gh:`48330`)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1058
+#: whatsnew/3.12.rst:1066
 msgid "uuid"
 msgstr ""
 
-#: whatsnew/3.12.rst:1060
+#: whatsnew/3.12.rst:1068
 msgid ""
 "Add a :ref:`command-line interface <uuid-cli>`. (Contributed by Adam Chhina "
 "in :gh:`88597`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1065
+#: whatsnew/3.12.rst:1073
 msgid "Optimizations"
 msgstr ""
 
-#: whatsnew/3.12.rst:1067
+#: whatsnew/3.12.rst:1075
 msgid ""
 "Remove ``wstr`` and ``wstr_length`` members from Unicode objects. It reduces "
 "object size by 8 or 16 bytes on 64bit platform. (:pep:`623`) (Contributed by "
 "Inada Naoki in :gh:`92536`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1071
+#: whatsnew/3.12.rst:1079
 msgid ""
 "Add experimental support for using the BOLT binary optimizer in the build "
 "process, which improves performance by 1-5%. (Contributed by Kevin "
 "Modzelewski in :gh:`90536` and tuned by Donghee Na in :gh:`101525`)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1075
+#: whatsnew/3.12.rst:1083
 msgid ""
 "Speed up the regular expression substitution (functions :func:`re.sub` and :"
 "func:`re.subn` and corresponding :class:`!re.Pattern` methods) for "
@@ -1531,13 +1543,13 @@ msgid ""
 "by Serhiy Storchaka in :gh:`91524`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1080
+#: whatsnew/3.12.rst:1088
 msgid ""
 "Speed up :class:`asyncio.Task` creation by deferring expensive string "
 "formatting. (Contributed by Itamar Oren in :gh:`103793`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1083
+#: whatsnew/3.12.rst:1091
 msgid ""
 "The :func:`tokenize.tokenize` and :func:`tokenize.generate_tokens` functions "
 "are up to 64% faster as a side effect of the changes required to cover :pep:"
@@ -1545,18 +1557,18 @@ msgid ""
 "Pablo Galindo in :gh:`102856`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1088
+#: whatsnew/3.12.rst:1096
 msgid ""
 "Speed up :func:`super` method calls and attribute loads via the new :opcode:"
 "`LOAD_SUPER_ATTR` instruction. (Contributed by Carl Meyer and Vladimir "
 "Matveev in :gh:`103497`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1094
+#: whatsnew/3.12.rst:1102
 msgid "CPython bytecode changes"
 msgstr ""
 
-#: whatsnew/3.12.rst:1096
+#: whatsnew/3.12.rst:1104
 msgid ""
 "Remove the :opcode:`!LOAD_METHOD` instruction. It has been merged into :"
 "opcode:`LOAD_ATTR`. :opcode:`LOAD_ATTR` will now behave like the old :opcode:"
@@ -1564,62 +1576,62 @@ msgid ""
 "by Ken Jin in :gh:`93429`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1101
+#: whatsnew/3.12.rst:1109
 msgid ""
 "Remove the :opcode:`!JUMP_IF_FALSE_OR_POP` and :opcode:`!"
 "JUMP_IF_TRUE_OR_POP` instructions. (Contributed by Irit Katriel in :gh:"
 "`102859`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1104
+#: whatsnew/3.12.rst:1112
 msgid ""
 "Remove the :opcode:`!PRECALL` instruction. (Contributed by Mark Shannon in :"
 "gh:`92925`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1107
+#: whatsnew/3.12.rst:1115
 msgid ""
 "Add the :opcode:`BINARY_SLICE` and :opcode:`STORE_SLICE` instructions. "
 "(Contributed by Mark Shannon in :gh:`94163`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1110
+#: whatsnew/3.12.rst:1118
 msgid ""
 "Add the :opcode:`CALL_INTRINSIC_1` instructions. (Contributed by Mark "
 "Shannon in :gh:`99005`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1113
+#: whatsnew/3.12.rst:1121
 msgid ""
 "Add the :opcode:`CALL_INTRINSIC_2` instruction. (Contributed by Irit Katriel "
 "in :gh:`101799`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1116
+#: whatsnew/3.12.rst:1124
 msgid ""
 "Add the :opcode:`CLEANUP_THROW` instruction. (Contributed by Brandt Bucher "
 "in :gh:`90997`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1119
+#: whatsnew/3.12.rst:1127
 msgid ""
 "Add the :opcode:`!END_SEND` instruction. (Contributed by Mark Shannon in :gh:"
 "`103082`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1122
+#: whatsnew/3.12.rst:1130
 msgid ""
 "Add the :opcode:`LOAD_FAST_AND_CLEAR` instruction as part of the "
 "implementation of :pep:`709`. (Contributed by Carl Meyer in :gh:`101441`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1125
+#: whatsnew/3.12.rst:1133
 msgid ""
 "Add the :opcode:`LOAD_FAST_CHECK` instruction. (Contributed by Dennis "
 "Sweeney in :gh:`93143`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1128
+#: whatsnew/3.12.rst:1136
 msgid ""
 "Add the :opcode:`LOAD_FROM_DICT_OR_DEREF`, :opcode:"
 "`LOAD_FROM_DICT_OR_GLOBALS`, and :opcode:`LOAD_LOCALS` opcodes as part of "
@@ -1628,48 +1640,48 @@ msgid ""
 "`LOAD_FROM_DICT_OR_DEREF`. (Contributed by Jelle Zijlstra in :gh:`103764`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1134
+#: whatsnew/3.12.rst:1142
 msgid ""
 "Add the :opcode:`LOAD_SUPER_ATTR` instruction. (Contributed by Carl Meyer "
 "and Vladimir Matveev in :gh:`103497`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1137
+#: whatsnew/3.12.rst:1145
 msgid ""
 "Add the :opcode:`RETURN_CONST` instruction. (Contributed by Wenyang Wang in :"
 "gh:`101632`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1140
+#: whatsnew/3.12.rst:1148
 msgid "Demos and Tools"
 msgstr ""
 
-#: whatsnew/3.12.rst:1142
+#: whatsnew/3.12.rst:1150
 msgid ""
 "Remove the ``Tools/demo/`` directory which contained old demo scripts. A "
 "copy can be found in the `old-demos project <https://github.com/gvanrossum/"
 "old-demos>`_. (Contributed by Victor Stinner in :gh:`97681`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1147
+#: whatsnew/3.12.rst:1155
 msgid ""
 "Remove outdated example scripts of the ``Tools/scripts/`` directory. A copy "
 "can be found in the `old-demos project <https://github.com/gvanrossum/old-"
 "demos>`_. (Contributed by Victor Stinner in :gh:`97669`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:2139
+#: whatsnew/3.12.rst:2153
 msgid "Deprecated"
 msgstr ""
 
-#: whatsnew/3.12.rst:1156 deprecations/pending-removal-in-3.14.rst:11
+#: whatsnew/3.12.rst:1164 deprecations/pending-removal-in-3.14.rst:4
 msgid ""
 ":mod:`argparse`: The *type*, *choices*, and *metavar* parameters of :class:`!"
 "argparse.BooleanOptionalAction` are deprecated and will be removed in 3.14. "
 "(Contributed by Nikita Sobolev in :gh:`92248`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1161
+#: whatsnew/3.12.rst:1169
 msgid ""
 ":mod:`ast`: The following :mod:`ast` features have been deprecated in "
 "documentation since Python 3.8, now cause a :exc:`DeprecationWarning` to be "
@@ -1677,37 +1689,37 @@ msgid ""
 "Python 3.14:"
 msgstr ""
 
-#: whatsnew/3.12.rst:1165 deprecations/pending-removal-in-3.14.rst:20
+#: whatsnew/3.12.rst:1173 deprecations/pending-removal-in-3.14.rst:13
 msgid ":class:`!ast.Num`"
 msgstr ""
 
-#: whatsnew/3.12.rst:1166 deprecations/pending-removal-in-3.14.rst:21
+#: whatsnew/3.12.rst:1174 deprecations/pending-removal-in-3.14.rst:14
 msgid ":class:`!ast.Str`"
 msgstr ""
 
-#: whatsnew/3.12.rst:1167 deprecations/pending-removal-in-3.14.rst:22
+#: whatsnew/3.12.rst:1175 deprecations/pending-removal-in-3.14.rst:15
 msgid ":class:`!ast.Bytes`"
 msgstr ""
 
-#: whatsnew/3.12.rst:1168 deprecations/pending-removal-in-3.14.rst:23
+#: whatsnew/3.12.rst:1176 deprecations/pending-removal-in-3.14.rst:16
 msgid ":class:`!ast.NameConstant`"
 msgstr ""
 
-#: whatsnew/3.12.rst:1169 deprecations/pending-removal-in-3.14.rst:24
+#: whatsnew/3.12.rst:1177 deprecations/pending-removal-in-3.14.rst:17
 msgid ":class:`!ast.Ellipsis`"
 msgstr ""
 
-#: whatsnew/3.12.rst:1171 deprecations/pending-removal-in-3.14.rst:26
+#: whatsnew/3.12.rst:1179 deprecations/pending-removal-in-3.14.rst:19
 msgid ""
 "Use :class:`ast.Constant` instead. (Contributed by Serhiy Storchaka in :gh:"
 "`90953`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1174 deprecations/pending-removal-in-3.14.rst:29
+#: whatsnew/3.12.rst:1182 deprecations/pending-removal-in-3.14.rst:22
 msgid ":mod:`asyncio`:"
 msgstr ""
 
-#: whatsnew/3.12.rst:1176
+#: whatsnew/3.12.rst:1184
 msgid ""
 "The child watcher classes :class:`asyncio.MultiLoopChildWatcher`, :class:"
 "`asyncio.FastChildWatcher`, :class:`asyncio.AbstractChildWatcher` and :class:"
@@ -1715,7 +1727,7 @@ msgid ""
 "3.14. (Contributed by Kumar Aditya in :gh:`94597`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1182 deprecations/pending-removal-in-3.14.rst:37
+#: whatsnew/3.12.rst:1190 deprecations/pending-removal-in-3.14.rst:30
 msgid ""
 ":func:`asyncio.set_child_watcher`, :func:`asyncio.get_child_watcher`, :meth:"
 "`asyncio.AbstractEventLoopPolicy.set_child_watcher` and :meth:`asyncio."
@@ -1723,7 +1735,7 @@ msgid ""
 "removed in Python 3.14. (Contributed by Kumar Aditya in :gh:`94597`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1188 deprecations/pending-removal-in-3.14.rst:43
+#: whatsnew/3.12.rst:1196 deprecations/pending-removal-in-3.14.rst:36
 msgid ""
 "The :meth:`~asyncio.get_event_loop` method of the default event loop policy "
 "now emits a :exc:`DeprecationWarning` if there is no current event loop set "
@@ -1731,14 +1743,14 @@ msgid ""
 "Rossum in :gh:`100160`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1193 deprecations/pending-removal-in-future.rst:41
+#: whatsnew/3.12.rst:1201 deprecations/pending-removal-in-future.rst:41
 msgid ""
 ":mod:`calendar`: ``calendar.January`` and ``calendar.February`` constants "
 "are deprecated and replaced by :data:`calendar.JANUARY` and :data:`calendar."
 "FEBRUARY`. (Contributed by Prince Roshan in :gh:`103636`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1197
+#: whatsnew/3.12.rst:1205
 msgid ""
 ":mod:`collections.abc`: Deprecated :class:`collections.abc.ByteString`. "
 "Prefer :class:`Sequence` or :class:`collections.abc.Buffer`. For use in "
@@ -1746,7 +1758,7 @@ msgid ""
 "abc.Buffer`. (Contributed by Shantanu Jain in :gh:`91896`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1202
+#: whatsnew/3.12.rst:1210
 msgid ""
 ":mod:`datetime`: :class:`datetime.datetime`'s :meth:`~datetime.datetime."
 "utcnow` and :meth:`~datetime.datetime.utcfromtimestamp` are deprecated and "
@@ -1756,47 +1768,47 @@ msgid ""
 "set to :const:`datetime.UTC`. (Contributed by Paul Ganssle in :gh:`103857`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1210
+#: whatsnew/3.12.rst:1218
 msgid ""
 ":mod:`email`: Deprecate the *isdst* parameter in :func:`email.utils."
 "localtime`. (Contributed by Alan Williams in :gh:`72346`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1213
+#: whatsnew/3.12.rst:1221
 msgid ""
 ":mod:`importlib.abc`: Deprecated the following classes, scheduled for "
 "removal in Python 3.14:"
 msgstr ""
 
-#: whatsnew/3.12.rst:1216 deprecations/pending-removal-in-3.14.rst:62
+#: whatsnew/3.12.rst:1224 deprecations/pending-removal-in-3.14.rst:55
 msgid ":class:`!importlib.abc.ResourceReader`"
 msgstr ""
 
-#: whatsnew/3.12.rst:1217 deprecations/pending-removal-in-3.14.rst:63
+#: whatsnew/3.12.rst:1225 deprecations/pending-removal-in-3.14.rst:56
 msgid ":class:`!importlib.abc.Traversable`"
 msgstr ""
 
-#: whatsnew/3.12.rst:1218 deprecations/pending-removal-in-3.14.rst:64
+#: whatsnew/3.12.rst:1226 deprecations/pending-removal-in-3.14.rst:57
 msgid ":class:`!importlib.abc.TraversableResources`"
 msgstr ""
 
-#: whatsnew/3.12.rst:1220 deprecations/pending-removal-in-3.14.rst:66
+#: whatsnew/3.12.rst:1228 deprecations/pending-removal-in-3.14.rst:59
 msgid "Use :mod:`importlib.resources.abc` classes instead:"
 msgstr ""
 
-#: whatsnew/3.12.rst:1222 deprecations/pending-removal-in-3.14.rst:68
+#: whatsnew/3.12.rst:1230 deprecations/pending-removal-in-3.14.rst:61
 msgid ":class:`importlib.resources.abc.Traversable`"
 msgstr ""
 
-#: whatsnew/3.12.rst:1223 deprecations/pending-removal-in-3.14.rst:69
+#: whatsnew/3.12.rst:1231 deprecations/pending-removal-in-3.14.rst:62
 msgid ":class:`importlib.resources.abc.TraversableResources`"
 msgstr ""
 
-#: whatsnew/3.12.rst:1225 deprecations/pending-removal-in-3.14.rst:71
+#: whatsnew/3.12.rst:1233 deprecations/pending-removal-in-3.14.rst:64
 msgid "(Contributed by Jason R. Coombs and Hugo van Kemenade in :gh:`93963`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1227
+#: whatsnew/3.12.rst:1235
 msgid ""
 ":mod:`itertools`: Deprecate the support for copy, deepcopy, and pickle "
 "operations, which is undocumented, inefficient, historically buggy, and "
@@ -1805,7 +1817,7 @@ msgid ""
 "`101588`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1233
+#: whatsnew/3.12.rst:1241
 msgid ""
 ":mod:`multiprocessing`: In Python 3.14, the default :mod:`multiprocessing` "
 "start method will change to a safer one on Linux, BSDs, and other non-macOS "
@@ -1817,14 +1829,14 @@ msgid ""
 "methods <multiprocessing-start-methods>`."
 msgstr ""
 
-#: whatsnew/3.12.rst:1243
+#: whatsnew/3.12.rst:1251
 msgid ""
 ":mod:`pkgutil`: :func:`pkgutil.find_loader` and :func:`pkgutil.get_loader` "
 "are deprecated and will be removed in Python 3.14; use :func:`importlib.util."
 "find_spec` instead. (Contributed by Nikita Sobolev in :gh:`97850`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1248
+#: whatsnew/3.12.rst:1256
 msgid ""
 ":mod:`pty`: The module has two undocumented ``master_open()`` and "
 "``slave_open()`` functions that have been deprecated since Python 2 but only "
@@ -1832,11 +1844,11 @@ msgid ""
 "(Contributed by Soumendra Ganguly and Gregory P. Smith in :gh:`85984`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1253
+#: whatsnew/3.12.rst:1261
 msgid ":mod:`os`:"
 msgstr ""
 
-#: whatsnew/3.12.rst:1255
+#: whatsnew/3.12.rst:1263
 msgid ""
 "The ``st_ctime`` fields return by :func:`os.stat` and :func:`os.lstat` on "
 "Windows are deprecated. In a future release, they will contain the last "
@@ -1845,7 +1857,7 @@ msgid ""
 "``st_birthtime`` field. (Contributed by Steve Dower in :gh:`99726`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1261
+#: whatsnew/3.12.rst:1269
 msgid ""
 "On POSIX platforms, :func:`os.fork` can now raise a :exc:"
 "`DeprecationWarning` when it can detect being called from a multithreaded "
@@ -1859,32 +1871,32 @@ msgid ""
 "platform compatibility problem to developers."
 msgstr ""
 
-#: whatsnew/3.12.rst:1271
+#: whatsnew/3.12.rst:1279
 msgid ""
 "When this warning appears due to usage of :mod:`multiprocessing` or :mod:"
 "`concurrent.futures` the fix is to use a different :mod:`multiprocessing` "
 "start method such as ``\"spawn\"`` or ``\"forkserver\"``."
 msgstr ""
 
-#: whatsnew/3.12.rst:1275
+#: whatsnew/3.12.rst:1283
 msgid ""
 ":mod:`shutil`: The *onerror* argument of :func:`shutil.rmtree` is "
 "deprecated; use *onexc* instead. (Contributed by Irit Katriel in :gh:"
 "`102828`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1278 deprecations/pending-removal-in-3.14.rst:101
+#: whatsnew/3.12.rst:1286 deprecations/pending-removal-in-3.14.rst:94
 msgid ":mod:`sqlite3`:"
 msgstr ""
 
-#: whatsnew/3.12.rst:1280
+#: whatsnew/3.12.rst:1288
 msgid ""
 ":ref:`default adapters and converters <sqlite3-default-converters>` are now "
 "deprecated. Instead, use the :ref:`sqlite3-adapter-converter-recipes` and "
 "tailor them to your needs. (Contributed by Erlend E. Aasland in :gh:`90016`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1286
+#: whatsnew/3.12.rst:1294
 msgid ""
 "In :meth:`~sqlite3.Cursor.execute`, :exc:`DeprecationWarning` is now emitted "
 "when :ref:`named placeholders <sqlite3-placeholders>` are used together with "
@@ -1894,39 +1906,39 @@ msgid ""
 "Erlend E. Aasland in :gh:`101698`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1293
+#: whatsnew/3.12.rst:1301
 msgid ""
 ":mod:`sys`: The :data:`sys.last_type`, :data:`sys.last_value` and :data:`sys."
 "last_traceback` fields are deprecated. Use :data:`sys.last_exc` instead. "
 "(Contributed by Irit Katriel in :gh:`102778`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1297
+#: whatsnew/3.12.rst:1305
 msgid ""
 ":mod:`tarfile`: Extracting tar archives without specifying *filter* is "
 "deprecated until Python 3.14, when ``'data'`` filter will become the "
 "default. See :ref:`tarfile-extraction-filter` for details."
 msgstr ""
 
-#: whatsnew/3.12.rst:1301
+#: whatsnew/3.12.rst:1309 deprecations/pending-removal-in-3.15.rst:58
 msgid ":mod:`typing`:"
 msgstr ""
 
-#: whatsnew/3.12.rst:1303
+#: whatsnew/3.12.rst:1311
 msgid ""
 ":class:`typing.Hashable` and :class:`typing.Sized`, aliases for :class:"
 "`collections.abc.Hashable` and :class:`collections.abc.Sized` respectively, "
 "are deprecated. (:gh:`94309`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1307
+#: whatsnew/3.12.rst:1315
 msgid ""
 ":class:`typing.ByteString`, deprecated since Python 3.9, now causes a :exc:"
 "`DeprecationWarning` to be emitted when it is used. (Contributed by Alex "
 "Waygood in :gh:`91896`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1311
+#: whatsnew/3.12.rst:1319
 msgid ""
 ":mod:`xml.etree.ElementTree`: The module now emits :exc:`DeprecationWarning` "
 "when testing the truth value of an :class:`xml.etree.ElementTree.Element`. "
@@ -1934,7 +1946,7 @@ msgid ""
 "implementation emitted nothing. (Contributed by Jacob Walls in :gh:`83122`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1317
+#: whatsnew/3.12.rst:1325
 msgid ""
 "The 3-arg signatures (type, value, traceback) of :meth:`coroutine throw() "
 "<coroutine.throw>`, :meth:`generator throw() <generator.throw>` and :meth:"
@@ -1943,7 +1955,7 @@ msgid ""
 "instead. (Contributed by Ofey Chan in :gh:`89874`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1323
+#: whatsnew/3.12.rst:1331
 msgid ""
 ":exc:`DeprecationWarning` is now raised when :attr:`~module.__package__` on "
 "a module differs from :attr:`__spec__.parent <importlib.machinery.ModuleSpec."
@@ -1951,7 +1963,7 @@ msgid ""
 "Cannon in :gh:`65961`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1329
+#: whatsnew/3.12.rst:1337
 msgid ""
 "Setting :attr:`~module.__package__` or :attr:`~module.__cached__` on a "
 "module is deprecated, and will cease to be set or taken into consideration "
@@ -1959,7 +1971,7 @@ msgid ""
 "`65961`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1333
+#: whatsnew/3.12.rst:1341
 msgid ""
 "The bitwise inversion operator (``~``) on bool is deprecated. It will throw "
 "an error in Python 3.16. Use ``not`` for logical negation of bools instead. "
@@ -1968,12 +1980,12 @@ msgid ""
 "Tim Hoffmann in :gh:`103487`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1339
+#: whatsnew/3.12.rst:1347
 msgid ""
 "Accessing :attr:`~codeobject.co_lnotab` on code objects was deprecated in "
 "Python 3.10 via :pep:`626`, but it only got a proper :exc:"
-"`DeprecationWarning` in 3.12, therefore it will be removed in 3.14. "
-"(Contributed by Nikita Sobolev in :gh:`101866`.)"
+"`DeprecationWarning` in 3.12. May be removed in 3.15. (Contributed by Nikita "
+"Sobolev in :gh:`101866`.)"
 msgstr ""
 
 #: deprecations/pending-removal-in-3.13.rst:2
@@ -2152,26 +2164,14 @@ msgstr ""
 msgid "Pending Removal in Python 3.14"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:4
-msgid "The import system:"
-msgstr ""
-
-#: deprecations/pending-removal-in-3.14.rst:6
-msgid ""
-"Setting :attr:`~module.__loader__` on a module while failing to set :attr:"
-"`__spec__.loader <importlib.machinery.ModuleSpec.loader>` is deprecated. In "
-"Python 3.14, :attr:`!__loader__` will cease to be set or taken into "
-"consideration by the import system or the standard library."
-msgstr ""
-
-#: deprecations/pending-removal-in-3.14.rst:16
+#: deprecations/pending-removal-in-3.14.rst:9
 msgid ""
 ":mod:`ast`: The following features have been deprecated in documentation "
 "since Python 3.8, now cause a :exc:`DeprecationWarning` to be emitted at "
 "runtime when they are accessed or used, and will be removed in Python 3.14:"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:31
+#: deprecations/pending-removal-in-3.14.rst:24
 msgid ""
 "The child watcher classes :class:`~asyncio.MultiLoopChildWatcher`, :class:"
 "`~asyncio.FastChildWatcher`, :class:`~asyncio.AbstractChildWatcher` and :"
@@ -2179,7 +2179,7 @@ msgid ""
 "Python 3.14. (Contributed by Kumar Aditya in :gh:`94597`.)"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:48
+#: deprecations/pending-removal-in-3.14.rst:41
 msgid ""
 ":mod:`collections.abc`: Deprecated :class:`~collections.abc.ByteString`. "
 "Prefer :class:`!Sequence` or :class:`~collections.abc.Buffer`. For use in "
@@ -2187,23 +2187,23 @@ msgid ""
 "abc.Buffer`. (Contributed by Shantanu Jain in :gh:`91896`.)"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:54
+#: deprecations/pending-removal-in-3.14.rst:47
 msgid ""
 ":mod:`email`: Deprecated the *isdst* parameter in :func:`email.utils."
 "localtime`. (Contributed by Alan Williams in :gh:`72346`.)"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:57
+#: deprecations/pending-removal-in-3.14.rst:50
 msgid ""
 ":mod:`importlib`: ``__package__`` and ``__cached__`` will cease to be set or "
 "taken into consideration by the import system (:gh:`97879`)."
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:60
+#: deprecations/pending-removal-in-3.14.rst:53
 msgid ":mod:`importlib.abc` deprecated classes:"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:73
+#: deprecations/pending-removal-in-3.14.rst:66
 msgid ""
 ":mod:`itertools` had undocumented, inefficient, historically buggy, and "
 "inconsistent support for copy, deepcopy, and pickle operations. This will be "
@@ -2211,7 +2211,7 @@ msgid ""
 "burden. (Contributed by Raymond Hettinger in :gh:`101588`.)"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:79
+#: deprecations/pending-removal-in-3.14.rst:72
 msgid ""
 ":mod:`multiprocessing`: The default start method will change to a safer one "
 "on Linux, BSDs, and other non-macOS POSIX platforms where ``'fork'`` is "
@@ -2222,63 +2222,49 @@ msgid ""
 "``'fork'``.  See :ref:`multiprocessing-start-methods`."
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:87
+#: deprecations/pending-removal-in-3.14.rst:80
 msgid ""
 ":mod:`pathlib`: :meth:`~pathlib.PurePath.is_relative_to` and :meth:`~pathlib."
 "PurePath.relative_to`: passing additional arguments is deprecated."
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:91
+#: deprecations/pending-removal-in-3.14.rst:84
 msgid ""
 ":mod:`pkgutil`: :func:`~pkgutil.find_loader` and :func:`~pkgutil.get_loader` "
 "now raise :exc:`DeprecationWarning`; use :func:`importlib.util.find_spec` "
 "instead. (Contributed by Nikita Sobolev in :gh:`97850`.)"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:96
+#: deprecations/pending-removal-in-3.14.rst:89
 msgid ":mod:`pty`:"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:98
+#: deprecations/pending-removal-in-3.14.rst:91
 msgid "``master_open()``: use :func:`pty.openpty`."
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:99
+#: deprecations/pending-removal-in-3.14.rst:92
 msgid "``slave_open()``: use :func:`pty.openpty`."
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:103
+#: deprecations/pending-removal-in-3.14.rst:96
 msgid ":data:`~sqlite3.version` and :data:`~sqlite3.version_info`."
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:105
+#: deprecations/pending-removal-in-3.14.rst:98
 msgid ""
 ":meth:`~sqlite3.Cursor.execute` and :meth:`~sqlite3.Cursor.executemany` if :"
 "ref:`named placeholders <sqlite3-placeholders>` are used and *parameters* is "
 "a sequence instead of a :class:`dict`."
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:109
-msgid ""
-"date and datetime adapter, date and timestamp converter: see the :mod:"
-"`sqlite3` documentation for suggested replacement recipes."
-msgstr ""
-
-#: deprecations/pending-removal-in-3.14.rst:112
-msgid ""
-":class:`types.CodeType`: Accessing :attr:`~codeobject.co_lnotab` was "
-"deprecated in :pep:`626` since 3.10 and was planned to be removed in 3.12, "
-"but it only got a proper :exc:`DeprecationWarning` in 3.12. May be removed "
-"in 3.14. (Contributed by Nikita Sobolev in :gh:`101866`.)"
-msgstr ""
-
-#: deprecations/pending-removal-in-3.14.rst:119
+#: deprecations/pending-removal-in-3.14.rst:102
 msgid ""
 ":mod:`typing`: :class:`~typing.ByteString`, deprecated since Python 3.9, now "
 "causes a :exc:`DeprecationWarning` to be emitted when it is used."
 msgstr ""
 
-#: deprecations/pending-removal-in-3.14.rst:122
+#: deprecations/pending-removal-in-3.14.rst:105
 msgid ""
 ":mod:`urllib`: :class:`!urllib.parse.Quoter` is deprecated: it was not "
 "intended to be a public API. (Contributed by Gregory P. Smith in :gh:"
@@ -2299,6 +2285,15 @@ msgid ""
 msgstr ""
 
 #: deprecations/pending-removal-in-3.15.rst:9
+#: deprecations/pending-removal-in-future.rst:58
+msgid ":mod:`importlib`:"
+msgstr ""
+
+#: deprecations/pending-removal-in-3.15.rst:11
+msgid "``load_module()`` method: use ``exec_module()`` instead."
+msgstr ""
+
+#: deprecations/pending-removal-in-3.15.rst:13
 msgid ""
 ":class:`locale`: :func:`locale.getdefaultlocale` was deprecated in Python "
 "3.11 and originally planned for removal in Python 3.13 (:gh:`90817`), but "
@@ -2307,21 +2302,31 @@ msgid ""
 "by Hugo van Kemenade in :gh:`111187`.)"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.15.rst:16
+#: deprecations/pending-removal-in-3.15.rst:20
 msgid ""
 ":mod:`pathlib`: :meth:`pathlib.PurePath.is_reserved` is deprecated and "
 "scheduled for removal in Python 3.15. From Python 3.13 onwards, use ``os."
 "path.isreserved`` to detect reserved paths on Windows."
 msgstr ""
 
-#: deprecations/pending-removal-in-3.15.rst:21
+#: deprecations/pending-removal-in-3.15.rst:25
 msgid ""
 ":mod:`platform`: :func:`~platform.java_ver` is deprecated and will be "
 "removed in 3.15. It was largely untested, had a confusing API, and was only "
 "useful for Jython support. (Contributed by Nikita Sobolev in :gh:`116349`.)"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.15.rst:27
+#: deprecations/pending-removal-in-3.15.rst:31
+msgid ":mod:`sysconfig`:"
+msgstr ""
+
+#: deprecations/pending-removal-in-3.15.rst:33
+msgid ""
+"The *check_home* argument of :func:`sysconfig.is_python_build` has been "
+"deprecated since Python 3.12."
+msgstr ""
+
+#: deprecations/pending-removal-in-3.15.rst:36
 msgid ""
 ":mod:`threading`: Passing any arguments to :func:`threading.RLock` is now "
 "deprecated. C version allows any numbers of args and kwargs, but they are "
@@ -2330,11 +2335,11 @@ msgid ""
 "Nikita Sobolev in :gh:`102029`.)"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.15.rst:34
+#: deprecations/pending-removal-in-3.15.rst:43
 msgid ":class:`typing.NamedTuple`:"
 msgstr ""
 
-#: deprecations/pending-removal-in-3.15.rst:36
+#: deprecations/pending-removal-in-3.15.rst:45
 msgid ""
 "The undocumented keyword argument syntax for creating :class:`!NamedTuple` "
 "classes (``NT = NamedTuple(\"NT\", x=int)``) is deprecated, and will be "
@@ -2342,7 +2347,19 @@ msgid ""
 "instead."
 msgstr ""
 
-#: deprecations/pending-removal-in-3.15.rst:40
+#: deprecations/pending-removal-in-3.15.rst:49
+msgid ":mod:`types`:"
+msgstr ""
+
+#: deprecations/pending-removal-in-3.15.rst:51
+msgid ""
+":class:`types.CodeType`: Accessing :attr:`~codeobject.co_lnotab` was "
+"deprecated in :pep:`626` since 3.10 and was planned to be removed in 3.12, "
+"but it only got a proper :exc:`DeprecationWarning` in 3.12. May be removed "
+"in 3.15. (Contributed by Nikita Sobolev in :gh:`101866`.)"
+msgstr ""
+
+#: deprecations/pending-removal-in-3.15.rst:60
 msgid ""
 "When using the functional syntax to create a :class:`!NamedTuple` class, "
 "failing to pass a value to the *fields* parameter (``NT = "
@@ -2353,7 +2370,7 @@ msgid ""
 "[])``."
 msgstr ""
 
-#: deprecations/pending-removal-in-3.15.rst:47
+#: deprecations/pending-removal-in-3.15.rst:67
 msgid ""
 ":class:`typing.TypedDict`: When using the functional syntax to create a :"
 "class:`!TypedDict` class, failing to pass a value to the *fields* parameter "
@@ -2363,7 +2380,7 @@ msgid ""
 "fields, use ``class TD(TypedDict): pass`` or ``TD = TypedDict(\"TD\", {})``."
 msgstr ""
 
-#: deprecations/pending-removal-in-3.15.rst:54
+#: deprecations/pending-removal-in-3.15.rst:74
 msgid ""
 ":mod:`wave`: Deprecate the ``getmark()``, ``setmark()`` and ``getmarkers()`` "
 "methods of the :class:`wave.Wave_read` and :class:`wave.Wave_write` classes. "
@@ -2376,16 +2393,28 @@ msgid "Pending Removal in Python 3.16"
 msgstr ""
 
 #: deprecations/pending-removal-in-3.16.rst:4
+msgid "The import system:"
+msgstr ""
+
+#: deprecations/pending-removal-in-3.16.rst:6
+msgid ""
+"Setting :attr:`~module.__loader__` on a module while failing to set :attr:"
+"`__spec__.loader <importlib.machinery.ModuleSpec.loader>` is deprecated. In "
+"Python 3.16, :attr:`!__loader__` will cease to be set or taken into "
+"consideration by the import system or the standard library."
+msgstr ""
+
+#: deprecations/pending-removal-in-3.16.rst:11
 msgid ""
 ":mod:`array`: :class:`array.array` ``'u'`` type (:c:type:`wchar_t`): use the "
 "``'w'`` type instead (``Py_UCS4``)."
 msgstr ""
 
-#: deprecations/pending-removal-in-3.16.rst:8
+#: deprecations/pending-removal-in-3.16.rst:15
 msgid ":mod:`builtins`: ``~bool``, bitwise inversion on bool."
 msgstr ""
 
-#: deprecations/pending-removal-in-3.16.rst:11
+#: deprecations/pending-removal-in-3.16.rst:18
 msgid ""
 ":mod:`symtable`: Deprecate :meth:`symtable.Class.get_methods` due to the "
 "lack of interest. (Contributed by Bénédikt Tran in :gh:`119698`.)"
@@ -2498,50 +2527,42 @@ msgstr ""
 msgid ":mod:`gettext`: Plural value must be an integer."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:58
-msgid ":mod:`importlib`:"
-msgstr ""
-
 #: deprecations/pending-removal-in-future.rst:60
-msgid "``load_module()`` method: use ``exec_module()`` instead."
-msgstr ""
-
-#: deprecations/pending-removal-in-future.rst:61
 msgid ""
 ":func:`~importlib.util.cache_from_source` *debug_override* parameter is "
 "deprecated: use the *optimization* parameter instead."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:64
+#: deprecations/pending-removal-in-future.rst:63
 msgid ":mod:`importlib.metadata`:"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:66
+#: deprecations/pending-removal-in-future.rst:65
 msgid "``EntryPoints`` tuple interface."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:67
+#: deprecations/pending-removal-in-future.rst:66
 msgid "Implicit ``None`` on return values."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:69
+#: deprecations/pending-removal-in-future.rst:68
 msgid ""
 ":mod:`mailbox`: Use of StringIO input and text mode is deprecated, use "
 "BytesIO and binary mode instead."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:72
+#: deprecations/pending-removal-in-future.rst:71
 msgid ""
 ":mod:`os`: Calling :func:`os.register_at_fork` in multi-threaded process."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:74
+#: deprecations/pending-removal-in-future.rst:73
 msgid ""
 ":class:`!pydoc.ErrorDuringImport`: A tuple value for *exc_info* parameter is "
 "deprecated, use an exception instance."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:77
+#: deprecations/pending-removal-in-future.rst:76
 msgid ""
 ":mod:`re`: More strict rules are now applied for numerical group references "
 "and group names in regular expressions.  Only sequence of ASCII digits is "
@@ -2550,185 +2571,179 @@ msgid ""
 "underscore. (Contributed by Serhiy Storchaka in :gh:`91760`.)"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:84
+#: deprecations/pending-removal-in-future.rst:83
 msgid ""
 ":mod:`!sre_compile`, :mod:`!sre_constants` and :mod:`!sre_parse` modules."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:86
+#: deprecations/pending-removal-in-future.rst:85
 msgid ""
 ":mod:`shutil`: :func:`~shutil.rmtree`'s *onerror* parameter is deprecated in "
 "Python 3.12; use the *onexc* parameter instead."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:89
+#: deprecations/pending-removal-in-future.rst:88
 msgid ":mod:`ssl` options and protocols:"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:91
+#: deprecations/pending-removal-in-future.rst:90
 msgid ":class:`ssl.SSLContext` without protocol argument is deprecated."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:92
+#: deprecations/pending-removal-in-future.rst:91
 msgid ""
 ":class:`ssl.SSLContext`: :meth:`~ssl.SSLContext.set_npn_protocols` and :meth:"
 "`!selected_npn_protocol` are deprecated: use ALPN instead."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:95
+#: deprecations/pending-removal-in-future.rst:94
 msgid "``ssl.OP_NO_SSL*`` options"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:96
+#: deprecations/pending-removal-in-future.rst:95
 msgid "``ssl.OP_NO_TLS*`` options"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:97
+#: deprecations/pending-removal-in-future.rst:96
 msgid "``ssl.PROTOCOL_SSLv3``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:98
+#: deprecations/pending-removal-in-future.rst:97
 msgid "``ssl.PROTOCOL_TLS``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:99
+#: deprecations/pending-removal-in-future.rst:98
 msgid "``ssl.PROTOCOL_TLSv1``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:100
+#: deprecations/pending-removal-in-future.rst:99
 msgid "``ssl.PROTOCOL_TLSv1_1``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:101
+#: deprecations/pending-removal-in-future.rst:100
 msgid "``ssl.PROTOCOL_TLSv1_2``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:102
+#: deprecations/pending-removal-in-future.rst:101
 msgid "``ssl.TLSVersion.SSLv3``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:103
+#: deprecations/pending-removal-in-future.rst:102
 msgid "``ssl.TLSVersion.TLSv1``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:104
+#: deprecations/pending-removal-in-future.rst:103
 msgid "``ssl.TLSVersion.TLSv1_1``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:106
-msgid ""
-":func:`sysconfig.is_python_build` *check_home* parameter is deprecated and "
-"ignored."
-msgstr ""
-
-#: deprecations/pending-removal-in-future.rst:109
+#: deprecations/pending-removal-in-future.rst:105
 msgid ":mod:`threading` methods:"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:111
+#: deprecations/pending-removal-in-future.rst:107
 msgid ""
 ":meth:`!threading.Condition.notifyAll`: use :meth:`~threading.Condition."
 "notify_all`."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:112
+#: deprecations/pending-removal-in-future.rst:108
 msgid ":meth:`!threading.Event.isSet`: use :meth:`~threading.Event.is_set`."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:113
+#: deprecations/pending-removal-in-future.rst:109
 msgid ""
 ":meth:`!threading.Thread.isDaemon`, :meth:`threading.Thread.setDaemon`: use :"
 "attr:`threading.Thread.daemon` attribute."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:115
+#: deprecations/pending-removal-in-future.rst:111
 msgid ""
 ":meth:`!threading.Thread.getName`, :meth:`threading.Thread.setName`: use :"
 "attr:`threading.Thread.name` attribute."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:117
+#: deprecations/pending-removal-in-future.rst:113
 msgid ":meth:`!threading.currentThread`: use :meth:`threading.current_thread`."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:118
+#: deprecations/pending-removal-in-future.rst:114
 msgid ":meth:`!threading.activeCount`: use :meth:`threading.active_count`."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:120
+#: deprecations/pending-removal-in-future.rst:116
 msgid ":class:`typing.Text` (:gh:`92332`)."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:122
+#: deprecations/pending-removal-in-future.rst:118
 msgid ""
 ":class:`unittest.IsolatedAsyncioTestCase`: it is deprecated to return a "
 "value that is not ``None`` from a test case."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:125
+#: deprecations/pending-removal-in-future.rst:121
 msgid ""
 ":mod:`urllib.parse` deprecated functions: :func:`~urllib.parse.urlparse` "
 "instead"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:127
+#: deprecations/pending-removal-in-future.rst:123
 msgid "``splitattr()``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:128
+#: deprecations/pending-removal-in-future.rst:124
 msgid "``splithost()``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:129
+#: deprecations/pending-removal-in-future.rst:125
 msgid "``splitnport()``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:130
+#: deprecations/pending-removal-in-future.rst:126
 msgid "``splitpasswd()``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:131
+#: deprecations/pending-removal-in-future.rst:127
 msgid "``splitport()``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:132
+#: deprecations/pending-removal-in-future.rst:128
 msgid "``splitquery()``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:133
+#: deprecations/pending-removal-in-future.rst:129
 msgid "``splittag()``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:134
+#: deprecations/pending-removal-in-future.rst:130
 msgid "``splittype()``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:135
+#: deprecations/pending-removal-in-future.rst:131
 msgid "``splituser()``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:136
+#: deprecations/pending-removal-in-future.rst:132
 msgid "``splitvalue()``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:137
+#: deprecations/pending-removal-in-future.rst:133
 msgid "``to_bytes()``"
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:139
+#: deprecations/pending-removal-in-future.rst:135
 msgid ""
 ":mod:`urllib.request`: :class:`~urllib.request.URLopener` and :class:"
 "`~urllib.request.FancyURLopener` style of invoking requests is deprecated. "
 "Use newer :func:`~urllib.request.urlopen` functions and methods."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:143
+#: deprecations/pending-removal-in-future.rst:139
 msgid ""
 ":mod:`wsgiref`: ``SimpleHandler.stdout.write()`` should not do partial "
 "writes."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:146
+#: deprecations/pending-removal-in-future.rst:142
 msgid ""
 ":mod:`xml.etree.ElementTree`: Testing the truth value of an :class:`~xml."
 "etree.ElementTree.Element` is deprecated. In a future release it will always "
@@ -2736,60 +2751,60 @@ msgid ""
 "instead."
 msgstr ""
 
-#: deprecations/pending-removal-in-future.rst:151
+#: deprecations/pending-removal-in-future.rst:147
 msgid ""
 ":meth:`zipimport.zipimporter.load_module` is deprecated: use :meth:"
 "`~zipimport.zipimporter.exec_module` instead."
 msgstr ""
 
-#: whatsnew/3.12.rst:2234
+#: whatsnew/3.12.rst:2248
 msgid "Removed"
 msgstr ""
 
-#: whatsnew/3.12.rst:1359
+#: whatsnew/3.12.rst:1369
 msgid "asynchat and asyncore"
 msgstr ""
 
-#: whatsnew/3.12.rst:1361
+#: whatsnew/3.12.rst:1371
 msgid ""
 "These two modules have been removed according to the schedule in :pep:`594`, "
 "having been deprecated in Python 3.6. Use :mod:`asyncio` instead. "
 "(Contributed by Nikita Sobolev in :gh:`96580`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1368
+#: whatsnew/3.12.rst:1378
 msgid "configparser"
 msgstr ""
 
-#: whatsnew/3.12.rst:1370
+#: whatsnew/3.12.rst:1380
 msgid ""
 "Several names deprecated in the :mod:`configparser` way back in 3.2 have "
 "been removed per :gh:`89336`:"
 msgstr ""
 
-#: whatsnew/3.12.rst:1373
+#: whatsnew/3.12.rst:1383
 msgid ""
 ":class:`configparser.ParsingError` no longer has a ``filename`` attribute or "
 "argument. Use the ``source`` attribute and argument instead."
 msgstr ""
 
-#: whatsnew/3.12.rst:1375
+#: whatsnew/3.12.rst:1385
 msgid ""
 ":mod:`configparser` no longer has a ``SafeConfigParser`` class. Use the "
 "shorter :class:`~configparser.ConfigParser` name instead."
 msgstr ""
 
-#: whatsnew/3.12.rst:1377
+#: whatsnew/3.12.rst:1387
 msgid ""
 ":class:`configparser.ConfigParser` no longer has a ``readfp`` method. Use :"
 "meth:`~configparser.ConfigParser.read_file` instead."
 msgstr ""
 
-#: whatsnew/3.12.rst:1381
+#: whatsnew/3.12.rst:1393
 msgid "distutils"
 msgstr ""
 
-#: whatsnew/3.12.rst:1383
+#: whatsnew/3.12.rst:1395
 msgid ""
 "Remove the :py:mod:`!distutils` package. It was deprecated in Python 3.10 "
 "by :pep:`632` \"Deprecate distutils module\". For projects still using "
@@ -2798,17 +2813,17 @@ msgid ""
 "Victor Stinner in :gh:`92584`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1390
+#: whatsnew/3.12.rst:1402
 msgid "ensurepip"
 msgstr ""
 
-#: whatsnew/3.12.rst:1392
+#: whatsnew/3.12.rst:1404
 msgid ""
 "Remove the bundled setuptools wheel from :mod:`ensurepip`, and stop "
 "installing setuptools in environments created by :mod:`venv`."
 msgstr ""
 
-#: whatsnew/3.12.rst:1395
+#: whatsnew/3.12.rst:1407
 msgid ""
 "``pip (>= 22.1)`` does not require setuptools to be installed in the "
 "environment. ``setuptools``-based (and ``distutils``-based) packages can "
@@ -2816,7 +2831,7 @@ msgid ""
 "the build environment it uses for building a package."
 msgstr ""
 
-#: whatsnew/3.12.rst:1401
+#: whatsnew/3.12.rst:1413
 msgid ""
 "``easy_install``, ``pkg_resources``, ``setuptools`` and ``distutils`` are no "
 "longer provided by default in environments created with ``venv`` or "
@@ -2826,35 +2841,35 @@ msgid ""
 "(typically, using pip)."
 msgstr ""
 
-#: whatsnew/3.12.rst:1408
+#: whatsnew/3.12.rst:1420
 msgid "(Contributed by Pradyun Gedam in :gh:`95299`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1411
+#: whatsnew/3.12.rst:1423
 msgid "enum"
 msgstr ""
 
-#: whatsnew/3.12.rst:1413
+#: whatsnew/3.12.rst:1425
 msgid ""
 "Remove :mod:`enum`'s ``EnumMeta.__getattr__``, which is no longer needed for "
 "enum attribute access. (Contributed by Ethan Furman in :gh:`95083`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1418
+#: whatsnew/3.12.rst:1430
 msgid "ftplib"
 msgstr ""
 
-#: whatsnew/3.12.rst:1420
+#: whatsnew/3.12.rst:1432
 msgid ""
 "Remove :mod:`ftplib`'s ``FTP_TLS.ssl_version`` class attribute: use the "
 "*context* parameter instead. (Contributed by Victor Stinner in :gh:`94172`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1425
+#: whatsnew/3.12.rst:1437
 msgid "gzip"
 msgstr ""
 
-#: whatsnew/3.12.rst:1427
+#: whatsnew/3.12.rst:1439
 msgid ""
 "Remove the ``filename`` attribute of :mod:`gzip`'s :class:`gzip.GzipFile`, "
 "deprecated since Python 2.6, use the :attr:`~gzip.GzipFile.name` attribute "
@@ -2863,11 +2878,11 @@ msgid ""
 "`94196`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1434
+#: whatsnew/3.12.rst:1446
 msgid "hashlib"
 msgstr ""
 
-#: whatsnew/3.12.rst:1436
+#: whatsnew/3.12.rst:1448
 msgid ""
 "Remove the pure Python implementation of :mod:`hashlib`'s :func:`hashlib."
 "pbkdf2_hmac`, deprecated in Python 3.10. Python 3.10 and newer requires "
@@ -2876,150 +2891,150 @@ msgid ""
 "Stinner in :gh:`94199`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1470
+#: whatsnew/3.12.rst:1484
 msgid "importlib"
 msgstr ""
 
-#: whatsnew/3.12.rst:1445
+#: whatsnew/3.12.rst:1457
 msgid ""
 "Many previously deprecated cleanups in :mod:`importlib` have now been "
 "completed:"
 msgstr ""
 
-#: whatsnew/3.12.rst:1448
+#: whatsnew/3.12.rst:1460
 msgid ""
 "References to, and support for :meth:`!module_repr` has been removed. "
 "(Contributed by Barry Warsaw in :gh:`97850`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1451
+#: whatsnew/3.12.rst:1463
 msgid ""
 "``importlib.util.set_package``, ``importlib.util.set_loader`` and "
 "``importlib.util.module_for_loader`` have all been removed. (Contributed by "
 "Brett Cannon and Nikita Sobolev in :gh:`65961` and :gh:`97850`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1455
+#: whatsnew/3.12.rst:1467
 msgid ""
 "Support for ``find_loader()`` and ``find_module()`` APIs have been removed.  "
 "(Contributed by Barry Warsaw in :gh:`98040`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1458
+#: whatsnew/3.12.rst:1470
 msgid ""
 "``importlib.abc.Finder``, ``pkgutil.ImpImporter``, and ``pkgutil.ImpLoader`` "
 "have been removed.  (Contributed by Barry Warsaw in :gh:`98040`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1470
+#: whatsnew/3.12.rst:1484
 msgid "imp"
 msgstr ""
 
-#: whatsnew/3.12.rst:1464
+#: whatsnew/3.12.rst:1478
 msgid ""
 "The :mod:`!imp` module has been removed.  (Contributed by Barry Warsaw in :"
 "gh:`98040`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1467
+#: whatsnew/3.12.rst:1481
 msgid "To migrate, consult the following correspondence table:"
 msgstr ""
 
-#: whatsnew/3.12.rst:1472
+#: whatsnew/3.12.rst:1486
 msgid "``imp.NullImporter``"
 msgstr ""
 
-#: whatsnew/3.12.rst:1472
+#: whatsnew/3.12.rst:1486
 msgid "Insert ``None`` into ``sys.path_importer_cache``"
 msgstr ""
 
-#: whatsnew/3.12.rst:1473
+#: whatsnew/3.12.rst:1487
 msgid "``imp.cache_from_source()``"
 msgstr ""
 
-#: whatsnew/3.12.rst:1473
+#: whatsnew/3.12.rst:1487
 msgid ":func:`importlib.util.cache_from_source`"
 msgstr ""
 
-#: whatsnew/3.12.rst:1474
+#: whatsnew/3.12.rst:1488
 msgid "``imp.find_module()``"
 msgstr ""
 
-#: whatsnew/3.12.rst:1474
+#: whatsnew/3.12.rst:1488
 msgid ":func:`importlib.util.find_spec`"
 msgstr ""
 
-#: whatsnew/3.12.rst:1475
+#: whatsnew/3.12.rst:1489
 msgid "``imp.get_magic()``"
 msgstr ""
 
-#: whatsnew/3.12.rst:1475
-msgid ":attr:`importlib.util.MAGIC_NUMBER`"
+#: whatsnew/3.12.rst:1489
+msgid ":const:`importlib.util.MAGIC_NUMBER`"
 msgstr ""
 
-#: whatsnew/3.12.rst:1476
+#: whatsnew/3.12.rst:1490
 msgid "``imp.get_suffixes()``"
 msgstr ""
 
-#: whatsnew/3.12.rst:1476
+#: whatsnew/3.12.rst:1490
 msgid ""
-":attr:`importlib.machinery.SOURCE_SUFFIXES`, :attr:`importlib.machinery."
-"EXTENSION_SUFFIXES`, and :attr:`importlib.machinery.BYTECODE_SUFFIXES`"
+":const:`importlib.machinery.SOURCE_SUFFIXES`, :const:`importlib.machinery."
+"EXTENSION_SUFFIXES`, and :const:`importlib.machinery.BYTECODE_SUFFIXES`"
 msgstr ""
 
-#: whatsnew/3.12.rst:1477
+#: whatsnew/3.12.rst:1491
 msgid "``imp.get_tag()``"
 msgstr ""
 
-#: whatsnew/3.12.rst:1477
+#: whatsnew/3.12.rst:1491
 msgid ":attr:`sys.implementation.cache_tag <sys.implementation>`"
 msgstr ""
 
-#: whatsnew/3.12.rst:1478
+#: whatsnew/3.12.rst:1492
 msgid "``imp.load_module()``"
 msgstr ""
 
-#: whatsnew/3.12.rst:1478
+#: whatsnew/3.12.rst:1492
 msgid ":func:`importlib.import_module`"
 msgstr ""
 
-#: whatsnew/3.12.rst:1479
+#: whatsnew/3.12.rst:1493
 msgid "``imp.new_module(name)``"
 msgstr ""
 
-#: whatsnew/3.12.rst:1479
+#: whatsnew/3.12.rst:1493
 msgid "``types.ModuleType(name)``"
 msgstr ""
 
-#: whatsnew/3.12.rst:1480
+#: whatsnew/3.12.rst:1494
 msgid "``imp.reload()``"
 msgstr ""
 
-#: whatsnew/3.12.rst:1480
+#: whatsnew/3.12.rst:1494
 msgid ":func:`importlib.reload`"
 msgstr ""
 
-#: whatsnew/3.12.rst:1481
+#: whatsnew/3.12.rst:1495
 msgid "``imp.source_from_cache()``"
 msgstr ""
 
-#: whatsnew/3.12.rst:1481
+#: whatsnew/3.12.rst:1495
 msgid ":func:`importlib.util.source_from_cache`"
 msgstr ""
 
-#: whatsnew/3.12.rst:1482
+#: whatsnew/3.12.rst:1496
 msgid "``imp.load_source()``"
 msgstr ""
 
-#: whatsnew/3.12.rst:1482
+#: whatsnew/3.12.rst:1496
 msgid "*See below*"
 msgstr ""
 
-#: whatsnew/3.12.rst:1485
+#: whatsnew/3.12.rst:1499
 msgid "Replace ``imp.load_source()`` with::"
 msgstr ""
 
-#: whatsnew/3.12.rst:1487
+#: whatsnew/3.12.rst:1501
 msgid ""
 "import importlib.util\n"
 "import importlib.machinery\n"
@@ -3036,48 +3051,48 @@ msgid ""
 "    return module"
 msgstr ""
 
-#: whatsnew/3.12.rst:1500
+#: whatsnew/3.12.rst:1514
 msgid "Remove :mod:`!imp` functions and attributes with no replacements:"
 msgstr ""
 
-#: whatsnew/3.12.rst:1502
+#: whatsnew/3.12.rst:1516
 msgid "Undocumented functions:"
 msgstr ""
 
-#: whatsnew/3.12.rst:1504
+#: whatsnew/3.12.rst:1518
 msgid "``imp.init_builtin()``"
 msgstr ""
 
-#: whatsnew/3.12.rst:1505
+#: whatsnew/3.12.rst:1519
 msgid "``imp.load_compiled()``"
 msgstr ""
 
-#: whatsnew/3.12.rst:1506
+#: whatsnew/3.12.rst:1520
 msgid "``imp.load_dynamic()``"
 msgstr ""
 
-#: whatsnew/3.12.rst:1507
+#: whatsnew/3.12.rst:1521
 msgid "``imp.load_package()``"
 msgstr ""
 
-#: whatsnew/3.12.rst:1509
+#: whatsnew/3.12.rst:1523
 msgid ""
 "``imp.lock_held()``, ``imp.acquire_lock()``, ``imp.release_lock()``: the "
 "locking scheme has changed in Python 3.3 to per-module locks."
 msgstr ""
 
-#: whatsnew/3.12.rst:1511
+#: whatsnew/3.12.rst:1525
 msgid ""
 "``imp.find_module()`` constants: ``SEARCH_ERROR``, ``PY_SOURCE``, "
 "``PY_COMPILED``, ``C_EXTENSION``, ``PY_RESOURCE``, ``PKG_DIRECTORY``, "
 "``C_BUILTIN``, ``PY_FROZEN``, ``PY_CODERESOURCE``, ``IMP_HOOK``."
 msgstr ""
 
-#: whatsnew/3.12.rst:1516
+#: whatsnew/3.12.rst:1530
 msgid "io"
 msgstr ""
 
-#: whatsnew/3.12.rst:1518
+#: whatsnew/3.12.rst:1532
 msgid ""
 "Remove :mod:`io`'s ``io.OpenWrapper`` and ``_pyio.OpenWrapper``, deprecated "
 "in Python 3.10: just use :func:`open` instead. The :func:`open` (:func:`io."
@@ -3086,22 +3101,22 @@ msgid ""
 "`94169`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1525
+#: whatsnew/3.12.rst:1539
 msgid "locale"
 msgstr ""
 
-#: whatsnew/3.12.rst:1527
+#: whatsnew/3.12.rst:1541
 msgid ""
 "Remove :mod:`locale`'s :func:`!locale.format` function, deprecated in Python "
 "3.7: use :func:`locale.format_string` instead. (Contributed by Victor "
 "Stinner in :gh:`94226`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1532
+#: whatsnew/3.12.rst:1546
 msgid "smtpd"
 msgstr ""
 
-#: whatsnew/3.12.rst:1534
+#: whatsnew/3.12.rst:1548
 msgid ""
 "The ``smtpd`` module has been removed according to the schedule in :pep:"
 "`594`, having been deprecated in Python 3.4.7 and 3.5.4. Use the :pypi:"
@@ -3109,27 +3124,27 @@ msgid ""
 "(Contributed by Oleg Iarygin in :gh:`93243`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1543
+#: whatsnew/3.12.rst:1557
 msgid ""
 "The following undocumented :mod:`sqlite3` features, deprecated in Python "
 "3.10, are now removed:"
 msgstr ""
 
-#: whatsnew/3.12.rst:1546
+#: whatsnew/3.12.rst:1560
 msgid "``sqlite3.enable_shared_cache()``"
 msgstr ""
 
-#: whatsnew/3.12.rst:1547
+#: whatsnew/3.12.rst:1561
 msgid "``sqlite3.OptimizedUnicode``"
 msgstr ""
 
-#: whatsnew/3.12.rst:1549
+#: whatsnew/3.12.rst:1563
 msgid ""
 "If a shared cache must be used, open the database in URI mode using the "
 "``cache=shared`` query parameter."
 msgstr ""
 
-#: whatsnew/3.12.rst:1552
+#: whatsnew/3.12.rst:1566
 msgid ""
 "The ``sqlite3.OptimizedUnicode`` text factory has been an alias for :class:"
 "`str` since Python 3.3. Code that previously set the text factory to "
@@ -3137,22 +3152,22 @@ msgid ""
 "default value which is also ``str``."
 msgstr ""
 
-#: whatsnew/3.12.rst:1557
+#: whatsnew/3.12.rst:1571
 msgid "(Contributed by Erlend E. Aasland in :gh:`92548`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1560
+#: whatsnew/3.12.rst:1574
 msgid "ssl"
 msgstr ""
 
-#: whatsnew/3.12.rst:1562
+#: whatsnew/3.12.rst:1576
 msgid ""
 "Remove :mod:`ssl`'s :func:`!ssl.RAND_pseudo_bytes` function, deprecated in "
 "Python 3.6: use :func:`os.urandom` or :func:`ssl.RAND_bytes` instead. "
 "(Contributed by Victor Stinner in :gh:`94199`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1566
+#: whatsnew/3.12.rst:1580
 msgid ""
 "Remove the :func:`!ssl.match_hostname` function. It was deprecated in Python "
 "3.7. OpenSSL performs hostname matching since Python 3.7, Python no longer "
@@ -3160,7 +3175,7 @@ msgid ""
 "Stinner in :gh:`94199`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1572
+#: whatsnew/3.12.rst:1586
 msgid ""
 "Remove the :func:`!ssl.wrap_socket` function, deprecated in Python 3.7: "
 "instead, create a :class:`ssl.SSLContext` object and call its :class:`ssl."
@@ -3171,185 +3186,185 @@ msgid ""
 "`94199`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1583
+#: whatsnew/3.12.rst:1597
 msgid "Remove many long-deprecated :mod:`unittest` features:"
 msgstr ""
 
-#: whatsnew/3.12.rst:1587
+#: whatsnew/3.12.rst:1601
 msgid "A number of :class:`~unittest.TestCase` method aliases:"
 msgstr ""
 
-#: whatsnew/3.12.rst:1590
+#: whatsnew/3.12.rst:1604
 msgid "Deprecated alias"
 msgstr ""
 
-#: whatsnew/3.12.rst:1590
+#: whatsnew/3.12.rst:1604
 msgid "Method Name"
 msgstr ""
 
-#: whatsnew/3.12.rst:1590
+#: whatsnew/3.12.rst:1604
 msgid "Deprecated in"
 msgstr ""
 
-#: whatsnew/3.12.rst:1592
+#: whatsnew/3.12.rst:1606
 msgid "``failUnless``"
 msgstr ""
 
-#: whatsnew/3.12.rst:1599
+#: whatsnew/3.12.rst:1613
 msgid ":meth:`.assertTrue`"
 msgstr ""
 
-#: whatsnew/3.12.rst:1593 whatsnew/3.12.rst:1595 whatsnew/3.12.rst:1597
-#: whatsnew/3.12.rst:1598
+#: whatsnew/3.12.rst:1607 whatsnew/3.12.rst:1609 whatsnew/3.12.rst:1611
+#: whatsnew/3.12.rst:1612
 msgid "3.1"
 msgstr ""
 
-#: whatsnew/3.12.rst:1593
+#: whatsnew/3.12.rst:1607
 msgid "``failIf``"
 msgstr ""
 
-#: whatsnew/3.12.rst:1593
+#: whatsnew/3.12.rst:1607
 msgid ":meth:`.assertFalse`"
 msgstr ""
 
-#: whatsnew/3.12.rst:1594
+#: whatsnew/3.12.rst:1608
 msgid "``failUnlessEqual``"
 msgstr ""
 
-#: whatsnew/3.12.rst:1600
+#: whatsnew/3.12.rst:1614
 msgid ":meth:`.assertEqual`"
 msgstr ""
 
-#: whatsnew/3.12.rst:1595
+#: whatsnew/3.12.rst:1609
 msgid "``failIfEqual``"
 msgstr ""
 
-#: whatsnew/3.12.rst:1601
+#: whatsnew/3.12.rst:1615
 msgid ":meth:`.assertNotEqual`"
 msgstr ""
 
-#: whatsnew/3.12.rst:1596
+#: whatsnew/3.12.rst:1610
 msgid "``failUnlessAlmostEqual``"
 msgstr ""
 
-#: whatsnew/3.12.rst:1602
+#: whatsnew/3.12.rst:1616
 msgid ":meth:`.assertAlmostEqual`"
 msgstr ""
 
-#: whatsnew/3.12.rst:1597
+#: whatsnew/3.12.rst:1611
 msgid "``failIfAlmostEqual``"
 msgstr ""
 
-#: whatsnew/3.12.rst:1603
+#: whatsnew/3.12.rst:1617
 msgid ":meth:`.assertNotAlmostEqual`"
 msgstr ""
 
-#: whatsnew/3.12.rst:1598
+#: whatsnew/3.12.rst:1612
 msgid "``failUnlessRaises``"
 msgstr ""
 
-#: whatsnew/3.12.rst:1598
+#: whatsnew/3.12.rst:1612
 msgid ":meth:`.assertRaises`"
 msgstr ""
 
-#: whatsnew/3.12.rst:1599
+#: whatsnew/3.12.rst:1613
 msgid "``assert_``"
 msgstr ""
 
-#: whatsnew/3.12.rst:1600 whatsnew/3.12.rst:1602 whatsnew/3.12.rst:1604
-#: whatsnew/3.12.rst:1605
+#: whatsnew/3.12.rst:1614 whatsnew/3.12.rst:1616 whatsnew/3.12.rst:1618
+#: whatsnew/3.12.rst:1619
 msgid "3.2"
 msgstr ""
 
-#: whatsnew/3.12.rst:1600
+#: whatsnew/3.12.rst:1614
 msgid "``assertEquals``"
 msgstr ""
 
-#: whatsnew/3.12.rst:1601
+#: whatsnew/3.12.rst:1615
 msgid "``assertNotEquals``"
 msgstr ""
 
-#: whatsnew/3.12.rst:1602
+#: whatsnew/3.12.rst:1616
 msgid "``assertAlmostEquals``"
 msgstr ""
 
-#: whatsnew/3.12.rst:1603
+#: whatsnew/3.12.rst:1617
 msgid "``assertNotAlmostEquals``"
 msgstr ""
 
-#: whatsnew/3.12.rst:1604
+#: whatsnew/3.12.rst:1618
 msgid "``assertRegexpMatches``"
 msgstr ""
 
-#: whatsnew/3.12.rst:1604
+#: whatsnew/3.12.rst:1618
 msgid ":meth:`.assertRegex`"
 msgstr ""
 
-#: whatsnew/3.12.rst:1605
+#: whatsnew/3.12.rst:1619
 msgid "``assertRaisesRegexp``"
 msgstr ""
 
-#: whatsnew/3.12.rst:1605
+#: whatsnew/3.12.rst:1619
 msgid ":meth:`.assertRaisesRegex`"
 msgstr ""
 
-#: whatsnew/3.12.rst:1606
+#: whatsnew/3.12.rst:1620
 msgid "``assertNotRegexpMatches``"
 msgstr ""
 
-#: whatsnew/3.12.rst:1606
+#: whatsnew/3.12.rst:1620
 msgid ":meth:`.assertNotRegex`"
 msgstr ""
 
-#: whatsnew/3.12.rst:1606
+#: whatsnew/3.12.rst:1620
 msgid "3.5"
 msgstr ""
 
-#: whatsnew/3.12.rst:1609
+#: whatsnew/3.12.rst:1623
 msgid ""
 "You can use https://github.com/isidentical/teyit to automatically modernise "
 "your unit tests."
 msgstr ""
 
-#: whatsnew/3.12.rst:1612
+#: whatsnew/3.12.rst:1626
 msgid ""
 "Undocumented and broken :class:`~unittest.TestCase` method "
 "``assertDictContainsSubset`` (deprecated in Python 3.2)."
 msgstr ""
 
-#: whatsnew/3.12.rst:1615
+#: whatsnew/3.12.rst:1629
 msgid ""
 "Undocumented :meth:`TestLoader.loadTestsFromModule <unittest.TestLoader."
 "loadTestsFromModule>` parameter *use_load_tests* (deprecated and ignored "
 "since Python 3.5)."
 msgstr ""
 
-#: whatsnew/3.12.rst:1619
+#: whatsnew/3.12.rst:1633
 msgid ""
 "An alias of the :class:`~unittest.TextTestResult` class: ``_TextTestResult`` "
 "(deprecated in Python 3.2)."
 msgstr ""
 
-#: whatsnew/3.12.rst:1622
+#: whatsnew/3.12.rst:1636
 msgid "(Contributed by Serhiy Storchaka in :gh:`89325`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1625
+#: whatsnew/3.12.rst:1639
 msgid "webbrowser"
 msgstr ""
 
-#: whatsnew/3.12.rst:1627
+#: whatsnew/3.12.rst:1641
 msgid ""
 "Remove support for obsolete browsers from :mod:`webbrowser`. The removed "
 "browsers include: Grail, Mosaic, Netscape, Galeon, Skipstone, Iceape, "
 "Firebird, and Firefox versions 35 and below (:gh:`102871`)."
 msgstr ""
 
-#: whatsnew/3.12.rst:1632
+#: whatsnew/3.12.rst:1646
 msgid "xml.etree.ElementTree"
 msgstr ""
 
-#: whatsnew/3.12.rst:1634
+#: whatsnew/3.12.rst:1648
 msgid ""
 "Remove the ``ElementTree.Element.copy()`` method of the pure Python "
 "implementation, deprecated in Python 3.10, use the :func:`copy.copy` "
@@ -3358,22 +3373,22 @@ msgid ""
 "Stinner in :gh:`94383`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1641
+#: whatsnew/3.12.rst:1655
 msgid "zipimport"
 msgstr ""
 
-#: whatsnew/3.12.rst:1643
+#: whatsnew/3.12.rst:1657
 msgid ""
 "Remove :mod:`zipimport`'s ``find_loader()`` and ``find_module()`` methods, "
 "deprecated in Python 3.10: use the ``find_spec()`` method instead.  See :pep:"
 "`451` for the rationale. (Contributed by Victor Stinner in :gh:`94379`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1649
+#: whatsnew/3.12.rst:1663
 msgid "Others"
 msgstr ""
 
-#: whatsnew/3.12.rst:1651
+#: whatsnew/3.12.rst:1665
 msgid ""
 "Remove the ``suspicious`` rule from the documentation :file:`Makefile` and :"
 "file:`Doc/tools/rstlint.py`, both in favor of `sphinx-lint <https://github."
@@ -3381,7 +3396,7 @@ msgid ""
 "`98179`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1656
+#: whatsnew/3.12.rst:1670
 msgid ""
 "Remove the *keyfile* and *certfile* parameters from the :mod:`ftplib`, :mod:"
 "`imaplib`, :mod:`poplib` and :mod:`smtplib` modules, and the *key_file*, "
@@ -3391,33 +3406,33 @@ msgid ""
 "in :gh:`94172`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1664
+#: whatsnew/3.12.rst:1678
 msgid ""
 "Remove ``Jython`` compatibility hacks from several stdlib modules and tests. "
 "(Contributed by Nikita Sobolev in :gh:`99482`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1667
+#: whatsnew/3.12.rst:1681
 msgid ""
 "Remove ``_use_broken_old_ctypes_structure_semantics_`` flag from :mod:"
 "`ctypes` module. (Contributed by Nikita Sobolev in :gh:`99285`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1999
+#: whatsnew/3.12.rst:2013
 msgid "Porting to Python 3.12"
 msgstr ""
 
-#: whatsnew/3.12.rst:1677
+#: whatsnew/3.12.rst:1691
 msgid ""
 "This section lists previously described changes and other bugfixes that may "
 "require changes to your code."
 msgstr ""
 
-#: whatsnew/3.12.rst:1681
+#: whatsnew/3.12.rst:1695
 msgid "Changes in the Python API"
 msgstr ""
 
-#: whatsnew/3.12.rst:1683
+#: whatsnew/3.12.rst:1697
 msgid ""
 "More strict rules are now applied for numerical group references and group "
 "names in regular expressions. Only sequence of ASCII digits is now accepted "
@@ -3426,7 +3441,7 @@ msgid ""
 "(Contributed by Serhiy Storchaka in :gh:`91760`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1690
+#: whatsnew/3.12.rst:1704
 msgid ""
 "Remove ``randrange()`` functionality deprecated since Python 3.10.  "
 "Formerly, ``randrange(10.0)`` losslessly converted to ``randrange(10)``. "
@@ -3438,7 +3453,7 @@ msgid ""
 "`86388`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1698
+#: whatsnew/3.12.rst:1712
 msgid ""
 ":class:`argparse.ArgumentParser` changed encoding and error handler for "
 "reading arguments from file (e.g. ``fromfile_prefix_chars`` option) from "
@@ -3448,21 +3463,21 @@ msgid ""
 "on Windows."
 msgstr ""
 
-#: whatsnew/3.12.rst:1704
+#: whatsnew/3.12.rst:1718
 msgid ""
 "Remove the ``asyncore``-based ``smtpd`` module deprecated in Python 3.4.7 "
 "and 3.5.4.  A recommended replacement is the :mod:`asyncio`-based :pypi:"
 "`aiosmtpd` PyPI module."
 msgstr ""
 
-#: whatsnew/3.12.rst:1708
+#: whatsnew/3.12.rst:1722
 msgid ""
 ":func:`shlex.split`: Passing ``None`` for *s* argument now raises an "
 "exception, rather than reading :data:`sys.stdin`. The feature was deprecated "
 "in Python 3.9. (Contributed by Victor Stinner in :gh:`94352`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1713
+#: whatsnew/3.12.rst:1727
 msgid ""
 "The :mod:`os` module no longer accepts bytes-like paths, like :class:"
 "`bytearray` and :class:`memoryview` types: only the exact :class:`bytes` "
@@ -3470,7 +3485,7 @@ msgid ""
 "`98393`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1718
+#: whatsnew/3.12.rst:1732
 msgid ""
 ":func:`syslog.openlog` and :func:`syslog.closelog` now fail if used in "
 "subinterpreters. :func:`syslog.syslog` may still be used in subinterpreters, "
@@ -3482,7 +3497,7 @@ msgid ""
 "(Contributed by Donghee Na in :gh:`99127`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1727
+#: whatsnew/3.12.rst:1741
 msgid ""
 "The undocumented locking behavior of :func:`~functools.cached_property` is "
 "removed, because it locked across all instances of the class, leading to "
@@ -3494,14 +3509,14 @@ msgid ""
 "property getter function or around multi-threaded access points."
 msgstr ""
 
-#: whatsnew/3.12.rst:1740
+#: whatsnew/3.12.rst:1754
 msgid ""
 "When extracting tar files using :mod:`tarfile` or :func:`shutil."
 "unpack_archive`, pass the *filter* argument to limit features that may be "
 "surprising or dangerous. See :ref:`tarfile-extraction-filter` for details."
 msgstr ""
 
-#: whatsnew/3.12.rst:1745
+#: whatsnew/3.12.rst:1759
 msgid ""
 "The output of the :func:`tokenize.tokenize` and :func:`tokenize."
 "generate_tokens` functions is now changed due to the changes introduced in :"
@@ -3513,15 +3528,15 @@ msgid ""
 "``f\"start {1+1} end\"`` the old version of the tokenizer emitted::"
 msgstr ""
 
-#: whatsnew/3.12.rst:1754
+#: whatsnew/3.12.rst:1768
 msgid "1,0-1,18:           STRING         'f\"start {1+1} end\"'"
 msgstr ""
 
-#: whatsnew/3.12.rst:1756
+#: whatsnew/3.12.rst:1770
 msgid "while the new version emits::"
 msgstr ""
 
-#: whatsnew/3.12.rst:1758
+#: whatsnew/3.12.rst:1772
 msgid ""
 "1,0-1,2:            FSTRING_START  'f\"'\n"
 "1,2-1,8:            FSTRING_MIDDLE 'start '\n"
@@ -3534,54 +3549,54 @@ msgid ""
 "1,17-1,18:          FSTRING_END    '\"'"
 msgstr ""
 
-#: whatsnew/3.12.rst:1768
+#: whatsnew/3.12.rst:1782
 msgid ""
 "Additionally, there may be some minor behavioral changes as a consequence of "
 "the changes required to support :pep:`701`. Some of these changes include:"
 msgstr ""
 
-#: whatsnew/3.12.rst:1771
+#: whatsnew/3.12.rst:1785
 msgid ""
 "The ``type`` attribute of the tokens emitted when tokenizing some invalid "
 "Python characters such as ``!`` has changed from ``ERRORTOKEN`` to ``OP``."
 msgstr ""
 
-#: whatsnew/3.12.rst:1774
+#: whatsnew/3.12.rst:1788
 msgid ""
 "Incomplete single-line strings now also raise :exc:`tokenize.TokenError` as "
 "incomplete multiline strings do."
 msgstr ""
 
-#: whatsnew/3.12.rst:1777
+#: whatsnew/3.12.rst:1791
 msgid ""
 "Some incomplete or invalid Python code now raises :exc:`tokenize.TokenError` "
 "instead of returning arbitrary ``ERRORTOKEN`` tokens when tokenizing it."
 msgstr ""
 
-#: whatsnew/3.12.rst:1780
+#: whatsnew/3.12.rst:1794
 msgid ""
 "Mixing tabs and spaces as indentation in the same file is not supported "
 "anymore and will raise a :exc:`TabError`."
 msgstr ""
 
-#: whatsnew/3.12.rst:1783
+#: whatsnew/3.12.rst:1797
 msgid ""
 "The :mod:`threading` module now expects the :mod:`!_thread` module to have "
 "an ``_is_main_interpreter`` attribute.  It is a function with no arguments "
 "that returns ``True`` if the current interpreter is the main interpreter."
 msgstr ""
 
-#: whatsnew/3.12.rst:1788
+#: whatsnew/3.12.rst:1802
 msgid ""
 "Any library or application that provides a custom ``_thread`` module should "
 "provide ``_is_main_interpreter()``. (See :gh:`112826`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1793
+#: whatsnew/3.12.rst:1807
 msgid "Build Changes"
 msgstr ""
 
-#: whatsnew/3.12.rst:1795
+#: whatsnew/3.12.rst:1809
 msgid ""
 "Python no longer uses :file:`setup.py` to build shared C extension modules. "
 "Build parameters like headers and libraries are detected in ``configure`` "
@@ -3590,21 +3605,21 @@ msgid ""
 "in :gh:`93939`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1801
+#: whatsnew/3.12.rst:1815
 msgid ""
 "``va_start()`` with two parameters, like ``va_start(args, format),`` is now "
 "required to build Python. ``va_start()`` is no longer called with a single "
 "parameter. (Contributed by Kumar Aditya in :gh:`93207`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1806
+#: whatsnew/3.12.rst:1820
 msgid ""
 "CPython now uses the ThinLTO option as the default link time optimization "
 "policy if the Clang compiler accepts the flag. (Contributed by Donghee Na "
 "in :gh:`89536`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1810
+#: whatsnew/3.12.rst:1824
 msgid ""
 "Add ``COMPILEALL_OPTS`` variable in :file:`Makefile` to override :mod:"
 "`compileall` options (default: ``-j0``) in ``make install``. Also merged the "
@@ -3613,46 +3628,46 @@ msgid ""
 "`99289`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1816
+#: whatsnew/3.12.rst:1830
 msgid "Add platform triplets for 64-bit LoongArch:"
 msgstr ""
 
-#: whatsnew/3.12.rst:1818
+#: whatsnew/3.12.rst:1832
 msgid "loongarch64-linux-gnusf"
 msgstr ""
 
-#: whatsnew/3.12.rst:1819
+#: whatsnew/3.12.rst:1833
 msgid "loongarch64-linux-gnuf32"
 msgstr ""
 
-#: whatsnew/3.12.rst:1820
+#: whatsnew/3.12.rst:1834
 msgid "loongarch64-linux-gnu"
 msgstr ""
 
-#: whatsnew/3.12.rst:1822
+#: whatsnew/3.12.rst:1836
 msgid "(Contributed by Zhang Na in :gh:`90656`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1824
+#: whatsnew/3.12.rst:1838
 msgid "``PYTHON_FOR_REGEN`` now require Python 3.10 or newer."
 msgstr ""
 
-#: whatsnew/3.12.rst:1826
+#: whatsnew/3.12.rst:1840
 msgid ""
 "Autoconf 2.71 and aclocal 1.16.4 is now required to regenerate :file:`!"
 "configure`. (Contributed by Christian Heimes in :gh:`89886`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1830
+#: whatsnew/3.12.rst:1844
 msgid ""
 "Windows builds and macOS installers from python.org now use OpenSSL 3.0."
 msgstr ""
 
-#: whatsnew/3.12.rst:1834
+#: whatsnew/3.12.rst:1848
 msgid "C API Changes"
 msgstr ""
 
-#: whatsnew/3.12.rst:1841
+#: whatsnew/3.12.rst:1855
 msgid ""
 ":pep:`697`: Introduce the :ref:`Unstable C API tier <unstable-c-api>`, "
 "intended for low-level tools like debuggers and JIT compilers. This API may "
@@ -3660,84 +3675,84 @@ msgid ""
 "contents are marked by the ``PyUnstable_`` prefix in names."
 msgstr ""
 
-#: whatsnew/3.12.rst:1847
+#: whatsnew/3.12.rst:1861
 msgid "Code object constructors:"
 msgstr ""
 
-#: whatsnew/3.12.rst:1849
+#: whatsnew/3.12.rst:1863
 msgid "``PyUnstable_Code_New()`` (renamed from ``PyCode_New``)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1850
+#: whatsnew/3.12.rst:1864
 msgid ""
 "``PyUnstable_Code_NewWithPosOnlyArgs()`` (renamed from "
 "``PyCode_NewWithPosOnlyArgs``)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1852
+#: whatsnew/3.12.rst:1866
 msgid "Extra storage for code objects (:pep:`523`):"
 msgstr ""
 
-#: whatsnew/3.12.rst:1854
+#: whatsnew/3.12.rst:1868
 msgid ""
 "``PyUnstable_Eval_RequestCodeExtraIndex()`` (renamed from "
 "``_PyEval_RequestCodeExtraIndex``)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1855
+#: whatsnew/3.12.rst:1869
 msgid "``PyUnstable_Code_GetExtra()`` (renamed from ``_PyCode_GetExtra``)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1856
+#: whatsnew/3.12.rst:1870
 msgid "``PyUnstable_Code_SetExtra()`` (renamed from ``_PyCode_SetExtra``)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1858
+#: whatsnew/3.12.rst:1872
 msgid ""
 "The original names will continue to be available until the respective API "
 "changes."
 msgstr ""
 
-#: whatsnew/3.12.rst:1861
+#: whatsnew/3.12.rst:1875
 msgid "(Contributed by Petr Viktorin in :gh:`101101`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1863
+#: whatsnew/3.12.rst:1877
 msgid ""
 ":pep:`697`: Add an API for extending types whose instance memory layout is "
 "opaque:"
 msgstr ""
 
-#: whatsnew/3.12.rst:1866
+#: whatsnew/3.12.rst:1880
 msgid ""
 ":c:member:`PyType_Spec.basicsize` can be zero or negative to specify "
 "inheriting or extending the base class size."
 msgstr ""
 
-#: whatsnew/3.12.rst:1868
+#: whatsnew/3.12.rst:1882
 msgid ""
 ":c:func:`PyObject_GetTypeData` and :c:func:`PyType_GetTypeDataSize` added to "
 "allow access to subclass-specific instance data."
 msgstr ""
 
-#: whatsnew/3.12.rst:1870
+#: whatsnew/3.12.rst:1884
 msgid ""
 ":c:macro:`Py_TPFLAGS_ITEMS_AT_END` and :c:func:`PyObject_GetItemData` added "
 "to allow safely extending certain variable-sized types, including :c:var:"
 "`PyType_Type`."
 msgstr ""
 
-#: whatsnew/3.12.rst:1873
+#: whatsnew/3.12.rst:1887
 msgid ""
 ":c:macro:`Py_RELATIVE_OFFSET` added to allow defining :c:type:`members "
 "<PyMemberDef>` in terms of a subclass-specific struct."
 msgstr ""
 
-#: whatsnew/3.12.rst:1876
+#: whatsnew/3.12.rst:1890
 msgid "(Contributed by Petr Viktorin in :gh:`103509`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1878
+#: whatsnew/3.12.rst:1892
 msgid ""
 "Add the new :ref:`limited C API <limited-c-api>` function :c:func:"
 "`PyType_FromMetaclass`, which generalizes the existing :c:func:"
@@ -3745,29 +3760,29 @@ msgid ""
 "(Contributed by Wenzel Jakob in :gh:`93012`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1883
+#: whatsnew/3.12.rst:1897
 msgid ""
 "API for creating objects that can be called using :ref:`the vectorcall "
 "protocol <vectorcall>` was added to the :ref:`Limited API <stable>`:"
 msgstr ""
 
-#: whatsnew/3.12.rst:1887
+#: whatsnew/3.12.rst:1901
 msgid ":c:macro:`Py_TPFLAGS_HAVE_VECTORCALL`"
 msgstr ""
 
-#: whatsnew/3.12.rst:1888
+#: whatsnew/3.12.rst:1902
 msgid ":c:func:`PyVectorcall_NARGS`"
 msgstr ""
 
-#: whatsnew/3.12.rst:1889
+#: whatsnew/3.12.rst:1903
 msgid ":c:func:`PyVectorcall_Call`"
 msgstr ""
 
-#: whatsnew/3.12.rst:1890
+#: whatsnew/3.12.rst:1904
 msgid ":c:type:`vectorcallfunc`"
 msgstr ""
 
-#: whatsnew/3.12.rst:1892
+#: whatsnew/3.12.rst:1906
 msgid ""
 "The :c:macro:`Py_TPFLAGS_HAVE_VECTORCALL` flag is now removed from a class "
 "when the class's :py:meth:`~object.__call__` method is reassigned. This "
@@ -3778,7 +3793,7 @@ msgid ""
 "`93274`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1900
+#: whatsnew/3.12.rst:1914
 msgid ""
 "The :c:macro:`Py_TPFLAGS_MANAGED_DICT` and :c:macro:"
 "`Py_TPFLAGS_MANAGED_WEAKREF` flags have been added. This allows extensions "
@@ -3786,32 +3801,32 @@ msgid ""
 "bookkeeping, using less memory and with faster access."
 msgstr ""
 
-#: whatsnew/3.12.rst:1905
+#: whatsnew/3.12.rst:1919
 msgid ""
 "API for performing calls using :ref:`the vectorcall protocol <vectorcall>` "
 "was added to the :ref:`Limited API <stable>`:"
 msgstr ""
 
-#: whatsnew/3.12.rst:1909
+#: whatsnew/3.12.rst:1923
 msgid ":c:func:`PyObject_Vectorcall`"
 msgstr ""
 
-#: whatsnew/3.12.rst:1910
+#: whatsnew/3.12.rst:1924
 msgid ":c:func:`PyObject_VectorcallMethod`"
 msgstr ""
 
-#: whatsnew/3.12.rst:1911
+#: whatsnew/3.12.rst:1925
 msgid ":c:macro:`PY_VECTORCALL_ARGUMENTS_OFFSET`"
 msgstr ""
 
-#: whatsnew/3.12.rst:1913
+#: whatsnew/3.12.rst:1927
 msgid ""
 "This means that both the incoming and outgoing ends of the vector call "
 "protocol are now available in the :ref:`Limited API <stable>`. (Contributed "
 "by Wenzel Jakob in :gh:`98586`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1917
+#: whatsnew/3.12.rst:1931
 msgid ""
 "Add two new public functions, :c:func:`PyEval_SetProfileAllThreads` and :c:"
 "func:`PyEval_SetTraceAllThreads`, that allow to set tracing and profiling "
@@ -3819,14 +3834,14 @@ msgid ""
 "(Contributed by Pablo Galindo in :gh:`93503`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1923
+#: whatsnew/3.12.rst:1937
 msgid ""
 "Add new function :c:func:`PyFunction_SetVectorcall` to the C API which sets "
 "the vectorcall field of a given :c:type:`PyFunctionObject`. (Contributed by "
 "Andrew Frost in :gh:`92257`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1927
+#: whatsnew/3.12.rst:1941
 msgid ""
 "The C API now permits registering callbacks via :c:func:"
 "`PyDict_AddWatcher`, :c:func:`PyDict_Watch` and related APIs to be called "
@@ -3835,28 +3850,28 @@ msgid ""
 "`91052`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1933
+#: whatsnew/3.12.rst:1947
 msgid ""
 "Add :c:func:`PyType_AddWatcher` and :c:func:`PyType_Watch` API to register "
 "callbacks to receive notification on changes to a type. (Contributed by Carl "
 "Meyer in :gh:`91051`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1937
+#: whatsnew/3.12.rst:1951
 msgid ""
 "Add :c:func:`PyCode_AddWatcher` and :c:func:`PyCode_ClearWatcher` APIs to "
 "register callbacks to receive notification on creation and destruction of "
 "code objects. (Contributed by Itamar Oren in :gh:`91054`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1942
+#: whatsnew/3.12.rst:1956
 msgid ""
 "Add :c:func:`PyFrame_GetVar` and :c:func:`PyFrame_GetVarString` functions to "
 "get a frame variable by its name. (Contributed by Victor Stinner in :gh:"
 "`91248`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1946
+#: whatsnew/3.12.rst:1960
 msgid ""
 "Add :c:func:`PyErr_GetRaisedException` and :c:func:"
 "`PyErr_SetRaisedException` for saving and restoring the current exception. "
@@ -3866,14 +3881,14 @@ msgid ""
 "(Contributed by Mark Shannon in :gh:`101578`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1954
+#: whatsnew/3.12.rst:1968
 msgid ""
 "Add ``_PyErr_ChainExceptions1``, which takes an exception instance, to "
 "replace the legacy-API ``_PyErr_ChainExceptions``, which is now deprecated. "
 "(Contributed by Mark Shannon in :gh:`101578`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1958
+#: whatsnew/3.12.rst:1972
 msgid ""
 "Add :c:func:`PyException_GetArgs` and :c:func:`PyException_SetArgs` as "
 "convenience functions for retrieving and modifying the :attr:`~BaseException."
@@ -3881,71 +3896,71 @@ msgid ""
 "in :gh:`101578`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1963
+#: whatsnew/3.12.rst:1977
 msgid ""
 "Add :c:func:`PyErr_DisplayException`, which takes an exception instance, to "
 "replace the legacy-api :c:func:`!PyErr_Display`. (Contributed by Irit "
 "Katriel in :gh:`102755`)."
 msgstr ""
 
-#: whatsnew/3.12.rst:1969
+#: whatsnew/3.12.rst:1983
 msgid ""
 ":pep:`683`: Introduce *Immortal Objects*, which allows objects to bypass "
 "reference counts, and related changes to the C-API:"
 msgstr ""
 
-#: whatsnew/3.12.rst:1972
+#: whatsnew/3.12.rst:1986
 msgid "``_Py_IMMORTAL_REFCNT``: The reference count that defines an object"
 msgstr ""
 
-#: whatsnew/3.12.rst:1973
+#: whatsnew/3.12.rst:1987
 msgid "as immortal."
 msgstr ""
 
-#: whatsnew/3.12.rst:1974
+#: whatsnew/3.12.rst:1988
 msgid ""
 "``_Py_IsImmortal`` Checks if an object has the immortal reference count."
 msgstr ""
 
-#: whatsnew/3.12.rst:1975
+#: whatsnew/3.12.rst:1989
 msgid "``PyObject_HEAD_INIT`` This will now initialize reference count to"
 msgstr ""
 
-#: whatsnew/3.12.rst:1976
+#: whatsnew/3.12.rst:1990
 msgid "``_Py_IMMORTAL_REFCNT`` when used with ``Py_BUILD_CORE``."
 msgstr ""
 
-#: whatsnew/3.12.rst:1977
+#: whatsnew/3.12.rst:1991
 msgid "``SSTATE_INTERNED_IMMORTAL`` An identifier for interned unicode objects"
 msgstr ""
 
-#: whatsnew/3.12.rst:1978
+#: whatsnew/3.12.rst:1992
 msgid "that are immortal."
 msgstr ""
 
-#: whatsnew/3.12.rst:1979
+#: whatsnew/3.12.rst:1993
 msgid "``SSTATE_INTERNED_IMMORTAL_STATIC`` An identifier for interned unicode"
 msgstr ""
 
-#: whatsnew/3.12.rst:1980
+#: whatsnew/3.12.rst:1994
 msgid "objects that are immortal and static"
 msgstr ""
 
-#: whatsnew/3.12.rst:1981
+#: whatsnew/3.12.rst:1995
 msgid "``sys.getunicodeinternedsize`` This returns the total number of unicode"
 msgstr ""
 
-#: whatsnew/3.12.rst:1982
+#: whatsnew/3.12.rst:1996
 msgid ""
 "objects that have been interned. This is now needed for :file:`refleak.py` "
 "to correctly track reference counts and allocated blocks"
 msgstr ""
 
-#: whatsnew/3.12.rst:1985
+#: whatsnew/3.12.rst:1999
 msgid "(Contributed by Eddie Elizondo in :gh:`84436`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1987
+#: whatsnew/3.12.rst:2001
 msgid ""
 ":pep:`684`: Add the new :c:func:`Py_NewInterpreterFromConfig` function and :"
 "c:type:`PyInterpreterConfig`, which may be used to create sub-interpreters "
@@ -3953,27 +3968,27 @@ msgid ""
 "(Contributed by Eric Snow in :gh:`104110`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:1993
+#: whatsnew/3.12.rst:2007
 msgid ""
 "In the limited C API version 3.12, :c:func:`Py_INCREF` and :c:func:"
 "`Py_DECREF` functions are now implemented as opaque function calls to hide "
 "implementation details. (Contributed by Victor Stinner in :gh:`105387`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:2001
+#: whatsnew/3.12.rst:2015
 msgid ""
 "Legacy Unicode APIs based on ``Py_UNICODE*`` representation has been "
 "removed. Please migrate to APIs based on UTF-8 or ``wchar_t*``."
 msgstr ""
 
-#: whatsnew/3.12.rst:2004
+#: whatsnew/3.12.rst:2018
 msgid ""
 "Argument parsing functions like :c:func:`PyArg_ParseTuple` doesn't support "
 "``Py_UNICODE*`` based format (e.g. ``u``, ``Z``) anymore. Please migrate to "
 "other formats for Unicode like ``s``, ``z``, ``es``, and ``U``."
 msgstr ""
 
-#: whatsnew/3.12.rst:2008
+#: whatsnew/3.12.rst:2022
 msgid ""
 "``tp_weaklist`` for all static builtin types is always ``NULL``. This is an "
 "internal-only field on ``PyTypeObject`` but we're pointing out the change in "
@@ -3982,7 +3997,7 @@ msgid ""
 "necessary, the (internal-only) ``_PyObject_GET_WEAKREFS_LISTPTR()`` macro."
 msgstr ""
 
-#: whatsnew/3.12.rst:2015
+#: whatsnew/3.12.rst:2029
 msgid ""
 "This internal-only :c:member:`PyTypeObject.tp_subclasses` may now not be a "
 "valid object pointer.  Its type was changed to :c:expr:`void *` to reflect "
@@ -3990,13 +4005,13 @@ msgid ""
 "only field directly."
 msgstr ""
 
-#: whatsnew/3.12.rst:2020
+#: whatsnew/3.12.rst:2034
 msgid ""
 "To get a list of subclasses, call the Python method :py:meth:`~type."
 "__subclasses__` (using :c:func:`PyObject_CallMethod`, for example)."
 msgstr ""
 
-#: whatsnew/3.12.rst:2024
+#: whatsnew/3.12.rst:2038
 msgid ""
 "Add support of more formatting options (left aligning, octals, uppercase "
 "hexadecimals, :c:type:`intmax_t`, :c:type:`ptrdiff_t`, :c:type:`wchar_t` C "
@@ -4005,7 +4020,7 @@ msgid ""
 "`98836`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:2030
+#: whatsnew/3.12.rst:2044
 msgid ""
 "An unrecognized format character in :c:func:`PyUnicode_FromFormat` and :c:"
 "func:`PyUnicode_FromFormatV` now sets a :exc:`SystemError`. In previous "
@@ -4014,13 +4029,13 @@ msgid ""
 "Storchaka in :gh:`95781`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:2036
+#: whatsnew/3.12.rst:2050
 msgid ""
 "Fix wrong sign placement in :c:func:`PyUnicode_FromFormat` and :c:func:"
 "`PyUnicode_FromFormatV`. (Contributed by Philip Georgi in :gh:`95504`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:2040
+#: whatsnew/3.12.rst:2054
 msgid ""
 "Extension classes wanting to add a :attr:`~object.__dict__` or weak "
 "reference slot should use :c:macro:`Py_TPFLAGS_MANAGED_DICT` and :c:macro:"
@@ -4034,7 +4049,7 @@ msgid ""
 "func:`PyObject_ClearWeakRefs`, as before."
 msgstr ""
 
-#: whatsnew/3.12.rst:2052
+#: whatsnew/3.12.rst:2066
 msgid ""
 "The :c:func:`PyUnicode_FSDecoder` function no longer accepts bytes-like "
 "paths, like :class:`bytearray` and :class:`memoryview` types: only the "
@@ -4042,7 +4057,7 @@ msgid ""
 "Victor Stinner in :gh:`98393`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:2057
+#: whatsnew/3.12.rst:2071
 msgid ""
 "The :c:macro:`Py_CLEAR`, :c:macro:`Py_SETREF` and :c:macro:`Py_XSETREF` "
 "macros now only evaluate their arguments once. If an argument has side "
@@ -4050,7 +4065,7 @@ msgid ""
 "Stinner in :gh:`98724`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:2062
+#: whatsnew/3.12.rst:2076
 msgid ""
 "The interpreter's error indicator is now always normalized. This means that :"
 "c:func:`PyErr_SetObject`, :c:func:`PyErr_SetString` and the other functions "
@@ -4058,7 +4073,7 @@ msgid ""
 "(Contributed by Mark Shannon in :gh:`101578`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:2067
+#: whatsnew/3.12.rst:2081
 msgid ""
 "``_Py_RefTotal`` is no longer authoritative and only kept around for ABI "
 "compatibility.  Note that it is an internal global and only available on "
@@ -4066,25 +4081,25 @@ msgid ""
 "``_Py_GetGlobalRefTotal()``."
 msgstr ""
 
-#: whatsnew/3.12.rst:2072
+#: whatsnew/3.12.rst:2086
 msgid ""
 "The following functions now select an appropriate metaclass for the newly "
 "created type:"
 msgstr ""
 
-#: whatsnew/3.12.rst:2075
+#: whatsnew/3.12.rst:2089
 msgid ":c:func:`PyType_FromSpec`"
 msgstr ""
 
-#: whatsnew/3.12.rst:2076
+#: whatsnew/3.12.rst:2090
 msgid ":c:func:`PyType_FromSpecWithBases`"
 msgstr ""
 
-#: whatsnew/3.12.rst:2077
+#: whatsnew/3.12.rst:2091
 msgid ":c:func:`PyType_FromModuleAndSpec`"
 msgstr ""
 
-#: whatsnew/3.12.rst:2079
+#: whatsnew/3.12.rst:2093
 msgid ""
 "Creating classes whose metaclass overrides :c:member:`~PyTypeObject.tp_new` "
 "is deprecated, and in Python 3.14+ it will be disallowed. Note that these "
@@ -4092,14 +4107,14 @@ msgid ""
 "initialization."
 msgstr ""
 
-#: whatsnew/3.12.rst:2084
+#: whatsnew/3.12.rst:2098
 msgid ""
 "Note that :c:func:`PyType_FromMetaclass` (added in Python 3.12) already "
 "disallows creating classes whose metaclass overrides ``tp_new`` (:meth:"
 "`~object.__new__` in Python)."
 msgstr ""
 
-#: whatsnew/3.12.rst:2088
+#: whatsnew/3.12.rst:2102
 msgid ""
 "Since ``tp_new`` overrides almost everything ``PyType_From*`` functions do, "
 "the two are incompatible with each other. The existing behavior -- ignoring "
@@ -4108,17 +4123,17 @@ msgid ""
 "general workaround. One of the following may work for you:"
 msgstr ""
 
-#: whatsnew/3.12.rst:2095
+#: whatsnew/3.12.rst:2109
 msgid "If you control the metaclass, avoid using ``tp_new`` in it:"
 msgstr ""
 
-#: whatsnew/3.12.rst:2097
+#: whatsnew/3.12.rst:2111
 msgid ""
 "If initialization can be skipped, it can be done in :c:member:`~PyTypeObject."
 "tp_init` instead."
 msgstr ""
 
-#: whatsnew/3.12.rst:2099
+#: whatsnew/3.12.rst:2113
 msgid ""
 "If the metaclass doesn't need to be instantiated from Python, set its "
 "``tp_new`` to ``NULL`` using the :c:macro:"
@@ -4126,20 +4141,20 @@ msgid ""
 "``PyType_From*`` functions."
 msgstr ""
 
-#: whatsnew/3.12.rst:2104
+#: whatsnew/3.12.rst:2118
 msgid ""
 "Avoid ``PyType_From*`` functions: if you don't need C-specific features "
 "(slots or setting the instance size), create types by :ref:`calling <call>` "
 "the metaclass."
 msgstr ""
 
-#: whatsnew/3.12.rst:2108
+#: whatsnew/3.12.rst:2122
 msgid ""
 "If you *know* the ``tp_new`` can be skipped safely, filter the deprecation "
 "warning out using :func:`warnings.catch_warnings` from Python."
 msgstr ""
 
-#: whatsnew/3.12.rst:2111
+#: whatsnew/3.12.rst:2125
 msgid ""
 ":c:var:`PyOS_InputHook` and :c:var:`PyOS_ReadlineFunctionPointer` are no "
 "longer called in :ref:`subinterpreters <sub-interpreter-support>`. This is "
@@ -4147,14 +4162,14 @@ msgid ""
 "callbacks have no way of recovering extension module state)."
 msgstr ""
 
-#: whatsnew/3.12.rst:2116
+#: whatsnew/3.12.rst:2130
 msgid ""
 "This also avoids situations where extensions may find themselves running in "
 "a subinterpreter that they don't support (or haven't yet been loaded in). "
 "See :gh:`104668` for more info."
 msgstr ""
 
-#: whatsnew/3.12.rst:2120
+#: whatsnew/3.12.rst:2134
 msgid ""
 ":c:struct:`PyLongObject` has had its internals changed for better "
 "performance. Although the internals of :c:struct:`PyLongObject` are private, "
@@ -4165,15 +4180,15 @@ msgid ""
 "a single machine word:"
 msgstr ""
 
-#: whatsnew/3.12.rst:2128
+#: whatsnew/3.12.rst:2142
 msgid ":c:func:`PyUnstable_Long_IsCompact`"
 msgstr ""
 
-#: whatsnew/3.12.rst:2129
+#: whatsnew/3.12.rst:2143
 msgid ":c:func:`PyUnstable_Long_CompactValue`"
 msgstr ""
 
-#: whatsnew/3.12.rst:2131
+#: whatsnew/3.12.rst:2145
 msgid ""
 "Custom allocators, set via :c:func:`PyMem_SetAllocator`, are now required to "
 "be thread-safe, regardless of memory domain.  Allocators that don't have "
@@ -4182,7 +4197,7 @@ msgid ""
 "create a new GitHub issue and CC ``@ericsnowcurrently``."
 msgstr ""
 
-#: whatsnew/3.12.rst:2141
+#: whatsnew/3.12.rst:2155
 msgid ""
 "In accordance with :pep:`699`, the ``ma_version_tag`` field in :c:type:"
 "`PyDictObject` is deprecated for extension modules. Accessing this field "
@@ -4191,215 +4206,215 @@ msgid ""
 "PEP by Ken Jin.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:2146
+#: whatsnew/3.12.rst:2160
 msgid "Deprecate global configuration variable:"
 msgstr ""
 
-#: whatsnew/3.12.rst:2148
+#: whatsnew/3.12.rst:2162
 msgid ":c:var:`Py_DebugFlag`: use :c:member:`PyConfig.parser_debug`"
 msgstr ""
 
-#: whatsnew/3.12.rst:2149
+#: whatsnew/3.12.rst:2163
 msgid ":c:var:`Py_VerboseFlag`: use :c:member:`PyConfig.verbose`"
 msgstr ""
 
-#: whatsnew/3.12.rst:2150
+#: whatsnew/3.12.rst:2164
 msgid ":c:var:`Py_QuietFlag`: use :c:member:`PyConfig.quiet`"
 msgstr ""
 
-#: whatsnew/3.12.rst:2151
+#: whatsnew/3.12.rst:2165
 msgid ":c:var:`Py_InteractiveFlag`: use :c:member:`PyConfig.interactive`"
 msgstr ""
 
-#: whatsnew/3.12.rst:2152
+#: whatsnew/3.12.rst:2166
 msgid ":c:var:`Py_InspectFlag`: use :c:member:`PyConfig.inspect`"
 msgstr ""
 
-#: whatsnew/3.12.rst:2153
+#: whatsnew/3.12.rst:2167
 msgid ":c:var:`Py_OptimizeFlag`: use :c:member:`PyConfig.optimization_level`"
 msgstr ""
 
-#: whatsnew/3.12.rst:2154
+#: whatsnew/3.12.rst:2168
 msgid ":c:var:`Py_NoSiteFlag`: use :c:member:`PyConfig.site_import`"
 msgstr ""
 
-#: whatsnew/3.12.rst:2155
+#: whatsnew/3.12.rst:2169
 msgid ":c:var:`Py_BytesWarningFlag`: use :c:member:`PyConfig.bytes_warning`"
 msgstr ""
 
-#: whatsnew/3.12.rst:2156
+#: whatsnew/3.12.rst:2170
 msgid ":c:var:`Py_FrozenFlag`: use :c:member:`PyConfig.pathconfig_warnings`"
 msgstr ""
 
-#: whatsnew/3.12.rst:2157
+#: whatsnew/3.12.rst:2171
 msgid ""
 ":c:var:`Py_IgnoreEnvironmentFlag`: use :c:member:`PyConfig.use_environment`"
 msgstr ""
 
-#: whatsnew/3.12.rst:2158
+#: whatsnew/3.12.rst:2172
 msgid ""
 ":c:var:`Py_DontWriteBytecodeFlag`: use :c:member:`PyConfig.write_bytecode`"
 msgstr ""
 
-#: whatsnew/3.12.rst:2159
+#: whatsnew/3.12.rst:2173
 msgid ""
 ":c:var:`Py_NoUserSiteDirectory`: use :c:member:`PyConfig.user_site_directory`"
 msgstr ""
 
-#: whatsnew/3.12.rst:2160
+#: whatsnew/3.12.rst:2174
 msgid ""
 ":c:var:`Py_UnbufferedStdioFlag`: use :c:member:`PyConfig.buffered_stdio`"
 msgstr ""
 
-#: whatsnew/3.12.rst:2161
+#: whatsnew/3.12.rst:2175
 msgid ""
 ":c:var:`Py_HashRandomizationFlag`: use :c:member:`PyConfig.use_hash_seed` "
 "and :c:member:`PyConfig.hash_seed`"
 msgstr ""
 
-#: whatsnew/3.12.rst:2163
+#: whatsnew/3.12.rst:2177
 msgid ":c:var:`Py_IsolatedFlag`: use :c:member:`PyConfig.isolated`"
 msgstr ""
 
-#: whatsnew/3.12.rst:2164
+#: whatsnew/3.12.rst:2178
 msgid ""
 ":c:var:`Py_LegacyWindowsFSEncodingFlag`: use :c:member:`PyPreConfig."
 "legacy_windows_fs_encoding`"
 msgstr ""
 
-#: whatsnew/3.12.rst:2165
+#: whatsnew/3.12.rst:2179
 msgid ""
 ":c:var:`Py_LegacyWindowsStdioFlag`: use :c:member:`PyConfig."
 "legacy_windows_stdio`"
 msgstr ""
 
-#: whatsnew/3.12.rst:2166
+#: whatsnew/3.12.rst:2180
 msgid ""
 ":c:var:`!Py_FileSystemDefaultEncoding`: use :c:member:`PyConfig."
 "filesystem_encoding`"
 msgstr ""
 
-#: whatsnew/3.12.rst:2167
+#: whatsnew/3.12.rst:2181
 msgid ""
 ":c:var:`!Py_HasFileSystemDefaultEncoding`: use :c:member:`PyConfig."
 "filesystem_encoding`"
 msgstr ""
 
-#: whatsnew/3.12.rst:2168
+#: whatsnew/3.12.rst:2182
 msgid ""
 ":c:var:`!Py_FileSystemDefaultEncodeErrors`: use :c:member:`PyConfig."
 "filesystem_errors`"
 msgstr ""
 
-#: whatsnew/3.12.rst:2169
+#: whatsnew/3.12.rst:2183
 msgid ""
 ":c:var:`!Py_UTF8Mode`: use :c:member:`PyPreConfig.utf8_mode` (see :c:func:"
 "`Py_PreInitialize`)"
 msgstr ""
 
-#: whatsnew/3.12.rst:2171
+#: whatsnew/3.12.rst:2185
 msgid ""
 "The :c:func:`Py_InitializeFromConfig` API should be used with :c:type:"
 "`PyConfig` instead. (Contributed by Victor Stinner in :gh:`77782`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:2175
+#: whatsnew/3.12.rst:2189
 msgid ""
 "Creating :c:data:`immutable types <Py_TPFLAGS_IMMUTABLETYPE>` with mutable "
 "bases is deprecated and will be disabled in Python 3.14. (:gh:`95388`)"
 msgstr ""
 
-#: whatsnew/3.12.rst:2178
+#: whatsnew/3.12.rst:2192
 msgid ""
 "The :file:`structmember.h` header is deprecated, though it continues to be "
 "available and there are no plans to remove it."
 msgstr ""
 
-#: whatsnew/3.12.rst:2181
+#: whatsnew/3.12.rst:2195
 msgid ""
 "Its contents are now available just by including :file:`Python.h`, with a "
 "``Py`` prefix added if it was missing:"
 msgstr ""
 
-#: whatsnew/3.12.rst:2184
+#: whatsnew/3.12.rst:2198
 msgid ""
 ":c:struct:`PyMemberDef`, :c:func:`PyMember_GetOne` and :c:func:"
 "`PyMember_SetOne`"
 msgstr ""
 
-#: whatsnew/3.12.rst:2186
+#: whatsnew/3.12.rst:2200
 msgid ""
 "Type macros like :c:macro:`Py_T_INT`, :c:macro:`Py_T_DOUBLE`, etc. "
 "(previously ``T_INT``, ``T_DOUBLE``, etc.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:2188
+#: whatsnew/3.12.rst:2202
 msgid ""
 "The flags :c:macro:`Py_READONLY` (previously ``READONLY``) and :c:macro:"
 "`Py_AUDIT_READ` (previously all uppercase)"
 msgstr ""
 
-#: whatsnew/3.12.rst:2191
+#: whatsnew/3.12.rst:2205
 msgid "Several items are not exposed from :file:`Python.h`:"
 msgstr ""
 
-#: whatsnew/3.12.rst:2193
+#: whatsnew/3.12.rst:2207
 msgid ":c:macro:`T_OBJECT` (use :c:macro:`Py_T_OBJECT_EX`)"
 msgstr ""
 
-#: whatsnew/3.12.rst:2194
+#: whatsnew/3.12.rst:2208
 msgid ":c:macro:`T_NONE` (previously undocumented, and pretty quirky)"
 msgstr ""
 
-#: whatsnew/3.12.rst:2195
+#: whatsnew/3.12.rst:2209
 msgid "The macro ``WRITE_RESTRICTED`` which does nothing."
 msgstr ""
 
-#: whatsnew/3.12.rst:2196
+#: whatsnew/3.12.rst:2210
 msgid ""
 "The macros ``RESTRICTED`` and ``READ_RESTRICTED``, equivalents of :c:macro:"
 "`Py_AUDIT_READ`."
 msgstr ""
 
-#: whatsnew/3.12.rst:2198
+#: whatsnew/3.12.rst:2212
 msgid ""
 "In some configurations, ``<stddef.h>`` is not included from :file:`Python."
 "h`. It should be included manually when using ``offsetof()``."
 msgstr ""
 
-#: whatsnew/3.12.rst:2201
+#: whatsnew/3.12.rst:2215
 msgid ""
 "The deprecated header continues to provide its original contents under the "
 "original names. Your old code can stay unchanged, unless the extra include "
 "and non-namespaced macros bother you greatly."
 msgstr ""
 
-#: whatsnew/3.12.rst:2206
+#: whatsnew/3.12.rst:2220
 msgid ""
 "(Contributed in :gh:`47146` by Petr Viktorin, based on earlier work by "
 "Alexander Belopolsky and Matthias Braun.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:2209
+#: whatsnew/3.12.rst:2223
 msgid ""
 ":c:func:`PyErr_Fetch` and :c:func:`PyErr_Restore` are deprecated. Use :c:"
 "func:`PyErr_GetRaisedException` and :c:func:`PyErr_SetRaisedException` "
 "instead. (Contributed by Mark Shannon in :gh:`101578`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:2214
+#: whatsnew/3.12.rst:2228
 msgid ""
 ":c:func:`!PyErr_Display` is deprecated. Use :c:func:`PyErr_DisplayException` "
 "instead. (Contributed by Irit Katriel in :gh:`102755`)."
 msgstr ""
 
-#: whatsnew/3.12.rst:2217
+#: whatsnew/3.12.rst:2231
 msgid ""
 "``_PyErr_ChainExceptions`` is deprecated. Use ``_PyErr_ChainExceptions1`` "
 "instead. (Contributed by Irit Katriel in :gh:`102192`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:2220
+#: whatsnew/3.12.rst:2234
 msgid ""
 "Using :c:func:`PyType_FromSpec`, :c:func:`PyType_FromSpecWithBases` or :c:"
 "func:`PyType_FromModuleAndSpec` to create a class whose metaclass overrides :"
@@ -4739,86 +4754,86 @@ msgstr ""
 msgid ":c:func:`PyThread_ReInitTLS`: Unneeded since Python 3.7."
 msgstr ""
 
-#: whatsnew/3.12.rst:2236
+#: whatsnew/3.12.rst:2250
 msgid ""
 "Remove the :file:`token.h` header file. There was never any public tokenizer "
 "C API. The :file:`token.h` header file was only designed to be used by "
 "Python internals. (Contributed by Victor Stinner in :gh:`92651`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:2241
+#: whatsnew/3.12.rst:2255
 msgid "Legacy Unicode APIs have been removed. See :pep:`623` for detail."
 msgstr ""
 
-#: whatsnew/3.12.rst:2243
+#: whatsnew/3.12.rst:2257
 msgid ":c:macro:`!PyUnicode_WCHAR_KIND`"
 msgstr ""
 
-#: whatsnew/3.12.rst:2244
+#: whatsnew/3.12.rst:2258
 msgid ":c:func:`!PyUnicode_AS_UNICODE`"
 msgstr ""
 
-#: whatsnew/3.12.rst:2245
+#: whatsnew/3.12.rst:2259
 msgid ":c:func:`!PyUnicode_AsUnicode`"
 msgstr ""
 
-#: whatsnew/3.12.rst:2246
+#: whatsnew/3.12.rst:2260
 msgid ":c:func:`!PyUnicode_AsUnicodeAndSize`"
 msgstr ""
 
-#: whatsnew/3.12.rst:2247
+#: whatsnew/3.12.rst:2261
 msgid ":c:func:`!PyUnicode_AS_DATA`"
 msgstr ""
 
-#: whatsnew/3.12.rst:2248
+#: whatsnew/3.12.rst:2262
 msgid ":c:func:`!PyUnicode_FromUnicode`"
 msgstr ""
 
-#: whatsnew/3.12.rst:2249
+#: whatsnew/3.12.rst:2263
 msgid ":c:func:`!PyUnicode_GET_SIZE`"
 msgstr ""
 
-#: whatsnew/3.12.rst:2250
+#: whatsnew/3.12.rst:2264
 msgid ":c:func:`!PyUnicode_GetSize`"
 msgstr ""
 
-#: whatsnew/3.12.rst:2251
+#: whatsnew/3.12.rst:2265
 msgid ":c:func:`!PyUnicode_GET_DATA_SIZE`"
 msgstr ""
 
-#: whatsnew/3.12.rst:2253
+#: whatsnew/3.12.rst:2267
 msgid ""
 "Remove the ``PyUnicode_InternImmortal()`` function macro. (Contributed by "
 "Victor Stinner in :gh:`85858`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:2257
+#: whatsnew/3.12.rst:2271
 msgid "Notable changes in 3.12.4"
 msgstr ""
 
-#: whatsnew/3.12.rst:2260
+#: whatsnew/3.12.rst:2274
 msgid "ipaddress"
 msgstr ""
 
-#: whatsnew/3.12.rst:2262
+#: whatsnew/3.12.rst:2276
 msgid ""
 "Fixed ``is_global`` and ``is_private`` behavior in ``IPv4Address``, "
 "``IPv6Address``, ``IPv4Network`` and ``IPv6Network``."
 msgstr ""
 
-#: whatsnew/3.12.rst:2267
+#: whatsnew/3.12.rst:2281
 msgid "Notable changes in 3.12.5"
 msgstr ""
 
-#: whatsnew/3.12.rst:2287
+#: whatsnew/3.12.rst:2301
 msgid "email"
 msgstr ""
 
-#: whatsnew/3.12.rst:2273
+#: whatsnew/3.12.rst:2287
 msgid "Headers with embedded newlines are now quoted on output."
 msgstr ""
 
-#: whatsnew/3.12.rst:2275
+#: whatsnew/3.12.rst:2289
 msgid ""
 "The :mod:`~email.generator` will now refuse to serialize (write) headers "
 "that are improperly folded or delimited, such that they would be parsed as "
@@ -4828,11 +4843,11 @@ msgid ""
 "in :gh:`121650`.)"
 msgstr ""
 
-#: whatsnew/3.12.rst:2284
+#: whatsnew/3.12.rst:2298
 msgid "Notable changes in 3.12.6"
 msgstr ""
 
-#: whatsnew/3.12.rst:2289
+#: whatsnew/3.12.rst:2303
 msgid ""
 ":func:`email.utils.getaddresses` and :func:`email.utils.parseaddr` now "
 "return ``('', '')`` 2-tuples in more situations where invalid email "
@@ -4843,3 +4858,14 @@ msgid ""
 "check if the *strict* paramater is available. (Contributed by Thomas Dwyer "
 "and Victor Stinner for :gh:`102988` to improve the CVE-2023-27043 fix.)"
 msgstr ""
+
+#: whatsnew/3.12.rst:2315
+msgid "Notable changes in 3.12.8"
+msgstr ""
+
+#: whatsnew/3.12.rst:2320
+msgid ""
+"The previously undocumented special function :func:`sys.getobjects`, which "
+"only exists in specialized builds of Python, may now return objects from "
+"other interpreters than the one it's called in."
+msgstr ""
diff --git a/whatsnew/3.3.po b/whatsnew/3.3.po
index ec1f61c2c..bf42bf1fb 100644
--- a/whatsnew/3.3.po
+++ b/whatsnew/3.3.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -1831,8 +1831,8 @@ msgstr ""
 
 #: whatsnew/3.3.rst:1150
 msgid ""
-"In the context templates (:class:`~decimal.DefaultContext`, :class:`~decimal."
-"BasicContext` and :class:`~decimal.ExtendedContext`) the magnitude of :attr:"
+"In the context templates (:const:`~decimal.DefaultContext`, :const:`~decimal."
+"BasicContext` and :const:`~decimal.ExtendedContext`) the magnitude of :attr:"
 "`~decimal.Context.Emax` and :attr:`~decimal.Context.Emin` has changed to "
 "``999999``."
 msgstr ""
diff --git a/whatsnew/3.4.po b/whatsnew/3.4.po
index 81dff322e..340a1d384 100644
--- a/whatsnew/3.4.po
+++ b/whatsnew/3.4.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -1087,7 +1087,7 @@ msgid ""
 "LOAD_CONST (100)\n"
 "BINARY_ADD (23)\n"
 "RETURN_VALUE (83)\n"
-">>> bytecode.dis().splitlines()       \n"
+">>> bytecode.dis().splitlines()\n"
 "['  1           0 LOAD_FAST                0 (x)',\n"
 " '      -->     3 LOAD_CONST               1 (1)',\n"
 " '              6 BINARY_ADD',\n"
@@ -1428,7 +1428,7 @@ msgstr ""
 
 #: whatsnew/3.4.rst:997
 msgid ""
-":mod:`importlib.util` now has a :data:`~importlib.util.MAGIC_NUMBER` "
+":mod:`importlib.util` now has a :const:`~importlib.util.MAGIC_NUMBER` "
 "attribute providing access to the bytecode version number.  This replaces "
 "the :func:`!get_magic` function in the deprecated :mod:`!imp` module. "
 "(Contributed by Brett Cannon in :issue:`18192`.)"
@@ -2797,7 +2797,7 @@ msgstr ""
 
 #: whatsnew/3.4.rst:1982
 msgid ""
-"A new opcode, :opcode:`LOAD_CLASSDEREF`, has been added to fix a bug in the "
+"A new opcode, :opcode:`!LOAD_CLASSDEREF`, has been added to fix a bug in the "
 "loading of free variables in class bodies that could be triggered by certain "
 "uses of :ref:`__prepare__ <prepare>`.  (Contributed by Benjamin Peterson in :"
 "issue:`17853`.)"
diff --git a/whatsnew/3.6.po b/whatsnew/3.6.po
index 9306695d5..ceef5fd75 100644
--- a/whatsnew/3.6.po
+++ b/whatsnew/3.6.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -3360,10 +3360,10 @@ msgstr ""
 #: whatsnew/3.6.rst:2378
 msgid ""
 "The function call opcodes have been heavily reworked for better performance "
-"and simpler implementation. The :opcode:`MAKE_FUNCTION`, :opcode:"
-"`CALL_FUNCTION`, :opcode:`CALL_FUNCTION_KW` and :opcode:"
-"`BUILD_MAP_UNPACK_WITH_CALL` opcodes have been modified, the new :opcode:"
-"`CALL_FUNCTION_EX` and :opcode:`BUILD_TUPLE_UNPACK_WITH_CALL` have been "
+"and simpler implementation. The :opcode:`MAKE_FUNCTION`, :opcode:`!"
+"CALL_FUNCTION`, :opcode:`!CALL_FUNCTION_KW` and :opcode:`!"
+"BUILD_MAP_UNPACK_WITH_CALL` opcodes have been modified, the new :opcode:"
+"`CALL_FUNCTION_EX` and :opcode:`!BUILD_TUPLE_UNPACK_WITH_CALL` have been "
 "added, and ``CALL_FUNCTION_VAR``, ``CALL_FUNCTION_VAR_KW`` and "
 "``MAKE_CLOSURE`` opcodes have been removed. (Contributed by Demur Rumed in :"
 "issue:`27095`, and Serhiy Storchaka in :issue:`27213`, :issue:`28257`.)"
@@ -3371,7 +3371,7 @@ msgstr ""
 
 #: whatsnew/3.6.rst:2389
 msgid ""
-"The new :opcode:`SETUP_ANNOTATIONS` and :opcode:`STORE_ANNOTATION` opcodes "
+"The new :opcode:`SETUP_ANNOTATIONS` and :opcode:`!STORE_ANNOTATION` opcodes "
 "have been added to support the new :term:`variable annotation` syntax. "
 "(Contributed by Ivan Levkivskyi in :issue:`27985`.)"
 msgstr ""
diff --git a/whatsnew/3.7.po b/whatsnew/3.7.po
index 9e25487ba..acedec573 100644
--- a/whatsnew/3.7.po
+++ b/whatsnew/3.7.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -3531,14 +3531,14 @@ msgstr ""
 
 #: whatsnew/3.7.rst:2479
 msgid ""
-"There are two new opcodes: :opcode:`LOAD_METHOD` and :opcode:`CALL_METHOD`. "
+"There are two new opcodes: :opcode:`LOAD_METHOD` and :opcode:`!CALL_METHOD`. "
 "(Contributed by Yury Selivanov and INADA Naoki in :issue:`26110`.)"
 msgstr ""
 
 #: whatsnew/3.7.rst:2482
 msgid ""
-"The :opcode:`STORE_ANNOTATION` opcode has been removed. (Contributed by Mark "
-"Shannon in :issue:`32550`.)"
+"The :opcode:`!STORE_ANNOTATION` opcode has been removed. (Contributed by "
+"Mark Shannon in :issue:`32550`.)"
 msgstr ""
 
 #: whatsnew/3.7.rst:2489
diff --git a/whatsnew/3.8.po b/whatsnew/3.8.po
index c22cb12ce..f72a18f31 100644
--- a/whatsnew/3.8.po
+++ b/whatsnew/3.8.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Python 3.12\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-11-01 00:21+0000\n"
+"POT-Creation-Date: 2025-05-01 00:24+0000\n"
 "PO-Revision-Date: 2023-02-03 17:30+0300\n"
 "Last-Translator: \n"
 "Language-Team: TURKISH <python.docs.tr@gmail.com>\n"
@@ -1774,7 +1774,7 @@ msgstr "kayıt tutma"
 #: whatsnew/3.8.rst:939
 #, fuzzy
 msgid ""
-"Added a *force* keyword argument to :func:`logging.basicConfig` When set to "
+"Added a *force* keyword argument to :func:`logging.basicConfig`. When set to "
 "true, any existing handlers attached to the root logger are removed and "
 "closed before carrying out the configuration specified by the other "
 "arguments."
@@ -4284,12 +4284,13 @@ msgstr ""
 "çağırmak için açık talimatlar yayınlar."
 
 #: whatsnew/3.8.rst:2155
+#, fuzzy
 msgid ""
-"Removed opcodes :opcode:`BREAK_LOOP`, :opcode:`CONTINUE_LOOP`, :opcode:"
-"`SETUP_LOOP` and :opcode:`SETUP_EXCEPT`.  Added new opcodes :opcode:"
-"`ROT_FOUR`, :opcode:`BEGIN_FINALLY`, :opcode:`CALL_FINALLY` and :opcode:"
-"`POP_FINALLY`.  Changed the behavior of :opcode:`END_FINALLY` and :opcode:"
-"`WITH_CLEANUP_START`."
+"Removed opcodes :opcode:`!BREAK_LOOP`, :opcode:`!CONTINUE_LOOP`, :opcode:`!"
+"SETUP_LOOP` and :opcode:`!SETUP_EXCEPT`.  Added new opcodes :opcode:`!"
+"ROT_FOUR`, :opcode:`!BEGIN_FINALLY`, :opcode:`!CALL_FINALLY` and :opcode:`!"
+"POP_FINALLY`.  Changed the behavior of :opcode:`!END_FINALLY` and :opcode:`!"
+"WITH_CLEANUP_START`."
 msgstr ""
 ":opcode:`BREAK_LOOP`, :opcode:`CONTINUE_LOOP`, :opcode:`SETUP_LOOP` ve :"
 "opcode:`SETUP_EXCEPT` kodları kaldırıldı.  Yeni :opcode:`ROT_FOUR`, :opcode:"