|
| 1 | +# 2.2.3 Release Checklist |
| 2 | + |
| 3 | +This checklist is intended for the `2.2.3` release on top of the stable 2.x |
| 4 | +line. |
| 5 | + |
| 6 | +## Purpose |
| 7 | + |
| 8 | +- publish the next stable 2.x bugfix release of ExcelAlchemy |
| 9 | +- present `2.2.3` as a focused validation-correctness release |
| 10 | +- restore the intended failure mode for unsupported annotated declarations |
| 11 | +- ship regression coverage for the declaration guard in the Pydantic adapter |
| 12 | + |
| 13 | +## Release Positioning |
| 14 | + |
| 15 | +`2.2.3` should be presented as a small, correctness-focused release: |
| 16 | + |
| 17 | +- the public import and export workflow API stays stable |
| 18 | +- valid codec-based declarations continue to work unchanged |
| 19 | +- unsupported native annotations with `ExcelMeta(...)` now fail early with the |
| 20 | + intended `ProgrammaticError` |
| 21 | +- the validation path is safer and easier to reason about |
| 22 | + |
| 23 | +## Before Tagging |
| 24 | + |
| 25 | +1. Confirm the intended version in `src/excelalchemy/__init__.py`. |
| 26 | +2. Review the `2.2.3` section in `CHANGELOG.md`. |
| 27 | +3. Confirm the Pydantic adapter fix in |
| 28 | + `src/excelalchemy/helper/pydantic.py`. |
| 29 | +4. Confirm the regression test in |
| 30 | + `tests/integration/test_excelalchemy_workflows.py`. |
| 31 | + |
| 32 | +## Local Verification |
| 33 | + |
| 34 | +Run these commands from the repository root: |
| 35 | + |
| 36 | +```bash |
| 37 | +uv sync --extra development |
| 38 | +uv run ruff check src/excelalchemy/helper/pydantic.py \ |
| 39 | + tests/integration/test_excelalchemy_workflows.py |
| 40 | +uv run pyright |
| 41 | +uv run pytest tests/integration/test_excelalchemy_workflows.py -q |
| 42 | +rm -rf dist |
| 43 | +uv build |
| 44 | +uvx twine check dist/* |
| 45 | +``` |
| 46 | + |
| 47 | +## GitHub Release Steps |
| 48 | + |
| 49 | +1. Push the release commit to the default branch. |
| 50 | +2. In GitHub Releases, draft a new release. |
| 51 | +3. Create a new tag: `v2.2.3`. |
| 52 | +4. Use the `2.2.3` section from `CHANGELOG.md` as the release notes base. |
| 53 | +5. Publish the release and monitor the `Upload Python Package` workflow. |
| 54 | + |
| 55 | +## Release Focus |
| 56 | + |
| 57 | +When reviewing the final release notes, make sure they communicate these three |
| 58 | +themes clearly: |
| 59 | + |
| 60 | +- unsupported annotated declarations now fail with the intended error again |
| 61 | +- codec resolution in the Pydantic adapter is stricter and more explicit |
| 62 | +- the fix is protected by a regression test |
| 63 | + |
| 64 | +## Recommended Release Messaging |
| 65 | + |
| 66 | +Prefer wording that emphasizes stability and correctness: |
| 67 | + |
| 68 | +- "continues the stable 2.x line" |
| 69 | +- "restores the intended ProgrammaticError path" |
| 70 | +- "tightens codec resolution in the Pydantic adapter" |
| 71 | +- "adds regression coverage for unsupported annotated declarations" |
| 72 | + |
| 73 | +## Done When |
| 74 | + |
| 75 | +- the tag `v2.2.3` is published |
| 76 | +- the GitHub Release notes clearly describe the validation fix |
| 77 | +- the regression test passes in CI |
| 78 | +- the published package version matches the release tag |
0 commit comments