A Grammar of Graphics for Python
# Release Issue Checklist
Copy the template below the line, substitute (`s/<VERSION>/1.2.3/`) the correct
version and create an [issue](https://github.com/has2k1/plotnine/issues/new).
The first line is the title of the issue
------------------------------------------------------------------------------
Release: plotnine-<VERSION>
- [ ] Upgrade key dependencies if necessary
- [ ] [mizani](https://github.com/has2k1/mizani)
- [ ] [matplotlib](https://github.com/matplotlib/matplotlib)
- [ ] [pandas](https://github.com/pandas-dev/pandas)
- [ ] [numpy](https://github.com/numpy/numpy)
- [ ] [scipy](https://github.com/scipy/scipy)
- [ ] [statsmodels](https://github.com/statsmodels/statsmodels)
- [ ] Upgrade code quality checkers
- [ ] pre-commit
```
pre-commit autoupdate
```
- [ ] ruff
```
pip install --upgrade ruff
```
- [ ] pyright
```sh
pip install --upgrade pyright
PYRIGHT_VERSION=$(pyright --version | grep -oE '[0-9]+\.[0-9]+\.[0-9]+')
python -c "
import pathlib, re
f = pathlib.Path('pyproject.toml')
f.write_text(re.sub(r'pyright==[0-9]+\.[0-9]+\.[0-9]+', 'pyright==$PYRIGHT_VERSION', f.read_text()))
"
```
- [ ] Run tests and coverage locally
```sh
git switch main
git pull origin/main
make typecheck
make test
make coverage
```
- [ ] The tests pass
- [ ] The coverage is acceptable
- [ ] The latest [online documentation](https://has2k1.github.io/plotnine) builds, be sure to browse
- [ ] Create a release branch
```sh
git switch -c release-v<VERSION>
```
- [ ] Tag a pre-release version. These are automatically deployed on `testpypi`
```sh
git tag -as v<VERSION>rc1 -m "Version <VERSION>rc1" # e.g. <VERSION>a1, <VERSION>b1, <VERSION>rc1
git push -u origin release-v<VERSION>
```
- [ ] GHA [release job](https://github.com/has2k1/plotnine/actions/workflows/release.yml) passes
- [ ] Plotnine test release is on [TestPyPi](https://test.pypi.org/project/plotnine/#history)
- [ ] Update changelog
```sh
nvim doc/changelog.qmd
git commit -am "Update changelog for release"
git push
```
- [ ] Update / confirm the version to be released
- [ ] Add a release date
- [ ] The [GHA tests](https://github.com/has2k1/plotnine/actions/workflows/testing.yml) pass
- [ ] Tag final version and release
```sh
git tag -as v<VERSION> -m "Version <VERSION>"
git push
```
- [ ] The [GHA Release](https://github.com/has2k1/plotnine/actions/workflows/release.yml) job passes
- [ ] [PyPi](https://pypi.org/project/plotnine) shows the new release
- [ ] Update `main` branch
```sh
git switch main
git merge --ff-only release-v<VERSION>
git push
```
- [ ] Create conda release
- [ ] Copy _SHA256 hash_. Click view hashes, for the [Source Distribution](https://pypi.org/project/plotnine/<VERSION>/#files) (`.tar.gz`).
- [ ] Update [plotnine-feedsock](https://github.com/conda-forge/plotnine-feedstock)
```sh
cd ../plotnine-feedstock
git switch main
git pull upstream main
git switch -c v<VERSION>
nvim recipe/meta.yaml
git commit -am "Version <VERSION>"
git push -u origin v<VERSION>
```
- [ ] Create a [PR](https://github.com/conda-forge/plotnine-feedstock/pulls)
- [ ] Complete PR (follow the steps and merge)