azure-functions-doctor is a Python CLI that diagnoses common Azure Functions project issues.
README.mdCONTRIBUTING.mddocs/agent-playbook.md
- Maintain test coverage at 95% or above for committed changes and PRs.
- Run
hatch run pytest --cov --cov-report=term-missing -qto verify before submitting changes. - Any PR that drops coverage below 95% must include additional tests to compensate.
- Keep diagnostics deterministic and user-facing messages actionable.
- Prefer extending existing rule patterns over introducing one-off flows.
- If a CLI option or exit code changes, update docs and tests in the same change.
- Preserve Python 3.10+ compatibility declared in
pyproject.toml.
Follow these conventions when opening issues so the backlog stays consistent with sibling DX Toolkit repositories.
- Use Conventional Commit prefixes:
feat:,fix:,docs:,refactor:,test:,chore:,ci:,build:,perf:. - Add a scope qualifier when it narrows the area:
feat(rule):,docs(diagnostic):,refactor(check):. - Keep the title imperative, under ~80 characters, no trailing period.
- Do not put
[P0]/[P1]/[P2](or any priority marker) in the title — priority lives in the body.
Use the following sections, in order, omitting any that do not apply:
## Priority: P0 | P1 | P2 (target vX.Y.Z, optional)
## Context
What problem this issue addresses and why now.
## Acceptance Checklist
- [ ] Concrete, verifiable items.
## Out of scope
- Items intentionally excluded, with links to the issues that track them.
## References
- PRs, ADRs, sibling issues, external docs.
- Apply at least one of
bug,enhancement,documentation,chore. - Add
area:*labels when they exist in the repository. - Use
blockeronly when the issue blocks a release.
When splitting a large piece of work into focused issues, keep the umbrella open as a tracker that links each child issue with a checkbox; close it once every child is closed or explicitly deferred.
make testmake lintmake typecheckmake build
- Version is managed via
hatch(dynamic fromsrc/azure_functions_doctor/__init__.py). - Do NOT manually edit version strings. Use the Makefile targets below.
- When bumping version, update
tests/test_public_api.pyto match the new version string.
make release-patch— bump patch version, update changelog, tag, and pushmake release-minor— bump minor version, update changelog, tag, and pushmake release-major— bump major version, update changelog, tag, and pushmake release VERSION=x.y.z— set explicit version, update changelog, tag, and pushmake tag-release VERSION=x.y.z— create and push an annotated tag (used internally by release targets)
make release-patch(or-minor/-major) onmain- This runs:
hatch version→git commit→make changelog→git commit→git tag→git push - Tag push triggers Publish to PyPI GitHub Actions workflow automatically.
- Update
docs/changelog.mdseparately if needed (different format fromCHANGELOG.md).