ExcelAlchemy 2.1.0
ExcelAlchemy 2.1.0
ExcelAlchemy 2.1.0 continues the stable 2.x line with internal architecture cleanup, clearer naming, and stronger separation between long-lived facade state and single-run import workflow state.
This release does not change the core public import/export workflow API. Instead, it makes the library easier to reason about, easier to extend, and better aligned with the design goals documented in the repository.
Highlights
- import runtime state moved into a dedicated
ImportSession ExcelAlchemyis now a lighter facade focused on configuration and wiring- config internals are normalized into schema, behavior, and storage layers
FieldMetaInfonow uses clearer internal layering for declaration, runtime binding, workbook presentation, and import constraints- internal naming is more explicit, including the shift from
df/header_dftowardworksheet_table/header_table excelalchemy.util.converteris now the canonical converter module name
What changed
Import workflow architecture
- added
ImportSessionas the one-shot import runtime - moved worksheet state, header parsing state, issue tracking, and executor state out of the long-lived facade
- kept
ExcelAlchemy.import_data(...)unchanged at the public API level
Config normalization
- added internal config layers:
ImporterSchemaOptionsImportBehaviorExporterSchemaOptionsExportBehaviorStorageOptions
- kept
ImporterConfig(...)andExporterConfig(...)unchanged for users - normalized internal storage resolution so the codebase now reads
storage_optionsinstead of scattering direct reads ofstorage,minio,bucket_name, andurl_expires
Metadata layering
- split
FieldMetaInfointo clearer internal layers:- declaration metadata
- runtime field binding
- workbook presentation metadata
- import constraint metadata
- preserved existing
FieldMeta(...)andExcelMeta(...)usage
Naming cleanup
- simplified generic type parameter names across the core architecture
- moved internal workbook table vocabulary from
df/header_dftoworksheet_table/header_table - renamed
excelalchemy.util.convertortoexcelalchemy.util.converter
Compatibility notes
- no public import/export workflow API was removed in this release
dfandheader_dfremain available as backward-compatible aliases in 2.xexcelalchemy.util.convertorremains importable in 2.x and now acts as a deprecated compatibility shim- legacy Minio configuration remains supported in 2.x while the internal storage path now prefers normalized storage options
Verification
The release branch was verified with:
uv run ruff check .
uv run pyright
uv run pytest tests
uv build
uvx twine check dist/*