python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"pytest -v # Unit tests (uses requests-mock, no live instance needed)
tox # Full matrix: Python 3.10-3.14, lint, typecheck
tox -e lint # Ruff only
tox -e typecheck # Mypy onlyReleases are automated via release-please.
- Land changes on
mainusing Conventional Commits (feat:,fix:,chore(deps):, etc.) - The
release.ymlworkflow runs release-please, which opens (or updates) a Release PR with the bumped version inpyproject.tomland a generatedCHANGELOG.mdentry - Review and merge the Release PR — release-please tags the commit and publishes a GitHub Release
- The
publish.ymlworkflow then builds and uploads the package to PyPI
Requires PYPI_API_TOKEN secret in repository settings.
Trigger the Publish to TestPyPI workflow via the Actions tab (workflow_dispatch). Requires TEST_PYPI_API_TOKEN.
- Supports API v1 (flat responses) and v2 (nested wrapped responses)
- Parses both
{"data": [...]}and{"data": {"zones": [...]}}/{"data": {"records": [...]}} - Record creation is idempotent (checks for existing records)
- Cleanup silently handles missing zones/records