diff --git a/CVE-2025-4516-DecodeError-handler.patch b/CVE-2025-4516-DecodeError-handler.patch new file mode 100644 index 0000000..e3cd31a --- /dev/null +++ b/CVE-2025-4516-DecodeError-handler.patch @@ -0,0 +1,425 @@ +From 8b528cacbbde60504f6ac62784d04889d285f18b Mon Sep 17 00:00:00 2001 +From: Serhiy Storchaka +Date: Tue, 20 May 2025 15:46:57 +0300 +Subject: [PATCH] [3.10] gh-133767: Fix use-after-free in the unicode-escape + decoder with an error handler (GH-129648) (GH-133944) + +If the error handler is used, a new bytes object is created to set as +the object attribute of UnicodeDecodeError, and that bytes object then +replaces the original data. A pointer to the decoded data will became invalid +after destroying that temporary bytes object. So we need other way to return +the first invalid escape from _PyUnicode_DecodeUnicodeEscapeInternal(). + +_PyBytes_DecodeEscape() does not have such issue, because it does not +use the error handlers registry, but it should be changed for compatibility +with _PyUnicode_DecodeUnicodeEscapeInternal(). +(cherry picked from commit 9f69a58623bd01349a18ba0c7a9cb1dad6a51e8e) +(cherry picked from commit 6279eb8c076d89d3739a6edb393e43c7929b429d) +(cherry picked from commit a75953b347716fff694aa59a7c7c2489fa50d1f5) +(cherry picked from commit 0c33e5baedf18ebcb04bc41dff7cfc614d5ea5fe) + +Co-authored-by: Serhiy Storchaka +--- + Include/cpython/bytesobject.h | 4 + Include/cpython/unicodeobject.h | 13 ++ + Lib/test/test_codeccallbacks.py | 37 ++++++++ + Lib/test/test_codecs.py | 39 ++++++-- + Misc/NEWS.d/next/Security/2025-05-09-20-22-54.gh-issue-133767.kN2i3Q.rst | 2 + Objects/bytesobject.c | 40 ++++++-- + Objects/unicodeobject.c | 45 +++++++--- + Parser/string_parser.c | 24 +++-- + 8 files changed, 164 insertions(+), 40 deletions(-) + create mode 100644 Misc/NEWS.d/next/Security/2025-05-09-20-22-54.gh-issue-133767.kN2i3Q.rst + +--- a/Include/cpython/bytesobject.h ++++ b/Include/cpython/bytesobject.h +@@ -25,6 +25,10 @@ PyAPI_FUNC(PyObject*) _PyBytes_FromHex( + int use_bytearray); + + /* Helper for PyBytes_DecodeEscape that detects invalid escape chars. */ ++PyAPI_FUNC(PyObject*) _PyBytes_DecodeEscape2(const char *, Py_ssize_t, ++ const char *, ++ int *, const char **); ++// Export for binary compatibility. + PyAPI_FUNC(PyObject *) _PyBytes_DecodeEscape(const char *, Py_ssize_t, + const char *, const char **); + +--- a/Include/cpython/unicodeobject.h ++++ b/Include/cpython/unicodeobject.h +@@ -844,6 +844,19 @@ PyAPI_FUNC(PyObject*) _PyUnicode_DecodeU + + /* Helper for PyUnicode_DecodeUnicodeEscape that detects invalid escape + chars. */ ++PyAPI_FUNC(PyObject*) _PyUnicode_DecodeUnicodeEscapeInternal2( ++ const char *string, /* Unicode-Escape encoded string */ ++ Py_ssize_t length, /* size of string */ ++ const char *errors, /* error handling */ ++ Py_ssize_t *consumed, /* bytes consumed */ ++ int *first_invalid_escape_char, /* on return, if not -1, contain the first ++ invalid escaped char (<= 0xff) or invalid ++ octal escape (> 0xff) in string. */ ++ const char **first_invalid_escape_ptr); /* on return, if not NULL, may ++ point to the first invalid escaped ++ char in string. ++ May be NULL if errors is not NULL. */ ++// Export for binary compatibility. + PyAPI_FUNC(PyObject*) _PyUnicode_DecodeUnicodeEscapeInternal( + const char *string, /* Unicode-Escape encoded string */ + Py_ssize_t length, /* size of string */ +--- a/Lib/test/test_codeccallbacks.py ++++ b/Lib/test/test_codeccallbacks.py +@@ -1,6 +1,7 @@ + import codecs + import html.entities + import itertools ++import re + import sys + import unicodedata + import unittest +@@ -1124,7 +1125,7 @@ class CodecCallbackTest(unittest.TestCas + text = 'abcghi'*n + text.translate(charmap) + +- def test_mutatingdecodehandler(self): ++ def test_mutating_decode_handler(self): + baddata = [ + ("ascii", b"\xff"), + ("utf-7", b"++"), +@@ -1159,6 +1160,40 @@ class CodecCallbackTest(unittest.TestCas + for (encoding, data) in baddata: + self.assertEqual(data.decode(encoding, "test.mutating"), "\u4242") + ++ def test_mutating_decode_handler_unicode_escape(self): ++ decode = codecs.unicode_escape_decode ++ def mutating(exc): ++ if isinstance(exc, UnicodeDecodeError): ++ r = data.get(exc.object[:exc.end]) ++ if r is not None: ++ exc.object = r[0] + exc.object[exc.end:] ++ return ('\u0404', r[1]) ++ raise AssertionError("don't know how to handle %r" % exc) ++ ++ codecs.register_error('test.mutating2', mutating) ++ data = { ++ br'\x0': (b'\\', 0), ++ br'\x3': (b'xxx\\', 3), ++ br'\x5': (b'x\\', 1), ++ } ++ def check(input, expected, msg): ++ with self.assertWarns(DeprecationWarning) as cm: ++ self.assertEqual(decode(input, 'test.mutating2'), (expected, len(input))) ++ self.assertIn(msg, str(cm.warning)) ++ ++ check(br'\x0n\z', '\u0404\n\\z', r"invalid escape sequence '\z'") ++ check(br'\x0z', '\u0404\\z', r"invalid escape sequence '\z'") ++ ++ check(br'\x3n\zr', '\u0404\n\\zr', r"invalid escape sequence '\z'") ++ check(br'\x3zr', '\u0404\\zr', r"invalid escape sequence '\z'") ++ check(br'\x3z5', '\u0404\\z5', r"invalid escape sequence '\z'") ++ check(memoryview(br'\x3z5x')[:-1], '\u0404\\z5', r"invalid escape sequence '\z'") ++ check(memoryview(br'\x3z5xy')[:-2], '\u0404\\z5', r"invalid escape sequence '\z'") ++ ++ check(br'\x5n\z', '\u0404\n\\z', r"invalid escape sequence '\z'") ++ check(br'\x5z', '\u0404\\z', r"invalid escape sequence '\z'") ++ check(memoryview(br'\x5zy')[:-1], '\u0404\\z', r"invalid escape sequence '\z'") ++ + # issue32583 + def test_crashing_decode_handler(self): + # better generating one more character to fill the extra space slot +--- a/Lib/test/test_codecs.py ++++ b/Lib/test/test_codecs.py +@@ -1181,20 +1181,32 @@ class EscapeDecodeTest(unittest.TestCase + check(br"[\501]", b"[A]") + check(br"[\x41]", b"[A]") + check(br"[\x410]", b"[A0]") ++ ++ def test_warnings(self): ++ decode = codecs.escape_decode ++ check = coding_checker(self, decode) + for i in range(97, 123): + b = bytes([i]) + if b not in b'abfnrtvx': +- with self.assertWarns(DeprecationWarning): ++ with self.assertWarnsRegex(DeprecationWarning, ++ r"invalid escape sequence '\\%c'" % i): + check(b"\\" + b, b"\\" + b) +- with self.assertWarns(DeprecationWarning): ++ with self.assertWarnsRegex(DeprecationWarning, ++ r"invalid escape sequence '\\%c'" % (i-32)): + check(b"\\" + b.upper(), b"\\" + b.upper()) +- with self.assertWarns(DeprecationWarning): ++ with self.assertWarnsRegex(DeprecationWarning, ++ r"invalid escape sequence '\\8'"): + check(br"\8", b"\\8") + with self.assertWarns(DeprecationWarning): + check(br"\9", b"\\9") +- with self.assertWarns(DeprecationWarning): ++ with self.assertWarnsRegex(DeprecationWarning, ++ r"invalid escape sequence '\\\xfa'") as cm: + check(b"\\\xfa", b"\\\xfa") + ++ with self.assertWarnsRegex(DeprecationWarning, ++ r"invalid escape sequence '\\z'"): ++ self.assertEqual(decode(br'\x\z', 'ignore'), (b'\\z', 4)) ++ + def test_errors(self): + decode = codecs.escape_decode + self.assertRaises(ValueError, decode, br"\x") +@@ -2408,20 +2420,31 @@ class UnicodeEscapeTest(ReadTest, unitte + check(br"[\x410]", "[A0]") + check(br"\u20ac", "\u20ac") + check(br"\U0001d120", "\U0001d120") ++ ++ def test_decode_warnings(self): ++ decode = codecs.unicode_escape_decode ++ check = coding_checker(self, decode) + for i in range(97, 123): + b = bytes([i]) + if b not in b'abfnrtuvx': +- with self.assertWarns(DeprecationWarning): ++ with self.assertWarnsRegex(DeprecationWarning, ++ r"invalid escape sequence '\\%c'" % i): + check(b"\\" + b, "\\" + chr(i)) + if b.upper() not in b'UN': +- with self.assertWarns(DeprecationWarning): ++ with self.assertWarnsRegex(DeprecationWarning, ++ r"invalid escape sequence '\\%c'" % (i-32)): + check(b"\\" + b.upper(), "\\" + chr(i-32)) +- with self.assertWarns(DeprecationWarning): ++ with self.assertWarnsRegex(DeprecationWarning, ++ r"invalid escape sequence '\\8'"): + check(br"\8", "\\8") + with self.assertWarns(DeprecationWarning): + check(br"\9", "\\9") +- with self.assertWarns(DeprecationWarning): ++ with self.assertWarnsRegex(DeprecationWarning, ++ r"invalid escape sequence '\\\xfa'") as cm: + check(b"\\\xfa", "\\\xfa") ++ with self.assertWarnsRegex(DeprecationWarning, ++ r"invalid escape sequence '\\z'"): ++ self.assertEqual(decode(br'\x\z', 'ignore'), ('\\z', 4)) + + def test_decode_errors(self): + decode = codecs.unicode_escape_decode +--- /dev/null ++++ b/Misc/NEWS.d/next/Security/2025-05-09-20-22-54.gh-issue-133767.kN2i3Q.rst +@@ -0,0 +1,2 @@ ++Fix use-after-free in the "unicode-escape" decoder with a non-"strict" error ++handler. +--- a/Objects/bytesobject.c ++++ b/Objects/bytesobject.c +@@ -1089,10 +1089,11 @@ _PyBytes_FormatEx(const char *format, Py + } + + /* Unescape a backslash-escaped string. */ +-PyObject *_PyBytes_DecodeEscape(const char *s, ++PyObject *_PyBytes_DecodeEscape2(const char *s, + Py_ssize_t len, + const char *errors, +- const char **first_invalid_escape) ++ int *first_invalid_escape_char, ++ const char **first_invalid_escape_ptr) + { + int c; + char *p; +@@ -1106,7 +1107,8 @@ PyObject *_PyBytes_DecodeEscape(const ch + return NULL; + writer.overallocate = 1; + +- *first_invalid_escape = NULL; ++ *first_invalid_escape_char = -1; ++ *first_invalid_escape_ptr = NULL; + + end = s + len; + while (s < end) { +@@ -1181,9 +1183,10 @@ PyObject *_PyBytes_DecodeEscape(const ch + break; + + default: +- if (*first_invalid_escape == NULL) { +- *first_invalid_escape = s-1; /* Back up one char, since we've +- already incremented s. */ ++ if (*first_invalid_escape_char == -1) { ++ *first_invalid_escape_char = (unsigned char)s[-1]; ++ /* Back up one char, since we've already incremented s. */ ++ *first_invalid_escape_ptr = s - 1; + } + *p++ = '\\'; + s--; +@@ -1197,21 +1200,36 @@ PyObject *_PyBytes_DecodeEscape(const ch + return NULL; + } + ++// Export for binary compatibility. ++PyObject *_PyBytes_DecodeEscape(const char *s, ++ Py_ssize_t len, ++ const char *errors, ++ const char **first_invalid_escape) ++{ ++ int first_invalid_escape_char; ++ return _PyBytes_DecodeEscape2( ++ s, len, errors, ++ &first_invalid_escape_char, ++ first_invalid_escape); ++} ++ + PyObject *PyBytes_DecodeEscape(const char *s, + Py_ssize_t len, + const char *errors, + Py_ssize_t Py_UNUSED(unicode), + const char *Py_UNUSED(recode_encoding)) + { +- const char* first_invalid_escape; +- PyObject *result = _PyBytes_DecodeEscape(s, len, errors, +- &first_invalid_escape); ++ int first_invalid_escape_char; ++ const char *first_invalid_escape_ptr; ++ PyObject *result = _PyBytes_DecodeEscape2(s, len, errors, ++ &first_invalid_escape_char, ++ &first_invalid_escape_ptr); + if (result == NULL) + return NULL; +- if (first_invalid_escape != NULL) { ++ if (first_invalid_escape_char != -1) { + if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1, + "invalid escape sequence '\\%c'", +- (unsigned char)*first_invalid_escape) < 0) { ++ first_invalid_escape_char) < 0) { + Py_DECREF(result); + return NULL; + } +--- a/Objects/unicodeobject.c ++++ b/Objects/unicodeobject.c +@@ -6432,20 +6432,23 @@ PyUnicode_AsUTF16String(PyObject *unicod + static _PyUnicode_Name_CAPI *ucnhash_capi = NULL; + + PyObject * +-_PyUnicode_DecodeUnicodeEscapeInternal(const char *s, ++_PyUnicode_DecodeUnicodeEscapeInternal2(const char *s, + Py_ssize_t size, + const char *errors, + Py_ssize_t *consumed, +- const char **first_invalid_escape) ++ int *first_invalid_escape_char, ++ const char **first_invalid_escape_ptr) + { + const char *starts = s; ++ const char *initial_starts = starts; + _PyUnicodeWriter writer; + const char *end; + PyObject *errorHandler = NULL; + PyObject *exc = NULL; + + // so we can remember if we've seen an invalid escape char or not +- *first_invalid_escape = NULL; ++ *first_invalid_escape_char = -1; ++ *first_invalid_escape_ptr = NULL; + + if (size == 0) { + if (consumed) { +@@ -6628,9 +6631,12 @@ _PyUnicode_DecodeUnicodeEscapeInternal(c + goto error; + + default: +- if (*first_invalid_escape == NULL) { +- *first_invalid_escape = s-1; /* Back up one char, since we've +- already incremented s. */ ++ if (*first_invalid_escape_char == -1) { ++ *first_invalid_escape_char = c; ++ if (starts == initial_starts) { ++ /* Back up one char, since we've already incremented s. */ ++ *first_invalid_escape_ptr = s - 1; ++ } + } + WRITE_ASCII_CHAR('\\'); + WRITE_CHAR(c); +@@ -6669,22 +6675,39 @@ _PyUnicode_DecodeUnicodeEscapeInternal(c + return NULL; + } + ++// Export for binary compatibility. ++PyObject * ++_PyUnicode_DecodeUnicodeEscapeInternal(const char *s, ++ Py_ssize_t size, ++ const char *errors, ++ Py_ssize_t *consumed, ++ const char **first_invalid_escape) ++{ ++ int first_invalid_escape_char; ++ return _PyUnicode_DecodeUnicodeEscapeInternal2( ++ s, size, errors, consumed, ++ &first_invalid_escape_char, ++ first_invalid_escape); ++} ++ + PyObject * + _PyUnicode_DecodeUnicodeEscapeStateful(const char *s, + Py_ssize_t size, + const char *errors, + Py_ssize_t *consumed) + { +- const char *first_invalid_escape; +- PyObject *result = _PyUnicode_DecodeUnicodeEscapeInternal(s, size, errors, ++ int first_invalid_escape_char; ++ const char *first_invalid_escape_ptr; ++ PyObject *result = _PyUnicode_DecodeUnicodeEscapeInternal2(s, size, errors, + consumed, +- &first_invalid_escape); ++ &first_invalid_escape_char, ++ &first_invalid_escape_ptr); + if (result == NULL) + return NULL; +- if (first_invalid_escape != NULL) { ++ if (first_invalid_escape_char != -1) { + if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1, + "invalid escape sequence '\\%c'", +- (unsigned char)*first_invalid_escape) < 0) { ++ first_invalid_escape_char) < 0) { + Py_DECREF(result); + return NULL; + } +--- a/Parser/string_parser.c ++++ b/Parser/string_parser.c +@@ -114,12 +114,15 @@ decode_unicode_with_escapes(Parser *pars + len = p - buf; + s = buf; + +- const char *first_invalid_escape; +- v = _PyUnicode_DecodeUnicodeEscapeInternal(s, len, NULL, NULL, &first_invalid_escape); ++ int first_invalid_escape_char; ++ const char *first_invalid_escape_ptr; ++ v = _PyUnicode_DecodeUnicodeEscapeInternal2(s, (Py_ssize_t)len, NULL, NULL, ++ &first_invalid_escape_char, ++ &first_invalid_escape_ptr); + +- if (v != NULL && first_invalid_escape != NULL) { +- if (warn_invalid_escape_sequence(parser, *first_invalid_escape, t) < 0) { +- /* We have not decref u before because first_invalid_escape points ++ if (v != NULL && first_invalid_escape_ptr != NULL) { ++ if (warn_invalid_escape_sequence(parser, *first_invalid_escape_ptr, t) < 0) { ++ /* We have not decref u before because first_invalid_escape_ptr points + inside u. */ + Py_XDECREF(u); + Py_DECREF(v); +@@ -133,14 +136,17 @@ decode_unicode_with_escapes(Parser *pars + static PyObject * + decode_bytes_with_escapes(Parser *p, const char *s, Py_ssize_t len, Token *t) + { +- const char *first_invalid_escape; +- PyObject *result = _PyBytes_DecodeEscape(s, len, NULL, &first_invalid_escape); ++ int first_invalid_escape_char; ++ const char *first_invalid_escape_ptr; ++ PyObject *result = _PyBytes_DecodeEscape2(s, len, NULL, ++ &first_invalid_escape_char, ++ &first_invalid_escape_ptr); + if (result == NULL) { + return NULL; + } + +- if (first_invalid_escape != NULL) { +- if (warn_invalid_escape_sequence(p, *first_invalid_escape, t) < 0) { ++ if (first_invalid_escape_ptr != NULL) { ++ if (warn_invalid_escape_sequence(p, *first_invalid_escape_ptr, t) < 0) { + Py_DECREF(result); + return NULL; + } diff --git a/gh-126572-test_ssl-no-stop-ThreadedEchoServer-OSError.patch b/gh-126572-test_ssl-no-stop-ThreadedEchoServer-OSError.patch index bea4eed..31a5cd2 100644 --- a/gh-126572-test_ssl-no-stop-ThreadedEchoServer-OSError.patch +++ b/gh-126572-test_ssl-no-stop-ThreadedEchoServer-OSError.patch @@ -20,14 +20,12 @@ calls from ConnectionHandler. Co-authored-by: Petr Viktorin --- - Lib/test/test_ssl.py | 17 ++++++++++++----- + Lib/test/test_ssl.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) -diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py -index 9b59ddd887aa0b..b6421c7a3c827b 100644 --- a/Lib/test/test_ssl.py +++ b/Lib/test/test_ssl.py -@@ -2300,7 +2300,6 @@ def wrap_conn(self): +@@ -2488,7 +2488,6 @@ class ThreadedEchoServer(threading.Threa # See also http://erickt.github.io/blog/2014/11/19/adventures-in-debugging-a-potential-osx-kernel-bug/ if e.errno != errno.EPROTOTYPE and sys.platform != "darwin": self.running = False @@ -35,7 +33,7 @@ index 9b59ddd887aa0b..b6421c7a3c827b 100644 self.close() return False else: -@@ -2435,10 +2434,6 @@ def run(self): +@@ -2623,10 +2622,6 @@ class ThreadedEchoServer(threading.Threa self.close() self.running = False @@ -46,7 +44,7 @@ index 9b59ddd887aa0b..b6421c7a3c827b 100644 def __init__(self, certificate=None, ssl_version=None, certreqs=None, cacerts=None, chatty=True, connectionchatty=False, starttls_server=False, -@@ -2472,21 +2467,33 @@ def __init__(self, certificate=None, ssl_version=None, +@@ -2660,21 +2655,33 @@ class ThreadedEchoServer(threading.Threa self.conn_errors = [] threading.Thread.__init__(self) self.daemon = True diff --git a/python310.changes b/python310.changes index 72c3ca7..f5072e5 100644 --- a/python310.changes +++ b/python310.changes @@ -1,3 +1,15 @@ +------------------------------------------------------------------- +Thu May 22 13:01:17 UTC 2025 - Matej Cepl + +- Add CVE-2025-4516-DecodeError-handler.patch fixing + CVE-2025-4516 (bsc#1243273) blocking DecodeError handling + vulnerability, which could lead to DoS. + +------------------------------------------------------------------- +Sat May 17 10:02:27 UTC 2025 - Matej Cepl + +- Use extended %autopatch. + ------------------------------------------------------------------- Sat May 10 11:38:22 UTC 2025 - Matej Cepl @@ -349,7 +361,7 @@ Fri Feb 23 01:06:42 UTC 2024 - Matej Cepl Tue Feb 20 22:14:02 UTC 2024 - Matej Cepl - Remove double definition of /usr/bin/idle%%{version} in - %%files. + %%files. ------------------------------------------------------------------- Thu Feb 15 10:29:07 UTC 2024 - Daniel Garcia diff --git a/python310.spec b/python310.spec index 3bfadde..443a414 100644 --- a/python310.spec +++ b/python310.spec @@ -205,6 +205,9 @@ Patch28: sphinx-802.patch # PATCH-FIX-UPSTREAM gh-126572-test_ssl-no-stop-ThreadedEchoServer-OSError.patch bsc#1241067 mcepl@suse.com # don't stop ThreadedEchoServer on OSError, makes test_ssl fail with OpenSSL 3.5 Patch29: gh-126572-test_ssl-no-stop-ThreadedEchoServer-OSError.patch +# PATCH-FIX-UPSTREAM CVE-2025-4516-DecodeError-handler.patch bsc#1243273 mcepl@suse.com +# this patch makes things totally awesome +Patch30: CVE-2025-4516-DecodeError-handler.patch BuildRequires: autoconf-archive BuildRequires: automake BuildRequires: fdupes @@ -462,32 +465,15 @@ other applications. %prep %setup -q -n %{tarname} -%patch -p1 -P 01 -%patch -p1 -P 02 -%patch -p1 -P 03 -%patch -p1 -P 04 -%patch -p1 -P 06 -%patch -p1 -P 07 - +%autopatch -p1 -M 07 %if 0%{?sle_version} && 0%{?sle_version} <= 150300 -%patch -P 11 -p1 +%patch -p1 -P 11 %endif - -%patch -p1 -P 15 -%patch -p1 -P 16 -%patch -p1 -P 17 -%patch -p1 -P 18 -%patch -p1 -P 19 - +%autopatch -p1 -m 12 -M 20 %if ! 0%{?sle_version} || 0%{?sle_version} >= 160000 %patch -p1 -P 21 %endif - -%patch -p1 -P 22 -%patch -p1 -P 24 -%patch -p1 -P 27 -%patch -p1 -P 28 -%patch -p1 -P 29 +%autopatch -p1 -m 22 # drop Autoconf version requirement sed -i 's/^AC_PREREQ/dnl AC_PREREQ/' configure.ac diff --git a/sphinx-72.patch b/sphinx-72.patch index 7286ddd..8cd8457 100644 --- a/sphinx-72.patch +++ b/sphinx-72.patch @@ -73,10 +73,8 @@ Doc/tutorial/stdlib.rst | 2 72 files changed, 458 insertions(+), 427 deletions(-) -Index: Python-3.10.17/Doc/c-api/bytearray.rst -=================================================================== ---- Python-3.10.17.orig/Doc/c-api/bytearray.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/c-api/bytearray.rst 2025-04-11 10:08:04.181382404 +0200 +--- a/Doc/c-api/bytearray.rst ++++ b/Doc/c-api/bytearray.rst @@ -5,7 +5,7 @@ Byte Array Objects ------------------ @@ -86,11 +84,9 @@ Index: Python-3.10.17/Doc/c-api/bytearray.rst .. c:type:: PyByteArrayObject -Index: Python-3.10.17/Doc/c-api/bytes.rst -=================================================================== ---- Python-3.10.17.orig/Doc/c-api/bytes.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/c-api/bytes.rst 2025-04-11 10:08:04.181517129 +0200 -@@ -8,7 +8,7 @@ +--- a/Doc/c-api/bytes.rst ++++ b/Doc/c-api/bytes.rst +@@ -8,7 +8,7 @@ Bytes Objects These functions raise :exc:`TypeError` when expecting a bytes parameter and called with a non-bytes parameter. @@ -99,10 +95,8 @@ Index: Python-3.10.17/Doc/c-api/bytes.rst .. c:type:: PyBytesObject -Index: Python-3.10.17/Doc/c-api/capsule.rst -=================================================================== ---- Python-3.10.17.orig/Doc/c-api/capsule.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/c-api/capsule.rst 2025-04-11 10:08:04.181988281 +0200 +--- a/Doc/c-api/capsule.rst ++++ b/Doc/c-api/capsule.rst @@ -5,7 +5,7 @@ Capsules -------- @@ -112,10 +106,8 @@ Index: Python-3.10.17/Doc/c-api/capsule.rst Refer to :ref:`using-capsules` for more information on using these objects. -Index: Python-3.10.17/Doc/c-api/complex.rst -=================================================================== ---- Python-3.10.17.orig/Doc/c-api/complex.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/c-api/complex.rst 2025-04-11 10:08:04.182165400 +0200 +--- a/Doc/c-api/complex.rst ++++ b/Doc/c-api/complex.rst @@ -5,7 +5,7 @@ Complex Number Objects ---------------------- @@ -125,11 +117,9 @@ Index: Python-3.10.17/Doc/c-api/complex.rst Python's complex number objects are implemented as two distinct types when viewed from the C API: one is the Python object exposed to Python programs, and -Index: Python-3.10.17/Doc/c-api/concrete.rst -=================================================================== ---- Python-3.10.17.orig/Doc/c-api/concrete.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/c-api/concrete.rst 2025-04-11 10:08:04.182394900 +0200 -@@ -40,7 +40,7 @@ +--- a/Doc/c-api/concrete.rst ++++ b/Doc/c-api/concrete.rst +@@ -40,7 +40,7 @@ This section describes Python type objec Numeric Objects =============== @@ -138,7 +128,7 @@ Index: Python-3.10.17/Doc/c-api/concrete.rst .. toctree:: -@@ -55,7 +55,7 @@ +@@ -55,7 +55,7 @@ Numeric Objects Sequence Objects ================ @@ -147,7 +137,7 @@ Index: Python-3.10.17/Doc/c-api/concrete.rst Generic operations on sequence objects were discussed in the previous chapter; this section deals with the specific kinds of sequence objects that are -@@ -77,7 +77,7 @@ +@@ -77,7 +77,7 @@ intrinsic to the Python language. Container Objects ================= @@ -156,10 +146,8 @@ Index: Python-3.10.17/Doc/c-api/concrete.rst .. toctree:: -Index: Python-3.10.17/Doc/c-api/dict.rst -=================================================================== ---- Python-3.10.17.orig/Doc/c-api/dict.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/c-api/dict.rst 2025-04-11 10:08:04.182580470 +0200 +--- a/Doc/c-api/dict.rst ++++ b/Doc/c-api/dict.rst @@ -5,7 +5,7 @@ Dictionary Objects ------------------ @@ -169,7 +157,7 @@ Index: Python-3.10.17/Doc/c-api/dict.rst .. c:type:: PyDictObject -@@ -154,7 +154,7 @@ +@@ -154,7 +154,7 @@ Dictionary Objects .. c:function:: Py_ssize_t PyDict_Size(PyObject *p) @@ -178,11 +166,9 @@ Index: Python-3.10.17/Doc/c-api/dict.rst Return the number of items in the dictionary. This is equivalent to ``len(p)`` on a dictionary. -Index: Python-3.10.17/Doc/c-api/exceptions.rst -=================================================================== ---- Python-3.10.17.orig/Doc/c-api/exceptions.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/c-api/exceptions.rst 2025-04-11 10:08:04.182849151 +0200 -@@ -503,7 +503,7 @@ +--- a/Doc/c-api/exceptions.rst ++++ b/Doc/c-api/exceptions.rst +@@ -503,7 +503,7 @@ Signal Handling .. c:function:: int PyErr_CheckSignals() .. index:: @@ -191,7 +177,7 @@ Index: Python-3.10.17/Doc/c-api/exceptions.rst single: SIGINT single: KeyboardInterrupt (built-in exception) -@@ -534,7 +534,7 @@ +@@ -534,7 +534,7 @@ Signal Handling .. c:function:: void PyErr_SetInterrupt() .. index:: @@ -200,7 +186,7 @@ Index: Python-3.10.17/Doc/c-api/exceptions.rst single: SIGINT single: KeyboardInterrupt (built-in exception) -@@ -549,7 +549,7 @@ +@@ -549,7 +549,7 @@ Signal Handling .. c:function:: int PyErr_SetInterruptEx(int signum) .. index:: @@ -209,10 +195,8 @@ Index: Python-3.10.17/Doc/c-api/exceptions.rst single: KeyboardInterrupt (built-in exception) Simulate the effect of a signal arriving. The next time -Index: Python-3.10.17/Doc/c-api/file.rst -=================================================================== ---- Python-3.10.17.orig/Doc/c-api/file.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/c-api/file.rst 2025-04-11 10:08:04.183114201 +0200 +--- a/Doc/c-api/file.rst ++++ b/Doc/c-api/file.rst @@ -5,7 +5,7 @@ File Objects ------------ @@ -222,10 +206,8 @@ Index: Python-3.10.17/Doc/c-api/file.rst These APIs are a minimal emulation of the Python 2 C API for built-in file objects, which used to rely on the buffered I/O (:c:expr:`FILE*`) support -Index: Python-3.10.17/Doc/c-api/float.rst -=================================================================== ---- Python-3.10.17.orig/Doc/c-api/float.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/c-api/float.rst 2025-04-11 10:08:04.183287199 +0200 +--- a/Doc/c-api/float.rst ++++ b/Doc/c-api/float.rst @@ -5,7 +5,7 @@ Floating Point Objects ---------------------- @@ -235,10 +217,8 @@ Index: Python-3.10.17/Doc/c-api/float.rst .. c:type:: PyFloatObject -Index: Python-3.10.17/Doc/c-api/function.rst -=================================================================== ---- Python-3.10.17.orig/Doc/c-api/function.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/c-api/function.rst 2025-04-11 10:08:04.183469486 +0200 +--- a/Doc/c-api/function.rst ++++ b/Doc/c-api/function.rst @@ -5,7 +5,7 @@ Function Objects ---------------- @@ -248,11 +228,9 @@ Index: Python-3.10.17/Doc/c-api/function.rst There are a few functions specific to Python functions. -Index: Python-3.10.17/Doc/c-api/import.rst -=================================================================== ---- Python-3.10.17.orig/Doc/c-api/import.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/c-api/import.rst 2025-04-11 10:08:04.183652332 +0200 -@@ -41,7 +41,7 @@ +--- a/Doc/c-api/import.rst ++++ b/Doc/c-api/import.rst +@@ -41,7 +41,7 @@ Importing Modules .. c:function:: PyObject* PyImport_ImportModuleEx(const char *name, PyObject *globals, PyObject *locals, PyObject *fromlist) @@ -261,7 +239,7 @@ Index: Python-3.10.17/Doc/c-api/import.rst Import a module. This is best described by referring to the built-in Python function :func:`__import__`. -@@ -120,7 +120,7 @@ +@@ -120,7 +120,7 @@ Importing Modules .. c:function:: PyObject* PyImport_ExecCodeModule(const char *name, PyObject *co) @@ -270,11 +248,9 @@ Index: Python-3.10.17/Doc/c-api/import.rst Given a module name (possibly of the form ``package.module``) and a code object read from a Python bytecode file or obtained from the built-in function -Index: Python-3.10.17/Doc/c-api/init.rst -=================================================================== ---- Python-3.10.17.orig/Doc/c-api/init.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/c-api/init.rst 2025-04-11 10:08:04.184122856 +0200 -@@ -233,9 +233,9 @@ +--- a/Doc/c-api/init.rst ++++ b/Doc/c-api/init.rst +@@ -233,9 +233,9 @@ Initializing and finalizing the interpre single: PyEval_InitThreads() single: modules (in module sys) single: path (in module sys) @@ -287,7 +263,7 @@ Index: Python-3.10.17/Doc/c-api/init.rst triple: module; search; path single: PySys_SetArgv() single: PySys_SetArgvEx() -@@ -895,7 +895,7 @@ +@@ -895,7 +895,7 @@ code, or when embedding the Python inter .. deprecated-removed:: 3.9 3.11 @@ -296,7 +272,7 @@ Index: Python-3.10.17/Doc/c-api/init.rst .. c:function:: int PyEval_ThreadsInitialized() -@@ -1315,9 +1315,9 @@ +@@ -1315,9 +1315,9 @@ function. You can create and destroy the .. c:function:: PyThreadState* Py_NewInterpreter() .. index:: @@ -309,11 +285,9 @@ Index: Python-3.10.17/Doc/c-api/init.rst single: stdout (in module sys) single: stderr (in module sys) single: stdin (in module sys) -Index: Python-3.10.17/Doc/c-api/intro.rst -=================================================================== ---- Python-3.10.17.orig/Doc/c-api/intro.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/c-api/intro.rst 2025-04-11 10:08:04.184639406 +0200 -@@ -226,7 +226,7 @@ +--- a/Doc/c-api/intro.rst ++++ b/Doc/c-api/intro.rst +@@ -226,7 +226,7 @@ complete listing. Objects, Types and Reference Counts =================================== @@ -322,7 +296,7 @@ Index: Python-3.10.17/Doc/c-api/intro.rst Most Python/C API functions have one or more arguments as well as a return value of type :c:expr:`PyObject*`. This type is a pointer to an opaque data type -@@ -677,9 +677,9 @@ +@@ -677,9 +677,9 @@ interpreter can only be used after the i .. index:: single: Py_Initialize() @@ -335,10 +309,8 @@ Index: Python-3.10.17/Doc/c-api/intro.rst triple: module; search; path single: path (in module sys) -Index: Python-3.10.17/Doc/c-api/list.rst -=================================================================== ---- Python-3.10.17.orig/Doc/c-api/list.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/c-api/list.rst 2025-04-11 10:08:04.184885109 +0200 +--- a/Doc/c-api/list.rst ++++ b/Doc/c-api/list.rst @@ -5,7 +5,7 @@ List Objects ------------ @@ -348,7 +320,7 @@ Index: Python-3.10.17/Doc/c-api/list.rst .. c:type:: PyListObject -@@ -45,7 +45,7 @@ +@@ -45,7 +45,7 @@ List Objects .. c:function:: Py_ssize_t PyList_Size(PyObject *list) @@ -357,7 +329,7 @@ Index: Python-3.10.17/Doc/c-api/list.rst Return the length of the list object in *list*; this is equivalent to ``len(list)`` on a list object. -@@ -138,7 +138,7 @@ +@@ -138,7 +138,7 @@ List Objects .. c:function:: PyObject* PyList_AsTuple(PyObject *list) @@ -366,10 +338,8 @@ Index: Python-3.10.17/Doc/c-api/list.rst Return a new tuple object containing the contents of *list*; equivalent to ``tuple(list)``. -Index: Python-3.10.17/Doc/c-api/long.rst -=================================================================== ---- Python-3.10.17.orig/Doc/c-api/long.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/c-api/long.rst 2025-04-11 10:08:04.185061390 +0200 +--- a/Doc/c-api/long.rst ++++ b/Doc/c-api/long.rst @@ -5,8 +5,8 @@ Integer Objects --------------- @@ -381,11 +351,9 @@ Index: Python-3.10.17/Doc/c-api/long.rst All integers are implemented as "long" integer objects of arbitrary size. -Index: Python-3.10.17/Doc/c-api/mapping.rst -=================================================================== ---- Python-3.10.17.orig/Doc/c-api/mapping.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/c-api/mapping.rst 2025-04-11 10:08:04.185248635 +0200 -@@ -20,7 +20,7 @@ +--- a/Doc/c-api/mapping.rst ++++ b/Doc/c-api/mapping.rst +@@ -20,7 +20,7 @@ See also :c:func:`PyObject_GetItem`, :c: .. c:function:: Py_ssize_t PyMapping_Size(PyObject *o) Py_ssize_t PyMapping_Length(PyObject *o) @@ -394,10 +362,8 @@ Index: Python-3.10.17/Doc/c-api/mapping.rst Returns the number of keys in object *o* on success, and ``-1`` on failure. This is equivalent to the Python expression ``len(o)``. -Index: Python-3.10.17/Doc/c-api/memoryview.rst -=================================================================== ---- Python-3.10.17.orig/Doc/c-api/memoryview.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/c-api/memoryview.rst 2025-04-11 10:08:04.185439653 +0200 +--- a/Doc/c-api/memoryview.rst ++++ b/Doc/c-api/memoryview.rst @@ -3,7 +3,7 @@ .. _memoryview-objects: @@ -407,10 +373,8 @@ Index: Python-3.10.17/Doc/c-api/memoryview.rst MemoryView objects ------------------ -Index: Python-3.10.17/Doc/c-api/method.rst -=================================================================== ---- Python-3.10.17.orig/Doc/c-api/method.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/c-api/method.rst 2025-04-11 10:08:04.185619635 +0200 +--- a/Doc/c-api/method.rst ++++ b/Doc/c-api/method.rst @@ -5,7 +5,7 @@ Instance Method Objects ----------------------- @@ -420,7 +384,7 @@ Index: Python-3.10.17/Doc/c-api/method.rst An instance method is a wrapper for a :c:data:`PyCFunction` and the new way to bind a :c:data:`PyCFunction` to a class object. It replaces the former call -@@ -47,7 +47,7 @@ +@@ -47,7 +47,7 @@ to bind a :c:data:`PyCFunction` to a cla Method Objects -------------- @@ -429,10 +393,8 @@ Index: Python-3.10.17/Doc/c-api/method.rst Methods are bound function objects. Methods are always bound to an instance of a user-defined class. Unbound methods (methods bound to a class object) are -Index: Python-3.10.17/Doc/c-api/module.rst -=================================================================== ---- Python-3.10.17.orig/Doc/c-api/module.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/c-api/module.rst 2025-04-11 10:08:04.185827344 +0200 +--- a/Doc/c-api/module.rst ++++ b/Doc/c-api/module.rst @@ -5,7 +5,7 @@ Module Objects -------------- @@ -442,10 +404,8 @@ Index: Python-3.10.17/Doc/c-api/module.rst .. c:var:: PyTypeObject PyModule_Type -Index: Python-3.10.17/Doc/c-api/none.rst -=================================================================== ---- Python-3.10.17.orig/Doc/c-api/none.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/c-api/none.rst 2025-04-11 10:08:04.186046717 +0200 +--- a/Doc/c-api/none.rst ++++ b/Doc/c-api/none.rst @@ -5,7 +5,7 @@ The ``None`` Object ------------------- @@ -455,11 +415,9 @@ Index: Python-3.10.17/Doc/c-api/none.rst Note that the :c:type:`PyTypeObject` for ``None`` is not directly exposed in the Python/C API. Since ``None`` is a singleton, testing for object identity (using -Index: Python-3.10.17/Doc/c-api/number.rst -=================================================================== ---- Python-3.10.17.orig/Doc/c-api/number.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/c-api/number.rst 2025-04-11 10:08:04.186225931 +0200 -@@ -64,7 +64,7 @@ +--- a/Doc/c-api/number.rst ++++ b/Doc/c-api/number.rst +@@ -64,7 +64,7 @@ Number Protocol .. c:function:: PyObject* PyNumber_Divmod(PyObject *o1, PyObject *o2) @@ -468,7 +426,7 @@ Index: Python-3.10.17/Doc/c-api/number.rst See the built-in function :func:`divmod`. Returns ``NULL`` on failure. This is the equivalent of the Python expression ``divmod(o1, o2)``. -@@ -72,7 +72,7 @@ +@@ -72,7 +72,7 @@ Number Protocol .. c:function:: PyObject* PyNumber_Power(PyObject *o1, PyObject *o2, PyObject *o3) @@ -477,7 +435,7 @@ Index: Python-3.10.17/Doc/c-api/number.rst See the built-in function :func:`pow`. Returns ``NULL`` on failure. This is the equivalent of the Python expression ``pow(o1, o2, o3)``, where *o3* is optional. -@@ -94,7 +94,7 @@ +@@ -94,7 +94,7 @@ Number Protocol .. c:function:: PyObject* PyNumber_Absolute(PyObject *o) @@ -486,7 +444,7 @@ Index: Python-3.10.17/Doc/c-api/number.rst Returns the absolute value of *o*, or ``NULL`` on failure. This is the equivalent of the Python expression ``abs(o)``. -@@ -192,7 +192,7 @@ +@@ -192,7 +192,7 @@ Number Protocol .. c:function:: PyObject* PyNumber_InPlacePower(PyObject *o1, PyObject *o2, PyObject *o3) @@ -495,7 +453,7 @@ Index: Python-3.10.17/Doc/c-api/number.rst See the built-in function :func:`pow`. Returns ``NULL`` on failure. The operation is done *in-place* when *o1* supports it. This is the equivalent of the Python -@@ -238,7 +238,7 @@ +@@ -238,7 +238,7 @@ Number Protocol .. c:function:: PyObject* PyNumber_Long(PyObject *o) @@ -504,7 +462,7 @@ Index: Python-3.10.17/Doc/c-api/number.rst Returns the *o* converted to an integer object on success, or ``NULL`` on failure. This is the equivalent of the Python expression ``int(o)``. -@@ -246,7 +246,7 @@ +@@ -246,7 +246,7 @@ Number Protocol .. c:function:: PyObject* PyNumber_Float(PyObject *o) @@ -513,11 +471,9 @@ Index: Python-3.10.17/Doc/c-api/number.rst Returns the *o* converted to a float object on success, or ``NULL`` on failure. This is the equivalent of the Python expression ``float(o)``. -Index: Python-3.10.17/Doc/c-api/object.rst -=================================================================== ---- Python-3.10.17.orig/Doc/c-api/object.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/c-api/object.rst 2025-04-11 10:08:04.186419533 +0200 -@@ -172,7 +172,7 @@ +--- a/Doc/c-api/object.rst ++++ b/Doc/c-api/object.rst +@@ -172,7 +172,7 @@ Object Protocol .. c:function:: PyObject* PyObject_Repr(PyObject *o) @@ -526,7 +482,7 @@ Index: Python-3.10.17/Doc/c-api/object.rst Compute a string representation of object *o*. Returns the string representation on success, ``NULL`` on failure. This is the equivalent of the -@@ -184,7 +184,7 @@ +@@ -184,7 +184,7 @@ Object Protocol .. c:function:: PyObject* PyObject_ASCII(PyObject *o) @@ -535,7 +491,7 @@ Index: Python-3.10.17/Doc/c-api/object.rst As :c:func:`PyObject_Repr`, compute a string representation of object *o*, but escape the non-ASCII characters in the string returned by -@@ -209,7 +209,7 @@ +@@ -209,7 +209,7 @@ Object Protocol .. c:function:: PyObject* PyObject_Bytes(PyObject *o) @@ -544,7 +500,7 @@ Index: Python-3.10.17/Doc/c-api/object.rst Compute a bytes representation of object *o*. ``NULL`` is returned on failure and a bytes object on success. This is equivalent to the Python -@@ -260,7 +260,7 @@ +@@ -260,7 +260,7 @@ Object Protocol .. c:function:: Py_hash_t PyObject_Hash(PyObject *o) @@ -553,7 +509,7 @@ Index: Python-3.10.17/Doc/c-api/object.rst Compute and return the hash value of an object *o*. On failure, return ``-1``. This is the equivalent of the Python expression ``hash(o)``. -@@ -294,7 +294,7 @@ +@@ -294,7 +294,7 @@ Object Protocol .. c:function:: PyObject* PyObject_Type(PyObject *o) @@ -562,7 +518,7 @@ Index: Python-3.10.17/Doc/c-api/object.rst When *o* is non-``NULL``, returns a type object corresponding to the object type of object *o*. On failure, raises :exc:`SystemError` and returns ``NULL``. This -@@ -315,7 +315,7 @@ +@@ -315,7 +315,7 @@ Object Protocol .. c:function:: Py_ssize_t PyObject_Size(PyObject *o) Py_ssize_t PyObject_Length(PyObject *o) @@ -571,11 +527,9 @@ Index: Python-3.10.17/Doc/c-api/object.rst Return the length of object *o*. If the object *o* provides either the sequence and mapping protocols, the sequence length is returned. On error, ``-1`` is -Index: Python-3.10.17/Doc/c-api/sequence.rst -=================================================================== ---- Python-3.10.17.orig/Doc/c-api/sequence.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/c-api/sequence.rst 2025-04-11 10:08:04.186642747 +0200 -@@ -18,7 +18,7 @@ +--- a/Doc/c-api/sequence.rst ++++ b/Doc/c-api/sequence.rst +@@ -18,7 +18,7 @@ Sequence Protocol .. c:function:: Py_ssize_t PySequence_Size(PyObject *o) Py_ssize_t PySequence_Length(PyObject *o) @@ -584,7 +538,7 @@ Index: Python-3.10.17/Doc/c-api/sequence.rst Returns the number of objects in sequence *o* on success, and ``-1`` on failure. This is equivalent to the Python expression ``len(o)``. -@@ -120,7 +120,7 @@ +@@ -120,7 +120,7 @@ Sequence Protocol .. c:function:: PyObject* PySequence_Tuple(PyObject *o) @@ -593,11 +547,9 @@ Index: Python-3.10.17/Doc/c-api/sequence.rst Return a tuple object with the same contents as the sequence or iterable *o*, or ``NULL`` on failure. If *o* is a tuple, a new reference will be returned, -Index: Python-3.10.17/Doc/c-api/set.rst -=================================================================== ---- Python-3.10.17.orig/Doc/c-api/set.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/c-api/set.rst 2025-04-11 10:08:04.186889917 +0200 -@@ -9,8 +9,8 @@ +--- a/Doc/c-api/set.rst ++++ b/Doc/c-api/set.rst +@@ -9,8 +9,8 @@ Set Objects .. index:: @@ -608,7 +560,7 @@ Index: Python-3.10.17/Doc/c-api/set.rst This section details the public API for :class:`set` and :class:`frozenset` objects. Any functionality not listed below is best accessed using either -@@ -107,7 +107,7 @@ +@@ -107,7 +107,7 @@ or :class:`frozenset` or instances of th .. c:function:: Py_ssize_t PySet_Size(PyObject *anyset) @@ -617,11 +569,9 @@ Index: Python-3.10.17/Doc/c-api/set.rst Return the length of a :class:`set` or :class:`frozenset` object. Equivalent to ``len(anyset)``. Raises a :exc:`PyExc_SystemError` if *anyset* is not a -Index: Python-3.10.17/Doc/c-api/structures.rst -=================================================================== ---- Python-3.10.17.orig/Doc/c-api/structures.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/c-api/structures.rst 2025-04-11 10:08:04.187082262 +0200 -@@ -351,7 +351,7 @@ +--- a/Doc/c-api/structures.rst ++++ b/Doc/c-api/structures.rst +@@ -351,7 +351,7 @@ method. .. data:: METH_CLASS @@ -630,7 +580,7 @@ Index: Python-3.10.17/Doc/c-api/structures.rst 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*, -@@ -361,7 +361,7 @@ +@@ -361,7 +361,7 @@ method. .. data:: METH_STATIC @@ -639,10 +589,8 @@ Index: Python-3.10.17/Doc/c-api/structures.rst 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 -Index: Python-3.10.17/Doc/c-api/tuple.rst -=================================================================== ---- Python-3.10.17.orig/Doc/c-api/tuple.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/c-api/tuple.rst 2025-04-11 10:08:04.187302473 +0200 +--- a/Doc/c-api/tuple.rst ++++ b/Doc/c-api/tuple.rst @@ -5,7 +5,7 @@ Tuple Objects ------------- @@ -652,10 +600,8 @@ Index: Python-3.10.17/Doc/c-api/tuple.rst .. c:type:: PyTupleObject -Index: Python-3.10.17/Doc/c-api/type.rst -=================================================================== ---- Python-3.10.17.orig/Doc/c-api/type.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/c-api/type.rst 2025-04-11 10:08:04.187497471 +0200 +--- a/Doc/c-api/type.rst ++++ b/Doc/c-api/type.rst @@ -5,7 +5,7 @@ Type Objects ------------ @@ -665,11 +611,9 @@ Index: Python-3.10.17/Doc/c-api/type.rst .. c:type:: PyTypeObject -Index: Python-3.10.17/Doc/c-api/typeobj.rst -=================================================================== ---- Python-3.10.17.orig/Doc/c-api/typeobj.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/c-api/typeobj.rst 2025-04-11 10:08:04.187822445 +0200 -@@ -803,7 +803,7 @@ +--- a/Doc/c-api/typeobj.rst ++++ b/Doc/c-api/typeobj.rst +@@ -803,7 +803,7 @@ and :c:type:`PyType_Type` effectively ac .. c:member:: reprfunc PyTypeObject.tp_repr @@ -678,7 +622,7 @@ Index: Python-3.10.17/Doc/c-api/typeobj.rst An optional pointer to a function that implements the built-in function :func:`repr`. -@@ -868,7 +868,7 @@ +@@ -868,7 +868,7 @@ and :c:type:`PyType_Type` effectively ac .. c:member:: hashfunc PyTypeObject.tp_hash @@ -687,11 +631,9 @@ Index: Python-3.10.17/Doc/c-api/typeobj.rst An optional pointer to a function that implements the built-in function :func:`hash`. -Index: Python-3.10.17/Doc/conf.py -=================================================================== ---- Python-3.10.17.orig/Doc/conf.py 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/conf.py 2025-04-11 10:08:04.188263705 +0200 -@@ -61,6 +61,11 @@ +--- a/Doc/conf.py ++++ b/Doc/conf.py +@@ -61,6 +61,11 @@ smartquotes_excludes = { # Avoid a warning with Sphinx >= 2.0 master_doc = 'contents' @@ -703,11 +645,9 @@ Index: Python-3.10.17/Doc/conf.py # Options for HTML output # ----------------------- -Index: Python-3.10.17/Doc/extending/newtypes.rst -=================================================================== ---- Python-3.10.17.orig/Doc/extending/newtypes.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/extending/newtypes.rst 2025-04-11 10:08:04.188492367 +0200 -@@ -149,7 +149,7 @@ +--- a/Doc/extending/newtypes.rst ++++ b/Doc/extending/newtypes.rst +@@ -149,7 +149,7 @@ done. This can be done using the :c:fun .. index:: single: string; object representation @@ -716,11 +656,9 @@ Index: Python-3.10.17/Doc/extending/newtypes.rst Object Presentation ------------------- -Index: Python-3.10.17/Doc/library/_thread.rst -=================================================================== ---- Python-3.10.17.orig/Doc/library/_thread.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/library/_thread.rst 2025-04-11 10:08:04.188881316 +0200 -@@ -204,7 +204,7 @@ +--- a/Doc/library/_thread.rst ++++ b/Doc/library/_thread.rst +@@ -204,7 +204,7 @@ In addition to these methods, lock objec **Caveats:** @@ -729,10 +667,8 @@ Index: Python-3.10.17/Doc/library/_thread.rst * Threads interact strangely with interrupts: the :exc:`KeyboardInterrupt` exception will be received by an arbitrary thread. (When the :mod:`signal` -Index: Python-3.10.17/Doc/library/binascii.rst -=================================================================== ---- Python-3.10.17.orig/Doc/library/binascii.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/library/binascii.rst 2025-04-11 10:08:04.189161382 +0200 +--- a/Doc/library/binascii.rst ++++ b/Doc/library/binascii.rst @@ -6,9 +6,9 @@ representations. @@ -746,11 +682,9 @@ Index: Python-3.10.17/Doc/library/binascii.rst -------------- -Index: Python-3.10.17/Doc/library/cmath.rst -=================================================================== ---- Python-3.10.17.orig/Doc/library/cmath.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/library/cmath.rst 2025-04-11 10:08:04.189381732 +0200 -@@ -301,7 +301,7 @@ +--- a/Doc/library/cmath.rst ++++ b/Doc/library/cmath.rst +@@ -301,7 +301,7 @@ Constants .. versionadded:: 3.6 @@ -759,11 +693,9 @@ Index: Python-3.10.17/Doc/library/cmath.rst 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 aren't -Index: Python-3.10.17/Doc/library/copy.rst -=================================================================== ---- Python-3.10.17.orig/Doc/library/copy.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/library/copy.rst 2025-04-11 10:08:04.189627156 +0200 -@@ -68,7 +68,7 @@ +--- a/Doc/library/copy.rst ++++ b/Doc/library/copy.rst +@@ -68,7 +68,7 @@ Shallow copies of dictionaries can be ma of lists by assigning a slice of the entire list, for example, ``copied_list = original_list[:]``. @@ -772,10 +704,8 @@ Index: Python-3.10.17/Doc/library/copy.rst Classes can use the same interfaces to control copying that they use to control pickling. See the description of module :mod:`pickle` for information on these -Index: Python-3.10.17/Doc/library/copyreg.rst -=================================================================== ---- Python-3.10.17.orig/Doc/library/copyreg.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/library/copyreg.rst 2025-04-11 10:08:04.189844155 +0200 +--- a/Doc/library/copyreg.rst ++++ b/Doc/library/copyreg.rst @@ -7,8 +7,8 @@ **Source code:** :source:`Lib/copyreg.py` @@ -787,11 +717,9 @@ Index: Python-3.10.17/Doc/library/copyreg.rst -------------- -Index: Python-3.10.17/Doc/library/dis.rst -=================================================================== ---- Python-3.10.17.orig/Doc/library/dis.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/library/dis.rst 2025-04-11 10:08:04.190046067 +0200 -@@ -1207,7 +1207,7 @@ +--- a/Doc/library/dis.rst ++++ b/Doc/library/dis.rst +@@ -1207,7 +1207,7 @@ All of the following opcodes use their a .. opcode:: BUILD_SLICE (argc) @@ -800,10 +728,8 @@ Index: Python-3.10.17/Doc/library/dis.rst Pushes a slice object on the stack. *argc* must be 2 or 3. If it is 2, ``slice(TOS1, TOS)`` is pushed; if it is 3, ``slice(TOS2, TOS1, TOS)`` is -Index: Python-3.10.17/Doc/library/email.compat32-message.rst -=================================================================== ---- Python-3.10.17.orig/Doc/library/email.compat32-message.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/library/email.compat32-message.rst 2025-04-11 10:08:04.190347504 +0200 +--- a/Doc/library/email.compat32-message.rst ++++ b/Doc/library/email.compat32-message.rst @@ -7,6 +7,7 @@ :synopsis: The base class representing email messages in a fashion backward compatible with Python 3.2 @@ -812,11 +738,9 @@ Index: Python-3.10.17/Doc/library/email.compat32-message.rst The :class:`Message` class is very similar to the -Index: Python-3.10.17/Doc/library/exceptions.rst -=================================================================== ---- Python-3.10.17.orig/Doc/library/exceptions.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/library/exceptions.rst 2025-04-11 10:08:04.190619678 +0200 -@@ -4,8 +4,8 @@ +--- a/Doc/library/exceptions.rst ++++ b/Doc/library/exceptions.rst +@@ -4,8 +4,8 @@ Built-in Exceptions =================== .. index:: @@ -827,7 +751,7 @@ Index: Python-3.10.17/Doc/library/exceptions.rst In Python, all exceptions must be instances of a class that derives from :class:`BaseException`. In a :keyword:`try` statement with an :keyword:`except` -@@ -14,7 +14,7 @@ +@@ -14,7 +14,7 @@ classes derived from that class (but not derived). Two exception classes that are not related via subclassing are never equivalent, even if they have the same name. @@ -836,7 +760,7 @@ Index: Python-3.10.17/Doc/library/exceptions.rst The built-in exceptions listed below can be generated by the interpreter or built-in functions. Except where mentioned, they have an "associated value" -@@ -160,7 +160,7 @@ +@@ -160,7 +160,7 @@ The following exceptions are the excepti .. exception:: AssertionError @@ -845,7 +769,7 @@ Index: Python-3.10.17/Doc/library/exceptions.rst Raised when an :keyword:`assert` statement fails. -@@ -303,7 +303,7 @@ +@@ -303,7 +303,7 @@ The following exceptions are the excepti .. exception:: OSError([arg]) OSError(errno, strerror[, filename[, winerror[, filename2]]]) @@ -854,10 +778,8 @@ Index: Python-3.10.17/Doc/library/exceptions.rst This exception is raised when a system function returns a system-related error, including I/O failures such as "file not found" or "disk full" -Index: Python-3.10.17/Doc/library/fnmatch.rst -=================================================================== ---- Python-3.10.17.orig/Doc/library/fnmatch.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/library/fnmatch.rst 2025-04-11 10:08:04.190902537 +0200 +--- a/Doc/library/fnmatch.rst ++++ b/Doc/library/fnmatch.rst @@ -8,7 +8,7 @@ .. index:: single: filenames; wildcard expansion @@ -867,7 +789,7 @@ Index: Python-3.10.17/Doc/library/fnmatch.rst -------------- -@@ -38,7 +38,7 @@ +@@ -38,7 +38,7 @@ special characters used in shell-style w For a literal match, wrap the meta-characters in brackets. For example, ``'[?]'`` matches the character ``'?'``. @@ -876,11 +798,9 @@ Index: Python-3.10.17/Doc/library/fnmatch.rst Note that the filename separator (``'/'`` on Unix) is *not* special to this module. See module :mod:`glob` for pathname expansion (:mod:`glob` uses -Index: Python-3.10.17/Doc/library/functions.rst -=================================================================== ---- Python-3.10.17.orig/Doc/library/functions.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/library/functions.rst 2025-04-11 10:08:04.191129174 +0200 -@@ -548,7 +548,7 @@ +--- a/Doc/library/functions.rst ++++ b/Doc/library/functions.rst +@@ -548,7 +548,7 @@ are always available. They are listed h Raises an :ref:`auditing event ` ``exec`` with the code object as the argument. Code compilation events may also be raised. @@ -889,7 +809,7 @@ Index: Python-3.10.17/Doc/library/functions.rst .. function:: exec(object[, globals[, locals]]) -@@ -1314,7 +1314,7 @@ +@@ -1314,7 +1314,7 @@ are always available. They are listed h single: I/O control; buffering single: binary mode single: text mode @@ -898,7 +818,7 @@ Index: Python-3.10.17/Doc/library/functions.rst See also the file handling modules, such as :mod:`fileinput`, :mod:`io` (where :func:`open` is declared), :mod:`os`, :mod:`os.path`, :mod:`tempfile`, -@@ -1799,7 +1799,7 @@ +@@ -1799,7 +1799,7 @@ are always available. They are listed h .. class:: type(object) type(name, bases, dict, **kwds) @@ -907,7 +827,7 @@ Index: Python-3.10.17/Doc/library/functions.rst With one argument, return the type of an *object*. The return value is a type object and generally the same object as returned by -@@ -1954,8 +1954,8 @@ +@@ -1954,8 +1954,8 @@ are always available. They are listed h .. function:: __import__(name, globals=None, locals=None, fromlist=(), level=0) .. index:: @@ -918,10 +838,8 @@ Index: Python-3.10.17/Doc/library/functions.rst .. note:: -Index: Python-3.10.17/Doc/library/http.client.rst -=================================================================== ---- Python-3.10.17.orig/Doc/library/http.client.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/library/http.client.rst 2025-04-11 10:08:04.191542148 +0200 +--- a/Doc/library/http.client.rst ++++ b/Doc/library/http.client.rst @@ -10,7 +10,7 @@ pair: HTTP; protocol single: HTTP; http.client (standard module) @@ -931,10 +849,8 @@ Index: Python-3.10.17/Doc/library/http.client.rst -------------- -Index: Python-3.10.17/Doc/library/imp.rst -=================================================================== ---- Python-3.10.17.orig/Doc/library/imp.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/library/imp.rst 2025-04-11 10:08:04.191775280 +0200 +--- a/Doc/library/imp.rst ++++ b/Doc/library/imp.rst @@ -10,7 +10,7 @@ .. deprecated:: 3.4 The :mod:`imp` module is deprecated in favor of :mod:`importlib`. @@ -944,11 +860,9 @@ Index: Python-3.10.17/Doc/library/imp.rst -------------- -Index: Python-3.10.17/Doc/library/internet.rst -=================================================================== ---- Python-3.10.17.orig/Doc/library/internet.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/library/internet.rst 2025-04-11 10:08:04.192005409 +0200 -@@ -9,7 +9,7 @@ +--- a/Doc/library/internet.rst ++++ b/Doc/library/internet.rst +@@ -9,7 +9,7 @@ Internet Protocols and Support single: Internet single: World Wide Web @@ -957,11 +871,9 @@ Index: Python-3.10.17/Doc/library/internet.rst The modules described in this chapter implement internet protocols and support for related technology. They are all implemented in Python. Most of these -Index: Python-3.10.17/Doc/library/locale.rst -=================================================================== ---- Python-3.10.17.orig/Doc/library/locale.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/library/locale.rst 2025-04-11 10:08:04.192203340 +0200 -@@ -16,7 +16,7 @@ +--- a/Doc/library/locale.rst ++++ b/Doc/library/locale.rst +@@ -16,7 +16,7 @@ functionality. The POSIX locale mechanis certain cultural issues in an application, without requiring the programmer to know all the specifics of each country where the software is executed. @@ -970,7 +882,7 @@ Index: Python-3.10.17/Doc/library/locale.rst The :mod:`locale` module is implemented on top of the :mod:`_locale` module, which in turn uses an ANSI C locale implementation if available. -@@ -452,7 +452,7 @@ +@@ -452,7 +452,7 @@ The :mod:`locale` module defines the fol .. data:: LC_CTYPE @@ -979,11 +891,9 @@ Index: Python-3.10.17/Doc/library/locale.rst Locale category for the character type functions. Depending on the settings of this category, the functions of module :mod:`string` dealing with case change -Index: Python-3.10.17/Doc/library/marshal.rst -=================================================================== ---- Python-3.10.17.orig/Doc/library/marshal.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/library/marshal.rst 2025-04-11 10:08:04.192432840 +0200 -@@ -15,8 +15,8 @@ +--- a/Doc/library/marshal.rst ++++ b/Doc/library/marshal.rst +@@ -15,8 +15,8 @@ undocumented on purpose; it may change b rarely does). [#]_ .. index:: @@ -994,11 +904,9 @@ Index: Python-3.10.17/Doc/library/marshal.rst This is not a general "persistence" module. For general persistence and transfer of Python objects through RPC calls, see the modules :mod:`pickle` and -Index: Python-3.10.17/Doc/library/os.path.rst -=================================================================== ---- Python-3.10.17.orig/Doc/library/os.path.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/library/os.path.rst 2025-04-11 10:08:04.192621134 +0200 -@@ -159,7 +159,7 @@ +--- a/Doc/library/os.path.rst ++++ b/Doc/library/os.path.rst +@@ -159,7 +159,7 @@ the :mod:`glob` module.) On Unix and Windows, return the argument with an initial component of ``~`` or ``~user`` replaced by that *user*'s home directory. @@ -1007,11 +915,9 @@ Index: Python-3.10.17/Doc/library/os.path.rst On Unix, an initial ``~`` is replaced by the environment variable :envvar:`HOME` if it is set; otherwise the current user's home directory is looked up in the -Index: Python-3.10.17/Doc/library/os.rst -=================================================================== ---- Python-3.10.17.orig/Doc/library/os.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/library/os.rst 2025-04-11 10:08:04.193186503 +0200 -@@ -1136,7 +1136,7 @@ +--- a/Doc/library/os.rst ++++ b/Doc/library/os.rst +@@ -1136,7 +1136,7 @@ or `the MSDN ` sequence operations, along with the additional methods described below. -@@ -2422,10 +2422,10 @@ +@@ -2422,10 +2422,10 @@ Binary Sequence Types --- :class:`bytes` ================================================================================= .. index:: @@ -1481,7 +1367,7 @@ Index: Python-3.10.17/Doc/library/stdtypes.rst The core built-in types for manipulating binary data are :class:`bytes` and :class:`bytearray`. They are supported by :class:`memoryview` which uses -@@ -2440,7 +2440,7 @@ +@@ -2440,7 +2440,7 @@ The :mod:`array` module supports efficie Bytes Objects ------------- @@ -1490,7 +1376,7 @@ Index: Python-3.10.17/Doc/library/stdtypes.rst Bytes objects are immutable sequences of single bytes. Since many major binary protocols are based on the ASCII text encoding, bytes objects offer -@@ -2547,7 +2547,7 @@ +@@ -2547,7 +2547,7 @@ always convert a bytes object into a lis Bytearray Objects ----------------- @@ -1499,7 +1385,7 @@ Index: Python-3.10.17/Doc/library/stdtypes.rst :class:`bytearray` objects are a mutable counterpart to :class:`bytes` objects. -@@ -4123,7 +4123,7 @@ +@@ -4123,7 +4123,7 @@ copying. Set Types --- :class:`set`, :class:`frozenset` ============================================== @@ -1508,7 +1394,7 @@ Index: Python-3.10.17/Doc/library/stdtypes.rst A :dfn:`set` object is an unordered collection of distinct :term:`hashable` objects. Common uses include membership testing, removing duplicates from a sequence, and -@@ -4325,12 +4325,12 @@ +@@ -4325,12 +4325,12 @@ Mapping Types --- :class:`dict` =============================== .. index:: @@ -1525,7 +1411,7 @@ Index: Python-3.10.17/Doc/library/stdtypes.rst A :term:`mapping` object maps :term:`hashable` values to arbitrary objects. Mappings are mutable objects. There is currently only one standard mapping -@@ -4794,7 +4794,7 @@ +@@ -4794,7 +4794,7 @@ Generic Alias Type ------------------ .. index:: @@ -1534,7 +1420,7 @@ Index: Python-3.10.17/Doc/library/stdtypes.rst pair: Generic; Alias ``GenericAlias`` objects are generally created by -@@ -5040,7 +5040,7 @@ +@@ -5040,7 +5040,7 @@ Union Type ---------- .. index:: @@ -1543,7 +1429,7 @@ Index: Python-3.10.17/Doc/library/stdtypes.rst pair: union; type A union object holds the value of the ``|`` (bitwise or) operation on -@@ -5197,7 +5197,7 @@ +@@ -5197,7 +5197,7 @@ See :ref:`function` for more information Methods ------- @@ -1552,7 +1438,7 @@ Index: Python-3.10.17/Doc/library/stdtypes.rst Methods are functions that are called using the attribute notation. There are two flavors: built-in methods (such as :meth:`append` on lists) and class -@@ -5244,7 +5244,7 @@ +@@ -5244,7 +5244,7 @@ Code Objects ------------ .. index:: @@ -1561,7 +1447,7 @@ Index: Python-3.10.17/Doc/library/stdtypes.rst single: __code__ (function object attribute) Code objects are used by the implementation to represent "pseudo-compiled" -@@ -5258,8 +5258,8 @@ +@@ -5258,8 +5258,8 @@ Accessing ``__code__`` raises an :ref:`a ``object.__getattr__`` with arguments ``obj`` and ``"__code__"``. .. index:: @@ -1572,7 +1458,7 @@ Index: Python-3.10.17/Doc/library/stdtypes.rst 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. -@@ -5273,8 +5273,8 @@ +@@ -5273,8 +5273,8 @@ Type Objects ------------ .. index:: @@ -1583,11 +1469,9 @@ Index: Python-3.10.17/Doc/library/stdtypes.rst Type objects represent the various object types. An object's type is accessed by the built-in function :func:`type`. There are no special operations on -Index: Python-3.10.17/Doc/library/sys.rst -=================================================================== ---- Python-3.10.17.orig/Doc/library/sys.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/library/sys.rst 2025-04-11 10:08:04.197027382 +0200 -@@ -398,7 +398,7 @@ +--- a/Doc/library/sys.rst ++++ b/Doc/library/sys.rst +@@ -398,7 +398,7 @@ always available. an except clause." For any stack frame, only information about the exception being currently handled is accessible. @@ -1596,11 +1480,9 @@ Index: Python-3.10.17/Doc/library/sys.rst If no exception is being handled anywhere on the stack, a tuple containing three ``None`` values is returned. Otherwise, the values returned are -Index: Python-3.10.17/Doc/library/traceback.rst -=================================================================== ---- Python-3.10.17.orig/Doc/library/traceback.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/library/traceback.rst 2025-04-11 10:08:04.197370305 +0200 -@@ -14,7 +14,7 @@ +--- a/Doc/library/traceback.rst ++++ b/Doc/library/traceback.rst +@@ -14,7 +14,7 @@ interpreter when it prints a stack trace stack traces under program control, such as in a "wrapper" around the interpreter. @@ -1609,11 +1491,9 @@ Index: Python-3.10.17/Doc/library/traceback.rst The module uses traceback objects --- this is the object type that is stored in the :data:`sys.last_traceback` variable and returned as the third item from -Index: Python-3.10.17/Doc/library/types.rst -=================================================================== ---- Python-3.10.17.orig/Doc/library/types.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/library/types.rst 2025-04-11 10:08:04.197625577 +0200 -@@ -146,7 +146,7 @@ +--- a/Doc/library/types.rst ++++ b/Doc/library/types.rst +@@ -146,7 +146,7 @@ Standard names are defined for the follo .. class:: CodeType(**kwargs) @@ -1622,11 +1502,9 @@ Index: Python-3.10.17/Doc/library/types.rst The type for code objects such as returned by :func:`compile`. -Index: Python-3.10.17/Doc/reference/compound_stmts.rst -=================================================================== ---- Python-3.10.17.orig/Doc/reference/compound_stmts.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/reference/compound_stmts.rst 2025-04-11 10:08:04.197921706 +0200 -@@ -84,9 +84,9 @@ +--- a/Doc/reference/compound_stmts.rst ++++ b/Doc/reference/compound_stmts.rst +@@ -84,9 +84,9 @@ The :keyword:`!if` statement ============================ .. index:: @@ -1639,7 +1517,7 @@ Index: Python-3.10.17/Doc/reference/compound_stmts.rst single: : (colon); compound statement The :keyword:`if` statement is used for conditional execution: -@@ -109,8 +109,8 @@ +@@ -109,8 +109,8 @@ The :keyword:`!while` statement =============================== .. index:: @@ -1650,7 +1528,7 @@ Index: Python-3.10.17/Doc/reference/compound_stmts.rst pair: loop; statement single: : (colon); compound statement -@@ -127,8 +127,8 @@ +@@ -127,8 +127,8 @@ suite of the :keyword:`!else` clause, if terminates. .. index:: @@ -1661,7 +1539,7 @@ Index: Python-3.10.17/Doc/reference/compound_stmts.rst A :keyword:`break` statement executed in the first suite terminates the loop without executing the :keyword:`!else` clause's suite. A :keyword:`continue` -@@ -142,12 +142,12 @@ +@@ -142,12 +142,12 @@ The :keyword:`!for` statement ============================= .. index:: @@ -1678,7 +1556,7 @@ Index: Python-3.10.17/Doc/reference/compound_stmts.rst single: : (colon); compound statement The :keyword:`for` statement is used to iterate over the elements of a sequence -@@ -167,8 +167,8 @@ +@@ -167,8 +167,8 @@ is empty or an iterator raises a :exc:`S the :keyword:`!else` clause, if present, is executed, and the loop terminates. .. index:: @@ -1689,7 +1567,7 @@ Index: Python-3.10.17/Doc/reference/compound_stmts.rst A :keyword:`break` statement executed in the first suite terminates the loop without executing the :keyword:`!else` clause's suite. A :keyword:`continue` -@@ -188,7 +188,7 @@ +@@ -188,7 +188,7 @@ those made in the suite of the for-loop: .. index:: @@ -1698,7 +1576,7 @@ Index: Python-3.10.17/Doc/reference/compound_stmts.rst Names in the target list are not deleted when the loop is finished, but if the sequence is empty, they will not have been assigned to at all by the loop. Hint: -@@ -204,11 +204,11 @@ +@@ -204,11 +204,11 @@ The :keyword:`!try` statement ============================= .. index:: @@ -1715,7 +1593,7 @@ Index: Python-3.10.17/Doc/reference/compound_stmts.rst single: : (colon); compound statement The :keyword:`try` statement specifies exception handlers and/or cleanup code -@@ -275,8 +275,8 @@ +@@ -275,8 +275,8 @@ traceback attached to them, they form a keeping all locals in that frame alive until the next garbage collection occurs. .. index:: @@ -1726,7 +1604,7 @@ Index: Python-3.10.17/Doc/reference/compound_stmts.rst Before an except clause's suite is executed, details about the exception are stored in the :mod:`sys` module and can be accessed via :func:`sys.exc_info`. -@@ -305,10 +305,10 @@ +@@ -305,10 +305,10 @@ when leaving an exception handler:: (None, None, None) .. index:: @@ -1741,7 +1619,7 @@ Index: Python-3.10.17/Doc/reference/compound_stmts.rst The optional :keyword:`!else` clause is executed if the control flow leaves the :keyword:`try` suite, no exception was raised, and no :keyword:`return`, -@@ -316,7 +316,7 @@ +@@ -316,7 +316,7 @@ The optional :keyword:`!else` clause is the :keyword:`!else` clause are not handled by the preceding :keyword:`except` clauses. @@ -1750,7 +1628,7 @@ Index: Python-3.10.17/Doc/reference/compound_stmts.rst If :keyword:`finally` is present, it specifies a 'cleanup' handler. The :keyword:`try` clause is executed, including any :keyword:`except` and -@@ -341,9 +341,9 @@ +@@ -341,9 +341,9 @@ The exception information is not availab the :keyword:`finally` clause. .. index:: @@ -1763,7 +1641,7 @@ Index: Python-3.10.17/Doc/reference/compound_stmts.rst When a :keyword:`return`, :keyword:`break` or :keyword:`continue` statement is executed in the :keyword:`try` suite of a :keyword:`!try`...\ :keyword:`!finally` -@@ -379,8 +379,8 @@ +@@ -379,8 +379,8 @@ The :keyword:`!with` statement ============================== .. index:: @@ -1774,7 +1652,7 @@ Index: Python-3.10.17/Doc/reference/compound_stmts.rst single: as; with statement single: , (comma); with statement single: : (colon); compound statement -@@ -496,11 +496,11 @@ +@@ -496,11 +496,11 @@ The :keyword:`!match` statement =============================== .. index:: @@ -1790,7 +1668,7 @@ Index: Python-3.10.17/Doc/reference/compound_stmts.rst pair: match; case single: as; match statement single: : (colon); compound statement -@@ -1101,12 +1101,12 @@ +@@ -1101,12 +1101,12 @@ Function definitions ==================== .. index:: @@ -1806,7 +1684,7 @@ Index: Python-3.10.17/Doc/reference/compound_stmts.rst pair: function; name pair: name; binding single: () (parentheses); function definition -@@ -1274,8 +1274,8 @@ +@@ -1274,8 +1274,8 @@ Class definitions ================= .. index:: @@ -1817,7 +1695,7 @@ Index: Python-3.10.17/Doc/reference/compound_stmts.rst pair: class; definition pair: class; name pair: name; binding -@@ -1374,7 +1374,7 @@ +@@ -1374,7 +1374,7 @@ Coroutines .. versionadded:: 3.5 @@ -1826,7 +1704,7 @@ Index: Python-3.10.17/Doc/reference/compound_stmts.rst .. _`async def`: Coroutine function definition -@@ -1385,8 +1385,8 @@ +@@ -1385,8 +1385,8 @@ Coroutine function definition : ["->" `expression`] ":" `suite` .. index:: @@ -1837,7 +1715,7 @@ Index: Python-3.10.17/Doc/reference/compound_stmts.rst Execution of Python coroutines can be suspended and resumed at many points (see :term:`coroutine`). :keyword:`await` expressions, :keyword:`async for` and -@@ -1408,7 +1408,7 @@ +@@ -1408,7 +1408,7 @@ An example of a coroutine function:: ``await`` and ``async`` are now keywords; previously they were only treated as such inside the body of a coroutine function. @@ -1846,7 +1724,7 @@ Index: Python-3.10.17/Doc/reference/compound_stmts.rst .. _`async for`: The :keyword:`!async for` statement -@@ -1453,7 +1453,7 @@ +@@ -1453,7 +1453,7 @@ It is a :exc:`SyntaxError` to use an ``a body of a coroutine function. @@ -1855,11 +1733,9 @@ Index: Python-3.10.17/Doc/reference/compound_stmts.rst .. _`async with`: The :keyword:`!async with` statement -Index: Python-3.10.17/Doc/reference/datamodel.rst -=================================================================== ---- Python-3.10.17.orig/Doc/reference/datamodel.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/reference/datamodel.rst 2025-04-11 10:08:04.198517037 +0200 -@@ -21,8 +21,8 @@ +--- a/Doc/reference/datamodel.rst ++++ b/Doc/reference/datamodel.rst +@@ -21,8 +21,8 @@ conformance to Von Neumann's model of a represented by objects.) .. index:: @@ -1870,7 +1746,7 @@ Index: Python-3.10.17/Doc/reference/datamodel.rst single: identity of an object single: value of an object single: type of an object -@@ -142,7 +142,7 @@ +@@ -142,7 +142,7 @@ attributes.' These are attributes that are not intended for general use. Their definition may change in the future. None @@ -1879,7 +1755,7 @@ Index: Python-3.10.17/Doc/reference/datamodel.rst This type has a single value. There is a single object with this value. This object is accessed through the built-in name ``None``. It is used to signify the -@@ -150,7 +150,7 @@ +@@ -150,7 +150,7 @@ None don't explicitly return anything. Its truth value is false. NotImplemented @@ -1888,7 +1764,7 @@ Index: Python-3.10.17/Doc/reference/datamodel.rst This type has a single value. There is a single object with this value. This object is accessed through the built-in name ``NotImplemented``. Numeric methods -@@ -171,7 +171,7 @@ +@@ -171,7 +171,7 @@ NotImplemented Ellipsis .. index:: @@ -1897,7 +1773,7 @@ Index: Python-3.10.17/Doc/reference/datamodel.rst single: ...; ellipsis literal This type has a single value. There is a single object with this value. This -@@ -179,7 +179,7 @@ +@@ -179,7 +179,7 @@ Ellipsis ``Ellipsis``. Its truth value is true. :class:`numbers.Number` @@ -1906,7 +1782,7 @@ Index: Python-3.10.17/Doc/reference/datamodel.rst These are created by numeric literals and returned as results by arithmetic operators and arithmetic built-in functions. Numeric objects are immutable; -@@ -209,7 +209,7 @@ +@@ -209,7 +209,7 @@ Ellipsis numbers: :class:`numbers.Integral` @@ -1915,7 +1791,7 @@ Index: Python-3.10.17/Doc/reference/datamodel.rst These represent elements from the mathematical set of integers (positive and negative). -@@ -225,7 +225,7 @@ +@@ -225,7 +225,7 @@ Ellipsis Booleans (:class:`bool`) .. index:: @@ -1924,7 +1800,7 @@ Index: Python-3.10.17/Doc/reference/datamodel.rst single: False single: True -@@ -242,7 +242,7 @@ +@@ -242,7 +242,7 @@ Ellipsis :class:`numbers.Real` (:class:`float`) .. index:: @@ -1933,7 +1809,7 @@ Index: Python-3.10.17/Doc/reference/datamodel.rst pair: floating point; number pair: C; language pair: Java; language -@@ -257,7 +257,7 @@ +@@ -257,7 +257,7 @@ Ellipsis :class:`numbers.Complex` (:class:`complex`) .. index:: @@ -1942,7 +1818,7 @@ Index: Python-3.10.17/Doc/reference/datamodel.rst pair: complex; number These represent complex numbers as a pair of machine-level double precision -@@ -267,8 +267,8 @@ +@@ -267,8 +267,8 @@ Ellipsis Sequences .. index:: @@ -1953,7 +1829,7 @@ Index: Python-3.10.17/Doc/reference/datamodel.rst single: index operation single: item selection single: subscription -@@ -293,8 +293,8 @@ +@@ -293,8 +293,8 @@ Sequences Immutable sequences .. index:: @@ -1964,7 +1840,7 @@ Index: Python-3.10.17/Doc/reference/datamodel.rst An object of an immutable sequence type cannot change once it is created. (If the object contains references to other objects, these other objects may be -@@ -308,8 +308,8 @@ +@@ -308,8 +308,8 @@ Sequences Strings .. index:: @@ -1975,7 +1851,7 @@ Index: Python-3.10.17/Doc/reference/datamodel.rst single: character single: integer single: Unicode -@@ -328,7 +328,7 @@ +@@ -328,7 +328,7 @@ Sequences Tuples .. index:: @@ -1984,7 +1860,7 @@ Index: Python-3.10.17/Doc/reference/datamodel.rst pair: singleton; tuple pair: empty; tuple -@@ -350,8 +350,8 @@ +@@ -350,8 +350,8 @@ Sequences Mutable sequences .. index:: @@ -1995,7 +1871,7 @@ Index: Python-3.10.17/Doc/reference/datamodel.rst pair: assignment; statement single: subscription single: slicing -@@ -363,7 +363,7 @@ +@@ -363,7 +363,7 @@ Sequences There are currently two intrinsic mutable sequence types: Lists @@ -2004,7 +1880,7 @@ Index: Python-3.10.17/Doc/reference/datamodel.rst The items of a list are arbitrary Python objects. Lists are formed by placing a comma-separated list of expressions in square brackets. (Note -@@ -377,15 +377,15 @@ +@@ -377,15 +377,15 @@ Sequences (and hence unhashable), byte arrays otherwise provide the same interface and functionality as immutable :class:`bytes` objects. @@ -2023,7 +1899,7 @@ Index: Python-3.10.17/Doc/reference/datamodel.rst These represent unordered, finite sets of unique, immutable objects. As such, they cannot be indexed by any subscript. However, they can be iterated over, and -@@ -402,14 +402,14 @@ +@@ -402,14 +402,14 @@ Set types There are currently two intrinsic set types: Sets @@ -2040,7 +1916,7 @@ Index: Python-3.10.17/Doc/reference/datamodel.rst These represent an immutable set. They are created by the built-in :func:`frozenset` constructor. As a frozenset is immutable and -@@ -418,9 +418,9 @@ +@@ -418,9 +418,9 @@ Set types Mappings .. index:: @@ -2052,7 +1928,7 @@ Index: Python-3.10.17/Doc/reference/datamodel.rst These represent finite sets of objects indexed by arbitrary index sets. The subscript notation ``a[k]`` selects the item indexed by ``k`` from the mapping -@@ -431,7 +431,7 @@ +@@ -431,7 +431,7 @@ Mappings There is currently a single intrinsic mapping type: Dictionaries @@ -2061,7 +1937,7 @@ Index: Python-3.10.17/Doc/reference/datamodel.rst These represent finite sets of objects indexed by nearly arbitrary values. The only types of values not acceptable as keys are values containing lists or -@@ -451,8 +451,8 @@ +@@ -451,8 +451,8 @@ Mappings section :ref:`dict`). .. index:: @@ -2072,7 +1948,7 @@ Index: Python-3.10.17/Doc/reference/datamodel.rst The extension modules :mod:`dbm.ndbm` and :mod:`dbm.gnu` provide additional examples of mapping types, as does the :mod:`collections` -@@ -465,7 +465,7 @@ +@@ -465,7 +465,7 @@ Mappings Callable types .. index:: @@ -2081,7 +1957,7 @@ Index: Python-3.10.17/Doc/reference/datamodel.rst pair: function; call single: invocation pair: function; argument -@@ -476,8 +476,8 @@ +@@ -476,8 +476,8 @@ Callable types User-defined functions .. index:: pair: user-defined; function @@ -2092,7 +1968,7 @@ Index: Python-3.10.17/Doc/reference/datamodel.rst A user-defined function object is created by a function definition (see section :ref:`function`). It should be called with an argument list -@@ -580,8 +580,8 @@ +@@ -580,8 +580,8 @@ Callable types Instance methods .. index:: @@ -2103,7 +1979,7 @@ Index: Python-3.10.17/Doc/reference/datamodel.rst pair: user-defined; method An instance method object combines a class, a class instance and any -@@ -688,8 +688,8 @@ +@@ -688,8 +688,8 @@ Callable types Built-in functions .. index:: @@ -2114,7 +1990,7 @@ Index: Python-3.10.17/Doc/reference/datamodel.rst pair: C; language A built-in function object is a wrapper around a C function. Examples of -@@ -703,8 +703,8 @@ +@@ -703,8 +703,8 @@ Callable types Built-in methods .. index:: @@ -2125,7 +2001,7 @@ Index: Python-3.10.17/Doc/reference/datamodel.rst pair: built-in; method This is really a different disguise of a built-in function, this time containing -@@ -727,8 +727,8 @@ +@@ -727,8 +727,8 @@ Callable types Modules .. index:: @@ -2136,7 +2012,7 @@ Index: Python-3.10.17/Doc/reference/datamodel.rst Modules are a basic organizational unit of Python code, and are created by the :ref:`import system ` as invoked either by the -@@ -805,12 +805,12 @@ +@@ -805,12 +805,12 @@ Custom classes .. XXX: Could we add that MRO doc as an appendix to the language ref? .. index:: @@ -2153,7 +2029,7 @@ Index: Python-3.10.17/Doc/reference/datamodel.rst pair: class; attribute When a class attribute reference (for class :class:`C`, say) would yield a -@@ -865,8 +865,8 @@ +@@ -865,8 +865,8 @@ Custom classes Class instances .. index:: @@ -2164,7 +2040,7 @@ Index: Python-3.10.17/Doc/reference/datamodel.rst pair: class; instance pair: class instance; attribute -@@ -892,9 +892,9 @@ +@@ -892,9 +892,9 @@ Class instances dictionary directly. .. index:: @@ -2177,7 +2053,7 @@ Index: Python-3.10.17/Doc/reference/datamodel.rst Class instances can pretend to be numbers, sequences, or mappings if they have methods with certain special names. See section :ref:`specialnames`. -@@ -908,8 +908,8 @@ +@@ -908,8 +908,8 @@ Class instances I/O objects (also known as file objects) .. index:: @@ -2188,7 +2064,7 @@ Index: Python-3.10.17/Doc/reference/datamodel.rst single: popen() (in module os) single: makefile() (socket method) single: sys.stdin -@@ -993,7 +993,7 @@ +@@ -993,7 +993,7 @@ Internal types required stack size; :attr:`co_flags` is an integer encoding a number of flags for the interpreter. @@ -2197,7 +2073,7 @@ Index: Python-3.10.17/Doc/reference/datamodel.rst The following flag bits are defined for :attr:`co_flags`: bit ``0x04`` is set if the function uses the ``*arguments`` syntax to accept an arbitrary number of -@@ -1017,7 +1017,7 @@ +@@ -1017,7 +1017,7 @@ Internal types .. _frame-objects: Frame objects @@ -2206,7 +2082,7 @@ Index: Python-3.10.17/Doc/reference/datamodel.rst Frame objects represent execution frames. They may occur in traceback objects (see below), and are also passed to registered trace functions. -@@ -1080,7 +1080,7 @@ +@@ -1080,7 +1080,7 @@ Internal types Traceback objects .. index:: @@ -2215,7 +2091,7 @@ Index: Python-3.10.17/Doc/reference/datamodel.rst pair: stack; trace pair: exception; handler pair: execution; stack -@@ -1114,7 +1114,7 @@ +@@ -1114,7 +1114,7 @@ Internal types single: tb_frame (traceback attribute) single: tb_lineno (traceback attribute) single: tb_lasti (traceback attribute) @@ -2224,7 +2100,7 @@ Index: Python-3.10.17/Doc/reference/datamodel.rst Special read-only attributes: :attr:`tb_frame` points to the execution frame of the current level; -@@ -1140,7 +1140,7 @@ +@@ -1140,7 +1140,7 @@ Internal types and the ``tb_next`` attribute of existing instances can be updated. Slice objects @@ -2233,7 +2109,7 @@ Index: Python-3.10.17/Doc/reference/datamodel.rst Slice objects are used to represent slices for :meth:`~object.__getitem__` -@@ -1273,7 +1273,7 @@ +@@ -1273,7 +1273,7 @@ Basic customization .. index:: single: destructor single: finalizer @@ -2242,7 +2118,7 @@ Index: Python-3.10.17/Doc/reference/datamodel.rst Called when the instance is about to be destroyed. This is also called a finalizer or (improperly) a destructor. If a base class has a -@@ -1374,7 +1374,7 @@ +@@ -1374,7 +1374,7 @@ Basic customization .. method:: object.__bytes__(self) @@ -2251,7 +2127,7 @@ Index: Python-3.10.17/Doc/reference/datamodel.rst Called by :ref:`bytes ` to compute a byte-string representation of an object. This should return a :class:`bytes` object. -@@ -1382,7 +1382,7 @@ +@@ -1382,7 +1382,7 @@ Basic customization .. index:: single: string; __format__() (object method) pair: string; conversion @@ -2260,7 +2136,7 @@ Index: Python-3.10.17/Doc/reference/datamodel.rst .. method:: object.__format__(self, format_spec) -@@ -1461,8 +1461,8 @@ +@@ -1461,8 +1461,8 @@ Basic customization .. method:: object.__hash__(self) .. index:: @@ -2271,7 +2147,7 @@ Index: Python-3.10.17/Doc/reference/datamodel.rst Called by built-in function :func:`hash` and for operations on members of hashed collections including :class:`set`, :class:`frozenset`, and -@@ -1981,7 +1981,7 @@ +@@ -1981,7 +1981,7 @@ Metaclasses .. index:: single: metaclass @@ -2280,7 +2156,7 @@ Index: Python-3.10.17/Doc/reference/datamodel.rst single: = (equals); class definition By default, classes are constructed using :func:`type`. The class body is -@@ -2395,7 +2395,7 @@ +@@ -2395,7 +2395,7 @@ through the object's keys; for sequences .. method:: object.__len__(self) .. index:: @@ -2289,7 +2165,7 @@ Index: Python-3.10.17/Doc/reference/datamodel.rst single: __bool__() (object method) Called to implement the built-in function :func:`len`. Should return the length -@@ -2424,7 +2424,7 @@ +@@ -2424,7 +2424,7 @@ through the object's keys; for sequences .. versionadded:: 3.4 @@ -2298,7 +2174,7 @@ Index: Python-3.10.17/Doc/reference/datamodel.rst .. note:: -@@ -2553,9 +2553,9 @@ +@@ -2553,9 +2553,9 @@ left undefined. object.__or__(self, other) .. index:: @@ -2311,7 +2187,7 @@ Index: Python-3.10.17/Doc/reference/datamodel.rst These methods are called to implement the binary arithmetic operations (``+``, ``-``, ``*``, ``@``, ``/``, ``//``, ``%``, :func:`divmod`, -@@ -2588,8 +2588,8 @@ +@@ -2588,8 +2588,8 @@ left undefined. object.__ror__(self, other) .. index:: @@ -2322,7 +2198,7 @@ Index: Python-3.10.17/Doc/reference/datamodel.rst These methods are called to implement the binary arithmetic operations (``+``, ``-``, ``*``, ``@``, ``/``, ``//``, ``%``, :func:`divmod`, -@@ -2600,7 +2600,7 @@ +@@ -2600,7 +2600,7 @@ left undefined. an instance of a class that has an :meth:`__rsub__` method, ``y.__rsub__(x)`` is called if ``x.__sub__(y)`` returns *NotImplemented*. @@ -2331,7 +2207,7 @@ Index: Python-3.10.17/Doc/reference/datamodel.rst Note that ternary :func:`pow` will not try calling :meth:`__rpow__` (the coercion rules would become too complicated). -@@ -2647,7 +2647,7 @@ +@@ -2647,7 +2647,7 @@ left undefined. object.__abs__(self) object.__invert__(self) @@ -2340,7 +2216,7 @@ Index: Python-3.10.17/Doc/reference/datamodel.rst Called to implement the unary arithmetic operations (``-``, ``+``, :func:`abs` and ``~``). -@@ -2658,9 +2658,9 @@ +@@ -2658,9 +2658,9 @@ left undefined. object.__float__(self) .. index:: @@ -2353,7 +2229,7 @@ Index: Python-3.10.17/Doc/reference/datamodel.rst Called to implement the built-in functions :func:`complex`, :func:`int` and :func:`float`. Should return a value -@@ -2685,7 +2685,7 @@ +@@ -2685,7 +2685,7 @@ left undefined. object.__floor__(self) object.__ceil__(self) @@ -2362,7 +2238,7 @@ Index: Python-3.10.17/Doc/reference/datamodel.rst Called to implement the built-in function :func:`round` and :mod:`math` functions :func:`~math.trunc`, :func:`~math.floor` and :func:`~math.ceil`. -@@ -2710,7 +2710,7 @@ +@@ -2710,7 +2710,7 @@ execution of the block of code. Context used by directly invoking their methods. .. index:: @@ -2371,11 +2247,9 @@ Index: Python-3.10.17/Doc/reference/datamodel.rst single: context manager Typical uses of context managers include saving and restoring various kinds of -Index: Python-3.10.17/Doc/reference/executionmodel.rst -=================================================================== ---- Python-3.10.17.orig/Doc/reference/executionmodel.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/reference/executionmodel.rst 2025-04-11 10:08:04.198995733 +0200 -@@ -151,7 +151,7 @@ +--- a/Doc/reference/executionmodel.rst ++++ b/Doc/reference/executionmodel.rst +@@ -151,7 +151,7 @@ to previously bound variables in the nea :exc:`SyntaxError` is raised at compile time if the given name does not exist in any enclosing function scope. @@ -2384,11 +2258,9 @@ Index: Python-3.10.17/Doc/reference/executionmodel.rst The namespace for a module is automatically created the first time a module is imported. The main module for a script is always called :mod:`__main__`. -Index: Python-3.10.17/Doc/reference/expressions.rst -=================================================================== ---- Python-3.10.17.orig/Doc/reference/expressions.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/reference/expressions.rst 2025-04-11 10:08:04.199232427 +0200 -@@ -71,7 +71,7 @@ +--- a/Doc/reference/expressions.rst ++++ b/Doc/reference/expressions.rst +@@ -71,7 +71,7 @@ An identifier occurring as an atom is a for lexical definition and section :ref:`naming` for documentation of naming and binding. @@ -2397,7 +2269,7 @@ Index: Python-3.10.17/Doc/reference/expressions.rst When the name is bound to an object, evaluation of the atom yields that object. When a name is not bound, an attempt to evaluate it raises a :exc:`NameError` -@@ -240,7 +240,7 @@ +@@ -240,7 +240,7 @@ List displays pair: list; display pair: list; comprehensions pair: empty; list @@ -2406,7 +2278,7 @@ Index: Python-3.10.17/Doc/reference/expressions.rst single: [] (square brackets); list expression single: , (comma); expression list -@@ -265,7 +265,7 @@ +@@ -265,7 +265,7 @@ Set displays .. index:: pair: set; display pair: set; comprehensions @@ -2415,7 +2287,7 @@ Index: Python-3.10.17/Doc/reference/expressions.rst single: {} (curly brackets); set expression single: , (comma); expression list -@@ -294,7 +294,7 @@ +@@ -294,7 +294,7 @@ Dictionary displays pair: dictionary; display pair: dictionary; comprehensions key, datum, key/datum pair @@ -2424,7 +2296,7 @@ Index: Python-3.10.17/Doc/reference/expressions.rst single: {} (curly brackets); dictionary expression single: : (colon); in dictionary expressions single: , (comma); in dictionary displays -@@ -356,7 +356,7 @@ +@@ -356,7 +356,7 @@ Generator expressions .. index:: pair: generator; expression @@ -2433,7 +2305,7 @@ Index: Python-3.10.17/Doc/reference/expressions.rst single: () (parentheses); generator expression A generator expression is a compact generator notation in parentheses: -@@ -410,8 +410,8 @@ +@@ -410,8 +410,8 @@ Yield expressions ----------------- .. index:: @@ -2444,7 +2316,7 @@ Index: Python-3.10.17/Doc/reference/expressions.rst pair: yield; expression pair: generator; function -@@ -517,7 +517,7 @@ +@@ -517,7 +517,7 @@ on the right hand side of an assignment The proposal that expanded on :pep:`492` by adding generator capabilities to coroutine functions. @@ -2453,7 +2325,7 @@ Index: Python-3.10.17/Doc/reference/expressions.rst .. _generator-methods: Generator-iterator methods -@@ -529,7 +529,7 @@ +@@ -529,7 +529,7 @@ be used to control the execution of a ge Note that calling any of the generator methods below when the generator is already executing raises a :exc:`ValueError` exception. @@ -2462,7 +2334,7 @@ Index: Python-3.10.17/Doc/reference/expressions.rst .. method:: generator.__next__() -@@ -579,7 +579,7 @@ +@@ -579,7 +579,7 @@ is already executing raises a :exc:`Valu :attr:`~BaseException.__traceback__` attribute stored in *value* may be cleared. @@ -2471,7 +2343,7 @@ Index: Python-3.10.17/Doc/reference/expressions.rst .. method:: generator.close() -@@ -691,7 +691,7 @@ +@@ -691,7 +691,7 @@ of a *finalizer* method see the implemen The expression ``yield from `` is a syntax error when used in an asynchronous generator function. @@ -2480,7 +2352,7 @@ Index: Python-3.10.17/Doc/reference/expressions.rst .. _asynchronous-generator-methods: Asynchronous generator-iterator methods -@@ -701,7 +701,7 @@ +@@ -701,7 +701,7 @@ This subsection describes the methods of which are used to control the execution of a generator function. @@ -2489,7 +2361,7 @@ Index: Python-3.10.17/Doc/reference/expressions.rst .. coroutinemethod:: agen.__anext__() -@@ -748,7 +748,7 @@ +@@ -748,7 +748,7 @@ which are used to control the execution raises a different exception, then when the awaitable is run that exception propagates to the caller of the awaitable. @@ -2498,7 +2370,7 @@ Index: Python-3.10.17/Doc/reference/expressions.rst .. coroutinemethod:: agen.aclose() -@@ -795,9 +795,9 @@ +@@ -795,9 +795,9 @@ An attribute reference is a primary foll attributeref: `primary` "." `identifier` .. index:: @@ -2511,7 +2383,7 @@ Index: Python-3.10.17/Doc/reference/expressions.rst 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 -@@ -818,12 +818,12 @@ +@@ -818,12 +818,12 @@ Subscriptions single: [] (square brackets); subscription .. index:: @@ -2530,7 +2402,7 @@ Index: Python-3.10.17/Doc/reference/expressions.rst pair: sequence; item The subscription of an instance of a :ref:`container class ` -@@ -891,10 +891,10 @@ +@@ -891,10 +891,10 @@ Slicings single: , (comma); slicing .. index:: @@ -2545,7 +2417,7 @@ Index: Python-3.10.17/Doc/reference/expressions.rst 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 -@@ -935,7 +935,7 @@ +@@ -935,7 +935,7 @@ substituting ``None`` for missing expres .. index:: @@ -2554,7 +2426,7 @@ Index: Python-3.10.17/Doc/reference/expressions.rst single: call single: argument; call semantics single: () (parentheses); call -@@ -1085,8 +1085,8 @@ +@@ -1085,8 +1085,8 @@ a user-defined function: .. index:: pair: function; call triple: user-defined; function; call @@ -2565,7 +2437,7 @@ Index: Python-3.10.17/Doc/reference/expressions.rst 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 -@@ -1100,25 +1100,25 @@ +@@ -1100,25 +1100,25 @@ a built-in function or method: pair: built-in function; call pair: method; call pair: built-in method; call @@ -2598,7 +2470,7 @@ Index: Python-3.10.17/Doc/reference/expressions.rst pair: class instance; call The corresponding user-defined function is called, with an argument list that is -@@ -1134,7 +1134,7 @@ +@@ -1134,7 +1134,7 @@ a class instance: if that method was called. @@ -2607,7 +2479,7 @@ Index: Python-3.10.17/Doc/reference/expressions.rst .. _await: Await expression -@@ -1156,7 +1156,7 @@ +@@ -1156,7 +1156,7 @@ The power operator .. index:: pair: power; operation @@ -2616,7 +2488,7 @@ Index: Python-3.10.17/Doc/reference/expressions.rst 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: -@@ -1217,7 +1217,7 @@ +@@ -1217,7 +1217,7 @@ operation can be overridden with the :me .. index:: single: inversion @@ -2625,7 +2497,7 @@ Index: Python-3.10.17/Doc/reference/expressions.rst The unary ``~`` (invert) operator yields the bitwise inversion of its integer argument. The bitwise inversion of ``x`` is defined as ``-(x+1)``. It only -@@ -1226,7 +1226,7 @@ +@@ -1226,7 +1226,7 @@ applies to integral numbers or to custom @@ -2634,7 +2506,7 @@ Index: Python-3.10.17/Doc/reference/expressions.rst In all three cases, if the argument does not have the proper type, a :exc:`TypeError` exception is raised. -@@ -1252,7 +1252,7 @@ +@@ -1252,7 +1252,7 @@ operators and one for additive operators .. index:: single: multiplication @@ -2643,7 +2515,7 @@ Index: Python-3.10.17/Doc/reference/expressions.rst The ``*`` (multiplication) operator yields the product of its arguments. The arguments must either both be numbers, or one argument must be an integer and -@@ -1265,7 +1265,7 @@ +@@ -1265,7 +1265,7 @@ This operation can be customized using t .. index:: single: matrix multiplication @@ -2652,7 +2524,7 @@ Index: Python-3.10.17/Doc/reference/expressions.rst The ``@`` (at) operator is intended to be used for matrix multiplication. No builtin Python types implement this operator. -@@ -1273,10 +1273,10 @@ +@@ -1273,10 +1273,10 @@ builtin Python types implement this oper .. versionadded:: 3.5 .. index:: @@ -2666,7 +2538,7 @@ Index: Python-3.10.17/Doc/reference/expressions.rst The ``/`` (division) and ``//`` (floor division) operators yield the quotient of their arguments. The numeric arguments are first converted to a common type. -@@ -1290,7 +1290,7 @@ +@@ -1290,7 +1290,7 @@ This operation can be customized using t .. index:: single: modulo @@ -2675,7 +2547,7 @@ Index: Python-3.10.17/Doc/reference/expressions.rst The ``%`` (modulo) operator yields the remainder from the division of the first argument by the second. The numeric arguments are first converted to a common -@@ -1348,8 +1348,8 @@ +@@ -1348,8 +1348,8 @@ Shifting operations .. index:: pair: shifting; operation @@ -2686,7 +2558,7 @@ Index: Python-3.10.17/Doc/reference/expressions.rst The shifting operations have lower priority than the arithmetic operations: -@@ -1362,7 +1362,7 @@ +@@ -1362,7 +1362,7 @@ the left or right by the number of bits This operation can be customized using the special :meth:`__lshift__` and :meth:`__rshift__` methods. @@ -2695,7 +2567,7 @@ Index: Python-3.10.17/Doc/reference/expressions.rst 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)``. -@@ -1384,7 +1384,7 @@ +@@ -1384,7 +1384,7 @@ Each of the three bitwise operations has .. index:: pair: bitwise; and @@ -2704,7 +2576,7 @@ Index: Python-3.10.17/Doc/reference/expressions.rst The ``&`` operator yields the bitwise AND of its arguments, which must be integers or one of them must be a custom object overriding :meth:`__and__` or -@@ -1393,7 +1393,7 @@ +@@ -1393,7 +1393,7 @@ integers or one of them must be a custom .. index:: pair: bitwise; xor pair: exclusive; or @@ -2713,7 +2585,7 @@ Index: Python-3.10.17/Doc/reference/expressions.rst 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:`__xor__` or -@@ -1402,7 +1402,7 @@ +@@ -1402,7 +1402,7 @@ must be integers or one of them must be .. index:: pair: bitwise; or pair: inclusive; or @@ -2722,7 +2594,7 @@ Index: Python-3.10.17/Doc/reference/expressions.rst 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:`__or__` or -@@ -1417,12 +1417,12 @@ +@@ -1417,12 +1417,12 @@ Comparisons .. index:: single: comparison pair: C; language @@ -2741,7 +2613,7 @@ Index: Python-3.10.17/Doc/reference/expressions.rst Unlike C, all comparison operations in Python have the same priority, which is lower than that of any arithmetic, shifting or bitwise operation. Also unlike -@@ -1652,17 +1652,17 @@ +@@ -1652,17 +1652,17 @@ raises the :exc:`IndexError` exception. if :keyword:`in` raised that exception). .. index:: @@ -2764,7 +2636,7 @@ Index: Python-3.10.17/Doc/reference/expressions.rst pair: identity; test -@@ -1702,17 +1702,17 @@ +@@ -1702,17 +1702,17 @@ control flow statements, the following v other values are interpreted as true. User-defined objects can customize their truth value by providing a :meth:`__bool__` method. @@ -2785,7 +2657,7 @@ Index: Python-3.10.17/Doc/reference/expressions.rst 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. -@@ -1837,7 +1837,7 @@ +@@ -1837,7 +1837,7 @@ Expression lists starred_expression: `expression` | (`starred_item` ",")* [`starred_item`] starred_item: `assignment_expression` | "*" `or_expr` @@ -2794,11 +2666,9 @@ Index: Python-3.10.17/Doc/reference/expressions.rst Except when part of a list or set display, an expression list containing at least one comma yields a tuple. The length of -Index: Python-3.10.17/Doc/reference/simple_stmts.rst -=================================================================== ---- Python-3.10.17.orig/Doc/reference/simple_stmts.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/reference/simple_stmts.rst 2025-04-11 10:08:04.199684443 +0200 -@@ -53,8 +53,8 @@ +--- a/Doc/reference/simple_stmts.rst ++++ b/Doc/reference/simple_stmts.rst +@@ -53,8 +53,8 @@ An expression statement evaluates the ex expression). .. index:: @@ -2809,7 +2679,7 @@ Index: Python-3.10.17/Doc/reference/simple_stmts.rst pair: string; conversion single: output pair: standard; output -@@ -76,7 +76,7 @@ +@@ -76,7 +76,7 @@ Assignment statements pair: assignment; statement pair: binding; name pair: rebinding; name @@ -2818,7 +2688,7 @@ Index: Python-3.10.17/Doc/reference/simple_stmts.rst pair: attribute; assignment Assignment statements are used to (re)bind names to values and to modify -@@ -185,7 +185,7 @@ +@@ -185,7 +185,7 @@ Assignment of an object to a single targ .. index:: pair: subscription; assignment @@ -2827,7 +2697,7 @@ Index: Python-3.10.17/Doc/reference/simple_stmts.rst * If the target is a subscription: The primary expression in the reference is evaluated. It should yield either a mutable sequence object (such as a list) -@@ -193,8 +193,8 @@ +@@ -193,8 +193,8 @@ Assignment of an object to a single targ evaluated. .. index:: @@ -2838,7 +2708,7 @@ Index: Python-3.10.17/Doc/reference/simple_stmts.rst If the primary is a mutable sequence object (such as a list), the subscript must yield an integer. If it is negative, the sequence's length is added to -@@ -204,8 +204,8 @@ +@@ -204,8 +204,8 @@ Assignment of an object to a single targ raised (assignment to a subscripted sequence cannot add new items to a list). .. index:: @@ -2849,7 +2719,7 @@ Index: Python-3.10.17/Doc/reference/simple_stmts.rst If the primary is a mapping object (such as a dictionary), the subscript must have a type compatible with the mapping's key type, and the mapping is then -@@ -376,7 +376,7 @@ +@@ -376,7 +376,7 @@ The :keyword:`!assert` statement ================================ .. index:: @@ -2858,7 +2728,7 @@ Index: Python-3.10.17/Doc/reference/simple_stmts.rst pair: debugging; assertions single: , (comma); expression list -@@ -398,7 +398,7 @@ +@@ -398,7 +398,7 @@ The extended form, ``assert expression1, .. index:: single: __debug__ @@ -2867,7 +2737,7 @@ Index: Python-3.10.17/Doc/reference/simple_stmts.rst These equivalences assume that :const:`__debug__` and :exc:`AssertionError` refer to the built-in variables with those names. In the current implementation, the -@@ -419,7 +419,7 @@ +@@ -419,7 +419,7 @@ The :keyword:`!pass` statement ============================== .. index:: @@ -2876,7 +2746,7 @@ Index: Python-3.10.17/Doc/reference/simple_stmts.rst pair: null; operation pair: null; operation -@@ -441,7 +441,7 @@ +@@ -441,7 +441,7 @@ The :keyword:`!del` statement ============================= .. index:: @@ -2885,7 +2755,7 @@ Index: Python-3.10.17/Doc/reference/simple_stmts.rst pair: deletion; target triple: deletion; target; list -@@ -454,7 +454,7 @@ +@@ -454,7 +454,7 @@ Rather than spelling it out in full deta Deletion of a target list recursively deletes each target, from left to right. .. index:: @@ -2894,7 +2764,7 @@ Index: Python-3.10.17/Doc/reference/simple_stmts.rst pair: unbinding; name Deletion of a name removes the binding of that name from the local or global -@@ -480,7 +480,7 @@ +@@ -480,7 +480,7 @@ The :keyword:`!return` statement ================================ .. index:: @@ -2903,7 +2773,7 @@ Index: Python-3.10.17/Doc/reference/simple_stmts.rst pair: function; definition pair: class; definition -@@ -495,7 +495,7 @@ +@@ -495,7 +495,7 @@ If an expression list is present, it is :keyword:`return` leaves the current function call with the expression list (or ``None``) as return value. @@ -2912,7 +2782,7 @@ Index: Python-3.10.17/Doc/reference/simple_stmts.rst When :keyword:`return` passes control out of a :keyword:`try` statement with a :keyword:`finally` clause, that :keyword:`!finally` clause is executed before -@@ -517,11 +517,11 @@ +@@ -517,11 +517,11 @@ The :keyword:`!yield` statement =============================== .. index:: @@ -2926,7 +2796,7 @@ Index: Python-3.10.17/Doc/reference/simple_stmts.rst .. productionlist:: python-grammar yield_stmt: `yield_expression` -@@ -553,7 +553,7 @@ +@@ -553,7 +553,7 @@ The :keyword:`!raise` statement =============================== .. index:: @@ -2935,7 +2805,7 @@ Index: Python-3.10.17/Doc/reference/simple_stmts.rst single: exception pair: raising; exception single: __traceback__ (exception attribute) -@@ -574,7 +574,7 @@ +@@ -574,7 +574,7 @@ instantiating the class with no argument The :dfn:`type` of the exception is the exception instance's class, the :dfn:`value` is the instance itself. @@ -2944,7 +2814,7 @@ Index: Python-3.10.17/Doc/reference/simple_stmts.rst A traceback object is normally created automatically when an exception is raised and attached to it as the :attr:`__traceback__` attribute, which is writable. -@@ -661,9 +661,9 @@ +@@ -661,9 +661,9 @@ The :keyword:`!break` statement =============================== .. index:: @@ -2957,7 +2827,7 @@ Index: Python-3.10.17/Doc/reference/simple_stmts.rst pair: loop; statement .. productionlist:: python-grammar -@@ -673,7 +673,7 @@ +@@ -673,7 +673,7 @@ The :keyword:`!break` statement :keyword:`while` loop, but not nested in a function or class definition within that loop. @@ -2966,7 +2836,7 @@ Index: Python-3.10.17/Doc/reference/simple_stmts.rst pair: loop control; target It terminates the nearest enclosing loop, skipping the optional :keyword:`!else` -@@ -682,7 +682,7 @@ +@@ -682,7 +682,7 @@ clause if the loop has one. If a :keyword:`for` loop is terminated by :keyword:`break`, the loop control target keeps its current value. @@ -2975,7 +2845,7 @@ Index: Python-3.10.17/Doc/reference/simple_stmts.rst When :keyword:`break` passes control out of a :keyword:`try` statement with a :keyword:`finally` clause, that :keyword:`!finally` clause is executed before -@@ -695,11 +695,11 @@ +@@ -695,11 +695,11 @@ The :keyword:`!continue` statement ================================== .. index:: @@ -2991,7 +2861,7 @@ Index: Python-3.10.17/Doc/reference/simple_stmts.rst .. productionlist:: python-grammar continue_stmt: "continue" -@@ -720,12 +720,12 @@ +@@ -720,12 +720,12 @@ The :keyword:`!import` statement ================================ .. index:: @@ -3008,7 +2878,7 @@ Index: Python-3.10.17/Doc/reference/simple_stmts.rst single: , (comma); import statement .. productionlist:: python-grammar -@@ -936,7 +936,7 @@ +@@ -936,7 +936,7 @@ The :keyword:`!global` statement ================================ .. index:: @@ -3017,7 +2887,7 @@ Index: Python-3.10.17/Doc/reference/simple_stmts.rst triple: global; name; binding single: , (comma); identifier list -@@ -964,9 +964,9 @@ +@@ -964,9 +964,9 @@ annotation. them or silently change the meaning of the program. .. index:: @@ -3030,7 +2900,7 @@ Index: Python-3.10.17/Doc/reference/simple_stmts.rst **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` statement. -@@ -982,7 +982,7 @@ +@@ -982,7 +982,7 @@ call. The same applies to the :func:`ev The :keyword:`!nonlocal` statement ================================== @@ -3039,11 +2909,9 @@ Index: Python-3.10.17/Doc/reference/simple_stmts.rst single: , (comma); identifier list .. productionlist:: python-grammar -Index: Python-3.10.17/Doc/reference/toplevel_components.rst -=================================================================== ---- Python-3.10.17.orig/Doc/reference/toplevel_components.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/reference/toplevel_components.rst 2025-04-11 10:08:04.200022128 +0200 -@@ -21,9 +21,9 @@ +--- a/Doc/reference/toplevel_components.rst ++++ b/Doc/reference/toplevel_components.rst +@@ -21,9 +21,9 @@ Complete Python programs .. index:: single: program .. index:: @@ -3056,7 +2924,7 @@ Index: Python-3.10.17/Doc/reference/toplevel_components.rst While a language specification need not prescribe how the language interpreter is invoked, it is useful to have a notion of a complete Python program. A -@@ -38,7 +38,7 @@ +@@ -38,7 +38,7 @@ the next section. .. index:: single: interactive mode @@ -3065,7 +2933,7 @@ Index: Python-3.10.17/Doc/reference/toplevel_components.rst The interpreter may also be invoked in interactive mode; in this case, it does not read and execute a complete program but reads and executes one statement -@@ -98,7 +98,7 @@ +@@ -98,7 +98,7 @@ Expression input ================ .. index:: single: input @@ -3074,11 +2942,9 @@ Index: Python-3.10.17/Doc/reference/toplevel_components.rst :func:`eval` is used for expression input. It ignores leading whitespace. The string argument to :func:`eval` must have the following form: -Index: Python-3.10.17/Doc/tools/extensions/pyspecific.py -=================================================================== ---- Python-3.10.17.orig/Doc/tools/extensions/pyspecific.py 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/tools/extensions/pyspecific.py 2025-04-11 10:08:04.200327546 +0200 -@@ -644,6 +644,30 @@ +--- a/Doc/tools/extensions/pyspecific.py ++++ b/Doc/tools/extensions/pyspecific.py +@@ -644,6 +644,30 @@ def process_audit_events(app, doctree, f node.replace_self(table) @@ -3109,7 +2975,7 @@ Index: Python-3.10.17/Doc/tools/extensions/pyspecific.py def setup(app): app.add_role('issue', issue_role) app.add_role('gh', gh_issue_role) -@@ -670,6 +694,7 @@ +@@ -670,6 +694,7 @@ def setup(app): app.add_directive_to_domain('py', 'awaitablemethod', PyAwaitableMethod) app.add_directive_to_domain('py', 'abstractmethod', PyAbstractMethod) app.add_directive('miscnews', MiscNews) @@ -3117,11 +2983,9 @@ Index: Python-3.10.17/Doc/tools/extensions/pyspecific.py app.connect('doctree-resolved', process_audit_events) app.connect('env-merge-info', audit_events_merge) app.connect('env-purge-doc', audit_events_purge) -Index: Python-3.10.17/Doc/tutorial/classes.rst -=================================================================== ---- Python-3.10.17.orig/Doc/tutorial/classes.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/tutorial/classes.rst 2025-04-11 10:08:04.200702526 +0200 -@@ -344,7 +344,7 @@ +--- a/Doc/tutorial/classes.rst ++++ b/Doc/tutorial/classes.rst +@@ -344,7 +344,7 @@ list objects have methods called append, However, in the following discussion, we'll use the term method exclusively to mean methods of class instance objects, unless explicitly stated otherwise.) @@ -3130,11 +2994,9 @@ Index: Python-3.10.17/Doc/tutorial/classes.rst Valid method names of an instance object depend on its class. By definition, all attributes of a class that are function objects define corresponding -Index: Python-3.10.17/Doc/tutorial/controlflow.rst -=================================================================== ---- Python-3.10.17.orig/Doc/tutorial/controlflow.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/tutorial/controlflow.rst 2025-04-11 10:08:04.201028129 +0200 -@@ -46,7 +46,7 @@ +--- a/Doc/tutorial/controlflow.rst ++++ b/Doc/tutorial/controlflow.rst +@@ -46,7 +46,7 @@ details see :ref:`tut-match`. ========================== .. index:: @@ -3143,11 +3005,9 @@ Index: Python-3.10.17/Doc/tutorial/controlflow.rst The :keyword:`for` statement in Python differs a bit from what you may be used to in C or Pascal. Rather than always iterating over an arithmetic progression -Index: Python-3.10.17/Doc/tutorial/inputoutput.rst -=================================================================== ---- Python-3.10.17.orig/Doc/tutorial/inputoutput.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/tutorial/inputoutput.rst 2025-04-11 10:08:04.201284099 +0200 -@@ -285,8 +285,8 @@ +--- a/Doc/tutorial/inputoutput.rst ++++ b/Doc/tutorial/inputoutput.rst +@@ -285,8 +285,8 @@ Reading and Writing Files ========================= .. index:: @@ -3158,7 +3018,7 @@ Index: Python-3.10.17/Doc/tutorial/inputoutput.rst :func:`open` returns a :term:`file object`, and is most commonly used with two positional arguments and one keyword argument: -@@ -466,7 +466,7 @@ +@@ -466,7 +466,7 @@ Reference for a complete guide to file o Saving structured data with :mod:`json` --------------------------------------- @@ -3167,11 +3027,9 @@ Index: Python-3.10.17/Doc/tutorial/inputoutput.rst Strings can easily be written to and read from a file. Numbers take a bit more effort, since the :meth:`read` method only returns strings, which will have to -Index: Python-3.10.17/Doc/tutorial/modules.rst -=================================================================== ---- Python-3.10.17.orig/Doc/tutorial/modules.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/tutorial/modules.rst 2025-04-11 10:08:04.201533574 +0200 -@@ -260,7 +260,7 @@ +--- a/Doc/tutorial/modules.rst ++++ b/Doc/tutorial/modules.rst +@@ -260,7 +260,7 @@ Some tips for experts: Standard Modules ================ @@ -3180,7 +3038,7 @@ Index: Python-3.10.17/Doc/tutorial/modules.rst Python comes with a library of standard modules, described in a separate document, the Python Library Reference ("Library Reference" hereafter). Some -@@ -341,7 +341,7 @@ +@@ -341,7 +341,7 @@ Without arguments, :func:`dir` lists the Note that it lists all types of names: variables, modules, functions, etc. @@ -3189,11 +3047,9 @@ Index: Python-3.10.17/Doc/tutorial/modules.rst :func:`dir` does not list the names of built-in functions and variables. If you want a list of those, they are defined in the standard module -Index: Python-3.10.17/Doc/tutorial/stdlib.rst -=================================================================== ---- Python-3.10.17.orig/Doc/tutorial/stdlib.rst 2025-04-08 14:10:59.000000000 +0200 -+++ Python-3.10.17/Doc/tutorial/stdlib.rst 2025-04-11 10:08:04.201783118 +0200 -@@ -24,7 +24,7 @@ +--- a/Doc/tutorial/stdlib.rst ++++ b/Doc/tutorial/stdlib.rst +@@ -24,7 +24,7 @@ Be sure to use the ``import os`` style i will keep :func:`os.open` from shadowing the built-in :func:`open` function which operates much differently.