From 4ee00d41749762ae561a084e0a8917b5d8bfd3a0 Mon Sep 17 00:00:00 2001
From: "Christian Y. Brenninkmeijer"
 <christian.brenninkmeijer@manchester.ac.uk>
Date: Tue, 2 Jan 2024 13:20:34 +0000
Subject: [PATCH 1/2] remove distutils

---
 setup.py | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/setup.py b/setup.py
index 763c64d..168138c 100644
--- a/setup.py
+++ b/setup.py
@@ -13,8 +13,8 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
-import distutils.dir_util
 from setuptools import setup
+import shutil
 import os
 import sys
 
@@ -27,8 +27,8 @@
         this_dir = os.path.dirname(os.path.abspath(__file__))
         build_dir = os.path.join(this_dir, "build")
         if os.path.isdir(build_dir):
-            distutils.dir_util.remove_tree(build_dir)
+            shutil.rmtree(build_dir)
         egg_dir = os.path.join(this_dir, "MarkovChainMonteCarl.egg-info")
         if os.path.isdir(egg_dir):
-            distutils.dir_util.remove_tree(egg_dir)
+            shutil.rmtree(egg_dir)
     setup()

From 3920ea592c39ade3851248785c086151c7504be2 Mon Sep 17 00:00:00 2001
From: "Christian Y. Brenninkmeijer"
 <christian.brenninkmeijer@manchester.ac.uk>
Date: Tue, 2 Jan 2024 13:36:28 +0000
Subject: [PATCH 2/2] python 3.12

---
 .github/workflows/c_actions.yml      | 4 ++--
 .github/workflows/python_actions.yml | 6 +++---
 setup.cfg                            | 4 ++--
 3 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/.github/workflows/c_actions.yml b/.github/workflows/c_actions.yml
index c9fb8e1..122bed0 100644
--- a/.github/workflows/c_actions.yml
+++ b/.github/workflows/c_actions.yml
@@ -25,11 +25,11 @@ jobs:
     steps:
     - name: Install Ubuntu packages
       run: sudo apt-get install doxygen gcc-arm-none-eabi --fix-missing
-    - name: Configure Python 3.8
+    - name: Configure Python 3.12
       # Note: Python is needed for spinn_utilities.make_tools when building
       uses: actions/setup-python@v4
       with:
-        python-version: 3.8
+        python-version: 3.12
 
     - name: Checkout
       uses: actions/checkout@v4
diff --git a/.github/workflows/python_actions.yml b/.github/workflows/python_actions.yml
index 54731b7..72376f8 100644
--- a/.github/workflows/python_actions.yml
+++ b/.github/workflows/python_actions.yml
@@ -24,7 +24,7 @@ jobs:
     runs-on: ubuntu-latest
     strategy:
       matrix:
-        python-version: [3.8, 3.9, "3.10", "3.11"]
+        python-version: [3.8, 3.9, "3.10", "3.11", "3.12"]
     steps:
     - name: Set up Python ${{ matrix.python-version }}
       uses: actions/setup-python@v4
@@ -62,7 +62,7 @@ jobs:
       uses: ./support/actions/pytest
       with:
         tests: unittests
-        coverage: ${{ matrix.python-version == 3.8 }}
+        coverage: ${{ matrix.python-version == 3.12 }}
         cover-packages: ${{ env.CODE_PATHS }}
         coveralls-token: ${{ secrets.COVERALLS_REPO_TOKEN }}
 
@@ -75,7 +75,7 @@ jobs:
         exitcheck: 39
 
     - name: Run rat copyright enforcement
-      if: matrix.python-version == 3.8
+      if: matrix.python-version == 3.12
       uses: ./support/actions/check-copyrights
 
 #    # Add the following as required in the future
diff --git a/setup.cfg b/setup.cfg
index 50408c2..5af9981 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -30,11 +30,11 @@ classifiers=
         Operating System :: Microsoft :: Windows
         Operating System :: MacOS
         Programming Language :: Python :: 3
-        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 :: 3.12
 maintainer = SpiNNakerTeam
 maintainer_email = spinnakerusers@googlegroups.com
 keywords =
@@ -42,7 +42,7 @@ keywords =
         Markov Chain Monte Carlo
 
 [options]
-python_requires = >=3.7, <4
+python_requires = >=3.8, <4
 packages = find:
 zip_safe = True
 include_package_data = True