Skip to main content

No project description provided

Project description

travis pypi coverage

Incremental is a small library that versions your Python projects.

API documentation can be found here.

Quick Start

Add this to your setup.py‘s setup() call, removing any other versioning arguments:

setup(
    use_incremental=True,
    setup_requires=['incremental'],
    install_requires=['incremental'], # along with any other install dependencies
    ...
}

Then run python -m incremental.update <projectname> --create (you will need click installed from PyPI). It will create a file in your package named _version.py and look like this:

from incremental import Version

__version__ = Version("widgetbox", 17, 1, 0)
__all__ = ["__version__"]

Then, so users of your project can find your version, in your root package’s __init__.py add:

from ._version import __version__

Subsequent installations of your project will then use Incremental for versioning.

Incremental Versions

incremental.Version is a class that represents a version of a given project. It is made up of the following elements (which are given during instantiation):

  • package (required), the name of the package this Version represents.

  • major, minor, micro (all required), the X.Y.Z of your project’s Version.

  • release_candidate (optional), set to 0 or higher to mark this Version being of a release candidate (also sometimes called a “prerelease”).

  • dev (optional), set to 0 or higher to mark this Version as a development release.

You can extract a PEP-440 compatible version string by using the following methods:

  • .local(), which returns a str containing the full version plus any Git or SVN information, if available. An example output would be "17.1.1rc1+r123" or "3.7.0+rb2e812003b5d5fcf08efd1dffed6afa98d44ac8c".

  • .public(), which returns a str containing the full version, without any Git or SVN information. This is the version you should provide to users, or publicly use. An example output would be "13.2.0", "17.1.2dev1", or "18.8.0rc2".

Calling repr() with a Version will give a Python-source-code representation of it, and calling str() with a Version will provide a string similar to '[Incremental, version 16.10.1]'.

Updating

Incremental includes a tool to automate updating your Incremental-using project’s version called incremental.update. It updates the _version.py file and automatically updates some uses of Incremental versions from an indeterminate version to the current one. It requires click from PyPI.

python -m incremental.update <projectname> will perform updates on that package. The commands that can be given after that will determine what the next version is.

  • --newversion=<version>, to set the project version to a fully-specified version (like 1.2.3, or 17.1.0dev1).

  • --rc, to set the project version to <year-2000>.<month>.0rc1 if the current version is not a release candidate, or bump the release candidate number by 1 if it is.

  • --dev, to set the project development release number to 0 if it is not a development release, or bump the development release number by 1 if it is.

  • --patch, to increment the patch number of the release. This will also reset the release candidate number, pass --rc at the same time to increment the patch number and make it a release candidate.

If you give no arguments, it will strip the release candidate number, making it a “full release”.

Incremental supports “indeterminate” versions, as a stand-in for the next “full” version. This can be used when the version which will be displayed to the end-user is unknown (for example “introduced in” or “deprecated in”). Incremental supports the following indeterminate versions:

  • Version("<projectname>", "NEXT", 0, 0)

  • <projectname> NEXT

When you run python -m incremental.update <projectname> --rc, these will be updated to real versions (assuming the target final version is 17.1.0):

  • Version("<projectname>", 17, 1, 0, release_candidate=1)

  • <projectname> 17.1.0rc1

Once the final version is made, it will become:

  • Version("<projectname>", 17, 1, 0)

  • <projectname> 17.1.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

incremental-17.5.0.tar.gz (15.5 kB view details)

Uploaded Source

Built Distribution

incremental-17.5.0-py2.py3-none-any.whl (16.7 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file incremental-17.5.0.tar.gz.

File metadata

File hashes

Hashes for incremental-17.5.0.tar.gz
Algorithm Hash digest
SHA256 7b751696aaf36eebfab537e458929e194460051ccad279c72b755a167eebd4b3
MD5 602746e0d438e075a5a9e0678140bba2
BLAKE2b-256 8f2602c4016aa95f45479eea37c90c34f8fab6775732ae62587a874b619ca097

See more details on using hashes here.

File details

Details for the file incremental-17.5.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for incremental-17.5.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 717e12246dddf231a349175f48d74d93e2897244939173b01974ab6661406b9f
MD5 cac4b59f7126274b6cc37680a2234773
BLAKE2b-256 f51dc98a587dc06e107115cf4a58b49de20b19222c83d75335a192052af4c4b7

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page