Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,24 @@ All notable changes to this project are documented in this file. This changelog

## [Unreleased]

## [0.7.1] - 2026-03-21

### Added

- Added regression coverage for extraction CLI runtime validation and lightweight import boundaries across `exstruct`, `exstruct.engine`, `exstruct.cli.main`, and `exstruct.cli.edit`.

### Changed

- Changed the extraction CLI so `--auto-page-breaks-dir` is always listed in help output and validated only when the flag is requested at runtime.
- Changed CLI and package import behavior so `exstruct --help`, `exstruct ops list`, `import exstruct`, and `import exstruct.engine` defer heavy extraction, edit, and rendering imports until needed.

### Fixed

- Fixed parser and help startup side effects by removing COM availability probing during extraction CLI parser construction.
- Fixed lazy-export follow-ups so public runtime type hints resolve correctly while keeping exported symbol names stable.
- Fixed edit CLI routing so non-edit argv and lightweight edit paths avoid unnecessary imports such as `exstruct.cli.edit` and `pydantic`.
- Fixed the `validate` subcommand error boundary so `RuntimeError` is no longer converted into handled CLI stderr output.

## [0.7.0] - 2026-03-19

### Added
Expand Down
43 changes: 43 additions & 0 deletions docs/release-notes/v0.7.1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# v0.7.1 Release Notes

This patch release publishes the CLI and package import startup optimization work
completed under issues `#107`, `#108`, and `#109`.

## Highlights

- The extraction CLI now always shows `--auto-page-breaks-dir` in help output
and validates support only when the option is actually used at runtime.
- Lightweight CLI paths now avoid unnecessary heavy imports:
- `exstruct --help`
- extraction-style argv that do not route to edit commands
- `exstruct ops list`
- Public package imports are lighter:
- `import exstruct`
- `import exstruct.engine`
- exported names from `exstruct` and `exstruct.edit` remain compatible while
loading implementation modules lazily
- Regression coverage now locks the startup boundary and validates that
lightweight import paths do not eagerly load extraction, edit, MCP, render,
or `pydantic` dependencies.

## Startup impact

Compared with `v0.7.0`, local median startup timings on the same Python
environment improved by approximately:

- `python -m exstruct.cli.main --help`: `2195 ms -> 64 ms` (`34.4x` faster)
- `import exstruct`: `1039 ms -> 55 ms` (`19.0x` faster)
- `python -m exstruct.cli.main ops list`: `1143 ms -> 207 ms` (`5.5x` faster)
- `import exstruct.engine`: `1005 ms -> 223 ms` (`4.5x` faster)

These measurements were taken locally against `v0.7.0` and the current
`v0.7.1` code using the same virtual environment and direct source imports, so
exact numbers will vary by machine and startup conditions.

## Notes

- No new CLI commands were added in `v0.7.1`.
- MCP tool names and payload shapes remain compatible in `v0.7.1`.
- Backend selection policy remains `auto` / `com` / `openpyxl`.
- The edit CLI `validate` subcommand once again propagates `RuntimeError`
instead of converting it into handled CLI error output.
1 change: 1 addition & 0 deletions mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ nav:
- MCP Server: mcp.md
- Concept / Why ExStruct?: concept.md
- Release Notes:
- v0.7.1: release-notes/v0.7.1.md
- v0.7.0: release-notes/v0.7.0.md
- v0.6.1: release-notes/v0.6.1.md
- v0.6.0: release-notes/v0.6.0.md
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "exstruct"
version = "0.7.0"
version = "0.7.1"
description = "Excel to structured JSON (tables, shapes, charts) for LLM/RAG pipelines"
readme = "README.md"
license = { file = "LICENSE" }
Expand Down
Loading
Loading