Files
wehub-resource-sync 542cfa195c
CI / Frontend build (push) Failing after 9m6s
CI / Plugin validate (push) Failing after 9m27s
CI / Python lint (push) Failing after 16m1s
CI / Tests (push) Successful in 18m0s
Deploy / deploy (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:33:27 +08:00

59 lines
2.2 KiB
Markdown

# Releasing PixelRAG to PyPI
PixelRAG ships as a single PyPI package, **`pixelrag`** — one distribution that bundles the
umbrella CLI plus every stage module (`pixelrag_render`, `pixelrag_embed`, `pixelrag_index`,
`pixelrag_serve`). The core install is light (rendering only); heavy ML stages are extras:
```bash
pip install pixelrag # pixelshot + pixelrag umbrella (no torch)
pip install 'pixelrag[serve]' # + search API (also [embed], [index], [all])
```
`train/` is a separate local project and is **not** published.
Publishing is automated by [`.github/workflows/release.yml`](.github/workflows/release.yml)
using an **account-scoped PyPI API token** stored as a repo secret.
## One-time setup
1. **Create an account-scoped PyPI API token** at
<https://pypi.org/manage/account/token/>. Copy the `pypi-...` value.
2. **Store it as the `PYPI_API_TOKEN` repo secret:**
```bash
gh secret set PYPI_API_TOKEN --repo StarTrail-org/PixelRAG
```
(or repo Settings → Secrets and variables → Actions → New repository secret).
## Cutting a release
1. **Bump the version:**
```bash
uv version X.Y.Z
```
2. **Commit and push.**
3. **Publish a GitHub Release** with tag `vX.Y.Z` (matching the version). That fires
`release.yml`, which builds and publishes `pixelrag` to PyPI.
## Dry run
Actions → **Release to PyPI** → Run workflow (leave `dry_run` checked) builds the package
and lists artifacts **without** uploading. Use it to sanity-check before a real release.
## Notes
- **README images on PyPI.** The README uses repo-relative image paths (`docs/assets/...`),
which render on GitHub but **not** on the PyPI project page. To show them on PyPI, switch
those `<img src>` to absolute `https://raw.githubusercontent.com/...` URLs.
- **sdist scope.** The repo root holds large data dirs (`.venv`, `tiles`, `arxiv`, …); the
package restricts its sdist to the source dirs + `README.md` + `LICENSE`
(`[tool.hatch.build.targets.sdist]` in `pyproject.toml`).
- **Superseded packages.** `pixelrag-render`, `pixelrag-embed`, `pixelrag-index`, and
`pixelrag-serve` were published once (0.1.0) before consolidation and are now **yanked**;
everything lives in `pixelrag`.