Thank you for your interest in contributing! This document covers how to set up a development environment, run tests, and submit changes.
- Python 3.12+
- uv (recommended) or pip
git clone https://github.com/FortnoxAB/ibis-typing
cd ibis-typing
uv sync --all-extras
uv run python -m ibis_typing.type_patchThe last command patches your installed ibis package with typed overloads. It needs to be re-run whenever ibis is upgraded.
Tests are split by backend. Most development workflows only need the first two:
# Lint (ruff, type checker, dependency checker)
make lint
# Unit tests (no backend required)
make test_unittests
# DuckDB integration tests
make test_duck
# Trino integration tests (requires Docker)
make test_trinoRun the full suite including coverage:
make testCoverage must remain at or above 90%.
Before submitting a PR, make sure lint passes:
make lintTo auto-fix formatting and safe linting issues:
make format # ruff format
make fix # ruff check --fixThe project uses:
- ruff — linting and formatting
- ty — type checking
- deptry — dependency hygiene
- Fork the repository and create a branch from
main. - Write tests for new behaviour.
- Run
make lintandmake test_unittests test_duckto verify. - Open a pull request with a clear description of what changed and why.
There is no formal CLA — by submitting a PR you agree that your contribution will be licensed under MIT.
Please open a GitHub issue with:
- A minimal reproducible example
- Your Python version (
python --version) - Your ibis version (
python -c "import ibis; print(ibis.__version__)") - The full traceback if applicable