# Preparing a release

Things to do for releasing:

- announce intent to release on gitter

- check for open issues / pull requests that really should be in the release

  > - come back when these are done

  > - … or ignore them and do another release next week

- check for deprecations “long enough ago” (two months or two releases, whichever is longer)

  > - remove affected code

- Do the actual release changeset

  > - bump version number

  >   > - increment as per Semantic Versioning rules

  >   > - remove `+dev` tag from version number

  > - Run `towncrier`

  >   > - review history change

  >   > - `git rm` the now outdated newfragments

  > - commit

- push to your personal repository

- create pull request to `python-trio/trio`’s “main” branch

- verify that all checks succeeded

- tag with vVERSION, push tag on `python-trio/trio` (not on your personal repository)

- approve the release workflow’s publish job

- update version number in the same pull request

  > - add `+dev` tag to the end

- merge the release pull request

- make a GitHub release (go to the tag and press “Create release from tag”)

  > - paste in the new content in `history.rst` and convert it to markdown: turn the parts under section into `---`, update links to just be the links, and whatever else is necessary.

  > - include anything else that might be pertinent, like a link to the commits between the latest and current release.

- announce on gitter