Development Guide¶
Prerequisites¶
- Python 3.11 or later
- Git
Setup¶
This installs the package in editable mode with all development and documentation dependencies.
Running Tests¶
# Unit tests (no network required)
pytest tests/ -v
# Integration tests (hits live KyFromAbove STAC API)
pytest tests/ -m integration -v
# Full suite with coverage
pytest tests/ --cov=abovepy --cov-report=term-missing
Linting and Formatting¶
The project uses ruff for linting and formatting:
ruff check src/ tests/
ruff format --check src/ tests/
# Auto-fix lint issues
ruff check --fix src/ tests/
# Auto-format
ruff format src/ tests/
Type Checking¶
mypy runs in strict mode:
All public functions must have complete type annotations.
Documentation¶
Documentation is built with MkDocs Material:
Branch Strategy¶
mainis the stable branch; all releases are tagged frommain- Create feature branches from
mainusing the naming conventions: feature/description-- new functionalityfix/description-- bug fixesdocs/description-- documentation changesrefactor/description-- code improvements without behavior changes
Commit Conventions¶
- Write clear, concise commit messages describing what and why
- Reference issue numbers where applicable (e.g.,
Fixes #42) - Keep commits focused; avoid mixing unrelated changes
CI Pipeline¶
GitHub Actions runs on every push and pull request:
- Lint:
ruff checkandruff format --check - Type check:
mypy --strict - Tests: pytest matrix across ubuntu, macos, and windows on Python 3.11--3.13
All checks must pass before merging.
Optional Extras¶
Install specific feature groups as needed: