6 def check_output(*popenargs, **kwargs):
7 process = subprocess.Popen(stdout=subprocess.PIPE, *popenargs, **kwargs)
8 output, unused_err = process.communicate()
9 retcode = process.poll()
11 raise ValueError((retcode, output))
17 return check_output(['git', 'describe', '--always', '--dirty'], cwd=os.path.dirname(os.path.abspath(sys.argv[0]))).strip()
21 return check_output(['git.cmd', 'describe', '--always', '--dirty'], cwd=os.path.dirname(os.path.abspath(sys.argv[0]))).strip()
24 root_dir = os.path.abspath(os.path.dirname(sys.argv[0]))
25 git_dir = os.path.join(root_dir, '.git')
26 if os.path.exists(git_dir):
27 head = open(os.path.join(git_dir, 'HEAD')).read().strip()
29 if head.startswith(prefix):
30 path = head[len(prefix):].split('/')
31 return open(os.path.join(git_dir, *path)).read().strip()[:7]
34 dir_name = os.path.split(root_dir)[1]
35 chars = '0123456789abcdef'
36 if len(dir_name) >= 7 and (len(dir_name) == 7 or dir_name[-8] not in chars) and all(c in chars for c in dir_name[-7:]):
41 return 'unknown %s' % (str(e).encode('hex'),)
43 __version__ = _get_version()