diff --git a/.markdownlint.json b/.markdownlint.json index 8281a56..d14fbdf 100644 --- a/.markdownlint.json +++ b/.markdownlint.json @@ -1,6 +1,7 @@ { "MD007": false, "MD013": false, + "MD024": false, "MD033": false, "MD036": false, "MD041": false, diff --git a/README.md b/README.md index 751ba75..322ca59 100644 --- a/README.md +++ b/README.md @@ -153,7 +153,7 @@ workflow: ## Repository Structure -``` +```text ngraph/ # Python package source dsl/ # Scenario parsing and blueprint expansion model/ # Network and flow domain models diff --git a/dev/dev.md b/dev/dev.md index 6979a49..046bc29 100644 --- a/dev/dev.md +++ b/dev/dev.md @@ -20,7 +20,7 @@ make docs-serve # Serve docs locally ## Key Development Files -``` +```text pyproject.toml # Package config, dependencies, tool settings Makefile # Development commands .pre-commit-config.yaml # Code quality hooks @@ -29,7 +29,7 @@ dev/run-checks.sh # Manual code quality checks ## Git Workflows -``` +```text .github/workflows/ ├── python-test.yml # CI: tests, linting, type checking ├── docs.yml # Auto-deploy documentation diff --git a/docs/examples/clos-fabric.md b/docs/examples/clos-fabric.md index 4c34035..3ff004a 100644 --- a/docs/examples/clos-fabric.md +++ b/docs/examples/clos-fabric.md @@ -206,7 +206,7 @@ print("Uneven WCMP:", wcmp) Example output: -``` +```text Baseline ECMP: {('b1|b2', 'b1|b2'): 256.0} Baseline WCMP: {('b1|b2', 'b1|b2'): 256.0} Uneven ECMP: {('b1|b2', 'b1|b2'): 64.0} diff --git a/docs/reference/api-full.md b/docs/reference/api-full.md index 1ea9611..5e694fa 100644 --- a/docs/reference/api-full.md +++ b/docs/reference/api-full.md @@ -262,7 +262,7 @@ Typical usage example: - `workflow` (List[WorkflowStep]) - `failure_policy_set` (FailurePolicySet) = FailurePolicySet(policies={}) - `traffic_matrix_set` (TrafficMatrixSet) = TrafficMatrixSet(matrices={}) -- `results` (Results) = Results(_store={}, _metadata={}, _active_step=None, _scenario={}) +- `results` (Results) = Results(\_store={}, \_metadata={}, \_active_step=None, \_scenario={}) - `components_library` (ComponentsLibrary) = ComponentsLibrary(components={}) - `seed` (Optional[int]) diff --git a/docs/reference/design.md b/docs/reference/design.md index 116f2ce..ac02316 100644 --- a/docs/reference/design.md +++ b/docs/reference/design.md @@ -546,7 +546,7 @@ These configurations enable realistic modeling of diverse forwarding behaviors: For traffic matrix placement, NetGraph provides `FlowPolicyPreset` values that bundle the routing semantics described above into convenient configurations. These presets map to real-world network behaviors: | Preset | Behavior | Use Case | -|--------|----------|----------| +| -------- | ---------- | ---------- | | `SHORTEST_PATHS_ECMP` | IP/IGP with hash-based ECMP | Traditional routers (OSPF/IS-IS), equal splits across equal-cost paths | | `SHORTEST_PATHS_WCMP` | IP/IGP with weighted ECMP | Routers with WCMP support, proportional splits based on link capacity | | `TE_WCMP_UNLIM` | MPLS-TE / SDN with WCMP | Capacity-aware TE with unlimited tunnels, iterative placement | @@ -556,7 +556,7 @@ For traffic matrix placement, NetGraph provides `FlowPolicyPreset` values that b **Detailed Configuration Mapping (preset internals):** | Preset | `require_capacity` | `multi_edge` | `max_flow_count` | `flow_placement` | -|--------|--------------------|--------------|------------------|------------------| +| -------- | -------------------- | -------------- | ------------------ | ------------------ | | `SHORTEST_PATHS_ECMP` | `false` | `true` | `1` | `EQUAL_BALANCED` | | `SHORTEST_PATHS_WCMP` | `false` | `true` | `1` | `PROPORTIONAL` | | `TE_WCMP_UNLIM` | `true` | `true` | unlimited | `PROPORTIONAL` | diff --git a/docs/reference/dsl.md b/docs/reference/dsl.md index 5fa05b8..95ecb71 100644 --- a/docs/reference/dsl.md +++ b/docs/reference/dsl.md @@ -73,16 +73,16 @@ network: links: - source: SEA target: SFO - link_params: - capacity: 200 - cost: 6846 - risk_groups: ["RiskGroup1", "RiskGroup2"] - attrs: - distance_km: 1369.13 - media_type: "fiber" - hardware: - source: {component: "800G-ZR+", count: 1} - target: {component: "1600G-2xDR4", count: 1} + link_params: + capacity: 200 + cost: 6846 + risk_groups: ["RiskGroup1", "RiskGroup2"] + attrs: + distance_km: 1369.13 + media_type: "fiber" + hardware: + source: {component: "800G-ZR+", count: 1} + target: {component: "1600G-2xDR4", count: 1} ``` Recognized keys for each link entry: diff --git a/docs/reference/workflow.md b/docs/reference/workflow.md index 5dbde48..eea8337 100644 --- a/docs/reference/workflow.md +++ b/docs/reference/workflow.md @@ -21,12 +21,12 @@ workflow: - step_type: MaximumSupportedDemand name: msd_baseline matrix_name: baseline_traffic_matrix -- step_type: TrafficMatrixPlacement - name: tm_placement - matrix_name: baseline_traffic_matrix - failure_policy: random_failures - iterations: 1000 - baseline: true + - step_type: TrafficMatrixPlacement + name: tm_placement + matrix_name: baseline_traffic_matrix + failure_policy: random_failures + iterations: 1000 + baseline: true ``` ## Execution Model diff --git a/tests/integration/README.md b/tests/integration/README.md index 1bc7f09..f4eb10f 100644 --- a/tests/integration/README.md +++ b/tests/integration/README.md @@ -314,7 +314,7 @@ The integration tests framework follows a **hybrid approach** for template usage ### Template Selection Guide | Test Type | Recommended Approach | Example | -|-----------|---------------------|---------| +| ----------- | --------------------- | --------- | | Basic Integration | YAML files + template variants | `test_scenario_1.py` | | Error Cases | Template builders | `ErrorInjectionTemplates.missing_nodes_builder()` | | Edge Cases | Template builders | `EdgeCaseTemplates.empty_network_builder()` |