🤝 Contributing¶
Contributions are welcome — whether it's bug reports, new ideas, or pull requests.
If you're planning a substantial change, please open an issue first so we can discuss the approach.
Check out the Keepr GitHub repo if you'd like to help improve Keepr!
👉 How to Contribute¶
- Fork the repository
- Create a branch for your feature or fix
- Commit your changes with clear messages
- Open a Pull Request
- Wait for review and feedback
🧹 Code Style and Linting¶
Keepr uses Ruff for linting and formatting, and pre-commit to ensure consistent code quality across all contributions.
Before contributing any code, please ensure you have the project’s development tooling set up.
1. Install development tools¶
pip install ruff pre-commit
or if you're using uv:
uv pip install ruff pre-commit
2. Install the pre-commit hook¶
This ensures all linting and formatting checks run automatically whenever you make a commit:
pre-commit install
After installing, every git commit will automatically:
- Run Ruff linting (ruff check)
- Run Ruff formatting (ruff format)
- Prevent commits that violate the project’s style rules
3. Running checks manually¶
Run all the commands below in the root of the project directory.
To check the entire codebase at once:
ruff check .
To auto-fix everything ruff can fix:
ruff check --fix .
To format all files:
ruff format .
To run all pre-commit hooks without committing:
pre-commit run --all-files
4. File types covered¶
Covered:
- Python (.py) files: fully linted and autoformatted
- TOML (pyproject.toml, ruff.toml): formatted by Ruff where applicable
Not Covered:
- YAML: Ruff doesn't have native support for yaml files - most of the yaml files are small, mainly for GitHub action workflows and can be formatted manually.
- Markdown: Needs specific manaul formatting for MkDocs, so is best left excluded from ruff.