This guide covers repository development and validation. For installation and product usage, see the README and documentation.
Install OmegaFlow and its development dependencies from the checkout:
python -m pip install -e '.[dev]'Install pnpm once per machine if needed:
npm install --global pnpm@10.14.0Install the website dependencies once per checkout, and again when the lockfile changes:
pnpm --dir website installStart the local development server whenever you work on the website:
pnpm --dir website startRun these common checks before submitting a change:
nox -s tests
pnpm --dir website buildReleases are prepared on main and published only after the release candidate
has passed CI and a maintainer has explicitly approved publication.
-
Choose a version greater than the latest version on PyPI. Update
project.versioninpyproject.toml,__version__insrc/omegaflow/__init__.py, and its assertion intests/test_studio_cli.pyto the same version. -
Add release fragments under
changes/, then preview the notes:nox -s release_notes -- VERSION
-
Generate
CHANGELOG.md, review the rendered entry, and commit the release preparation:towncrier build --version VERSION
-
Run the release-candidate checks. Rebuild and inspect any recording whose source or inputs changed; the command shown here is the homepage demo:
nox -s ci nox -s package nox -s website omegaflow recording=quickstart-demo action=build omegaflow recording=quickstart-demo action=check
-
Push the release-preparation commit and wait for every required
maincheck to pass. Review the package artifacts, changelog, public documentation, and affected recordings. Stop here until a maintainer explicitly approves the tag and external publication.For the initial
0.9.0release only, replace the complete repository history with one reviewed release-root commit after the candidate tree is final. Remove all consumed news fragments, rerun the complete local release checks against that root, obtain explicit approval for the destructive force-push, force-pushmain, and wait for the replacement commit's required CI checks before creating the tag. -
Create and push an annotated tag whose name is exactly
vVERSION:git tag -a vVERSION -m "OmegaFlow VERSION" git push origin vVERSIONPushing the tag starts
.github/workflows/publish.yml. The workflow rejects a tag, package version, or changelog mismatch and stops if that version is already present on PyPI. -
If the tag workflow must be started manually, select the existing
vVERSIONtag in the GitHub Actions ref selector and enter the same exactVERSIONinput. Do not run it frommain. -
Verify the version and expected files on PyPI, then verify that the GitHub Release contains the reviewed changelog entry, one sdist, and all four platform wheels. Record the outcome in the release checklist and backlog.
The publish workflow builds the distributions once. PyPI trusted publishing and the GitHub Release consume the same uploaded artifacts; only their jobs receive the write permissions they require.