Skip to content

Support some common conda-based workflows #17

Description

@bollwyvl

Elevator Pitch

Offer some additional declarative support for using conda-based tools in doitomlworkflows without adding any hard dependencies, such as with a doitoml[conda].

Motivation

Doit works fairly well with conda (given an outer environment with python and doit), but leads to a lot of boilerplate.

Design Ideas

flowchart TB
    partial.env.yml -- inherit_from --> another.env.yml
    partial.env.yml -- conda-lock --> lock.yml --> lock.txt
    partial.env.yml --> environment.yml --> readthedocs.org & mybinder.org 
    lock.txt -- create --> prefix/conda-meta/history
    prefix/conda-meta/history --> conda-run --> actions
    lock.txt -- environment_file --> construct.yml --> installer.sh & installer.exe & installer.pkg
    meta.yaml -- conda build --> package.conda
    recipe.yaml -- boa build --> package.conda
    package.conda --> construct.yml
Loading
  • build conda.lock.txt files from environment.yml files, with support for
    • declarative multiple inheritance of yaml files
    • solve matrices with multiple factors (with punch-out)
    • platform-specific dependencies
  • build portable environment.yml for consumption on e.g.
    • readthedocs.org
    • mybinder.org
  • creating conda environments
    • selecting/provisioning $CONDA_EXE
  • modifying actions with [conda, run, --prefix, "{prefix}", --no-capture-output]
  • build constructor installers from construct.yaml
  • build .conda packages from meta.yaml and recipe.yaml

Prior art

  • jupyterlab-fonts
    • requires a preflight to pre-calculate some values, which is undesirable

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions