Contributing
Contributing to refloxide¶
Thank you for your interest in contributing to refloxide!
Development Setup¶
- Fork and clone the repository:
- Install dependencies using uv (dev tooling +
[plugin]modeling stack):bash uv sync --group dev --extra plugin - Install prek hooks:
Making Changes¶
- Create a new branch for your feature or bugfix:
- Make your changes and ensure tests pass:
- Ensure code quality:
- Commit your changes using conventional commits:
Commit Message Format¶
We use Conventional Commits. Here are some examples:
feat: add new feature- A new featurefix: resolve bug in X- A bug fixdocs: update README- Documentation changesrefactor: simplify code- Code refactoringtest: add tests for X- Adding testschore: update dependencies- Maintenance tasks
Pull Request Process¶
- Update documentation if needed
- Add tests for new functionality
- Ensure all tests pass
- Submit a pull request with a clear description
CI and the merge queue¶
main is protected by a ruleset that requires the merge queue.
| When | What runs |
|---|---|
| Every PR push | CI — lint, types, tests, Rust check, wheels |
| PR enters the merge queue | CI again on the prospective merge commit, plus Pre-merge — benchmarks (github-action-benchmark), pysentry, semgrep |
Land with Merge when ready / add to the merge queue (do not push straight to main). Optional early Pre-merge: apply the pre-merge label, mark Ready for review, or gh workflow run pre-merge.yml --ref <branch>.
Releasing¶
Releases are a two-step, manual Actions flow (no auto-publish from a version bump alone).
- Prepare Release (
workflow_dispatch) - Computes the next semver from conventional commits since the latest
v*tag (git-cliff / Commitizen rules), or an explicitpatch/minor/majoroverride. - Updates
pyproject.toml,Cargo.toml,src/refloxide/__init__.py, lockfiles, andCHANGELOG.md. - Opens a
release/vX.Y.Zpull request for review and optional Pre-merge checks. - Merge the release PR into
mainafter review. - Finalize Release (
workflow_dispatch) - Set
confirmtopublish. - Cuts annotated tag
vX.Y.Zonmain, which triggers the existing Release workflow (wheels, PyPI, GitHub Release notes).
Dry-run Prepare with dry_run=true to print the next version without opening
a PR.
Dependency Updates¶
This project uses Renovate for automated dependency updates. Renovate will automatically open pull requests when new versions are available for:
- GitHub Actions
- Python dependencies (via
pyproject.toml) uv.locklockfile
To activate it:
- Go to github.com/apps/renovate and click Install
- Choose your GitHub account or organization
- Under Repository access, select this repository (or all repositories)
- Click Install & Authorize
- Renovate will open an onboarding pull request titled
Configure Renovate— merge it to activate - Renovate will now open PRs automatically when new dependency versions are available
The renovate.json at the root of this project is pre-configured to manage:
- GitHub Actions workflow dependencies
- Python dependencies (via
pyproject.toml)