Skip to content

Migrate project configuration and CI/CD workflows from Poetry to Pixi#104

Closed
MrTomRod wants to merge 3 commits into
gbouras13:mainfrom
MrTomRod:main
Closed

Migrate project configuration and CI/CD workflows from Poetry to Pixi#104
MrTomRod wants to merge 3 commits into
gbouras13:mainfrom
MrTomRod:main

Conversation

@MrTomRod

@MrTomRod MrTomRod commented Jun 22, 2026

Copy link
Copy Markdown

Description

This pull request transitions the repository's development environment, dependency management, and CI/CD pipelines from Poetry to Pixi.

Why Pixi is a better, imo:

  • Unified Binary & Python Dependency Management: Poetry is strictly Python-oriented (PyPI). Because dnaapler relies on binary utilities like MMseqs2, developers previously had to manage non-Python tools out-of-band. Pixi bridges this gap by integrating both PyPI and Conda channels (conda-forge & bioconda) directly into pyproject.toml.
  • Zero Host Setup: Pixi now automatically manages and installs mmseqs2, just, and ripgrep directly inside the isolated workspace environment. Setup is now a single, reproducible command: pixi install.
  • Speed: Pixi is Rust-based and performs environment resolution and package caching significantly faster than Poetry.
  • Modern python standards (PEP 621): The build system has been modernized to use hatchling and standard [project] metadata, making it fully portable and compatible with standard python packaging and bioconda feedstocks.

Summary of Changes:

  1. pyproject.toml: Replaced proprietary [tool.poetry] blocks with standard [project] metadata, changed the build backend to hatchling, and added Pixi workspace/environment configuration.
  2. justfile: Updated command invocations to use pixi run. (We could also delete the justfile because pixi also contains these features.)
  3. CI/CD (ci.yaml & release.yaml): Swapped out conda-incubator/setup-miniconda for the official prefix-dev/setup-pixi GitHub Action, which speeds up CI builds and ensures CI runs the exact same tasks as local development.
  4. Cleanup: Removed obsolete requirements.txt, poetry.lock, and build/environment.yaml files.

Verification and Testing

  • Local Checks: Ran pixi run fmt, pixi run lint, and the full unit test suite locally. All 99 tests passed successfully.
  • CI Actions Validation: Tested the updated .github/workflows/ci.yaml locally using gh act -j tests inside Docker. The setup, formatting check, linting, and tests all completed and passed successfully.

MrTomRod added 3 commits June 22, 2026 22:54
- Replace `[tool.poetry]` configuration in `pyproject.toml` with PEP 621 standard metadata.
- Switch the build backend to `hatchling.build`.
- Configure Pixi workspace environments (`default`, `dev`) and features (`test`, `lint`) utilizing `conda-forge` and `bioconda` channels.
- Add Pixi tasks mapping to code development commands (restricted to `src` and `tests` directories).
- Update `justfile` targets to run commands using `pixi run`.
- Delete `poetry.lock` (replaced by `pixi.lock`) and add `.pixi/` to `.gitignore`.
@MrTomRod

MrTomRod commented Jun 23, 2026

Copy link
Copy Markdown
Author

build seems to have crashed because i didn't push the changes that pixi run fmt caused. I pushed the change with commit c52294e

@gbouras13 gbouras13 closed this Jun 24, 2026
@gbouras13

gbouras13 commented Jun 24, 2026

Copy link
Copy Markdown
Owner

Hi @MrTomRod - thanks for this, a nice improvement over poetry. I’ll work on merging it in once I integrate my substantive changes on the dev branch

george

@gbouras13 gbouras13 reopened this Jun 24, 2026
gbouras13 added a commit that referenced this pull request Jun 30, 2026
Documents `pixi global install dnaapler` as a recommended installation
method (alongside conda and pip), following #104.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@gbouras13

Copy link
Copy Markdown
Owner

Incorporated a bunch of these changes in #106

@gbouras13 gbouras13 closed this Jun 30, 2026
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