Skip to content

chore: Update pyproject & ci tasks to current SnakeDeploy template#28

Draft
jonasfreimuth wants to merge 5 commits intosnakemake:mainfrom
TRON-Bioinformatics:use-pixi-for-dev-tasks
Draft

chore: Update pyproject & ci tasks to current SnakeDeploy template#28
jonasfreimuth wants to merge 5 commits intosnakemake:mainfrom
TRON-Bioinformatics:use-pixi-for-dev-tasks

Conversation

@jonasfreimuth
Copy link
Copy Markdown

@jonasfreimuth jonasfreimuth commented Mar 16, 2026

To have Pixi available for easier development.

Summary by CodeRabbit

  • Chores

    • Migrated CI/CD and packaging to a pixi-based workflow, consolidating job names for format, lint, typecheck, and test, and updated release automation and publish/build flow to the newer release tool with tokenized publishing.
    • Updated VCS handling for the lock file and added pixi environment files to ignore while un-ignoring the pixi config.
  • Bug Fixes

    • Small message formatting cleaned up in job status output (no behavior change).

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Mar 16, 2026

📝 Walkthrough

Walkthrough

Adds Pixi-based CI/CD configuration: introduces .gitattributes entry for pixi.lock, updates GitHub Actions workflows to use Pixi (ci and release), adjusts .gitignore for Pixi artifacts and removes poetry.lock, and makes a trivial string formatting change in package init.

Changes

Cohort / File(s) Summary
Git configuration
/.gitattributes, /.gitignore
Adds .gitattributes entry for pixi.lock (binary for merges, YAML linguist-language, linguist-generated, disable diffs). Updates .gitignore to ignore .pixi/, unignore .pixi/config.toml, and removes poetry.lock from ignore list.
CI workflow
.github/workflows/ci.yml
Renames jobs and replaces Poetry setup/steps with a Pixi-based setup (prefix-dev/setup-pixi@v0), updates checkout to actions/checkout@v6, and swaps poetry commands for pixi run equivalents (format, lint, typecheck, test, coverage).
Release workflow
.github/workflows/release-please.yml
Replaces release-please action with GoogleCloudPlatform/release-please-action@v3 and adds package-name; introduces PYTHON_VERSION env, switches build/publish steps to Pixi and pypa/gh-action-pypi-publish@release/v1, and replaces setup-python with Pixi setup.
Source minor edit
src/snakemake_executor_plugin_cluster_generic/__init__.py
Minor reformatting of a job status error message string from two concatenated literals into a single literal (no behavior change).

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the main changes: migrating from Poetry-based setup to Pixi for CI workflows and development tasks, aligning with the SnakeDeploy template.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
📝 Coding Plan
  • Generate coding plan for human review comments

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🧹 Nitpick comments (1)
.github/workflows/ci.yml (1)

46-58: Minor inconsistency: checkout step missing name label.

The checkout step on line 49 omits the name: Check out the code label that other jobs use. Consider adding it for consistency.

🔧 Proposed fix
   test:
     runs-on: ubuntu-latest
     steps:
-      - uses: actions/checkout@v6
+      - name: Check out the code
+        uses: actions/checkout@v6
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/ci.yml around lines 46 - 58, The checkout step in the
"test" job is missing a human-readable name label for consistency; add a `name`
key (e.g., "Check out the code") to the step that uses actions/checkout@v6 so
the step matches naming style used in other jobs and improves readability in CI
logs; update the step that currently reads `- uses: actions/checkout@v6` to
include the name alongside the uses entry.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.github/workflows/release-please.yml:
- Around line 8-9: The PYTHON_VERSION environment variable in the workflow env
block is unquoted (PYTHON_VERSION: 3.11) which YAML may parse as a float; update
the env key so the value is a string by quoting it (e.g., set PYTHON_VERSION to
"3.11") to ensure it is not truncated or misparsed; locate the env block and the
PYTHON_VERSION entry in the release-please.yml and change the value to a quoted
string.
- Around line 32-36: Remove the unsupported python-version input from the "Setup
pixi" step using the prefix-dev/setup-pixi action: locate the job step that uses
prefix-dev/setup-pixi (named "Setup pixi") and delete the python-version: ${{
env.PYTHON_VERSION }} line (and its key if present) so only supported inputs
like cache remain; manage Python versions via pixi.toml or pyproject.toml
instead.

---

Nitpick comments:
In @.github/workflows/ci.yml:
- Around line 46-58: The checkout step in the "test" job is missing a
human-readable name label for consistency; add a `name` key (e.g., "Check out
the code") to the step that uses actions/checkout@v6 so the step matches naming
style used in other jobs and improves readability in CI logs; update the step
that currently reads `- uses: actions/checkout@v6` to include the name alongside
the uses entry.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: e3ba206f-d060-41ef-8468-6d9665c42826

📥 Commits

Reviewing files that changed from the base of the PR and between ce5fc82 and 9c86c89.

⛔ Files ignored due to path filters (2)
  • pixi.lock is excluded by !**/*.lock
  • pyproject.toml is excluded by !pyproject.toml
📒 Files selected for processing (5)
  • .gitattributes
  • .github/workflows/ci.yml
  • .github/workflows/release-please.yml
  • .gitignore
  • tests/test_plugin.py

Comment on lines +32 to +36
- name: Setup pixi
uses: prefix-dev/setup-pixi@v0
with:
python-version: "3.11"

- name: Install poetry
run: pip install poetry
cache: true
python-version: ${{ env.PYTHON_VERSION }}
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🌐 Web query:

Does prefix-dev/setup-pixi action support python-version parameter?

💡 Result:

No. prefix-dev/setup-pixi does not have a python-version input—its supported inputs are defined in action.yml, and python-version is not one of them. [1]

If you want a specific Python version, set it in your Pixi environment (e.g., python = ">=3.11" in pixi.toml/pyproject.toml) and let pixi install resolve it. [2]

Sources: [1], [2]


Remove the unsupported python-version parameter from setup-pixi.

The prefix-dev/setup-pixi action does not support a python-version input parameter. Python version should be managed through your pixi.toml or pyproject.toml configuration instead (e.g., python = ">=3.11"). The parameter at lines 35–36 will be silently ignored and should be removed.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/release-please.yml around lines 32 - 36, Remove the
unsupported python-version input from the "Setup pixi" step using the
prefix-dev/setup-pixi action: locate the job step that uses
prefix-dev/setup-pixi (named "Setup pixi") and delete the python-version: ${{
env.PYTHON_VERSION }} line (and its key if present) so only supported inputs
like cache remain; manage Python versions via pixi.toml or pyproject.toml
instead.

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR migrates the project from a Poetry-based setup to a Pixi-based development/CI workflow (SnakeDeploy template), and introduces a basic test suite for the executor plugin.

Changes:

  • Switch packaging metadata to PEP 621 ([project]) and move builds to hatchling.
  • Add Pixi workspace config (including pixi.lock) and update CI/release workflows to run via pixi.
  • Add plugin workflow tests under tests/.

Reviewed changes

Copilot reviewed 4 out of 7 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
tests/test_plugin.py Adds workflow-based tests for the executor plugin.
pyproject.toml Migrates project metadata/build backend and adds Pixi environments/tasks.
pixi.lock Adds the Pixi lockfile for reproducible environments.
.gitignore Ignores Pixi environment directory contents.
.github/workflows/ci.yml Reworks CI jobs to run formatting/lint/typecheck/tests via Pixi.
.github/workflows/release-please.yml Updates release/publish workflow to build/check via Pixi and publish via PyPI action.
.gitattributes Marks pixi.lock as generated/binary-ish for merges and linguist.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

For consistency with current plugin template.
@jonasfreimuth jonasfreimuth force-pushed the use-pixi-for-dev-tasks branch 2 times, most recently from 7e513d8 to 528e8cc Compare March 16, 2026 22:39
Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.github/workflows/ci.yml:
- Line 20: CI workflow is invoking Pixi tasks that live only under the dev
feature, so update each pixi run invocation (the commands calling format, lint,
typecheck, test, coverage-report) to select the dev environment by adding "-e
dev" before the task name (e.g., change the "pixi run format --check" invocation
used in the workflow and the analogous invocations for lint, typecheck, test,
and coverage-report to use "pixi run -e dev ...") so Pixi will find the tasks
defined under [tool.pixi.feature.dev.tasks].

In @.github/workflows/release-please.yml:
- Around line 17-22: Add explicit workflow permissions for the release-please
step: in the workflow YAML ensure the job (or workflow) defines permissions
including at least "contents: write" and "pull-requests: write" so the step
using GoogleCloudPlatform/release-please-action@v3 (id: release) can create
releases and PRs; update the permissions block to grant those two write
permissions rather than relying on defaults.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 06732015-85f7-485d-9189-4989ff151647

📥 Commits

Reviewing files that changed from the base of the PR and between 9c86c89 and 7e513d8.

⛔ Files ignored due to path filters (2)
  • pixi.lock is excluded by !**/*.lock
  • pyproject.toml is excluded by !pyproject.toml
📒 Files selected for processing (6)
  • .gitattributes
  • .github/workflows/ci.yml
  • .github/workflows/release-please.yml
  • .gitignore
  • src/snakemake_executor_plugin_cluster_generic/__init__.py
  • tests/test_plugin.py
🚧 Files skipped from review as they are similar to previous changes (1)
  • .gitignore

@jonasfreimuth jonasfreimuth force-pushed the use-pixi-for-dev-tasks branch 2 times, most recently from fb21c36 to b716716 Compare March 16, 2026 22:53
For ease of development. Done by copying current Snakedeploy
scaffolding. This also means using different pacakges for dev tasks.
Due to the latter, test coverage seems to have gone down to just
above 68.9.
Using names from current SnakeDeploy template.
Just for consistency.
@jonasfreimuth jonasfreimuth force-pushed the use-pixi-for-dev-tasks branch from b716716 to 40c24c2 Compare March 16, 2026 22:55
Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

♻️ Duplicate comments (1)
.github/workflows/release-please.yml (1)

33-36: ⚠️ Potential issue | 🟡 Minor

Remove unsupported python-version input from setup-pixi.

At Line 36, python-version is not a supported input for prefix-dev/setup-pixi@v0, so it is ignored.

🔧 Proposed fix
       - name: Setup pixi
         uses: prefix-dev/setup-pixi@v0
         with:
           cache: true
-          python-version: ${{ env.PYTHON_VERSION }}
#!/bin/bash
set -euo pipefail
# Verify supported inputs for setup-pixi v0
curl -fsSL https://raw.githubusercontent.com/prefix-dev/setup-pixi/v0/action.yml \
  | awk '/^inputs:/,/^runs:/'
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/release-please.yml around lines 33 - 36, Remove the
unsupported input by deleting the python-version line under the uses:
prefix-dev/setup-pixi@v0 step (leave cache: true), i.e., remove the input named
python-version so the workflow only passes supported inputs to setup-pixi;
verify by checking action.yml for prefix-dev/setup-pixi@v0 if you need to
confirm allowed inputs.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Duplicate comments:
In @.github/workflows/release-please.yml:
- Around line 33-36: Remove the unsupported input by deleting the python-version
line under the uses: prefix-dev/setup-pixi@v0 step (leave cache: true), i.e.,
remove the input named python-version so the workflow only passes supported
inputs to setup-pixi; verify by checking action.yml for prefix-dev/setup-pixi@v0
if you need to confirm allowed inputs.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 277fe278-b3cc-4ec2-bbd4-607f48a35e55

📥 Commits

Reviewing files that changed from the base of the PR and between 7e513d8 and 40c24c2.

⛔ Files ignored due to path filters (2)
  • pixi.lock is excluded by !**/*.lock
  • pyproject.toml is excluded by !pyproject.toml
📒 Files selected for processing (6)
  • .gitattributes
  • .github/workflows/ci.yml
  • .github/workflows/release-please.yml
  • .gitignore
  • src/snakemake_executor_plugin_cluster_generic/__init__.py
  • tests/test_plugin.py
✅ Files skipped from review due to trivial changes (2)
  • src/snakemake_executor_plugin_cluster_generic/init.py
  • .gitattributes
🚧 Files skipped from review as they are similar to previous changes (1)
  • .gitignore

@jonasfreimuth jonasfreimuth marked this pull request as draft March 17, 2026 07:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants