version: move constant to cola/_version.py
[git-cola.git] / cola / version.py
blobfd09cee443304a398921328f1dd9f5cbe27bb82e
1 # Copyright (c) David Aguilar
2 """Provide git-cola's version number"""
4 import os
5 import sys
7 if __name__ == '__main__':
8 srcdir = os.path.dirname(os.path.dirname(__file__))
9 sys.path.insert(1, srcdir)
11 from cola.git import git
12 from cola.decorators import memoize
13 from cola._version import VERSION
16 # minimum version requirements
17 _versions = {
18 # git-diff learned --patience in 1.6.2
19 # git-mergetool learned --no-prompt in 1.6.2
20 # git-difftool moved out of contrib in git 1.6.3
21 'git': '1.6.3',
22 'python': '2.4',
23 'pyqt': '4.4',
24 'pyqt_qrunnable': '4.4',
25 'diff-submodule': '1.6.6',
29 def get(key):
30 """Returns an entry from the known versions table"""
31 return _versions.get(key)
34 def version():
35 """Returns the current version"""
36 return VERSION
39 @memoize
40 def check_version(min_ver, ver):
41 """Check whether ver is greater or equal to min_ver
42 """
43 min_ver_list = version_to_list(min_ver)
44 ver_list = version_to_list(ver)
45 return min_ver_list <= ver_list
48 @memoize
49 def check(key, ver):
50 """Checks if a version is greater than the known version for <what>"""
51 return check_version(get(key), ver)
54 def version_to_list(version):
55 """Convert a version string to a list of numbers or strings
56 """
57 ver_list = []
58 for p in version.split('.'):
59 try:
60 n = int(p)
61 except ValueError:
62 n = p
63 ver_list.append(n)
64 return ver_list
67 @memoize
68 def git_version_str():
69 """Returns the current GIT version"""
70 return git.version().strip()
72 @memoize
73 def git_version():
74 """Returns the current GIT version"""
75 parts = git_version_str().split()
76 if parts and len(parts) > 2:
77 return parts[2]
78 else:
79 return 'v1.6.3' # minimum supported version
82 if __name__ == '__main__':
83 print(version())