Conversation
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #65 +/- ##
==========================================
+ Coverage 87.16% 87.30% +0.14%
==========================================
Files 48 48
Lines 3475 3608 +133
Branches 379 396 +17
==========================================
+ Hits 3029 3150 +121
- Misses 272 281 +9
- Partials 174 177 +3 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ec77eca822
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| } | ||
|
|
||
| OPTIONAL_EXAMPLES: dict[str, tuple[tuple[str, bool], tuple[str, ...]]] = { | ||
| 'fastapi_upload.py': (('fastapi', True), ('FastAPI upload example completed', '/employee-imports')), |
There was a problem hiding this comment.
Gate FastAPI smoke on multipart dependency
The optional FastAPI example is treated as runnable whenever fastapi is installed, but fastapi_upload.py creates routes with UploadFile, which requires python-multipart at app setup time. In environments that have FastAPI but not python-multipart, _run_example('fastapi_upload.py') will raise during module import (app = create_app()), causing scripts/smoke_examples.py (and release smoke jobs that call it) to fail even though this path is intended to be optional/non-blocking.
Useful? React with 👍 / 👎.
Summary
This PR prepares the
2.2.5release of ExcelAlchemy.It continues the stable 2.x line with stronger import-failure UX, clearer documentation boundaries, stronger examples and showcase assets, and better smoke coverage for release verification.
What changed
Error UX polish
CellErrorMapandRowIssueMapat(...)messages_at(...)messages_for_row(...)numbered_messages_for_row(...)flatten()to_dict()ProgrammaticErrorConfigErrorExcelCellErrorExcelRowErrorDocumentation and API guidance
docs/getting-started.mdas the main onboarding entry pointdocs/public-api.mddocs/examples-showcase.mdstorage=...as the recommended 2.x backend configuration pathExamples and showcase
examples/README.mdwith a recommended reading orderSmoke and release verification
Typing and internal cleanup
Compatibility notes
storage=...remains the recommended backend integration pathFieldMeta(...)andExcelMeta(...)remain the stable public metadata entry pointsVerification
./.venv/bin/ruff check ../.venv/bin/uv run pyright./.venv/bin/pytest -q./.venv/bin/python scripts/smoke_package.py./.venv/bin/python scripts/smoke_examples.py./.venv/bin/python scripts/generate_example_output_assets.pyRelease intent
After merge, this branch is intended to be tagged and published as:
v2.2.5