Skip to content

Switch the dev/CI toolchain from conda to uv - #78

Merged
mikessh merged 1 commit into
masterfrom
chore/uv-toolchain
Jul 18, 2026
Merged

Switch the dev/CI toolchain from conda to uv#78
mikessh merged 1 commit into
masterfrom
chore/uv-toolchain

Conversation

@mikessh

@mikessh mikessh commented Jul 18, 2026

Copy link
Copy Markdown
Member

Why

The only thing tying arda's dev environment to conda was the mmseqs2 bioconda binary. mmseqs2 ships an official static build, which arda already discovers and auto-fetches ($ARDA_MMSEQSbin/mmseqs → PATH → fetch), so conda buys nothing for development.

Changes

  • setup.shuv venv .venv + uv pip install -e . --no-build-isolation (build deps live in the venv so the scikit-build editable on-import rebuild can find pybind11), then fetch the IgBLAST release and a static mmseqs2 (skipped when one is already on PATH). Portable under bash and zsh (${BASH_SOURCE[0]:-$0}). Flags trimmed to --build-db / --tests.
  • .github/workflows/ci.ymlastral-sh/setup-uv, uv pip install --system for the toolchain and the editable install.
  • README + repo memory/ — conda → uv; mmseqs is the static binary, no conda.
  • Delete the root environment.yml (dev conda env).

Scope — ISP/Gamaleya integration keeps conda

Conda survives only in integrations/nextflow/arda/ (the Gamaleya/ISP Nextflow pipeline), which ships its own environment.yml + Dockerfile. Untouched.

Validation

Full uv install exercised locally: .venv builds the _markup C++ extension, import arda (2.5.6) works, mmseqs resolves off PATH with no conda / ARDA_MMSEQS. bash -n / zsh -n clean; ROOT resolves identically under both shells. Unit + synthetic + realworld suite green in the uv venv.

🤖 Generated with Claude Code

The mmseqs2 bioconda binary was the only reason arda needed conda. It ships an
official static build, which arda already discovers and auto-fetches, so the dev
environment no longer needs conda at all.

- setup.sh: uv venv .venv + `uv pip install -e . --no-build-isolation` (build
  deps in the venv so the scikit-build on-import rebuild finds pybind11), then
  the IgBLAST release and a static mmseqs2 (skipped if one is on PATH). Portable
  under bash and zsh. Flags reduced to --build-db / --tests.
- ci.yml: setup-uv, `uv pip install --system` for the toolchain + editable install.
- README / repo memory: conda -> uv; mmseqs is the static binary, no conda.
- Drop the root environment.yml (dev conda env).

Conda stays ONLY for the Nextflow integration (integrations/nextflow/arda, the
Gamaleya/ISP pipeline), which ships its own environment.yml + Dockerfile.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@mikessh
mikessh merged commit 2752ef6 into master Jul 18, 2026
1 check passed
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.

1 participant