120078 Commits

Author SHA1 Message Date
Miss Islington (bot)
49da170709
[3.12] gh-116510: Fix a Crash Due to Shared Immortal Interned Strings (gh-125205)
Fix a crash caused by immortal interned strings being shared between
sub-interpreters that use basic single-phase init. In that case, the string
can be used by an interpreter that outlives the interpreter that created and
interned it. For interpreters that share obmalloc state, also share the
interned dict with the main interpreter.

This is an un-revert of gh-124646 that then addresses the Py_TRACE_REFS
failures identified by gh-124785 (i.e. backporting gh-125709 too).

(cherry picked from commit f2cb39947093feda3ff85b8dc820922cc5e5f954, AKA gh-124865)

Co-authored-by: Eric Snow <ericsnowcurrently@gmail.com>
2024-12-03 10:26:25 -07:00
Miss Islington (bot)
b49e902b81
[3.12] gh-126876: Fix socket internal_select() for large timeout (GH-126968) (#127003)
gh-126876: Fix socket internal_select() for large timeout (GH-126968)

If the timeout is larger than INT_MAX, replace it with INT_MAX, in
the poll() code path.

Add an unit test.
(cherry picked from commit b3687ad454c4ac54c8599a10f3ace8a13ca48915)

Co-authored-by: Victor Stinner <vstinner@python.org>
2024-12-03 14:12:59 +00:00
Miss Islington (bot)
c40656eeff
[3.12] gh-127253: Note that Stable ABI is about ABI stability (GH-127254) (GH-127558)
(cherry picked from commit 35d37d6592d1be71ea76042165f6cbfa6c4c3a17)

Co-authored-by: Petr Viktorin <encukou@gmail.com>
2024-12-03 13:57:58 +01:00
Miss Islington (bot)
af2d24b5ad
gh-119826: Improved fallback for ntpath.abspath() on Windows (GH-119938)
(cherry picked from commit 4b00aba42e4d9440d22e399ec2122fe8601bbe54)

Co-authored-by: Nice Zombies <nineteendo19d0@gmail.com>
2024-12-02 20:03:44 +00:00
Miss Islington (bot)
8fffbb0982
[3.12] gh-113841: fix possible undefined division by 0 in _Py_c_pow() (GH-127211) (GH-127216) (GH-127530)
[3.13] gh-113841: fix possible undefined division by 0 in _Py_c_pow() (GH-127211) (GH-127216)

Note, that transformed expression is not an equivalent for original one (1/exp(-x) != exp(x) in general for floating-point numbers). Though, the difference seems to be ~1ULP for good libm implementations.

It's more interesting why division was used from beginning. Closest algorithm I've found (no error checks, of course;)) - it's Algorithm 190 from ACM: https://dl.acm.org/doi/10.1145/366663.366679. It uses subtraction in the exponent.

(cherry picked from commit f7bb658124aba74be4c13f498bf46cfded710ef9)

(cherry picked from commit f41d8d89e79d634895868656f50a0e16e339f9d6)

Co-authored-by: Sergey B Kirpichev <skirpichev@gmail.com>
2024-12-02 19:47:42 +00:00
Sergey B Kirpichev
34fe4af8a2
[3.12] gh-126618: fix repr(itertools.count(sys.maxsize)) (GH-127048) (#127510)
(cherry picked from commit 930ba0ce605eee9e3b992fa368b00a3f2b7dc4c1)

Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
2024-12-02 15:19:59 +01:00
Miss Islington (bot)
34137cbd23
[3.12] gh-126699: allow AsyncIterator to be used as a base for Protocols (GH-126702) (#126761)
gh-126699: allow AsyncIterator to be used as a base for Protocols (GH-126702)
(cherry picked from commit feb3e0b19cb03f06364a3f5e970f0861b8883d1c)

Co-authored-by: Stephen Morton <github@tungol.org>
2024-12-02 14:18:53 +00:00
Miss Islington (bot)
179b134014
[3.12] gh-101100: Fix Sphinx warnings about list methods (GH-127054) (#127512)
Co-authored-by: Yuki Kobayashi <drsuaimqjgar@gmail.com>
2024-12-02 14:01:46 +00:00
Miss Islington (bot)
97fd09fba1
[3.12] add missing gc_collect() calls in sqlite3 tests (GH-127446) (#127501)
add missing gc_collect() calls in sqlite3 tests (GH-127446)
(cherry picked from commit 2a373da7700cf928e0a5ce3998d19351a3565df4)

Co-authored-by: CF Bolz-Tereick <cfbolz@gmx.de>
2024-12-02 14:57:51 +01:00
Carol Willing
9295a1d033
[3.12] Docs: Miscellaneous corrections to simple statements in the language reference (GH-126720) (#126891)
* Replace: The :keyword:`global` -> The :keyword:`global` statement
Add :keyword: when it's needed

* Replace repeated links with duoble backticks
(cherry picked from commit 94a7a4e22fb8f567090514785c69e65298acca42)

Co-authored-by: Beomsoo Kim <beoms424@gmail.com>
2024-12-02 14:55:31 +01:00
Miss Islington (bot)
22f8e430f8
[3.12] gh-99880: document rounding mode for new-style formatting (GH-121481) (#126335)
The CPython uses _Py_dg_dtoa(), which does rounding to nearest with half
to even tie-breaking rule.

If that functions is unavailable, PyOS_double_to_string() fallbacks to
system snprintf().  Since CPython 3.12, build requirements include C11
compiler *and* support for IEEE 754 floating point numbers (Annex F).
This means that FE_TONEAREST macro is available and, per default,
printf-like functions should use same rounding mode as _Py_dg_dtoa().

(cherry picked from commit 7d7d56d8b1147a6b85e1c09d01b164df7c5c4942)

Co-authored-by: Sergey B Kirpichev <skirpichev@gmail.com>
Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
2024-12-02 14:52:49 +01:00
Bénédikt Tran
9f0d6b71d6
[3.12] Fix Unicode encode_wstr_utf8() (#127420) (#127504)
Fix Unicode encode_wstr_utf8() (#127420)

Raise RuntimeError instead of RuntimeWarning.

Co-authored-by: Victor Stinner <vstinner@python.org>
2024-12-02 13:24:26 +01:00
Miss Islington (bot)
828db9016b
[3.12] gh-127443: Fix some entries in Doc/data/refcounts.dat (GH-127451) (#127497)
gh-127443: Fix some entries in `Doc/data/refcounts.dat` (GH-127451)

Fix incorrect entries in `Doc/data/refcounts.dat`
(cherry picked from commit 1f8267b85dda655282922ba20df90d0ac6bea634)

Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
2024-12-02 08:29:34 +00:00
Miss Islington (bot)
87b712228e
[3.12] gh-127356: Fix prepend doctrees directory for gettext target (GH-127357) (#127471)
Co-authored-by: Rafael Fontenelle <rffontenelle@users.noreply.github.com>
2024-12-01 09:24:18 +00:00
Yuki Kobayashi
4000cbd46a
[3.12] Docs: Fix incorrect indents in c-api/type.rst (GH-127449) (#127461)
(cherry picked from commit 33ce8dcf791721fea563715f681dc1593a35b83b)
2024-12-01 10:51:46 +02:00
Miss Islington (bot)
f08c82ecad
[3.12] Add the missing f on an f-string error message in multiprocessing. (GH-127462) (#127465)
Add the missing `f` on an f-string error message in multiprocessing. (GH-127462)
(cherry picked from commit 11c01092d5fa8f02c867a7f1f3c135ce63db4838)

Co-authored-by: Gregory P. Smith <greg@krypto.org>
2024-11-30 23:50:33 -08:00
Bénédikt Tran
ea8a85bb9e
[3.12] Link to correct class methods in asyncio primitives docs (GH-127270) (#127438) 2024-11-30 10:02:07 +00:00
Miss Islington (bot)
7c7ed49b51
[3.12] gh-88110: Clear concurrent.futures.thread._threads_queues after fork to avoid joining parent process' threads (GH-126098) (GH-127164)
Threads are gone after fork, so clear the queues too. Otherwise the
child process (here created via multiprocessing.Process) crashes on
interpreter exit.

(cherry picked from commit 1848ce61f349533ae5892a8c24c2e0e3c364fc8a)

Co-authored-by: Andrei Bodrov <Drino@users.noreply.github.com>
Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
2024-11-30 09:05:46 +00:00
Victor Stinner
e7ab97862d
[3.12] gh-127208: Reject null character in _imp.create_dynamic() (#127400) (#127419)
gh-127208: Reject null character in _imp.create_dynamic() (#127400)

_imp.create_dynamic() now rejects embedded null characters in the
path and in the module name.

Backport also the _PyUnicode_AsUTF8NoNUL() function.

(cherry picked from commit b14fdadc6c620875a20b7ccc3c9b069e85d8557a)
2024-11-29 17:03:24 +01:00
Hugo van Kemenade
fc0564b365
[3.12] gh-127359: Pin Tcl/Tk to 8 (8.6) for testing macOS (GH-127365) (#127394) 2024-11-29 13:02:41 +02:00
Miss Islington (bot)
fc6c2de6de
[3.12] gh-127258: Fix asyncio test_staggered_race_with_eager_tasks() (GH-127358) (#127402)
gh-127258: Fix asyncio test_staggered_race_with_eager_tasks() (GH-127358)

Replace the sleep(2) with a task which is blocked forever.
(cherry picked from commit bfabf96b50b7d6a9c15b298a86ba3633b05a1fd7)

Co-authored-by: Victor Stinner <vstinner@python.org>
2024-11-29 10:59:22 +00:00
Miss Islington (bot)
91399c3984
[3.12] gh-127303: Add docs for token.EXACT_TOKEN_TYPES (GH-127304) (#127391)
gh-127303: Add docs for token.EXACT_TOKEN_TYPES (GH-127304)

---------

(cherry picked from commit dd3a87d2a8f8750978359a99de2c5cb2168351d1)

Co-authored-by: Илья Любавский <100635212+lubaskinc0de@users.noreply.github.com>
Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu>
Co-authored-by: Tomas R. <tomas.roun8@gmail.com>
Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
2024-11-29 09:22:27 +00:00
Miss Islington (bot)
7d175caf21
[3.12] gh-127190: Fix local_setattro() error handling (GH-127366) (#127368)
gh-127190: Fix local_setattro() error handling (GH-127366)

Don't make the assumption that the 'name' argument is a string. Use
repr() to format the 'name' argument instead.
(cherry picked from commit 20657fbdb14d50ca4ec115da0cbef155871d8d33)

Co-authored-by: Victor Stinner <vstinner@python.org>
2024-11-28 17:32:50 +00:00
Victor Stinner
f4c9f39165
[3.12] gh-123967: Fix faulthandler for trampoline frames (#127329) (#127363)
gh-123967: Fix faulthandler for trampoline frames (#127329)

If the top-most frame is a trampoline frame, skip it.

(cherry picked from commit 58e334e1431b2ed6b70ee42501ea73e08084e769)
2024-11-28 13:57:35 +00:00
Miss Islington (bot)
c3bb32de9d
[3.12] gh-124008: Fix calculation of the number of written bytes for the Windows console (GH-124059) (GH-127326)
Since MultiByteToWideChar()/WideCharToMultiByte() is not reversible if
the data contains invalid UTF-8 sequences, use binary search to
calculate the number of written bytes from the number of written
characters.

Also fix writing incomplete UTF-8 sequences.

Also fix handling of memory allocation failures.
(cherry picked from commit 3cf83d91a5baf3600dd60f7aaaf4fb6d73c4b8a9)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
2024-11-27 16:00:30 +02:00
Miss Islington (bot)
97ed21636c
[3.12] gh-109746: Fix race condition in test_start_new_thread_failed (GH-127299) (GH-127324)
(cherry picked from commit 83926d3b4c7847394b5e2531e9566d7fc9fbea0f)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
2024-11-27 12:22:32 +00:00
Yuki Kobayashi
16e899d589
[3.12] gh-101100: Fix sphinx warnings in howto/* (GH-127084) (#127311) 2024-11-27 11:46:42 +02:00
Miss Islington (bot)
08531ac83f
[3.12] gh-127183: Add _ctypes.CopyComPointer tests (GH-127184) (GH-127252)
gh-127183: Add `_ctypes.CopyComPointer` tests (GH-127184)

* Make `create_shelllink_persist` top level function.

* Add `CopyComPointerTests`.

* Add more tests.

* Update tests.

* Add assertions for `Release`'s return value.
(cherry picked from commit c7f1e3e150ca181f4b4bd1e5b59d492749f00be6)

Co-authored-by: Jun Komoda <45822440+junkmd@users.noreply.github.com>
2024-11-26 11:13:29 +01:00
Miss Islington (bot)
619037af1c
[3.12] gh-127265: Remove single quotes from 'arrow's in tutorial/errors.rst (GH-127268)
(cherry picked from commit 26ff32b30553e1f7b0cc822835ad2da8890c180c)

Co-authored-by: funkyrailroad <funkyrailroad@users.noreply.github.com>
2024-11-25 21:42:34 +00:00
Rafael Fontenelle
3806772b3d
[3.12] Fix a few typos found in the docs (GH-127126) (GH-127185)
(cherry picked from commit 39e60aeb3837f1f23d8b7f30d3b8d9faf805ef88)
2024-11-25 11:48:00 -08:00
Miss Islington (bot)
a4d6b905dd
[3.12] gh-127182: Fix io.StringIO.__setstate__ crash when None is the first value (GH-127219) (#127263)
gh-127182: Fix `io.StringIO.__setstate__` crash when `None` is the first value (GH-127219)
(cherry picked from commit a2ee89968299fc4f0da4b5a4165025b941213ba5)

Co-authored-by: sobolevn <mail@sobolevn.me>
Co-authored-by: Victor Stinner <vstinner@python.org>
2024-11-25 17:51:21 +00:00
Miss Islington (bot)
f7e587d15c
[3.12] gh-126384: Add tests to verify the behavior of basic COM methods. (GH-126610) (GH-127160)
(cherry picked from commit 7725c0371a93be3ccfaff4871014a80bdf0ea274)

Co-authored-by: Jun Komoda <45822440+junkmd@users.noreply.github.com>
2024-11-25 13:18:35 +01:00
Yuki Kobayashi
7e901cbdd8
[3.12] gh-101100: Fix sphinx warnings of removed opcodes (GH-127222) (#127240) 2024-11-25 10:51:48 +02:00
Miss Islington (bot)
5bfacd26e8
[3.12] gh-127217: Fix pathname2url() for paths starting with multiple slashes on Posix (GH-127218) (GH-127231)
(cherry picked from commit 97b2ceaaaf88a73a45254912a0e972412879ccbf)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
2024-11-24 20:13:23 +02:00
Miss Islington (bot)
b52ab48a10
[3.12] Improve pathname2url() and url2pathname() docs (GH-127125) (#127233)
Improve `pathname2url()` and `url2pathname()` docs (GH-127125)

These functions have long sown confusion among Python developers. The
existing documentation says they deal with URL path components, but that
doesn't fit the evidence on Windows:

    >>> pathname2url(r'C:\foo')
    '///C:/foo'
    >>> pathname2url(r'\\server\share')
    '////server/share'  # or '//server/share' as of quite recently

If these were URL path components, they would imply complete URLs like
`file://///C:/foo` and `file://////server/share`. Clearly this isn't right.
Yet the implementation in `nturl2path` is deliberate, and the
`url2pathname()` function correctly inverts it.

On non-Windows platforms, the behaviour until quite recently is to simply
quote/unquote the path without adding or removing any leading slashes. This
behaviour is compatible with *both* interpretations -- 1) the value is a
URL path component (existing docs), and 2) the value is everything
following `file:` (this commit)

The conclusion I draw is that these functions operate on everything after
the `file:` prefix, which may include an authority section. This is the
only explanation that fits both the  Windows and non-Windows behaviour.
It's also a better match for the function names.
(cherry picked from commit 307c63358681d669ae39e5ecd814bded4a93443a)

Co-authored-by: Barney Gale <barney.gale@gmail.com>
2024-11-24 17:48:12 +00:00
Miss Islington (bot)
e26ba9670f
[3.12] Fix "useable" typo in docs (GH-127200) (#127206)
Fix "useable" typo in docs (GH-127200)

Fix typo in docs
(cherry picked from commit dbd23790dbd662169905be6300259992639d4e69)

Co-authored-by: Stan U <89152624+StanFromIreland@users.noreply.github.com>
2024-11-23 16:45:47 -05:00
Miss Islington (bot)
6d2821c833
[3.12] Doc: C API: Fix Py_NewInterpreterFromConfig example code (GH-126667) (#127202)
Doc: C API: Fix `Py_NewInterpreterFromConfig` example code (GH-126667)
(cherry picked from commit e3038e976b25a58f512d8c7083a752c89436eb0d)

Co-authored-by: Richard Hansen <rhansen@rhansen.org>
2024-11-23 19:55:55 +00:00
Serhiy Storchaka
f1e7424802
[3.12] gh-109746: Make _thread.start_new_thread delete state of new thread on its startup failure (GH-109761) (GH-127173)
If Python fails to start newly created thread
due to failure of underlying PyThread_start_new_thread() call,
its state should be removed from interpreter' thread states list
to avoid its double cleanup.

(cherry picked from commit ca3ea9ad05c3d876a58463595e5b4228fda06936)

Co-authored-by: Radislav Chugunov <52372310+chgnrdv@users.noreply.github.com>
2024-11-22 19:56:39 +00:00
Serhiy Storchaka
29648980d4
[3.12] gh-127001: Fix PATHEXT issues in shutil.which() on Windows (GH-127035) (GH-127158)
* Name without a PATHEXT extension is only searched if the mode does not
  include X_OK.
* Support multi-component PATHEXT extensions (e.g. ".foo.bar").
* Support files without extensions in PATHEXT contains dot-only extension
  (".", "..", etc).
* Support PATHEXT extensions that end with a dot (e.g. ".foo.").
(cherry picked from commit 8899e85de100557899da05f0b37867a371a73800)
2024-11-22 16:33:50 +00:00
Miss Islington (bot)
32bc8e83db
[3.12] GH-122679: Add register() to argparse docs (GH-126939) (GH-127148)
(cherry picked from commit fcfdb55465636afc256bc29781b283404d88e6ca)

Co-authored-by: Savannah Ostrowski <savannahostrowski@gmail.com>
2024-11-22 14:13:43 +00:00
Jun Komoda
caad9047cb
[3.12] gh-127082: Replace "Windows only" with the availability: Windows in ctypes doc (GH-127099) (#127145)
(cherry picked from commit 3c770e3f0978d825c5ebea98fcd654660e7e135f)
2024-11-22 14:08:37 +01:00
Miss Islington (bot)
c470e822bf
[3.12] GH-127078: url2pathname(): handle extra slash before UNC drive in URL path (GH-127132) (#127136)
GH-127078: `url2pathname()`: handle extra slash before UNC drive in URL path (GH-127132)

Decode a file URI like `file://///server/share` as a UNC path like
`\\server\share`. This form of file URI is created by software the simply
prepends `file:///` to any absolute Windows path.
(cherry picked from commit 8c98ed846a7d7e50c4cf06f823d94737144dcf6a)

Co-authored-by: Barney Gale <barney.gale@gmail.com>
2024-11-22 04:37:51 +00:00
Miss Islington (bot)
4b705f50d1
[3.12] GH-126766: url2pathname(): handle 'localhost' authority (GH-127129) (#127131)
GH-126766: `url2pathname()`: handle 'localhost' authority (GH-127129)

Discard any 'localhost' authority from the beginning of a `file:` URI. As a
result, file URIs like `//localhost/etc/hosts` are correctly decoded as
`/etc/hosts`.
(cherry picked from commit ebf564a1d3e2e81b9846535114e481d6096443d2)

Co-authored-by: Barney Gale <barney.gale@gmail.com>
2024-11-22 03:42:46 +00:00
Serhiy Storchaka
4b4e0dbdf4
[3.12] gh-126727: Fix locale.nl_langinfo(locale.ERA) (GH-126730) (GH-127098)
It now returns multiple era description segments separated by semicolons.
Previously it only returned the first segment on platforms with Glibc.
(cherry picked from commit 4803cd0244847f286641c85591fda08b513cea52)
2024-11-21 11:44:37 +00:00
Miss Islington (bot)
d997be0510
[3.12] gh-126997: Fix support of non-ASCII strings in pickletools (GH-127062) (GH-127095)
* Fix support of STRING and GLOBAL opcodes with non-ASCII arguments.
* dis() now outputs non-ASCII bytes in STRING, BINSTRING and
  SHORT_BINSTRING arguments as escaped (\xXX).
(cherry picked from commit eaf217108226633c03cc5c4c90f0b6e4587c8803)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
2024-11-21 11:32:16 +00:00
Miss Islington (bot)
512a5bdb2f
[3.12] Run apt update before apt install git in autoconf CI job (GH-127071)
(cherry picked from commit 0af4ec30bd2e3a52350344d1011c0c125d6dcd71)

Co-authored-by: Zachary Ware <zach@python.org>
2024-11-20 19:37:24 +00:00
Miss Islington (bot)
b33c37aa8c
[3.12] gh-126991: Add tests for unpickling bad object state (GH-127031) (GH-127064)
This catches a memory leak in loading the BUILD opcode.
(cherry picked from commit addb225f3823b03774cddacce35214dd471bec46)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
2024-11-20 15:49:58 +00:00
Miss Islington (bot)
7735f58ea5
[3.12] GH-85168: Use filesystem encoding when converting to/from file URIs (GH-126852) (#127040)
GH-85168: Use filesystem encoding when converting to/from `file` URIs (GH-126852)

Adjust `urllib.request.url2pathname()` and `pathname2url()` to use the
filesystem encoding when quoting and unquoting file URIs, rather than
forcing use of UTF-8.

No changes are needed in the `nturl2path` module because Windows always
uses UTF-8, per PEP 529.
(cherry picked from commit c9b399fbdb01584dcfff0d7f6ad484644ff269c3)

Co-authored-by: Barney Gale <barney.gale@gmail.com>
2024-11-19 21:55:10 +00:00
Miss Islington (bot)
153221a1d0
[3.12] gh-126991: Fix reference leak in loading pickle's opcode BUILD (GH-126990) (GH-127019)
If PyObject_SetItem() fails in the `load_build()` function of _pickle.c, no DECREF for the `dict` variable.
(cherry picked from commit 29cbcbd73bbfd8c953c0b213fb33682c289934ff)

Co-authored-by: Justin Applegate <70449145+Legoclones@users.noreply.github.com>
2024-11-19 20:19:18 +02:00
Miss Islington (bot)
cb98122df2
[3.12] Update docs 'make serve' to suggest 'make htmllive' (GH-126969) (#127016)
Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
2024-11-19 17:41:41 +02:00