How to work on ezxl locally¶
Use this guide to create a contributor-ready workspace with the current lint, typing, test, and packaging tooling.
🔧 Prerequisites¶
- A cloned EzXl repository
uvinstalled locally- Python 3.11 or later
📝 Steps¶
-
Sync the workspace with every contributor dependency group.
The groups follow PEP 735:
test,docs, anddev(which includes both).pip install --groupneeds pip 25.1 or later. -
Install the git hooks managed by
pre-commit. -
Run the formatter and linter.
-
Run both configured type checkers.
-
Enforce the import-layer contract.
-
Run the test suite, then build the distributable artifacts.
poe test-ciis exactly what CI runs: it deselects theexcelmarker (those tests drive a live Excel instance over COM) and applies the coverage threshold. -
Replay the whole gate in one command before opening a pull request.
Variations¶
If you only need the fast code-quality loop during feature work:
EzXl centralizes runtime-only pywintypes members in compatibility helpers so that ty and pyright can type-check the COM boundary without scattered local workarounds.
If you need to bump the release version, edit version under [project] in
pyproject.toml — it is the single source of truth — then sync _version.py
from it:
The sync-version pre-commit hook runs the same script, so a bump committed
without this step is corrected at commit time.
✅ Result¶
You have a local workspace aligned with the repository tooling, including formatting, linting, type checking, import contract validation, packaging, and installed git hooks.