diff --git a/CHANGELOG.md b/CHANGELOG.md index 5a8654d..26e8dab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,11 +4,11 @@ All notable changes to this project will be documented in this file. The format is inspired by Keep a Changelog and versioned according to PEP 440. -## [2.1.0] - Unreleased +## [2.1.0] - 2026-04-02 -This release continues the 2.x line with internal architecture cleanup, naming -improvements, and stronger separation between long-lived facade state and -single-run import workflow state. +This release continues the stable 2.x line with internal architecture cleanup, +clearer naming, and a stronger separation between the long-lived facade and the +single-run import workflow runtime. ### Added @@ -55,6 +55,14 @@ single-run import workflow state. standard deprecation warning that points to `excelalchemy.util.converter` - No public import/export workflow API was removed in this release +### Release Summary + +- `ExcelAlchemy` is now a lighter facade, with single-run import state handled + by `ImportSession` +- internal configuration now has clearer schema, behavior, and storage layers +- metadata internals are more structured without forcing users to rewrite + existing `FieldMeta(...)` or `ExcelMeta(...)` declarations + ## [2.0.0.post1] - 2026-03-28 This post-release updates the package presentation and release metadata for the diff --git a/README.md b/README.md index c518e65..fa3642b 100755 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ This repository is also a design artifact. It documents a series of deliberate engineering choices: `src/` layout, Pydantic v2 migration, pandas removal, pluggable storage, `uv`-based workflows, and locale-aware workbook output. -The current stable release line is `2.1.0`, which continues the stable ExcelAlchemy 2.x line with internal architecture cleanup and naming improvements. +The current stable release is `2.1.0`, which continues the ExcelAlchemy 2.x line with a lighter import facade, clearer internal layering, and naming cleanup. ## At a Glance diff --git a/README_cn.md b/README_cn.md index ce88d15..441e824 100644 --- a/README_cn.md +++ b/README_cn.md @@ -5,7 +5,7 @@ ExcelAlchemy 是一个面向 Excel 导入导出的 schema-first Python 库。 它的核心思路不是“读写表格文件”,而是“把 Excel 当成一种带约束的业务契约”。 -当前稳定发布版本是 `2.1.0`,它在稳定的 ExcelAlchemy 2.x 线上继续推进了内部架构整理和命名收口。 +当前稳定发布版本是 `2.1.0`,它在稳定的 ExcelAlchemy 2.x 线上继续推进了导入 facade 轻量化、内部结构分层和命名收口。 你用 Pydantic 模型定义结构,用 `FieldMeta` 定义 Excel 元数据,用显式的导入/导出流程去完成模板生成、数据校验、错误回写和后端集成。 diff --git a/docs/releases/2.1.0.md b/docs/releases/2.1.0.md index 698cac9..757238b 100644 --- a/docs/releases/2.1.0.md +++ b/docs/releases/2.1.0.md @@ -1,23 +1,33 @@ # 2.1.0 Release Checklist -This checklist is intended for the first feature release on top of the stable -2.0 line. +This checklist is intended for the first 2.1 stable release on top of the +stable 2.x line. ## Purpose -- publish the first 2.1 release of ExcelAlchemy +- publish the first stable 2.1 release of ExcelAlchemy - ship the sessionized import workflow architecture - ship internal config normalization and metadata layering without breaking the public 2.x API - confirm that naming cleanup and compatibility shims are documented clearly +## Release Positioning + +`2.1.0` should be presented as an architectural refinement release: + +- the public 2.x workflow stays stable +- the internal import workflow becomes more explicit through `ImportSession` +- config and metadata become easier to reason about internally +- compatibility paths remain available for 2.x users + ## Before Tagging 1. Confirm the intended version in `src/excelalchemy/__init__.py`. 2. Review the `2.1.0` section in `CHANGELOG.md`. 3. Confirm `README.md`, `README-pypi.md`, and `MIGRATIONS.md` still describe the recommended public paths correctly. -4. Confirm the compatibility notes for: +4. Confirm `README_cn.md` is still aligned with the current release position. +5. Confirm the compatibility notes for: - `excelalchemy.util.convertor` - `df/header_df` compatibility aliases - legacy Minio config path @@ -63,13 +73,22 @@ uv pip install --python .pkg-smoke-minio/bin/python "dist/*.whl[minio]" When reviewing the final release notes, make sure they communicate these three themes clearly: -- `ExcelAlchemy` is now a lighter facade because import runtime state moved into - `ImportSession` -- config is still easy to construct publicly, but internally it is now split +- `ExcelAlchemy` is now a lighter facade because import runtime state moved + into `ImportSession` +- config remains easy to construct publicly, but internally it is now split into schema, behavior, and storage layers - metadata now has clearer internal layering without forcing users to rewrite their `FieldMeta(...)` or `ExcelMeta(...)` declarations +## Recommended Release Messaging + +Prefer wording that emphasizes refinement rather than disruption: + +- "continues the stable 2.x line" +- "keeps the public import/export workflow API stable" +- "improves internal architecture and maintainability" +- "preserves 2.x compatibility paths while moving the implementation forward" + ## PyPI Verification After the workflow completes: @@ -91,3 +110,10 @@ pip install -U "ExcelAlchemy[minio]" 6. Run one template-generation example. 7. Run one import flow and one export flow. + +## Done When + +- the tag `v2.1.0` is published +- the GitHub Release notes clearly communicate the three release themes +- PyPI renders the project description correctly +- CI, typing, tests, and package publishing all pass for the tagged release