| title | Development and release |
|---|---|
| description | Set up the repository, test billing integrations and build the Fluent package locally. |
Run commands from the repository root. On Linux or in an Amp orb:
.agents/setupSetup installs uv 0.12.9 and Python 3.12, restores locked dependencies and checks imports. It needs no API credentials and makes no Vatly calls.
uv run pytest --covTests use the real SDK with local HTTP and signed webhook fixtures. The SQLite driver tests cover storage, ownership, duplicate delivery, rollback and the outbox. No test changes a Vatly account. See offline examples for host tests.
uv run ruff check .
uv run ruff format --check .
uv run mypyCI runs tests and these checks on Python 3.10–3.14. Type checks also include the example storage driver.
uv build
uv run twine check dist/*
uv run python scripts/check_package.pyThe last command installs the built wheel in a fresh environment and checks
imports and py.typed. These commands do not publish anything.
Fluent pins one exact vatly-api-python version from PyPI in pyproject.toml;
uv.lock records its hashes. To move to a new SDK version, change the pin, run
uv lock, and run the full checks. Use a new Fluent alpha version when dependency
behavior changes.
Keep guides directly under docs/ and link each page from the overview.
Pushes to main affecting docs/** notify vatly/vatly-docs. The notifier needs
VATLY_DOCS_DISPATCH_TOKEN with Contents: write access to that repository.
The sync uses an explicit frontmatter description when present, otherwise the
page's introductory sentence.
The published package is vatly-fluent-python;
the import name is vatly_fluent. Publish the matching SDK version first, then
Fluent, then Django, only after review and approval.
| PyPI trusted publisher field | Value |
|---|---|
| Owner | vatly |
| Repository | vatly-fluent-python |
| Workflow | release.yml |
| Environment | Leave blank |
The workflow publishes only from a published GitHub release whose tag matches
v plus the package version. Mark alphas as pre-releases. Pushing main does not
publish. Restrict release access: trusted publishing needs no environment approval
or PyPI token, and PyPI artifacts are public.