daedalus-flow 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- daedalus_flow-0.1.0/.editorconfig +24 -0
- daedalus_flow-0.1.0/.envrc.defaults +16 -0
- daedalus_flow-0.1.0/.github/CODE_OF_CONDUCT.md +22 -0
- daedalus_flow-0.1.0/.github/CONTRIBUTING.md +46 -0
- daedalus_flow-0.1.0/.github/ISSUE_TEMPLATE/bug_report.yml +50 -0
- daedalus_flow-0.1.0/.github/ISSUE_TEMPLATE/config.yml +5 -0
- daedalus_flow-0.1.0/.github/PULL_REQUEST_TEMPLATE.md +4 -0
- daedalus_flow-0.1.0/.github/SECURITY.md +11 -0
- daedalus_flow-0.1.0/.github/dependabot.yml +11 -0
- daedalus_flow-0.1.0/.github/workflows/ci.yml +107 -0
- daedalus_flow-0.1.0/.github/workflows/publish.yml +57 -0
- daedalus_flow-0.1.0/.gitignore +43 -0
- daedalus_flow-0.1.0/.pre-commit-config.yaml +45 -0
- daedalus_flow-0.1.0/.python-version +1 -0
- daedalus_flow-0.1.0/.readthedocs.yaml +22 -0
- daedalus_flow-0.1.0/AGENTS.md +9 -0
- daedalus_flow-0.1.0/CHANGELOG.md +18 -0
- daedalus_flow-0.1.0/CITATION.cff +26 -0
- daedalus_flow-0.1.0/LICENSE +202 -0
- daedalus_flow-0.1.0/NOTICE +10 -0
- daedalus_flow-0.1.0/PKG-INFO +143 -0
- daedalus_flow-0.1.0/README.md +105 -0
- daedalus_flow-0.1.0/docs/citing.md +15 -0
- daedalus_flow-0.1.0/docs/conf.py +148 -0
- daedalus_flow-0.1.0/docs/contributing.md +2 -0
- daedalus_flow-0.1.0/docs/explanation/concepts.md +135 -0
- daedalus_flow-0.1.0/docs/explanation/how-the-engine-runs-a-lab.md +72 -0
- daedalus_flow-0.1.0/docs/explanation/index.md +11 -0
- daedalus_flow-0.1.0/docs/explanation/recipe-vs-run-counts.md +70 -0
- daedalus_flow-0.1.0/docs/how-to/fan-out-over-many-targets.md +72 -0
- daedalus_flow-0.1.0/docs/how-to/index.md +11 -0
- daedalus_flow-0.1.0/docs/how-to/isolate-module-dependencies.md +102 -0
- daedalus_flow-0.1.0/docs/how-to/run-modules-in-parallel.md +84 -0
- daedalus_flow-0.1.0/docs/index.md +113 -0
- daedalus_flow-0.1.0/docs/reference/cli.md +12 -0
- daedalus_flow-0.1.0/docs/reference/index.md +15 -0
- daedalus_flow-0.1.0/docs/reference/json-envelope.md +138 -0
- daedalus_flow-0.1.0/docs/reference/lab-yaml-reference.md +103 -0
- daedalus_flow-0.1.0/docs/reference/outcome-codes.md +70 -0
- daedalus_flow-0.1.0/docs/tutorials/getting-started.md +154 -0
- daedalus_flow-0.1.0/docs/tutorials/index.md +9 -0
- daedalus_flow-0.1.0/docs/tutorials/install.md +46 -0
- daedalus_flow-0.1.0/flake.lock +61 -0
- daedalus_flow-0.1.0/flake.nix +60 -0
- daedalus_flow-0.1.0/justfile +76 -0
- daedalus_flow-0.1.0/pyproject.toml +271 -0
- daedalus_flow-0.1.0/scripts/gen_outcome_catalog.py +46 -0
- daedalus_flow-0.1.0/scripts/portability_smoke.sh +75 -0
- daedalus_flow-0.1.0/src/daedalus/__init__.py +12 -0
- daedalus_flow-0.1.0/src/daedalus/cli/__init__.py +9 -0
- daedalus_flow-0.1.0/src/daedalus/cli/app.py +86 -0
- daedalus_flow-0.1.0/src/daedalus/cli/chrome.py +28 -0
- daedalus_flow-0.1.0/src/daedalus/cli/commands/__init__.py +1 -0
- daedalus_flow-0.1.0/src/daedalus/cli/commands/_outcome.py +65 -0
- daedalus_flow-0.1.0/src/daedalus/cli/commands/example.py +97 -0
- daedalus_flow-0.1.0/src/daedalus/cli/commands/flow.py +126 -0
- daedalus_flow-0.1.0/src/daedalus/cli/commands/lab/__init__.py +521 -0
- daedalus_flow-0.1.0/src/daedalus/cli/commands/lab/_prefect.py +49 -0
- daedalus_flow-0.1.0/src/daedalus/cli/commands/lab/_validate.py +381 -0
- daedalus_flow-0.1.0/src/daedalus/cli/commands/module.py +315 -0
- daedalus_flow-0.1.0/src/daedalus/cli/console.py +85 -0
- daedalus_flow-0.1.0/src/daedalus/cli/render/__init__.py +83 -0
- daedalus_flow-0.1.0/src/daedalus/cli/render/_ascii_dag.py +425 -0
- daedalus_flow-0.1.0/src/daedalus/cli/render/_base.py +97 -0
- daedalus_flow-0.1.0/src/daedalus/cli/render/_topology.py +586 -0
- daedalus_flow-0.1.0/src/daedalus/cli/render/_workflow.py +107 -0
- daedalus_flow-0.1.0/src/daedalus/cli/strings.py +495 -0
- daedalus_flow-0.1.0/src/daedalus/core/__init__.py +7 -0
- daedalus_flow-0.1.0/src/daedalus/core/dag.py +180 -0
- daedalus_flow-0.1.0/src/daedalus/core/engine/__init__.py +23 -0
- daedalus_flow-0.1.0/src/daedalus/core/engine/_import_probe.py +45 -0
- daedalus_flow-0.1.0/src/daedalus/core/engine/_module_runner.py +95 -0
- daedalus_flow-0.1.0/src/daedalus/core/engine/isolation.py +602 -0
- daedalus_flow-0.1.0/src/daedalus/core/engine/local/__init__.py +29 -0
- daedalus_flow-0.1.0/src/daedalus/core/engine/local/_engine.py +373 -0
- daedalus_flow-0.1.0/src/daedalus/core/engine/local/_finalize.py +92 -0
- daedalus_flow-0.1.0/src/daedalus/core/engine/local/_instance.py +441 -0
- daedalus_flow-0.1.0/src/daedalus/core/engine/nix/flake.lock +99 -0
- daedalus_flow-0.1.0/src/daedalus/core/engine/nix/flake.nix +76 -0
- daedalus_flow-0.1.0/src/daedalus/core/engine/prefect.py +232 -0
- daedalus_flow-0.1.0/src/daedalus/core/engine/protocol.py +92 -0
- daedalus_flow-0.1.0/src/daedalus/core/engine/scheduler.py +152 -0
- daedalus_flow-0.1.0/src/daedalus/core/engine/step.py +192 -0
- daedalus_flow-0.1.0/src/daedalus/core/engine/subprocess_runner.py +526 -0
- daedalus_flow-0.1.0/src/daedalus/core/flights.py +268 -0
- daedalus_flow-0.1.0/src/daedalus/core/lineage/__init__.py +55 -0
- daedalus_flow-0.1.0/src/daedalus/core/lineage/_io.py +238 -0
- daedalus_flow-0.1.0/src/daedalus/core/lineage/_schema.py +305 -0
- daedalus_flow-0.1.0/src/daedalus/core/outcomes.py +228 -0
- daedalus_flow-0.1.0/src/daedalus/core/paths.py +77 -0
- daedalus_flow-0.1.0/src/daedalus/core/recipe/__init__.py +61 -0
- daedalus_flow-0.1.0/src/daedalus/core/recipe/_parse.py +339 -0
- daedalus_flow-0.1.0/src/daedalus/core/recipe/_plan.py +94 -0
- daedalus_flow-0.1.0/src/daedalus/core/recipe/_validate.py +130 -0
- daedalus_flow-0.1.0/src/daedalus/core/topology.py +161 -0
- daedalus_flow-0.1.0/src/daedalus/core/walks/__init__.py +65 -0
- daedalus_flow-0.1.0/src/daedalus/core/walks/_arithmetic.py +89 -0
- daedalus_flow-0.1.0/src/daedalus/core/walks/_config.py +363 -0
- daedalus_flow-0.1.0/src/daedalus/core/walks/_propagation.py +474 -0
- daedalus_flow-0.1.0/src/daedalus/core/walks/_shared.py +103 -0
- daedalus_flow-0.1.0/src/daedalus/examples/__init__.py +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/input/start.json +3 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/lab.yaml +64 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/branch_x/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/branch_x/main.py +29 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/branch_x/requirements.txt +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/branch_y/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/branch_y/main.py +29 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/branch_y/requirements.txt +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/collect_region/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/collect_region/main.py +32 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/collect_region/requirements.txt +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/collect_sib_a/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/collect_sib_a/main.py +29 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/collect_sib_a/requirements.txt +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/collect_sib_b/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/collect_sib_b/main.py +29 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/collect_sib_b/requirements.txt +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/collect_solo/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/collect_solo/main.py +32 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/collect_solo/requirements.txt +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/collect_x/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/collect_x/main.py +29 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/collect_x/requirements.txt +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/collect_x_deep/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/collect_x_deep/main.py +29 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/collect_x_deep/requirements.txt +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/collect_y/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/collect_y/main.py +29 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/collect_y/requirements.txt +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/emit/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/emit/main.py +29 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/emit/requirements.txt +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/fan/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/fan/main.py +29 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/fan/requirements.txt +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/join_pair/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/join_pair/main.py +29 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/join_pair/requirements.txt +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/merge_flight/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/merge_flight/main.py +32 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/merge_flight/requirements.txt +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/pair_left/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/pair_left/main.py +29 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/pair_left/requirements.txt +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/pair_right/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/pair_right/main.py +29 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/pair_right/requirements.txt +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/post/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/post/main.py +29 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/post/requirements.txt +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/prep/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/prep/main.py +29 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/prep/requirements.txt +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/report/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/report/main.py +29 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/report/requirements.txt +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/sib_left/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/sib_left/main.py +29 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/sib_left/requirements.txt +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/sib_right/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/sib_right/main.py +29 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/sib_right/requirements.txt +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/x_deep/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/x_deep/main.py +29 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/x_deep/requirements.txt +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/x_deep_left/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/x_deep_left/main.py +29 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/x_deep_left/requirements.txt +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/x_deep_right/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/x_deep_right/main.py +29 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/x_deep_right/requirements.txt +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/x_deep_step/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/x_deep_step/main.py +29 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/x_deep_step/requirements.txt +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/x_leaf/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/x_leaf/main.py +29 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/x_leaf/requirements.txt +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/x_mid/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/x_mid/main.py +29 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/x_mid/requirements.txt +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/x_mid_tail/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/x_mid_tail/main.py +29 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/x_mid_tail/requirements.txt +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/y_leaf/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/y_leaf/main.py +29 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/y_leaf/requirements.txt +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/y_mid/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/y_mid/main.py +29 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/y_mid/requirements.txt +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/y_mid_tail/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/y_mid_tail/main.py +29 -0
- daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/y_mid_tail/requirements.txt +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/demo/input/targets.csv +4 -0
- daedalus_flow-0.1.0/src/daedalus/examples/demo/lab.yaml +29 -0
- daedalus_flow-0.1.0/src/daedalus/examples/demo/modules/compare_methods/dae-module.yaml +2 -0
- daedalus_flow-0.1.0/src/daedalus/examples/demo/modules/compare_methods/expected/comparison.json +6 -0
- daedalus_flow-0.1.0/src/daedalus/examples/demo/modules/compare_methods/main.py +47 -0
- daedalus_flow-0.1.0/src/daedalus/examples/demo/modules/compare_methods/requirements.txt +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/demo/modules/emit_targets/dae-module.yaml +2 -0
- daedalus_flow-0.1.0/src/daedalus/examples/demo/modules/emit_targets/expected/targets.json +23 -0
- daedalus_flow-0.1.0/src/daedalus/examples/demo/modules/emit_targets/main.py +26 -0
- daedalus_flow-0.1.0/src/daedalus/examples/demo/modules/emit_targets/requirements.txt +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/demo/modules/fetch_data/dae-module.yaml +2 -0
- daedalus_flow-0.1.0/src/daedalus/examples/demo/modules/fetch_data/expected/folded.json +811 -0
- daedalus_flow-0.1.0/src/daedalus/examples/demo/modules/fetch_data/main.py +41 -0
- daedalus_flow-0.1.0/src/daedalus/examples/demo/modules/fetch_data/requirements.txt +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/demo/modules/fit_mcmc/dae-module.yaml +2 -0
- daedalus_flow-0.1.0/src/daedalus/examples/demo/modules/fit_mcmc/expected/posterior.json +2010 -0
- daedalus_flow-0.1.0/src/daedalus/examples/demo/modules/fit_mcmc/main.py +43 -0
- daedalus_flow-0.1.0/src/daedalus/examples/demo/modules/fit_mcmc/requirements.txt +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/demo/modules/fit_nested/dae-module.yaml +2 -0
- daedalus_flow-0.1.0/src/daedalus/examples/demo/modules/fit_nested/expected/posterior.json +2010 -0
- daedalus_flow-0.1.0/src/daedalus/examples/demo/modules/fit_nested/main.py +41 -0
- daedalus_flow-0.1.0/src/daedalus/examples/demo/modules/fit_nested/requirements.txt +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/demo/modules/summarize_population/dae-module.yaml +2 -0
- daedalus_flow-0.1.0/src/daedalus/examples/demo/modules/summarize_population/expected/summary.json +25 -0
- daedalus_flow-0.1.0/src/daedalus/examples/demo/modules/summarize_population/main.py +27 -0
- daedalus_flow-0.1.0/src/daedalus/examples/demo/modules/summarize_population/requirements.txt +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/demo/tutorial.ipynb +224 -0
- daedalus_flow-0.1.0/src/daedalus/examples/demo/tutorial.py +107 -0
- daedalus_flow-0.1.0/src/daedalus/examples/ensemble/input/targets.csv +11 -0
- daedalus_flow-0.1.0/src/daedalus/examples/ensemble/lab.yaml +13 -0
- daedalus_flow-0.1.0/src/daedalus/examples/ensemble/modules/analyze/dae-module.yaml +2 -0
- daedalus_flow-0.1.0/src/daedalus/examples/ensemble/modules/analyze/main.py +19 -0
- daedalus_flow-0.1.0/src/daedalus/examples/ensemble/modules/analyze/requirements.txt +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/ensemble/modules/collect/dae-module.yaml +2 -0
- daedalus_flow-0.1.0/src/daedalus/examples/ensemble/modules/collect/main.py +21 -0
- daedalus_flow-0.1.0/src/daedalus/examples/ensemble/modules/collect/requirements.txt +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/ensemble/modules/emit/dae-module.yaml +2 -0
- daedalus_flow-0.1.0/src/daedalus/examples/ensemble/modules/emit/main.py +19 -0
- daedalus_flow-0.1.0/src/daedalus/examples/ensemble/modules/emit/requirements.txt +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/isolation-nix/input/word.json +3 -0
- daedalus_flow-0.1.0/src/daedalus/examples/isolation-nix/lab.yaml +41 -0
- daedalus_flow-0.1.0/src/daedalus/examples/isolation-nix/modules/render_classic/dae-module.yaml +7 -0
- daedalus_flow-0.1.0/src/daedalus/examples/isolation-nix/modules/render_classic/main.py +23 -0
- daedalus_flow-0.1.0/src/daedalus/examples/isolation-nix/modules/render_classic/requirements.txt +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/isolation-nix/modules/render_modern/dae-module.yaml +7 -0
- daedalus_flow-0.1.0/src/daedalus/examples/isolation-nix/modules/render_modern/flake.lock +99 -0
- daedalus_flow-0.1.0/src/daedalus/examples/isolation-nix/modules/render_modern/flake.nix +72 -0
- daedalus_flow-0.1.0/src/daedalus/examples/isolation-nix/modules/render_modern/main.py +23 -0
- daedalus_flow-0.1.0/src/daedalus/examples/isolation-nix/modules/render_modern/pyproject.toml +9 -0
- daedalus_flow-0.1.0/src/daedalus/examples/isolation-nix/modules/render_modern/uv.lock +23 -0
- daedalus_flow-0.1.0/src/daedalus/examples/isolation-nix/modules/seed/dae-module.yaml +2 -0
- daedalus_flow-0.1.0/src/daedalus/examples/isolation-nix/modules/seed/main.py +11 -0
- daedalus_flow-0.1.0/src/daedalus/examples/isolation-nix/modules/seed/pyproject.toml +11 -0
- daedalus_flow-0.1.0/src/daedalus/examples/isolation-nix/modules/seed/uv.lock +8 -0
- daedalus_flow-0.1.0/src/daedalus/examples/isolation-nix/modules/verify/dae-module.yaml +2 -0
- daedalus_flow-0.1.0/src/daedalus/examples/isolation-nix/modules/verify/main.py +41 -0
- daedalus_flow-0.1.0/src/daedalus/examples/isolation-nix/modules/verify/pyproject.toml +8 -0
- daedalus_flow-0.1.0/src/daedalus/examples/isolation-nix/modules/verify/uv.lock +8 -0
- daedalus_flow-0.1.0/src/daedalus/examples/minimal/input/raw.csv +6 -0
- daedalus_flow-0.1.0/src/daedalus/examples/minimal/lab.yaml +8 -0
- daedalus_flow-0.1.0/src/daedalus/examples/minimal/modules/normalize/dae-module.yaml +2 -0
- daedalus_flow-0.1.0/src/daedalus/examples/minimal/modules/normalize/expected/normalized.json +18 -0
- daedalus_flow-0.1.0/src/daedalus/examples/minimal/modules/normalize/main.py +30 -0
- daedalus_flow-0.1.0/src/daedalus/examples/minimal/modules/normalize/requirements.txt +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/minimal/tutorial.ipynb +202 -0
- daedalus_flow-0.1.0/src/daedalus/examples/minimal/tutorial.py +90 -0
- daedalus_flow-0.1.0/src/daedalus/examples/parallel/input/dataset.json +3 -0
- daedalus_flow-0.1.0/src/daedalus/examples/parallel/lab.yaml +37 -0
- daedalus_flow-0.1.0/src/daedalus/examples/parallel/modules/combine/dae-module.yaml +2 -0
- daedalus_flow-0.1.0/src/daedalus/examples/parallel/modules/combine/main.py +17 -0
- daedalus_flow-0.1.0/src/daedalus/examples/parallel/modules/combine/requirements.txt +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/parallel/modules/split/dae-module.yaml +2 -0
- daedalus_flow-0.1.0/src/daedalus/examples/parallel/modules/split/main.py +14 -0
- daedalus_flow-0.1.0/src/daedalus/examples/parallel/modules/split/requirements.txt +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/parallel/modules/stat_max/dae-module.yaml +2 -0
- daedalus_flow-0.1.0/src/daedalus/examples/parallel/modules/stat_max/main.py +16 -0
- daedalus_flow-0.1.0/src/daedalus/examples/parallel/modules/stat_max/requirements.txt +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/parallel/modules/stat_mean/dae-module.yaml +2 -0
- daedalus_flow-0.1.0/src/daedalus/examples/parallel/modules/stat_mean/main.py +17 -0
- daedalus_flow-0.1.0/src/daedalus/examples/parallel/modules/stat_mean/requirements.txt +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/parallel/modules/stat_min/dae-module.yaml +2 -0
- daedalus_flow-0.1.0/src/daedalus/examples/parallel/modules/stat_min/main.py +16 -0
- daedalus_flow-0.1.0/src/daedalus/examples/parallel/modules/stat_min/requirements.txt +1 -0
- daedalus_flow-0.1.0/src/daedalus/examples/parallel/modules/stat_sum/dae-module.yaml +2 -0
- daedalus_flow-0.1.0/src/daedalus/examples/parallel/modules/stat_sum/main.py +19 -0
- daedalus_flow-0.1.0/src/daedalus/examples/parallel/modules/stat_sum/requirements.txt +1 -0
- daedalus_flow-0.1.0/src/daedalus/flow/__init__.py +11 -0
- daedalus_flow-0.1.0/src/daedalus/flow/_api.py +71 -0
- daedalus_flow-0.1.0/src/daedalus/py.typed +0 -0
- daedalus_flow-0.1.0/tests/__init__.py +0 -0
- daedalus_flow-0.1.0/tests/_helpers.py +304 -0
- daedalus_flow-0.1.0/tests/cli/__init__.py +0 -0
- daedalus_flow-0.1.0/tests/cli/_cli_contract.py +259 -0
- daedalus_flow-0.1.0/tests/cli/cli_surface.golden.txt +16 -0
- daedalus_flow-0.1.0/tests/cli/test_ascii_canvas.py +103 -0
- daedalus_flow-0.1.0/tests/cli/test_ascii_dag.py +198 -0
- daedalus_flow-0.1.0/tests/cli/test_cli_command_coverage.py +184 -0
- daedalus_flow-0.1.0/tests/cli/test_cli_contract_chains.py +24 -0
- daedalus_flow-0.1.0/tests/cli/test_cli_contract_flow_status.py +151 -0
- daedalus_flow-0.1.0/tests/cli/test_cli_contract_run.py +347 -0
- daedalus_flow-0.1.0/tests/cli/test_cli_contract_scaffold.py +264 -0
- daedalus_flow-0.1.0/tests/cli/test_cli_contract_validate.py +379 -0
- daedalus_flow-0.1.0/tests/cli/test_cli_contract_visualize.py +86 -0
- daedalus_flow-0.1.0/tests/cli/test_cli_contract_visualize_style.py +131 -0
- daedalus_flow-0.1.0/tests/cli/test_cli_surface.py +73 -0
- daedalus_flow-0.1.0/tests/cli/test_completion_surface.py +36 -0
- daedalus_flow-0.1.0/tests/cli/test_convert_marker.py +58 -0
- daedalus_flow-0.1.0/tests/cli/test_count_annotation.py +51 -0
- daedalus_flow-0.1.0/tests/cli/test_dryrun_validate_json.py +85 -0
- daedalus_flow-0.1.0/tests/cli/test_example_json.py +69 -0
- daedalus_flow-0.1.0/tests/cli/test_flow_status_after_crash.py +101 -0
- daedalus_flow-0.1.0/tests/cli/test_guided_flow_copy.py +170 -0
- daedalus_flow-0.1.0/tests/cli/test_help_accuracy.py +111 -0
- daedalus_flow-0.1.0/tests/cli/test_isolation_refuse_ordering.py +52 -0
- daedalus_flow-0.1.0/tests/cli/test_json_global_flag.py +69 -0
- daedalus_flow-0.1.0/tests/cli/test_lab_run_help.py +33 -0
- daedalus_flow-0.1.0/tests/cli/test_lab_validate_deep.py +241 -0
- daedalus_flow-0.1.0/tests/cli/test_lab_validate_isolation.py +167 -0
- daedalus_flow-0.1.0/tests/cli/test_outcome_catalog.py +31 -0
- daedalus_flow-0.1.0/tests/cli/test_outcome_contract.py +132 -0
- daedalus_flow-0.1.0/tests/cli/test_render_pass.py +218 -0
- daedalus_flow-0.1.0/tests/cli/test_run_status_json.py +324 -0
- daedalus_flow-0.1.0/tests/cli/test_step_failure_render.py +97 -0
- daedalus_flow-0.1.0/tests/cli/test_surface_consistency.py +83 -0
- daedalus_flow-0.1.0/tests/cli/test_version_flag.py +44 -0
- daedalus_flow-0.1.0/tests/conftest.py +98 -0
- daedalus_flow-0.1.0/tests/core/__init__.py +0 -0
- daedalus_flow-0.1.0/tests/core/_dag.py +19 -0
- daedalus_flow-0.1.0/tests/core/_walk_shapes.py +461 -0
- daedalus_flow-0.1.0/tests/core/_walks_helpers.py +49 -0
- daedalus_flow-0.1.0/tests/core/engine/__init__.py +0 -0
- daedalus_flow-0.1.0/tests/core/engine/_copy_layout.py +57 -0
- daedalus_flow-0.1.0/tests/core/engine/_local_engine.py +100 -0
- daedalus_flow-0.1.0/tests/core/engine/test_bounded_parallel.py +241 -0
- daedalus_flow-0.1.0/tests/core/engine/test_child_safe_path.py +70 -0
- daedalus_flow-0.1.0/tests/core/engine/test_copy_layout.py +174 -0
- daedalus_flow-0.1.0/tests/core/engine/test_copy_layout_flights.py +324 -0
- daedalus_flow-0.1.0/tests/core/engine/test_default_parallelism.py +41 -0
- daedalus_flow-0.1.0/tests/core/engine/test_engine_lazy_imports.py +55 -0
- daedalus_flow-0.1.0/tests/core/engine/test_flight_final_merge.py +119 -0
- daedalus_flow-0.1.0/tests/core/engine/test_flight_partial_failure.py +113 -0
- daedalus_flow-0.1.0/tests/core/engine/test_flow_resume.py +152 -0
- daedalus_flow-0.1.0/tests/core/engine/test_import_root.py +208 -0
- daedalus_flow-0.1.0/tests/core/engine/test_isolation_conformance.py +83 -0
- daedalus_flow-0.1.0/tests/core/engine/test_isolation_nix.py +223 -0
- daedalus_flow-0.1.0/tests/core/engine/test_isolation_nix_example.py +88 -0
- daedalus_flow-0.1.0/tests/core/engine/test_isolation_nix_generation.py +161 -0
- daedalus_flow-0.1.0/tests/core/engine/test_isolation_nix_log.py +120 -0
- daedalus_flow-0.1.0/tests/core/engine/test_isolation_nix_science.py +92 -0
- daedalus_flow-0.1.0/tests/core/engine/test_isolation_resolution.py +196 -0
- daedalus_flow-0.1.0/tests/core/engine/test_isolation_wiring.py +67 -0
- daedalus_flow-0.1.0/tests/core/engine/test_local_engine.py +281 -0
- daedalus_flow-0.1.0/tests/core/engine/test_local_engine_dispatch.py +255 -0
- daedalus_flow-0.1.0/tests/core/engine/test_nix_author_flake_contract.py +78 -0
- daedalus_flow-0.1.0/tests/core/engine/test_nix_launch_scrubbed_env.py +80 -0
- daedalus_flow-0.1.0/tests/core/engine/test_prefect_conformance.py +394 -0
- daedalus_flow-0.1.0/tests/core/engine/test_prefect_progress.py +253 -0
- daedalus_flow-0.1.0/tests/core/engine/test_scheduler.py +247 -0
- daedalus_flow-0.1.0/tests/core/engine/test_step_failure_classification.py +63 -0
- daedalus_flow-0.1.0/tests/core/engine/test_step_log.py +142 -0
- daedalus_flow-0.1.0/tests/core/engine/test_subprocess_spike.py +321 -0
- daedalus_flow-0.1.0/tests/core/engine/test_uv_standalone_launch.py +221 -0
- daedalus_flow-0.1.0/tests/core/engine/test_walk_parallel_timing.py +120 -0
- daedalus_flow-0.1.0/tests/core/test_dag.py +318 -0
- daedalus_flow-0.1.0/tests/core/test_dag_integration.py +206 -0
- daedalus_flow-0.1.0/tests/core/test_dynamic_flights.py +173 -0
- daedalus_flow-0.1.0/tests/core/test_golden_helpers.py +80 -0
- daedalus_flow-0.1.0/tests/core/test_isolation_preference.py +140 -0
- daedalus_flow-0.1.0/tests/core/test_lineage.py +338 -0
- daedalus_flow-0.1.0/tests/core/test_lineage_io.py +189 -0
- daedalus_flow-0.1.0/tests/core/test_lineage_reconcile.py +200 -0
- daedalus_flow-0.1.0/tests/core/test_recipe.py +299 -0
- daedalus_flow-0.1.0/tests/core/test_recipe_integration.py +137 -0
- daedalus_flow-0.1.0/tests/core/test_topology.py +50 -0
- daedalus_flow-0.1.0/tests/core/test_walk_shapes.py +57 -0
- daedalus_flow-0.1.0/tests/core/test_walk_shapes_census.py +99 -0
- daedalus_flow-0.1.0/tests/core/test_walk_shapes_config.py +171 -0
- daedalus_flow-0.1.0/tests/core/test_walk_shapes_refusals.py +180 -0
- daedalus_flow-0.1.0/tests/core/test_walks_arithmetic.py +152 -0
- daedalus_flow-0.1.0/tests/core/test_walks_census.py +175 -0
- daedalus_flow-0.1.0/tests/core/test_walks_defects.py +178 -0
- daedalus_flow-0.1.0/tests/core/test_walks_lineage.py +341 -0
- daedalus_flow-0.1.0/tests/core/test_walks_plan.py +322 -0
- daedalus_flow-0.1.0/tests/fixtures/README.md +80 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/bad_module_id/input/seed.json +3 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/bad_module_id/lab.yaml +7 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/bad_module_id/modules/a/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/bad_module_id/modules/fit@home/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/block_dangling.yaml +13 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/input/seed.json +3 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/lab.yaml +69 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/b00/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/b01/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/b02/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/b03/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/b04/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/b05/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/b06/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/b07/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/b08/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/b09/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/b10/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/cia0/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/cia1/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/cia10/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/cia2/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/cia3/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/cia4/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/cia5/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/cia6/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/cia7/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/cia8/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/cia9/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/cib0/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/cib1/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/cib10/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/cib2/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/cib3/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/cib4/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/cib5/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/cib6/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/cib7/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/cib8/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/cib9/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/collector_no_walks/input/seed.json +3 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/collector_no_walks/lab.yaml +15 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/collector_no_walks/modules/a/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/collector_no_walks/modules/b/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/collector_no_walks/modules/c1/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/collector_no_walks/modules/c2/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/collector_no_walks/modules/d/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/collector_no_walks/modules/src/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/complex_into_two_collectors/input/seed.json +3 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/complex_into_two_collectors/lab.yaml +13 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/complex_into_two_collectors/modules/b1/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/complex_into_two_collectors/modules/b2/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/complex_into_two_collectors/modules/coll_x/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/complex_into_two_collectors/modules/coll_y/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/complex_into_two_collectors/modules/src/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/complex_partial_xy/input/seed.json +3 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/complex_partial_xy/lab.yaml +19 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/complex_partial_xy/modules/b1/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/complex_partial_xy/modules/b2/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/complex_partial_xy/modules/b3/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/complex_partial_xy/modules/b4/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/complex_partial_xy/modules/b5/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/complex_partial_xy/modules/coll_x/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/complex_partial_xy/modules/coll_y/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/complex_partial_xy/modules/src/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/cross_brancher_merge/input/seed.json +3 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/cross_brancher_merge/lab.yaml +19 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/cross_brancher_merge/modules/ba/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/cross_brancher_merge/modules/bb/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/cross_brancher_merge/modules/ca1/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/cross_brancher_merge/modules/ca2/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/cross_brancher_merge/modules/cb1/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/cross_brancher_merge/modules/cb2/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/cross_brancher_merge/modules/join/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/cross_brancher_merge/modules/src/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/cross_level_merge/input/seed.json +3 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/cross_level_merge/lab.yaml +15 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/cross_level_merge/modules/join/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/cross_level_merge/modules/mid/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/cross_level_merge/modules/side/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/cross_level_merge/modules/src/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/cross_level_merge/modules/sub_a/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/cross_level_merge/modules/sub_b/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/cyclic.yaml +11 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/dangling_dep.yaml +8 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/emitter_fanout/input/seed.json +3 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/emitter_fanout/lab.yaml +9 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/emitter_fanout/modules/a/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/emitter_fanout/modules/b/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/emitter_fanout/modules/emit/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/emitter_not_source/lab.yaml +11 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/emitter_not_source/modules/late_emit/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/emitter_not_source/modules/source_tf/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/flight_collector_source/lab.yaml +10 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/flight_collector_source/modules/lone_agg/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/partial_group/input/seed.json +3 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/partial_group/lab.yaml +13 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/partial_group/modules/a/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/partial_group/modules/b/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/partial_group/modules/c/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/partial_group/modules/join/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/partial_group/modules/src/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/two_emitters.yaml +11 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/unparseable.yaml +9 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/walk_collector_solo/lab.yaml +10 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/walk_collector_solo/modules/solo_agg/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/walk_collector_solo/modules/src/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/walks_reach_fc/input/seed.json +3 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/walks_reach_fc/lab.yaml +13 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/walks_reach_fc/modules/a/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/walks_reach_fc/modules/b/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/walks_reach_fc/modules/emit/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/walks_reach_fc/modules/fcollect/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_labs/walks_reach_fc/modules/prep/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_modules/README.md +15 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_modules/bad_role/dae-module.yaml +3 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_modules/bad_role/main.py +12 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_modules/bad_role/requirements.txt +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_modules/missing_entry/dae-module.yaml +3 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_modules/missing_entry/main.py +10 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_modules/missing_entry/requirements.txt +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_modules/name_mismatch/dae-module.yaml +3 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_modules/name_mismatch/main.py +11 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_modules/name_mismatch/requirements.txt +1 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_modules/no_main/dae-module.yaml +3 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_modules/raises_on_import/dae-module.yaml +2 -0
- daedalus_flow-0.1.0/tests/fixtures/broken_modules/raises_on_import/main.py +14 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/asym_join/input/seed.json +3 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/asym_join/lab.yaml +16 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/asym_join/modules/join/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/asym_join/modules/join/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/asym_join/modules/quick/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/asym_join/modules/quick/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/asym_join/modules/slow_a/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/asym_join/modules/slow_a/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/asym_join/modules/slow_b/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/asym_join/modules/slow_b/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/asym_join/modules/slow_c/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/asym_join/modules/slow_c/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/asym_join/modules/src/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/asym_join/modules/src/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/brancher_mixed/lab.yaml +22 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/brancher_mixed/modules/agg/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/brancher_mixed/modules/agg/main.py +9 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/brancher_mixed/modules/agg2/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/brancher_mixed/modules/agg2/main.py +9 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/brancher_mixed/modules/split/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/brancher_mixed/modules/split/main.py +9 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/brancher_mixed/modules/split2/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/brancher_mixed/modules/split2/main.py +9 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/brancher_mixed/modules/t1/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/brancher_mixed/modules/t1/main.py +9 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/brancher_mixed/modules/t2/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/brancher_mixed/modules/t2/main.py +9 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/brancher_mixed/modules/t3/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/brancher_mixed/modules/t3/main.py +9 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/brancher_nested/lab.yaml +22 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/brancher_nested/modules/l/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/brancher_nested/modules/l/main.py +9 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/brancher_nested/modules/l1/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/brancher_nested/modules/l1/main.py +9 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/brancher_nested/modules/l2/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/brancher_nested/modules/l2/main.py +9 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/brancher_nested/modules/r/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/brancher_nested/modules/r/main.py +9 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/brancher_nested/modules/r1/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/brancher_nested/modules/r1/main.py +9 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/brancher_nested/modules/r2/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/brancher_nested/modules/r2/main.py +9 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/brancher_nested/modules/root/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/brancher_nested/modules/root/main.py +9 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/chain_plain/input/seed.json +3 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/chain_plain/lab.yaml +10 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/chain_plain/modules/step_a/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/chain_plain/modules/step_a/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/chain_plain/modules/step_b/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/chain_plain/modules/step_b/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/chain_plain/modules/step_c/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/chain_plain/modules/step_c/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/input/start.json +3 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/lab.yaml +64 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_A/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_A/main.py +29 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_A/requirements.txt +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_AA/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_AA/main.py +29 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_AA/requirements.txt +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_AB/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_AB/main.py +29 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_AB/requirements.txt +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_AC/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_AC/main.py +32 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_AC/requirements.txt +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_AD/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_AD/main.py +29 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_AD/requirements.txt +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_B/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_B/main.py +29 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_B/requirements.txt +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_C/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_C/main.py +29 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_C/requirements.txt +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_D/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_D/main.py +29 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_D/requirements.txt +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_E/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_E/main.py +29 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_E/requirements.txt +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_F/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_F/main.py +29 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_F/requirements.txt +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_G/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_G/main.py +29 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_G/requirements.txt +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_H/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_H/main.py +29 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_H/requirements.txt +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_I/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_I/main.py +29 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_I/requirements.txt +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_J/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_J/main.py +29 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_J/requirements.txt +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_K/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_K/main.py +29 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_K/requirements.txt +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_L/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_L/main.py +29 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_L/requirements.txt +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_M/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_M/main.py +29 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_M/requirements.txt +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_N/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_N/main.py +29 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_N/requirements.txt +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_O/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_O/main.py +29 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_O/requirements.txt +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_P/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_P/main.py +29 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_P/requirements.txt +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_Q/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_Q/main.py +29 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_Q/requirements.txt +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_R/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_R/main.py +32 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_R/requirements.txt +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_S/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_S/main.py +29 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_S/requirements.txt +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_T/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_T/main.py +29 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_T/requirements.txt +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_U/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_U/main.py +29 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_U/requirements.txt +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_V/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_V/main.py +29 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_V/requirements.txt +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_W/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_W/main.py +32 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_W/requirements.txt +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_X/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_X/main.py +29 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_X/requirements.txt +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_Y/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_Y/main.py +29 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_Y/requirements.txt +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_Z/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_Z/main.py +29 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_Z/requirements.txt +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/diamond_join/expected/joined.json +7 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/diamond_join/input/start.json +3 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/diamond_join/lab.yaml +20 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/diamond_join/modules/join/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/diamond_join/modules/join/main.py +22 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/diamond_join/modules/left/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/diamond_join/modules/left/main.py +15 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/diamond_join/modules/right/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/diamond_join/modules/right/main.py +15 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/diamond_join/modules/seed/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/diamond_join/modules/seed/main.py +15 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/diamond_repeat/input/seed.json +3 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/diamond_repeat/lab.yaml +11 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/diamond_repeat/modules/d/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/diamond_repeat/modules/d/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/diamond_repeat/modules/left/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/diamond_repeat/modules/left/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/diamond_repeat/modules/right/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/diamond_repeat/modules/right/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/diamond_repeat/modules/seed/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/diamond_repeat/modules/seed/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/emitter_list_abc/input/items.json +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/emitter_list_abc/lab.yaml +10 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/emitter_list_abc/modules/emit/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/emitter_list_abc/modules/emit/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/emitter_list_abc/modules/gather/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/emitter_list_abc/modules/gather/main.py +17 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/emitter_list_abc/modules/work/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/emitter_list_abc/modules/work/main.py +16 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/emitter_range0/input/items.json +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/emitter_range0/lab.yaml +10 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/emitter_range0/modules/emit/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/emitter_range0/modules/emit/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/emitter_range0/modules/gather/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/emitter_range0/modules/gather/main.py +17 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/emitter_range0/modules/work/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/emitter_range0/modules/work/main.py +16 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/emitter_range1/input/items.json +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/emitter_range1/lab.yaml +10 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/emitter_range1/modules/emit/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/emitter_range1/modules/emit/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/emitter_range1/modules/gather/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/emitter_range1/modules/gather/main.py +17 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/emitter_range1/modules/work/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/emitter_range1/modules/work/main.py +16 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/emitter_range5/input/items.json +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/emitter_range5/lab.yaml +10 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/emitter_range5/modules/emit/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/emitter_range5/modules/emit/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/emitter_range5/modules/gather/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/emitter_range5/modules/gather/main.py +17 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/emitter_range5/modules/work/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/emitter_range5/modules/work/main.py +16 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/input/targets.csv +3 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/lab.yaml +44 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/analyze_posterior_distances/dae-module.yaml +2 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/analyze_posterior_distances/expected/distances.json +119 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/analyze_posterior_distances/main.py +76 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/collect_results/dae-module.yaml +2 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/collect_results/expected/summary.json +861 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/collect_results/main.py +33 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/compare_target_uncertainties/dae-module.yaml +2 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/compare_target_uncertainties/expected/comparison.json +861 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/compare_target_uncertainties/main.py +96 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/denoise_lightcurve/dae-module.yaml +2 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/denoise_lightcurve/expected/denoised.json +814 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/denoise_lightcurve/main.py +46 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/fetch_archive_data/dae-module.yaml +2 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/fetch_archive_data/expected/folded.json +4014 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/fetch_archive_data/main.py +71 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/fit_transit_biased/dae-module.yaml +2 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/fit_transit_biased/main.py +143 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/fit_transit_gaussian/dae-module.yaml +2 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/fit_transit_gaussian/main.py +109 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/fit_transit_mcmc/dae-module.yaml +2 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/fit_transit_mcmc/main.py +157 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/fit_transit_nested/dae-module.yaml +2 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/fit_transit_nested/main.py +138 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/generate_targets/dae-module.yaml +2 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/generate_targets/expected/targets.json +16 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/generate_targets/main.py +25 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/plot_joint_posteriors/dae-module.yaml +2 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/plot_joint_posteriors/expected/corner_data.json +39 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/plot_joint_posteriors/main.py +73 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/plot_method_overlay/dae-module.yaml +2 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/plot_method_overlay/expected/overlay_data.json +27 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/plot_method_overlay/main.py +102 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge/input/.gitkeep +0 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge/lab.yaml +22 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge/modules/coll_a/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge/modules/coll_a/main.py +12 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge/modules/coll_b/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge/modules/coll_b/main.py +12 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge/modules/coll_c/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge/modules/coll_c/main.py +12 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge/modules/emit/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge/modules/emit/main.py +12 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge/modules/fc/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge/modules/fc/main.py +19 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge/modules/leaf_x/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge/modules/leaf_x/main.py +12 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge/modules/leaf_y/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge/modules/leaf_y/main.py +12 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge/modules/sink/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge/modules/sink/main.py +12 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge/modules/split/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge/modules/split/main.py +12 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge_m2/input/.gitkeep +0 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge_m2/lab.yaml +22 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge_m2/modules/coll_a/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge_m2/modules/coll_a/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge_m2/modules/coll_b/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge_m2/modules/coll_b/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge_m2/modules/coll_c/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge_m2/modules/coll_c/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge_m2/modules/emit/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge_m2/modules/emit/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge_m2/modules/fc/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge_m2/modules/fc/main.py +19 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge_m2/modules/leaf_x/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge_m2/modules/leaf_x/main.py +12 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge_m2/modules/leaf_y/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge_m2/modules/leaf_y/main.py +12 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge_m2/modules/sink/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge_m2/modules/sink/main.py +12 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge_m2/modules/split/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge_m2/modules/split/main.py +12 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/flight_one_fails/input/items.json +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/flight_one_fails/lab.yaml +10 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/flight_one_fails/modules/emit/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/flight_one_fails/modules/emit/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/flight_one_fails/modules/gather/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/flight_one_fails/modules/gather/main.py +17 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/flight_one_fails/modules/work/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/flight_one_fails/modules/work/main.py +21 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/linear_smoke/input/seed.json +3 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/linear_smoke/lab.yaml +27 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/linear_smoke/modules/collect_report/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/linear_smoke/modules/collect_report/main.py +29 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/linear_smoke/modules/debug_io/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/linear_smoke/modules/debug_io/main.py +19 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/linear_smoke/modules/emit_ticks/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/linear_smoke/modules/emit_ticks/main.py +17 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/linear_smoke/modules/sleep_briefly/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/linear_smoke/modules/sleep_briefly/main.py +14 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/linear_smoke/modules/summarize_walk/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/linear_smoke/modules/summarize_walk/main.py +20 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/mixed_collect/input/seed.json +3 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/mixed_collect/lab.yaml +15 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/mixed_collect/modules/deep/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/mixed_collect/modules/deep/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/mixed_collect/modules/side/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/mixed_collect/modules/side/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/mixed_collect/modules/src/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/mixed_collect/modules/src/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/mixed_collect/modules/sub_a/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/mixed_collect/modules/sub_a/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/mixed_collect/modules/sub_b/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/mixed_collect/modules/sub_b/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/mixed_collect/modules/sub_join/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/mixed_collect/modules/sub_join/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/nested_join/input/seed.json +3 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/nested_join/lab.yaml +18 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/nested_join/modules/mid/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/nested_join/modules/mid/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/nested_join/modules/side/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/nested_join/modules/side/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/nested_join/modules/src/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/nested_join/modules/src/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/nested_join/modules/sub_a/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/nested_join/modules/sub_a/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/nested_join/modules/sub_b/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/nested_join/modules/sub_b/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/nested_join/modules/sub_join/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/nested_join/modules/sub_join/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/nested_join/modules/top_join/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/nested_join/modules/top_join/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/nix_diamond/input/start.json +3 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/nix_diamond/lab.yaml +19 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/nix_diamond/modules/art/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/nix_diamond/modules/art/main.py +26 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/nix_diamond/modules/art/pyproject.toml +8 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/nix_diamond/modules/art/requirements.txt +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/nix_diamond/modules/art/uv.lock +23 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/nix_diamond/modules/fig/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/nix_diamond/modules/fig/main.py +26 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/nix_diamond/modules/fig/pyproject.toml +8 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/nix_diamond/modules/fig/requirements.txt +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/nix_diamond/modules/fig/uv.lock +23 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/nix_diamond/modules/join/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/nix_diamond/modules/join/main.py +22 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/nix_diamond/modules/join/pyproject.toml +8 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/nix_diamond/modules/join/uv.lock +8 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/nix_diamond/modules/seed/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/nix_diamond/modules/seed/main.py +11 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/nix_diamond/modules/seed/pyproject.toml +10 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/nix_diamond/modules/seed/uv.lock +8 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/repeat_then_collect/input/seed.json +3 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/repeat_then_collect/lab.yaml +14 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/repeat_then_collect/modules/d/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/repeat_then_collect/modules/d/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/repeat_then_collect/modules/join/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/repeat_then_collect/modules/join/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/repeat_then_collect/modules/left/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/repeat_then_collect/modules/left/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/repeat_then_collect/modules/right/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/repeat_then_collect/modules/right/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/repeat_then_collect/modules/seed/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/repeat_then_collect/modules/seed/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/science_nix/input/start.json +3 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/science_nix/lab.yaml +9 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/science_nix/modules/solve/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/science_nix/modules/solve/main.py +30 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/science_nix/modules/solve/pyproject.toml +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/science_nix/modules/solve/requirements.txt +2 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/science_nix/modules/solve/uv.lock +140 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/series_diamonds/input/seed.json +3 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/series_diamonds/lab.yaml +20 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/series_diamonds/modules/a1/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/series_diamonds/modules/a1/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/series_diamonds/modules/a2/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/series_diamonds/modules/a2/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/series_diamonds/modules/b1/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/series_diamonds/modules/b1/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/series_diamonds/modules/b2/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/series_diamonds/modules/b2/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/series_diamonds/modules/join1/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/series_diamonds/modules/join1/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/series_diamonds/modules/join2/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/series_diamonds/modules/join2/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/series_diamonds/modules/mid/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/series_diamonds/modules/mid/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/series_diamonds/modules/src/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/series_diamonds/modules/src/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/sibling_collectors/input/seed.json +3 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/sibling_collectors/lab.yaml +28 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/sibling_collectors/modules/coll_a/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/sibling_collectors/modules/coll_a/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/sibling_collectors/modules/coll_b/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/sibling_collectors/modules/coll_b/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/sibling_collectors/modules/coll_c/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/sibling_collectors/modules/coll_c/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/sibling_collectors/modules/emit/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/sibling_collectors/modules/emit/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/sibling_collectors/modules/fcollect/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/sibling_collectors/modules/fcollect/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/sibling_collectors/modules/fit_a/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/sibling_collectors/modules/fit_a/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/sibling_collectors/modules/fit_b/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/sibling_collectors/modules/fit_b/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/sibling_collectors/modules/fit_c/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/sibling_collectors/modules/fit_c/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/sibling_collectors/modules/fit_d/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/sibling_collectors/modules/fit_d/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/sibling_collectors/modules/prep/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/sibling_collectors/modules/prep/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/sibling_collectors/modules/sink/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/sibling_collectors/modules/sink/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/sibling_collectors/modules/split/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/sibling_collectors/modules/split/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide4_join/input/seed.json +3 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide4_join/lab.yaml +16 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide4_join/modules/b_a/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide4_join/modules/b_a/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide4_join/modules/b_b/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide4_join/modules/b_b/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide4_join/modules/b_c/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide4_join/modules/b_c/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide4_join/modules/b_d/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide4_join/modules/b_d/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide4_join/modules/join/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide4_join/modules/join/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide4_join/modules/src/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide4_join/modules/src/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide4_repeat/input/seed.json +3 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide4_repeat/lab.yaml +15 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide4_repeat/modules/b_a/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide4_repeat/modules/b_a/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide4_repeat/modules/b_b/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide4_repeat/modules/b_b/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide4_repeat/modules/b_c/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide4_repeat/modules/b_c/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide4_repeat/modules/b_d/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide4_repeat/modules/b_d/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide4_repeat/modules/sink/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide4_repeat/modules/sink/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide4_repeat/modules/src/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide4_repeat/modules/src/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide5_join/input/seed.json +3 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide5_join/lab.yaml +18 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide5_join/modules/b_a/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide5_join/modules/b_a/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide5_join/modules/b_b/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide5_join/modules/b_b/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide5_join/modules/b_c/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide5_join/modules/b_c/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide5_join/modules/b_d/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide5_join/modules/b_d/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide5_join/modules/b_e/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide5_join/modules/b_e/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide5_join/modules/join/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide5_join/modules/join/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide5_join/modules/src/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide5_join/modules/src/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide5_repeat/input/seed.json +3 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide5_repeat/lab.yaml +17 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide5_repeat/modules/b_a/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide5_repeat/modules/b_a/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide5_repeat/modules/b_b/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide5_repeat/modules/b_b/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide5_repeat/modules/b_c/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide5_repeat/modules/b_c/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide5_repeat/modules/b_d/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide5_repeat/modules/b_d/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide5_repeat/modules/b_e/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide5_repeat/modules/b_e/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide5_repeat/modules/sink/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide5_repeat/modules/sink/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide5_repeat/modules/src/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/labs/wide5_repeat/modules/src/main.py +13 -0
- daedalus_flow-0.1.0/tests/fixtures/modules/emit_pair/dae-module.yaml +2 -0
- daedalus_flow-0.1.0/tests/fixtures/modules/emit_pair/expected/roster.json +10 -0
- daedalus_flow-0.1.0/tests/fixtures/modules/emit_pair/input/seed.csv +3 -0
- daedalus_flow-0.1.0/tests/fixtures/modules/emit_pair/main.py +17 -0
- daedalus_flow-0.1.0/tests/fixtures/modules/emit_pair/requirements.txt +1 -0
- daedalus_flow-0.1.0/tests/fixtures/modules/merge_walks/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/modules/merge_walks/expected/merged.json +7 -0
- daedalus_flow-0.1.0/tests/fixtures/modules/merge_walks/main.py +26 -0
- daedalus_flow-0.1.0/tests/fixtures/modules/merge_walks/requirements.txt +1 -0
- daedalus_flow-0.1.0/tests/fixtures/modules/merge_walks/walk_inputs/walk_1/part.json +4 -0
- daedalus_flow-0.1.0/tests/fixtures/modules/merge_walks/walk_inputs/walk_2/part.json +4 -0
- daedalus_flow-0.1.0/tests/fixtures/modules/reduce_flights/dae-module.yaml +1 -0
- daedalus_flow-0.1.0/tests/fixtures/modules/reduce_flights/expected/reduced.json +8 -0
- daedalus_flow-0.1.0/tests/fixtures/modules/reduce_flights/flight_inputs/flight_1/part.json +4 -0
- daedalus_flow-0.1.0/tests/fixtures/modules/reduce_flights/flight_inputs/flight_2/part.json +4 -0
- daedalus_flow-0.1.0/tests/fixtures/modules/reduce_flights/main.py +31 -0
- daedalus_flow-0.1.0/tests/fixtures/modules/reduce_flights/requirements.txt +1 -0
- daedalus_flow-0.1.0/tests/fixtures/modules/scale_series/dae-module.yaml +2 -0
- daedalus_flow-0.1.0/tests/fixtures/modules/scale_series/expected/scaled.json +8 -0
- daedalus_flow-0.1.0/tests/fixtures/modules/scale_series/input/series.json +3 -0
- daedalus_flow-0.1.0/tests/fixtures/modules/scale_series/main.py +21 -0
- daedalus_flow-0.1.0/tests/fixtures/modules/scale_series/requirements.txt +1 -0
- daedalus_flow-0.1.0/tests/flow/__init__.py +0 -0
- daedalus_flow-0.1.0/tests/flow/test_ensemble_emit_csv.py +61 -0
- daedalus_flow-0.1.0/tests/flow/test_exoplanet_deterministic.py +384 -0
- daedalus_flow-0.1.0/tests/flow/test_gallery_modules.py +222 -0
- daedalus_flow-0.1.0/tests/flow/test_role_fixtures.py +107 -0
- daedalus_flow-0.1.0/tests/flow/test_stochastic_fits.py +188 -0
- daedalus_flow-0.1.0/tests/journey/__init__.py +0 -0
- daedalus_flow-0.1.0/tests/journey/_journey.py +116 -0
- daedalus_flow-0.1.0/tests/journey/test_dae_helper.py +60 -0
- daedalus_flow-0.1.0/tests/journey/test_journey_collectors.py +117 -0
- daedalus_flow-0.1.0/tests/journey/test_journey_complex.py +152 -0
- daedalus_flow-0.1.0/tests/journey/test_journey_diamond.py +254 -0
- daedalus_flow-0.1.0/tests/journey/test_journey_examples.py +256 -0
- daedalus_flow-0.1.0/tests/journey/test_journey_fanout.py +62 -0
- daedalus_flow-0.1.0/tests/test_installed_wheel_isolation.py +141 -0
- daedalus_flow-0.1.0/tests/test_packaged_examples_clean.py +73 -0
- daedalus_flow-0.1.0/uv.lock +5275 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# EditorConfig (https://editorconfig.org): baseline whitespace hygiene,
|
|
2
|
+
# matching the pre-commit end-of-file-fixer / trailing-whitespace hooks.
|
|
3
|
+
root = true
|
|
4
|
+
|
|
5
|
+
[*]
|
|
6
|
+
charset = utf-8
|
|
7
|
+
end_of_line = lf
|
|
8
|
+
insert_final_newline = true
|
|
9
|
+
trim_trailing_whitespace = true
|
|
10
|
+
indent_style = space
|
|
11
|
+
|
|
12
|
+
[*.py]
|
|
13
|
+
indent_size = 4
|
|
14
|
+
max_line_length = 88
|
|
15
|
+
|
|
16
|
+
[*.{yaml,yml,toml,json}]
|
|
17
|
+
indent_size = 2
|
|
18
|
+
|
|
19
|
+
[justfile]
|
|
20
|
+
indent_size = 4
|
|
21
|
+
|
|
22
|
+
[*.md]
|
|
23
|
+
# Markdown uses trailing double-space line breaks.
|
|
24
|
+
trim_trailing_whitespace = false
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Auto-activate the daedalus dev shell (flake.nix) on entry.
|
|
2
|
+
#
|
|
3
|
+
# WHY: under a Nix-store Python interpreter the ELF loader is the Nix glibc
|
|
4
|
+
# loader, which does NOT search the host FHS library path
|
|
5
|
+
# (/usr/lib/x86_64-linux-gnu), so the science stack's binary wheels (numpy,
|
|
6
|
+
# scipy, ...) cannot find libstdc++.so.6 (the gcc runtime) or libz.so.1 at
|
|
7
|
+
# import time. The flake's dev shell sets a narrow, Nix-store, ABI-matched
|
|
8
|
+
# LD_LIBRARY_PATH (zlib + gcc runtime) that fixes exactly this. direnv exports
|
|
9
|
+
# that environment the moment you cd in, so `uv run python -c "import scipy"`
|
|
10
|
+
# works with zero manual steps.
|
|
11
|
+
#
|
|
12
|
+
# SETUP (one time): `cp .envrc.defaults .envrc && direnv allow`. Needs
|
|
13
|
+
# direnv >= 2.30 for the built-in `use flake`.
|
|
14
|
+
#
|
|
15
|
+
# IF DIRENV IS DISABLED: run `nix develop` by hand to enter the same shell.
|
|
16
|
+
use flake
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Code of conduct
|
|
2
|
+
|
|
3
|
+
This project is a welcoming, safe and equitable space for everyone who takes
|
|
4
|
+
part in good faith. That holds whatever a person's race, ethnicity, caste,
|
|
5
|
+
color, age, disability, neurodiversity, sex, gender identity or expression,
|
|
6
|
+
sexual orientation, language, religion, origin, class or education.
|
|
7
|
+
|
|
8
|
+
The following behavior is not accepted, and neither are threats of it:
|
|
9
|
+
|
|
10
|
+
- Violating someone's stated boundaries, or continuing personal attention after a request to stop.
|
|
11
|
+
- Insulting, demeaning or pejorative comments aimed at a person or a group.
|
|
12
|
+
- Characterizing anyone's personality or behavior on the basis of identity or traits.
|
|
13
|
+
- Behavior that is inappropriately intimate for the context.
|
|
14
|
+
- Sharing or acting on someone's private information without permission.
|
|
15
|
+
- Causing, encouraging or threatening violence or other harm.
|
|
16
|
+
- Impersonating someone, failing to credit sources, or posting commercial content outside the norms of the project.
|
|
17
|
+
|
|
18
|
+
Report a problem privately to the maintainer,
|
|
19
|
+
[@preller](https://github.com/preller). Reports are handled in confidence.
|
|
20
|
+
|
|
21
|
+
Adapted from the [Contributor Covenant 3.0](https://www.contributor-covenant.org/version/3/0/),
|
|
22
|
+
licensed under [Creative Commons Attribution-ShareAlike 4.0](https://creativecommons.org/licenses/by-sa/4.0/).
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Contributing
|
|
2
|
+
|
|
3
|
+
## Setup
|
|
4
|
+
|
|
5
|
+
daedalus-flow uses [uv](https://docs.astral.sh/uv/) and needs Python 3.12 or
|
|
6
|
+
newer. The recipes run through [just](https://github.com/casey/just), a system
|
|
7
|
+
binary (`nix profile install nixpkgs#just` or `cargo install just`).
|
|
8
|
+
|
|
9
|
+
```sh
|
|
10
|
+
uv sync --locked --all-groups
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
A plain `uv sync` leaves `just typecheck` and `just test` failing at import,
|
|
14
|
+
because the scientific stack sits behind dependency groups.
|
|
15
|
+
`uv run pre-commit install` adds the commit-time hooks, which run the fast part
|
|
16
|
+
of the gate.
|
|
17
|
+
|
|
18
|
+
Nix users can copy `.envrc.defaults` to `.envrc` and run `direnv allow`; direnv
|
|
19
|
+
then loads the flake dev shell on entry.
|
|
20
|
+
|
|
21
|
+
## Gate
|
|
22
|
+
|
|
23
|
+
Run `just gate` before you open a pull request. It runs lint (ruff check and format), typecheck (mypy), imports (the
|
|
24
|
+
import-layer contracts), test (the fast suite under the coverage floor), and audit. `just test` skips the real samplers and `just test-slow` runs them;
|
|
25
|
+
`just --list` shows the other tiers.
|
|
26
|
+
|
|
27
|
+
## Code style
|
|
28
|
+
|
|
29
|
+
- ruff is pinned to `0.15.16` in the pre-commit hook, `just lint` and CI; let it decide formatting.
|
|
30
|
+
- mypy runs in strict mode.
|
|
31
|
+
- Write in American English and follow the conventions of the file you are editing.
|
|
32
|
+
|
|
33
|
+
## Pull requests
|
|
34
|
+
|
|
35
|
+
- One change per pull request, with a test.
|
|
36
|
+
- Say what the change does and why, and link the issue if there is one.
|
|
37
|
+
- Open an issue first for a new dependency or a change to a public contract: a CLI command, a `lab.yaml` field, the `--json` envelope or an outcome code.
|
|
38
|
+
|
|
39
|
+
## Generated code
|
|
40
|
+
|
|
41
|
+
Tools that write code are welcome. Name the tool in the pull request and take
|
|
42
|
+
responsibility for every line. Do not submit generated code you have not read.
|
|
43
|
+
|
|
44
|
+
## Security
|
|
45
|
+
|
|
46
|
+
Report a vulnerability privately as described in `SECURITY.md`, not in a public issue.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
name: Bug report
|
|
2
|
+
description: Report something that is not working as expected.
|
|
3
|
+
labels: ["bug"]
|
|
4
|
+
body:
|
|
5
|
+
- type: textarea
|
|
6
|
+
id: what-happened
|
|
7
|
+
attributes:
|
|
8
|
+
label: What happened
|
|
9
|
+
description: Describe the problem, including what you expected to happen instead.
|
|
10
|
+
placeholder: When I run ..., I expected ... but got ...
|
|
11
|
+
validations:
|
|
12
|
+
required: true
|
|
13
|
+
- type: textarea
|
|
14
|
+
id: reproduction
|
|
15
|
+
attributes:
|
|
16
|
+
label: Steps to reproduce
|
|
17
|
+
description: The exact commands or steps that trigger the problem. A minimal example helps most.
|
|
18
|
+
placeholder: |
|
|
19
|
+
1. Run `dae ...`
|
|
20
|
+
2. ...
|
|
21
|
+
3. See the error
|
|
22
|
+
validations:
|
|
23
|
+
required: true
|
|
24
|
+
- type: textarea
|
|
25
|
+
id: version
|
|
26
|
+
attributes:
|
|
27
|
+
label: Version
|
|
28
|
+
description: The output of `dae --version`.
|
|
29
|
+
placeholder: Paste the output of `dae --version` here.
|
|
30
|
+
render: text
|
|
31
|
+
validations:
|
|
32
|
+
required: true
|
|
33
|
+
- type: textarea
|
|
34
|
+
id: environment
|
|
35
|
+
attributes:
|
|
36
|
+
label: Environment
|
|
37
|
+
description: Your operating system and Python version (`python --version`).
|
|
38
|
+
placeholder: |
|
|
39
|
+
OS: e.g. Ubuntu 24.04, macOS 15
|
|
40
|
+
Python: e.g. 3.12.7
|
|
41
|
+
validations:
|
|
42
|
+
required: true
|
|
43
|
+
- type: textarea
|
|
44
|
+
id: logs
|
|
45
|
+
attributes:
|
|
46
|
+
label: Logs or traceback
|
|
47
|
+
description: Any relevant error output. This will be rendered as code, so no backticks are needed.
|
|
48
|
+
render: shell
|
|
49
|
+
validations:
|
|
50
|
+
required: false
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Security
|
|
2
|
+
|
|
3
|
+
Do not open a public issue for a vulnerability. Report it through GitHub's
|
|
4
|
+
private vulnerability reporting: the repository's Security tab, then "Report a
|
|
5
|
+
vulnerability".
|
|
6
|
+
|
|
7
|
+
A useful report gives the version (`dae --version`), the operating system and
|
|
8
|
+
Python version, a minimal way to reproduce the problem, and any traceback or
|
|
9
|
+
input that triggers it.
|
|
10
|
+
|
|
11
|
+
Reports must reproduce; unverified tool output is closed.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Monthly grouped bumps of the SHA-pinned GitHub Actions. Python deps are pinned in uv.lock
|
|
2
|
+
# and bumped with `uv lock`, so only the github-actions ecosystem is tracked here.
|
|
3
|
+
version: 2
|
|
4
|
+
updates:
|
|
5
|
+
- package-ecosystem: "github-actions"
|
|
6
|
+
directory: "/"
|
|
7
|
+
schedule:
|
|
8
|
+
interval: "monthly"
|
|
9
|
+
groups:
|
|
10
|
+
actions:
|
|
11
|
+
patterns: ["*"]
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
# CI for daedalus. Every job installs `just` and calls the justfile recipes, so the gate is
|
|
2
|
+
# defined once. Third-party actions are pinned to a full commit SHA; the comment names the tag.
|
|
3
|
+
|
|
4
|
+
name: ci
|
|
5
|
+
|
|
6
|
+
on:
|
|
7
|
+
push:
|
|
8
|
+
branches: [main]
|
|
9
|
+
pull_request:
|
|
10
|
+
workflow_dispatch:
|
|
11
|
+
schedule:
|
|
12
|
+
- cron: "0 6 * * 1" # weekly, Monday 06:00 UTC
|
|
13
|
+
|
|
14
|
+
permissions:
|
|
15
|
+
contents: read
|
|
16
|
+
|
|
17
|
+
# A newer push to the same ref cancels the in-progress run.
|
|
18
|
+
concurrency:
|
|
19
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
20
|
+
cancel-in-progress: true
|
|
21
|
+
|
|
22
|
+
jobs:
|
|
23
|
+
lint:
|
|
24
|
+
runs-on: ubuntu-latest
|
|
25
|
+
steps:
|
|
26
|
+
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
|
27
|
+
- uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
|
|
28
|
+
with:
|
|
29
|
+
version: "0.7.22"
|
|
30
|
+
- uses: extractions/setup-just@53165ef7e734c5c07cb06b3c8e7b647c5aa16db3 # v4.0.0
|
|
31
|
+
- run: uv sync --locked
|
|
32
|
+
- run: just lint
|
|
33
|
+
- run: just imports
|
|
34
|
+
|
|
35
|
+
# mypy covers tests/, which import the science stack, so this job syncs every group.
|
|
36
|
+
typecheck:
|
|
37
|
+
runs-on: ubuntu-latest
|
|
38
|
+
steps:
|
|
39
|
+
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
|
40
|
+
- uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
|
|
41
|
+
with:
|
|
42
|
+
version: "0.7.22"
|
|
43
|
+
- uses: extractions/setup-just@53165ef7e734c5c07cb06b3c8e7b647c5aa16db3 # v4.0.0
|
|
44
|
+
- run: uv sync --locked --all-groups
|
|
45
|
+
- run: just typecheck
|
|
46
|
+
|
|
47
|
+
# The publish gate; the fast suite on both shipped interpreters, Linux only.
|
|
48
|
+
test:
|
|
49
|
+
runs-on: ubuntu-latest
|
|
50
|
+
strategy:
|
|
51
|
+
fail-fast: false
|
|
52
|
+
matrix:
|
|
53
|
+
python-version: ["3.12", "3.13"]
|
|
54
|
+
steps:
|
|
55
|
+
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
|
56
|
+
- uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
|
|
57
|
+
with:
|
|
58
|
+
version: "0.7.22"
|
|
59
|
+
python-version: "${{ matrix.python-version }}"
|
|
60
|
+
- uses: extractions/setup-just@53165ef7e734c5c07cb06b3c8e7b647c5aa16db3 # v4.0.0
|
|
61
|
+
- run: uv sync --locked --all-groups
|
|
62
|
+
- run: just test
|
|
63
|
+
|
|
64
|
+
# pip-audit of the locked closure, weekly and on dispatch, advisory.
|
|
65
|
+
audit:
|
|
66
|
+
if: github.event_name == 'workflow_dispatch' || github.event_name == 'schedule'
|
|
67
|
+
runs-on: ubuntu-latest
|
|
68
|
+
continue-on-error: true
|
|
69
|
+
steps:
|
|
70
|
+
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
|
71
|
+
- uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
|
|
72
|
+
with:
|
|
73
|
+
version: "0.7.22"
|
|
74
|
+
- uses: extractions/setup-just@53165ef7e734c5c07cb06b3c8e7b647c5aa16db3 # v4.0.0
|
|
75
|
+
- run: uv sync --locked
|
|
76
|
+
- run: just audit
|
|
77
|
+
|
|
78
|
+
# The Nix-only isolation tests (uv2nix per-module build), weekly and on dispatch, advisory.
|
|
79
|
+
nix-tests:
|
|
80
|
+
if: github.event_name == 'workflow_dispatch' || github.event_name == 'schedule'
|
|
81
|
+
runs-on: ubuntu-latest
|
|
82
|
+
continue-on-error: true
|
|
83
|
+
permissions:
|
|
84
|
+
contents: read
|
|
85
|
+
steps:
|
|
86
|
+
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
|
87
|
+
- uses: DeterminateSystems/determinate-nix-action@9adf02b41cfdac2632e1c16f0480ff5bf3b05dd6 # v3.21.1
|
|
88
|
+
- uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
|
|
89
|
+
with:
|
|
90
|
+
version: "0.7.22"
|
|
91
|
+
- uses: extractions/setup-just@53165ef7e734c5c07cb06b3c8e7b647c5aa16db3 # v4.0.0
|
|
92
|
+
- run: uv sync --locked --all-groups
|
|
93
|
+
- run: just test-nix
|
|
94
|
+
|
|
95
|
+
# Wheel-portability smoke: build the wheel, install it into a clean venv with no
|
|
96
|
+
# dev shell, and run the lean CLI journey (scripts/portability_smoke.sh).
|
|
97
|
+
portability:
|
|
98
|
+
runs-on: ubuntu-latest
|
|
99
|
+
steps:
|
|
100
|
+
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
|
101
|
+
with:
|
|
102
|
+
# hatch-vcs reads the version from the git history and tags.
|
|
103
|
+
fetch-depth: 0
|
|
104
|
+
- uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
|
|
105
|
+
with:
|
|
106
|
+
version: "0.7.22"
|
|
107
|
+
- run: bash scripts/portability_smoke.sh
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Release pipeline. Build once, `twine check`, then trusted publishing (OIDC) with attestations.
|
|
2
|
+
# The PyPI pending publisher must match this repository, the file name publish.yml and the
|
|
3
|
+
# environment (`pypi`, or `testpypi` for the rehearsal); register one publisher per index.
|
|
4
|
+
|
|
5
|
+
name: publish
|
|
6
|
+
|
|
7
|
+
on:
|
|
8
|
+
push:
|
|
9
|
+
# hatch-vcs derives the version from the tag. A clean vX.Y.Z tag publishes to PyPI;
|
|
10
|
+
# an rc or dev tag rehearses on TestPyPI.
|
|
11
|
+
tags: ["v*"]
|
|
12
|
+
# Manual trigger for a TestPyPI rehearsal without a tag.
|
|
13
|
+
workflow_dispatch:
|
|
14
|
+
|
|
15
|
+
permissions:
|
|
16
|
+
contents: read
|
|
17
|
+
|
|
18
|
+
jobs:
|
|
19
|
+
build:
|
|
20
|
+
runs-on: ubuntu-latest
|
|
21
|
+
steps:
|
|
22
|
+
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
|
23
|
+
with:
|
|
24
|
+
# hatch-vcs needs the full history and tags, or the build gets the wrong version.
|
|
25
|
+
fetch-depth: 0
|
|
26
|
+
- uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
|
|
27
|
+
with:
|
|
28
|
+
version: "0.7.22"
|
|
29
|
+
- run: uv build
|
|
30
|
+
# Confirm the wheel and sdist metadata render on PyPI before an upload consumes a version.
|
|
31
|
+
- run: uvx twine check dist/*
|
|
32
|
+
- uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
|
|
33
|
+
with:
|
|
34
|
+
name: dist
|
|
35
|
+
path: dist/
|
|
36
|
+
|
|
37
|
+
publish:
|
|
38
|
+
needs: build
|
|
39
|
+
runs-on: ubuntu-latest
|
|
40
|
+
# The environment name is half of the OIDC claim and gates the required reviewer.
|
|
41
|
+
environment: ${{ (github.event_name == 'workflow_dispatch' || contains(github.ref, 'rc') || contains(github.ref, 'dev')) && 'testpypi' || 'pypi' }}
|
|
42
|
+
permissions:
|
|
43
|
+
# Mints the short-lived OIDC token; no PyPI API token is used.
|
|
44
|
+
id-token: write
|
|
45
|
+
steps:
|
|
46
|
+
- uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0
|
|
47
|
+
with:
|
|
48
|
+
name: dist
|
|
49
|
+
path: dist/
|
|
50
|
+
- name: Publish to PyPI
|
|
51
|
+
if: github.event_name == 'push' && !contains(github.ref, 'rc') && !contains(github.ref, 'dev')
|
|
52
|
+
uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2
|
|
53
|
+
- name: Publish to TestPyPI
|
|
54
|
+
if: github.event_name == 'workflow_dispatch' || contains(github.ref, 'rc') || contains(github.ref, 'dev')
|
|
55
|
+
uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2
|
|
56
|
+
with:
|
|
57
|
+
repository-url: https://test.pypi.org/legacy/
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Python
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*.egg-info/
|
|
5
|
+
.eggs/
|
|
6
|
+
|
|
7
|
+
# Build / publish artifacts
|
|
8
|
+
build/
|
|
9
|
+
dist/
|
|
10
|
+
*.whl
|
|
11
|
+
|
|
12
|
+
# Virtual environment
|
|
13
|
+
.venv/
|
|
14
|
+
|
|
15
|
+
# direnv (copy .envrc.defaults to .envrc and `direnv allow` to load the flake dev shell)
|
|
16
|
+
.direnv/
|
|
17
|
+
.envrc
|
|
18
|
+
|
|
19
|
+
# Tooling caches
|
|
20
|
+
.ruff_cache/
|
|
21
|
+
.mypy_cache/
|
|
22
|
+
.pytest_cache/
|
|
23
|
+
.import_linter_cache/
|
|
24
|
+
.cache/
|
|
25
|
+
|
|
26
|
+
# Coverage
|
|
27
|
+
.coverage
|
|
28
|
+
.coverage.*
|
|
29
|
+
htmlcov/
|
|
30
|
+
coverage.xml
|
|
31
|
+
|
|
32
|
+
# Generated engine output (a `dae lab run` writes these into its cwd)
|
|
33
|
+
dae-outputs/
|
|
34
|
+
.daedalus/
|
|
35
|
+
|
|
36
|
+
# OS / editor cruft
|
|
37
|
+
.DS_Store
|
|
38
|
+
*.swp
|
|
39
|
+
*~
|
|
40
|
+
|
|
41
|
+
# Sphinx docs build output + generated AutoAPI pages (autoapi_root = "api")
|
|
42
|
+
docs/_build/
|
|
43
|
+
docs/api/
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# The fast local subset of the `just gate` checks; pip-audit stays in CI.
|
|
2
|
+
# Install from the repo root with `uv run pre-commit install`.
|
|
3
|
+
|
|
4
|
+
repos:
|
|
5
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
6
|
+
rev: v6.0.0
|
|
7
|
+
hooks:
|
|
8
|
+
# examples/ holds module artifacts (expected/ goldens, input/ data) that
|
|
9
|
+
# the gallery tests compare byte-for-byte; whitespace-normalizing them
|
|
10
|
+
# changes test truth, so the fixers skip the whole examples tree.
|
|
11
|
+
- id: end-of-file-fixer
|
|
12
|
+
exclude: ^(src/daedalus/examples|tests/fixtures)/
|
|
13
|
+
- id: trailing-whitespace
|
|
14
|
+
exclude: ^(src/daedalus/examples|tests/fixtures)/
|
|
15
|
+
- id: check-merge-conflict
|
|
16
|
+
|
|
17
|
+
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
18
|
+
# rev equals the ruff version pyproject pins (ruff==0.15.16), so
|
|
19
|
+
# pre-commit, `just lint` and CI run the same ruff.
|
|
20
|
+
rev: v0.15.16
|
|
21
|
+
hooks:
|
|
22
|
+
# Scope matches the gate definition (`just lint`: ruff over src + tests).
|
|
23
|
+
- id: ruff-check
|
|
24
|
+
args: [--fix]
|
|
25
|
+
files: ^(src|tests)/
|
|
26
|
+
- id: ruff-format
|
|
27
|
+
files: ^(src|tests)/
|
|
28
|
+
|
|
29
|
+
- repo: https://github.com/gitleaks/gitleaks
|
|
30
|
+
# Secret scanning on staged changes. rev pinned.
|
|
31
|
+
rev: v8.9.0
|
|
32
|
+
hooks:
|
|
33
|
+
- id: gitleaks
|
|
34
|
+
|
|
35
|
+
- repo: local
|
|
36
|
+
hooks:
|
|
37
|
+
# A local hook rather than a mirror, so it runs the project-pinned mypy
|
|
38
|
+
# with the pyproject.toml strict config.
|
|
39
|
+
- id: mypy
|
|
40
|
+
name: mypy (project venv, strict)
|
|
41
|
+
entry: uv run mypy
|
|
42
|
+
language: system
|
|
43
|
+
# scripts/ is in [tool.mypy].files, so it must also trigger the hook.
|
|
44
|
+
files: ^(src|tests|scripts)/.*\.py$|^pyproject\.toml$
|
|
45
|
+
pass_filenames: false
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.12
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Read the Docs build configuration (v2).
|
|
2
|
+
# Mirrors the local `just docs` discipline: uv-synced docs group, fail on warning.
|
|
3
|
+
version: 2
|
|
4
|
+
|
|
5
|
+
build:
|
|
6
|
+
os: ubuntu-24.04
|
|
7
|
+
tools:
|
|
8
|
+
python: "3.12" # daedalus requires-python >=3.12; 3.12 validated
|
|
9
|
+
|
|
10
|
+
python:
|
|
11
|
+
install:
|
|
12
|
+
- method: uv
|
|
13
|
+
command: sync # respects uv.lock
|
|
14
|
+
groups:
|
|
15
|
+
- docs
|
|
16
|
+
|
|
17
|
+
sphinx:
|
|
18
|
+
configuration: docs/conf.py
|
|
19
|
+
fail_on_warning: true # mirror the -W discipline on RTD too
|
|
20
|
+
|
|
21
|
+
# No htmlzip: the singlehtml builder crashes in an html-page-context handler
|
|
22
|
+
# ("junk after document element"); the html build is the product anyway.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# AGENTS.md
|
|
2
|
+
|
|
3
|
+
Notes for coding agents working in this repository. Read
|
|
4
|
+
`.github/CONTRIBUTING.md` first; the list below is the short form.
|
|
5
|
+
|
|
6
|
+
- Set up with `uv sync --locked --all-groups`; every `just` recipe runs through `uv run`.
|
|
7
|
+
- Run `just gate` before a pull request: lint, typecheck, imports, test and audit.
|
|
8
|
+
- Do not change the bundled labs under `src/daedalus/examples/**`; the tests treat them as goldens.
|
|
9
|
+
- Say in the pull request which agent or tool wrote or changed the code.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
The format follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and
|
|
4
|
+
versions follow [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
5
|
+
|
|
6
|
+
## [0.1.0] - 2026-09-01
|
|
7
|
+
|
|
8
|
+
- The `dae` CLI: scaffold examples (`dae example`), design and inspect labs
|
|
9
|
+
(`dae lab init`, `dae lab validate`, `dae lab visualize`), run them
|
|
10
|
+
(`dae lab run`), and follow flows (`dae flow status`, `dae flow resume`).
|
|
11
|
+
- Module workbench: `dae module create`, `dae module try`,
|
|
12
|
+
`dae module validate`, and `dae module convert` to bring an existing script
|
|
13
|
+
into a lab.
|
|
14
|
+
- A machine-readable `--json` envelope on every command, with a stable
|
|
15
|
+
outcome-code contract (see `docs/reference/outcome-codes.md`).
|
|
16
|
+
- Local engine with per-module environment isolation (ambient, uv, or nix)
|
|
17
|
+
and opt-in parallelism; optional Prefect backend via the `engine` extra.
|
|
18
|
+
- A bundled example ladder, from `minimal` to the full `demo` reference lab.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
cff-version: 1.2.0
|
|
2
|
+
message: >-
|
|
3
|
+
If you use daedalus-flow in academic work, please cite it using this
|
|
4
|
+
metadata. See the "How to cite" section of the README.
|
|
5
|
+
title: "daedalus-flow"
|
|
6
|
+
abstract: >-
|
|
7
|
+
daedalus-flow (the dae command) is a reproducible analysis-pipeline framework,
|
|
8
|
+
"labs of modules", for data-intensive science, with a focus on astronomy and
|
|
9
|
+
exoplanet / space-science workflows.
|
|
10
|
+
type: software
|
|
11
|
+
authors:
|
|
12
|
+
- given-names: Patricio
|
|
13
|
+
family-names: Reller
|
|
14
|
+
affiliation: "Centre for Data Intensive Science and Industry (DISI), Department of Physics and Astronomy, University College London"
|
|
15
|
+
orcid: "https://orcid.org/0000-0003-3161-9239"
|
|
16
|
+
version: "0.1.0"
|
|
17
|
+
date-released: "2026-09-01"
|
|
18
|
+
license: Apache-2.0
|
|
19
|
+
url: "https://github.com/preller/daedalus-flow"
|
|
20
|
+
repository-code: "https://github.com/preller/daedalus-flow"
|
|
21
|
+
keywords:
|
|
22
|
+
- reproducibility
|
|
23
|
+
- data pipeline
|
|
24
|
+
- workflow
|
|
25
|
+
- astronomy
|
|
26
|
+
- exoplanets
|