azure-functions-validation provides request and response validation for Azure Functions Python v2 applications using Pydantic.
README.mdCONTRIBUTING.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.
- Runtime code must remain compatible with Python 3.10+.
- Public APIs must be fully typed.
- No runtime dependency on
azure-functionsbeyond what is required for type hints — keep imports optional where possible. - Keep documentation examples, decorator behaviour, and tests synchronized.
- The version test in
tests/test_public_api.pyreads fromimportlib.metadataand needs no manual edits across releases.
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(decorator):,docs(serializer):,refactor(merge):. - 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_validation/__init__.py). - Do NOT manually edit version strings. Use the Makefile targets below. The public-API test reads
__version__againstimportlib.metadata.version(...), so no test changes are needed when bumping.
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).