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.
- vivarium_workbench-0.3.88/.dockerignore +35 -0
- vivarium_workbench-0.3.88/.github/workflows/build-and-push.yml +133 -0
- vivarium_workbench-0.3.88/.github/workflows/js.yml +30 -0
- vivarium_workbench-0.3.88/.github/workflows/pytest.yml +102 -0
- vivarium_workbench-0.3.88/.github/workflows/release.yml +29 -0
- vivarium_workbench-0.3.88/.github/workflows/types.yml +43 -0
- vivarium_workbench-0.3.88/.gitignore +36 -0
- vivarium_workbench-0.3.88/.python-version +1 -0
- vivarium_workbench-0.3.88/.test_durations +3268 -0
- vivarium_workbench-0.3.88/AGENTS.md +68 -0
- vivarium_workbench-0.3.88/CLAUDE.md +166 -0
- vivarium_workbench-0.3.88/CONTRIBUTING.md +60 -0
- vivarium_workbench-0.3.88/Dockerfile +196 -0
- vivarium_workbench-0.3.88/LICENSE +202 -0
- vivarium_workbench-0.3.88/PKG-INFO +49 -0
- vivarium_workbench-0.3.88/README.md +197 -0
- vivarium_workbench-0.3.88/db +0 -0
- vivarium_workbench-0.3.88/deploy/README.md +84 -0
- vivarium_workbench-0.3.88/deploy/batch-build-and-push.sh +120 -0
- vivarium_workbench-0.3.88/deploy/build-and-push.sh +106 -0
- vivarium_workbench-0.3.88/deploy/bump-and-release.sh +123 -0
- vivarium_workbench-0.3.88/docs/ARCHITECTURE-DEEP-DIVE.md +296 -0
- vivarium_workbench-0.3.88/docs/ARCHITECTURE.md +469 -0
- vivarium_workbench-0.3.88/docs/REFACTOR-PLAN.md +1656 -0
- vivarium_workbench-0.3.88/docs/USAGE.md +160 -0
- vivarium_workbench-0.3.88/docs/ai-onboarding.md +143 -0
- vivarium_workbench-0.3.88/docs/analyses-tab.md +97 -0
- vivarium_workbench-0.3.88/docs/dashboard-api-vs-viva-api.md +80 -0
- vivarium_workbench-0.3.88/docs/data-explorer.md +85 -0
- vivarium_workbench-0.3.88/docs/dual-engine-comparison.md +481 -0
- vivarium_workbench-0.3.88/docs/env-worker-protocol.md +514 -0
- vivarium_workbench-0.3.88/docs/env-worker-routing.md +236 -0
- vivarium_workbench-0.3.88/docs/env-worker-runtime.md +189 -0
- vivarium_workbench-0.3.88/docs/investigation-narrative-schema.md +142 -0
- vivarium_workbench-0.3.88/docs/materialization-lifecycle.md +384 -0
- vivarium_workbench-0.3.88/docs/post-run-analyses.md +90 -0
- vivarium_workbench-0.3.88/docs/ptools-launcher.md +101 -0
- vivarium_workbench-0.3.88/docs/q1-q2.md +462 -0
- vivarium_workbench-0.3.88/docs/remote-dispatch-composite-resolution.md +232 -0
- vivarium_workbench-0.3.88/docs/remote-govcloud-onboarding.md +91 -0
- vivarium_workbench-0.3.88/docs/round-trip-pipeline.md +57 -0
- vivarium_workbench-0.3.88/docs/run-backend.md +208 -0
- vivarium_workbench-0.3.88/docs/run-orchestration-consolidation.md +1243 -0
- vivarium_workbench-0.3.88/docs/session-binding.md +224 -0
- vivarium_workbench-0.3.88/docs/session-registry.md +231 -0
- vivarium_workbench-0.3.88/docs/sms-ecoli-contribution-and-verification-discipline.md +138 -0
- vivarium_workbench-0.3.88/docs/studies-and-investigations.md +206 -0
- vivarium_workbench-0.3.88/docs/superpowers/plans/2026-09-22-env-worker-module-provisioning.md +107 -0
- vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-10-read-only-online-dashboard-design.md +110 -0
- vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-11-spine-presentation-design.md +55 -0
- vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-18-dashboard-remote-runs-design.md +261 -0
- vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-20-analyses-data-explorer-design.md +182 -0
- vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-20-data-explorer-v2-design.md +151 -0
- vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-23-commit-agnostic-remote-builds-design.md +174 -0
- vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-23-commit-agnostic-workspace-switch-design.md +197 -0
- vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-23-source-branch-panel-design.md +167 -0
- vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-24-fastapi-server-cutover-design.md +135 -0
- vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-26-fastapi-state-app-state-design.md +131 -0
- vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-26-remote-run-thin-client-design.md +141 -0
- vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-26-study-run-engine-extraction-design.md +154 -0
- vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-27-vivarium-server-three-plane-architecture-design.md +396 -0
- vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-28-auto-readouts-tab-debloat-design.md +190 -0
- vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-28-consolidate-study-derivations-design.md +101 -0
- vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-28-investigation-graph-readability-design.md +117 -0
- vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-28-phase-a-event-bus-design.md +139 -0
- vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-28-phase-b1-evidence-chain-design.md +154 -0
- vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-28-phase-b2-chain-derivation-design.md +132 -0
- vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-28-phase-b4-aig-graph-design.md +111 -0
- vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-28-remote-sourced-dashboard-design.md +175 -0
- vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-28-study-overview-declutter-design.md +85 -0
- vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-28-study-tab-consolidation-design.md +90 -0
- vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-28-unified-run-core-design.md +174 -0
- vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-28-unified-run-ui-sp-c-design.md +126 -0
- vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-29-compose-unification-design.md +97 -0
- vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-29-conclusions-declutter-design.md +77 -0
- vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-29-investigation-landing-list-design.md +64 -0
- vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-29-investigation-page-declutter-design.md +83 -0
- vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-29-run-workspace-on-sms-api-design.md +170 -0
- vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-29-sp-d-deployment-composite-resolve-design.md +123 -0
- vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-30-bigraph-loom-revamp-reintegration-design.md +113 -0
- vivarium_workbench-0.3.88/docs/superpowers/specs/2026-06-30-run-cli-design.md +164 -0
- vivarium_workbench-0.3.88/docs/superpowers/specs/2026-07-01-readonly-explorer-and-studies-sidebar-design.md +205 -0
- vivarium_workbench-0.3.88/docs/superpowers/specs/2026-07-21-investigation-graph-semantic-zoom-design.md +63 -0
- vivarium_workbench-0.3.88/docs/superpowers/specs/2026-07-21-workbench-loom-emitter-simsdb-design.md +153 -0
- vivarium_workbench-0.3.88/docs/superpowers/specs/2026-07-23-loom-process-column-view-design.md +364 -0
- vivarium_workbench-0.3.88/docs/superpowers/specs/2026-07-25-capability-matched-analysis-tools-design.md +215 -0
- vivarium_workbench-0.3.88/docs/superpowers/specs/2026-07-25-investigation-workspace-study-tabs-design.md +223 -0
- vivarium_workbench-0.3.88/docs/superpowers/specs/2026-07-25-marketplace-federated-content-design.md +227 -0
- vivarium_workbench-0.3.88/docs/superpowers/specs/2026-07-25-rerun-capability-design.md +128 -0
- vivarium_workbench-0.3.88/docs/superpowers/specs/2026-07-25-study-pipeline-spec1-execution.md +149 -0
- vivarium_workbench-0.3.88/docs/superpowers/specs/2026-07-26-module-cards-content-counts.md +103 -0
- vivarium_workbench-0.3.88/docs/superpowers/specs/2026-07-26-workflow-engine-phase2-2a2b-design.md +86 -0
- vivarium_workbench-0.3.88/docs/superpowers/specs/2026-07-27-reproducible-rerun-spine-design.md +121 -0
- vivarium_workbench-0.3.88/docs/superpowers/specs/2026-07-29-framework-unification-design.md +323 -0
- vivarium_workbench-0.3.88/docs/superpowers/specs/2026-07-31-study-page-declutter-design.md +258 -0
- vivarium_workbench-0.3.88/docs/superpowers/specs/2026-08-01-investigation-as-composite-design.md +217 -0
- vivarium_workbench-0.3.88/docs/superpowers/specs/2026-08-01-study-design-fable-pass.md +1276 -0
- vivarium_workbench-0.3.88/docs/superpowers/specs/2026-08-02-store-dataflow-refactor-design.md +116 -0
- vivarium_workbench-0.3.88/docs/superpowers/specs/2026-08-10-investigation-figures-design.md +189 -0
- vivarium_workbench-0.3.88/docs/superpowers/specs/2026-09-06-composite-run-auto-results-design.md +213 -0
- vivarium_workbench-0.3.88/docs/superpowers/specs/2026-09-22-env-worker-module-provisioning-design.md +62 -0
- vivarium_workbench-0.3.88/docs/ui-api-consumption-survey.md +276 -0
- vivarium_workbench-0.3.88/docs/workbench-api-survey.md +210 -0
- vivarium_workbench-0.3.88/docs/workspace-picker-pinned-commit-mechanics.md +202 -0
- vivarium_workbench-0.3.88/docs/workspace-store.md +203 -0
- vivarium_workbench-0.3.88/hatch_build.py +156 -0
- vivarium_workbench-0.3.88/pyproject.toml +414 -0
- vivarium_workbench-0.3.88/scripts/build_explorer_assets.py +121 -0
- vivarium_workbench-0.3.88/scripts/build_explorer_bio_assets.py +230 -0
- vivarium_workbench-0.3.88/scripts/build_loom.sh +22 -0
- vivarium_workbench-0.3.88/scripts/build_monomer_meta.py +87 -0
- vivarium_workbench-0.3.88/scripts/pytest_gate.sh +132 -0
- vivarium_workbench-0.3.88/scripts/run_js_tests.sh +45 -0
- vivarium_workbench-0.3.88/scripts/set-govcloud-env.sh +16 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_emitter_demo/pbg_ws_emitter_demo/__init__.py +6 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_emitter_demo/pbg_ws_emitter_demo/composites/__init__.py +50 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_emitter_demo/pbg_ws_emitter_demo/core.py +14 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_emitter_demo/pbg_ws_emitter_demo/emitter.py +52 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_emitter_demo/workspace.yaml +16 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_collision/external/donor/investigations/donor_inv/investigation.yaml +3 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_collision/external/donor/studies/shared/study.yaml +2 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_collision/external/donor/workspace.yaml +2 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_collision/investigations/local_inv/investigation.yaml +3 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_collision/studies/shared/study.yaml +3 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_collision/workspace.yaml +1 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/.pbg/server/server-info +1 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/external/broken/workspace.yaml +2 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/external/donor/donor/composites/donor.composite.yaml +3 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/external/donor/investigations/donor_inv/investigation.yaml +3 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/external/donor/studies/donor_study/study.yaml +4 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/external/donor/workspace.yaml +2 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/reports/assets/aig-graph.js +144 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/reports/assets/audit.js +176 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/reports/assets/branch-source.js +766 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/reports/assets/client.js +60 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/reports/assets/col-resize.js +128 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/reports/assets/composite-card.js +756 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/reports/assets/configure-run.js +289 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/reports/assets/data-source.js +382 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/reports/assets/github-login.js +304 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/reports/assets/investigation-switcher.js +461 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/reports/assets/loom-embed.js +103 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/reports/assets/progress-track.css +128 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/reports/assets/progress-track.js +244 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/reports/assets/render-helpers.js +30 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/reports/assets/session-status.js +185 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/reports/assets/session.js +190 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/reports/assets/sim-table.js +680 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/reports/assets/snapshot-readonly.css +189 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/reports/assets/source-switch.js +269 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/reports/assets/study-detail.js +3490 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/reports/assets/style.css +5052 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/reports/assets/vivarium-logo-dark.png +0 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/reports/assets/vivarium-logo.png +0 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/reports/assets/walkthrough.js +16580 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/reports/assets/workspace-picker.js +376 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/reports/assets/workspace-switcher.js +302 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/reports/index.html +2388 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_federation_demo/workspace.yaml +1 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/.pbg/server/server-info +1 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/investigations/baseline/data/.keep +0 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/investigations/baseline/spec.yaml +22 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/pbg_ws_increase_demo/__init__.py +4 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/pbg_ws_increase_demo/composites/__init__.py +12 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/pbg_ws_increase_demo/composites/increase-demo.composite.yaml +34 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/pbg_ws_increase_demo/core.py +10 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/pbg_ws_increase_demo/processes.py +16 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/pbg_ws_increase_demo/visualizations/__init__.py +0 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/pbg_ws_increase_demo/visualizations/demo_workspace_plot.py +48 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/aig-graph.js +144 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/audit.js +176 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/branch-source.js +766 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/client.js +60 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/col-resize.js +128 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/composite-card.js +756 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/configure-run.js +289 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/data-source.js +382 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/explorer-views.js +804 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/explorer.html +35 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/explorer.js +227 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/github-login.js +304 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/investigation-switcher.js +461 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/loom-embed.js +103 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/progress-track.css +128 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/progress-track.js +244 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/render-helpers.js +30 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/session-status.js +185 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/session.js +190 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/sim-table.js +680 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/snapshot-readonly.css +189 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/source-switch.js +269 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/study-detail.js +3490 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/style.css +5052 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/vivarium-logo-dark.png +0 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/vivarium-logo.png +0 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/walkthrough.js +16580 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/workspace-picker.js +376 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/assets/workspace-switcher.js +302 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/reports/index.html +2388 -0
- vivarium_workbench-0.3.88/tests/_fixtures/ws_increase_demo/workspace.yaml +20 -0
- vivarium_workbench-0.3.88/tests/conftest.py +417 -0
- vivarium_workbench-0.3.88/tests/js/test_base_path_navigation.js +53 -0
- vivarium_workbench-0.3.88/tests/js/test_chain_block.js +76 -0
- vivarium_workbench-0.3.88/tests/js/test_choose_graph_orientation.js +27 -0
- vivarium_workbench-0.3.88/tests/js/test_cloud_run_chip.js +97 -0
- vivarium_workbench-0.3.88/tests/js/test_layout_opts_for_band.js +23 -0
- vivarium_workbench-0.3.88/tests/js/test_progress_track.js +87 -0
- vivarium_workbench-0.3.88/tests/js/test_run_redrive_poll.js +135 -0
- vivarium_workbench-0.3.88/tests/js/test_session.js +82 -0
- vivarium_workbench-0.3.88/tests/js/test_session_bootstrap.js +72 -0
- vivarium_workbench-0.3.88/tests/js/test_session_bootstrap_build.js +64 -0
- vivarium_workbench-0.3.88/tests/js/test_session_status.js +107 -0
- vivarium_workbench-0.3.88/tests/js/test_workspace_picker.js +73 -0
- vivarium_workbench-0.3.88/tests/known_failures.txt +91 -0
- vivarium_workbench-0.3.88/tests/test_C1_pbg_export.py +168 -0
- vivarium_workbench-0.3.88/tests/test_C2_roundtrip.py +348 -0
- vivarium_workbench-0.3.88/tests/test_C3_emitter_deepcopy.py +162 -0
- vivarium_workbench-0.3.88/tests/test_C3_sms_client.py +290 -0
- vivarium_workbench-0.3.88/tests/test_C4_cli.py +240 -0
- vivarium_workbench-0.3.88/tests/test_C5_plan_provenance_dissolved.py +148 -0
- vivarium_workbench-0.3.88/tests/test_C6_report_cards_inline_expectations.py +206 -0
- vivarium_workbench-0.3.88/tests/test_ac_gating_matrix_panel.py +41 -0
- vivarium_workbench-0.3.88/tests/test_acceptance_rollup_surface.py +100 -0
- vivarium_workbench-0.3.88/tests/test_active_branch_staging.py +53 -0
- vivarium_workbench-0.3.88/tests/test_active_workspace_lib.py +66 -0
- vivarium_workbench-0.3.88/tests/test_actor_attribution.py +194 -0
- vivarium_workbench-0.3.88/tests/test_add_dashboard_cli.py +54 -0
- vivarium_workbench-0.3.88/tests/test_agents0.py +94 -0
- vivarium_workbench-0.3.88/tests/test_analyses_page_render.py +45 -0
- vivarium_workbench-0.3.88/tests/test_analysis_outputs.py +77 -0
- vivarium_workbench-0.3.88/tests/test_analysis_tools.py +144 -0
- vivarium_workbench-0.3.88/tests/test_analysis_tools_3d.py +50 -0
- vivarium_workbench-0.3.88/tests/test_analysis_tools_simularium.py +71 -0
- vivarium_workbench-0.3.88/tests/test_analysis_viewers_worker.py +212 -0
- vivarium_workbench-0.3.88/tests/test_api_analysis_tools.py +38 -0
- vivarium_workbench-0.3.88/tests/test_api_app.py +6522 -0
- vivarium_workbench-0.3.88/tests/test_api_rerun.py +78 -0
- vivarium_workbench-0.3.88/tests/test_artifact_hashing.py +115 -0
- vivarium_workbench-0.3.88/tests/test_artifact_migration.py +288 -0
- vivarium_workbench-0.3.88/tests/test_artifact_store.py +68 -0
- vivarium_workbench-0.3.88/tests/test_atomic_io.py +80 -0
- vivarium_workbench-0.3.88/tests/test_audit_grade.py +65 -0
- vivarium_workbench-0.3.88/tests/test_audit_panel_views.py +131 -0
- vivarium_workbench-0.3.88/tests/test_audit_report.py +46 -0
- vivarium_workbench-0.3.88/tests/test_audit_views.py +279 -0
- vivarium_workbench-0.3.88/tests/test_auth_views_lib.py +186 -0
- vivarium_workbench-0.3.88/tests/test_authoring_endpoints.py +57 -0
- vivarium_workbench-0.3.88/tests/test_auto_evaluate.py +253 -0
- vivarium_workbench-0.3.88/tests/test_auto_evaluate_axis.py +21 -0
- vivarium_workbench-0.3.88/tests/test_auto_results_setting.py +157 -0
- vivarium_workbench-0.3.88/tests/test_auto_results_write.py +93 -0
- vivarium_workbench-0.3.88/tests/test_b4_wiring.py +21 -0
- vivarium_workbench-0.3.88/tests/test_batch_build_and_push.py +117 -0
- vivarium_workbench-0.3.88/tests/test_behavior_test_card.py +184 -0
- vivarium_workbench-0.3.88/tests/test_benchmark_report.py +54 -0
- vivarium_workbench-0.3.88/tests/test_build_panel_render.py +49 -0
- vivarium_workbench-0.3.88/tests/test_capabilities.py +17 -0
- vivarium_workbench-0.3.88/tests/test_catalog_disk_cache.py +373 -0
- vivarium_workbench-0.3.88/tests/test_catalog_install_source.py +254 -0
- vivarium_workbench-0.3.88/tests/test_catalog_install_views_lib.py +626 -0
- vivarium_workbench-0.3.88/tests/test_catalog_probe_batch.py +152 -0
- vivarium_workbench-0.3.88/tests/test_catalog_timeout_routing.py +78 -0
- vivarium_workbench-0.3.88/tests/test_catalog_uninstall_views_lib.py +261 -0
- vivarium_workbench-0.3.88/tests/test_chain_derivation.py +132 -0
- vivarium_workbench-0.3.88/tests/test_citation_gaps.py +158 -0
- vivarium_workbench-0.3.88/tests/test_cite_bands_views.py +321 -0
- vivarium_workbench-0.3.88/tests/test_cli_run_commands.py +87 -0
- vivarium_workbench-0.3.88/tests/test_cli_runs.py +106 -0
- vivarium_workbench-0.3.88/tests/test_cli_sync.py +88 -0
- vivarium_workbench-0.3.88/tests/test_collect_study_feedback.py +58 -0
- vivarium_workbench-0.3.88/tests/test_collect_study_observables.py +180 -0
- vivarium_workbench-0.3.88/tests/test_comparative_runs_lib.py +301 -0
- vivarium_workbench-0.3.88/tests/test_compare_group_mutations_lib.py +621 -0
- vivarium_workbench-0.3.88/tests/test_comparison_pinning.py +134 -0
- vivarium_workbench-0.3.88/tests/test_compose_model_baseline_merge.py +273 -0
- vivarium_workbench-0.3.88/tests/test_compose_unification.py +133 -0
- vivarium_workbench-0.3.88/tests/test_composite_config_adapt.py +146 -0
- vivarium_workbench-0.3.88/tests/test_composite_declared_emit_paths.py +43 -0
- vivarium_workbench-0.3.88/tests/test_composite_explore_base_path.py +55 -0
- vivarium_workbench-0.3.88/tests/test_composite_explorer_api.py +225 -0
- vivarium_workbench-0.3.88/tests/test_composite_flush.py +161 -0
- vivarium_workbench-0.3.88/tests/test_composite_flush_autoresults.py +140 -0
- vivarium_workbench-0.3.88/tests/test_composite_flush_diff.py +229 -0
- vivarium_workbench-0.3.88/tests/test_composite_flush_gate.py +55 -0
- vivarium_workbench-0.3.88/tests/test_composite_flush_verdict.py +129 -0
- vivarium_workbench-0.3.88/tests/test_composite_mutations_lib.py +512 -0
- vivarium_workbench-0.3.88/tests/test_composite_recipes.py +116 -0
- vivarium_workbench-0.3.88/tests/test_composite_ref_resolve_robust.py +77 -0
- vivarium_workbench-0.3.88/tests/test_composite_resolution_lint.py +210 -0
- vivarium_workbench-0.3.88/tests/test_composite_resolve_dispatch.py +370 -0
- vivarium_workbench-0.3.88/tests/test_composite_resolve_fallback.py +130 -0
- vivarium_workbench-0.3.88/tests/test_composite_resolve_generator_module.py +56 -0
- vivarium_workbench-0.3.88/tests/test_composite_run_download.py +216 -0
- vivarium_workbench-0.3.88/tests/test_composite_run_pinned_confirm.py +70 -0
- vivarium_workbench-0.3.88/tests/test_composite_run_status_flush_flags.py +143 -0
- vivarium_workbench-0.3.88/tests/test_composite_run_views_lib.py +317 -0
- vivarium_workbench-0.3.88/tests/test_composite_runs.py +577 -0
- vivarium_workbench-0.3.88/tests/test_composite_runs_jsonl.py +31 -0
- vivarium_workbench-0.3.88/tests/test_composite_source_endpoints.py +49 -0
- vivarium_workbench-0.3.88/tests/test_composite_state_lib.py +297 -0
- vivarium_workbench-0.3.88/tests/test_composite_stop_views_lib.py +79 -0
- vivarium_workbench-0.3.88/tests/test_composite_subprocess_emitter.py +41 -0
- vivarium_workbench-0.3.88/tests/test_composite_subprocess_fingerprint.py +117 -0
- vivarium_workbench-0.3.88/tests/test_composite_subprocess_lib.py +687 -0
- vivarium_workbench-0.3.88/tests/test_composite_test_run_durable.py +58 -0
- vivarium_workbench-0.3.88/tests/test_composite_test_run_remote_build.py +307 -0
- vivarium_workbench-0.3.88/tests/test_composite_test_run_views_lib.py +289 -0
- vivarium_workbench-0.3.88/tests/test_composites_kind_module.py +221 -0
- vivarium_workbench-0.3.88/tests/test_compute_param_enforcement.py +144 -0
- vivarium_workbench-0.3.88/tests/test_computed_verdict_render.py +229 -0
- vivarium_workbench-0.3.88/tests/test_conclusion_card.py +189 -0
- vivarium_workbench-0.3.88/tests/test_conclusion_freeze_indicator.py +140 -0
- vivarium_workbench-0.3.88/tests/test_conclusion_markdown.py +33 -0
- vivarium_workbench-0.3.88/tests/test_conclusion_route.py +60 -0
- vivarium_workbench-0.3.88/tests/test_conclusions_structure.py +44 -0
- vivarium_workbench-0.3.88/tests/test_config_to_composite_route.py +58 -0
- vivarium_workbench-0.3.88/tests/test_configure_run_embeddings.py +38 -0
- vivarium_workbench-0.3.88/tests/test_configure_run_run_kind.py +15 -0
- vivarium_workbench-0.3.88/tests/test_configure_run_widget.py +66 -0
- vivarium_workbench-0.3.88/tests/test_consolidate_run_index.py +107 -0
- vivarium_workbench-0.3.88/tests/test_csrf_lib.py +136 -0
- vivarium_workbench-0.3.88/tests/test_csrf_origin_guard.py +164 -0
- vivarium_workbench-0.3.88/tests/test_data_endpoints.py +668 -0
- vivarium_workbench-0.3.88/tests/test_data_sources_worker.py +122 -0
- vivarium_workbench-0.3.88/tests/test_dblclick_open_study.py +16 -0
- vivarium_workbench-0.3.88/tests/test_decision_route.py +53 -0
- vivarium_workbench-0.3.88/tests/test_declared_results.py +212 -0
- vivarium_workbench-0.3.88/tests/test_declared_scale_precheck.py +102 -0
- vivarium_workbench-0.3.88/tests/test_dep_doctor.py +39 -0
- vivarium_workbench-0.3.88/tests/test_deploy_config.py +160 -0
- vivarium_workbench-0.3.88/tests/test_derivations_js_dedup.py +16 -0
- vivarium_workbench-0.3.88/tests/test_derived_block_embed.py +38 -0
- vivarium_workbench-0.3.88/tests/test_discover_static_charts.py +269 -0
- vivarium_workbench-0.3.88/tests/test_discover_viz_html_files.py +252 -0
- vivarium_workbench-0.3.88/tests/test_dispatch_confirm_modal.py +89 -0
- vivarium_workbench-0.3.88/tests/test_dockerfile_slim_image.py +116 -0
- vivarium_workbench-0.3.88/tests/test_dockerfile_workspace_repo.py +72 -0
- vivarium_workbench-0.3.88/tests/test_download_views_lib.py +215 -0
- vivarium_workbench-0.3.88/tests/test_emitter_label_none.py +74 -0
- vivarium_workbench-0.3.88/tests/test_emitters_broker.py +261 -0
- vivarium_workbench-0.3.88/tests/test_emitters_e2e.py +211 -0
- vivarium_workbench-0.3.88/tests/test_emitters_run_with_emitter.py +284 -0
- vivarium_workbench-0.3.88/tests/test_ensemble_config.py +97 -0
- vivarium_workbench-0.3.88/tests/test_env_fingerprint.py +44 -0
- vivarium_workbench-0.3.88/tests/test_env_resolver.py +119 -0
- vivarium_workbench-0.3.88/tests/test_env_worker.py +621 -0
- vivarium_workbench-0.3.88/tests/test_env_worker_authoring.py +144 -0
- vivarium_workbench-0.3.88/tests/test_env_worker_composite_source.py +88 -0
- vivarium_workbench-0.3.88/tests/test_env_worker_config_to_composite.py +32 -0
- vivarium_workbench-0.3.88/tests/test_env_worker_dialback.py +226 -0
- vivarium_workbench-0.3.88/tests/test_env_worker_launcher.py +136 -0
- vivarium_workbench-0.3.88/tests/test_env_worker_pool.py +117 -0
- vivarium_workbench-0.3.88/tests/test_env_worker_process_source.py +129 -0
- vivarium_workbench-0.3.88/tests/test_env_worker_provision.py +242 -0
- vivarium_workbench-0.3.88/tests/test_env_worker_provision_specs.py +93 -0
- vivarium_workbench-0.3.88/tests/test_env_worker_routing.py +282 -0
- vivarium_workbench-0.3.88/tests/test_env_worker_viz_preview.py +194 -0
- vivarium_workbench-0.3.88/tests/test_ephemeral_study.py +89 -0
- vivarium_workbench-0.3.88/tests/test_error_envelope.py +62 -0
- vivarium_workbench-0.3.88/tests/test_event_log.py +35 -0
- vivarium_workbench-0.3.88/tests/test_events_lib.py +138 -0
- vivarium_workbench-0.3.88/tests/test_events_log_sse.py +45 -0
- vivarium_workbench-0.3.88/tests/test_evidence_from_computed_nodes.py +92 -0
- vivarium_workbench-0.3.88/tests/test_evidence_route.py +48 -0
- vivarium_workbench-0.3.88/tests/test_expert_search.py +259 -0
- vivarium_workbench-0.3.88/tests/test_explorer_data.py +555 -0
- vivarium_workbench-0.3.88/tests/test_explorer_endpoints.py +137 -0
- vivarium_workbench-0.3.88/tests/test_explorer_no_hardcoded_remote_build.py +11 -0
- vivarium_workbench-0.3.88/tests/test_exports_download_consolidation.py +199 -0
- vivarium_workbench-0.3.88/tests/test_fastapi_route_gaps.py +384 -0
- vivarium_workbench-0.3.88/tests/test_federated_study_runs.py +73 -0
- vivarium_workbench-0.3.88/tests/test_federation.py +149 -0
- vivarium_workbench-0.3.88/tests/test_federation_endpoints.py +98 -0
- vivarium_workbench-0.3.88/tests/test_federation_installed_modules.py +125 -0
- vivarium_workbench-0.3.88/tests/test_federation_study_parity.py +206 -0
- vivarium_workbench-0.3.88/tests/test_feedback_actions.py +354 -0
- vivarium_workbench-0.3.88/tests/test_feedback_apply_action_api.py +81 -0
- vivarium_workbench-0.3.88/tests/test_feedback_record_endpoint.py +151 -0
- vivarium_workbench-0.3.88/tests/test_feedback_tracking_render.py +236 -0
- vivarium_workbench-0.3.88/tests/test_finding_route.py +46 -0
- vivarium_workbench-0.3.88/tests/test_findings_ledger.py +213 -0
- vivarium_workbench-0.3.88/tests/test_framework_metrics_endpoint.py +66 -0
- vivarium_workbench-0.3.88/tests/test_gate_canonical_source.py +21 -0
- vivarium_workbench-0.3.88/tests/test_gate_verdict_surface.py +164 -0
- vivarium_workbench-0.3.88/tests/test_gen_readme.py +154 -0
- vivarium_workbench-0.3.88/tests/test_generate_ts.py +35 -0
- vivarium_workbench-0.3.88/tests/test_generation.py +136 -0
- vivarium_workbench-0.3.88/tests/test_generation_api.py +103 -0
- vivarium_workbench-0.3.88/tests/test_generator_parquet_e2e.py +182 -0
- vivarium_workbench-0.3.88/tests/test_generic_analysis_dispatch.py +89 -0
- vivarium_workbench-0.3.88/tests/test_git_commit_views_lib.py +371 -0
- vivarium_workbench-0.3.88/tests/test_git_status_lib.py +414 -0
- vivarium_workbench-0.3.88/tests/test_github_auth.py +295 -0
- vivarium_workbench-0.3.88/tests/test_github_auth_env_injection.py +153 -0
- vivarium_workbench-0.3.88/tests/test_gotostudytab_helper.py +33 -0
- vivarium_workbench-0.3.88/tests/test_gzip_middleware.py +48 -0
- vivarium_workbench-0.3.88/tests/test_inject_declared_emitter.py +81 -0
- vivarium_workbench-0.3.88/tests/test_inputs_endpoint.py +103 -0
- vivarium_workbench-0.3.88/tests/test_inputs_upload_investigation_scoped.py +123 -0
- vivarium_workbench-0.3.88/tests/test_install_timeout.py +50 -0
- vivarium_workbench-0.3.88/tests/test_install_views_lib.py +365 -0
- vivarium_workbench-0.3.88/tests/test_interactive_declared_figures.py +287 -0
- vivarium_workbench-0.3.88/tests/test_investigation_analysis_step.py +376 -0
- vivarium_workbench-0.3.88/tests/test_investigation_composite_generator.py +229 -0
- vivarium_workbench-0.3.88/tests/test_investigation_figures.py +248 -0
- vivarium_workbench-0.3.88/tests/test_investigation_graph_orientation.py +81 -0
- vivarium_workbench-0.3.88/tests/test_investigation_graph_route.py +46 -0
- vivarium_workbench-0.3.88/tests/test_investigation_graph_views.py +156 -0
- vivarium_workbench-0.3.88/tests/test_investigation_hypotheses_endpoint.py +111 -0
- vivarium_workbench-0.3.88/tests/test_investigation_inputs_mirror.py +48 -0
- vivarium_workbench-0.3.88/tests/test_investigation_landing_list.py +63 -0
- vivarium_workbench-0.3.88/tests/test_investigation_members_field.py +44 -0
- vivarium_workbench-0.3.88/tests/test_investigation_members_sweep.py +156 -0
- vivarium_workbench-0.3.88/tests/test_investigation_migrate.py +118 -0
- vivarium_workbench-0.3.88/tests/test_investigation_page_declutter.py +76 -0
- vivarium_workbench-0.3.88/tests/test_investigation_payload_run_commands.py +80 -0
- vivarium_workbench-0.3.88/tests/test_investigation_reference_graph.py +56 -0
- vivarium_workbench-0.3.88/tests/test_investigation_report.py +405 -0
- vivarium_workbench-0.3.88/tests/test_investigation_report_figures.py +112 -0
- vivarium_workbench-0.3.88/tests/test_investigation_resolve_api.py +135 -0
- vivarium_workbench-0.3.88/tests/test_investigation_run_convergence.py +135 -0
- vivarium_workbench-0.3.88/tests/test_investigation_run_e2e.py +145 -0
- vivarium_workbench-0.3.88/tests/test_investigation_run_one_views_lib.py +581 -0
- vivarium_workbench-0.3.88/tests/test_investigation_run_views_lib.py +287 -0
- vivarium_workbench-0.3.88/tests/test_investigation_set_status.py +42 -0
- vivarium_workbench-0.3.88/tests/test_investigation_status.py +83 -0
- vivarium_workbench-0.3.88/tests/test_investigation_steps_skeleton.py +88 -0
- vivarium_workbench-0.3.88/tests/test_investigation_trigger.py +257 -0
- vivarium_workbench-0.3.88/tests/test_investigation_views_lib.py +340 -0
- vivarium_workbench-0.3.88/tests/test_investigation_viz_mutations_lib.py +195 -0
- vivarium_workbench-0.3.88/tests/test_investigation_workspace.py +166 -0
- vivarium_workbench-0.3.88/tests/test_investigations.py +962 -0
- vivarium_workbench-0.3.88/tests/test_investigations_index_status.py +88 -0
- vivarium_workbench-0.3.88/tests/test_is_generated_path.py +44 -0
- vivarium_workbench-0.3.88/tests/test_iset_close_endpoint.py +148 -0
- vivarium_workbench-0.3.88/tests/test_iset_current_branch.py +43 -0
- vivarium_workbench-0.3.88/tests/test_iset_endpoints.py +826 -0
- vivarium_workbench-0.3.88/tests/test_iset_nested.py +88 -0
- vivarium_workbench-0.3.88/tests/test_job_class_task_routing.py +187 -0
- vivarium_workbench-0.3.88/tests/test_job_status_views_lib.py +77 -0
- vivarium_workbench-0.3.88/tests/test_json_sanitize.py +110 -0
- vivarium_workbench-0.3.88/tests/test_known_composites_cache.py +89 -0
- vivarium_workbench-0.3.88/tests/test_latest_outcomes_fallback.py +31 -0
- vivarium_workbench-0.3.88/tests/test_launch_carries_stderr.py +167 -0
- vivarium_workbench-0.3.88/tests/test_launch_into_study.py +158 -0
- vivarium_workbench-0.3.88/tests/test_lifecycle_mutations_lib.py +357 -0
- vivarium_workbench-0.3.88/tests/test_linkage_index.py +305 -0
- vivarium_workbench-0.3.88/tests/test_linkage_index_endpoint.py +131 -0
- vivarium_workbench-0.3.88/tests/test_linkage_index_golden.py +139 -0
- vivarium_workbench-0.3.88/tests/test_load_spec_v4.py +212 -0
- vivarium_workbench-0.3.88/tests/test_loom_base_path.py +72 -0
- vivarium_workbench-0.3.88/tests/test_loom_explore_serve.py +114 -0
- vivarium_workbench-0.3.88/tests/test_loom_vendored.py +39 -0
- vivarium_workbench-0.3.88/tests/test_loop_provenance_views.py +178 -0
- vivarium_workbench-0.3.88/tests/test_materialization.py +163 -0
- vivarium_workbench-0.3.88/tests/test_materialization_jobs.py +270 -0
- vivarium_workbench-0.3.88/tests/test_metadata_mutations_lib.py +605 -0
- vivarium_workbench-0.3.88/tests/test_migrate_investigations_to_studies.py +72 -0
- vivarium_workbench-0.3.88/tests/test_migrate_v3_to_v4.py +77 -0
- vivarium_workbench-0.3.88/tests/test_misc_mutations_lib.py +169 -0
- vivarium_workbench-0.3.88/tests/test_misc_post_views_lib.py +241 -0
- vivarium_workbench-0.3.88/tests/test_module_import_doctor.py +122 -0
- vivarium_workbench-0.3.88/tests/test_module_stats.py +373 -0
- vivarium_workbench-0.3.88/tests/test_needs_attention.py +613 -0
- vivarium_workbench-0.3.88/tests/test_needs_attention_endpoint.py +84 -0
- vivarium_workbench-0.3.88/tests/test_needs_attention_env_stale_sync.py +70 -0
- vivarium_workbench-0.3.88/tests/test_needs_attention_gate.py +36 -0
- vivarium_workbench-0.3.88/tests/test_no_ai_deps.py +96 -0
- vivarium_workbench-0.3.88/tests/test_no_blind_retry_job_class.py +98 -0
- vivarium_workbench-0.3.88/tests/test_no_nested_studies_guard.py +86 -0
- vivarium_workbench-0.3.88/tests/test_no_tracked_symlinks.py +83 -0
- vivarium_workbench-0.3.88/tests/test_node_store.py +32 -0
- vivarium_workbench-0.3.88/tests/test_non_root_store_roots.py +145 -0
- vivarium_workbench-0.3.88/tests/test_notebook_export.py +240 -0
- vivarium_workbench-0.3.88/tests/test_notebook_export_endpoint.py +44 -0
- vivarium_workbench-0.3.88/tests/test_observables_endpoint.py +212 -0
- vivarium_workbench-0.3.88/tests/test_observables_views_lib.py +227 -0
- vivarium_workbench-0.3.88/tests/test_open_run_in_explorer.py +140 -0
- vivarium_workbench-0.3.88/tests/test_outcome_vocabulary.py +80 -0
- vivarium_workbench-0.3.88/tests/test_overview_fullwidth_autogrow.py +48 -0
- vivarium_workbench-0.3.88/tests/test_p1_measure_refusal.py +225 -0
- vivarium_workbench-0.3.88/tests/test_param_enforcement.py +108 -0
- vivarium_workbench-0.3.88/tests/test_payload_models.py +170 -0
- vivarium_workbench-0.3.88/tests/test_phase_a_e2e.py +38 -0
- vivarium_workbench-0.3.88/tests/test_phase_b1_e2e.py +38 -0
- vivarium_workbench-0.3.88/tests/test_pillar_unify.py +143 -0
- vivarium_workbench-0.3.88/tests/test_pipeline_end_to_end.py +125 -0
- vivarium_workbench-0.3.88/tests/test_pkg_none_fails_clearly.py +70 -0
- vivarium_workbench-0.3.88/tests/test_play_buttons_contract.py +102 -0
- vivarium_workbench-0.3.88/tests/test_plugin_import_allowlist.py +108 -0
- vivarium_workbench-0.3.88/tests/test_post_run_analyses.py +174 -0
- vivarium_workbench-0.3.88/tests/test_post_run_records.py +31 -0
- vivarium_workbench-0.3.88/tests/test_preflight_composite_run.py +289 -0
- vivarium_workbench-0.3.88/tests/test_prereq_ordering.py +343 -0
- vivarium_workbench-0.3.88/tests/test_process_docs.py +61 -0
- vivarium_workbench-0.3.88/tests/test_process_docs_attach.py +152 -0
- vivarium_workbench-0.3.88/tests/test_process_source_endpoints.py +62 -0
- vivarium_workbench-0.3.88/tests/test_proposed_input_decision.py +128 -0
- vivarium_workbench-0.3.88/tests/test_provenance_manifest.py +73 -0
- vivarium_workbench-0.3.88/tests/test_proxy_worker_launcher.py +187 -0
- vivarium_workbench-0.3.88/tests/test_publish.py +968 -0
- vivarium_workbench-0.3.88/tests/test_publish_simularium.py +45 -0
- vivarium_workbench-0.3.88/tests/test_pyproject_edit.py +151 -0
- vivarium_workbench-0.3.88/tests/test_readability_wiring.py +27 -0
- vivarium_workbench-0.3.88/tests/test_readout_migration_status_endpoint.py +112 -0
- vivarium_workbench-0.3.88/tests/test_readout_validation.py +301 -0
- vivarium_workbench-0.3.88/tests/test_readouts_excluded.py +102 -0
- vivarium_workbench-0.3.88/tests/test_readouts_models.py +49 -0
- vivarium_workbench-0.3.88/tests/test_readouts_views.py +316 -0
- vivarium_workbench-0.3.88/tests/test_reference_mutations_lib.py +288 -0
- vivarium_workbench-0.3.88/tests/test_references_fetch.py +282 -0
- vivarium_workbench-0.3.88/tests/test_refresh_viz_env_and_tagging.py +83 -0
- vivarium_workbench-0.3.88/tests/test_registry_default_emitter.py +230 -0
- vivarium_workbench-0.3.88/tests/test_registry_discovery.py +155 -0
- vivarium_workbench-0.3.88/tests/test_registry_modules_override.py +141 -0
- vivarium_workbench-0.3.88/tests/test_registry_source_tagging.py +342 -0
- vivarium_workbench-0.3.88/tests/test_remote_analysis_figures_hidden.py +102 -0
- vivarium_workbench-0.3.88/tests/test_remote_build_source.py +593 -0
- vivarium_workbench-0.3.88/tests/test_remote_composite_results.py +275 -0
- vivarium_workbench-0.3.88/tests/test_remote_dispatch_param_editing.py +373 -0
- vivarium_workbench-0.3.88/tests/test_remote_failure_reason.py +27 -0
- vivarium_workbench-0.3.88/tests/test_remote_health.py +106 -0
- vivarium_workbench-0.3.88/tests/test_remote_link.py +246 -0
- vivarium_workbench-0.3.88/tests/test_remote_reconcile.py +212 -0
- vivarium_workbench-0.3.88/tests/test_remote_run_endpoints.py +59 -0
- vivarium_workbench-0.3.88/tests/test_remote_run_jobs.py +168 -0
- vivarium_workbench-0.3.88/tests/test_remote_run_land_artifacts.py +112 -0
- vivarium_workbench-0.3.88/tests/test_remote_run_landing.py +594 -0
- vivarium_workbench-0.3.88/tests/test_remote_run_panel.py +111 -0
- vivarium_workbench-0.3.88/tests/test_remote_run_pinned.py +441 -0
- vivarium_workbench-0.3.88/tests/test_remote_run_poll_hardening.py +95 -0
- vivarium_workbench-0.3.88/tests/test_remote_run_submit_async.py +250 -0
- vivarium_workbench-0.3.88/tests/test_remote_run_views_lib.py +1029 -0
- vivarium_workbench-0.3.88/tests/test_remote_simulations.py +95 -0
- vivarium_workbench-0.3.88/tests/test_remote_study_slug_1to1.py +154 -0
- vivarium_workbench-0.3.88/tests/test_remote_study_slug_inference.py +94 -0
- vivarium_workbench-0.3.88/tests/test_rename_compat.py +88 -0
- vivarium_workbench-0.3.88/tests/test_repo_source.py +107 -0
- vivarium_workbench-0.3.88/tests/test_report_card_evidence.py +146 -0
- vivarium_workbench-0.3.88/tests/test_report_card_promotion.py +133 -0
- vivarium_workbench-0.3.88/tests/test_report_card_section.py +69 -0
- vivarium_workbench-0.3.88/tests/test_report_lint_endpoint.py +103 -0
- vivarium_workbench-0.3.88/tests/test_report_lint_overrides_endpoint.py +124 -0
- vivarium_workbench-0.3.88/tests/test_report_lint_question.py +16 -0
- vivarium_workbench-0.3.88/tests/test_report_lint_viz_gap.py +213 -0
- vivarium_workbench-0.3.88/tests/test_report_rigor_rendering.py +289 -0
- vivarium_workbench-0.3.88/tests/test_report_views_lib.py +222 -0
- vivarium_workbench-0.3.88/tests/test_report_views_readout_lint.py +64 -0
- vivarium_workbench-0.3.88/tests/test_request_logging.py +34 -0
- vivarium_workbench-0.3.88/tests/test_rerun.py +756 -0
- vivarium_workbench-0.3.88/tests/test_rerun_resolve.py +152 -0
- vivarium_workbench-0.3.88/tests/test_rerun_run.py +116 -0
- vivarium_workbench-0.3.88/tests/test_rerun_ui.py +74 -0
- vivarium_workbench-0.3.88/tests/test_resolve_cloud_target.py +141 -0
- vivarium_workbench-0.3.88/tests/test_resolve_composite_source_or_generate.py +99 -0
- vivarium_workbench-0.3.88/tests/test_resolve_investigation.py +246 -0
- vivarium_workbench-0.3.88/tests/test_resolve_registry_ref.py +29 -0
- vivarium_workbench-0.3.88/tests/test_result_fingerprint.py +117 -0
- vivarium_workbench-0.3.88/tests/test_results_no_drift.py +161 -0
- vivarium_workbench-0.3.88/tests/test_results_views.py +144 -0
- vivarium_workbench-0.3.88/tests/test_rigor_views_lib.py +160 -0
- vivarium_workbench-0.3.88/tests/test_root_request_context.py +75 -0
- vivarium_workbench-0.3.88/tests/test_round_trip_fidelity.py +73 -0
- vivarium_workbench-0.3.88/tests/test_run_artifact_base_path.py +62 -0
- vivarium_workbench-0.3.88/tests/test_run_artifact_zarr_fallback.py +141 -0
- vivarium_workbench-0.3.88/tests/test_run_capabilities.py +22 -0
- vivarium_workbench-0.3.88/tests/test_run_capabilities_persist.py +21 -0
- vivarium_workbench-0.3.88/tests/test_run_commands.py +94 -0
- vivarium_workbench-0.3.88/tests/test_run_composite_cli.py +51 -0
- vivarium_workbench-0.3.88/tests/test_run_config_declares_results.py +150 -0
- vivarium_workbench-0.3.88/tests/test_run_core.py +32 -0
- vivarium_workbench-0.3.88/tests/test_run_delete_route.py +69 -0
- vivarium_workbench-0.3.88/tests/test_run_detail_hub.py +178 -0
- vivarium_workbench-0.3.88/tests/test_run_fixture.py +144 -0
- vivarium_workbench-0.3.88/tests/test_run_index.py +339 -0
- vivarium_workbench-0.3.88/tests/test_run_interpreter_parity.py +118 -0
- vivarium_workbench-0.3.88/tests/test_run_jobs_async_dispatch.py +199 -0
- vivarium_workbench-0.3.88/tests/test_run_kind_classify.py +42 -0
- vivarium_workbench-0.3.88/tests/test_run_log.py +37 -0
- vivarium_workbench-0.3.88/tests/test_run_log_lifecycle.py +138 -0
- vivarium_workbench-0.3.88/tests/test_run_manifest.py +274 -0
- vivarium_workbench-0.3.88/tests/test_run_phase_and_fractional.py +80 -0
- vivarium_workbench-0.3.88/tests/test_run_registry.py +96 -0
- vivarium_workbench-0.3.88/tests/test_run_runner.py +248 -0
- vivarium_workbench-0.3.88/tests/test_run_runner_default_viz.py +74 -0
- vivarium_workbench-0.3.88/tests/test_run_runner_explorer_emitter.py +315 -0
- vivarium_workbench-0.3.88/tests/test_run_runner_viz_fallback_hang.py +174 -0
- vivarium_workbench-0.3.88/tests/test_run_status_truthfulness.py +92 -0
- vivarium_workbench-0.3.88/tests/test_run_stop.py +96 -0
- vivarium_workbench-0.3.88/tests/test_run_store.py +49 -0
- vivarium_workbench-0.3.88/tests/test_run_study_analyses_in_reply.py +265 -0
- vivarium_workbench-0.3.88/tests/test_run_study_capability.py +384 -0
- vivarium_workbench-0.3.88/tests/test_run_unblocked_views_lib.py +367 -0
- vivarium_workbench-0.3.88/tests/test_runner_unification.py +250 -0
- vivarium_workbench-0.3.88/tests/test_save_run_as_variant.py +68 -0
- vivarium_workbench-0.3.88/tests/test_save_run_as_variant_route.py +19 -0
- vivarium_workbench-0.3.88/tests/test_saved_visualizations.py +111 -0
- vivarium_workbench-0.3.88/tests/test_scaffold_catalog_cli.py +74 -0
- vivarium_workbench-0.3.88/tests/test_scaffold_investigation_cli.py +63 -0
- vivarium_workbench-0.3.88/tests/test_scaffold_mutations_lib.py +238 -0
- vivarium_workbench-0.3.88/tests/test_scaffold_yaml.py +318 -0
- vivarium_workbench-0.3.88/tests/test_scientific_content_port.py +58 -0
- vivarium_workbench-0.3.88/tests/test_scorecard_margin_render.py +40 -0
- vivarium_workbench-0.3.88/tests/test_server_capabilities.py +100 -0
- vivarium_workbench-0.3.88/tests/test_server_lifecycle_cli.py +170 -0
- vivarium_workbench-0.3.88/tests/test_session_cookie_e2e.py +27 -0
- vivarium_workbench-0.3.88/tests/test_session_env.py +135 -0
- vivarium_workbench-0.3.88/tests/test_session_registry_lib.py +120 -0
- vivarium_workbench-0.3.88/tests/test_sim_composite_registered.py +45 -0
- vivarium_workbench-0.3.88/tests/test_sim_config_jsonl_fold.py +22 -0
- vivarium_workbench-0.3.88/tests/test_sim_config_population.py +39 -0
- vivarium_workbench-0.3.88/tests/test_sim_table_tools_ui.py +44 -0
- vivarium_workbench-0.3.88/tests/test_sims_sort_frontend.py +12 -0
- vivarium_workbench-0.3.88/tests/test_simulations_api.py +246 -0
- vivarium_workbench-0.3.88/tests/test_simulations_capabilities.py +128 -0
- vivarium_workbench-0.3.88/tests/test_simulations_index.py +1106 -0
- vivarium_workbench-0.3.88/tests/test_simulations_index_jsonl.py +95 -0
- vivarium_workbench-0.3.88/tests/test_simulations_index_pure_jsonl.py +90 -0
- vivarium_workbench-0.3.88/tests/test_simulations_matched_tools.py +171 -0
- vivarium_workbench-0.3.88/tests/test_simulations_swr.py +217 -0
- vivarium_workbench-0.3.88/tests/test_single_study_report.py +786 -0
- vivarium_workbench-0.3.88/tests/test_single_study_report_commands.py +32 -0
- vivarium_workbench-0.3.88/tests/test_smoke_cli.py +39 -0
- vivarium_workbench-0.3.88/tests/test_sms_api_client.py +520 -0
- vivarium_workbench-0.3.88/tests/test_sms_api_identity.py +122 -0
- vivarium_workbench-0.3.88/tests/test_source_branch.py +142 -0
- vivarium_workbench-0.3.88/tests/test_source_build_views_lib.py +261 -0
- vivarium_workbench-0.3.88/tests/test_source_provenance.py +198 -0
- vivarium_workbench-0.3.88/tests/test_source_switch.py +153 -0
- vivarium_workbench-0.3.88/tests/test_source_switch_views_lib.py +126 -0
- vivarium_workbench-0.3.88/tests/test_sourcing_panel_render.py +49 -0
- vivarium_workbench-0.3.88/tests/test_sp1_investigation_hook.py +78 -0
- vivarium_workbench-0.3.88/tests/test_sp3a_finding_seed_render.py +46 -0
- vivarium_workbench-0.3.88/tests/test_spec_migration.py +365 -0
- vivarium_workbench-0.3.88/tests/test_spine_present_b_golden.py +65 -0
- vivarium_workbench-0.3.88/tests/test_spine_present_b_outcomes.py +57 -0
- vivarium_workbench-0.3.88/tests/test_spine_present_b_readout_validation.py +33 -0
- vivarium_workbench-0.3.88/tests/test_spine_present_b_traceability.py +55 -0
- vivarium_workbench-0.3.88/tests/test_spine_present_c_dedup.py +69 -0
- vivarium_workbench-0.3.88/tests/test_spine_present_c_golden.py +65 -0
- vivarium_workbench-0.3.88/tests/test_spine_present_c_report_dag.py +57 -0
- vivarium_workbench-0.3.88/tests/test_spine_present_c_summary.py +128 -0
- vivarium_workbench-0.3.88/tests/test_spine_present_c_unbury.py +60 -0
- vivarium_workbench-0.3.88/tests/test_spine_present_golden.py +94 -0
- vivarium_workbench-0.3.88/tests/test_staging.py +71 -0
- vivarium_workbench-0.3.88/tests/test_static_serving_lib.py +115 -0
- vivarium_workbench-0.3.88/tests/test_step_analysis_outputs.py +32 -0
- vivarium_workbench-0.3.88/tests/test_step_baseline.py +106 -0
- vivarium_workbench-0.3.88/tests/test_study_aliases.py +57 -0
- vivarium_workbench-0.3.88/tests/test_study_artifacts_on_simulate.py +172 -0
- vivarium_workbench-0.3.88/tests/test_study_baseline_handlers.py +130 -0
- vivarium_workbench-0.3.88/tests/test_study_body_keys.py +22 -0
- vivarium_workbench-0.3.88/tests/test_study_charts_db_exists.py +149 -0
- vivarium_workbench-0.3.88/tests/test_study_charts_empty_state_wording.py +40 -0
- vivarium_workbench-0.3.88/tests/test_study_charts_freshness.py +98 -0
- vivarium_workbench-0.3.88/tests/test_study_charts_parquet.py +266 -0
- vivarium_workbench-0.3.88/tests/test_study_charts_v4_tests_field.py +97 -0
- vivarium_workbench-0.3.88/tests/test_study_config_file.py +83 -0
- vivarium_workbench-0.3.88/tests/test_study_create_from_run.py +116 -0
- vivarium_workbench-0.3.88/tests/test_study_create_views_lib.py +247 -0
- vivarium_workbench-0.3.88/tests/test_study_crud_mutations_lib.py +473 -0
- vivarium_workbench-0.3.88/tests/test_study_declared_composite.py +49 -0
- vivarium_workbench-0.3.88/tests/test_study_derivations.py +92 -0
- vivarium_workbench-0.3.88/tests/test_study_detail_page.py +618 -0
- vivarium_workbench-0.3.88/tests/test_study_detail_render.py +1998 -0
- vivarium_workbench-0.3.88/tests/test_study_detail_snapshot_resolve.py +44 -0
- vivarium_workbench-0.3.88/tests/test_study_detail_template.py +45 -0
- vivarium_workbench-0.3.88/tests/test_study_dir_resolution.py +136 -0
- vivarium_workbench-0.3.88/tests/test_study_enrichment_lib.py +226 -0
- vivarium_workbench-0.3.88/tests/test_study_findings.py +429 -0
- vivarium_workbench-0.3.88/tests/test_study_findings_endpoint.py +131 -0
- vivarium_workbench-0.3.88/tests/test_study_findings_populate_endpoint.py +142 -0
- vivarium_workbench-0.3.88/tests/test_study_gate_render.py +33 -0
- vivarium_workbench-0.3.88/tests/test_study_grade.py +350 -0
- vivarium_workbench-0.3.88/tests/test_study_grade_endpoint.py +23 -0
- vivarium_workbench-0.3.88/tests/test_study_handlers.py +201 -0
- vivarium_workbench-0.3.88/tests/test_study_intervention_handlers.py +115 -0
- vivarium_workbench-0.3.88/tests/test_study_kind.py +21 -0
- vivarium_workbench-0.3.88/tests/test_study_migrate.py +150 -0
- vivarium_workbench-0.3.88/tests/test_study_narrative.py +290 -0
- vivarium_workbench-0.3.88/tests/test_study_narrative_command_endpoint.py +282 -0
- vivarium_workbench-0.3.88/tests/test_study_narrative_set.py +307 -0
- vivarium_workbench-0.3.88/tests/test_study_open_preserves_investigation.py +38 -0
- vivarium_workbench-0.3.88/tests/test_study_overview_structure.py +54 -0
- vivarium_workbench-0.3.88/tests/test_study_page_lib.py +272 -0
- vivarium_workbench-0.3.88/tests/test_study_payload_run_commands.py +12 -0
- vivarium_workbench-0.3.88/tests/test_study_pipeline_resolve.py +510 -0
- vivarium_workbench-0.3.88/tests/test_study_precheck.py +142 -0
- vivarium_workbench-0.3.88/tests/test_study_readout_migrate_endpoint.py +149 -0
- vivarium_workbench-0.3.88/tests/test_study_readouts_route.py +29 -0
- vivarium_workbench-0.3.88/tests/test_study_refresh_viz.py +108 -0
- vivarium_workbench-0.3.88/tests/test_study_reproduce_button.py +51 -0
- vivarium_workbench-0.3.88/tests/test_study_run_count_includes_remote.py +37 -0
- vivarium_workbench-0.3.88/tests/test_study_run_dry_run.py +100 -0
- vivarium_workbench-0.3.88/tests/test_study_run_emitter_key.py +33 -0
- vivarium_workbench-0.3.88/tests/test_study_run_post_lib.py +603 -0
- vivarium_workbench-0.3.88/tests/test_study_run_state_lib.py +204 -0
- vivarium_workbench-0.3.88/tests/test_study_run_variant_ensemble.py +331 -0
- vivarium_workbench-0.3.88/tests/test_study_runs.py +619 -0
- vivarium_workbench-0.3.88/tests/test_study_runs_lib.py +281 -0
- vivarium_workbench-0.3.88/tests/test_study_runs_overrides.py +118 -0
- vivarium_workbench-0.3.88/tests/test_study_schema.py +66 -0
- vivarium_workbench-0.3.88/tests/test_study_seed_followup.py +270 -0
- vivarium_workbench-0.3.88/tests/test_study_spec_lib.py +366 -0
- vivarium_workbench-0.3.88/tests/test_study_spec_test_diff.py +96 -0
- vivarium_workbench-0.3.88/tests/test_study_stats_tally.py +40 -0
- vivarium_workbench-0.3.88/tests/test_study_step_dispatch.py +70 -0
- vivarium_workbench-0.3.88/tests/test_study_sync_runs_endpoint.py +14 -0
- vivarium_workbench-0.3.88/tests/test_study_tabs_structure.py +74 -0
- vivarium_workbench-0.3.88/tests/test_study_tests_endpoint.py +49 -0
- vivarium_workbench-0.3.88/tests/test_study_tests_runner.py +81 -0
- vivarium_workbench-0.3.88/tests/test_study_to_composite.py +256 -0
- vivarium_workbench-0.3.88/tests/test_study_variants.py +49 -0
- vivarium_workbench-0.3.88/tests/test_study_verify.py +447 -0
- vivarium_workbench-0.3.88/tests/test_study_verify_endpoint.py +128 -0
- vivarium_workbench-0.3.88/tests/test_study_viz_views_lib.py +243 -0
- vivarium_workbench-0.3.88/tests/test_subprocess_script_encoding.py +88 -0
- vivarium_workbench-0.3.88/tests/test_sync_materialize.py +50 -0
- vivarium_workbench-0.3.88/tests/test_sync_ui.py +26 -0
- vivarium_workbench-0.3.88/tests/test_sync_workspace.py +82 -0
- vivarium_workbench-0.3.88/tests/test_system_deps.py +208 -0
- vivarium_workbench-0.3.88/tests/test_system_info_lib.py +208 -0
- vivarium_workbench-0.3.88/tests/test_test_run_views_lib.py +151 -0
- vivarium_workbench-0.3.88/tests/test_topology_emit.py +36 -0
- vivarium_workbench-0.3.88/tests/test_upload_mutations_lib.py +522 -0
- vivarium_workbench-0.3.88/tests/test_v3_study_validation.py +154 -0
- vivarium_workbench-0.3.88/tests/test_vdash_entrypoint.py +10 -0
- vivarium_workbench-0.3.88/tests/test_verdict_incomplete_evidence.py +126 -0
- vivarium_workbench-0.3.88/tests/test_visualization_endpoints.py +1970 -0
- vivarium_workbench-0.3.88/tests/test_viz_accept_views_lib.py +249 -0
- vivarium_workbench-0.3.88/tests/test_viz_commit_mutations_lib.py +379 -0
- vivarium_workbench-0.3.88/tests/test_viz_gate.py +364 -0
- vivarium_workbench-0.3.88/tests/test_viz_preview_instance_views_lib.py +187 -0
- vivarium_workbench-0.3.88/tests/test_viz_preview_views_lib.py +225 -0
- vivarium_workbench-0.3.88/tests/test_viz_write_mutations_lib.py +361 -0
- vivarium_workbench-0.3.88/tests/test_walkthrough_snapshot_figures.py +65 -0
- vivarium_workbench-0.3.88/tests/test_work_link_branch.py +89 -0
- vivarium_workbench-0.3.88/tests/test_work_mutations_lib.py +312 -0
- vivarium_workbench-0.3.88/tests/test_work_pr_views_lib.py +583 -0
- vivarium_workbench-0.3.88/tests/test_work_state_auto_adopt.py +140 -0
- vivarium_workbench-0.3.88/tests/test_work_views_lib.py +151 -0
- vivarium_workbench-0.3.88/tests/test_worker_idle_timeout.py +157 -0
- vivarium_workbench-0.3.88/tests/test_workspace_deps_views_lib.py +433 -0
- vivarium_workbench-0.3.88/tests/test_workspace_heal.py +153 -0
- vivarium_workbench-0.3.88/tests/test_workspace_manifest_views_lib.py +192 -0
- vivarium_workbench-0.3.88/tests/test_workspace_paths.py +205 -0
- vivarium_workbench-0.3.88/tests/test_workspace_pinned_deps.py +31 -0
- vivarium_workbench-0.3.88/tests/test_workspace_switcher_cli.py +143 -0
- vivarium_workbench-0.3.88/tests/test_workspace_walk_no_venv.py +181 -0
- vivarium_workbench-0.3.88/tests/test_workspaces_api.py +786 -0
- vivarium_workbench-0.3.88/tests/test_workspaces_mutations_lib.py +160 -0
- vivarium_workbench-0.3.88/tests/test_workspaces_process_views_lib.py +285 -0
- vivarium_workbench-0.3.88/tests/test_write_text_utf8_encoding.py +85 -0
- vivarium_workbench-0.3.88/tests/test_xarray_emitter_import_guard.py +73 -0
- vivarium_workbench-0.3.88/tests/test_xarray_provenance_read.py +77 -0
- vivarium_workbench-0.3.88/tests/test_zarr_default_viz.py +106 -0
- vivarium_workbench-0.3.88/uv.lock +7958 -0
- vivarium_workbench-0.3.88/vivarium_dashboard/__init__.py +87 -0
- vivarium_workbench-0.3.88/vivarium_workbench/__init__.py +2 -0
- vivarium_workbench-0.3.88/vivarium_workbench/api/__init__.py +0 -0
- vivarium_workbench-0.3.88/vivarium_workbench/api/__main__.py +52 -0
- vivarium_workbench-0.3.88/vivarium_workbench/api/app.py +8102 -0
- vivarium_workbench-0.3.88/vivarium_workbench/cli.py +1623 -0
- vivarium_workbench-0.3.88/vivarium_workbench/env_worker.py +4286 -0
- vivarium_workbench-0.3.88/vivarium_workbench/gen_readme.py +239 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/__init__.py +10 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/_root.py +116 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/active_workspace.py +68 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/adapters/__init__.py +6 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/adapters/scientific_content.py +56 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/agents0.py +92 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/analysis_outputs.py +182 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/analysis_tools.py +154 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/analysis_tools_3d.py +87 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/analysis_tools_simularium.py +44 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/analysis_viewers.py +84 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/artifacts/__init__.py +0 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/artifacts/hashing.py +29 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/artifacts/migrate.py +237 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/artifacts/pipeline.py +534 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/artifacts/store.py +159 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/atomic_io.py +35 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/audit_grade.py +255 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/audit_panel_views.py +57 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/audit_report.py +181 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/audit_views.py +160 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/auth_views.py +120 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/auto_evaluate.py +361 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/behavior_test_card.py +342 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/benchmark_report.py +129 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/capabilities.py +33 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/catalog.py +843 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/catalog_disk_cache.py +323 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/catalog_install_views.py +490 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/catalog_uninstall_impact.py +205 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/catalog_uninstall_views.py +346 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/chain_derivation.py +177 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/chain_views.py +121 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/citation_gaps.py +148 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/cite_bands_views.py +236 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/cli_runs.py +169 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/comparative_runs.py +128 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/comparative_viz.py +398 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/compare_group_mutations.py +332 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/comparison_pinning.py +181 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/composite_config_adapt.py +100 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/composite_flush.py +398 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/composite_inner_states.py +102 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/composite_lookup.py +683 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/composite_mutations.py +684 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/composite_recipes.py +186 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/composite_resolve.py +555 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/composite_run_views.py +424 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/composite_runs.py +1420 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/composite_state_views.py +494 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/composite_stop_views.py +53 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/composite_study_stats.py +132 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/composite_subprocess.py +892 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/composite_test_run_views.py +473 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/composites_query.py +182 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/conclusion_card.py +226 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/config_to_composite_views.py +27 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/csrf.py +101 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/data_sources.py +101 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/declared_results.py +113 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/dep_doctor.py +82 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/deploy_config.py +116 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/download_views.py +283 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/emitters.py +804 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/ensemble_config.py +142 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/env_compat.py +96 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/env_fingerprint.py +138 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/env_resolver.py +249 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/env_worker_client.py +245 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/env_worker_dialback.py +155 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/env_worker_launcher.py +407 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/env_worker_pool.py +391 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/env_worker_provision.py +51 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/env_worker_routing.py +97 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/ephemeral_study.py +91 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/errors.py +47 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/event_log.py +72 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/events.py +97 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/expert_search.py +208 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/explorer_data.py +1116 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/federation.py +256 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/feedback_actions.py +467 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/feedback_record_views.py +105 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/finding_observations_views.py +72 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/finding_views.py +49 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/gate_rigor.py +239 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/generate_ts.py +271 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/generation.py +285 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/git_commit_views.py +106 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/git_status.py +536 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/github_auth.py +644 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/imports.py +46 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/install_errors.py +127 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/install_views.py +245 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/investigation_composite.py +286 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/investigation_execution.py +248 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/investigation_figures.py +414 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/investigation_graph_views.py +166 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/investigation_inputs.py +36 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/investigation_members.py +42 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/investigation_migrate.py +228 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/investigation_report.py +700 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/investigation_resolve_views.py +49 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/investigation_run_one_views.py +398 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/investigation_run_views.py +264 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/investigation_status.py +320 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/investigation_steps.py +184 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/investigation_trigger.py +181 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/investigation_views.py +294 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/investigation_viz_mutations.py +167 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/investigations.py +2073 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/investigations_index.py +636 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/iset_close_views.py +76 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/iset_test_shims.py +141 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/job_status_views.py +51 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/json_serialize.py +125 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/lifecycle_mutations.py +388 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/linkage_index.py +725 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/loom_savepoints.py +89 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/loop_provenance_views.py +69 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/materialization.py +183 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/materialization_jobs.py +218 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/metadata_mutations.py +519 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/misc_mutations.py +133 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/misc_post_views.py +177 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/models.py +3456 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/module_import_doctor.py +244 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/module_stats.py +675 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/needs_attention.py +786 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/node_store.py +40 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/notebook_export.py +1004 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/observables_views.py +335 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/param_enforcement.py +126 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/pbg_export.py +259 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/pdf_metadata.py +114 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/ports/__init__.py +6 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/ports/scientific_content.py +43 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/preflight.py +662 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/prepare_investigation.py +314 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/process_docs.py +206 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/process_study_stats.py +152 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/provenance_manifest.py +103 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/pyproject_edit.py +223 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/readout_migrate_views.py +78 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/readout_migration_status_views.py +76 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/readout_validation.py +377 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/readouts_views.py +516 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/reference_mutations.py +356 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/references_fetch.py +306 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/refresh_viz.py +131 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/refusal.py +110 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/registry.py +625 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/remote_analysis_figures.py +432 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/remote_build_source.py +336 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/remote_link.py +239 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/remote_pinned.py +232 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/remote_reconcile.py +190 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/remote_run.py +427 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/remote_run_jobs.py +218 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/remote_run_landing.py +459 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/remote_run_views.py +847 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/remote_simulations.py +620 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/repo_source.py +140 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/report.py +737 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/report_card_section.py +203 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/report_views.py +969 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/request_logging.py +55 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/rerun.py +521 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/result_fingerprint.py +161 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/results_views.py +155 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/rigor_views.py +136 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/run_capabilities.py +27 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/run_commands.py +105 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/run_core.py +61 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/run_index.py +226 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/run_jobs.py +460 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/run_log.py +106 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/run_registry.py +184 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/run_runner.py +1324 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/run_store.py +66 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/run_unblocked_views.py +253 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/runs_index.py +21 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/saved_visualizations.py +163 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/scaffold_mutations.py +212 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/scaffold_yaml.py +550 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/server_capabilities.py +114 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/server_version.py +52 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/session_env.py +110 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/session_registry.py +85 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/simulations_index.py +2176 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/single_study_report.py +2607 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/smoke.py +312 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/sms_api_client.py +791 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/source_build_views.py +157 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/source_switch_views.py +79 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/spec_migration.py +228 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/spec_norm.py +51 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/staging.py +86 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/startup.py +250 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/static_serving.py +143 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/step_baseline.py +123 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/study_charts.py +1767 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/study_create_views.py +226 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/study_crud_mutations.py +437 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/study_derivations.py +140 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/study_enrichment.py +292 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/study_findings.py +542 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/study_findings_views.py +101 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/study_grade.py +162 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/study_kind.py +23 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/study_migrate.py +174 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/study_narrative.py +530 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/study_narrative_command_views.py +203 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/study_native_gallery.py +59 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/study_page.py +972 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/study_run_post.py +440 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/study_run_state.py +227 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/study_runs.py +1096 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/study_seed.py +535 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/study_spec.py +1647 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/study_tests.py +242 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/study_to_composite.py +202 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/study_variants.py +49 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/study_verify.py +551 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/study_verify_views.py +83 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/study_viz_views.py +258 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/suggest_requests.py +46 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/sync_materialize.py +51 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/sync_workspace.py +63 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/system_info.py +209 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/test_run_views.py +84 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/topology_viz.py +241 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/ui_settings_mutations.py +51 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/upload_mutations.py +440 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/visualization_classes.py +43 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/viz_accept_views.py +83 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/viz_commit_mutations.py +307 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/viz_gate.py +227 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/viz_preview_instance_views.py +132 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/viz_preview_views.py +117 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/viz_render.py +40 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/viz_write_mutations.py +277 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/work_mutations.py +202 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/work_pr_views.py +374 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/work_state.py +202 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/work_views.py +167 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/workspace_context.py +54 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/workspace_deps_views.py +393 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/workspace_heal.py +116 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/workspace_manifest_views.py +338 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/workspace_paths.py +140 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/workspace_walk.py +84 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/workspace_yaml.py +41 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/workspaces_mutations.py +99 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/workspaces_process_views.py +169 -0
- vivarium_workbench-0.3.88/vivarium_workbench/lib/zarr_default_viz.py +125 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/.dockerignore +10 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/.gitignore +22 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/Dockerfile +23 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/LICENSE +202 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/README.md +61 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/bigraph_loom/__init__.py +34 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/index.html +16 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/package-lock.json +3941 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/package.json +41 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/pyproject.toml +40 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/App.css +2551 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/App.tsx +2734 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/EmitContext.tsx +7 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/Katex.tsx +74 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/App.test.tsx +142 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/ConfigPanel.test.tsx +118 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/DockContainer.test.tsx +112 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/ExploreRunBar.test.tsx +78 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/ProcessPanel.test.tsx +166 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/ProcessRail.test.tsx +185 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/ResultsPanel.test.tsx +116 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/RunPanel.test.tsx +136 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/SetupRunPanel.test.tsx +135 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/affinity.test.ts +394 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/affinityFixture.test.ts +73 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/api.test.ts +236 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/boundary.test.ts +83 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/clusterGrid.test.ts +167 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/collapse.test.ts +35 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/contract.test.ts +76 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/convert.test.ts +78 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/depthStack.test.ts +67 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/edgeTiers.test.tsx +33 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/edgeVisibility.test.ts +256 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/egoLayout.test.ts +72 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/emitDefault.test.ts +98 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/fixtures/v2ecoli-baseline.json +1 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/focusGating.test.tsx +89 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/geometry.test.ts +48 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/hierarchy.test.ts +45 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/hierarchyLayout.test.ts +113 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/inspectorRich.test.tsx +76 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/layout.test.ts +57 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/lockInspector.test.tsx +90 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/parsers.test.ts +27 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/pickDrawnEdges.test.ts +49 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/portInfo.test.ts +79 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/processColumn.test.ts +335 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/registry.test.ts +33 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/semanticZoom.test.tsx +185 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/sidebar.test.tsx +172 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/snapshotSeries.test.ts +48 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/storeTiers.test.tsx +115 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/subsystem.test.ts +64 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/tabSwitch.test.tsx +97 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/topoPlayback.test.ts +23 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/treeFlow.test.ts +163 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/typeAbbrev.test.ts +34 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/useCompositeRun.test.tsx +109 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/useFocus.test.ts +100 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/useLayoutMode.test.ts +44 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/__tests__/viewStore.test.ts +119 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/api.ts +587 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/collapse.ts +110 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/collapseRedundant.ts +304 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/configView.ts +70 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/contract.ts +119 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/convert.ts +508 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/edges/BoundaryLabels.tsx +115 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/edges/FloatingStoreEdge.tsx +349 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/edges/LightWireEdge.tsx +38 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/edges/PlaceEdge.tsx +64 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/edges/boundary.ts +72 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/edges/geometry.ts +38 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/hooks/useCompositeRun.ts +333 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/hooks/useFocus.ts +118 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/hooks/useLayoutMode.ts +44 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/labels.ts +6 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/layout.ts +3 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/layoutStore.ts +141 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/layouts/affinity.ts +219 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/layouts/clusterGrid.ts +411 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/layouts/depthStack.ts +144 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/layouts/egoLayout.ts +110 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/layouts/flow.ts +141 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/layouts/hierarchy.ts +459 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/layouts/incremental.ts +65 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/layouts/nestingTree.ts +132 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/layouts/pickDrawnEdges.ts +26 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/layouts/processColumn.ts +310 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/layouts/registry.ts +36 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/layouts/subsystem.ts +93 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/layouts/tiers.ts +46 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/layouts/treeFlow.ts +498 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/layouts/types.ts +80 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/main.tsx +11 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/mathText.tsx +165 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/nodes/InnerCompositePreview.tsx +550 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/nodes/ProcessNode.tsx +621 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/nodes/StoreNode.tsx +193 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/panels/CompositeInfo.tsx +84 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/panels/ConfigFileInput.tsx +81 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/panels/ConfigPanel.tsx +598 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/panels/DetailMenu.tsx +136 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/panels/DockContainer.tsx +305 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/panels/DocumentPanel.tsx +101 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/panels/ExploreRunBar.tsx +319 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/panels/InspectorPanel.tsx +265 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/panels/JsonNode.tsx +130 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/panels/LayoutMenu.tsx +138 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/panels/NestingTree.tsx +177 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/panels/NodesPanel.tsx +225 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/panels/OutputsPanel.tsx +155 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/panels/ProcessPanel.tsx +218 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/panels/ProcessRail.tsx +207 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/panels/ResultsPanel.tsx +174 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/panels/SavePointsMenu.tsx +256 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/panels/SetupRunPanel.tsx +518 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/panels/TopoTransport.tsx +37 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/panels/ViewsMenu.tsx +233 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/panels/VisualizationsPanel.tsx +201 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/panels/filterHidden.ts +100 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/parsers.ts +20 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/portInfo.ts +75 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/savepoints.ts +111 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/snapshotSeries.ts +179 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/storeFacts.ts +72 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/topoPlayback.ts +23 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/types.ts +87 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/src/viewStore.ts +226 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/tsconfig.json +21 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/tsconfig.node.json +11 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/vite.config.ts +21 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom/vitest.config.ts +9 -0
- vivarium_workbench-0.3.88/vivarium_workbench/loom_assets.py +6 -0
- vivarium_workbench-0.3.88/vivarium_workbench/publish.py +1568 -0
- vivarium_workbench-0.3.88/vivarium_workbench/server.py +42 -0
- vivarium_workbench-0.3.88/vivarium_workbench/static/aig-graph.js +144 -0
- vivarium_workbench-0.3.88/vivarium_workbench/static/audit.js +176 -0
- vivarium_workbench-0.3.88/vivarium_workbench/static/branch-source.js +1054 -0
- vivarium_workbench-0.3.88/vivarium_workbench/static/checklist-select.js +67 -0
- vivarium_workbench-0.3.88/vivarium_workbench/static/client.js +60 -0
- vivarium_workbench-0.3.88/vivarium_workbench/static/col-resize.js +128 -0
- vivarium_workbench-0.3.88/vivarium_workbench/static/composite-card.js +1011 -0
- vivarium_workbench-0.3.88/vivarium_workbench/static/configure-run.js +289 -0
- vivarium_workbench-0.3.88/vivarium_workbench/static/data-source.js +432 -0
- vivarium_workbench-0.3.88/vivarium_workbench/static/github-login.js +304 -0
- vivarium_workbench-0.3.88/vivarium_workbench/static/investigation-switcher.js +461 -0
- vivarium_workbench-0.3.88/vivarium_workbench/static/loom-embed.js +330 -0
- vivarium_workbench-0.3.88/vivarium_workbench/static/process-code.js +423 -0
- vivarium_workbench-0.3.88/vivarium_workbench/static/progress-track.css +128 -0
- vivarium_workbench-0.3.88/vivarium_workbench/static/progress-track.js +244 -0
- vivarium_workbench-0.3.88/vivarium_workbench/static/render-helpers.js +30 -0
- vivarium_workbench-0.3.88/vivarium_workbench/static/session-status.js +185 -0
- vivarium_workbench-0.3.88/vivarium_workbench/static/session.js +205 -0
- vivarium_workbench-0.3.88/vivarium_workbench/static/sim-table.js +988 -0
- vivarium_workbench-0.3.88/vivarium_workbench/static/simularium-viewer.html +234 -0
- vivarium_workbench-0.3.88/vivarium_workbench/static/snapshot-readonly.css +189 -0
- vivarium_workbench-0.3.88/vivarium_workbench/static/source-switch.js +269 -0
- vivarium_workbench-0.3.88/vivarium_workbench/static/study-detail.js +4973 -0
- vivarium_workbench-0.3.88/vivarium_workbench/static/style.css +5237 -0
- vivarium_workbench-0.3.88/vivarium_workbench/static/types/domain.generated.d.ts +523 -0
- vivarium_workbench-0.3.88/vivarium_workbench/static/vivarium-logo-dark.png +0 -0
- vivarium_workbench-0.3.88/vivarium_workbench/static/vivarium-logo.png +0 -0
- vivarium_workbench-0.3.88/vivarium_workbench/static/walkthrough.js +16685 -0
- vivarium_workbench-0.3.88/vivarium_workbench/static/workspace-picker.js +403 -0
- vivarium_workbench-0.3.88/vivarium_workbench/static/workspace-switcher.js +302 -0
- vivarium_workbench-0.3.88/vivarium_workbench/templates/index.html.j2 +2632 -0
- vivarium_workbench-0.3.88/vivarium_workbench/templates/investigation-report.html +1480 -0
- vivarium_workbench-0.3.88/vivarium_workbench/templates/study-detail.html +2342 -0
- vivarium_workbench-0.3.88/vivarium_workbench/testing/__init__.py +8 -0
- vivarium_workbench-0.3.88/vivarium_workbench/testing/run_fixture.py +210 -0
- vivarium_workbench-0.3.88/vivarium_workbench/testing/study_fixtures.py +278 -0
- vivarium_workbench-0.3.88/vivarium_workbench/testing/test_modular_tests_e2e.py +72 -0
- vivarium_workbench-0.3.88/vivarium_workbench/testing/test_modular_tests_js.py +16 -0
- vivarium_workbench-0.3.88/vivarium_workbench/testing/test_modular_tests_payload.py +33 -0
- vivarium_workbench-0.3.88/vivarium_workbench/testing/test_modular_tests_render.py +40 -0
- vivarium_workbench-0.3.88/vivarium_workbench/testing/test_overview_result_figure.py +61 -0
- vivarium_workbench-0.3.88/vivarium_workbench/testing/test_study_detail_run_card.py +18 -0
- 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
|