Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
90d4002
gh-156939: Fix Modules/_testcapi/bytes.c: remove double Py_DECREF (#1…
vstinner Sep 29, 2026
0f5abe6
gh-157478: Add structured version info for dbm.gnu (GH-157479)
serhiy-storchaka Sep 29, 2026
8b34557
gh-157485: Add structured version info for readline (GH-157486)
serhiy-storchaka Sep 29, 2026
5d1ab45
gh-157470: Add structured version info for sqlite3 (GH-157471)
serhiy-storchaka Sep 29, 2026
24ea85a
gh-156939: Fix two bugs in PyBytesWriter (#158404)
vstinner Sep 29, 2026
3b0c39c
gh-157513: Add structured version info for ssl (GH-157515)
serhiy-storchaka Sep 29, 2026
cbecd5e
gh-157473: Add structured version info for pyexpat (GH-157474)
serhiy-storchaka Sep 29, 2026
4a5a7b9
gh-157514: Add structured version info for tkinter (GH-157516)
serhiy-storchaka Sep 29, 2026
3736342
gh-157676: Fix KeyError in tkinter.simpledialog when a foreign window…
serhiy-storchaka Sep 29, 2026
89bfac6
gh-157480: Add structured version info for dbm.ndbm (GH-157484)
serhiy-storchaka Sep 29, 2026
dc0b1f8
gh-157475: Add structured version info for decimal (GH-157476)
serhiy-storchaka Sep 29, 2026
84d4601
gh-158010: Update CI to use latest OpenSSL and AWS-LC releases (#158412)
zware Sep 29, 2026
42e62d6
Fix typo in `cross-build-linux` job (#158368)
StanFromIreland Sep 29, 2026
5c20517
gh-157579: Fix race condition in the cleanup of `tempfile.TemporaryDi…
StanFromIreland Sep 29, 2026
568dd3d
Retire the `add-issue-header.yml` workflow (#158013)
StanFromIreland Sep 29, 2026
a4ad141
Fix unnumbered list item's text alignment in 'Thread safety for set o…
rffontenelle Sep 29, 2026
115c297
gh-158010: Update Windows builds to use OpenSSL 3.5.9 (GH-158432)
zware Sep 29, 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
10 changes: 5 additions & 5 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -63,14 +63,14 @@
.azure-pipelines/ @AA-Turner

# GitHub & related scripts
.github/ @ezio-melotti @hugovk @AA-Turner @webknjaz @itamaro @JacobCoffee
Tools/build/compute-changes.py @AA-Turner @hugovk @webknjaz
Lib/test/test_tools/test_compute_changes.py @AA-Turner @hugovk @webknjaz
.github/ @ezio-melotti @hugovk @AA-Turner @webknjaz @itamaro @JacobCoffee @StanFromIreland
Tools/build/compute-changes.py @AA-Turner @hugovk @webknjaz @StanFromIreland
Lib/test/test_tools/test_compute_changes.py @AA-Turner @hugovk @webknjaz @StanFromIreland
Tools/build/verify_ensurepip_wheels.py @AA-Turner @pfmoore @pradyunsg

# Pre-commit
.pre-commit-config.yaml @hugovk @JacobCoffee
.ruff.toml @hugovk @AlexWaygood @AA-Turner @JacobCoffee
.pre-commit-config.yaml @hugovk @JacobCoffee @StanFromIreland
.ruff.toml @hugovk @AlexWaygood @AA-Turner @JacobCoffee @StanFromIreland

# Patchcheck
Tools/patchcheck/ @AA-Turner @itamaro
Expand Down
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/bug.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ body:
Make sure to also search the [CPython issue tracker](https://github.com/python/cpython/issues?q=is%3Aissue+sort%3Acreated-desc) to check that the bug has not already been reported.
- type: textarea
attributes:
label: "Bug description:"
label: "Bug report"
description: >
Give a clear and concise description of what happened.
Include a [minimal, reproducible example](https://stackoverflow.com/help/minimal-reproducible-example) if possible.
Expand Down
3 changes: 2 additions & 1 deletion .github/ISSUE_TEMPLATE/crash.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,9 @@ body:
The CPython interpreter is written in a different programming language, C. A "CPython crash" is when Python itself fails, leading to a traceback in the C stack.
- type: textarea
attributes:
label: What happened?
label: Crash report
description: >
Give a clear and concise description of what happened.
Include a [minimal, reproducible example](https://stackoverflow.com/help/minimal-reproducible-example) if possible.
[Copy and paste code where possible rather than using screenshots](https://meta.stackoverflow.com/a/285557/13990016),
and put any code blocks inside triple backticks.
Expand Down
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/feature.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ body:
Major feature proposals should generally be discussed on [Discourse](https://discuss.python.org/c/ideas/6) before opening a GitHub issue. Wait until it's clear that most people support your idea before filling in this form.
- type: textarea
attributes:
label: "Proposal:"
label: "Feature or enhancement"
description: >
Explain your proposal, why it should be implemented, and how it would be used.
Add examples, if applicable.
Expand Down
56 changes: 0 additions & 56 deletions .github/workflows/add-issue-header.yml

This file was deleted.

17 changes: 8 additions & 9 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -268,13 +268,12 @@ jobs:
# unsupported as it most resembles other 1.1.1-work-a-like ssl APIs
# supported by important vendors such as AWS-LC.
- { name: openssl, version: 1.1.1w }
- { name: openssl, version: 3.0.22 }
- { name: openssl, version: 3.4.7 }
- { name: openssl, version: 3.5.8 }
- { name: openssl, version: 3.6.4 }
- { name: openssl, version: 4.0.2 }
- { name: openssl, version: 3.4.8 }
- { name: openssl, version: 3.5.9 }
- { name: openssl, version: 3.6.5 }
- { name: openssl, version: 4.0.3 }
## AWS-LC
- { name: aws-lc, version: 5.5.0 }
- { name: aws-lc, version: 5.10.0 }
env:
SSLLIB_VER: ${{ matrix.ssllib.version }}
MULTISSL_DIR: ${{ github.workspace }}/multissl
Expand Down Expand Up @@ -379,7 +378,7 @@ jobs:
needs: build-context
if: needs.build-context.outputs.run-ubuntu == 'true'
env:
OPENSSL_VER: 3.5.8
OPENSSL_VER: 3.5.9
PYTHONSTRICTEXTENSIONBUILD: 1
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
Expand Down Expand Up @@ -493,7 +492,7 @@ jobs:
matrix:
os: [ubuntu-26.04]
env:
OPENSSL_VER: 3.5.8
OPENSSL_VER: 3.5.9
PYTHONSTRICTEXTENSIONBUILD: 1
ASAN_OPTIONS: detect_leaks=0:allocator_may_return_null=1:handle_segv=0
steps:
Expand Down Expand Up @@ -587,7 +586,7 @@ jobs:
- name: Display build info
run: |
"$BUILD_DIR/cross-python/bin/python3" -m test.pythoninfo
- name: Run test subset with host build
- name: Run test subset with cross build
run: |
"$BUILD_DIR/cross-python/bin/python3" -m test test_sysconfig test_site test_embed

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/reusable-san.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ permissions:

env:
FORCE_COLOR: 1
OPENSSL_VER: 3.5.8
OPENSSL_VER: 3.5.9

jobs:
build-san-reusable:
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 @@ -35,7 +35,7 @@ jobs:
runs-on: ${{ inputs.os }}
timeout-minutes: 60
env:
OPENSSL_VER: 3.5.8
OPENSSL_VER: 3.5.9
PYTHONSTRICTEXTENSIONBUILD: 1
TERM: linux
steps:
Expand Down
8 changes: 4 additions & 4 deletions Doc/builtins/threadsafety.rst
Original file line number Diff line number Diff line change
Expand Up @@ -408,19 +408,19 @@ as operands and always lock both objects:
iterate through all the passed iterables and do the following:

* :meth:`set.update` and :meth:`set.union` lock both objects only when
the other operand is a :class:`set`, :class:`frozenset`, or :class:`dict`.
the other operand is a :class:`set`, :class:`frozenset`, or :class:`dict`.
* :meth:`set.intersection` and :meth:`set.difference` always try to lock
all objects.
all objects.

:meth:`set.symmetric_difference` tries to lock both objects.

The update variants of the above methods also have some differences between
them:

* :meth:`set.difference_update` and :meth:`set.intersection_update` try
to lock all objects one-by-one.
to lock all objects one-by-one.
* :meth:`set.symmetric_difference_update` only locks the arguments if it is
of type :class:`set`, :class:`frozenset`, or :class:`dict`.
of type :class:`set`, :class:`frozenset`, or :class:`dict`.

The following methods always try to lock both objects:

Expand Down
96 changes: 95 additions & 1 deletion Doc/library/dbm.rst
Original file line number Diff line number Diff line change
Expand Up @@ -253,6 +253,38 @@ functionality like crash tolerance.
A string of characters the *flag* parameter of :meth:`~dbm.gnu.open` supports.


.. data:: GDBM_VERSION_INFO

A named tuple containing the three components of the GDBM library
version that was used for building the module:
*major*, *minor*, and *patch*.
All values are integers.
The components can also be accessed by name,
so ``dbm.gnu.GDBM_VERSION_INFO[0]`` is equivalent to
``dbm.gnu.GDBM_VERSION_INFO.major`` and so on.
This may be different from the GDBM library actually used at runtime,
which is available as :const:`gdbm_version_info`.

.. versionadded:: next


.. data:: gdbm_version_info

A named tuple containing the version of the GDBM library
actually loaded by the interpreter,
with the same fields as :const:`GDBM_VERSION_INFO`.

.. versionadded:: next


.. data:: gdbm_version

The release string of the GDBM library actually loaded by the interpreter,
like ``'GDBM version 1.26. 30/07/2025'``.

.. versionadded:: next


.. function:: open(filename, flag="r", mode=0o666, /)

Open a GDBM database and return a :class:`!gdbm` object.
Expand Down Expand Up @@ -382,7 +414,69 @@ This module can be used with the "classic" NDBM interface or the

.. data:: library

Name of the NDBM implementation library used.
Name of the NDBM implementation library used:
``'GNU gdbm'``, ``'Berkeley DB'`` or ``'ndbm'``.

.. versionchanged:: next
The value is ``'ndbm'`` for a classic NDBM library.
It was ``'GNU gdbm'`` before.


.. data:: GDBM_VERSION_INFO
gdbm_version_info
gdbm_version

Information about the GDBM library in use,
with the same meaning as the constants of the same names in :mod:`dbm.gnu`.
Only available if :const:`library` is ``'GNU gdbm'``.

.. versionadded:: next


.. data:: BDB_VERSION

The version string of the Berkeley DB library that was used for building
the module, like ``'Berkeley DB 5.3.28: (September 9, 2013)'``.
This may be different from the Berkeley DB library actually used at runtime,
which is available as :const:`bdb_version`.
Only available if :const:`library` is ``'Berkeley DB'``.

.. versionadded:: next


.. data:: bdb_version

The version string of the Berkeley DB library actually loaded by the
interpreter.
Only available if :const:`library` is ``'Berkeley DB'``.

.. versionadded:: next


.. data:: BDB_VERSION_INFO

A named tuple containing the three components of the Berkeley DB library
version that was used for building the module:
*major*, *minor*, and *patch*.
All values are integers.
The components can also be accessed by name,
so ``dbm.ndbm.BDB_VERSION_INFO[0]`` is equivalent to
``dbm.ndbm.BDB_VERSION_INFO.major`` and so on.
This may be different from the Berkeley DB library actually used at runtime,
which is available as :const:`bdb_version_info`.
Only available if :const:`library` is ``'Berkeley DB'``.

.. versionadded:: next


.. data:: bdb_version_info

A named tuple containing the version of the Berkeley DB library
actually loaded by the interpreter,
with the same fields as :const:`BDB_VERSION_INFO`.
Only available if :const:`library` is ``'Berkeley DB'``.

.. versionadded:: next


.. function:: open(filename, flag="r", mode=0o666, /)
Expand Down
40 changes: 40 additions & 0 deletions Doc/library/decimal.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1632,6 +1632,46 @@ are also included in the pure Python version for compatibility.

.. versionadded:: 3.8.3

The following constants are only available in the C module.

.. data:: LIBMPDEC_VERSION

The version string of the libmpdec library that was used for building
the module.
This may be different from the libmpdec library actually used at runtime,
which is available as :const:`libmpdec_version`.

.. versionadded:: next

.. data:: libmpdec_version

The version string of the libmpdec library actually loaded by the
interpreter.

.. versionadded:: next

.. data:: LIBMPDEC_VERSION_INFO

A named tuple containing the three components of the libmpdec library
version that was used for building the module:
*major*, *minor*, and *micro*.
All values are integers.
The components can also be accessed by name,
so ``decimal.LIBMPDEC_VERSION_INFO[0]`` is equivalent to
``decimal.LIBMPDEC_VERSION_INFO.major`` and so on.
This may be different from the libmpdec library actually used at runtime,
which is available as :const:`libmpdec_version_info`.

.. versionadded:: next

.. data:: libmpdec_version_info

A named tuple containing the version of the libmpdec library
actually loaded by the interpreter,
with the same fields as :const:`LIBMPDEC_VERSION_INFO`.

.. versionadded:: next


Rounding modes
--------------
Expand Down
23 changes: 21 additions & 2 deletions Doc/library/pyexpat.rst
Original file line number Diff line number Diff line change
Expand Up @@ -60,10 +60,29 @@ This module provides the following exception, type object and data items:
like ``'expat_2.8.4'``.


.. data:: VERSION_INFO

A named tuple containing the three components of the Expat library
version that was used for building the module:
*major*, *minor*, and *micro*.
All values are integers.
The components can also be accessed by name,
so ``xml.parsers.expat.VERSION_INFO[0]`` is equivalent to
``xml.parsers.expat.VERSION_INFO.major`` and so on.
This may be different from the Expat library actually used at runtime,
which is available as :const:`version_info`.

.. versionadded:: next


.. data:: version_info

The version of the Expat library loaded by the interpreter,
as a tuple of three integers: major, minor and micro version.
A named tuple containing the version of the Expat library
loaded by the interpreter,
with the same fields as :const:`VERSION_INFO`.

.. versionchanged:: next
It is now a named tuple.


.. data:: features
Expand Down
Loading
Loading