Thank you for your interest in contributing to the Eval Framework! We welcome contributions from the community and are grateful for your support.
We welcome several types of contributions:
- Bug fixes: Help us identify and fix issues
- Feature implementations: Add new functionality to the framework
- Documentation improvements: Enhance or clarify existing documentation
- Performance optimizations: Make the framework faster and more efficient
- Examples and tutorials: Help others learn how to use the framework
-
Fork the repository: Click the "Fork" button on the GitHub repository page to create your own copy of the project.
-
Clone your fork locally:
git clone https://github.com/your-username/eval-framework.git cd eval-framework -
Add the upstream repository:
git remote add upstream https://github.com/Aleph-Alpha-Research/eval-framework.git
-
Install uv if you haven't already following these instructions
-
Install the project dependencies:
uv sync --all-extras
-
Install pre-commit:
uv tool install pre-commit uv run pre-commit install
-
Documentation Task documentation under
docs/tasks/is auto-generated by CI on every merge tomain. You do not need to run this manually.
-
Create a new branch for your feature or bugfix:
git checkout -b feature/your-feature-name # or git checkout -b fix/issue-description -
Make your changes and add tests for them:
# Make your code changes # Add tests for your new functionality in the tests/ directory git add . git commit -m "Add meaningful commit message"
-
Make sure your code lints:
pre-commit run --all-files
-
Push to your fork:
git push origin feature/your-feature-name
-
Create a Pull Request: Go to GitHub, navigate to your fork, and create a Pull Request from your branch to the original repository's main branch. Fill in the PR description and submit.
-
Ensure your PR title is inline with conventional commits so that release-please can auto-log changes to main since the last release.
When reporting bugs, please include:
- Clear title: Summarize the issue briefly
- Environment details: OS, Python version, package versions
- Reproduction steps: Step-by-step instructions to reproduce
- Expected behavior: What should happen
- Actual behavior: What actually happens
- Error messages: Include full error messages and stack traces
- Additional context: Screenshots, logs, or other relevant information
When requesting features:
- Use case: Describe why this feature would be useful
- Proposed solution: How you think it should work
- Additional context: Any other relevant information
The eval_framework package follows semantic versioning specification. That is, starting with the first 1.0.0 release we
aim for backwards-compatible changes within minor version changes and compatibility-breaking changes only within major version.
We use release-please to automate our package releases.
release-please.yml runs on every push to main. It opens or updates a PR that logs changes committed since the last release. To release:
- Wait for the release-please PR to reflect your changes (CI runs automatically when the PR is opened or updated)
- Approve and merge the PR to
main - release.yml publishes to PyPI and the Docker registry
Behind the scenes, merging also runs release-please.yml once more to create the GitHub release and tag; that event is what triggers release.yml. You do not need to run or trigger anything yourself beyond the merge.
Release cadence is controlled by when the release PR is merged. release_please_auto_merge.yml runs daily at 03:00 UTC (and on manual dispatch) and enables GitHub auto-merge on any open release-please PR, so it lands once required CI checks pass. This caps releases at at most one per day with no manual steps, and mirrors the automerge: true behavior already configured for Renovate in .github/renovate.json.
To launch a new release, please follow these steps:
- Increase the
project.versionnumber in thepyproject.tomleither manually, or throughuv version --bump={major,minor,patch} - Adapt the
CHANGELOG.mdfile to include the new version information - Merge these changes to the
mainbranch - Create a new release through Github
- Click on "Create a new release"
- Create the appropriate tag on the
mainbranch. That is, if the package version isX.Y.Zthe tag must bevX.Y.Zor the release workflow will fail. - Set the title of the release equivalent to the version number (
X.Y.Z) - Click on
Generate release notes - Manually copy the highlights from the changelog on top of the auto-generated notes
- Click on Publish Release
- Update the project version to an incremented
devrelease by runninguv version --bump patch --bump dev. Merge this change tomain.
This will create a new version tag and run the release workflow. Open the Github Actions panel and look for the release workflow. Once things are ready, you will have to approve publishing to PyPi.
When a release workflow fails, the best way is to go to the Release page and delete the release and also delete the corresponding tag on the tag page. Then fix the workflow and re-release the package.
By contributing, you agree that your contributions will be licensed under the same license as the project. See the LICENSE file in the root directory for details.