From b72eaacd1404b808283056b5859d473b5ddd6533 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 14 Sep 2026 15:04:59 +0000 Subject: [PATCH] chore: prepare release v0.10.0 --- CHANGELOG.rst | 17 +++++++++++++++++ docs/_root/index.html | 6 +++--- docs/_root/switcher.json | 5 +++++ docs/conf.py | 2 +- pyproject.toml | 2 +- upcoming_changes/71.new_feature.rst | 1 - upcoming_changes/73.api_change.rst | 1 - upcoming_changes/73.new_feature.rst | 1 - upcoming_changes/74.api_change.rst | 1 - 9 files changed, 27 insertions(+), 9 deletions(-) delete mode 100644 upcoming_changes/71.new_feature.rst delete mode 100644 upcoming_changes/73.api_change.rst delete mode 100644 upcoming_changes/73.new_feature.rst delete mode 100644 upcoming_changes/74.api_change.rst diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 3a36e968a..1bde601df 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -10,6 +10,23 @@ Fragment files in ``upcoming_changes/`` are assembled into this file by .. towncrier release notes start +0.10.0 (2026-09-14) +=================== + +API and Behaviour Changes +------------------------- + +- 2-D pointer events (``pointer_down``, ``double_click``, ``pointer_settled``, ``key_down``) and the hover readout now report ``img_x``/``img_y`` in the pixel-centre convention that markers, widgets and :meth:`~anyplotlib.Plot2D.display_to_data` already used — they read half a pixel right and down before — so ``round(event.img_x)`` names the clicked pixel (``int()`` no longer does), brush strokes land under the cursor, and an ``imshow`` event's ``xdata``/``ydata`` is exactly the axis value of the pixel centre it hits (``pcolormesh`` values are unchanged). (`#73 `_) +- 2-D tick labels now sit on the pixels they name: ``imshow`` axis values are placed at pixel centres (the image extends half a pixel past the first and last value, as matplotlib's ``imshow`` extent does) through the same transform markers and pointer events use, so ticks also follow a letterboxed image instead of spanning the whole gutter, and an ``origin='lower'`` image gets y ticks at all; :meth:`~anyplotlib.Plot2D.set_view` / ``set_xlim`` / ``set_ylim`` read the axis the same way — ``set_xlim(-0.5, n - 0.5)`` is the whole image, ``set_xlim(0, n - 1)`` now crops the outer half pixels — and accept a descending ``origin='lower'`` y axis. (`#74 `_) + + +New Features +------------ + +- The 2-D colorbar now writes its display minimum and maximum beside the strip — both ends in one format, and the strip itself coloured through the display window (saturated beyond it, the way the image is) and spanning the image rather than the whole panel — so a labelled scale says how much and not only which way; the image gives up a value gutter budgeted for the numbers (fixed for ordinary values so a contrast drag never moves the image, wider for the rare long ones, dropped in a cell too narrow to keep 40 px of image, and mirrored in :meth:`plot_box`) so they never clip. (`#71 `_) +- Text markers (:meth:`~anyplotlib.Plot2D.add_texts`, :meth:`~anyplotlib.Plot1D.add_texts` and ``add_text``) gained ``fontweight`` for bold labels and ``outline_color`` / ``outline_width`` for a halo stroked under the text, which keeps a label legible over both light and dark parts of an image. (`#73 `_) + + 0.9.0 (2026-09-11) ================== diff --git a/docs/_root/index.html b/docs/_root/index.html index ff4b89e4e..02092ed68 100644 --- a/docs/_root/index.html +++ b/docs/_root/index.html @@ -4,12 +4,12 @@ anyplotlib – redirecting… - - + +

- Redirecting to v0.9.0 documentation… + Redirecting to v0.10.0 documentation

diff --git a/docs/_root/switcher.json b/docs/_root/switcher.json index ef9b5b6ff..cb326f80e 100644 --- a/docs/_root/switcher.json +++ b/docs/_root/switcher.json @@ -4,6 +4,11 @@ "version": "dev", "url": "https://cssfrancis.github.io/anyplotlib/dev/" }, + { + "name": "v0.10.0 (stable)", + "version": "v0.10.0", + "url": "https://cssfrancis.github.io/anyplotlib/v0.10.0/" + }, { "name": "v0.9.0 (stable)", "version": "v0.9.0", diff --git a/docs/conf.py b/docs/conf.py index 775d7ad7b..ac82ccad2 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -17,7 +17,7 @@ project = "anyplotlib" copyright = "2026, anyplotlib contributors" author = "anyplotlib contributors" -release = "0.9.0" +release = "0.10.0" # When built in CI the workflow sets DOCS_VERSION to the tag name (e.g. # "v0.1.0") or "dev". Fall back to "dev" for local builds. diff --git a/pyproject.toml b/pyproject.toml index c04de0078..679ad318e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,7 +13,7 @@ exclude = [ [project] name = "anyplotlib" -version = "0.9.0" +version = "0.10.0" description = "A plotting library using python, javascript and anywidget for performant in browser plotting." readme = "README.md" license = { text = "MIT" } diff --git a/upcoming_changes/71.new_feature.rst b/upcoming_changes/71.new_feature.rst deleted file mode 100644 index 94ace942e..000000000 --- a/upcoming_changes/71.new_feature.rst +++ /dev/null @@ -1 +0,0 @@ -The 2-D colorbar now writes its display minimum and maximum beside the strip — both ends in one format, and the strip itself coloured through the display window (saturated beyond it, the way the image is) and spanning the image rather than the whole panel — so a labelled scale says how much and not only which way; the image gives up a value gutter budgeted for the numbers (fixed for ordinary values so a contrast drag never moves the image, wider for the rare long ones, dropped in a cell too narrow to keep 40 px of image, and mirrored in :meth:`plot_box`) so they never clip. diff --git a/upcoming_changes/73.api_change.rst b/upcoming_changes/73.api_change.rst deleted file mode 100644 index 4ca82b1ff..000000000 --- a/upcoming_changes/73.api_change.rst +++ /dev/null @@ -1 +0,0 @@ -2-D pointer events (``pointer_down``, ``double_click``, ``pointer_settled``, ``key_down``) and the hover readout now report ``img_x``/``img_y`` in the pixel-centre convention that markers, widgets and :meth:`~anyplotlib.Plot2D.display_to_data` already used — they read half a pixel right and down before — so ``round(event.img_x)`` names the clicked pixel (``int()`` no longer does), brush strokes land under the cursor, and an ``imshow`` event's ``xdata``/``ydata`` is exactly the axis value of the pixel centre it hits (``pcolormesh`` values are unchanged). diff --git a/upcoming_changes/73.new_feature.rst b/upcoming_changes/73.new_feature.rst deleted file mode 100644 index 7b323d0f4..000000000 --- a/upcoming_changes/73.new_feature.rst +++ /dev/null @@ -1 +0,0 @@ -Text markers (:meth:`~anyplotlib.Plot2D.add_texts`, :meth:`~anyplotlib.Plot1D.add_texts` and ``add_text``) gained ``fontweight`` for bold labels and ``outline_color`` / ``outline_width`` for a halo stroked under the text, which keeps a label legible over both light and dark parts of an image. diff --git a/upcoming_changes/74.api_change.rst b/upcoming_changes/74.api_change.rst deleted file mode 100644 index a75a989bf..000000000 --- a/upcoming_changes/74.api_change.rst +++ /dev/null @@ -1 +0,0 @@ -2-D tick labels now sit on the pixels they name: ``imshow`` axis values are placed at pixel centres (the image extends half a pixel past the first and last value, as matplotlib's ``imshow`` extent does) through the same transform markers and pointer events use, so ticks also follow a letterboxed image instead of spanning the whole gutter, and an ``origin='lower'`` image gets y ticks at all; :meth:`~anyplotlib.Plot2D.set_view` / ``set_xlim`` / ``set_ylim`` read the axis the same way — ``set_xlim(-0.5, n - 0.5)`` is the whole image, ``set_xlim(0, n - 1)`` now crops the outer half pixels — and accept a descending ``origin='lower'`` y axis.