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¶
- Edit
pyproject.toml
as needed. - Run
poetry lock --no-update
-
Regenerate
setup.py
:Do not manually edit
setup.py
setup.py
is automatically generated frompyproject.toml
./dev/poetry2setup -o setup.py
Run the following command
PYTHONHASHSEED=42 python ./dev/poetry2setup.py -o setup.py
Why do we need to set
PYTHONHASHSEED
?Dependencies'
extras
are stored in-memory using afrozenset
, 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.