Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
XRD
darfix
Commits
29d02d55
Commit
29d02d55
authored
May 18, 2020
by
Julia Garriga Ferrer
Browse files
[darfix][version] Add version.py file
parent
b6455ddf
Changes
1
Hide whitespace changes
Inline
Side-by-side
darfix/version.py
0 → 100644
View file @
29d02d55
#!/usr/bin/env python
# coding: utf-8
# /*##########################################################################
#
# Copyright (c) 2019-2020 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__
=
"28/02/2018"
__status__
=
"production"
__docformat__
=
'restructuredtext'
__all__
=
[
"date"
,
"version_info"
,
"strictversion"
,
"hexversion"
,
"debianversion"
,
"calc_hexversion"
]
RELEASE_LEVEL_VALUE
=
{
"dev"
:
0
,
"alpha"
:
10
,
"beta"
:
11
,
"gamma"
:
12
,
"rc"
:
13
,
"final"
:
15
}
MAJOR
=
0
MINOR
=
4
MICRO
=
0
RELEV
=
"dev"
# <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
)
if
__name__
==
"__main__"
:
print
(
version
)
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment