From e97f2a8504f3f5d600eaab2d894e9476391fe2e3 Mon Sep 17 00:00:00 2001 From: Guangyang Li Date: Wed, 16 Sep 2026 21:56:51 -0400 Subject: [PATCH] Everything for 1.2.0 is on `master` and there are no other open PRs. This is the last change before tagging. ## What this does - Dates the CHANGELOG heading: `v1.2.0 (unreleased)` becomes `v1.2.0 (2026-09-17)`. - Records the quickstart and docs-homepage rewrite, which landed in #68 and was the one user-visible change with no CHANGELOG line. - Removes a stray blank line that split the `New` list in two. `pywaffle/_version.py` already reads `1.2.0`, so no version bump is needed. ## Release readiness, verified on this branch Built both artifacts and installed each into a clean venv, in both install modes, rather than trusting the suite: | | plain | `[icons]` | |---|---|---| | wheel | 10/10 checks, icons refused with the install hint | 10/10 checks, icons drew 50 glyphs | | sdist | 10/10 checks, icons refused with the install hint | 10/10 checks, icons drew 50 glyphs | Checks covered `waffle_chart()`, fractional blocks, `show_values`, `sort_values="DESC"`, `block_edge_color`, `background_color`, viridis being distinguishable, the zero-block guard, independent subplot legends, and `pywaffle.waffle` still being a module. Wheel metadata is what it should be: ``` Requires-Python: >=3.9 Requires-Dist: matplotlib>=3.6 Provides-Extra: icons Requires-Dist: fontawesomefree; extra == "icons" License-Expression: MIT ``` Also on current `master`: 234 tests pass, image comparisons pass, the suite is clean with deprecations as errors, `black` is clean, sphinx emits only its five pre-existing warnings, the examples regenerate, every referenced image exists, and every module still parses as Python 3.9. I also checked the CHANGELOG's own claims rather than assuming: `reload_font_awesome()` and `font_awesome_status()` are both exported, `MAX_BLOCKS` really is 10,000,000, and `font_awesome_status()` does not raise when Font Awesome is missing. BODY gh pr create --base master --head chore/release-1.2.0 --title 'Prepare the 1.2.0 release' --body-file /tmp/relpr.md 2>&1 | tail -2 Prepare the 1.2.0 release Date the CHANGELOG heading, record the quickstart rewrite from #68, which was the one user-visible change with no entry, and remove a stray blank line splitting the New list. pywaffle/_version.py already reads 1.2.0, so there is no version bump to make. --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ec6ef2b..039cac6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -v1.2.0 (unreleased) +v1.2.0 (2026-09-17) Fixes @@ -27,7 +27,6 @@ New * Add `pywaffle.reload_font_awesome()`, which forgets the resolved fonts so a changed `PYWAFFLE_FONTAWESOME_DIR` takes effect without restarting * Add `pywaffle.font_awesome_status()`, which reports which Font Awesome is in use, where it came from, its version, how many icons each style has, and whether aliases are available. It never raises: when Font Awesome cannot be found it reports every directory searched and how to install it * Font Awesome can now come from the system rather than the Python package. `PYWAFFLE_FONTAWESOME_DIR` points at a directory of `.otf` files, and the usual system font directories are searched as a fallback, so a distribution's font package works on its own. Distribution packages ship fonts without Font Awesome's `icons.json`, so in that case the icon names are recovered from the fonts themselves - every canonical name is available, though aliases are not ([#25](https://github.com/gyli/PyWaffle/issues/25)) - * Add `rounding_rule="float"`, which draws partial blocks instead of rounding values ([#26](https://github.com/gyli/PyWaffle/issues/26)). A category that ends part way through a block fills only that fraction of it, and a block containing a boundary between two categories is split between their colors. The block count then depends only on the total of the values, so two datasets with the same total produce charts of the same size - which rounding did not guarantee * Add `background_color`, which fills the space behind the blocks including the gaps between them, and `block_edge_color` / `block_edge_width`, which draw a border around each block ([#37](https://github.com/gyli/PyWaffle/issues/37)). The blank cells that `block_arranging_style='new-line'` pads a line with get no border, so a padded line still ends where its value ends * Add `show_values` and `value_format`, which append each category's value or its percentage of the total to its legend label. This is the f-string the documentation has always told people to write by hand: `labels=[f"{k} ({v}%)" for k, v in data.items()]` @@ -37,6 +36,7 @@ New Other +* Rewrite the quickstart and the documentation homepage around a real dataset, and add a `Quickstart` page to the docs, which previously had none - it existed only in the README * Add opt-in image-comparison tests (`pytest tests/test_images.py --mpl`), which catch rendering regressions that block-by-block assertions cannot * `Waffle.make_waffle()` now raises `ValueError` when given `plots`, which it silently ignored. It draws into the single axis passed as `ax`, so `plots` never had any effect * Add `pywaffle.__version__`