vivarium-workbench 0.3.88__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 (1201) hide show
  1. vivarium_workbench-0.3.88/.dockerignore +35 -0
  2. vivarium_workbench-0.3.88/.github/workflows/build-and-push.yml +133 -0
  3. vivarium_workbench-0.3.88/.github/workflows/js.yml +30 -0
  4. vivarium_workbench-0.3.88/.github/workflows/pytest.yml +102 -0
  5. vivarium_workbench-0.3.88/.github/workflows/release.yml +29 -0
  6. vivarium_workbench-0.3.88/.github/workflows/types.yml +43 -0
  7. vivarium_workbench-0.3.88/.gitignore +36 -0
  8. vivarium_workbench-0.3.88/.python-version +1 -0
  9. vivarium_workbench-0.3.88/.test_durations +3268 -0
  10. vivarium_workbench-0.3.88/AGENTS.md +68 -0
  11. vivarium_workbench-0.3.88/CLAUDE.md +166 -0
  12. vivarium_workbench-0.3.88/CONTRIBUTING.md +60 -0
  13. vivarium_workbench-0.3.88/Dockerfile +196 -0
  14. vivarium_workbench-0.3.88/LICENSE +202 -0
  15. vivarium_workbench-0.3.88/PKG-INFO +49 -0
  16. vivarium_workbench-0.3.88/README.md +197 -0
  17. vivarium_workbench-0.3.88/db +0 -0
  18. vivarium_workbench-0.3.88/deploy/README.md +84 -0
  19. vivarium_workbench-0.3.88/deploy/batch-build-and-push.sh +120 -0
  20. vivarium_workbench-0.3.88/deploy/build-and-push.sh +106 -0
  21. vivarium_workbench-0.3.88/deploy/bump-and-release.sh +123 -0
  22. vivarium_workbench-0.3.88/docs/ARCHITECTURE-DEEP-DIVE.md +296 -0
  23. vivarium_workbench-0.3.88/docs/ARCHITECTURE.md +469 -0
  24. vivarium_workbench-0.3.88/docs/REFACTOR-PLAN.md +1656 -0
  25. vivarium_workbench-0.3.88/docs/USAGE.md +160 -0
  26. vivarium_workbench-0.3.88/docs/ai-onboarding.md +143 -0
  27. vivarium_workbench-0.3.88/docs/analyses-tab.md +97 -0
  28. vivarium_workbench-0.3.88/docs/dashboard-api-vs-viva-api.md +80 -0
  29. vivarium_workbench-0.3.88/docs/data-explorer.md +85 -0
  30. vivarium_workbench-0.3.88/docs/dual-engine-comparison.md +481 -0
  31. vivarium_workbench-0.3.88/docs/env-worker-protocol.md +514 -0
  32. vivarium_workbench-0.3.88/docs/env-worker-routing.md +236 -0
  33. vivarium_workbench-0.3.88/docs/env-worker-runtime.md +189 -0
  34. vivarium_workbench-0.3.88/docs/investigation-narrative-schema.md +142 -0
  35. vivarium_workbench-0.3.88/docs/materialization-lifecycle.md +384 -0
  36. vivarium_workbench-0.3.88/docs/post-run-analyses.md +90 -0
  37. vivarium_workbench-0.3.88/docs/ptools-launcher.md +101 -0
  38. vivarium_workbench-0.3.88/docs/q1-q2.md +462 -0
  39. vivarium_workbench-0.3.88/docs/remote-dispatch-composite-resolution.md +232 -0
  40. vivarium_workbench-0.3.88/docs/remote-govcloud-onboarding.md +91 -0
  41. vivarium_workbench-0.3.88/docs/round-trip-pipeline.md +57 -0
  42. vivarium_workbench-0.3.88/docs/run-backend.md +208 -0
  43. vivarium_workbench-0.3.88/docs/run-orchestration-consolidation.md +1243 -0
  44. vivarium_workbench-0.3.88/docs/session-binding.md +224 -0
  45. vivarium_workbench-0.3.88/docs/session-registry.md +231 -0
  46. vivarium_workbench-0.3.88/docs/sms-ecoli-contribution-and-verification-discipline.md +138 -0
  47. vivarium_workbench-0.3.88/docs/studies-and-investigations.md +206 -0
  48. vivarium_workbench-0.3.88/docs/superpowers/plans/2026-09-22-env-worker-module-provisioning.md +107 -0
  49. vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-10-read-only-online-dashboard-design.md +110 -0
  50. vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-11-spine-presentation-design.md +55 -0
  51. vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-18-dashboard-remote-runs-design.md +261 -0
  52. vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-20-analyses-data-explorer-design.md +182 -0
  53. vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-20-data-explorer-v2-design.md +151 -0
  54. vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-23-commit-agnostic-remote-builds-design.md +174 -0
  55. vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-23-commit-agnostic-workspace-switch-design.md +197 -0
  56. vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-23-source-branch-panel-design.md +167 -0
  57. vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-24-fastapi-server-cutover-design.md +135 -0
  58. vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-26-fastapi-state-app-state-design.md +131 -0
  59. vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-26-remote-run-thin-client-design.md +141 -0
  60. vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-26-study-run-engine-extraction-design.md +154 -0
  61. vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-27-vivarium-server-three-plane-architecture-design.md +396 -0
  62. vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-28-auto-readouts-tab-debloat-design.md +190 -0
  63. vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-28-consolidate-study-derivations-design.md +101 -0
  64. vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-28-investigation-graph-readability-design.md +117 -0
  65. vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-28-phase-a-event-bus-design.md +139 -0
  66. vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-28-phase-b1-evidence-chain-design.md +154 -0
  67. vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-28-phase-b2-chain-derivation-design.md +132 -0
  68. vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-28-phase-b4-aig-graph-design.md +111 -0
  69. vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-28-remote-sourced-dashboard-design.md +175 -0
  70. vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-28-study-overview-declutter-design.md +85 -0
  71. vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-28-study-tab-consolidation-design.md +90 -0
  72. vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-28-unified-run-core-design.md +174 -0
  73. vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-28-unified-run-ui-sp-c-design.md +126 -0
  74. vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-29-compose-unification-design.md +97 -0
  75. vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-29-conclusions-declutter-design.md +77 -0
  76. vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-29-investigation-landing-list-design.md +64 -0
  77. vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-29-investigation-page-declutter-design.md +83 -0
  78. vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-29-run-workspace-on-sms-api-design.md +170 -0
  79. vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-29-sp-d-deployment-composite-resolve-design.md +123 -0
  80. vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-30-bigraph-loom-revamp-reintegration-design.md +113 -0
  81. vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-30-run-cli-design.md +164 -0
  82. vivarium_workbench-0.3.88/docs/superpowers/specs/2026-07-01-readonly-explorer-and-studies-sidebar-design.md +205 -0
  83. vivarium_workbench-0.3.88/docs/superpowers/specs/2026-07-21-investigation-graph-semantic-zoom-design.md +63 -0
  84. vivarium_workbench-0.3.88/docs/superpowers/specs/2026-07-21-workbench-loom-emitter-simsdb-design.md +153 -0
  85. vivarium_workbench-0.3.88/docs/superpowers/specs/2026-07-23-loom-process-column-view-design.md +364 -0
  86. vivarium_workbench-0.3.88/docs/superpowers/specs/2026-07-25-capability-matched-analysis-tools-design.md +215 -0
  87. vivarium_workbench-0.3.88/docs/superpowers/specs/2026-07-25-investigation-workspace-study-tabs-design.md +223 -0
  88. vivarium_workbench-0.3.88/docs/superpowers/specs/2026-07-25-marketplace-federated-content-design.md +227 -0
  89. vivarium_workbench-0.3.88/docs/superpowers/specs/2026-07-25-rerun-capability-design.md +128 -0
  90. vivarium_workbench-0.3.88/docs/superpowers/specs/2026-07-25-study-pipeline-spec1-execution.md +149 -0
  91. vivarium_workbench-0.3.88/docs/superpowers/specs/2026-07-26-module-cards-content-counts.md +103 -0
  92. vivarium_workbench-0.3.88/docs/superpowers/specs/2026-07-26-workflow-engine-phase2-2a2b-design.md +86 -0
  93. vivarium_workbench-0.3.88/docs/superpowers/specs/2026-07-27-reproducible-rerun-spine-design.md +121 -0
  94. vivarium_workbench-0.3.88/docs/superpowers/specs/2026-07-29-framework-unification-design.md +323 -0
  95. vivarium_workbench-0.3.88/docs/superpowers/specs/2026-07-31-study-page-declutter-design.md +258 -0
  96. vivarium_workbench-0.3.88/docs/superpowers/specs/2026-08-01-investigation-as-composite-design.md +217 -0
  97. vivarium_workbench-0.3.88/docs/superpowers/specs/2026-08-01-study-design-fable-pass.md +1276 -0
  98. vivarium_workbench-0.3.88/docs/superpowers/specs/2026-08-02-store-dataflow-refactor-design.md +116 -0
  99. vivarium_workbench-0.3.88/docs/superpowers/specs/2026-08-10-investigation-figures-design.md +189 -0
  100. vivarium_workbench-0.3.88/docs/superpowers/specs/2026-09-06-composite-run-auto-results-design.md +213 -0
  101. vivarium_workbench-0.3.88/docs/superpowers/specs/2026-09-22-env-worker-module-provisioning-design.md +62 -0
  102. vivarium_workbench-0.3.88/docs/ui-api-consumption-survey.md +276 -0
  103. vivarium_workbench-0.3.88/docs/workbench-api-survey.md +210 -0
  104. vivarium_workbench-0.3.88/docs/workspace-picker-pinned-commit-mechanics.md +202 -0
  105. vivarium_workbench-0.3.88/docs/workspace-store.md +203 -0
  106. vivarium_workbench-0.3.88/hatch_build.py +156 -0
  107. vivarium_workbench-0.3.88/pyproject.toml +414 -0
  108. vivarium_workbench-0.3.88/scripts/build_explorer_assets.py +121 -0
  109. vivarium_workbench-0.3.88/scripts/build_explorer_bio_assets.py +230 -0
  110. vivarium_workbench-0.3.88/scripts/build_loom.sh +22 -0
  111. vivarium_workbench-0.3.88/scripts/build_monomer_meta.py +87 -0
  112. vivarium_workbench-0.3.88/scripts/pytest_gate.sh +132 -0
  113. vivarium_workbench-0.3.88/scripts/run_js_tests.sh +45 -0
  114. vivarium_workbench-0.3.88/scripts/set-govcloud-env.sh +16 -0
  115. vivarium_workbench-0.3.88/tests/_fixtures/ws_emitter_demo/pbg_ws_emitter_demo/__init__.py +6 -0
  116. vivarium_workbench-0.3.88/tests/_fixtures/ws_emitter_demo/pbg_ws_emitter_demo/composites/__init__.py +50 -0
  117. vivarium_workbench-0.3.88/tests/_fixtures/ws_emitter_demo/pbg_ws_emitter_demo/core.py +14 -0
  118. vivarium_workbench-0.3.88/tests/_fixtures/ws_emitter_demo/pbg_ws_emitter_demo/emitter.py +52 -0
  119. vivarium_workbench-0.3.88/tests/_fixtures/ws_emitter_demo/workspace.yaml +16 -0
  120. vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_collision/external/donor/investigations/donor_inv/investigation.yaml +3 -0
  121. vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_collision/external/donor/studies/shared/study.yaml +2 -0
  122. vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_collision/external/donor/workspace.yaml +2 -0
  123. vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_collision/investigations/local_inv/investigation.yaml +3 -0
  124. vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_collision/studies/shared/study.yaml +3 -0
  125. vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_collision/workspace.yaml +1 -0
  126. vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/.pbg/server/server-info +1 -0
  127. vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/external/broken/workspace.yaml +2 -0
  128. vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/external/donor/donor/composites/donor.composite.yaml +3 -0
  129. vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/external/donor/investigations/donor_inv/investigation.yaml +3 -0
  130. vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/external/donor/studies/donor_study/study.yaml +4 -0
  131. vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/external/donor/workspace.yaml +2 -0
  132. vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/reports/assets/aig-graph.js +144 -0
  133. vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/reports/assets/audit.js +176 -0
  134. vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/reports/assets/branch-source.js +766 -0
  135. vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/reports/assets/client.js +60 -0
  136. vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/reports/assets/col-resize.js +128 -0
  137. vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/reports/assets/composite-card.js +756 -0
  138. vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/reports/assets/configure-run.js +289 -0
  139. vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/reports/assets/data-source.js +382 -0
  140. vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/reports/assets/github-login.js +304 -0
  141. vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/reports/assets/investigation-switcher.js +461 -0
  142. vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/reports/assets/loom-embed.js +103 -0
  143. vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/reports/assets/progress-track.css +128 -0
  144. vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/reports/assets/progress-track.js +244 -0
  145. vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/reports/assets/render-helpers.js +30 -0
  146. vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/reports/assets/session-status.js +185 -0
  147. vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/reports/assets/session.js +190 -0
  148. vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/reports/assets/sim-table.js +680 -0
  149. vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/reports/assets/snapshot-readonly.css +189 -0
  150. vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/reports/assets/source-switch.js +269 -0
  151. vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/reports/assets/study-detail.js +3490 -0
  152. vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/reports/assets/style.css +5052 -0
  153. vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/reports/assets/vivarium-logo-dark.png +0 -0
  154. vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/reports/assets/vivarium-logo.png +0 -0
  155. vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/reports/assets/walkthrough.js +16580 -0
  156. vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/reports/assets/workspace-picker.js +376 -0
  157. vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/reports/assets/workspace-switcher.js +302 -0
  158. vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/reports/index.html +2388 -0
  159. vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/workspace.yaml +1 -0
  160. vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/.pbg/server/server-info +1 -0
  161. vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/investigations/baseline/data/.keep +0 -0
  162. vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/investigations/baseline/spec.yaml +22 -0
  163. vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/pbg_ws_increase_demo/__init__.py +4 -0
  164. vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/pbg_ws_increase_demo/composites/__init__.py +12 -0
  165. vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/pbg_ws_increase_demo/composites/increase-demo.composite.yaml +34 -0
  166. vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/pbg_ws_increase_demo/core.py +10 -0
  167. vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/pbg_ws_increase_demo/processes.py +16 -0
  168. vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/pbg_ws_increase_demo/visualizations/__init__.py +0 -0
  169. vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/pbg_ws_increase_demo/visualizations/demo_workspace_plot.py +48 -0
  170. vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/aig-graph.js +144 -0
  171. vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/audit.js +176 -0
  172. vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/branch-source.js +766 -0
  173. vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/client.js +60 -0
  174. vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/col-resize.js +128 -0
  175. vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/composite-card.js +756 -0
  176. vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/configure-run.js +289 -0
  177. vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/data-source.js +382 -0
  178. vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/explorer-views.js +804 -0
  179. vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/explorer.html +35 -0
  180. vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/explorer.js +227 -0
  181. vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/github-login.js +304 -0
  182. vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/investigation-switcher.js +461 -0
  183. vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/loom-embed.js +103 -0
  184. vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/progress-track.css +128 -0
  185. vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/progress-track.js +244 -0
  186. vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/render-helpers.js +30 -0
  187. vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/session-status.js +185 -0
  188. vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/session.js +190 -0
  189. vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/sim-table.js +680 -0
  190. vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/snapshot-readonly.css +189 -0
  191. vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/source-switch.js +269 -0
  192. vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/study-detail.js +3490 -0
  193. vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/style.css +5052 -0
  194. vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/vivarium-logo-dark.png +0 -0
  195. vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/vivarium-logo.png +0 -0
  196. vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/walkthrough.js +16580 -0
  197. vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/workspace-picker.js +376 -0
  198. vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/workspace-switcher.js +302 -0
  199. vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/index.html +2388 -0
  200. vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/workspace.yaml +20 -0
  201. vivarium_workbench-0.3.88/tests/conftest.py +417 -0
  202. vivarium_workbench-0.3.88/tests/js/test_base_path_navigation.js +53 -0
  203. vivarium_workbench-0.3.88/tests/js/test_chain_block.js +76 -0
  204. vivarium_workbench-0.3.88/tests/js/test_choose_graph_orientation.js +27 -0
  205. vivarium_workbench-0.3.88/tests/js/test_cloud_run_chip.js +97 -0
  206. vivarium_workbench-0.3.88/tests/js/test_layout_opts_for_band.js +23 -0
  207. vivarium_workbench-0.3.88/tests/js/test_progress_track.js +87 -0
  208. vivarium_workbench-0.3.88/tests/js/test_run_redrive_poll.js +135 -0
  209. vivarium_workbench-0.3.88/tests/js/test_session.js +82 -0
  210. vivarium_workbench-0.3.88/tests/js/test_session_bootstrap.js +72 -0
  211. vivarium_workbench-0.3.88/tests/js/test_session_bootstrap_build.js +64 -0
  212. vivarium_workbench-0.3.88/tests/js/test_session_status.js +107 -0
  213. vivarium_workbench-0.3.88/tests/js/test_workspace_picker.js +73 -0
  214. vivarium_workbench-0.3.88/tests/known_failures.txt +91 -0
  215. vivarium_workbench-0.3.88/tests/test_C1_pbg_export.py +168 -0
  216. vivarium_workbench-0.3.88/tests/test_C2_roundtrip.py +348 -0
  217. vivarium_workbench-0.3.88/tests/test_C3_emitter_deepcopy.py +162 -0
  218. vivarium_workbench-0.3.88/tests/test_C3_sms_client.py +290 -0
  219. vivarium_workbench-0.3.88/tests/test_C4_cli.py +240 -0
  220. vivarium_workbench-0.3.88/tests/test_C5_plan_provenance_dissolved.py +148 -0
  221. vivarium_workbench-0.3.88/tests/test_C6_report_cards_inline_expectations.py +206 -0
  222. vivarium_workbench-0.3.88/tests/test_ac_gating_matrix_panel.py +41 -0
  223. vivarium_workbench-0.3.88/tests/test_acceptance_rollup_surface.py +100 -0
  224. vivarium_workbench-0.3.88/tests/test_active_branch_staging.py +53 -0
  225. vivarium_workbench-0.3.88/tests/test_active_workspace_lib.py +66 -0
  226. vivarium_workbench-0.3.88/tests/test_actor_attribution.py +194 -0
  227. vivarium_workbench-0.3.88/tests/test_add_dashboard_cli.py +54 -0
  228. vivarium_workbench-0.3.88/tests/test_agents0.py +94 -0
  229. vivarium_workbench-0.3.88/tests/test_analyses_page_render.py +45 -0
  230. vivarium_workbench-0.3.88/tests/test_analysis_outputs.py +77 -0
  231. vivarium_workbench-0.3.88/tests/test_analysis_tools.py +144 -0
  232. vivarium_workbench-0.3.88/tests/test_analysis_tools_3d.py +50 -0
  233. vivarium_workbench-0.3.88/tests/test_analysis_tools_simularium.py +71 -0
  234. vivarium_workbench-0.3.88/tests/test_analysis_viewers_worker.py +212 -0
  235. vivarium_workbench-0.3.88/tests/test_api_analysis_tools.py +38 -0
  236. vivarium_workbench-0.3.88/tests/test_api_app.py +6522 -0
  237. vivarium_workbench-0.3.88/tests/test_api_rerun.py +78 -0
  238. vivarium_workbench-0.3.88/tests/test_artifact_hashing.py +115 -0
  239. vivarium_workbench-0.3.88/tests/test_artifact_migration.py +288 -0
  240. vivarium_workbench-0.3.88/tests/test_artifact_store.py +68 -0
  241. vivarium_workbench-0.3.88/tests/test_atomic_io.py +80 -0
  242. vivarium_workbench-0.3.88/tests/test_audit_grade.py +65 -0
  243. vivarium_workbench-0.3.88/tests/test_audit_panel_views.py +131 -0
  244. vivarium_workbench-0.3.88/tests/test_audit_report.py +46 -0
  245. vivarium_workbench-0.3.88/tests/test_audit_views.py +279 -0
  246. vivarium_workbench-0.3.88/tests/test_auth_views_lib.py +186 -0
  247. vivarium_workbench-0.3.88/tests/test_authoring_endpoints.py +57 -0
  248. vivarium_workbench-0.3.88/tests/test_auto_evaluate.py +253 -0
  249. vivarium_workbench-0.3.88/tests/test_auto_evaluate_axis.py +21 -0
  250. vivarium_workbench-0.3.88/tests/test_auto_results_setting.py +157 -0
  251. vivarium_workbench-0.3.88/tests/test_auto_results_write.py +93 -0
  252. vivarium_workbench-0.3.88/tests/test_b4_wiring.py +21 -0
  253. vivarium_workbench-0.3.88/tests/test_batch_build_and_push.py +117 -0
  254. vivarium_workbench-0.3.88/tests/test_behavior_test_card.py +184 -0
  255. vivarium_workbench-0.3.88/tests/test_benchmark_report.py +54 -0
  256. vivarium_workbench-0.3.88/tests/test_build_panel_render.py +49 -0
  257. vivarium_workbench-0.3.88/tests/test_capabilities.py +17 -0
  258. vivarium_workbench-0.3.88/tests/test_catalog_disk_cache.py +373 -0
  259. vivarium_workbench-0.3.88/tests/test_catalog_install_source.py +254 -0
  260. vivarium_workbench-0.3.88/tests/test_catalog_install_views_lib.py +626 -0
  261. vivarium_workbench-0.3.88/tests/test_catalog_probe_batch.py +152 -0
  262. vivarium_workbench-0.3.88/tests/test_catalog_timeout_routing.py +78 -0
  263. vivarium_workbench-0.3.88/tests/test_catalog_uninstall_views_lib.py +261 -0
  264. vivarium_workbench-0.3.88/tests/test_chain_derivation.py +132 -0
  265. vivarium_workbench-0.3.88/tests/test_citation_gaps.py +158 -0
  266. vivarium_workbench-0.3.88/tests/test_cite_bands_views.py +321 -0
  267. vivarium_workbench-0.3.88/tests/test_cli_run_commands.py +87 -0
  268. vivarium_workbench-0.3.88/tests/test_cli_runs.py +106 -0
  269. vivarium_workbench-0.3.88/tests/test_cli_sync.py +88 -0
  270. vivarium_workbench-0.3.88/tests/test_collect_study_feedback.py +58 -0
  271. vivarium_workbench-0.3.88/tests/test_collect_study_observables.py +180 -0
  272. vivarium_workbench-0.3.88/tests/test_comparative_runs_lib.py +301 -0
  273. vivarium_workbench-0.3.88/tests/test_compare_group_mutations_lib.py +621 -0
  274. vivarium_workbench-0.3.88/tests/test_comparison_pinning.py +134 -0
  275. vivarium_workbench-0.3.88/tests/test_compose_model_baseline_merge.py +273 -0
  276. vivarium_workbench-0.3.88/tests/test_compose_unification.py +133 -0
  277. vivarium_workbench-0.3.88/tests/test_composite_config_adapt.py +146 -0
  278. vivarium_workbench-0.3.88/tests/test_composite_declared_emit_paths.py +43 -0
  279. vivarium_workbench-0.3.88/tests/test_composite_explore_base_path.py +55 -0
  280. vivarium_workbench-0.3.88/tests/test_composite_explorer_api.py +225 -0
  281. vivarium_workbench-0.3.88/tests/test_composite_flush.py +161 -0
  282. vivarium_workbench-0.3.88/tests/test_composite_flush_autoresults.py +140 -0
  283. vivarium_workbench-0.3.88/tests/test_composite_flush_diff.py +229 -0
  284. vivarium_workbench-0.3.88/tests/test_composite_flush_gate.py +55 -0
  285. vivarium_workbench-0.3.88/tests/test_composite_flush_verdict.py +129 -0
  286. vivarium_workbench-0.3.88/tests/test_composite_mutations_lib.py +512 -0
  287. vivarium_workbench-0.3.88/tests/test_composite_recipes.py +116 -0
  288. vivarium_workbench-0.3.88/tests/test_composite_ref_resolve_robust.py +77 -0
  289. vivarium_workbench-0.3.88/tests/test_composite_resolution_lint.py +210 -0
  290. vivarium_workbench-0.3.88/tests/test_composite_resolve_dispatch.py +370 -0
  291. vivarium_workbench-0.3.88/tests/test_composite_resolve_fallback.py +130 -0
  292. vivarium_workbench-0.3.88/tests/test_composite_resolve_generator_module.py +56 -0
  293. vivarium_workbench-0.3.88/tests/test_composite_run_download.py +216 -0
  294. vivarium_workbench-0.3.88/tests/test_composite_run_pinned_confirm.py +70 -0
  295. vivarium_workbench-0.3.88/tests/test_composite_run_status_flush_flags.py +143 -0
  296. vivarium_workbench-0.3.88/tests/test_composite_run_views_lib.py +317 -0
  297. vivarium_workbench-0.3.88/tests/test_composite_runs.py +577 -0
  298. vivarium_workbench-0.3.88/tests/test_composite_runs_jsonl.py +31 -0
  299. vivarium_workbench-0.3.88/tests/test_composite_source_endpoints.py +49 -0
  300. vivarium_workbench-0.3.88/tests/test_composite_state_lib.py +297 -0
  301. vivarium_workbench-0.3.88/tests/test_composite_stop_views_lib.py +79 -0
  302. vivarium_workbench-0.3.88/tests/test_composite_subprocess_emitter.py +41 -0
  303. vivarium_workbench-0.3.88/tests/test_composite_subprocess_fingerprint.py +117 -0
  304. vivarium_workbench-0.3.88/tests/test_composite_subprocess_lib.py +687 -0
  305. vivarium_workbench-0.3.88/tests/test_composite_test_run_durable.py +58 -0
  306. vivarium_workbench-0.3.88/tests/test_composite_test_run_remote_build.py +307 -0
  307. vivarium_workbench-0.3.88/tests/test_composite_test_run_views_lib.py +289 -0
  308. vivarium_workbench-0.3.88/tests/test_composites_kind_module.py +221 -0
  309. vivarium_workbench-0.3.88/tests/test_compute_param_enforcement.py +144 -0
  310. vivarium_workbench-0.3.88/tests/test_computed_verdict_render.py +229 -0
  311. vivarium_workbench-0.3.88/tests/test_conclusion_card.py +189 -0
  312. vivarium_workbench-0.3.88/tests/test_conclusion_freeze_indicator.py +140 -0
  313. vivarium_workbench-0.3.88/tests/test_conclusion_markdown.py +33 -0
  314. vivarium_workbench-0.3.88/tests/test_conclusion_route.py +60 -0
  315. vivarium_workbench-0.3.88/tests/test_conclusions_structure.py +44 -0
  316. vivarium_workbench-0.3.88/tests/test_config_to_composite_route.py +58 -0
  317. vivarium_workbench-0.3.88/tests/test_configure_run_embeddings.py +38 -0
  318. vivarium_workbench-0.3.88/tests/test_configure_run_run_kind.py +15 -0
  319. vivarium_workbench-0.3.88/tests/test_configure_run_widget.py +66 -0
  320. vivarium_workbench-0.3.88/tests/test_consolidate_run_index.py +107 -0
  321. vivarium_workbench-0.3.88/tests/test_csrf_lib.py +136 -0
  322. vivarium_workbench-0.3.88/tests/test_csrf_origin_guard.py +164 -0
  323. vivarium_workbench-0.3.88/tests/test_data_endpoints.py +668 -0
  324. vivarium_workbench-0.3.88/tests/test_data_sources_worker.py +122 -0
  325. vivarium_workbench-0.3.88/tests/test_dblclick_open_study.py +16 -0
  326. vivarium_workbench-0.3.88/tests/test_decision_route.py +53 -0
  327. vivarium_workbench-0.3.88/tests/test_declared_results.py +212 -0
  328. vivarium_workbench-0.3.88/tests/test_declared_scale_precheck.py +102 -0
  329. vivarium_workbench-0.3.88/tests/test_dep_doctor.py +39 -0
  330. vivarium_workbench-0.3.88/tests/test_deploy_config.py +160 -0
  331. vivarium_workbench-0.3.88/tests/test_derivations_js_dedup.py +16 -0
  332. vivarium_workbench-0.3.88/tests/test_derived_block_embed.py +38 -0
  333. vivarium_workbench-0.3.88/tests/test_discover_static_charts.py +269 -0
  334. vivarium_workbench-0.3.88/tests/test_discover_viz_html_files.py +252 -0
  335. vivarium_workbench-0.3.88/tests/test_dispatch_confirm_modal.py +89 -0
  336. vivarium_workbench-0.3.88/tests/test_dockerfile_slim_image.py +116 -0
  337. vivarium_workbench-0.3.88/tests/test_dockerfile_workspace_repo.py +72 -0
  338. vivarium_workbench-0.3.88/tests/test_download_views_lib.py +215 -0
  339. vivarium_workbench-0.3.88/tests/test_emitter_label_none.py +74 -0
  340. vivarium_workbench-0.3.88/tests/test_emitters_broker.py +261 -0
  341. vivarium_workbench-0.3.88/tests/test_emitters_e2e.py +211 -0
  342. vivarium_workbench-0.3.88/tests/test_emitters_run_with_emitter.py +284 -0
  343. vivarium_workbench-0.3.88/tests/test_ensemble_config.py +97 -0
  344. vivarium_workbench-0.3.88/tests/test_env_fingerprint.py +44 -0
  345. vivarium_workbench-0.3.88/tests/test_env_resolver.py +119 -0
  346. vivarium_workbench-0.3.88/tests/test_env_worker.py +621 -0
  347. vivarium_workbench-0.3.88/tests/test_env_worker_authoring.py +144 -0
  348. vivarium_workbench-0.3.88/tests/test_env_worker_composite_source.py +88 -0
  349. vivarium_workbench-0.3.88/tests/test_env_worker_config_to_composite.py +32 -0
  350. vivarium_workbench-0.3.88/tests/test_env_worker_dialback.py +226 -0
  351. vivarium_workbench-0.3.88/tests/test_env_worker_launcher.py +136 -0
  352. vivarium_workbench-0.3.88/tests/test_env_worker_pool.py +117 -0
  353. vivarium_workbench-0.3.88/tests/test_env_worker_process_source.py +129 -0
  354. vivarium_workbench-0.3.88/tests/test_env_worker_provision.py +242 -0
  355. vivarium_workbench-0.3.88/tests/test_env_worker_provision_specs.py +93 -0
  356. vivarium_workbench-0.3.88/tests/test_env_worker_routing.py +282 -0
  357. vivarium_workbench-0.3.88/tests/test_env_worker_viz_preview.py +194 -0
  358. vivarium_workbench-0.3.88/tests/test_ephemeral_study.py +89 -0
  359. vivarium_workbench-0.3.88/tests/test_error_envelope.py +62 -0
  360. vivarium_workbench-0.3.88/tests/test_event_log.py +35 -0
  361. vivarium_workbench-0.3.88/tests/test_events_lib.py +138 -0
  362. vivarium_workbench-0.3.88/tests/test_events_log_sse.py +45 -0
  363. vivarium_workbench-0.3.88/tests/test_evidence_from_computed_nodes.py +92 -0
  364. vivarium_workbench-0.3.88/tests/test_evidence_route.py +48 -0
  365. vivarium_workbench-0.3.88/tests/test_expert_search.py +259 -0
  366. vivarium_workbench-0.3.88/tests/test_explorer_data.py +555 -0
  367. vivarium_workbench-0.3.88/tests/test_explorer_endpoints.py +137 -0
  368. vivarium_workbench-0.3.88/tests/test_explorer_no_hardcoded_remote_build.py +11 -0
  369. vivarium_workbench-0.3.88/tests/test_exports_download_consolidation.py +199 -0
  370. vivarium_workbench-0.3.88/tests/test_fastapi_route_gaps.py +384 -0
  371. vivarium_workbench-0.3.88/tests/test_federated_study_runs.py +73 -0
  372. vivarium_workbench-0.3.88/tests/test_federation.py +149 -0
  373. vivarium_workbench-0.3.88/tests/test_federation_endpoints.py +98 -0
  374. vivarium_workbench-0.3.88/tests/test_federation_installed_modules.py +125 -0
  375. vivarium_workbench-0.3.88/tests/test_federation_study_parity.py +206 -0
  376. vivarium_workbench-0.3.88/tests/test_feedback_actions.py +354 -0
  377. vivarium_workbench-0.3.88/tests/test_feedback_apply_action_api.py +81 -0
  378. vivarium_workbench-0.3.88/tests/test_feedback_record_endpoint.py +151 -0
  379. vivarium_workbench-0.3.88/tests/test_feedback_tracking_render.py +236 -0
  380. vivarium_workbench-0.3.88/tests/test_finding_route.py +46 -0
  381. vivarium_workbench-0.3.88/tests/test_findings_ledger.py +213 -0
  382. vivarium_workbench-0.3.88/tests/test_framework_metrics_endpoint.py +66 -0
  383. vivarium_workbench-0.3.88/tests/test_gate_canonical_source.py +21 -0
  384. vivarium_workbench-0.3.88/tests/test_gate_verdict_surface.py +164 -0
  385. vivarium_workbench-0.3.88/tests/test_gen_readme.py +154 -0
  386. vivarium_workbench-0.3.88/tests/test_generate_ts.py +35 -0
  387. vivarium_workbench-0.3.88/tests/test_generation.py +136 -0
  388. vivarium_workbench-0.3.88/tests/test_generation_api.py +103 -0
  389. vivarium_workbench-0.3.88/tests/test_generator_parquet_e2e.py +182 -0
  390. vivarium_workbench-0.3.88/tests/test_generic_analysis_dispatch.py +89 -0
  391. vivarium_workbench-0.3.88/tests/test_git_commit_views_lib.py +371 -0
  392. vivarium_workbench-0.3.88/tests/test_git_status_lib.py +414 -0
  393. vivarium_workbench-0.3.88/tests/test_github_auth.py +295 -0
  394. vivarium_workbench-0.3.88/tests/test_github_auth_env_injection.py +153 -0
  395. vivarium_workbench-0.3.88/tests/test_gotostudytab_helper.py +33 -0
  396. vivarium_workbench-0.3.88/tests/test_gzip_middleware.py +48 -0
  397. vivarium_workbench-0.3.88/tests/test_inject_declared_emitter.py +81 -0
  398. vivarium_workbench-0.3.88/tests/test_inputs_endpoint.py +103 -0
  399. vivarium_workbench-0.3.88/tests/test_inputs_upload_investigation_scoped.py +123 -0
  400. vivarium_workbench-0.3.88/tests/test_install_timeout.py +50 -0
  401. vivarium_workbench-0.3.88/tests/test_install_views_lib.py +365 -0
  402. vivarium_workbench-0.3.88/tests/test_interactive_declared_figures.py +287 -0
  403. vivarium_workbench-0.3.88/tests/test_investigation_analysis_step.py +376 -0
  404. vivarium_workbench-0.3.88/tests/test_investigation_composite_generator.py +229 -0
  405. vivarium_workbench-0.3.88/tests/test_investigation_figures.py +248 -0
  406. vivarium_workbench-0.3.88/tests/test_investigation_graph_orientation.py +81 -0
  407. vivarium_workbench-0.3.88/tests/test_investigation_graph_route.py +46 -0
  408. vivarium_workbench-0.3.88/tests/test_investigation_graph_views.py +156 -0
  409. vivarium_workbench-0.3.88/tests/test_investigation_hypotheses_endpoint.py +111 -0
  410. vivarium_workbench-0.3.88/tests/test_investigation_inputs_mirror.py +48 -0
  411. vivarium_workbench-0.3.88/tests/test_investigation_landing_list.py +63 -0
  412. vivarium_workbench-0.3.88/tests/test_investigation_members_field.py +44 -0
  413. vivarium_workbench-0.3.88/tests/test_investigation_members_sweep.py +156 -0
  414. vivarium_workbench-0.3.88/tests/test_investigation_migrate.py +118 -0
  415. vivarium_workbench-0.3.88/tests/test_investigation_page_declutter.py +76 -0
  416. vivarium_workbench-0.3.88/tests/test_investigation_payload_run_commands.py +80 -0
  417. vivarium_workbench-0.3.88/tests/test_investigation_reference_graph.py +56 -0
  418. vivarium_workbench-0.3.88/tests/test_investigation_report.py +405 -0
  419. vivarium_workbench-0.3.88/tests/test_investigation_report_figures.py +112 -0
  420. vivarium_workbench-0.3.88/tests/test_investigation_resolve_api.py +135 -0
  421. vivarium_workbench-0.3.88/tests/test_investigation_run_convergence.py +135 -0
  422. vivarium_workbench-0.3.88/tests/test_investigation_run_e2e.py +145 -0
  423. vivarium_workbench-0.3.88/tests/test_investigation_run_one_views_lib.py +581 -0
  424. vivarium_workbench-0.3.88/tests/test_investigation_run_views_lib.py +287 -0
  425. vivarium_workbench-0.3.88/tests/test_investigation_set_status.py +42 -0
  426. vivarium_workbench-0.3.88/tests/test_investigation_status.py +83 -0
  427. vivarium_workbench-0.3.88/tests/test_investigation_steps_skeleton.py +88 -0
  428. vivarium_workbench-0.3.88/tests/test_investigation_trigger.py +257 -0
  429. vivarium_workbench-0.3.88/tests/test_investigation_views_lib.py +340 -0
  430. vivarium_workbench-0.3.88/tests/test_investigation_viz_mutations_lib.py +195 -0
  431. vivarium_workbench-0.3.88/tests/test_investigation_workspace.py +166 -0
  432. vivarium_workbench-0.3.88/tests/test_investigations.py +962 -0
  433. vivarium_workbench-0.3.88/tests/test_investigations_index_status.py +88 -0
  434. vivarium_workbench-0.3.88/tests/test_is_generated_path.py +44 -0
  435. vivarium_workbench-0.3.88/tests/test_iset_close_endpoint.py +148 -0
  436. vivarium_workbench-0.3.88/tests/test_iset_current_branch.py +43 -0
  437. vivarium_workbench-0.3.88/tests/test_iset_endpoints.py +826 -0
  438. vivarium_workbench-0.3.88/tests/test_iset_nested.py +88 -0
  439. vivarium_workbench-0.3.88/tests/test_job_class_task_routing.py +187 -0
  440. vivarium_workbench-0.3.88/tests/test_job_status_views_lib.py +77 -0
  441. vivarium_workbench-0.3.88/tests/test_json_sanitize.py +110 -0
  442. vivarium_workbench-0.3.88/tests/test_known_composites_cache.py +89 -0
  443. vivarium_workbench-0.3.88/tests/test_latest_outcomes_fallback.py +31 -0
  444. vivarium_workbench-0.3.88/tests/test_launch_carries_stderr.py +167 -0
  445. vivarium_workbench-0.3.88/tests/test_launch_into_study.py +158 -0
  446. vivarium_workbench-0.3.88/tests/test_lifecycle_mutations_lib.py +357 -0
  447. vivarium_workbench-0.3.88/tests/test_linkage_index.py +305 -0
  448. vivarium_workbench-0.3.88/tests/test_linkage_index_endpoint.py +131 -0
  449. vivarium_workbench-0.3.88/tests/test_linkage_index_golden.py +139 -0
  450. vivarium_workbench-0.3.88/tests/test_load_spec_v4.py +212 -0
  451. vivarium_workbench-0.3.88/tests/test_loom_base_path.py +72 -0
  452. vivarium_workbench-0.3.88/tests/test_loom_explore_serve.py +114 -0
  453. vivarium_workbench-0.3.88/tests/test_loom_vendored.py +39 -0
  454. vivarium_workbench-0.3.88/tests/test_loop_provenance_views.py +178 -0
  455. vivarium_workbench-0.3.88/tests/test_materialization.py +163 -0
  456. vivarium_workbench-0.3.88/tests/test_materialization_jobs.py +270 -0
  457. vivarium_workbench-0.3.88/tests/test_metadata_mutations_lib.py +605 -0
  458. vivarium_workbench-0.3.88/tests/test_migrate_investigations_to_studies.py +72 -0
  459. vivarium_workbench-0.3.88/tests/test_migrate_v3_to_v4.py +77 -0
  460. vivarium_workbench-0.3.88/tests/test_misc_mutations_lib.py +169 -0
  461. vivarium_workbench-0.3.88/tests/test_misc_post_views_lib.py +241 -0
  462. vivarium_workbench-0.3.88/tests/test_module_import_doctor.py +122 -0
  463. vivarium_workbench-0.3.88/tests/test_module_stats.py +373 -0
  464. vivarium_workbench-0.3.88/tests/test_needs_attention.py +613 -0
  465. vivarium_workbench-0.3.88/tests/test_needs_attention_endpoint.py +84 -0
  466. vivarium_workbench-0.3.88/tests/test_needs_attention_env_stale_sync.py +70 -0
  467. vivarium_workbench-0.3.88/tests/test_needs_attention_gate.py +36 -0
  468. vivarium_workbench-0.3.88/tests/test_no_ai_deps.py +96 -0
  469. vivarium_workbench-0.3.88/tests/test_no_blind_retry_job_class.py +98 -0
  470. vivarium_workbench-0.3.88/tests/test_no_nested_studies_guard.py +86 -0
  471. vivarium_workbench-0.3.88/tests/test_no_tracked_symlinks.py +83 -0
  472. vivarium_workbench-0.3.88/tests/test_node_store.py +32 -0
  473. vivarium_workbench-0.3.88/tests/test_non_root_store_roots.py +145 -0
  474. vivarium_workbench-0.3.88/tests/test_notebook_export.py +240 -0
  475. vivarium_workbench-0.3.88/tests/test_notebook_export_endpoint.py +44 -0
  476. vivarium_workbench-0.3.88/tests/test_observables_endpoint.py +212 -0
  477. vivarium_workbench-0.3.88/tests/test_observables_views_lib.py +227 -0
  478. vivarium_workbench-0.3.88/tests/test_open_run_in_explorer.py +140 -0
  479. vivarium_workbench-0.3.88/tests/test_outcome_vocabulary.py +80 -0
  480. vivarium_workbench-0.3.88/tests/test_overview_fullwidth_autogrow.py +48 -0
  481. vivarium_workbench-0.3.88/tests/test_p1_measure_refusal.py +225 -0
  482. vivarium_workbench-0.3.88/tests/test_param_enforcement.py +108 -0
  483. vivarium_workbench-0.3.88/tests/test_payload_models.py +170 -0
  484. vivarium_workbench-0.3.88/tests/test_phase_a_e2e.py +38 -0
  485. vivarium_workbench-0.3.88/tests/test_phase_b1_e2e.py +38 -0
  486. vivarium_workbench-0.3.88/tests/test_pillar_unify.py +143 -0
  487. vivarium_workbench-0.3.88/tests/test_pipeline_end_to_end.py +125 -0
  488. vivarium_workbench-0.3.88/tests/test_pkg_none_fails_clearly.py +70 -0
  489. vivarium_workbench-0.3.88/tests/test_play_buttons_contract.py +102 -0
  490. vivarium_workbench-0.3.88/tests/test_plugin_import_allowlist.py +108 -0
  491. vivarium_workbench-0.3.88/tests/test_post_run_analyses.py +174 -0
  492. vivarium_workbench-0.3.88/tests/test_post_run_records.py +31 -0
  493. vivarium_workbench-0.3.88/tests/test_preflight_composite_run.py +289 -0
  494. vivarium_workbench-0.3.88/tests/test_prereq_ordering.py +343 -0
  495. vivarium_workbench-0.3.88/tests/test_process_docs.py +61 -0
  496. vivarium_workbench-0.3.88/tests/test_process_docs_attach.py +152 -0
  497. vivarium_workbench-0.3.88/tests/test_process_source_endpoints.py +62 -0
  498. vivarium_workbench-0.3.88/tests/test_proposed_input_decision.py +128 -0
  499. vivarium_workbench-0.3.88/tests/test_provenance_manifest.py +73 -0
  500. vivarium_workbench-0.3.88/tests/test_proxy_worker_launcher.py +187 -0
  501. vivarium_workbench-0.3.88/tests/test_publish.py +968 -0
  502. vivarium_workbench-0.3.88/tests/test_publish_simularium.py +45 -0
  503. vivarium_workbench-0.3.88/tests/test_pyproject_edit.py +151 -0
  504. vivarium_workbench-0.3.88/tests/test_readability_wiring.py +27 -0
  505. vivarium_workbench-0.3.88/tests/test_readout_migration_status_endpoint.py +112 -0
  506. vivarium_workbench-0.3.88/tests/test_readout_validation.py +301 -0
  507. vivarium_workbench-0.3.88/tests/test_readouts_excluded.py +102 -0
  508. vivarium_workbench-0.3.88/tests/test_readouts_models.py +49 -0
  509. vivarium_workbench-0.3.88/tests/test_readouts_views.py +316 -0
  510. vivarium_workbench-0.3.88/tests/test_reference_mutations_lib.py +288 -0
  511. vivarium_workbench-0.3.88/tests/test_references_fetch.py +282 -0
  512. vivarium_workbench-0.3.88/tests/test_refresh_viz_env_and_tagging.py +83 -0
  513. vivarium_workbench-0.3.88/tests/test_registry_default_emitter.py +230 -0
  514. vivarium_workbench-0.3.88/tests/test_registry_discovery.py +155 -0
  515. vivarium_workbench-0.3.88/tests/test_registry_modules_override.py +141 -0
  516. vivarium_workbench-0.3.88/tests/test_registry_source_tagging.py +342 -0
  517. vivarium_workbench-0.3.88/tests/test_remote_analysis_figures_hidden.py +102 -0
  518. vivarium_workbench-0.3.88/tests/test_remote_build_source.py +593 -0
  519. vivarium_workbench-0.3.88/tests/test_remote_composite_results.py +275 -0
  520. vivarium_workbench-0.3.88/tests/test_remote_dispatch_param_editing.py +373 -0
  521. vivarium_workbench-0.3.88/tests/test_remote_failure_reason.py +27 -0
  522. vivarium_workbench-0.3.88/tests/test_remote_health.py +106 -0
  523. vivarium_workbench-0.3.88/tests/test_remote_link.py +246 -0
  524. vivarium_workbench-0.3.88/tests/test_remote_reconcile.py +212 -0
  525. vivarium_workbench-0.3.88/tests/test_remote_run_endpoints.py +59 -0
  526. vivarium_workbench-0.3.88/tests/test_remote_run_jobs.py +168 -0
  527. vivarium_workbench-0.3.88/tests/test_remote_run_land_artifacts.py +112 -0
  528. vivarium_workbench-0.3.88/tests/test_remote_run_landing.py +594 -0
  529. vivarium_workbench-0.3.88/tests/test_remote_run_panel.py +111 -0
  530. vivarium_workbench-0.3.88/tests/test_remote_run_pinned.py +441 -0
  531. vivarium_workbench-0.3.88/tests/test_remote_run_poll_hardening.py +95 -0
  532. vivarium_workbench-0.3.88/tests/test_remote_run_submit_async.py +250 -0
  533. vivarium_workbench-0.3.88/tests/test_remote_run_views_lib.py +1029 -0
  534. vivarium_workbench-0.3.88/tests/test_remote_simulations.py +95 -0
  535. vivarium_workbench-0.3.88/tests/test_remote_study_slug_1to1.py +154 -0
  536. vivarium_workbench-0.3.88/tests/test_remote_study_slug_inference.py +94 -0
  537. vivarium_workbench-0.3.88/tests/test_rename_compat.py +88 -0
  538. vivarium_workbench-0.3.88/tests/test_repo_source.py +107 -0
  539. vivarium_workbench-0.3.88/tests/test_report_card_evidence.py +146 -0
  540. vivarium_workbench-0.3.88/tests/test_report_card_promotion.py +133 -0
  541. vivarium_workbench-0.3.88/tests/test_report_card_section.py +69 -0
  542. vivarium_workbench-0.3.88/tests/test_report_lint_endpoint.py +103 -0
  543. vivarium_workbench-0.3.88/tests/test_report_lint_overrides_endpoint.py +124 -0
  544. vivarium_workbench-0.3.88/tests/test_report_lint_question.py +16 -0
  545. vivarium_workbench-0.3.88/tests/test_report_lint_viz_gap.py +213 -0
  546. vivarium_workbench-0.3.88/tests/test_report_rigor_rendering.py +289 -0
  547. vivarium_workbench-0.3.88/tests/test_report_views_lib.py +222 -0
  548. vivarium_workbench-0.3.88/tests/test_report_views_readout_lint.py +64 -0
  549. vivarium_workbench-0.3.88/tests/test_request_logging.py +34 -0
  550. vivarium_workbench-0.3.88/tests/test_rerun.py +756 -0
  551. vivarium_workbench-0.3.88/tests/test_rerun_resolve.py +152 -0
  552. vivarium_workbench-0.3.88/tests/test_rerun_run.py +116 -0
  553. vivarium_workbench-0.3.88/tests/test_rerun_ui.py +74 -0
  554. vivarium_workbench-0.3.88/tests/test_resolve_cloud_target.py +141 -0
  555. vivarium_workbench-0.3.88/tests/test_resolve_composite_source_or_generate.py +99 -0
  556. vivarium_workbench-0.3.88/tests/test_resolve_investigation.py +246 -0
  557. vivarium_workbench-0.3.88/tests/test_resolve_registry_ref.py +29 -0
  558. vivarium_workbench-0.3.88/tests/test_result_fingerprint.py +117 -0
  559. vivarium_workbench-0.3.88/tests/test_results_no_drift.py +161 -0
  560. vivarium_workbench-0.3.88/tests/test_results_views.py +144 -0
  561. vivarium_workbench-0.3.88/tests/test_rigor_views_lib.py +160 -0
  562. vivarium_workbench-0.3.88/tests/test_root_request_context.py +75 -0
  563. vivarium_workbench-0.3.88/tests/test_round_trip_fidelity.py +73 -0
  564. vivarium_workbench-0.3.88/tests/test_run_artifact_base_path.py +62 -0
  565. vivarium_workbench-0.3.88/tests/test_run_artifact_zarr_fallback.py +141 -0
  566. vivarium_workbench-0.3.88/tests/test_run_capabilities.py +22 -0
  567. vivarium_workbench-0.3.88/tests/test_run_capabilities_persist.py +21 -0
  568. vivarium_workbench-0.3.88/tests/test_run_commands.py +94 -0
  569. vivarium_workbench-0.3.88/tests/test_run_composite_cli.py +51 -0
  570. vivarium_workbench-0.3.88/tests/test_run_config_declares_results.py +150 -0
  571. vivarium_workbench-0.3.88/tests/test_run_core.py +32 -0
  572. vivarium_workbench-0.3.88/tests/test_run_delete_route.py +69 -0
  573. vivarium_workbench-0.3.88/tests/test_run_detail_hub.py +178 -0
  574. vivarium_workbench-0.3.88/tests/test_run_fixture.py +144 -0
  575. vivarium_workbench-0.3.88/tests/test_run_index.py +339 -0
  576. vivarium_workbench-0.3.88/tests/test_run_interpreter_parity.py +118 -0
  577. vivarium_workbench-0.3.88/tests/test_run_jobs_async_dispatch.py +199 -0
  578. vivarium_workbench-0.3.88/tests/test_run_kind_classify.py +42 -0
  579. vivarium_workbench-0.3.88/tests/test_run_log.py +37 -0
  580. vivarium_workbench-0.3.88/tests/test_run_log_lifecycle.py +138 -0
  581. vivarium_workbench-0.3.88/tests/test_run_manifest.py +274 -0
  582. vivarium_workbench-0.3.88/tests/test_run_phase_and_fractional.py +80 -0
  583. vivarium_workbench-0.3.88/tests/test_run_registry.py +96 -0
  584. vivarium_workbench-0.3.88/tests/test_run_runner.py +248 -0
  585. vivarium_workbench-0.3.88/tests/test_run_runner_default_viz.py +74 -0
  586. vivarium_workbench-0.3.88/tests/test_run_runner_explorer_emitter.py +315 -0
  587. vivarium_workbench-0.3.88/tests/test_run_runner_viz_fallback_hang.py +174 -0
  588. vivarium_workbench-0.3.88/tests/test_run_status_truthfulness.py +92 -0
  589. vivarium_workbench-0.3.88/tests/test_run_stop.py +96 -0
  590. vivarium_workbench-0.3.88/tests/test_run_store.py +49 -0
  591. vivarium_workbench-0.3.88/tests/test_run_study_analyses_in_reply.py +265 -0
  592. vivarium_workbench-0.3.88/tests/test_run_study_capability.py +384 -0
  593. vivarium_workbench-0.3.88/tests/test_run_unblocked_views_lib.py +367 -0
  594. vivarium_workbench-0.3.88/tests/test_runner_unification.py +250 -0
  595. vivarium_workbench-0.3.88/tests/test_save_run_as_variant.py +68 -0
  596. vivarium_workbench-0.3.88/tests/test_save_run_as_variant_route.py +19 -0
  597. vivarium_workbench-0.3.88/tests/test_saved_visualizations.py +111 -0
  598. vivarium_workbench-0.3.88/tests/test_scaffold_catalog_cli.py +74 -0
  599. vivarium_workbench-0.3.88/tests/test_scaffold_investigation_cli.py +63 -0
  600. vivarium_workbench-0.3.88/tests/test_scaffold_mutations_lib.py +238 -0
  601. vivarium_workbench-0.3.88/tests/test_scaffold_yaml.py +318 -0
  602. vivarium_workbench-0.3.88/tests/test_scientific_content_port.py +58 -0
  603. vivarium_workbench-0.3.88/tests/test_scorecard_margin_render.py +40 -0
  604. vivarium_workbench-0.3.88/tests/test_server_capabilities.py +100 -0
  605. vivarium_workbench-0.3.88/tests/test_server_lifecycle_cli.py +170 -0
  606. vivarium_workbench-0.3.88/tests/test_session_cookie_e2e.py +27 -0
  607. vivarium_workbench-0.3.88/tests/test_session_env.py +135 -0
  608. vivarium_workbench-0.3.88/tests/test_session_registry_lib.py +120 -0
  609. vivarium_workbench-0.3.88/tests/test_sim_composite_registered.py +45 -0
  610. vivarium_workbench-0.3.88/tests/test_sim_config_jsonl_fold.py +22 -0
  611. vivarium_workbench-0.3.88/tests/test_sim_config_population.py +39 -0
  612. vivarium_workbench-0.3.88/tests/test_sim_table_tools_ui.py +44 -0
  613. vivarium_workbench-0.3.88/tests/test_sims_sort_frontend.py +12 -0
  614. vivarium_workbench-0.3.88/tests/test_simulations_api.py +246 -0
  615. vivarium_workbench-0.3.88/tests/test_simulations_capabilities.py +128 -0
  616. vivarium_workbench-0.3.88/tests/test_simulations_index.py +1106 -0
  617. vivarium_workbench-0.3.88/tests/test_simulations_index_jsonl.py +95 -0
  618. vivarium_workbench-0.3.88/tests/test_simulations_index_pure_jsonl.py +90 -0
  619. vivarium_workbench-0.3.88/tests/test_simulations_matched_tools.py +171 -0
  620. vivarium_workbench-0.3.88/tests/test_simulations_swr.py +217 -0
  621. vivarium_workbench-0.3.88/tests/test_single_study_report.py +786 -0
  622. vivarium_workbench-0.3.88/tests/test_single_study_report_commands.py +32 -0
  623. vivarium_workbench-0.3.88/tests/test_smoke_cli.py +39 -0
  624. vivarium_workbench-0.3.88/tests/test_sms_api_client.py +520 -0
  625. vivarium_workbench-0.3.88/tests/test_sms_api_identity.py +122 -0
  626. vivarium_workbench-0.3.88/tests/test_source_branch.py +142 -0
  627. vivarium_workbench-0.3.88/tests/test_source_build_views_lib.py +261 -0
  628. vivarium_workbench-0.3.88/tests/test_source_provenance.py +198 -0
  629. vivarium_workbench-0.3.88/tests/test_source_switch.py +153 -0
  630. vivarium_workbench-0.3.88/tests/test_source_switch_views_lib.py +126 -0
  631. vivarium_workbench-0.3.88/tests/test_sourcing_panel_render.py +49 -0
  632. vivarium_workbench-0.3.88/tests/test_sp1_investigation_hook.py +78 -0
  633. vivarium_workbench-0.3.88/tests/test_sp3a_finding_seed_render.py +46 -0
  634. vivarium_workbench-0.3.88/tests/test_spec_migration.py +365 -0
  635. vivarium_workbench-0.3.88/tests/test_spine_present_b_golden.py +65 -0
  636. vivarium_workbench-0.3.88/tests/test_spine_present_b_outcomes.py +57 -0
  637. vivarium_workbench-0.3.88/tests/test_spine_present_b_readout_validation.py +33 -0
  638. vivarium_workbench-0.3.88/tests/test_spine_present_b_traceability.py +55 -0
  639. vivarium_workbench-0.3.88/tests/test_spine_present_c_dedup.py +69 -0
  640. vivarium_workbench-0.3.88/tests/test_spine_present_c_golden.py +65 -0
  641. vivarium_workbench-0.3.88/tests/test_spine_present_c_report_dag.py +57 -0
  642. vivarium_workbench-0.3.88/tests/test_spine_present_c_summary.py +128 -0
  643. vivarium_workbench-0.3.88/tests/test_spine_present_c_unbury.py +60 -0
  644. vivarium_workbench-0.3.88/tests/test_spine_present_golden.py +94 -0
  645. vivarium_workbench-0.3.88/tests/test_staging.py +71 -0
  646. vivarium_workbench-0.3.88/tests/test_static_serving_lib.py +115 -0
  647. vivarium_workbench-0.3.88/tests/test_step_analysis_outputs.py +32 -0
  648. vivarium_workbench-0.3.88/tests/test_step_baseline.py +106 -0
  649. vivarium_workbench-0.3.88/tests/test_study_aliases.py +57 -0
  650. vivarium_workbench-0.3.88/tests/test_study_artifacts_on_simulate.py +172 -0
  651. vivarium_workbench-0.3.88/tests/test_study_baseline_handlers.py +130 -0
  652. vivarium_workbench-0.3.88/tests/test_study_body_keys.py +22 -0
  653. vivarium_workbench-0.3.88/tests/test_study_charts_db_exists.py +149 -0
  654. vivarium_workbench-0.3.88/tests/test_study_charts_empty_state_wording.py +40 -0
  655. vivarium_workbench-0.3.88/tests/test_study_charts_freshness.py +98 -0
  656. vivarium_workbench-0.3.88/tests/test_study_charts_parquet.py +266 -0
  657. vivarium_workbench-0.3.88/tests/test_study_charts_v4_tests_field.py +97 -0
  658. vivarium_workbench-0.3.88/tests/test_study_config_file.py +83 -0
  659. vivarium_workbench-0.3.88/tests/test_study_create_from_run.py +116 -0
  660. vivarium_workbench-0.3.88/tests/test_study_create_views_lib.py +247 -0
  661. vivarium_workbench-0.3.88/tests/test_study_crud_mutations_lib.py +473 -0
  662. vivarium_workbench-0.3.88/tests/test_study_declared_composite.py +49 -0
  663. vivarium_workbench-0.3.88/tests/test_study_derivations.py +92 -0
  664. vivarium_workbench-0.3.88/tests/test_study_detail_page.py +618 -0
  665. vivarium_workbench-0.3.88/tests/test_study_detail_render.py +1998 -0
  666. vivarium_workbench-0.3.88/tests/test_study_detail_snapshot_resolve.py +44 -0
  667. vivarium_workbench-0.3.88/tests/test_study_detail_template.py +45 -0
  668. vivarium_workbench-0.3.88/tests/test_study_dir_resolution.py +136 -0
  669. vivarium_workbench-0.3.88/tests/test_study_enrichment_lib.py +226 -0
  670. vivarium_workbench-0.3.88/tests/test_study_findings.py +429 -0
  671. vivarium_workbench-0.3.88/tests/test_study_findings_endpoint.py +131 -0
  672. vivarium_workbench-0.3.88/tests/test_study_findings_populate_endpoint.py +142 -0
  673. vivarium_workbench-0.3.88/tests/test_study_gate_render.py +33 -0
  674. vivarium_workbench-0.3.88/tests/test_study_grade.py +350 -0
  675. vivarium_workbench-0.3.88/tests/test_study_grade_endpoint.py +23 -0
  676. vivarium_workbench-0.3.88/tests/test_study_handlers.py +201 -0
  677. vivarium_workbench-0.3.88/tests/test_study_intervention_handlers.py +115 -0
  678. vivarium_workbench-0.3.88/tests/test_study_kind.py +21 -0
  679. vivarium_workbench-0.3.88/tests/test_study_migrate.py +150 -0
  680. vivarium_workbench-0.3.88/tests/test_study_narrative.py +290 -0
  681. vivarium_workbench-0.3.88/tests/test_study_narrative_command_endpoint.py +282 -0
  682. vivarium_workbench-0.3.88/tests/test_study_narrative_set.py +307 -0
  683. vivarium_workbench-0.3.88/tests/test_study_open_preserves_investigation.py +38 -0
  684. vivarium_workbench-0.3.88/tests/test_study_overview_structure.py +54 -0
  685. vivarium_workbench-0.3.88/tests/test_study_page_lib.py +272 -0
  686. vivarium_workbench-0.3.88/tests/test_study_payload_run_commands.py +12 -0
  687. vivarium_workbench-0.3.88/tests/test_study_pipeline_resolve.py +510 -0
  688. vivarium_workbench-0.3.88/tests/test_study_precheck.py +142 -0
  689. vivarium_workbench-0.3.88/tests/test_study_readout_migrate_endpoint.py +149 -0
  690. vivarium_workbench-0.3.88/tests/test_study_readouts_route.py +29 -0
  691. vivarium_workbench-0.3.88/tests/test_study_refresh_viz.py +108 -0
  692. vivarium_workbench-0.3.88/tests/test_study_reproduce_button.py +51 -0
  693. vivarium_workbench-0.3.88/tests/test_study_run_count_includes_remote.py +37 -0
  694. vivarium_workbench-0.3.88/tests/test_study_run_dry_run.py +100 -0
  695. vivarium_workbench-0.3.88/tests/test_study_run_emitter_key.py +33 -0
  696. vivarium_workbench-0.3.88/tests/test_study_run_post_lib.py +603 -0
  697. vivarium_workbench-0.3.88/tests/test_study_run_state_lib.py +204 -0
  698. vivarium_workbench-0.3.88/tests/test_study_run_variant_ensemble.py +331 -0
  699. vivarium_workbench-0.3.88/tests/test_study_runs.py +619 -0
  700. vivarium_workbench-0.3.88/tests/test_study_runs_lib.py +281 -0
  701. vivarium_workbench-0.3.88/tests/test_study_runs_overrides.py +118 -0
  702. vivarium_workbench-0.3.88/tests/test_study_schema.py +66 -0
  703. vivarium_workbench-0.3.88/tests/test_study_seed_followup.py +270 -0
  704. vivarium_workbench-0.3.88/tests/test_study_spec_lib.py +366 -0
  705. vivarium_workbench-0.3.88/tests/test_study_spec_test_diff.py +96 -0
  706. vivarium_workbench-0.3.88/tests/test_study_stats_tally.py +40 -0
  707. vivarium_workbench-0.3.88/tests/test_study_step_dispatch.py +70 -0
  708. vivarium_workbench-0.3.88/tests/test_study_sync_runs_endpoint.py +14 -0
  709. vivarium_workbench-0.3.88/tests/test_study_tabs_structure.py +74 -0
  710. vivarium_workbench-0.3.88/tests/test_study_tests_endpoint.py +49 -0
  711. vivarium_workbench-0.3.88/tests/test_study_tests_runner.py +81 -0
  712. vivarium_workbench-0.3.88/tests/test_study_to_composite.py +256 -0
  713. vivarium_workbench-0.3.88/tests/test_study_variants.py +49 -0
  714. vivarium_workbench-0.3.88/tests/test_study_verify.py +447 -0
  715. vivarium_workbench-0.3.88/tests/test_study_verify_endpoint.py +128 -0
  716. vivarium_workbench-0.3.88/tests/test_study_viz_views_lib.py +243 -0
  717. vivarium_workbench-0.3.88/tests/test_subprocess_script_encoding.py +88 -0
  718. vivarium_workbench-0.3.88/tests/test_sync_materialize.py +50 -0
  719. vivarium_workbench-0.3.88/tests/test_sync_ui.py +26 -0
  720. vivarium_workbench-0.3.88/tests/test_sync_workspace.py +82 -0
  721. vivarium_workbench-0.3.88/tests/test_system_deps.py +208 -0
  722. vivarium_workbench-0.3.88/tests/test_system_info_lib.py +208 -0
  723. vivarium_workbench-0.3.88/tests/test_test_run_views_lib.py +151 -0
  724. vivarium_workbench-0.3.88/tests/test_topology_emit.py +36 -0
  725. vivarium_workbench-0.3.88/tests/test_upload_mutations_lib.py +522 -0
  726. vivarium_workbench-0.3.88/tests/test_v3_study_validation.py +154 -0
  727. vivarium_workbench-0.3.88/tests/test_vdash_entrypoint.py +10 -0
  728. vivarium_workbench-0.3.88/tests/test_verdict_incomplete_evidence.py +126 -0
  729. vivarium_workbench-0.3.88/tests/test_visualization_endpoints.py +1970 -0
  730. vivarium_workbench-0.3.88/tests/test_viz_accept_views_lib.py +249 -0
  731. vivarium_workbench-0.3.88/tests/test_viz_commit_mutations_lib.py +379 -0
  732. vivarium_workbench-0.3.88/tests/test_viz_gate.py +364 -0
  733. vivarium_workbench-0.3.88/tests/test_viz_preview_instance_views_lib.py +187 -0
  734. vivarium_workbench-0.3.88/tests/test_viz_preview_views_lib.py +225 -0
  735. vivarium_workbench-0.3.88/tests/test_viz_write_mutations_lib.py +361 -0
  736. vivarium_workbench-0.3.88/tests/test_walkthrough_snapshot_figures.py +65 -0
  737. vivarium_workbench-0.3.88/tests/test_work_link_branch.py +89 -0
  738. vivarium_workbench-0.3.88/tests/test_work_mutations_lib.py +312 -0
  739. vivarium_workbench-0.3.88/tests/test_work_pr_views_lib.py +583 -0
  740. vivarium_workbench-0.3.88/tests/test_work_state_auto_adopt.py +140 -0
  741. vivarium_workbench-0.3.88/tests/test_work_views_lib.py +151 -0
  742. vivarium_workbench-0.3.88/tests/test_worker_idle_timeout.py +157 -0
  743. vivarium_workbench-0.3.88/tests/test_workspace_deps_views_lib.py +433 -0
  744. vivarium_workbench-0.3.88/tests/test_workspace_heal.py +153 -0
  745. vivarium_workbench-0.3.88/tests/test_workspace_manifest_views_lib.py +192 -0
  746. vivarium_workbench-0.3.88/tests/test_workspace_paths.py +205 -0
  747. vivarium_workbench-0.3.88/tests/test_workspace_pinned_deps.py +31 -0
  748. vivarium_workbench-0.3.88/tests/test_workspace_switcher_cli.py +143 -0
  749. vivarium_workbench-0.3.88/tests/test_workspace_walk_no_venv.py +181 -0
  750. vivarium_workbench-0.3.88/tests/test_workspaces_api.py +786 -0
  751. vivarium_workbench-0.3.88/tests/test_workspaces_mutations_lib.py +160 -0
  752. vivarium_workbench-0.3.88/tests/test_workspaces_process_views_lib.py +285 -0
  753. vivarium_workbench-0.3.88/tests/test_write_text_utf8_encoding.py +85 -0
  754. vivarium_workbench-0.3.88/tests/test_xarray_emitter_import_guard.py +73 -0
  755. vivarium_workbench-0.3.88/tests/test_xarray_provenance_read.py +77 -0
  756. vivarium_workbench-0.3.88/tests/test_zarr_default_viz.py +106 -0
  757. vivarium_workbench-0.3.88/uv.lock +7958 -0
  758. vivarium_workbench-0.3.88/vivarium_dashboard/__init__.py +87 -0
  759. vivarium_workbench-0.3.88/vivarium_workbench/__init__.py +2 -0
  760. vivarium_workbench-0.3.88/vivarium_workbench/api/__init__.py +0 -0
  761. vivarium_workbench-0.3.88/vivarium_workbench/api/__main__.py +52 -0
  762. vivarium_workbench-0.3.88/vivarium_workbench/api/app.py +8102 -0
  763. vivarium_workbench-0.3.88/vivarium_workbench/cli.py +1623 -0
  764. vivarium_workbench-0.3.88/vivarium_workbench/env_worker.py +4286 -0
  765. vivarium_workbench-0.3.88/vivarium_workbench/gen_readme.py +239 -0
  766. vivarium_workbench-0.3.88/vivarium_workbench/lib/__init__.py +10 -0
  767. vivarium_workbench-0.3.88/vivarium_workbench/lib/_root.py +116 -0
  768. vivarium_workbench-0.3.88/vivarium_workbench/lib/active_workspace.py +68 -0
  769. vivarium_workbench-0.3.88/vivarium_workbench/lib/adapters/__init__.py +6 -0
  770. vivarium_workbench-0.3.88/vivarium_workbench/lib/adapters/scientific_content.py +56 -0
  771. vivarium_workbench-0.3.88/vivarium_workbench/lib/agents0.py +92 -0
  772. vivarium_workbench-0.3.88/vivarium_workbench/lib/analysis_outputs.py +182 -0
  773. vivarium_workbench-0.3.88/vivarium_workbench/lib/analysis_tools.py +154 -0
  774. vivarium_workbench-0.3.88/vivarium_workbench/lib/analysis_tools_3d.py +87 -0
  775. vivarium_workbench-0.3.88/vivarium_workbench/lib/analysis_tools_simularium.py +44 -0
  776. vivarium_workbench-0.3.88/vivarium_workbench/lib/analysis_viewers.py +84 -0
  777. vivarium_workbench-0.3.88/vivarium_workbench/lib/artifacts/__init__.py +0 -0
  778. vivarium_workbench-0.3.88/vivarium_workbench/lib/artifacts/hashing.py +29 -0
  779. vivarium_workbench-0.3.88/vivarium_workbench/lib/artifacts/migrate.py +237 -0
  780. vivarium_workbench-0.3.88/vivarium_workbench/lib/artifacts/pipeline.py +534 -0
  781. vivarium_workbench-0.3.88/vivarium_workbench/lib/artifacts/store.py +159 -0
  782. vivarium_workbench-0.3.88/vivarium_workbench/lib/atomic_io.py +35 -0
  783. vivarium_workbench-0.3.88/vivarium_workbench/lib/audit_grade.py +255 -0
  784. vivarium_workbench-0.3.88/vivarium_workbench/lib/audit_panel_views.py +57 -0
  785. vivarium_workbench-0.3.88/vivarium_workbench/lib/audit_report.py +181 -0
  786. vivarium_workbench-0.3.88/vivarium_workbench/lib/audit_views.py +160 -0
  787. vivarium_workbench-0.3.88/vivarium_workbench/lib/auth_views.py +120 -0
  788. vivarium_workbench-0.3.88/vivarium_workbench/lib/auto_evaluate.py +361 -0
  789. vivarium_workbench-0.3.88/vivarium_workbench/lib/behavior_test_card.py +342 -0
  790. vivarium_workbench-0.3.88/vivarium_workbench/lib/benchmark_report.py +129 -0
  791. vivarium_workbench-0.3.88/vivarium_workbench/lib/capabilities.py +33 -0
  792. vivarium_workbench-0.3.88/vivarium_workbench/lib/catalog.py +843 -0
  793. vivarium_workbench-0.3.88/vivarium_workbench/lib/catalog_disk_cache.py +323 -0
  794. vivarium_workbench-0.3.88/vivarium_workbench/lib/catalog_install_views.py +490 -0
  795. vivarium_workbench-0.3.88/vivarium_workbench/lib/catalog_uninstall_impact.py +205 -0
  796. vivarium_workbench-0.3.88/vivarium_workbench/lib/catalog_uninstall_views.py +346 -0
  797. vivarium_workbench-0.3.88/vivarium_workbench/lib/chain_derivation.py +177 -0
  798. vivarium_workbench-0.3.88/vivarium_workbench/lib/chain_views.py +121 -0
  799. vivarium_workbench-0.3.88/vivarium_workbench/lib/citation_gaps.py +148 -0
  800. vivarium_workbench-0.3.88/vivarium_workbench/lib/cite_bands_views.py +236 -0
  801. vivarium_workbench-0.3.88/vivarium_workbench/lib/cli_runs.py +169 -0
  802. vivarium_workbench-0.3.88/vivarium_workbench/lib/comparative_runs.py +128 -0
  803. vivarium_workbench-0.3.88/vivarium_workbench/lib/comparative_viz.py +398 -0
  804. vivarium_workbench-0.3.88/vivarium_workbench/lib/compare_group_mutations.py +332 -0
  805. vivarium_workbench-0.3.88/vivarium_workbench/lib/comparison_pinning.py +181 -0
  806. vivarium_workbench-0.3.88/vivarium_workbench/lib/composite_config_adapt.py +100 -0
  807. vivarium_workbench-0.3.88/vivarium_workbench/lib/composite_flush.py +398 -0
  808. vivarium_workbench-0.3.88/vivarium_workbench/lib/composite_inner_states.py +102 -0
  809. vivarium_workbench-0.3.88/vivarium_workbench/lib/composite_lookup.py +683 -0
  810. vivarium_workbench-0.3.88/vivarium_workbench/lib/composite_mutations.py +684 -0
  811. vivarium_workbench-0.3.88/vivarium_workbench/lib/composite_recipes.py +186 -0
  812. vivarium_workbench-0.3.88/vivarium_workbench/lib/composite_resolve.py +555 -0
  813. vivarium_workbench-0.3.88/vivarium_workbench/lib/composite_run_views.py +424 -0
  814. vivarium_workbench-0.3.88/vivarium_workbench/lib/composite_runs.py +1420 -0
  815. vivarium_workbench-0.3.88/vivarium_workbench/lib/composite_state_views.py +494 -0
  816. vivarium_workbench-0.3.88/vivarium_workbench/lib/composite_stop_views.py +53 -0
  817. vivarium_workbench-0.3.88/vivarium_workbench/lib/composite_study_stats.py +132 -0
  818. vivarium_workbench-0.3.88/vivarium_workbench/lib/composite_subprocess.py +892 -0
  819. vivarium_workbench-0.3.88/vivarium_workbench/lib/composite_test_run_views.py +473 -0
  820. vivarium_workbench-0.3.88/vivarium_workbench/lib/composites_query.py +182 -0
  821. vivarium_workbench-0.3.88/vivarium_workbench/lib/conclusion_card.py +226 -0
  822. vivarium_workbench-0.3.88/vivarium_workbench/lib/config_to_composite_views.py +27 -0
  823. vivarium_workbench-0.3.88/vivarium_workbench/lib/csrf.py +101 -0
  824. vivarium_workbench-0.3.88/vivarium_workbench/lib/data_sources.py +101 -0
  825. vivarium_workbench-0.3.88/vivarium_workbench/lib/declared_results.py +113 -0
  826. vivarium_workbench-0.3.88/vivarium_workbench/lib/dep_doctor.py +82 -0
  827. vivarium_workbench-0.3.88/vivarium_workbench/lib/deploy_config.py +116 -0
  828. vivarium_workbench-0.3.88/vivarium_workbench/lib/download_views.py +283 -0
  829. vivarium_workbench-0.3.88/vivarium_workbench/lib/emitters.py +804 -0
  830. vivarium_workbench-0.3.88/vivarium_workbench/lib/ensemble_config.py +142 -0
  831. vivarium_workbench-0.3.88/vivarium_workbench/lib/env_compat.py +96 -0
  832. vivarium_workbench-0.3.88/vivarium_workbench/lib/env_fingerprint.py +138 -0
  833. vivarium_workbench-0.3.88/vivarium_workbench/lib/env_resolver.py +249 -0
  834. vivarium_workbench-0.3.88/vivarium_workbench/lib/env_worker_client.py +245 -0
  835. vivarium_workbench-0.3.88/vivarium_workbench/lib/env_worker_dialback.py +155 -0
  836. vivarium_workbench-0.3.88/vivarium_workbench/lib/env_worker_launcher.py +407 -0
  837. vivarium_workbench-0.3.88/vivarium_workbench/lib/env_worker_pool.py +391 -0
  838. vivarium_workbench-0.3.88/vivarium_workbench/lib/env_worker_provision.py +51 -0
  839. vivarium_workbench-0.3.88/vivarium_workbench/lib/env_worker_routing.py +97 -0
  840. vivarium_workbench-0.3.88/vivarium_workbench/lib/ephemeral_study.py +91 -0
  841. vivarium_workbench-0.3.88/vivarium_workbench/lib/errors.py +47 -0
  842. vivarium_workbench-0.3.88/vivarium_workbench/lib/event_log.py +72 -0
  843. vivarium_workbench-0.3.88/vivarium_workbench/lib/events.py +97 -0
  844. vivarium_workbench-0.3.88/vivarium_workbench/lib/expert_search.py +208 -0
  845. vivarium_workbench-0.3.88/vivarium_workbench/lib/explorer_data.py +1116 -0
  846. vivarium_workbench-0.3.88/vivarium_workbench/lib/federation.py +256 -0
  847. vivarium_workbench-0.3.88/vivarium_workbench/lib/feedback_actions.py +467 -0
  848. vivarium_workbench-0.3.88/vivarium_workbench/lib/feedback_record_views.py +105 -0
  849. vivarium_workbench-0.3.88/vivarium_workbench/lib/finding_observations_views.py +72 -0
  850. vivarium_workbench-0.3.88/vivarium_workbench/lib/finding_views.py +49 -0
  851. vivarium_workbench-0.3.88/vivarium_workbench/lib/gate_rigor.py +239 -0
  852. vivarium_workbench-0.3.88/vivarium_workbench/lib/generate_ts.py +271 -0
  853. vivarium_workbench-0.3.88/vivarium_workbench/lib/generation.py +285 -0
  854. vivarium_workbench-0.3.88/vivarium_workbench/lib/git_commit_views.py +106 -0
  855. vivarium_workbench-0.3.88/vivarium_workbench/lib/git_status.py +536 -0
  856. vivarium_workbench-0.3.88/vivarium_workbench/lib/github_auth.py +644 -0
  857. vivarium_workbench-0.3.88/vivarium_workbench/lib/imports.py +46 -0
  858. vivarium_workbench-0.3.88/vivarium_workbench/lib/install_errors.py +127 -0
  859. vivarium_workbench-0.3.88/vivarium_workbench/lib/install_views.py +245 -0
  860. vivarium_workbench-0.3.88/vivarium_workbench/lib/investigation_composite.py +286 -0
  861. vivarium_workbench-0.3.88/vivarium_workbench/lib/investigation_execution.py +248 -0
  862. vivarium_workbench-0.3.88/vivarium_workbench/lib/investigation_figures.py +414 -0
  863. vivarium_workbench-0.3.88/vivarium_workbench/lib/investigation_graph_views.py +166 -0
  864. vivarium_workbench-0.3.88/vivarium_workbench/lib/investigation_inputs.py +36 -0
  865. vivarium_workbench-0.3.88/vivarium_workbench/lib/investigation_members.py +42 -0
  866. vivarium_workbench-0.3.88/vivarium_workbench/lib/investigation_migrate.py +228 -0
  867. vivarium_workbench-0.3.88/vivarium_workbench/lib/investigation_report.py +700 -0
  868. vivarium_workbench-0.3.88/vivarium_workbench/lib/investigation_resolve_views.py +49 -0
  869. vivarium_workbench-0.3.88/vivarium_workbench/lib/investigation_run_one_views.py +398 -0
  870. vivarium_workbench-0.3.88/vivarium_workbench/lib/investigation_run_views.py +264 -0
  871. vivarium_workbench-0.3.88/vivarium_workbench/lib/investigation_status.py +320 -0
  872. vivarium_workbench-0.3.88/vivarium_workbench/lib/investigation_steps.py +184 -0
  873. vivarium_workbench-0.3.88/vivarium_workbench/lib/investigation_trigger.py +181 -0
  874. vivarium_workbench-0.3.88/vivarium_workbench/lib/investigation_views.py +294 -0
  875. vivarium_workbench-0.3.88/vivarium_workbench/lib/investigation_viz_mutations.py +167 -0
  876. vivarium_workbench-0.3.88/vivarium_workbench/lib/investigations.py +2073 -0
  877. vivarium_workbench-0.3.88/vivarium_workbench/lib/investigations_index.py +636 -0
  878. vivarium_workbench-0.3.88/vivarium_workbench/lib/iset_close_views.py +76 -0
  879. vivarium_workbench-0.3.88/vivarium_workbench/lib/iset_test_shims.py +141 -0
  880. vivarium_workbench-0.3.88/vivarium_workbench/lib/job_status_views.py +51 -0
  881. vivarium_workbench-0.3.88/vivarium_workbench/lib/json_serialize.py +125 -0
  882. vivarium_workbench-0.3.88/vivarium_workbench/lib/lifecycle_mutations.py +388 -0
  883. vivarium_workbench-0.3.88/vivarium_workbench/lib/linkage_index.py +725 -0
  884. vivarium_workbench-0.3.88/vivarium_workbench/lib/loom_savepoints.py +89 -0
  885. vivarium_workbench-0.3.88/vivarium_workbench/lib/loop_provenance_views.py +69 -0
  886. vivarium_workbench-0.3.88/vivarium_workbench/lib/materialization.py +183 -0
  887. vivarium_workbench-0.3.88/vivarium_workbench/lib/materialization_jobs.py +218 -0
  888. vivarium_workbench-0.3.88/vivarium_workbench/lib/metadata_mutations.py +519 -0
  889. vivarium_workbench-0.3.88/vivarium_workbench/lib/misc_mutations.py +133 -0
  890. vivarium_workbench-0.3.88/vivarium_workbench/lib/misc_post_views.py +177 -0
  891. vivarium_workbench-0.3.88/vivarium_workbench/lib/models.py +3456 -0
  892. vivarium_workbench-0.3.88/vivarium_workbench/lib/module_import_doctor.py +244 -0
  893. vivarium_workbench-0.3.88/vivarium_workbench/lib/module_stats.py +675 -0
  894. vivarium_workbench-0.3.88/vivarium_workbench/lib/needs_attention.py +786 -0
  895. vivarium_workbench-0.3.88/vivarium_workbench/lib/node_store.py +40 -0
  896. vivarium_workbench-0.3.88/vivarium_workbench/lib/notebook_export.py +1004 -0
  897. vivarium_workbench-0.3.88/vivarium_workbench/lib/observables_views.py +335 -0
  898. vivarium_workbench-0.3.88/vivarium_workbench/lib/param_enforcement.py +126 -0
  899. vivarium_workbench-0.3.88/vivarium_workbench/lib/pbg_export.py +259 -0
  900. vivarium_workbench-0.3.88/vivarium_workbench/lib/pdf_metadata.py +114 -0
  901. vivarium_workbench-0.3.88/vivarium_workbench/lib/ports/__init__.py +6 -0
  902. vivarium_workbench-0.3.88/vivarium_workbench/lib/ports/scientific_content.py +43 -0
  903. vivarium_workbench-0.3.88/vivarium_workbench/lib/preflight.py +662 -0
  904. vivarium_workbench-0.3.88/vivarium_workbench/lib/prepare_investigation.py +314 -0
  905. vivarium_workbench-0.3.88/vivarium_workbench/lib/process_docs.py +206 -0
  906. vivarium_workbench-0.3.88/vivarium_workbench/lib/process_study_stats.py +152 -0
  907. vivarium_workbench-0.3.88/vivarium_workbench/lib/provenance_manifest.py +103 -0
  908. vivarium_workbench-0.3.88/vivarium_workbench/lib/pyproject_edit.py +223 -0
  909. vivarium_workbench-0.3.88/vivarium_workbench/lib/readout_migrate_views.py +78 -0
  910. vivarium_workbench-0.3.88/vivarium_workbench/lib/readout_migration_status_views.py +76 -0
  911. vivarium_workbench-0.3.88/vivarium_workbench/lib/readout_validation.py +377 -0
  912. vivarium_workbench-0.3.88/vivarium_workbench/lib/readouts_views.py +516 -0
  913. vivarium_workbench-0.3.88/vivarium_workbench/lib/reference_mutations.py +356 -0
  914. vivarium_workbench-0.3.88/vivarium_workbench/lib/references_fetch.py +306 -0
  915. vivarium_workbench-0.3.88/vivarium_workbench/lib/refresh_viz.py +131 -0
  916. vivarium_workbench-0.3.88/vivarium_workbench/lib/refusal.py +110 -0
  917. vivarium_workbench-0.3.88/vivarium_workbench/lib/registry.py +625 -0
  918. vivarium_workbench-0.3.88/vivarium_workbench/lib/remote_analysis_figures.py +432 -0
  919. vivarium_workbench-0.3.88/vivarium_workbench/lib/remote_build_source.py +336 -0
  920. vivarium_workbench-0.3.88/vivarium_workbench/lib/remote_link.py +239 -0
  921. vivarium_workbench-0.3.88/vivarium_workbench/lib/remote_pinned.py +232 -0
  922. vivarium_workbench-0.3.88/vivarium_workbench/lib/remote_reconcile.py +190 -0
  923. vivarium_workbench-0.3.88/vivarium_workbench/lib/remote_run.py +427 -0
  924. vivarium_workbench-0.3.88/vivarium_workbench/lib/remote_run_jobs.py +218 -0
  925. vivarium_workbench-0.3.88/vivarium_workbench/lib/remote_run_landing.py +459 -0
  926. vivarium_workbench-0.3.88/vivarium_workbench/lib/remote_run_views.py +847 -0
  927. vivarium_workbench-0.3.88/vivarium_workbench/lib/remote_simulations.py +620 -0
  928. vivarium_workbench-0.3.88/vivarium_workbench/lib/repo_source.py +140 -0
  929. vivarium_workbench-0.3.88/vivarium_workbench/lib/report.py +737 -0
  930. vivarium_workbench-0.3.88/vivarium_workbench/lib/report_card_section.py +203 -0
  931. vivarium_workbench-0.3.88/vivarium_workbench/lib/report_views.py +969 -0
  932. vivarium_workbench-0.3.88/vivarium_workbench/lib/request_logging.py +55 -0
  933. vivarium_workbench-0.3.88/vivarium_workbench/lib/rerun.py +521 -0
  934. vivarium_workbench-0.3.88/vivarium_workbench/lib/result_fingerprint.py +161 -0
  935. vivarium_workbench-0.3.88/vivarium_workbench/lib/results_views.py +155 -0
  936. vivarium_workbench-0.3.88/vivarium_workbench/lib/rigor_views.py +136 -0
  937. vivarium_workbench-0.3.88/vivarium_workbench/lib/run_capabilities.py +27 -0
  938. vivarium_workbench-0.3.88/vivarium_workbench/lib/run_commands.py +105 -0
  939. vivarium_workbench-0.3.88/vivarium_workbench/lib/run_core.py +61 -0
  940. vivarium_workbench-0.3.88/vivarium_workbench/lib/run_index.py +226 -0
  941. vivarium_workbench-0.3.88/vivarium_workbench/lib/run_jobs.py +460 -0
  942. vivarium_workbench-0.3.88/vivarium_workbench/lib/run_log.py +106 -0
  943. vivarium_workbench-0.3.88/vivarium_workbench/lib/run_registry.py +184 -0
  944. vivarium_workbench-0.3.88/vivarium_workbench/lib/run_runner.py +1324 -0
  945. vivarium_workbench-0.3.88/vivarium_workbench/lib/run_store.py +66 -0
  946. vivarium_workbench-0.3.88/vivarium_workbench/lib/run_unblocked_views.py +253 -0
  947. vivarium_workbench-0.3.88/vivarium_workbench/lib/runs_index.py +21 -0
  948. vivarium_workbench-0.3.88/vivarium_workbench/lib/saved_visualizations.py +163 -0
  949. vivarium_workbench-0.3.88/vivarium_workbench/lib/scaffold_mutations.py +212 -0
  950. vivarium_workbench-0.3.88/vivarium_workbench/lib/scaffold_yaml.py +550 -0
  951. vivarium_workbench-0.3.88/vivarium_workbench/lib/server_capabilities.py +114 -0
  952. vivarium_workbench-0.3.88/vivarium_workbench/lib/server_version.py +52 -0
  953. vivarium_workbench-0.3.88/vivarium_workbench/lib/session_env.py +110 -0
  954. vivarium_workbench-0.3.88/vivarium_workbench/lib/session_registry.py +85 -0
  955. vivarium_workbench-0.3.88/vivarium_workbench/lib/simulations_index.py +2176 -0
  956. vivarium_workbench-0.3.88/vivarium_workbench/lib/single_study_report.py +2607 -0
  957. vivarium_workbench-0.3.88/vivarium_workbench/lib/smoke.py +312 -0
  958. vivarium_workbench-0.3.88/vivarium_workbench/lib/sms_api_client.py +791 -0
  959. vivarium_workbench-0.3.88/vivarium_workbench/lib/source_build_views.py +157 -0
  960. vivarium_workbench-0.3.88/vivarium_workbench/lib/source_switch_views.py +79 -0
  961. vivarium_workbench-0.3.88/vivarium_workbench/lib/spec_migration.py +228 -0
  962. vivarium_workbench-0.3.88/vivarium_workbench/lib/spec_norm.py +51 -0
  963. vivarium_workbench-0.3.88/vivarium_workbench/lib/staging.py +86 -0
  964. vivarium_workbench-0.3.88/vivarium_workbench/lib/startup.py +250 -0
  965. vivarium_workbench-0.3.88/vivarium_workbench/lib/static_serving.py +143 -0
  966. vivarium_workbench-0.3.88/vivarium_workbench/lib/step_baseline.py +123 -0
  967. vivarium_workbench-0.3.88/vivarium_workbench/lib/study_charts.py +1767 -0
  968. vivarium_workbench-0.3.88/vivarium_workbench/lib/study_create_views.py +226 -0
  969. vivarium_workbench-0.3.88/vivarium_workbench/lib/study_crud_mutations.py +437 -0
  970. vivarium_workbench-0.3.88/vivarium_workbench/lib/study_derivations.py +140 -0
  971. vivarium_workbench-0.3.88/vivarium_workbench/lib/study_enrichment.py +292 -0
  972. vivarium_workbench-0.3.88/vivarium_workbench/lib/study_findings.py +542 -0
  973. vivarium_workbench-0.3.88/vivarium_workbench/lib/study_findings_views.py +101 -0
  974. vivarium_workbench-0.3.88/vivarium_workbench/lib/study_grade.py +162 -0
  975. vivarium_workbench-0.3.88/vivarium_workbench/lib/study_kind.py +23 -0
  976. vivarium_workbench-0.3.88/vivarium_workbench/lib/study_migrate.py +174 -0
  977. vivarium_workbench-0.3.88/vivarium_workbench/lib/study_narrative.py +530 -0
  978. vivarium_workbench-0.3.88/vivarium_workbench/lib/study_narrative_command_views.py +203 -0
  979. vivarium_workbench-0.3.88/vivarium_workbench/lib/study_native_gallery.py +59 -0
  980. vivarium_workbench-0.3.88/vivarium_workbench/lib/study_page.py +972 -0
  981. vivarium_workbench-0.3.88/vivarium_workbench/lib/study_run_post.py +440 -0
  982. vivarium_workbench-0.3.88/vivarium_workbench/lib/study_run_state.py +227 -0
  983. vivarium_workbench-0.3.88/vivarium_workbench/lib/study_runs.py +1096 -0
  984. vivarium_workbench-0.3.88/vivarium_workbench/lib/study_seed.py +535 -0
  985. vivarium_workbench-0.3.88/vivarium_workbench/lib/study_spec.py +1647 -0
  986. vivarium_workbench-0.3.88/vivarium_workbench/lib/study_tests.py +242 -0
  987. vivarium_workbench-0.3.88/vivarium_workbench/lib/study_to_composite.py +202 -0
  988. vivarium_workbench-0.3.88/vivarium_workbench/lib/study_variants.py +49 -0
  989. vivarium_workbench-0.3.88/vivarium_workbench/lib/study_verify.py +551 -0
  990. vivarium_workbench-0.3.88/vivarium_workbench/lib/study_verify_views.py +83 -0
  991. vivarium_workbench-0.3.88/vivarium_workbench/lib/study_viz_views.py +258 -0
  992. vivarium_workbench-0.3.88/vivarium_workbench/lib/suggest_requests.py +46 -0
  993. vivarium_workbench-0.3.88/vivarium_workbench/lib/sync_materialize.py +51 -0
  994. vivarium_workbench-0.3.88/vivarium_workbench/lib/sync_workspace.py +63 -0
  995. vivarium_workbench-0.3.88/vivarium_workbench/lib/system_info.py +209 -0
  996. vivarium_workbench-0.3.88/vivarium_workbench/lib/test_run_views.py +84 -0
  997. vivarium_workbench-0.3.88/vivarium_workbench/lib/topology_viz.py +241 -0
  998. vivarium_workbench-0.3.88/vivarium_workbench/lib/ui_settings_mutations.py +51 -0
  999. vivarium_workbench-0.3.88/vivarium_workbench/lib/upload_mutations.py +440 -0
  1000. vivarium_workbench-0.3.88/vivarium_workbench/lib/visualization_classes.py +43 -0
  1001. vivarium_workbench-0.3.88/vivarium_workbench/lib/viz_accept_views.py +83 -0
  1002. vivarium_workbench-0.3.88/vivarium_workbench/lib/viz_commit_mutations.py +307 -0
  1003. vivarium_workbench-0.3.88/vivarium_workbench/lib/viz_gate.py +227 -0
  1004. vivarium_workbench-0.3.88/vivarium_workbench/lib/viz_preview_instance_views.py +132 -0
  1005. vivarium_workbench-0.3.88/vivarium_workbench/lib/viz_preview_views.py +117 -0
  1006. vivarium_workbench-0.3.88/vivarium_workbench/lib/viz_render.py +40 -0
  1007. vivarium_workbench-0.3.88/vivarium_workbench/lib/viz_write_mutations.py +277 -0
  1008. vivarium_workbench-0.3.88/vivarium_workbench/lib/work_mutations.py +202 -0
  1009. vivarium_workbench-0.3.88/vivarium_workbench/lib/work_pr_views.py +374 -0
  1010. vivarium_workbench-0.3.88/vivarium_workbench/lib/work_state.py +202 -0
  1011. vivarium_workbench-0.3.88/vivarium_workbench/lib/work_views.py +167 -0
  1012. vivarium_workbench-0.3.88/vivarium_workbench/lib/workspace_context.py +54 -0
  1013. vivarium_workbench-0.3.88/vivarium_workbench/lib/workspace_deps_views.py +393 -0
  1014. vivarium_workbench-0.3.88/vivarium_workbench/lib/workspace_heal.py +116 -0
  1015. vivarium_workbench-0.3.88/vivarium_workbench/lib/workspace_manifest_views.py +338 -0
  1016. vivarium_workbench-0.3.88/vivarium_workbench/lib/workspace_paths.py +140 -0
  1017. vivarium_workbench-0.3.88/vivarium_workbench/lib/workspace_walk.py +84 -0
  1018. vivarium_workbench-0.3.88/vivarium_workbench/lib/workspace_yaml.py +41 -0
  1019. vivarium_workbench-0.3.88/vivarium_workbench/lib/workspaces_mutations.py +99 -0
  1020. vivarium_workbench-0.3.88/vivarium_workbench/lib/workspaces_process_views.py +169 -0
  1021. vivarium_workbench-0.3.88/vivarium_workbench/lib/zarr_default_viz.py +125 -0
  1022. vivarium_workbench-0.3.88/vivarium_workbench/loom/.dockerignore +10 -0
  1023. vivarium_workbench-0.3.88/vivarium_workbench/loom/.gitignore +22 -0
  1024. vivarium_workbench-0.3.88/vivarium_workbench/loom/Dockerfile +23 -0
  1025. vivarium_workbench-0.3.88/vivarium_workbench/loom/LICENSE +202 -0
  1026. vivarium_workbench-0.3.88/vivarium_workbench/loom/README.md +61 -0
  1027. vivarium_workbench-0.3.88/vivarium_workbench/loom/bigraph_loom/__init__.py +34 -0
  1028. vivarium_workbench-0.3.88/vivarium_workbench/loom/index.html +16 -0
  1029. vivarium_workbench-0.3.88/vivarium_workbench/loom/package-lock.json +3941 -0
  1030. vivarium_workbench-0.3.88/vivarium_workbench/loom/package.json +41 -0
  1031. vivarium_workbench-0.3.88/vivarium_workbench/loom/pyproject.toml +40 -0
  1032. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/App.css +2551 -0
  1033. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/App.tsx +2734 -0
  1034. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/EmitContext.tsx +7 -0
  1035. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/Katex.tsx +74 -0
  1036. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/App.test.tsx +142 -0
  1037. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/ConfigPanel.test.tsx +118 -0
  1038. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/DockContainer.test.tsx +112 -0
  1039. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/ExploreRunBar.test.tsx +78 -0
  1040. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/ProcessPanel.test.tsx +166 -0
  1041. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/ProcessRail.test.tsx +185 -0
  1042. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/ResultsPanel.test.tsx +116 -0
  1043. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/RunPanel.test.tsx +136 -0
  1044. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/SetupRunPanel.test.tsx +135 -0
  1045. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/affinity.test.ts +394 -0
  1046. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/affinityFixture.test.ts +73 -0
  1047. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/api.test.ts +236 -0
  1048. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/boundary.test.ts +83 -0
  1049. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/clusterGrid.test.ts +167 -0
  1050. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/collapse.test.ts +35 -0
  1051. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/contract.test.ts +76 -0
  1052. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/convert.test.ts +78 -0
  1053. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/depthStack.test.ts +67 -0
  1054. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/edgeTiers.test.tsx +33 -0
  1055. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/edgeVisibility.test.ts +256 -0
  1056. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/egoLayout.test.ts +72 -0
  1057. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/emitDefault.test.ts +98 -0
  1058. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/fixtures/v2ecoli-baseline.json +1 -0
  1059. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/focusGating.test.tsx +89 -0
  1060. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/geometry.test.ts +48 -0
  1061. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/hierarchy.test.ts +45 -0
  1062. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/hierarchyLayout.test.ts +113 -0
  1063. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/inspectorRich.test.tsx +76 -0
  1064. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/layout.test.ts +57 -0
  1065. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/lockInspector.test.tsx +90 -0
  1066. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/parsers.test.ts +27 -0
  1067. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/pickDrawnEdges.test.ts +49 -0
  1068. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/portInfo.test.ts +79 -0
  1069. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/processColumn.test.ts +335 -0
  1070. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/registry.test.ts +33 -0
  1071. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/semanticZoom.test.tsx +185 -0
  1072. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/sidebar.test.tsx +172 -0
  1073. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/snapshotSeries.test.ts +48 -0
  1074. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/storeTiers.test.tsx +115 -0
  1075. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/subsystem.test.ts +64 -0
  1076. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/tabSwitch.test.tsx +97 -0
  1077. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/topoPlayback.test.ts +23 -0
  1078. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/treeFlow.test.ts +163 -0
  1079. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/typeAbbrev.test.ts +34 -0
  1080. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/useCompositeRun.test.tsx +109 -0
  1081. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/useFocus.test.ts +100 -0
  1082. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/useLayoutMode.test.ts +44 -0
  1083. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/viewStore.test.ts +119 -0
  1084. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/api.ts +587 -0
  1085. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/collapse.ts +110 -0
  1086. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/collapseRedundant.ts +304 -0
  1087. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/configView.ts +70 -0
  1088. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/contract.ts +119 -0
  1089. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/convert.ts +508 -0
  1090. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/edges/BoundaryLabels.tsx +115 -0
  1091. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/edges/FloatingStoreEdge.tsx +349 -0
  1092. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/edges/LightWireEdge.tsx +38 -0
  1093. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/edges/PlaceEdge.tsx +64 -0
  1094. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/edges/boundary.ts +72 -0
  1095. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/edges/geometry.ts +38 -0
  1096. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/hooks/useCompositeRun.ts +333 -0
  1097. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/hooks/useFocus.ts +118 -0
  1098. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/hooks/useLayoutMode.ts +44 -0
  1099. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/labels.ts +6 -0
  1100. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/layout.ts +3 -0
  1101. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/layoutStore.ts +141 -0
  1102. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/layouts/affinity.ts +219 -0
  1103. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/layouts/clusterGrid.ts +411 -0
  1104. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/layouts/depthStack.ts +144 -0
  1105. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/layouts/egoLayout.ts +110 -0
  1106. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/layouts/flow.ts +141 -0
  1107. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/layouts/hierarchy.ts +459 -0
  1108. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/layouts/incremental.ts +65 -0
  1109. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/layouts/nestingTree.ts +132 -0
  1110. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/layouts/pickDrawnEdges.ts +26 -0
  1111. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/layouts/processColumn.ts +310 -0
  1112. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/layouts/registry.ts +36 -0
  1113. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/layouts/subsystem.ts +93 -0
  1114. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/layouts/tiers.ts +46 -0
  1115. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/layouts/treeFlow.ts +498 -0
  1116. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/layouts/types.ts +80 -0
  1117. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/main.tsx +11 -0
  1118. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/mathText.tsx +165 -0
  1119. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/nodes/InnerCompositePreview.tsx +550 -0
  1120. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/nodes/ProcessNode.tsx +621 -0
  1121. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/nodes/StoreNode.tsx +193 -0
  1122. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/panels/CompositeInfo.tsx +84 -0
  1123. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/panels/ConfigFileInput.tsx +81 -0
  1124. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/panels/ConfigPanel.tsx +598 -0
  1125. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/panels/DetailMenu.tsx +136 -0
  1126. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/panels/DockContainer.tsx +305 -0
  1127. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/panels/DocumentPanel.tsx +101 -0
  1128. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/panels/ExploreRunBar.tsx +319 -0
  1129. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/panels/InspectorPanel.tsx +265 -0
  1130. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/panels/JsonNode.tsx +130 -0
  1131. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/panels/LayoutMenu.tsx +138 -0
  1132. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/panels/NestingTree.tsx +177 -0
  1133. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/panels/NodesPanel.tsx +225 -0
  1134. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/panels/OutputsPanel.tsx +155 -0
  1135. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/panels/ProcessPanel.tsx +218 -0
  1136. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/panels/ProcessRail.tsx +207 -0
  1137. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/panels/ResultsPanel.tsx +174 -0
  1138. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/panels/SavePointsMenu.tsx +256 -0
  1139. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/panels/SetupRunPanel.tsx +518 -0
  1140. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/panels/TopoTransport.tsx +37 -0
  1141. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/panels/ViewsMenu.tsx +233 -0
  1142. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/panels/VisualizationsPanel.tsx +201 -0
  1143. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/panels/filterHidden.ts +100 -0
  1144. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/parsers.ts +20 -0
  1145. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/portInfo.ts +75 -0
  1146. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/savepoints.ts +111 -0
  1147. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/snapshotSeries.ts +179 -0
  1148. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/storeFacts.ts +72 -0
  1149. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/topoPlayback.ts +23 -0
  1150. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/types.ts +87 -0
  1151. vivarium_workbench-0.3.88/vivarium_workbench/loom/src/viewStore.ts +226 -0
  1152. vivarium_workbench-0.3.88/vivarium_workbench/loom/tsconfig.json +21 -0
  1153. vivarium_workbench-0.3.88/vivarium_workbench/loom/tsconfig.node.json +11 -0
  1154. vivarium_workbench-0.3.88/vivarium_workbench/loom/vite.config.ts +21 -0
  1155. vivarium_workbench-0.3.88/vivarium_workbench/loom/vitest.config.ts +9 -0
  1156. vivarium_workbench-0.3.88/vivarium_workbench/loom_assets.py +6 -0
  1157. vivarium_workbench-0.3.88/vivarium_workbench/publish.py +1568 -0
  1158. vivarium_workbench-0.3.88/vivarium_workbench/server.py +42 -0
  1159. vivarium_workbench-0.3.88/vivarium_workbench/static/aig-graph.js +144 -0
  1160. vivarium_workbench-0.3.88/vivarium_workbench/static/audit.js +176 -0
  1161. vivarium_workbench-0.3.88/vivarium_workbench/static/branch-source.js +1054 -0
  1162. vivarium_workbench-0.3.88/vivarium_workbench/static/checklist-select.js +67 -0
  1163. vivarium_workbench-0.3.88/vivarium_workbench/static/client.js +60 -0
  1164. vivarium_workbench-0.3.88/vivarium_workbench/static/col-resize.js +128 -0
  1165. vivarium_workbench-0.3.88/vivarium_workbench/static/composite-card.js +1011 -0
  1166. vivarium_workbench-0.3.88/vivarium_workbench/static/configure-run.js +289 -0
  1167. vivarium_workbench-0.3.88/vivarium_workbench/static/data-source.js +432 -0
  1168. vivarium_workbench-0.3.88/vivarium_workbench/static/github-login.js +304 -0
  1169. vivarium_workbench-0.3.88/vivarium_workbench/static/investigation-switcher.js +461 -0
  1170. vivarium_workbench-0.3.88/vivarium_workbench/static/loom-embed.js +330 -0
  1171. vivarium_workbench-0.3.88/vivarium_workbench/static/process-code.js +423 -0
  1172. vivarium_workbench-0.3.88/vivarium_workbench/static/progress-track.css +128 -0
  1173. vivarium_workbench-0.3.88/vivarium_workbench/static/progress-track.js +244 -0
  1174. vivarium_workbench-0.3.88/vivarium_workbench/static/render-helpers.js +30 -0
  1175. vivarium_workbench-0.3.88/vivarium_workbench/static/session-status.js +185 -0
  1176. vivarium_workbench-0.3.88/vivarium_workbench/static/session.js +205 -0
  1177. vivarium_workbench-0.3.88/vivarium_workbench/static/sim-table.js +988 -0
  1178. vivarium_workbench-0.3.88/vivarium_workbench/static/simularium-viewer.html +234 -0
  1179. vivarium_workbench-0.3.88/vivarium_workbench/static/snapshot-readonly.css +189 -0
  1180. vivarium_workbench-0.3.88/vivarium_workbench/static/source-switch.js +269 -0
  1181. vivarium_workbench-0.3.88/vivarium_workbench/static/study-detail.js +4973 -0
  1182. vivarium_workbench-0.3.88/vivarium_workbench/static/style.css +5237 -0
  1183. vivarium_workbench-0.3.88/vivarium_workbench/static/types/domain.generated.d.ts +523 -0
  1184. vivarium_workbench-0.3.88/vivarium_workbench/static/vivarium-logo-dark.png +0 -0
  1185. vivarium_workbench-0.3.88/vivarium_workbench/static/vivarium-logo.png +0 -0
  1186. vivarium_workbench-0.3.88/vivarium_workbench/static/walkthrough.js +16685 -0
  1187. vivarium_workbench-0.3.88/vivarium_workbench/static/workspace-picker.js +403 -0
  1188. vivarium_workbench-0.3.88/vivarium_workbench/static/workspace-switcher.js +302 -0
  1189. vivarium_workbench-0.3.88/vivarium_workbench/templates/index.html.j2 +2632 -0
  1190. vivarium_workbench-0.3.88/vivarium_workbench/templates/investigation-report.html +1480 -0
  1191. vivarium_workbench-0.3.88/vivarium_workbench/templates/study-detail.html +2342 -0
  1192. vivarium_workbench-0.3.88/vivarium_workbench/testing/__init__.py +8 -0
  1193. vivarium_workbench-0.3.88/vivarium_workbench/testing/run_fixture.py +210 -0
  1194. vivarium_workbench-0.3.88/vivarium_workbench/testing/study_fixtures.py +278 -0
  1195. vivarium_workbench-0.3.88/vivarium_workbench/testing/test_modular_tests_e2e.py +72 -0
  1196. vivarium_workbench-0.3.88/vivarium_workbench/testing/test_modular_tests_js.py +16 -0
  1197. vivarium_workbench-0.3.88/vivarium_workbench/testing/test_modular_tests_payload.py +33 -0
  1198. vivarium_workbench-0.3.88/vivarium_workbench/testing/test_modular_tests_render.py +40 -0
  1199. vivarium_workbench-0.3.88/vivarium_workbench/testing/test_overview_result_figure.py +61 -0
  1200. vivarium_workbench-0.3.88/vivarium_workbench/testing/test_study_detail_run_card.py +18 -0
  1201. vivarium_workbench-0.3.88/vivarium_workbench/testing/test_walkthrough_run_chips.py +46 -0
@@ -0,0 +1,35 @@
1
+ # Keep the build context small — the image installs the workbench package (built
2
+ # by hatchling from pyproject), not the whole repo. Exclude VCS, envs, caches,
3
+ # and material not needed to build/run the workbench.
4
+ .git
5
+ .github
6
+ .venv
7
+ venv
8
+ **/__pycache__
9
+ **/*.pyc
10
+ .pytest_cache
11
+ .mypy_cache
12
+ .ruff_cache
13
+ .idea
14
+ .vscode
15
+ .claude
16
+ .superpowers
17
+
18
+ # Docs, demos, and the deploy manifests are not part of the runtime image.
19
+ docs
20
+ demos
21
+ deploy
22
+
23
+ # Test fixtures can be large and are not needed at runtime.
24
+ tests/_fixtures
25
+
26
+ # Local scratch / build artifacts
27
+ *.egg-info
28
+ dist
29
+ build
30
+
31
+ # Vendored bigraph-loom (Task 8) build outputs — rebuilt in-image by
32
+ # scripts/build_loom.sh; a host-built copy would bloat the context and could
33
+ # be stale/platform-mismatched.
34
+ vivarium_workbench/loom/node_modules
35
+ vivarium_workbench/loom/_dist
@@ -0,0 +1,133 @@
1
+ name: Build and Push Image
2
+
3
+ # Builds the vivarium-workbench server image (linux/amd64, for the EKS nodes) and
4
+ # pushes it to ghcr.io.
5
+ #
6
+ # Since #932 the image contains only the workbench and its own locked
7
+ # dependencies -- no workspace package, no science stack. That removed the two
8
+ # things that made this workflow unusable:
9
+ #
10
+ # * It no longer copies a venv out of a per-commit sms-ecoli/v2ecoli image, so
11
+ # there is nothing to pull from GovCloud ECR -- for which this runner has no
12
+ # credential (no OIDC federation from GitHub Actions into that account
13
+ # exists, and building one is real, separate infra work). The
14
+ # `workspace_image` input is therefore GONE, not merely optional.
15
+ # * The build no longer imports v2ecoli -> polars, so it does not need AVX and
16
+ # is not tied to a native amd64 runner for correctness (it still runs on one,
17
+ # which is simply faster than emulation).
18
+ #
19
+ # Release-triggering is still deliberately absent. v0.3.38 shipped a real,
20
+ # confirmed-broken tag+Release from an automatic run; cutting a Release here is
21
+ # documentation, and the image is published by this manual dispatch (or by
22
+ # `deploy/build-and-push.sh`, the same command this workflow runs).
23
+ #
24
+ # Version provenance (#1114): a semver `version` input is gated -- it must be
25
+ # dispatched from `main`, match `pyproject.toml` exactly, and have an existing
26
+ # `v<version>` tag pointing at the exact checked-out commit, and the ghcr tag
27
+ # must not already exist. `deploy/bump-and-release.sh` produces all of this
28
+ # correctly in one command; a bare `version` input typed into the dispatch form
29
+ # by hand will fail this gate unless it already satisfies it. An empty
30
+ # `version` (short-sha build) is exempt -- it is self-describing already.
31
+ on:
32
+ workflow_dispatch:
33
+ inputs:
34
+ version:
35
+ description: "Image tag to build+push (default: git short sha)"
36
+ required: false
37
+ default: ""
38
+ pbg_ptools_ref:
39
+ description: "git ref for the pbg-ptools Omics-Viewer plugin (default: main)"
40
+ required: false
41
+ default: "main"
42
+
43
+ jobs:
44
+ build-and-push:
45
+ runs-on: ubuntu-latest
46
+ permissions:
47
+ contents: read
48
+ packages: write # push to ghcr.io
49
+ steps:
50
+ # Kept but no longer critical: the image is ~744 MB since #932 (was ~15 GB).
51
+ - name: Free disk space
52
+ uses: jlumbroso/free-disk-space@main
53
+ with:
54
+ tool-cache: true
55
+ large-packages: true
56
+ docker-images: false
57
+ swap-storage: false
58
+
59
+ - name: Checkout
60
+ uses: actions/checkout@v4
61
+ with:
62
+ # Both required for the provenance gate below: fetch-depth:0 for the
63
+ # full commit history (v<version> may not be a recent commit), and
64
+ # fetch-tags explicitly since actions/checkout does not reliably
65
+ # fetch tags from fetch-depth alone.
66
+ fetch-depth: 0
67
+ fetch-tags: true
68
+
69
+ - name: Set up Docker Buildx
70
+ uses: docker/setup-buildx-action@v3
71
+
72
+ - name: Log in to ghcr.io
73
+ uses: docker/login-action@v3
74
+ with:
75
+ registry: ghcr.io
76
+ username: ${{ github.actor }}
77
+ # Reuse the org GHCR_PAT (as sms-api does); fall back to GITHUB_TOKEN.
78
+ password: ${{ secrets.GHCR_PAT || secrets.GITHUB_TOKEN }}
79
+
80
+ - name: Enforce version provenance (#1114)
81
+ run: |
82
+ set -euo pipefail
83
+ VERSION="${{ inputs.version }}"
84
+ VERSION="${VERSION#v}"
85
+
86
+ if [[ -z "${VERSION}" ]]; then
87
+ echo "no version given -- short-sha build, self-describing, provenance rule does not apply"
88
+ exit 0
89
+ fi
90
+
91
+ if [[ ! "${VERSION}" =~ ^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)$ ]]; then
92
+ echo "'${VERSION}' is not strict X.Y.Z semver -- omit version for a short-sha build, or use deploy/bump-and-release.sh" >&2
93
+ exit 1
94
+ fi
95
+
96
+ if [[ "${GITHUB_REF}" != "refs/heads/main" ]]; then
97
+ echo "a semver version must be dispatched from main (this run's ref: ${GITHUB_REF}) -- deploy/bump-and-release.sh does this for you" >&2
98
+ exit 1
99
+ fi
100
+
101
+ PYPROJECT_VERSION="$(grep -m1 '^version = ' pyproject.toml | sed -E 's/^version = "(.*)"$/\1/')"
102
+ if [[ "${PYPROJECT_VERSION}" != "${VERSION}" ]]; then
103
+ echo "pyproject.toml says ${PYPROJECT_VERSION}, dispatch asked for ${VERSION} -- these must match exactly" >&2
104
+ exit 1
105
+ fi
106
+
107
+ TAG_SHA="$(git rev-list -n1 "v${VERSION}" 2>/dev/null || true)"
108
+ if [[ -z "${TAG_SHA}" ]]; then
109
+ echo "tag v${VERSION} does not exist -- deploy/bump-and-release.sh creates it before dispatching" >&2
110
+ exit 1
111
+ fi
112
+ HEAD_SHA="$(git rev-parse HEAD)"
113
+ if [[ "${TAG_SHA}" != "${HEAD_SHA}" ]]; then
114
+ echo "tag v${VERSION} (${TAG_SHA}) does not point at the checked-out commit (${HEAD_SHA}) -- the tag and the build would be provably different things" >&2
115
+ exit 1
116
+ fi
117
+
118
+ if docker manifest inspect "ghcr.io/${{ github.repository_owner }}/vivarium-workbench:${VERSION}" >/dev/null 2>&1; then
119
+ echo "ghcr.io/${{ github.repository_owner }}/vivarium-workbench:${VERSION} already exists -- never silently overwrite a published image" >&2
120
+ exit 1
121
+ fi
122
+
123
+ echo "provenance OK: v${VERSION} == pyproject.toml == HEAD (${HEAD_SHA}), ghcr tag unused"
124
+
125
+ - name: Build + push (linux/amd64)
126
+ env:
127
+ PBG_PTOOLS_REF: ${{ inputs.pbg_ptools_ref }}
128
+ run: |
129
+ set -euo pipefail
130
+ chmod +x deploy/build-and-push.sh
131
+ VERSION="${{ inputs.version }}"
132
+ VERSION="${VERSION#v}" # strip a leading v -> matches sms-api newTag (e.g. 0.1.0)
133
+ deploy/build-and-push.sh "$VERSION"
@@ -0,0 +1,30 @@
1
+ name: js
2
+
3
+ # Frontend unit tests (tests/js/). The dashboard's static/*.js has no bundler
4
+ # and no framework — these are plain Node scripts (require + assert). The audit
5
+ # flagged that the one existing JS test was never wired to run at all; this is
6
+ # that wiring. Fast (seconds), so it's its own check rather than folded into the
7
+ # Python suite.
8
+ #
9
+ # Scope is deliberately small for now: run the existing tests/js/ files. Broader
10
+ # coverage of the large unverified frontend (walkthrough.js et al.) is later
11
+ # hardening work, not this job.
12
+
13
+ on:
14
+ pull_request:
15
+ push:
16
+ branches: [main]
17
+
18
+ jobs:
19
+ js:
20
+ runs-on: ubuntu-latest
21
+ timeout-minutes: 5
22
+ steps:
23
+ - uses: actions/checkout@v4
24
+ # node is preinstalled on ubuntu-latest; setup-node pins it and makes the
25
+ # version explicit/upgradable rather than implicit.
26
+ - uses: actions/setup-node@v4
27
+ with:
28
+ node-version: "20"
29
+ - name: run JS tests
30
+ run: bash scripts/run_js_tests.sh
@@ -0,0 +1,102 @@
1
+ name: pytest
2
+
3
+ # The full test suite as a PR gate.
4
+ #
5
+ # Until now CI ran `types.yml` only: mypy, import-linter, and FOUR named test
6
+ # files out of 285. The other ~98% of the suite never ran on a PR, so it rotted
7
+ # silently — switching it on surfaced 77 failures that predated any single
8
+ # change, including a companion-library API drift that had been broken for
9
+ # weeks and a feature that was inert in production.
10
+ #
11
+ # This gate runs everything except the tests listed in tests/known_failures.txt
12
+ # (see that file: the list is documented, justified, and meant to shrink). A
13
+ # second, non-blocking job runs exactly the quarantined set so that a test which
14
+ # starts passing becomes visible instead of sitting on the list forever.
15
+
16
+ on:
17
+ pull_request:
18
+ push:
19
+ branches: [main]
20
+
21
+ jobs:
22
+ suite:
23
+ # 4 shards x 4 cores each = ~16-way parallelism. Two levels, because each
24
+ # alone leaves time on the table: a single job caps at the runner's 4 cores
25
+ # (~6 min), while sharding without xdist wastes 3 of every 4 cores. Shards
26
+ # are duration-balanced via .test_durations — see scripts/pytest_gate.sh.
27
+ name: suite ${{ matrix.group }}/4
28
+ runs-on: ubuntu-latest
29
+ strategy:
30
+ # Run every shard even when one fails: a single red shard should still
31
+ # tell you about failures in the other three, or you fix them one round
32
+ # trip at a time.
33
+ fail-fast: false
34
+ matrix:
35
+ group: [1, 2, 3, 4]
36
+ timeout-minutes: 20
37
+ # Same interpreter pin as types.yml: the demo extra pulls v2ecoli, which is
38
+ # pinned ==3.12.12, so the lock resolves for that one environment.
39
+ env:
40
+ UV_PYTHON: "3.12.12"
41
+ steps:
42
+ - uses: actions/checkout@v4
43
+ - uses: astral-sh/setup-uv@v5
44
+ with:
45
+ enable-cache: true
46
+ - name: Install (locked)
47
+ # --frozen: install straight from uv.lock without re-resolving, so the
48
+ # `demo` extra's editable path sources (../v2ecoli, ../pbg-ptools) — not
49
+ # checked out in CI — are never touched.
50
+ #
51
+ # `test` (polars/pyarrow/zarr) is REQUIRED here, unlike in types.yml:
52
+ # without it 11 tests fail rather than skip, because the parquet/zarr
53
+ # readers are missing entirely.
54
+ run: uv sync --frozen --extra dev --extra test
55
+ - name: pytest (shard ${{ matrix.group }}/4, quarantine deselected)
56
+ # Serial single-job was ~14 min, xdist-only ~6 min. Sharding divides the
57
+ # remaining test time by 4; the ~45s of checkout+sync is paid per shard
58
+ # but runs concurrently, so it does not add to wall time.
59
+ env:
60
+ PYTEST_SPLITS: "4"
61
+ PYTEST_GROUP: ${{ matrix.group }}
62
+ run: uv run --frozen bash scripts/pytest_gate.sh
63
+
64
+ suite-result:
65
+ # Single stable check for branch protection to require. Without this you'd
66
+ # have to require each `suite N/4` by name, and changing the shard count
67
+ # would silently un-require the ones that no longer exist — the gate would
68
+ # look configured while enforcing nothing.
69
+ name: suite
70
+ needs: suite
71
+ if: always()
72
+ runs-on: ubuntu-latest
73
+ steps:
74
+ - name: Check shard results
75
+ run: |
76
+ if [[ "${{ needs.suite.result }}" != "success" ]]; then
77
+ echo "::error::one or more test shards failed (${{ needs.suite.result }})"
78
+ exit 1
79
+ fi
80
+ echo "all shards passed"
81
+
82
+ quarantined:
83
+ name: quarantine watch
84
+ runs-on: ubuntu-latest
85
+ timeout-minutes: 20
86
+ # Reports on the known-failing set. Deliberately GREEN when they all still
87
+ # fail, because a check that is red on every PR by design teaches everyone
88
+ # to ignore red — which would defeat the gate above. It surfaces the
89
+ # actionable case instead: a quarantined test that starts PASSING, and can
90
+ # therefore be deleted from tests/known_failures.txt. Details land in the
91
+ # job summary.
92
+ env:
93
+ UV_PYTHON: "3.12.12"
94
+ steps:
95
+ - uses: actions/checkout@v4
96
+ - uses: astral-sh/setup-uv@v5
97
+ with:
98
+ enable-cache: true
99
+ - name: Install (locked)
100
+ run: uv sync --frozen --extra dev --extra test
101
+ - name: pytest (quarantined only)
102
+ run: uv run --frozen bash scripts/pytest_gate.sh --only-known
@@ -0,0 +1,29 @@
1
+ name: release
2
+ on:
3
+ push:
4
+ tags: ["v*"]
5
+ permissions:
6
+ id-token: write # for PyPI trusted publishing
7
+ jobs:
8
+ publish:
9
+ runs-on: ubuntu-latest
10
+ steps:
11
+ - uses: actions/checkout@v4
12
+ # Node is needed because the hatchling build hook (hatch_build.py) builds
13
+ # the vendored bigraph-loom bundle (vivarium_workbench/loom/_dist) into the
14
+ # wheel. VIVARIUM_WORKBENCH_REQUIRE_LOOM=1 (below) makes a missing bundle a
15
+ # hard error on the publish path, so the shipped Explorer is never blank.
16
+ - uses: actions/setup-node@v4
17
+ with:
18
+ node-version: "20"
19
+ - uses: actions/setup-python@v5
20
+ with:
21
+ python-version: "3.11"
22
+ - name: Install uv
23
+ run: pip install uv
24
+ - name: Build (loom bundle required)
25
+ env:
26
+ VIVARIUM_WORKBENCH_REQUIRE_LOOM: "1"
27
+ run: uv build
28
+ - name: Publish to PyPI
29
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,43 @@
1
+ name: types
2
+
3
+ # Keeps the pydantic payload models honest: mypy on the typed modules + the
4
+ # model tests that validate real handler output against them. Scoped, fast gate;
5
+ # broader pytest CI can be added as a separate workflow later.
6
+
7
+ on:
8
+ pull_request:
9
+ push:
10
+ branches: [main]
11
+
12
+ jobs:
13
+ types:
14
+ runs-on: ubuntu-latest
15
+ # Pin the interpreter to 3.12.12: the demo track adds
16
+ # `[tool.uv] environments = "python_full_version == '3.12.12'"` (the demo
17
+ # extra pulls v2ecoli, which is pinned ==3.12.12), so the lock resolves for
18
+ # that one environment. uv fetches this managed CPython automatically.
19
+ env:
20
+ UV_PYTHON: "3.12.12"
21
+ steps:
22
+ - uses: actions/checkout@v4
23
+ - uses: astral-sh/setup-uv@v5
24
+ with:
25
+ enable-cache: true
26
+ - name: Install (locked)
27
+ # --frozen: install straight from uv.lock without re-resolving, so the
28
+ # `demo` extra's editable path sources (../v2ecoli, ../pbg-ptools) — not
29
+ # checked out in CI — are never touched. This gate only needs `dev`.
30
+ run: uv sync --frozen --extra dev
31
+ - name: ruff (F + E722 correctness gate, shipped packages)
32
+ # Behaviour-only lint (pyflakes + bare-except): undefined names, unused
33
+ # imports/vars, duplicate defs. Config in [tool.ruff.lint]. Scoped to the
34
+ # shipped packages; the test tree is not yet under the gate.
35
+ # `--with` layers a pinned ruff onto the frozen env without adding it to
36
+ # uv.lock (re-locking this repo needs a sandbox worktree — avoided here).
37
+ run: uv run --frozen --with "ruff==0.16.2" ruff check vivarium_workbench vivarium_dashboard
38
+ - name: mypy (typed modules)
39
+ run: uv run --frozen mypy
40
+ - name: import-linter (ports & adapters layering)
41
+ run: uv run --frozen lint-imports
42
+ - name: Payload-model + generated-TS + API + lib tests
43
+ run: uv run --frozen pytest tests/test_payload_models.py tests/test_generate_ts.py tests/test_api_app.py tests/test_investigation_status.py -q
@@ -0,0 +1,36 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *.egg-info/
6
+ *.egg
7
+ .eggs/
8
+ build/
9
+ dist/
10
+ wheels/
11
+ .venv/
12
+ venv/
13
+ env/
14
+
15
+ # Tests
16
+ .pytest_cache/
17
+ .coverage
18
+ htmlcov/
19
+ .tox/
20
+
21
+ # Editor
22
+ .idea/
23
+ .vscode/
24
+ *.swp
25
+ .DS_Store
26
+ todo.md
27
+ .superpowers/
28
+ .perspective.md
29
+ .claude/*
30
+ */node_modules/*
31
+ .todo/_backlog.md
32
+ .todo/backlog/
33
+
34
+ # Vendored bigraph-loom (Task 8): build outputs, not source.
35
+ vivarium_workbench/loom/node_modules/
36
+ vivarium_workbench/loom/_dist
@@ -0,0 +1 @@
1
+ 3.12.12