From 64e7ccd3fcb96b3c502d5f53a9fc4ec5ed03e963 Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Sat, 26 Feb 2022 00:13:19 +0100 Subject: [PATCH] require python >= 3.9, fixes #6315 --- .github/workflows/ci.yml | 11 ++++------- .github/workflows/codeql-analysis.yml | 5 ++++- Vagrantfile | 15 +++++++-------- docs/development.rst | 2 +- docs/installation.rst | 8 ++++---- setup.py | 3 +-- src/borg/archiver.py | 6 +++--- 7 files changed, 24 insertions(+), 26 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 020d982c..be011d36 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -39,7 +39,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v2 with: - python-version: 3.8 + python-version: 3.9 - name: Lint with flake8 run: | pip install flake8 @@ -51,18 +51,15 @@ jobs: strategy: matrix: include: - - os: ubuntu-20.04 - python-version: '3.8' - toxenv: py38-fuse2 - os: ubuntu-20.04 python-version: '3.9' - toxenv: py39-fuse3 + toxenv: py39-fuse2 - os: ubuntu-20.04 python-version: '3.10' toxenv: py310-fuse3 - os: macos-10.15 # macos-latest is macos 11.6.2 and hanging at test_fuse, #6099 - python-version: '3.8' - toxenv: py38-fuse2 + python-version: '3.9' + toxenv: py39-fuse2 env: # Configure pkg-config to use OpenSSL from Homebrew diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 4799e376..43e0aef9 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -33,7 +33,10 @@ jobs: with: # just fetching 1 commit is not enough for setuptools-scm, so we fetch all fetch-depth: 0 - + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: 3.9 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL uses: github/codeql-action/init@v1 diff --git a/Vagrantfile b/Vagrantfile index 94325761..2e4a7918 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -42,9 +42,11 @@ def packages_freebsd pkg install -y fusefs-libs3 || true pkg install -y git bash # fakeroot causes lots of troubles on freebsd # for building python (for the tests we use pyenv built pythons): - pkg install -y python38 py38-sqlite3 py38-virtualenv py38-pip + pkg install -y python39 py39-sqlite3 # make sure there is a python3 command - ln -sf /usr/local/bin/python3.8 /usr/local/bin/python3 + ln -sf /usr/local/bin/python3.9 /usr/local/bin/python3 + python3 -m ensurepip + pip3 install virtualenv # make bash default / work: chsh -s bash vagrant mount -t fdescfs fdesc /dev/fd @@ -91,8 +93,6 @@ def packages_netbsd pkg_add pkg-config # pkg_add fuse # llfuse supports netbsd, but is still buggy. # https://bitbucket.org/nikratio/python-llfuse/issues/70/perfuse_open-setsockopt-no-buffer-space - pkg_add python38 py38-sqlite3 py38-pip py38-virtualenv py38-expat - ln -s /usr/pkg/lib/python3.8/_sysconfigdata_netbsd9.py /usr/pkg/lib/python3.8/_sysconfigdata__netbsd9_.py # bug in netbsd 9.2, expected filename not there. pkg_add python39 py39-sqlite3 py39-pip py39-virtualenv py39-expat ln -s /usr/pkg/bin/python3.9 /usr/pkg/bin/python ln -s /usr/pkg/bin/python3.9 /usr/pkg/bin/python3 @@ -159,7 +159,6 @@ def install_pythons(boxname) . ~/.bash_profile pyenv install 3.10.0 # tests, version supporting openssl 1.1 pyenv install 3.9.10 # tests, version supporting openssl 1.1, binary build - pyenv install 3.8.0 # tests, version supporting openssl 1.1 pyenv rehash EOF end @@ -228,8 +227,8 @@ def run_tests(boxname, skip_env) . ../borg-env/bin/activate if which pyenv 2> /dev/null; then # for testing, use the earliest point releases of the supported python versions: - pyenv global 3.8.0 3.9.10 3.10.0 - pyenv local 3.8.0 3.9.10 3.10.0 + pyenv global 3.9.10 3.10.0 + pyenv local 3.9.10 3.10.0 fi # otherwise: just use the system python # some OSes can only run specific test envs, e.g. because they miss FUSE support: @@ -423,6 +422,6 @@ Vagrant.configure(2) do |config| b.vm.provision "run tests", :type => :shell, :privileged => false, :inline => run_tests("openindiana64", ".*fuse.*") end - # TODO: create more VMs with python 3.8+ and openssl 1.1 or 3.0. + # TODO: create more VMs with python 3.9+ and openssl 1.1 or 3.0. # See branch 1.1-maint for a better equipped Vagrantfile (but still on py35 and openssl 1.0). end diff --git a/docs/development.rst b/docs/development.rst index d54c6c4e..5eeaae83 100644 --- a/docs/development.rst +++ b/docs/development.rst @@ -182,7 +182,7 @@ Some more advanced examples:: # verify a changed tox.ini (run this after any change to tox.ini): fakeroot -u tox --recreate - fakeroot -u tox -e py38 # run all tests, but only on python 3.8 + fakeroot -u tox -e py39 # run all tests, but only on python 3.9 fakeroot -u tox borg.testsuite.locking # only run 1 test module diff --git a/docs/installation.rst b/docs/installation.rst index f41d1d5b..50712784 100644 --- a/docs/installation.rst +++ b/docs/installation.rst @@ -159,7 +159,7 @@ Dependencies To install Borg from a source package (including pip), you have to install the following dependencies first: -* `Python 3`_ >= 3.8.0 (interpreter plus development headers) +* `Python 3`_ >= 3.9.0, plus development headers. * Libraries (library plus development headers): - OpenSSL_ >= 1.1.1 @@ -395,9 +395,9 @@ If you need to use a different version of Python you can install this using ``py ... # create a virtual environment - pyenv install 3.8.0 # minimum, preferably use something more recent! - pyenv global 3.8.0 - pyenv local 3.8.0 + pyenv install 3.9.0 # minimum, preferably use something more recent! + pyenv global 3.9.0 + pyenv local 3.9.0 virtualenv --python=${pyenv which python} borg-env source borg-env/bin/activate # always before using! ... diff --git a/setup.py b/setup.py index 9090b9e8..bc1d000c 100644 --- a/setup.py +++ b/setup.py @@ -260,7 +260,6 @@ setup( 'Operating System :: POSIX :: Linux', 'Programming Language :: Python', 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.8', 'Programming Language :: Python :: 3.9', 'Programming Language :: Python :: 3.10', 'Topic :: Security :: Cryptography', @@ -287,5 +286,5 @@ setup( setup_requires=['setuptools_scm>=1.7'], install_requires=install_requires, extras_require=extras_require, - python_requires='>=3.8', + python_requires='>=3.9', ) diff --git a/src/borg/archiver.py b/src/borg/archiver.py index a2b80a9a..1302bf91 100644 --- a/src/borg/archiver.py +++ b/src/borg/archiver.py @@ -2457,11 +2457,11 @@ class Archiver: {now} The current local date and time, by default in ISO-8601 format. - You can also supply your own `format string `_, e.g. {now:%Y-%m-%d_%H:%M:%S} + You can also supply your own `format string `_, 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 `_, e.g. {utcnow:%Y-%m-%d_%H:%M:%S} + You can also supply your own `format string `_, 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. @@ -4300,7 +4300,7 @@ class Archiver: +++++++++++++++++++++++++++ The ``--format`` option uses python's `format string syntax - `_. + `_. Examples: ::