Skip to content

Build out ROADMAP.md sections 0-8 - #6

Merged
evangress merged 12 commits into
mainfrom
feat/roadmap-buildout
Nov 7, 2026
Merged

evangress merged 12 commits into
mainfrom
feat/roadmap-buildout

Conversation

@evangress

Copy link
Copy Markdown
Collaborator

Implements every item in ROADMAP.md (sections 0–8), one commit per section.

Decisions

  • Package renamed library → fpc. This breaks existing imports; every import, test, doc, the GUI, and the demos are updated.
  • Units: document the split rather than adding Pint everywhere. Plain SI floats for the math, Pint at the boundaries (docs/units.md).
  • Reference data lives in fpc/data/ (not a top-level data/), so it ships when the package is installed elsewhere.

What's new

  • Installable package (hatchling) with an fpc console command (fpc pipe-flow, fpc water).
  • Library: Fluids.colebrook_friction_factor (brentq), Fluids.pipe_flow, Design (root-finding sizing and SLSQP lightest beam), Properties (pandas tables with linear/cubic interpolation and no silent extrapolation), Utility.read_table/write_table (CSV/Excel), Thermo.log_mean_temperature_difference.
  • Data: water tables generated from CoolProp (IAPWS-95, generator included), materials, and AISC W-shapes, each with its source cited.
  • Learning material: templates/engineering_script.py; 8 worked examples plus the moved radiology demo; the tool-building ladder (docs/building-tools.md: script → argparse → tkinter → Streamlit → installed command); 3 notebooks; PACKAGES.md (every package's release date and link checked; PySpice, harold, and pyradiomics flagged as stale).
  • Tooling: ruff (lint + format applied repo-wide, so the diff is large), mypy, pre-commit, an mkdocs-material API site generated from the docstrings, and CI for all of it. A docs workflow deploys to Pages from main.
  • Contributor: new-domain checklist and issue forms.

Verification

  • ruff check, ruff format --check, and mypy are clean.
  • 149 tests pass, including subprocess runs of every example and the template, and execution of every notebook.
  • mkdocs build --strict passes.
  • Streamlit app checked headlessly with AppTest.
  • An isolated wheel install imports fpc and reads the bundled data.

Before / after merging

  • Enable Pages: Settings → Pages → Source: "GitHub Actions". Until then the docs deploy job will fail on main.
  • Follow-ups are in ROADMAP.md. Most important: verify materials.csv and w_shapes.csv against their original sources. The W-shape rows pass a physics self-consistency test, but neither table was copied from a fetched source.
  • The ruff-format commit touches most files. Review it separately (57c2113).

🤖 Generated with Claude Code

evangress and others added 12 commits November 6, 2026 18:32
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Rename library/ -> fpc/ and update every import, test, doc, GUI, and demo.
- Add a hatchling [build-system] so the repo installs with uv/pip.
- Stop tracking per-user .idea/ settings.
- Rewrite CLAUDE.md current-state section; drop stale README test count.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rence data

- Fluids.colebrook_friction_factor (brentq) + Swamee-Jain approximation.
- Design class: beam height by root finding; lightest beam by SLSQP with
  stress, deflection, and aspect-ratio constraints.
- Properties class: pandas loading of cited tables in fpc/data/ with
  linear / cubic-spline interpolation and no silent extrapolation.
- Reference tables: water (IAPWS-95 via CoolProp, generator included),
  materials (MatWeb/ASM typical), AISC W-shapes (self-consistency tested).
- Utility.read_table / write_table for CSV and Excel; Thermo LMTD.
- GUI preloads design and props.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- templates/engineering_script.py: inputs -> calculate -> report -> plot -> export.
- examples/: pump sizing, beam selection (Pint + pandas), PID tuning,
  heat exchanger, motor sizing, shielding, pandas sensor-log analysis,
  vectorization lesson; radiology_demo.py moved here.
- Smoke test runs every example and the template in a subprocess.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Fluids.pipe_flow chains continuity, Reynolds, Colebrook, Darcy-Weisbach.
- examples/tools/: script -> argparse CLI -> tkinter form -> Streamlit app.
- fpc/cli.py registered as the `fpc` console script (pipe-flow, water).
- docs/building-tools.md walks the ladder; streamlit in the 'apps' group.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Three notebooks (getting started, pipe flow + data, beam design) generated
from notebooks/make_notebooks.py; 'notebooks' dependency group; CI executes
every notebook via nbclient.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Ruff lint (explicit rule set) + format, applied to the whole repo.
- mypy (non-strict) on fpc; annotate the Pint registry.
- pre-commit with local hooks (ruff check/format, pytest) using uv.lock versions.
- mkdocs-material + mkdocstrings API reference from the docstrings;
  docs workflow builds strictly on PRs and deploys to GitHub Pages on main.
- CI runs ruff, format check, mypy, and pytest (incl. notebooks/examples).
- docs/units.md: plain SI floats for the math, Pint at the boundaries.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- PACKAGES.md: packages grouped by field with 'use it when' guidance,
  PyPI-vs-import names, curated lists; every package release date and link
  checked 2026-11-06 (PySpice, harold, pyradiomics flagged as stale).
- README: top-10 package table linking PACKAGES.md, design/data section,
  'use this library in your own project', developer tooling, new layout.
- SPEC: mark vectorization, SciPy toolbox, and pandas items done.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- CONTRIBUTOR.md: new-domain-class checklist, full pre-PR check commands,
  units and reference-data conventions, PACKAGES.md for dependencies.
- Issue forms: bug report, new domain/method, new worked example.
- ROADMAP.md: sections 0-8 ticked with decisions noted; follow-ups added
  (enable Pages, verify materials/W-shape data at source, MkDocs EOL).
- CLAUDE.md: current state reflects fpc/data and new classes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Resolves all 41 open Dependabot alerts (5 critical, 23 high, 13 moderate),
every one of which is a Pillow advisory first patched in 13.0.0 - including
heap buffer overflows in the JPEG/FlashPix/TIFF codecs and a Ghostscript
argument injection. Pillow is a transitive dependency (via matplotlib).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Resolve the uv.lock conflict in favor of Pillow 13.0.0: 12.3.0 is still
inside the vulnerable range of all 41 open alerts.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@evangress
evangress merged commit ddc35c3 into main Nov 7, 2026
3 checks passed
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.

1 participant