gh-154053: Fix compilation of the ssl module against LibreSSL (GH-154054)
LibreSSL does not provide SSL_CTX_set1_sigalgs_list() or
SSL_CTX_set1_client_sigalgs_list(), added in gh-138252, so _ssl failed to
compile against LibreSSL on 3.15+. Guard the set_server_sigalgs() and
set_client_sigalgs() methods so they raise NotImplementedError on LibreSSL,
and skip the corresponding tests.
gh-153864: Fix curses window.insch() for non-ASCII characters on a wide build (GH-153865)
On a wide build, winsch() does not locale-decode a byte above 127, unlike
waddch(), so insch() inserted '¤' (U+00A4) instead of '€' for byte 0xA4
under ISO-8859-15. Decode the byte with btowc() and insert it as a wide
character, like addch().
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
gh-153862: Fix curses window.inch() for non-ASCII characters on a wide build (GH-153863)
On a wide build, winch() returns the low 8 bits of the character's code
point with no locale conversion, so inch()/mvinch() disagreed with instr()
for a non-ASCII character of an 8-bit locale ('€' under ISO-8859-15 gave
0xAC instead of 0xA4). Re-encode the cell to its locale byte via wctob(),
as ncurses does for getbkgd().
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
gh-154048: Fix building the iconv codec on illumos/Solaris (GH-154049)
iconv()'s input-buffer argument is declared "const char **" on some systems
(illumos/Solaris, old GNU libiconv) rather than the POSIX "char **", so passing
a "char **" failed to compile. Cast it through void*, which converts to either
without a warning.
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
gh-136687: Add ./configure --with-curses to select the curses backend (GH-153992)
Add --with-curses=ncursesw|ncurses|curses|no, mirroring --with-readline.
The default (auto) keeps the current behaviour: prefer ncursesw, fall back
to ncurses. --with-curses=curses links the system's native curses (e.g. on
NetBSD or Solaris), which has no pkg-config file and was previously
unreachable; it is built with wide-character support when the library
provides it. --without-curses excludes the curses and _curses_panel modules
from the build.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
gh-153926: Fix documented parameter name for `calendar.calendar` and `calendar.prcal` (#153927)
gh-153926: Fix documented parameter name for calendar.calendar and calendar.prcal
calendar.calendar() and calendar.prcal() are bound methods of the
module's TextCalendar instance, whose first parameter is named theyear,
but the documentation named it year, so the documented keyword raised
TypeError. Update the documentation to match the real signature, which
also matches the sibling month() and prmonth() functions.
Skip curses tests when scr_dump()/is_keypad() are unavailable (GH-153866)
test_scr_dump() and test_state_getters() errored instead of skipping on
builds without scr_dump(), is_keypad() or is_leaveok() (e.g. some narrow
ncurses, NetBSD, PDCurses).
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
gh-153844: Support AST input in symtable.symtable() (GH-153845)
The builtin compile() accepts an AST object since Python 2.6, but
symtable.symtable() only accepted str and bytes, although the
implementation builds the symbol table from an AST anyway. Accept an
AST object as well: convert it for the requested compile type, validate
it, honor future statements found in the tree, and build the symbol
table the same way the compiler does.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
gh-153395: Accept curses.complexchar in curses.ascii predicates and conversions (GH-153396)
The curses.ascii predicates and the ctrl() and unctrl() functions now accept
a curses.complexchar, classifying it by its single character. ctrl() now
returns a non-ASCII argument unchanged instead of masking it to a control
character.
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
gh-153521: Support structured arguments in imaplib commands (GH-153522)
Command methods now accept a structured *message_set* (an integer, or a
sequence of integers, (start, stop) ranges and range objects) and lists of
flags or other atoms in place of preformatted parenthesized strings.
The search, fetch, sort, thread and uid methods gain a keyword-only *params*
argument that substitutes and quotes '?' placeholders in their value-bearing
arguments, in the manner of sqlite3 parameter substitution.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Co-authored-by: R. David Murray <rdmurray@bitdance.com>
Lucas Colley [Fri, 17 Jul 2026 06:32:29 +0000 (08:32 +0200)]
gh-152384: pixi-packages: use `flags` to define variants (#152385)
Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Co-authored-by: Isuru Fernando <isuruf@gmail.com> Co-authored-by: Nathan Goldbaum <nathan.goldbaum@gmail.com>
gh-153550: Modernize the older prose sections of the tkinter documentation (GH-153647)
Refresh the narrative "Tkinter life preserver" and "Handy reference"
sections to match the overhauled reference (gh-86726 and gh-153549).
* Rework "The packer" into a general "Geometry management" section
covering grid, pack and place, and cross-link it with the Grid, Pack
and Place reference classes.
* Rework "The window manager" and "Coupling widget variables", replacing
the dated App(Frame) examples with direct Tk() and ttk examples.
* Replace page-number citations to Ousterhout's book with links to the
relevant Tk man pages.
* Modernize the tkinter.ttk front matter and its Tcl/Tk links, and add
cross-references between the two documents.
* Reconcile the "Packer options" and "Tk option data types" lists with
the reference, and fill in the empty Entry index list.
* Fix the malformed target-selection list in tkinter.dnd.
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
gh-153716: Harden ttk/tkinter GUI tests against display scaling (GH-153717)
Compute probe coordinates from each widget's own realized geometry
instead of hardcoding pixels such as (5, 5) or width - 5, which land on
a different element, or miss it entirely, at a high display scaling.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
gh-102960: Make frames weak-referenceable (#152838)
Add an explicit f_weakreflist field to the frame object, following the
same pattern as generators and coroutines, including free-threading-safe
weakref clearing via FT_CLEAR_WEAKREFS() in frame_dealloc().
Py_TPFLAGS_MANAGED_WEAKREF is not used because static builtin types
must not carry it (see init_static_type()) and the pre-header would
cost two extra words per frame instead of one.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
gh-153631: Move to `macos-26` runner for iOS (#153632)
Switches iOS CI to use the macos-26 runner, and makes a small change to the iOS
build script to improve build stability. xcodebuild doesn't guarantee that the
CoreSimulatorService is running before starting a simulator. If the service
isn't running, xcodebuild reports that no simulators are available, and fails to
start the test app. However, simctl blocks until the simulator is available, and
simctl is used to evaluate the default simulator. So - the iOS build script now
unconditionally determines the default simulator, even if a specific simulator
is requested.
gh-153513: Remove obsolete Tk version guards in tkinter tests (GH-153615)
Since gh-153513, _tkinter returns int, float and pixel objects for the
corresponding Tcl object types on all Tk versions. The tests for the
Text "tabs" and ttk "padding" options therefore no longer need to expect
string tuples on Tk older than 8.6.14.
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Matt Van Horn [Sat, 11 Jul 2026 15:57:37 +0000 (08:57 -0700)]
gh-145694: Update tutorial indentation guidance for PyREPL auto-indent (#145725)
The tutorial stated users must manually type tabs/spaces at the interactive
prompt, which is no longer accurate since the PyREPL in Python 3.13+
auto-indents after compound statement headers. Updated to mention both
the default REPL behavior and the basic REPL fallback.
gh-126877: Fix the configure check for Tcl/Tk with optimizing compilers (GH-153543)
The check assigned the addresses of Tcl_Init() and Tk_Init() to unused
variables, which optimizing compilers can eliminate, so it linked even
when the libraries were missing. Call the functions instead.
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>