Gemseo support - #88
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
|
@chrislupp : can you please give some info on how to compile the doc ? I just did npm install under Debian but it fails to install dependencies `removed 116 packages, changed 62 packages, and audited 1306 packages in 34s 434 packages are looking for funding 43 vulnerabilities (3 low, 27 moderate, 11 high, 2 critical) To address issues that do not require attention, run: To address all issues (including breaking changes), run: Run npm audit fix --force |
|
hmm, interesting. I usually do npm install or bun install (more recently I prefer bun). I can try to take a look at it tonight after work. I think this repo might actually need an update to the docs dependencies (security). I'll check that as well. |
|
Thanks, bun install works, what command should I type then to generate and serve the doc? |
|
I believe it would be "bun run dev" |
|
Thanks, bun run start works, bun run dev does not. |
|
@AntoineD You may want to have a look & make comments |
|
as a heads up, we are going to have to change the base branch from main to develop. I did start the review last night, but I suspect that there will have to be at least a deconflict after the branch change. Let me know if you want help with it or want me to change the base branch for you. |
Sure, sorry for that. I can do it. |
Add philote_mdo.gemseo, providing PhiloteDiscipline (a GEMSEO Discipline that calls a remote Philote-MDO server) and GEMSEOtoPhiloteDiscipline (the opposite direction, serving a GEMSEO discipline over gRPC). Add matching examples (Paraboloid, OpenAeroStruct, and the Sellar problem driven from OpenMDAO) and integration tests under tests/, adapted to the current OpenMdaoSubProblem() + add_group() construction pattern. Also add the gemseo extra to pyproject.toml, add gemseo to the CI test dependencies, and fix proto compilation on Windows.
Add a "Working with GEMSEO" section with two tutorials, ported from the retired Jupyter Book docs: using PhiloteDiscipline to optimize a remote Paraboloid discipline, and coupling OpenAeroStruct with GEMSEO through an OpenMDAO sub-problem. Enable @docusaurus/theme-mermaid so the flowchart diagrams on these pages render. Note: docs/package-lock.json was not regenerated (no Node/npm available in this environment) -- run `npm install` in docs/ before the next `npm ci` build.
version in pyproject.toml
Covers the ValueError on a missing channel, sending discipline options to the server, the ndarray-sized default_output_data branch in GEMSEOtoPhiloteDiscipline.setup(), and the defensive skip of Jacobian entries for outputs outside a wrapped discipline's own output grammar. Also marks the TYPE_CHECKING-only imports as pragma: no cover, since they can never execute at runtime. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
ce44bd5 to
a3d3185
Compare
…nder The GEMSEO tutorials use ```mermaid fences, but the theme was never actually wired in: package.json didn't list the dependency and docusaurus.config.ts had no markdown.mermaid / themes entry, so the diagrams were not compiled and rendered as plain code blocks instead. Verified by building the site and loading both tutorial pages in a browser: the flowcharts now render as SVG diagrams. Note: docs/package-lock.json still needs to be regenerated with real npm (this environment only has bun) before `npm ci` in CI will pick up the new dependency. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
@chrislupp I think I have rebased and set the target branch to develop. Is it fine for you? |
|
thanks for the rebase. I did take a look at it 2 days ago and it looked good across the board. I'll take another look at it tonight (don't have time to at work). I expect that anything remaining changes would be small/minor. |
The 0.8.0 versioned docs describe the released package, which has no philote_mdo.gemseo module. The GEMSEO pages stay under docs/docs/ (the Next version) and will be snapshotted by the release workflow with the first release that ships them. Signed-off-by: Christopher Lupp <christopherlupp@gmail.com>
|
I'm in the process of reviewing and one bigger thing showed up, so I decided to fix it and push. I removed the GEMSEO pages from the 0.8.0 versioned snapshot. The way our CI/CD works, the release workflow creates a new docs snapshot on every stable release (the merge to |
package.json gained @docusaurus/theme-mermaid without a matching lock update, so the documentation workflow's npm ci refused to install. Regenerated with npm 10 (the version CI's Node 20 ships) in lockfile-only mode: this adds mermaid and its dependencies, and bumps katex from 0.16.45 to 0.16.47 because mermaid requires ^0.16.47. Signed-off-by: Christopher Lupp <christopherlupp@gmail.com>
|
I'm still not done reviewing. I'm off work tomorrow and hope to finish then. |
|
Thanks for the review @chrislupp . Sorry for the misunderstanding on the 0.8.0 snapshot. |
philote-examples 0.5.1 is the first release whose OasAerostructDiscipline declares the CD and CL partials with respect to alpha. With earlier versions the SLSQP scenario fails on its first gradient request. Signed-off-by: Christopher Lupp <christopherlupp@gmail.com>
PhiloteDiscipline is built on ExplicitClient, so it connects to explicit Philote-MDO servers only; against an implicit server it fails at execute with "Method not found". The intro also named RemoteExplicitComponent, the OpenMDAO client, as the way to serve an OpenMDAO model; serving is done with OpenMdaoSubProblem. Signed-off-by: Christopher Lupp <christopherlupp@gmail.com>
The GEMSEO tests import gemseo at module level, so without it installed they fail to import. List it next to OpenMDAO in the README and the installation page. Signed-off-by: Christopher Lupp <christopherlupp@gmail.com>
Fix the misspelled GEMSEOtoPhiloteDiscipline attribute and constructor argument before they are released as public API. Signed-off-by: Christopher Lupp <christopherlupp@gmail.com>
The constructor documented that an empty name would use the remote discipline's name, but passed it straight to GEMSEO, so every remote discipline was named PhiloteDiscipline. Query GetInfo and use the server-reported name when none is given; GEMSEO still falls back to the class name when the server reports none (the default). Dynamic-shape and discrete server variables were not handled. Dynamic shapes were never sent, so the first execute failed with an error asking for SetVariableShapes, which a GEMSEO user cannot call. Discrete variables were left out of the grammars and silently kept their server-side defaults. Reject both at construction with a NotImplementedError naming the variables, until they are supported. Signed-off-by: Christopher Lupp <christopherlupp@gmail.com>
test_sellar_mda_compute only asserted that obj and con1 were present, so any values passed. Evaluate at the canonical Sellar starting point (x = 1, z = [5, 2]) and compare against the canonical result there. Signed-off-by: Christopher Lupp <christopherlupp@gmail.com>
Signed-off-by: Christopher Lupp <christopherlupp@gmail.com>
Python 3.9 reached end of life in October 2025, and GEMSEO 6.3 requires 3.10, so the 3.9 CI job resolved GEMSEO 6.2 while every other job tested 6.3. Require Python >=3.10, remove 3.9 from the CI matrix and the classifiers, and update the agent guidelines and the landing page. Signed-off-by: Christopher Lupp <christopherlupp@gmail.com>
|
I finished the review and pushed the remaining changes straight to your branch (8 commits); that was easier than writing them all up as change requests. Please review the changes and let me know if this is ok with you. OpenAeroStruct example.
Tests. Docs
Python 3.9 dropped. Python 3.9 is end of life, and GEMSEO 6.3 requires 3.10, so the 3.9 CI job was the only one testing GEMSEO 6.2. CI is green on Python 3.10 through 3.12. Like I said, it seemed easier to propose these changes and have you review them. Obviously, this is only a proposal, so let me know if you want to do things differently. |
|
@FrancoisGallard, regarding your release question: I was either going to immediately release the next version after the PR or after the other pending PR if it appeared like we were reasonably close to wrapping up. Right now I think just releasing the next version after this PR is probably preferable. That would be version 0.9.0. |
|
Its all ok for me, thanks a lot for the improvements. |
Consume Philote client API as GEMSEO discipline
Expose GEMSEO disciplines (including MDAs, processes like Chains) as Philote Disciplines
Examples of OpenMDAO interoperability
Some documentation (which I did not manage to compile as npm install fails on my machine, Debian WSL)
cc @jgiret @chrislupp