in bayesmark/cmd_parse.py [0:0]
def load_rev_number():
# This function uses a lot of language "power features" that could be considered bad form:
# 1) does a conditional import to get version
# 2) uses __file__ to try and extract and git repo version during execution
# We will let this fly anyway because:
# 1) The results of this are only used for logging anyway
# 2) This is a command parsing module of the code and inherently very non-pure and doing IO etc
# 3) Unclear if there is a cleaner way to do this
# Get rev from version file (if running inside the pip-installable wheel without the git repo)
try:
from bayesmark import version
rev_file = version.VERSION
except ImportError:
rev_file = None
else:
rev_file = rev_file.strip()
rev = rev_file
# Get rev from git API if inside git repo (and not built wheel from pip install ...)
wdir = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
try:
repo = git.Repo(path=wdir, search_parent_directories=False)
except InvalidGitRepositoryError:
rev_repo = None
else:
rev_repo = repo.head.commit.hexsha
rev_repo = rev_repo.strip()
rev = rev_repo
# Check coherence of what we found
if (rev_repo is None) and (rev_file is None):
raise RuntimeError("Must specify version.py if not inside a git repo.")
if (rev_repo is not None) and (rev_file is not None):
assert rev_repo == rev_file, "Rev file %s does not match rev git %s" % (rev_file, rev_repo)
assert rev == rev.strip()
# We could first enforce is_lower_hex if we want to enforce that
rev = rev[:7]
return rev