Skip to content

docs: SUAVE 2.5.2 install/integration notes (feasibility + API validation) - #33

Closed
aligatoralex wants to merge 1 commit into
mainfrom
docs/suave-integration-notes
Closed

aligatoralex wants to merge 1 commit into
mainfrom
docs/suave-integration-notes

Conversation

@aligatoralex

Copy link
Copy Markdown
Contributor

Description of Changes:

Adds docs/SUAVE_INTEGRATION_NOTES.md — a hands-on report from actually installing SUAVE 2.5.2 (the pinned external/suave submodule) into an isolated venv, kept entirely out of the project's uv environment (pyproject.toml / uv.lock untouched, submodule untouched). Created in response to the question "why not just install SUAVE?" — the answer, with evidence.

Key findings:

  • It installs, but not cleanly. pip install -e needs --no-build-isolation (SUAVE's setup.py eagerly import numpys at build-requirement time), and import SUAVE then needs three runtime shims applied first — all on SUAVE's eager import chain, so unavoidable:
    1. collections.MutableMapping alias (SUAVE's vendored pint, broken on Python ≥3.10 — every interpreter on this box).
    2. scipy.integrate.cumtrapzcumulative_trapezoid (a genuine drop-in).
    3. scipy.misc.derivative — removed with no drop-in; a central-difference stand-in that unblocks the import but is not numerically validated.
  • VehicleFactory ([FEATURE] Update VehicleFactory to support vehicle-agnostic ComponentStore architecture #29) API validated against the real package — zero mismatches. Turbojet_Super, Ramjet, Liquid_Rocket, Scramjet all exist; Wing.sweeps/spans/taper/aspect_ratio/dihedral/vertical all present with the expected shapes. A solid-motor network is confirmed genuinely absent, which validates the translator's NotImplementedError for SolidMotor.
  • The [FEATURE] Update VehicleFactory to support vehicle-agnostic ComponentStore architecture #29 SUAVE-gated integration test passes on the real install (3/3) — inspected via git archive from feature/vehicle-factory-composition without ever switching the repo branch.
  • Recommendation: keep SUAVE in a dedicated venv/container behind a small, maintained suave_compat shim (turning this exploration's monkeypatches into tested code), never uv add'd into pyproject.toml; plus the CI implications for the gated test.

This validates PR #30 (VehicleFactory) end-to-end against a real SUAVE and turns "why not install SUAVE" into a documented dependency-isolation decision.

Checklist:

  • I have run uv run pytest YAADO_Core/tests/ and all tests pass. (Docs-only; the project uv env was deliberately left untouched — SUAVE went into a throwaway venv.)
  • My code includes type hints and docstrings. (N/A — Markdown only.)
  • I added all vital READMEs. (Adds integration notes under docs/.)

Verification method:
Every claim in the report comes from commands actually run in the isolated venv (exact error messages and the successful import/test output are reproduced in the doc). The API surface was probed directly against the installed SUAVE 2.5.2; the gated #29 test was executed against it (3 passed).


Generated by Claude Code

Document a hands-on attempt to install and import SUAVE 2.5.2 (the pinned
external/suave submodule) into an isolated venv, kept entirely out of the
project's uv environment. Records:

- The three unavoidable Python-3.11/modern-scipy incompatibilities on SUAVE's
  eager import chain (vendored pint's collections.MutableMapping, removed
  scipy.integrate.cumtrapz and scipy.misc.derivative) and the runtime shims
  that work around them without editing the pinned submodule, plus the
  --no-build-isolation requirement for `pip install -e`.
- Direct validation of the real SUAVE API surface the VehicleFactory (#29)
  translator relies on: zero mismatches; Turbojet_Super/Ramjet/Liquid_Rocket/
  Scramjet all present; no solid-motor network exists, confirming the
  translator's NotImplementedError for SolidMotor. The #29 SUAVE-gated
  integration test passes against the real install (3/3).
- A recommendation to keep SUAVE in a dedicated venv/container behind a small
  maintained suave_compat shim rather than adding it to pyproject.toml, with
  the CI implications.

Exploration/reference material for onboarding; changes no code paths.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NPJaUV26PzaRdYKr3Q7z1d

Copy link
Copy Markdown
Contributor Author

Superseded by #47 — consolidated all docs-only RFC/notes PRs into a single docs/rfcs/ + docs/research/ PR (see #47 for rationale: avoiding one-branch-per-document sprawl, matching Rust RFCs/Python PEPs/Kubernetes KEPs/ADR conventions). docs/SUAVE_INTEGRATION_NOTES.md moves in unchanged in #47. Closing this PR; its branch will be deleted.


Generated by Claude Code

@aligatoralex
aligatoralex deleted the docs/suave-integration-notes branch September 1, 2026 00:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants