Repository: repobee/repobee (language: python)

Issue:
Drop support for Python 3.7
Python 3.7 reaches EOL at [2022-06-23](https://www.python.org/downloads/), which is pretty soon. Libraries are already dropping support for it, so in order to keep RepoBee up-to-date I need to drop support for Python 3.7 across the board.


Discussion / hints:

Fix patch:
diff --git a/.readthedocs.yml b/.readthedocs.yml
index 72b3ac28..0970b39c 100644
--- a/.readthedocs.yml
+++ b/.readthedocs.yml
@@ -4,7 +4,7 @@ build:
     image: latest
 
 python:
-    version: 3.7
+    version: 3.8
     install:
         - method: pip
           path: .
diff --git a/README.md b/README.md
index fab8799f..570af1b5 100644
--- a/README.md
+++ b/README.md
@@ -4,7 +4,7 @@
 [![Code Coverage](https://codecov.io/gh/repobee/repobee/branch/master/graph/badge.svg)](https://codecov.io/gh/repobee/repobee)
 [![Documentation Status](https://readthedocs.org/projects/repobee/badge/?version=stable)](http://repobee.readthedocs.io/en/stable/)
 [![PyPi Version](https://badge.fury.io/py/repobee.svg)](https://badge.fury.io/py/repobee)
-![Supported Python Versions](https://img.shields.io/badge/python-3.7%2C%203.8%2C%203.9%2C%203.10-blue.svg)
+![Supported Python Versions](https://img.shields.io/badge/python-3.8%2C%203.9%2C%203.10%2C%203.11-blue.svg)
 ![Supported Platforms](https://img.shields.io/badge/platforms-Linux%2C%20macOS-blue.svg)
 [![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
 [![Code Style: Black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black)
@@ -81,7 +81,7 @@ on how to use RepoBee with Gitea.
 
 ### Install
 We provide an install script that sets up an isolated and correctly configured
-environment for RepoBee, granted that you have [Python 3.7+ and Git
+environment for RepoBee, granted that you have [Python 3.8+ and Git
 installed](https://docs.repobee.org/en/stable/install.html#requirements). The script
 supports macOS, Linux and Windows Subsystem for Linux (WSL). You can execute it
 directly using `curl`, with either `bash` or `zsh`.
diff --git a/docs/install.rst b/docs/install.rst
index 4300cc98..ae549bc7 100644
--- a/docs/install.rst
+++ b/docs/install.rst
@@ -9,8 +9,8 @@ outlined in this section.
 Requirements
 ------------
 
-RepoBee requires Python 3.7+ and a somewhat up-to-date version of Git (2.0+ to
-be on the safe side). Officially supported operating systems are Ubuntu 17.04+
+RepoBee requires Python 3.8+ and a somewhat up-to-date version of Git (2.0+ to
+be on the safe side). Officially supported operating systems are Ubuntu 18.04+
 and macOS, but RepoBee runs fine on most Linux distributions, and also on WSL_
 on Windows 10. Please report any issues with operating systems and/or Git
 versions on the `issue tracker`_.
diff --git a/scripts/install.sh b/scripts/install.sh
index 477a4d87..6246784d 100755
--- a/scripts/install.sh
+++ b/scripts/install.sh
@@ -21,7 +21,7 @@ REPOBEE_COMPLETION="$REPOBEE_INSTALL_DIR/completion"
 REPOBEE_BASH_COMPLETION="$REPOBEE_COMPLETION/bash_completion.sh"
 REGISTER_PYTHON_ARGCOMPLETE="$REPOBEE_INSTALL_DIR/env/bin/register-python-argcomplete"
 
-MIN_PYTHON_VERSION=6
+MIN_PYTHON_VERSION=8
 
 function install() {
     repobee_pip_uri=$1
@@ -35,11 +35,11 @@ function install() {
 }
 
 function check_prerequisites() {
-    # check that Python 3.7+, pip and Git are installed
+    # check that Python 3.8+, pip and Git are installed
     installed_python=$(find_python)
     if [ -z "$installed_python" ]; then
         printf "\nCannot find any compatible version of Python installed.\n"
-        echo "Please install Python 3.7 or higher and then rerun this script."
+        echo "Please install Python 3.8 or higher and then rerun this script."
         echo "See https://www.python.org/downloads/ for a Python installer."
         exit 1
     else
@@ -93,7 +93,7 @@ function install_repobee() {
 
 function find_python() {
     # Find an appropriate python executable
-    for exec_suffix in "3.10" "3.9" "3.8" "3.7" "3" ""; do
+    for exec_suffix in "3.11" "3.10" "3.9" "3.8" "3" ""; do
         python_exec="python$exec_suffix"
         minor_version=$(get_minor_python3_version "$python_exec")
         if [ "$minor_version" -ge "$MIN_PYTHON_VERSION" ]; then
diff --git a/setup.py b/setup.py
index 55d6da8e..dadcd0df 100644
--- a/setup.py
+++ b/setup.py
@@ -102,14 +102,14 @@
     package_data={"repobee_plug": ["py.typed"]},
     include_package_data=True,
     zip_safe=False,
-    python_requires=">=3.7",
+    python_requires=">=3.8",
     classifiers=[
         "Development Status :: 5 - Production/Stable",
         "Intended Audience :: Education",
-        "Programming Language :: Python :: 3.7",
         "Programming Language :: Python :: 3.8",
         "Programming Language :: Python :: 3.9",
         "Programming Language :: Python :: 3.10",
+        "Programming Language :: Python :: 3.11",
         "Programming Language :: Python :: Implementation :: CPython",
         "License :: OSI Approved :: MIT License",
         "Operating System :: POSIX",


Test patch:
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
index 4903c127..8739cb69 100644
--- a/.github/workflows/tests.yml
+++ b/.github/workflows/tests.yml
@@ -20,18 +20,18 @@ jobs:
     strategy:
       matrix:
         os: [ubuntu-latest, macos-latest]
-        python-version: [3.7, 3.8, 3.9, '3.10']
+        python-version: [3.8, 3.9, '3.10', '3.11']
         core-commands-as-plugins: [false]
         exclude:
-          - os: macos-latest
-            python-version: 3.8
           - os: macos-latest
             python-version: 3.9
           - os: macos-latest
             python-version: 3.10
+          - os: macos-latest
+            python-version: 3.11
         include:
           - os: ubuntu-latest
-            python-version: 3.7
+            python-version: 3.8
             core-commands-as-plugins: true
     steps:
     - uses: actions/checkout@v3
@@ -77,10 +77,10 @@ jobs:
     - uses: actions/checkout@v3
       with:
         fetch-depth: 2
-    - name: Set up Python 3.7
+    - name: Set up Python 3.8
       uses: actions/setup-python@v4
       with:
-        python-version: 3.7
+        python-version: 3.8
     - name: Set up Git
       run: |
         git config --global user.name "Repo Bee"
@@ -121,10 +121,10 @@ jobs:
     - uses: actions/checkout@v3
       with:
         fetch-depth: 2
-    - name: Set up Python 3.7
+    - name: Set up Python 3.8
       uses: actions/setup-python@v4
       with:
-        python-version: 3.7
+        python-version: 3.8
     - name: Set up Git
       run: |
         git config --global user.name "Repo Bee"