Contributing
We welcome contributions! Please follow standard Python development practices.
Setup
Requires Python 3.12+. We strictly use uv for dependency management.
uv sync --extra dev
source .venv/bin/activate
pre-commit install
adding a New Service
- Create Handler: Add
src/costcutter/services/<service>/<resource>.py. It must return a list of dicts withidanddeletedstatus. - Register: Update
SERVICE_HANDLERSinsrc/costcutter/orchestrator.py. - Dependencies: Define relationships in
src/costcutter/dependencies.pyif needed. - Test: Add unit tests in
tests/. Mockboto3calls appropriately.
Testing
Run the full suite before submitting:
uv run pytest --cov=src/costcutter
uv run ruff check .
uv run ruff format .
Pull Requests
- Fork and branch.
- Add tests for new features.
- Update docs if behavior changes.
- Submit PR.