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
Added "double" and "string" as type aliases in the OpenMDAO type map,
mapping them to float and str respectively, to match common proto type
name conventions.
Added dynamic shapes for inputs and outputs. Disciplines can now
declare variables with dynamic_shape=True in add_input / add_output, indicating that the client is allowed to set the
variable's shape at runtime. A new SetVariableShapes gRPC RPC
lets clients send resolved shapes after querying variable definitions.
The OpenMDAO bindings automatically map dynamic-shape variables to shape_by_conn=True and send resolved shapes back to the server
(MDO-Standards/Philote#6).
Added support for struct (dict) options via the new kStruct DataType enum
value, enabling complex nested data to be declared and passed as discipline
options (#49).
Added discrete variable support throughout the stack. Disciplines can
now declare discrete inputs/outputs via add_discrete_input / add_discrete_output. Discrete data is serialized as google.protobuf.Value (supporting scalars, lists, and nested
structures) and multiplexed alongside continuous Array chunks in
the new VariableMessage wrapper. The OpenMDAO bindings
(RemoteExplicitComponent, RemoteImplicitComponent) automatically
discover and forward discrete variables.
Added comprehensive input validation and error handling across the
framework. Introduces custom exception classes (PhiloteValidationError, PhiloteServerError), parameter validation in discipline base classes
(add_input, add_output, add_option, declare_partials), proper
gRPC error propagation via context.abort() with appropriate status
codes in all server RPC methods, and client-side input validation with
gRPC error wrapping (#46).
Bug Fixes
Fixed bare except to except ImportError in examples/__init__.py.
Fixed missing space in RemoteImplicitComponent error message
("will notbe" -> "will not be").
Fixed SellarMDA promoted-input ambiguity that newer OpenMDAO releases
reject during final_setup. The x and z defaults were being set on
the inner cycle subgroup, but obj_cmp promoted the same variables
to the top level with different defaults. Moved the set_input_defaults
calls to the top-level SellarMDA group so the promoted values agree.
Updated test_implicit_discipline_apply_linear_not_implemented to call apply_linear with its current six-argument signature (inputs, outputs, d_inputs, d_outputs, d_residuals, mode); the stale
three-argument call raised TypeError before the NotImplementedError
assertion could fire.
Documentation & Infrastructure
Added Codecov configuration (codecov.yml) requiring 95% coverage on
both project total and patch (new/changed lines).
Added fail_under = 95 to .coveragerc for local coverage enforcement.
Marked unreachable import guards and defensive branches with pragma: no cover.
Updated installation instructions to reflect PyPI install option.
Added documentation for implicit disciplines.
Added documentation for OpenMDAO clients
Added documentation for the OpenMDOA subproblem discipline.
Migrated documentation from Jupyter Book to Docusaurus, mirroring the
Delphi docs setup (dark-mode theme, KaTeX math, custom landing page,
versioned docs).
Replaced the Jupyter Book gh-pages deploy job with a Docusaurus
GitHub Pages artifact pipeline triggered on develop for docs/**.
Added a Release GitHub Actions workflow mirroring Delphi's release
flow: PR-label-driven version bumps, signed commits, pyproject.toml
version update, CHANGELOG rewrite, Docusaurus version snapshots on
stable releases, GitHub Release creation, and auto-merge of main
back to develop.
Reformatted CHANGELOG.md to the Keep a Changelog convention so the
release workflow can drive header rewrites and comparison links.