You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
PyPI serves 0.6.0. main now carries the merged JOSS paper (#103), which describes code PyPI
does not ship: conformal_pvalue, the as_of cutoff on the encounter transformers (#92), drop_repeat_donors (#100), stratified KNN imputation (#99), the corrected generator (#102) and scripts/leakage_experiment.py (#101).
A JOSS reviewer works from this checklist item:
Installation: Does installation proceed as outlined in the documentation?
They will pip install philanthropy, get a version older than the paper describes, and file that
as an issue. JOSS also wants the submission tied to an archived release with a DOI matching the
reviewed state.
What this is not
Not 1.0.0. JOSS needs a tagged, archived release, not a major one. Tagging 1.0.0 activates
the Tier-1 deprecation promise in CHANGELOG.md (a breaking change needs a major release preceded
by a full published minor of DeprecationWarning), which is real weight for a solo maintainer, and
1.0.0 is the only announcement-shaped event this project gets. Spend it on an announcement, not on
a submission prerequisite.
docs/reference/index.md already states that deprecation policy as live while RELEASING.md says
pre-1.0 minors may break. That contradiction resolves itself when 1.0.0 is tagged, and not before,
so leaving it until then is deliberate.
Close ## [Unreleased] in CHANGELOG.md as ## [0.7.0] with the real date.
Bump version in pyproject.toml to 0.7.0.
Update CITATION.cff: version: 0.7.0 and a real date-released. Leave the concept DOI alone;
it resolves to all versions by design and the comment in that file explains why.
Update the supported-version table in SECURITY.md, per RELEASING.md.
Re-run examples/quickstart.ipynb end to end against the built wheel, per RELEASING.md. It
installs from PyPI, so it must be re-run after the publish, not before.
Tag v0.7.0 and publish to PyPI.
Let Zenodo mint the version DOI from the GitHub release. That version DOI, not the concept
DOI, is what goes in the JOSS submission form.
Tests to add or extend
None. This is a release, not a code change. make ci and make riskcov must be green on main
before the tag, and the pre-push hook already runs the full suite.
Done when
# Exits 0 only once the metadata agrees with itself at 0.7.0.
python -c "import tomllib,pathlib; \ v = tomllib.loads(pathlib.Path('pyproject.toml').read_text())['project']['version']; \ assert v == '0.7.0', v"
grep -q 'version: 0.7.0' CITATION.cff
grep -q '\[0.7.0\]' CHANGELOG.md
git tag | grep -qx v0.7.0
make ci
make riskcov
Then, outside the shell: PyPI serves 0.7.0, the Colab notebook runs green against it, and the
Zenodo record for v0.7.0 exists with its own DOI.
Not a good first issue
Tagging a release is effectively irreversible and requires PyPI and Zenodo credentials. Maintainer
only.
What's wrong
PyPI serves
0.6.0.mainnow carries the merged JOSS paper (#103), which describes code PyPIdoes not ship:
conformal_pvalue, theas_ofcutoff on the encounter transformers (#92),drop_repeat_donors(#100), stratified KNN imputation (#99), the corrected generator (#102) andscripts/leakage_experiment.py(#101).A JOSS reviewer works from this checklist item:
They will
pip install philanthropy, get a version older than the paper describes, and file thatas an issue. JOSS also wants the submission tied to an archived release with a DOI matching the
reviewed state.
What this is not
Not 1.0.0. JOSS needs a tagged, archived release, not a major one. Tagging 1.0.0 activates
the Tier-1 deprecation promise in
CHANGELOG.md(a breaking change needs a major release precededby a full published minor of
DeprecationWarning), which is real weight for a solo maintainer, and1.0.0 is the only announcement-shaped event this project gets. Spend it on an announcement, not on
a submission prerequisite.
docs/reference/index.mdalready states that deprecation policy as live whileRELEASING.mdsayspre-1.0 minors may break. That contradiction resolves itself when 1.0.0 is tagged, and not before,
so leaving it until then is deliberate.
Where
grep -n '^version' pyproject.tomlgrep -n 'version:|date-released' CITATION.cffgrep -n '^#\+' RELEASING.mdgrep -n '\[Unreleased\]' CHANGELOG.mdWhat to change
commit-distribution note in the tracking issue.
## [Unreleased]inCHANGELOG.mdas## [0.7.0]with the real date.versioninpyproject.tomlto0.7.0.CITATION.cff:version: 0.7.0and a realdate-released. Leave the concept DOI alone;it resolves to all versions by design and the comment in that file explains why.
SECURITY.md, perRELEASING.md.examples/quickstart.ipynbend to end against the built wheel, perRELEASING.md. Itinstalls from PyPI, so it must be re-run after the publish, not before.
v0.7.0and publish to PyPI.DOI, is what goes in the JOSS submission form.
Tests to add or extend
None. This is a release, not a code change.
make ciandmake riskcovmust be green onmainbefore the tag, and the pre-push hook already runs the full suite.
Done when
Then, outside the shell: PyPI serves 0.7.0, the Colab notebook runs green against it, and the
Zenodo record for v0.7.0 exists with its own DOI.
Not a good first issue
Tagging a release is effectively irreversible and requires PyPI and Zenodo credentials. Maintainer
only.