# Releasing `ragora-sdk`

## Minimal (fast) release

If you want the fewest steps, use this:

```bash
# 1) bump version in ragora/__init__.py
# 2) optionally update CHANGELOG.md

python -m ragora.smoke --skip-prepare
python -m build
python -m twine check dist/*
python -m twine upload dist/*

git add ragora/__init__.py CHANGELOG.md
git commit -m "release: vX.Y.Z"
git tag -a vX.Y.Z -m "vX.Y.Z"
git push origin main --tags
```

## Recommended (safer) release

Use this when you want a safer process with validation on TestPyPI first.

```bash
# clean env
python -m venv .venv
source .venv/bin/activate
python -m pip install -U pip
pip install -e ".[dev]" build twine

# update version + changelog
# edit: ragora/__init__.py
# edit: CHANGELOG.md

# checks
ruff check ragora examples
python -m ragora.smoke
python -m build
python -m twine check dist/*

# publish to TestPyPI
python -m twine upload --repository testpypi dist/*

# final publish
python -m twine upload dist/*

# git tag + push
git add ragora/__init__.py CHANGELOG.md
git commit -m "release: vX.Y.Z"
git tag -a vX.Y.Z -m "vX.Y.Z"
git push origin main --tags
```

## Notes

- Package name on PyPI: `ragora-sdk`
- Version source: `ragora/__init__.py` (`__version__`)
- Smoke command: `python -m ragora.smoke` or `ragora-smoke`
- If upload says file already exists, bump version and rebuild.
