Skip to content

Refactoring for solving network dependencies#612

Merged
jpalm3r merged 5 commits intojapr/network-supportfrom
japr/network-dependencies
Mar 18, 2026
Merged

Refactoring for solving network dependencies#612
jpalm3r merged 5 commits intojapr/network-supportfrom
japr/network-dependencies

Conversation

@jpalm3r
Copy link
Collaborator

@jpalm3r jpalm3r commented Mar 17, 2026

networkx and mikeio1d are soft dependencies only needed for network model results, but they were imported unconditionally via model/network.py, causing import modelskill to fail in environments where those packages are not installed (e.g. CI running uv sync --group test --no-dev).

The fix moves all network-related building blocks (NetworkNode, NetworkEdge, EdgeBreakPoint, BasicNode, BasicEdge, Network) into a new opt-in module modelskill.network, which users import explicitly only when they need network functionality. The model/network.py module now only contains NodeModelResult and NetworkModelResult, with networkx and mikeio1d never touched during a normal import modelskill.

A [project.optional-dependencies] entry is also added so pip users can install network support with pip install modelskill[networks].

@jpalm3r jpalm3r requested a review from ryan-kipawa March 17, 2026 09:52
@jpalm3r jpalm3r linked an issue Mar 17, 2026 that may be closed by this pull request
@jpalm3r jpalm3r mentioned this pull request Mar 17, 2026
Copy link
Member

@ecomodeller ecomodeller left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good — clean extraction of the networkx/mikeio1d dependencies into the opt-in module.

@jpalm3r jpalm3r merged commit c1b6725 into japr/network-support Mar 18, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Test and fix network dependencies

2 participants