This repository uses uv for local development.
uv sync --extra dev --extra diff
uv run pre-commit installuv run pre-commit run --all-files
uv run ty check src tests
uv run pytest -q
uv build --out-dir dist
uv run mkdocs build --stricttests/unitis fast and should pass on every supported Python version.tests/integrationuses Docker viatestcontainersand validates live PostgreSQL flows.
-
Ensure package version is correct in
src/pgpkg/__init__.py. -
Run the full local gate:
uv run pre-commit run --all-files
uv run ty check src tests
uv run pytest -q
uv build --out-dir dist
uv run python -m twine check dist/*
uv run mkdocs build --strict-
Create release tag
v0.1.0matchingsrc/pgpkg/__init__.py::__version__. -
Publish to PyPI by creating a GitHub Release from that tag.
Optional manual path:
- Run
Publishwithexpected_version=0.1.0only if version parity is already confirmed.
- Verify the PyPI install path in a clean venv:
uv venv .venv-pypi
uv pip install --python .venv-pypi/bin/python pgpkg
.venv-pypi/bin/pgpkg --helpBefore the publish workflow can work, configure trusted publishing for the PyPI environment:
- GitHub environment
pypibound to the PyPI project
No API tokens are required when trusted publishing is configured correctly.
- The release tag version must match the built package version exactly.
- The publish build job smoke-tests both the CLI wheel and a generated wrapper before upload.
- If workflow_dispatch is used for PyPI publish, confirm version parity before running it.