Skip to content

v0.8.0

Latest

Choose a tag to compare

@github-actions github-actions released this 16 May 15:25

Features

  • 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.