How to issue a release in 15 easy steps

Time required: about an hour.

 1. Ensure your main branch is synced to origin:
       git pull origin main
 2. Look over whats-new.rst and the docs. Make sure "What's New" is complete
    (check the date!) and add a brief summary note describing the release at the
    top.
 3. If you have any doubts, run the full test suite one final time!
      pixi run tests
 4. On the main branch, commit the release in git:
      git commit -a -m 'Release vX.Y.Z'
 5. Tag the release:
      git tag -a vX.Y.Z -m 'vX.Y.Z'
 6. Push your changes to main:
      git push origin main
      git push origin --tags
 7. Update the stable branch (used by ReadTheDocs) and switch back to main:
      git checkout stable
      git rebase main
      git push origin stable
      git checkout main
    It's OK to force push to 'stable' if necessary.
    We also update the stable branch with `git cherrypick` for documentation
    only fixes that apply the current released version.
 8. Build and test the release package
      pixi run dist
 9. Add a section for the next release to doc/whats-new.rst.
10. Commit your changes and push to main again:
      git commit -a -m 'Revert to dev version'
      git push origin main
    You're done pushing to main!
11. Issue the release on GitHub. Open https://github.com/crusaderky/recursive_diff/releases;
    the new release should have automatically appeared. Otherwise, click on
    "Draft a new release" and paste in the latest from whats-new.rst.
12. Use twine to register and upload the release on pypi. Be careful, you can't
    take this back!
      pixi run twine-upload
    You will need to be listed as a package owner at
    https://pypi.python.org/pypi/recursive_diff for this to work.
13. Update the docs. Login to https://readthedocs.org/projects/recursive_diff/versions/
    and switch your new release tag (at the bottom) from "Inactive" to "Active".
    It should now build automatically.
    Make sure that both the new tagged version and 'stable' build successfully.
14. Update conda-forge.
14a.  Clone https://github.com/conda-forge/recursive_diff-feedstock
14b.  Update the version number and sha256 in meta.yaml.
      You can calculate sha256 with
        sha256sum dist/*
14c.  Double check dependencies in meta.yaml and update them to match pyproject.toml.
14d.  Submit a pull request.
14e.  Write a comment in the PR:
        @conda-forge-admin, please rerender
      Wait for the rerender commit (it may take a few minutes).
14f.  Wait for CI to pass and merge.
14g.  The next day, test the conda-forge release
        conda search recursive_diff
        conda create -n recursive_diff-test recursive_diff
        conda activate recursive_diff-test
        conda list
        python -c 'import recursive_diff'
