Resolved versions live in uv.lock. Install dev dependencies the same way CI does:
uv sync --extra devBefore finishing Python changes, run (from repo root, with dev deps):
uv run ruff format .
uv run ruff check .
uv run mypy src/
uv run pytestCI runs the same steps (see .github/workflows/ci.yml).
For user-facing work on a branch, keep one bullet under ## Next that summarizes the overall outcome of that branch. Add it when you first document the change; on later iterations on the same branch, edit that same bullet if the scope or wording shifts—do not append extra bullets for each follow-up. Skip CHANGELOG.md entirely when nothing users would notice changes (refactors, tests-only, etc.).
Do not expand CHANGELOG.md with every internal or tooling-only follow-up. If the branch bullet already states the high-level theme, leave it unless the user-visible story changes.
- Implementation — Add
src/astrameter/powermeter/<module>.pywith a class subclassingPowermeter; implementget_powermeter_watts()(andwait_for_message()only if the base default is wrong for your source). - Exports — Import and re-export the class from
src/astrameter/powermeter/__init__.py. - Config — In
src/astrameter/config/config_loader.py: import the class, define a*_SECTIONstring, add asection.startswith(...)branch increate_powermeter(), and acreate_*_powermeter()factory that reads options from the section.POWER_OFFSET/POWER_MULTIPLIER,THROTTLE_INTERVAL, andNETMASKare handled globally for any section that returns a powermeter — no extra wiring unless you need something custom. - Examples, docs & changelog — Add a commented example to
config.ini.exampleand a subsection under Configuration inREADME.md, plus one## Nextbullet for the powermeter (add once, then update that bullet on follow-up iterations if needed—see Changelog above). - Tests — Add
src/astrameter/powermeter/<module>_test.py(or extend existing tests) and run the commands above before finishing.