<commit_before>* Release checklist

- Check that the current virtualenv matches the current coverage branch.
- Version number in coverage/version.py
        version_info = (4, 0, 2, "alpha", 1)
        version_info = (4, 0, 2, "beta", 1)
        version_info = (4, 0, 2, "candidate", 1)
        version_info = (4, 0, 2, "final", 0)
- Supported Python version numbers. Search for "PYVERSIONS".
- Copyright date in NOTICE.txt
- run `python igor.py cheats` to get useful snippets for next steps.
- Update CHANGES.rst, including release date.
    - don't forget the jump target
- Update README.rst
    - "New in x.y:"
    - Python versions supported
- Update docs
    - Python versions in doc/index.rst
    - IF PRE-RELEASE:
        - Version of latest stable release in doc/index.rst
    - Version, release, release_date and copyright date in doc/conf.py
        - Look for CHANGEME comments
    - Make sure the docs are cogged:
        $ make prebuild
    - Don't forget the man page: doc/python-coverage.1.txt
    - Check that the docs build correctly:
        $ tox -e doc
- commit the release-prep changes
- Generate new sample_html to get the latest, incl footer version number:
    - IF PRE-RELEASE:
        $ make sample_html_beta
    - IF NOT PRE-RELEASE:
        $ make sample_html
        check in the new sample html
- Done with changes to source files, check them in.
    $ git push
- Build and publish docs:
    - IF PRE-RELEASE:
        $ make publishbeta
    - ELSE:
        $ make publish
- Kits:
    - Trigger the kit GitHub Action
        $ make build_kits
        - wait for it to finish:
            - https://github.com/nedbat/coveragepy/actions/workflows/kit.yml
    - Download and check built kits from GitHub Actions:
        $ make clean download_kits check_kits
    - examine the dist directory, and remove anything that looks malformed.
    - test the pypi upload:
        $ make test_upload
- Update PyPI:
    - upload kits:
        $ make kit_upload
- Tag the tree
    $ make tag
    - IF NOT PRE-RELEASE:
        - update git "stable" branch to point to latest release
            $ make update_stable
- Update GitHub releases:
    $ make clean github_releases
- Bump version:
    - coverage/version.py
        - increment version number
        - IF NOT PRE-RELEASE:
            - set to alpha-0 if just released.
    - CHANGES.rst
        - add an "Unreleased" section to the top.
    $ git push
- Update readthedocs
    - @ https://readthedocs.org/projects/coverage/versions/
        - find the latest tag in the inactive list, edit it, make it active.
            - readthedocs won't find the tag until a commit is made on master.
        - keep just the latest version of each x.y release, make the rest active but hidden.
    - IF NOT PRE-RELEASE:
        - @ https://readthedocs.org/projects/coverage/builds/
            - wait for the new tag build to finish successfully.
        - @ https://readthedocs.org/dashboard/coverage/advanced/
            - change the default version to the new version
- Visit the fixed issues on GitHub and mention the version it was fixed in.
    $ make comment_on_fixes
        - "This is now released as part of [coverage 5.2](https://pypi.org/project/coverage/5.2)."
- Announce:
    - twitter @coveragepy
    - nedbatchelder.com blog post?
- things to automate:
    - url to link to latest changes in docs
    - next version.py line
    - readthedocs api to do the readthedocs changes
<commit_msg>build: commenting on fixes should happen before bumping the version<commit_after>* Release checklist

- Check that the current virtualenv matches the current coverage branch.
- Version number in coverage/version.py
        version_info = (4, 0, 2, "alpha", 1)
        version_info = (4, 0, 2, "beta", 1)
        version_info = (4, 0, 2, "candidate", 1)
        version_info = (4, 0, 2, "final", 0)
- Supported Python version numbers. Search for "PYVERSIONS".
- Copyright date in NOTICE.txt
- run `python igor.py cheats` to get useful snippets for next steps.
- Update CHANGES.rst, including release date.
    - don't forget the jump target
- Update README.rst
    - "New in x.y:"
    - Python versions supported
- Update docs
    - Python versions in doc/index.rst
    - IF PRE-RELEASE:
        - Version of latest stable release in doc/index.rst
    - Version, release, release_date and copyright date in doc/conf.py
        - Look for CHANGEME comments
    - Make sure the docs are cogged:
        $ make prebuild
    - Don't forget the man page: doc/python-coverage.1.txt
    - Check that the docs build correctly:
        $ tox -e doc
- commit the release-prep changes
- Generate new sample_html to get the latest, incl footer version number:
    - IF PRE-RELEASE:
        $ make sample_html_beta
    - IF NOT PRE-RELEASE:
        $ make sample_html
        check in the new sample html
- Done with changes to source files, check them in.
    $ git push
- Build and publish docs:
    - IF PRE-RELEASE:
        $ make publishbeta
    - ELSE:
        $ make publish
- Kits:
    - Trigger the kit GitHub Action
        $ make build_kits
        - wait for it to finish:
            - https://github.com/nedbat/coveragepy/actions/workflows/kit.yml
    - Download and check built kits from GitHub Actions:
        $ make clean download_kits check_kits
    - examine the dist directory, and remove anything that looks malformed.
    - test the pypi upload:
        $ make test_upload
- Update PyPI:
    - upload kits:
        $ make kit_upload
- Tag the tree
    $ make tag
    - IF NOT PRE-RELEASE:
        - update git "stable" branch to point to latest release
            $ make update_stable
- Update GitHub releases:
    $ make clean github_releases
- Visit the fixed issues on GitHub and mention the version it was fixed in.
    $ make comment_on_fixes
        - "This is now released as part of [coverage 5.2](https://pypi.org/project/coverage/5.2)."
- Bump version:
    - coverage/version.py
        - increment version number
        - IF NOT PRE-RELEASE:
            - set to alpha-0 if just released.
    - CHANGES.rst
        - add an "Unreleased" section to the top.
    $ git push
- Update readthedocs
    - @ https://readthedocs.org/projects/coverage/versions/
        - find the latest tag in the inactive list, edit it, make it active.
            - readthedocs won't find the tag until a commit is made on master.
        - keep just the latest version of each x.y release, make the rest active but hidden.
    - IF NOT PRE-RELEASE:
        - @ https://readthedocs.org/projects/coverage/builds/
            - wait for the new tag build to finish successfully.
        - @ https://readthedocs.org/dashboard/coverage/advanced/
            - change the default version to the new version
- Announce:
    - twitter @coveragepy
    - nedbatchelder.com blog post?
- things to automate:
    - url to link to latest changes in docs
    - next version.py line
    - readthedocs api to do the readthedocs changes

{'fraction_non_alphanumeric': 0.07744059547666762, 'fraction_numerical': 0.006298310907529345, 'mean_word_length': 2.280281690140845, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 10, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 4, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7499642', 'n_tokens_mistral': 2120, 'n_tokens_neox': 1971, 'n_words': 805}