Commit graph

57432 commits

Author SHA1 Message Date
Shahar Naveh
11c241e1a8
Don't require _testcapi for test_code (#152185)
Co-authored-by: Stan Ulbrych <stan@python.org>
2026-06-25 14:33:36 +01:00
Shahar Naveh
6a82832a0b
gh-152168: Don't skip test_bigmem if _testcapi is missing (#152171) 2026-06-25 14:30:49 +01:00
Victor Stinner
b6d89edc4a
gh-151929: Get uptime on BSD/macOS in pythoninfo (#152189)
* Check sysctlbyname() function and sys/sysctl.h header in
  configure.
* Add _testcapi.uptime_bsd() function.
2026-06-25 13:11:17 +00:00
Serhiy Storchaka
deeae2ac07
gh-127802: Schedule removal of legacy tkinter variable trace methods in 3.17 (GH-152012)
The tkinter.Variable methods trace_variable(), trace(), trace_vdelete()
and trace_vinfo(), deprecated since Python 3.14, are now scheduled for
removal in Python 3.17.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 15:05:46 +03:00
Victor Stinner
f9910519af
gh-151929: Get machine ID and uptime on Windows in pythoninfo (#152146)
* Replace "linux." prefix with "system." in pythoninfo.
* Add _winapi.GetTickCount64() function.
2026-06-25 12:02:53 +00:00
Danny Lin
2b3ea68ceb
gh-51067: Refactor duplicated logic in zipfile to _read_local_file_header helper (#152139) 2026-06-25 12:58:28 +01:00
tonghuaroot (童话)
6f9c76d8d8
gh-152079: Fix _datetime.fromisoformat() mishandling a sub-second tz offset (#152087)
Co-authored-by: Stan Ulbrych <stan@python.org>
2026-06-25 10:15:28 +01:00
Serhiy Storchaka
a00464bc33
gh-152100: Move re compiler optimizations to Lib/re/_optimizer.py (GH-152154)
Move the compile-time optimizations (_optimize_charset, _compile_charset,
_simple, _compile_info and the literal/charset prefix helpers) out of
_compiler.py into a new Lib/re/_optimizer.py.  _compiler.py keeps only the
bytecode emitter and imports them.  This is groundwork for a follow-up
optimization; there is no behavior change.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 08:09:56 +00:00
Serhiy Storchaka
bd4bd3e76a
gh-152100: Support set operations in character classes (GH-152153)
Implement set difference [A--B], intersection [A&&B] and union [A||B] in
regular expression character classes (Unicode Technical Standard #18),
including nested, complemented and compound set operands.  Symmetric
difference [A~~B] remains reserved.

Also use the new syntax in the standard library (_strptime, textwrap,
doctest, pkgutil).

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 10:09:41 +03:00
Victor Stinner
3db3bba4d1
gh-151929: Get boot ID, machine ID and uptime in test.pythoninfo (#152127)
GHA: Run test.pythoninfo on the "Cross build Linux" job.
2026-06-24 23:30:51 +00:00
Serhiy Storchaka
b41dc4ac63
gh-152093: Fix test_tk_caret() on macOS (GH-152115)
macOS records the caret only for the key window, so the query reads back
zeros instead of the values set in the test.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 00:36:57 +03:00
sobolevn
1d55b3778c
gh-105895: Add match and case doc to help() (#152113)
Co-authored-by: dzherb <zherbin.dima@yandex.ru>
Co-authored-by: Stan Ulbrych <stan@python.org>
2026-06-24 21:31:57 +00:00
Serhiy Storchaka
a52f428fba
gh-151776: Add curses state-query functions (GH-151778)
Add window methods and module functions that report curses state which could
previously only be set: the window getters is_cleared(), is_idcok(),
is_idlok(), is_immedok(), is_keypad(), is_leaveok(), is_nodelay(),
is_notimeout(), is_pad(), is_scrollok(), is_subwin(), is_syncok(),
getdelay(), getparent() and getscrreg(), and the functions is_cbreak(),
is_echo(), is_nl() and is_raw().  They are available when built against an
ncurses with NCURSES_EXT_FUNCS.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 22:31:50 +03:00
Serhiy Storchaka
3cd4283ba6
gh-151774: Add curses dynamic color-pair functions (GH-151775)
Add alloc_pair(), find_pair(), free_pair() and reset_color_pairs(),
wrapping the ncurses extended-color dynamic pair management.  They are
available only when built against a wide-character ncurses with
extended-color support.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 21:24:11 +03:00
An Long
6c3da17d1f
Re-raise unexpected exceptions instead of swallowing them in various tests (#152019)
Co-authored-by: Stan Ulbrych <stan@python.org>
2026-06-24 17:26:34 +01:00
Jelle Zijlstra
0fb82b46df
gh-151955: Allow more ParamSpec and TypeVarTuple bounds (#151956) 2026-06-24 09:10:10 -07:00
Benjy Wiener
b35c37910a
gh-151485: Fix command quoting in subprocess.CalledProcessError.__str__ (#151486)
CalledProcessError previously formatted cmd as `"... '%s' ..."`. This lead to
unbalanced quoting when cmd contains single-quotes or, more commonly, when cmd
is a list. This change updates the relevant format strings to use %r instead.

Co-authored-by: Benjy Wiener <benjywiener@gmail.com>
Co-authored-by: blurb-it[bot] <43283697+blurb-it[bot]@users.noreply.github.com>
2026-06-24 16:11:02 +02:00
stratakis
1785f4b35f
gh-151496: Use process groups in TraceBackend in test_dtrace (#152039)
Run the generic DTrace/SystemTap commands in a new process group and
terminate the whole group on timeout.

This prevents a forked tracer child from keeping stdout/stderr pipes
open after the direct tracer process is killed.
2026-06-24 13:46:56 +00:00
tonghuaroot (童话)
ff781d52d4
gh-152060: Fix _pydatetime.fromisoformat() raising AssertionError on invalid lengths (#152061) 2026-06-24 14:40:46 +01:00
Timofei
ad2cabfccb
gh-152020: Fix asyncio.all_tasks() loosing eager tasks on FT-build (#152022)
Co-authored-by: Kumar Aditya <kumaraditya@python.org>
2026-06-24 17:51:42 +05:30
Serhiy Storchaka
ac023ea48f
gh-90092: Support multiple terminals in the curses module (GH-151748)
Add the X/Open Curses SCREEN API for driving more than one terminal:
newterm() and set_term(), plus the ncurses extension new_prescr().

A new screen object wraps the C SCREEN.  It exposes the terminal's
standard window as screen.stdscr.  Each window keeps a reference to its
screen (like a subwindow does to its parent window), so the screen is
deleted automatically once it and all of its windows are unreferenced.

The ncurses use_screen()/use_window() locking helpers are exposed as
the screen.use() and window.use() methods.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 11:33:02 +00:00
Serhiy Storchaka
793f471767
gh-151757: Fix curses wide-character tests in non-UTF-8 locales (GH-152062)
wcwidth() only classifies combining characters in a locale that can
encode them, so guard the wide-character test operations on encodability.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 11:16:44 +00:00
Pieter Eendebak
21c4b7359d
gh-152056: Compile single-category character sets to a bare CATEGORY opcode (GH-152057)
A character set containing exactly one category, e.g. [\d] or [^\s], now
compiles to a single CATEGORY opcode (like \d or \S) instead of an IN
block.  The negated form maps to the complementary category.  This speeds
up matching and reduces the size of the compiled byte code.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 11:09:50 +00:00
Hans Yu
a46db4f8ba
Capitalize first word in unittest.mock.assert_* docs and docstrings (#151951) 2026-06-24 11:07:21 +01:00
Serhiy Storchaka
124c7cd91b
gh-126219: Fix crash in tkinter.Tk with non-BMP className on Tcl/Tk 8.x (GH-151980)
Tcl 8.x crashes when title-casing a non-BMP character during Tk
initialization, so such a className is now rejected with a ValueError.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 08:59:42 +03:00
Serhiy Storchaka
a5677bff84
gh-151757: Support wide and combining characters in the curses module (GH-151758)
The character-cell window methods now accept a full character cell -- a
spacing character optionally followed by combining characters (up to
CCHARW_MAX wide characters) -- in addition to a single int or byte
character.  This affects addch(), bkgd(), bkgdset(), border(), box(),
echochar(), hline(), insch() and vline(); they dispatch to the ncursesw
wide-character functions (wadd_wch(), wbkgrnd(), wborder_set(),
wecho_wchar(), whline_set(), wins_wch(), wvline_set(), ...) when given a
string.  border() and box() cannot mix integer or byte characters with
wide string characters in a single call.  A cell is one spacing character
optionally followed by combining characters, so an extra spacing or
control character (such as "ab") is rejected with ValueError rather than
being silently truncated by setcchar().

Also add the wide-character read methods get_wstr() and in_wstr(), the
counterparts of getstr() and instr() that return a str rather than a
bytes object, and the module functions erasewchar(), killwchar() and
wunctrl(), the wide-character counterparts of erasechar(), killchar()
and unctrl().

All of this is available only when built against the wide-character
ncursesw library.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 08:52:10 +03:00
Serhiy Storchaka
fde4cf862c
gh-152033: Optimize category escapes outside character sets (GH-152035)
Character class escapes (``\d``, ``\D``, ``\s``, ``\S``, ``\w`` and
``\W``) that occur outside a character set are now compiled directly to a
single CATEGORY opcode instead of being wrapped in an IN block.  This
removes the IN wrapper (three code words) and an indirect charset() call,
and makes such an escape a simple repeatable unit so that, for example,
``\d+`` uses the REPEAT_ONE fast path; a CATEGORY case is added to
SRE(count).

The transformation preserves behaviour exactly.  For category-heavy
patterns the compiled byte code is about 20% smaller and matching is up
to ~2x faster, with no effect on patterns that do not use bare category
escapes.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 08:49:14 +03:00
Jelle Zijlstra
fcda96fbf3
gh-150994: _colorize: modernize typing imports (#151018) 2026-06-23 19:58:00 -07:00
Brittany Reynoso
10d1b63ed8
gh-150565: Add additional tests for Lazy Imports (#149739)
Add lazy import tests ported from internal test suite
2026-06-23 13:15:11 -07:00
Seth Larson
5858e42c53
gh-143927: Normalize all line endings (CR, CRLF, and LF) in configparser (GH-143929) 2026-06-23 15:33:51 +02:00
Stan Ulbrych
27dd970bf6
gh-151558: Fix symlink escape via tarfile hardlink-extraction fallback (GH-151559) 2026-06-23 15:31:38 +02:00
Petr Viktorin
f50bf13566
gh-151981: Make tarfile._Stream.seek break at EOF (GH-151982)
Co-authored-by: Stan Ulbrych <stan@python.org>
2026-06-23 15:13:30 +02:00
Shardul Deshpande
da99711d37
gh-151497: Avoid huge pre-allocation for oversized tarfile extended headers (GH-151498)
tarfile reads a member's extended header (a GNU long name/link or a pax
header) with a single read sized by the header's size field:

    buf = tarfile.fileobj.read(self._block(self.size))

The size is taken from the archive and is not validated, so a ~512-byte
crafted file can claim several gigabytes (or, via base-256 encoding, far
more) and make read() pre-allocate that much memory -- on open/iterate,
before any extraction filter runs.

Read the extended-header data in bounded chunks instead, so an oversized
or truncated header can no longer force a huge allocation. The bytes
returned for valid archives are unchanged.
2026-06-23 11:32:31 +02:00
Serhiy Storchaka
ad38cf8292
gh-59396: Modernize tkinter.simpledialog (GH-151848)
Rework SimpleDialog and Dialog to match the look and feel of the native Tk
dialogs ::tk_dialog and ::tk::MessageBox.

* SimpleDialog is a Python port of ::tk_dialog and Dialog a base class
  modelled on ::tk::MessageBox.  Both adopt the message-box keyboard
  conventions: button accelerators, a default ring that follows the keyboard
  focus, and a <Return> binding that invokes the focused button.
* Both classes gain a use_ttk parameter that selects the classic Tk or the
  themed ttk widgets.  It controls the widget set and the appearance that the
  two procedures style differently, but not the keyboard behaviour.
* Update _place_window with the Tk 9.1 placement refinements.
* The new helpers _temp_grab_focus (a modal grab/focus context manager),
  _underline_ampersand and _find_alt_key_target (ports of the Tk
  accelerator-key procedures) can be reused by other tkinter dialogs, as
  _setup_dialog already is.
* Fix several defects uncovered while comparing with the Tcl sources.
* Improve the simpledialog demo.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 11:01:10 +03:00
Serhiy Storchaka
868d9a82ca
gh-101284: Allow passing Menubutton options to tkinter.OptionMenu (GH-151959)
Arbitrary keyword arguments are now forwarded to the underlying
Menubutton and can override OptionMenu's default appearance options.
The positional API is unchanged.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 06:24:17 +00:00
Serhiy Storchaka
ce147129c1
gh-151678: Add tests for ttk Menubutton and OptionMenu widget options (GH-151960)
Decorate ttk.MenubuttonTest with add_configure_tests() and make
ttk.OptionMenuTest inherit it to cover the standard widget options.
2026-06-23 06:17:16 +00:00
Serhiy Storchaka
3f09a175ad
gh-75666: Fix a reference leak in tkinter event bindings (GH-151808)
The Tcl commands created for event callbacks are now deleted when a
binding is replaced or unbound, instead of being leaked.
2026-06-23 06:59:25 +03:00
Serhiy Storchaka
27148d0857
gh-151920: Add the ttk.Style.theme_styles() method (GH-151921)
Wrap the Tk 9.0 ``ttk::style theme styles ?themeName?`` subcommand as
ttk.Style.theme_styles(themename=None), returning the list of styles
defined in a theme (the current theme if themename is omitted).

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-22 20:43:43 +03:00
Serhiy Storchaka
6cbb225c9e
gh-151886: Add tkinter Misc.tk_appname, tk_useinputmethods and tk_caret (GH-151887)
Wrap three long-standing Tk commands that had no tkinter wrapper:

* Misc.tk_appname() queries or sets the name used to communicate with the
  application through the send command (Tk 8.5).
* Misc.tk_useinputmethods() queries or sets whether Tk uses the X Input
  Methods (XIM) for filtering events (Tk 8.5).
* Misc.tk_caret() sets or queries the per-display caret location used for
  accessibility and for placing the input method window (Tk 8.5).

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-22 17:31:25 +00:00
Serhiy Storchaka
34eca5ac9d
gh-151890: Support more photo image options in tkinter.PhotoImage methods (GH-151891)
Add parameters mapping to Tk photo image options that previously had no
tkinter equivalent:

* the format parameter of PhotoImage.put() (Tk 8.6),
* the metadata parameter of PhotoImage.put(), read(), write() and data()
  (Tk 9.0),
* the withalpha parameter of PhotoImage.get() (Tk 9.0).

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-22 16:35:39 +00:00
hetmankp
0bd1024f87
gh-150162: Fix sysconfig cross-compile impermanence (#150164)
Fixes issue #150162 by improving the code introduced by 70154855cf
(GH-127729) while retaining the original documented intent. The
aforementioned code has a side effect when used in a virtual environment
context, on posix platforms, with the cross-compiling environment
variable _PYTHON_PROJECT_BASE present. In this case, every single
sysconfig.get_config_vars() and sysconfig.get_config_var() call, forces
the _CONFIG_VARS dictionary to be reinitialised from scratch. This is
inefficient, but also means no changes to the dictionary returned by
sysconfig.get_config_vars() persist, which can be useful in certain
situations.

This commit tracks changes to sys.prefix and sys.exec_prefix more
directly rather than relying on a misalignment with the corresponding
sysconfig variables.
2026-06-22 15:59:03 +00:00
Bernát Gábor
0d540afcec
gh-140006: Harden fish prompt against shadowed builtins (#150936)
A user function that shadows the `.`/`source` builtin hijacks the
activate.fish prompt. fish resolves functions ahead of builtins, so the
`echo "exit $status" | .` line that restores the exit status pipes into
the user function instead of sourcing. Dot-style directory navigators
redefine `.`, which made the prompt list the directory on every command
and dropped the exit status handed to the original prompt.

Route every builtin the prompt path uses (`source`, `echo`, `printf`,
`set_color`, `functions`) through `builtin` so no user function can
intercept them. These have all been fish builtins with a stable
interface since fish 2.0.0, the version the script already required
through `functions --copy`, so the minimum supported fish version does
not change.
2026-06-22 16:39:08 +01:00
Serhiy Storchaka
b86c305c74
gh-151888: Add tkinter PhotoImage.redither method (GH-151889)
Wrap the photo image "redither" Tk command (since Tk 8.5) as the method
PhotoImage.redither(), which recalculates the dithered image in each
window where it is displayed (useful when the image data was supplied in
pieces), completing the wrapping of the photo image subcommands.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-22 15:19:56 +00:00
Ronan Pigott
5049eb1d29
gh-111501: venv: do not export PS1 in activate (#105279)
PS1 is a parameter special to the current interactive shell. It does not
need to be exported to the environment. Exporting PS1 is not useful, and
will break different shells spawned by the current interactive shell.
2026-06-22 15:40:23 +01:00
Sepehr Rasouli
afda368fd6
gh-127727: Warn when running a virtual environment created for a different minor Python version (#149715) 2026-06-22 15:29:15 +01:00
U2A2U2A1
b8786dc33b
gh-151560: fix AttributeError when running test.test_importlib.resources.test_resource (#151561)
* [gh-151560]
import MetaPathFinder, Loader from importlib.abc
+ make it used

* sort import alphabetically
2026-06-22 14:17:26 +00:00
Danny Lin
f928475886
gh-151866: Remove unneeded zlib dependency in test_zipfile.test_core (#135631)
Co-authored-by: blurb-it[bot] <43283697+blurb-it[bot]@users.noreply.github.com>
Co-authored-by: Stan Ulbrych <stan@python.org>
2026-06-22 15:11:24 +01:00
Serhiy Storchaka
6185dfb450
gh-151881: Add tkinter Menu.postcascade, Misc.tk_scaling and tk_inactive (GH-151882)
Wrap three long-standing Tk commands that had no tkinter wrapper:

* Menu.postcascade() posts the submenu of a cascade entry (Tk 8.5),
  complementing the existing post() and unpost() methods.
* Misc.tk_scaling() queries or sets the scaling factor in pixels per
  point used to convert between physical units and pixels (Tk 8.4).
* Misc.tk_inactive() returns the user idle time in milliseconds, and can
  reset that timer (Tk 8.5).

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-22 13:53:02 +00:00
Serhiy Storchaka
b9bceb1fea
gh-151876: Add tkinter Canvas methods rotate and rchars (GH-151877)
Wrap the Tk canvas commands "rchars" (replace the text or coordinates of
items, since Tk 8.6) and "rotate" (rotate the coordinates of items about
an origin, new in Tk 9.0) as the methods Canvas.rchars() and
Canvas.rotate(), complementing the existing dchars/insert and move/scale
methods.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-22 13:51:50 +00:00
Serhiy Storchaka
13c1225443
gh-151910: Add tkinter.ttk.Treeview methods for the Tk 9.1 enhanced treeview (GH-151911)
Wrap the enhanced ttk::treeview widget commands added in Tk 9.1 (TIP 740),
and the detached query added in Tk 9.0, as tkinter.ttk.Treeview methods:
item navigation and queries (after_item, before_item, depth, haschildren,
visible, size, range, identifier, current), opening, hiding, sorting and
searching (expand, collapse, hide, unhide, sort, search, search_all,
search_cell, search_all_cells), cell focus, selection and tagging
(cellfocus, cellselection and its set/add/remove cell-list and *_range
rectangle forms, anchor/includes/present, tag_cell_add/remove/has), and the
detached query (detached, detached_all).

The expand() and collapse() methods, without recurse, also work on Tk older
than 9.1, where they are emulated via the item -open option.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-22 13:08:53 +00:00