Releases: networmix/NetGraph
Releases · networmix/NetGraph
v0.21.0
[0.21.0] - 2026-03-26
Fixed
- Risk group scoped failures now produce correct exclusions;
compute_exclusionspasses flattened attribute dicts to policy matching instead of rawRiskGroupobjects
Changed
- Relicensed from BSD-3-Clause to MIT
Added
- Cached failure-rule candidate pools in
FailureManager, avoiding repeated condition matching across Monte Carlo iterations - Cached risk group membership index for O(1) node/link exclusion lookup on risk group failure
v0.20.0
v0.19.0
v0.18.0
v0.17.4
[0.17.4] - 2026-02-08
Fixed
- Single shared RNG per
apply_failurescall, fixing correlated-seed bug across rules - Bracket-exhaustion edge case in MSD binary search when all probed alphas are feasible
Removed
seeds_per_alphaMSD parameter (placement is deterministic)SeedManager.create_random_state()andseed_global_random()(unused)
v0.17.3
v0.17.2
v0.17.1
v0.17.0
[0.17.0] - 2026-01-10
Changed
BREAKING: DSL syntax refinement with renamed fields and restructured expansion blocks; see updated DSL reference
v0.16.0
[0.16.0] - 2025-12-21
Changed
- Module reorganization:
ngraph.execsplit intongraph.analysis(runtime analysis) andngraph.model(data structures); public API unchanged via re-exports - Expanded public API:
TrafficDemand,FlowPolicyPreset,Scenario,NetworkExplorer, and placement functions now exported from top-level modules - Placement analysis: Extracted SPF caching and demand placement logic into
ngraph.analysis.placementmodule withplace_demands()andPlacementResult
Added
ngraph.model.demandsubpackage:TrafficDemandand builder functionsngraph.model.flowsubpackage:FlowPolicyPresetand policy configurationngraph.typesexports:Mode,FlowPlacement,EdgeSelect,EdgeRef,MaxFlowResult
[0.15.0] - 2025-12-21
Added
- Dynamic risk group creation:
membershiprules auto-assign entities by attribute matching;generateblocks create groups from unique attribute values - Risk group validation: Undefined references and circular hierarchies detected at load time
- Dot-notation in conditions:
attrfield supports nested paths (e.g.,hardware.vendor)
Changed
match.logicdefaults now context-aware:"or"for adjacency/demands,"and"for membership rules