Setting up a development environment
Required dependencies
Support matrix 1
| Python 3.10 | Python 3.11 | Python 3.12 | |
|---|---|---|---|
| Linux | 2 | ||
| macOS (x86_64) | |||
| macOS (aarch64) | |||
| Windows | 
- Install Miniconda 
- Install - gh- conda install -c conda-forge gh
- Fork and clone the ibis repository: - gh repo fork --clone --remote ibis-project/ibis
- Create a Miniconda environment using - environment.yml- cd ibis conda env create --file conda/environment.yml- If you’re using arm64 architecture (Mac M1/M2), use - conda/environment-arm64.ymlfor setting up a dev environment for all the backends that are possible to install excluding Flink; use- conda/environment-arm64-flink.ymlfor setting up a dev environment for all the backends that are possible to install including Flink. The reason to have two separate environments is because- apache-flinkforces- pyarrowto downgrade to 11.0, which causes conflicts in other backends.
- Activate the environment - conda activate ibis-dev
- Install your local copy of - ibisinto the Conda environment- uv pip install -e .
- Install Mamba 
- Install - gh- mamba install -c conda-forge gh
- Fork and clone the ibis repository: - gh repo fork --clone --remote ibis-project/ibis
- Create a Mamba environment using - environment.yml- cd ibis mamba env create --file conda/environment.yml- If you’re using arm64 architecture (Mac M1/M2), use - conda/environment-arm64.ymlfor setting up a dev environment for all the backends that are possible to install excluding Flink; use- conda/environment-arm64-flink.ymlfor setting up a dev environment for all the backends that are possible to install including Flink. The reason to have two separate environments is because- apache-flinkforces- pyarrowto downgrade to 11.0, which causes conflicts in other backends.
- Activate the environment - mamba activate ibis-dev
- Install your local copy of - ibisinto the Mamba environment- uv pip install -e .
- Install Pixi 
- Install - gh- pixi global install gh
- Fork and clone the ibis repository: - gh repo fork --clone --remote ibis-project/ibis
- Create a Pixi environment using - environment.yml- cd ibis pixi init --import conda/environment.yml- This command will initialize a - pixi.tomlfile and also modify the- .gitignoreto prevent Pixi configuration from being added to- git.- If you’re using arm64 architecture (Mac M1/M2), use - conda/environment-arm64.ymlfor setting up a dev environment for all the backends that are possible to install excluding Flink; use- conda/environment-arm64-flink.ymlfor setting up a dev environment for all the backends that are possible to install including Flink. The reason to have two separate environments is because- apache-flinkforces- pyarrowto downgrade to 11.0, which causes conflicts in other backends.
- Activate the environment - pixi shell
- Install your local copy of - ibisinto the Pixi environment- uv pip install -e .
Support matrix
| Python 3.10 | Python 3.11 | Python 3.12 | Python 3.13 | |
|---|---|---|---|---|
| Linux (x86_64) | 3 | |||
| Linux (arm64) | ||||
| macOS (x86_64) | ||||
| macOS (arm64/M1/M2) | ||||
| Windows | 4 | 
- Configure - nix- Edit/create your - nix.conffile (- $XDG_CONFIG_HOME/nix/nix.conf) and add the line- experimental-features = nix-command flakes
- Install - gh:- nix-shell -p gh- nix-env -iA gh
- Fork and clone the ibis repository: - gh repo fork --clone --remote ibis-project/ibis
- Set up the public - ibisCachix cache to pull pre-built dependencies:- nix-shell -p cachix --run 'cachix use ibis'
- Run - nix developin the checkout directory:- cd ibis nix develop- This will launch a - bashshell with all of the required dependencies installed. This may take a while due to artifact download from the cache.
Support matrix
| Python 3.10 | Python 3.11 | Python 3.12 | Python 3.13 | |
|---|---|---|---|---|
| Linux | ||||
| macOS (x86_64) | ||||
| macOS (arm64/M1/M2) | ||||
| Windows | 
- Git clone the project repository. 
- Install - Docker Desktopfor your platform.
- If using an Apple Silicon Mac, virtualization may be fastest with Colima. - Install Colima
- Verify that the disk allocation to Colima is satisfactory with colima template --editor code.
- To use Colima for virtualization, docker context use colimaorexport DOCKER_CONTEXT=colima.
- Verify that the Colima context is in effect with docker context ls(look for ’*’).
- Start the Colima VM: start colima.
- If you encounter disk resource issues after building images, colima pruneorcolima deletemay be needed.
 - As an alternative to - Colima, install Rosetta 2.- softwareupdate --install-rosetta
- Install 
- In - VS Code, open the project directory.
- Menu options for working with devcontainers are available through the blue - ><button, at the lower left corner of the project window.- Use Reopen the containerto build an image and launch a container.
- Press any button to close the automatically launched terminal.
- Launch a new VS Codeterminal from the main menu.
- The project will be in the container as an editable install with Ibis library, dev and test dependencies installed, and with the working directory /app.
 
- Use 
- Use - uvcommands such- uv pip listto show the installed packages in the- uv.venv.
- Run non- - uvcommands in the virtual environment using- uv run, for example- uv run pytest -m core. Standard- gitcommands are available without- uv runbecause they do not need packages in the .venv to work.
- To exit a container, click the - Dev Containerbutton on the lower left of the window and select the last menu option,- Close Remote Connection.
- To ensure you have the latest dependencies from the main upstream branch based on - pyproject.toml:- Exit any running container.
- Sync your fork.
- From your local Git repo, git pull origin main.
- Reopen the project in a new container.
- Rebuild Containerto copy files from the local Git repo and have the build run- uv sync.
 
uv will not handle installation of system dependencies
uv will not install system dependencies needed for some packages such as psycopg2 and kerberos.
For a better development experience see the conda/mamba or nix setup instructions.
- Fork and clone the ibis repository: - gh repo fork --clone --remote ibis-project/ibis
- Change directory into - ibis:- cd ibis
- Install development dependencies - This will create a virtual environment at - .venvand install all dependencies inside. It will also install Ibis in development mode as- ibis-framework.- just sync
- Activate the virtual environment - source .venv/bin/activate
pip will not handle installation of system dependencies
pip will not install system dependencies needed for some packages such as psycopg2 and kerberos.
For a better development experience see the conda/mamba or nix setup instructions.
- Fork and clone the ibis repository: - gh repo fork --clone --remote ibis-project/ibis
- Change directory into - ibis:- cd ibis
- Install development dependencies - This will also install Ibis in development mode as - ibis-framework.- pip install 'uv>=0.4.29' pip install -r requirements-dev.txt
Code style and formatting
Ibis uses several code linters and has a style guide for documentation, please checkout the style and formatting guide for instructions on how to set things up.
Building the docs
Install just (if you installed via conda/mamba you are covered) and run
just docs-previewto build and serve the documentation.
Footnotes
- Some optional dependencies for Windows and Mac OS are not available through - conda/- mamba↩︎
- Tested in CI. If this doesn’t work for you, please file an issue.↩︎ 
- Tested in CI. If this doesn’t work for you, please file an issue.↩︎ 
- Unlikely to ever be supported or no upstream support.↩︎