Options

Zest.releaser tries not to burden you with lots of command line options. Instead, it asks questions while doing its job. But in some cases, a command line option makes sense.

Related: you can change some settings globally in your ~/.pypirc file or per project in a setup.cfg file. This is only for Python packages.

Command line options

These command line options are supported by the release commands (fullrelease, prerelease, release, postrelease) and by the addchangelogentry command.

-v, --verbose

Run in verbose mode, printing a bit more, mostly only interesting for debugging.

-h, --help

Display help text

--no-input

Don’t ask questions, just use the default values. If you are very sure that all will be fine when you answer all questions with the default answer, and you do not want to press Enter several times, you can use this option. The default answers (sometimes yes, sometimes no, sometimes a version number) are probably sane and safe. But do not blame us if this does something you do not want. :-)

The addchangelogentry command requires the text you want to add as argument. For example:

$ addchangelogentry "Fixed bug."

Or on multiple lines:

$ addchangelogentry "Fixed bug.

This was difficult."

The bumpversion and postrelease commands accept some mutually exclusive options:

  • With --feature we update the minor version.

  • With --breaking we update the major version.

  • With --final we remove alpha / beta / rc markers from the version.

Global options

You can configure zest.releaser for all projects by editing the .pypirc file in your home directory. This is the same file that needs to contain your PyPI credentials if you want to release to the Python Packaging Index. See the topic on Uploading. This also has more info on most options.

Lots of things may be in this file, but zest.releaser looks for a zest.releaser section, like this:

[zest.releaser]
some-option = some value

For true/false options, you can use no/false/off/0 or yes/true/on/1 as answers; upper, lower or mixed case are all fine.

Various options change the default answer of a question. So if you want to use the --no-input command line option or want to press Enter a couple of times without thinking too much, see if you can tweak the default answers by setting one of these options

We have these options:

release = true / false

Default: true. When this is false, zest.releaser sets false as default answer for the question if you want to create a checkout of the tag.

upload-pypi = true / false

Default: true. Normally you won’t use this setting. Only if you want to make a release without actually uploading it, set it to false. (Note that you still need release=true).

create-wheel = true / false

Default: true, if the recommended wheel package is installed. Set to false if you do not want zest.releaser to create Python wheels.

extra-message = [ci skip]

Extra message to add to each commit (prerelease, postrelease).

prefix-message = [TAG]

Prefix message to add at the beginning of each commit (prerelease, postrelease).

no-input = true / false

Default: false. Set this to true to accept default answers for all questions.

register = true / false

Default: false. Set this to true to register a package before uploading. On the official Python Package Index registering a package is no longer needed, and may even fail.

push-changes = true / false

Default: true. When this is false, zest.releaser sets false as default answer for the question if you want to push the changes to the remote.

less-zeroes = true / false

Default: false. This influences the version suggested by the bumpversion command. When set to true:

  • Instead of 1.3.0 we will suggest 1.3.

  • Instead of 2.0.0 we will suggest 2.0.

version-levels = a number

Default: 0. This influences the version suggested by the postrelease and bumpversion commands. The default of zero means: no preference, so use the length of the current number.

This means when suggesting a next version after 1.2:

  • with 0 we will suggest 1.3: no change in length

  • with 1 we will still suggest 1.3, as we will not use this to remove numbers, only to add them

  • with 2 we will suggest 1.3

  • with 3 we will suggest 1.2.1

If the current version number has more levels, we keep them. So with version-levels=1 the next version for 1.2.3.4 will be 1.2.3.5.

development-marker = a string

Default: .dev0 This is the development marker. This is what gets appended to the version in postrelease.

tag-format = a string

Default: {version} This is a formatter that changes the name of the tag. It needs to contain {version}. For backward compatibility, it can contain %(version)s instead.

tag-message = a string

Default: Tagging {version} This formatter defines the commit message passed to the tag command of the VCS. It must contain {version}.

tag-signing = true / false

Default: false. When set to true, tags are signed using the signing feature of the respective vcs. Currently tag-signing is only supported for git. Note: When you enable it, everyone releasing the project is required to have git tag signing set up correctly.

date-format = a string

Default: %%Y-%%m-%%d This is the format string for the release date to be mentioned in the changelog.

Note: the % signs should be doubled for compatibility with other tools (i.e. pip) that parse setup.cfg using the interpolating ConfigParser.

history-file = a string

Default: empty Usually zest.releaser can find the correct history or changelog file on its own. But sometimes it may not find anything, or it finds multiple files and selects the wrong one. Then you can set a path here.

history_format = a string

Default: empty. Set this to md to handle changelog entries in Markdown.

run-pre-commit = true / false

Default: false. New in version 7.3.0. When set to true, pre commit hooks are run. This may interfere with releasing when they fail.

Per project options

You can change some settings per project by adding instructions for zest.releaser in a setup.cfg file. This will only work for a Python package.

These are the same options as the global ones. If you set an option locally in a project, this will override the global option.

You can also set these options in a pyproject.toml file. If you do so, instead of having a [zest.releaser] section, you should use a [tool.zest-releaser] section. For true/false options in a pyproject.toml, you must use lowercase true or false; for string options like extra-message or prefix-message, you should put the value between double quotes, like this:

[tool.zest-releaser]
create-wheel = false
extra-message = "[ci skip]"