You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
** Difference between legacy and new engine**
The legacy engine treats names case-insensitively. The refactored engine currently performs case-sensitive lookups- at least for control rule names
Circling back on this one, from my side, it looks addressed in 6.0.0a3.
I ran the repo's own namecase_* fixtures on the PyPI wheel openswmm-6.0.0a3-cp311-cp311-macosx_11_0_arm64.whl (Python 3.11.15, macOS Darwin arm64):
tests/unit/engine/data/namecase_ci_refs.inp — the exact control-rule case here: the same node referenced as ChestnuthillRes_IM vs ChestnutHillRes_IM, and ORIFICE or1 vs ORIFICE OR1. On a3 it runs clean, no RPT errors — the refs resolve case-insensitively like the legacy engine.
tests/unit/engine/data/namecase_controls_badref.inp — a genuinely undefined ref (IF NODE NoSuchNode …) is still rejected, so the lookup isn't just swallowing bad names.
from openswmm.engine import run_with_callback
run_with_callback("namecase_ci_refs.inp", "out.rpt", "out.out", None) # clean on 6.0.0a3
Looks like the feat(names): … commits (case-insensitive object-name lookup, non-registry name paths, curve/timeseries namespace split) all made it into the a3 tag, so it ships in the current wheel.
Mostly just curious: is there more name-handling refactoring still in flight here (other object types, the registry paths, etc.), or is the case-insensitivity work basically settled as of a3?
@ddspot, yes there is more to come. While we addressed the immediate issue you raised. Once we have finalized the alpha4 work, I want to do a more exhaustive review to see if there are additional gaps. Please give us some time to sort it out.
Activity
dickinsonre commentedon Jul 18, 2026
yes, there are a lot of old swmm5 rules that are a mix of upper and lowercase,
feat(names): case-insensitive object-name lookup + ERR 207 duplicate …
feat(names): case-insensitive lookup for non-registry name paths (#96)
feat(tables): split curve and timeseries name spaces (#96)
ddspot commentedon Sep 7, 2026
Circling back on this one, from my side, it looks addressed in 6.0.0a3.
I ran the repo's own namecase_* fixtures on the PyPI wheel openswmm-6.0.0a3-cp311-cp311-macosx_11_0_arm64.whl (Python 3.11.15, macOS Darwin arm64):
from openswmm.engine import run_with_callback
run_with_callback("namecase_ci_refs.inp", "out.rpt", "out.out", None) # clean on 6.0.0a3
Looks like the feat(names): … commits (case-insensitive object-name lookup, non-registry name paths, curve/timeseries namespace split) all made it into the a3 tag, so it ships in the current wheel.
Mostly just curious: is there more name-handling refactoring still in flight here (other object types, the registry paths, etc.), or is the case-insensitivity work basically settled as of a3?
cbuahin commentedon Sep 8, 2026
@ddspot, yes there is more to come. While we addressed the immediate issue you raised. Once we have finalized the alpha4 work, I want to do a more exhaustive review to see if there are additional gaps. Please give us some time to sort it out.
feat(names): case-insensitive object-name lookup + ERR 207 duplicate …
feat(names): case-insensitive lookup for non-registry name paths (Hyd…
feat(tables): split curve and timeseries name spaces (HydroCouple#96)