----------------------
How to release netaddr
----------------------

Here is how to go about releasing a new version of `netaddr`.

* Make sure you have the necessary dependencies installed:

  ::

    pip install --upgrade wheel twine

* Pull down the latest set of changes for the ``master`` branch.

  The assumption is the ``master`` branch build is green and everything works correctly
  (we have a CI process in place).

* Update the top-most section in the ``CHANGELOG.rst`` with details of all notable
  changes since the last release that aren't there already.

  Set the release date to the current day.

* Decide what the new version should be (depending on the changes that will be present
  in this release):

  * Fixes – patch version bump
  * New features – minor version bump
  * Substantial or breaking changes – major version bump

* Update the version numbers throughout the source code. That includes changing the currently
  version number in

  - ``netaddr/__init__.py``
  - ``docs/source/conf.py``

  and replacing all ``NEXT_NETADDR_VERSION`` instances with the new version (except for places
  like this file, of course).

* Commit all changes.

* Build and publish the package::

    make build-and-publish

* Tag the release and sync it to remote repo::

    git tag -a x.y.z -m 'Release version x.y.z'
    make push_tags

* Create a `GitHub Release <https://github.com/netaddr/netaddr/releases/new>`_ based on
  the tag you just pushed.

  Put the new ``CHANGELOG.rst`` contents there and add the "Full changelog" link at the
  end (copy and adapt from the previous release).
