diff --git a/docs/examples/examples/evolution-of-trust.md b/docs/examples/examples/evolution-of-trust.md
index df425bd..05d44b6 100644
--- a/docs/examples/examples/evolution-of-trust.md
+++ b/docs/examples/examples/evolution-of-trust.md
@@ -22,13 +22,13 @@ system = pipeline.feedback([payoff -> decisions])
```mermaid
flowchart TD
- subgraph Simultaneous Decisions
+ subgraph Decisions[Simultaneous Decisions]
Alice[Alice Decision]
Bob[Bob Decision]
end
- Simultaneous Decisions --> Payoff[[Payoff Computation]]
- Payoff -.Alice Payoff.-> Alice
- Payoff -.Bob Payoff.-> Bob
+ Decisions --> Payoff[[Payoff Computation]]
+ Payoff -. Alice Payoff .-> Alice
+ Payoff -. Bob Payoff .-> Bob
```
## What You'll Learn
diff --git a/docs/guides/dsl-roadmap.md b/docs/guides/dsl-roadmap.md
index dbbca60..85d98d4 100644
--- a/docs/guides/dsl-roadmap.md
+++ b/docs/guides/dsl-roadmap.md
@@ -27,7 +27,7 @@ All three compile to `GDSSpec` / `SystemIR` and produce clean canonical decompos
## DSL Contract Checklist
-Every new DSL must answer the [Semantic Layer Contract](../framework/guide/architecture.md#4-the-semantic-layer-contract) — eight questions that fully specify how a domain maps onto the composition algebra:
+Every new DSL must answer the **Semantic Layer Contract** — eight questions that fully specify how a domain maps onto the [composition algebra](../framework/guide/architecture.md):
1. **Block semantics** — what does a block represent?
2. **Sequential (`>>`)** — what operation is induced?
@@ -65,7 +65,7 @@ Before the first external release of a new DSL:
## Potential Future DSLs
-These formalisms are in-scope per the [architecture scope boundary](../framework/guide/architecture.md#5-scope-boundary) and should compile to the existing substrate without architectural changes:
+These formalisms are in-scope per the [architecture](../framework/guide/architecture.md) scope boundary and should compile to the existing substrate without architectural changes:
| Formalism | Expected Mapping | Complexity |
|---|---|---|
diff --git a/docs/index.md b/docs/index.md
index 23d93f1..e999bd4 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -2,24 +2,59 @@
**Typed compositional specifications for complex systems**, grounded in [Generalized Dynamical Systems](https://doi.org/10.57938/e8d456ea-d975-4111-ac41-052ce73cb0cc) theory (Zargham & Shorish, 2022).
-## Installation
+GDS gives you a composition algebra for modeling complex systems — from epidemics and control loops to game theory and software architecture — with built-in verification, visualization, and a shared formal foundation.
-Install individual packages from PyPI as needed:
+## Where to Start
-```bash
-pip install gds-framework # Core library
-pip install gds-viz # Visualization
-pip install gds-stockflow # Stock-flow DSL
-pip install gds-control # Control systems DSL
-pip install gds-games # Game theory DSL
-pip install gds-software # Software architecture DSL
-pip install gds-business # Business dynamics DSL
-pip install gds-examples # Tutorial models
-```
+
+
+- :material-rocket-launch:{ .lg .middle } **New to GDS?**
+
+ ---
+
+ Follow the hands-on tutorial to build your first model in minutes.
+
+ [:octicons-arrow-right-24: Start Here](tutorials/getting-started.md)
+
+- :material-map-marker-path:{ .lg .middle } **Guided Learning Path**
+
+ ---
+
+ Work through seven example models in recommended order, from simple to complex.
+
+ [:octicons-arrow-right-24: Learning Path](examples/learning-path.md)
+
+- :material-swap-horizontal:{ .lg .middle } **Which DSL Should I Use?**
+
+ ---
+
+ Compare all seven domain DSLs and pick the right one for your problem.
+
+ [:octicons-arrow-right-24: Choosing a DSL](guides/choosing-a-dsl.md)
+
+- :material-translate:{ .lg .middle } **Rosetta Stone**
+
+ ---
+
+ See the same problem modeled with stockflow, control, and game theory DSLs side by side.
-!!! note "PyPI names differ from import names"
- Each package's PyPI name (what you `pip install`) differs from its Python import name.
- Use the table below as a reference.
+ [:octicons-arrow-right-24: Rosetta Stone](guides/rosetta-stone.md)
+
+
+
+## Interactive Notebooks
+
+Key guides include embedded [marimo](https://marimo.io) notebooks — run code, tweak parameters, and see results directly in the docs. No local setup required.
+
+| Guide | What You'll Explore |
+|-------|---------------------|
+| **[Getting Started](guides/getting-started.md)** | Build a thermostat model in 5 progressive stages |
+| **[Rosetta Stone](guides/rosetta-stone.md)** | Same problem modeled with three different DSLs |
+| **[Verification](guides/verification.md)** | All 3 verification layers with deliberately broken models |
+| **[Visualization](guides/visualization.md)** | 6 view types, 5 themes, cross-DSL rendering |
+| **[Interoperability](guides/interoperability.md)** | Cross-DSL composition and data exchange |
+
+## Packages
| PyPI Package | Import Name | Description |
|---|---|---|
@@ -32,50 +67,29 @@ pip install gds-examples # Tutorial models
| `gds-business` | `gds_business` | Business dynamics DSL (CLD, supply chain, value stream map) |
| `gds-examples` | — | Tutorial models demonstrating framework features |
-### For developers
+## Installation
-To work on the monorepo with all packages linked locally:
+Install individual packages from PyPI as needed:
```bash
-git clone https://github.com/BlockScience/gds-core.git
-cd gds-core
-uv sync --all-packages
+pip install gds-framework # Core library
+pip install gds-viz # Visualization
+pip install gds-stockflow # Stock-flow DSL
+pip install gds-control # Control systems DSL
+pip install gds-games # Game theory DSL
+pip install gds-software # Software architecture DSL
+pip install gds-business # Business dynamics DSL
+pip install gds-examples # Tutorial models
```
-## Quick Start
+For development (all packages linked locally):
-```python
-from gds import (
- BoundaryAction, Policy, Mechanism,
- GDSSpec, compile_system, verify,
- typedef, entity, state_var, space, interface,
-)
+```bash
+git clone https://github.com/BlockScience/gds-core.git
+cd gds-core
+uv sync --all-packages
```
-## Packages
-
-| Package | Docs |
-|---------|------|
-| **[gds-framework](framework/index.md)** | Core engine — blocks, composition algebra, compiler, verification |
-| **[gds-viz](viz/index.md)** | Mermaid diagram renderers for GDS specifications |
-| **gds-stockflow** | Declarative stock-flow DSL over GDS semantics |
-| **gds-control** | State-space control DSL over GDS semantics |
-| **[gds-games](games/index.md)** | Typed DSL for compositional game theory (Open Games) |
-| **gds-software** | Software architecture DSL — DFD, state machine, component, C4, ERD, dependency |
-| **[gds-business](business/index.md)** | Business dynamics DSL — CLD, supply chain, value stream map |
-| **[gds-examples](examples/index.md)** | Six tutorial models demonstrating every framework feature |
-
-## Guides
-
-Interactive tutorials with code, diagrams, and runnable marimo notebooks:
-
-| Guide | What You'll Learn |
-|-------|-------------------|
-| **[Getting Started](guides/getting-started.md)** | Build a thermostat model in 5 progressive stages — from raw blocks to DSL to verification |
-| **[Rosetta Stone](guides/rosetta-stone.md)** | Same resource-pool problem modeled with stockflow, control, and game theory DSLs |
-| **[Verification](guides/verification.md)** | All 3 verification layers demonstrated with deliberately broken models |
-| **[Visualization](guides/visualization.md)** | 6 view types, 5 themes, and cross-DSL rendering with gds-viz |
-
## Architecture
```
diff --git a/mkdocs.yml b/mkdocs.yml
index ab08042..335b5b0 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -21,8 +21,11 @@ theme:
name: Switch to light mode
features:
- content.code.copy
+ - navigation.tabs
- navigation.sections
- - navigation.expand
+ - navigation.indexes
+ - navigation.instant
+ - navigation.top
- toc.follow
plugins:
@@ -129,163 +132,11 @@ markdown_extensions:
nav:
- Home: index.md
- - Framework:
- - Overview: framework/index.md
- - Quick Reference: framework/quick-reference.md
- - Getting Started:
- - Installation: framework/getting-started/install.md
- - Quick Start: framework/getting-started/quickstart.md
- - User Guide:
- - Architecture: framework/guide/architecture.md
- - Type System: framework/guide/types.md
- - Spaces: framework/guide/spaces.md
- - State & Entities: framework/guide/state.md
- - Blocks & Roles: framework/guide/blocks.md
- - Composition Algebra: framework/guide/composition.md
- - Specification: framework/guide/spec.md
- - Pipeline: framework/guide/pipeline.md
- - Verification: framework/guide/verification.md
- - Glossary: framework/guide/glossary.md
- - API Reference:
- - Overview: framework/api/index.md
- - gds: framework/api/init.md
- - gds.blocks: framework/api/blocks.md
- - gds.types: framework/api/types.md
- - gds.state: framework/api/state.md
- - gds.spaces: framework/api/spaces.md
- - gds.spec: framework/api/spec.md
- - gds.canonical: framework/api/canonical.md
- - gds.compiler: framework/api/compiler.md
- - gds.ir: framework/api/ir.md
- - gds.verification: framework/api/verification.md
- - gds.query: framework/api/query.md
- - gds.parameters: framework/api/parameters.md
- - gds.serialize: framework/api/serialize.md
- - Visualization:
- - Overview: viz/index.md
- - Getting Started: viz/getting-started.md
- - User Guide:
- - Views: viz/guide/views.md
- - Theming: viz/guide/theming.md
- - API Reference:
- - gds_viz: viz/api/init.md
- - gds_viz.canonical: viz/api/canonical.md
- - gds_viz.architecture: viz/api/architecture.md
- - gds_viz.traceability: viz/api/traceability.md
- - gds_viz.mermaid: viz/api/mermaid.md
- - Games:
- - Overview: games/index.md
- - Getting Started: games/getting-started.md
- - User Guide:
- - Architecture: games/guide/architecture.md
- - Game Types: games/guide/game-types.md
- - Patterns & Composition: games/guide/patterns.md
- - Verification: games/guide/verification.md
- - Reports: games/guide/reports.md
- - Visualization: games/guide/visualization.md
- - CLI: games/guide/cli.md
- - Design:
- - Architecture Overview: games/design/architecture-overview.md
- - API Reference:
- - ogs: games/api/init.md
- - ogs.dsl.types: games/api/dsl-types.md
- - ogs.dsl.base: games/api/dsl-base.md
- - ogs.dsl.games: games/api/dsl-games.md
- - ogs.dsl.composition: games/api/dsl-composition.md
- - ogs.dsl.pattern: games/api/dsl-pattern.md
- - ogs.dsl.compile: games/api/dsl-compile.md
- - ogs.dsl.library: games/api/dsl-library.md
- - ogs.ir: games/api/ir.md
- - ogs.verification: games/api/verification.md
- - ogs.viz: games/api/viz.md
- - ogs.reports: games/api/reports.md
- - ogs.cli: games/api/cli.md
- - Business:
- - Overview: business/index.md
- - Getting Started: business/getting-started.md
- - User Guide:
- - Diagram Types: business/guide/diagram-types.md
- - Verification: business/guide/verification.md
- - API Reference:
- - Overview: business/api/index.md
- - gds_business: business/api/init.md
- - gds_business.common: business/api/common.md
- - gds_business.cld.elements: business/api/cld-elements.md
- - gds_business.cld.model: business/api/cld-model.md
- - gds_business.cld.compile: business/api/cld-compile.md
- - gds_business.cld.checks: business/api/cld-checks.md
- - gds_business.supplychain.elements: business/api/scn-elements.md
- - gds_business.supplychain.model: business/api/scn-model.md
- - gds_business.supplychain.compile: business/api/scn-compile.md
- - gds_business.supplychain.checks: business/api/scn-checks.md
- - gds_business.vsm.elements: business/api/vsm-elements.md
- - gds_business.vsm.model: business/api/vsm-model.md
- - gds_business.vsm.compile: business/api/vsm-compile.md
- - gds_business.vsm.checks: business/api/vsm-checks.md
- - gds_business.verification: business/api/verification.md
- - Stock-Flow:
- - Overview: stockflow/index.md
- - Getting Started: stockflow/getting-started.md
- - User Guide:
- - Elements & GDS Mapping: stockflow/guide/elements.md
- - Verification: stockflow/guide/verification.md
- - API Reference:
- - stockflow: stockflow/api/init.md
- - stockflow.dsl.elements: stockflow/api/elements.md
- - stockflow.dsl.model: stockflow/api/model.md
- - stockflow.dsl.compile: stockflow/api/compile.md
- - stockflow.verification.checks: stockflow/api/checks.md
- - stockflow.verification: stockflow/api/verification.md
- - Control:
- - Overview: control/index.md
- - Getting Started: control/getting-started.md
- - User Guide:
- - Elements & GDS Mapping: control/guide/elements.md
- - Verification: control/guide/verification.md
- - API Reference:
- - gds_control: control/api/init.md
- - gds_control.dsl.elements: control/api/elements.md
- - gds_control.dsl.model: control/api/model.md
- - gds_control.dsl.compile: control/api/compile.md
- - gds_control.verification.checks: control/api/checks.md
- - gds_control.verification: control/api/verification.md
- - Software:
- - Overview: software/index.md
- - Getting Started: software/getting-started.md
- - User Guide:
- - Diagram Types: software/guide/diagram-types.md
- - Verification: software/guide/verification.md
- - API Reference:
- - Overview: software/api/index.md
- - gds_software: software/api/init.md
- - gds_software.common: software/api/common.md
- - gds_software.dfd.elements: software/api/dfd-elements.md
- - gds_software.dfd.model: software/api/dfd-model.md
- - gds_software.dfd.compile: software/api/dfd-compile.md
- - gds_software.dfd.checks: software/api/dfd-checks.md
- - gds_software.statemachine.elements: software/api/sm-elements.md
- - gds_software.statemachine.model: software/api/sm-model.md
- - gds_software.statemachine.compile: software/api/sm-compile.md
- - gds_software.statemachine.checks: software/api/sm-checks.md
- - gds_software.component.elements: software/api/cp-elements.md
- - gds_software.component.model: software/api/cp-model.md
- - gds_software.component.compile: software/api/cp-compile.md
- - gds_software.component.checks: software/api/cp-checks.md
- - gds_software.c4.elements: software/api/c4-elements.md
- - gds_software.c4.model: software/api/c4-model.md
- - gds_software.c4.compile: software/api/c4-compile.md
- - gds_software.c4.checks: software/api/c4-checks.md
- - gds_software.erd.elements: software/api/erd-elements.md
- - gds_software.erd.model: software/api/erd-model.md
- - gds_software.erd.compile: software/api/erd-compile.md
- - gds_software.erd.checks: software/api/erd-checks.md
- - gds_software.dependency.elements: software/api/dep-elements.md
- - gds_software.dependency.model: software/api/dep-model.md
- - gds_software.dependency.compile: software/api/dep-compile.md
- - gds_software.dependency.checks: software/api/dep-checks.md
- - gds_software.verification: software/api/verification.md
- - Examples:
- - Overview: examples/index.md
+ - Learn:
+ - Start Here: tutorials/getting-started.md
+ - Getting Started Guide: guides/getting-started.md
+ - Choosing a DSL: guides/choosing-a-dsl.md
+ - Rosetta Stone: guides/rosetta-stone.md
- Learning Path: examples/learning-path.md
- Models:
- SIR Epidemic: examples/examples/sir-epidemic.md
@@ -297,21 +148,173 @@ nav:
- Evolution of Trust: examples/examples/evolution-of-trust.md
- Building Models: examples/building-models.md
- Feature Matrix: examples/feature-matrix.md
- - Tutorials:
- - Start Here: tutorials/getting-started.md
- - Guides:
- - Getting Started: guides/getting-started.md
- - Choosing a DSL: guides/choosing-a-dsl.md
- - Best Practices: guides/best-practices.md
- - Real-World Patterns: guides/real-world-patterns.md
- - Rosetta Stone: guides/rosetta-stone.md
+ - How-To Guides:
- Verification: guides/verification.md
- Visualization: guides/visualization.md
- - Troubleshooting: guides/troubleshooting.md
- Interoperability: guides/interoperability.md
- - Design Notes:
- - Layer 0 Milestone: guides/architecture-milestone-layer0.md
- - DSL Roadmap: guides/dsl-roadmap.md
- - Research Boundaries: guides/research-boundaries.md
- - View Stratification: guides/view-stratification.md
- - Ecosystem: framework/ecosystem.md
+ - Best Practices: guides/best-practices.md
+ - Real-World Patterns: guides/real-world-patterns.md
+ - Troubleshooting: guides/troubleshooting.md
+ - Reference:
+ - Framework:
+ - Overview: framework/index.md
+ - Quick Reference: framework/quick-reference.md
+ - Getting Started:
+ - Installation: framework/getting-started/install.md
+ - Quick Start: framework/getting-started/quickstart.md
+ - User Guide:
+ - Architecture: framework/guide/architecture.md
+ - Type System: framework/guide/types.md
+ - Spaces: framework/guide/spaces.md
+ - State & Entities: framework/guide/state.md
+ - Blocks & Roles: framework/guide/blocks.md
+ - Composition Algebra: framework/guide/composition.md
+ - Specification: framework/guide/spec.md
+ - Pipeline: framework/guide/pipeline.md
+ - Verification: framework/guide/verification.md
+ - Glossary: framework/guide/glossary.md
+ - API Reference:
+ - Overview: framework/api/index.md
+ - gds: framework/api/init.md
+ - gds.blocks: framework/api/blocks.md
+ - gds.types: framework/api/types.md
+ - gds.state: framework/api/state.md
+ - gds.spaces: framework/api/spaces.md
+ - gds.spec: framework/api/spec.md
+ - gds.canonical: framework/api/canonical.md
+ - gds.compiler: framework/api/compiler.md
+ - gds.ir: framework/api/ir.md
+ - gds.verification: framework/api/verification.md
+ - gds.query: framework/api/query.md
+ - gds.parameters: framework/api/parameters.md
+ - gds.serialize: framework/api/serialize.md
+ - Visualization:
+ - Overview: viz/index.md
+ - Getting Started: viz/getting-started.md
+ - User Guide:
+ - Views: viz/guide/views.md
+ - Theming: viz/guide/theming.md
+ - API Reference:
+ - gds_viz: viz/api/init.md
+ - gds_viz.canonical: viz/api/canonical.md
+ - gds_viz.architecture: viz/api/architecture.md
+ - gds_viz.traceability: viz/api/traceability.md
+ - gds_viz.mermaid: viz/api/mermaid.md
+ - Games:
+ - Overview: games/index.md
+ - Getting Started: games/getting-started.md
+ - User Guide:
+ - Architecture: games/guide/architecture.md
+ - Game Types: games/guide/game-types.md
+ - Patterns & Composition: games/guide/patterns.md
+ - Verification: games/guide/verification.md
+ - Reports: games/guide/reports.md
+ - Visualization: games/guide/visualization.md
+ - CLI: games/guide/cli.md
+ - Design:
+ - Architecture Overview: games/design/architecture-overview.md
+ - API Reference:
+ - ogs: games/api/init.md
+ - ogs.dsl.types: games/api/dsl-types.md
+ - ogs.dsl.base: games/api/dsl-base.md
+ - ogs.dsl.games: games/api/dsl-games.md
+ - ogs.dsl.composition: games/api/dsl-composition.md
+ - ogs.dsl.pattern: games/api/dsl-pattern.md
+ - ogs.dsl.compile: games/api/dsl-compile.md
+ - ogs.dsl.library: games/api/dsl-library.md
+ - ogs.ir: games/api/ir.md
+ - ogs.verification: games/api/verification.md
+ - ogs.viz: games/api/viz.md
+ - ogs.reports: games/api/reports.md
+ - ogs.cli: games/api/cli.md
+ - Business:
+ - Overview: business/index.md
+ - Getting Started: business/getting-started.md
+ - User Guide:
+ - Diagram Types: business/guide/diagram-types.md
+ - Verification: business/guide/verification.md
+ - API Reference:
+ - Overview: business/api/index.md
+ - gds_business: business/api/init.md
+ - gds_business.common: business/api/common.md
+ - gds_business.cld.elements: business/api/cld-elements.md
+ - gds_business.cld.model: business/api/cld-model.md
+ - gds_business.cld.compile: business/api/cld-compile.md
+ - gds_business.cld.checks: business/api/cld-checks.md
+ - gds_business.supplychain.elements: business/api/scn-elements.md
+ - gds_business.supplychain.model: business/api/scn-model.md
+ - gds_business.supplychain.compile: business/api/scn-compile.md
+ - gds_business.supplychain.checks: business/api/scn-checks.md
+ - gds_business.vsm.elements: business/api/vsm-elements.md
+ - gds_business.vsm.model: business/api/vsm-model.md
+ - gds_business.vsm.compile: business/api/vsm-compile.md
+ - gds_business.vsm.checks: business/api/vsm-checks.md
+ - gds_business.verification: business/api/verification.md
+ - Stock-Flow:
+ - Overview: stockflow/index.md
+ - Getting Started: stockflow/getting-started.md
+ - User Guide:
+ - Elements & GDS Mapping: stockflow/guide/elements.md
+ - Verification: stockflow/guide/verification.md
+ - API Reference:
+ - stockflow: stockflow/api/init.md
+ - stockflow.dsl.elements: stockflow/api/elements.md
+ - stockflow.dsl.model: stockflow/api/model.md
+ - stockflow.dsl.compile: stockflow/api/compile.md
+ - stockflow.verification.checks: stockflow/api/checks.md
+ - stockflow.verification: stockflow/api/verification.md
+ - Control:
+ - Overview: control/index.md
+ - Getting Started: control/getting-started.md
+ - User Guide:
+ - Elements & GDS Mapping: control/guide/elements.md
+ - Verification: control/guide/verification.md
+ - API Reference:
+ - gds_control: control/api/init.md
+ - gds_control.dsl.elements: control/api/elements.md
+ - gds_control.dsl.model: control/api/model.md
+ - gds_control.dsl.compile: control/api/compile.md
+ - gds_control.verification.checks: control/api/checks.md
+ - gds_control.verification: control/api/verification.md
+ - Software:
+ - Overview: software/index.md
+ - Getting Started: software/getting-started.md
+ - User Guide:
+ - Diagram Types: software/guide/diagram-types.md
+ - Verification: software/guide/verification.md
+ - API Reference:
+ - Overview: software/api/index.md
+ - gds_software: software/api/init.md
+ - gds_software.common: software/api/common.md
+ - gds_software.dfd.elements: software/api/dfd-elements.md
+ - gds_software.dfd.model: software/api/dfd-model.md
+ - gds_software.dfd.compile: software/api/dfd-compile.md
+ - gds_software.dfd.checks: software/api/dfd-checks.md
+ - gds_software.statemachine.elements: software/api/sm-elements.md
+ - gds_software.statemachine.model: software/api/sm-model.md
+ - gds_software.statemachine.compile: software/api/sm-compile.md
+ - gds_software.statemachine.checks: software/api/sm-checks.md
+ - gds_software.component.elements: software/api/cp-elements.md
+ - gds_software.component.model: software/api/cp-model.md
+ - gds_software.component.compile: software/api/cp-compile.md
+ - gds_software.component.checks: software/api/cp-checks.md
+ - gds_software.c4.elements: software/api/c4-elements.md
+ - gds_software.c4.model: software/api/c4-model.md
+ - gds_software.c4.compile: software/api/c4-compile.md
+ - gds_software.c4.checks: software/api/c4-checks.md
+ - gds_software.erd.elements: software/api/erd-elements.md
+ - gds_software.erd.model: software/api/erd-model.md
+ - gds_software.erd.compile: software/api/erd-compile.md
+ - gds_software.erd.checks: software/api/erd-checks.md
+ - gds_software.dependency.elements: software/api/dep-elements.md
+ - gds_software.dependency.model: software/api/dep-model.md
+ - gds_software.dependency.compile: software/api/dep-compile.md
+ - gds_software.dependency.checks: software/api/dep-checks.md
+ - gds_software.verification: software/api/verification.md
+ - Ecosystem: framework/ecosystem.md
+ - Design & Research:
+ - Layer 0 Milestone: guides/architecture-milestone-layer0.md
+ - DSL Roadmap: guides/dsl-roadmap.md
+ - Research Boundaries: guides/research-boundaries.md
+ - View Stratification: guides/view-stratification.md
+ - Examples Overview: examples/index.md
diff --git a/packages/gds-sim/gds_sim/parallel.py b/packages/gds-sim/gds_sim/parallel.py
index 3732c42..0278675 100644
--- a/packages/gds-sim/gds_sim/parallel.py
+++ b/packages/gds-sim/gds_sim/parallel.py
@@ -2,6 +2,7 @@
from __future__ import annotations
+import multiprocessing as mp
from concurrent.futures import ProcessPoolExecutor
from typing import TYPE_CHECKING
@@ -38,7 +39,8 @@ def _parallel_simulation(sim: Simulation, max_workers: int | None) -> Results:
]
partial_results: list[Results] = []
- with ProcessPoolExecutor(max_workers=max_workers) as pool:
+ ctx = mp.get_context("fork")
+ with ProcessPoolExecutor(max_workers=max_workers, mp_context=ctx) as pool:
futures = [pool.submit(_run_single, *job) for job in jobs]
for f in futures:
partial_results.append(f.result())
diff --git a/packages/gds-sim/tests/test_results.py b/packages/gds-sim/tests/test_results.py
index db83595..54a3c04 100644
--- a/packages/gds-sim/tests/test_results.py
+++ b/packages/gds-sim/tests/test_results.py
@@ -37,7 +37,7 @@ def test_preallocated_overflow_to_append(self) -> None:
assert len(r) == 4
def test_to_dataframe(self) -> None:
- import pandas as pd
+ pd = __import__("pytest").importorskip("pandas")
r = gds_sim.Results(["val"])
r.append({"val": 100}, timestep=0, substep=0, run=0, subset=0)
@@ -74,7 +74,7 @@ def test_merge_single(self) -> None:
class TestResultsFromSimulation:
def test_to_dataframe_from_sim(self, simple_model: gds_sim.Model) -> None:
- import pandas as pd
+ pd = __import__("pytest").importorskip("pandas")
sim = gds_sim.Simulation(model=simple_model, timesteps=5)
df = sim.run().to_dataframe()