Skip to content

support Python 3.13 / 3.14 and msgpack up to 1.2.4 (1.2-maint) - #10591

Merged
ThomasWaldmann merged 4 commits into
borgbackup:1.2-maintfrom
ThomasWaldmann:1.2-py313
Nov 4, 2026
Merged

ThomasWaldmann merged 4 commits into
borgbackup:1.2-maintfrom
ThomasWaldmann:1.2-py313

Conversation

@ThomasWaldmann

@ThomasWaldmann ThomasWaldmann commented Nov 4, 2026 •

Copy link
Copy Markdown
Member

Four commits:

support and test on Python 3.13 (same as 1.4-maint #8600)

  • CI: add a py313-fuse3 job on ubuntu-24.04
  • tox: add py313 to the envlist
  • setup.py: add the Python 3.13 classifier

support and test on Python 3.14

  • with-lock: don't return from a finally: block. Python 3.14 emits a SyntaxWarning for it, which got into the output of borg serve subprocesses and broke ~35 remote tests. A return in finally would also swallow an uncaught exception. The commit still always happens (see borg with-lock being incompatible with rsync --ignore-existing #1867).
  • tests: test_rpc_exception_transport accepts both the old and the Python 3.14 ZeroDivisionError message.
  • allow msgpack 1.1.2, the first msgpack release with wheels for Python 3.14 (same as 1.4-maint).
  • CI: add a py314-fuse3 job, add py314 to tox, add the Python 3.14 classifier.

setup.py: only cythonize in parallel with the fork start method

  • On Linux, Python 3.14 changed the default multiprocessing start method from fork to forkserver. Like spawn, it re-imports setup.py in the worker processes, so python setup.py develop failed while cythonizing.

support msgpack up to 1.2.4

  • same msgpack versions as 1.4-maint allows. msgpack 1.2.x brings fixes relevant to borg (e.g. GHSA-j586-36cw-2gc2, GHSA-j8c6-9vc5-hj6x).

Local results (macOS): Python 3.13.18 + msgpack 1.1.1: 1266 passed, 326 skipped. Python 3.14.10 + msgpack 1.1.2: 1266 passed, 326 skipped, 0 failed. With msgpack 1.2.4 on both Python 3.13 and 3.14: 1266 passed, 326 skipped, 0 failed.

The msys2-ucrt64 (Windows CI) failure was already happening on 1.2-maint; it is fixed separately in #10592.

🤖 Generated with Claude Code

ThomasWaldmann and others added 2 commits November 4, 2026 18:34
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- with-lock: don't return from a finally block. Python 3.14 emits a
  SyntaxWarning for it, which also polluted the output of "borg serve"
  subprocesses and broke the remote tests. Also, a return in finally would
  swallow an uncaught exception.
- tests: accept the Python 3.14 ZeroDivisionError message.
- allow msgpack 1.1.2, which provides wheels for Python 3.14.
- CI: add a py314-fuse3 job, add py314 to tox, add the classifier.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ThomasWaldmann ThomasWaldmann changed the title support and test on Python 3.13 (1.2-maint) support and test on Python 3.13 and 3.14 (1.2-maint) Nov 4, 2026
ThomasWaldmann and others added 2 commits November 4, 2026 19:05
Python 3.14 changed the default multiprocessing start method on Linux
from "fork" to "forkserver". Like "spawn", it re-imports setup.py in the
worker processes, so "python setup.py develop" failed while cythonizing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Same msgpack versions as 1.4-maint allows. Besides wheels for current
Python versions, msgpack 1.2.x brings fixes relevant to borg's usage of
the C extension (e.g. GHSA-j586-36cw-2gc2, GHSA-j8c6-9vc5-hj6x).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ThomasWaldmann ThomasWaldmann changed the title support and test on Python 3.13 and 3.14 (1.2-maint) support Python 3.13 / 3.14 and msgpack up to 1.2.4 (1.2-maint) Nov 4, 2026
@ThomasWaldmann
ThomasWaldmann merged commit 288131d into borgbackup:1.2-maint Nov 4, 2026
12 checks passed
@ThomasWaldmann
ThomasWaldmann deleted the 1.2-py313 branch November 4, 2026 20:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant