python: Build python wrapper wheels with github actions
diff --git a/.github/workflows/pypi.yaml b/.github/workflows/pypi.yaml
new file mode 100644
index 0000000..97e7f1e
--- /dev/null
+++ b/.github/workflows/pypi.yaml
@@ -0,0 +1,57 @@
+name: pypi
+
+on:
+  push:
+    branches: [ main ]
+  pull_request:
+    branches: [ main ]
+
+permissions:
+  id-token: write
+
+jobs:
+  build-linux:
+    runs-on: ubuntu-latest
+    steps:
+    - uses: actions/checkout@v4
+    - uses: actions/setup-python@v5
+      with:
+        python-version: '3.10'
+        cache: 'pip'
+    - run: |
+        pip install auditwheel patchelf
+        pip wheel . -w wheel
+        auditwheel repair -w dist --plat=manylinux_2_17_x86_64 wheel/*.whl
+    - uses: actions/upload-artifact@v4
+      with:
+        name: python-package-linux
+        path: dist/*.whl
+
+  build-macos:
+    runs-on: macos-latest
+    steps:
+    - uses: actions/checkout@v4
+    - uses: actions/setup-python@v5
+      with:
+        python-version: '3.10'
+        cache: 'pip'
+    - run: |
+        pip wheel . -w dist
+    - uses: actions/upload-artifact@v4
+      with:
+        name: python-package-macos
+        path: dist/*.whl
+
+  publish:
+    if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags')
+    runs-on: ubuntu-latest
+    needs: [build-linux, build-macos]
+    environment:
+      name: pypi
+      url: https://pypi.org/p/pylc3
+    steps:
+    - uses: actions/download-artifact@v4
+      with:
+        merge-multiple: true
+        path: dist/
+    - uses: pypa/gh-action-pypi-publish@release/v1