diff --git a/DESCRIPTION b/DESCRIPTION index 3b38d255..dc1afb7b 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: stochtree Title: Stochastic Tree Ensembles (XBART and BART) for Supervised Learning and Causal Inference -Version: 0.4.5 +Version: 0.4.6.9000 Authors@R: c( person("Drew", "Herren", email = "drewherrenopensource@gmail.com", role = c("aut", "cre"), comment = c(ORCID = "0000-0003-4109-6611")), diff --git a/Doxyfile b/Doxyfile index 8a2cef09..2c9ed8a1 100644 --- a/Doxyfile +++ b/Doxyfile @@ -48,7 +48,7 @@ PROJECT_NAME = "StochTree" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 0.4.5 +PROJECT_NUMBER = 0.4.6.9000 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff --git a/NEWS.md b/NEWS.md index 7350978d..fbe25685 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,5 @@ +# stochtree 0.4.6.9000 + # stochtree 0.4.5 ## Bug Fixes diff --git a/RELEASING.md b/RELEASING.md index cb8b49cc..e75a6cd9 100644 --- a/RELEASING.md +++ b/RELEASING.md @@ -38,6 +38,7 @@ This document describes the end-to-end process for releasing a new version of st - No empty version section in `NEWS.md` (CRAN will flag this) - `MANIFEST.in` includes any new C++ dependency header trees added since the last release - All tests pass locally (`source venv/bin/activate && python -m pytest` and `NOT_CRAN=true Rscript -e "devtools::load_all('.'); testthat::test_dir('test/R/testthat')"`) +- If sampler output changed this cycle, regenerate the reproducibility references under `tools/reproducibility/{R,python}` and confirm the `reproducibility_check` workflow **fails on drift** against the new references. (A stale-reference / lenient-check mismatch caused a post-tag follow-up in 0.4.5.) --- @@ -81,6 +82,13 @@ git push origin --delete v0.4.2 Then you can start a new draft and pre-release it as above +## Do post-tag fixes need a re-tag? + +When a fix lands on `main` after the release tag is cut, decide by what it touches: + +- **Re-tag** if it changes anything shipped in the R/Python packages — `R/`, `src/`, `stochtree/`, the version files, or `NEWS.md`. +- **Leave the tag** if it only touches things outside the distributed packages — CI workflows, `tools/reproducibility/` references, benchmarks, docs-site config. The tagged artifact is unchanged, so moving the tag buys nothing. (In 0.4.5, a CI-only reproducibility fix landed post-tag and was correctly left out of the release.) + ## Updating a full release (minor fixes after promotion) For small fixes (doc corrections, man page updates, typos) discovered after promoting to a full release, delete-and-recreate is overkill. Instead, merge the fix to `main` and force-move the tag: @@ -143,9 +151,36 @@ Review the Actions tab for results. If a check fails, fix the issue on `main`, t Promoting the pre-release to a full release fires `published`, which: - **Automatically updates the `r-dev` branch** (via `r-cran-branch.yml`) and tags the R release as `r-x.y.z` (which from 0.4.2-on is a git tag but not a separate github release) -- **Triggers wheel builds** (via `pypi-wheels.yml`); PyPI publication is currently a **manual step** — download the wheel artifacts from the Actions run and upload via `twine upload dist/*`. Setting up [PyPI trusted publishing](https://docs.pypi.org/trusted-publishers/) (OIDC) will automate this and in upcoming release cycles. +- **Triggers wheel builds** (via `pypi-wheels.yml`); PyPI publication is currently a **manual step** — see [PyPI publication](#pypi-publication-manual) below. + +**How (UI):** Edit the pre-release → uncheck **"Set as a pre-release"** → click **"Update release"**. + +**How (CLI):** + +```bash +gh release edit vx.y.z --repo StochasticTree/stochtree --prerelease=false --latest +``` + +`--latest` forces the "Latest" badge (and `/releases/latest` redirect) onto this release rather than relying on GitHub's auto-detection. A release cannot be both prerelease and latest, so these two flags work together. This does not affect which workflows fire — the `published`/`released` events trigger regardless. + +### PyPI publication (manual) + +After promotion, the `pypi-wheels.yml` run on the `published` event builds the per-platform **wheels** as artifacts (it does **not** build an sdist). Download the wheels, build the sdist locally, then upload both: + +```bash +# 1. download the wheel artifacts from the release run +# find the run id (event=release, workflow "Build Python Wheels for PyPI") +gh run list --repo StochasticTree/stochtree --event release +gh run download --repo StochasticTree/stochtree --dir dist_wheels + +# 2. build the sdist locally (the CI workflow does not produce one) +rm -rf dist && pipx run build --sdist + +# 3. upload wheels + sdist +twine upload dist_wheels/**/*.whl dist/*.tar.gz +``` -**How:** Edit the pre-release → uncheck **"Set as a pre-release"** → click **"Update release"**. +Confirm `x.y.z` appears at https://pypi.org/project/stochtree/. Setting up [PyPI trusted publishing](https://docs.pypi.org/trusted-publishers/) (OIDC) will automate this in an upcoming release cycle. --- diff --git a/configure b/configure index c4aaa09b..92335806 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.72 for stochtree 0.4.5. +# Generated by GNU Autoconf 2.72 for stochtree 0.4.6.9000. # # # Copyright (C) 1992-1996, 1998-2017, 2020-2023 Free Software Foundation, @@ -600,8 +600,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='stochtree' PACKAGE_TARNAME='stochtree' -PACKAGE_VERSION='0.4.5' -PACKAGE_STRING='stochtree 0.4.5' +PACKAGE_VERSION='0.4.6.9000' +PACKAGE_STRING='stochtree 0.4.6.9000' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -1204,7 +1204,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -'configure' configures stochtree 0.4.5 to adapt to many kinds of systems. +'configure' configures stochtree 0.4.6.9000 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1266,7 +1266,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of stochtree 0.4.5:";; + short | recursive ) echo "Configuration of stochtree 0.4.6.9000:";; esac cat <<\_ACEOF @@ -1334,7 +1334,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -stochtree configure 0.4.5 +stochtree configure 0.4.6.9000 generated by GNU Autoconf 2.72 Copyright (C) 2023 Free Software Foundation, Inc. @@ -1371,7 +1371,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by stochtree $as_me 0.4.5, which was +It was created by stochtree $as_me 0.4.6.9000, which was generated by GNU Autoconf 2.72. Invocation command line was $ $0$ac_configure_args_raw @@ -2380,7 +2380,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by stochtree $as_me 0.4.5, which was +This file was extended by stochtree $as_me 0.4.6.9000, which was generated by GNU Autoconf 2.72. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -2435,7 +2435,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -stochtree config.status 0.4.5 +stochtree config.status 0.4.6.9000 configured by $0, generated by GNU Autoconf 2.72, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index e82cb929..c8426036 100644 --- a/configure.ac +++ b/configure.ac @@ -3,7 +3,7 @@ # https://github.com/microsoft/LightGBM/blob/master/R-package/configure.ac AC_PREREQ(2.69) -AC_INIT([stochtree], [0.4.5], [], [stochtree], []) +AC_INIT([stochtree], [0.4.6.9000], [], [stochtree], []) # Note: consider making version number dynamic as in # https://github.com/microsoft/LightGBM/blob/195c26fc7b00eb0fec252dfe841e2e66d6833954/build-cran-package.sh diff --git a/pyproject.toml b/pyproject.toml index 38c8f836..361c7975 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -9,7 +9,7 @@ build-backend = "setuptools.build_meta" [project] name = "stochtree" -version = "0.4.5" +version = "0.4.6-dev" dependencies = [ "matplotlib", "numpy",