Skip to main content

“””A version by any other name would be just as sweet.”””

A small library for keeping your version up-to-date easily & everywhere.

The pain of having to update your setup.py, your Sphinx conf.py, your __init__.py & everything else on every release of your Python package sucks. Make your life easier (& very semver!)

By putting your version number in a top-level VERSION file & using this library, you can cut duplication & tedious manual work without having to lean on crazy import hacks.

Inspired by crazy discussion with George Hickman (ghickman) at PyCon 2013.

Requirements

  • Python 2.5+

Usage

To start, first install rose (see below). Then, push your version number into it’s own file (typically called VERSION):

$ echo '1.0.0-beta' > VERSION

Update your setup.py to look like:

# ...

import rose

setup(
    name='your_package_name_here',
    # UPDATE THIS LINE!
    version=rose.load_version('VERSION'),
    # The usual follows...

Then update your __init__.py:

# Whatever is there, then...

import os
import rose

# If you don't care about being cross-platform, you can just pass a simple
# path instead.
VERSION_FILE = os.path.join(os.path.dirname('VERSION'))
__version__ = rose.build_version('your_package_name_here', rose.load_version(VERSION_FILE))

And if you’re documenting with Sphinx, you can update your conf.py with:

# ADD THIS!
import rose
RELEASE_VERSION = rose.load_version('../VERSION')
SHORT_VERSION = RELEASE_VERSION.split('-')[0]

# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
version = SHORT_VERSION
# The full version, including alpha/beta/rc tags.
release = RELEASE_VERSION

Installation

Using pip, simply run:

pip install rose

License

New BSD

Release files for rose 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for rose 1.0.0
File Size Uploaded
rose-1.0.0.tar.gz 3.6 kB Details

Release files / rose-1.0.0.tar.gz

Download URL rose-1.0.0.tar.gz
Size 3.6 kB
Tags Source
SHA-256 checksum
How to use checksums
52b532a79051c4abeaf8cc8b0248800dbbd7ceeddf91ee00e2a096f6f78a7d6b
BLAKE2b-256 checksum
How to use checksums
0f6239518437e7ef4e4451f39640ee4f68b57551cd0cb36d3ce3c5d2db6e3282
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

1.0.0 This release

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page