Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 70 additions & 0 deletions .github/workflows/python-publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
# This workflow will upload a Python Package to PyPI when a release is created
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python#publishing-to-package-registries

# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.

name: Upload Python Package

on:
release:
types: [published]
Copy link

Copilot AI Jan 12, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The workflow triggers on 'published' releases, while the existing Windows build workflow triggers on 'created' releases. This inconsistency means the PyPI publishing workflow will run at a different time than the Windows build workflow. For proper synchronization, both workflows should use the same trigger type. Consider using 'created' instead of 'published' to align with the existing workflow, or update both to use 'published' if that better fits your release process.

Suggested change
types: [published]
types: [created]

Copilot uses AI. Check for mistakes.

permissions:
contents: read

jobs:
release-build:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- uses: actions/setup-python@v5
Copy link

Copilot AI Jan 12, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The actions/setup-python version is inconsistent with the existing workflow. The Windows build workflow uses actions/setup-python@v4, while this new workflow uses v5. While using the newer version is generally good, for consistency and to avoid potential compatibility issues across workflows, consider aligning the versions. Either update both workflows to use v5, or use v4 here to match the existing workflow.

Suggested change
- uses: actions/setup-python@v5
- uses: actions/setup-python@v4

Copilot uses AI. Check for mistakes.
with:
python-version: "3.x"
Copy link

Copilot AI Jan 12, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Python version specification "3.x" uses the latest available Python 3 version, which differs from the project's configuration. The pyproject.toml requires Python >=3.9 and the existing Windows workflow explicitly uses Python 3.12. For consistency and to ensure builds match the project's development environment, consider specifying a concrete Python version like "3.12" instead of "3.x".

Suggested change
python-version: "3.x"
python-version: "3.12"

Copilot uses AI. Check for mistakes.

- name: Build release distributions
run: |
# NOTE: put your own distribution build steps here.
python -m pip install build
python -m build
- name: Upload distributions
uses: actions/upload-artifact@v4
with:
name: release-dists
path: dist/

pypi-publish:
runs-on: ubuntu-latest
needs:
- release-build
permissions:
# IMPORTANT: this permission is mandatory for trusted publishing
id-token: write

# Dedicated environments with protections for publishing are strongly recommended.
# For more information, see: https://docs.github.com/en/actions/deployment/targeting-different-environments/using-environments-for-deployment#deployment-protection-rules
environment:
name: pypi
# OPTIONAL: uncomment and update to include your PyPI project URL in the deployment status:
# url: https://pypi.org/p/YOURPROJECT
#
# ALTERNATIVE: if your GitHub Release name is the PyPI project version string
# ALTERNATIVE: exactly, uncomment the following line instead:
# url: https://pypi.org/project/YOURPROJECT/${{ github.event.release.name }}

steps:
- name: Retrieve release distributions
uses: actions/download-artifact@v4
with:
name: release-dists
path: dist/

- name: Publish release distributions to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
packages-dir: dist/