Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
bb91678
gh-152798: Return 'pymutex' on POSIX except Windows/WASI
Wojusensei Jul 4, 2026
b6160b4
gh-152851: fix a crash when copying a BLAKE-2s/2b object (#153008)
picnixz Jul 4, 2026
b8ade57
gh-153009: Fix compilation of `curses` on platforms that define the `…
picnixz Jul 4, 2026
61f111e
gh-135661: Fix abrupt closing of empty comment in HTMLParser (GH-153007)
serhiy-storchaka Jul 4, 2026
844dbd6
gh-152068: Reset PyREPL Colors on prompt finish (#152108)
edvilme Jul 4, 2026
612929b
gh-150459: Fix `SyntaxError` message for `from x lazy import y` (#150…
sobolevn Jul 4, 2026
f806c77
gh-151945: Fix all reference warnings and various solecisms in the `h…
harjothkhara Jul 4, 2026
00a98ea
gh-153030: Fix quadratic complexity in incremental parsing in HTMLPar…
serhiy-storchaka Jul 4, 2026
6355129
gh-151378: Fix unbounded memory growth when recording binary and the …
maurycy Jul 4, 2026
8063bb1
gh-152718: Reject oversized table counts in the profiling binary read…
tonghuaroot Jul 4, 2026
644ba17
Add "new in 3.16" to idlelib line (GH-152788) (#153049)
terryjreedy Jul 4, 2026
45b73e0
Add "new in 3.15" comments to idlelib (#153052)
terryjreedy Jul 5, 2026
1bea11a
Remove PDF images (#145977)
StanFromIreland Jul 5, 2026
338520c
gh-40038: Quote imaplib command arguments when necessary (GH-152703)
serhiy-storchaka Jul 5, 2026
01ab25b
gh-151819: Clarify the conditional-pattern email example in re docs (…
serhiy-storchaka Jul 5, 2026
ca35692
gh-66335: Test uppercase IMAP4 command names (GH-152876)
serhiy-storchaka Jul 5, 2026
d161d95
gh-151945: fix Sphinx reference warnings in `http.server` docs (#153084)
picnixz Jul 5, 2026
bec650e
gh-54930: Send a status line in error responses to malformed request …
serhiy-storchaka Jul 5, 2026
12cccf2
gh-69134: Wait until mapped in SimpleDialog keyboard tests (GH-152690)
serhiy-storchaka Jul 5, 2026
23a09b2
Fix various typos in the `http.server` docs (#153089)
picnixz Jul 5, 2026
0711383
gh-123193: Document tkinter Variable lifetime (GH-152625)
serhiy-storchaka Jul 5, 2026
d87decf
gh-75952: Document negative offsets in tkinter geometry strings (GH-1…
serhiy-storchaka Jul 5, 2026
4fcfa1f
gh-79638: Restore "Treat an unreachable robots.txt as disallow all" (…
serhiy-storchaka Jul 5, 2026
c4f7913
gh-76607: Improve documentation of the tkinter cursor option (GH-152481)
serhiy-storchaka Jul 5, 2026
93657e1
Fix minor typos in 'Compound statements' docs (#149666)
jonathandung Jul 5, 2026
cb10926
gh-59396: Use themed widgets in tkinter.filedialog (GH-152036)
serhiy-storchaka Jul 5, 2026
51f1772
gh-43699: Defer the drag cursor in tkinter.dnd until the pointer move…
serhiy-storchaka Jul 5, 2026
7d8d1a4
gh-149930: Clarify imaplib response helper types (GH-149963)
savagemechanic Jul 5, 2026
06e9057
gh-68147: Fix RFC references in imaplib (GH-153126)
serhiy-storchaka Jul 5, 2026
5cd5870
gh-143921: Narrow the control character check in imaplib commands (GH…
serhiy-storchaka Jul 5, 2026
fd7d48d
gh-60055: Allow passing a Request instance for RobotParser URLs (#103…
ephphatha Jul 5, 2026
d6b9cb3
gh-77508: Add imaplib.IMAP4.move method (GH-153121)
serhiy-storchaka Jul 5, 2026
b5326b6
gh-105708: 'V' could be case insensitive for IPvFuture hostnames (#10…
csreddy98 Jul 5, 2026
78b6db6
gh-98092: Add imaplib.IMAP4.id method (GH-153136)
serhiy-storchaka Jul 5, 2026
35ea24c
gh-153141: Fix mutable default argument in _SharedMemoryTracker.__ini…
whyvineet Jul 5, 2026
d3ff1e8
bpo-45706: Add imaplib.IMAP4.login_plain (GH-29398)
przemub Jul 5, 2026
0ae768b
gh-151640: Track sharing of `BytesIO` buffer in free-threaded builds …
pedramkarimii Jul 6, 2026
c78ea51
gh-82151: Update and improve urlsplit docstring (#152985)
pranavchoudhary-tech Jul 6, 2026
9fda8e7
gh-152026: Track mark-saving contexts with a counter (GH-153160)
serhiy-storchaka Jul 6, 2026
410d102
gh-148765: Fix description of *include_hidden* parameter in `glob.glo…
EoinTrial Jul 6, 2026
e9ae92d
gh-145855: Remove the DELETE_ATTR bytecode (GH-146216)
aisk Jul 6, 2026
f48a1fe
gh-153171: Produce specialized syntax errors for 'not' after an opera…
serhiy-storchaka Jul 6, 2026
bca7b6b
Add tests for syntax error messages that had no test coverage (GH-153…
serhiy-storchaka Jul 6, 2026
24d6f09
gh-145098: Use `macos-26[-intel]` instead of `macos-15[-intel]` in `{…
hugovk Jul 6, 2026
dcd75ba
gh-148286: Remove invalid test in `test_decodeescape` (#153187)
StanFromIreland Jul 6, 2026
573bcfd
gh-152849: Fix `OverflowError` message for out-of-range timestamps in…
tonghuaroot Jul 6, 2026
2a7a649
Docs: Link to the `contextlib.chdir` context manager in the `os.chdir…
cmaloney Jul 6, 2026
0048a8e
gh-152785: Upgrade Ubuntu from 24.04 to 26.04 in GitHub Actions (#152…
vstinner Jul 6, 2026
aadb053
gh-152433: Allow _ssl module to build for Windows UWP API set (GH-152…
thexai Jul 6, 2026
f804cdd
gh-150880: Clarify DirEntry.path construction semantics (GH-153218)
zainnadeem786 Jul 6, 2026
3607cc9
gh-153200: Fix math.isqrt() for int subclasses with overridden compar…
serhiy-storchaka Jul 6, 2026
a35ddfa
Seed pip caches for docs on `main`/`3.x` branches (#153127)
hugovk Jul 6, 2026
0ff8c96
gh-150490: Raise PyType_Modified for insertion into split dictionary …
DinoV Jul 6, 2026
6efa411
gh-150479: reject CR and LF in email.utils.formataddr (#150480)
metsw24-max Jul 6, 2026
7eb60bd
gh-153068: Preserve cprofile enable errors (#153070)
aisk Jul 6, 2026
eba35f9
gh-140729: Fix the cProfile module when the executed script contains …
YvesDup Jul 6, 2026
f77a7d5
gh-145177: Update Emscripten to 6.0.2 (#153235)
hoodmane Jul 6, 2026
ad42bd6
gh-153210: Fix `array` module import crash under a memory pressure (#…
sobolevn Jul 7, 2026
9964dc3
gh-153227: Use a development version of Pygments (#153228)
ZeroIntensity Jul 7, 2026
e2de1a2
gh-143990: Allow tkinter.font.Font to wrap a font description (GH-152…
serhiy-storchaka Jul 7, 2026
34e6a4e
gh-152798: Update sys.thread_info.lock documentation 2 match implemen…
Wojusensei Jul 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .github/actionlint.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
config-variables: null

# Pending release of actionlint > 1.7.12 for ubuntu-26.04* support:
# https://github.com/rhysd/actionlint/pull/683
self-hosted-runner:
labels:
- ubuntu-26.04
- ubuntu-26.04-arm

paths:
.github/workflows/**/*.yml:
ignore:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/add-issue-header.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ permissions:

jobs:
add-header:
runs-on: ubuntu-latest
runs-on: ubuntu-slim
permissions:
issues: write
timeout-minutes: 5
Expand Down
22 changes: 11 additions & 11 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ jobs:
name: 'Check if Autoconf files are up to date'
# Don't use ubuntu-latest but a specific version to make the job
# reproducible: to get the same tools versions (autoconf, aclocal, ...)
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
container:
image: ghcr.io/python/autoconf:2025.01.02.12581854023
timeout-minutes: 60
Expand Down Expand Up @@ -96,7 +96,7 @@ jobs:
name: 'Check if generated files are up to date'
# Don't use ubuntu-latest but a specific version to make the job
# reproducible: to get the same tools versions (autoconf, aclocal, ...)
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
timeout-minutes: 60
needs: build-context
if: needs.build-context.outputs.run-tests == 'true'
Expand Down Expand Up @@ -239,18 +239,18 @@ jobs:
- false
- true
os:
- ubuntu-24.04
- ubuntu-24.04-arm
- ubuntu-26.04
- ubuntu-26.04-arm
exclude:
# Do not test BOLT with free-threading, to conserve resources
- bolt: true
free-threading: true
# BOLT currently crashes during instrumentation on aarch64
- os: ubuntu-24.04-arm
- os: ubuntu-26.04-arm
bolt: true
include:
# Enable CPU-intensive tests on ARM (default build only)
- os: ubuntu-24.04-arm
- os: ubuntu-26.04-arm
bolt: false
free-threading: false
test-opts: '-u cpu'
Expand All @@ -270,7 +270,7 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [ubuntu-24.04]
os: [ubuntu-26.04]
ssllib:
# See Tools/ssl/make_ssl_data.py for notes on adding a new version
## OpenSSL
Expand Down Expand Up @@ -346,7 +346,7 @@ jobs:
- arch: aarch64
runs-on: macos-26
- arch: x86_64
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04

runs-on: ${{ matrix.runs-on }}
steps:
Expand Down Expand Up @@ -393,7 +393,7 @@ jobs:

test-hypothesis:
name: "Hypothesis tests on Ubuntu"
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
timeout-minutes: 60
needs: build-context
if: needs.build-context.outputs.run-ubuntu == 'true'
Expand Down Expand Up @@ -504,7 +504,7 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [ubuntu-24.04]
os: [ubuntu-26.04]
env:
OPENSSL_VER: 3.5.7
PYTHONSTRICTEXTENSIONBUILD: 1
Expand Down Expand Up @@ -568,7 +568,7 @@ jobs:

cross-build-linux:
name: Cross build Linux
runs-on: ubuntu-latest
runs-on: ubuntu-26.04
timeout-minutes: 60
needs: build-context
if: needs.build-context.outputs.run-ubuntu == 'true'
Expand Down
18 changes: 8 additions & 10 deletions .github/workflows/jit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ env:
jobs:
interpreter:
name: Interpreter (Debug)
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
timeout-minutes: 60
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
Expand Down Expand Up @@ -102,9 +102,9 @@ jobs:
- false
include:
- target: x86_64-apple-darwin/clang
runner: macos-15-intel
runner: macos-26-intel
- target: aarch64-apple-darwin/clang
runner: macos-15
runner: macos-26
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
Expand Down Expand Up @@ -145,9 +145,9 @@ jobs:
- false
include:
- target: x86_64-unknown-linux-gnu/gcc
runner: ubuntu-24.04
runner: ubuntu-26.04
- target: aarch64-unknown-linux-gnu/gcc
runner: ubuntu-24.04-arm
runner: ubuntu-26.04-arm
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
Expand All @@ -160,8 +160,7 @@ jobs:
sudo ./.github/workflows/posix-deps-apt.sh
- name: Build
run: |
sudo bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)" ./llvm.sh ${{ env.LLVM_VERSION }}
export PATH="$(llvm-config-${{ env.LLVM_VERSION }} --bindir):$PATH"
# On ubuntu-26.04 image, clang is clang-21 by default
./configure --enable-experimental-jit ${{ matrix.debug && '--with-pydebug' || '' }}
make all --jobs 4
- name: Test
Expand All @@ -171,7 +170,7 @@ jobs:
linux-extras:
name: ${{ matrix.name }}

runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
timeout-minutes: 60
strategy:
fail-fast: false
Expand Down Expand Up @@ -202,8 +201,7 @@ jobs:
sudo ./.github/workflows/posix-deps-apt.sh
- name: Build
run: |
sudo bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)" ./llvm.sh ${{ env.LLVM_VERSION }}
export PATH="$(llvm-config-${{ env.LLVM_VERSION }} --bindir):$PATH"
# On ubuntu-26.04 image, clang is clang-21 by default
if [ "${{ matrix.use_clang }}" = "true" ]; then
export CC=clang-${{ env.LLVM_VERSION }}
fi
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/new-bugs-announce-notifier.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ permissions:

jobs:
notify-new-bugs-announce:
runs-on: ubuntu-latest
runs-on: ubuntu-slim
permissions:
issues: read
timeout-minutes: 10
Expand Down
20 changes: 3 additions & 17 deletions .github/workflows/posix-deps-apt.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,37 +5,23 @@ apt-get -yq --no-install-recommends install \
build-essential \
pkg-config \
cmake \
curl \
gdb \
lcov \
libb2-dev \
libbz2-dev \
libffi-dev \
libgdbm-dev \
libgdbm-compat-dev \
libgdbm-dev \
liblzma-dev \
libmpdec-dev \
libncurses5-dev \
libreadline6-dev \
libsqlite3-dev \
libssl-dev \
libzstd-dev \
lzma \
lzma-dev \
strace \
tk-dev \
uuid-dev \
xvfb \
zlib1g-dev

# Workaround missing libmpdec-dev on ubuntu 24.04 by building mpdecimal
# from source. ppa:ondrej/php (launchpad.net) are unreliable
# (https://status.canonical.com) so fetch the tarball directly
# from the upstream host.
# https://www.bytereef.org/mpdecimal/
MPDECIMAL_VERSION=4.0.1
curl -fsSL "https://www.bytereef.org/software/mpdecimal/releases/mpdecimal-${MPDECIMAL_VERSION}.tar.gz" \
| tar -xz -C /tmp
(cd "/tmp/mpdecimal-${MPDECIMAL_VERSION}" \
&& ./configure --prefix=/usr/local \
&& make -j"$(nproc)" \
&& make install)
ldconfig
4 changes: 2 additions & 2 deletions .github/workflows/require-pr-label.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ jobs:
label-dnm:
name: DO-NOT-MERGE
if: github.repository_owner == 'python'
runs-on: ubuntu-latest
runs-on: ubuntu-slim
permissions:
pull-requests: read
timeout-minutes: 10
Expand All @@ -28,7 +28,7 @@ jobs:
label-reviews:
name: Unresolved review
if: github.repository_owner == 'python'
runs-on: ubuntu-latest
runs-on: ubuntu-slim
permissions:
pull-requests: read
timeout-minutes: 10
Expand Down
13 changes: 12 additions & 1 deletion .github/workflows/reusable-docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,17 @@ name: Reusable Docs
on:
workflow_call:
workflow_dispatch:
# Pushes to CPython branches seed the pip caches under the exact keys every
# docs PR restores from. Without a branch-scoped copy, each PR saves a
# duplicate into its own refs/pull/N/merge scope that nothing else can read.
push:
branches:
- main
- '3.*'
paths:
- 'Doc/pylock.toml'
- 'Doc/requirements.txt'
- '.github/workflows/reusable-docs.yml'

permissions:
contents: read
Expand Down Expand Up @@ -95,7 +106,7 @@ jobs:
# Run "doctest" on HEAD as new syntax doesn't exist in the latest stable release
doctest:
name: 'Doctest'
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
timeout-minutes: 60
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/reusable-emscripten.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ env:
jobs:
build-emscripten-reusable:
name: 'build and test'
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
timeout-minutes: 40
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
Expand Down
11 changes: 2 additions & 9 deletions .github/workflows/reusable-san.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ jobs:
&& ' (free-threading)'
|| ''
}}
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
timeout-minutes: 60
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
Expand All @@ -37,14 +37,7 @@ jobs:
- name: Install dependencies
run: |
sudo ./.github/workflows/posix-deps-apt.sh
# Install clang
wget https://apt.llvm.org/llvm.sh
chmod +x llvm.sh
sudo ./llvm.sh 21
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-21 100
sudo update-alternatives --set clang /usr/bin/clang-21
sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-21 100
sudo update-alternatives --set clang++ /usr/bin/clang++-21
# On ubuntu-26.04 image, clang is clang-21 by default

if [ "${SANITIZER}" = "TSan" ]; then
# Reduce ASLR to avoid TSan crashing
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/reusable-ubuntu.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ jobs:
- name: Install Clang and BOLT
if: ${{ fromJSON(inputs.bolt-optimizations) }}
run: |
sudo bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)" ./llvm.sh 21
# On ubuntu-26.04 image, LLVM is LLVM-21 by default
sudo apt-get install --no-install-recommends bolt-21
echo PATH="$(llvm-config-21 --bindir):$PATH" >> $GITHUB_ENV
- name: Configure OpenSSL env vars
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/reusable-wasi.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ env:
jobs:
build-wasi-reusable:
name: 'build and test'
runs-on: ubuntu-24.04-arm
runs-on: ubuntu-26.04-arm
timeout-minutes: 60
env:
WASMTIME_VERSION: 38.0.3
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/stale.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ permissions:
jobs:
stale:
if: github.repository_owner == 'python'
runs-on: ubuntu-latest
runs-on: ubuntu-slim
permissions:
actions: write
pull-requests: write
Expand Down
13 changes: 6 additions & 7 deletions .github/workflows/tail-call.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,9 @@ jobs:
matrix:
include:
- target: x86_64-apple-darwin/clang
runner: macos-15-intel
runner: macos-26-intel
- target: aarch64-apple-darwin/clang
runner: macos-15
runner: macos-26
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
Expand Down Expand Up @@ -66,13 +66,13 @@ jobs:
matrix:
include:
- target: x86_64-unknown-linux-gnu/gcc
runner: ubuntu-24.04
runner: ubuntu-26.04
configure_flags: --with-pydebug
- target: x86_64-unknown-linux-gnu/gcc-free-threading
runner: ubuntu-24.04
runner: ubuntu-26.04
configure_flags: --disable-gil
- target: aarch64-unknown-linux-gnu/gcc
runner: ubuntu-24.04-arm
runner: ubuntu-26.04-arm
configure_flags: --with-pydebug
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
Expand All @@ -83,8 +83,7 @@ jobs:
python-version: '3.11'
- name: Build
run: |
sudo bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)" ./llvm.sh ${{ env.LLVM_VERSION }}
export PATH="$(llvm-config-${{ env.LLVM_VERSION }} --bindir):$PATH"
# On ubuntu-26.04 image, clang is clang-21 by default
CC=clang-${{ env.LLVM_VERSION }} ./configure --with-tail-call-interp ${{ matrix.configure_flags }}
make all --jobs 4
- name: Test
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/verify-expat.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ concurrency:

jobs:
verify:
runs-on: ubuntu-latest
runs-on: ubuntu-slim
timeout-minutes: 5
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
Expand Down
2 changes: 1 addition & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ repos:
- id: check-readthedocs

- repo: https://github.com/rhysd/actionlint
rev: 393031adb9afb225ee52ae2ccd7a5af5525e03e8 # frozen: v1.7.11
rev: 914e7df21a07ef503a81201c76d2b11c789d3fca # frozen: v1.7.12
hooks:
- id: actionlint

Expand Down
Binary file removed Doc/c-api/lifecycle.dot.pdf
Binary file not shown.
Loading
Loading