diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 491b37b..0e11697 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -35,7 +35,6 @@ jobs: dotnet restore src/Matplotlib.Interactive/Matplotlib.Interactive.fsproj dotnet restore src/Matplotlib.Mcp/Matplotlib.Mcp.fsproj dotnet restore src/Matplotlib.DataFrame/Matplotlib.DataFrame.fsproj - dotnet restore src/Matplotlib.Reports/Matplotlib.Reports.fsproj # pack builds and packs in one step. We do NOT pass --no-build: the # single-package bundling target (CopyProjectReferencesToPackage) resolves @@ -49,7 +48,6 @@ jobs: dotnet pack src/Matplotlib.Interactive/Matplotlib.Interactive.fsproj -c Release --no-restore --output . -p:Version=$VERSION dotnet pack src/Matplotlib.Mcp/Matplotlib.Mcp.fsproj -c Release --no-restore --output . -p:Version=$VERSION dotnet pack src/Matplotlib.DataFrame/Matplotlib.DataFrame.fsproj -c Release --no-restore --output . -p:Version=$VERSION - dotnet pack src/Matplotlib.Reports/Matplotlib.Reports.fsproj -c Release --no-restore --output . -p:Version=$VERSION - name: Push to nuget.org env: diff --git a/CHANGELOG.md b/CHANGELOG.md index 0b58ff1..7d22752 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,14 @@ may contain breaking changes. actively-developed successor to the now-deprecated .NET Interactive / Polyglot Notebooks ([#1](https://github.com/gnrkr789/dotnet-matplotlib/issues/1)). +### Changed + +- **Folded `DotnetMatplotlib.Reports` into the core `DotnetMatplotlib` package.** The + `Report` type (namespace `Matplotlib.Reports`) needs nothing beyond the core library, + so it no longer ships as a separate package — trimming the published set to four. + **Migration:** drop the `DotnetMatplotlib.Reports` package reference; `Report` now + comes from `DotnetMatplotlib`, and `open Matplotlib.Reports` is unchanged. + ## [0.0.9] — 2026-06-20 ### Changed — ⚠️ BREAKING diff --git a/DotnetMatplotlib.slnx b/DotnetMatplotlib.slnx index 3e3d794..899294a 100644 --- a/DotnetMatplotlib.slnx +++ b/DotnetMatplotlib.slnx @@ -9,7 +9,6 @@ - diff --git a/PORTING.md b/PORTING.md index 362017a..5ac0157 100644 --- a/PORTING.md +++ b/PORTING.md @@ -76,7 +76,7 @@ and is not part of this repository (it is git-ignored). | 2026-06-06 | 27 | Model Context Protocol server (new capability) | `Matplotlib.Mcp` (.NET tool `DotnetMatplotlib.Mcp`, command `matplotlib-mcp`) | MCP server exposing `plot_line`/`scatter`/`bar`/`heatmap` tools that render to PNG/SVG/PDF for AI agents (`ModelContextProtocol` SDK, stdio transport) | | 2026-06-06 | 28 | Browser rendering (Blazor WebAssembly) | `samples/BlazorDemo` | the pure-managed library runs in the browser via .NET WASM, rendering plots as inline SVG with no JS/native deps; implicit FSharp.Core floor lowered to 8.0.400 to avoid consumer NU1605 downgrades | | 2026-06-07 | 29 | `pandas.DataFrame.plot` | `Matplotlib.DataFrame` (package `DotnetMatplotlib.DataFrame`) | `Microsoft.Data.Analysis.DataFrame` extension methods `PlotLine`/`PlotScatter`/`PlotBar`/`PlotHist` returning a `Plt`; usable from C# and F# | -| 2026-06-07 | 30 | server-side reporting (new capability) | `Matplotlib.Reports` (package `DotnetMatplotlib.Reports`) | composable multi-panel `Report` → SVG/PNG/PDF; pure-managed with zero native dependencies, deterministic byte-reproducible vector output, and a `Sha256()` fingerprint for audit/compliance | +| 2026-06-07 | 30 | server-side reporting (new capability) | `Matplotlib/Report` (in the core `DotnetMatplotlib` package) | composable multi-panel `Report` → SVG/PNG/PDF; pure-managed with zero native dependencies, deterministic byte-reproducible vector output, and a `Sha256()` fingerprint for audit/compliance. Originally a separate `DotnetMatplotlib.Reports` package, since folded into core (no extra dependencies) | | 2026-06-15 | 30 | accuracy corrections (`colors.Colormap.__call__`, `_cm._jet_data`/`_hot_data`, `ticker.AutoMinorLocator`, mpl2014 contour saddles, `mlab.GaussianKDE`, `axes.scatter` `s`, `markers._set_star`, `colors.to_rgba` `CN`) | `Primitives/{Colormap,ColorResolver}`, `Domain/Axes` (`minorTicks`, `marchingSquares`, `Violinplot`, `Scatter`), `Artists/Line2D` | colormap sampling now matches matplotlib's quantized `int(t·N)` flat lookup (no neighbour blending); `jet`/`hot` rebuilt from the exact per-channel `_jet_data`/`_hot_data` segments; `AutoMinorLocator` subdivisions use `round(mantissa) ∈ {1,5,10}`; contour saddle cells (5/10) disambiguated by the cell-centre mean; violin KDE uses Scott's factor with sample variance (ddof = 1) over a 100-point grid; `scatter` `s` is now a points² area (diameter = √s, default 36); star marker inner-radius ratio 0.381966; only the uppercase `CN` cycle form resolves to the property cycle (`'c'` stays cyan) | | 2026-06-15 | 31 | completing partial plot ports (`axes.scatter` `c`/`cmap`/array-`s`, `axes.hist`, `axes.errorbar` `capsize`, `axes.fill_betweenx`) | `Domain/Axes` (`Scatter`, `Hist`, `Errorbar`, `FillBetweenx`), `Artists/Line2D` (per-point `MarkerColors`/`MarkerSizes`), `Matplotlib/Plt`, `samples/Gallery` | `scatter` maps a numeric `c` array through a colormap + `Normalize` (default viridis) to per-point colors and accepts a per-point `sizes` array (areas → √ diameters); 1-D `hist` (equal-width bins, `range`, `density`, edge-aligned bars on a sticky baseline) returning heights + edges; `errorbar` renders caps as `_`/`|` markers sized by `capsize`; `fill_betweenx` mirrors `fill_between`; Gallery renders demos for each (`scatter_colormap`/`hist`/`fill_betweenx`/`colormaps`/`errorbar` PNGs) | | 2026-06-15 | 32 | new chart types & axis control (`axes.stackplot`, `vlines`/`hlines`, `pie`, `set_aspect('equal')`, `axis('off')`) | `Domain/Axes` (`Stackplot`, `Vlines`, `Hlines`, `Pie`, `SetAspect`, `SetAxisOff`, `YTicksVisible`, equal-aspect in `BuildContext`), `Matplotlib/Plt` (`Axis`), `samples/Gallery` | stacked cumulative areas; vertical/horizontal line segments; `pie` wedges (flattened polygon arcs) with white separators; `set_aspect('equal')` shrinks the axes box to equal pixels-per-(scaled)-unit (adjustable='box', default `auto` unchanged), so `pie` is round; `axis('off')` hides ticks + spines; Gallery `stackplot`/`vlines`/`pie` PNGs | diff --git a/README.md b/README.md index bd719de..ab8e161 100644 --- a/README.md +++ b/README.md @@ -166,9 +166,10 @@ title or choose the output format. The same extension methods work from C#. ## Reports (server-side, deterministic) -`DotnetMatplotlib.Reports` composes multi-panel reports — a grid of titled charts -under a report title — and renders them to SVG / PNG / PDF. It is built for -server-side and regulated / cloud-native use: +The core `DotnetMatplotlib` package includes a `Report` type (namespace +`Matplotlib.Reports`) that composes multi-panel reports — a grid of titled charts under a +report title — and renders them to SVG / PNG / PDF. Built for server-side and regulated / +cloud-native use: - **Pure-managed, zero native dependencies** — it builds and runs on Linux (the CI builds and tests it there) and needs no UI or native graphics components. @@ -177,10 +178,6 @@ server-side and regulated / cloud-native use: vector output, so a report can be checksummed (`report.Sha256()`) for audit trails, change detection and compliance. -```bash -dotnet add package DotnetMatplotlib.Reports -``` - ```fsharp open Matplotlib.Reports diff --git a/nuget/README.md b/nuget/README.md index 67973e4..9740d00 100644 --- a/nuget/README.md +++ b/nuget/README.md @@ -78,10 +78,11 @@ package as an extension. For legacy .NET Interactive / Polyglot, add ## Reports (server-side, deterministic) -`DotnetMatplotlib.Reports` composes multi-panel SVG/PNG/PDF reports for -server-side use: pure-managed with zero native dependencies (builds and tests on -Linux; SVG and PDF need no system fonts) and **byte-reproducible** output that can -be checksummed (`report.Sha256()`) for audit and compliance. +The core package includes a `Report` type (`open Matplotlib.Reports`) that composes +multi-panel SVG/PNG/PDF reports for server-side use: pure-managed with zero native +dependencies (builds and tests on Linux; SVG and PDF need no system fonts) and +**byte-reproducible** output that can be checksummed (`report.Sha256()`) for audit and +compliance. ## AI agents (MCP) diff --git a/src/Matplotlib.Reports/Matplotlib.Reports.fsproj b/src/Matplotlib.Reports/Matplotlib.Reports.fsproj deleted file mode 100644 index 343ff0e..0000000 --- a/src/Matplotlib.Reports/Matplotlib.Reports.fsproj +++ /dev/null @@ -1,23 +0,0 @@ - - - - Matplotlib.Reports - Matplotlib.Reports - DotnetMatplotlib.Reports - A deterministic, dependency-free server-side reporting engine for DotnetMatplotlib: compose multi-panel SVG/PNG/PDF reports with byte-reproducible output for audit and compliance. Pure-managed with zero native dependencies. - matplotlib;reporting;pdf;charts;deterministic;compliance;fsharp - - - - - - - - - - - - - - - diff --git a/src/Matplotlib/Matplotlib.fsproj b/src/Matplotlib/Matplotlib.fsproj index 15f154a..f5fe533 100644 --- a/src/Matplotlib/Matplotlib.fsproj +++ b/src/Matplotlib/Matplotlib.fsproj @@ -14,6 +14,7 @@ + diff --git a/src/Matplotlib.Reports/Report.fs b/src/Matplotlib/Report.fs similarity index 100% rename from src/Matplotlib.Reports/Report.fs rename to src/Matplotlib/Report.fs diff --git a/tests/Matplotlib.Tests/Matplotlib.Tests.fsproj b/tests/Matplotlib.Tests/Matplotlib.Tests.fsproj index ae0fbbb..badf9fb 100644 --- a/tests/Matplotlib.Tests/Matplotlib.Tests.fsproj +++ b/tests/Matplotlib.Tests/Matplotlib.Tests.fsproj @@ -57,7 +57,6 @@ -