Skip to content

Maintaining the Codebase

Ibis maintainers are expected to handle the following tasks as they arise:

  • Reviewing and merging pull requests
  • Triaging new issues

Dependencies

A number of tasks that are typically associated with maintenance are partially or fully automated.

Dependency Type Management Tool
Python library dependencies WhiteSource Renovate
GitHub Actions WhiteSource Renovate
Nix dependencies A GitHub Action run at a regular cadence

Dependencies are managed using poetry.

Occasionally you may need to lock poetry dependencies, which can be done by running

poetry lock --no-update

Automatic Dependency Updates

WhiteSource Renovate will run at some cadence (outside of traditional business hours) and submit PRs that update dependencies.

These upgrades use a conservative update strategy, which is currently to increase the upper bound of a dependency's version range.

The PRs it generates will regenerate a number of other files so that in most cases contributors do not have to remember to generate and commit these files.

Adding or Changing Dependencies

  1. Edit pyproject.toml as needed.
  2. Run poetry lock --no-update
  3. Regenerate setup.py:

    Do not manually edit setup.py

    setup.py is automatically generated from pyproject.toml

    ./dev/poetry2setup -o setup.py
    

    Run the following command

    PYTHONHASHSEED=0 python ./dev/poetry2setup.py -o setup.py
    

    Why do we need to set PYTHONHASHSEED?

    Dependencies' extras are stored in-memory using a frozenset, the elements of which are arbitrarily ordered.

    As of 2022-02-24 this is fixed in the default branch of [poetry-core] but isn't yet released.

Updates of minor and patch versions of dependencies are handled automatically by renovate.

Merging PRs

PRs can be merged using the gh command line tool or with the GitHub web UI.

Release

Ibis is released on PyPI and Conda Forge.

Releases to PyPI are handled automatically using semantic release.

To trigger a release use the Release GitHub Action.

The conda-forge package is maintained as a conda-forge feedstock.

After a release to PyPI, the conda-forge bot automatically updates the ibis package.


Last update: August 19, 2022