remove python 3.10 support (master branch), fixes #9707

This commit is contained in:
Thomas Waldmann 2026-06-06 15:34:05 +02:00
parent 22bc6ee419
commit dd4ba13066
No known key found for this signature in database
GPG key ID: 243ACFA951F78E01
9 changed files with 19 additions and 36 deletions

View file

@ -19,8 +19,8 @@ jobs:
include:
# A representative subset of environments
- os: ubuntu-22.04
python-version: '3.10'
toxenv: py310-llfuse
python-version: '3.11'
toxenv: py311-llfuse
- os: ubuntu-24.04
python-version: '3.12'
toxenv: py312-pyfuse3

View file

@ -48,7 +48,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: '3.10'
python-version: '3.11'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
@ -141,9 +141,9 @@ jobs:
${{ fromJSON(
github.event_name == 'pull_request' && '{
"include": [
{"os": "ubuntu-22.04", "python-version": "3.10", "toxenv": "mypy"},
{"os": "ubuntu-22.04", "python-version": "3.11", "toxenv": "mypy"},
{"os": "ubuntu-22.04", "python-version": "3.11", "toxenv": "docs"},
{"os": "ubuntu-22.04", "python-version": "3.10", "toxenv": "py310-llfuse"},
{"os": "ubuntu-22.04", "python-version": "3.11", "toxenv": "py311-llfuse"},
{"os": "ubuntu-24.04", "python-version": "3.12", "toxenv": "py312-pyfuse3"},
{"os": "ubuntu-24.04", "python-version": "3.15-dev", "toxenv": "py315-mfusepy"}
]
@ -449,7 +449,6 @@ jobs:
sudo -E pkg install -y rust
sudo -E pkg install -y gmake
sudo -E pkg install -y git
sudo -E pkg install -y python310 py310-sqlite3
sudo -E pkg install -y python311 py311-sqlite3 py311-pip py311-virtualenv
sudo ln -sf /usr/local/bin/python3.11 /usr/local/bin/python3
sudo ln -sf /usr/local/bin/python3.11 /usr/local/bin/python
@ -563,7 +562,7 @@ jobs:
pkgman install -y git pkgconfig lz4
pkgman install -y openssl3
pkgman install -y rust_bin
pkgman install -y python3.10
pkgman install -y python3.11
pkgman install -y cffi
pkgman install -y lz4_devel openssl3_devel libffi_devel

1
Vagrantfile vendored
View file

@ -43,7 +43,6 @@ def packages_freebsd
pkg install -y fusefs-libs3 || true
pkg install -y rust
pkg install -y git bash # fakeroot causes lots of troubles on freebsd
pkg install -y python310 py310-sqlite3
pkg install -y python311 py311-sqlite3 py311-pip py311-virtualenv
# make sure there is a python3/pip3/virtualenv command
ln -sf /usr/local/bin/python3.11 /usr/local/bin/python3

View file

@ -161,7 +161,7 @@ To install Borg from a source package (including pip), you have to install the
following dependencies first. For the libraries you will also need their
development header files (sometimes in a separate `-dev` or `-devel` package).
* `Python 3`_ >= 3.10.0
* `Python 3`_ >= 3.11.0
* OpenSSL_ >= 1.1.1 (LibreSSL will not work)
* libacl_ (which depends on libattr_)
* liblz4_ >= 1.7.0 (r129)
@ -493,9 +493,9 @@ If you need to use a different version of Python you can install this using ``py
...
# create a virtual environment
pyenv install 3.10.0 # minimum, preferably use something more recent!
pyenv global 3.10.0
pyenv local 3.10.0
pyenv install 3.11.0 # minimum, preferably use something more recent!
pyenv global 3.11.0
pyenv local 3.11.0
virtualenv --python=${pyenv which python} borg-env
source borg-env/bin/activate # always before using!
...

View file

@ -6,7 +6,7 @@ maintainers = [
{name="Thomas Waldmann", email="tw@waldmann-edv.de"},
]
description = "Deduplicated, encrypted, authenticated, and compressed backups"
requires-python = ">=3.10"
requires-python = ">=3.11"
keywords = ["backup", "borgbackup"]
classifiers = [
"Development Status :: 4 - Beta",
@ -19,7 +19,6 @@ classifiers = [
"Operating System :: POSIX :: Linux",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
@ -97,7 +96,7 @@ skip-magic-trailing-comma = true
[tool.ruff]
line-length = 120
target-version = "py310"
target-version = "py311"
# Exclude a variety of commonly ignored directories.
exclude = [
@ -154,7 +153,7 @@ dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"
markers = []
[tool.mypy]
python_version = "3.10"
python_version = "3.11"
strict_optional = false
local_partial_types = true
show_error_codes = true
@ -176,7 +175,7 @@ ignore_missing_imports = true
requires = ["tox>=4.19", "pkgconfig", "cython", "wheel", "setuptools_scm"]
# Important: when adding/removing Python versions here,
# also update the section "Test environments with different FUSE implementations" accordingly.
env_list = ["py{310,311,312,313,314,315}-{none,llfuse,pyfuse3,mfusepy}", "docs", "ruff", "mypy", "bandit"]
env_list = ["py{311,312,313,314,315}-{none,llfuse,pyfuse3,mfusepy}", "docs", "ruff", "mypy", "bandit"]
[tool.tox.env_run_base]
package = "editable-legacy" # without this it does not find setup_docs when running under fakeroot
@ -188,20 +187,6 @@ pass_env = ["*"] # fakeroot -u needs some env vars
pass_env = ["*"] # needed by tox4, so env vars are visible for building borg
# Test environments with different FUSE implementations
[tool.tox.env.py310-none]
[tool.tox.env.py310-llfuse]
set_env = {BORG_FUSE_IMPL = "llfuse"}
extras = ["llfuse", "sftp", "s3", "rclone"]
[tool.tox.env.py310-pyfuse3]
set_env = {BORG_FUSE_IMPL = "pyfuse3"}
extras = ["pyfuse3", "sftp", "s3", "rclone"]
[tool.tox.env.py310-mfusepy]
set_env = {BORG_FUSE_IMPL = "mfusepy"}
extras = ["mfusepy", "sftp", "s3", "rclone"]
[tool.tox.env.py311-none]
[tool.tox.env.py311-llfuse]

View file

@ -187,7 +187,7 @@ class DiffMixIn:
+++++++++++++++++++++++++++
The ``--format`` option uses Python's `format string syntax
<https://docs.python.org/3.10/library/string.html#formatstrings>`_.
<https://docs.python.org/3.11/library/string.html#formatstrings>`_.
Examples:
::

View file

@ -368,11 +368,11 @@ class HelpMixIn:
{now}
The current local date and time, by default in ISO-8601 format.
You can also supply your own `format string <https://docs.python.org/3.10/library/datetime.html#strftime-and-strptime-behavior>`_, e.g. {now:%Y-%m-%d_%H:%M:%S}
You can also supply your own `format string <https://docs.python.org/3.11/library/datetime.html#strftime-and-strptime-behavior>`_, e.g. {now:%Y-%m-%d_%H:%M:%S}
{utcnow}
The current UTC date and time, by default in ISO-8601 format.
You can also supply your own `format string <https://docs.python.org/3.10/library/datetime.html#strftime-and-strptime-behavior>`_, e.g. {utcnow:%Y-%m-%d_%H:%M:%S}
You can also supply your own `format string <https://docs.python.org/3.11/library/datetime.html#strftime-and-strptime-behavior>`_, e.g. {utcnow:%Y-%m-%d_%H:%M:%S}
{user}
The user name (or UID, if no name is available) of the user running borg.

View file

@ -73,7 +73,7 @@ class ListMixIn:
+++++++++++++++++++++++++++
The ``--format`` option uses Python's `format string syntax
<https://docs.python.org/3.10/library/string.html#formatstrings>`_.
<https://docs.python.org/3.11/library/string.html#formatstrings>`_.
Examples:
::

View file

@ -53,7 +53,7 @@ class RepoListMixIn:
+++++++++++++++++++++++++++
The ``--format`` option uses Python's `format string syntax
<https://docs.python.org/3.10/library/string.html#formatstrings>`_.
<https://docs.python.org/3.11/library/string.html#formatstrings>`_.
Examples:
::