zest.releaser


Namezest.releaser JSON
Version 6.12 PyPI version JSON
download
home_pagehttp://zestreleaser.readthedocs.io
SummarySoftware releasing made easy and repeatable
upload_time2017-06-19 09:47:14
maintainer
docs_urlNone
authorReinout van Rees
requires_python
licenseGPL
keywords releasing packaging pypi
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            Package releasing made easy: zest.releaser overview and installation
====================================================================

zest.releaser is collection of command-line programs to help you automate the
task of releasing a Python project.

It does away with all the boring bits. This is what zest.releaser automates
for you:

* It updates the version number. The version number can either be in
  ``setup.py`` or ``version.txt`` (or in a ``__versions__`` attribute in a
  Python file). For example, it switches you from ``0.3.dev0`` (current
  development version) to ``0.3`` (release) to ``0.4.dev0`` (new development
  version).

* It updates the history/changes file. It logs the release date on release and
  adds a new heading for the upcoming changes (new development version).

* It tags the release. It creates a tag in your version control system named
  after the released version number.

* It optionally uploads a source release to PyPI. It will only do this if the
  package is already registered there (else it will ask, defaulting to 'no');
  zest releaser is careful not to publish your private projects!


Most important URLs
-------------------

First the three most important links:

- The full documentation is at `zestreleaser.readthedocs.io
  <http://zestreleaser.readthedocs.io>`_.

- We're `on PyPI <http://pypi.python.org/pypi/zest.releaser>`_, so we're only
  an ``pip install zest.releaser`` away from installation on your computer.

- The code is at `github.com/zestsoftware/zest.releaser
  <https://github.com/zestsoftware/zest.releaser>`_.

And... we're automatically being tested by Travis and Landscape:

.. image:: https://secure.travis-ci.org/zestsoftware/zest.releaser.png?branch=master
   :target: https://travis-ci.org/#!/zestsoftware/zest.releaser

.. image:: https://landscape.io/github/zestsoftware/zest.releaser/master/landscape.svg?style=flat
   :target: https://landscape.io/github/zestsoftware/zest.releaser/master
   :alt: Code Health


Compatibility / Dependencies
----------------------------

``zest.releaser`` works on Python 2.7.  Python 2.6 is not officially
supported anymore since version 4.0: it may still work, but we are no
longer testing against it.  Python 3.3+ is supported.

To be sure: the packages that you release with ``zest.releaser`` may
very well work on other Python versions: that totally depends on your
package.

We depend on:

- ``setuptools`` for the entrypoint hooks that we offer.

- ``colorama`` for colorized output (some errors printed in red).

- ``six`` for python2/python3 compatibility.

Since version 4.0 there is a ``recommended`` extra that you can get by
installing ``zest.releaser[recommended]`` instead of ``zest.releaser``.  It
contains a few trusted add-ons that we feel are useful for the great majority
of ``zest.releaser`` users:

- wheel_ for creating a Python wheel that we upload to PyPI next to
  the standard source distribution.  Wheels are the new Python package
  format.  Create or edit ``setup.cfg`` in your project (or globally
  in your ``~/.pypirc``) and create a section ``[zest.releaser]`` with
  ``create-wheel = yes`` to create a wheel to upload to PyPI.  See
  http://pythonwheels.com for deciding whether this is a good idea for
  your package.  Briefly, if it is a pure Python 2 *or* pure Python 3
  package: just do it. If it is a pure Python 2 *and* a pure Python 3
  project, it is known as a "universal" wheel, because one wheel can
  be installed on all implementations and versions of Python. If you
  indicate this in ``setup.cfg`` with the section ``[bdist_wheel]``
  having ``universal = 1``, then we will automatically upload a wheel,
  unless ``create-wheel`` is explicitly set to false.

- `check-manifest`_ checks your ``MANIFEST.in`` file for completeness,
  or tells you that you need such a file.  It basically checks if all
  version controlled files are ending up the the distribution that we
  will upload.  This may avoid 'brown bag' releases that are missing
  files.

- pyroma_ checks if the package follows best practices of Python
  packaging.  Mostly it performs checks on the ``setup.py`` file, like
  checking for Python version classifiers.

- chardet_, the universal character encoding detector. To do the right thing
  in case your readme or changelog is in a non-utf-8 character set.

- readme_ to check your long description in the same way as pypi does. No more
  unformatted restructured text on your pypi page just because there was a
  small error somewhere. Handy.

- twine_ for secure uploading via https to pypi. Plain setuptools doesn't
  support this.

.. _wheel: https://pypi.python.org/pypi/wheel
.. _`check-manifest`: https://pypi.python.org/pypi/check-manifest
.. _pyroma: https://pypi.python.org/pypi/pyroma
.. _chardet: https://pypi.python.org/pypi/chardet
.. _readme: https://pypi.python.org/pypi/readme
.. _twine: https://pypi.python.org/pypi/twine


Installation
------------

Just a simple ``pip install zest.releaser`` or ``easy_install zest.releaser`` is
enough. If you want the recommended extra utilities, do a ``pip install
zest.releaser[recommended]``.

Alternatively, buildout users can install zest.releaser as part of a specific
project's buildout, by having a buildout configuration such as::

    [buildout]
    parts =
        scripts

    [scripts]
    recipe = zc.recipe.egg
    eggs = zest.releaser[recommended]


Version control systems: svn, hg, git, bzr
------------------------------------------

Of course you must have a version control system installed.  zest.releaser
currently supports:

- Subversion (svn).

- Mercurial (hg).

- Git (git).

- Git-svn.

- Bazaar (bzr).

Others could be added if there are volunteers! Git and mercurial support
have been contributed years ago when we were working with bzr and subversion,
for instance.


Available commands
------------------

Zest.releaser gives you four commands to help in releasing python
packages.  They must be run in a version controlled checkout.  The commands
are:

- **prerelease**: asks you for a version number (defaults to the current
  version minus a 'dev' or so), updates the setup.py or version.txt and the
  CHANGES/HISTORY/CHANGELOG file (with either .rst/.txt/.md/.markdown or no
  extension) with this new version number and offers to commit those changes
  to subversion (or bzr or hg or git)

- **release**: copies the the trunk or branch of the current checkout and
  creates a version control tag of it.  Makes a checkout of the tag in a
  temporary directory.  Offers to register and upload a source dist
  of this package to PyPI (Python Package Index).  Note: if the package has
  not been registered yet, it will not do that for you.  You must register the
  package manually (``python setup.py register``) so this remains a conscious
  decision.  The main reason is that you want to avoid having to say: "Oops, I
  uploaded our client code to the internet; and this is the initial version
  with the plaintext root passwords."

- **postrelease**: asks you for a version number (gives a sane default), adds
  a development marker to it, updates the setup.py or version.txt and the
  CHANGES/HISTORY/CHANGELOG file with this and offers to commit those changes
  to version control. Note that with git and hg, you'd also be asked to push
  your changes (since 3.27). Otherwise the release and tag only live in your
  local hg/git repository and not on the server.

- **fullrelease**: all of the above in order.

There are some additional tools:

- **longtest**: small tool that renders a setup.py's long description
  and opens it in a web browser. This assumes an installed docutils
  (as it needs ``rst2html.py``).

- **lasttagdiff**: small tool that shows the *diff* of the current
  branch with the last released tag.  Handy for checking whether all
  the changes are adequately described in the changes file.

- **lasttaglog**: small tool that shows the *log* of the current
  branch since the last released tag.  Handy for checking whether all
  the changes are adequately described in the changes file.

- **addchangelogentry**: pass this a text on the command line and it
  will add this as an entry in the changelog.  This is probably mostly
  useful when you are making the same change in a batch of packages.
  The same text is used as commit message.  In the changelog, the text
  is indented and the first line is started with a dash.  The command
  detects it if you use for example a star as first character of an
  entry.

- **bumpversion**: do not release, only bump the version.  A
  development marker is kept when it is there.  With ``--feature`` we
  update the minor version.  With option ``--breaking`` we update the
  major version.


Credits
=======

* `Reinout van Rees <http://reinout.vanrees.org>`_ (Nelen & Schuurmans) is the
  originator and main author.

* `Maurits van Rees <http://maurits.vanrees.org>`_ (Zest Software) added
  a heapload of improvements.

* `Kevin Teague <http://bud.ca>`_ (Canada's Michael Smith Genome Sciences
  Center) added support for multiple version control systems, most notable
  Mercurial.

* `Wouter vanden Hove <http://ugent.be>`_ (University of Gent) added
  support for uploading to multiple servers, using collective.dist.

* `Godefroid Chapelle <http://bubblenet.be>`_ (BubbleNet) added /tag besides
  /tags for subversion.

* `Richard Mitchell <https://github.com/mitchellrj>`_
  (`Isotoma <https://www.isotoma.com/>`_) added Python 3 support.


Changelog for zest.releaser
===========================

6.12 (2017-06-19)
-----------------

- Add date format in the config.  Default is ISO-8601 (%Y-%m-%d).
  Put ``date-format = format string`` in your ``~/.pypirc`` or ``setup.cfg``.
  [mgedmin]


6.11 (2017-06-09)
-----------------

- If the package wants to build universal wheels by setting
  ``[bdist_wheel] universal = 1``, then the default for
  ``create-wheel`` is now yes.


6.10 (2017-04-18)
-----------------

- Corner case fix: a top-level ``version = 1.0`` in your ``setup.py`` is now
  also allowed to be in uppercase, like ``VERSION = 1.0``.
  This fixes `issue 216
  <https://github.com/zestsoftware/zest.releaser/issues/216>`_.
  [reinout]


6.9 (2017-02-17)
----------------

- Add tag formatter in the config.  This is a formatter that changes the name of the tag.
  Default is the same as the version.
  Put ``tag-format = a string`` in your ``~/.pypirc`` or ``setup.cfg``.
  It needs to contain ``%(version)s``.
  [tcezard]


6.8.1 (2017-01-13)
------------------

- Catch error when uploading first package file in new PyPI project.
  This fixes `issue 206
  <https://github.com/zestsoftware/zest.releaser/issues/206>`_.
  [maurits]


6.8 (2016-12-30)
----------------

- Before retrying a ``twine`` command, reload the pypi config.  Then
  when the user fixes his account settings in ``~/.pypirc`` and
  retries, these changes take effect.  This used to work a while ago,
  but got broken.  [maurits]

- Added ``development-marker`` config option.  With this can override
  the default ``.dev0``.  [drucci]

- Added ``version-levels`` and ``less-zeroes`` options.
  This influences the suggested version.  [maurits]

- Allow ``.pypirc`` with just a ``pypi`` section.  Previously, we
  required either a ``[server-login]`` section with a ``username``
  option, or a ``[distutils]`` section with an ``index-servers`` option.
  Failing this, we gave a warning about a not properly configured
  file, and happily continued without uploading anything.  Now if
  there is something missing from the ``pypirc`` file, we give an
  error and explicitly ask if you want to continue without uploading.
  Fixes `issue #199 <https://github.com/zestsoftware/zest.releaser/issues/199>`_.

  Note for developers of extensions for ``zest.releaser``: this
  removes the ``is_old_pypi_config`` and ``is_new_pypi_config``
  methods, because they made no sense anymore.  If you were using
  these, see if you can use the ``distutils_server`` method instead.
  [maurits]

- Added ``push-changes`` config file option.  Default: yes.  When this
  is false, zest.releaser sets ``no`` as default answer for the
  question if you want to push the changes to the remote.
  [newlog]

- By default no longer register a new package, but only upload it.
  Registering a package is no longer needed on PyPI: uploading a new
  distribution takes care of this.  If you *do* want to register,
  maybe because a different package server requires it, then in your
  ``setup.cfg`` or ``~/.pypirc``, use the following::

    [zest.releaser]
    register = yes

  Fixes `issue 191 <https://github.com/zestsoftware/zest.releaser/issues/191>`_.
  [willowmck]


6.7.1 (2016-12-22)
------------------

- Create the list of distributions after the ``before_upload`` hook has fired.
  This allows the ``before_upload`` hook to create additional distributions,
  which will then be uploaded.  [t-8ch]


6.7 (2016-10-23)
----------------

- Use the intended API of twine.  This should work with twine 1.6.0
  and higher, including future versions.  [maurits]


6.6.5 (2016-09-12)
------------------

- Support and require twine 1.8.0 as minimum version.
  Fixes https://github.com/zestsoftware/zest.releaser/issues/183
  [maurits]

- Updated the documentation on uploading.  [mgedmin, maurits]

- Replaced http://zestreleaser.readthedocs.org with
  http://zestreleaser.readthedocs.io.  This is the new canonical
  domain since 28 April 2016.  [maurits]


6.6.4 (2016-02-24)
------------------

- Really create a shallow git clone when creating a distribution.
  See issue #169.
  [maurits]


6.6.3 (2016-02-24)
------------------

- Using a "shallow" git clone when creating a distribution. This speeds up
  releases, especially on big repositories.
  See issue #169.
  [gforcada]


6.6.2 (2016-02-11)
------------------

- Added ``no-input`` option also to global (.pypirc) options.
  Issue #164.
  [jcerjak]


6.6.1 (2016-02-02)
------------------

- Fixed version in changelog after bumpversion call.
  [maurits]


6.6.0 (2016-01-29)
------------------

- Added ``bumpversion`` command.  Options ``--feature`` and
  ``--breaking``.  Issue #160.  The exact behavior might change in
  future versions after more practical experience.  Try it out and
  report any issues you find.  [maurits]

- Fixed possible encoding problems when writing files.  This is
  especially for an ascii file to which we add non ascii characters,
  like in the ``addchangelogentry`` command.  [maurits]

- Added ``addchangelogentry`` command.  Issue #159.  [maurits]

- Moved ``_diff_and_commit``, ``_push`` and ``_grab_version`` to
  ``baserelease.py``, as the first was duplicated and the second and
  third may be handy for other code too.  ``_grab_version`` is the
  basic implementation, and is overridden in the prereleaser.  [maurits]

- Show changelog of current release before asking for the new version
  number.  Issue #155.  [maurits]

- Moved ``_diff_and_commit``, ``_push`` and ``_grab_version`` to
  ``baserelease.py``, as the first was duplicated and the second and
  third may be handy for other code too.  ``_grab_version`` is the
  basic implementation, and is overridden in the prereleaser.  [maurits]

6.5 (2016-01-05)
----------------

- Adjusted ``bin/longtest`` for the (necessary) rename of the ``readme``
  library to ``readme_renderer``.
  Fixes #153

  Note: the current ``readme`` package on pypi is broken to force an
  upgrade. If you use an older zest.releaser, you have to pin ``readme`` to
  ``0.6.0``, it works just fine.
  [reinout]


6.4 (2015-11-13)
----------------

- Fixed error when retrying twine command.
  Fixes #148
  [maurits]


6.3 (2015-11-11)
----------------

- Fixed exception when logging an exception when a twine command
  fails.
  [maurits]


6.2 (2015-10-29)
----------------

New:

- Use ``twine`` as library instead of as command.  You no longer need
  to have ``twine`` on your ``PATH``.
  Fixes issue #142.
  [maurits]


6.1 (2015-10-29)
----------------

Fixes:

- Fixed registering on servers other than PyPI.  We forgot to specify
  the server in that case.
  [maurits]


6.0 (2015-10-27)
----------------

- Made ``twine`` a core dependency.  We now always use it for
  registering and uploading.  We require at least version 1.6.0, as
  this introduces the ``register`` command.
  [maurits]

- When uploading with ``twine`` first use the ``twine register``
  command.  On PyPI, when the project is already registered, we do not
  call it again, but we can only check this for PyPI, not for other
  servers.
  Issue #128.
  [maurits]

- Always exit with error code 1 when we exit explicitly.  In some
  cases we would exit with success code 0 when we exited based on the
  answer to a question.  This happened when the user did not want us
  to create the missing ``tags`` directory in subversion, and also
  after asking if the user wanted to continue even though 'nothing
  changed yet' was in the history.
  [maurits]

- Extensions can now tell zest.releaser to look for specific required
  words in the history.  Just add ``required_changelog_text`` to the
  prerelease data.  It can be a string or a list, for example
  ``["New:", "Fixes:"]``.  For a list, only one of them needs to be
  present.
  [maurits]

- Look for the 'Nothing changed yet' text in the complete text of the
  history entries of the current release, instead of looking at it
  line by line.  This means that zest releaser extensions can overwrite
  ``nothing_changed_yet`` in the prerelease data to span multiple lines.
  [maurits]

- zest.releaser extensions can now look at
  ``history_insert_line_here`` in the prerelease data.  On this line
  number in the history file they can add an extra changelog entry if
  wanted.
  [maurits]

- Added ``history_last_release`` to the prerelease data.  This is the
  text with all history entries of the current release.
  [maurits]

- When using the ``--no-input`` option, show the question and the
  chosen answer.  Otherwise in case of a problem it is not clear why
  the command stopped.
  Fixes issue #136.
  [maurits]


5.7 (2015-10-14)
----------------

- The history/changelog file is now written back with the originally detected
  encoding. The functionality was added in 5.2, but only used for writing the
  ``setup.py``, not the changelog. This is fixed now.
  [reinout]


5.6 (2015-09-23)
----------------

- Add support for PyPy.
  [jamadden]


5.5 (2015-09-05)
----------------

- The ``bin/longtest`` command adds the correct utf-8 character encoding hint
  to the resulting html so that non-ascii long descriptions are properly
  rendered in all browsers.
  [reinout]


5.4 (2015-08-28)
----------------

- Requiring at least version 0.6 of the (optional, btw) readme package. The
  API of readme changed slightly. Only needed when you want to check your
  package's long description with ``bin/longtest``.
  [reinout]


5.3 (2015-08-21)
----------------

- Fixed typo in svn command to show the changelog since the last tag.
  [awello]


5.2 (2015-07-27)
----------------

- When we find no version control in the current directory, look a few
  directories up.  When looking for version and history files, we look
  in the current directory and its sub directories, and not in the
  repository root.  After making a tag checkout, we change directory
  to the same relative path that we were in before.  You can use this
  when you want to release a Python package that is in a sub directory
  of the repository.  When we detect this, we first offer to change to
  the root directory of the repository.
  [maurits]

- Write file with the same encoding that we used for reading them.
  Issue #109.
  [maurits]


5.1 (2015-06-11)
----------------

- Fix writing history/changelog file with non-ascii.  Issue #109.
  [maurits]

- Release zest.releaser as universal wheel, so one wheel for Python 2
  and 3.  As usual, we release it also as a source distribution.
  [maurits]

- Regard "Skipping installation of __init__.py (namespace package)" as
  warning, printing it in magenta.  This can happen when creating a
  wheel.  Issue #108.
  [maurits]


5.0 (2015-06-05)
----------------

- Python 3 support.
  [mitchellrj]

- Use the same `readme` library that PyPI uses to parse long
  descriptions when we test and render them.
  [mitchellrj]


4.0 (2015-05-21)
----------------

- Try not to treat warnings as errors.
  [maurits]

- Allow retrying some commands when there is an error.  Currently only
  for commands that talk to PyPI or another package index.  We ask the
  user if she wants to retry: Yes, no, quit.
  [maurits]

- Added support for twine_.  If the ``twine`` command is available, it
  is used for uploading to PyPI.  It is installed automatically if you
  use the ``zest.releaser[recommended]`` extra.  Note that if the
  ``twine`` command is not available, you may need to change your
  system ``PATH`` or need to install ``twine`` explicitly.  This seems
  more needed when using ``zc.buildout`` than when using ``pip``.
  Added ``releaser.before_upload`` entry point.  Issue #59.
  [maurits]

- Added ``check-manifest`` and ``pyroma`` to the ``recommended``
  extra.  Issue #49.
  [maurits]

- Python 2.6 not officially supported anymore.  It may still work, but
  we are no longer testing against it.
  [maurits]

- Do not accept ``y`` or ``n`` as answer for a new version.
  [maurits]

- Use ``colorama`` to output errors in red.
  Issue #86
  [maurits]

- Show errors when uploading to PyPI.  They were unintentionally
  swallowed before, so you did not notice when an upload failed.
  Issue #84.
  [maurits]

- Warn when between the last postrelease and a new prerelease no
  changelog entry has been added.  '- Nothing changed yet' would still
  be in there.
  Issue #26.
  [maurits]

- Remove code for support of collective.sdist.  That package was a backport
  from distutils for Python 2.5 and earlier, which we do not support.
  [maurits]

- Add optional support for uploading Python wheels.  Use the new
  ``zest.releaser[recommended]`` extra, or run ``pip install wheel``
  yourself next to ``zest.releaser``.  Create or edit ``setup.cfg`` in
  your project (or globally in your ``~/.pypirc``) and create a section
  ``[zest.releaser]`` with ``create-wheel = yes`` to create a wheel to
  upload to PyPI.  See http://pythonwheels.com for deciding whether
  this is a good idea for your package.  Briefly, if it is a pure
  Python 2 *or* pure Python 3 package: just do it.
  Issue #55
  [maurits]

- Optionally add extra text to commit messages.  This can be used to
  avoid running Travis Continuous Integration builds.  See
  http://docs.travis-ci.com/user/how-to-skip-a-build/.  To activate
  this, add ``extra-message = [ci skip]`` to a ``[zest.releaser]``
  section in the ``setup.cfg`` of your package, or your global
  ``~/.pypirc``.  Or add your favorite geeky quotes there.
  [maurits]

- Fix a random test failure on Travis CI, by resetting ``AUTO_RESPONSE``.
  [maurits]

- Added clarification to logging: making an sdist/wheel now says that it is
  being created in a temp folder. Fixes #61.
  [reinout]

.. # Note: for older changes see ``doc/sources/changelog.rst``.

.. _twine: https://pypi.python.org/pypi/twine



            

Raw data

            {
    "maintainer": "", 
    "docs_url": null, 
    "requires_python": "", 
    "maintainer_email": "", 
    "cheesecake_code_kwalitee_id": null, 
    "keywords": "releasing,packaging,pypi", 
    "upload_time": "2017-06-19 09:47:14", 
    "author": "Reinout van Rees", 
    "home_page": "http://zestreleaser.readthedocs.io", 
    "download_url": "https://pypi.python.org/packages/3e/a8/0864362dfbac6e9ba849520127d259796f591538983aa3ed11bd84a076c4/zest.releaser-6.12.tar.gz", 
    "platform": "", 
    "version": "6.12", 
    "cheesecake_documentation_id": null, 
    "description": "Package releasing made easy: zest.releaser overview and installation\n====================================================================\n\nzest.releaser is collection of command-line programs to help you automate the\ntask of releasing a Python project.\n\nIt does away with all the boring bits. This is what zest.releaser automates\nfor you:\n\n* It updates the version number. The version number can either be in\n  ``setup.py`` or ``version.txt`` (or in a ``__versions__`` attribute in a\n  Python file). For example, it switches you from ``0.3.dev0`` (current\n  development version) to ``0.3`` (release) to ``0.4.dev0`` (new development\n  version).\n\n* It updates the history/changes file. It logs the release date on release and\n  adds a new heading for the upcoming changes (new development version).\n\n* It tags the release. It creates a tag in your version control system named\n  after the released version number.\n\n* It optionally uploads a source release to PyPI. It will only do this if the\n  package is already registered there (else it will ask, defaulting to 'no');\n  zest releaser is careful not to publish your private projects!\n\n\nMost important URLs\n-------------------\n\nFirst the three most important links:\n\n- The full documentation is at `zestreleaser.readthedocs.io\n  <http://zestreleaser.readthedocs.io>`_.\n\n- We're `on PyPI <http://pypi.python.org/pypi/zest.releaser>`_, so we're only\n  an ``pip install zest.releaser`` away from installation on your computer.\n\n- The code is at `github.com/zestsoftware/zest.releaser\n  <https://github.com/zestsoftware/zest.releaser>`_.\n\nAnd... we're automatically being tested by Travis and Landscape:\n\n.. image:: https://secure.travis-ci.org/zestsoftware/zest.releaser.png?branch=master\n   :target: https://travis-ci.org/#!/zestsoftware/zest.releaser\n\n.. image:: https://landscape.io/github/zestsoftware/zest.releaser/master/landscape.svg?style=flat\n   :target: https://landscape.io/github/zestsoftware/zest.releaser/master\n   :alt: Code Health\n\n\nCompatibility / Dependencies\n----------------------------\n\n``zest.releaser`` works on Python 2.7.  Python 2.6 is not officially\nsupported anymore since version 4.0: it may still work, but we are no\nlonger testing against it.  Python 3.3+ is supported.\n\nTo be sure: the packages that you release with ``zest.releaser`` may\nvery well work on other Python versions: that totally depends on your\npackage.\n\nWe depend on:\n\n- ``setuptools`` for the entrypoint hooks that we offer.\n\n- ``colorama`` for colorized output (some errors printed in red).\n\n- ``six`` for python2/python3 compatibility.\n\nSince version 4.0 there is a ``recommended`` extra that you can get by\ninstalling ``zest.releaser[recommended]`` instead of ``zest.releaser``.  It\ncontains a few trusted add-ons that we feel are useful for the great majority\nof ``zest.releaser`` users:\n\n- wheel_ for creating a Python wheel that we upload to PyPI next to\n  the standard source distribution.  Wheels are the new Python package\n  format.  Create or edit ``setup.cfg`` in your project (or globally\n  in your ``~/.pypirc``) and create a section ``[zest.releaser]`` with\n  ``create-wheel = yes`` to create a wheel to upload to PyPI.  See\n  http://pythonwheels.com for deciding whether this is a good idea for\n  your package.  Briefly, if it is a pure Python 2 *or* pure Python 3\n  package: just do it. If it is a pure Python 2 *and* a pure Python 3\n  project, it is known as a \"universal\" wheel, because one wheel can\n  be installed on all implementations and versions of Python. If you\n  indicate this in ``setup.cfg`` with the section ``[bdist_wheel]``\n  having ``universal = 1``, then we will automatically upload a wheel,\n  unless ``create-wheel`` is explicitly set to false.\n\n- `check-manifest`_ checks your ``MANIFEST.in`` file for completeness,\n  or tells you that you need such a file.  It basically checks if all\n  version controlled files are ending up the the distribution that we\n  will upload.  This may avoid 'brown bag' releases that are missing\n  files.\n\n- pyroma_ checks if the package follows best practices of Python\n  packaging.  Mostly it performs checks on the ``setup.py`` file, like\n  checking for Python version classifiers.\n\n- chardet_, the universal character encoding detector. To do the right thing\n  in case your readme or changelog is in a non-utf-8 character set.\n\n- readme_ to check your long description in the same way as pypi does. No more\n  unformatted restructured text on your pypi page just because there was a\n  small error somewhere. Handy.\n\n- twine_ for secure uploading via https to pypi. Plain setuptools doesn't\n  support this.\n\n.. _wheel: https://pypi.python.org/pypi/wheel\n.. _`check-manifest`: https://pypi.python.org/pypi/check-manifest\n.. _pyroma: https://pypi.python.org/pypi/pyroma\n.. _chardet: https://pypi.python.org/pypi/chardet\n.. _readme: https://pypi.python.org/pypi/readme\n.. _twine: https://pypi.python.org/pypi/twine\n\n\nInstallation\n------------\n\nJust a simple ``pip install zest.releaser`` or ``easy_install zest.releaser`` is\nenough. If you want the recommended extra utilities, do a ``pip install\nzest.releaser[recommended]``.\n\nAlternatively, buildout users can install zest.releaser as part of a specific\nproject's buildout, by having a buildout configuration such as::\n\n    [buildout]\n    parts =\n        scripts\n\n    [scripts]\n    recipe = zc.recipe.egg\n    eggs = zest.releaser[recommended]\n\n\nVersion control systems: svn, hg, git, bzr\n------------------------------------------\n\nOf course you must have a version control system installed.  zest.releaser\ncurrently supports:\n\n- Subversion (svn).\n\n- Mercurial (hg).\n\n- Git (git).\n\n- Git-svn.\n\n- Bazaar (bzr).\n\nOthers could be added if there are volunteers! Git and mercurial support\nhave been contributed years ago when we were working with bzr and subversion,\nfor instance.\n\n\nAvailable commands\n------------------\n\nZest.releaser gives you four commands to help in releasing python\npackages.  They must be run in a version controlled checkout.  The commands\nare:\n\n- **prerelease**: asks you for a version number (defaults to the current\n  version minus a 'dev' or so), updates the setup.py or version.txt and the\n  CHANGES/HISTORY/CHANGELOG file (with either .rst/.txt/.md/.markdown or no\n  extension) with this new version number and offers to commit those changes\n  to subversion (or bzr or hg or git)\n\n- **release**: copies the the trunk or branch of the current checkout and\n  creates a version control tag of it.  Makes a checkout of the tag in a\n  temporary directory.  Offers to register and upload a source dist\n  of this package to PyPI (Python Package Index).  Note: if the package has\n  not been registered yet, it will not do that for you.  You must register the\n  package manually (``python setup.py register``) so this remains a conscious\n  decision.  The main reason is that you want to avoid having to say: \"Oops, I\n  uploaded our client code to the internet; and this is the initial version\n  with the plaintext root passwords.\"\n\n- **postrelease**: asks you for a version number (gives a sane default), adds\n  a development marker to it, updates the setup.py or version.txt and the\n  CHANGES/HISTORY/CHANGELOG file with this and offers to commit those changes\n  to version control. Note that with git and hg, you'd also be asked to push\n  your changes (since 3.27). Otherwise the release and tag only live in your\n  local hg/git repository and not on the server.\n\n- **fullrelease**: all of the above in order.\n\nThere are some additional tools:\n\n- **longtest**: small tool that renders a setup.py's long description\n  and opens it in a web browser. This assumes an installed docutils\n  (as it needs ``rst2html.py``).\n\n- **lasttagdiff**: small tool that shows the *diff* of the current\n  branch with the last released tag.  Handy for checking whether all\n  the changes are adequately described in the changes file.\n\n- **lasttaglog**: small tool that shows the *log* of the current\n  branch since the last released tag.  Handy for checking whether all\n  the changes are adequately described in the changes file.\n\n- **addchangelogentry**: pass this a text on the command line and it\n  will add this as an entry in the changelog.  This is probably mostly\n  useful when you are making the same change in a batch of packages.\n  The same text is used as commit message.  In the changelog, the text\n  is indented and the first line is started with a dash.  The command\n  detects it if you use for example a star as first character of an\n  entry.\n\n- **bumpversion**: do not release, only bump the version.  A\n  development marker is kept when it is there.  With ``--feature`` we\n  update the minor version.  With option ``--breaking`` we update the\n  major version.\n\n\nCredits\n=======\n\n* `Reinout van Rees <http://reinout.vanrees.org>`_ (Nelen & Schuurmans) is the\n  originator and main author.\n\n* `Maurits van Rees <http://maurits.vanrees.org>`_ (Zest Software) added\n  a heapload of improvements.\n\n* `Kevin Teague <http://bud.ca>`_ (Canada's Michael Smith Genome Sciences\n  Center) added support for multiple version control systems, most notable\n  Mercurial.\n\n* `Wouter vanden Hove <http://ugent.be>`_ (University of Gent) added\n  support for uploading to multiple servers, using collective.dist.\n\n* `Godefroid Chapelle <http://bubblenet.be>`_ (BubbleNet) added /tag besides\n  /tags for subversion.\n\n* `Richard Mitchell <https://github.com/mitchellrj>`_\n  (`Isotoma <https://www.isotoma.com/>`_) added Python 3 support.\n\n\nChangelog for zest.releaser\n===========================\n\n6.12 (2017-06-19)\n-----------------\n\n- Add date format in the config.  Default is ISO-8601 (%Y-%m-%d).\n  Put ``date-format = format string`` in your ``~/.pypirc`` or ``setup.cfg``.\n  [mgedmin]\n\n\n6.11 (2017-06-09)\n-----------------\n\n- If the package wants to build universal wheels by setting\n  ``[bdist_wheel] universal = 1``, then the default for\n  ``create-wheel`` is now yes.\n\n\n6.10 (2017-04-18)\n-----------------\n\n- Corner case fix: a top-level ``version = 1.0`` in your ``setup.py`` is now\n  also allowed to be in uppercase, like ``VERSION = 1.0``.\n  This fixes `issue 216\n  <https://github.com/zestsoftware/zest.releaser/issues/216>`_.\n  [reinout]\n\n\n6.9 (2017-02-17)\n----------------\n\n- Add tag formatter in the config.  This is a formatter that changes the name of the tag.\n  Default is the same as the version.\n  Put ``tag-format = a string`` in your ``~/.pypirc`` or ``setup.cfg``.\n  It needs to contain ``%(version)s``.\n  [tcezard]\n\n\n6.8.1 (2017-01-13)\n------------------\n\n- Catch error when uploading first package file in new PyPI project.\n  This fixes `issue 206\n  <https://github.com/zestsoftware/zest.releaser/issues/206>`_.\n  [maurits]\n\n\n6.8 (2016-12-30)\n----------------\n\n- Before retrying a ``twine`` command, reload the pypi config.  Then\n  when the user fixes his account settings in ``~/.pypirc`` and\n  retries, these changes take effect.  This used to work a while ago,\n  but got broken.  [maurits]\n\n- Added ``development-marker`` config option.  With this can override\n  the default ``.dev0``.  [drucci]\n\n- Added ``version-levels`` and ``less-zeroes`` options.\n  This influences the suggested version.  [maurits]\n\n- Allow ``.pypirc`` with just a ``pypi`` section.  Previously, we\n  required either a ``[server-login]`` section with a ``username``\n  option, or a ``[distutils]`` section with an ``index-servers`` option.\n  Failing this, we gave a warning about a not properly configured\n  file, and happily continued without uploading anything.  Now if\n  there is something missing from the ``pypirc`` file, we give an\n  error and explicitly ask if you want to continue without uploading.\n  Fixes `issue #199 <https://github.com/zestsoftware/zest.releaser/issues/199>`_.\n\n  Note for developers of extensions for ``zest.releaser``: this\n  removes the ``is_old_pypi_config`` and ``is_new_pypi_config``\n  methods, because they made no sense anymore.  If you were using\n  these, see if you can use the ``distutils_server`` method instead.\n  [maurits]\n\n- Added ``push-changes`` config file option.  Default: yes.  When this\n  is false, zest.releaser sets ``no`` as default answer for the\n  question if you want to push the changes to the remote.\n  [newlog]\n\n- By default no longer register a new package, but only upload it.\n  Registering a package is no longer needed on PyPI: uploading a new\n  distribution takes care of this.  If you *do* want to register,\n  maybe because a different package server requires it, then in your\n  ``setup.cfg`` or ``~/.pypirc``, use the following::\n\n    [zest.releaser]\n    register = yes\n\n  Fixes `issue 191 <https://github.com/zestsoftware/zest.releaser/issues/191>`_.\n  [willowmck]\n\n\n6.7.1 (2016-12-22)\n------------------\n\n- Create the list of distributions after the ``before_upload`` hook has fired.\n  This allows the ``before_upload`` hook to create additional distributions,\n  which will then be uploaded.  [t-8ch]\n\n\n6.7 (2016-10-23)\n----------------\n\n- Use the intended API of twine.  This should work with twine 1.6.0\n  and higher, including future versions.  [maurits]\n\n\n6.6.5 (2016-09-12)\n------------------\n\n- Support and require twine 1.8.0 as minimum version.\n  Fixes https://github.com/zestsoftware/zest.releaser/issues/183\n  [maurits]\n\n- Updated the documentation on uploading.  [mgedmin, maurits]\n\n- Replaced http://zestreleaser.readthedocs.org with\n  http://zestreleaser.readthedocs.io.  This is the new canonical\n  domain since 28 April 2016.  [maurits]\n\n\n6.6.4 (2016-02-24)\n------------------\n\n- Really create a shallow git clone when creating a distribution.\n  See issue #169.\n  [maurits]\n\n\n6.6.3 (2016-02-24)\n------------------\n\n- Using a \"shallow\" git clone when creating a distribution. This speeds up\n  releases, especially on big repositories.\n  See issue #169.\n  [gforcada]\n\n\n6.6.2 (2016-02-11)\n------------------\n\n- Added ``no-input`` option also to global (.pypirc) options.\n  Issue #164.\n  [jcerjak]\n\n\n6.6.1 (2016-02-02)\n------------------\n\n- Fixed version in changelog after bumpversion call.\n  [maurits]\n\n\n6.6.0 (2016-01-29)\n------------------\n\n- Added ``bumpversion`` command.  Options ``--feature`` and\n  ``--breaking``.  Issue #160.  The exact behavior might change in\n  future versions after more practical experience.  Try it out and\n  report any issues you find.  [maurits]\n\n- Fixed possible encoding problems when writing files.  This is\n  especially for an ascii file to which we add non ascii characters,\n  like in the ``addchangelogentry`` command.  [maurits]\n\n- Added ``addchangelogentry`` command.  Issue #159.  [maurits]\n\n- Moved ``_diff_and_commit``, ``_push`` and ``_grab_version`` to\n  ``baserelease.py``, as the first was duplicated and the second and\n  third may be handy for other code too.  ``_grab_version`` is the\n  basic implementation, and is overridden in the prereleaser.  [maurits]\n\n- Show changelog of current release before asking for the new version\n  number.  Issue #155.  [maurits]\n\n- Moved ``_diff_and_commit``, ``_push`` and ``_grab_version`` to\n  ``baserelease.py``, as the first was duplicated and the second and\n  third may be handy for other code too.  ``_grab_version`` is the\n  basic implementation, and is overridden in the prereleaser.  [maurits]\n\n6.5 (2016-01-05)\n----------------\n\n- Adjusted ``bin/longtest`` for the (necessary) rename of the ``readme``\n  library to ``readme_renderer``.\n  Fixes #153\n\n  Note: the current ``readme`` package on pypi is broken to force an\n  upgrade. If you use an older zest.releaser, you have to pin ``readme`` to\n  ``0.6.0``, it works just fine.\n  [reinout]\n\n\n6.4 (2015-11-13)\n----------------\n\n- Fixed error when retrying twine command.\n  Fixes #148\n  [maurits]\n\n\n6.3 (2015-11-11)\n----------------\n\n- Fixed exception when logging an exception when a twine command\n  fails.\n  [maurits]\n\n\n6.2 (2015-10-29)\n----------------\n\nNew:\n\n- Use ``twine`` as library instead of as command.  You no longer need\n  to have ``twine`` on your ``PATH``.\n  Fixes issue #142.\n  [maurits]\n\n\n6.1 (2015-10-29)\n----------------\n\nFixes:\n\n- Fixed registering on servers other than PyPI.  We forgot to specify\n  the server in that case.\n  [maurits]\n\n\n6.0 (2015-10-27)\n----------------\n\n- Made ``twine`` a core dependency.  We now always use it for\n  registering and uploading.  We require at least version 1.6.0, as\n  this introduces the ``register`` command.\n  [maurits]\n\n- When uploading with ``twine`` first use the ``twine register``\n  command.  On PyPI, when the project is already registered, we do not\n  call it again, but we can only check this for PyPI, not for other\n  servers.\n  Issue #128.\n  [maurits]\n\n- Always exit with error code 1 when we exit explicitly.  In some\n  cases we would exit with success code 0 when we exited based on the\n  answer to a question.  This happened when the user did not want us\n  to create the missing ``tags`` directory in subversion, and also\n  after asking if the user wanted to continue even though 'nothing\n  changed yet' was in the history.\n  [maurits]\n\n- Extensions can now tell zest.releaser to look for specific required\n  words in the history.  Just add ``required_changelog_text`` to the\n  prerelease data.  It can be a string or a list, for example\n  ``[\"New:\", \"Fixes:\"]``.  For a list, only one of them needs to be\n  present.\n  [maurits]\n\n- Look for the 'Nothing changed yet' text in the complete text of the\n  history entries of the current release, instead of looking at it\n  line by line.  This means that zest releaser extensions can overwrite\n  ``nothing_changed_yet`` in the prerelease data to span multiple lines.\n  [maurits]\n\n- zest.releaser extensions can now look at\n  ``history_insert_line_here`` in the prerelease data.  On this line\n  number in the history file they can add an extra changelog entry if\n  wanted.\n  [maurits]\n\n- Added ``history_last_release`` to the prerelease data.  This is the\n  text with all history entries of the current release.\n  [maurits]\n\n- When using the ``--no-input`` option, show the question and the\n  chosen answer.  Otherwise in case of a problem it is not clear why\n  the command stopped.\n  Fixes issue #136.\n  [maurits]\n\n\n5.7 (2015-10-14)\n----------------\n\n- The history/changelog file is now written back with the originally detected\n  encoding. The functionality was added in 5.2, but only used for writing the\n  ``setup.py``, not the changelog. This is fixed now.\n  [reinout]\n\n\n5.6 (2015-09-23)\n----------------\n\n- Add support for PyPy.\n  [jamadden]\n\n\n5.5 (2015-09-05)\n----------------\n\n- The ``bin/longtest`` command adds the correct utf-8 character encoding hint\n  to the resulting html so that non-ascii long descriptions are properly\n  rendered in all browsers.\n  [reinout]\n\n\n5.4 (2015-08-28)\n----------------\n\n- Requiring at least version 0.6 of the (optional, btw) readme package. The\n  API of readme changed slightly. Only needed when you want to check your\n  package's long description with ``bin/longtest``.\n  [reinout]\n\n\n5.3 (2015-08-21)\n----------------\n\n- Fixed typo in svn command to show the changelog since the last tag.\n  [awello]\n\n\n5.2 (2015-07-27)\n----------------\n\n- When we find no version control in the current directory, look a few\n  directories up.  When looking for version and history files, we look\n  in the current directory and its sub directories, and not in the\n  repository root.  After making a tag checkout, we change directory\n  to the same relative path that we were in before.  You can use this\n  when you want to release a Python package that is in a sub directory\n  of the repository.  When we detect this, we first offer to change to\n  the root directory of the repository.\n  [maurits]\n\n- Write file with the same encoding that we used for reading them.\n  Issue #109.\n  [maurits]\n\n\n5.1 (2015-06-11)\n----------------\n\n- Fix writing history/changelog file with non-ascii.  Issue #109.\n  [maurits]\n\n- Release zest.releaser as universal wheel, so one wheel for Python 2\n  and 3.  As usual, we release it also as a source distribution.\n  [maurits]\n\n- Regard \"Skipping installation of __init__.py (namespace package)\" as\n  warning, printing it in magenta.  This can happen when creating a\n  wheel.  Issue #108.\n  [maurits]\n\n\n5.0 (2015-06-05)\n----------------\n\n- Python 3 support.\n  [mitchellrj]\n\n- Use the same `readme` library that PyPI uses to parse long\n  descriptions when we test and render them.\n  [mitchellrj]\n\n\n4.0 (2015-05-21)\n----------------\n\n- Try not to treat warnings as errors.\n  [maurits]\n\n- Allow retrying some commands when there is an error.  Currently only\n  for commands that talk to PyPI or another package index.  We ask the\n  user if she wants to retry: Yes, no, quit.\n  [maurits]\n\n- Added support for twine_.  If the ``twine`` command is available, it\n  is used for uploading to PyPI.  It is installed automatically if you\n  use the ``zest.releaser[recommended]`` extra.  Note that if the\n  ``twine`` command is not available, you may need to change your\n  system ``PATH`` or need to install ``twine`` explicitly.  This seems\n  more needed when using ``zc.buildout`` than when using ``pip``.\n  Added ``releaser.before_upload`` entry point.  Issue #59.\n  [maurits]\n\n- Added ``check-manifest`` and ``pyroma`` to the ``recommended``\n  extra.  Issue #49.\n  [maurits]\n\n- Python 2.6 not officially supported anymore.  It may still work, but\n  we are no longer testing against it.\n  [maurits]\n\n- Do not accept ``y`` or ``n`` as answer for a new version.\n  [maurits]\n\n- Use ``colorama`` to output errors in red.\n  Issue #86\n  [maurits]\n\n- Show errors when uploading to PyPI.  They were unintentionally\n  swallowed before, so you did not notice when an upload failed.\n  Issue #84.\n  [maurits]\n\n- Warn when between the last postrelease and a new prerelease no\n  changelog entry has been added.  '- Nothing changed yet' would still\n  be in there.\n  Issue #26.\n  [maurits]\n\n- Remove code for support of collective.sdist.  That package was a backport\n  from distutils for Python 2.5 and earlier, which we do not support.\n  [maurits]\n\n- Add optional support for uploading Python wheels.  Use the new\n  ``zest.releaser[recommended]`` extra, or run ``pip install wheel``\n  yourself next to ``zest.releaser``.  Create or edit ``setup.cfg`` in\n  your project (or globally in your ``~/.pypirc``) and create a section\n  ``[zest.releaser]`` with ``create-wheel = yes`` to create a wheel to\n  upload to PyPI.  See http://pythonwheels.com for deciding whether\n  this is a good idea for your package.  Briefly, if it is a pure\n  Python 2 *or* pure Python 3 package: just do it.\n  Issue #55\n  [maurits]\n\n- Optionally add extra text to commit messages.  This can be used to\n  avoid running Travis Continuous Integration builds.  See\n  http://docs.travis-ci.com/user/how-to-skip-a-build/.  To activate\n  this, add ``extra-message = [ci skip]`` to a ``[zest.releaser]``\n  section in the ``setup.cfg`` of your package, or your global\n  ``~/.pypirc``.  Or add your favorite geeky quotes there.\n  [maurits]\n\n- Fix a random test failure on Travis CI, by resetting ``AUTO_RESPONSE``.\n  [maurits]\n\n- Added clarification to logging: making an sdist/wheel now says that it is\n  being created in a temp folder. Fixes #61.\n  [reinout]\n\n.. # Note: for older changes see ``doc/sources/changelog.rst``.\n\n.. _twine: https://pypi.python.org/pypi/twine\n\n\n", 
    "lcname": "zest.releaser", 
    "bugtrack_url": "", 
    "github": false, 
    "name": "zest.releaser", 
    "license": "GPL", 
    "summary": "Software releasing made easy and repeatable", 
    "split_keywords": [
        "releasing", 
        "packaging", 
        "pypi"
    ], 
    "author_email": "reinout@vanrees.org", 
    "urls": [
        {
            "has_sig": false, 
            "upload_time": "2017-06-19T09:47:12", 
            "comment_text": "", 
            "python_version": "py2.py3", 
            "url": "https://pypi.python.org/packages/9b/b2/7e6910e94b7fc9be214b06fc22945a8df7691a5748f80ba730c01fcf41c4/zest.releaser-6.12-py2.py3-none-any.whl", 
            "md5_digest": "8756391e24448d8d000d7e5929a0957d", 
            "downloads": 0, 
            "filename": "zest.releaser-6.12-py2.py3-none-any.whl", 
            "packagetype": "bdist_wheel", 
            "path": "9b/b2/7e6910e94b7fc9be214b06fc22945a8df7691a5748f80ba730c01fcf41c4/zest.releaser-6.12-py2.py3-none-any.whl", 
            "size": 116149
        }, 
        {
            "has_sig": false, 
            "upload_time": "2017-06-19T09:47:14", 
            "comment_text": "", 
            "python_version": "source", 
            "url": "https://pypi.python.org/packages/3e/a8/0864362dfbac6e9ba849520127d259796f591538983aa3ed11bd84a076c4/zest.releaser-6.12.tar.gz", 
            "md5_digest": "e70aefc89ea458e3cedcb68f745df24c", 
            "downloads": 0, 
            "filename": "zest.releaser-6.12.tar.gz", 
            "packagetype": "sdist", 
            "path": "3e/a8/0864362dfbac6e9ba849520127d259796f591538983aa3ed11bd84a076c4/zest.releaser-6.12.tar.gz", 
            "size": 118650
        }
    ], 
    "_id": null, 
    "cheesecake_installability_id": null
}