Contributing#
Development setup
git clone https://github.com/brio50/avl-aero-tables.git
cd avl-aero-tables
uv venv --python 3.12 .venv
source .venv/bin/activate
uv pip install -e ".[dev,docs]"
Running tests
pytest # full suite
pytest -k avl_fileread # single test file
Note
Integration tests that invoke the AVL binary are skipped automatically if ~/bin/avl is not present. See Installation for binary setup.
Serving docs locally
sphinx-autobuild docs docs/_build/html
# open http://127.0.0.1:8000
The server watches for file changes and rebuilds automatically.
Publishing a release
Pushing a v* tag triggers the full publish.yml pipeline:
Tests — full matrix (Python 3.12 + 3.13) must pass
Version check — tag (e.g.
v1.5.0) must matchversioninpyproject.tomlPyPI publish — wheel + sdist uploaded via OIDC trusted publishing
GitHub Release — created automatically with notes pulled from the matching
## [X.Y.Z]section ofCHANGELOG.md
Before tagging:
Bump
versioninpyproject.tomlAdd a
## [X.Y.Z] - YYYY-MM-DDsection toCHANGELOG.mdCommit and merge to
main
Then tag from main:
git tag v1.5.0
git push origin v1.5.0
Prerequisites (one-time setup):
A
pypienvironment must exist in the repository settings (Settings → Environments)PyPI must have a trusted publisher configured: repository
brio50/avl-aero-tables, workflowpublish.yml, environmentpypi
Code style
Linting is handled by Ruff:
ruff check avl_aero_tables tests/
ruff check --fix avl_aero_tables tests/