From b79b75e62c4b51cb5f0fddc60b0164119fce8169 Mon Sep 17 00:00:00 2001 From: Johannes Koester Date: Thu, 19 Feb 2026 15:54:44 +0100 Subject: [PATCH 1/8] fix: update scaffolding to make full use of pixi --- snakedeploy/scaffold_plugins/common.py | 12 +++- snakedeploy/templates/plugins/ci.yml.j2 | 72 +++++++++------------- snakedeploy/templates/plugins/setup.cfg.j2 | 7 --- 3 files changed, 41 insertions(+), 50 deletions(-) delete mode 100644 snakedeploy/templates/plugins/setup.cfg.j2 diff --git a/snakedeploy/scaffold_plugins/common.py b/snakedeploy/scaffold_plugins/common.py index f321b7f..088903e 100644 --- a/snakedeploy/scaffold_plugins/common.py +++ b/snakedeploy/scaffold_plugins/common.py @@ -65,6 +65,17 @@ def save_pyproject(pyproject): # the python dependency should be in line with the dependencies pyproject["project"]["requires-python"] = ">=3.11,<4.0" + # configure coverage + pyproject["tool"]["coverage"] = { + "report": { + "exclude_lines": [ + "pass", + "\\.\\.\\.", + ], + "fail_under": 90.0, + } + } + save_pyproject(pyproject) # add dependencies @@ -157,7 +168,6 @@ def render_template(name, dest: Path): (tests_path / "__init__.py").unlink(missing_ok=True) - render_template("setup.cfg.j2", Path("setup.cfg")) render_template("release_please.yml.j2", workflows_path / "release-please.yml") render_template("ci.yml.j2", workflows_path / "ci.yml") render_template( diff --git a/snakedeploy/templates/plugins/ci.yml.j2 b/snakedeploy/templates/plugins/ci.yml.j2 index ea12ced..0b001b3 100644 --- a/snakedeploy/templates/plugins/ci.yml.j2 +++ b/snakedeploy/templates/plugins/ci.yml.j2 @@ -6,65 +6,53 @@ on: - main pull_request: -env: - PYTHON_VERSION: 3.11 - jobs: - linting: + format: runs-on: ubuntu-latest steps: - name: Check out the code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - - uses: actions/setup-python@v4 - with: - python-version: {{ "${{ env.PYTHON_VERSION }}" }} + - name: Setup pixi + uses: prefix-dev/setup-pixi@v0 - - name: Install poetry - run: pip install poetry + - name: Check formatting + run: pixi run format --check . - - name: Determine dependencies - run: poetry lock + lint: + runs-on: ubuntu-latest + steps: + - name: Check out the code + uses: actions/checkout@v6 - - uses: actions/setup-python@v4 - with: - python-version: {{ "${{ env.PYTHON_VERSION }}" }} - cache: poetry + - name: Setup pixi + uses: prefix-dev/setup-pixi@v0 - - name: Install Dependencies using Poetry - run: poetry install + - name: Check code + run: pixi run lint - - name: Check formatting - run: poetry run ruff format --check . - - - name: Lint - run: poetry run ruff check . - - testing: + typecheck: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - - uses: actions/setup-python@v4 - with: - python-version: {{ "${{ env.PYTHON_VERSION }}" }} + - name: Check out the code + uses: actions/checkout@v6 - - name: Install poetry - run: pip install poetry + - name: Setup pixi + uses: prefix-dev/setup-pixi@v0 - - name: Determine dependencies - run: poetry lock + - name: Check code + run: pixi run lint - - uses: actions/setup-python@v4 - with: - python-version: {{ "${{ env.PYTHON_VERSION }}" }} - cache: poetry + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 - - name: Install dependencies - run: poetry install + - name: Setup pixi + uses: prefix-dev/setup-pixi@v0 - name: Run pytest - run: poetry run coverage run -m pytest + run: pixi run test -v - name: Run Coverage - run: poetry run coverage report -m + run: pixi run coverage-report diff --git a/snakedeploy/templates/plugins/setup.cfg.j2 b/snakedeploy/templates/plugins/setup.cfg.j2 deleted file mode 100644 index 43a5b43..0000000 --- a/snakedeploy/templates/plugins/setup.cfg.j2 +++ /dev/null @@ -1,7 +0,0 @@ -[flake8] -# Recommend matching the black line length (default 88), -# rather than using the flake8 default of 79: -max-line-length = 88 -extend-ignore = - # See https://github.com/PyCQA/pycodestyle/issues/373 - E203, \ No newline at end of file From c6e39723aa4294892d3467aeae963e459d8d49e6 Mon Sep 17 00:00:00 2001 From: Johannes Koester Date: Fri, 20 Feb 2026 13:06:00 +0100 Subject: [PATCH 2/8] typecheck and dev dependencies --- snakedeploy/scaffold_plugins/common.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/snakedeploy/scaffold_plugins/common.py b/snakedeploy/scaffold_plugins/common.py index 088903e..60da2a6 100644 --- a/snakedeploy/scaffold_plugins/common.py +++ b/snakedeploy/scaffold_plugins/common.py @@ -86,14 +86,14 @@ def save_pyproject(pyproject): dev_deps = [ "pixi", "add", - "--pypi", "--feature", "dev", "ruff", - "coverage", "pytest", + "pytest-cov", + "pyrefly", "twine", - "build", + "python-build", ] if self.include_snakemake_dev_dependency(): dev_deps.append("snakemake") @@ -111,6 +111,10 @@ def save_pyproject(pyproject): ["pixi", "task", "add", "--feature", "dev", "format", "ruff format"], check=True, ) + sp.run( + ["pixi", "task", "add", "--feature", "dev", "typecheck", "pyrefly check"], + check=True, + ) sp.run( [ "pixi", From 374cf67efb8684e0c5a8fe9c61ce90ca2f23f61e Mon Sep 17 00:00:00 2001 From: Johannes Koester Date: Fri, 20 Feb 2026 13:07:07 +0100 Subject: [PATCH 3/8] fix --- snakedeploy/templates/plugins/ci.yml.j2 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/snakedeploy/templates/plugins/ci.yml.j2 b/snakedeploy/templates/plugins/ci.yml.j2 index 0b001b3..3e3bc74 100644 --- a/snakedeploy/templates/plugins/ci.yml.j2 +++ b/snakedeploy/templates/plugins/ci.yml.j2 @@ -17,7 +17,7 @@ jobs: uses: prefix-dev/setup-pixi@v0 - name: Check formatting - run: pixi run format --check . + run: pixi run format --check lint: runs-on: ubuntu-latest @@ -41,7 +41,7 @@ jobs: uses: prefix-dev/setup-pixi@v0 - name: Check code - run: pixi run lint + run: pixi run typecheck test: runs-on: ubuntu-latest From 26b10a4b2f5b25689f22cec9dc7d2979927b1355 Mon Sep 17 00:00:00 2001 From: Johannes Koester Date: Fri, 20 Feb 2026 13:09:05 +0100 Subject: [PATCH 4/8] fix --- snakedeploy/scaffold_plugins/common.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/snakedeploy/scaffold_plugins/common.py b/snakedeploy/scaffold_plugins/common.py index 60da2a6..dbaa0d7 100644 --- a/snakedeploy/scaffold_plugins/common.py +++ b/snakedeploy/scaffold_plugins/common.py @@ -127,7 +127,7 @@ def save_pyproject(pyproject): f"--cov={package_name} " "--cov-report=xml:coverage-report/coverage.xml " "--cov-report=term-missing " - "tests/tests.py", + "tests/test_plugin.py", ], check=True, ) From db5aee6e5fd4bae7ad21c2c1216f26080491145b Mon Sep 17 00:00:00 2001 From: Johannes Koester Date: Fri, 20 Feb 2026 13:35:06 +0100 Subject: [PATCH 5/8] use pypi only --- snakedeploy/scaffold_plugins/common.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/snakedeploy/scaffold_plugins/common.py b/snakedeploy/scaffold_plugins/common.py index dbaa0d7..5b0856d 100644 --- a/snakedeploy/scaffold_plugins/common.py +++ b/snakedeploy/scaffold_plugins/common.py @@ -86,6 +86,7 @@ def save_pyproject(pyproject): dev_deps = [ "pixi", "add", + "--pypi", "--feature", "dev", "ruff", @@ -93,7 +94,7 @@ def save_pyproject(pyproject): "pytest-cov", "pyrefly", "twine", - "python-build", + "build", ] if self.include_snakemake_dev_dependency(): dev_deps.append("snakemake") From 94677cbea90e9061169c18fab1f323af3e21e7d2 Mon Sep 17 00:00:00 2001 From: Johannes Koester Date: Fri, 20 Feb 2026 15:35:35 +0100 Subject: [PATCH 6/8] fix package name in cov arg --- snakedeploy/scaffold_plugins/common.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/snakedeploy/scaffold_plugins/common.py b/snakedeploy/scaffold_plugins/common.py index 5b0856d..67b353b 100644 --- a/snakedeploy/scaffold_plugins/common.py +++ b/snakedeploy/scaffold_plugins/common.py @@ -125,7 +125,7 @@ def save_pyproject(pyproject): "dev", "test", "pytest " - f"--cov={package_name} " + f"--cov={package_name.replace('-', '_')} " "--cov-report=xml:coverage-report/coverage.xml " "--cov-report=term-missing " "tests/test_plugin.py", From c5d74b018d29306f37553a6acc18ad154c6ab1b6 Mon Sep 17 00:00:00 2001 From: Johannes Koester Date: Fri, 20 Feb 2026 15:53:19 +0100 Subject: [PATCH 7/8] add coverage report --- snakedeploy/scaffold_plugins/common.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/snakedeploy/scaffold_plugins/common.py b/snakedeploy/scaffold_plugins/common.py index 67b353b..af06be2 100644 --- a/snakedeploy/scaffold_plugins/common.py +++ b/snakedeploy/scaffold_plugins/common.py @@ -116,6 +116,10 @@ def save_pyproject(pyproject): ["pixi", "task", "add", "--feature", "dev", "typecheck", "pyrefly check"], check=True, ) + sp.run( + ["pixi", "task", "add", "--feature", "dev", "coverage-report", "coverage report -m"], + check=True, + ) sp.run( [ "pixi", From 6d3e432bb56105b6dfa48306bf23b5ab00e6a5db Mon Sep 17 00:00:00 2001 From: Johannes Koester Date: Sun, 22 Feb 2026 15:26:24 +0100 Subject: [PATCH 8/8] restrict qc tasks --- snakedeploy/scaffold_plugins/common.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/snakedeploy/scaffold_plugins/common.py b/snakedeploy/scaffold_plugins/common.py index af06be2..f0a1385 100644 --- a/snakedeploy/scaffold_plugins/common.py +++ b/snakedeploy/scaffold_plugins/common.py @@ -105,15 +105,15 @@ def save_pyproject(pyproject): save_pyproject(pyproject) sp.run( - ["pixi", "task", "add", "--feature", "dev", "lint", "ruff check"], + ["pixi", "task", "add", "--feature", "dev", "lint", "ruff check src tests"], check=True, ) sp.run( - ["pixi", "task", "add", "--feature", "dev", "format", "ruff format"], + ["pixi", "task", "add", "--feature", "dev", "format", "ruff format src tests"], check=True, ) sp.run( - ["pixi", "task", "add", "--feature", "dev", "typecheck", "pyrefly check"], + ["pixi", "task", "add", "--feature", "dev", "typecheck", "pyrefly check src tests"], check=True, ) sp.run(