The PyPI package is smallestai. Releases are driven from this repo.
.github/workflows/ci.yml runs on every push to main and has a publish job that:
- Reads the version from
pyproject.toml([tool.poetry] version). - If no git tag
v<version>exists yet → builds the package andpoetry publishes to PyPI using the repo secretPYPI_API_TOKEN, then creates thev<version>tag. - If the tag already exists → no-op.
So a release = bump the version in pyproject.toml + merge to main. Nothing
else publishes. (There is also release.yml for a manual workflow_dispatch if you
prefer to trigger explicitly.)
- Add a
## <version> - YYYY-MM-DDentry tochangelog.md/CHANGELOG.md. - Bump
[tool.poetry] versioninpyproject.toml. - Merge to
main→ CI publishes + tags.
Repo secret PYPI_API_TOKEN (PyPI API token, upload scope) must be set
(Settings → Secrets and variables → Actions). It is.
Once fern/apis/unified/generators.yml github.repository points at
smallest-inc/smallest-python-sdk, Fern will open regen PRs here (mode:
pull-request). The flow becomes: Fern opens a PR (generated code + version bump) →
review → merge → ci.yml publishes. This repo's ci.yml stays the single
publisher.
output.location: pypi,
which makes Fern itself publish during fern generate. Pick one publisher.
Recommended: drop output.location: pypi from the python-sdk generator (use
github output only) so the canonical repo's ci.yml owns publishing. Tracked in
the Workstream A escalation.