diff --git a/.github/workflows/python.yml b/.github/workflows/python.yml
index a499cd685763e38f36ac2583868c56db8224ca07..90b4ad233d5eee0f08b17366830e1ad876104a1f 100644
--- a/.github/workflows/python.yml
+++ b/.github/workflows/python.yml
@@ -41,9 +41,9 @@ jobs:
         CIBW_TEST_COMMAND: python -m unittest lightmotif.tests
       with:
         output-dir: dist
-    - uses: actions/upload-artifact@v3
+    - uses: actions/upload-artifact@v4
       with:
-        name: wheels
+        name: wheels-${{ matrix.python-tag }}
         path: dist/*
 
   wheel-linux-x86_64:
@@ -77,9 +77,9 @@ jobs:
         CIBW_TEST_COMMAND: python -m unittest lightmotif.tests
       with:
         output-dir: dist
-    - uses: actions/upload-artifact@v3
+    - uses: actions/upload-artifact@v4
       with:
-        name: wheels
+        name: wheels-${{ matrix.python-tag }}
         path: dist/*
 
   wheel-macos-x86_64:
@@ -112,9 +112,9 @@ jobs:
         CIBW_TEST_COMMAND: python -m unittest lightmotif.tests
       with:
         output-dir: dist
-    - uses: actions/upload-artifact@v3
+    - uses: actions/upload-artifact@v4
       with:
-        name: wheels
+        name: wheels-${{ matrix.python-tag }}
         path: dist/*
 
   wheel-macos-aarch64:
@@ -146,9 +146,9 @@ jobs:
         CIBW_TEST_COMMAND: python -m unittest lightmotif.tests
       with:
         output-dir: dist
-    - uses: actions/upload-artifact@v3
+    - uses: actions/upload-artifact@v4
       with:
-        name: wheels
+        name: wheels-${{ matrix.python-tag }}
         path: dist/*
 
   wheel-win32-x86_64:
@@ -182,7 +182,7 @@ jobs:
         output-dir: dist
     - uses: actions/upload-artifact@v4
       with:
-        name: wheels
+        name: wheels-${{ matrix.python-tag }}
         path: dist/*
 
   sdist:
@@ -222,22 +222,24 @@ jobs:
     - wheel-macos-x86_64
     - wheel-win32-x86_64
     steps:
-    - name: Download built wheels
-      if: "!contains(github.ref, 'post')"
+    - name: Download source distribution
       uses: actions/download-artifact@v4
       with:
+        name: sdist
+        path: dist/
         merge-multiple: true
-        name: wheels
-        path: dist
-    - name: Download source distribution
+    - name: Download wheel distributions
+      if: "!contains(github.ref, 'post')"
       uses: actions/download-artifact@v4
       with:
+        pattern: wheels-*
+        path: dist/
         merge-multiple: true
-        name: sdist
-        path: dist
     - name: Publish distributions to PyPI
+      if: startsWith(github.ref, 'refs/tags/v')
       uses: pypa/gh-action-pypi-publish@release/v1
   release:
+    permissions: write-all
     environment: GitHub Releases
     runs-on: ubuntu-latest
     if: "startsWith(github.ref, 'refs/tags/v')"
@@ -245,7 +247,7 @@ jobs:
     needs: upload
     steps:
     - name: Checkout code
-      uses: actions/checkout@v3
+      uses: actions/checkout@v4
     - name: Release a Changelog
       uses: rasmus-saks/release-a-changelog-action@v1.2.0
       with:
diff --git a/lightmotif-py/lightmotif/__init__.py b/lightmotif-py/lightmotif/__init__.py
index c8533fcc8d54c60a623c87975bf7037017c7673c..180cb512f6851121a0bd07987a796698e57630fe 100644
--- a/lightmotif-py/lightmotif/__init__.py
+++ b/lightmotif-py/lightmotif/__init__.py
@@ -1,4 +1,4 @@
-__version__ = "0.9.0-post1"
+__version__ = "0.9.0-post2"
 
 from . import lib
 from .lib import (