Skip to content

Commit dd087b6

Browse files
committed
feat(v2.2): runtime consolidation release
1 parent 8f382ad commit dd087b6

7 files changed

Lines changed: 528 additions & 19 deletions

File tree

CHANGELOG.md

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,50 @@ All notable changes to this project will be documented in this file.
44

55
The format is inspired by Keep a Changelog and versioned according to PEP 440.
66

7+
## [2.2.0] - Unreleased
8+
9+
This release continues the stable 2.x line with runtime consolidation,
10+
clearer configuration ergonomics, and a stronger protocol-first storage story.
11+
12+
### Added
13+
14+
- Added `ImportSessionPhase` and `ImportSessionSnapshot` so one-shot import runs
15+
expose a clearer lifecycle and final runtime summary
16+
- Added recommended config constructors:
17+
`ImporterConfig.for_create(...)`, `ImporterConfig.for_update(...)`,
18+
`ImporterConfig.for_create_or_update(...)`, `ExporterConfig.for_model(...)`,
19+
and `ExporterConfig.for_storage(...)`
20+
- Added targeted regression tests for config helper constructors, legacy
21+
storage deprecation behavior, and import session snapshots
22+
23+
### Changed
24+
25+
- Refined `ImportSession` so the import workflow now advances through explicit
26+
phases: workbook loading, header validation, row preparation, row execution,
27+
result rendering, and completion
28+
- Added `ExcelAlchemy.last_import_snapshot` as the facade-level read-only view
29+
of the latest import session state
30+
- Clarified the recommended storage configuration path around explicit
31+
`storage=...` backends
32+
- Kept legacy `minio`, `bucket_name`, and `url_expires` support for 2.x, but
33+
now emit an explicit deprecation warning when that path is used
34+
- Reduced warning noise by emitting the legacy storage deprecation warning once
35+
per compatibility scenario
36+
37+
### Compatibility Notes
38+
39+
- No public import or export workflow API was removed in this release
40+
- The legacy Minio config path remains supported in 2.x for migration-friendly
41+
compatibility
42+
- Existing direct `ImporterConfig(...)` and `ExporterConfig(...)` construction
43+
continue to work; helper constructors are the new recommended path
44+
45+
### Release Summary
46+
47+
- import sessions now expose a clearer lifecycle and final snapshot
48+
- config construction is easier to read through dedicated helper constructors
49+
- `storage=...` is now the clear recommended backend integration path for 2.x
50+
751
## [2.1.0] - 2026-04-02
852

953
This release continues the stable 2.x line with internal architecture cleanup,

docs/releases/2.2.0.md

Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
# 2.2.0 Release Checklist
2+
3+
This checklist is intended for the `2.2.0` release on top of the stable 2.x
4+
line.
5+
6+
## Purpose
7+
8+
- publish the next stable 2.x refinement release of ExcelAlchemy
9+
- present `2.2.0` as a runtime-consolidation and developer-ergonomics release
10+
- keep the public 2.x workflow stable while making the internal import runtime
11+
more explicit
12+
- reinforce `storage=...` as the recommended backend integration path
13+
14+
## Release Positioning
15+
16+
`2.2.0` should be presented as an architectural refinement release:
17+
18+
- the public import and export workflow API stays stable
19+
- import runs now expose a clearer lifecycle through `ImportSession`
20+
- config construction is easier to read through dedicated helper constructors
21+
- storage integration becomes more clearly protocol-first without breaking 2.x
22+
compatibility
23+
24+
## Before Tagging
25+
26+
1. Confirm the intended version in `src/excelalchemy/__init__.py`.
27+
2. Review the `2.2.0` section in `CHANGELOG.md`.
28+
3. Confirm `README.md`, `README-pypi.md`, and `MIGRATIONS.md` still describe
29+
the recommended public paths correctly.
30+
4. Confirm `README_cn.md` remains aligned with the current release position.
31+
5. Confirm the compatibility notes for:
32+
- `minio / bucket_name / url_expires`
33+
- `storage=...` as the recommended path
34+
- `df/header_df` compatibility aliases
35+
- `excelalchemy.util.convertor`
36+
37+
## Local Verification
38+
39+
Run these commands from the repository root:
40+
41+
```bash
42+
uv sync --extra development
43+
uv run ruff check .
44+
uv run pyright
45+
uv run pytest tests
46+
rm -rf dist
47+
uv build
48+
uvx twine check dist/*
49+
```
50+
51+
Optional smoke tests:
52+
53+
```bash
54+
uv venv .pkg-smoke-base --python 3.14
55+
uv pip install --python .pkg-smoke-base/bin/python dist/*.whl
56+
.pkg-smoke-base/bin/python -c "import excelalchemy; print(excelalchemy.__version__)"
57+
```
58+
59+
```bash
60+
uv venv .pkg-smoke-minio --python 3.14
61+
uv pip install --python .pkg-smoke-minio/bin/python "dist/*.whl[minio]"
62+
.pkg-smoke-minio/bin/python -c "from excelalchemy.core.storage_minio import MinioStorageGateway; print(MinioStorageGateway.__name__)"
63+
```
64+
65+
## GitHub Release Steps
66+
67+
1. Push the release commit to the default branch.
68+
2. In GitHub Releases, draft a new release.
69+
3. Create a new tag: `v2.2.0`.
70+
4. Use the `2.2.0` section from `CHANGELOG.md` as the release notes base.
71+
5. Publish the release and monitor the `Upload Python Package` workflow.
72+
73+
## Release Focus
74+
75+
When reviewing the final release notes, make sure they communicate these three
76+
themes clearly:
77+
78+
- `ImportSession` now exposes a clearer lifecycle and final session snapshot
79+
- config construction is easier to read through dedicated helper constructors
80+
- explicit `storage=...` is the clear recommended backend integration path for
81+
the 2.x line
82+
83+
## Recommended Release Messaging
84+
85+
Prefer wording that emphasizes refinement and stability:
86+
87+
- "continues the stable 2.x line"
88+
- "keeps the public import/export workflow API stable"
89+
- "clarifies the import runtime lifecycle"
90+
- "improves config ergonomics and backend integration guidance"
91+
92+
## PyPI Verification
93+
94+
After the workflow completes:
95+
96+
1. Confirm the new release appears on PyPI.
97+
2. Confirm the long description renders correctly.
98+
3. Confirm screenshots and absolute links still work on the PyPI project page.
99+
4. Test base install:
100+
101+
```bash
102+
pip install -U ExcelAlchemy
103+
```
104+
105+
5. Test optional Minio install:
106+
107+
```bash
108+
pip install -U "ExcelAlchemy[minio]"
109+
```
110+
111+
6. Run one template-generation example.
112+
7. Run one import flow and one export flow.
113+
114+
## Done When
115+
116+
- the tag `v2.2.0` is published
117+
- the GitHub Release notes clearly communicate the three release themes
118+
- PyPI renders the project description correctly
119+
- CI, typing, tests, and package publishing all pass for the tagged release

0 commit comments

Comments
 (0)