Skip to content

did something go wrong with the 3.13.9 release? #140173

@asottile

Description

@asottile

I'm seeing something fishy with the git branch for 3.13 and wondering whether something went wrong and/or if the commits there represent what was actually released (afaict nothing looks malicious -- just want to check my understanding)

I noticed this as deadsnakes generates nightly builds and uses cpython as a sort of "submodule" as it progresses

the previous deadsnakes nightly release occurred at 2150684 and is failing to update (fast forward!) to v3.13.9~0 (~0 is "peeling" the annotated tag) -- that sha is 8183fa5

(the release machinery uses the git branches to update to nightly so I'm pretty sure the 215... commit is from 3.13 -- here's a double check)

$ git branch -r --contains 215068442cc23ad155253838ee150dbf1aedfad7 
  origin/3.13

to reproduce what I'm seeing:

git checkout 215068442cc23ad155253838ee150dbf1aedfad7 
git merge --ff-only 8183fa5e3f78ca6ab862de7fb8b14f3d929421e0

which results in:

$ git merge --ff-only 8183fa5e3f78ca6ab862de7fb8b14f3d929421e0
hint: Diverging branches can't be fast-forwarded, you need to either:
hint: 
hint: 	git merge --no-ff
hint: 
hint: or:
hint: 
hint: 	git rebase
hint: 
hint: Disable this message with "git config advice.diverging false"
fatal: Not possible to fast-forward, aborting.

if I remove --ff-only it attempts to generate a merge commit and results in a merge conflict:

$ git merge 8183fa5e3f78ca6ab862de7fb8b14f3d929421e0
Auto-merging Include/patchlevel.h
CONFLICT (content): Merge conflict in Include/patchlevel.h
Automatic merge failed; fix conflicts and then commit the result.

the conflict being:

/* Version as a string */
<<<<<<< HEAD
#define PY_VERSION              "3.13.8+"
=======
#define PY_VERSION              "3.13.9"
>>>>>>> 8183fa5e3f78ca6ab862de7fb8b14f3d929421e0
/*--end constants--*/

looking at the github history for that directory also shows two "3.13.9" commits which is maybe what's getting this mixed? https://github.com/python/cpython/commits/3.13/Include

though the commits on the file itself only shows one: https://github.com/python/cpython/commits/3.13/Include/patchlevel.h

the two commits in question seem very similar but maybe based on different things?

here's the same log but in graph form:

$ git log --graph --oneline --decorate origin/3.13 -- Include | head -9
* 115ee7ba5c1 Post 3.13.9
*   e40f1619ec7 Python 3.13.9
|\  
| * 8183fa5e3f7 (tag: v3.13.9) Python 3.13.9
* | 92f7965cf6f [3.13] gh-139640: Fix swallowing syntax warnings in different modules (GH-139755) (GH-140119)
* | 16d2e97cf32 [3.13] gh-137400: Fix thread-safety issues when profiling all threads (gh-137518) (gh-137733)
* | 527623e8276 Post 3.13.8
|/  
* a15ae614deb (tag: v3.13.8) Python 3.13.8

looking at a more full log it looks like the 3.13.9 release is based on the 3.13.8 release directly (leaving behind the last week or so of changes except for bc2c8d7)

$ git log --graph --oneline --decorate origin/3.13 | head -100
* 77976761ba3 (origin/3.13, 3.13) [3.13] gh-138993: Dedent `credits` text (GH-138994) (#140087)
* 115ee7ba5c1 Post 3.13.9
*   e40f1619ec7 Python 3.13.9
|\  
| * 8183fa5e3f7 (tag: v3.13.9) Python 3.13.9
| * bc2c8d748cf [3.13] gh-139783: Fix inspect.getsourcelines() for the case when a decorator is followed by a comment or an empty line (GH-139836) (GH-139890)
* | 92f7965cf6f [3.13] gh-139640: Fix swallowing syntax warnings in different modules (GH-139755) (GH-140119)
* | c5ec267311f [3.13] gh-101828: Fix `jisx0213` codecs removing null characters (gh-139340) (gh-140112)
* | 2f27098b422 [3.13] gh-106318: Add examples for str.istitle()  (GH-140046) (#140114)
* | bc3f2885f45 [3.13] gh-114827: clarify `threading.Event.wait` timeout behavior (GH-114834) (#140099)
* | bfb9639352c [3.13] gh-102431: Clarify constraints on operands of Decimal logical operations (GH-102836) (#140106)
* | 7992a295123 [3.13] GH-140058: Clear key and value if `PyTuple_New` fails in `dictiter_iternextitem` (GH-140059) (#140108)
* | 7e40d947259 [3.13] gh-70765: Remove unnecessary extra backtick from Changelog entry (GH-140071) (#140101)
* | 215068442cc (HEAD) [3.13] gh-82575: Adjust `time.get_clock_info` *adjustable* attribute doc (GH-135920) (#140098)
* | 08c9a147a65 [3.13] gh-137871: Clarify cmath.nan documentation by linking to math module (GH-137876) (#140096)
* | 63ba8018a17 [3.13] gh-97914: Reword misleading sentence on conditional expressions (GH-139064) (#140094)
* | eec807a5bbd [3.13] gh-138072: Fix typos and grammatical errors and improve clarity in asyncio howto document (GH-138895) (#140092)
* | 5bead87f836 [3.13] gh-102247: Improve documentation of http.HTTPStatus members update (GH-133190) (#140090)
* | 13562e18664 [3.13] gh-101100: Fix sphinx warnings in `library/smtplib.rst` (GH-139991) (#140085)
* | cbcee9a0f01 [3.13] gh-140000: Traverse `name` attribute for `TypeVar`, `TypeVarTuple`, `TypeAliasType`, `ParamSpec` (GH-140016) (#140073)
* | 0e7893207bf [3.13] gh-138772: Fix and improve documentation for turtle color functions (GH-139325) (GH-140048)
* | 278384150a2 [3.13] gh-107073: fix relevant typo in `PyObject_ClearManagedDict` (GH-140032) (#140034)
* | 08a2b2de794 [3.13] gh-139155: Remove "dictionaries are sorted by key" note in `pprint` docs (GH-139159) (GH-140004)
* | 591946d2fee [3.13] gh-101100: Fix Sphinx warnings in `Doc/library/signal.rst` (GH-139930) (GH-139967)
* | cbb415e992d [3.13] gh-139905: Provide suggestion in error message if `Generic.__init_subclass__` was not called (GH-139943) (#139956)
* | 6a9908ee946 [3.13] gh-96491: Deduplicate version in IDLE shell title (GH-139841) (#139932)
* | aee27d9d19b [3.13] gh-139783: Fix inspect.getsourcelines() for the case when a decorator is followed by a comment or an empty line (GH-139836) (GH-139890)
* | 38bedb342d3 [3.13] gh-138843: Removing "Unpacking" section from Download page (GH-139920)
* | 5424dab1fd6 [3.13] gh-101100: Document zlib public constants to fix reference warnings (GH-139835) (#139912)
* | 70ae4c8ef64 [3.13] gh-139843: Document signals (SIGSTOP, SIGVTALRM, SIGPROF) to fix sphinx references (GH-139896) (GH-139909)
* | b1bc743d366 [3.13] gh-139065: Fix trailing space before long word in textwrap (GH-139070) (GH-139903)
* | b367d104edf [3.13] gh-139843: Document `signal.SIGQUIT` to fix Sphinx references (GH-139844) (#139886)
* | 72c231abf60 [3.13] gh-139842: Clarify `__module__` description in typing.rst (GH-139863) (#139870)
* | 94ff4d4eb48 [3.13] gh-139391: properly handle `signal.signal()` in `UnixConsole` when called from a non-main thread (GH-139392) (#139861)
* | fa49c2af916 [3.13] gh-139672: Remove references to `passlib` (GH-139673) (#139868)
* | 54f9613a375 [3.13] gh-139845: do not print twice in default asyncio REPL (GH-139846) (#139860)
* | 16d2e97cf32 [3.13] gh-137400: Fix thread-safety issues when profiling all threads (gh-137518) (gh-137733)
* | f6186a3709f [3.13] gh-133400: Fixed Ctrl+D (^D) behavior in :mod:`_pyrepl` module (GH-133883) (GH-139851)
* | d12bd1ba1ab [3.13] gh-101100: Fix reference warnings in `c-api/init.rst` document… (#139833)
* | abe6f529ff1 [3.13] gh-75989: TarFile.extractall and TarFile.extract now overwrite symlinks when extracting hardlinks (GH-137316) (GH-139771)
* | 69a34938f8e [3.13] gh-139743: Avoid import-time print in test_sqlite3 (GH-139746) (GH-139829)
* | 7b49ec784a3 [3.13] gh-139748: Fix socket.if_nametoindex() Argument Clinic (#139815)
* | 8234841e5b2 [3.13] gh-139805: Bump `test_repl_eio` timeout for slow builtbots (GH-139807) (#139813)
* | 2072386e05a [3.13] Remove Cirrus macOS runners from CI (GH-139799) (#139803)
* | dac827cb989 [3.13] gh-139748: fix leaks in AC error paths when using unicode FS-b… (#139792)
* | d8971c21e80 [3.13] gh-138843: Clean up downloads page (GH-138844) (#139797)
* | fb89b305b00 [3.13] gh-137638: Use macos-15-intel in GitHub Actions (GH-139154) (#139790)
* | b6c14bc1874 gh-139769: Update `PCBuild/find_python.bat` to allow discovery of Python 3.14 (GH-139770)
* | 5a98f85c9ac [3.13] GH-139590: Run `ruff format` on pre-commit for Tools/wasm (GH-139591) (#139745)
* | de84a03099c [3.13] gh-139308: Skip test_special_chars_csh on NetBSD due to csh variable expansion issue (GH-139341) (#139560)
* | 12ada79fe94 [3.13] gh-83424: Allow empty name if handle is non-null when create ctypes.CDLL on Windows (GH-136878) (#138547)
* | 15a2cd6a1d0 [3.13] `Doc/library/zoneinfo.rst`: Fix typo (GH-139190) (#139230)
* | 08a03a49f61 [3.13] gh-101100: Fix some Sphinx reference warnings in ``whatsnew/2.6.rst`` (GH-139236) (#139569)
* | a6885577200 [3.13] gh-137589: Zipfile tests: close file objects (GH-138080) (#139767)
* | 0c91d6848a6 [3.13] gh-70765: avoid waiting for HTTP headers when parsing HTTP/0.9 requests (GH-139514) (#139602)
* | b7bc9776e89 [3.13] gh-139516: Fix lambda colon start format spec in f-string in t… (#139726)
* | 5074feb3943 [3.13] Update the availability info in the resource docs (GH-137939) (GH-139720)
* | 0404ca72016 [3.13] gh-137920: Fix semantically relevant typo in `curses.window.attron` (GH-137940) (GH-138507)
* | 94b26f015ec [3.13] gh-139646: fix typo in `pickletools` error message (GH-139647) (GH-139650)
* | ccf2f377fc8 [3.13] gh-139436: Remove ``dist-pdf`` from the docs archives rebuild target (GH-139437) (#139693)
* | 060eef27c39 [3.13] gh-136234: Fix `SelectorSocketTransport.writelines` to be robust to connection loss (GH-136743) (GH-138702) (#139710)
* | 333d4a6f496 [3.13] gh-139700: Check consistency of the zip64 end of central directory record (GH-139702) (GH-139708)
* | 527623e8276 Post 3.13.8
|/  
* a15ae614deb (tag: v3.13.8) Python 3.13.8
...

cc @Yhg1s (release manager!)

Metadata

Metadata

Assignees

No one assigned

    Labels

    3.13bugs and security fixes

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions