Commit Graph

131177 Commits

Author SHA1 Message Date
Serhiy Storchaka b89735625d gh-148914: Fix memoization of in-band PickleBuffer in the Python implementation (GH-149052)
Previously, identical PickleBuffers did not preserve identity.
Also, empty writable PickleBuffer memoized an empty bytearray object
in place of b'' which is a singleton in CPython, so the following
references to b'' were unpickled as an empty bytearray object.
2026-05-02 12:04:05 +03:00
Russell Keith-Magee e635ad2c68 gh-149254: Bump OpenSSL versions for iOS and Android. (#149270)
Bump OpenSSL versions for iOS and Android.
2026-05-02 16:50:32 +08:00
Raymond Hettinger bb5e41efdb gh-149244 Document statistics functions that require sequence inputs. (gh-149264) 2026-05-01 22:58:23 -05:00
htjworld 0f5cd57f80 statistics: Fix geometric_mean() error message for negative inputs (#149246) 2026-05-01 22:54:24 -05:00
Ned Deily 0e2c055892 gh-149254: Update macOS installer to use OpenSSL 3.5.6. (#149262) 2026-05-01 23:52:43 -04:00
W. H. Wang ff35fe4633 gh-149117: Set ImportError.name on errors from runpy.run_module/run_path (gh-149159)
Set ImportError.name on errors from runpy.run_module/run_path

`runpy.run_module()` and `runpy.run_path()` now set the `name` attribute
of the `ImportError` they raise to the requested module name, matching
the behaviour of a regular import statement (previously `name` was
always `None`, which broke introspection).

The `name=` kwarg is gated on `issubclass(error, ImportError)` because
`_get_module_details()` is also used by `_run_module_as_main()` with
a private `_Error` sentinel class. `_Error` does not subclass
ImportError, and `BaseException.__init__` rejects unknown kwargs at
the C level, so passing `name=` unconditionally would break the
`python -m foo` codepath.
2026-05-02 12:27:23 +10:00
Brett Cannon be9c7cb4b5 GH-149252: Update WASI SDK version from 32 to 33 (#149253)
Co-authored-by: blurb-it[bot] <43283697+blurb-it[bot]@users.noreply.github.com>
2026-05-01 16:51:06 -07:00
Amp Tell bb911a2319 gh-75707: tarfile: Add optional open() argument "mtime" (GH-138117)
This makes it possible to set the gzip header mtime field without
overriding time.time(), making it useful when creating reproducible
archives.

* 📜🤖 Added by blurb_it.

---------

Co-authored-by: blurb-it[bot] <43283697+blurb-it[bot]@users.noreply.github.com>
Co-authored-by: Ethan Furman <ethan@stoneleaf.us>
2026-05-01 15:39:58 -07:00
Raymond Hettinger 91e871a307 gh-124397: Add free-threading support for iterators. (gh-148894) 2026-05-01 16:31:00 -05:00
Pablo Galindo Salgado 3236773257 gh-149202: Implement PEP 831 – Frame Pointers Everywhere: Enabling System-Level Observability for Python (#149201)
Co-authored-by: Savannah Ostrowski <savannah@python.org>
Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
Co-authored-by: Emma Smith <emma@emmatyping.dev>
2026-05-01 21:16:11 +01:00
sobolevn 690e0de706 gh-149083: Change several other docs examples to use sentinel() (#149213) 2026-05-01 22:53:28 +03:00
sobolevn 8c611e12bc Fix source link in Doc/howto/descriptor.rst (#149215) 2026-05-01 19:37:14 +00:00
Sam Bull 6040d65843 Clarify max_length in zstd & zlib decompressor documentation (#143805)
Also provide examples of how to decompress data using max_length for zstd and zlib.

Co-authored-by: Emma Smith <emma@emmatyping.dev>
2026-05-01 12:32:50 -07:00
Hugo van Kemenade 4e3811f053 gh-148726: Document the GC change in What's New in Python 3.14 (#149209) 2026-05-01 18:57:09 +00:00
Ken Jin fa542449bb gh-139038: Update final JIT figures for 3.15rc1 (#149210)
Co-authored-by: Stan Ulbrych <stan@python.org>
2026-05-01 18:55:38 +00:00
Hugo van Kemenade 60b751c018 Build mpdecimal from source to workaround unreliable launchpad.net (#149248) 2026-05-01 18:39:36 +00:00
Mike Edmunds b605573828 gh-81074: Allow non-ASCII addr_spec in email.headerregistry.Address (#122477)
The email.headerregistry.Address constructor raised an error if
addr_spec contained a non-ASCII character. (But it fully supports
non-ASCII in the separate username and domain args.) This change
removes the error for a non-ASCII addr_spec, as well as the
Defect that triggered it.  In the unicode era non-ascii is not a
defect, though it is an error when an attempt is made to serialize
it to ascii.  The serialization issue was handled in #122540.
2026-05-01 14:00:46 -04:00
Mike Edmunds d96ffc1832 gh-83938, gh-122476: Stop incorrectly RFC 2047 encoding non-ASCII email addresses (#122540)
The email generators had been incorrectly flattening non-ASCII email
addresses to RFC 2047 encoded-word format, leaving them undeliverable.
(RFC 2047 prohibits use of encoded-word in an addr-spec.)
This change raises a HeaderWriteError when attempting to flatten an
EmailMessage with a non-ASCII addr-spec and a policy with utf8=False.
(Exception: If the non-ASCII address originated from parsing a message,
it will be flattened as originally parsed, without error.)  This also applies
to other contexts in which RFC2047 words are not allowed by the RFCs.

Non-ASCII email addresses are supported when using a policy with
utf8=True (such as email.policy.SMTPUTF8) under RFCs 6531 and 6532.

Non-ASCII email address domains (but not localparts) can also be used
with non-SMTPUTF8 policies by encoding the domain as an IDNA A-label.
(The email package does not perform this encoding, because it cannot
know whether the caller wants IDNA 2003, IDNA 2008, or some other
variant such as UTS #46.)

Co-authored-by: R. David Murray <rdmurray@bitdance.com>
2026-05-01 13:52:06 -04:00
petervanvugt 9668d260a1 gh-148850: Fix memory sanitizer false positive in os.getrandom (GH-148851)
Co-authored-by: Petr Viktorin <encukou@gmail.com>
2026-05-01 17:37:36 +02:00
sunmy2019 f2c7c0d2b7 gh-148967: Fix FFI type pointer handling for C complex support in set_stginfo_ffi_type_pointer (GH-148969) 2026-05-01 14:12:08 +02:00
Neko Asakura 0102c1d9b9 gh-149204: add _RROT_3 uop to reduce stack moves (GH-149205) 2026-05-01 12:35:31 +01:00
chemelnucfin f4f82f0ab6 gh-133560: Clarified parser.md doc for pegen parser issue in using the existing Grammar/python.gram file. (GH-139194)
Co-authored-by: Petr Viktorin <encukou@gmail.com>
2026-05-01 10:11:53 +02:00
Petr Viktorin fcd53b6872 gh-145497: Use same size of static_types array in all builds (GH-149139)
When someone adds a new type but doesn't increment
`_Py_MAX_MANAGED_STATIC_BUILTIN_TYPES` or
`_Py_MAX_MANAGED_STATIC_EXT_TYPES`, JIT tests fail,
because JIT builds define an extra type.
But the JIT tests don't necessarily run for the commit
that causes the failure.

As a workaround, use the same size for the array for all
builds, potentially with an empty spot.
2026-05-01 09:41:28 +02:00
Tan Long 8066db5753 gh-149173: Fix inverted PYTHON_BASIC_REPL environment check in _pyrepl_available() (#149174) 2026-04-30 22:32:57 -07:00
Savannah Ostrowski c0e0640039 GH-146475: Block Apple Clang for building JIT stencils (#149188) 2026-04-30 22:09:36 +00:00
R. David Murray bdbb55c403 gh-148518 fix index error in local part attribute (#148522)
As part of fixing bpo-27931 code was introduced to get_bare_quoted_string
that added an empty Terminal if the quoted string was empty.  This isn't
the best answer in terms of the parse tree; we really want the token
list to be empty in that case.  But having it be empty resulted in
local_part raising the index error.  We find that same problem if we
try to parse an address consisting of a single dquote.  By fixing
local_part to not raise on an empty token list, we can have the
bare_quoted_string code correctly return an empty token list for
the empty string cases (two dquotes or a single dquote as the
entire addrespec, at the end of a line).
2026-04-30 17:41:43 -04:00
Maurycy Pawłowski-Wieroński 5110738779 gh-144319: Use transparent huge pages via madvise(MADV_HUGEPAGE) in pymalloc (#144353) 2026-04-30 22:18:07 +01:00
Serhiy Storchaka c80e446e6b gh-149028: Revert gh-92936 changes (GH-149182)
* Revert "gh-92936: update `http.cookies` docs post GH-113663 (#137566)"

This reverts commit d86c2257a6.

* Revert "gh-92936: allow double quote in cookie values (#113663)"

This reverts commit d7dbde8958.
2026-04-30 22:19:46 +03:00
Sergey Miryanov 1575a81bf2 GH-148726: Forward-port generational GC. (GH-148746)
The replaces the incremental GC with a forward port (from 3.13) of the generational GC.

Co-Authored-By: Neil Schemenauer <nas@arctrix.com>
Co-Authored-By: Zanie Blue <contact@zanie.dev>
Co-Authored-By: Sergey Miryanov <sergey.miryanov@gmail.com>
Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
2026-04-30 12:19:13 -07:00
elenril b413bc7a1f bpo-39100: _header_value_parser: do not treat a Group as invalid-mailbox (#24872)
When an address in an address-list has garbage at the end, the code will
currently:

1. change the mailbox in the last parsed address into invalid-mailbox by
   overriding its token_type;
2. wrap the trailing garbage into another invalid-mailbox and append it
   to the last parsed address.

However, that does not take into account that an address may
also contain a Group instead of a single mailbox. In that case,
overwriting token_type leads to undesirable results, e.g. parsing an
email with the following 'To' header:

unlisted-recipients:; (no To-header on input)

raises an AttributeError from trying to treat the Group as a Mailbox.

Moreover it is questionable whether the previously parsed mailbox should
be treated as invalid in addition to the trailing garbage.

Address both of the above by wrapping the trailing garbage in a new
Address with a single invalid-mailbox, and append it to the AddressList
directly.

Changes the results of the
test_get_address_list_mailboxes_invalid_addresses test, where the
address list is now parsed into 4 mailboxes instead of 3 (all but the
first one are invalid).
2026-04-30 13:24:23 -04:00
Victor Stinner a60520da3c gh-147991: Speed up tomllib import time (GH-147992)
- Use lazy import for regular expressions.
- Use frozendict for string escapes

Co-authored-by: Taneli Hukkinen <hukkinen@eurecom.fr>
Co-authored-by: Petr Viktorin <encukou@gmail.com>
2026-04-30 18:25:32 +02:00
sobolevn bf424816d0 gh-149083: Use sentinel in functools.rst docs (#149176) 2026-04-30 19:18:56 +03:00
John Comeau cc5f8b5434 gh-113471: Add custom default Content-Type to http.server (#113475)
Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
Co-authored-by: donBarbos <donbarbos@proton.me>
Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
Co-authored-by: blurb-it[bot] <43283697+blurb-it[bot]@users.noreply.github.com>
2026-04-30 18:00:48 +03:00
Victor Stinner f0e90d78eb gh-148829: Move sentinelobject.h to Include/cpython/ (#149186)
This C API is not part of the limited C API, so move it to the
CPython C API.
2026-04-30 16:57:29 +02:00
Petr Viktorin 9d41e2a534 gh-111264: Add a note about untrusted input to tomllib docs (GH-146209)
Co-authored-by: Stan Ulbrych <stan@python.org>
2026-04-30 16:33:13 +02:00
Eric Froemling 7686abe063 gh-149085: Add max_threads keyword to faulthandler.dump_traceback() (GH-149106)
Add a keyword-only `max_threads` argument to `dump_traceback()` and
`dump_traceback_later()`, defaulting to 100 to preserve existing
behavior. Allows server processes with many worker threads to dump
beyond the historical 100-thread cap (previously a hardcoded
`MAX_NTHREADS = 100` in `Python/traceback.c`).

The cap matters in practice: tstates are prepended to the
PyInterpreterState linked list, so the dump walks newest-first. With
more than 100 threads alive, the main thread (oldest, at the tail) is
silently elided from watchdog dumps -- exactly the thread that's
usually wanted.

The hardcoded value is moved to a new internal macro
`_Py_TRACEBACK_MAX_NTHREADS` in `pycore_traceback.h` so the in-tree
fatal-signal callers all reference one source of truth.
2026-04-30 09:27:57 -04:00
Petr Viktorin 4599335a83 gh-149122: Fix refleak in codegen (GH-149179) 2026-04-30 10:05:48 +00:00
Pieter Eendebak 7fe51ceae8 gh-149049: Fix jit binary op stack underflow (GH-149076) 2026-04-30 10:36:04 +01:00
Petr Viktorin a94c7900be Revert pylock.toml change to make MSI builds pass (#149175)
GH-149058 made MSI installer tests fail. GHA didn't catch this because MSI-related files weren't changed.

This reverts the build.bat change from commit 40dc61a0e0.

Also: a README style nitpick to trigger CI.
2026-04-30 10:30:34 +02:00
Tian Gao 234c12c0fc GH-145378: Use PyREPL as the default input console for pdb (#145379) 2026-04-29 22:55:09 -07:00
Jelle Zijlstra 16952218d0 gh-149083: Convert dataclasses.MISSING and dataclasses.KW_ONLY to sentinels (#149086)
There were comments claiming these were implemented as custom classes to give a nicer
repr(), but the repr() wasn't all that nice:

>>> repr(dataclasses.MISSING)
'<dataclasses._MISSING_TYPE object at 0x1005e7e00>'
>>> repr(dataclasses.KW_ONLY)
'<dataclasses._KW_ONLY_TYPE object at 0x100884050>'

Sentinels are conceptually the right tool for these, so let's use them.

This does change the repr() of these two objects.
2026-04-29 19:39:29 -07:00
Hugo van Kemenade 8851a06e6e gh-149026: Add colour to pickletools CLI output (#149027)
Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
2026-04-29 18:33:05 +03:00
Victor Stinner 025a82f138 gh-149148: Upgrade bundled pip to 26.1 (#149150)
Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
2026-04-29 17:36:01 +03:00
Jansen Price f1588d460d gh-148740: Fix uuid CLI with custom UUIDs for UUIDv3/v5 namespaces (#148741)
Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
2026-04-29 15:44:22 +02:00
Irit Katriel 16f292ef4e gh-149122: Fix segfault in compiler when certain builtin functions are passed a coroutine as arg (#149138) 2026-04-29 13:35:51 +00:00
Weilin Du 4a5d25c26c gh-135528: Support more second-level domain names in http.cookiejar (#135820)
Co-authored-by: blurb-it[bot] <43283697+blurb-it[bot]@users.noreply.github.com>
2026-04-29 11:33:51 +00:00
ivonastojanovic d4eee16659 gh-142927: Show module names instead of file paths in flamegraph (#146040) 2026-04-29 10:00:07 +01:00
Jelle Zijlstra d71e3bc5a0 gh-148829: bump number of static types (#149121) 2026-04-28 18:59:48 -07:00
Stelar 2674c322c6 gh-149119: docs: mention that sentinel does not support subclassing (#149120)
Add note about sentinel objects not supporting subclassing

Clarify that sentinel objects do not support subclassing.
2026-04-28 16:50:53 -07:00
Hugo van Kemenade 40dc61a0e0 Build docs from pylock.toml (#149058) 2026-04-28 21:45:38 +03:00