[3.12] gh-107008: Document the curses module variables LINES and COLS (GH-107011) (GH-107057)
LINES and COLS referred in curses.update_lines_cols() documentations are
the module variables, not the environment variables.
(cherry picked from commit 26e08dfdd7ac1b3d567d30cd35e4898121580390)
[3.12] gh-106714: Fix test_capi to not write a coredump (GH-107007) (#107009)
gh-106714: Fix test_capi to not write a coredump (GH-107007)
test_capi: Fix test_no_FatalError_infinite_loop() to no longer write
a coredump, by using test.support.SuppressCrashReport.
(cherry picked from commit 4a1026d7647c084b0dc80dd49163d16ba12a2e55)
Co-authored-by: Victor Stinner <vstinner@python.org>
Add test for the 'destination <name> clear' command,
and the 'destination' directive in general.
Fix two bugs in 'destination <name> clear' command:
1. The text attribute of the allocator is called 'text', not '_text'
2. Return after processing the 'clear' command,
instead of proceeding directly to the fail().
(cherry picked from commit 3372bcba9893030e4063a9264ec0b4d1b6166883)
Co-authored-by: Erlend E. Aasland <erlend@python.org>
[3.12] gh-105699: Fix an Interned Strings Crasher (gh-106930) (#106963)
gh-105699: Fix an Interned Strings Crasher (gh-106930)
A static (process-global) str object must only have its "interned" state cleared when no longer interned in any interpreters. They are the only ones that can be shared by interpreters so we don't have to worry about any other str objects.
We trigger clearing the state with the main interpreter, since no other interpreters may exist at that point and _PyUnicode_ClearInterned() is only called during interpreter finalization.
We do not address here the fact that a string will only be interned in the first interpreter that interns it. In any subsequent interpreters str.state.interned is already set so _PyUnicode_InternInPlace() will skip it. That needs to be addressed separately from fixing the crasher.
(cherry picked from commit 87e7cb09e4258c4deb01a07dc52c1021907195d7)
Co-authored-by: Eric Snow <ericsnowcurrently@gmail.com>
[3.12] gh-105699: Fix a Crasher Related to a Deprecated Global Variable (gh-106923) (#106964)
gh-105699: Fix a Crasher Related to a Deprecated Global Variable (gh-106923)
There was a slight race in _Py_ClearFileSystemEncoding() (when called from _Py_SetFileSystemEncoding()), between freeing the value and setting the variable to NULL, which occasionally caused crashes when multiple isolated interpreters were used. (Notably, I saw at least 10 different, seemingly unrelated spooky-action-at-a-distance, ways this crashed. Yay, free threading!) We avoid the problem by only setting the global variables with the main interpreter (i.e. runtime init).
(cherry picked from commit 0ba07b2108d4763273f3fb85544dde34c5acd40a)
Co-authored-by: Eric Snow <ericsnowcurrently@gmail.com>
[3.12] Docs: Argument Clinic: Group guides about default values (GH-106872) (#106874)
Docs: Argument Clinic: Group guides about default values (GH-106872)
Previous ToC layout (excerpt):
- How to use symbolic default values
...
- How to assign default values to parameter
- How to use the ``NULL`` default value
- How to use expressions as default values
New layout:
- How to assign default values to parameter
- The ``NULL`` default value
- Symbolic default values
- Expressions as default values
wasm: do not use inline comment in .editorconfig (GH-106610)
It is no longer valid since 0.15.0
https://github.com/editorconfig/specification/blob/v0.15/index.rstGH-no-inline-comments
(cherry picked from commit 64c0890b697783db9b3f67e3bb4dcee1165a0b9b)
[3.12] gh-105626: Change the default return value of `HTTPConnection.get_proxy_response_headers` (GH-105628) (#106738)
gh-105626: Change the default return value of `HTTPConnection.get_proxy_response_headers` (GH-105628)
(cherry picked from commit 490295d651d04ec3b3eff2a2cda7501191bad78a)
[3.12] gh-103186: In test_tools.freeze, fetch CONFIG_ARGS from original source directory (GH-103213) (#106667)
gh-103186: In test_tools.freeze, fetch CONFIG_ARGS from original source directory (GH-103213)
Fetch CONFIG_ARGS from the original source directory, instead of from
the copied source tree. When "make clean" is executed in the copied
source tree, the build directory is cleared and the configure argument
lookup fails. However, the original source directory still contains this
information.
(cherry picked from commit de827322ca47e51d52ff44536a7c3fd44648383a)
gh-86618 assumed a-b-c = a-(b+c) = a-d where d = b+d.
For floats 2.0, 1.0, and 0.9999999999999999, this assumption
is false. The net change of 1.1102230246251565e-16 to 0.0
results in division by 0. Revert the replacement. Add test.
(cherry picked from commit a2d54d4e8ab12f967a220be88bde8ac8227c5ab3)
Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu>
[3.12] gh-94777: Fix deadlock in ProcessPoolExecutor (GH-94784) (#106609)
gh-94777: Fix deadlock in ProcessPoolExecutor (GH-94784)
Fixes a hang in multiprocessing process pool executor when a child process crashes and code could otherwise block on writing to the pipe. See GH-94777 for more details.
(cherry picked from commit 6782fc050281205734700a1c3e13b123961ed15b)
Co-authored-by: Louis Paulot <55740424+lpaulot@users.noreply.github.com>
[3.12] gh-103186: Fix or catch 'extra' stderr output from unittests (GH-103196) (#106605)
gh-103186: Fix or catch 'extra' stderr output from unittests (GH-103196)
Reduce test noise by fixing or catching and testing stderr messages from individual tests.
test_cmd_line_script.test_script_as_dev_fd calls spawn_python and hence subprocess.Popen with incompatible arguments. On POSIX, pass_fds forces close_fds to be True (subprocess.py line 848). Correct the call.
test_uuid.test_cli_namespace_required_for_uuid3: when the namespace is omitted, uuid.main calls argparse.Argument_Parser.error, which prints to stderr before calling sys.exit, which raises SystemExit. Unittest assertRaises catches the exception but not the previous output. Catch the output and test it.
test_warnings.test_catchwarnings_with_simplefilter_error similarly prints before raising. Catch the output and test it.
---------
[3.12] Clarify how topics.py gets created. (GH-106121) (#106579)
Clarify how topics.py gets created. (GH-106121)
When changing docs, it was easy to find text in topics.py, and I
wondered whether I was supposed to edit it. Thankfully, the top of the
file says it's auto-generated, so I knew I didn't have to edit it. But I
didn't know what started the auto-generation process.
[3.12] gh-106524: Fix a crash in _sre.template() (GH-106525) (GH-106544)
Some items remained uninitialized if _sre.template() was called with invalid
indices. Then attempt to clear them in the destructor led to dereferencing
of uninitialized pointer.
(cherry picked from commit 2ef1dc37f02b08536b677dd23ec51541a60effd7)
[3.12] gh-90876: Restore the ability to import multiprocessing when `sys.executable` is `None` (GH-106464) (#106494)
gh-90876: Restore the ability to import multiprocessing when `sys.executable` is `None` (GH-106464)
Prevent `multiprocessing.spawn` from failing to *import* in environments
where `sys.executable` is `None`. This regressed in 3.11 with the addition
of support for path-like objects in multiprocessing.
Adds a test decorator to have tests only run when part of test_multiprocessing_spawn to `_test_multiprocessing.py` so we can start to avoid re-running the same not-global-state specific test in all 3 modes when there is no need.
(cherry picked from commit c60df361ce2d734148d503f4a711e67c110fe223)
Co-authored-by: Gregory P. Smith <greg@krypto.org>
[3.12] gh-105497: [Enum] Fix Flag inversion when alias/mask members exist. (GH-105542) (#105572)
gh-105497: [Enum] Fix Flag inversion when alias/mask members exist. (GH-105542)
When inverting a Flag member (or boundary STRICT), only consider other canonical flags; when inverting an IntFlag member (or boundary KEEP), also consider aliases.
(cherry picked from commit 59f009e5898a006cdc8f5249be589de6edfe5cd0)
Since gh-104798 (Use setuptools in peg-generator and reenable
tests), the TestCParser test case has been producing ref leaks.
(cherry picked from commit 41ad4dfc04c201728ce9fa12b1a96922dd15a368)
Co-authored-by: Erlend E. Aasland <erlend.aasland@protonmail.com>
[3.12] Display the sanitizer config in the regrtest header. (GH-105301) (#105342)
Display the sanitizer config in the regrtest header. (GH-105301)
Display the sanitizers present in libregrtest.
Having this in the CI output for tests with the relevant environment
variable displayed will help make it easier to do what we need to
create an equivalent local test run.
(cherry picked from commit 852348ab65783601e0844b6647ea033668b45c11)
Co-authored-by: Gregory P. Smith <greg@krypto.org>
Jeffery To [Wed, 5 Jul 2023 10:51:16 +0000 (18:51 +0800)]
[3.12] gh-104692: Include commoninstall as a prerequisite for bininstall (GH-104693) (#105428)
This ensures that `commoninstall` is completed before `bininstall` is
started when parallel builds are used (`make -j install`), and so the
`python3` symlink is only installed after all standard library modules
are installed.
Barney Gale [Tue, 4 Jul 2023 20:51:36 +0000 (21:51 +0100)]
[3.12] GH-106330: Fix matching of empty path in `pathlib.PurePath.match()` (GH-106331) (GH-106372)
We match paths using the `_lines` attribute, which is derived from the
path's string representation. The bug arises because an empty path's string
representation is `'.'` (not `''`), which is matched by the `'*'` wildcard.
(cherry picked from commit b4efdf8cda8fbbd0ca53b457d5f6e46a59348caf)