Skip to content

Dogfood conda-tasks in CI using conda-pypi#1

Merged
jezdez merged 12 commits intomainfrom
ci/dogfood-conda-tasks
Feb 26, 2026
Merged

Dogfood conda-tasks in CI using conda-pypi#1
jezdez merged 12 commits intomainfrom
ci/dogfood-conda-tasks

Conversation

@jezdez
Copy link
Member

@jezdez jezdez commented Feb 26, 2026

Summary

  • Replace pixi-based CI workflows with conda + conda-pypi + conda-tasks
  • Add [project.optional-dependencies] for test, lint, and docs extras
  • Add [tool.conda-tasks.tasks] section with all 9 CI tasks
  • Workflows now use setup-miniconda + conda pypi install -e ".[extra]" + conda task run

This dogfoods conda-tasks in its own CI pipeline, demonstrating the two-phase pattern (environment setup is separate, conda-tasks only runs tasks) and exercises conda-pypi for safe PyPI-to-conda package installation.

Pixi configuration is left intact so local development still works.

Test plan

  • test.yml workflow passes across the OS × Python matrix
  • docs.yml workflow builds docs successfully
  • conda task list still shows all 9 tasks locally

Replace pixi-based CI with conda + conda-pypi + conda-tasks:

- Add [project.optional-dependencies] for test, lint, and docs extras
- Add [tool.conda-tasks.tasks] section with all CI tasks
- Switch workflows to setup-miniconda + conda pypi install -e ".[extra]"
- Run tests and docs builds via conda task run
- Install conda-pypi into the active env (not base) so the plugin is
  discoverable by conda's entry point scanner
- Install test/docs dependencies via conda install (conda-pypi doesn't
  support pip-style extras like ".[test]")
- Use conda pypi install -e . for the editable install only
conda-pypi plugin doesn't load on GHA runners (entry point discovery
issue). Fall back to pip for the editable install while keeping the
real dogfooding: conda task run for test and docs builds.

Dependencies still come from conda-forge via conda install.
- conda-pypi must be in base env for plugin discovery
- Install test/docs deps via conda install (no extras syntax)
- Use conda pypi install -e . (path only, no pip-style extras)
The released conda-pypi 0.3.0 on conda-forge doesn't have -e/--editable.
Install the dev version from GitHub into base, with deps from conda-forge.
Active env: needed for test imports (python -m pytest)
Base env: needed for conda task plugin discovery
conda pypi editable install doesn't pull in deps. The conda task
plugin needs pyyaml, jinja2, platformdirs, tomlkit in base.
Use conda.common.serialize.yaml (loads/dumps/YAMLError) instead of
pyyaml or ruamel.yaml directly. This eliminates pyyaml as a dependency
entirely -- conda already ships the YAML library we need.

- Replace all yaml.safe_load/dump with conda's yaml_loads/yaml_dumps
- Drop pyyaml from project.dependencies and pixi.dependencies
- Remove pyyaml from CI base install lists
- Update test invalid-YAML fixtures for ruamel.yaml's round-trip parser
@jezdez jezdez force-pushed the ci/dogfood-conda-tasks branch from 5a3b57d to 657f981 Compare February 26, 2026 10:44
The editable install via conda-pypi doesn't resolve dependencies, so
conda, jinja2, platformdirs, and tomlkit must be explicitly installed
in the test/docs environments for conda-tasks imports to work.
@jezdez jezdez merged commit 75b87b4 into main Feb 26, 2026
17 checks 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