Repository navigation
Stoner 0.12.0a6
Pre-releaseStoner 0.12.0a6 adds ImageFile.plot, the first of the planned image plotting, ROI and fitting accessor alphas.
Changes
- Display images through
image.plot()or.image(), and use named.imshow(),.pcolormesh(),.contour()and.hist()methods. Every drawing method returns its primary Matplotlib Axes and does not show or save automatically. - Use the same styles, layout contexts, formatters, explicit Axes targets and live property forwarding as
Data.plot: for example,image.plot.title = "Measurement"orimage.plot.xlabel("Position"). Shared implementation now supplies these services to both accessors without introducing table-only methods on images. - Add
Stoner.enums.CoordinateModefor native calibrated coordinates and explicit local pixel indices, retaining the corresponding strings. Coordinate names/units provide labels; crop/frame offsets, axis direction and raw intensity units are preserved. Uniform images use pixel-centre-derived extents, while non-uniform grids use meshes without resampling. Explicit.imshow()requires uniform coordinates. - Exclude masked/non-finite pixels from display limits and histograms. Support temporary exact-shape Boolean or aligned xarray selections, optional weighted histograms, and coloured exclusion overlays with matching geometry. Rendering does not modify scientific values, exclusions, calibration or metadata.
- Add a calibrated image/contour/mesh/histogram guide and executable example, three retained figure assets, 41 image regression tests and image plotting probes in installed-distribution validation.
- Document the subsequent
ImageFile.roiandImageFile.fitmilestones, including plane/quadratic background flattening. These accessors are not implemented in this alpha. The release plan calls for a separate alpha for each accessor, API lock before beta and full API freeze before RC.
Compatibility and requirements
Legacy image.imshow() retains its Figure return and options. The new accessor returns Axes; use ax.figure when a Figure is needed. Existing widgets, numerical image.hist()/profile extraction and bulk image display retain their existing paths. Individual ImageFile regions and stack frames can use the accessor; ImageFolder/ImageStack bulk plotting is not extended by this release.
Python 3.12 or newer and stonerplots 1.9.8 or newer remain required. Runtime dependencies are unchanged from 0.12.0a5. General 2D coordinate maps are not supported by the new grid resolver; choose compatible separable coordinates or explicit pixel mode. There are no new deprecation warnings or legacy wrapper removals.
Validation
Local Windows Python 3.14 validation passed 1,801 tests excluding network/OCR, plus the network fitting/plotting example separately. All 84 offline documentation examples were exercised. The cached Sphinx build passed with 62 warnings and no unexpected warnings, missing dynamic Data methods or removed API objects against the reviewed Windows baseline. The guide, new scientific figure and API link were inspected. New modules/tests passed Ruff checks. Manual live GUI/clipboard behaviour and physical instrument compatibility were not newly validated.
Release source: 3d72b7047994af54307d2234c5e77e79e837fb23.
Hosted release-commit checks:
- Linux Python 3.12-3.14/macOS Python 3.14 test matrix.
- Supported lower dependencies: 1,803 passed, one expected skip.
- Fresh wheel/sdist installation checks, including the new image plotting probe.
- Cached Sphinx documentation.
All required release-commit gates passed; no gate was waived.
Each full-matrix cell passed 1,804 tests.
Publication
- PyPI wheel and sdist are public. The downloaded wheel passed the repository's installed-package resource/numerical/plotting checks, including the new ImagePlotter/property/context probes, from a temporary installation outside the checkout.
- PyPI/Conda deployment passed, including Conda's installed import/version test.
noarch/stoner-0.12.0a6-py_0.condais present in the publicphygbumain-channel index. - Release documentation CI passed. Read the Docs detected the correct tag/SHA but still reports the version inactive/unbuilt; maintainer activation and a versioned build remain necessary.
- Coverage checks and published Python/dependency/GPLv3/repository metadata checks passed. Zenodo archived the immutable tag as DOI 10.5281/zenodo.23820651.