Thank you for your interest in contributing to Koality! We welcome contributions from the community.
This project adheres to the Contributor Covenant Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to pit@ottogroup.com.
If you find a bug, please open an issue with:
- A clear, descriptive title
- Steps to reproduce the issue
- Expected vs. actual behavior
- Your environment (Python version, OS, koality version)
Feature suggestions are welcome! Please open an issue describing:
- The problem you're trying to solve
- Your proposed solution
- Any alternatives you've considered
- Fork the repository and create your branch from
main - Set up your development environment (see below)
- Make your changes and ensure tests pass
- Submit a pull request with a clear description of your changes
- Python 3.12 or higher
- uv (recommended) or pip
# Clone your fork
git clone https://github.com/YOUR_USERNAME/koality.git
cd koality
# Create a virtual environment and install dependencies
uv sync --group dev --group docs
# Or with pip
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
pip install -e ".[dev,docs]"# Run all tests
poe test
# Run unit tests only
poe test_unit
# Run integration tests only
poe test_integrationWe use Ruff for linting and formatting:
# Format code
poe format
# Check linting
poe lint# Check for vulnerable dependencies
poe check_vulnerable_dependencies
# Check for unused dependencies
poe check_unused_dependencies
# Check GitHub Actions security
poe check_githubactions# Serve docs locally
poe docs_serve- Follow the existing code style
- Write clear commit messages
- Add tests for new functionality
- Update documentation as needed
- Keep pull requests focused on a single change
- Ensure all CI checks pass
koality/
├── src/koality/ # Main source code
├── tests/ # Test files
├── docs/ # Documentation
└── pyproject.toml # Project configuration
Feel free to open an issue or reach out to the maintainers.
Thank you for contributing!