Building an NLTK distribution
----------------------------------

1. Testing
   - Ensure CI server isn't reporting any test failures
     https://www.travis-ci.org/nltk/nltk
   - Optionally test demonstration code locally
     make demotest
   - Optionally test individual modules:
     tox-3.8 -e py38 nltk.package.module
   - Check the data index is up-to-date:
     cd ../nltk_data; make; push

2. Update Version Number and ChangeLog
   - Update version number
     edit nltk/VERSION and web/conf.py (version and release)
   - Check web/install.rst mentions latest version of Python
   - Check setup.py lists correct range of Python versions
   - Add a new entry to the news page in nltk/web/news.rst
   - Update the ChangeLog (for nltk, nltk_data)
     git log --since=20XX-YY-ZZ
     edit ChangeLog

3. Build Documentation
   - Check the copyright year is correct and update if necessary
     e.g. ./tools/global_replace.py 2001-2021 2001-2022
     check web/conf.py copyright line
   - Check that installation instructions are up-to-date
     (including the range of Python versions that are supported)
     edit web/install.rst setup.py
   - Rebuild the API docs
     - make sure you have the current revision of the web pages
       cd nltk.github.com; git pull
     - build
       cd ../nltk/web
       make (slow; lots of warning messages about cross references)
     - publish
       cd ../../nltk.github.com
       git add _modules _sources _static api *.html objects.inv searchindex.js
       git status (missing any important looking files?)
       git commit -m "updates for version 3.X.Y"
       git push origin master

4. Create a new version
   - (Optionally do this in a release branch, branching from develop branch
     git checkout -b release-3.X.Y develop)
   - Tag this version:
     git tag -a 3.X.Y -m "version 3.X.Y"
     git push --tags
     verify that it shows up here: https://github.com/nltk/nltk/releases
   - (Optionally merge with master branch
     git checkout master
     git merge --no-ff release-3.X.Y)

5. Release
   - Make the distributions
     make clean; make dist; ls dist/
   - Upload the distributions
     python -m twine upload dist/*
   - Check upload
     https://pypi.python.org/pypi/nltk

6. Announce
   - Post announcement to NLTK the mailing lists:
     nltk-dev (for beta releases)
     nltk-users (for final releases)
     nltk twitter account
   - announce to external mailing lists, for major N.N releases only
     CORPORA@uib.no, linguist@linguistlist.org,
     PythonSIL@lists.sil.org, edu-sig@python.org
     mailing lists for any local courses using NLTK

7. Optionally update to new version
   - we don't want builds from the repository to have the same release number
     e.g. after release X.Y.4, update repository version to X.Y.5a (alpha)


@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@ BOOK BUILD
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

The build requires docutils, pdflatex, python imaging library, epydoc,
  cdrtools, ImageMagick

  1. Check out a clean copy of the subversion repository (or make clean)
     and install locally with sudo python setup.py install; make clean
  2. make doc (slow; see doc/ for the results) and commit
