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
Biggest piece of the v5.6 sync. Upstream extracted ~1,800 lines of DataFileClass into the new HelpersClass, and rewrote how OsemosysClass finds the GLPK/CBC solver on the user's machine. We need to absorb the helpers refactor without losing MUIOGO's solver-resolution work.
What's in scope:
merge upstream's DataFileClass.py rewrite (use the Helpers extraction)
preserve Config.validate_path(Config.DATA_STORAGE, case) as the first line of OsemosysClass.__init__ (MUIOGO security fix from dc8f3c60, not present upstream)
guard the Indicators.json / Duals.json reads in the constructor with try/except → empty dict
use self.genData.get('osy-indicators', []) instead of unguarded subscript
backend CaseRoute.py (/saveParamFile route): persist DualData and IndicatorData alongside ParamData and VarData
What's not in scope:
frontend changes (handled separately)
upload/config view (handled in the cosmetic sub-issue)
Done when:
branch base: feature/v56-ui-sync
demo case solves end-to-end with both GLPK and CBC
on macOS: brew install glpk cbc works, app finds solvers
Biggest piece of the v5.6 sync. Upstream extracted ~1,800 lines of
DataFileClassinto the newHelpersClass, and rewrote howOsemosysClassfinds the GLPK/CBC solver on the user's machine. We need to absorb the helpers refactor without losing MUIOGO's solver-resolution work.What's in scope:
DataFileClass.pyrewrite (use the Helpers extraction)OsemosysClass.pyconstructor refactor (Path-based, Helpers-based parameter building)shutil.which→ bundled). Adopting upstream's version wholesale would re-introduce bugs we already fixed in [Bug] Non-Windows solver paths in OsemosysClass are hardcoded dead-end stubs #43, [Bug] Windows .bat installation fails 🦇 #86, fix(windows): improve solver installation flow with CBC fallback (Refs #86) #101, Fix Windows GLPK fallback in setup #262is_bundled-conditionalcwdpattern inDataFileClass.runrun_26022026method (it containsshell=Truecalls; UPSTREAM_SYNC.md rejects)Config.validate_path(Config.DATA_STORAGE, case)as the first line ofOsemosysClass.__init__(MUIOGO security fix fromdc8f3c60, not present upstream)Indicators.json/Duals.jsonreads in the constructor with try/except → empty dictself.genData.get('osy-indicators', [])instead of unguarded subscriptCaseRoute.py(/saveParamFileroute): persistDualDataandIndicatorDataalongsideParamDataandVarDataWhat's not in scope:
Done when:
feature/v56-ui-syncbrew install glpk cbcworks, app finds solversaptNotes:
feature/v56-ui-sync(notmain)resolve_solver_executableduplicated in bothHelpersClass.pyandOsemosysClass.py— we use neither, keep MUIOGO's local codeRelated: #457, #43, #86, #101, #262,
docs/UPSTREAM_SYNC.md