forked from sillygoose/multisma2
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathversion.py
70 lines (57 loc) · 1.96 KB
/
version.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
"""
Gets the current version number.
If in a git repository, it is the current git tag.
Otherwise it is the one contained in the PKG-INFO file.
To use this script, simply import it in your setup.py file
and use the results of get_version() as your package version:
from version import *
setup(
...
version=get_version(),
...
)
"""
# This program is placed into the public domain.
__all__ = "get_version"
from os.path import dirname, isdir, join
import os
import re
import subprocess
version_re = re.compile("^Version: (.+)$", re.M)
def get_version():
"""Get a version number for a tag."""
# Assume we find no tags
version = "unknown"
# Save current directory and switch to the file directory
current = os.getcwd()
directory = dirname(__file__)
os.chdir(directory)
if isdir(join(directory, ".git")):
# Get the version using "git describe".
cmd = "git describe --tags --match [0-9]*".split()
try:
version = subprocess.check_output(cmd).decode().strip()
except subprocess.CalledProcessError:
pass
# PEP 386 compatibility
if "-" in version:
version = ".post".join(version.split("-")[:2])
# Don't declare a version "dirty" merely because a time stamp has
# changed. If it is dirty, append a ".dev1" suffix to indicate a
# development revision after the release.
with open(os.devnull, "w") as fd_devnull:
subprocess.call(["git", "status"], stdout=fd_devnull, stderr=fd_devnull)
cmd = "git diff-index --name-only HEAD".split()
dirty = ""
try:
dirty = subprocess.check_output(cmd).decode().strip()
except subprocess.CalledProcessError:
pass
if dirty != "":
version += ".dev"
# Restore the original directory
os.chdir(current)
return version
if __name__ == "__main__":
print(__file__)
print(get_version())