Skip to content

Releases: networmix/NetGraph

v0.16.0

22 Dec 11:22
6ee4620

Choose a tag to compare

[0.16.0] - 2025-12-21

Changed

  • Module reorganization: ngraph.exec split into ngraph.analysis (runtime analysis) and ngraph.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.placement module with place_demands() and PlacementResult

Added

  • ngraph.model.demand subpackage: TrafficDemand and builder functions
  • ngraph.model.flow subpackage: FlowPolicyPreset and policy configuration
  • ngraph.types exports: Mode, FlowPlacement, EdgeSelect, EdgeRef, MaxFlowResult

[0.15.0] - 2025-12-21

Added

  • Dynamic risk group creation: membership rules auto-assign entities by attribute matching; generate blocks create groups from unique attribute values
  • Risk group validation: Undefined references and circular hierarchies detected at load time
  • Dot-notation in conditions: attr field supports nested paths (e.g., hardware.vendor)

Changed

  • match.logic defaults now context-aware: "or" for adjacency/demands, "and" for membership rules

v0.14.0

20 Dec 05:44
6464476

Choose a tag to compare

[0.14.0] - 2025-12-20

Changed

  • BREAKING: Monte Carlo results restructured: baseline returned separately; results contains deduplicated failure patterns with occurrence_count
  • BREAKING: baseline parameter removed from Monte Carlo APIs; baseline always runs implicitly

Added

  • FlowIterationResult.occurrence_count: how many iterations produced this failure pattern
  • FlowIterationResult.failure_trace: mode/rule selection details when store_failure_patterns=True

[0.13.0] - 2025-12-19

Changed

  • BREAKING: TrafficDemand.source_path/sink_path renamed to source/sink; now accept string patterns or selector dicts with path, group_by, and match fields
  • BREAKING: Removed attr:<name> magic string syntax; use {"group_by": "<name>"} dict selectors instead
  • BREAKING: Removed ngraph.utils.nodes module; use ngraph.dsl.selectors for node selection
  • Unified selector system: ngraph.dsl.selectors provides normalize_selector() and select_nodes() for consistent node selection across demands, workflows, adjacency, and overrides
  • Variable expansion in demands: TrafficDemand supports expand_vars with $var/${var} syntax and expansion_mode (cartesian/zip)
  • Match conditions: Selector match field supports 12 operators: ==, !=, <, <=, >, >=, contains, not_contains, in, not_in, any_value, no_value
  • Context-aware defaults: active_only defaults to True for demands/workflows, False for adjacency/overrides

Added

  • ngraph.dsl.selectors module: NodeSelector, MatchSpec, Condition schema classes
  • ngraph.dsl.expansion module: ExpansionSpec, expand_templates(), substitute_vars(), expand_name_patterns(), expand_risk_group_refs()
  • Bracket expansion in risk groups: [1-3] and [a,b,c] patterns now expand in risk group definitions (including children) and membership arrays on nodes, links, and groups
  • TrafficDemand.group_mode field for node group handling (flatten, per_group, group_pairwise)
  • .claude/skills/netgraph-dsl/: Claude skill with DSL syntax reference and examples

v0.12.3

12 Dec 08:05
f3ef090

Choose a tag to compare

[0.12.3] - 2025-12-11

Changed

  • SPF caching in demand placement: demand_placement_analysis() caches SPF results by (source, policy_preset) for ECMP, WCMP, and TE_WCMP_UNLIM policies; TE policies recompute when capacity constraints require alternate paths
  • MSD AnalysisContext caching: MaximumSupportedDemand builds AnalysisContext once and reuses it across all binary search probes

v0.12.2

07 Dec 09:24

Choose a tag to compare

[0.12.2] - 2025-12-08

Fixed

  • Cache key generation: Use id() instead of str() for non-hashable kwargs in _create_cache_key() to avoid expensive __repr__ traversals on large objects

v0.12.1

07 Dec 03:04

Choose a tag to compare

[0.12.1] - 2025-12-07

Added

  • NetworkX interop: New ngraph.lib.nx module with from_networkx() and to_networkx() for converting between NetworkX graphs and netgraph_core.StrictMultiDiGraph
  • Mapping classes: NodeMap and EdgeMap for bidirectional node/edge ID lookups after conversion

v0.12.0

06 Dec 22:07

Choose a tag to compare

[0.12.0] - 2025-12-06

Changed

  • BREAKING: Minimum Python version raised to 3.11
  • Dependencies: Updated netgraph-core to >=0.3.0

v0.10.0 🎉

25 Nov 05:41
649c651

Choose a tag to compare

Major overhaul

v0.7.0

09 Jun 01:52

Choose a tag to compare

NetGraph Release Notes

Version 0.7.0 - First Usable Release 🎉

NetGraph v0.7.0, despite the version number, is actually the first usable release! Well, at least, I hope so. :-)

This release introduces the core components and features needed to start modeling and analyzing network topologies, traffic flows, and failures.

What's Available

  • Fundamental Components: StrictMultiGraph, base pathfinding and flow algorithms
  • Scenario-Based Modeling: YAML-based scenarios with Domain-Specific Language (DSL) describing topology, failures, traffic, and workflow
  • Hierarchical Blueprints: Reusable network templates with nested structures and parameterization
  • JupyterLab Support: Run NetGraph in a containerized environment with JupyterLab for interactive analysis
  • Demand Placement: Place traffic demands on the network with various flow placement strategies (e.g., shortest path only, ECMP/UCMP, etc.)
  • Capacity Calculation: Calculate MaxFlow with different flow placement strategies

API Stability

The core API is becoming more stable with this release, though some changes may still occur as I refine it based on real scenarios. I will do my best to minimize breaking changes, but it's important to note that the development of analytical features is far from complete and may lead to API adjustments or even breaking changes in future releases.

What's Coming Next

  • 🚧 Failure Simulation: Model component and risk groups failures for availability analysis with Monte Carlo simulation
  • 🚧 Network Analysis: Workflow steps and tools to analyze capacity, failure tolerance, and power/cost efficiency of network designs
  • 🚧 Command Line Interface: Execute scenarios from terminal with JSON output for simple automation
  • 🚧 Python API: API for programmatic access to scenario components and network analysis tools

Getting Started

📚 Full Documentation - Installation, tutorials, examples, and complete API reference

# Quick start with Docker
git clone https://github.com/networmix/NetGraph
cd NetGraph
./run.sh build
./run.sh run  # Opens JupyterLab at http://127.0.0.1:8788/