diff options
author | Picca Frédéric-Emmanuel <picca@debian.org> | 2017-11-25 17:02:19 +0100 |
---|---|---|
committer | Picca Frédéric-Emmanuel <picca@debian.org> | 2017-11-25 17:02:19 +0100 |
commit | a0cf9271227c91fb887789aff5212c4bd8d710b5 (patch) | |
tree | f2b4a365ed899be04766f3937bcc2d58d22be065 /version.py |
Import silx_0.6.1+dfsg.orig.tar.gz
[dgit import orig silx_0.6.1+dfsg.orig.tar.gz]
Diffstat (limited to 'version.py')
-rw-r--r-- | version.py | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/version.py b/version.py new file mode 100644 index 0000000..8ba98ff --- /dev/null +++ b/version.py @@ -0,0 +1,120 @@ +#!/usr/bin/env python +# coding: utf-8 +# /*########################################################################## +# +# Copyright (c) 2015-2016 European Synchrotron Radiation Facility +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +# ###########################################################################*/ +"""Unique place where the version number is defined. + +provides: +* version = "1.2.3" or "1.2.3-beta4" +* version_info = named tuple (1,2,3,"beta",4) +* hexversion: 0x010203B4 +* strictversion = "1.2.3b4 +* debianversion = "1.2.3~beta4" +* calc_hexversion: the function to transform a version_tuple into an integer + +This is called hexversion since it only really looks meaningful when viewed as the +result of passing it to the built-in hex() function. +The version_info value may be used for a more human-friendly encoding of the same information. + +The hexversion is a 32-bit number with the following layout: +Bits (big endian order) Meaning +1-8 PY_MAJOR_VERSION (the 2 in 2.1.0a3) +9-16 PY_MINOR_VERSION (the 1 in 2.1.0a3) +17-24 PY_MICRO_VERSION (the 0 in 2.1.0a3) +25-28 PY_RELEASE_LEVEL (0xA for alpha, 0xB for beta, 0xC for release candidate and 0xF for final) +29-32 PY_RELEASE_SERIAL (the 3 in 2.1.0a3, zero for final releases) + +Thus 2.1.0a3 is hexversion 0x020100a3. + +""" + +from __future__ import absolute_import, print_function, division +__authors__ = ["Jérôme Kieffer"] +__license__ = "MIT" +__copyright__ = "European Synchrotron Radiation Facility, Grenoble, France" +__date__ = "01/10/2017" +__status__ = "production" +__docformat__ = 'restructuredtext' +__all__ = ["date", "version_info", "strictversion", "hexversion", "debianversion", + "calc_hexversion", "citation"] + +RELEASE_LEVEL_VALUE = {"dev": 0, + "alpha": 10, + "beta": 11, + "gamma": 12, + "rc": 13, + "final": 15} + +MAJOR = 0 +MINOR = 6 +MICRO = 1 +RELEV = "final" # <16 +SERIAL = 0 # <16 + +date = __date__ + +from collections import namedtuple +_version_info = namedtuple("version_info", ["major", "minor", "micro", "releaselevel", "serial"]) + +version_info = _version_info(MAJOR, MINOR, MICRO, RELEV, SERIAL) + +strictversion = version = debianversion = "%d.%d.%d" % version_info[:3] +if version_info.releaselevel != "final": + version += "-%s%s" % version_info[-2:] + debianversion += "~adev%i" % version_info[-1] if RELEV == "dev" else "~%s%i" % version_info[-2:] + prerel = "a" if RELEASE_LEVEL_VALUE.get(version_info[3], 0) < 10 else "b" + if prerel not in "ab": + prerel = "a" + strictversion += prerel + str(version_info[-1]) + + +def calc_hexversion(major=0, minor=0, micro=0, releaselevel="dev", serial=0): + """Calculate the hexadecimal version number from the tuple version_info: + + :param major: integer + :param minor: integer + :param micro: integer + :param relev: integer or string + :param serial: integer + :return: integer always increasing with revision numbers + """ + try: + releaselevel = int(releaselevel) + except ValueError: + releaselevel = RELEASE_LEVEL_VALUE.get(releaselevel, 0) + + hex_version = int(serial) + hex_version |= releaselevel * 1 << 4 + hex_version |= int(micro) * 1 << 8 + hex_version |= int(minor) * 1 << 16 + hex_version |= int(major) * 1 << 24 + return hex_version + + +hexversion = calc_hexversion(*version_info) + +citation = "doi:10.5281/zenodo.1000472" + +if __name__ == "__main__": + print(version) |