google / google/grain

Discussion: Grain packaging nightly builds

Open
#878 2 comments 0 reactions 0 assignees View on GitHub
type:build/install
Dominant language
Python
Stars
779
Forks
86
Avg merge
2d 6h
Merged PRs (30d)
6

Description

Hi @iindyk,

I would like to dedicate this issue to discuss packaging and nightly builds a bit more.

Right now there are two PyPI projects ([grain](https://pypi.org/project/grain/), [grain-nightly](https://pypi.org/project/grain-nightly/)) with different names and different versioning conventions (for grain latest version is `0.2.9`, where for nightly it's `0.0.16`).

I would consider to follow NumPy's packaging setup and how nightlies are shipped there.

### Official releases

The official release package is shipped as it's right now, on PyPI with regular schedule, and additionally on `conda-forge` feedstock, also under a name `grain`.

Then it can be installed in two ways:
```sh
pip install grain
conda install -c conda-forge grain

pip install grain==0.2.9 # version specific
```

### Nightly builds

NumPy offers dev builds via https://anaconda.org/scientific-python-nightly-wheels/numpy. This project is under [scientific-python-nightly-wheels](https://anaconda.org/scientific-python-nightly-wheels) umbrella, where over 20 dev packages are published on daily basis.

A user can install nightly build with:
```
pip install -i https://pypi.anaconda.org/scientific-python-nightly-wheels/simple numpy
```
And the latest version is `2.3.0.dev0`, which is the latest **unreleased** with `.dev0` at the end. This way one can know they're on dev by checking `numpy.__version__`.

Let's consider applying the same approach in Grain:
1. Set up a new anaconda organization, like https://anaconda.org/scientific-python-nightly-wheels, but named e.g. `google-nightly-wheels`,
2. Have an automated daily GitHub action that builds `main` branch and uploads it to the org, and tag it with `.dev0`,
3. Then users can install nightly with `pip install -i https://pypi.anaconda.org/google-nightly-wheels/simple grain`

Then the nightly is determined by the version, rather than different package name. WDYT?

If you prefer to keep `grain-nightly` then let's keep it and only use `.dev0` version convention. I think TF also does this: https://pypi.org/project/tf-nightly/

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.