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.
Files changed (1007) hide show
  1. daedalus_flow-0.1.0/.editorconfig +24 -0
  2. daedalus_flow-0.1.0/.envrc.defaults +16 -0
  3. daedalus_flow-0.1.0/.github/CODE_OF_CONDUCT.md +22 -0
  4. daedalus_flow-0.1.0/.github/CONTRIBUTING.md +46 -0
  5. daedalus_flow-0.1.0/.github/ISSUE_TEMPLATE/bug_report.yml +50 -0
  6. daedalus_flow-0.1.0/.github/ISSUE_TEMPLATE/config.yml +5 -0
  7. daedalus_flow-0.1.0/.github/PULL_REQUEST_TEMPLATE.md +4 -0
  8. daedalus_flow-0.1.0/.github/SECURITY.md +11 -0
  9. daedalus_flow-0.1.0/.github/dependabot.yml +11 -0
  10. daedalus_flow-0.1.0/.github/workflows/ci.yml +107 -0
  11. daedalus_flow-0.1.0/.github/workflows/publish.yml +57 -0
  12. daedalus_flow-0.1.0/.gitignore +43 -0
  13. daedalus_flow-0.1.0/.pre-commit-config.yaml +45 -0
  14. daedalus_flow-0.1.0/.python-version +1 -0
  15. daedalus_flow-0.1.0/.readthedocs.yaml +22 -0
  16. daedalus_flow-0.1.0/AGENTS.md +9 -0
  17. daedalus_flow-0.1.0/CHANGELOG.md +18 -0
  18. daedalus_flow-0.1.0/CITATION.cff +26 -0
  19. daedalus_flow-0.1.0/LICENSE +202 -0
  20. daedalus_flow-0.1.0/NOTICE +10 -0
  21. daedalus_flow-0.1.0/PKG-INFO +143 -0
  22. daedalus_flow-0.1.0/README.md +105 -0
  23. daedalus_flow-0.1.0/docs/citing.md +15 -0
  24. daedalus_flow-0.1.0/docs/conf.py +148 -0
  25. daedalus_flow-0.1.0/docs/contributing.md +2 -0
  26. daedalus_flow-0.1.0/docs/explanation/concepts.md +135 -0
  27. daedalus_flow-0.1.0/docs/explanation/how-the-engine-runs-a-lab.md +72 -0
  28. daedalus_flow-0.1.0/docs/explanation/index.md +11 -0
  29. daedalus_flow-0.1.0/docs/explanation/recipe-vs-run-counts.md +70 -0
  30. daedalus_flow-0.1.0/docs/how-to/fan-out-over-many-targets.md +72 -0
  31. daedalus_flow-0.1.0/docs/how-to/index.md +11 -0
  32. daedalus_flow-0.1.0/docs/how-to/isolate-module-dependencies.md +102 -0
  33. daedalus_flow-0.1.0/docs/how-to/run-modules-in-parallel.md +84 -0
  34. daedalus_flow-0.1.0/docs/index.md +113 -0
  35. daedalus_flow-0.1.0/docs/reference/cli.md +12 -0
  36. daedalus_flow-0.1.0/docs/reference/index.md +15 -0
  37. daedalus_flow-0.1.0/docs/reference/json-envelope.md +138 -0
  38. daedalus_flow-0.1.0/docs/reference/lab-yaml-reference.md +103 -0
  39. daedalus_flow-0.1.0/docs/reference/outcome-codes.md +70 -0
  40. daedalus_flow-0.1.0/docs/tutorials/getting-started.md +154 -0
  41. daedalus_flow-0.1.0/docs/tutorials/index.md +9 -0
  42. daedalus_flow-0.1.0/docs/tutorials/install.md +46 -0
  43. daedalus_flow-0.1.0/flake.lock +61 -0
  44. daedalus_flow-0.1.0/flake.nix +60 -0
  45. daedalus_flow-0.1.0/justfile +76 -0
  46. daedalus_flow-0.1.0/pyproject.toml +271 -0
  47. daedalus_flow-0.1.0/scripts/gen_outcome_catalog.py +46 -0
  48. daedalus_flow-0.1.0/scripts/portability_smoke.sh +75 -0
  49. daedalus_flow-0.1.0/src/daedalus/__init__.py +12 -0
  50. daedalus_flow-0.1.0/src/daedalus/cli/__init__.py +9 -0
  51. daedalus_flow-0.1.0/src/daedalus/cli/app.py +86 -0
  52. daedalus_flow-0.1.0/src/daedalus/cli/chrome.py +28 -0
  53. daedalus_flow-0.1.0/src/daedalus/cli/commands/__init__.py +1 -0
  54. daedalus_flow-0.1.0/src/daedalus/cli/commands/_outcome.py +65 -0
  55. daedalus_flow-0.1.0/src/daedalus/cli/commands/example.py +97 -0
  56. daedalus_flow-0.1.0/src/daedalus/cli/commands/flow.py +126 -0
  57. daedalus_flow-0.1.0/src/daedalus/cli/commands/lab/__init__.py +521 -0
  58. daedalus_flow-0.1.0/src/daedalus/cli/commands/lab/_prefect.py +49 -0
  59. daedalus_flow-0.1.0/src/daedalus/cli/commands/lab/_validate.py +381 -0
  60. daedalus_flow-0.1.0/src/daedalus/cli/commands/module.py +315 -0
  61. daedalus_flow-0.1.0/src/daedalus/cli/console.py +85 -0
  62. daedalus_flow-0.1.0/src/daedalus/cli/render/__init__.py +83 -0
  63. daedalus_flow-0.1.0/src/daedalus/cli/render/_ascii_dag.py +425 -0
  64. daedalus_flow-0.1.0/src/daedalus/cli/render/_base.py +97 -0
  65. daedalus_flow-0.1.0/src/daedalus/cli/render/_topology.py +586 -0
  66. daedalus_flow-0.1.0/src/daedalus/cli/render/_workflow.py +107 -0
  67. daedalus_flow-0.1.0/src/daedalus/cli/strings.py +495 -0
  68. daedalus_flow-0.1.0/src/daedalus/core/__init__.py +7 -0
  69. daedalus_flow-0.1.0/src/daedalus/core/dag.py +180 -0
  70. daedalus_flow-0.1.0/src/daedalus/core/engine/__init__.py +23 -0
  71. daedalus_flow-0.1.0/src/daedalus/core/engine/_import_probe.py +45 -0
  72. daedalus_flow-0.1.0/src/daedalus/core/engine/_module_runner.py +95 -0
  73. daedalus_flow-0.1.0/src/daedalus/core/engine/isolation.py +602 -0
  74. daedalus_flow-0.1.0/src/daedalus/core/engine/local/__init__.py +29 -0
  75. daedalus_flow-0.1.0/src/daedalus/core/engine/local/_engine.py +373 -0
  76. daedalus_flow-0.1.0/src/daedalus/core/engine/local/_finalize.py +92 -0
  77. daedalus_flow-0.1.0/src/daedalus/core/engine/local/_instance.py +441 -0
  78. daedalus_flow-0.1.0/src/daedalus/core/engine/nix/flake.lock +99 -0
  79. daedalus_flow-0.1.0/src/daedalus/core/engine/nix/flake.nix +76 -0
  80. daedalus_flow-0.1.0/src/daedalus/core/engine/prefect.py +232 -0
  81. daedalus_flow-0.1.0/src/daedalus/core/engine/protocol.py +92 -0
  82. daedalus_flow-0.1.0/src/daedalus/core/engine/scheduler.py +152 -0
  83. daedalus_flow-0.1.0/src/daedalus/core/engine/step.py +192 -0
  84. daedalus_flow-0.1.0/src/daedalus/core/engine/subprocess_runner.py +526 -0
  85. daedalus_flow-0.1.0/src/daedalus/core/flights.py +268 -0
  86. daedalus_flow-0.1.0/src/daedalus/core/lineage/__init__.py +55 -0
  87. daedalus_flow-0.1.0/src/daedalus/core/lineage/_io.py +238 -0
  88. daedalus_flow-0.1.0/src/daedalus/core/lineage/_schema.py +305 -0
  89. daedalus_flow-0.1.0/src/daedalus/core/outcomes.py +228 -0
  90. daedalus_flow-0.1.0/src/daedalus/core/paths.py +77 -0
  91. daedalus_flow-0.1.0/src/daedalus/core/recipe/__init__.py +61 -0
  92. daedalus_flow-0.1.0/src/daedalus/core/recipe/_parse.py +339 -0
  93. daedalus_flow-0.1.0/src/daedalus/core/recipe/_plan.py +94 -0
  94. daedalus_flow-0.1.0/src/daedalus/core/recipe/_validate.py +130 -0
  95. daedalus_flow-0.1.0/src/daedalus/core/topology.py +161 -0
  96. daedalus_flow-0.1.0/src/daedalus/core/walks/__init__.py +65 -0
  97. daedalus_flow-0.1.0/src/daedalus/core/walks/_arithmetic.py +89 -0
  98. daedalus_flow-0.1.0/src/daedalus/core/walks/_config.py +363 -0
  99. daedalus_flow-0.1.0/src/daedalus/core/walks/_propagation.py +474 -0
  100. daedalus_flow-0.1.0/src/daedalus/core/walks/_shared.py +103 -0
  101. daedalus_flow-0.1.0/src/daedalus/examples/__init__.py +1 -0
  102. daedalus_flow-0.1.0/src/daedalus/examples/complex/input/start.json +3 -0
  103. daedalus_flow-0.1.0/src/daedalus/examples/complex/lab.yaml +64 -0
  104. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/branch_x/dae-module.yaml +1 -0
  105. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/branch_x/main.py +29 -0
  106. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/branch_x/requirements.txt +1 -0
  107. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/branch_y/dae-module.yaml +1 -0
  108. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/branch_y/main.py +29 -0
  109. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/branch_y/requirements.txt +1 -0
  110. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/collect_region/dae-module.yaml +1 -0
  111. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/collect_region/main.py +32 -0
  112. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/collect_region/requirements.txt +1 -0
  113. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/collect_sib_a/dae-module.yaml +1 -0
  114. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/collect_sib_a/main.py +29 -0
  115. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/collect_sib_a/requirements.txt +1 -0
  116. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/collect_sib_b/dae-module.yaml +1 -0
  117. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/collect_sib_b/main.py +29 -0
  118. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/collect_sib_b/requirements.txt +1 -0
  119. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/collect_solo/dae-module.yaml +1 -0
  120. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/collect_solo/main.py +32 -0
  121. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/collect_solo/requirements.txt +1 -0
  122. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/collect_x/dae-module.yaml +1 -0
  123. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/collect_x/main.py +29 -0
  124. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/collect_x/requirements.txt +1 -0
  125. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/collect_x_deep/dae-module.yaml +1 -0
  126. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/collect_x_deep/main.py +29 -0
  127. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/collect_x_deep/requirements.txt +1 -0
  128. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/collect_y/dae-module.yaml +1 -0
  129. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/collect_y/main.py +29 -0
  130. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/collect_y/requirements.txt +1 -0
  131. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/emit/dae-module.yaml +1 -0
  132. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/emit/main.py +29 -0
  133. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/emit/requirements.txt +1 -0
  134. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/fan/dae-module.yaml +1 -0
  135. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/fan/main.py +29 -0
  136. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/fan/requirements.txt +1 -0
  137. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/join_pair/dae-module.yaml +1 -0
  138. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/join_pair/main.py +29 -0
  139. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/join_pair/requirements.txt +1 -0
  140. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/merge_flight/dae-module.yaml +1 -0
  141. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/merge_flight/main.py +32 -0
  142. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/merge_flight/requirements.txt +1 -0
  143. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/pair_left/dae-module.yaml +1 -0
  144. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/pair_left/main.py +29 -0
  145. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/pair_left/requirements.txt +1 -0
  146. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/pair_right/dae-module.yaml +1 -0
  147. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/pair_right/main.py +29 -0
  148. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/pair_right/requirements.txt +1 -0
  149. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/post/dae-module.yaml +1 -0
  150. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/post/main.py +29 -0
  151. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/post/requirements.txt +1 -0
  152. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/prep/dae-module.yaml +1 -0
  153. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/prep/main.py +29 -0
  154. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/prep/requirements.txt +1 -0
  155. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/report/dae-module.yaml +1 -0
  156. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/report/main.py +29 -0
  157. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/report/requirements.txt +1 -0
  158. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/sib_left/dae-module.yaml +1 -0
  159. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/sib_left/main.py +29 -0
  160. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/sib_left/requirements.txt +1 -0
  161. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/sib_right/dae-module.yaml +1 -0
  162. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/sib_right/main.py +29 -0
  163. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/sib_right/requirements.txt +1 -0
  164. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/x_deep/dae-module.yaml +1 -0
  165. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/x_deep/main.py +29 -0
  166. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/x_deep/requirements.txt +1 -0
  167. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/x_deep_left/dae-module.yaml +1 -0
  168. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/x_deep_left/main.py +29 -0
  169. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/x_deep_left/requirements.txt +1 -0
  170. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/x_deep_right/dae-module.yaml +1 -0
  171. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/x_deep_right/main.py +29 -0
  172. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/x_deep_right/requirements.txt +1 -0
  173. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/x_deep_step/dae-module.yaml +1 -0
  174. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/x_deep_step/main.py +29 -0
  175. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/x_deep_step/requirements.txt +1 -0
  176. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/x_leaf/dae-module.yaml +1 -0
  177. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/x_leaf/main.py +29 -0
  178. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/x_leaf/requirements.txt +1 -0
  179. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/x_mid/dae-module.yaml +1 -0
  180. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/x_mid/main.py +29 -0
  181. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/x_mid/requirements.txt +1 -0
  182. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/x_mid_tail/dae-module.yaml +1 -0
  183. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/x_mid_tail/main.py +29 -0
  184. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/x_mid_tail/requirements.txt +1 -0
  185. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/y_leaf/dae-module.yaml +1 -0
  186. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/y_leaf/main.py +29 -0
  187. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/y_leaf/requirements.txt +1 -0
  188. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/y_mid/dae-module.yaml +1 -0
  189. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/y_mid/main.py +29 -0
  190. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/y_mid/requirements.txt +1 -0
  191. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/y_mid_tail/dae-module.yaml +1 -0
  192. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/y_mid_tail/main.py +29 -0
  193. daedalus_flow-0.1.0/src/daedalus/examples/complex/modules/y_mid_tail/requirements.txt +1 -0
  194. daedalus_flow-0.1.0/src/daedalus/examples/demo/input/targets.csv +4 -0
  195. daedalus_flow-0.1.0/src/daedalus/examples/demo/lab.yaml +29 -0
  196. daedalus_flow-0.1.0/src/daedalus/examples/demo/modules/compare_methods/dae-module.yaml +2 -0
  197. daedalus_flow-0.1.0/src/daedalus/examples/demo/modules/compare_methods/expected/comparison.json +6 -0
  198. daedalus_flow-0.1.0/src/daedalus/examples/demo/modules/compare_methods/main.py +47 -0
  199. daedalus_flow-0.1.0/src/daedalus/examples/demo/modules/compare_methods/requirements.txt +1 -0
  200. daedalus_flow-0.1.0/src/daedalus/examples/demo/modules/emit_targets/dae-module.yaml +2 -0
  201. daedalus_flow-0.1.0/src/daedalus/examples/demo/modules/emit_targets/expected/targets.json +23 -0
  202. daedalus_flow-0.1.0/src/daedalus/examples/demo/modules/emit_targets/main.py +26 -0
  203. daedalus_flow-0.1.0/src/daedalus/examples/demo/modules/emit_targets/requirements.txt +1 -0
  204. daedalus_flow-0.1.0/src/daedalus/examples/demo/modules/fetch_data/dae-module.yaml +2 -0
  205. daedalus_flow-0.1.0/src/daedalus/examples/demo/modules/fetch_data/expected/folded.json +811 -0
  206. daedalus_flow-0.1.0/src/daedalus/examples/demo/modules/fetch_data/main.py +41 -0
  207. daedalus_flow-0.1.0/src/daedalus/examples/demo/modules/fetch_data/requirements.txt +1 -0
  208. daedalus_flow-0.1.0/src/daedalus/examples/demo/modules/fit_mcmc/dae-module.yaml +2 -0
  209. daedalus_flow-0.1.0/src/daedalus/examples/demo/modules/fit_mcmc/expected/posterior.json +2010 -0
  210. daedalus_flow-0.1.0/src/daedalus/examples/demo/modules/fit_mcmc/main.py +43 -0
  211. daedalus_flow-0.1.0/src/daedalus/examples/demo/modules/fit_mcmc/requirements.txt +1 -0
  212. daedalus_flow-0.1.0/src/daedalus/examples/demo/modules/fit_nested/dae-module.yaml +2 -0
  213. daedalus_flow-0.1.0/src/daedalus/examples/demo/modules/fit_nested/expected/posterior.json +2010 -0
  214. daedalus_flow-0.1.0/src/daedalus/examples/demo/modules/fit_nested/main.py +41 -0
  215. daedalus_flow-0.1.0/src/daedalus/examples/demo/modules/fit_nested/requirements.txt +1 -0
  216. daedalus_flow-0.1.0/src/daedalus/examples/demo/modules/summarize_population/dae-module.yaml +2 -0
  217. daedalus_flow-0.1.0/src/daedalus/examples/demo/modules/summarize_population/expected/summary.json +25 -0
  218. daedalus_flow-0.1.0/src/daedalus/examples/demo/modules/summarize_population/main.py +27 -0
  219. daedalus_flow-0.1.0/src/daedalus/examples/demo/modules/summarize_population/requirements.txt +1 -0
  220. daedalus_flow-0.1.0/src/daedalus/examples/demo/tutorial.ipynb +224 -0
  221. daedalus_flow-0.1.0/src/daedalus/examples/demo/tutorial.py +107 -0
  222. daedalus_flow-0.1.0/src/daedalus/examples/ensemble/input/targets.csv +11 -0
  223. daedalus_flow-0.1.0/src/daedalus/examples/ensemble/lab.yaml +13 -0
  224. daedalus_flow-0.1.0/src/daedalus/examples/ensemble/modules/analyze/dae-module.yaml +2 -0
  225. daedalus_flow-0.1.0/src/daedalus/examples/ensemble/modules/analyze/main.py +19 -0
  226. daedalus_flow-0.1.0/src/daedalus/examples/ensemble/modules/analyze/requirements.txt +1 -0
  227. daedalus_flow-0.1.0/src/daedalus/examples/ensemble/modules/collect/dae-module.yaml +2 -0
  228. daedalus_flow-0.1.0/src/daedalus/examples/ensemble/modules/collect/main.py +21 -0
  229. daedalus_flow-0.1.0/src/daedalus/examples/ensemble/modules/collect/requirements.txt +1 -0
  230. daedalus_flow-0.1.0/src/daedalus/examples/ensemble/modules/emit/dae-module.yaml +2 -0
  231. daedalus_flow-0.1.0/src/daedalus/examples/ensemble/modules/emit/main.py +19 -0
  232. daedalus_flow-0.1.0/src/daedalus/examples/ensemble/modules/emit/requirements.txt +1 -0
  233. daedalus_flow-0.1.0/src/daedalus/examples/isolation-nix/input/word.json +3 -0
  234. daedalus_flow-0.1.0/src/daedalus/examples/isolation-nix/lab.yaml +41 -0
  235. daedalus_flow-0.1.0/src/daedalus/examples/isolation-nix/modules/render_classic/dae-module.yaml +7 -0
  236. daedalus_flow-0.1.0/src/daedalus/examples/isolation-nix/modules/render_classic/main.py +23 -0
  237. daedalus_flow-0.1.0/src/daedalus/examples/isolation-nix/modules/render_classic/requirements.txt +1 -0
  238. daedalus_flow-0.1.0/src/daedalus/examples/isolation-nix/modules/render_modern/dae-module.yaml +7 -0
  239. daedalus_flow-0.1.0/src/daedalus/examples/isolation-nix/modules/render_modern/flake.lock +99 -0
  240. daedalus_flow-0.1.0/src/daedalus/examples/isolation-nix/modules/render_modern/flake.nix +72 -0
  241. daedalus_flow-0.1.0/src/daedalus/examples/isolation-nix/modules/render_modern/main.py +23 -0
  242. daedalus_flow-0.1.0/src/daedalus/examples/isolation-nix/modules/render_modern/pyproject.toml +9 -0
  243. daedalus_flow-0.1.0/src/daedalus/examples/isolation-nix/modules/render_modern/uv.lock +23 -0
  244. daedalus_flow-0.1.0/src/daedalus/examples/isolation-nix/modules/seed/dae-module.yaml +2 -0
  245. daedalus_flow-0.1.0/src/daedalus/examples/isolation-nix/modules/seed/main.py +11 -0
  246. daedalus_flow-0.1.0/src/daedalus/examples/isolation-nix/modules/seed/pyproject.toml +11 -0
  247. daedalus_flow-0.1.0/src/daedalus/examples/isolation-nix/modules/seed/uv.lock +8 -0
  248. daedalus_flow-0.1.0/src/daedalus/examples/isolation-nix/modules/verify/dae-module.yaml +2 -0
  249. daedalus_flow-0.1.0/src/daedalus/examples/isolation-nix/modules/verify/main.py +41 -0
  250. daedalus_flow-0.1.0/src/daedalus/examples/isolation-nix/modules/verify/pyproject.toml +8 -0
  251. daedalus_flow-0.1.0/src/daedalus/examples/isolation-nix/modules/verify/uv.lock +8 -0
  252. daedalus_flow-0.1.0/src/daedalus/examples/minimal/input/raw.csv +6 -0
  253. daedalus_flow-0.1.0/src/daedalus/examples/minimal/lab.yaml +8 -0
  254. daedalus_flow-0.1.0/src/daedalus/examples/minimal/modules/normalize/dae-module.yaml +2 -0
  255. daedalus_flow-0.1.0/src/daedalus/examples/minimal/modules/normalize/expected/normalized.json +18 -0
  256. daedalus_flow-0.1.0/src/daedalus/examples/minimal/modules/normalize/main.py +30 -0
  257. daedalus_flow-0.1.0/src/daedalus/examples/minimal/modules/normalize/requirements.txt +1 -0
  258. daedalus_flow-0.1.0/src/daedalus/examples/minimal/tutorial.ipynb +202 -0
  259. daedalus_flow-0.1.0/src/daedalus/examples/minimal/tutorial.py +90 -0
  260. daedalus_flow-0.1.0/src/daedalus/examples/parallel/input/dataset.json +3 -0
  261. daedalus_flow-0.1.0/src/daedalus/examples/parallel/lab.yaml +37 -0
  262. daedalus_flow-0.1.0/src/daedalus/examples/parallel/modules/combine/dae-module.yaml +2 -0
  263. daedalus_flow-0.1.0/src/daedalus/examples/parallel/modules/combine/main.py +17 -0
  264. daedalus_flow-0.1.0/src/daedalus/examples/parallel/modules/combine/requirements.txt +1 -0
  265. daedalus_flow-0.1.0/src/daedalus/examples/parallel/modules/split/dae-module.yaml +2 -0
  266. daedalus_flow-0.1.0/src/daedalus/examples/parallel/modules/split/main.py +14 -0
  267. daedalus_flow-0.1.0/src/daedalus/examples/parallel/modules/split/requirements.txt +1 -0
  268. daedalus_flow-0.1.0/src/daedalus/examples/parallel/modules/stat_max/dae-module.yaml +2 -0
  269. daedalus_flow-0.1.0/src/daedalus/examples/parallel/modules/stat_max/main.py +16 -0
  270. daedalus_flow-0.1.0/src/daedalus/examples/parallel/modules/stat_max/requirements.txt +1 -0
  271. daedalus_flow-0.1.0/src/daedalus/examples/parallel/modules/stat_mean/dae-module.yaml +2 -0
  272. daedalus_flow-0.1.0/src/daedalus/examples/parallel/modules/stat_mean/main.py +17 -0
  273. daedalus_flow-0.1.0/src/daedalus/examples/parallel/modules/stat_mean/requirements.txt +1 -0
  274. daedalus_flow-0.1.0/src/daedalus/examples/parallel/modules/stat_min/dae-module.yaml +2 -0
  275. daedalus_flow-0.1.0/src/daedalus/examples/parallel/modules/stat_min/main.py +16 -0
  276. daedalus_flow-0.1.0/src/daedalus/examples/parallel/modules/stat_min/requirements.txt +1 -0
  277. daedalus_flow-0.1.0/src/daedalus/examples/parallel/modules/stat_sum/dae-module.yaml +2 -0
  278. daedalus_flow-0.1.0/src/daedalus/examples/parallel/modules/stat_sum/main.py +19 -0
  279. daedalus_flow-0.1.0/src/daedalus/examples/parallel/modules/stat_sum/requirements.txt +1 -0
  280. daedalus_flow-0.1.0/src/daedalus/flow/__init__.py +11 -0
  281. daedalus_flow-0.1.0/src/daedalus/flow/_api.py +71 -0
  282. daedalus_flow-0.1.0/src/daedalus/py.typed +0 -0
  283. daedalus_flow-0.1.0/tests/__init__.py +0 -0
  284. daedalus_flow-0.1.0/tests/_helpers.py +304 -0
  285. daedalus_flow-0.1.0/tests/cli/__init__.py +0 -0
  286. daedalus_flow-0.1.0/tests/cli/_cli_contract.py +259 -0
  287. daedalus_flow-0.1.0/tests/cli/cli_surface.golden.txt +16 -0
  288. daedalus_flow-0.1.0/tests/cli/test_ascii_canvas.py +103 -0
  289. daedalus_flow-0.1.0/tests/cli/test_ascii_dag.py +198 -0
  290. daedalus_flow-0.1.0/tests/cli/test_cli_command_coverage.py +184 -0
  291. daedalus_flow-0.1.0/tests/cli/test_cli_contract_chains.py +24 -0
  292. daedalus_flow-0.1.0/tests/cli/test_cli_contract_flow_status.py +151 -0
  293. daedalus_flow-0.1.0/tests/cli/test_cli_contract_run.py +347 -0
  294. daedalus_flow-0.1.0/tests/cli/test_cli_contract_scaffold.py +264 -0
  295. daedalus_flow-0.1.0/tests/cli/test_cli_contract_validate.py +379 -0
  296. daedalus_flow-0.1.0/tests/cli/test_cli_contract_visualize.py +86 -0
  297. daedalus_flow-0.1.0/tests/cli/test_cli_contract_visualize_style.py +131 -0
  298. daedalus_flow-0.1.0/tests/cli/test_cli_surface.py +73 -0
  299. daedalus_flow-0.1.0/tests/cli/test_completion_surface.py +36 -0
  300. daedalus_flow-0.1.0/tests/cli/test_convert_marker.py +58 -0
  301. daedalus_flow-0.1.0/tests/cli/test_count_annotation.py +51 -0
  302. daedalus_flow-0.1.0/tests/cli/test_dryrun_validate_json.py +85 -0
  303. daedalus_flow-0.1.0/tests/cli/test_example_json.py +69 -0
  304. daedalus_flow-0.1.0/tests/cli/test_flow_status_after_crash.py +101 -0
  305. daedalus_flow-0.1.0/tests/cli/test_guided_flow_copy.py +170 -0
  306. daedalus_flow-0.1.0/tests/cli/test_help_accuracy.py +111 -0
  307. daedalus_flow-0.1.0/tests/cli/test_isolation_refuse_ordering.py +52 -0
  308. daedalus_flow-0.1.0/tests/cli/test_json_global_flag.py +69 -0
  309. daedalus_flow-0.1.0/tests/cli/test_lab_run_help.py +33 -0
  310. daedalus_flow-0.1.0/tests/cli/test_lab_validate_deep.py +241 -0
  311. daedalus_flow-0.1.0/tests/cli/test_lab_validate_isolation.py +167 -0
  312. daedalus_flow-0.1.0/tests/cli/test_outcome_catalog.py +31 -0
  313. daedalus_flow-0.1.0/tests/cli/test_outcome_contract.py +132 -0
  314. daedalus_flow-0.1.0/tests/cli/test_render_pass.py +218 -0
  315. daedalus_flow-0.1.0/tests/cli/test_run_status_json.py +324 -0
  316. daedalus_flow-0.1.0/tests/cli/test_step_failure_render.py +97 -0
  317. daedalus_flow-0.1.0/tests/cli/test_surface_consistency.py +83 -0
  318. daedalus_flow-0.1.0/tests/cli/test_version_flag.py +44 -0
  319. daedalus_flow-0.1.0/tests/conftest.py +98 -0
  320. daedalus_flow-0.1.0/tests/core/__init__.py +0 -0
  321. daedalus_flow-0.1.0/tests/core/_dag.py +19 -0
  322. daedalus_flow-0.1.0/tests/core/_walk_shapes.py +461 -0
  323. daedalus_flow-0.1.0/tests/core/_walks_helpers.py +49 -0
  324. daedalus_flow-0.1.0/tests/core/engine/__init__.py +0 -0
  325. daedalus_flow-0.1.0/tests/core/engine/_copy_layout.py +57 -0
  326. daedalus_flow-0.1.0/tests/core/engine/_local_engine.py +100 -0
  327. daedalus_flow-0.1.0/tests/core/engine/test_bounded_parallel.py +241 -0
  328. daedalus_flow-0.1.0/tests/core/engine/test_child_safe_path.py +70 -0
  329. daedalus_flow-0.1.0/tests/core/engine/test_copy_layout.py +174 -0
  330. daedalus_flow-0.1.0/tests/core/engine/test_copy_layout_flights.py +324 -0
  331. daedalus_flow-0.1.0/tests/core/engine/test_default_parallelism.py +41 -0
  332. daedalus_flow-0.1.0/tests/core/engine/test_engine_lazy_imports.py +55 -0
  333. daedalus_flow-0.1.0/tests/core/engine/test_flight_final_merge.py +119 -0
  334. daedalus_flow-0.1.0/tests/core/engine/test_flight_partial_failure.py +113 -0
  335. daedalus_flow-0.1.0/tests/core/engine/test_flow_resume.py +152 -0
  336. daedalus_flow-0.1.0/tests/core/engine/test_import_root.py +208 -0
  337. daedalus_flow-0.1.0/tests/core/engine/test_isolation_conformance.py +83 -0
  338. daedalus_flow-0.1.0/tests/core/engine/test_isolation_nix.py +223 -0
  339. daedalus_flow-0.1.0/tests/core/engine/test_isolation_nix_example.py +88 -0
  340. daedalus_flow-0.1.0/tests/core/engine/test_isolation_nix_generation.py +161 -0
  341. daedalus_flow-0.1.0/tests/core/engine/test_isolation_nix_log.py +120 -0
  342. daedalus_flow-0.1.0/tests/core/engine/test_isolation_nix_science.py +92 -0
  343. daedalus_flow-0.1.0/tests/core/engine/test_isolation_resolution.py +196 -0
  344. daedalus_flow-0.1.0/tests/core/engine/test_isolation_wiring.py +67 -0
  345. daedalus_flow-0.1.0/tests/core/engine/test_local_engine.py +281 -0
  346. daedalus_flow-0.1.0/tests/core/engine/test_local_engine_dispatch.py +255 -0
  347. daedalus_flow-0.1.0/tests/core/engine/test_nix_author_flake_contract.py +78 -0
  348. daedalus_flow-0.1.0/tests/core/engine/test_nix_launch_scrubbed_env.py +80 -0
  349. daedalus_flow-0.1.0/tests/core/engine/test_prefect_conformance.py +394 -0
  350. daedalus_flow-0.1.0/tests/core/engine/test_prefect_progress.py +253 -0
  351. daedalus_flow-0.1.0/tests/core/engine/test_scheduler.py +247 -0
  352. daedalus_flow-0.1.0/tests/core/engine/test_step_failure_classification.py +63 -0
  353. daedalus_flow-0.1.0/tests/core/engine/test_step_log.py +142 -0
  354. daedalus_flow-0.1.0/tests/core/engine/test_subprocess_spike.py +321 -0
  355. daedalus_flow-0.1.0/tests/core/engine/test_uv_standalone_launch.py +221 -0
  356. daedalus_flow-0.1.0/tests/core/engine/test_walk_parallel_timing.py +120 -0
  357. daedalus_flow-0.1.0/tests/core/test_dag.py +318 -0
  358. daedalus_flow-0.1.0/tests/core/test_dag_integration.py +206 -0
  359. daedalus_flow-0.1.0/tests/core/test_dynamic_flights.py +173 -0
  360. daedalus_flow-0.1.0/tests/core/test_golden_helpers.py +80 -0
  361. daedalus_flow-0.1.0/tests/core/test_isolation_preference.py +140 -0
  362. daedalus_flow-0.1.0/tests/core/test_lineage.py +338 -0
  363. daedalus_flow-0.1.0/tests/core/test_lineage_io.py +189 -0
  364. daedalus_flow-0.1.0/tests/core/test_lineage_reconcile.py +200 -0
  365. daedalus_flow-0.1.0/tests/core/test_recipe.py +299 -0
  366. daedalus_flow-0.1.0/tests/core/test_recipe_integration.py +137 -0
  367. daedalus_flow-0.1.0/tests/core/test_topology.py +50 -0
  368. daedalus_flow-0.1.0/tests/core/test_walk_shapes.py +57 -0
  369. daedalus_flow-0.1.0/tests/core/test_walk_shapes_census.py +99 -0
  370. daedalus_flow-0.1.0/tests/core/test_walk_shapes_config.py +171 -0
  371. daedalus_flow-0.1.0/tests/core/test_walk_shapes_refusals.py +180 -0
  372. daedalus_flow-0.1.0/tests/core/test_walks_arithmetic.py +152 -0
  373. daedalus_flow-0.1.0/tests/core/test_walks_census.py +175 -0
  374. daedalus_flow-0.1.0/tests/core/test_walks_defects.py +178 -0
  375. daedalus_flow-0.1.0/tests/core/test_walks_lineage.py +341 -0
  376. daedalus_flow-0.1.0/tests/core/test_walks_plan.py +322 -0
  377. daedalus_flow-0.1.0/tests/fixtures/README.md +80 -0
  378. daedalus_flow-0.1.0/tests/fixtures/broken_labs/bad_module_id/input/seed.json +3 -0
  379. daedalus_flow-0.1.0/tests/fixtures/broken_labs/bad_module_id/lab.yaml +7 -0
  380. daedalus_flow-0.1.0/tests/fixtures/broken_labs/bad_module_id/modules/a/dae-module.yaml +1 -0
  381. daedalus_flow-0.1.0/tests/fixtures/broken_labs/bad_module_id/modules/fit@home/dae-module.yaml +1 -0
  382. daedalus_flow-0.1.0/tests/fixtures/broken_labs/block_dangling.yaml +13 -0
  383. daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/input/seed.json +3 -0
  384. daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/lab.yaml +69 -0
  385. daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/b00/dae-module.yaml +1 -0
  386. daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/b01/dae-module.yaml +1 -0
  387. daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/b02/dae-module.yaml +1 -0
  388. daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/b03/dae-module.yaml +1 -0
  389. daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/b04/dae-module.yaml +1 -0
  390. daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/b05/dae-module.yaml +1 -0
  391. daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/b06/dae-module.yaml +1 -0
  392. daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/b07/dae-module.yaml +1 -0
  393. daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/b08/dae-module.yaml +1 -0
  394. daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/b09/dae-module.yaml +1 -0
  395. daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/b10/dae-module.yaml +1 -0
  396. daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/cia0/dae-module.yaml +1 -0
  397. daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/cia1/dae-module.yaml +1 -0
  398. daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/cia10/dae-module.yaml +1 -0
  399. daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/cia2/dae-module.yaml +1 -0
  400. daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/cia3/dae-module.yaml +1 -0
  401. daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/cia4/dae-module.yaml +1 -0
  402. daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/cia5/dae-module.yaml +1 -0
  403. daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/cia6/dae-module.yaml +1 -0
  404. daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/cia7/dae-module.yaml +1 -0
  405. daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/cia8/dae-module.yaml +1 -0
  406. daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/cia9/dae-module.yaml +1 -0
  407. daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/cib0/dae-module.yaml +1 -0
  408. daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/cib1/dae-module.yaml +1 -0
  409. daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/cib10/dae-module.yaml +1 -0
  410. daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/cib2/dae-module.yaml +1 -0
  411. daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/cib3/dae-module.yaml +1 -0
  412. daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/cib4/dae-module.yaml +1 -0
  413. daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/cib5/dae-module.yaml +1 -0
  414. daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/cib6/dae-module.yaml +1 -0
  415. daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/cib7/dae-module.yaml +1 -0
  416. daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/cib8/dae-module.yaml +1 -0
  417. daedalus_flow-0.1.0/tests/fixtures/broken_labs/budget_blowup/modules/cib9/dae-module.yaml +1 -0
  418. daedalus_flow-0.1.0/tests/fixtures/broken_labs/collector_no_walks/input/seed.json +3 -0
  419. daedalus_flow-0.1.0/tests/fixtures/broken_labs/collector_no_walks/lab.yaml +15 -0
  420. daedalus_flow-0.1.0/tests/fixtures/broken_labs/collector_no_walks/modules/a/dae-module.yaml +1 -0
  421. daedalus_flow-0.1.0/tests/fixtures/broken_labs/collector_no_walks/modules/b/dae-module.yaml +1 -0
  422. daedalus_flow-0.1.0/tests/fixtures/broken_labs/collector_no_walks/modules/c1/dae-module.yaml +1 -0
  423. daedalus_flow-0.1.0/tests/fixtures/broken_labs/collector_no_walks/modules/c2/dae-module.yaml +1 -0
  424. daedalus_flow-0.1.0/tests/fixtures/broken_labs/collector_no_walks/modules/d/dae-module.yaml +1 -0
  425. daedalus_flow-0.1.0/tests/fixtures/broken_labs/collector_no_walks/modules/src/dae-module.yaml +1 -0
  426. daedalus_flow-0.1.0/tests/fixtures/broken_labs/complex_into_two_collectors/input/seed.json +3 -0
  427. daedalus_flow-0.1.0/tests/fixtures/broken_labs/complex_into_two_collectors/lab.yaml +13 -0
  428. daedalus_flow-0.1.0/tests/fixtures/broken_labs/complex_into_two_collectors/modules/b1/dae-module.yaml +1 -0
  429. daedalus_flow-0.1.0/tests/fixtures/broken_labs/complex_into_two_collectors/modules/b2/dae-module.yaml +1 -0
  430. daedalus_flow-0.1.0/tests/fixtures/broken_labs/complex_into_two_collectors/modules/coll_x/dae-module.yaml +1 -0
  431. daedalus_flow-0.1.0/tests/fixtures/broken_labs/complex_into_two_collectors/modules/coll_y/dae-module.yaml +1 -0
  432. daedalus_flow-0.1.0/tests/fixtures/broken_labs/complex_into_two_collectors/modules/src/dae-module.yaml +1 -0
  433. daedalus_flow-0.1.0/tests/fixtures/broken_labs/complex_partial_xy/input/seed.json +3 -0
  434. daedalus_flow-0.1.0/tests/fixtures/broken_labs/complex_partial_xy/lab.yaml +19 -0
  435. daedalus_flow-0.1.0/tests/fixtures/broken_labs/complex_partial_xy/modules/b1/dae-module.yaml +1 -0
  436. daedalus_flow-0.1.0/tests/fixtures/broken_labs/complex_partial_xy/modules/b2/dae-module.yaml +1 -0
  437. daedalus_flow-0.1.0/tests/fixtures/broken_labs/complex_partial_xy/modules/b3/dae-module.yaml +1 -0
  438. daedalus_flow-0.1.0/tests/fixtures/broken_labs/complex_partial_xy/modules/b4/dae-module.yaml +1 -0
  439. daedalus_flow-0.1.0/tests/fixtures/broken_labs/complex_partial_xy/modules/b5/dae-module.yaml +1 -0
  440. daedalus_flow-0.1.0/tests/fixtures/broken_labs/complex_partial_xy/modules/coll_x/dae-module.yaml +1 -0
  441. daedalus_flow-0.1.0/tests/fixtures/broken_labs/complex_partial_xy/modules/coll_y/dae-module.yaml +1 -0
  442. daedalus_flow-0.1.0/tests/fixtures/broken_labs/complex_partial_xy/modules/src/dae-module.yaml +1 -0
  443. daedalus_flow-0.1.0/tests/fixtures/broken_labs/cross_brancher_merge/input/seed.json +3 -0
  444. daedalus_flow-0.1.0/tests/fixtures/broken_labs/cross_brancher_merge/lab.yaml +19 -0
  445. daedalus_flow-0.1.0/tests/fixtures/broken_labs/cross_brancher_merge/modules/ba/dae-module.yaml +1 -0
  446. daedalus_flow-0.1.0/tests/fixtures/broken_labs/cross_brancher_merge/modules/bb/dae-module.yaml +1 -0
  447. daedalus_flow-0.1.0/tests/fixtures/broken_labs/cross_brancher_merge/modules/ca1/dae-module.yaml +1 -0
  448. daedalus_flow-0.1.0/tests/fixtures/broken_labs/cross_brancher_merge/modules/ca2/dae-module.yaml +1 -0
  449. daedalus_flow-0.1.0/tests/fixtures/broken_labs/cross_brancher_merge/modules/cb1/dae-module.yaml +1 -0
  450. daedalus_flow-0.1.0/tests/fixtures/broken_labs/cross_brancher_merge/modules/cb2/dae-module.yaml +1 -0
  451. daedalus_flow-0.1.0/tests/fixtures/broken_labs/cross_brancher_merge/modules/join/dae-module.yaml +1 -0
  452. daedalus_flow-0.1.0/tests/fixtures/broken_labs/cross_brancher_merge/modules/src/dae-module.yaml +1 -0
  453. daedalus_flow-0.1.0/tests/fixtures/broken_labs/cross_level_merge/input/seed.json +3 -0
  454. daedalus_flow-0.1.0/tests/fixtures/broken_labs/cross_level_merge/lab.yaml +15 -0
  455. daedalus_flow-0.1.0/tests/fixtures/broken_labs/cross_level_merge/modules/join/dae-module.yaml +1 -0
  456. daedalus_flow-0.1.0/tests/fixtures/broken_labs/cross_level_merge/modules/mid/dae-module.yaml +1 -0
  457. daedalus_flow-0.1.0/tests/fixtures/broken_labs/cross_level_merge/modules/side/dae-module.yaml +1 -0
  458. daedalus_flow-0.1.0/tests/fixtures/broken_labs/cross_level_merge/modules/src/dae-module.yaml +1 -0
  459. daedalus_flow-0.1.0/tests/fixtures/broken_labs/cross_level_merge/modules/sub_a/dae-module.yaml +1 -0
  460. daedalus_flow-0.1.0/tests/fixtures/broken_labs/cross_level_merge/modules/sub_b/dae-module.yaml +1 -0
  461. daedalus_flow-0.1.0/tests/fixtures/broken_labs/cyclic.yaml +11 -0
  462. daedalus_flow-0.1.0/tests/fixtures/broken_labs/dangling_dep.yaml +8 -0
  463. daedalus_flow-0.1.0/tests/fixtures/broken_labs/emitter_fanout/input/seed.json +3 -0
  464. daedalus_flow-0.1.0/tests/fixtures/broken_labs/emitter_fanout/lab.yaml +9 -0
  465. daedalus_flow-0.1.0/tests/fixtures/broken_labs/emitter_fanout/modules/a/dae-module.yaml +1 -0
  466. daedalus_flow-0.1.0/tests/fixtures/broken_labs/emitter_fanout/modules/b/dae-module.yaml +1 -0
  467. daedalus_flow-0.1.0/tests/fixtures/broken_labs/emitter_fanout/modules/emit/dae-module.yaml +1 -0
  468. daedalus_flow-0.1.0/tests/fixtures/broken_labs/emitter_not_source/lab.yaml +11 -0
  469. daedalus_flow-0.1.0/tests/fixtures/broken_labs/emitter_not_source/modules/late_emit/dae-module.yaml +1 -0
  470. daedalus_flow-0.1.0/tests/fixtures/broken_labs/emitter_not_source/modules/source_tf/dae-module.yaml +1 -0
  471. daedalus_flow-0.1.0/tests/fixtures/broken_labs/flight_collector_source/lab.yaml +10 -0
  472. daedalus_flow-0.1.0/tests/fixtures/broken_labs/flight_collector_source/modules/lone_agg/dae-module.yaml +1 -0
  473. daedalus_flow-0.1.0/tests/fixtures/broken_labs/partial_group/input/seed.json +3 -0
  474. daedalus_flow-0.1.0/tests/fixtures/broken_labs/partial_group/lab.yaml +13 -0
  475. daedalus_flow-0.1.0/tests/fixtures/broken_labs/partial_group/modules/a/dae-module.yaml +1 -0
  476. daedalus_flow-0.1.0/tests/fixtures/broken_labs/partial_group/modules/b/dae-module.yaml +1 -0
  477. daedalus_flow-0.1.0/tests/fixtures/broken_labs/partial_group/modules/c/dae-module.yaml +1 -0
  478. daedalus_flow-0.1.0/tests/fixtures/broken_labs/partial_group/modules/join/dae-module.yaml +1 -0
  479. daedalus_flow-0.1.0/tests/fixtures/broken_labs/partial_group/modules/src/dae-module.yaml +1 -0
  480. daedalus_flow-0.1.0/tests/fixtures/broken_labs/two_emitters.yaml +11 -0
  481. daedalus_flow-0.1.0/tests/fixtures/broken_labs/unparseable.yaml +9 -0
  482. daedalus_flow-0.1.0/tests/fixtures/broken_labs/walk_collector_solo/lab.yaml +10 -0
  483. daedalus_flow-0.1.0/tests/fixtures/broken_labs/walk_collector_solo/modules/solo_agg/dae-module.yaml +1 -0
  484. daedalus_flow-0.1.0/tests/fixtures/broken_labs/walk_collector_solo/modules/src/dae-module.yaml +1 -0
  485. daedalus_flow-0.1.0/tests/fixtures/broken_labs/walks_reach_fc/input/seed.json +3 -0
  486. daedalus_flow-0.1.0/tests/fixtures/broken_labs/walks_reach_fc/lab.yaml +13 -0
  487. daedalus_flow-0.1.0/tests/fixtures/broken_labs/walks_reach_fc/modules/a/dae-module.yaml +1 -0
  488. daedalus_flow-0.1.0/tests/fixtures/broken_labs/walks_reach_fc/modules/b/dae-module.yaml +1 -0
  489. daedalus_flow-0.1.0/tests/fixtures/broken_labs/walks_reach_fc/modules/emit/dae-module.yaml +1 -0
  490. daedalus_flow-0.1.0/tests/fixtures/broken_labs/walks_reach_fc/modules/fcollect/dae-module.yaml +1 -0
  491. daedalus_flow-0.1.0/tests/fixtures/broken_labs/walks_reach_fc/modules/prep/dae-module.yaml +1 -0
  492. daedalus_flow-0.1.0/tests/fixtures/broken_modules/README.md +15 -0
  493. daedalus_flow-0.1.0/tests/fixtures/broken_modules/bad_role/dae-module.yaml +3 -0
  494. daedalus_flow-0.1.0/tests/fixtures/broken_modules/bad_role/main.py +12 -0
  495. daedalus_flow-0.1.0/tests/fixtures/broken_modules/bad_role/requirements.txt +1 -0
  496. daedalus_flow-0.1.0/tests/fixtures/broken_modules/missing_entry/dae-module.yaml +3 -0
  497. daedalus_flow-0.1.0/tests/fixtures/broken_modules/missing_entry/main.py +10 -0
  498. daedalus_flow-0.1.0/tests/fixtures/broken_modules/missing_entry/requirements.txt +1 -0
  499. daedalus_flow-0.1.0/tests/fixtures/broken_modules/name_mismatch/dae-module.yaml +3 -0
  500. daedalus_flow-0.1.0/tests/fixtures/broken_modules/name_mismatch/main.py +11 -0
  501. daedalus_flow-0.1.0/tests/fixtures/broken_modules/name_mismatch/requirements.txt +1 -0
  502. daedalus_flow-0.1.0/tests/fixtures/broken_modules/no_main/dae-module.yaml +3 -0
  503. daedalus_flow-0.1.0/tests/fixtures/broken_modules/raises_on_import/dae-module.yaml +2 -0
  504. daedalus_flow-0.1.0/tests/fixtures/broken_modules/raises_on_import/main.py +14 -0
  505. daedalus_flow-0.1.0/tests/fixtures/labs/asym_join/input/seed.json +3 -0
  506. daedalus_flow-0.1.0/tests/fixtures/labs/asym_join/lab.yaml +16 -0
  507. daedalus_flow-0.1.0/tests/fixtures/labs/asym_join/modules/join/dae-module.yaml +1 -0
  508. daedalus_flow-0.1.0/tests/fixtures/labs/asym_join/modules/join/main.py +13 -0
  509. daedalus_flow-0.1.0/tests/fixtures/labs/asym_join/modules/quick/dae-module.yaml +1 -0
  510. daedalus_flow-0.1.0/tests/fixtures/labs/asym_join/modules/quick/main.py +13 -0
  511. daedalus_flow-0.1.0/tests/fixtures/labs/asym_join/modules/slow_a/dae-module.yaml +1 -0
  512. daedalus_flow-0.1.0/tests/fixtures/labs/asym_join/modules/slow_a/main.py +13 -0
  513. daedalus_flow-0.1.0/tests/fixtures/labs/asym_join/modules/slow_b/dae-module.yaml +1 -0
  514. daedalus_flow-0.1.0/tests/fixtures/labs/asym_join/modules/slow_b/main.py +13 -0
  515. daedalus_flow-0.1.0/tests/fixtures/labs/asym_join/modules/slow_c/dae-module.yaml +1 -0
  516. daedalus_flow-0.1.0/tests/fixtures/labs/asym_join/modules/slow_c/main.py +13 -0
  517. daedalus_flow-0.1.0/tests/fixtures/labs/asym_join/modules/src/dae-module.yaml +1 -0
  518. daedalus_flow-0.1.0/tests/fixtures/labs/asym_join/modules/src/main.py +13 -0
  519. daedalus_flow-0.1.0/tests/fixtures/labs/brancher_mixed/lab.yaml +22 -0
  520. daedalus_flow-0.1.0/tests/fixtures/labs/brancher_mixed/modules/agg/dae-module.yaml +1 -0
  521. daedalus_flow-0.1.0/tests/fixtures/labs/brancher_mixed/modules/agg/main.py +9 -0
  522. daedalus_flow-0.1.0/tests/fixtures/labs/brancher_mixed/modules/agg2/dae-module.yaml +1 -0
  523. daedalus_flow-0.1.0/tests/fixtures/labs/brancher_mixed/modules/agg2/main.py +9 -0
  524. daedalus_flow-0.1.0/tests/fixtures/labs/brancher_mixed/modules/split/dae-module.yaml +1 -0
  525. daedalus_flow-0.1.0/tests/fixtures/labs/brancher_mixed/modules/split/main.py +9 -0
  526. daedalus_flow-0.1.0/tests/fixtures/labs/brancher_mixed/modules/split2/dae-module.yaml +1 -0
  527. daedalus_flow-0.1.0/tests/fixtures/labs/brancher_mixed/modules/split2/main.py +9 -0
  528. daedalus_flow-0.1.0/tests/fixtures/labs/brancher_mixed/modules/t1/dae-module.yaml +1 -0
  529. daedalus_flow-0.1.0/tests/fixtures/labs/brancher_mixed/modules/t1/main.py +9 -0
  530. daedalus_flow-0.1.0/tests/fixtures/labs/brancher_mixed/modules/t2/dae-module.yaml +1 -0
  531. daedalus_flow-0.1.0/tests/fixtures/labs/brancher_mixed/modules/t2/main.py +9 -0
  532. daedalus_flow-0.1.0/tests/fixtures/labs/brancher_mixed/modules/t3/dae-module.yaml +1 -0
  533. daedalus_flow-0.1.0/tests/fixtures/labs/brancher_mixed/modules/t3/main.py +9 -0
  534. daedalus_flow-0.1.0/tests/fixtures/labs/brancher_nested/lab.yaml +22 -0
  535. daedalus_flow-0.1.0/tests/fixtures/labs/brancher_nested/modules/l/dae-module.yaml +1 -0
  536. daedalus_flow-0.1.0/tests/fixtures/labs/brancher_nested/modules/l/main.py +9 -0
  537. daedalus_flow-0.1.0/tests/fixtures/labs/brancher_nested/modules/l1/dae-module.yaml +1 -0
  538. daedalus_flow-0.1.0/tests/fixtures/labs/brancher_nested/modules/l1/main.py +9 -0
  539. daedalus_flow-0.1.0/tests/fixtures/labs/brancher_nested/modules/l2/dae-module.yaml +1 -0
  540. daedalus_flow-0.1.0/tests/fixtures/labs/brancher_nested/modules/l2/main.py +9 -0
  541. daedalus_flow-0.1.0/tests/fixtures/labs/brancher_nested/modules/r/dae-module.yaml +1 -0
  542. daedalus_flow-0.1.0/tests/fixtures/labs/brancher_nested/modules/r/main.py +9 -0
  543. daedalus_flow-0.1.0/tests/fixtures/labs/brancher_nested/modules/r1/dae-module.yaml +1 -0
  544. daedalus_flow-0.1.0/tests/fixtures/labs/brancher_nested/modules/r1/main.py +9 -0
  545. daedalus_flow-0.1.0/tests/fixtures/labs/brancher_nested/modules/r2/dae-module.yaml +1 -0
  546. daedalus_flow-0.1.0/tests/fixtures/labs/brancher_nested/modules/r2/main.py +9 -0
  547. daedalus_flow-0.1.0/tests/fixtures/labs/brancher_nested/modules/root/dae-module.yaml +1 -0
  548. daedalus_flow-0.1.0/tests/fixtures/labs/brancher_nested/modules/root/main.py +9 -0
  549. daedalus_flow-0.1.0/tests/fixtures/labs/chain_plain/input/seed.json +3 -0
  550. daedalus_flow-0.1.0/tests/fixtures/labs/chain_plain/lab.yaml +10 -0
  551. daedalus_flow-0.1.0/tests/fixtures/labs/chain_plain/modules/step_a/dae-module.yaml +1 -0
  552. daedalus_flow-0.1.0/tests/fixtures/labs/chain_plain/modules/step_a/main.py +13 -0
  553. daedalus_flow-0.1.0/tests/fixtures/labs/chain_plain/modules/step_b/dae-module.yaml +1 -0
  554. daedalus_flow-0.1.0/tests/fixtures/labs/chain_plain/modules/step_b/main.py +13 -0
  555. daedalus_flow-0.1.0/tests/fixtures/labs/chain_plain/modules/step_c/dae-module.yaml +1 -0
  556. daedalus_flow-0.1.0/tests/fixtures/labs/chain_plain/modules/step_c/main.py +13 -0
  557. daedalus_flow-0.1.0/tests/fixtures/labs/complex/input/start.json +3 -0
  558. daedalus_flow-0.1.0/tests/fixtures/labs/complex/lab.yaml +64 -0
  559. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_A/dae-module.yaml +1 -0
  560. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_A/main.py +29 -0
  561. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_A/requirements.txt +1 -0
  562. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_AA/dae-module.yaml +1 -0
  563. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_AA/main.py +29 -0
  564. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_AA/requirements.txt +1 -0
  565. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_AB/dae-module.yaml +1 -0
  566. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_AB/main.py +29 -0
  567. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_AB/requirements.txt +1 -0
  568. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_AC/dae-module.yaml +1 -0
  569. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_AC/main.py +32 -0
  570. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_AC/requirements.txt +1 -0
  571. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_AD/dae-module.yaml +1 -0
  572. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_AD/main.py +29 -0
  573. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_AD/requirements.txt +1 -0
  574. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_B/dae-module.yaml +1 -0
  575. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_B/main.py +29 -0
  576. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_B/requirements.txt +1 -0
  577. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_C/dae-module.yaml +1 -0
  578. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_C/main.py +29 -0
  579. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_C/requirements.txt +1 -0
  580. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_D/dae-module.yaml +1 -0
  581. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_D/main.py +29 -0
  582. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_D/requirements.txt +1 -0
  583. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_E/dae-module.yaml +1 -0
  584. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_E/main.py +29 -0
  585. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_E/requirements.txt +1 -0
  586. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_F/dae-module.yaml +1 -0
  587. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_F/main.py +29 -0
  588. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_F/requirements.txt +1 -0
  589. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_G/dae-module.yaml +1 -0
  590. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_G/main.py +29 -0
  591. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_G/requirements.txt +1 -0
  592. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_H/dae-module.yaml +1 -0
  593. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_H/main.py +29 -0
  594. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_H/requirements.txt +1 -0
  595. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_I/dae-module.yaml +1 -0
  596. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_I/main.py +29 -0
  597. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_I/requirements.txt +1 -0
  598. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_J/dae-module.yaml +1 -0
  599. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_J/main.py +29 -0
  600. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_J/requirements.txt +1 -0
  601. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_K/dae-module.yaml +1 -0
  602. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_K/main.py +29 -0
  603. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_K/requirements.txt +1 -0
  604. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_L/dae-module.yaml +1 -0
  605. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_L/main.py +29 -0
  606. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_L/requirements.txt +1 -0
  607. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_M/dae-module.yaml +1 -0
  608. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_M/main.py +29 -0
  609. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_M/requirements.txt +1 -0
  610. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_N/dae-module.yaml +1 -0
  611. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_N/main.py +29 -0
  612. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_N/requirements.txt +1 -0
  613. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_O/dae-module.yaml +1 -0
  614. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_O/main.py +29 -0
  615. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_O/requirements.txt +1 -0
  616. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_P/dae-module.yaml +1 -0
  617. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_P/main.py +29 -0
  618. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_P/requirements.txt +1 -0
  619. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_Q/dae-module.yaml +1 -0
  620. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_Q/main.py +29 -0
  621. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_Q/requirements.txt +1 -0
  622. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_R/dae-module.yaml +1 -0
  623. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_R/main.py +32 -0
  624. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_R/requirements.txt +1 -0
  625. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_S/dae-module.yaml +1 -0
  626. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_S/main.py +29 -0
  627. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_S/requirements.txt +1 -0
  628. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_T/dae-module.yaml +1 -0
  629. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_T/main.py +29 -0
  630. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_T/requirements.txt +1 -0
  631. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_U/dae-module.yaml +1 -0
  632. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_U/main.py +29 -0
  633. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_U/requirements.txt +1 -0
  634. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_V/dae-module.yaml +1 -0
  635. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_V/main.py +29 -0
  636. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_V/requirements.txt +1 -0
  637. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_W/dae-module.yaml +1 -0
  638. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_W/main.py +32 -0
  639. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_W/requirements.txt +1 -0
  640. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_X/dae-module.yaml +1 -0
  641. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_X/main.py +29 -0
  642. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_X/requirements.txt +1 -0
  643. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_Y/dae-module.yaml +1 -0
  644. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_Y/main.py +29 -0
  645. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_Y/requirements.txt +1 -0
  646. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_Z/dae-module.yaml +1 -0
  647. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_Z/main.py +29 -0
  648. daedalus_flow-0.1.0/tests/fixtures/labs/complex/modules/module_Z/requirements.txt +1 -0
  649. daedalus_flow-0.1.0/tests/fixtures/labs/diamond_join/expected/joined.json +7 -0
  650. daedalus_flow-0.1.0/tests/fixtures/labs/diamond_join/input/start.json +3 -0
  651. daedalus_flow-0.1.0/tests/fixtures/labs/diamond_join/lab.yaml +20 -0
  652. daedalus_flow-0.1.0/tests/fixtures/labs/diamond_join/modules/join/dae-module.yaml +1 -0
  653. daedalus_flow-0.1.0/tests/fixtures/labs/diamond_join/modules/join/main.py +22 -0
  654. daedalus_flow-0.1.0/tests/fixtures/labs/diamond_join/modules/left/dae-module.yaml +1 -0
  655. daedalus_flow-0.1.0/tests/fixtures/labs/diamond_join/modules/left/main.py +15 -0
  656. daedalus_flow-0.1.0/tests/fixtures/labs/diamond_join/modules/right/dae-module.yaml +1 -0
  657. daedalus_flow-0.1.0/tests/fixtures/labs/diamond_join/modules/right/main.py +15 -0
  658. daedalus_flow-0.1.0/tests/fixtures/labs/diamond_join/modules/seed/dae-module.yaml +1 -0
  659. daedalus_flow-0.1.0/tests/fixtures/labs/diamond_join/modules/seed/main.py +15 -0
  660. daedalus_flow-0.1.0/tests/fixtures/labs/diamond_repeat/input/seed.json +3 -0
  661. daedalus_flow-0.1.0/tests/fixtures/labs/diamond_repeat/lab.yaml +11 -0
  662. daedalus_flow-0.1.0/tests/fixtures/labs/diamond_repeat/modules/d/dae-module.yaml +1 -0
  663. daedalus_flow-0.1.0/tests/fixtures/labs/diamond_repeat/modules/d/main.py +13 -0
  664. daedalus_flow-0.1.0/tests/fixtures/labs/diamond_repeat/modules/left/dae-module.yaml +1 -0
  665. daedalus_flow-0.1.0/tests/fixtures/labs/diamond_repeat/modules/left/main.py +13 -0
  666. daedalus_flow-0.1.0/tests/fixtures/labs/diamond_repeat/modules/right/dae-module.yaml +1 -0
  667. daedalus_flow-0.1.0/tests/fixtures/labs/diamond_repeat/modules/right/main.py +13 -0
  668. daedalus_flow-0.1.0/tests/fixtures/labs/diamond_repeat/modules/seed/dae-module.yaml +1 -0
  669. daedalus_flow-0.1.0/tests/fixtures/labs/diamond_repeat/modules/seed/main.py +13 -0
  670. daedalus_flow-0.1.0/tests/fixtures/labs/emitter_list_abc/input/items.json +1 -0
  671. daedalus_flow-0.1.0/tests/fixtures/labs/emitter_list_abc/lab.yaml +10 -0
  672. daedalus_flow-0.1.0/tests/fixtures/labs/emitter_list_abc/modules/emit/dae-module.yaml +1 -0
  673. daedalus_flow-0.1.0/tests/fixtures/labs/emitter_list_abc/modules/emit/main.py +13 -0
  674. daedalus_flow-0.1.0/tests/fixtures/labs/emitter_list_abc/modules/gather/dae-module.yaml +1 -0
  675. daedalus_flow-0.1.0/tests/fixtures/labs/emitter_list_abc/modules/gather/main.py +17 -0
  676. daedalus_flow-0.1.0/tests/fixtures/labs/emitter_list_abc/modules/work/dae-module.yaml +1 -0
  677. daedalus_flow-0.1.0/tests/fixtures/labs/emitter_list_abc/modules/work/main.py +16 -0
  678. daedalus_flow-0.1.0/tests/fixtures/labs/emitter_range0/input/items.json +1 -0
  679. daedalus_flow-0.1.0/tests/fixtures/labs/emitter_range0/lab.yaml +10 -0
  680. daedalus_flow-0.1.0/tests/fixtures/labs/emitter_range0/modules/emit/dae-module.yaml +1 -0
  681. daedalus_flow-0.1.0/tests/fixtures/labs/emitter_range0/modules/emit/main.py +13 -0
  682. daedalus_flow-0.1.0/tests/fixtures/labs/emitter_range0/modules/gather/dae-module.yaml +1 -0
  683. daedalus_flow-0.1.0/tests/fixtures/labs/emitter_range0/modules/gather/main.py +17 -0
  684. daedalus_flow-0.1.0/tests/fixtures/labs/emitter_range0/modules/work/dae-module.yaml +1 -0
  685. daedalus_flow-0.1.0/tests/fixtures/labs/emitter_range0/modules/work/main.py +16 -0
  686. daedalus_flow-0.1.0/tests/fixtures/labs/emitter_range1/input/items.json +1 -0
  687. daedalus_flow-0.1.0/tests/fixtures/labs/emitter_range1/lab.yaml +10 -0
  688. daedalus_flow-0.1.0/tests/fixtures/labs/emitter_range1/modules/emit/dae-module.yaml +1 -0
  689. daedalus_flow-0.1.0/tests/fixtures/labs/emitter_range1/modules/emit/main.py +13 -0
  690. daedalus_flow-0.1.0/tests/fixtures/labs/emitter_range1/modules/gather/dae-module.yaml +1 -0
  691. daedalus_flow-0.1.0/tests/fixtures/labs/emitter_range1/modules/gather/main.py +17 -0
  692. daedalus_flow-0.1.0/tests/fixtures/labs/emitter_range1/modules/work/dae-module.yaml +1 -0
  693. daedalus_flow-0.1.0/tests/fixtures/labs/emitter_range1/modules/work/main.py +16 -0
  694. daedalus_flow-0.1.0/tests/fixtures/labs/emitter_range5/input/items.json +1 -0
  695. daedalus_flow-0.1.0/tests/fixtures/labs/emitter_range5/lab.yaml +10 -0
  696. daedalus_flow-0.1.0/tests/fixtures/labs/emitter_range5/modules/emit/dae-module.yaml +1 -0
  697. daedalus_flow-0.1.0/tests/fixtures/labs/emitter_range5/modules/emit/main.py +13 -0
  698. daedalus_flow-0.1.0/tests/fixtures/labs/emitter_range5/modules/gather/dae-module.yaml +1 -0
  699. daedalus_flow-0.1.0/tests/fixtures/labs/emitter_range5/modules/gather/main.py +17 -0
  700. daedalus_flow-0.1.0/tests/fixtures/labs/emitter_range5/modules/work/dae-module.yaml +1 -0
  701. daedalus_flow-0.1.0/tests/fixtures/labs/emitter_range5/modules/work/main.py +16 -0
  702. daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/input/targets.csv +3 -0
  703. daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/lab.yaml +44 -0
  704. daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/analyze_posterior_distances/dae-module.yaml +2 -0
  705. daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/analyze_posterior_distances/expected/distances.json +119 -0
  706. daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/analyze_posterior_distances/main.py +76 -0
  707. daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/collect_results/dae-module.yaml +2 -0
  708. daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/collect_results/expected/summary.json +861 -0
  709. daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/collect_results/main.py +33 -0
  710. daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/compare_target_uncertainties/dae-module.yaml +2 -0
  711. daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/compare_target_uncertainties/expected/comparison.json +861 -0
  712. daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/compare_target_uncertainties/main.py +96 -0
  713. daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/denoise_lightcurve/dae-module.yaml +2 -0
  714. daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/denoise_lightcurve/expected/denoised.json +814 -0
  715. daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/denoise_lightcurve/main.py +46 -0
  716. daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/fetch_archive_data/dae-module.yaml +2 -0
  717. daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/fetch_archive_data/expected/folded.json +4014 -0
  718. daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/fetch_archive_data/main.py +71 -0
  719. daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/fit_transit_biased/dae-module.yaml +2 -0
  720. daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/fit_transit_biased/main.py +143 -0
  721. daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/fit_transit_gaussian/dae-module.yaml +2 -0
  722. daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/fit_transit_gaussian/main.py +109 -0
  723. daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/fit_transit_mcmc/dae-module.yaml +2 -0
  724. daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/fit_transit_mcmc/main.py +157 -0
  725. daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/fit_transit_nested/dae-module.yaml +2 -0
  726. daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/fit_transit_nested/main.py +138 -0
  727. daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/generate_targets/dae-module.yaml +2 -0
  728. daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/generate_targets/expected/targets.json +16 -0
  729. daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/generate_targets/main.py +25 -0
  730. daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/plot_joint_posteriors/dae-module.yaml +2 -0
  731. daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/plot_joint_posteriors/expected/corner_data.json +39 -0
  732. daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/plot_joint_posteriors/main.py +73 -0
  733. daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/plot_method_overlay/dae-module.yaml +2 -0
  734. daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/plot_method_overlay/expected/overlay_data.json +27 -0
  735. daedalus_flow-0.1.0/tests/fixtures/labs/exoplanet_validation/modules/plot_method_overlay/main.py +102 -0
  736. daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge/input/.gitkeep +0 -0
  737. daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge/lab.yaml +22 -0
  738. daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge/modules/coll_a/dae-module.yaml +1 -0
  739. daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge/modules/coll_a/main.py +12 -0
  740. daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge/modules/coll_b/dae-module.yaml +1 -0
  741. daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge/modules/coll_b/main.py +12 -0
  742. daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge/modules/coll_c/dae-module.yaml +1 -0
  743. daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge/modules/coll_c/main.py +12 -0
  744. daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge/modules/emit/dae-module.yaml +1 -0
  745. daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge/modules/emit/main.py +12 -0
  746. daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge/modules/fc/dae-module.yaml +1 -0
  747. daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge/modules/fc/main.py +19 -0
  748. daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge/modules/leaf_x/dae-module.yaml +1 -0
  749. daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge/modules/leaf_x/main.py +12 -0
  750. daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge/modules/leaf_y/dae-module.yaml +1 -0
  751. daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge/modules/leaf_y/main.py +12 -0
  752. daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge/modules/sink/dae-module.yaml +1 -0
  753. daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge/modules/sink/main.py +12 -0
  754. daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge/modules/split/dae-module.yaml +1 -0
  755. daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge/modules/split/main.py +12 -0
  756. daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge_m2/input/.gitkeep +0 -0
  757. daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge_m2/lab.yaml +22 -0
  758. daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge_m2/modules/coll_a/dae-module.yaml +1 -0
  759. daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge_m2/modules/coll_a/main.py +13 -0
  760. daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge_m2/modules/coll_b/dae-module.yaml +1 -0
  761. daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge_m2/modules/coll_b/main.py +13 -0
  762. daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge_m2/modules/coll_c/dae-module.yaml +1 -0
  763. daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge_m2/modules/coll_c/main.py +13 -0
  764. daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge_m2/modules/emit/dae-module.yaml +1 -0
  765. daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge_m2/modules/emit/main.py +13 -0
  766. daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge_m2/modules/fc/dae-module.yaml +1 -0
  767. daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge_m2/modules/fc/main.py +19 -0
  768. daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge_m2/modules/leaf_x/dae-module.yaml +1 -0
  769. daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge_m2/modules/leaf_x/main.py +12 -0
  770. daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge_m2/modules/leaf_y/dae-module.yaml +1 -0
  771. daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge_m2/modules/leaf_y/main.py +12 -0
  772. daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge_m2/modules/sink/dae-module.yaml +1 -0
  773. daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge_m2/modules/sink/main.py +12 -0
  774. daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge_m2/modules/split/dae-module.yaml +1 -0
  775. daedalus_flow-0.1.0/tests/fixtures/labs/flight_final_merge_m2/modules/split/main.py +12 -0
  776. daedalus_flow-0.1.0/tests/fixtures/labs/flight_one_fails/input/items.json +1 -0
  777. daedalus_flow-0.1.0/tests/fixtures/labs/flight_one_fails/lab.yaml +10 -0
  778. daedalus_flow-0.1.0/tests/fixtures/labs/flight_one_fails/modules/emit/dae-module.yaml +1 -0
  779. daedalus_flow-0.1.0/tests/fixtures/labs/flight_one_fails/modules/emit/main.py +13 -0
  780. daedalus_flow-0.1.0/tests/fixtures/labs/flight_one_fails/modules/gather/dae-module.yaml +1 -0
  781. daedalus_flow-0.1.0/tests/fixtures/labs/flight_one_fails/modules/gather/main.py +17 -0
  782. daedalus_flow-0.1.0/tests/fixtures/labs/flight_one_fails/modules/work/dae-module.yaml +1 -0
  783. daedalus_flow-0.1.0/tests/fixtures/labs/flight_one_fails/modules/work/main.py +21 -0
  784. daedalus_flow-0.1.0/tests/fixtures/labs/linear_smoke/input/seed.json +3 -0
  785. daedalus_flow-0.1.0/tests/fixtures/labs/linear_smoke/lab.yaml +27 -0
  786. daedalus_flow-0.1.0/tests/fixtures/labs/linear_smoke/modules/collect_report/dae-module.yaml +1 -0
  787. daedalus_flow-0.1.0/tests/fixtures/labs/linear_smoke/modules/collect_report/main.py +29 -0
  788. daedalus_flow-0.1.0/tests/fixtures/labs/linear_smoke/modules/debug_io/dae-module.yaml +1 -0
  789. daedalus_flow-0.1.0/tests/fixtures/labs/linear_smoke/modules/debug_io/main.py +19 -0
  790. daedalus_flow-0.1.0/tests/fixtures/labs/linear_smoke/modules/emit_ticks/dae-module.yaml +1 -0
  791. daedalus_flow-0.1.0/tests/fixtures/labs/linear_smoke/modules/emit_ticks/main.py +17 -0
  792. daedalus_flow-0.1.0/tests/fixtures/labs/linear_smoke/modules/sleep_briefly/dae-module.yaml +1 -0
  793. daedalus_flow-0.1.0/tests/fixtures/labs/linear_smoke/modules/sleep_briefly/main.py +14 -0
  794. daedalus_flow-0.1.0/tests/fixtures/labs/linear_smoke/modules/summarize_walk/dae-module.yaml +1 -0
  795. daedalus_flow-0.1.0/tests/fixtures/labs/linear_smoke/modules/summarize_walk/main.py +20 -0
  796. daedalus_flow-0.1.0/tests/fixtures/labs/mixed_collect/input/seed.json +3 -0
  797. daedalus_flow-0.1.0/tests/fixtures/labs/mixed_collect/lab.yaml +15 -0
  798. daedalus_flow-0.1.0/tests/fixtures/labs/mixed_collect/modules/deep/dae-module.yaml +1 -0
  799. daedalus_flow-0.1.0/tests/fixtures/labs/mixed_collect/modules/deep/main.py +13 -0
  800. daedalus_flow-0.1.0/tests/fixtures/labs/mixed_collect/modules/side/dae-module.yaml +1 -0
  801. daedalus_flow-0.1.0/tests/fixtures/labs/mixed_collect/modules/side/main.py +13 -0
  802. daedalus_flow-0.1.0/tests/fixtures/labs/mixed_collect/modules/src/dae-module.yaml +1 -0
  803. daedalus_flow-0.1.0/tests/fixtures/labs/mixed_collect/modules/src/main.py +13 -0
  804. daedalus_flow-0.1.0/tests/fixtures/labs/mixed_collect/modules/sub_a/dae-module.yaml +1 -0
  805. daedalus_flow-0.1.0/tests/fixtures/labs/mixed_collect/modules/sub_a/main.py +13 -0
  806. daedalus_flow-0.1.0/tests/fixtures/labs/mixed_collect/modules/sub_b/dae-module.yaml +1 -0
  807. daedalus_flow-0.1.0/tests/fixtures/labs/mixed_collect/modules/sub_b/main.py +13 -0
  808. daedalus_flow-0.1.0/tests/fixtures/labs/mixed_collect/modules/sub_join/dae-module.yaml +1 -0
  809. daedalus_flow-0.1.0/tests/fixtures/labs/mixed_collect/modules/sub_join/main.py +13 -0
  810. daedalus_flow-0.1.0/tests/fixtures/labs/nested_join/input/seed.json +3 -0
  811. daedalus_flow-0.1.0/tests/fixtures/labs/nested_join/lab.yaml +18 -0
  812. daedalus_flow-0.1.0/tests/fixtures/labs/nested_join/modules/mid/dae-module.yaml +1 -0
  813. daedalus_flow-0.1.0/tests/fixtures/labs/nested_join/modules/mid/main.py +13 -0
  814. daedalus_flow-0.1.0/tests/fixtures/labs/nested_join/modules/side/dae-module.yaml +1 -0
  815. daedalus_flow-0.1.0/tests/fixtures/labs/nested_join/modules/side/main.py +13 -0
  816. daedalus_flow-0.1.0/tests/fixtures/labs/nested_join/modules/src/dae-module.yaml +1 -0
  817. daedalus_flow-0.1.0/tests/fixtures/labs/nested_join/modules/src/main.py +13 -0
  818. daedalus_flow-0.1.0/tests/fixtures/labs/nested_join/modules/sub_a/dae-module.yaml +1 -0
  819. daedalus_flow-0.1.0/tests/fixtures/labs/nested_join/modules/sub_a/main.py +13 -0
  820. daedalus_flow-0.1.0/tests/fixtures/labs/nested_join/modules/sub_b/dae-module.yaml +1 -0
  821. daedalus_flow-0.1.0/tests/fixtures/labs/nested_join/modules/sub_b/main.py +13 -0
  822. daedalus_flow-0.1.0/tests/fixtures/labs/nested_join/modules/sub_join/dae-module.yaml +1 -0
  823. daedalus_flow-0.1.0/tests/fixtures/labs/nested_join/modules/sub_join/main.py +13 -0
  824. daedalus_flow-0.1.0/tests/fixtures/labs/nested_join/modules/top_join/dae-module.yaml +1 -0
  825. daedalus_flow-0.1.0/tests/fixtures/labs/nested_join/modules/top_join/main.py +13 -0
  826. daedalus_flow-0.1.0/tests/fixtures/labs/nix_diamond/input/start.json +3 -0
  827. daedalus_flow-0.1.0/tests/fixtures/labs/nix_diamond/lab.yaml +19 -0
  828. daedalus_flow-0.1.0/tests/fixtures/labs/nix_diamond/modules/art/dae-module.yaml +1 -0
  829. daedalus_flow-0.1.0/tests/fixtures/labs/nix_diamond/modules/art/main.py +26 -0
  830. daedalus_flow-0.1.0/tests/fixtures/labs/nix_diamond/modules/art/pyproject.toml +8 -0
  831. daedalus_flow-0.1.0/tests/fixtures/labs/nix_diamond/modules/art/requirements.txt +1 -0
  832. daedalus_flow-0.1.0/tests/fixtures/labs/nix_diamond/modules/art/uv.lock +23 -0
  833. daedalus_flow-0.1.0/tests/fixtures/labs/nix_diamond/modules/fig/dae-module.yaml +1 -0
  834. daedalus_flow-0.1.0/tests/fixtures/labs/nix_diamond/modules/fig/main.py +26 -0
  835. daedalus_flow-0.1.0/tests/fixtures/labs/nix_diamond/modules/fig/pyproject.toml +8 -0
  836. daedalus_flow-0.1.0/tests/fixtures/labs/nix_diamond/modules/fig/requirements.txt +1 -0
  837. daedalus_flow-0.1.0/tests/fixtures/labs/nix_diamond/modules/fig/uv.lock +23 -0
  838. daedalus_flow-0.1.0/tests/fixtures/labs/nix_diamond/modules/join/dae-module.yaml +1 -0
  839. daedalus_flow-0.1.0/tests/fixtures/labs/nix_diamond/modules/join/main.py +22 -0
  840. daedalus_flow-0.1.0/tests/fixtures/labs/nix_diamond/modules/join/pyproject.toml +8 -0
  841. daedalus_flow-0.1.0/tests/fixtures/labs/nix_diamond/modules/join/uv.lock +8 -0
  842. daedalus_flow-0.1.0/tests/fixtures/labs/nix_diamond/modules/seed/dae-module.yaml +1 -0
  843. daedalus_flow-0.1.0/tests/fixtures/labs/nix_diamond/modules/seed/main.py +11 -0
  844. daedalus_flow-0.1.0/tests/fixtures/labs/nix_diamond/modules/seed/pyproject.toml +10 -0
  845. daedalus_flow-0.1.0/tests/fixtures/labs/nix_diamond/modules/seed/uv.lock +8 -0
  846. daedalus_flow-0.1.0/tests/fixtures/labs/repeat_then_collect/input/seed.json +3 -0
  847. daedalus_flow-0.1.0/tests/fixtures/labs/repeat_then_collect/lab.yaml +14 -0
  848. daedalus_flow-0.1.0/tests/fixtures/labs/repeat_then_collect/modules/d/dae-module.yaml +1 -0
  849. daedalus_flow-0.1.0/tests/fixtures/labs/repeat_then_collect/modules/d/main.py +13 -0
  850. daedalus_flow-0.1.0/tests/fixtures/labs/repeat_then_collect/modules/join/dae-module.yaml +1 -0
  851. daedalus_flow-0.1.0/tests/fixtures/labs/repeat_then_collect/modules/join/main.py +13 -0
  852. daedalus_flow-0.1.0/tests/fixtures/labs/repeat_then_collect/modules/left/dae-module.yaml +1 -0
  853. daedalus_flow-0.1.0/tests/fixtures/labs/repeat_then_collect/modules/left/main.py +13 -0
  854. daedalus_flow-0.1.0/tests/fixtures/labs/repeat_then_collect/modules/right/dae-module.yaml +1 -0
  855. daedalus_flow-0.1.0/tests/fixtures/labs/repeat_then_collect/modules/right/main.py +13 -0
  856. daedalus_flow-0.1.0/tests/fixtures/labs/repeat_then_collect/modules/seed/dae-module.yaml +1 -0
  857. daedalus_flow-0.1.0/tests/fixtures/labs/repeat_then_collect/modules/seed/main.py +13 -0
  858. daedalus_flow-0.1.0/tests/fixtures/labs/science_nix/input/start.json +3 -0
  859. daedalus_flow-0.1.0/tests/fixtures/labs/science_nix/lab.yaml +9 -0
  860. daedalus_flow-0.1.0/tests/fixtures/labs/science_nix/modules/solve/dae-module.yaml +1 -0
  861. daedalus_flow-0.1.0/tests/fixtures/labs/science_nix/modules/solve/main.py +30 -0
  862. daedalus_flow-0.1.0/tests/fixtures/labs/science_nix/modules/solve/pyproject.toml +13 -0
  863. daedalus_flow-0.1.0/tests/fixtures/labs/science_nix/modules/solve/requirements.txt +2 -0
  864. daedalus_flow-0.1.0/tests/fixtures/labs/science_nix/modules/solve/uv.lock +140 -0
  865. daedalus_flow-0.1.0/tests/fixtures/labs/series_diamonds/input/seed.json +3 -0
  866. daedalus_flow-0.1.0/tests/fixtures/labs/series_diamonds/lab.yaml +20 -0
  867. daedalus_flow-0.1.0/tests/fixtures/labs/series_diamonds/modules/a1/dae-module.yaml +1 -0
  868. daedalus_flow-0.1.0/tests/fixtures/labs/series_diamonds/modules/a1/main.py +13 -0
  869. daedalus_flow-0.1.0/tests/fixtures/labs/series_diamonds/modules/a2/dae-module.yaml +1 -0
  870. daedalus_flow-0.1.0/tests/fixtures/labs/series_diamonds/modules/a2/main.py +13 -0
  871. daedalus_flow-0.1.0/tests/fixtures/labs/series_diamonds/modules/b1/dae-module.yaml +1 -0
  872. daedalus_flow-0.1.0/tests/fixtures/labs/series_diamonds/modules/b1/main.py +13 -0
  873. daedalus_flow-0.1.0/tests/fixtures/labs/series_diamonds/modules/b2/dae-module.yaml +1 -0
  874. daedalus_flow-0.1.0/tests/fixtures/labs/series_diamonds/modules/b2/main.py +13 -0
  875. daedalus_flow-0.1.0/tests/fixtures/labs/series_diamonds/modules/join1/dae-module.yaml +1 -0
  876. daedalus_flow-0.1.0/tests/fixtures/labs/series_diamonds/modules/join1/main.py +13 -0
  877. daedalus_flow-0.1.0/tests/fixtures/labs/series_diamonds/modules/join2/dae-module.yaml +1 -0
  878. daedalus_flow-0.1.0/tests/fixtures/labs/series_diamonds/modules/join2/main.py +13 -0
  879. daedalus_flow-0.1.0/tests/fixtures/labs/series_diamonds/modules/mid/dae-module.yaml +1 -0
  880. daedalus_flow-0.1.0/tests/fixtures/labs/series_diamonds/modules/mid/main.py +13 -0
  881. daedalus_flow-0.1.0/tests/fixtures/labs/series_diamonds/modules/src/dae-module.yaml +1 -0
  882. daedalus_flow-0.1.0/tests/fixtures/labs/series_diamonds/modules/src/main.py +13 -0
  883. daedalus_flow-0.1.0/tests/fixtures/labs/sibling_collectors/input/seed.json +3 -0
  884. daedalus_flow-0.1.0/tests/fixtures/labs/sibling_collectors/lab.yaml +28 -0
  885. daedalus_flow-0.1.0/tests/fixtures/labs/sibling_collectors/modules/coll_a/dae-module.yaml +1 -0
  886. daedalus_flow-0.1.0/tests/fixtures/labs/sibling_collectors/modules/coll_a/main.py +13 -0
  887. daedalus_flow-0.1.0/tests/fixtures/labs/sibling_collectors/modules/coll_b/dae-module.yaml +1 -0
  888. daedalus_flow-0.1.0/tests/fixtures/labs/sibling_collectors/modules/coll_b/main.py +13 -0
  889. daedalus_flow-0.1.0/tests/fixtures/labs/sibling_collectors/modules/coll_c/dae-module.yaml +1 -0
  890. daedalus_flow-0.1.0/tests/fixtures/labs/sibling_collectors/modules/coll_c/main.py +13 -0
  891. daedalus_flow-0.1.0/tests/fixtures/labs/sibling_collectors/modules/emit/dae-module.yaml +1 -0
  892. daedalus_flow-0.1.0/tests/fixtures/labs/sibling_collectors/modules/emit/main.py +13 -0
  893. daedalus_flow-0.1.0/tests/fixtures/labs/sibling_collectors/modules/fcollect/dae-module.yaml +1 -0
  894. daedalus_flow-0.1.0/tests/fixtures/labs/sibling_collectors/modules/fcollect/main.py +13 -0
  895. daedalus_flow-0.1.0/tests/fixtures/labs/sibling_collectors/modules/fit_a/dae-module.yaml +1 -0
  896. daedalus_flow-0.1.0/tests/fixtures/labs/sibling_collectors/modules/fit_a/main.py +13 -0
  897. daedalus_flow-0.1.0/tests/fixtures/labs/sibling_collectors/modules/fit_b/dae-module.yaml +1 -0
  898. daedalus_flow-0.1.0/tests/fixtures/labs/sibling_collectors/modules/fit_b/main.py +13 -0
  899. daedalus_flow-0.1.0/tests/fixtures/labs/sibling_collectors/modules/fit_c/dae-module.yaml +1 -0
  900. daedalus_flow-0.1.0/tests/fixtures/labs/sibling_collectors/modules/fit_c/main.py +13 -0
  901. daedalus_flow-0.1.0/tests/fixtures/labs/sibling_collectors/modules/fit_d/dae-module.yaml +1 -0
  902. daedalus_flow-0.1.0/tests/fixtures/labs/sibling_collectors/modules/fit_d/main.py +13 -0
  903. daedalus_flow-0.1.0/tests/fixtures/labs/sibling_collectors/modules/prep/dae-module.yaml +1 -0
  904. daedalus_flow-0.1.0/tests/fixtures/labs/sibling_collectors/modules/prep/main.py +13 -0
  905. daedalus_flow-0.1.0/tests/fixtures/labs/sibling_collectors/modules/sink/dae-module.yaml +1 -0
  906. daedalus_flow-0.1.0/tests/fixtures/labs/sibling_collectors/modules/sink/main.py +13 -0
  907. daedalus_flow-0.1.0/tests/fixtures/labs/sibling_collectors/modules/split/dae-module.yaml +1 -0
  908. daedalus_flow-0.1.0/tests/fixtures/labs/sibling_collectors/modules/split/main.py +13 -0
  909. daedalus_flow-0.1.0/tests/fixtures/labs/wide4_join/input/seed.json +3 -0
  910. daedalus_flow-0.1.0/tests/fixtures/labs/wide4_join/lab.yaml +16 -0
  911. daedalus_flow-0.1.0/tests/fixtures/labs/wide4_join/modules/b_a/dae-module.yaml +1 -0
  912. daedalus_flow-0.1.0/tests/fixtures/labs/wide4_join/modules/b_a/main.py +13 -0
  913. daedalus_flow-0.1.0/tests/fixtures/labs/wide4_join/modules/b_b/dae-module.yaml +1 -0
  914. daedalus_flow-0.1.0/tests/fixtures/labs/wide4_join/modules/b_b/main.py +13 -0
  915. daedalus_flow-0.1.0/tests/fixtures/labs/wide4_join/modules/b_c/dae-module.yaml +1 -0
  916. daedalus_flow-0.1.0/tests/fixtures/labs/wide4_join/modules/b_c/main.py +13 -0
  917. daedalus_flow-0.1.0/tests/fixtures/labs/wide4_join/modules/b_d/dae-module.yaml +1 -0
  918. daedalus_flow-0.1.0/tests/fixtures/labs/wide4_join/modules/b_d/main.py +13 -0
  919. daedalus_flow-0.1.0/tests/fixtures/labs/wide4_join/modules/join/dae-module.yaml +1 -0
  920. daedalus_flow-0.1.0/tests/fixtures/labs/wide4_join/modules/join/main.py +13 -0
  921. daedalus_flow-0.1.0/tests/fixtures/labs/wide4_join/modules/src/dae-module.yaml +1 -0
  922. daedalus_flow-0.1.0/tests/fixtures/labs/wide4_join/modules/src/main.py +13 -0
  923. daedalus_flow-0.1.0/tests/fixtures/labs/wide4_repeat/input/seed.json +3 -0
  924. daedalus_flow-0.1.0/tests/fixtures/labs/wide4_repeat/lab.yaml +15 -0
  925. daedalus_flow-0.1.0/tests/fixtures/labs/wide4_repeat/modules/b_a/dae-module.yaml +1 -0
  926. daedalus_flow-0.1.0/tests/fixtures/labs/wide4_repeat/modules/b_a/main.py +13 -0
  927. daedalus_flow-0.1.0/tests/fixtures/labs/wide4_repeat/modules/b_b/dae-module.yaml +1 -0
  928. daedalus_flow-0.1.0/tests/fixtures/labs/wide4_repeat/modules/b_b/main.py +13 -0
  929. daedalus_flow-0.1.0/tests/fixtures/labs/wide4_repeat/modules/b_c/dae-module.yaml +1 -0
  930. daedalus_flow-0.1.0/tests/fixtures/labs/wide4_repeat/modules/b_c/main.py +13 -0
  931. daedalus_flow-0.1.0/tests/fixtures/labs/wide4_repeat/modules/b_d/dae-module.yaml +1 -0
  932. daedalus_flow-0.1.0/tests/fixtures/labs/wide4_repeat/modules/b_d/main.py +13 -0
  933. daedalus_flow-0.1.0/tests/fixtures/labs/wide4_repeat/modules/sink/dae-module.yaml +1 -0
  934. daedalus_flow-0.1.0/tests/fixtures/labs/wide4_repeat/modules/sink/main.py +13 -0
  935. daedalus_flow-0.1.0/tests/fixtures/labs/wide4_repeat/modules/src/dae-module.yaml +1 -0
  936. daedalus_flow-0.1.0/tests/fixtures/labs/wide4_repeat/modules/src/main.py +13 -0
  937. daedalus_flow-0.1.0/tests/fixtures/labs/wide5_join/input/seed.json +3 -0
  938. daedalus_flow-0.1.0/tests/fixtures/labs/wide5_join/lab.yaml +18 -0
  939. daedalus_flow-0.1.0/tests/fixtures/labs/wide5_join/modules/b_a/dae-module.yaml +1 -0
  940. daedalus_flow-0.1.0/tests/fixtures/labs/wide5_join/modules/b_a/main.py +13 -0
  941. daedalus_flow-0.1.0/tests/fixtures/labs/wide5_join/modules/b_b/dae-module.yaml +1 -0
  942. daedalus_flow-0.1.0/tests/fixtures/labs/wide5_join/modules/b_b/main.py +13 -0
  943. daedalus_flow-0.1.0/tests/fixtures/labs/wide5_join/modules/b_c/dae-module.yaml +1 -0
  944. daedalus_flow-0.1.0/tests/fixtures/labs/wide5_join/modules/b_c/main.py +13 -0
  945. daedalus_flow-0.1.0/tests/fixtures/labs/wide5_join/modules/b_d/dae-module.yaml +1 -0
  946. daedalus_flow-0.1.0/tests/fixtures/labs/wide5_join/modules/b_d/main.py +13 -0
  947. daedalus_flow-0.1.0/tests/fixtures/labs/wide5_join/modules/b_e/dae-module.yaml +1 -0
  948. daedalus_flow-0.1.0/tests/fixtures/labs/wide5_join/modules/b_e/main.py +13 -0
  949. daedalus_flow-0.1.0/tests/fixtures/labs/wide5_join/modules/join/dae-module.yaml +1 -0
  950. daedalus_flow-0.1.0/tests/fixtures/labs/wide5_join/modules/join/main.py +13 -0
  951. daedalus_flow-0.1.0/tests/fixtures/labs/wide5_join/modules/src/dae-module.yaml +1 -0
  952. daedalus_flow-0.1.0/tests/fixtures/labs/wide5_join/modules/src/main.py +13 -0
  953. daedalus_flow-0.1.0/tests/fixtures/labs/wide5_repeat/input/seed.json +3 -0
  954. daedalus_flow-0.1.0/tests/fixtures/labs/wide5_repeat/lab.yaml +17 -0
  955. daedalus_flow-0.1.0/tests/fixtures/labs/wide5_repeat/modules/b_a/dae-module.yaml +1 -0
  956. daedalus_flow-0.1.0/tests/fixtures/labs/wide5_repeat/modules/b_a/main.py +13 -0
  957. daedalus_flow-0.1.0/tests/fixtures/labs/wide5_repeat/modules/b_b/dae-module.yaml +1 -0
  958. daedalus_flow-0.1.0/tests/fixtures/labs/wide5_repeat/modules/b_b/main.py +13 -0
  959. daedalus_flow-0.1.0/tests/fixtures/labs/wide5_repeat/modules/b_c/dae-module.yaml +1 -0
  960. daedalus_flow-0.1.0/tests/fixtures/labs/wide5_repeat/modules/b_c/main.py +13 -0
  961. daedalus_flow-0.1.0/tests/fixtures/labs/wide5_repeat/modules/b_d/dae-module.yaml +1 -0
  962. daedalus_flow-0.1.0/tests/fixtures/labs/wide5_repeat/modules/b_d/main.py +13 -0
  963. daedalus_flow-0.1.0/tests/fixtures/labs/wide5_repeat/modules/b_e/dae-module.yaml +1 -0
  964. daedalus_flow-0.1.0/tests/fixtures/labs/wide5_repeat/modules/b_e/main.py +13 -0
  965. daedalus_flow-0.1.0/tests/fixtures/labs/wide5_repeat/modules/sink/dae-module.yaml +1 -0
  966. daedalus_flow-0.1.0/tests/fixtures/labs/wide5_repeat/modules/sink/main.py +13 -0
  967. daedalus_flow-0.1.0/tests/fixtures/labs/wide5_repeat/modules/src/dae-module.yaml +1 -0
  968. daedalus_flow-0.1.0/tests/fixtures/labs/wide5_repeat/modules/src/main.py +13 -0
  969. daedalus_flow-0.1.0/tests/fixtures/modules/emit_pair/dae-module.yaml +2 -0
  970. daedalus_flow-0.1.0/tests/fixtures/modules/emit_pair/expected/roster.json +10 -0
  971. daedalus_flow-0.1.0/tests/fixtures/modules/emit_pair/input/seed.csv +3 -0
  972. daedalus_flow-0.1.0/tests/fixtures/modules/emit_pair/main.py +17 -0
  973. daedalus_flow-0.1.0/tests/fixtures/modules/emit_pair/requirements.txt +1 -0
  974. daedalus_flow-0.1.0/tests/fixtures/modules/merge_walks/dae-module.yaml +1 -0
  975. daedalus_flow-0.1.0/tests/fixtures/modules/merge_walks/expected/merged.json +7 -0
  976. daedalus_flow-0.1.0/tests/fixtures/modules/merge_walks/main.py +26 -0
  977. daedalus_flow-0.1.0/tests/fixtures/modules/merge_walks/requirements.txt +1 -0
  978. daedalus_flow-0.1.0/tests/fixtures/modules/merge_walks/walk_inputs/walk_1/part.json +4 -0
  979. daedalus_flow-0.1.0/tests/fixtures/modules/merge_walks/walk_inputs/walk_2/part.json +4 -0
  980. daedalus_flow-0.1.0/tests/fixtures/modules/reduce_flights/dae-module.yaml +1 -0
  981. daedalus_flow-0.1.0/tests/fixtures/modules/reduce_flights/expected/reduced.json +8 -0
  982. daedalus_flow-0.1.0/tests/fixtures/modules/reduce_flights/flight_inputs/flight_1/part.json +4 -0
  983. daedalus_flow-0.1.0/tests/fixtures/modules/reduce_flights/flight_inputs/flight_2/part.json +4 -0
  984. daedalus_flow-0.1.0/tests/fixtures/modules/reduce_flights/main.py +31 -0
  985. daedalus_flow-0.1.0/tests/fixtures/modules/reduce_flights/requirements.txt +1 -0
  986. daedalus_flow-0.1.0/tests/fixtures/modules/scale_series/dae-module.yaml +2 -0
  987. daedalus_flow-0.1.0/tests/fixtures/modules/scale_series/expected/scaled.json +8 -0
  988. daedalus_flow-0.1.0/tests/fixtures/modules/scale_series/input/series.json +3 -0
  989. daedalus_flow-0.1.0/tests/fixtures/modules/scale_series/main.py +21 -0
  990. daedalus_flow-0.1.0/tests/fixtures/modules/scale_series/requirements.txt +1 -0
  991. daedalus_flow-0.1.0/tests/flow/__init__.py +0 -0
  992. daedalus_flow-0.1.0/tests/flow/test_ensemble_emit_csv.py +61 -0
  993. daedalus_flow-0.1.0/tests/flow/test_exoplanet_deterministic.py +384 -0
  994. daedalus_flow-0.1.0/tests/flow/test_gallery_modules.py +222 -0
  995. daedalus_flow-0.1.0/tests/flow/test_role_fixtures.py +107 -0
  996. daedalus_flow-0.1.0/tests/flow/test_stochastic_fits.py +188 -0
  997. daedalus_flow-0.1.0/tests/journey/__init__.py +0 -0
  998. daedalus_flow-0.1.0/tests/journey/_journey.py +116 -0
  999. daedalus_flow-0.1.0/tests/journey/test_dae_helper.py +60 -0
  1000. daedalus_flow-0.1.0/tests/journey/test_journey_collectors.py +117 -0
  1001. daedalus_flow-0.1.0/tests/journey/test_journey_complex.py +152 -0
  1002. daedalus_flow-0.1.0/tests/journey/test_journey_diamond.py +254 -0
  1003. daedalus_flow-0.1.0/tests/journey/test_journey_examples.py +256 -0
  1004. daedalus_flow-0.1.0/tests/journey/test_journey_fanout.py +62 -0
  1005. daedalus_flow-0.1.0/tests/test_installed_wheel_isolation.py +141 -0
  1006. daedalus_flow-0.1.0/tests/test_packaged_examples_clean.py +73 -0
  1007. 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,5 @@
1
+ blank_issues_enabled: true
2
+ contact_links:
3
+ - name: Documentation
4
+ url: https://daedalus-flow.readthedocs.io
5
+ about: Guides and reference.
@@ -0,0 +1,4 @@
1
+ <!-- What changed and why. Link the issue if there is one. -->
2
+
3
+ - [ ] `just gate` passes locally
4
+ - [ ] Tools that generated code, and what for, or none:
@@ -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