deluge/version.py
Calum Lind b1cdc32f73 [Lint] Use Black to auto-format code
The move to using auto-formatter makes it easier to read, submit and
speeds up development time. https://github.com/ambv/black/

Although I would prefer 79 chars, the default line length of 88 chars
used by black suffices. The flake8 line length remains at 120 chars
since black does not touch comments or docstrings and this will require
another round of fixes.

The only black setting that is not standard is the use of double-quotes
for strings so disabled any formatting of these. Note however that
flake8 will still flag usage of double-quotes. I may change my mind on
double vs single quotes but for now leave them.

A new pyproject.toml file has been created for black configuration.
2018-10-03 15:21:53 +01:00

79 lines
2.3 KiB
Python
Executable File

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Authors: Douglas Creager <dcreager@dcreager.net>
# Calum Lind <calumlind@gmail.com>
#
# This file is placed into the public domain.
#
# Calculates the current version number by first checking output of “git describe”,
# modified to conform to PEP 386 versioning scheme. If “git describe” fails
# (likely due to using release tarball rather than git working copy), then fall
# back on reading the contents of the RELEASE-VERSION file.
#
# Usage: Import in setup.py, and use result of get_version() as package version:
#
# from version import *
#
# setup(
# ...
# version=get_version(),
# ...
# )
#
# Script will automatically update the RELEASE-VERSION file, if needed.
# Note that RELEASE-VERSION file should *not* be checked into git; please add
# it to your top-level .gitignore file.
#
# You'll probably want to distribute the RELEASE-VERSION file in your
# sdist tarballs; to do this, just create a MANIFEST.in file that
# contains the following line:
#
# include RELEASE-VERSION
#
from __future__ import print_function, unicode_literals
import os
from subprocess import PIPE, Popen
__all__ = ('get_version',)
VERSION_FILE = os.path.join(os.path.dirname(__file__), 'RELEASE-VERSION')
def call_git_describe(prefix='', suffix=''):
cmd = 'git describe --tags --match %s[0-9]*' % prefix
try:
output = Popen(cmd.split(), stdout=PIPE, stderr=PIPE).communicate()
version = output[0].decode('utf-8').strip().replace(prefix, '')
if '-' in version:
version = '.dev'.join(version.replace(suffix, '').split('-')[:2])
return version
except OSError:
return None
def get_version(prefix='', suffix=''):
try:
with open(VERSION_FILE, 'r') as f:
release_version = f.readline().strip()
except IOError:
release_version = None
version = call_git_describe(prefix, suffix)
if not version:
version = release_version
if not version:
raise ValueError('Cannot find the version number!')
if version != release_version:
with open(VERSION_FILE, 'w') as f:
f.write('%s\n' % version)
return version
if __name__ == '__main__':
print(get_version(prefix='deluge-', suffix='.dev0'))